diff -Nru gettext-0.19.6/autogen.sh gettext-0.19.7/autogen.sh --- gettext-0.19.6/autogen.sh 2015-08-21 07:18:23.000000000 +0000 +++ gettext-0.19.7/autogen.sh 2015-12-09 19:32:59.000000000 +0000 @@ -245,6 +245,7 @@ sys_stat sys_time term-styled-ostream + trim unictype/ctype-space unilbrk/ulc-width-linebreaks uniname/uniname @@ -341,6 +342,7 @@ hash iconv libunistring-optional + markup minmax open ostream @@ -377,6 +379,7 @@ # Import build tools. We use --copy-file to avoid directory creation. $GNULIB_TOOL --copy-file tests/init.sh gettext-tools || exit $? $GNULIB_TOOL --copy-file build-aux/git-version-gen || exit $? + $GNULIB_TOOL --copy-file build-aux/gitlog-to-changelog || exit $? fi fi @@ -414,6 +417,25 @@ test $retval -eq 0 || exit $retval fi +# Automake requires that ChangeLog exist. +for dir in . gettext-runtime gettext-runtime/libasprintf \ + gettext-tools gettext-tools/examples \ + gettext-runtime/intl gettext-runtime/po gettext-tools/po; do + cat > "$dir/ChangeLog" <<\EOF +No more ChangeLog files +======================== +Do not modify any of the ChangeLog files in gettext. Starting on +October 14th, 2015 we put changelog information only in the git commit +log, and generate a top-level ChangeLog file from logs at "make dist" +time. + +Local Variables: +buffer-read-only: t +mode: text +End: +EOF +done + # Generate configure script in each subdirectories. (cd gettext-runtime/libasprintf echo "$0: generating configure in gettext-runtime/libasprintf..." diff -Nru gettext-0.19.6/build-aux/ar-lib gettext-0.19.7/build-aux/ar-lib --- gettext-0.19.6/build-aux/ar-lib 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/build-aux/ar-lib 2015-12-27 23:09:18.000000000 +0000 @@ -0,0 +1,270 @@ +#! /bin/sh +# Wrapper for Microsoft lib.exe + +me=ar-lib +scriptversion=2012-03-01.08; # UTC + +# Copyright (C) 2010-2014 Free Software Foundation, Inc. +# Written by Peter Rosin . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + + +# func_error message +func_error () +{ + echo "$me: $1" 1>&2 + exit 1 +} + +file_conv= + +# func_file_conv build_file +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv in + mingw) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_at_file at_file operation archive +# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE +# for each of them. +# When interpreting the content of the @FILE, do NOT use func_file_conv, +# since the user would need to supply preconverted file names to +# binutils ar, at least for MinGW. +func_at_file () +{ + operation=$2 + archive=$3 + at_file_contents=`cat "$1"` + eval set x "$at_file_contents" + shift + + for member + do + $AR -NOLOGO $operation:"$member" "$archive" || exit $? + done +} + +case $1 in + '') + func_error "no command. Try '$0 --help' for more information." + ;; + -h | --h*) + cat <&2 </dev/null; exit $ret' 0 + trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 + # As "mkdir -p" follows symlinks and we work in /tmp possibly; so + # create the $tmpdir first (and fail if unsuccessful) to make sure + # that nobody tries to guess the $tmpdir name. if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi - rmdir "$tmpdir/d" "$tmpdir" + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; diff -Nru gettext-0.19.6/build-aux/mdate-sh gettext-0.19.7/build-aux/mdate-sh --- gettext-0.19.6/build-aux/mdate-sh 2015-09-11 03:05:09.000000000 +0000 +++ gettext-0.19.7/build-aux/mdate-sh 2015-12-27 23:09:39.000000000 +0000 @@ -1,7 +1,7 @@ #!/bin/sh # Get modification time of a file or directory and pretty-print it. -scriptversion=2010-08-21.06; # UTC +scriptversion=2015-04-09.19; # UTC # Copyright (C) 1995-2014 Free Software Foundation, Inc. # written by Ulrich Drepper , June 1995 @@ -74,6 +74,10 @@ LC_TIME=C export LC_TIME +# Use UTC to get reproducible result +TZ=UTC +export TZ + # GNU ls changes its time format in response to the TIME_STYLE # variable. Since we cannot assume 'unset' works, revert this # variable to its documented default. diff -Nru gettext-0.19.6/ChangeLog gettext-0.19.7/ChangeLog --- gettext-0.19.6/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/ChangeLog 2015-12-28 00:06:36.000000000 +0000 @@ -1,2024 +1,395 @@ -2015-09-11 Daiki Ueno +2015-12-28 Daiki Ueno - * gettext 0.19.6 released. - -2015-09-01 Daiki Ueno - - * NEWS: Add 0.19.6 changes. - -2015-07-12 Daiki Ueno - - build: Avoid link error on Mac OS X < 10.6 - Reported by Ryan Schmidt in: - . - * autogen.sh (GNULIB_MODULES_LIBGETTEXTPO): Add stpcpy and - stpncpy. - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2015-06-22 Daiki Ueno - - * NEWS: Mention msginit change. - -2015-05-08 Часлав Илић (Chusslove Illich) (tiny change) - - * NEWS: Mention --kde behavior change. - -2015-05-08 Daiki Ueno - - * THANKS: Update. - -2015-03-09 Daiki Ueno - - * NEWS: Mention KUIT format string support. - -2015-03-04 Daiki Ueno - - build: Update libtool files to 2.4.6 - * m4/libtool.m4: Update from libtool-2.4.6, with modifications. - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}. - * m4/ltversion.m4: Likewise. - * build-aux/ltmain.sh: Likewise. - -2015-03-04 Daiki Ueno - - * NEWS: Add 0.19.5 changes. - -2015-02-10 Daiki Ueno - - * THANKS: Update. - -2015-02-06 Daiki Ueno - - * THANKS: Update. - -2015-01-23 Daiki Ueno - - build: Update libtool files to 2.4.5 - * m4/libtool.m4: Update from libtool-2.4.5, with modifications. - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}. - * m4/ltoptions.m4: Likewise. - * m4/ltversion.m4: Likewise. - * build-aux/ltmain.sh: Likewise. - -2015-01-21 Daiki Ueno - - * THANKS: Update. - -2015-01-04 Daiki Ueno - - * THANKS: Update. - -2014-12-25 Daiki Ueno - - * build-aux/texinfo.tex: Update to 2014-12-03.16. Needed because - the original texinfo does not allow @heading usage inside - @enumeration and texi2dvi fails due to this. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-12-24 Daiki Ueno - - configure: Also distribute lzip-compressed tarballs - * configure.ac (AM_INIT_AUTOMAKE): Add dist-lzip. - -2014-12-16 Daiki Ueno - - * m4/init-package-version.m4: Remove unused file. The package - name and version number are now obtained from git-version-gen. - -2014-12-10 Daiki Ueno - - * autogen.sh: Copy intl.m4 and po.m4 to gettext-tools, if Gnulib's - version are older. - -2014-12-10 Daiki Ueno - - * THANKS: Add contributors since 0.18.2. - -2014-12-03 Daiki Ueno - - autogen.sh: Fix typo - * autogen.sh: Fix typo: geneating -> generating. - -2014-12-01 Daiki Ueno - - build: Update libtool files to 2.4.4 - * m4/libtool.m4: Update from libtool-2.4.4, with modifications. - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}. - * m4/ltoptions.m4: Likewise. - * m4/ltversion.m4: Likewise. - * build-aux/ltmain.sh: Likewise. - -2014-11-28 Daiki Ueno - - build: Update libtool files to 2.4.3 - * m4/libtool.m4: Update from libtool-2.4.3, with modifications. - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}. - * m4/ltoptions.m4: Likewise. - * m4/ltsuger.m4: Likewise. - * m4/ltversion.m4: Likewise. - * m4/lt~obsolete.m4: Likewise. - * build-aux/ltmain.sh: Likewise. - -2014-11-18 Yaakov Selkowitz - - build: Fix autogen.sh --skip-gnulib after fbf4e276 - * Makefile.am (EXTRA_DIST): Add build-aux/git-version-gen. - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-07-16 Daiki Ueno - - * Makefile.am (distcheck-hook): Add back localename.c check. - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-07-14 Daiki Ueno - - build: Work around undefined _GL_ATTRIBUTE_PURE in libintl - * Makefile.am (distcheck-hook): Ignore the difference between our - localename.c and the latest Gnulib's, which utilizes - _GL_ATTRIBUTE_PURE not available from libintl. This is a - temporary fix for the 0.19.2 release and should be reverted once - it is fixed either in gettext or Gnulib. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-06 Daiki Ueno - - autogen.sh: Use xz-compressed archive tarball - * autogen.sh: Fetch archive.dir-latest.tar.xz instead of .tar.gz. - -2014-06-04 Jim Meyering (tiny change) - - configure: also distribute xz-compressed tarballs - * configure.ac (AM_INIT_AUTOMAKE): Add dist-xz, so that xz-compressed - .tar.xz tarballs will be distributed alongside .tar.gz ones. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2014-05-04 Jehan (tiny change) - - configure: require automake >= 1.13 - Macro AM_EXTRA_RECURSIVE_TARGETS defined in Automake 1.13. - * configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.13 or later. - -2014-04-22 Daiki Ueno - - m4: Apply NM detection fix from Libtool - 2013-04-28 Peter Rosin - libtool: break all the way out when a good nm is found - * m4/libtool.m4 (LT_PATH_NM): Break all the way out on a good - match. - -2014-04-22 Daiki Ueno - - m4: Revert commit d6690cc7 to libtool.m4 - Reported by Benjamin Gilbert at: - - With recent libtool, this patch did nothing but fix the output - message of configure. - * m4/libtool.m4: Remove the special handling of NM detection when - cross-compiling mingw32 on cygwin. - -2014-04-22 Daiki Ueno - - build: Use git-version-gen intead of version.sh - * version.sh: Remove. - * autogen.sh: Import git-version-gen from Gnulib. - * Makefile.am (EXTRA_DIST): Remove version.sh and add - $(top_srcdir)/.version. - (BUILT_SOURCES): Add $(top_srcdir)/.version. - ($(top_srcdir)/.version): New rule. - (dist-hook): New rule. - * configure.ac: Use git-version-gen in AC_INIT. - -2014-04-21 Daiki Ueno - - autogen.sh: Split the regeneration of data files into update.sh - * autogen.sh: Separate out PO files update logic to... - * update-po.sh: ...here. - * Makefile.am (EXTRA_DIST): Add update-po.sh. - -2014-04-17 Daiki Ueno - - * autogen.sh: Use included gettext-tools for bootstrap - To regenerate POT files, autogen.sh had an implicit dependency on - gettext-tools installed on system. This prohibited to use any new - features in our examples. Let autogen.sh use included version of - gettext-tools, by prepending $builddir to the PATH. - -2014-04-07 Daiki Ueno - - * autogen.sh: Error out when gnulib-tool exit with non-zero. - -2013-12-17 Daiki Ueno - - Add missing extern-inline.m4 into archive. - Problem reported by Reuben Thomas in: - . - * Makefile.am (distcheck-hook): Check extern-inline.m4. - -2013-08-13 Michele Locati (tiny change) - - * windows/gettext.rc: Update copyright year. - -2013-08-08 Daiki Ueno - - * .dir-locals.el: New file to force spaces instead of tabs in C - and shell-script files. - -2013-08-07 Daiki Ueno - - * NEWS: Add entry for 0.18.4. Mention GSettings schema file support. - -2013-07-10 Daiki Ueno - - gettext-tools: convert tests to use init.sh from Gnulib - * autogen.sh: Copy tests/init.sh from Gnulib into gettext-tools/tests. - -2013-07-07 Daiki Ueno - - * NEWS: Mention libasprintf change and Tcl bug fix. - -2013-06-26 Daiki Ueno - - * autogen.sh: Mention GNULIB_TOOL again for off-line bootstrap. - -2013-06-17 Daiki Ueno - - Embed Gnulib using git submodule. - * autogen.sh: Port git submodule update code from the 'bootstrap' - script in Gnulib and respect the GNULIB_SRCDIR envvar. - (cleanup_gnulib): New function borrowed from Gnulib. - (git_modules_config): Likewise. - (gnulib_path): New variable. - -2013-06-13 Daiki Ueno - - * NEWS: Document more new features. Mention Glade msgctxt support - and msginit portability fix, and note that JavaScript support is - only partial. - -2013-06-11 Daiki Ueno - - * NEWS: Mention that future 'gettextize' will require Automake 1.10. - Suggested by Stefano Lattarini. - -2013-06-08 Stefano Lattarini (tiny change) - - build: drop the 'fixacocal' auxiliary script - The comments in that script state that its use is only required to - work around issues in aclocal from Automake 1.10, while the rest - of the Gettext build infrastructure assumes Automake >= 1.11 anyway. - * autogen.sh: Drop invocations of 'fixaclocal', simply invoke the - 'aclocal' program directly. - * build-aux/fixaclocal: Remove. - * Makefile.am (EXTRA_DIST): Stop distributing it. - (ACLOCAL): Drop redefinition in function of 'fixaclocal'. - * gettext-runtime/Makefile.am (ACLOCAL): Likewise. - * gettext-runtime/libasprintf/Makefile.am (ACLOCAL): Likewise. - * gettext-tools/Makefile.am (ACLOCAL): Likewise. - * gettext-tools/examples/Makefile.am (ACLOCAL): Likewise. - -2013-06-04 Daiki Ueno - - Support for Vala. - * NEWS: Mention Vala support. - -2013-05-29 Stefano Lattarini (tiny change) - - * configure.ac (AM_INIT_AUTOMAKE): Add 'parallel-tests' option. - Require Automake 1.11.1 or later, so that the 'parallel-tests' - will be certainly available. - (AC_INIT): Require Autoconf 2.62 or later; that is the minimal - version supported by Automake 1.11.1 or later. - * autogen.sh: Update version number requirement for Autoconf. - -2013-05-20 Pavel Kharitonov (tiny change) - - Add --previous option to msgattrib. - * NEWS: Mention --previous msgattrib option. - -2013-05-13 Daiki Ueno - - Fix bootstrap error on Mac OS X. - * autogen.sh (GNULIB_MODULES_LIBGETTEXTPO): Add strchrnul. - -2013-05-02 Daiki Ueno - - * autogen.sh: Retrieve archive.dir.tar from FTP when bootstrapping. - Reported by Stefano Lattarini in - - -2013-04-26 Daiki Ueno - - * NEWS: Mention Python brace format. - -2013-04-17 Daiki Ueno - - * NEWS: Mention JavaScript support. - -2013-04-11 Daiki Ueno - - * NEWS: Mention Lua support. - -2013-03-06 Daiki Ueno - - * AUTHORS: Update from fencepost.gnu.org:/gd/gnuorg/copyright.list. - -2013-01-17 Daiki Ueno - - Fix link errors related to C99-style extern inline. - Reported by Sam Thursfield . - * autogen.sh (GNULIB_MODULES_LIBASPRINTF): Add xsize. - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2012-12-25 Daiki Ueno - - * version.sh: Bump to 0.18.2. - * autogen.sh: Record the gnulib version that is being used. - * NEWS: Update the release date of 0.18.2. Reformat "Autoconf - macros" change. - -2012-12-21 Daiki Ueno - - Fix W64 build errors. - * autogen.sh (GNULIB_MODULES_LIBASPRINTF): Add extern-inline, for - the last xsize.h update. - (GNULIB_MODULES_TOOLS_FOR_SRC_COMMON_DEPENDENCIES): Add locale, - not to have copies of locale.h in both libgrep and gnulib-lib. - (GNULIB_MODULES_LIBGETTEXTPO): Add close. - -2012-12-08 Daiki Ueno - - * autogen.sh: Ignore libunistring tests which are known to fail. - (GNULIB_MODULES_TOOLS_LIBUNISTRING_TESTS): New variable. - -2012-12-08 Daiki Ueno - - * NEWS: Mention that autoconf 2.60 is required. - Suggested by Bruno Haible . - -2012-04-29 Bruno Haible - - Allow use of autoconf-2.69 and automake-1.12. - * autogen.sh: Update comments. - -2012-02-18 Bruno Haible - - Improve ensurance that intmax_t gets defined in libasprintf. - * autogen.sh: Create gettext-runtime/libasprintf/gnulib-m4/intmax_t.m4, - not gettext-runtime/m4/intmax_t.m4. - * Makefile.am (distcheck-hook): Update. - -2012-02-18 Bruno Haible - - * Makefile.am (distcheck-hook): Update after gnulib changed. - -2012-01-26 Bruno Haible - - Modernize quoting. - * NEWS: Quote 'like this', not `like this', as per the recent change - to the GNU coding standards. - * INSTALL: Process through sed -e "s/\`\([^']*\)'/‘\1’/g" - -2011-10-18 Bruno Haible - - * m4/libtool.m4: Update from libtool-2.4.2, with modifications. - 2009-04-23 Bruno Haible - Fix recognition of "nm" command. - * m4/libtool.m4 (LT_PATH_NM): Try "nm" program also when - compiling for mingw in a cygwin environment. - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}. - * m4/ltoptions.m4: Likewise. - * m4/ltversion.m4: Likewise. - * build-aux/ltmain.sh: Likewise. - -2011-09-12 Bruno Haible - - Update after gnulib changed. - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add opendir, readdir, - closedir. - -2011-07-12 Bruno Haible - - Update after gnulib changed. - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC_COMMON_DEPENDENCIES): Update - module names. - -2011-06-08 Bruno Haible - - Fix a link error due to rpl_wcrtomb on Solaris 9. - * autogen.sh: Pass the option --witness-c-macro to the gnulib-tool - invocation for libgrep. - -2011-06-05 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_LIBGREP): Add mbrlen. - -2011-06-04 Bruno Haible - - Ensure intmax_t gets defined in libasprintf. - * autogen.sh: Create gettext-runtime/m4/intmax_t.m4, copied from - gnulib. - * Makefile.am (distcheck-hook): Check also intmax_t.m4. - -2011-06-03 Bruno Haible - - * autogen.sh (GNULIB_MODULES_LIBASPRINTF): Add verify. - * Makefile.am (distcheck-hook): Check also verify.h. - -2011-06-03 Bruno Haible - - Copyright: Use LGPL 2.1 instead of LGPL 2.0. - * os2/iconv/iconv.*: Update copyright header. - * Makefile.am (distcheck-hook): Update. - -2011-02-12 Bruno Haible - - Use gnulib's setlocale in all the programs. - * autogen.sh (GNULIB_MODULES_RUNTIME_FOR_SRC, - GNULIB_MODULES_TOOLS_FOR_SRC): Add setlocale. - -2011-02-12 Bruno Haible - - Update after gnulib changed. - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add wctype-h, remove - wctype. - -2011-02-12 Bruno Haible - - Use u8_mbtoucr instead of u8_mbtouc in some places. - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC, - GNULIB_MODULES_LIBGETTEXTPO): Add unistr/u8-mbtoucr. - -2011-01-28 Bruno Haible - - Add a comment. - * m4/woe32-dll.m4: Add a reference to the woe32dll writeup. - -2010-12-10 Bruno Haible - - Update after gnulib changed. - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add spawn-pipe, remove - pipe. - -2010-09-24 Bruno Haible - - * m4/libtool.m4: Update from libtool-2.4, with modifications. - 2009-04-23 Bruno Haible - Fix recognition of "nm" command. - * m4/libtool.m4 (LT_PATH_NM): Try "nm" program also when - compiling for mingw in a cygwin environment. - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}. - * m4/ltversion.m4: Update from libtool-2.4. - * build-aux/ltmain.sh: Likewise. - -2010-09-04 Bruno Haible - - Simplify use of gnulib-tool now that gnulib-tool --import works better. - * autogen.sh: Don't remove gnulib-cache.m4 before running gnulib-tool. - -2010-07-31 Bruno Haible - - Use new ansi-c++.m4 from gnulib. - * autogen.sh (GNULIB_MODULES_RUNTIME_OTHER, GNULIB_MODULES_TOOLS_OTHER): - Add ansi-c++-opt. - Reported at . - -2010-06-06 Bruno Haible - - New options --with-xz and --with-bzip2 for compressing the archive. - * DEPENDENCIES: Correct placement of entries for 'tar' and 'gzip'. Add - entries for 'bzip2' and 'xz'. - -2010-06-04 Bruno Haible - - * m4/libtool.m4: Update from libtool-2.2.8, with modifications. - 2009-04-23 Bruno Haible - Fix recognition of "nm" command. - * m4/libtool.m4 (LT_PATH_NM): Try "nm" program also when - compiling for mingw in a cygwin environment. - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}. - * m4/ltoptions.m4: Update from libtool-2.2.8. - * m4/ltversion.m4: Likewise. - * m4/lt~obsolete.m4: Likewise. - * build-aux/ltmain.sh: Likewise. - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-06-04 Bruno Haible - - * DEPENDENCIES: Add entries for 'tar' and 'gzip'. - -2010-06-04 Bruno Haible - - * autogen.sh: For libgrep, don't use --avoid of modules with - applicability 'all'. - Reported by Ryan Schmidt . - -2010-06-03 Bruno Haible - - * README: Remove lots of old cruft. Mention the translators as the - third audience. - -2010-06-03 Bruno Haible - - * version.sh: Bump to 0.18.1. - * autogen.sh: Record the gnulib version that is being used. - -2010-06-03 Bruno Haible - - Deprecate the --with-cvs option. - * DEPENDENCIES: Update entries for git, CVS. Remove entry for RCS. - * PACKAGING: Update comments about archive.*.tar.gz. - -2010-05-19 Bruno Haible - - Link with libunistring, if it exists. - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC, - GNULIB_MODULES_LIBGETTEXTPO): Add libunistring-optional. - * DEPENDENCIES: Mention optional dependency to GNU libunistring. - -2010-05-22 Bruno Haible - - * README.woe32: Explain how to build 64-bit mode binaries. - Reported by Rob . - -2010-05-24 Bruno Haible - - Use the newest regex module from gnulib. - * autogen.sh: Add another gnulib-tool invocation for libgrep. - (GNULIB_MODULES_TOOLS_FOR_SRC_COMMON_DEPENDENCIES): New variable. - (GNULIB_MODULES_TOOLS_FOR_LIBGREP): Change value. - Pass option -I libgrep/gnulib-m4 to 'aclocal'. - * Makefile.am (distcheck-hook): Don't compare memchr.c. - -2010-05-23 Bruno Haible - - Do regex matching purely with regex, not regex + dfa + kwset. - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_LIBGREP): Remove hard-locale. - -2010-05-15 Bruno Haible - - List the build dependencies. - * DEPENDENCIES: Clarify that 'git' is also a build dependencies. - List the non-trivial build dependencies. - Reported by Santiago Vila . - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2010-05-09 Bruno Haible - - * version.sh: Bump to 0.18. - * windows/gettext.rc: Update year. - * autogen.sh: Record the gnulib version that is being used. - -2010-05-08 Bruno Haible - - * NEWS: Mention the PO mode changes. - -2010-04-02 Bruno Haible - - Remove autoconf-lib-link directory, obsoleted by gnulib. - * Makefile.am (SUBDIRS): Remove autoconf-lib-link. - ($(srcdir)/configure): Don't depend on autoconf-lib-link/configure.ac. - (distcheck-hook): Remove checks of lib-*.m4 and config.rpath. - * autogen.sh (GNULIB_MODULES_RUNTIME_FOR_SRC): Add havelib. - Remove configuration of autoconf-lib-link subdirectory. Remove - "-I ../autoconf-lib-link/m4" option to aclocal. Don't copy - config.rpath. - * configure.ac (AC_CONFIG_SUBDIRS): Remove autoconf-lib-link. - Don't recurse into autoconf-lib-link. - -2010-03-30 Bruno Haible - - * README.woe32: Update for Cygwin 1.7.x. - -2010-03-28 Bruno Haible - - * NEWS: Deprecate the use of AM_GNU_GETTEXT with 'no-libtool' argument - and 'gettextize --intl'. - -2010-03-28 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add fnmatch, remove - fnmatch-posix. - - * autogen.sh (GNULIB_MODULES_RUNTIME_FOR_SRC, - GNULIB_MODULES_TOOLS_FOR_SRC, GNULIB_MODULES_LIBGETTEXTPO): Add stdlib, - remove exit. - -2010-03-13 Bruno Haible - - * NEWS: Mention the --color and --style options on many programs. - -2010-01-19 Bruno Haible - - * AUTHORS: Update from fencepost.gnu.org:/gd/gnuorg/copyright.list. - -2010-01-11 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC, - GNULIB_MODULES_LIBGETTEXTPO): Replace ucs4-utf8, utf8-ucs4, utf16-ucs4 - with their modern equivalents. - -2009-12-26 Bruno Haible - - * windows/gettext.rc: Update. - -2009-12-26 Bruno Haible - - * NEWS: Mention the use of the thread-specific locale on MacOS X. - -2009-12-25 Bruno Haible - - * Makefile.am (distcheck-hook): Compare fcntl-o.m4 instead of - fcntl_h.m4. - * PACKAGING: Mention fcntl-o.m4 instead of fcntl_h.m4. - -2009-12-12 Bruno Haible - - * AUTHORS: Untabify. - * README: Untabify. - * THANKS: Untabify. - -2009-12-01 Bruno Haible - - * m4/init-package-version.m4 (gl_INIT_PACKAGE): Set AC_PACKAGE_NAME. - -2009-11-30 Bruno Haible - - * autogen.sh: Treat gettext-runtime/libasprintf before gettext-runtime. - Treat gettext-tools/examples before gettext-tools. - -2009-10-18 Bruno Haible - - * Makefile.am (distcheck-hook): Compare fcntl_h.m4. - * PACKAGING: Mention also fcntl_h.m4. - -2009-09-27 Bruno Haible - - * NEWS: Mention configure options --without-cvs and --with-git. - * PACKAGING: Mention archive.*.tar.gz instead of archive.tar.gz. - * DEPENDENCIES: Mention also git. - -2009-09-01 Bruno Haible - - * README.woe32: Put the -mno-cygwin option into CC and CXX. - Recommended by Paolo Bonzini and Eric Blake. - -2009-08-30 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add xstriconveh. - -2009-08-30 Bruno Haible - - * configure.ac (AC_PREREQ): Require at least autoconf 2.59. - -2009-08-15 Bruno Haible - - Stop using gnulib module 'strdup'. - * Makefile.am (distcheck-hook): Don't compare strdup.c. - -2009-08-14 Bruno Haible - - * autogen.sh: Invoke gnulib-tool also for gettext-runtime/libasprintf. - (GNULIB_MODULES_LIBASPRINTF, GNULIB_MODULES_LIBASPRINTF_OTHER): New - variables. - Update aclocal options for gettext-runtime/libasprintf. - * Makefile.am (distcheck-hook): Don't compare eoverflow.m4. Update - comparison of alloca.in.h. - -2009-08-14 Bruno Haible - - Remove automatically copied files from version control. - * autogen.sh (GNULIB_MODULES_TOOLS_OTHER): Add csharpcomp-script, - csharpexec-script, javacomp-script, javaexec-script. - * build-aux/csharpcomp.sh.in: Remove file. - * build-aux/csharpexec.sh.in: Remove file. - * build-aux/javacomp.sh.in: Remove file. - * build-aux/javaexec.sh.in: Remove file. - -2009-08-14 Bruno Haible - - Remove automatically copied files from version control. - * autogen.sh: Fetch config.guess, config.sub. - * build-aux/config.guess: Remove file. - * build-aux/config.sub: Remove file. - - Remove automatically copied files from version control. - * autogen.sh: Invoke automake with options --add-missing --copy. - * build-aux/compile: Remove file. - * build-aux/depcomp: Remove file. - * build-aux/elisp-comp: Remove file. - * build-aux/install-sh: Remove file. - * build-aux/mdate-sh: Remove file. - * build-aux/missing: Remove file. - * build-aux/ylwrap: Remove file. - -2009-08-14 Bruno Haible - - Remove automatically generated files from version control. - * autogen.sh: If --quick was not given, rebuild autoconfiguration of - tests, PO files, manual pages, documentation, test files. - -2009-08-14 Bruno Haible - - * autogen.sh: Update comments. - -2009-08-14 Bruno Haible - - * autogen.sh: Create gettext-tools/intl directory before running - automake. - -2009-08-12 Bruno Haible - - * autogen.sh (GNULIB_MODULES_RUNTIME_FOR_SRC, - GNULIB_MODULES_TOOLS_FOR_SRC): Use getopt-gnu instead of getopt. - -2009-08-10 Bruno Haible - - * autogen.sh: Avoid the 'hash-tests' module. It corresponds to an - incompatible 'hash' module. - -2009-08-04 Bruno Haible - - Port msgfilter to Woe32 platforms. - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add pipe-filter-ii. - -2009-08-03 Bruno Haible - - * autogen.sh: Remove statements to fix permissions. Now fixed in git. - -2009-05-23 Bruno Haible - - * configure.ac (AM_INIT_AUTOMAKE): Add 'silent-rules' option. - -2009-05-23 Bruno Haible - - * m4/init-package-version.m4: New file. - * configure.ac: Invoke gl_INIT_PACKAGE. Use the preferred form of - AM_INIT_AUTOMAKE. - * Makefile.am (ACLOCAL_AMFLAGS): New variable. - * autogen.sh: Update aclocal invocation. - -2009-05-21 Bruno Haible - - Require automake >= 1.11. - * autogen.sh: Update comment. - -2009-05-21 Bruno Haible - - Support automake 1.11. - * m4/fixautomake.m4 (FIX_MAKEFILE_TOPDIR_DISTRIB): Update for - automake 1.11. - * autogen.sh: Update comment. - -2009-05-21 Bruno Haible - - Assume automake >= 1.10.2. - * m4/fixautomake.m4 (FIX_MAKEFILE_COMPILE, FIX_MAKEFILE_INFO): Remove - macros. - -2009-04-23 Bruno Haible - - Fix recognition of "nm" command. - * m4/libtool.m4 (LT_PATH_NM): Try "nm" program also when compiling for - mingw in a cygwin environment. - -2009-04-23 Bruno Haible - - * m4/libtool.m4: Fix recognition of 'link' command. - 2009-01-26 Peter Rosin - Don't settle for any dumpbin/link program as name lister. - * m4/libtool.m4 (LT_PATH_NM): When locating dumpbin or - link -dump, check if they appear to really be capable of name - listing, in order to eliminate e.g. link from coreutils. This - makes the name lister decision fall back on nm as the default - if no acceptable candidate is found, which mainly happens on - (arguably broken) cross compiles. - -2009-03-14 Bruno Haible - - * autogen.sh: Checkout gnulib using 'git' instead of 'cvs'. - -2009-01-14 Bruno Haible - - * configure.ac: More consistent m4 quoting. - -2008-12-07 Bruno Haible - - * build-aux/fixaclocal: Update for automake-1.10.2. - -2008-10-01 Ralf Wildenhues - - * m4/libtool.m4 (install_override_mode): New LT_DECL. - (_LT_SYS_DYNAMIC_LINKER) [hpux9*, hpux10*, hpux11*]: Set it. - * build-aux/ltmain.sh (func_mode_install): Build a second command line, - $install_shared_prog, for the installation of the shared library. - Override resp. set the permission mode if install_override_mode is - nonempty. - -2008-10-04 Bruno Haible - - * autogen.sh: Fix execute permissions of some files. - -2008-09-28 Bruno Haible - - * build-aux/ltmain.sh (func_emit_cwrapperexe_src): On mingw, - preprocess the argument vector through prepare_spawn. - -2008-09-27 Bruno Haible - - * autogen.sh (GNULIB_MODULES_RUNTIME_FOR_SRC): Add sigpipe, stdio. - (GNULIB_MODULES_TOOLS_FOR_SRC): Add sigpipe, stdio, sys_select, write. - (GNULIB_MODULES_LIBGETTEXTPO): Add sigpipe, stdio. - -2008-09-27 Bruno Haible - - * build-aux/config.guess: Update to GNU version 2008-09-08. - * build-aux/config.sub: Likewise. - -2008-09-21 Bruno Haible - - * build-aux/fixaclocal: Adapt for newer versions of 'aclocal'. - -2008-09-14 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC, - GNULIB_MODULES_LIBGETTEXTPO): Add strerror. - -2008-09-07 Bruno Haible - - * m4/libtool.m4: Update from libtool-2.2.6, with modifications: - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}. - * m4/ltoptions.m4: Update from libtool-2.2.6. - * m4/ltsugar.m4: Likewise. - * m4/ltversion.m4: Likewise. - * build-aux/ltmain.sh: Likewise. - -2008-09-01 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC, - GNULIB_MODULES_LIBGETTEXTPO): Add xconcat-filename. - -2008-08-31 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add sigprocmask. - -2008-08-30 Bruno Haible - - * autogen.sh (GNULIB_MODULES_LIBGETTEXTPO): Add open. - -2008-08-17 Bruno Haible - - * Makefile.am (distcheck-hook): Also compare threadlib.m4. - -2008-08-14 Bruno Haible - - * Makefile.am (distcheck-hook): Update check of lock.h and lock.c. - -2008-05-22 Bruno Haible - - * README.woe32: Add a note about the libiconv dependency. - Reported by Marko Lindqvist . - -2008-05-18 Bruno Haible - - * m4/libtool.m4: Update from libtool-2.2.4, with modifications: - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}. - * m4/ltoptions.m4: Update from libtool-2.2.4. - * m4/ltversion.m4: Likewise. - * m4/lt~obsolete.m4: Likewise. - * build-aux/ltmain.sh: Likewise. - -2008-05-10 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Replace linebreak with - unilbrk/ulc-width-linebreaks. - (GNULIB_MODULES_LIBGETTEXTPO): Likewise. - -2008-04-20 Bruno Haible - - * m4/libtool.m4: Update from libtool-2.2.2, with modifications: - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}. - * m4/ltoptions.m4: New file, from libtool-2.2.2. - * m4/ltsugar.m4: New file, from libtool-2.2.2. - * m4/ltversion.m4: New file, from libtool-2.2.2. - * m4/lt~obsolete.m4: New file, from libtool-2.2.2. - * build-aux/ltmain.sh: Update from libtool-2.2.2. - -2007-12-24 Bruno Haible - - * version.sh: Bump to 0.18-pre1. - -2007-11-10 Bruno Haible - - * Makefile.am (distcheck-hook): Add a check for eoverflow.m4. - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2007-11-04 Bruno Haible - - * windows/windres-options (sed_extract_major, sed_extract_minor, - sed_extract_subminor): Use 'c' command instead of 'a' command. Needed - for GNU sed 3.02. - -2007-11-03 Bruno Haible - - * Makefile.am (distcheck-hook): Add another check for vasnprintf.c. - -2007-11-01 Bruno Haible - - * version.sh: Bump version number to 0.17. - -2007-10-31 Bruno Haible - - * Makefile.am (distcheck-hook): Exclude copyright header when comparing - localename.c, relocatable.h, relocatable.c. - -2007-10-31 Bruno Haible - - * PACKAGING: Remove ulonglong.m4. - * Makefile.am (distcheck-hook): Remove check of ulonglong.m4. - -2007-10-26 Bruno Haible - - * m4/libtool.m4: Update, based on libtool-1.5.24. - * build-aux/ltmain.sh: Update, based on libtool-1.5.24. - -2007-10-17 Bruno Haible - - * windows/windres-options (sed_extract_major, sed_extract_minor, - sed_extract_subminor): Use newlines instead of semicolons. Add a - newline also after the last command in a braced group. - Needed for GNU sed-3.02, which does not like "q}". - -2007-10-17 Bruno Haible - - * README.woe32: Recommend to set PATH. Needed so that libiconv-2.dll - is found during autoconfiguration. - -2007-10-07 Bruno Haible - - * COPYING: Replace with GPL 3. - * windows/gettext.rc (Comments): Update. - * Makefile.am (distcheck-hook): Update. - -2007-10-06 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add open, fopen. - (GNULIB_MODULES_LIBGETTEXTPO): Add fopen. - Reported by Mark Moriarty . - -2007-10-06 Bruno Haible - - * build-aux/texinfo.tex: Upgrade to texinfo-4.11. - Needed because the original texinfo.tex does not support the - @documentencoding macro and the texinfo-4.11 texi2dvi then fails due to - this. - -2007-10-05 Bruno Haible - - * Makefile.am (distcheck-hook): Update check of relocatable.h, - relocatable.c. Check alloca.in.h instead of alloca_.h. Remove check of - strdup.h. - -2007-10-03 Bruno Haible - - * Makefile.am (EXTRA_DIST): Add build-aux/fixaclocal. - -2007-10-03 Bruno Haible - - * INSTALL (Enabling Relocatability): New section, produced by - "LANG= LC_MESSAGES= LC_ALL= LANGUAGE= \ - makeinfo --no-header --no-validate --output=... relocatable.texi". - (Relocatable Installation): Remove section. - -2007-10-01 Bruno Haible - - * autogen.sh: Invoke gnulib-tool with options --tests-base=gnulib-tests - --with-tests. - -2007-10-01 Bruno Haible - - * build-aux/depcomp: New file, from automake-1.10. Needed for the - gettext-tools/gnulib-tests directory. - -2007-09-29 Bruno Haible - - * autogen.sh (GNULIB_CVS_ROOT): Change to read-only git mirror - valid since 2007-09-19. - -2007-09-01 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC, - GNULIB_MODULES_LIBGETTEXTPO): Add uniwidth/width. - -2007-07-07 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add uniname/uniname. - -2007-07-06 Bruno Haible - - * autogen.sh: Add an option --skip-gnulib. - -2007-06-28 Bruno Haible - - * HACKING: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2007-06-09 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Use xmalloca instead of - xallocsa. - (GNULIB_MODULES_LIBGETTEXTPO): Likewise. - -2007-06-08 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add module 'localename'. - * Makefile.am (distcheck-hook): Compare also localename.c. - -2007-06-07 Bruno Haible - - * Makefile.am (distcheck-hook): Check also intlmacosx.m4. - * PACKAGING: Mention also intlmacosx.m4. - -2007-05-28 Bruno Haible - - * windows/windres-options: New file. - * windows/gettext.rc: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2007-05-27 Bruno Haible - - * m4/libtool.m4 (AC_LIBTOOL_PROG_LD_SHLIBS): Fix support for Sun C 5.9 - on Linux. - -2007-05-27 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add module 'openmp'. - -2007-05-14 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add module 'sys_stat'. - -2007-04-10 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add module 'locale'. - Reported by Dennis Schridde . - -2007-04-06 Bruno Haible - - * Makefile.am (distcheck-hook): Don't compare longdouble.m4. - * PACKAGING: Remove longdouble.m4 from the file list. - -2007-04-02 Bruno Haible - - * DEPENDENCIES: Mention dependency towards cvs. - Reported by Dennis Schridde . - -2007-03-27 Bruno Haible - - * PACKAGING: Don't mention share/doc/gettext/javadoc1/ any more. - -2007-03-04 Bruno Haible - - Moved --enable-relocatable infrastructure to gnulib. - * autogen.sh (GNULIB_MODULES_RUNTIME_FOR_SRC): Add relocatable-prog. - Remove relocatable, relocwrapper. - (GNULIB_MODULES_TOOLS_FOR_SRC): Likewise. - (GNULIB_MODULES_LIBGETTEXTPO): Add relocatable-lib. - (GNULIB_MODULES_LIBGETTEXTPO_OTHER): Remove - gettext-tools-libgettextpo-misc. - -2007-03-04 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC, - GNULIB_MODULES_LIBGETTEXTPO): Use module 'filename' instead of - 'pathname'. - -2007-03-04 Bruno Haible - - * autogen.sh: Remove gnulib-cache.m4 files before running gnulib-tool, - so that removed modules are really dropped. - -2007-02-28 Bruno Haible - - Move relocatability infrastructure to gnulib. - * build-aux/config.libpath: Remove file. - * build-aux/reloc-ldflags: Remove file. - * build-aux/install-reloc: Remove file. - * Makefile.am (EXTRA_DIST): Remove these files. - -2007-01-26 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add sys_time. - -2006-12-23 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_OTHER): Add stdint. - -2006-12-21 Bruno Haible - - * autogen.sh: Pass --makefile-name option to gnulib-tool for - gettext-tools/gnulib-lib. - -2006-12-19 Bruno Haible - - * Makefile.am (EXTRA_DIST): Add build-aux/moopp. - -2006-12-01 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add fd-ostream, - styled-ostream, html-styled-ostream, term-styled-ostream. - -2006-12-04 Bruno Haible - - * DEPENDENCIES: New file. - * INSTALL, README: Refer to it. - * Makefile.am (EXTRA_DIST): Add it. - -2006-11-23 Bruno Haible - - * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC, - GNULIB_MODULES_LIBGETTEXTPO): Add ostream, file-ostream. - -2006-11-12 Bruno Haible - - * configure.ac (am__tar): Override automake's definition. - -2006-11-12 Bruno Haible - - * autogen.sh: Pass --local-symlink option to all gnulib-tool - invocations. - -2006-11-08 Bruno Haible - - * build-aux/install-reloc: Use canonicalize-lgpl.c instead of - canonicalize.c. - -2006-11-05 Bruno Haible - - * autogen.sh (GNULIB_MODULES_RUNTIME_FOR_SRC): Renamed from - GNULIB_MODULES_FOR_SRC. - (GNULIB_MODULES_RUNTIME_OTHER): Renamed from GNULIB_MODULES_OTHER. - (GNULIB_MODULES_TOOLS_FOR_SRC): Renamed from GNULIB_MODULES_FOR_SRC. - (GNULIB_MODULES_TOOLS_FOR_LIBGREP): Renamed from - GNULIB_MODULES_FOR_LIBGREP. - (GNULIB_MODULES_TOOLS_OTHER): Renamed from GNULIB_MODULES_OTHER. - (GNULIB_MODULES_LIBGETTEXTPO): Renamed from - GNULIB_MODULES_FOR_LIBGETTEXTPO. - (GNULIB_MODULES_LIBGETTEXTPO_OTHER): Renamed from GNULIB_MODULES_OTHER. - -2006-10-27 Bruno Haible - - Work around automake-1.10 annoyance. - * build-aux/fixaclocal: New file. - * autogen.sh: Use it for every aclocal invocation. - * Makefile.am (ACLOCAL): New macro. - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-11-27 Bruno Haible - - * version.sh: Bump version number to 0.16.1. - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-10-25 Bruno Haible - - * autogen.sh (GNULIB_MODULES_OTHER): For libgettextpo, add - gettext-tools-libgettextpo-misc. - -2006-10-25 Bruno Haible - - * build-aux/install-reloc: Define IN_RELOCWRAPPER for the compilation. - -2006-10-24 Bruno Haible - - * version.sh: Bump version number to 0.16. - -2006-10-24 Bruno Haible - - * autogen.sh (GNULIB_MODULES_FOR_LIBGETTEXTPO): Add unlocked-io. - Needed because gettext-tools/configure ends up setting USE_UNLOCKED_IO - in gettext-tools/config.h. - -2006-10-23 Bruno Haible - - * m4/fixautomake.m4 (FIX_MAKEFILE_TOPDIR_DISTRIB): Make it work with - automake-1.10 too. - -2006-10-20 Bruno Haible - - * autogen.sh: Don't remove gettext-tools/libgettextpo/gnulib-m4. - Move the "-I gnulib-m4" to the end of the aclocal command lines. - Also add "-I libgettextpo/gnulib-m4". - -2006-10-16 Bruno Haible - - * autogen.sh (GNULIB_MODULES_FOR_LIBGETTEXTPO): New variable. - Invoke gnulib-tool also for libgettextpo. - -2006-10-16 Bruno Haible - - * autogen.sh (GNULIB_MODULES_FOR_SRC): Add xstriconv. - -2006-10-07 Bruno Haible - - * Makefile.am (distcheck-hook): New rule. - -2006-10-02 Bruno Haible - - * version.sh: Bump version number to 0.15.1. - -2006-10-02 Bruno Haible - - * build-aux/config.sub: Update to GNU version 2006-09-20. - -2006-10-01 Bruno Haible - - * PACKAGING: Mention intldir.m4. - -2006-09-18 Bruno Haible - - * PACKAGING: Remove inttypes-h.m4. - -2006-09-11 Bruno Haible - - * PACKAGING: Mention intl.m4. - -2006-09-06 Bruno Haible - - * autogen.sh (GNULIB_MODULES_FOR_SRC): Add xstriconv, remove - iconvstring. - -2006-08-26 Bruno Haible - - * m4/woe32-dll.m4: Update comments. - -2006-08-28 Bruno Haible - - * PACKAGING: Remove signed.m4. - -2006-08-23 Bruno Haible - - * INSTALL: Recommend to pass variables as configure arguments. - Suggested by Ralf Wildenhues. - -2006-08-08 Bruno Haible - - * INSTALL: Add a recommendation for Tru64. - Reported by Gary V. Vaughan . - -2006-08-04 Bruno Haible - - * README.woe32: Recommend to use cygwin as development environment, - and mingw only as target environment. Needed to avoid libtool problems - reported by Matthew McGillis . - -2006-07-31 Bruno Haible - - * autogen.sh: Invoke gnulib-tool inside gettext-runtime directory. - Append gettext-runtime/gnulib-m4 to the macro search path; remove - references to gettext-tools from gettext-runtime. - -2006-08-02 Bruno Haible - - * Makefile.am (SUBDIRS): Add gnulib-local. - * configure.ac (AC_CONFIG_FILES): Add gnulib-local/Makefile. - -2006-07-31 Bruno Haible - - * autogen.sh: Process the top-level directory after its subdirectories, - not before. Needed because of the recursive autoconf invocation in - the top-level configure.ac. - -2006-07-31 Bruno Haible - - * autogen.sh: If GNULIB_TOOL is not set, make an anonymous checkout - of gnulib. - -2006-07-30 Bruno Haible - - * gnulib-local: New directory. - * autogen.sh: Invoke gnulib-tool inside gettext-tools directory. - Append gettext-tools/gnulib-m4 to the macro search path. - -2006-07-30 Bruno Haible - - * build-aux/csharpcomp.sh.in: Move here from - gettext-tools/lib/csharpcomp.sh.in. - * build-aux/csharpexec.sh.in: Move here from - gettext-tools/lib/csharpexec.sh.in. - * build-aux/javacomp.sh.in: Move here from - gettext-tools/lib/javacomp.sh.in. - * build-aux/javaexec.sh.in: Move here from - gettext-tools/lib/javaexec.sh.in. - -2006-07-22 Bruno Haible - - * autogen.sh: Accept option --quick. - -2006-07-25 Bruno Haible - - Remove MSVC/nmake build support. - * Makefile.msvc: Remove file. - * Makefile.am (EXTRA_DIST): Remove Makefile.msvc. - -2006-07-25 Bruno Haible - - Remove VMS support. - * vms: Remove directory. - * Makefile.vms: Remove file. - * README.vms: Remove file. - * Makefile.am (EXTRA_DIST): Update. - -2006-07-24 Bruno Haible - - * m4/fixautomake.m4 (FIX_MAKEFILE_TOPDIR_DISTRIB): Protect the initial - tab with a backslash. Needed for MacOS X sed. - Reported by Denis Excoffier . - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2006-07-21 Bruno Haible - - * m4/fixautomake.m4 (FIX_MAKEFILE_TOPDIR_DISTRIB): Use a multiline -e - argument instead of multiple -e arguments. Needed for AIX 4. - -2006-07-20 Bruno Haible - - * version.sh: Bump version number to 0.15. - -2006-07-20 Bruno Haible - - * build-aux/compile: Update from automake-1.9.6. - * build-aux/elisp-comp: Likewise. - * build-aux/install-sh: Likewise. - * build-aux/mdate-sh: Likewise. - * build-aux/missing: Likewise. - * build-aux/mkinstalldirs: Likewise. - * build-aux/ylwrap: Likewise. - -2006-07-20 Bruno Haible - - * build-aux/config.guess, build-aux/config.sub: Update to GNU version - 2006-07-02. - -2006-07-13 Bruno Haible - - * m4/fixautomake.m4 (FIX_MAKEFILE_TOPDIR_DISTRIB): New macro. - -2006-07-13 Bruno Haible - - * Makefile.am (SUBDIRS): Put autoconf-lib-link last. - -2006-06-29 Bruno Haible - - * autogen.sh: Recurse also into the gettext-tools/examples directory - and update the PO files there. - -2006-06-27 Bruno Haible - - * PACKAGING: Don't mention isc-posix.m4. - -2006-06-27 Bruno Haible - - Assume vprintf function. - * os2/configure.awk: Remove unused HAVE_VPRINTF substitution. - -2006-04-14 Bruno Haible - - * autogen.sh: Require autoconf-2.60. - -2006-03-28 Ralf Wildenhues - - * m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [ linux ]: Avoid warning when - "parsing" /etc/ld.so.conf and empty /etc/ld.so.conf.d. - -2006-06-04 Bruno Haible - - * PACKAGING: Mention inttypes-h.m4. - -2006-05-14 Bruno Haible , - Ralf Wildenhues - - * m4/libtool.m4 [ linux ] (AC_LIBTOOL_LANG_CXX_CONFIG) - (AC_LIBTOOL_POSTDEP_PREDEP, AC_LIBTOOL_PROG_COMPILER_PIC) - (AC_LIBTOOL_PROG_LD_SHLIBS): Add support for Sun C 5.9, - Sun C++ 5.9, and Sun Fortran 8.3 on Linux. - -2006-05-06 Charles Wilson - - * m4/libtool.m4: On Cygwin, like on mingw, define DLL_EXPORT when - compiling a shared library object. - -2006-04-26 Bruno Haible - - * build-aux/config.guess, build-aux/config.sub: Update to GNU version - 2006-04-26. - -2006-04-17 Bruno Haible - - * PACKAGING: Remove mkinstalldirs file. - -2006-04-20 Bruno Haible - - * autogen.sh: Also regenerate examples PO files. - Reported by Charles Wilson . - -2006-03-28 Bruno Haible - - * PACKAGING: Mention bin/recode* programs. - -2005-12-29 Bruno Haible - - * build-aux/install-reloc: If hard linking is not possible, use a - simple copy. Needed on Woe32 filesystems. - -2005-12-19 Bruno Haible - - * build-aux/ltmain.sh: Upgrade to libtool-1.5.22. - 2001-11-03 Bruno Haible - * build-aux/ltmain.sh: chmod 777 the .libs directory, so that - "make install" succeeds. - * m4/libtool.m4: Upgrade to libtool-1.5.22. - 2004-02-22 Bruno Haible - * m4/libtool.m4: Add support for Comeau C++ on Linux. - Reported by Prof. Roberto Bagnara . - -2005-11-23 Bruno Haible - - Cygwin portability. - * build-aux/install-reloc: Expect additional exeext argument. On - Cygwin, use suffix ".bin.exe" instead of just ".bin". - * m4/woe32-dll.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2005-09-18 Bruno Haible - - * build-aux/ltmain.sh: Upgrade to libtool-1.5.20. - 2003-11-27 Bruno Haible - * build-aux/ltmain.sh: In the trampoline code, include - string.h, ctype.h. Fixes warnings on cygwin. - 2001-11-03 Bruno Haible - * build-aux/ltmain.sh: chmod 777 the .libs directory, so that - "make install" succeeds. - * m4/libtool.m4: Upgrade to libtool-1.5.20. - 2004-02-22 Bruno Haible - * m4/libtool.m4: Add support for Comeau C++ on Linux. - Reported by Prof. Roberto Bagnara . - -2008-08-28 Bruno Haible - - * autogen.sh: Make the script executable. - -2008-08-28 Bruno Haible - - * autogen.sh: Remove code for gettext-runtime/glocale. - -2005-07-31 Bruno Haible - - * autogen.sh: Add commands for gettext-runtime/glocale directory. - -2005-07-24 Bruno Haible - - Tidy up exported symbols. - * PACKAGING: Mention visibility.m4. - -2005-07-16 Bruno Haible - - * PACKAGING: Add lock.m4. - -2005-07-08 Bruno Haible - - * m4/libtool.m4 (postinstall_cmds) [cygwin,mingw,pw32]: Make DLL - executable after installing it. - -2005-07-06 Bruno Haible - - * README.mingw: Remove file. - * Makefile.am (EXTRA_DIST): Remove README.mingw. - -2006-06-21 Bruno Haible - - * gettext-0.14.6 released. - -2006-06-21 Bruno Haible - - * version.sh: Bump version number to 0.14.6. - -2005-05-23 Bruno Haible - - * gettext-0.14.5 released. - -2005-05-23 Bruno Haible - - * version.sh: Bump version number to 0.14.5. - -2005-04-11 Bruno Haible - - * gettext-0.14.4 released. - -2005-04-11 Bruno Haible - - * version.sh: Bump version number to 0.14.4. - -2005-04-06 Bruno Haible - - * README: Recommend --program-transform-name instead of - --program-prefix. - Reported by Joel Reicher . - -2005-03-22 Bruno Haible - - * m4: New directory, renamed from config/m4/. - * build-aux: New directory, renamed from config/. - * configure.ac (AC_CONFIG_AUX_DIR): Use build-aux. - * Makefile.am (EXTRA_DIST): Update. - -2005-03-14 Bruno Haible - - * gettext-0.14.3 released. - -2005-03-14 Bruno Haible - - * version.sh: Bump version number to 0.14.3. - -2005-02-24 Bruno Haible - - * gettext-0.14.2 released. - -2005-02-24 Bruno Haible - - * version.sh: Bump version number to 0.14.2. - -2005-02-23 Bruno Haible - - * config/mdate-sh: Upgrade to automake-1.9.5. - * config/missing: Upgrade to automake-1.9.5. - -2005-02-12 Bruno Haible - - * config/ltmain.sh: Upgrade to libtool-1.5.14. - 2003-11-27 Bruno Haible - * config/ltmain.sh: In the trampoline code, include string.h, - ctype.h, and return 127. Fixes warnings on cygwin. - 2003-02-18 Bruno Haible - * config/ltmain.sh (install): Use "ln -s -f" instead of - "rm -f && ln -s" to make a symlink for a shared library. Take - care of Solaris /bin/ln. - Reported by Nelson H. F. Beebe . - 2001-11-03 Bruno Haible - * config/ltmain.sh: chmod 777 the .libs directory, so that - "make install" succeeds. - -2005-02-11 Bruno Haible - - * config/config.guess, config/config.sub: Update to GNU version - 2005-02-10. - -2005-02-07 Bruno Haible - - * config/config.libpath: Use LC_ALL=C to protect range expression - against Estonian locale. - -2005-02-07 Bruno Haible - - * config/ltmain.sh: Upgrade to libtool-1.5.12. - 2003-11-27 Bruno Haible - * config/ltmain.sh: In the trampoline code, include string.h, - ctype.h, and return 127. Fixes warnings on cygwin. - 2003-02-18 Bruno Haible - * config/ltmain.sh (install): Use "ln -s -f" instead of - "rm -f && ln -s" to make a symlink for a shared library. Take - care of Solaris /bin/ln. - Reported by Nelson H. F. Beebe . - 2001-11-03 Bruno Haible - * config/ltmain.sh: chmod 777 the .libs directory, so that - "make install" succeeds. - * config/m4/libtool.m4: Upgrade to libtool-1.5.12. - 2004-02-22 Bruno Haible - * config/m4/libtool.m4: Add support for Comeau C++ on Linux. - Reported by Prof. Roberto Bagnara . - -2005-02-06 Bruno Haible - - * config/compile: Upgrade to automake-1.9.4. - * config/elisp-comp: Upgrade to automake-1.9.4. - * config/install-sh: Upgrade to automake-1.9.4. - * config/mdate-sh: Upgrade to automake-1.9.4. - * config/missing: Upgrade to automake-1.9.4. - 2002-03-07 Bruno Haible - * config/missing (makeinfo): Don't call touch without arguments - if the source texinfo file doesn't contain a @setfilename - command. - Reported by Miroslaw Dobrzanski-Neumann . - * config/mkinstalldirs: Upgrade to automake-1.9.4. - * config/ylwrap: Upgrade to automake-1.9.4. - Reported by Albert Chin-A-Young . - -2005-01-20 Bruno Haible - - * PACKAGING: Add some notes about Java and C#. - -2005-01-05 Bruno Haible - - Fix the "configure --help" output. - * config/ac-help.sed: New file. - * configure.ac: Use it. - * Makefile.am (EXTRA_DIST): Add config/ac-help.sed. - -2005-01-05 Bruno Haible - - * version.sh: Bump version number to 0.14.2-pre1. - -2005-01-05 Bruno Haible - - * config/ltmain.sh: Upgrade to libtool-1.5.10. - 2003-11-27 Bruno Haible - * config/ltmain.sh: In the trampoline code, include string.h, - ctype.h, and return 127. Fixes warnings on cygwin. - 2003-02-18 Bruno Haible - * config/ltmain.sh (install): Use "ln -s -f" instead of - "rm -f && ln -s" to make a symlink for a shared library. Take - care of Solaris /bin/ln. - Reported by Nelson H. F. Beebe . - 2001-11-03 Bruno Haible - * config/ltmain.sh: chmod 777 the .libs directory, so that - "make install" succeeds. - * config/m4/libtool.m4: Upgrade to libtool-1.5.10. - 2004-02-22 Bruno Haible - * config/m4/libtool.m4: Add support for Comeau C++ on Linux. - Reported by Prof. Roberto Bagnara . - -2004-09-06 Bruno Haible - - * Makefile.am (EXTRA_DIST): Add autogen.sh. - -2004-08-25 Bruno Haible - - * config/ltmain.sh: Upgrade to libtool-1.5.6. - 2003-11-27 Bruno Haible - * config/ltmain.sh: In the trampoline code, include string.h, - ctype.h, and return 127. Fixes warnings on cygwin. - 2003-02-18 Bruno Haible - * config/ltmain.sh (install): Use "ln -s -f" instead of - "rm -f && ln -s" to make a symlink for a shared library. Take - care of Solaris /bin/ln. - Reported by Nelson H. F. Beebe . - 2001-11-03 Bruno Haible - * config/ltmain.sh: chmod 777 the .libs directory, so that - "make install" succeeds. - * config/m4/libtool.m4: Upgrade to libtool-1.5.6. - 2004-02-22 Bruno Haible - * config/m4/libtool.m4: Add support for Comeau C++ on Linux. - Reported by Prof. Roberto Bagnara . - -2004-02-22 Bruno Haible - - * config/m4/libtool.m4: Add support for Comeau C++ on Linux. - Reported by Prof. Roberto Bagnara . - -2004-02-21 Bruno Haible - - * PACKAGING: Add FAQ.html. - -2004-01-26 Bruno Haible - - * config/config.libpath: Upgrade to libtool-1.5.2. - -2004-01-26 Bruno Haible - - * config/ltmain.sh: Upgrade to libtool-1.5.2. - 2003-11-27 Bruno Haible - * config/ltmain.sh: In the trampoline code, include string.h, - ctype.h, and return 127. Fixes warnings on cygwin. - 2003-02-18 Bruno Haible - * config/ltmain.sh (install): Use "ln -s -f" instead of - "rm -f && ln -s" to make a symlink for a shared library. Take - care of Solaris /bin/ln. - Reported by Nelson H. F. Beebe . - 2001-11-03 Bruno Haible - * config/ltmain.sh: chmod 777 the .libs directory, so that - "make install" succeeds. - * config/m4/libtool.m4: Upgrade to libtool-1.5.2. - -2004-02-02 Bruno Haible - - * PACKAGING: Add glibc2.m4. - -2004-01-29 Bruno Haible - - * gettext-0.14.1 released. - -2004-01-29 Bruno Haible - - * version.sh: Bump version number to 0.14.1. - -2004-01-28 Bruno Haible - - * gettext-0.14 released. - -2004-01-28 Bruno Haible - - * version.sh: Bump version number to 0.14. - -2004-01-17 Bruno Haible - - * version.sh: Bump version number to 0.14-pre1. - -2004-01-17 Bruno Haible - - * config/config.guess, config/config.sub: Update to GNU version - 2004-01-05. - -2003-12-12 Bruno Haible - - Assume automake-1.8. - * Makefile.am (html): Remove rule. - -2003-11-30 Bruno Haible - - * config/install-reloc: Compile also the allocsa.c file. - -2003-12-17 Bruno Haible - - * gettext-0.13.1 released. - -2003-12-17 Bruno Haible - - * version.sh: Bump version number to 0.13.1. - -2003-11-30 Bruno Haible - - * gettext-0.13 released. - -2003-11-30 Bruno Haible - - * version.sh: Bump version number to 0.13. - -2003-11-27 Bruno Haible - - * config/ltmain.sh: In the trampoline code, include string.h, ctype.h, - and return 127. Fixes warnings on cygwin. - -2003-11-23 Bruno Haible - - * PACKAGING: Remove ssize_t.m4. - -2003-11-16 Bruno Haible - - * PACKAGING: Add size_max.m4, ssize_t.m4, xsize.m4. - -2003-11-16 Bruno Haible - - * config/config.guess, config/config.sub: Update to GNU version - 2003-11-03. - -2003-11-16 Bruno Haible - - * version.sh: Bump version number to 0.13-pre1. - -2003-11-15 Bruno Haible - - * PACKAGING: Add examples. - -2003-10-31 Bruno Haible - - * config/m4/fixautomake.m4 (FIX_MAKEFILE_COMPILE, FIX_MAKEFILE_DISTRIB, - FIX_MAKEFILE_INFO): Drop argument, use $ac_file instead. - -2003-09-13 Bruno Haible - - * PACKAGING: Add envsubst related files and gettext.sh. - -2003-08-23 Bruno Haible - - * version.sh: Bump version number to 0.12.2. - -2003-07-01 Bruno Haible - - * config/install-reloc: Also compile readlink.c. - -2003-06-19 Bruno Haible - - * PACKAGING: Add intmax.m4, longdouble.m4, longlong.m4, - printf-posix.m4, signed.m4, wchar_t.m4, wint_t.m4. - -2003-06-18 Bruno Haible - - * config/install-sh: Update from automake-1.7.5. - Reported by Paul Eggert. - -2003-06-11 Bruno Haible - - * README.gemtext: Remove outdated file. - * Makefile.am (EXTRA_DIST): Remove it. - Reported by Guido Flohr . - -2003-06-08 Bruno Haible - - * vms/link_options.opt: New file. - * vms/with-libiconv.opt, vms/without-libiconv.opt: New files. - * Makefile.am (EXTRA_DIST): Add them. - Reported by Jouk Jansen . - -2003-05-22 Bruno Haible - - * gettext-0.12.1 released. - -2003-05-22 Bruno Haible - - * version.sh: Bump version number to 0.12.1. - -2003-05-19 Bruno Haible - - * config/mdate-sh: Update from automake-1.7.5. - -2003-05-17 Bruno Haible - - * gettext-0.12 released. - -2003-05-17 Bruno Haible - - * version.sh: Bump version number to 0.12. - -2003-05-08 Bruno Haible - - * PACKAGING: Update for changed default value of $mandir and $docdir. - -2003-05-06 Bruno Haible - - * config/config.guess, config/config.sub: Update to GNU version - 2003-02-22. - -2003-04-24 Bruno Haible - - Support for libtool-1.5. - * configure.ac: Postprocess the esyscmd output by replacing - ]AC_ENABLE_SHARED_DEFAULT[ -> yes - ]AC_ENABLE_STATIC_DEFAULT[ -> yes - ]AC_ENABLE_FAST_INSTALL_DEFAULT[ -> yes - - * config/ltmain.sh: Upgrade to libtool-1.5. - 2003-02-18 Bruno Haible - * config/ltmain.sh (install): Use "ln -s -f" instead of - "rm -f && ln -s" to make a symlink for a shared library. Take - care of Solaris /bin/ln. - Reported by Nelson H. F. Beebe . - 2001-11-03 Bruno Haible - * config/m4/ltmain.sh: chmod 777 the .libs directory, so that - "make install" succeeds. - * config/m4/libtool.m4: Upgrade to libtool-1.5. - 2002-07-14 Bruno Haible - * config/m4/libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Add - support for GNU/FreeBSD. - -2003-04-12 Bruno Haible - - * Makefile.vms: Don't use the force target. - Suggested by Jouk Jansen . - -2003-04-12 Bruno Haible - - * Makefile.msvc (mandir, docdir): Use datadir instead of prefix. - -2003-04-06 Bruno Haible - - * config/install-reloc: Also compile progreloc.c. - -2003-04-05 Bruno Haible - - * config/install-reloc: Don't define NO_LIBRARIES. - -2003-04-01 Bruno Haible - - * README.mingw: New file. - * README.vms: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2003-03-30 Bruno Haible - - * Makefile.vms: New file. - * Makefile.am (EXTRA_DIST): Add Makefile.vms. - -2003-03-17 Bruno Haible - - Native Woe32/MSVC support. - * Makefile.msvc: New file. - * README.woe32: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2003-02-28 Bruno Haible - - Support for relocatable installation. - * config/config.libpath: New file. - * config/install-reloc: New file. - * config/reloc-ldflags: New file. - * Makefile.am (EXTRA_DIST): Add them. - * config/compile: New file, from automake-1.7.2. - * INSTALL: Document --enable-relocatable and --with-libintl-prefix. - -2003-02-27 Bruno Haible - - * configure.ac: Include AC_CANONICAL_HOST, AC_ARG_ENABLE, AC_ARG_WITH, - AC_ARG_VAR calls from the subdir configures. - * Makefile.am (configure): Depend on each subdir's configure.ac. - -2003-02-22 Bruno Haible - - * Makefile.am (ps, pdf): Remove rules, redundant with automake 1.7.2. - -2003-02-18 Bruno Haible - - Fix the 2002-09-16 fix. - * ltmain.sh (install): If "ln -s -f" fails (this is the case with - /usr/bin/ln on Solaris 2.7), fall back to "rm && ln -s". - -2003-02-18 Bruno Haible - - * config/config.guess, config/config.sub: Update to GNU version - 2003-02-03. - -2003-02-16 Bruno Haible - - Workaround autoconf >= 2.52 breakage. - * config/m4/libtool.m4 (AC_LIBTOOL_ARG_WITH): New macro. - (_LT_AC_LTCONFIG_HACK, AC_PROG_LD): Use it. - -2003-02-12 Bruno Haible - - Big restructuring. - * autoconf-lib-link: New subdirectory. - * gettext-runtime: New subdirectory. - * gettext-tools: New subdirectory. - * config: New subdirectory. - * configure.ac: New file. - * Makefile.am: New file. - * version.sh: New file. - - -See ChangeLog.0 for earlier changes. + Update translations + * gettext-runtime/po/fr.po: Update from Stéphane Aulery . + * gettext-runtime/po/nb.po: Update from Johnny A. Solbu . + * gettext-runtime/po/pt_BR.po: Update from Rafael Ferreira . + * gettext-runtime/po/sr.po: Update from Мирослав Николић . + * gettext-runtime/po/zh_TW.po: Update from Wei-Lun Chao . + * gettext-tools/examples/po/fr.po: Update from Stéphane Aulery . + * gettext-tools/examples/po/nb.po: Update from Johnny A. Solbu . + * gettext-tools/examples/po/pt_BR.po: Update from Rafael Ferreira . + * gettext-tools/examples/po/sr.po: Update from Мирослав Николић . + * gettext-tools/examples/po/zh_TW.po: Update from Wei-Lun Chao . + * gettext-tools/po/bg.po: Update from Roumen Petrov . + * gettext-tools/po/es.po: Update from Antonio Ceballos . + * gettext-tools/po/fr.po: Update from Stéphane Aulery . + * gettext-tools/po/ja.po: Update from Masahito Yamaga . + * gettext-tools/po/nl.po: Update from Benno Schulenberg . + * gettext-tools/po/pt_BR.po: Update from Rafael Fontenelle . + * gettext-tools/po/sk.po: Update from Marcel Telka . + * gettext-tools/po/sl.po: Update from Primoz PETERLIN . + * gettext-tools/po/sr.po: Update from Мирослав Николић . + * gettext-tools/po/uk.po: Update from Yuri Chornoivan . + * gettext-tools/po/vi.po: Update from Trần Ngọc Quân . + + Prepare for 0.19.7 + + doc: Regenerate translation matrix + * gettext-runtime/ABOUT-NLS: Regenerate for 0.19.7. + * gettext-runtime/doc/matrix.texi: Regenerate for 0.19.7. + + NEWS: Add 0.19.7 changes + + Update gnulib + + Ignore file brought by gnulib-tool + * gettext-tools/gnulib-tests/.gitignore: Ignore file brought by + gnulib-tool. + +2015-12-23 Daiki Ueno + + term-ostream-tests: Add test data for FreeBSD 10.1 + * gnulib-local/modules/term-ostream-tests: Add + test-term-ostream-xterm-freebsd101.out. + * gnulib-local/tests/test-term-ostream-xterm: Use new test data. + * gnulib-local/tests/test-term-ostream-xterm-freebsd101.out: New file. + +2015-12-21 Daiki Ueno + + cldr-plurals: Fix errors from clang-analyzer + * gettext-tools/src/cldr-plurals.c (extract_rules): Add extra null + checks for NODE and BUFFER. Don't add NUL byte to the end of buffer + manually. + +2015-12-17 Daiki Ueno + + po: Prefer to use host tools when cross compiling + * gettext-runtime/po/Makefile.in.in (CROSS_COMPILING): New substitute + variable. + (.nop.po-update): Don't prepend ../src to $PATH when cross compiling. + * gettext-runtime/po/Rules-quot (.insert-header.po-update-en): Likewise. + + its: Allow CDATA and comments in translatable node + * gettext-tools/src/its.c (its_rule_list_is_translatable): Don't return + false on CDATA and comments. + + its: Fix typo in GSettings rule + * gettext-tools/its/gsettings.its: Fix typo in escape rule. + +2015-12-15 Daiki Ueno + + gnulib-local: Fix link error due to symbol dupes + * gnulib-local/lib/libxml/trionan.c (minus_zerod): Mark as static. + + gnulib-local: Pull more functions for libxml + * gettext-tools/gnulib-lib/.gitignore: Ignore files brought by + gnulib-tool. + * gettext-tools/gnulib-tests/.gitignore: Likewise. + * gnulib-local/modules/libxml (Depends-on): Add 'pow', 'log10', and + 'fabs'. + + gnulib-local: Replace libxml2 trio with Gnulib + * gettext-tools/gnulib-lib/.gitignore: Ignore files brought by + gnulib-tool. + * gettext-tools/gnulib-tests/.gitignore: Likewise. + * gnulib-local/lib/libxml/triodef.h: Remove. + * gnulib-local/lib/libxml/trionan.c: Replace it with Gnulib functions. + * gnulib-local/lib/libxml/trionan.h: Remove. + * gnulib-local/modules/libxml (Depends-on): Add 'isinf', 'isnan', and + 'signbit'. + +2015-12-14 Daiki Ueno + + gnulib-local: Update included libxml2 to 2.9.3 + * gnulib-local/lib/libxml/*: Update from libxml2 2.9.3. Add buf.[ch], + enc.h, save.h, triodef.h, trionan.[ch]. Enable XPath and XPointer + support. + * gnulib-local/modules/libxml (Files): Add new files from libxml2 2.9.3. + +2015-12-10 Daiki Ueno + + gettext-tools: Update POTFILES.in + * gettext-tools/po/POTFILES.in: Add newly added files. + + gnulib-local: Make markup.c translator friendly + * gnulib-local/lib/markup.c: Reuse strings. + + its: Mark some attributes as escape="no" + * gettext-tools/its/glade2.its: Mark "comments" attribute as + escape="no". + * gettext-tools/its/gsettings.its: Mark "context" attribute as + escape="no". + * gettext-tools/its/gtkbuilder.its: Mark "comments" attribute as + escape="no". + + xgettext: Respect ITS escape rule for attributes + * gettext-tools/src/its.c (its_rule_list_extract_text): Check for + "escape" value for an attribute node. + * gettext-tools/tests/xgettext-its-1: Add tests for gt:escapeRule. + +2015-12-10 KO Myung-Hun (tiny change) + + intl: Fix name resolution failures on kLIBC + kLIBC already has _nl_default_dirname and _nl_msg_cat_cntr in its own + gettext implmenetation. + * gettext-runtime/intl/dcigettext.c: Do not declare _nl_default_dirname + on kLIBC. + * gettext-runtime/intl/gettextP.h: Define _nl_msg_cat_cntr to + libintl_nl_msg_cat_cntr on kLIBC. + + build: Do not include os2compat.[ch] + kLIBC does not need os2compat.[ch] + * gettext-runtime/configure.ac (AH_BOTTOM): Do not include + intl/os2compat.h on kLIBC. + * gettext-runtime/intl/osdep.c: Do not include os2compat.c on kLIBC. + * gettext-tools/configure.ac (AH_BOTTOM): Do not include + intl/os2compat.h on kLIBC. + + test-lock: Do not include sched.h on kLIBC + * gettext-runtime/tests/test-lock.c: Do not include sched.h on kLIBC, + since kLIBC does not have sched.h. + +2015-12-10 Daiki Ueno + + kde: Fix KUIT error handling when libxml2 is used + * gettext-tools/src/format-kde-kuit.c (format_parse): Return NULL if + xmlReadMemory returns NULL. + + xgettext: Add --its option for ease of testing + * gettext-tools/doc/xgettext.texi (Output details): Mention --its + option. + * gettext-tools/src/xgettext.c (long_options): Add --its option. + (main): Handle --its option. Suggested by Sébastien Wilmet. + + xgettext: Improve error reporting when ITS is used + * gettext-tools/src/xgettext.c (main): Print error when an ITS file is + designated through a locating rule, but the file does not exist. + + build: Update DEPENDENCIES + * DEPENDENCIES: Remove duplicate entry for libxml2. + +2015-12-09 Daiki Ueno + + build: Remove expat dependency + * DEPENDENCIES: Suggest libxml2 instead of expat. + * gnulib-local/lib/markup.c: New file. + * gnulib-local/lib/markup.h: New file. + * gnulib-local/modules/markup: New file. + * autogen.sh (GNULIB_MODULES_LIBGETTEXTPO): Add markup module. + * gettext-tools/configure.ac: Remove checks for expat. + * gettext-tools/gnulib-lib/.gitignore: Ignore modules pulled by + gnulib-tool due to the markup module usage. + * gettext-tools/gnulib-tests/.gitignore: Likewise. + * gettext-tools/libgettextpo/.gitignore: Likewise. + * gettext-tools/libgettextpo/Makefile.am (libgettextpo_la_AUXSOURCES): + Remove ../src/libexpat-compat.c. + (libgettextpo_la_LDFLAGS): Remove @LTLIBEXPAT@. + * gettext-tools/src/Makefile.am (noinst_HEADERS): Remove + libexpat-compat.h. + (libgettextsrc_la_SOURCES): Remove libexpat-compat.c. + (libgettextsrc_la_LDFLAGS): Remove @LTLIBEXPAT@. + * gettext-tools/src/format-kde-kuit.c: Use functions from markup.h, when + the file is being compiled as part of libgettextpo. Otherwise use + libxml2. + * gettext-tools/src/libexpat-compat.c: Remove. + * gettext-tools/src/libexpat-compat.h: Remove. + +2015-12-08 Daiki Ueno + + build: Fix texi2html failure with perl 5.22 + * gettext-runtime/libasprintf/texi2html (update_sec_num): Don't use + "defined" against an array ref. + * gettext-tools/doc/texi2html (update_sec_num): Likewise. + + Update gnulib + + xgettext: Ignore --from-code when XML mode + * gettext-tools/src/xgettext.c (extract_from_xml_file): Forcibly set + current source encoding to UTF-8, on XML mode. + + build: Suppress compiler warning + * gettext-tools/src/its.c (its_rule_list_extract_text): Remove unused + local variable "message". + +2015-12-04 Daiki Ueno + + msgfmt: Support XML file merging + * gettext-tools/src/Makefile.am (noinst_HEADERS): Add write-xml.h. + (msgfmt_SOURCES): Add write-xml.c. + * gettext-tools/src/its.c (its_merge_context_merge_node): New function. + (its_merge_context_merge): New function. + (its_merge_context_alloc): New function. + (its_merge_context_write): New function. + (its_merge_context_free): New function. + * gettext-tools/src/its.h (its_merge_context_ty): New type. + * gettext-tools/src/msgfmt.c: Include "its.h", "locating-rule.h", and + "write-xml.h". + (SIZEOF): New macro. + (xml_mode, xml_locale_name, xml_template_name, xml_base_directory, + xml_language, xml_its_rules): New variable. + (long_options): Add --language and --xml. + (main): Handle new options. + (usage): Document new options. + (msgfmt_xml_bulk): New function. + * gettext-tools/src/write-xml.c: New file. + * gettext-tools/src/write-xml.h: New file. + * gettext-tools/doc/gettext.texi: Mention XML file merging use-case. + * gettext-tools/doc/msgfmt.texi: Mention --xml option. + * gettext-tools/tests/msgfmt-xml-1: New file. + * gettext-tools/tests/msgfmt-xml-2: New file. + * gettext-tools/tests/Makefile.am (TESTS): Add new tests. + + xgettext: Rewrite Glade scanner in ITS + * gettext-tools/its/glade.loc: New file. + * gettext-tools/its/glade1.its: New file. + * gettext-tools/its/glade2.its: New file. + * gettext-tools/its/gtkbuilder.its: New file. + * gettext-tools/its/Makefile.am (dist_its_DATA): Add new files. + * gettext-tools/src/Makefile.am (xgettext_SOURCES): Remove x-glade.c. + * gettext-tools/src/x-glade.c: Remove. + * gettext-tools/src/x-glade.h (EXTENSIONS_GLADE): Set language field to + NULL. + (SCANNERS_GLADE): Set func field to NULL. + * gettext-tools/po/POTFILES.in: Remove x-glade.c + + xgettext: Rewrite GSettings scanner in ITS + * gettext-tools/its/gsettings.its: New file. + * gettext-tools/its/gsettings.loc: New file. + * gettext-tools/its/Makefile.am (dist_its_DATA): Add new files. + * gettext-tools/src/Makefile.am (xgettext_SOURCES): Remove x-gsettings.c. + * gettext-tools/src/x-gsettings.c: Remove. + * gettext-tools/src/x-gsettings.h (EXTENSIONS_GSETTINGS): Set language + field to NULL. + (SCANNER_GSETTINGS): Set func field to NULL. + + xgettext: Rewrite AppData scanner in ITS + * gettext-tools/its/appdata.loc: New file. + * gettext-tools/its/appdata.its: New file. + * gettext-tools/its/Makefile.am (dist_its_DATA): Add new files. + * gettext-tools/src/Makefile.am (xgettext_SOURCES): Remove x-appdata.c. + * gettext-tools/src/x-appdata.c: Remove. + * gettext-tools/src/x-appdata.h (EXTENSIONS_APPDATA): Set language + field to NULL. + (SCANNERS_APPDATA): Set func field to NULL. + + xgettext: Add support for generic XML files + * autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add trim module. + * gettext-tools/src/locating-rule.h: New file. + * gettext-tools/src/locating-rule.c: New file. + * gettext-tools/src/its.h: New file. + * gettext-tools/src/its.c: New file. + * gettext-tools/src/xgettext.c: Include "locating-rule.h" and "its.h". + (its_locators): New variable. + (long_options): Add --itstool option. + (extract_from_xml_file): New function. + (main): Handle --itstool option. + (usage): Document --itstool option. + * gettext-tools/src/Makefile.am (noinst_HEADERS): Add locating-rule.h + and its.h. + (libgettextsrc_la_CPPFLAGS): Add $(INCXML). + (libgettextsrc_la_SOURCES): Add locating-rule.c and its.c. + * gettext-tools/Makefile.am (SUBDIRS): Add its directory. + * gettext-tools/configure.ac: Output its/Makefile. + * gettext-tools/doc/gettext.texi (Preparing ITS Rules): New section. + * gettext-tools/doc/xgettext.texi: Mention --itstool option. + * gettext-tools/tests/Makefile.am (TESTS): Add new tests. + * gettext-tools/tests/xgettext-its-1: New file + * gettext-tools/tests/init-env.in: Set GETTEXTDATADIR for ITS tests. + +2015-11-18 Daiki Ueno + + cldr-plurals: Add sanity checks for input + * gettext-tools/src/cldr-plurals.c (extract_rules): Add null checks and + element type checks. + +2015-11-17 Daiki Ueno + + cldr-plurals: Rewrite XML handling using libxml2 + * src/cldr-plurals.c: Include and + , instead of "libexpat-compat.h". + (extract_locale, extracted_rules, parser, logical_file_name) + (struct element_state, stack, stack_size, stack_depth) + (ensure_stack_size, start_element_handler, end_element_handler) + (character_data_handler): Remove. + (extract_rules): Rename from extract_rule and rewrite using DOM. + (main): Use extract_rules. + * src/Makefile.am (cldr_plurals_CFLAGS): Add $(INCXML). + + cldr-plurals: Fix a trivial leak + * src/cldr-plural.y (sample_range): Free unused operand value. + +2015-11-17 Phil Davis (tiny change) + + doc: Fix typo in gettext_noop example + * doc/gettext.texi (Special cases): Add missing ')' to + a gettext_noop call. + +2015-10-29 Daiki Ueno + + maint: Ignore more generated ChangeLogs + * .gitignore: Add gettext-runtime/intl/ChangeLog, + gettext-runtime/po/ChangeLog, and gettext-tools/po/ChangeLog. + + m4: Fix typo in usage comment + * gettext-runtime/m4/gettext.m4: Remove duplicate words. + * gettext-runtime/m4/intl.m4: Likewise. + * gettext-runtime/m4/intldir.m4: Likewise. + * gettext-runtime/m4/intlmacosx.m4: Likewise. + * gettext-runtime/m4/lcmessage.m4: Likewise. + * gettext-runtime/m4/nls.m4: Likewise. + * gettext-runtime/m4/po.m4: Likewise. + * gettext-runtime/m4/progtest.m4: Likewise. + Reported by Jakub Wilk in: + https://lists.gnu.org/archive/html/bug-gettext/2015-10/msg00026.html. + + doc: Fix typo in msgfmt invocation + * gettext-tools/doc/msgfmt.texi: Fix the documentation of -d option, + used in the Desktop Entry mode. + +2015-10-15 Daiki Ueno + + build: Generate ChangeLogs for intl and po + * autogen.sh: Create empty ChangeLog files under intl and po. + * Makefile.am (gen-ChangeLogs): Rename from gen-ChangeLog. Generate + ChangeLog files for */intl and */po as well as top-level. + * gettext-runtime/intl/ChangeLog.0: Rename from ChangeLog. + * gettext-runtime/po/ChangeLog.0: Rename from ChangeLog. + * gettext-tools/po/ChangeLog.1: Rename from ChangeLog. + + build: Distribute old ChangeLogs in tarball + * Makefile.am (changelog_etc): Remove non-existent ChangeLog files + under intl and po. + (EXTRA_DIST): Add $(changelog_etc). + +2015-10-14 Mike Frysinger + + tests: use check_PROGRAMS + The noinst_xxx targets will be compiled all the time. For test programs, + the check_xxx targets make more sense as they'll only be built when the + user runs `make check`. + + * gettext-runtime/tests/Makefile.am (noinst_PROGRAMS): Rename to ... + (check_PROGRAMS): ... this. + +2015-10-14 Mike Frysinger + + intl/localename: control langinfo.h inclusion + This header is only used to work around buggy behavior in old versions + of glibc, so do not include it all the time. Otherwise we get build + failures on systems that do not provide langinfo.h. + + * gettext-runtime/intl/localename.c: Wrap langinfo.h include with same + ifdefs used in the source later on. + +2015-10-14 Daiki Ueno + + build: Remove ChangeLogs + Generate ChangeLog files at "make dist" time, using + gitlog-to-changelog. We still keep ChangeLog files under "po" and + "intl" directories, since those files are copied as part of gettext + infrastructure and it is still meaningful to have them there. + * .gitignore: Add ChangeLog files. + * Admin/release-steps: Remove mention of running update-changelog + script. + * Admin/update-changelog: Remove. + * Makefile.am (gen-ChangeLog): New rule. + * autogen.sh: Copy gitlog-to-changelog from gnulib. Create empty + ChangeLog files to suppress Automake errors. + * gettext-tools/doc/Makefile.am (EXTRA_DIST): Remove ChangeLog.0. + * gettext-tools/man/Makefile.am (EXTRA_DIST): Remove ChangeLog.0. + * gettext-tools/src/Makefile.am (EXTRA_DIST): Remove ChangeLog.0. + * gettext-tools/tests/Makefile.am (EXTRA_DIST): Remove ChangeLog.0. + * gnulib-local/Makefile.am (EXTRA_DIST): Remove ChangeLog files. + * */ChangeLog: Rename to ChangeLog.0 or ChangeLog.1. + * HACKING: Add brief guideline to submit patches. diff -Nru gettext-0.19.6/configure gettext-0.19.7/configure --- gettext-0.19.6/configure 2015-09-11 03:05:16.000000000 +0000 +++ gettext-0.19.7/configure 2015-12-27 23:09:48.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for gettext 0.19.6. +# Generated by GNU Autoconf 2.69 for gettext 0.19.7. # # Report bugs to . # @@ -579,8 +579,8 @@ # Identity of this package. PACKAGE_NAME='gettext' PACKAGE_TARNAME='gettext' -PACKAGE_VERSION='0.19.6' -PACKAGE_STRING='gettext 0.19.6' +PACKAGE_VERSION='0.19.7' +PACKAGE_STRING='gettext 0.19.7' PACKAGE_BUGREPORT='bug-gnu-gettext@gnu.org' PACKAGE_URL='' @@ -658,6 +658,7 @@ docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -720,7 +721,6 @@ with_libxcurses_prefix with_libcurses_prefix with_included_regex -with_libexpat_prefix with_emacs with_lispdir with_git @@ -785,6 +785,7 @@ sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1037,6 +1038,15 @@ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1174,7 +1184,7 @@ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1287,7 +1297,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures gettext 0.19.6 to adapt to many kinds of systems. +\`configure' configures gettext 0.19.7 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1327,6 +1337,7 @@ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1357,7 +1368,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of gettext 0.19.6:";; + short | recursive ) echo "Configuration of gettext 0.19.7:";; esac cat <<\_ACEOF @@ -1440,8 +1451,6 @@ don't compile regex; this is the default on systems with recent-enough versions of the GNU C Library (use with caution on other systems). - --with-libexpat-prefix[=DIR] search for PACKLIBS in DIR/include and DIR/lib - --without-libexpat-prefix don't search for PACKLIBS in includedir and libdir --without-emacs do not use Emacs, don't install po-mode --with-lispdir override the default lisp directory --without-git don't use git to compress the infrastructure archive @@ -1542,7 +1551,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -gettext configure 0.19.6 +gettext configure 0.19.7 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1559,7 +1568,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by gettext $as_me 0.19.6, which was +It was created by gettext $as_me 0.19.7, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2423,7 +2432,7 @@ # Define the identity of the package. PACKAGE='gettext' - VERSION='0.19.6' + VERSION='0.19.7' cat >>confdefs.h <<_ACEOF @@ -3033,12 +3042,6 @@ fi -# Check whether --with-libexpat-prefix was given. -if test "${with_libexpat_prefix+set}" = set; then : - withval=$with_libexpat_prefix; -fi - - # Check whether --with-emacs was given. if test "${with_emacs+set}" = set; then : withval=$with_emacs; @@ -3651,7 +3654,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by gettext $as_me 0.19.6, which was +This file was extended by gettext $as_me 0.19.7, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3704,7 +3707,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -gettext config.status 0.19.6 +gettext config.status 0.19.7 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru gettext-0.19.6/debian/changelog gettext-0.19.7/debian/changelog --- gettext-0.19.6/debian/changelog 2015-12-15 18:03:13.000000000 +0000 +++ gettext-0.19.7/debian/changelog 2016-01-11 12:00:31.000000000 +0000 @@ -1,3 +1,29 @@ +gettext (0.19.7-2ubuntu1) xenial; urgency=low + + * Merge from Debian unstable. Remaining changes: + - Allow the package to cross-build. + - Define a stage1 profile to build without java and git. + - Explicitly configure with --disable-csharp. + - Drop autopoint recommends of gettext. It pulls in git and + other sizable packages which make the CDs explode. + - gettext-el: Add an alternative dependency on emacs24. + + -- Rico Tzschichholz Mon, 11 Jan 2016 12:55:36 +0100 + +gettext (0.19.7-2) unstable; urgency=high + + * Install version specific data files from /usr/share/gettext-VERSION. + This should fix glade support. Thanks to Daiki Ueno. Closes: #809846. + + -- Santiago Vila Tue, 05 Jan 2016 00:55:00 +0100 + +gettext (0.19.7-1) unstable; urgency=medium + + * New upstream release. + * Drop libexpat1-dev from Build-Depends, following upstream. + + -- Santiago Vila Tue, 29 Dec 2015 18:27:12 +0100 + gettext (0.19.6-1ubuntu1) xenial; urgency=low * Merge from Debian unstable. Remaining changes: diff -Nru gettext-0.19.6/debian/control gettext-0.19.7/debian/control --- gettext-0.19.6/debian/control 2015-12-15 18:03:13.000000000 +0000 +++ gettext-0.19.7/debian/control 2016-01-11 12:00:24.000000000 +0000 @@ -4,7 +4,7 @@ Maintainer: Ubuntu Developers XSBC-Original-Maintainer: Santiago Vila Standards-Version: 3.9.6 -Build-Depends: libexpat1-dev, fastjar, default-jdk, file, libncurses5-dev, libxml2-dev, libglib2.0-dev, libcroco3-dev, xz-utils, libunistring-dev +Build-Depends: fastjar, default-jdk, file, libncurses5-dev, libxml2-dev, libglib2.0-dev, libcroco3-dev, xz-utils, libunistring-dev Homepage: http://www.gnu.org/software/gettext/ Package: gettext-base diff -Nru gettext-0.19.6/debian/copyright gettext-0.19.7/debian/copyright --- gettext-0.19.6/debian/copyright 2015-09-12 10:00:00.000000000 +0000 +++ gettext-0.19.7/debian/copyright 2016-01-04 22:00:00.000000000 +0000 @@ -7,7 +7,7 @@ This release has been built using the sources from: -http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.6.tar.xz +http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.7.tar.xz The changes were fairly minimal, and consisted solely of adding various debian/* files to the distribution. diff -Nru gettext-0.19.6/debian/gettext.lintian-overrides gettext-0.19.7/debian/gettext.lintian-overrides --- gettext-0.19.6/debian/gettext.lintian-overrides 2015-09-12 10:00:00.000000000 +0000 +++ gettext-0.19.7/debian/gettext.lintian-overrides 2016-01-04 22:00:00.000000000 +0000 @@ -7,8 +7,8 @@ # # Not for use by other packages. # -gettext: package-name-doesnt-match-sonames libgettextlib-0.19.6 libgettextsrc-0.19.6 libgnuintl8 +gettext: package-name-doesnt-match-sonames libgettextlib-0.19.7 libgettextsrc-0.19.7 libgnuintl8 gettext: no-shlibs-control-file usr/lib/preloadable_libintl.so -gettext: no-shlibs-control-file usr/lib/libgettextsrc-0.19.6.so -gettext: no-shlibs-control-file usr/lib/libgettextlib-0.19.6.so +gettext: no-shlibs-control-file usr/lib/libgettextsrc-0.19.7.so +gettext: no-shlibs-control-file usr/lib/libgettextlib-0.19.7.so gettext: shlib-in-multi-arch-foreign-package usr/lib/preloadable_libintl.so diff -Nru gettext-0.19.6/debian/patches/02-msgfmt-default-little-endian gettext-0.19.7/debian/patches/02-msgfmt-default-little-endian --- gettext-0.19.6/debian/patches/02-msgfmt-default-little-endian 2015-09-12 10:02:00.000000000 +0000 +++ gettext-0.19.7/debian/patches/02-msgfmt-default-little-endian 2016-01-05 22:02:00.000000000 +0000 @@ -5,7 +5,7 @@ --- a/gettext-tools/src/msgfmt.c +++ b/gettext-tools/src/msgfmt.c -@@ -234,6 +234,9 @@ +@@ -252,6 +252,9 @@ /* Set default value for global variables. */ alignment = DEFAULT_OUTPUT_ALIGNMENT; diff -Nru gettext-0.19.6/debian/rules gettext-0.19.7/debian/rules --- gettext-0.19.6/debian/rules 2015-12-15 18:03:13.000000000 +0000 +++ gettext-0.19.7/debian/rules 2016-01-11 12:00:24.000000000 +0000 @@ -176,7 +176,7 @@ cp -a debian/tmp/usr/lib debian/$@/usr cp -a debian/tmp/usr/share/info debian/$@/usr/share cp -a debian/tmp/usr/share/aclocal debian/$@/usr/share - cp -a debian/tmp/usr/share/gettext debian/$@/usr/share + cp -a debian/tmp/usr/share/gettext* debian/$@/usr/share rm -f debian/$@/usr/share/gettext/libintl.jar ifeq (,$(findstring %$(DEB_HOST_ARCH)%,$(NOJAVA_ARCHS))) ifeq ($(filter stage1,$(DEB_BUILD_PROFILES)),) diff -Nru gettext-0.19.6/DEPENDENCIES gettext-0.19.7/DEPENDENCIES --- gettext-0.19.6/DEPENDENCIES 2015-08-21 05:48:27.000000000 +0000 +++ gettext-0.19.7/DEPENDENCIES 2015-12-09 19:37:28.000000000 +0000 @@ -28,15 +28,19 @@ + If it is installed in a nonstandard directory, pass the option --with-ncurses-prefix=DIR or --with-libtermcap-prefix to 'configure'. -* expat 1.95 or newer +* libxml2 + Recommended. - Needed for 'xgettext', so that it can parse Glade XML files. + Needed for 'xgettext' and 'msgfmt', so that it can parse XML + files. Also needed for the --color option of the various + programs. + If not present, a subset of libxml2 (included in this package) will be + compiled into libgettextlib. + Homepage: - http://expat.sourceforge.net/ + http://xmlsoft.org/ + Download: - http://sourceforge.net/project/showfiles.php?group_id=10127 + ftp://xmlsoft.org/libxml2/ + If it is installed in a nonstandard directory, pass the option - --with-libexpat-prefix to 'configure'. + --with-libxml2-prefix=DIR to 'configure'. * A Java runtime and compiler (e.g. GNU gcj or kaffe). + Recommended. @@ -105,18 +109,6 @@ + Download: http://tukaani.org/xz/ -* libxml2 - + Optional. - Needed for the --color option of the various programs. - If not present, a subset of libxml2 (included in this package) will be - compiled into libgettextlib. - + Homepage: - http://xmlsoft.org/ - + Download: - ftp://xmlsoft.org/libxml2/ - + If it is installed in a nonstandard directory, pass the option - --with-libxml2-prefix=DIR to 'configure'. - * GNOME glib2 + Optional. Needed for the --color option of the various programs. diff -Nru gettext-0.19.6/gettext-runtime/ABOUT-NLS gettext-0.19.7/gettext-runtime/ABOUT-NLS --- gettext-0.19.6/gettext-runtime/ABOUT-NLS 2015-09-11 01:43:14.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/ABOUT-NLS 2015-12-27 22:58:08.000000000 +0000 @@ -1,16 +1,16 @@ 1 Notes on the Free Translation Project *************************************** -Free software is going international! The Free Translation Project is -a way to get maintainers of free software, translators, and users all +Free software is going international! The Free Translation Project is a +way to get maintainers of free software, translators, and users all together, so that free software will gradually become able to speak many languages. A few packages already provide translations for their messages. - If you found this `ABOUT-NLS' file inside a distribution, you may -assume that the distributed package does use GNU `gettext' internally, + If you found this 'ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU 'gettext' internally, itself available at your nearest GNU archive site. But you do _not_ -need to install GNU `gettext' prior to configuring, installing or using +need to install GNU 'gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also @@ -23,12 +23,12 @@ Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such -packages use GNU `gettext'. Other packages have their own ways to -internationalization, predating GNU `gettext'. +packages use GNU 'gettext'. Other packages have their own ways to +internationalization, predating GNU 'gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already -provides the GNU `gettext' functions. Installers may use special +provides the GNU 'gettext' functions. Installers may use special options at configuration time for changing the default behaviour. The command: @@ -36,72 +36,71 @@ will _totally_ disable translation of messages. - When you already have GNU `gettext' installed on your system and run -configure without an option for your new package, `configure' will -probably detect the previously built and installed `libintl' library -and will decide to use it. If not, you may have to to use the -`--with-libintl-prefix' option to tell `configure' where to look for it. + When you already have GNU 'gettext' installed on your system and run +configure without an option for your new package, 'configure' will +probably detect the previously built and installed 'libintl' library and +will decide to use it. If not, you may have to to use the +'--with-libintl-prefix' option to tell 'configure' where to look for it. - Internationalized packages usually have many `po/LL.po' files, where + Internationalized packages usually have many 'po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless -translations have been forbidden at `configure' time by using the -`--disable-nls' switch, all available translations are installed -together with the package. However, the environment variable `LINGUAS' +translations have been forbidden at 'configure' time by using the +'--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable 'LINGUAS' may be set, prior to configuration, to limit the installed set. -`LINGUAS' should then contain a space separated list of two-letter +'LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. 1.2 Using This Package ====================== As a user, if your language has been installed for this package, you -only have to set the `LANG' environment variable to the appropriate -`LL_CC' combination. If you happen to have the `LC_ALL' or some other -`LC_xxx' environment variables set, you should unset them before -setting `LANG', otherwise the setting of `LANG' will not have the -desired effect. Here `LL' is an ISO 639 two-letter language code, and -`CC' is an ISO 3166 two-letter country code. For example, let's -suppose that you speak German and live in Germany. At the shell -prompt, merely execute `setenv LANG de_DE' (in `csh'), -`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). -This can be done from your `.login' or `.profile' file, once and for -all. +only have to set the 'LANG' environment variable to the appropriate +'LL_CC' combination. If you happen to have the 'LC_ALL' or some other +'LC_xxx' environment variables set, you should unset them before setting +'LANG', otherwise the setting of 'LANG' will not have the desired +effect. Here 'LL' is an ISO 639 two-letter language code, and 'CC' is +an ISO 3166 two-letter country code. For example, let's suppose that +you speak German and live in Germany. At the shell prompt, merely +execute 'setenv LANG de_DE' (in 'csh'), 'export LANG; LANG=de_DE' (in +'sh') or 'export LANG=de_DE' (in 'bash'). This can be done from your +'.login' or '.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For -example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The +example, 'de_AT' is used for Austria, and 'pt_BR' for Brazil. The country code serves to distinguish the dialects. - The locale naming convention of `LL_CC', with `LL' denoting the -language and `CC' denoting the country, is the one use on systems based -on GNU libc. On other systems, some variations of this scheme are -used, such as `LL' or `LL_CC.ENCODING'. You can get the list of -locales supported by your system for your language by running the -command `locale -a | grep '^LL''. + The locale naming convention of 'LL_CC', with 'LL' denoting the +language and 'CC' denoting the country, is the one use on systems based +on GNU libc. On other systems, some variations of this scheme are used, +such as 'LL' or 'LL_CC.ENCODING'. You can get the list of locales +supported by your system for your language by running the command +'locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called -`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' -for the purpose of message handling, but you still need to have `LANG' +'LANGUAGE'. GNU 'gettext' gives preference to 'LANGUAGE' over 'LANG' +for the purpose of message handling, but you still need to have 'LANG' set to the primary language; this is required by other parts of the -system libraries. For example, some Swedish users who would rather -read translations in German than English for when Swedish is not -available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. +system libraries. For example, some Swedish users who would rather read +translations in German than English for when Swedish is not available, +set 'LANGUAGE' to 'sv:de' while leaving 'LANG' to 'sv_SE'. Special advice for Norwegian users: The language code for Norwegian -bokma*l changed from `no' to `nb' recently (in 2003). During the +bokma*l changed from 'no' to 'nb' recently (in 2003). During the transition period, while some message catalogs for this language are -installed under `nb' and some older ones under `no', it's recommended -for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and +installed under 'nb' and some older ones under 'no', it's recommended +for Norwegian users to set 'LANGUAGE' to 'nb:no' so that both newer and older translations are used. - In the `LANGUAGE' environment variable, but not in the `LANG' -environment variable, `LL_CC' combinations can be abbreviated as `LL' -to denote the language's main dialect. For example, `de' is equivalent -to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' -(Portuguese as spoken in Portugal) in this context. + In the 'LANGUAGE' environment variable, but not in the 'LANG' +environment variable, 'LL_CC' combinations can be abbreviated as 'LL' to +denote the language's main dialect. For example, 'de' is equivalent to +'de_DE' (German as spoken in Germany), and 'pt' to 'pt_PT' (Portuguese +as spoken in Portugal) in this context. 1.3 Translating Teams ===================== @@ -111,22 +110,22 @@ able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, -`http://translationproject.org/', in the "Teams" area. +'http://translationproject.org/', in the "Teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has -`-request' appended. For example, speakers of Swedish can send a -message to `sv-request@li.org', having this message body: +'-request' appended. For example, speakers of Swedish can send a +message to 'sv-request@li.org', having this message body: subscribe - Keep in mind that team members are expected to participate -_actively_ in translations, or at solving translational difficulties, -rather than merely lurking around. If your team does not exist yet and -you want to start one, or if you are unsure about what to do or how to -get started, please write to `coordinator@translationproject.org' to -reach the coordinator for all translator teams. + Keep in mind that team members are expected to participate _actively_ +in translations, or at solving translational difficulties, rather than +merely lurking around. If your team does not exist yet and you want to +start one, or if you are unsure about what to do or how to get started, +please write to 'coordinator@translationproject.org' to reach the +coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skills are praised more than @@ -136,9 +135,9 @@ ====================== Languages are not equally supported in all packages. The following -matrix shows the current state of internationalization, as of June -2010. The matrix shows, in regard of each package, for which languages -PO files have been submitted to translation coordination, with a +matrix shows the current state of internationalization, as of Jun 2014. +The matrix shows, in regard of each package, for which languages PO +files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am an ar as ast az be bg bn bn_IN bs ca crh cs @@ -189,7 +188,6 @@ gettext-examples | [] [] [] [] [] | gettext-runtime | [] [] [] | gettext-tools | [] [] | - gip | [] [] | gjay | | glunarclock | [] [] [] | gnubiff | [] | @@ -202,9 +200,8 @@ gold | | gphoto2 | [] | gprof | [] | - gpsdrive | | gramadoir | | - grep | [] [] | + grep | [] [] [] | grub | [] | gsasl | | gss | | @@ -215,7 +212,6 @@ gstreamer | [] [] [] [] | gtick | [] | gtkam | [] [] | - gtkorphan | [] [] | gtkspell | [] [] [] [] [] | guix | | guix-packages | | @@ -242,7 +238,6 @@ libexif | () | libextractor | | libgnutls | [] | - libgpg-error | [] | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | | @@ -308,14 +303,14 @@ wcd | | wcd-man | | wdiff | [] [] | - wget | [] [] | + wget | [] | wyslij-po | | xboard | | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +---------------------------------------------------+ af am an ar as ast az be bg bn bn_IN bs ca crh cs - 4 0 2 4 3 11 0 8 24 3 3 1 55 4 76 + 4 0 2 5 3 11 0 8 23 3 3 1 54 4 73 da de el en en_GB en_ZA eo es et eu fa fi fr +--------------------------------------------------+ @@ -323,7 +318,7 @@ aegis | [] [] [] [] | anubis | [] [] [] [] [] | aspell | [] [] [] [] [] [] [] | - bash | [] [] [] [] [] | + bash | [] [] [] | bfd | [] [] [] [] | binutils | [] [] [] | bison | [] [] [] [] [] [] [] [] | @@ -339,7 +334,7 @@ cpplib | [] [] [] [] [] [] | cryptsetup | [] [] [] [] [] | datamash | [] [] [] [] | - denemo | | + denemo | [] | dfarc | [] [] [] [] [] [] | dialog | [] [] [] [] [] [] [] [] [] | dico | [] [] [] [] | @@ -365,7 +360,6 @@ gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] | - gip | [] [] [] [] [] [] [] | gjay | [] [] [] [] | glunarclock | [] [] [] [] [] | gnubiff | () [] [] () | @@ -378,7 +372,6 @@ gold | [] [] [] | gphoto2 | [] () [] [] | gprof | [] [] [] [] [] [] | - gpsdrive | [] [] [] [] | gramadoir | [] [] [] [] [] | grep | [] [] [] [] [] [] [] | grub | [] [] [] [] [] | @@ -391,9 +384,8 @@ gstreamer | [] [] [] [] [] [] [] | gtick | [] () [] [] [] | gtkam | [] () [] [] [] [] | - gtkorphan | [] [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] | - guix | [] [] [] | + guix | [] [] | guix-packages | | gutenprint | [] [] [] [] | hello | [] [] [] [] [] [] [] [] | @@ -418,7 +410,6 @@ libexif | [] [] () [] [] | libextractor | [] | libgnutls | [] [] [] [] | - libgpg-error | [] [] [] | libgphoto2 | [] () [] | libgphoto2_port | [] () [] [] [] [] | libgsasl | [] [] [] [] [] | @@ -450,7 +441,7 @@ pspp | [] [] [] | pushover | () [] [] [] | pwdutils | [] [] [] | - pyspread | [] [] | + pyspread | [] [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] | recutils | [] [] [] [] | @@ -491,7 +482,7 @@ xkeyboard-config | [] [] [] [] [] [] [] | +--------------------------------------------------+ da de el en en_GB en_ZA eo es et eu fa fi fr - 123 134 32 1 6 0 97 97 23 14 4 106 139 + 120 130 32 1 6 0 94 95 22 13 4 103 136 ga gd gl gu he hi hr hu hy ia id is it ja ka kk +-------------------------------------------------+ @@ -499,7 +490,7 @@ aegis | [] | anubis | [] [] [] [] | aspell | [] [] [] [] [] | - bash | [] [] [] [] | + bash | [] [] [] | bfd | [] [] | binutils | [] [] [] | bison | [] | @@ -541,7 +532,6 @@ gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] | gettext-tools | [] [] [] | - gip | [] [] [] [] [] [] | gjay | [] | glunarclock | [] [] [] [] [] [] | gnubiff | [] [] () | @@ -554,7 +544,6 @@ gold | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] [] | - gpsdrive | [] [] [] [] | gramadoir | [] [] [] | grep | [] [] [] [] [] [] [] | grub | [] [] [] | @@ -567,9 +556,8 @@ gstreamer | [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] | - gtkorphan | [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] [] | - guix | [] | + guix | | guix-packages | | gutenprint | [] [] [] | hello | [] [] [] [] [] | @@ -586,7 +574,7 @@ iso_639_5 | | jwhois | [] [] [] [] | kbd | [] [] [] | - klavaro | [] [] [] [] | + klavaro | [] [] [] [] [] | latrine | [] | ld | [] [] [] [] | leafpad | [] [] [] [] [] [] [] () | @@ -594,7 +582,6 @@ libexif | [] | libextractor | | libgnutls | [] | - libgpg-error | [] [] [] | libgphoto2 | [] [] | libgphoto2_port | [] [] | libgsasl | [] [] [] [] | @@ -660,14 +647,14 @@ wcd | | wcd-man | | wdiff | [] [] [] | - wget | [] [] [] [] | + wget | [] [] [] | wyslij-po | [] [] [] | xboard | | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] | +-------------------------------------------------+ ga gd gl gu he hi hr hu hy ia id is it ja ka kk - 36 2 49 4 8 2 54 75 2 6 84 11 89 60 0 3 + 35 2 47 4 8 2 53 69 2 6 80 11 86 58 0 3 kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl +--------------------------------------------------+ @@ -717,7 +704,6 @@ gettext-examples | [] [] [] [] [] [] | gettext-runtime | [] [] | gettext-tools | [] | - gip | [] [] [] | gjay | | glunarclock | [] [] | gnubiff | [] | @@ -730,20 +716,18 @@ gold | | gphoto2 | [] | gprof | [] [] | - gpsdrive | [] | gramadoir | [] | grep | [] [] | grub | [] [] [] | gsasl | [] | gss | | - gst-plugins-bad | [] | + gst-plugins-bad | [] [] | gst-plugins-base | [] [] [] | gst-plugins-good | [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | [] [] | gtick | [] | gtkam | [] [] | - gtkorphan | [] [] | gtkspell | [] [] [] [] [] [] [] | guix | | guix-packages | | @@ -770,14 +754,13 @@ libexif | [] | libextractor | [] | libgnutls | [] [] | - libgpg-error | [] | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | [] | libiconv | [] [] | libidn | [] | liferea | [] [] [] | - lilypond | | + lilypond | [] | lordsawar | | lprng | | lynx | [] | @@ -843,7 +826,7 @@ xkeyboard-config | [] [] [] | +--------------------------------------------------+ kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl - 5 11 4 6 0 13 24 3 3 3 4 12 2 40 1 126 + 5 11 4 6 0 13 22 3 3 3 4 11 2 40 1 124 nn or os pa pl ps pt pt_BR ro ru rw sk sl sq sr +--------------------------------------------------+ @@ -893,7 +876,6 @@ gettext-examples | [] [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] [] [] | - gip | [] [] [] [] [] | gjay | [] | glunarclock | [] [] [] [] [] [] | gnubiff | [] | @@ -906,7 +888,6 @@ gold | | gphoto2 | [] [] [] [] [] | gprof | [] [] [] [] | - gpsdrive | [] | gramadoir | [] [] | grep | [] [] [] [] [] [] | grub | [] [] [] [] [] | @@ -919,11 +900,10 @@ gstreamer | [] [] [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] [] | - gtkorphan | [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] | guix | | guix-packages | | - gutenprint | [] | + gutenprint | [] [] | hello | [] [] [] [] [] [] | help2man | [] [] [] [] | help2man-texi | [] | @@ -946,7 +926,6 @@ libexif | [] () [] | libextractor | [] | libgnutls | [] | - libgpg-error | [] [] [] | libgphoto2 | [] | libgphoto2_port | [] [] [] [] [] | libgsasl | [] [] [] [] | @@ -992,13 +971,13 @@ solfege | [] [] [] | solfege-manual | [] [] | spotmachine | [] [] | - sudo | [] [] [] [] [] | + sudo | [] [] [] [] [] [] | sudoers | [] [] [] [] | sysstat | [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] [] | - tigervnc | | + tigervnc | [] | tin | [] | tin-man | | tracgoogleappsa... | [] [] [] [] | @@ -1012,14 +991,14 @@ wcd | | wcd-man | | wdiff | [] [] [] [] [] | - wget | [] [] [] [] [] | + wget | [] [] [] [] | wyslij-po | [] [] [] [] | - xboard | [] [] | + xboard | [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | +--------------------------------------------------+ nn or os pa pl ps pt pt_BR ro ru rw sk sl sq sr - 7 3 1 6 117 1 12 84 33 82 3 37 45 7 98 + 7 3 1 6 114 1 12 83 32 80 3 38 45 7 94 sv sw ta te tg th tr uk ur vi wa wo zh_CN zh_HK +---------------------------------------------------+ @@ -1027,19 +1006,19 @@ aegis | [] | anubis | [] [] [] [] | aspell | [] [] [] [] | - bash | [] [] [] [] [] | + bash | [] [] [] [] | bfd | [] [] | binutils | [] [] [] | bison | [] [] [] [] | bison-runtime | [] [] [] [] [] [] | buzztrax | [] [] [] | - ccd2cue | [] [] | - ccide | [] [] [] | + ccd2cue | [] [] [] | + ccide | [] [] [] [] | cflow | [] [] [] [] | clisp | | coreutils | [] [] [] [] | cpio | [] [] [] [] [] | - cppi | [] [] [] | + cppi | [] [] [] [] | cpplib | [] [] [] [] [] | cryptsetup | [] [] [] | datamash | [] [] [] | @@ -1051,14 +1030,14 @@ dink | | direvent | [] [] | doodle | [] [] | - dos2unix | [] [] [] | - dos2unix-man | [] [] | + dos2unix | [] [] [] [] | + dos2unix-man | [] [] [] | e2fsprogs | [] [] [] [] | enscript | [] [] [] [] | exif | [] [] [] [] [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] | - flex | [] [] [] | + flex | [] [] [] [] | freedink | [] [] | fusionforge | | gas | [] | @@ -1069,11 +1048,10 @@ gettext-examples | [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] | - gip | [] [] [] [] | gjay | [] [] | glunarclock | [] [] [] [] | gnubiff | [] [] | - gnubik | [] [] [] | + gnubik | [] [] [] [] | gnucash | () () () () [] | gnuchess | [] [] | gnulib | [] [] [] [] | @@ -1082,7 +1060,6 @@ gold | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] [] | - gpsdrive | [] [] [] | gramadoir | [] [] [] | grep | [] [] [] [] [] | grub | [] [] [] [] | @@ -1095,12 +1072,11 @@ gstreamer | [] [] [] [] [] | gtick | [] [] [] | gtkam | [] [] [] [] | - gtkorphan | [] [] [] | gtkspell | [] [] [] [] [] [] [] [] | guix | [] | guix-packages | | - gutenprint | [] [] [] | - hello | [] [] [] [] [] | + gutenprint | [] [] [] [] | + hello | [] [] [] [] [] [] | help2man | [] [] [] | help2man-texi | [] | hylafax | [] | @@ -1122,7 +1098,6 @@ libexif | [] () | libextractor | [] [] | libgnutls | [] [] [] [] | - libgpg-error | [] [] [] [] | libgphoto2 | [] [] | libgphoto2_port | [] [] [] [] | libgsasl | [] [] [] [] | @@ -1136,7 +1111,7 @@ m4 | [] [] [] | mailfromd | [] [] | mailutils | [] | - make | [] [] [] | + make | [] [] [] [] | man-db | [] [] | man-db-manpages | [] | midi-instruments | [] [] [] [] [] [] | @@ -1144,13 +1119,13 @@ mkisofs | [] [] [] | myserver | [] | nano | [] [] [] [] | - opcodes | [] [] | + opcodes | [] [] [] | parted | [] [] [] [] [] | pies | [] [] | popt | [] [] [] [] [] [] [] | procps-ng | [] [] | procps-ng-man | [] | - psmisc | [] [] [] | + psmisc | [] [] [] [] | pspp | [] [] [] | pushover | [] | pwdutils | [] [] | @@ -1163,14 +1138,14 @@ sarg | | sed | [] [] [] [] [] | sharutils | [] [] [] | - shishi | [] | - skribilo | | + shishi | [] [] | + skribilo | [] | solfege | [] [] [] | solfege-manual | [] | - spotmachine | [] [] | + spotmachine | [] [] [] | sudo | [] [] [] [] | sudoers | [] [] [] | - sysstat | [] [] [] [] | + sysstat | [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] | @@ -1185,17 +1160,17 @@ vmm | | vorbis-tools | [] [] | wastesedge | | - wcd | [] [] | + wcd | [] [] [] | wcd-man | [] | - wdiff | [] [] [] | - wget | [] [] [] | + wdiff | [] [] [] [] | + wget | [] [] [] | wyslij-po | [] [] | xboard | [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | +---------------------------------------------------+ sv sw ta te tg th tr uk ur vi wa wo zh_CN zh_HK - 87 1 4 3 0 14 52 114 1 130 7 1 88 7 + 91 1 4 3 0 13 50 113 1 126 7 1 95 7 zh_TW +-------+ @@ -1203,23 +1178,23 @@ aegis | | 9 anubis | | 19 aspell | | 28 - bash | [] | 25 + bash | [] | 21 bfd | | 9 binutils | | 12 bison | [] | 18 bison-runtime | [] | 38 buzztrax | | 8 - ccd2cue | | 7 - ccide | | 16 + ccd2cue | | 8 + ccide | | 17 cflow | | 15 clisp | | 10 coreutils | | 20 - cpio | [] | 21 - cppi | | 16 + cpio | | 20 + cppi | | 17 cpplib | [] | 19 cryptsetup | | 13 datamash | | 11 - denemo | | 3 + denemo | | 4 dfarc | | 16 dialog | [] | 42 dico | | 6 @@ -1227,14 +1202,14 @@ dink | | 9 direvent | | 10 doodle | | 12 - dos2unix | [] | 17 - dos2unix-man | | 8 + dos2unix | [] | 18 + dos2unix-man | | 9 e2fsprogs | | 14 enscript | | 21 exif | | 26 fetchmail | | 19 findutils | | 28 - flex | [] | 18 + flex | [] | 19 freedink | | 23 fusionforge | | 3 gas | | 5 @@ -1245,12 +1220,11 @@ gettext-examples | [] | 40 gettext-runtime | [] | 34 gettext-tools | [] | 24 - gip | [] | 28 gjay | | 8 glunarclock | [] | 27 gnubiff | | 9 - gnubik | | 18 - gnucash | () | 6 + gnubik | | 19 + gnucash | () | 7 gnuchess | | 10 gnulib | | 23 gnunet | | 1 @@ -1258,25 +1232,23 @@ gold | | 7 gphoto2 | [] | 19 gprof | | 21 - gpsdrive | | 13 gramadoir | | 14 - grep | [] | 30 + grep | [] | 31 grub | | 21 gsasl | [] | 19 gss | | 17 - gst-plugins-bad | | 13 + gst-plugins-bad | | 14 gst-plugins-base | | 27 gst-plugins-good | | 32 gst-plugins-ugly | | 34 gstreamer | [] | 31 gtick | | 19 gtkam | | 24 - gtkorphan | | 20 gtkspell | [] | 48 - guix | | 5 + guix | | 3 guix-packages | | 0 - gutenprint | | 13 - hello | [] | 29 + gutenprint | | 15 + hello | [] | 30 help2man | | 18 help2man-texi | | 5 hylafax | | 5 @@ -1290,7 +1262,7 @@ iso_639_5 | | 2 jwhois | [] | 20 kbd | | 16 - klavaro | | 29 + klavaro | | 30 latrine | | 7 ld | [] | 15 leafpad | [] | 40 @@ -1298,21 +1270,20 @@ libexif | | 9 libextractor | | 5 libgnutls | | 13 - libgpg-error | | 15 libgphoto2 | | 9 libgphoto2_port | [] | 19 libgsasl | | 18 libiconv | [] | 29 libidn | | 17 liferea | | 29 - lilypond | | 10 + lilypond | | 11 lordsawar | | 3 lprng | | 3 lynx | | 19 m4 | [] | 22 mailfromd | | 4 mailutils | | 6 - make | | 18 + make | | 19 man-db | | 14 man-db-manpages | | 9 midi-instruments | [] | 43 @@ -1320,17 +1291,17 @@ mkisofs | | 13 myserver | | 9 nano | [] | 29 - opcodes | | 11 + opcodes | | 12 parted | [] | 21 pies | | 4 popt | [] | 36 procps-ng | | 5 procps-ng-man | | 4 - psmisc | [] | 21 + psmisc | [] | 22 pspp | | 13 pushover | | 6 pwdutils | | 8 - pyspread | | 5 + pyspread | | 6 radius | | 9 recode | | 31 recutils | | 9 @@ -1339,18 +1310,18 @@ sarg | | 4 sed | [] | 34 sharutils | | 12 - shishi | | 6 - skribilo | | 3 + shishi | | 7 + skribilo | | 4 solfege | | 19 solfege-manual | | 9 - spotmachine | | 9 - sudo | | 23 + spotmachine | | 10 + sudo | | 24 sudoers | | 20 - sysstat | | 21 + sysstat | | 22 tar | [] | 30 texinfo | | 17 texinfo_document | | 11 - tigervnc | | 10 + tigervnc | | 11 tin | [] | 7 tin-man | | 1 tracgoogleappsa... | [] | 22 @@ -1361,17 +1332,17 @@ vmm | | 3 vorbis-tools | | 13 wastesedge | | 2 - wcd | | 7 + wcd | | 8 wcd-man | | 3 - wdiff | [] | 22 - wget | | 22 + wdiff | [] | 23 + wget | | 19 wyslij-po | | 14 - xboard | | 8 + xboard | | 9 xdg-user-dirs | [] | 68 xkeyboard-config | [] | 27 +-------+ 90 teams zh_TW - 170 domains 44 2805 + 166 domains 42 2748 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are @@ -1379,32 +1350,30 @@ dialects. For a PO file in the matrix above to be effective, the package to -which it applies should also have been internationalized and -distributed as such by its maintainer. There might be an observable -lag between the mere existence a PO file and its wide availability in a -distribution. - - If June 2010 seems to be old, you may fetch a more recent copy of -this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date -matrix with full percentage details can be found at -`http://translationproject.org/extra/matrix.html'. +which it applies should also have been internationalized and distributed +as such by its maintainer. There might be an observable lag between the +mere existence a PO file and its wide availability in a distribution. + + If Jun 2014 seems to be old, you may fetch a more recent copy of this +'ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix +with full percentage details can be found at +'http://translationproject.org/extra/matrix.html'. -1.5 Using `gettext' in new packages +1.5 Using 'gettext' in new packages =================================== If you are writing a freely available program and want to -internationalize it you are welcome to use GNU `gettext' in your -package. Of course you have to respect the GNU Library General Public -License which covers the use of the GNU `gettext' library. This means -in particular that even non-free programs can use `libintl' as a shared -library, whereas only free software can use `libintl' as a static -library or use modified versions of `libintl'. +internationalize it you are welcome to use GNU 'gettext' in your +package. Of course you have to respect the GNU Lesser General Public +License which covers the use of the GNU 'gettext' library. This means +in particular that even non-free programs can use 'libintl' as a shared +library, whereas only free software can use 'libintl' as a static +library or use modified versions of 'libintl'. Once the sources are changed appropriately and the setup can handle -the use of `gettext' the only thing missing are the translations. The +the use of 'gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact -`coordinator@translationproject.org' to make the `.pot' files available +'coordinator@translationproject.org' to make the '.pot' files available to the translation teams. - diff -Nru gettext-0.19.6/gettext-runtime/aclocal.m4 gettext-0.19.7/gettext-runtime/aclocal.m4 --- gettext-0.19.6/gettext-runtime/aclocal.m4 2015-09-11 03:04:50.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/aclocal.m4 2015-12-27 23:09:21.000000000 +0000 @@ -56,6 +56,66 @@ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) +# Copyright (C) 2011-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_AR([ACT-IF-FAIL]) +# ------------------------- +# Try to determine the archiver interface, and trigger the ar-lib wrapper +# if it is needed. If the detection of archiver interface fails, run +# ACT-IF-FAIL (default is to abort configure with a proper error message). +AC_DEFUN([AM_PROG_AR], +[AC_BEFORE([$0], [LT_INIT])dnl +AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([ar-lib])dnl +AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) +: ${AR=ar} + +AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], + [AC_LANG_PUSH([C]) + am_cv_ar_interface=ar + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], + [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + ]) + AC_LANG_POP([C])]) + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + m4_default([$1], + [AC_MSG_ERROR([could not determine $AR interface])]) + ;; +esac +AC_SUBST([AR])dnl +]) + # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. diff -Nru gettext-0.19.6/gettext-runtime/ChangeLog gettext-0.19.7/gettext-runtime/ChangeLog --- gettext-0.19.6/gettext-runtime/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/ChangeLog 2015-12-27 23:09:15.000000000 +0000 @@ -1,643 +1,11 @@ -2015-09-11 Daiki Ueno - - * gettext 0.19.6 released. - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2015-06-23 Daiki Ueno - - * m4/codeset.m4: Update copyright year. - * m4/gettext.m4: Likewise. - * m4/iconv.m4: Likewise. - * m4/intl.m4: Likewise. - * m4/intldir.m4: Likewise. - * m4/intlmacosx.m4: Likewise. - * m4/lcmessage.m4: Likewise. - * m4/nls.m4: Likewise. - * m4/po.m4: Likewise. - * m4/extern-inline.m4: Likewise. Port the following change: - 2015-04-29 Paul Eggert - extern-inline: no need for workaround in GCC 5.1 - * doc/extern-inline.texi (extern inline): - * m4/extern-inline.m4 (gl_EXTERN_INLINE): - GCC bugs 54113 and 63877 are fixed in GCC 5.1, so don't work - around these bugs in GCC 5.1 and later. Maybe in a decade or - two we can remove these workarounds. - -2015-06-23 Daiki Ueno - - * ABOUT-NLS: Regenerate for 0.19.5. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-10-02 Daiki Ueno - - * configure.ac: To automatically disable building libasprintf when - no C++ is found, check if CXX is "no", not ":". This seems to be - a left over of commit 09963c23. Reported by Assaf Gordon in: - . - -2014-09-30 Paul Eggert - - * configure.ac: Invoke AM_PROG_CC_C_O so that the system stdbool.h - will be used on Solaris. Suggested by Paul Eggert in: - . - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2014-05-14 Daiki Ueno - - * configure.ac: Adjust $docdir assuming that AC_PACKAGE_TARNAME is - set. - -2014-04-22 Daiki Ueno - - build: Use git-version-gen intead of version.sh - * configure.ac: Use git-version-gen in AC_INIT. - -2013-07-07 Daiki Ueno - - * NEWS: Mention setlocale() change on Mac OS X. - -2013-05-29 Stefano Lattarini (tiny change) - - * configure.ac (AM_INIT_AUTOMAKE): Add 'parallel-tests' option. - Require Automake 1.11.1 or later, so that the 'parallel-tests' - will be certainly available. - (AC_INIT): Require Autoconf 2.62 or later; that is the minimal - version supported by Automake 1.11.1 or later. - -2012-12-27 Daiki Ueno - - * configure.ac (WOE32DLL): New conditional. - (INTL_EXPORTS_FLAGS): New substituted variable. - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2012-12-17 Daiki Ueno - - * configure.ac: Use AC_CONFIG_HEADERS instead of AM_CONFIG_HEADER. - Suggested by Stefano Lattarini . - -2012-01-26 Bruno Haible - - Modernize quoting. - * INSTALL: Process through sed -e "s/\`\([^']*\)'/‘\1’/g" - * Makefile.am (ABOUT-NLS): Likewise. Use --plaintext instead of - --no-header. - -2011-06-03 Bruno Haible - - Copyright: Use LGPL 2.1 instead of LGPL 2.0. - * COPYING: Update file references. - -2010-07-31 Bruno Haible - - Use new ansi-c++.m4 from gnulib. - * configure.ac: Invoke gl_PROG_ANSI_CXX instead of gt_PROG_ANSI_CXX. - Reported at . - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2010-04-02 Bruno Haible - - * Makefile.am (ACLOCAL_AMFLAGS): Remove "-I ../autoconf-lib-link/m4" - option. - -2009-12-26 Bruno Haible - - * NEWS: Mention the use of the thread-specific locale on MacOS X. - -2009-05-23 Bruno Haible - - * configure.ac (AM_INIT_AUTOMAKE): Add 'silent-rules' option. - -2009-05-23 Bruno Haible - - * configure.ac: Invoke gl_INIT_PACKAGE. Use the preferred form of - AM_INIT_AUTOMAKE. - -2009-05-21 Bruno Haible - - Assume automake >= 1.10.2. - * configure.ac (AC_CONFIG_FILES): Remove FIX_MAKEFILE_COMPILE - invocations. - -2009-03-25 Bruno Haible - - Fix the handling of Windows resources in shared libraries. - * configure.ac: Invoke LT_LANG for 'Windows Resource'. - -2009-01-14 Bruno Haible - - * configure.ac: More consistent m4 quoting. - -2008-04-20 Bruno Haible - - * configure.ac: Use LT_INIT instead of AC_PROG_LIBTOOL. - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2007-05-28 Bruno Haible - - * configure.ac (WOE32): New conditional. - -2007-04-13 Bruno Haible - - * configure.ac: For LIBSCHED, try also -lposix4. - Reported by Arto C. Nirkko . - -2006-10-27 Bruno Haible - - Work around automake-1.10 annoyance. - * Makefile.am (ACLOCAL): New macro. - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-10-25 Bruno Haible - - * configure.ac: Don't invoke AC_RELOCATABLE; now done through the - relocwrapper module. - -2006-10-25 Bruno Haible - - * configure.ac (DLL_VARIABLE): Define to empty if IN_RELOCWRAPPER is - defined. - -2006-10-14 Bruno Haible - - * COPYING: Clarify copyright of the programs. - Reported by Charles Wilson . - -2006-10-02 Bruno Haible - - * Makefile.am (EXTRA_DIST): Add gnulib-m4/gnulib-cache.m4. - -2006-10-02 Bruno Haible - - * Makefile.am (ACLOCAL_AMFLAGS): Move gnulib-m4 to the end, since - sometime we have newer m4 files than gnulib. - -2006-07-31 Bruno Haible - - * Makefile.am (ACLOCAL_AMFLAGS): Append gnulib-m4. Remove - ../gettext-tools/m4 and ../gettext-tools/gnulib-m4. - (SUBDIRS): Replace lib with gnulib-lib. - * configure.ac (AC_PREREQ): Bump to 2.59. - (gl_EARLY): Invoke. - (AC_GNU_SOURCE, gl_USE_SYSTEM_EXTENSIONS): Remove invocations. - (gl_INIT): Invoke. - (string.h, AM_STDBOOL_H, gl_ALLOCSA, strerror, strstr, atexit, memmove, - gl_GETOPT, gt_FUNC_SETENV, gl_FUNC_STRERROR, gl_FUNC_STRTOUL, - gl_FUNC_GLIBC_UNLOCKED_IO, gl_ERROR, gl_PATHMAX, gl_FUNC_READLINK, - gl_XREADLINK, gl_CANONICALIZE): Remove tests done directly or - indirectly by gl_INIT. - (AC_CONFIG_FILES): Add gnulib-lib/Makefile, remove lib/Makefile. - Remove lib/javacomp.sh, lib/csharpcomp.sh. - -2006-07-30 Bruno Haible - - * Makefile.am (ACLOCAL_AMFLAGS): Append ../gettext-tools/gnulib-m4. - -2006-07-30 Bruno Haible - - * configure.ac: Update for changed location of javacomp.sh.in and - csharpcomp.sh.in. - -2006-07-25 Bruno Haible - - * windows: Remove directory. - * Makefile.msvc: Remove file. - * Makefile.am (config.h.msvc, intl/libgnuintl.h.msvc-static, - intl/libgnuintl.h.msvc-shared): Remove rules. - (EXTRA_DIST): Remove Makefile.msvc, config.h.msvc, windows/*. - -2006-07-25 Bruno Haible - - * Makefile.vms: Remove file. - * Makefile.am (config.h_vms, intl/libgnuintl.h_vms): Remove rules. - (EXTRA_DIST): Remove Makefile.vms, config.h_vms. - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2006-07-20 Bruno Haible - - * windows/intl.rc: Bump version number to 0.15.0. - -2006-06-27 Bruno Haible - - * configure.ac: Remove AC_ISC_POSIX invocation. - -2006-06-27 Bruno Haible - - Assume vprintf function. - * configure.ac: Remove AC_FUNC_VPRINTF invocation. - * Makefile.am (config.h_vms, config.h.msvc): Remove unused HAVE_VPRINTF - substitution. - -2006-06-27 Bruno Haible - - * Makefile.am (config.h_vms, config.h.msvc): Drop unused HAVE_LOCALE_H - substitution. - -2006-04-14 Bruno Haible - - Assume autoconf >= 2.60. - * configure.ac (docdir): If --docdir value was given, use that. - (mandir): Remove customization. - -2006-05-15 Bruno Haible - - * configure.ac (DLL_VARIABLE): Define as empty on mingw, like on - Cygwin. - -2006-05-01 Bruno Haible - - * configure.ac: Pass a source-version and a target-version to - gt_JAVACOMP. - -2006-04-02 Bruno Haible - - * configure.ac: Test for strstr(). - * Makefile.am (config.h_vms, config.h.msvc): Also define HAVE_STRSTR. - -2005-11-23 Bruno Haible - - Cygwin portability. - * configure.ac: Invoke gl_WOE32_DLL. - -2005-11-24 Bruno Haible - - * Makefile.am (config.h_vms, config.h.msvc): Treat HAVE_FWPRINTF like - HAVE_WPRINTF. Needed since 2003-09-17. - Reported by Svante Seleborg . - -2005-08-28 Bruno Haible - - * Makefile.am (config.h_vms): Remove setting of HAVE_MALLOC_H, - HAVE_NL_TYPES_H. - -2005-08-28 Bruno Haible - - * Makefile.am (intl/libgnuintl.h_vms, intl/libgnuintl.h.msvc-static, - intl/libgnuintl.h.msvc-shared): Remove the IN_LIBGLOCALE conditional. - -2008-08-28 Bruno Haible - - * glocale: Remove directory, moved to separate project. - * configure.ac (--disable-libglocale): Remove option. - (SUBDIR_glocale): Remove variable. - (ENABLE_GLOCALE): Remove conditional. - (AC_CONFIG_SUBDIRS): Remove glocale. - * Makefile.am (SUBDIR_glocale): Remove variable. - (SUBDIRS): Remove $(SUBDIR_glocale). - -2005-08-13 Bruno Haible - - New configure options --disable-java, --disable-native-java. - * configure.ac: Invoke gt_JAVA_CHOICE. - (BUILDJAVA): Use it. - -2005-08-10 Bruno Haible - - * configure.ac (SUBDIR_libasprintf, SUBDIR_glocale): Remove AC_SUBSTs. - (ENABLE_LIBASPRINTF, ENABLE_GLOCALE): New automake conditionals. - * Makefile.am (SUBDIR_libasprintf, SUBDIR_glocale): New variables. - (SUBDIRS): Use them. - (DIST_SUBDIRS): Remove variable. Automake computes it correctly through - the conditionals. - Suggested by Stepan Kasal . - -2005-07-31 Bruno Haible - - * glocale: New directory. - * configure.ac (SUBDIR_glocale): New variable. - * Makefile.am (SUBDIRS): Add SUBDIR_glocale. - (DIST_SUBDIRS): Add glocale. - -2005-07-26 Bruno Haible - - * configure.ac: Move the AM_GNU_GETTEXT invocation early, since it - modifies CPPFLAGS. - -2005-07-16 Bruno Haible - - * tests: New directory. - * configure.ac (LIBSCHED): New variable. - Add AC_CONFIG of tests/Makefile. - * Makefile.am (SUBDIRS, DIST_SUBDIRS): Add tests. - (config.h.msvc): Define USE_WIN32_THREADS. - -2005-07-05 Bruno Haible - - * configure.ac (DLL_VARIABLE): Define also as nonempty when building - shared libraries with mingw. - -2006-06-21 Bruno Haible - - * gettext-0.14.6 released. - -2006-06-21 Bruno Haible - - * windows/intl.rc: Bump version number to 0.14.6. - -2005-05-23 Bruno Haible - - * gettext-0.14.5 released. - -2005-05-23 Bruno Haible - - * windows/intl.rc: Bump version number to 0.14.5. - -2005-04-11 Bruno Haible - - * gettext-0.14.4 released. - -2005-04-11 Bruno Haible - - * windows/intl.rc: Bump version number to 0.14.4. - -2005-03-22 Bruno Haible - - * configure.ac (AC_CONFIG_AUX_DIR): Use ../build-aux. - * Makefile.am (ACLOCAL_AMFLAGS): Replace config/m4 with m4. - -2005-03-14 Bruno Haible - - * gettext-0.14.3 released. - -2005-03-08 Bruno Haible - - * windows/intl.rc: Bump version number to 0.14.3. - -2005-02-24 Bruno Haible - - * gettext-0.14.2 released. - -2005-02-13 Bruno Haible - - * configure.ac: Invoke gl_FUNC_STRTOUL instead of - AC_CHECK_FUNCS(strtoul). - -2005-02-11 Bruno Haible - - * windows/intl.rc: Bump version number to 0.14.2. - -2005-02-10 Bruno Haible - - * configure.ac: Add creation rule for src/gettext.sh. - -2005-01-06 Bruno Haible - - * configure.ac: Invoke gl_ERROR instead of gt_FUNC_ERROR_AT_LINE. - * Makefile.am (config.h_vms, config.h.msvc): Remove setting of - HAVE_DECL_STRERROR. - -2005-01-06 Bruno Haible - - * configure.ac: Invoke gl_GETOPT. - * Makefile.am (config.h_vms, config.h.msvc): Define __GETOPT_PREFIX - to empty. - -2005-01-06 Bruno Haible - - * Makefile.am (config.h_vms, config.h.msvc): Define USE_UNLOCKED_IO - to 1. - -2005-01-05 Bruno Haible - - * windows/intl.rc: Update copyright year. - -2004-03-11 Bruno Haible - - * Makefile.am (config.h.msvc): Fix the value of SIZE_MAX. - -2004-01-29 Bruno Haible - - * gettext-0.14.1 released. - -2004-01-28 Bruno Haible - - * gettext-0.14 released. - -2004-01-24 Bruno Haible - - * Makefile.am (config.h_vms): Set MALLOC_0_IS_NONNULL to 0. - (config.h.msvc): Set MALLOC_0_IS_NONNULL to 1. - -2004-01-17 Bruno Haible - - * windows/intl.rc: Bump version number to 0.14. - -2004-01-10 Bruno Haible - - * configure.ac: When --disable-csharp was given, set BUILDCSHARP=no. - -2003-12-26 Bruno Haible - - Support for C#. - * intl-csharp: New subdirectory. - * Makefile.am (SUBDIRS): Add intl-csharp. - (DIST_SUBDIRS): Add intl-csharp. - * configure.ac: Invoke gt_CSHARPCOMP. Set BUILDCSHARP. - (AC_CONFIG_FILES): Add intl-csharp/Makefile and lib/csharpcomp.sh. - -2003-12-12 Bruno Haible - - Assume automake-1.8. - * Makefile.am (html): Remove rule. - -2003-11-30 Bruno Haible - - * configure.ac: Invoke gl_ALLOCSA instead of gl_FUNC_ALLOCA. - -2003-12-17 Bruno Haible - - * gettext-0.13.1 released. - -2003-11-30 Bruno Haible - - * gettext-0.13 released. - -2003-11-28 Bruno Haible - - * Makefile.am (config.h.msvc): Define SIZE_MAX and inline. - -2003-11-16 Bruno Haible - - * configure.ac (man/Makefile): Postprocess with FIX_MAKEFILE_DISTRIB. - -2003-11-13 Bruno Haible - - * configure.ac (docdir): New variable. - -2003-11-04 Bruno Haible - - * Makefile.am (MAKEINFO): Set LC_MESSAGES and LC_ALL to empty as well. - -2003-10-31 Bruno Haible - - * configure.ac: Remove argument of FIX_MAKEFILE_COMPILE. - -2003-09-16 Bruno Haible - - Portability to SunOS 4. - * configure.ac: Also check for strtoul and atexit. - -2003-08-29 Bruno Haible - - * Makefile.am (config.h.msvc): Define HAVE_DECL__SNPRINTF, - HAVE_DECL__SNWPRINTF. - -2003-08-24 Bruno Haible - - * configure.ac: Define DLL_VARIABLE in config.h through AH_BOTTOM. - -2003-08-23 Bruno Haible - - * Makefile.am (config.h_vms): Define HAVE_READLINK and HAVE_WCSLEN. - (config.h.msvc): Define HAVE_WCSLEN and ssize_t. - -2003-08-23 Bruno Haible - - * configure.ac: Invoke gl_USE_SYSTEM_EXTENSIONS. - -2003-08-23 Bruno Haible - - * configure.ac: Invoke AM_STDBOOL_H instead of gt_STDBOOL_H. - -2003-07-01 Bruno Haible - - * configure.ac: Invoke gl_FUNC_READLINK. - -2003-06-19 Bruno Haible - - * Makefile.am (config.h_vms, config.h.msvc): Update. - (intl/libgnuintl.h_vms, intl/libgnuintl.h.msvc-static): New rule. - (all-local): Depend on them. - (intl/libgnuintl.h.msvc-shared): Also perform some AC_SUBST - substitutions. - -2003-06-19 Bruno Haible - - * configure.ac: New option --disable-libasprintf. - -2003-06-08 Bruno Haible - - * Makefile.am (config.h_vms): Don't define HAVE_ENVIRON_DECL. - Reported by Jouk Jansen . - -2003-05-22 Bruno Haible - - * gettext-0.12.1 released. - -2003-05-20 Bruno Haible - - * Makefile.am (config.h_vms, config.h.msvc, - intl/libgnuintl.h.msvc-shared): Don't use $< here. - -2003-05-19 Bruno Haible - - * windows/intl.rc: Include . - Reported by Perry Rapp. - -2003-05-17 Bruno Haible - - * gettext-0.12 released. - -2003-05-15 Bruno Haible - - * Makefile.am (config.h_vms, config.h.msvc): Define HAVE_DECL_STRERROR. - -2003-05-12 Bruno Haible - - * configure.ac: Invoke AC_GNU_SOURCE and jm_FUNC_GLIBC_UNLOCKED_IO. - -2003-04-12 Bruno Haible - - * Makefile.am (config.h_vms): Renamed from config.h.vms. - * Makefile.vms: Don't use the force target. Don't recurse into - libasprintf. Use config.h_vms, not config.h.vms. Correct wildcard - syntax. - Suggested by Jouk Jansen . - -2003-04-12 Bruno Haible - - * configure.ac (mandir): Change default value. - * Makefile.msvc (mandir, docdir): Use datadir instead of prefix. - -2003-03-30 Bruno Haible - - * Makefile.vms: New file. - * Makefile.am (config.h.vms): New rule. - (EXTRA_DIST): Add Makefile.vms and config.h.vms. - -2003-03-17 Bruno Haible - - Native Woe32/MSVC support. - * Makefile.msvc: New file. - * README.woe32: New file. - * windows/dllexport.h: New file. - * windows/intl.rc: New file. - * Makefile.am (EXTRA_DIST): Add them and config.h.msvc. - (config.h.msvc, intl/libgnuintl.h.msvc-shared): New rules. - -2003-02-28 Bruno Haible - - Support for relocatable installation. - * configure.ac: Invoke AC_RELOCATABLE, gt_STDBOOL_H, gl_FUNC_ALLOCA, - AC_REPLACE_FUNCS([memmove]), gt_FUNC_SETENV, gl_FUNC_STRERROR, - gl_PATHMAX, gl_XREADLINK, gl_CANONICALIZE. - * INSTALL: Document --enable-relocatable and --with-libintl-prefix. - -2003-02-22 Bruno Haible - - * Makefile.am (ps, pdf): Remove rules, redundant with automake 1.7.2. - -2003-02-18 Bruno Haible - - * Makefile.am: Install ABOUT-NLS in $(datadir)/gettext. - -2003-02-12 Bruno Haible - - Extracted from gettext package. - * configure.ac: New file. - * Makefile.am: New file. - * AUTHORS, BUGS, COPYING, INSTALL, NEWS, README: New files. - +No more ChangeLog files +======================== +Do not modify any of the ChangeLog files in gettext. Starting on +October 14th, 2015 we put changelog information only in the git commit +log, and generate a top-level ChangeLog file from logs at "make dist" +time. + +Local Variables: +buffer-read-only: t +mode: text +End: diff -Nru gettext-0.19.6/gettext-runtime/ChangeLog.0 gettext-0.19.7/gettext-runtime/ChangeLog.0 --- gettext-0.19.6/gettext-runtime/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/ChangeLog.0 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,647 @@ +2015-09-30 Daiki Ueno + + * Makefile.am (ABOUT-NLS): Don't omit directory name of input file. + +2015-09-11 Daiki Ueno + + * gettext 0.19.6 released. + +2015-07-10 Daiki Ueno + + * gettext 0.19.5 released. + +2015-06-23 Daiki Ueno + + * m4/codeset.m4: Update copyright year. + * m4/gettext.m4: Likewise. + * m4/iconv.m4: Likewise. + * m4/intl.m4: Likewise. + * m4/intldir.m4: Likewise. + * m4/intlmacosx.m4: Likewise. + * m4/lcmessage.m4: Likewise. + * m4/nls.m4: Likewise. + * m4/po.m4: Likewise. + * m4/extern-inline.m4: Likewise. Port the following change: + 2015-04-29 Paul Eggert + extern-inline: no need for workaround in GCC 5.1 + * doc/extern-inline.texi (extern inline): + * m4/extern-inline.m4 (gl_EXTERN_INLINE): + GCC bugs 54113 and 63877 are fixed in GCC 5.1, so don't work + around these bugs in GCC 5.1 and later. Maybe in a decade or + two we can remove these workarounds. + +2015-06-23 Daiki Ueno + + * ABOUT-NLS: Regenerate for 0.19.5. + +2014-12-24 Daiki Ueno + + * gettext 0.19.4 released. + +2014-10-15 Daiki Ueno + + * gettext 0.19.3 released. + +2014-10-02 Daiki Ueno + + * configure.ac: To automatically disable building libasprintf when + no C++ is found, check if CXX is "no", not ":". This seems to be + a left over of commit 09963c23. Reported by Assaf Gordon in: + . + +2014-09-30 Paul Eggert + + * configure.ac: Invoke AM_PROG_CC_C_O so that the system stdbool.h + will be used on Solaris. Suggested by Paul Eggert in: + . + +2014-07-14 Daiki Ueno + + * gettext 0.19.2 released. + +2014-06-10 Daiki Ueno + + * gettext 0.19.1 released. + +2014-06-02 Daiki Ueno + + * gettext 0.19 released. + +2014-05-14 Daiki Ueno + + * configure.ac: Adjust $docdir assuming that AC_PACKAGE_TARNAME is + set. + +2014-04-22 Daiki Ueno + + build: Use git-version-gen intead of version.sh + * configure.ac: Use git-version-gen in AC_INIT. + +2013-07-07 Daiki Ueno + + * NEWS: Mention setlocale() change on Mac OS X. + +2013-05-29 Stefano Lattarini (tiny change) + + * configure.ac (AM_INIT_AUTOMAKE): Add 'parallel-tests' option. + Require Automake 1.11.1 or later, so that the 'parallel-tests' + will be certainly available. + (AC_INIT): Require Autoconf 2.62 or later; that is the minimal + version supported by Automake 1.11.1 or later. + +2012-12-27 Daiki Ueno + + * configure.ac (WOE32DLL): New conditional. + (INTL_EXPORTS_FLAGS): New substituted variable. + +2012-12-25 Daiki Ueno + + * gettext-0.18.2 released. + +2012-12-17 Daiki Ueno + + * configure.ac: Use AC_CONFIG_HEADERS instead of AM_CONFIG_HEADER. + Suggested by Stefano Lattarini . + +2012-01-26 Bruno Haible + + Modernize quoting. + * INSTALL: Process through sed -e "s/\`\([^']*\)'/‘\1’/g" + * Makefile.am (ABOUT-NLS): Likewise. Use --plaintext instead of + --no-header. + +2011-06-03 Bruno Haible + + Copyright: Use LGPL 2.1 instead of LGPL 2.0. + * COPYING: Update file references. + +2010-07-31 Bruno Haible + + Use new ansi-c++.m4 from gnulib. + * configure.ac: Invoke gl_PROG_ANSI_CXX instead of gt_PROG_ANSI_CXX. + Reported at . + +2010-06-04 Bruno Haible + + * gettext-0.18.1 released. + +2010-05-09 Bruno Haible + + * gettext-0.18 released. + +2010-04-02 Bruno Haible + + * Makefile.am (ACLOCAL_AMFLAGS): Remove "-I ../autoconf-lib-link/m4" + option. + +2009-12-26 Bruno Haible + + * NEWS: Mention the use of the thread-specific locale on MacOS X. + +2009-05-23 Bruno Haible + + * configure.ac (AM_INIT_AUTOMAKE): Add 'silent-rules' option. + +2009-05-23 Bruno Haible + + * configure.ac: Invoke gl_INIT_PACKAGE. Use the preferred form of + AM_INIT_AUTOMAKE. + +2009-05-21 Bruno Haible + + Assume automake >= 1.10.2. + * configure.ac (AC_CONFIG_FILES): Remove FIX_MAKEFILE_COMPILE + invocations. + +2009-03-25 Bruno Haible + + Fix the handling of Windows resources in shared libraries. + * configure.ac: Invoke LT_LANG for 'Windows Resource'. + +2009-01-14 Bruno Haible + + * configure.ac: More consistent m4 quoting. + +2008-04-20 Bruno Haible + + * configure.ac: Use LT_INIT instead of AC_PROG_LIBTOOL. + +2007-11-07 Bruno Haible + + * gettext-0.17 released. + +2007-05-28 Bruno Haible + + * configure.ac (WOE32): New conditional. + +2007-04-13 Bruno Haible + + * configure.ac: For LIBSCHED, try also -lposix4. + Reported by Arto C. Nirkko . + +2006-10-27 Bruno Haible + + Work around automake-1.10 annoyance. + * Makefile.am (ACLOCAL): New macro. + +2006-11-27 Bruno Haible + + * gettext-0.16.1 released. + +2006-10-26 Bruno Haible + + * gettext-0.16 released. + +2006-10-25 Bruno Haible + + * configure.ac: Don't invoke AC_RELOCATABLE; now done through the + relocwrapper module. + +2006-10-25 Bruno Haible + + * configure.ac (DLL_VARIABLE): Define to empty if IN_RELOCWRAPPER is + defined. + +2006-10-14 Bruno Haible + + * COPYING: Clarify copyright of the programs. + Reported by Charles Wilson . + +2006-10-02 Bruno Haible + + * Makefile.am (EXTRA_DIST): Add gnulib-m4/gnulib-cache.m4. + +2006-10-02 Bruno Haible + + * Makefile.am (ACLOCAL_AMFLAGS): Move gnulib-m4 to the end, since + sometime we have newer m4 files than gnulib. + +2006-07-31 Bruno Haible + + * Makefile.am (ACLOCAL_AMFLAGS): Append gnulib-m4. Remove + ../gettext-tools/m4 and ../gettext-tools/gnulib-m4. + (SUBDIRS): Replace lib with gnulib-lib. + * configure.ac (AC_PREREQ): Bump to 2.59. + (gl_EARLY): Invoke. + (AC_GNU_SOURCE, gl_USE_SYSTEM_EXTENSIONS): Remove invocations. + (gl_INIT): Invoke. + (string.h, AM_STDBOOL_H, gl_ALLOCSA, strerror, strstr, atexit, memmove, + gl_GETOPT, gt_FUNC_SETENV, gl_FUNC_STRERROR, gl_FUNC_STRTOUL, + gl_FUNC_GLIBC_UNLOCKED_IO, gl_ERROR, gl_PATHMAX, gl_FUNC_READLINK, + gl_XREADLINK, gl_CANONICALIZE): Remove tests done directly or + indirectly by gl_INIT. + (AC_CONFIG_FILES): Add gnulib-lib/Makefile, remove lib/Makefile. + Remove lib/javacomp.sh, lib/csharpcomp.sh. + +2006-07-30 Bruno Haible + + * Makefile.am (ACLOCAL_AMFLAGS): Append ../gettext-tools/gnulib-m4. + +2006-07-30 Bruno Haible + + * configure.ac: Update for changed location of javacomp.sh.in and + csharpcomp.sh.in. + +2006-07-25 Bruno Haible + + * windows: Remove directory. + * Makefile.msvc: Remove file. + * Makefile.am (config.h.msvc, intl/libgnuintl.h.msvc-static, + intl/libgnuintl.h.msvc-shared): Remove rules. + (EXTRA_DIST): Remove Makefile.msvc, config.h.msvc, windows/*. + +2006-07-25 Bruno Haible + + * Makefile.vms: Remove file. + * Makefile.am (config.h_vms, intl/libgnuintl.h_vms): Remove rules. + (EXTRA_DIST): Remove Makefile.vms, config.h_vms. + +2006-07-21 Bruno Haible + + * gettext-0.15 released. + +2006-07-20 Bruno Haible + + * windows/intl.rc: Bump version number to 0.15.0. + +2006-06-27 Bruno Haible + + * configure.ac: Remove AC_ISC_POSIX invocation. + +2006-06-27 Bruno Haible + + Assume vprintf function. + * configure.ac: Remove AC_FUNC_VPRINTF invocation. + * Makefile.am (config.h_vms, config.h.msvc): Remove unused HAVE_VPRINTF + substitution. + +2006-06-27 Bruno Haible + + * Makefile.am (config.h_vms, config.h.msvc): Drop unused HAVE_LOCALE_H + substitution. + +2006-04-14 Bruno Haible + + Assume autoconf >= 2.60. + * configure.ac (docdir): If --docdir value was given, use that. + (mandir): Remove customization. + +2006-05-15 Bruno Haible + + * configure.ac (DLL_VARIABLE): Define as empty on mingw, like on + Cygwin. + +2006-05-01 Bruno Haible + + * configure.ac: Pass a source-version and a target-version to + gt_JAVACOMP. + +2006-04-02 Bruno Haible + + * configure.ac: Test for strstr(). + * Makefile.am (config.h_vms, config.h.msvc): Also define HAVE_STRSTR. + +2005-11-23 Bruno Haible + + Cygwin portability. + * configure.ac: Invoke gl_WOE32_DLL. + +2005-11-24 Bruno Haible + + * Makefile.am (config.h_vms, config.h.msvc): Treat HAVE_FWPRINTF like + HAVE_WPRINTF. Needed since 2003-09-17. + Reported by Svante Seleborg . + +2005-08-28 Bruno Haible + + * Makefile.am (config.h_vms): Remove setting of HAVE_MALLOC_H, + HAVE_NL_TYPES_H. + +2005-08-28 Bruno Haible + + * Makefile.am (intl/libgnuintl.h_vms, intl/libgnuintl.h.msvc-static, + intl/libgnuintl.h.msvc-shared): Remove the IN_LIBGLOCALE conditional. + +2008-08-28 Bruno Haible + + * glocale: Remove directory, moved to separate project. + * configure.ac (--disable-libglocale): Remove option. + (SUBDIR_glocale): Remove variable. + (ENABLE_GLOCALE): Remove conditional. + (AC_CONFIG_SUBDIRS): Remove glocale. + * Makefile.am (SUBDIR_glocale): Remove variable. + (SUBDIRS): Remove $(SUBDIR_glocale). + +2005-08-13 Bruno Haible + + New configure options --disable-java, --disable-native-java. + * configure.ac: Invoke gt_JAVA_CHOICE. + (BUILDJAVA): Use it. + +2005-08-10 Bruno Haible + + * configure.ac (SUBDIR_libasprintf, SUBDIR_glocale): Remove AC_SUBSTs. + (ENABLE_LIBASPRINTF, ENABLE_GLOCALE): New automake conditionals. + * Makefile.am (SUBDIR_libasprintf, SUBDIR_glocale): New variables. + (SUBDIRS): Use them. + (DIST_SUBDIRS): Remove variable. Automake computes it correctly through + the conditionals. + Suggested by Stepan Kasal . + +2005-07-31 Bruno Haible + + * glocale: New directory. + * configure.ac (SUBDIR_glocale): New variable. + * Makefile.am (SUBDIRS): Add SUBDIR_glocale. + (DIST_SUBDIRS): Add glocale. + +2005-07-26 Bruno Haible + + * configure.ac: Move the AM_GNU_GETTEXT invocation early, since it + modifies CPPFLAGS. + +2005-07-16 Bruno Haible + + * tests: New directory. + * configure.ac (LIBSCHED): New variable. + Add AC_CONFIG of tests/Makefile. + * Makefile.am (SUBDIRS, DIST_SUBDIRS): Add tests. + (config.h.msvc): Define USE_WIN32_THREADS. + +2005-07-05 Bruno Haible + + * configure.ac (DLL_VARIABLE): Define also as nonempty when building + shared libraries with mingw. + +2006-06-21 Bruno Haible + + * gettext-0.14.6 released. + +2006-06-21 Bruno Haible + + * windows/intl.rc: Bump version number to 0.14.6. + +2005-05-23 Bruno Haible + + * gettext-0.14.5 released. + +2005-05-23 Bruno Haible + + * windows/intl.rc: Bump version number to 0.14.5. + +2005-04-11 Bruno Haible + + * gettext-0.14.4 released. + +2005-04-11 Bruno Haible + + * windows/intl.rc: Bump version number to 0.14.4. + +2005-03-22 Bruno Haible + + * configure.ac (AC_CONFIG_AUX_DIR): Use ../build-aux. + * Makefile.am (ACLOCAL_AMFLAGS): Replace config/m4 with m4. + +2005-03-14 Bruno Haible + + * gettext-0.14.3 released. + +2005-03-08 Bruno Haible + + * windows/intl.rc: Bump version number to 0.14.3. + +2005-02-24 Bruno Haible + + * gettext-0.14.2 released. + +2005-02-13 Bruno Haible + + * configure.ac: Invoke gl_FUNC_STRTOUL instead of + AC_CHECK_FUNCS(strtoul). + +2005-02-11 Bruno Haible + + * windows/intl.rc: Bump version number to 0.14.2. + +2005-02-10 Bruno Haible + + * configure.ac: Add creation rule for src/gettext.sh. + +2005-01-06 Bruno Haible + + * configure.ac: Invoke gl_ERROR instead of gt_FUNC_ERROR_AT_LINE. + * Makefile.am (config.h_vms, config.h.msvc): Remove setting of + HAVE_DECL_STRERROR. + +2005-01-06 Bruno Haible + + * configure.ac: Invoke gl_GETOPT. + * Makefile.am (config.h_vms, config.h.msvc): Define __GETOPT_PREFIX + to empty. + +2005-01-06 Bruno Haible + + * Makefile.am (config.h_vms, config.h.msvc): Define USE_UNLOCKED_IO + to 1. + +2005-01-05 Bruno Haible + + * windows/intl.rc: Update copyright year. + +2004-03-11 Bruno Haible + + * Makefile.am (config.h.msvc): Fix the value of SIZE_MAX. + +2004-01-29 Bruno Haible + + * gettext-0.14.1 released. + +2004-01-28 Bruno Haible + + * gettext-0.14 released. + +2004-01-24 Bruno Haible + + * Makefile.am (config.h_vms): Set MALLOC_0_IS_NONNULL to 0. + (config.h.msvc): Set MALLOC_0_IS_NONNULL to 1. + +2004-01-17 Bruno Haible + + * windows/intl.rc: Bump version number to 0.14. + +2004-01-10 Bruno Haible + + * configure.ac: When --disable-csharp was given, set BUILDCSHARP=no. + +2003-12-26 Bruno Haible + + Support for C#. + * intl-csharp: New subdirectory. + * Makefile.am (SUBDIRS): Add intl-csharp. + (DIST_SUBDIRS): Add intl-csharp. + * configure.ac: Invoke gt_CSHARPCOMP. Set BUILDCSHARP. + (AC_CONFIG_FILES): Add intl-csharp/Makefile and lib/csharpcomp.sh. + +2003-12-12 Bruno Haible + + Assume automake-1.8. + * Makefile.am (html): Remove rule. + +2003-11-30 Bruno Haible + + * configure.ac: Invoke gl_ALLOCSA instead of gl_FUNC_ALLOCA. + +2003-12-17 Bruno Haible + + * gettext-0.13.1 released. + +2003-11-30 Bruno Haible + + * gettext-0.13 released. + +2003-11-28 Bruno Haible + + * Makefile.am (config.h.msvc): Define SIZE_MAX and inline. + +2003-11-16 Bruno Haible + + * configure.ac (man/Makefile): Postprocess with FIX_MAKEFILE_DISTRIB. + +2003-11-13 Bruno Haible + + * configure.ac (docdir): New variable. + +2003-11-04 Bruno Haible + + * Makefile.am (MAKEINFO): Set LC_MESSAGES and LC_ALL to empty as well. + +2003-10-31 Bruno Haible + + * configure.ac: Remove argument of FIX_MAKEFILE_COMPILE. + +2003-09-16 Bruno Haible + + Portability to SunOS 4. + * configure.ac: Also check for strtoul and atexit. + +2003-08-29 Bruno Haible + + * Makefile.am (config.h.msvc): Define HAVE_DECL__SNPRINTF, + HAVE_DECL__SNWPRINTF. + +2003-08-24 Bruno Haible + + * configure.ac: Define DLL_VARIABLE in config.h through AH_BOTTOM. + +2003-08-23 Bruno Haible + + * Makefile.am (config.h_vms): Define HAVE_READLINK and HAVE_WCSLEN. + (config.h.msvc): Define HAVE_WCSLEN and ssize_t. + +2003-08-23 Bruno Haible + + * configure.ac: Invoke gl_USE_SYSTEM_EXTENSIONS. + +2003-08-23 Bruno Haible + + * configure.ac: Invoke AM_STDBOOL_H instead of gt_STDBOOL_H. + +2003-07-01 Bruno Haible + + * configure.ac: Invoke gl_FUNC_READLINK. + +2003-06-19 Bruno Haible + + * Makefile.am (config.h_vms, config.h.msvc): Update. + (intl/libgnuintl.h_vms, intl/libgnuintl.h.msvc-static): New rule. + (all-local): Depend on them. + (intl/libgnuintl.h.msvc-shared): Also perform some AC_SUBST + substitutions. + +2003-06-19 Bruno Haible + + * configure.ac: New option --disable-libasprintf. + +2003-06-08 Bruno Haible + + * Makefile.am (config.h_vms): Don't define HAVE_ENVIRON_DECL. + Reported by Jouk Jansen . + +2003-05-22 Bruno Haible + + * gettext-0.12.1 released. + +2003-05-20 Bruno Haible + + * Makefile.am (config.h_vms, config.h.msvc, + intl/libgnuintl.h.msvc-shared): Don't use $< here. + +2003-05-19 Bruno Haible + + * windows/intl.rc: Include . + Reported by Perry Rapp. + +2003-05-17 Bruno Haible + + * gettext-0.12 released. + +2003-05-15 Bruno Haible + + * Makefile.am (config.h_vms, config.h.msvc): Define HAVE_DECL_STRERROR. + +2003-05-12 Bruno Haible + + * configure.ac: Invoke AC_GNU_SOURCE and jm_FUNC_GLIBC_UNLOCKED_IO. + +2003-04-12 Bruno Haible + + * Makefile.am (config.h_vms): Renamed from config.h.vms. + * Makefile.vms: Don't use the force target. Don't recurse into + libasprintf. Use config.h_vms, not config.h.vms. Correct wildcard + syntax. + Suggested by Jouk Jansen . + +2003-04-12 Bruno Haible + + * configure.ac (mandir): Change default value. + * Makefile.msvc (mandir, docdir): Use datadir instead of prefix. + +2003-03-30 Bruno Haible + + * Makefile.vms: New file. + * Makefile.am (config.h.vms): New rule. + (EXTRA_DIST): Add Makefile.vms and config.h.vms. + +2003-03-17 Bruno Haible + + Native Woe32/MSVC support. + * Makefile.msvc: New file. + * README.woe32: New file. + * windows/dllexport.h: New file. + * windows/intl.rc: New file. + * Makefile.am (EXTRA_DIST): Add them and config.h.msvc. + (config.h.msvc, intl/libgnuintl.h.msvc-shared): New rules. + +2003-02-28 Bruno Haible + + Support for relocatable installation. + * configure.ac: Invoke AC_RELOCATABLE, gt_STDBOOL_H, gl_FUNC_ALLOCA, + AC_REPLACE_FUNCS([memmove]), gt_FUNC_SETENV, gl_FUNC_STRERROR, + gl_PATHMAX, gl_XREADLINK, gl_CANONICALIZE. + * INSTALL: Document --enable-relocatable and --with-libintl-prefix. + +2003-02-22 Bruno Haible + + * Makefile.am (ps, pdf): Remove rules, redundant with automake 1.7.2. + +2003-02-18 Bruno Haible + + * Makefile.am: Install ABOUT-NLS in $(datadir)/gettext. + +2003-02-12 Bruno Haible + + Extracted from gettext package. + * configure.ac: New file. + * Makefile.am: New file. + * AUTHORS, BUGS, COPYING, INSTALL, NEWS, README: New files. + diff -Nru gettext-0.19.6/gettext-runtime/config.h.in gettext-0.19.7/gettext-runtime/config.h.in --- gettext-0.19.6/gettext-runtime/config.h.in 2015-09-11 03:04:51.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/config.h.in 2015-12-27 23:09:23.000000000 +0000 @@ -1670,7 +1670,7 @@ #endif /* Extra OS/2 (emx+gcc) defines. */ -#ifdef __EMX__ +#if defined __EMX__ && !defined __KLIBC__ # include "intl/os2compat.h" #endif diff -Nru gettext-0.19.6/gettext-runtime/configure gettext-0.19.7/gettext-runtime/configure --- gettext-0.19.6/gettext-runtime/configure 2015-09-11 03:04:51.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/configure 2015-12-27 23:09:22.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for gettext-runtime 0.19.6. +# Generated by GNU Autoconf 2.69 for gettext-runtime 0.19.7. # # Report bugs to . # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='gettext-runtime' PACKAGE_TARNAME='gettext-runtime' -PACKAGE_VERSION='0.19.6' -PACKAGE_STRING='gettext-runtime 0.19.6' +PACKAGE_VERSION='0.19.7' +PACKAGE_STRING='gettext-runtime 0.19.7' PACKAGE_BUGREPORT='bug-gnu-gettext@gnu.org' PACKAGE_URL='' @@ -1274,7 +1274,6 @@ GNULIB_CHOWN GNULIB_CHDIR pkglibexecdir -runstatedir lispdir REPLACE_WCTOMB REPLACE_UNSETENV @@ -1435,7 +1434,6 @@ NMEDIT DSYMUTIL MANIFEST_TOOL -ac_ct_AR LN_S NM ac_ct_DUMPBIN @@ -1449,6 +1447,7 @@ AS RANLIB ARFLAGS +ac_ct_AR AR host_os host_vendor @@ -1548,6 +1547,7 @@ docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -1647,6 +1647,7 @@ sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1899,6 +1900,15 @@ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -2036,7 +2046,7 @@ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -2149,7 +2159,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures gettext-runtime 0.19.6 to adapt to many kinds of systems. +\`configure' configures gettext-runtime 0.19.7 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2189,6 +2199,7 @@ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -2219,7 +2230,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of gettext-runtime 0.19.6:";; + short | recursive ) echo "Configuration of gettext-runtime 0.19.7:";; esac cat <<\_ACEOF @@ -2358,7 +2369,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -gettext-runtime configure 0.19.6 +gettext-runtime configure 0.19.7 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -3010,7 +3021,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by gettext-runtime $as_me 0.19.6, which was +It was created by gettext-runtime $as_me 0.19.7, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3909,7 +3920,7 @@ # Define the identity of the package. PACKAGE='gettext-runtime' - VERSION='0.19.6' + VERSION='0.19.7' cat >>confdefs.h <<_ACEOF @@ -5458,23 +5469,23 @@ if $JAVAC --version 2>/dev/null | sed -e 1q | grep gcj > /dev/null; then if $JAVAC --version 2>/dev/null | sed -e 's,^[^0-9]*,,' -e 1q | sed -e '/^4\.[012]/d' | grep '^[4-9]' >/dev/null; then rm -f conftest.class - if { echo "$as_me:5461: $JAVAC -d . conftest.java" >&5 + if { echo "$as_me:5472: $JAVAC -d . conftest.java" >&5 $JAVAC -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then rm -f conftest.class rm -f conftestfail.class - if { echo "$as_me:5468: $JAVAC -fsource=$source_version -d . conftest.java" >&5 + if { echo "$as_me:5479: $JAVAC -fsource=$source_version -d . conftest.java" >&5 $JAVAC -fsource="$source_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \ - && { echo "$as_me:5473: $JAVAC -d . conftestfail.java" >&5 + && { echo "$as_me:5484: $JAVAC -d . conftestfail.java" >&5 $JAVAC -d . conftestfail.java >&5 2>&1 } \ && test -f conftestfail.class \ - && ! { echo "$as_me:5477: $JAVAC -fsource=$source_version -d . conftestfail.java" >&5 + && ! { echo "$as_me:5488: $JAVAC -fsource=$source_version -d . conftestfail.java" >&5 $JAVAC -fsource="$source_version" -d . conftestfail.java >&5 2>&1 }; then CONF_JAVAC="$JAVAC -fsource=$source_version" @@ -5488,7 +5499,7 @@ else rm -f conftest.class rm -f conftestfail.class - if { echo "$as_me:5491: $JAVAC -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&5 + if { echo "$as_me:5502: $JAVAC -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&5 $JAVAC -fsource="$source_version" -ftarget="$target_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ @@ -5501,7 +5512,7 @@ else if test "$target_version" = 1.4 && test "$source_version" = 1.4; then rm -f conftest.class - if { echo "$as_me:5504: $JAVAC -d . conftest.java" >&5 + if { echo "$as_me:5515: $JAVAC -d . conftest.java" >&5 $JAVAC -d . conftest.java >&5 2>&1 } \ && test -f conftest.class; then @@ -5513,7 +5524,7 @@ if test "$target_version" = 1.4 && test "$source_version" = 1.3; then javac_works= rm -f conftest.class - if { echo "$as_me:5516: $JAVAC -d . conftest.java" >&5 + if { echo "$as_me:5527: $JAVAC -d . conftest.java" >&5 $JAVAC -d . conftest.java >&5 2>&1 } \ && test -f conftest.class; then @@ -5521,7 +5532,7 @@ fi javac_noassert_works= rm -f conftest.class - if { echo "$as_me:5524: $JAVAC -fno-assert -d . conftest.java" >&5 + if { echo "$as_me:5535: $JAVAC -fno-assert -d . conftest.java" >&5 $JAVAC -fno-assert -d . conftest.java >&5 2>&1 } \ && test -f conftest.class; then @@ -5529,11 +5540,11 @@ fi if test -n "$javac_works" && test -n "$javac_noassert_works"; then rm -f conftestfail.class - if { echo "$as_me:5532: $JAVAC -d . conftestfail.java" >&5 + if { echo "$as_me:5543: $JAVAC -d . conftestfail.java" >&5 $JAVAC -d . conftestfail.java >&5 2>&1 } \ && test -f conftestfail.class \ - && ! { echo "$as_me:5536: $JAVAC -fno-assert -d . conftestfail.java" >&5 + && ! { echo "$as_me:5547: $JAVAC -fno-assert -d . conftestfail.java" >&5 $JAVAC -fno-assert -d . conftestfail.java >&5 2>&1 }; then javac_works= @@ -5555,23 +5566,23 @@ fi else rm -f conftest.class - if { echo "$as_me:5558: $JAVAC -d . conftest.java" >&5 + if { echo "$as_me:5569: $JAVAC -d . conftest.java" >&5 $JAVAC -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then rm -f conftest.class rm -f conftestfail.class - if { echo "$as_me:5565: $JAVAC -source $source_version -d . conftest.java" >&5 + if { echo "$as_me:5576: $JAVAC -source $source_version -d . conftest.java" >&5 $JAVAC -source "$source_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \ - && { echo "$as_me:5570: $JAVAC -d . conftestfail.java" >&5 + && { echo "$as_me:5581: $JAVAC -d . conftestfail.java" >&5 $JAVAC -d . conftestfail.java >&5 2>&1 } \ && test -f conftestfail.class \ - && ! { echo "$as_me:5574: $JAVAC -source $source_version -d . conftestfail.java" >&5 + && ! { echo "$as_me:5585: $JAVAC -source $source_version -d . conftestfail.java" >&5 $JAVAC -source "$source_version" -d . conftestfail.java >&5 2>&1 }; then CONF_JAVAC="$JAVAC -source $source_version" @@ -5584,23 +5595,23 @@ fi else rm -f conftest.class - if { echo "$as_me:5587: $JAVAC -target $target_version -d . conftest.java" >&5 + if { echo "$as_me:5598: $JAVAC -target $target_version -d . conftest.java" >&5 $JAVAC -target "$target_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then rm -f conftest.class rm -f conftestfail.class - if { echo "$as_me:5594: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&5 + if { echo "$as_me:5605: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&5 $JAVAC -target "$target_version" -source "$source_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \ - && { echo "$as_me:5599: $JAVAC -target $target_version -d . conftestfail.java" >&5 + && { echo "$as_me:5610: $JAVAC -target $target_version -d . conftestfail.java" >&5 $JAVAC -target "$target_version" -d . conftestfail.java >&5 2>&1 } \ && test -f conftestfail.class \ - && ! { echo "$as_me:5603: $JAVAC -target $target_version -source $source_version -d . conftestfail.java" >&5 + && ! { echo "$as_me:5614: $JAVAC -target $target_version -source $source_version -d . conftestfail.java" >&5 $JAVAC -target "$target_version" -source "$source_version" -d . conftestfail.java >&5 2>&1 }; then CONF_JAVAC="$JAVAC -target $target_version -source $source_version" @@ -5613,7 +5624,7 @@ fi else rm -f conftest.class - if { echo "$as_me:5616: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&5 + if { echo "$as_me:5627: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&5 $JAVAC -target "$target_version" -source "$source_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ @@ -5731,28 +5742,28 @@ if test -z "$HAVE_JAVACOMP" && test -n "$HAVE_GCJ_IN_PATH"; then if gcj --version 2>/dev/null | sed -e 's,^[^0-9]*,,' -e 1q | sed -e '/^3\.[01]/d' | grep '^[3-9]' >/dev/null; then - if { echo "$as_me:5734: gcj -C -d . conftestlib.java" >&5 + if { echo "$as_me:5745: gcj -C -d . conftestlib.java" >&5 gcj -C -d . conftestlib.java >&5 2>&1 }; then if gcj --version 2>/dev/null | sed -e 's,^[^0-9]*,,' -e 1q | sed -e '/^4\.[012]/d' | grep '^[4-9]' >/dev/null; then rm -f conftest.class - if { echo "$as_me:5739: gcj -C -d . conftest.java" >&5 + if { echo "$as_me:5750: gcj -C -d . conftest.java" >&5 gcj -C -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then rm -f conftest.class rm -f conftestfail.class - if { echo "$as_me:5746: gcj -C -fsource=$source_version -d . conftest.java" >&5 + if { echo "$as_me:5757: gcj -C -fsource=$source_version -d . conftest.java" >&5 gcj -C -fsource="$source_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \ - && { echo "$as_me:5751: gcj -C -d . conftestfail.java" >&5 + && { echo "$as_me:5762: gcj -C -d . conftestfail.java" >&5 gcj -C -d . conftestfail.java >&5 2>&1 } \ && test -f conftestfail.class \ - && ! { echo "$as_me:5755: gcj -C -fsource=$source_version -d . conftestfail.java" >&5 + && ! { echo "$as_me:5766: gcj -C -fsource=$source_version -d . conftestfail.java" >&5 gcj -C -fsource="$source_version" -d . conftestfail.java >&5 2>&1 }; then CONF_JAVAC="gcj -C -fsource=$source_version" @@ -5766,7 +5777,7 @@ else rm -f conftest.class rm -f conftestfail.class - if { echo "$as_me:5769: gcj -C -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&5 + if { echo "$as_me:5780: gcj -C -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&5 gcj -C -fsource="$source_version" -ftarget="$target_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ @@ -5779,7 +5790,7 @@ else if test "$target_version" = 1.4 && test "$source_version" = 1.4; then rm -f conftest.class - if { echo "$as_me:5782: gcj -C -d . conftest.java" >&5 + if { echo "$as_me:5793: gcj -C -d . conftest.java" >&5 gcj -C -d . conftest.java >&5 2>&1 } \ && test -f conftest.class; then @@ -5790,7 +5801,7 @@ else if test "$target_version" = 1.4 && test "$source_version" = 1.3; then rm -f conftest.class - if { echo "$as_me:5793: gcj -C -fno-assert -d . conftest.java" >&5 + if { echo "$as_me:5804: gcj -C -fno-assert -d . conftest.java" >&5 gcj -C -fno-assert -d . conftest.java >&5 2>&1 } \ && test -f conftest.class; then @@ -5799,7 +5810,7 @@ HAVE_JAVACOMP=1 else rm -f conftest.class - if { echo "$as_me:5802: gcj -C -d . conftest.java" >&5 + if { echo "$as_me:5813: gcj -C -d . conftest.java" >&5 gcj -C -d . conftest.java >&5 2>&1 } \ && test -f conftest.class; then @@ -5818,23 +5829,23 @@ if { javac -version >/dev/null 2>/dev/null || test $? -le 2; } \ && ( if javac -help 2>&1 >/dev/null | grep at.dms.kjc.Main >/dev/null && javac -help 2>/dev/null | grep 'released.*2000' >/dev/null ; then exit 1; else exit 0; fi ); then rm -f conftest.class - if { echo "$as_me:5821: javac -d . conftest.java" >&5 + if { echo "$as_me:5832: javac -d . conftest.java" >&5 javac -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then rm -f conftest.class rm -f conftestfail.class - if { echo "$as_me:5828: javac -source $source_version -d . conftest.java" >&5 + if { echo "$as_me:5839: javac -source $source_version -d . conftest.java" >&5 javac -source "$source_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \ - && { echo "$as_me:5833: javac -d . conftestfail.java" >&5 + && { echo "$as_me:5844: javac -d . conftestfail.java" >&5 javac -d . conftestfail.java >&5 2>&1 } \ && test -f conftestfail.class \ - && ! { echo "$as_me:5837: javac -source $source_version -d . conftestfail.java" >&5 + && ! { echo "$as_me:5848: javac -source $source_version -d . conftestfail.java" >&5 javac -source "$source_version" -d . conftestfail.java >&5 2>&1 }; then CONF_JAVAC="javac -source $source_version" @@ -5847,23 +5858,23 @@ fi else rm -f conftest.class - if { echo "$as_me:5850: javac -target $target_version -d . conftest.java" >&5 + if { echo "$as_me:5861: javac -target $target_version -d . conftest.java" >&5 javac -target "$target_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then rm -f conftest.class rm -f conftestfail.class - if { echo "$as_me:5857: javac -target $target_version -source $source_version -d . conftest.java" >&5 + if { echo "$as_me:5868: javac -target $target_version -source $source_version -d . conftest.java" >&5 javac -target "$target_version" -source "$source_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \ - && { echo "$as_me:5862: javac -target $target_version -d . conftestfail.java" >&5 + && { echo "$as_me:5873: javac -target $target_version -d . conftestfail.java" >&5 javac -target "$target_version" -d . conftestfail.java >&5 2>&1 } \ && test -f conftestfail.class \ - && ! { echo "$as_me:5866: javac -target $target_version -source $source_version -d . conftestfail.java" >&5 + && ! { echo "$as_me:5877: javac -target $target_version -source $source_version -d . conftestfail.java" >&5 javac -target "$target_version" -source "$source_version" -d . conftestfail.java >&5 2>&1 }; then CONF_JAVAC="javac -target $target_version -source $source_version" @@ -5876,7 +5887,7 @@ fi else rm -f conftest.class - if { echo "$as_me:5879: javac -target $target_version -source $source_version -d . conftest.java" >&5 + if { echo "$as_me:5890: javac -target $target_version -source $source_version -d . conftest.java" >&5 javac -target "$target_version" -source "$source_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ @@ -6235,245 +6246,6 @@ - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5 -$as_echo_n "checking for Minix Amsterdam compiler... " >&6; } -if ${gl_cv_c_amsterdam_compiler+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef __ACK__ -Amsterdam -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Amsterdam" >/dev/null 2>&1; then : - gl_cv_c_amsterdam_compiler=yes -else - gl_cv_c_amsterdam_compiler=no -fi -rm -f conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 -$as_echo "$gl_cv_c_amsterdam_compiler" >&6; } - if test -z "$AR"; then - if test $gl_cv_c_amsterdam_compiler = yes; then - AR='cc -c.a' - if test -z "$ARFLAGS"; then - ARFLAGS='-o' - fi - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="${ac_tool_prefix}ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_AR"; then - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_AR" = x; then - AR="ar" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -else - AR="$ac_cv_prog_AR" -fi - - if test -z "$ARFLAGS"; then - ARFLAGS='cr' - fi - fi - else - if test -z "$ARFLAGS"; then - ARFLAGS='cr' - fi - fi - - - if test -z "$RANLIB"; then - if test $gl_cv_c_amsterdam_compiler = yes; then - RANLIB=':' - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - - fi - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : @@ -6725,6 +6497,416 @@ + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5 +$as_echo_n "checking for Minix Amsterdam compiler... " >&6; } +if ${gl_cv_c_amsterdam_compiler+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef __ACK__ +Amsterdam +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Amsterdam" >/dev/null 2>&1; then : + gl_cv_c_amsterdam_compiler=yes +else + gl_cv_c_amsterdam_compiler=no +fi +rm -f conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 +$as_echo "$gl_cv_c_amsterdam_compiler" >&6; } + + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + if test -n "$ac_tool_prefix"; then + for ac_prog in ar lib "link -lib" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar lib "link -lib" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 +$as_echo_n "checking the archiver ($AR) interface... " >&6; } +if ${am_cv_ar_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + am_cv_ar_interface=ar + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int some_variable = 0; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 +$as_echo "$am_cv_ar_interface" >&6; } + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + as_fn_error $? "could not determine $AR interface" "$LINENO" 5 + ;; +esac + + fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + + + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + fi + fi + + + # Check whether --enable-largefile was given. if test "${enable_largefile+set}" = set; then : enableval=$enable_largefile; @@ -6977,6 +7159,10 @@ + # Pre-early section. + + + # Code from module absolute-header: # Code from module alloca-opt: @@ -6998,7 +7184,6 @@ # Code from module errno: # Code from module error: # Code from module extensions: - # Code from module extern-inline: # Code from module fwriteerror: # Code from module getopt-gnu: @@ -28512,13 +28697,13 @@ int main (void) { - return mbrtowc (&wc, "", 0, &mbs) == (size_t) -2; + return mbrtowc (&wc, "", 0, &mbs) != (size_t) -2; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_mbrtowc_empty_input=no -else gl_cv_func_mbrtowc_empty_input=yes +else + gl_cv_func_mbrtowc_empty_input=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext @@ -32909,7 +33094,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by gettext-runtime $as_me 0.19.6, which was +This file was extended by gettext-runtime $as_me 0.19.7, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -32975,7 +33160,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -gettext-runtime config.status 0.19.6 +gettext-runtime config.status 0.19.7 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru gettext-0.19.6/gettext-runtime/configure.ac gettext-0.19.7/gettext-runtime/configure.ac --- gettext-0.19.6/gettext-runtime/configure.ac 2015-08-21 07:18:23.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/configure.ac 2015-12-23 07:08:27.000000000 +0000 @@ -102,7 +102,7 @@ #endif /* Extra OS/2 (emx+gcc) defines. */ -#ifdef __EMX__ +#if defined __EMX__ && !defined __KLIBC__ # include "intl/os2compat.h" #endif ]) diff -Nru gettext-0.19.6/gettext-runtime/doc/ChangeLog gettext-0.19.7/gettext-runtime/doc/ChangeLog --- gettext-0.19.6/gettext-runtime/doc/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/doc/ChangeLog 1970-01-01 00:00:00.000000000 +0000 @@ -1,324 +0,0 @@ -2015-09-11 Daiki Ueno - - * gettext 0.19.6 released. - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2015-06-23 Daiki Ueno - - * matrix.texi: Regenerate for 0.19.5. - -2015-06-23 Daiki Ueno - - * Admin/Matrix.java (Matrix): Group teams considering the actual - table width, instead of using a hard-coded rule. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-06 Daiki Ueno - - doc: Update the matrix - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2012-12-08 Daiki Ueno - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2011-06-03 Bruno Haible - - Copyright: Use LGPL 2.1 instead of LGPL 2.0. - * nls.texi (Using gettext in own code): Write "GNU Lesser General - Public License". - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-06-03 Bruno Haible - - De-emphasize the intl/ subdirectory. - * nls.texi (Translation Intro): Remove paragraph about the version. - (Configuration advice): Remove section. - (INSTALL Matters): Don't explain --with-included-gettext. Don't mention - catgets. - -2010-06-03 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2010-05-08 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2010-03-27 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2008-09-27 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2007-11-01 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2007-06-30 Bruno Haible - - * nls.texi: Update email addresses and URLs after the Translation - Project moved. - -2007-06-03 Bruno Haible - - * nls.texi (Using This Package): Recommend also to unset LC_ALL etc. - Reported by Karl Berry . - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-10-02 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2006-08-09 Ralf Wildenhues - - * nls.texi: Reduce spacing after "i.e.". - -2006-08-06 Ralf Wildenhues - - * nls.texi: Fix 2 typos. - * rt-gettext.texi, rt-ngettext.texi: Write "System V". - -2006-07-25 Bruno Haible - - * Makefile.msvc: Remove file. - * Makefile.am (EXTRA_DIST): Remove Makefile.msvc. - -2006-07-25 Bruno Haible - - * Makefile.vms: Remove file. - * Makefile.am (EXTRA_DIST): Remove Makefile.vms. - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2006-07-20 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2006-07-14 Bruno Haible - - * nls.texi: Fix a mistake. - -2006-06-21 Bruno Haible - - * gettext-0.14.6 released. - -2006-06-21 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2005-05-23 Bruno Haible - - * gettext-0.14.5 released. - -2005-05-23 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2005-04-11 Bruno Haible - - * gettext-0.14.4 released. - -2005-04-11 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2005-03-14 Bruno Haible - - * gettext-0.14.3 released. - -2005-03-08 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2005-02-24 Bruno Haible - - * gettext-0.14.2 released. - -2005-02-23 Bruno Haible - - * matrix.texi: Update. - -2005-02-11 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2004-07-10 Bruno Haible - - * rt-gettext.texi: Document also \a. - * rt-ngettext.texi: Likewise. - -2004-03-23 Bruno Haible - - * nls.texi: Small wording fixes, - from Wesley J. Landaker . - -2004-01-29 Bruno Haible - - * gettext-0.14.1 released. - -2004-01-28 Bruno Haible - - * gettext-0.14 released. - -2004-01-28 Bruno Haible - - * matrix.texi: Update. - -2004-01-17 Bruno Haible - - * nls.texi: Give some advice for smoothing the no -> nb transition. - -2004-01-17 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2003-12-12 Bruno Haible - - Assume automake-1.8. - * Makefile.am (html): Remove rule. - -2003-12-17 Bruno Haible - - * gettext-0.13.1 released. - -2003-12-17 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2003-11-30 Bruno Haible - - * gettext-0.13 released. - -2003-11-30 Bruno Haible - - * matrix.texi: Update. - -2003-11-16 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2003-09-13 Bruno Haible - - * rt-gettext.texi: New file. - * rt-ngettext.texi: New file. - * rt-envsubst.texi: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2003-08-23 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2003-05-22 Bruno Haible - - * gettext-0.12.1 released. - -2003-05-17 Bruno Haible - - * gettext-0.12 released. - -2003-05-17 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2003-04-12 Bruno Haible - - * Makefile.vms: Don't use the force target. Avoid rules with no lines. - Suggested by Jouk Jansen . - -2003-03-30 Bruno Haible - - * Makefile.vms: New file. - * Makefile.am (EXTRA_DIST): Add Makefile.vms. - -2003-03-17 Bruno Haible - - Native Woe32/MSVC support. - * Makefile.msvc: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2003-02-22 Bruno Haible - - * Makefile.am (ps, pdf): Remove rules, redundant with automake 1.7.2. - -2003-02-20 Jim Meyering - - * nls.texi: Fix grammo. - -2003-02-18 Bruno Haible - - * matrix.texi: Update. - * nls.texi (STATUS): Likewise. - -2003-02-12 Bruno Haible - - Extracted from gettext package. - * Makefile.am: New file. - diff -Nru gettext-0.19.6/gettext-runtime/doc/ChangeLog.0 gettext-0.19.7/gettext-runtime/doc/ChangeLog.0 --- gettext-0.19.6/gettext-runtime/doc/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/doc/ChangeLog.0 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,324 @@ +2015-09-11 Daiki Ueno + + * gettext 0.19.6 released. + +2015-07-10 Daiki Ueno + + * gettext 0.19.5 released. + +2015-06-23 Daiki Ueno + + * matrix.texi: Regenerate for 0.19.5. + +2015-06-23 Daiki Ueno + + * Admin/Matrix.java (Matrix): Group teams considering the actual + table width, instead of using a hard-coded rule. + +2014-12-24 Daiki Ueno + + * gettext 0.19.4 released. + +2014-10-15 Daiki Ueno + + * gettext 0.19.3 released. + +2014-07-14 Daiki Ueno + + * gettext 0.19.2 released. + +2014-06-10 Daiki Ueno + + * gettext 0.19.1 released. + +2014-06-06 Daiki Ueno + + doc: Update the matrix + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2014-06-02 Daiki Ueno + + * gettext 0.19 released. + +2012-12-25 Daiki Ueno + + * gettext-0.18.2 released. + +2012-12-08 Daiki Ueno + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2011-06-03 Bruno Haible + + Copyright: Use LGPL 2.1 instead of LGPL 2.0. + * nls.texi (Using gettext in own code): Write "GNU Lesser General + Public License". + +2010-06-04 Bruno Haible + + * gettext-0.18.1 released. + +2010-06-03 Bruno Haible + + De-emphasize the intl/ subdirectory. + * nls.texi (Translation Intro): Remove paragraph about the version. + (Configuration advice): Remove section. + (INSTALL Matters): Don't explain --with-included-gettext. Don't mention + catgets. + +2010-06-03 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2010-05-09 Bruno Haible + + * gettext-0.18 released. + +2010-05-08 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2010-03-27 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2008-09-27 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2007-11-07 Bruno Haible + + * gettext-0.17 released. + +2007-11-01 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2007-06-30 Bruno Haible + + * nls.texi: Update email addresses and URLs after the Translation + Project moved. + +2007-06-03 Bruno Haible + + * nls.texi (Using This Package): Recommend also to unset LC_ALL etc. + Reported by Karl Berry . + +2006-11-27 Bruno Haible + + * gettext-0.16.1 released. + +2006-10-26 Bruno Haible + + * gettext-0.16 released. + +2006-10-02 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2006-08-09 Ralf Wildenhues + + * nls.texi: Reduce spacing after "i.e.". + +2006-08-06 Ralf Wildenhues + + * nls.texi: Fix 2 typos. + * rt-gettext.texi, rt-ngettext.texi: Write "System V". + +2006-07-25 Bruno Haible + + * Makefile.msvc: Remove file. + * Makefile.am (EXTRA_DIST): Remove Makefile.msvc. + +2006-07-25 Bruno Haible + + * Makefile.vms: Remove file. + * Makefile.am (EXTRA_DIST): Remove Makefile.vms. + +2006-07-21 Bruno Haible + + * gettext-0.15 released. + +2006-07-20 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2006-07-14 Bruno Haible + + * nls.texi: Fix a mistake. + +2006-06-21 Bruno Haible + + * gettext-0.14.6 released. + +2006-06-21 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2005-05-23 Bruno Haible + + * gettext-0.14.5 released. + +2005-05-23 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2005-04-11 Bruno Haible + + * gettext-0.14.4 released. + +2005-04-11 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2005-03-14 Bruno Haible + + * gettext-0.14.3 released. + +2005-03-08 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2005-02-24 Bruno Haible + + * gettext-0.14.2 released. + +2005-02-23 Bruno Haible + + * matrix.texi: Update. + +2005-02-11 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2004-07-10 Bruno Haible + + * rt-gettext.texi: Document also \a. + * rt-ngettext.texi: Likewise. + +2004-03-23 Bruno Haible + + * nls.texi: Small wording fixes, + from Wesley J. Landaker . + +2004-01-29 Bruno Haible + + * gettext-0.14.1 released. + +2004-01-28 Bruno Haible + + * gettext-0.14 released. + +2004-01-28 Bruno Haible + + * matrix.texi: Update. + +2004-01-17 Bruno Haible + + * nls.texi: Give some advice for smoothing the no -> nb transition. + +2004-01-17 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2003-12-12 Bruno Haible + + Assume automake-1.8. + * Makefile.am (html): Remove rule. + +2003-12-17 Bruno Haible + + * gettext-0.13.1 released. + +2003-12-17 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2003-11-30 Bruno Haible + + * gettext-0.13 released. + +2003-11-30 Bruno Haible + + * matrix.texi: Update. + +2003-11-16 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2003-09-13 Bruno Haible + + * rt-gettext.texi: New file. + * rt-ngettext.texi: New file. + * rt-envsubst.texi: New file. + * Makefile.am (EXTRA_DIST): Add them. + +2003-08-23 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2003-05-22 Bruno Haible + + * gettext-0.12.1 released. + +2003-05-17 Bruno Haible + + * gettext-0.12 released. + +2003-05-17 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2003-04-12 Bruno Haible + + * Makefile.vms: Don't use the force target. Avoid rules with no lines. + Suggested by Jouk Jansen . + +2003-03-30 Bruno Haible + + * Makefile.vms: New file. + * Makefile.am (EXTRA_DIST): Add Makefile.vms. + +2003-03-17 Bruno Haible + + Native Woe32/MSVC support. + * Makefile.msvc: New file. + * Makefile.am (EXTRA_DIST): Add it. + +2003-02-22 Bruno Haible + + * Makefile.am (ps, pdf): Remove rules, redundant with automake 1.7.2. + +2003-02-20 Jim Meyering + + * nls.texi: Fix grammo. + +2003-02-18 Bruno Haible + + * matrix.texi: Update. + * nls.texi (STATUS): Likewise. + +2003-02-12 Bruno Haible + + Extracted from gettext package. + * Makefile.am: New file. + diff -Nru gettext-0.19.6/gettext-runtime/doc/Makefile.in gettext-0.19.7/gettext-runtime/doc/Makefile.in --- gettext-0.19.6/gettext-runtime/doc/Makefile.in 2015-09-11 03:04:53.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/doc/Makefile.in 2015-12-27 23:09:24.000000000 +0000 @@ -225,7 +225,7 @@ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in \ - $(top_srcdir)/../build-aux/mkinstalldirs ChangeLog + $(top_srcdir)/../build-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkglibexecdir = @pkglibexecdir@ ACLOCAL = @ACLOCAL@ diff -Nru gettext-0.19.6/gettext-runtime/doc/matrix.texi gettext-0.19.7/gettext-runtime/doc/matrix.texi --- gettext-0.19.6/gettext-runtime/doc/matrix.texi 2015-09-11 01:43:14.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/doc/matrix.texi 2015-12-27 22:58:08.000000000 +0000 @@ -48,7 +48,6 @@ gettext-examples | [] [] [] [] [] | gettext-runtime | [] [] [] | gettext-tools | [] [] | -gip | [] [] | gjay | | glunarclock | [] [] [] | gnubiff | [] | @@ -61,9 +60,8 @@ gold | | gphoto2 | [] | gprof | [] | -gpsdrive | | gramadoir | | -grep | [] [] | +grep | [] [] [] | grub | [] | gsasl | | gss | | @@ -74,7 +72,6 @@ gstreamer | [] [] [] [] | gtick | [] | gtkam | [] [] | -gtkorphan | [] [] | gtkspell | [] [] [] [] [] | guix | | guix-packages | | @@ -101,7 +98,6 @@ libexif | () | libextractor | | libgnutls | [] | -libgpg-error | [] | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | | @@ -167,14 +163,14 @@ wcd | | wcd-man | | wdiff | [] [] | -wget | [] [] | +wget | [] | wyslij-po | | xboard | | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +---------------------------------------------------+ af am an ar as ast az be bg bn bn_IN bs ca crh cs - 4 0 2 4 3 11 0 8 24 3 3 1 55 4 76 + 4 0 2 5 3 11 0 8 23 3 3 1 54 4 73 @end group @group @@ -184,7 +180,7 @@ aegis | [] [] [] [] | anubis | [] [] [] [] [] | aspell | [] [] [] [] [] [] [] | -bash | [] [] [] [] [] | +bash | [] [] [] | bfd | [] [] [] [] | binutils | [] [] [] | bison | [] [] [] [] [] [] [] [] | @@ -200,7 +196,7 @@ cpplib | [] [] [] [] [] [] | cryptsetup | [] [] [] [] [] | datamash | [] [] [] [] | -denemo | | +denemo | [] | dfarc | [] [] [] [] [] [] | dialog | [] [] [] [] [] [] [] [] [] | dico | [] [] [] [] | @@ -226,7 +222,6 @@ gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] | -gip | [] [] [] [] [] [] [] | gjay | [] [] [] [] | glunarclock | [] [] [] [] [] | gnubiff | () [] [] () | @@ -239,7 +234,6 @@ gold | [] [] [] | gphoto2 | [] () [] [] | gprof | [] [] [] [] [] [] | -gpsdrive | [] [] [] [] | gramadoir | [] [] [] [] [] | grep | [] [] [] [] [] [] [] | grub | [] [] [] [] [] | @@ -252,9 +246,8 @@ gstreamer | [] [] [] [] [] [] [] | gtick | [] () [] [] [] | gtkam | [] () [] [] [] [] | -gtkorphan | [] [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] | -guix | [] [] [] | +guix | [] [] | guix-packages | | gutenprint | [] [] [] [] | hello | [] [] [] [] [] [] [] [] | @@ -279,7 +272,6 @@ libexif | [] [] () [] [] | libextractor | [] | libgnutls | [] [] [] [] | -libgpg-error | [] [] [] | libgphoto2 | [] () [] | libgphoto2_port | [] () [] [] [] [] | libgsasl | [] [] [] [] [] | @@ -311,7 +303,7 @@ pspp | [] [] [] | pushover | () [] [] [] | pwdutils | [] [] [] | -pyspread | [] [] | +pyspread | [] [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] | recutils | [] [] [] [] | @@ -352,7 +344,7 @@ xkeyboard-config | [] [] [] [] [] [] [] | +--------------------------------------------------+ da de el en en_GB en_ZA eo es et eu fa fi fr - 123 134 32 1 6 0 97 97 23 14 4 106 139 + 120 130 32 1 6 0 94 95 22 13 4 103 136 @end group @group @@ -362,7 +354,7 @@ aegis | [] | anubis | [] [] [] [] | aspell | [] [] [] [] [] | -bash | [] [] [] [] | +bash | [] [] [] | bfd | [] [] | binutils | [] [] [] | bison | [] | @@ -404,7 +396,6 @@ gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] | gettext-tools | [] [] [] | -gip | [] [] [] [] [] [] | gjay | [] | glunarclock | [] [] [] [] [] [] | gnubiff | [] [] () | @@ -417,7 +408,6 @@ gold | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] [] | -gpsdrive | [] [] [] [] | gramadoir | [] [] [] | grep | [] [] [] [] [] [] [] | grub | [] [] [] | @@ -430,9 +420,8 @@ gstreamer | [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] | -gtkorphan | [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] [] | -guix | [] | +guix | | guix-packages | | gutenprint | [] [] [] | hello | [] [] [] [] [] | @@ -449,7 +438,7 @@ iso_639_5 | | jwhois | [] [] [] [] | kbd | [] [] [] | -klavaro | [] [] [] [] | +klavaro | [] [] [] [] [] | latrine | [] | ld | [] [] [] [] | leafpad | [] [] [] [] [] [] [] () | @@ -457,7 +446,6 @@ libexif | [] | libextractor | | libgnutls | [] | -libgpg-error | [] [] [] | libgphoto2 | [] [] | libgphoto2_port | [] [] | libgsasl | [] [] [] [] | @@ -523,14 +511,14 @@ wcd | | wcd-man | | wdiff | [] [] [] | -wget | [] [] [] [] | +wget | [] [] [] | wyslij-po | [] [] [] | xboard | | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] | +-------------------------------------------------+ ga gd gl gu he hi hr hu hy ia id is it ja ka kk - 36 2 49 4 8 2 54 75 2 6 84 11 89 60 0 3 + 35 2 47 4 8 2 53 69 2 6 80 11 86 58 0 3 @end group @group @@ -582,7 +570,6 @@ gettext-examples | [] [] [] [] [] [] | gettext-runtime | [] [] | gettext-tools | [] | -gip | [] [] [] | gjay | | glunarclock | [] [] | gnubiff | [] | @@ -595,20 +582,18 @@ gold | | gphoto2 | [] | gprof | [] [] | -gpsdrive | [] | gramadoir | [] | grep | [] [] | grub | [] [] [] | gsasl | [] | gss | | -gst-plugins-bad | [] | +gst-plugins-bad | [] [] | gst-plugins-base | [] [] [] | gst-plugins-good | [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | [] [] | gtick | [] | gtkam | [] [] | -gtkorphan | [] [] | gtkspell | [] [] [] [] [] [] [] | guix | | guix-packages | | @@ -635,14 +620,13 @@ libexif | [] | libextractor | [] | libgnutls | [] [] | -libgpg-error | [] | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | [] | libiconv | [] [] | libidn | [] | liferea | [] [] [] | -lilypond | | +lilypond | [] | lordsawar | | lprng | | lynx | [] | @@ -708,7 +692,7 @@ xkeyboard-config | [] [] [] | +--------------------------------------------------+ kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl - 5 11 4 6 0 13 24 3 3 3 4 12 2 40 1 126 + 5 11 4 6 0 13 22 3 3 3 4 11 2 40 1 124 @end group @group @@ -760,7 +744,6 @@ gettext-examples | [] [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] [] [] | -gip | [] [] [] [] [] | gjay | [] | glunarclock | [] [] [] [] [] [] | gnubiff | [] | @@ -773,7 +756,6 @@ gold | | gphoto2 | [] [] [] [] [] | gprof | [] [] [] [] | -gpsdrive | [] | gramadoir | [] [] | grep | [] [] [] [] [] [] | grub | [] [] [] [] [] | @@ -786,11 +768,10 @@ gstreamer | [] [] [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] [] | -gtkorphan | [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] | guix | | guix-packages | | -gutenprint | [] | +gutenprint | [] [] | hello | [] [] [] [] [] [] | help2man | [] [] [] [] | help2man-texi | [] | @@ -813,7 +794,6 @@ libexif | [] () [] | libextractor | [] | libgnutls | [] | -libgpg-error | [] [] [] | libgphoto2 | [] | libgphoto2_port | [] [] [] [] [] | libgsasl | [] [] [] [] | @@ -859,13 +839,13 @@ solfege | [] [] [] | solfege-manual | [] [] | spotmachine | [] [] | -sudo | [] [] [] [] [] | +sudo | [] [] [] [] [] [] | sudoers | [] [] [] [] | sysstat | [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] [] | -tigervnc | | +tigervnc | [] | tin | [] | tin-man | | tracgoogleappsa... | [] [] [] [] | @@ -879,14 +859,14 @@ wcd | | wcd-man | | wdiff | [] [] [] [] [] | -wget | [] [] [] [] [] | +wget | [] [] [] [] | wyslij-po | [] [] [] [] | -xboard | [] [] | +xboard | [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | +--------------------------------------------------+ nn or os pa pl ps pt pt_BR ro ru rw sk sl sq sr - 7 3 1 6 117 1 12 84 33 82 3 37 45 7 98 + 7 3 1 6 114 1 12 83 32 80 3 38 45 7 94 @end group @group @@ -896,19 +876,19 @@ aegis | [] | anubis | [] [] [] [] | aspell | [] [] [] [] | -bash | [] [] [] [] [] | +bash | [] [] [] [] | bfd | [] [] | binutils | [] [] [] | bison | [] [] [] [] | bison-runtime | [] [] [] [] [] [] | buzztrax | [] [] [] | -ccd2cue | [] [] | -ccide | [] [] [] | +ccd2cue | [] [] [] | +ccide | [] [] [] [] | cflow | [] [] [] [] | clisp | | coreutils | [] [] [] [] | cpio | [] [] [] [] [] | -cppi | [] [] [] | +cppi | [] [] [] [] | cpplib | [] [] [] [] [] | cryptsetup | [] [] [] | datamash | [] [] [] | @@ -920,14 +900,14 @@ dink | | direvent | [] [] | doodle | [] [] | -dos2unix | [] [] [] | -dos2unix-man | [] [] | +dos2unix | [] [] [] [] | +dos2unix-man | [] [] [] | e2fsprogs | [] [] [] [] | enscript | [] [] [] [] | exif | [] [] [] [] [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] | -flex | [] [] [] | +flex | [] [] [] [] | freedink | [] [] | fusionforge | | gas | [] | @@ -938,11 +918,10 @@ gettext-examples | [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] | -gip | [] [] [] [] | gjay | [] [] | glunarclock | [] [] [] [] | gnubiff | [] [] | -gnubik | [] [] [] | +gnubik | [] [] [] [] | gnucash | () () () () [] | gnuchess | [] [] | gnulib | [] [] [] [] | @@ -951,7 +930,6 @@ gold | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] [] | -gpsdrive | [] [] [] | gramadoir | [] [] [] | grep | [] [] [] [] [] | grub | [] [] [] [] | @@ -964,12 +942,11 @@ gstreamer | [] [] [] [] [] | gtick | [] [] [] | gtkam | [] [] [] [] | -gtkorphan | [] [] [] | gtkspell | [] [] [] [] [] [] [] [] | guix | [] | guix-packages | | -gutenprint | [] [] [] | -hello | [] [] [] [] [] | +gutenprint | [] [] [] [] | +hello | [] [] [] [] [] [] | help2man | [] [] [] | help2man-texi | [] | hylafax | [] | @@ -991,7 +968,6 @@ libexif | [] () | libextractor | [] [] | libgnutls | [] [] [] [] | -libgpg-error | [] [] [] [] | libgphoto2 | [] [] | libgphoto2_port | [] [] [] [] | libgsasl | [] [] [] [] | @@ -1005,7 +981,7 @@ m4 | [] [] [] | mailfromd | [] [] | mailutils | [] | -make | [] [] [] | +make | [] [] [] [] | man-db | [] [] | man-db-manpages | [] | midi-instruments | [] [] [] [] [] [] | @@ -1013,13 +989,13 @@ mkisofs | [] [] [] | myserver | [] | nano | [] [] [] [] | -opcodes | [] [] | +opcodes | [] [] [] | parted | [] [] [] [] [] | pies | [] [] | popt | [] [] [] [] [] [] [] | procps-ng | [] [] | procps-ng-man | [] | -psmisc | [] [] [] | +psmisc | [] [] [] [] | pspp | [] [] [] | pushover | [] | pwdutils | [] [] | @@ -1032,14 +1008,14 @@ sarg | | sed | [] [] [] [] [] | sharutils | [] [] [] | -shishi | [] | -skribilo | | +shishi | [] [] | +skribilo | [] | solfege | [] [] [] | solfege-manual | [] | -spotmachine | [] [] | +spotmachine | [] [] [] | sudo | [] [] [] [] | sudoers | [] [] [] | -sysstat | [] [] [] [] | +sysstat | [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] | @@ -1054,17 +1030,17 @@ vmm | | vorbis-tools | [] [] | wastesedge | | -wcd | [] [] | +wcd | [] [] [] | wcd-man | [] | -wdiff | [] [] [] | -wget | [] [] [] | +wdiff | [] [] [] [] | +wget | [] [] [] | wyslij-po | [] [] | xboard | [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | +---------------------------------------------------+ sv sw ta te tg th tr uk ur vi wa wo zh_CN zh_HK - 87 1 4 3 0 14 52 114 1 130 7 1 88 7 + 91 1 4 3 0 13 50 113 1 126 7 1 95 7 @end group @group @@ -1074,23 +1050,23 @@ aegis | | 9 anubis | | 19 aspell | | 28 -bash | [] | 25 +bash | [] | 21 bfd | | 9 binutils | | 12 bison | [] | 18 bison-runtime | [] | 38 buzztrax | | 8 -ccd2cue | | 7 -ccide | | 16 +ccd2cue | | 8 +ccide | | 17 cflow | | 15 clisp | | 10 coreutils | | 20 -cpio | [] | 21 -cppi | | 16 +cpio | | 20 +cppi | | 17 cpplib | [] | 19 cryptsetup | | 13 datamash | | 11 -denemo | | 3 +denemo | | 4 dfarc | | 16 dialog | [] | 42 dico | | 6 @@ -1098,14 +1074,14 @@ dink | | 9 direvent | | 10 doodle | | 12 -dos2unix | [] | 17 -dos2unix-man | | 8 +dos2unix | [] | 18 +dos2unix-man | | 9 e2fsprogs | | 14 enscript | | 21 exif | | 26 fetchmail | | 19 findutils | | 28 -flex | [] | 18 +flex | [] | 19 freedink | | 23 fusionforge | | 3 gas | | 5 @@ -1116,12 +1092,11 @@ gettext-examples | [] | 40 gettext-runtime | [] | 34 gettext-tools | [] | 24 -gip | [] | 28 gjay | | 8 glunarclock | [] | 27 gnubiff | | 9 -gnubik | | 18 -gnucash | () | 6 +gnubik | | 19 +gnucash | () | 7 gnuchess | | 10 gnulib | | 23 gnunet | | 1 @@ -1129,25 +1104,23 @@ gold | | 7 gphoto2 | [] | 19 gprof | | 21 -gpsdrive | | 13 gramadoir | | 14 -grep | [] | 30 +grep | [] | 31 grub | | 21 gsasl | [] | 19 gss | | 17 -gst-plugins-bad | | 13 +gst-plugins-bad | | 14 gst-plugins-base | | 27 gst-plugins-good | | 32 gst-plugins-ugly | | 34 gstreamer | [] | 31 gtick | | 19 gtkam | | 24 -gtkorphan | | 20 gtkspell | [] | 48 -guix | | 5 +guix | | 3 guix-packages | | 0 -gutenprint | | 13 -hello | [] | 29 +gutenprint | | 15 +hello | [] | 30 help2man | | 18 help2man-texi | | 5 hylafax | | 5 @@ -1161,7 +1134,7 @@ iso_639_5 | | 2 jwhois | [] | 20 kbd | | 16 -klavaro | | 29 +klavaro | | 30 latrine | | 7 ld | [] | 15 leafpad | [] | 40 @@ -1169,21 +1142,20 @@ libexif | | 9 libextractor | | 5 libgnutls | | 13 -libgpg-error | | 15 libgphoto2 | | 9 libgphoto2_port | [] | 19 libgsasl | | 18 libiconv | [] | 29 libidn | | 17 liferea | | 29 -lilypond | | 10 +lilypond | | 11 lordsawar | | 3 lprng | | 3 lynx | | 19 m4 | [] | 22 mailfromd | | 4 mailutils | | 6 -make | | 18 +make | | 19 man-db | | 14 man-db-manpages | | 9 midi-instruments | [] | 43 @@ -1191,17 +1163,17 @@ mkisofs | | 13 myserver | | 9 nano | [] | 29 -opcodes | | 11 +opcodes | | 12 parted | [] | 21 pies | | 4 popt | [] | 36 procps-ng | | 5 procps-ng-man | | 4 -psmisc | [] | 21 +psmisc | [] | 22 pspp | | 13 pushover | | 6 pwdutils | | 8 -pyspread | | 5 +pyspread | | 6 radius | | 9 recode | | 31 recutils | | 9 @@ -1210,18 +1182,18 @@ sarg | | 4 sed | [] | 34 sharutils | | 12 -shishi | | 6 -skribilo | | 3 +shishi | | 7 +skribilo | | 4 solfege | | 19 solfege-manual | | 9 -spotmachine | | 9 -sudo | | 23 +spotmachine | | 10 +sudo | | 24 sudoers | | 20 -sysstat | | 21 +sysstat | | 22 tar | [] | 30 texinfo | | 17 texinfo_document | | 11 -tigervnc | | 10 +tigervnc | | 11 tin | [] | 7 tin-man | | 1 tracgoogleappsa... | [] | 22 @@ -1232,16 +1204,16 @@ vmm | | 3 vorbis-tools | | 13 wastesedge | | 2 -wcd | | 7 +wcd | | 8 wcd-man | | 3 -wdiff | [] | 22 -wget | | 22 +wdiff | [] | 23 +wget | | 19 wyslij-po | | 14 -xboard | | 8 +xboard | | 9 xdg-user-dirs | [] | 68 xkeyboard-config | [] | 27 +-------+ 90 teams zh_TW - 170 domains 44 2805 + 166 domains 42 2748 @end group @end example diff -Nru gettext-0.19.6/gettext-runtime/gnulib-lib/c-ctype.c gettext-0.19.7/gettext-runtime/gnulib-lib/c-ctype.c --- gettext-0.19.6/gettext-runtime/gnulib-lib/c-ctype.c 2015-09-11 03:03:26.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/gnulib-lib/c-ctype.c 2015-12-27 23:08:00.000000000 +0000 @@ -1,395 +1,3 @@ -/* Character handling in C locale. - - Copyright 2000-2003, 2006, 2009-2015 Free Software Foundation, Inc. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3 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 General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, see . */ - #include - -/* Specification. */ -#define NO_C_CTYPE_MACROS +#define C_CTYPE_INLINE _GL_EXTERN_INLINE #include "c-ctype.h" - -/* The function isascii is not locale dependent. Its use in EBCDIC is - questionable. */ -bool -c_isascii (int c) -{ - return (c >= 0x00 && c <= 0x7f); -} - -bool -c_isalnum (int c) -{ -#if C_CTYPE_CONSECUTIVE_DIGITS \ - && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII - return ((c >= '0' && c <= '9') - || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z')); -#else - return ((c >= '0' && c <= '9') - || (c >= 'A' && c <= 'Z') - || (c >= 'a' && c <= 'z')); -#endif -#else - switch (c) - { - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isalpha (int c) -{ -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII - return ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'); -#else - return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')); -#endif -#else - switch (c) - { - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isblank (int c) -{ - return (c == ' ' || c == '\t'); -} - -bool -c_iscntrl (int c) -{ -#if C_CTYPE_ASCII - return ((c & ~0x1f) == 0 || c == 0x7f); -#else - switch (c) - { - case ' ': case '!': case '"': case '#': case '$': case '%': - case '&': case '\'': case '(': case ')': case '*': case '+': - case ',': case '-': case '.': case '/': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case ':': case ';': case '<': case '=': case '>': case '?': - case '@': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case '[': case '\\': case ']': case '^': case '_': case '`': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - case '{': case '|': case '}': case '~': - return 0; - default: - return 1; - } -#endif -} - -bool -c_isdigit (int c) -{ -#if C_CTYPE_CONSECUTIVE_DIGITS - return (c >= '0' && c <= '9'); -#else - switch (c) - { - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - return 1; - default: - return 0; - } -#endif -} - -bool -c_islower (int c) -{ -#if C_CTYPE_CONSECUTIVE_LOWERCASE - return (c >= 'a' && c <= 'z'); -#else - switch (c) - { - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isgraph (int c) -{ -#if C_CTYPE_ASCII - return (c >= '!' && c <= '~'); -#else - switch (c) - { - case '!': case '"': case '#': case '$': case '%': case '&': - case '\'': case '(': case ')': case '*': case '+': case ',': - case '-': case '.': case '/': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case ':': case ';': case '<': case '=': case '>': case '?': - case '@': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case '[': case '\\': case ']': case '^': case '_': case '`': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - case '{': case '|': case '}': case '~': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isprint (int c) -{ -#if C_CTYPE_ASCII - return (c >= ' ' && c <= '~'); -#else - switch (c) - { - case ' ': case '!': case '"': case '#': case '$': case '%': - case '&': case '\'': case '(': case ')': case '*': case '+': - case ',': case '-': case '.': case '/': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case ':': case ';': case '<': case '=': case '>': case '?': - case '@': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case '[': case '\\': case ']': case '^': case '_': case '`': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - case '{': case '|': case '}': case '~': - return 1; - default: - return 0; - } -#endif -} - -bool -c_ispunct (int c) -{ -#if C_CTYPE_ASCII - return ((c >= '!' && c <= '~') - && !((c >= '0' && c <= '9') - || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'))); -#else - switch (c) - { - case '!': case '"': case '#': case '$': case '%': case '&': - case '\'': case '(': case ')': case '*': case '+': case ',': - case '-': case '.': case '/': - case ':': case ';': case '<': case '=': case '>': case '?': - case '@': - case '[': case '\\': case ']': case '^': case '_': case '`': - case '{': case '|': case '}': case '~': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isspace (int c) -{ - return (c == ' ' || c == '\t' - || c == '\n' || c == '\v' || c == '\f' || c == '\r'); -} - -bool -c_isupper (int c) -{ -#if C_CTYPE_CONSECUTIVE_UPPERCASE - return (c >= 'A' && c <= 'Z'); -#else - switch (c) - { - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isxdigit (int c) -{ -#if C_CTYPE_CONSECUTIVE_DIGITS \ - && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII - return ((c >= '0' && c <= '9') - || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'F')); -#else - return ((c >= '0' && c <= '9') - || (c >= 'A' && c <= 'F') - || (c >= 'a' && c <= 'f')); -#endif -#else - switch (c) - { - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - return 1; - default: - return 0; - } -#endif -} - -int -c_tolower (int c) -{ -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE - return (c >= 'A' && c <= 'Z' ? c - 'A' + 'a' : c); -#else - switch (c) - { - case 'A': return 'a'; - case 'B': return 'b'; - case 'C': return 'c'; - case 'D': return 'd'; - case 'E': return 'e'; - case 'F': return 'f'; - case 'G': return 'g'; - case 'H': return 'h'; - case 'I': return 'i'; - case 'J': return 'j'; - case 'K': return 'k'; - case 'L': return 'l'; - case 'M': return 'm'; - case 'N': return 'n'; - case 'O': return 'o'; - case 'P': return 'p'; - case 'Q': return 'q'; - case 'R': return 'r'; - case 'S': return 's'; - case 'T': return 't'; - case 'U': return 'u'; - case 'V': return 'v'; - case 'W': return 'w'; - case 'X': return 'x'; - case 'Y': return 'y'; - case 'Z': return 'z'; - default: return c; - } -#endif -} - -int -c_toupper (int c) -{ -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE - return (c >= 'a' && c <= 'z' ? c - 'a' + 'A' : c); -#else - switch (c) - { - case 'a': return 'A'; - case 'b': return 'B'; - case 'c': return 'C'; - case 'd': return 'D'; - case 'e': return 'E'; - case 'f': return 'F'; - case 'g': return 'G'; - case 'h': return 'H'; - case 'i': return 'I'; - case 'j': return 'J'; - case 'k': return 'K'; - case 'l': return 'L'; - case 'm': return 'M'; - case 'n': return 'N'; - case 'o': return 'O'; - case 'p': return 'P'; - case 'q': return 'Q'; - case 'r': return 'R'; - case 's': return 'S'; - case 't': return 'T'; - case 'u': return 'U'; - case 'v': return 'V'; - case 'w': return 'W'; - case 'x': return 'X'; - case 'y': return 'Y'; - case 'z': return 'Z'; - default: return c; - } -#endif -} diff -Nru gettext-0.19.6/gettext-runtime/gnulib-lib/c-ctype.h gettext-0.19.7/gettext-runtime/gnulib-lib/c-ctype.h --- gettext-0.19.6/gettext-runtime/gnulib-lib/c-ctype.h 2015-09-11 03:03:26.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/gnulib-lib/c-ctype.h 2015-12-27 23:08:00.000000000 +0000 @@ -25,6 +25,13 @@ #include +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif +_GL_INLINE_HEADER_BEGIN +#ifndef C_CTYPE_INLINE +# define C_CTYPE_INLINE _GL_INLINE +#endif #ifdef __cplusplus extern "C" { @@ -39,38 +46,6 @@ characters. */ -/* Check whether the ASCII optimizations apply. */ - -/* ANSI C89 (and ISO C99 5.2.1.3 too) already guarantees that - '0', '1', ..., '9' have consecutive integer values. */ -#define C_CTYPE_CONSECUTIVE_DIGITS 1 - -#if ('A' <= 'Z') \ - && ('A' + 1 == 'B') && ('B' + 1 == 'C') && ('C' + 1 == 'D') \ - && ('D' + 1 == 'E') && ('E' + 1 == 'F') && ('F' + 1 == 'G') \ - && ('G' + 1 == 'H') && ('H' + 1 == 'I') && ('I' + 1 == 'J') \ - && ('J' + 1 == 'K') && ('K' + 1 == 'L') && ('L' + 1 == 'M') \ - && ('M' + 1 == 'N') && ('N' + 1 == 'O') && ('O' + 1 == 'P') \ - && ('P' + 1 == 'Q') && ('Q' + 1 == 'R') && ('R' + 1 == 'S') \ - && ('S' + 1 == 'T') && ('T' + 1 == 'U') && ('U' + 1 == 'V') \ - && ('V' + 1 == 'W') && ('W' + 1 == 'X') && ('X' + 1 == 'Y') \ - && ('Y' + 1 == 'Z') -#define C_CTYPE_CONSECUTIVE_UPPERCASE 1 -#endif - -#if ('a' <= 'z') \ - && ('a' + 1 == 'b') && ('b' + 1 == 'c') && ('c' + 1 == 'd') \ - && ('d' + 1 == 'e') && ('e' + 1 == 'f') && ('f' + 1 == 'g') \ - && ('g' + 1 == 'h') && ('h' + 1 == 'i') && ('i' + 1 == 'j') \ - && ('j' + 1 == 'k') && ('k' + 1 == 'l') && ('l' + 1 == 'm') \ - && ('m' + 1 == 'n') && ('n' + 1 == 'o') && ('o' + 1 == 'p') \ - && ('p' + 1 == 'q') && ('q' + 1 == 'r') && ('r' + 1 == 's') \ - && ('s' + 1 == 't') && ('t' + 1 == 'u') && ('u' + 1 == 'v') \ - && ('v' + 1 == 'w') && ('w' + 1 == 'x') && ('x' + 1 == 'y') \ - && ('y' + 1 == 'z') -#define C_CTYPE_CONSECUTIVE_LOWERCASE 1 -#endif - #if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ @@ -96,11 +71,84 @@ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126) /* The character set is ASCII or one of its variants or extensions, not EBCDIC. Testing the value of '\n' and '\r' is not relevant. */ -#define C_CTYPE_ASCII 1 +# define C_CTYPE_ASCII 1 +#elif ! (' ' == '\x40' && '0' == '\xf0' \ + && 'A' == '\xc1' && 'J' == '\xd1' && 'S' == '\xe2' \ + && 'a' == '\x81' && 'j' == '\x91' && 's' == '\xa2') +# error "Only ASCII and EBCDIC are supported" #endif +#if 'A' < 0 +# error "EBCDIC and char is signed -- not supported" +#endif + +/* Cases for control characters. */ + +#define _C_CTYPE_CNTRL \ + case '\a': case '\b': case '\f': case '\n': \ + case '\r': case '\t': case '\v': \ + _C_CTYPE_OTHER_CNTRL + +/* ASCII control characters other than those with \-letter escapes. */ + +#if C_CTYPE_ASCII +# define _C_CTYPE_OTHER_CNTRL \ + case '\x00': case '\x01': case '\x02': case '\x03': \ + case '\x04': case '\x05': case '\x06': case '\x0e': \ + case '\x0f': case '\x10': case '\x11': case '\x12': \ + case '\x13': case '\x14': case '\x15': case '\x16': \ + case '\x17': case '\x18': case '\x19': case '\x1a': \ + case '\x1b': case '\x1c': case '\x1d': case '\x1e': \ + case '\x1f': case '\x7f' +#else + /* Use EBCDIC code page 1047's assignments for ASCII control chars; + assume all EBCDIC code pages agree about these assignments. */ +# define _C_CTYPE_OTHER_CNTRL \ + case '\x00': case '\x01': case '\x02': case '\x03': \ + case '\x07': case '\x0e': case '\x0f': case '\x10': \ + case '\x11': case '\x12': case '\x13': case '\x18': \ + case '\x19': case '\x1c': case '\x1d': case '\x1e': \ + case '\x1f': case '\x26': case '\x27': case '\x2d': \ + case '\x2e': case '\x32': case '\x37': case '\x3c': \ + case '\x3d': case '\x3f' +#endif + +/* Cases for lowercase hex letters, and lowercase letters, all offset by N. */ + +#define _C_CTYPE_LOWER_A_THRU_F_N(n) \ + case 'a' + (n): case 'b' + (n): case 'c' + (n): case 'd' + (n): \ + case 'e' + (n): case 'f' + (n) +#define _C_CTYPE_LOWER_N(n) \ + _C_CTYPE_LOWER_A_THRU_F_N(n): \ + case 'g' + (n): case 'h' + (n): case 'i' + (n): case 'j' + (n): \ + case 'k' + (n): case 'l' + (n): case 'm' + (n): case 'n' + (n): \ + case 'o' + (n): case 'p' + (n): case 'q' + (n): case 'r' + (n): \ + case 's' + (n): case 't' + (n): case 'u' + (n): case 'v' + (n): \ + case 'w' + (n): case 'x' + (n): case 'y' + (n): case 'z' + (n) + +/* Cases for hex letters, digits, lower, punct, and upper. */ + +#define _C_CTYPE_A_THRU_F \ + _C_CTYPE_LOWER_A_THRU_F_N (0): \ + _C_CTYPE_LOWER_A_THRU_F_N ('A' - 'a') +#define _C_CTYPE_DIGIT \ + case '0': case '1': case '2': case '3': \ + case '4': case '5': case '6': case '7': \ + case '8': case '9' +#define _C_CTYPE_LOWER _C_CTYPE_LOWER_N (0) +#define _C_CTYPE_PUNCT \ + case '!': case '"': case '#': case '$': \ + case '%': case '&': case '\'': case '(': \ + case ')': case '*': case '+': case ',': \ + case '-': case '.': case '/': case ':': \ + case ';': case '<': case '=': case '>': \ + case '?': case '@': case '[': case '\\': \ + case ']': case '^': case '_': case '`': \ + case '{': case '|': case '}': case '~' +#define _C_CTYPE_UPPER _C_CTYPE_LOWER_N ('A' - 'a') + -/* Function declarations. */ +/* Function definitions. */ /* Unlike the functions in , which require an argument in the range of the 'unsigned char' type, the functions here operate on values that are @@ -117,179 +165,202 @@ if (c_isalpha (*s)) ... */ -extern bool c_isascii (int c) _GL_ATTRIBUTE_CONST; /* not locale dependent */ - -extern bool c_isalnum (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isalpha (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isblank (int c) _GL_ATTRIBUTE_CONST; -extern bool c_iscntrl (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isdigit (int c) _GL_ATTRIBUTE_CONST; -extern bool c_islower (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isgraph (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isprint (int c) _GL_ATTRIBUTE_CONST; -extern bool c_ispunct (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isspace (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isupper (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isxdigit (int c) _GL_ATTRIBUTE_CONST; - -extern int c_tolower (int c) _GL_ATTRIBUTE_CONST; -extern int c_toupper (int c) _GL_ATTRIBUTE_CONST; - - -#if (defined __GNUC__ && !defined __STRICT_ANSI__ && defined __OPTIMIZE__ \ - && !defined __OPTIMIZE_SIZE__ && !defined NO_C_CTYPE_MACROS) - -/* ASCII optimizations. */ - -#undef c_isascii -#define c_isascii(c) \ - ({ int __c = (c); \ - (__c >= 0x00 && __c <= 0x7f); \ - }) +C_CTYPE_INLINE bool +c_isalnum (int c) +{ + switch (c) + { + _C_CTYPE_DIGIT: + _C_CTYPE_LOWER: + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_DIGITS \ - && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII -#undef c_isalnum -#define c_isalnum(c) \ - ({ int __c = (c); \ - ((__c >= '0' && __c <= '9') \ - || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z')); \ - }) -#else -#undef c_isalnum -#define c_isalnum(c) \ - ({ int __c = (c); \ - ((__c >= '0' && __c <= '9') \ - || (__c >= 'A' && __c <= 'Z') \ - || (__c >= 'a' && __c <= 'z')); \ - }) -#endif -#endif +C_CTYPE_INLINE bool +c_isalpha (int c) +{ + switch (c) + { + _C_CTYPE_LOWER: + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII -#undef c_isalpha -#define c_isalpha(c) \ - ({ int __c = (c); \ - ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z'); \ - }) -#else -#undef c_isalpha -#define c_isalpha(c) \ - ({ int __c = (c); \ - ((__c >= 'A' && __c <= 'Z') || (__c >= 'a' && __c <= 'z')); \ - }) -#endif -#endif +/* The function isascii is not locale dependent. + Its use in EBCDIC is questionable. */ +C_CTYPE_INLINE bool +c_isascii (int c) +{ + switch (c) + { + case ' ': + _C_CTYPE_CNTRL: + _C_CTYPE_DIGIT: + _C_CTYPE_LOWER: + _C_CTYPE_PUNCT: + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#undef c_isblank -#define c_isblank(c) \ - ({ int __c = (c); \ - (__c == ' ' || __c == '\t'); \ - }) +C_CTYPE_INLINE bool +c_isblank (int c) +{ + return c == ' ' || c == '\t'; +} -#if C_CTYPE_ASCII -#undef c_iscntrl -#define c_iscntrl(c) \ - ({ int __c = (c); \ - ((__c & ~0x1f) == 0 || __c == 0x7f); \ - }) -#endif +C_CTYPE_INLINE bool +c_iscntrl (int c) +{ + switch (c) + { + _C_CTYPE_CNTRL: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_DIGITS -#undef c_isdigit -#define c_isdigit(c) \ - ({ int __c = (c); \ - (__c >= '0' && __c <= '9'); \ - }) -#endif +C_CTYPE_INLINE bool +c_isdigit (int c) +{ + switch (c) + { + _C_CTYPE_DIGIT: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_LOWERCASE -#undef c_islower -#define c_islower(c) \ - ({ int __c = (c); \ - (__c >= 'a' && __c <= 'z'); \ - }) -#endif +C_CTYPE_INLINE bool +c_isgraph (int c) +{ + switch (c) + { + _C_CTYPE_DIGIT: + _C_CTYPE_LOWER: + _C_CTYPE_PUNCT: + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#if C_CTYPE_ASCII -#undef c_isgraph -#define c_isgraph(c) \ - ({ int __c = (c); \ - (__c >= '!' && __c <= '~'); \ - }) -#endif +C_CTYPE_INLINE bool +c_islower (int c) +{ + switch (c) + { + _C_CTYPE_LOWER: + return true; + default: + return false; + } +} -#if C_CTYPE_ASCII -#undef c_isprint -#define c_isprint(c) \ - ({ int __c = (c); \ - (__c >= ' ' && __c <= '~'); \ - }) -#endif +C_CTYPE_INLINE bool +c_isprint (int c) +{ + switch (c) + { + case ' ': + _C_CTYPE_DIGIT: + _C_CTYPE_LOWER: + _C_CTYPE_PUNCT: + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#if C_CTYPE_ASCII -#undef c_ispunct -#define c_ispunct(c) \ - ({ int _c = (c); \ - (c_isgraph (_c) && ! c_isalnum (_c)); \ - }) -#endif +C_CTYPE_INLINE bool +c_ispunct (int c) +{ + switch (c) + { + _C_CTYPE_PUNCT: + return true; + default: + return false; + } +} -#undef c_isspace -#define c_isspace(c) \ - ({ int __c = (c); \ - (__c == ' ' || __c == '\t' \ - || __c == '\n' || __c == '\v' || __c == '\f' || __c == '\r'); \ - }) - -#if C_CTYPE_CONSECUTIVE_UPPERCASE -#undef c_isupper -#define c_isupper(c) \ - ({ int __c = (c); \ - (__c >= 'A' && __c <= 'Z'); \ - }) -#endif +C_CTYPE_INLINE bool +c_isspace (int c) +{ + switch (c) + { + case ' ': case '\t': case '\n': case '\v': case '\f': case '\r': + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_DIGITS \ - && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII -#undef c_isxdigit -#define c_isxdigit(c) \ - ({ int __c = (c); \ - ((__c >= '0' && __c <= '9') \ - || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'F')); \ - }) -#else -#undef c_isxdigit -#define c_isxdigit(c) \ - ({ int __c = (c); \ - ((__c >= '0' && __c <= '9') \ - || (__c >= 'A' && __c <= 'F') \ - || (__c >= 'a' && __c <= 'f')); \ - }) -#endif -#endif +C_CTYPE_INLINE bool +c_isupper (int c) +{ + switch (c) + { + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#undef c_tolower -#define c_tolower(c) \ - ({ int __c = (c); \ - (__c >= 'A' && __c <= 'Z' ? __c - 'A' + 'a' : __c); \ - }) -#undef c_toupper -#define c_toupper(c) \ - ({ int __c = (c); \ - (__c >= 'a' && __c <= 'z' ? __c - 'a' + 'A' : __c); \ - }) -#endif +C_CTYPE_INLINE bool +c_isxdigit (int c) +{ + switch (c) + { + _C_CTYPE_DIGIT: + _C_CTYPE_A_THRU_F: + return true; + default: + return false; + } +} -#endif /* optimizing for speed */ +C_CTYPE_INLINE int +c_tolower (int c) +{ + switch (c) + { + _C_CTYPE_UPPER: + return c - 'A' + 'a'; + default: + return c; + } +} +C_CTYPE_INLINE int +c_toupper (int c) +{ + switch (c) + { + _C_CTYPE_LOWER: + return c - 'a' + 'A'; + default: + return c; + } +} #ifdef __cplusplus } #endif +_GL_INLINE_HEADER_END + #endif /* C_CTYPE_H */ diff -Nru gettext-0.19.6/gettext-runtime/gnulib-lib/intprops.h gettext-0.19.7/gettext-runtime/gnulib-lib/intprops.h --- gettext-0.19.6/gettext-runtime/gnulib-lib/intprops.h 2015-09-11 03:03:26.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/gnulib-lib/intprops.h 2015-12-27 23:08:01.000000000 +0000 @@ -22,8 +22,7 @@ #include -/* Return an integer value, converted to the same type as the integer - expression E after integer type promotion. V is the unconverted value. */ +/* Return a value with the common real type of E and V and the value of V. */ #define _GL_INT_CONVERT(e, v) (0 * (e) + (v)) /* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see @@ -48,12 +47,12 @@ /* True if the signed integer expression E uses two's complement. */ #define _GL_INT_TWOS_COMPLEMENT(e) (~ _GL_INT_CONVERT (e, 0) == -1) -/* True if the arithmetic type T is signed. */ +/* True if the real type T is signed. */ #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) -/* Return 1 if the integer expression E, after integer promotion, has - a signed type. */ -#define _GL_INT_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) +/* Return 1 if the real expression E, after promotion, has a + signed or floating type. */ +#define EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) /* Minimum and maximum values for integer types and expressions. These @@ -76,11 +75,11 @@ /* The maximum and minimum values for the type of the expression E, after integer promotion. E should not have side effects. */ #define _GL_INT_MINIMUM(e) \ - (_GL_INT_SIGNED (e) \ + (EXPR_SIGNED (e) \ ? - _GL_INT_TWOS_COMPLEMENT (e) - _GL_SIGNED_INT_MAXIMUM (e) \ : _GL_INT_CONVERT (e, 0)) #define _GL_INT_MAXIMUM(e) \ - (_GL_INT_SIGNED (e) \ + (EXPR_SIGNED (e) \ ? _GL_SIGNED_INT_MAXIMUM (e) \ : _GL_INT_NEGATE_CONVERT (e, 1)) #define _GL_SIGNED_INT_MAXIMUM(e) \ @@ -263,22 +262,29 @@ : (a) % - (b)) \ == 0) - -/* Integer overflow checks. +/* Check for integer overflow, and report low order bits of answer. The INT__OVERFLOW macros return 1 if the corresponding C operators might not yield numerically correct answers due to arithmetic overflow. - They work correctly on all known practical hosts, and do not rely + The INT__WRAPV macros also store the low-order bits of the answer. + These macros work correctly on all known practical hosts, and do not rely on undefined behavior due to signed arithmetic overflow. - Example usage: + Example usage, assuming A and B are long int: - long int i = ...; - long int j = ...; - if (INT_MULTIPLY_OVERFLOW (i, j)) - printf ("multiply would overflow"); + if (INT_MULTIPLY_OVERFLOW (a, b)) + printf ("result would overflow\n"); else - printf ("product is %ld", i * j); + printf ("result is %ld (no overflow)\n", a * b); + + Example usage with WRAPV flavor: + + long int result; + bool overflow = INT_MULTIPLY_WRAPV (a, b, &result); + printf ("result is %ld (%s)\n", result, + overflow ? "after overflow" : "no overflow"); + + Restrictions on these macros: These macros do not check for all possible numerical problems or undefined or unspecified behavior: they do not check for division @@ -287,6 +293,9 @@ These macros may evaluate their arguments zero or multiple times, so the arguments should not have side effects. + The WRAPV macros are not constant expressions. They support only + +, binary -, and *. The result type must be signed. + These macros are tuned for their last argument being a constant. Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B, @@ -317,4 +326,104 @@ _GL_INT_MINIMUM (0 * (b) + (a)), \ _GL_INT_MAXIMUM (0 * (b) + (a))) +/* Compute A + B, A - B, A * B, respectively, storing the result into *R. + Return 1 if the result overflows. See above for restrictions. */ +#define INT_ADD_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, +, __builtin_add_overflow, INT_ADD_OVERFLOW) +#define INT_SUBTRACT_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, -, __builtin_sub_overflow, INT_SUBTRACT_OVERFLOW) +#define INT_MULTIPLY_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, *, __builtin_mul_overflow, INT_MULTIPLY_OVERFLOW) + +#ifndef __has_builtin +# define __has_builtin(x) 0 +#endif + +/* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 + https://llvm.org/bugs/show_bug.cgi?id=25390 + For now, assume all versions of GCC-like compilers generate bogus + warnings for _Generic. This matters only for older compilers that + lack __builtin_add_overflow. */ +#if __GNUC__ +# define _GL__GENERIC_BOGUS 1 +#else +# define _GL__GENERIC_BOGUS 0 +#endif + +/* Store A B into *R, where OP specifies the operation. + BUILTIN is the builtin operation, and OVERFLOW the overflow predicate. + See above for restrictions. */ +#if 5 <= __GNUC__ || __has_builtin (__builtin_add_overflow) +# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) builtin (a, b, r) +#elif 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS +# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) \ + (_Generic \ + (*(r), \ + signed char: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned char, \ + signed char, SCHAR_MIN, SCHAR_MAX), \ + short int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned short int, \ + short int, SHRT_MIN, SHRT_MAX), \ + int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX), \ + long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX), \ + long long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX))) +#else +# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) \ + (sizeof *(r) == sizeof (signed char) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned char, \ + signed char, SCHAR_MIN, SCHAR_MAX) \ + : sizeof *(r) == sizeof (short int) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned short int, \ + short int, SHRT_MIN, SHRT_MAX) \ + : sizeof *(r) == sizeof (int) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX) \ + : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow)) +# ifdef LLONG_MAX +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + (sizeof *(r) == sizeof (long int) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX)) +# else +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX)) +# endif +#endif + +/* Store the low-order bits of A B into *R, where the operation + is given by OP. Use the unsigned type UT for calculation to avoid + overflow problems. *R's type is T, with extremal values TMIN and + TMAX. T must be a signed integer type. */ +#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \ + (sizeof ((a) op (b)) < sizeof (t) \ + ? _GL_INT_OP_CALC1 ((t) (a), (t) (b), r, op, overflow, ut, t, tmin, tmax) \ + : _GL_INT_OP_CALC1 (a, b, r, op, overflow, ut, t, tmin, tmax)) +#define _GL_INT_OP_CALC1(a, b, r, op, overflow, ut, t, tmin, tmax) \ + ((overflow (a, b) \ + || (EXPR_SIGNED ((a) op (b)) && ((a) op (b)) < (tmin)) \ + || (tmax) < ((a) op (b))) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t, tmin, tmax), 1) \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t, tmin, tmax), 0)) + +/* Return A B, where the operation is given by OP. Use the + unsigned type UT for calculation to avoid overflow problems. + Convert the result to type T without overflow by subtracting TMIN + from large values before converting, and adding it afterwards. + Compilers can optimize all the operations except OP. */ +#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t, tmin, tmax) \ + (((ut) (a) op (ut) (b)) <= (tmax) \ + ? (t) ((ut) (a) op (ut) (b)) \ + : ((t) (((ut) (a) op (ut) (b)) - (tmin)) + (tmin))) + #endif /* _GL_INTPROPS_H */ diff -Nru gettext-0.19.6/gettext-runtime/gnulib-lib/localename.c gettext-0.19.7/gettext-runtime/gnulib-lib/localename.c --- gettext-0.19.6/gettext-runtime/gnulib-lib/localename.c 2015-09-11 03:03:26.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/gnulib-lib/localename.c 2015-12-27 23:08:01.000000000 +0000 @@ -38,7 +38,9 @@ # if defined __APPLE__ && defined __MACH__ # include # endif -# include +# if __GLIBC__ >= 2 && !defined __UCLIBC__ +# include +# endif # if !defined IN_LIBINTL # include "glthread/lock.h" # endif diff -Nru gettext-0.19.6/gettext-runtime/gnulib-lib/Makefile.am gettext-0.19.7/gettext-runtime/gnulib-lib/Makefile.am --- gettext-0.19.6/gettext-runtime/gnulib-lib/Makefile.am 2015-09-11 03:03:30.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/gnulib-lib/Makefile.am 2015-12-27 23:08:04.000000000 +0000 @@ -21,7 +21,7 @@ # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. -# Reproduce by: gnulib-tool --import --dir=gettext-runtime --local-dir=gnulib-local --lib=libgrt --source-base=gnulib-lib --m4-base=gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl ansi-c++-opt atexit basename closeout csharpcomp-script error getopt-gnu gettext-h gettext-runtime-misc havelib java javacomp-script memmove progname propername relocatable-prog setlocale sigpipe stdbool stdio stdlib strtoul unlocked-io xalloc +# Reproduce by: gnulib-tool --import --local-dir=gnulib-local --lib=libgrt --source-base=gnulib-lib --m4-base=gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl ansi-c++-opt atexit basename closeout csharpcomp-script error getopt-gnu gettext-h gettext-runtime-misc havelib java javacomp-script memmove progname propername relocatable-prog setlocale sigpipe stdbool stdio stdlib strtoul unlocked-io xalloc AUTOMAKE_OPTIONS = 1.9.6 gnits subdir-objects diff -Nru gettext-0.19.6/gettext-runtime/gnulib-lib/Makefile.in gettext-0.19.7/gettext-runtime/gnulib-lib/Makefile.in --- gettext-0.19.6/gettext-runtime/gnulib-lib/Makefile.in 2015-09-11 03:04:53.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/gnulib-lib/Makefile.in 2015-12-27 23:09:24.000000000 +0000 @@ -35,7 +35,7 @@ # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. -# Reproduce by: gnulib-tool --import --dir=gettext-runtime --local-dir=gnulib-local --lib=libgrt --source-base=gnulib-lib --m4-base=gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl ansi-c++-opt atexit basename closeout csharpcomp-script error getopt-gnu gettext-h gettext-runtime-misc havelib java javacomp-script memmove progname propername relocatable-prog setlocale sigpipe stdbool stdio stdlib strtoul unlocked-io xalloc +# Reproduce by: gnulib-tool --import --local-dir=gnulib-local --lib=libgrt --source-base=gnulib-lib --m4-base=gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl ansi-c++-opt atexit basename closeout csharpcomp-script error getopt-gnu gettext-h gettext-runtime-misc havelib java javacomp-script memmove progname propername relocatable-prog setlocale sigpipe stdbool stdio stdlib strtoul unlocked-io xalloc diff -Nru gettext-0.19.6/gettext-runtime/gnulib-lib/mbsstr.c gettext-0.19.7/gettext-runtime/gnulib-lib/mbsstr.c --- gettext-0.19.6/gettext-runtime/gnulib-lib/mbsstr.c 2015-09-11 03:03:27.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/gnulib-lib/mbsstr.c 2015-12-27 23:08:01.000000000 +0000 @@ -1,4 +1,4 @@ -/* Searching in a string. +/* Searching in a string. -*- coding: utf-8 -*- Copyright (C) 2005-2015 Free Software Foundation, Inc. Written by Bruno Haible , 2005. diff -Nru gettext-0.19.6/gettext-runtime/gnulib-lib/propername.h gettext-0.19.7/gettext-runtime/gnulib-lib/propername.h --- gettext-0.19.6/gettext-runtime/gnulib-lib/propername.h 2015-09-11 03:03:27.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/gnulib-lib/propername.h 2015-12-27 23:08:01.000000000 +0000 @@ -1,4 +1,4 @@ -/* Localization of proper names. +/* Localization of proper names. -*- coding: utf-8 -*- Copyright (C) 2006, 2008-2015 Free Software Foundation, Inc. Written by Bruno Haible , 2006. diff -Nru gettext-0.19.6/gettext-runtime/gnulib-lib/setlocale.c gettext-0.19.7/gettext-runtime/gnulib-lib/setlocale.c --- gettext-0.19.6/gettext-runtime/gnulib-lib/setlocale.c 2015-09-11 03:03:27.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/gnulib-lib/setlocale.c 2015-12-27 23:08:01.000000000 +0000 @@ -1,4 +1,4 @@ -/* Set the current locale. +/* Set the current locale. -*- coding: utf-8 -*- Copyright (C) 2009, 2011-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify diff -Nru gettext-0.19.6/gettext-runtime/gnulib-lib/unistd.c gettext-0.19.7/gettext-runtime/gnulib-lib/unistd.c --- gettext-0.19.6/gettext-runtime/gnulib-lib/unistd.c 2015-09-11 03:03:27.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/gnulib-lib/unistd.c 2015-12-27 23:08:01.000000000 +0000 @@ -1,3 +1,4 @@ #include #define _GL_UNISTD_INLINE _GL_EXTERN_INLINE #include "unistd.h" +typedef int dummy; diff -Nru gettext-0.19.6/gettext-runtime/gnulib-m4/gnulib-cache.m4 gettext-0.19.7/gettext-runtime/gnulib-m4/gnulib-cache.m4 --- gettext-0.19.6/gettext-runtime/gnulib-m4/gnulib-cache.m4 2015-09-11 03:03:30.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/gnulib-m4/gnulib-cache.m4 2015-12-27 23:08:04.000000000 +0000 @@ -27,7 +27,7 @@ # Specification in the form of a command-line invocation: -# gnulib-tool --import --dir=gettext-runtime --local-dir=gnulib-local --lib=libgrt --source-base=gnulib-lib --m4-base=gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl ansi-c++-opt atexit basename closeout csharpcomp-script error getopt-gnu gettext-h gettext-runtime-misc havelib java javacomp-script memmove progname propername relocatable-prog setlocale sigpipe stdbool stdio stdlib strtoul unlocked-io xalloc +# gnulib-tool --import --local-dir=gnulib-local --lib=libgrt --source-base=gnulib-lib --m4-base=gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl ansi-c++-opt atexit basename closeout csharpcomp-script error getopt-gnu gettext-h gettext-runtime-misc havelib java javacomp-script memmove progname propername relocatable-prog setlocale sigpipe stdbool stdio stdlib strtoul unlocked-io xalloc # Specification in the form of a few gnulib-tool.m4 macro invocations: gl_LOCAL_DIR([../gnulib-local]) diff -Nru gettext-0.19.6/gettext-runtime/gnulib-m4/gnulib-common.m4 gettext-0.19.7/gettext-runtime/gnulib-m4/gnulib-common.m4 --- gettext-0.19.6/gettext-runtime/gnulib-m4/gnulib-common.m4 2015-09-11 03:03:27.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/gnulib-m4/gnulib-common.m4 2015-12-27 23:08:01.000000000 +0000 @@ -253,9 +253,10 @@ [ dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler dnl as "cc", and GCC as "gcc". They have different object file formats and - dnl library formats. In particular, the GNU binutils programs ar, ranlib + dnl library formats. In particular, the GNU binutils programs ar and ranlib dnl produce libraries that work only with gcc, not with cc. AC_REQUIRE([AC_PROG_CC]) + AC_BEFORE([$0], [AM_PROG_AR]) AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler], [ AC_EGREP_CPP([Amsterdam], @@ -267,25 +268,37 @@ [gl_cv_c_amsterdam_compiler=yes], [gl_cv_c_amsterdam_compiler=no]) ]) - if test -z "$AR"; then - if test $gl_cv_c_amsterdam_compiler = yes; then + + dnl Don't compete with AM_PROG_AR's decision about AR/ARFLAGS if we are not + dnl building with __ACK__. + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then AR='cc -c.a' - if test -z "$ARFLAGS"; then - ARFLAGS='-o' - fi - else - dnl Use the Automake-documented default values for AR and ARFLAGS, - dnl but prefer ${host}-ar over ar (useful for cross-compiling). - AC_CHECK_TOOL([AR], [ar], [ar]) - if test -z "$ARFLAGS"; then - ARFLAGS='cr' - fi fi - else if test -z "$ARFLAGS"; then - ARFLAGS='cr' + ARFLAGS='-o' fi + else + dnl AM_PROG_AR was added in automake v1.11.2. AM_PROG_AR does not AC_SUBST + dnl ARFLAGS variable (it is filed into Makefile.in directly by automake + dnl script on-demand, if not specified by ./configure of course). + dnl Don't AC_REQUIRE the AM_PROG_AR otherwise the code for __ACK__ above + dnl will be ignored. Also, pay attention to call AM_PROG_AR in else block + dnl because AM_PROG_AR is written so it could re-set AR variable even for + dnl __ACK__. It may seem like its easier to avoid calling the macro here, + dnl but we need to AC_SUBST both AR/ARFLAGS (thus those must have some good + dnl default value and automake should usually know them). + m4_ifdef([AM_PROG_AR], [AM_PROG_AR], [:]) + fi + + dnl In case the code above has not helped with setting AR/ARFLAGS, use + dnl Automake-documented default values for AR and ARFLAGS, but prefer + dnl ${host}-ar over ar (useful for cross-compiling). + AC_CHECK_TOOL([AR], [ar], [ar]) + if test -z "$ARFLAGS"; then + ARFLAGS='cr' fi + AC_SUBST([AR]) AC_SUBST([ARFLAGS]) if test -z "$RANLIB"; then diff -Nru gettext-0.19.6/gettext-runtime/gnulib-m4/gnulib-comp.m4 gettext-0.19.7/gettext-runtime/gnulib-m4/gnulib-comp.m4 --- gettext-0.19.6/gettext-runtime/gnulib-m4/gnulib-comp.m4 2015-09-11 03:03:31.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/gnulib-m4/gnulib-comp.m4 2015-12-27 23:08:05.000000000 +0000 @@ -37,7 +37,11 @@ m4_pattern_allow([^gl_ES$])dnl a valid locale name m4_pattern_allow([^gl_LIBOBJS$])dnl a variable m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable + + # Pre-early section. + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_PROG_AR_RANLIB]) + AC_REQUIRE([AM_PROG_CC_C_O]) # Code from module absolute-header: # Code from module alloca-opt: @@ -59,7 +63,6 @@ # Code from module errno: # Code from module error: # Code from module extensions: - AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # Code from module extern-inline: # Code from module fwriteerror: # Code from module getopt-gnu: diff -Nru gettext-0.19.6/gettext-runtime/gnulib-m4/mbrtowc.m4 gettext-0.19.7/gettext-runtime/gnulib-m4/mbrtowc.m4 --- gettext-0.19.6/gettext-runtime/gnulib-m4/mbrtowc.m4 2015-09-11 03:03:27.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/gnulib-m4/mbrtowc.m4 2015-12-27 23:08:01.000000000 +0000 @@ -1,4 +1,4 @@ -# mbrtowc.m4 serial 26 +# mbrtowc.m4 serial 26 -*- coding: utf-8 -*- dnl Copyright (C) 2001-2002, 2004-2005, 2008-2015 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation @@ -569,10 +569,10 @@ int main (void) { - return mbrtowc (&wc, "", 0, &mbs) == (size_t) -2; + return mbrtowc (&wc, "", 0, &mbs) != (size_t) -2; }]])], - [gl_cv_func_mbrtowc_empty_input=no], [gl_cv_func_mbrtowc_empty_input=yes], + [gl_cv_func_mbrtowc_empty_input=no], [:]) ]) ]) diff -Nru gettext-0.19.6/gettext-runtime/intl/ChangeLog gettext-0.19.7/gettext-runtime/intl/ChangeLog --- gettext-0.19.6/gettext-runtime/intl/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl/ChangeLog 2015-12-28 00:06:36.000000000 +0000 @@ -1,5644 +1,41 @@ -2015-09-11 Daiki Ueno +2015-12-28 Daiki Ueno - * gettext 0.19.6 released. + Prepare for 0.19.7 -2015-08-26 Paul Eggert +2015-12-10 KO Myung-Hun (tiny change) - intl: fix memory leak in _nl_load_domain - * loadmsgcat.c (_nl_load_domain): - Free data after a read failure. See: - https://sourceware.org/bugzilla/show_bug.cgi?id=18871 + intl: Fix name resolution failures on kLIBC + kLIBC already has _nl_default_dirname and _nl_msg_cat_cntr in its own + gettext implmenetation. + * gettext-runtime/intl/dcigettext.c: Do not declare _nl_default_dirname + on kLIBC. + * gettext-runtime/intl/gettextP.h: Define _nl_msg_cat_cntr to + libintl_nl_msg_cat_cntr on kLIBC. + + build: Do not include os2compat.[ch] + kLIBC does not need os2compat.[ch] + * gettext-runtime/configure.ac (AH_BOTTOM): Do not include + intl/os2compat.h on kLIBC. + * gettext-runtime/intl/osdep.c: Do not include os2compat.c on kLIBC. + * gettext-tools/configure.ac (AH_BOTTOM): Do not include + intl/os2compat.h on kLIBC. + +2015-10-15 Daiki Ueno + + build: Generate ChangeLogs for intl and po + * autogen.sh: Create empty ChangeLog files under intl and po. + * Makefile.am (gen-ChangeLogs): Rename from gen-ChangeLog. Generate + ChangeLog files for */intl and */po as well as top-level. + * gettext-runtime/intl/ChangeLog.0: Rename from ChangeLog. + * gettext-runtime/po/ChangeLog.0: Rename from ChangeLog. + * gettext-tools/po/ChangeLog.1: Rename from ChangeLog. + +2015-10-14 Mike Frysinger + + intl/localename: control langinfo.h inclusion + This header is only used to work around buggy behavior in old versions + of glibc, so do not include it all the time. Otherwise we get build + failures on systems that do not provide langinfo.h. -2015-08-21 Daiki Ueno - - intl: Pacify compilation with pre-C99 compilers - * loadmsgcat.c (_nl_load_domain): Move the call to - __libc_lock_define_initialized_recursive to the end of local - variable declarations to avoid extra ';' being expanded to an - empty statement. - Reported by pan7 in: - . - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2015-07-10 Daiki Ueno - - intl: Update from gnulib - * localename.c: Update from gnulib. - -2015-06-23 Daiki Ueno - - * locale.alias: Update from glibc: - 2015-05-22 Paul Eggert - Remove obsolete aliases that broke 'locale -a' - [BZ #18412] - * intl/locale.alias: Remove obsolete aliases "bokmål" and "français" - which caused 'locale -a' to output Latin-1 data in UTF-8 locales, - breaking some applications that use 'locale -a' output. - Change the encoding of this file from Latin-1 to ASCII to avoid - other potential problems with people grepping this file. - -2015-03-12 Daiki Ueno - - intl: Update from gnulib - * localename.c, vasnprintf.c: Update from gnulib. - -2015-01-22 Daiki Ueno - - intl: Update from gnulib - * config.charset, localcharset.c, relocatable.c, vasnprintf.c: - Update from gnulib. - * codeset.m4, extern-inline.m4, fcntl-o.m4, gettext.m4, glibc2.m4: - * glibc21.m4, iconv.m4, intdiv0.m4, intldir.m4, intlmacosx.m4: - * intmax.m4, inttypes-pri.m4, inttypes_h.m4, lcmessage.m4, lock.m4: - * longlong.m4, nls.m4, printf-posix.m4, progtest.m4: - * size_max.m4, stdint_h.m4, threadlib.m4, uintmax_t.m4: - * visibility.m4, wchar_t.m4, wint_t.m4, xsize.m4: Update copyright - year. - -2015-01-21 Will Newton - - intl: Merge from glibc - * bindtextdom.c: Update copyright to use year ranges. - * dcgettext.c: Update copyright to use year ranges. - [_LIBC]: Use libc_hidden_def instead of INTDEF. - * dcigettext.c: Update copyright to use year ranges. - Test HAVE_TSEARCH with #ifdef rather than #if. - (DCIGETTEXT) [_LIBC]: Use __current_locale_name instead of - _current_locale_name. - * dcngettext.c: Update copyright to use year ranges. - * dgettext.c: Update copyright to use year ranges. - [_LIBC]: Remove use of INTUSE macro. - * dngettext.c: Update copyright to use year ranges. - * explodename.c: Likewise. - * finddomain.c: Update copyright to use year ranges. - (_nl_finddomain_subfreeres): Use void in no-arguments function - definition. - * gettext.c: Update copyright to use year ranges. - [_LIBC]: Remove use of INTUSE macro. - * gettextP.h: Update copyright to use year ranges. - [_LIBC]: Forward declaration of struct loaded_domain. - * gmo.h: Update copyright to use year ranges. - * hash-string.c: Likewise. - * hash-string.h: Likewise. - * l10nflist.c: Update copyright to use year ranges. - [_LIBC]: Remove use of INTUSE macro. - Wrap pop function in [!ARCH_POP]. - * loadinfo.h: Update copyright to use year ranges. - * loadmsgcat.c: Likewise. - * localealias.c: Update copyright to use year ranges. - Test ENABLE_RELOCATABLE with #ifdef rather than #if. - [_LIBC]: Use __strcasecmp_l for strcasecmp. - [_LIBC]: Use __fgets_unlocked for FGETS. - Test HAVE_DECL_FGETS_UNLOCKED with #ifdef rather than #if. - Test HAVE_DECL_FEOF_UNLOCKED with #ifdef rather than #if. - (read_alias_file) [_LIBC]: Open file with O_CLOEXEC. - (extend_alias_table): Use void in no-arguments function - definition. - * ngettext.c: Update copyright to use year ranges. - * plural-exp.c: Update copyright to use year ranges. - Test __APPLE_CC__ with #ifdef rather than #if. - (GERMANIC_PLURAL): Make const. - (init_germanic_plural): Use void in no-arguments function - definition. - * plural-exp.h: Update copyright to use year ranges. - (GERMANIC_PLURAL): Make const. - * plural.y: Update copyright to use year ranges. - * textdomain.c: Likewise. - -2015-01-04 Václav Slavík (tiny change) - - intl: Add missing libintl.h dependency from pluralx.$lo - plural(x).c depends on libintl.h if ENABLE_NLS, but the makefile - didn't have corresponding dependency for pluralx.c, because - d2d04ba forgot to add it. Fix by using $(PLURAL_OBJECT) for the - dependency rule too. - * Makefile.in ($(PLURAL_OBJECT)): Depend on libintl.h. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-12-24 Daiki Ueno - - * libgnuintl.in.h (LIBINTL_VERSION): Bump to 0.19.4. - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 9:3:1. - -2014-12-04 Daiki Ueno - - intl: Make the LCOV workaround non-intrusive - * Makefile.in (PLURAL_OBJECT): New variable. - (OBJECTS): Refer to $(PLURAL_OBJECT) instead of plural.$lo. - (pluralx.c, pluralx.lo): New rule. - (mostlyclean): Remove pluralx.c. - -2014-12-03 Daiki Ueno - - intl: Work around LCOV relative base directory resolution - * Makefile.in (plural.lo): Resolve relative source file name given - with '#line' directive, when $(srcdir) != $(builddir). - (mostlyclean): Remove plural.c generated in the 'plural.lo' rule. - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-10-15 Daiki Ueno - - * libgnuintl.in.h (LIBINTL_VERSION): Bump to 0.19.3. - -2014-09-30 Daiki Ueno - - * localcharset.c, localename.c, vasnprintf.c: Update from Gnulib. - -2014-07-16 Daiki Ueno - - * localename.c: Update from Gnulib. - 2014-07-10 Assaf Gordon - localename: avoid -Wsuggest-attribute={const,pure} warnings - * lib/localename.c (string_hash): Tag internal function as pure. - * xsize.c (XSIZE_INLINE): Remove _GL_UNUSED definition. It will - be set through intl.m4. - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-07-14 Daiki Ueno - - * Makefile.in (distclean): Remove intl/VERSION for gettext-runtime - and gettext-tools packages. - -2014-07-03 Siddhesh Poyarekar - - intl: Sync up loadmsgcat.c with glibc - * loadmsgcat.c [_LIBC]: Define PRI_MACROS_BROKEN unconditionally. - -2014-07-03 Siddhesh Poyarekar - - intl: Sync up loadmsgcat.c with glibc - * loadmsgcat.c: Include assert.h. - (_nl_load_domain): Add semicolon to end of line. - (_nl_load_domain)[HAVE_MMAP]: Use MAP_FAILED and assert that - it is (void *) -1. - (_nl_load_domain)[_LIBC]: Call __libc_rwlock_init instead of - gl_rwlock_init. - (_nl_unload_domain): Cast convd->encoding to non-const. - -2014-06-17 Daiki Ueno - - intl: Add back ChangeLog to gettext-runtime distribution - * Makefile.in (DISTFILES.gettext): Add ChangeLog. - -2014-06-16 Daiki Ueno - - intl: Stop installing ChangeLog.inst - After the git-version-gen migration (commit fbf4e276), the - creation of gettext-tools/intl/ChangeLog.inst in configure.ac was - removed because we lost access to $RELEASE_DATE. Given that - intl/VERSION provides enough information, simply drop the - ChangeLog file. - Problem reported by Bruce Korb in - . - * Makefile.in (install-data): Don't install ChangeLog.inst. - (distclean): Don't remove ChangeLog.inst. - (uninstall): Don't remove ChangeLog under $(gettextsrcdir)/intl. - (dist): Don't include ChangeLog in the distribution. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2014-05-11 Daiki Ueno - - * xsize.c (_GL_UNUSED): Define, if undefined. - -2014-04-30 Steve Ellcey (tiny change) - - * loadmsgcat.c (PRI_MACROS_BROKEN) [_LIBC]: Define to 0, if - undefined. - -2014-04-23 Daiki Ueno - - intl: Port to Bison 3.0 - * plural.y: Don't use removed YYLEX_PARAM and YYPARSE_PARAM - macros; replace deprecated %pure_parser with '%define api.pure - full'; adjust yylex/yyerror arglist. - * plural-exp.h (PLURAL_PARSE): Use explicit type 'struct - parse_args *arg' for ARG. - -2013-05-07 Carlos O'Donell - Jeff Law - - * dcigettext.c (DCIGETTEXT): Skip translating if _nl_find_msg - returns -1. - (_nl_find_msg): Return -1 if recursive call returned -1. If - newmem is null return -1. - * loadmsgcat.c (_nl_load_domain): If _nl_find_msg returns -1 - abort loading the domain. - - * dcigettext.c (_nl_find_msg): Avoid use after potential - free. Simplify list management for _LIBC case. - -2013-03-07 Daiki Ueno - - * setlocale.c (libintl_setlocale): Signal a change of the loaded - catalogs by incrementing _nl_msg_cat_cntr. - Reported by Guido Flohr at . - -2013-05-30 Thomas Petazzoni (tiny change) - - * Makefile.in (SHELL): Use @SHELL@ instead of /bin/sh. - -2013-03-05 Daiki Ueno - - * verify.h: Update copyright year. - * xsize.h: Likewise. - -2013-02-25 Daiki Ueno - - Determine imported C symbol prefix at configure time. - Suggested by Evgeny Grin in . - * intl-exports.c (IMP): Define depending on the result of the - configure run. - -2013-01-21 Daiki Ueno - - Remove references to non-existing COPYING.LIB-2.*. - Reported by Christian Weisgerber . - * Makefile.in (DISTFILES.obsolete): Add COPYING.LIB-2.*. - (install-data): Install COPYING.LIB instead of no longer existing - COPYING.LIB-2.*. - (uninstall): Remove COPYING.LIB instead of no longer existing - COPYING.LIB-2.*. - -2013-01-17 Daiki Ueno - - Fix link errors related to C99-style extern inline. - Reported by Sam Thursfield . - * Makefile.in (SOURCES): Add xsize.c. - (OBJECTS): Add xsize.$lo. - (xsize.lo): New rule. - (printf.$lo): Add xsize.c to dependencies. - * xsize.c: New file, imported from gnulib. - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2012-12-25 Daiki Ueno - - * libgnuintl.in.h (LIBINTL_VERSION): Bump to 0.18.2. - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 9:2:1. - -2012-12-25 Daiki Ueno - - * intl-exports.c (IMP): Check __MINGW32__ as well as _WIN64. - -2012-12-20 Daiki Ueno - - localecharset: respect the thread-specific locale on Mac OS X - * lib/localcharset.c (locale_charset) [DARWIN7]: Use MB_CUR_MAX_L - instead of MB_CUR_MAX. - -2012-12-21 Daiki Ueno - - Fix W64 build errors. - * intl-exports.c (IMP) [_WIN64]: Prefix "__imp_" instead of - "_imp__". - * osdep.c: Include intl-exports.c on mingw as well as Cygwin. - -2012-12-10 Daiki Ueno - - * intl-compat.c: Fix typo in the copyright header. - -2012-11-29 Paul Eggert - - * vasnprintf.c (MAX_ROOM_NEEDED): Now static, not static - inline. - -2012-11-29 Paul Eggert - - * lock.c (gl_waitqueue_init) - (gl_waitqueue_notify_first, gl_waitqueue_notify_all): - Change 'static inline' to 'inline'. - -2012-09-24 Paul Eggert - - localename: port gl_locale_name_thread_unsafe to FreeBSD - * localename.c (gl_locale_name_thread_unsafe): Port to FreeBSD, - and use the simpler FreeBSD implementation on Mac OS X as well. - Original idea suggested by Ed Maste in - . - -2012-09-22 Paul Eggert - - * xsize.h (XSIZE_INLINE): New macro. Replace all uses of - 'static inline' with them. Use _GL_INLINE_HEADER_BEGIN, - _GL_INLINE_HEADER_END. - -2012-09-22 Paul Eggert - - misc: don't limit commentary to inline functions - * xsize.h: Contrast macros to functions in general, not just - to inline functions, when the commentary does not apply only to - inline functions. - -2012-09-16 Paul Eggert - - localcharset: work around Mac OS X bug with UTF-8 and MB_CUR_MAX - * localcharset.c (locale_charset) [DARWIN7]: - Return "ASCII" if the system reports "UTF-8" and MB_CUR_MAX <= 1, - as these two values are incompatible. Problem reported by Max Horn. - For more discussion, please see - . - -2012-07-20 Eric Blake - - verify: document conflict with -Wnested-externs - * verify.h: Give hint about usage when gcc warnings are enabled. - -2012-06-22 Bruno Haible - - Write "Mac OS X" instead of "MacOS X". - * config.charset: Write "Mac OS X" instead of "MacOS X". - * localcharset.c: Likewise. - * localename.c: Likewise. - * vasnprintf.c: Likewise. - -2012-06-03 Jim Meyering - - * dcigettext.c: Spelling fixes. - -2012-02-05 Paul Eggert - - * vasnprintf.c: Spelling fixes. - -2012-01-26 Bruno Haible - - Modernize quoting. - * Makefile.in: Quote 'like this', not `like this', as per the recent - change to the GNU coding standards. - * libgnuintl.in.h: Likewise. - * vasnprintf.h: Likewise. - -2012-01-06 Paul Eggert - - doc: C11 and C++11 are now official - * verify.h: Replace references to draft C1X to C11, and to draft C++0X - to C++11. - -2012-01-06 Bruno Haible - - Talk about "native Windows API", not "Woe32". - * localcharset.c: Update comments to mention native Windows. - * relocatable.c: Likewise. - * config.charset: More comments. - -2012-01-04 Bruno Haible - - Talk about "native Windows API", not "Win32". - * vasnprintf.c: Update comments to mention native Windows. - * localcharset.c: Update comments to mention native Windows. - (WINDOWS_NATIVE): Renamed from WIN32_NATIVE. - * localename.c: Likewise. - * relocatable.c: Likewise. - * lock.h: Update comments to mention native Windows. - (USE_WINDOWS_THREADS): Renamed from USE_WIN32_THREADS. - * lock.c (USE_WINDOWS_THREADS): Renamed from USE_WIN32_THREADS. - -2011-10-15 Bruno Haible - - Avoid crash in *printf functions for invalid format string with dollar. - * printf.c (libintl_vsnprintf, libintl_vswprintf): Don't crash in - mempy if libintl_vasnprintf returned NULL. - Reported by Jeong, Heon - in . - -2011-10-15 Bruno Haible - - vasnprintf: Optimize bit search operation. - * vasnprintf.c (divide): Use optimizations from gnulib's - integer_length.c. - -2011-10-15 Bruno Haible - - vasnprintf: Fix comments. - * vasnprintf.c (decode_long_double, decode_double): Fix comments. - -2011-10-03 Bruno Haible - - * relocatable.c (ENABLE_COSTLY_RELOCATABLE): New macro. - (compute_curr_prefix, shared_library_fullname, - find_shared_library_fullname, get_shared_library_fullname, relocate): - Use it together with PIC && INSTALLDIR. - Reported by - via Charles Wilson . - -2011-07-07 Bruno Haible - - Complete the change in vasnprintf.c from 2010-04-10. - * printf.c (system_vsnprintf) [mingw]: Prefer vsnprintf over - _vsnprintf. - -2011-06-15 Paul Eggert - - * verify.h (verify_true): Deprecate. - (verify_expr): New macro. - -2011-06-03 Bruno Haible - - * verify.h: New file, from gnulib. - * Makefile.in (HEADERS): Add it. - -2010-10-10 Paul Eggert - - rewrite int foo[2*X-1] to verify(X) or to int foo[X?1:-1] - * vasnprintf.c: Include "verify.h". - (mp_limb_verify, mp_twolimb_verify, TCHAR_T_verify): Remove, replacing - with a verify call. - -2011-06-03 Bruno Haible - - Copyright: Use LGPL 2.1 instead of LGPL 2.0. - * COPYING.LIB: Renamed from COPYING.LIB-2.1. - * COPYING.LIB-2.0: Remove file. - * *.h, *.c, *.y, *.sin, config.charset, locale.alias, Makefile.in: - Update copyright header. - * libintl.rc: Update comments field. - -2011-04-08 Paul Eggert - - * relocatable.c (_GL_USE_STDLIB_ALLOC): Define. - (malloc): Don't #undef; no longer needed. - -2011-02-28 Bruno Haible - - Assume ANSI C behaviour of free(). - * localcharset.c (get_charset_aliases): Remove NULL test before calling - free(). - Suggested by Simon Josefsson . - -2011-02-28 Corinna Vinschen (tiny change) - Charles Wilson (tiny change) - Bruno Haible (tiny change) - - On Cygwin, use /proc file system instead of win32 API. - * relocatable.c: On Cygwin, use file names from /proc, rather than - Win32 file names. - (DllMain): Simplify by removing Cygwin specific code. - (find_shared_library_fullname): Use Linux specific implementation also - for Cygwin. - (get_shared_library_fullname): Update accordingly. - -2011-02-23 Bruno Haible - - Fix misindentation of preprocessor directives. - * vasnprintf.c (decode_long_double): Reindent preprocessor directives. - -2011-02-12 Bruno Haible - - Workaround native Windows bug. - * setlocale.c (rpl_setlocale): On native Windows, when setlocale - succeeds but sets LC_CTYPE to "C", report a failure. - -2011-02-12 Bruno Haible - - Avoid clashing overrides for setlocale. - * libgnuintl.in.h (setlocale): Don't override if the gnulib override is - already enabled. - -2011-06-03 Bruno Haible - - * wprintf-parse.h: Apply same changes as to printf-parse.h. - -2011-02-04 Bruno Haible - - vasnprintf: Reduce use of malloc for small format strings. - * printf-args.h (N_DIRECT_ALLOC_ARGUMENTS): New macro. - (arguments): Add room for the first 7 arguments. - * printf-parse.h (N_DIRECT_ALLOC_DIRECTIVES): New macro. - (char_directives, u8_directives, u16_directives, u32_directives): Add - room for the first 7 directives. - * printf-parse.c: Include . - (PRINTF_PARSE): Change memory handling code so that it uses the first - 7 preallocated elements in an 'arguments' or 'DIRECTIVES' struct. - * vasnprintf.c (VASNPRINTF): Update memory handling code. - Reported by Pádraig Brady . - -2011-01-01 Jim Meyering - - maint: update almost all copyright ranges to include 2011 - Run the new "make update-copyright" rule. - -2010-11-20 Bruno Haible - - Port to uClibc. - * dcigettext.c (_nl_find_msg): Treat uClibc like a non-glibc platform. - * loadmsgcat.c (get_sysdep_segment_value): Likewise. - -2010-11-20 Bruno Haible - - Ensure that is included before __GLIBC__ is tested. - * printf-parse.h: Include . - Reported by Mike Frysinger . - -2010-11-20 Bruno Haible - - Port to uClibc. - * localename.c (gl_locale_name_thread_unsafe, HAVE_LOCALE_NULL): Treat - uClibc like a non-glibc platform. - * printf-parse.h (FLAG_LOCALIZED): Likewise. - * printf-parse.c (PRINTF_PARSE): Likewise. - * relocatable.c (find_shared_library_fullname): Treat uClibc like - glibc. - * vasnprintf.c (decimal_point_char): Treat uClibc like glibc. - (VASNPRINTF): Treat uClibc like a non-glibc platform. - Reported by Mike Frysinger . - -2010-11-20 Bruno Haible - - Fix a comment. - * vasnprintf.c (VASNPRINTF): Fix comment. - -2010-11-07 Bruno Haible - - * loadmsgcat.c (get_sysdep_segment_value): Update comment. - -2010-11-07 Bruno Haible - - vasnprintf: Support I flag on glibc systems. - * printf-parse.h (FLAG_LOCALIZED): New macro. - * printf-parse.c (PRINTF_PARSE): Handle the 'I' flag. - * vasnprintf.c (VASNPRINTF): Pass the 'I' flag on to the system's - snprintf function. - -2010-11-07 Bruno Haible - - Rename libgnuintl.h.in to libgnuintl.in.h. - * libgnuintl.in.h: New file, renamed from libgnuintl.h.in. - * Makefile.in (HEADERS, libgnuintl.h, libintl.h): Update. - * printf.c: Update. - -2010-10-14 Bruno Haible - - vasnprintf: Don't set errno to 0. - * vasnprintf.c (VASNPRINTF): Save and restore errno around the block - that sets it to 0. - Reported by Gianluigi Tiesi . - -2010-06-09 Bruno Haible - - Avoid relocwrapper link errors due to gnulib replacement functions. - * lib/relocatable.c: Use the system's malloc function. - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-06-03 Bruno Haible - - * libgnuintl.h.in (LIBINTL_VERSION): Bump to 0.18.1. - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 9:1:1. - -2010-05-20 Bruno Haible - - * gettextP.h (_nl_locale_name): Comment out declaration. - -2010-05-20 Bruno Haible - - Avoid a link error when building statically on mingw. - * gettextP.h (gl_locale_name_thread): Alias to _nl_locale_name_thread. - Reported by Rob . - -2010-05-16 Bruno Haible - - * libgnuintl.h.in (printf): Add comment. - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2010-05-09 Bruno Haible - - * libgnuintl.h.in (LIBINTL_VERSION): Bump to 0.18. - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 9:0:1. - * libintl.rc: Update year. - -2010-05-09 Bruno Haible - - vasnprintf: Fix syntax errors in libintl build on mingw. - * vasnprintf.c (VASNPRINTF): Move a closing brace. Undefine - pad_ourselves and prec_ourselves after use. - -2010-04-03 Bruno Haible - - localename: Port to MacOS X 10.6. - * localename.c (gl_locale_name_thread_unsafe): On MacOS X, try the - memory layout of the locales in MacOS X 10.6 as well. - Reported by Panu Kekäläinen . - -2010-05-08 Bruno Haible - - * config.charset: Update comments for Cygwin 1.7. - * localcharset.c: Likewise. - -2010-04-24 Bruno Haible - - vasnprintf: Correct errno value in case of out-of-memory. - * vasnprintf.c (VASNPRINTF): Set errno to 0 before calling SNPRINTF or - sprintf. Use the errno value from SNPRINTF or sprintf. - Reported by Ian Beckwith . - -2010-04-10 Bruno Haible - - vasnprintf: Correct handling of unconvertible wide string arguments. - * vasnprintf.c (MAX_ROOM_NEEDED): New function, extracted from - VASNPRINTF. - (VASNPRINTF): Use it. After snprintf failed, allocate more memory only - if HAVE_SNPRINTF_RETVAL_C99 is false and the allocated memory is - smaller than the expected maximum need for the directive. Set errno to - EILSEQ, not EINVAL, when the directive is 'c' or 's'. - (local_strnlen, local_wcslen, local_wcsnlen): Update conditions. - Reported by Jarno Rajahalme . - -2010-04-10 Bruno Haible - - vasnprintf: Fix crash in %ls directive. - * vasnprintf.c (VASNPRINTF): Don't abort when a unconvertible wide - string is passed as argument to %ls, with no precision and no width. - Reported by Jarno Rajahalme . - -2010-04-10 Bruno Haible - - vasnprintf: Fix multiple test failures on mingw. - * vasnprintf.c (SNPRINTF) [mingw]: Define to snprintf, not _snprintf, - or snwprintf, not _snwprintf. - -2010-03-25 Bruno Haible - - Minor formatting changes. - * localename.c: Insert space before sizeof's argument list. - * lock.h: Insert space before function argument list. - -2010-01-01 Bruno Haible - - localename: Avoid gcc warning. - * localename.c (gl_locale_name_thread_unsafe): Don't define this - function if it is not used. - -2010-01-01 Bruno Haible - - * vasnprintf.c (VASNPRINTF): If GNULIB_defined_mbstate_t is defined, - use wctomb instead of wcrtomb. - -2009-12-26 Bruno Haible - - * libintl.rc: Update. - -2009-12-26 Bruno Haible - - Use the thread-specific locale also on MacOS X. - * dcigettext.c (HAVE_NL_LOCALE_NAME): Remove undef. - Don't include . - (HAVE_PER_THREAD_LOCALE): Define on any platform that has 'uselocale'. - (DCIGETTEXT, guess_category_value): Use _nl_locale_name_thread_unsafe - instead of glibc specific code. - * gettextP.h (gl_locale_name_thread_unsafe): New macro. - (_nl_locale_name_thread_unsafe): New declaration. - -2009-12-26 Bruno Haible - - localename: Fix storage allocation of gl_locale_name_thread's result. - * localename.c (SIZE_BITS, string_hash, struct hash_node, - HASH_TABLE_SIZE, struniq_hash_table, struniq_lock, struniq): Define on - all platforms that have 'uselocale'. - (gl_locale_name_thread_unsafe): New function, extracted from - gl_locale_name_thread. - (gl_locale_name_thread): Call struniq on all platforms that have - 'uselocale'. - -2009-12-23 Bruno Haible - - localename: Make aware of thread locale. - * localename.c: Include , , , - , glthread/lock.h. - (SIZE_BITS): New macro. - (string_hash): New function. - (struct hash_node): New type. - (HASH_TABLE_SIZE): New macro. - (struniq_hash_table, struniq_lock): New variables. - (struniq): New function. - (gl_locale_name_thread): New function. - (gl_locale_name): Invoke it. - Reported by Mike Gran . - -2009-12-26 Bruno Haible - - * Makefile.in (localename.$lo): Add dependency. - -2009-12-21 Bruno Haible - - Define override of setlocale and newlocale functions. - * gettextP.h (gl_locale_name_environ): New macro. - (_nl_locale_name_environ): New declaration. - * localename.c (gl_locale_name_environ): New function, extracted from - gl_locale_name_posix. Ignore dummy LANG values on MacOS X and Cygwin. - (gl_locale_name_posix): Invoke it. - (gl_locale_name_default): Add comments. Use Windows native API also on - Cygwin. - * libgnuintl.h.in: On MacOS X, include . - (setlocale, newlocale): New overrides. - * setlocale.c: New file. - * Makefile.in (SOURCES): Add setlocale.c. - (OBJECTS): Add setlocale.$lo. - (setlocale.lo): New rule. - (libgnuintl.h, libintl.h): Substitute also HAVE_NEWLOCALE. - (setlocale.$lo): Define dependencies. - -2009-12-21 Bruno Haible - - Update list of Win32 locale ids. - * localename.c (LANG_ROMANSH): Renamed from LANG_RHAETO_ROMANCE. - (LANG_SAMI): Renamed from LANG_SAAMI. - (LANG_BASHKIR, LANG_LUXEMBOURGISH, LANG_GREENLANDIC, - LANG_MAPUDUNGUN, LANG_MOHAWK, LANG_BRETON, LANG_OCCITAN, LANG_CORSICAN, - LANG_ALSATIAN, LANG_YAKUT, LANG_KICHE, LANG_KINYARWANDA, LANG_WOLOF, - LANG_DARI, LANG_SCOTTISH_GAELIC): New macros. - (SUBLANG_AFRIKAANS_SOUTH_AFRICA, SUBLANG_ALBANIAN_ALBANIA, - SUBLANG_ALSATIAN_FRANCE, SUBLANG_AMHARIC_ETHIOPIA, - SUBLANG_ARMENIAN_ARMENIA, SUBLANG_ASSAMESE_INDIA, - SUBLANG_BASHKIR_RUSSIA, SUBLANG_BASQUE_BASQUE, - SUBLANG_BELARUSIAN_BELARUS, SUBLANG_BRETON_FRANCE, - SUBLANG_BULGARIAN_BULGARIA, SUBLANG_CAMBODIAN_CAMBODIA, - SUBLANG_CATALAN_SPAIN, SUBLANG_CORSICAN_FRANCE, - SUBLANG_CZECH_CZECH_REPUBLIC, SUBLANG_DANISH_DENMARK, - SUBLANG_DARI_AFGHANISTAN, SUBLANG_DIVEHI_MALDIVES, - SUBLANG_DUTCH_SURINAM, SUBLANG_ESTONIAN_ESTONIA, - SUBLANG_FAEROESE_FAROE_ISLANDS, SUBLANG_FARSI_IRAN, - SUBLANG_FINNISH_FINLAND, SUBLANG_FRISIAN_NETHERLANDS, - SUBLANG_GALICIAN_SPAIN, SUBLANG_GEORGIAN_GEORGIA, - SUBLANG_GREEK_GREECE, SUBLANG_GREENLANDIC_GREENLAND, - SUBLANG_GUJARATI_INDIA, SUBLANG_HAUSA_NIGERIA_LATIN, - SUBLANG_HEBREW_ISRAEL, SUBLANG_HINDI_INDIA, SUBLANG_HUNGARIAN_HUNGARY, - SUBLANG_ICELANDIC_ICELAND, SUBLANG_IGBO_NIGERIA, - SUBLANG_INDONESIAN_INDONESIA, SUBLANG_INUKTITUT_CANADA, - SUBLANG_INUKTITUT_CANADA_LATIN, SUBLANG_IRISH_IRELAND, - SUBLANG_JAPANESE_JAPAN, SUBLANG_KANNADA_INDIA, - SUBLANG_KAZAK_KAZAKHSTAN, SUBLANG_KICHE_GUATEMALA, - SUBLANG_KINYARWANDA_RWANDA, SUBLANG_KONKANI_INDIA, - SUBLANG_KYRGYZ_KYRGYZSTAN, SUBLANG_LAO_LAOS, SUBLANG_LATVIAN_LATVIA, - SUBLANG_LITHUANIAN_LITHUANIA, SUBLANG_LOWER_SORBIAN_GERMANY, - SUBLANG_LUXEMBOURGISH_LUXEMBOURG, SUBLANG_MACEDONIAN_MACEDONIA, - SUBLANG_MALAYALAM_INDIA, SUBLANG_MALTESE_MALTA, - SUBLANG_MAORI_NEW_ZEALAND, SUBLANG_MAPUDUNGUN_CHILE, - SUBLANG_MARATHI_INDIA, SUBLANG_MOHAWK_CANADA, SUBLANG_NEPALI_NEPAL, - SUBLANG_OCCITAN_FRANCE, SUBLANG_ORIYA_INDIA, - SUBLANG_PASHTO_AFGHANISTAN, SUBLANG_POLISH_POLAND, - SUBLANG_ROMANSH_SWITZERLAND, SUBLANG_SAMI_NORTHERN_NORWAY, - SUBLANG_SAMI_NORTHERN_SWEDEN, SUBLANG_SAMI_NORTHERN_FINLAND, - SUBLANG_SAMI_LULE_NORWAY, SUBLANG_SAMI_LULE_SWEDEN, - SUBLANG_SAMI_SOUTHERN_NORWAY, SUBLANG_SAMI_SOUTHERN_SWEDEN, - SUBLANG_SAMI_SKOLT_FINLAND, SUBLANG_SAMI_INARI_FINLAND, - SUBLANG_SANSKRIT_INDIA, SUBLANG_SINHALESE_SRI_LANKA, - SUBLANG_SLOVAK_SLOVAKIA, SUBLANG_SLOVENIAN_SLOVENIA, - SUBLANG_SOTHO_SOUTH_AFRICA, SUBLANG_SWAHILI_KENYA, - SUBLANG_SWEDISH_SWEDEN, SUBLANG_SYRIAC_SYRIA, - SUBLANG_TAGALOG_PHILIPPINES, SUBLANG_TAJIK_TAJIKISTAN, - SUBLANG_TAMIL_INDIA, SUBLANG_TATAR_RUSSIA, SUBLANG_TELUGU_INDIA, - SUBLANG_THAI_THAILAND, SUBLANG_TSWANA_SOUTH_AFRICA, - SUBLANG_TURKISH_TURKEY, SUBLANG_TURKMEN_TURKMENISTAN, - SUBLANG_UKRAINIAN_UKRAINE, SUBLANG_UPPER_SORBIAN_GERMANY, - SUBLANG_VIETNAMESE_VIETNAM, SUBLANG_WELSH_UNITED_KINGDOM, - SUBLANG_WOLOF_SENEGAL, SUBLANG_XHOSA_SOUTH_AFRICA, - SUBLANG_YAKUT_RUSSIA, SUBLANG_YI_PRC, SUBLANG_YORUBA_NIGERIA, - SUBLANG_ZULU_SOUTH_AFRICA): New macros. - (gl_locale_name_from_win32_LANGID): Handle also the territory neutral - locale ids. Add support for Alsatian, Bashkir, Breton, Corsican, Dari, - Greenlandic, K'iche', Kinyarwanda, Luxembourgish, Mapudungun, Mohawk, - Occitan, Scottish Gaelic, Wolof, Yakut. Change language code for Yi. - Add more languages and countries for Sami, Sorbian. Add more countries - for Serbian, Dutch. Add more scripts for Inuktitut. Be more precise - for Pashto. Change country for Syriac, Tswana. - -2009-12-13 Bruno Haible - - * localcharset.c (locale_charset): Fix comment about use of GetACP. - -2009-12-12 Bruno Haible - - * localcharset.c (locale_charset): Add comment about use of GetACP. - -2009-12-12 Bruno Haible - - * intl-compat.c: Untabify. - * intl-exports.c: Untabify. - * langprefs.c: Untabify. - * libgnuintl.h.in: Untabify. - * localcharset.c: Untabify. - * localename.c: Untabify. - * lock.c: Untabify. - * log.c: Untabify. - * os2compat.h: Untabify. - * printf-args.c: Untabify. - * printf-args.h: Untabify. - * printf-parse.c: Untabify. - * printf-parse.h: Untabify. - * printf.c: Untabify. - * relocatable.c: Untabify. - * relocatable.h: Untabify. - * threadlib.c: Untabify. - * tsearch.c: Untabify. - * tsearch.h: Untabify. - * vasnprintf.c: Untabify. - * vasnwprintf.h: Untabify. - * wprintf-parse.h: Untabify. - -2009-12-11 Bruno Haible - - * config.charset: Untabify. - -2009-11-22 Bruno Haible - - * vasnprintf.c (decimal_point_char): Choose the fast path also on - MacOS X. - -2009-11-17 Eric Blake - - * vasnprintf.c (VASNPRINTF): Avoid shadowing our own local variables. - -2009-10-10 Eric Blake - - * relocatable.c (compute_curr_prefix): Fix spelling. - -2009-10-18 Bruno Haible - - Avoid symlink attack in localcharset module. - * localcharset.c: Include , . - (O_NOFOLLOW): Define fallback. - (get_charset_aliases): Don't open the file if it is a symbolic link. - Reported by Fergal Glynn . - -2009-08-20 Eric Blake - - * vasnprintf.c (decimal_point_char): Avoid warning on old-style - declaration. - -2009-08-10 Bruno Haible - - * vasnprintf.c (DCHAR_SET): Undefine at the end. - -2009-08-09 Bruno Haible - - Fix a compilation error on non-glibc systems that have gcc visibility - support but deficient *printf functions. - * printf.c (DLL_EXPORTED): Define to non-empty also when - HAVE_VISIBILITY is true. - Reported at . - -2009-06-06 Bruno Haible - - Interoperate with automake-1.11 provided --enable-silent-rules option. - * Makefile.in (AM_V_at, AM_V_AR, AM_V_CC, AM_V_GEN, AM_V_YACC, - AM_V_lt): New variables. - (libintl.a, libintl.la, .c.o, .y.c, *.lo): Silence 'make' output if - silent rules requested. - -2009-04-26 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Update after the calling convention of - u*_conv_from_encoding and u*_conv_to_encoding changed. - -2009-03-25 Bruno Haible - - * Makefile.in (RC): New variable. - (OBJECTS_RES_yes): Add .$lo suffix. - (libintl.res.o): Renamed from libintl.res. - (libintl.res.lo): New rule. - (mostlyclean): Simplify. - -2009-03-23 Jim Meyering - - * vasnprintf.c (divide): Fix typo in comment. - -2009-02-26 Bruno Haible - - Fix *printf behaviour regarding the %ls directive. - * vasnprintf.c (local_wcslen, VASNPRINTF): Handle - NEED_PRINTF_DIRECTIVE_LS. - -2009-02-23 Bruno Haible - - Fix invalid read past end of memory block. - * vasnprintf.c (DCHAR_SET): Define. - (local_wcslen): Define only when needed. - (local_strnlen, local_wcsnlen): New functions. - (VASNPRINTF) [!USE_SNPRINTF && HAVE_WCHAR_T]: Implement the %s and %ls - directives that involve a conversion ourselves. - -2009-02-06 Bruno Haible - - * Makefile.in (libintl.res): Initialize nl without assuming GNU bash. - Reported by Marko Lindqvist . - -2009-01-25 Bruno Haible - - * threadlib.c: Include . - -2009-01-25 Bruno Haible - - * threadlib.c (dummy): New declaration. - -2009-01-25 Bruno Haible - - Don't install charset.alias on MacOS X >= 10.3. - * localcharset.c (DARWIN7): New macro. - (get_charset_aliases): Hardcode the result for Darwin7. - * Makefile.in (install-exec, installdirs): Don't install charset.alias - on MacOS X >= 10.3, if the file does not yet exist. - -2009-01-25 Bruno Haible - - Don't install charset.alias on mingw and Cygwin. - * Makefile.in (install-exec, installdirs): Don't install charset.alias - on mingw and Cygwin, if the file does not yet exist. The result for - these platforms is hardcoded in localcharset.c. - -2009-01-24 Bruno Haible - - Add support for non-UTF-8 locales on MacOS X. - * config.charset: Add CP1131, ARMSCII-8, PT154 to the list of canonical - encodings. For Darwin 7 and newer, don't map traditional encodings to - UTF-8. - Reported by Vincent Lefevre - at . - -2009-01-15 Bruno Haible - - * log.c (MSGCTXT_SEPARATOR): New macro. - (print_escaped): Add an str_end argument. - (_nl_log_untranslated_locked): If msgid1 contains the msgctxt - separator, split it into msgctxt and msgid. - Reported at . - -2008-11-10 Ingo Weinhold - - * config.charset: Treat Haiku like BeOS. - -2008-10-17 Bruno Haible - - * lock.h (gl_carray_waitqueue_t): Renamed from gl_waitqueue_t. - (gl_rwlock_t): Update. - * lock.c (gl_waitqueue_t): Alias to gl_carray_waitqueue_t. - -2008-09-22 Eric Blake - Bruno Haible - - vasnprintf: fix x86/glibc regression on printf("%La", 0.0L) - * vasnprintf.c (VASNPRINTF): Support 0.0 on platforms that supply %A - but mishandle pseudo-NaN. - Reported by Simon Josefsson. - -2008-09-18 Bruno Haible - - * vasnprintf.c (VASNPRINTF): When printing ±0.0L in - NEED_PRINTF_INFINITE_LONG_DOUBLE case with 'e' format, always use two - digits for the exponent. - -2008-09-18 Jim Meyering - Bruno Haible - - * vasnprintf.c (decimal_point_char): Define also if - NEED_PRINTF_INFINITE_LONG_DOUBLE. - -2008-09-16 Bruno Haible - and Eric Blake - - vasnprintf: support Irix 5.3 - * vasnprintf.c (VASNPRINTF): Also handle -0.0L on platforms that - mishandle long double infinity. - Reported by Tom G. Christensen. - -2008-09-02 Eric Blake - - vasnprintf-posix: handle large precision via %.*d - * vasnprintf.c (VASNPRINTF): Don't pass precision to snprintf - when handling it ourselves. - Reported by Alain Guibert. - -2008-07-10 Ben Pfaff - - * vasnprintf.c: Update references to renamed include files. - -2008-05-21 Bruno Haible - - Avoid one more warning from gcc. - * vasnprintf.c (IF_LINT): Update comments. - (VASNPRINTF): Use it also for the 'prefix' array initializer. - -2008-05-21 Jim Meyering - - avoid a warning from gcc - * vasnprintf.c (IF_LINT): Define. - (scale10_round_decimal_long_double): - Use it to avoid a "may be used uninitialized" warning. - (scale10_round_decimal_double): Likewise. - -2008-05-16 Jim Meyering - Bruno Haible - - Avoid some warnings from "gcc -Wshadow". - * vasnprintf.c (exp, remainder): Define to different identifiers. - -2008-04-19 Bruno Haible - - Work around snprintf bug on Linux libc5. - * vasnprintf.c (USE_SNPRINTF): Set to 0 on Linux libc5 systems. - -2008-04-19 Bruno Haible - - * vasnprintf.c (floorlog10l, floorlog10): Reduce maximum error from - 0.0058 to less than 10^-7. - -2008-04-19 Bruno Haible - - Fix rounding when a precision is given. - * vasnprintf.c (is_borderline): New function. - (VASNPRINTF): For %e and %g, consider replacing the digits 10....0 with - 9...9x. - Reported by John Darrington via - Ben Pfaff . - -2008-03-30 Bruno Haible - - Fix buffer overrun. - * vasnprintf.c (VASNPRINTF): If !USE_SNPRINTF && pad_ourselves: - Don't consider the width for tmp_length. Check count against tmp_length - before doing the padding. Ensure enough allocation during padding. - -2008-03-30 Bruno Haible - - * vasnprintf.c (EOVERFLOW): Remove fallback. - -2008-03-30 Bruno Haible - - Fix bug introduced on 2007-06-10. - * vasnprintf.c (VASNPRINTF): When performing zero-padding, use - spaces instead of 0 digits for 's' also when ENABLE_UNISTDIO. - -2008-02-28 Atsushi SAKAI - - * xsize.h: Fix typo in comment: s/tupe/type/. - -2008-02-07 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Don't use %n on native Woe32 systems. - Avoids a crash on Windows Vista. - Reported by Adam Strzelecki via - Simon Josefsson . - -2008-02-06 Bruno Haible - - Fix *printf behaviour regarding the left-adjust flag on HP-UX 10.20. - * vasnprintf.c (VASNPRINTF): Handle NEED_PRINTF_FLAG_LEFTADJUST. - Reported by Peter Fales . - -2008-02-06 Bruno Haible - - Fix bug introduced on 2007-06-10. - * vasnprintf.c (VASNPRINTF): Perform zero-padding also if - !NEED_PRINTF_FLAG_ZERO. - -2008-01-29 Jim Meyering - - vasnprintf.c: Avoid warning about unused label - * vasnprintf.c (VASNPRINTF) [!USE_SNPRINTF]: Guard the - "overflow" label definition and associated code with the - same cpp condition that guards the sole use of that label. - -2008-01-26 Bruno Haible - - Rename isnan, applicable to 'double' only, to isnand. - * vasnprintf.c: Include isnand.h instead of isnan.h. - (is_infinite_or_zero, VASNPRINTF): Use isnand instead of isnan. - -2008-01-08 Jim Meyering - Bruno Haible - - * printf-parse.c (PRINTF_PARSE): Handle a size specifier "q" on MacOS X - and a size specifier "I64" on mingw. Needed for PRIdMAX. - Reported by Peter Fales in - . - -2008-01-10 Eric Blake - - * relocatable.h: Fix a comment. - -2008-01-10 Bruno Haible - - * relocatable.h (relocate): State whether result is freshly allocated - or not. - * relocatable.c (relocate): Return a freshly allocated string instead - of a pointer to a privately held string. - Reported by Sylvain Beucler . - -2008-01-01 Sylvain Beucler - Bruno Haible - - Improve memory cleanup in 'relocatable' module. - * relocatable.h (compute_curr_prefix): Change return type to 'char *'. - * relocatable.c (compute_curr_prefix): Change return type to 'char *'. - Free curr_installdir after use. - (relocate): Free curr_prefix_better after use. - -2008-04-13 Bruno Haible - - * localcharset.c (OS2): Don't redefine if already defined. - Reported by Elbert Pol . - -2008-09-20 Bruno Haible - - * libgnuintl.h.in: Use (defined X && X) idiom to test whether a - possibly undefined macro has a certain value. Pacifies users of the - gcc option -Wundef. - Reported by Christian Weisgerber and - Ralf Wildenhues . - -2008-08-18 Bruno Haible - - * threadlib.c: Include . - -2008-08-18 Bruno Haible - - * lock.h [USE_SOLARIS_THREADS]: Fix glthread_recursive_lock_* macros. - * lock.c (glthread_recursive_lock_destroy_multithreaded): Fix syntax - error. - -2008-08-17 Bruno Haible - - * lock.h: Include always. - -2008-08-17 Bruno Haible - - * threadlib.c: New file, extracted from lock.c. - * lock.c (dummy_thread_func, glthread_in_use): Remove functions. - * Makefile.in (SOURCES): Add threadlib.c. - (OBJECTS): Add threadlib.$lo. - (threadlib.lo): New rule. - -2008-08-14 Bruno Haible - - * lock.h (glthread_lock_lock, glthread_lock_unlock, - glthread_lock_destroy, glthread_rwlock_rdlock, glthread_rwlock_wrlock, - glthread_rwlock_unlock, glthread_rwlock_destroy, - glthread_recursive_lock_lock, glthread_recursive_lock_unlock, - glthread_recursive_lock_destroy): Define as macros always. - * lock.c (glthread_lock_lock_func): Renamed from glthread_lock_lock. - (glthread_lock_unlock_func): Renamed from glthread_lock_unlock. - (glthread_lock_destroy_func): Renamed from glthread_lock_destroy. - (glthread_rwlock_rdlock_func): Renamed from glthread_rwlock_rdlock. - (glthread_rwlock_wrlock_func): Renamed from glthread_rwlock_wrlock. - (glthread_rwlock_unlock_func): Renamed from glthread_rwlock_unlock. - (glthread_rwlock_destroy_func): Renamed from glthread_rwlock_destroy. - (glthread_recursive_lock_lock_func): Renamed from - glthread_recursive_lock_lock. - (glthread_recursive_lock_unlock_func): Renamed from - glthread_recursive_lock_unlock. - (glthread_recursive_lock_destroy_func): Renamed from - glthread_recursive_lock_destroy. - -2008-08-07 Paolo Bonzini - - * lock.c (glthread_recursive_lock_init_multithreaded) - [!PTHREAD_RECURSIVE_MUTEX_INITIALIZER]: Fix typo. - -2008-08-03 Bruno Haible - - Additional non-aborting API for lock. - * lock.h: Include . - (glthread_lock_init): New macro/function. - (gl_lock_init): Define as wrapper around glthread_lock_init. - (glthread_lock_lock): New macro/function. - (gl_lock_lock): Define as wrapper around glthread_lock_lock. - (glthread_lock_unlock): New macro/function. - (gl_lock_unlock): Define as wrapper around glthread_lock_unlock. - (glthread_lock_destroy): New macro/function. - (gl_lock_destroy): Define as wrapper around glthread_lock_destroy. - (glthread_rwlock_init): New macro/function. - (gl_rwlock_init): Define as wrapper around glthread_rwlock_init. - (glthread_rwlock_rdlock): New macro/function. - (gl_rwlock_rdlock): Define as wrapper around glthread_rwlock_rdlock. - (glthread_rwlock_wrlock): New macro/function. - (gl_rwlock_wrlock): Define as wrapper around glthread_rwlock_wrlock. - (glthread_rwlock_unlock): New macro/function. - (gl_rwlock_unlock): Define as wrapper around glthread_rwlock_unlock. - (glthread_rwlock_destroy): New macro/function. - (gl_rwlock_destroy): Define as wrapper around glthread_rwlock_destroy. - (glthread_recursive_lock_init): New macro/function. - (gl_recursive_lock_init): Define as wrapper around - glthread_recursive_lock_init. - (glthread_recursive_lock_lock): New macro/function. - (gl_recursive_lock_lock): Define as wrapper around - glthread_recursive_lock_lock. - (glthread_recursive_lock_unlock): New macro/function. - (gl_recursive_lock_unlock): Define as wrapper around - glthread_recursive_lock_unlock. - (glthread_recursive_lock_destroy): New macro/function. - (gl_recursive_lock_destroy): Define as wrapper around - glthread_recursive_lock_destroy. - (glthread_once): New macro/function. - (gl_once): Define as wrapper around glthread_once. - Update function declarations. - * lock.c (glthread_rwlock_init_multithreaded): Renamed from - glthread_rwlock_init. Return error code. - (glthread_rwlock_rdlock_multithreaded): Renamed from - glthread_rwlock_rdlock. Return error code. - (glthread_rwlock_wrlock_multithreaded): Renamed from - glthread_rwlock_wrlock. Return error code. - (glthread_rwlock_unlock_multithreaded): Renamed from - glthread_rwlock_unlock. Return error code. - (glthread_rwlock_destroy_multithreaded): Renamed from - glthread_rwlock_destroy. Return error code. - (glthread_recursive_lock_init_multithreaded): Renamed from - glthread_recursive_lock_init. Return error code. - (glthread_recursive_lock_lock_multithreaded): Renamed from - glthread_recursive_lock_lock. Return error code. - (glthread_recursive_lock_unlock_multithreaded): Renamed from - glthread_recursive_lock_unlock. Return error code. - (glthread_recursive_lock_destroy_multithreaded): Renamed from - glthread_recursive_lock_destroy. Return error code. - (glthread_once_call): Make static. - (glthread_once_multithreaded): Renamed from glthread_once. - Suggested by Yoann Vandoorselaere . - -2008-03-30 Ulrich Drepper - - [BZ #5443] - * dcigettext.c (__dcigettext): Get reader lock for locale data before - looking for translation. - -2008-03-30 Jakub Jelinek - - * dcigettext.c (_nl_find_msg): Reread nconversions after acquiring - wrlock. Do conv_tab allocation while holding lock. - - -2008-02-10 Jim Meyering - - * bindtextdom.c (set_binding_values): Remove useless "if" before "free". - * loadmsgcat.c (_nl_load_domain, _nl_unload_domain): Likewise. - -2008-05-27 Bruno Haible - - * localename.c (SUBLANG_TIBETAN_BHUTAN): Force value 2. Needed for - current mingw. - Reported by Jose E. Marchesi . - -2008-04-21 Bruno Haible - - * localename.c (SUBLANG_TIBETAN_PRC, SUBLANG_TIBETAN_BHUTAN): Actually - assign a value. - -2008-04-17 Bruno Haible - - * lock.h (gl_lock_destroy, gl_rwlock_destroy, - gl_recursive_lock_destroy): Provide no-op definitions for the dummy - implementation. - Patch by Bruce Merry . - -2008-04-16 Bruno Haible - - * localename.c (LANG_MAORI, LANG_QUECHUA, LANG_SOTHO, LANG_UIGHUR): New - macros. - (SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN, - SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC, - SUBLANG_CROATIAN_CROATIA, SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN, - SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA, SUBLANG_MONGOLIAN_PRC, - SUBLANG_QUECHUA_BOLIVIA, SUBLANG_QUECHUA_ECUADOR, SUBLANG_QUECHUA_PERU, - SUBLANG_RUSSIAN_RUSSIA, SUBLANG_RUSSIAN_MOLDAVIA, SUBLANG_SPANISH_US, - SUBLANG_TIBETAN_PRC, SUBLANG_TIBETAN_BHUTAN, SUBLANG_UIGHUR_PRC): New - macros. - (gl_locale_name_from_win32_LANGID): Refine code for Croatian/Bosnian, - Mongolian, Russian, Spanish, Tibetan. Add code for Maori, Quechua, - Northern Sotho, Uighur. - -2008-04-16 Bruno Haible - - * localename.c (SUBLANG_SINDHI_INDIA): New macro. - (SUBLANG_SINDHI_PAKISTAN): Change value from 1 to 2. - (gl_locale_name_from_win32_LANGID): Fix code for Sindhi. - Reported by Daniel Bergström . - -2007-12-25 KJK::Hyperion - Bruno Haible - - * gettextP.h (gl_locale_name_from_win32_LANGID, - gl_locale_name_from_win32_LCID): New macros. - * localename.c (gl_locale_name_canonicalize) [WIN32_NATIVE]: New - function. - (gl_locale_name_from_win32_LANGID, gl_locale_name_from_win32_LCID): - New functions, mostly extracted from gl_locale_name_default. - (gl_locale_name_default): Use gl_locale_name_from_win32_LCID. - * langprefs.c [WIN32_NATIVE] (_nl_locale_name_canonicalize, - _nl_locale_name_from_win32_LANGID, _nl_locale_name_from_win32_LCID): - New declarations. - (_nl_language_preferences_win32_mui, _nl_language_preferences_win32_ME, - _nl_language_preferences_win32_95, ret_first_language, - _nl_language_preferences_win32_system): New functions. - (_nl_language_preferences_default): Use them. - -2007-11-30 Bruno Haible - - * lock.h (gl_recursive_lock_init) [PTHREAD && - PTHREAD_RECURSIVE_MUTEX_INITIALIZER]: Call - glthread_recursive_lock_init. - * lock.c (glthread_recursive_lock_init) - [PTHREAD_RECURSIVE_MUTEX_INITIALIZER]: New function. - Reported by Yoann Vandoorselaere . - -2007-11-28 Bruno Haible - - * libgnuintl.h.in (fprintf, vfprintf, printf, vprintf, sprintf, - vsprintf, snprintf, vsnprintf, asprintf, vasprintf): Don't override - definitions made by gnulib. - Reported by Jim Meyering . - -2007-11-28 Bruno Haible - - * l10nflist.c (_nl_normalize_codeset): Change type of 'len' variable - to size_t. - Patch by Wim Lewis. - -2007-11-26 Bruno Haible - - * vasnprintf.c (decode_long_double): Don't abort if the 'long double' - type has excess precision. - Reported by Jim Meyering in - . - -2007-11-15 Bruno Haible - - Avoid crash by stack overflow when msgid is very long. - * dcigettext.c (struct known_translation_t): Turn msgid into a union. - (transcmp): Use the appropriate part of s1->msgid and s2->msgid. - (DCIGETTEXT): Change the allocation of the 'search' variable so that - it needs only fixed stack space. Delay the initialization of - msgid_len until it is needed. - Reported by Laurent Gaffié via - Ismail Dönmez . - -2007-11-14 Bruno Haible - - * config.charset: Update for OpenBSD 4.1. - Reported and helped by Ben Pfaff . - -2007-11-09 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Ensure that we never call snprintf with a - size argument < 2. - -2007-11-09 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Increase reallocation of snprintf buffer. - Fixes an inefficiency introduced on 2007-11-03. - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2007-11-05 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Expand the NEED_PRINTF_DIRECTIVE_A - code when NEED_PRINTF_LONG_DOUBLE or NEED_PRINTF_DOUBLE is set. - Needed on Cygwin, where !NEED_PRINTF_DIRECTIVE_A && NEED_PRINTF_DOUBLE. - Reported by Eric Blake. - -2007-11-04 Bruno Haible - - * lock.h: Protect all macro definitions containing an 'if' statement - through a "do { ... } while (0)". - -2007-11-04 Bruno Haible - - * vasnprintf.c (DCHAR_IS_TCHAR, DCHAR_CPY): Undefine at the end. - -2007-06-11 Bruno Haible - - * printf-args.c (PRINTF_FETCHARGS) [ENABLE_UNISTDIO]: Fix NULL - replacement string. - Reported by Eric Blake. - -2007-06-10 Bruno Haible - - * printf-args.h (PRINTF_FETCHARGS): New macro. - (arg_type) [ENABLE_UNISTDIO]: Define TYPE_U8_STRING, TYPE_U16_STRING, - TYPE_U32_STRING. - (argument) [ENABLE_UNISTDIO]: Add a_u8_string, a_u16_string, - a_u32_string variants. - (PRINTF_FETCHARGS): Renamed from printf_fetchargs. - * printf-args.c: Don't include config.h and the specification header - if PRINTF_FETCHARGS is already defined. - (PRINTF_FETCHARGS): Renamed from printf_fetchargs. - (PRINTF_FETCHARGS) [ENABLE_UNISTDIO]: Add code for TYPE_U8_STRING, - TYPE_U16_STRING, TYPE_U32_STRING. - -2007-11-04 Bruno Haible - - * Makefile.in (libintl.res): Use 'c' command instead of 'a' command. - Needed for GNU sed 3.02. - -2007-11-04 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Handle NEED_PRINTF_UNBOUNDED_PRECISION. - -2007-11-04 Bruno Haible - - * vasnprintf.c (scale10_round_decimal_decoded): Fix shift loop. - -2007-11-03 Bruno Haible - - * vasnprintf.c: Implement NEED_PRINTF_DOUBLE. - (decode_double): New function, copied from decode_long_double. - (scale10_round_decimal_decoded): New function, extracted from - scale10_round_decimal_long_double. - (scale10_round_decimal_long_double): Use it. - (scale10_round_decimal_double): New function. - (floorlog10): New function. - (VASNPRINTF): Handle NEED_PRINTF_DOUBLE case. - -2007-11-03 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Don't assume that snprintf's return value - is C99 compliant. - Needed for OSF/1 5.1. - -2007-11-03 Bruno Haible - - Fix out-of-memory handling of vasnprintf. - * printf-parse.c: Include . - (PRINTF_PARSE): When failing, set errno to EINVAL or ENOMEM. - * vasnprintf.c (VASNPRINTF): When PRINTF_PARSE fails, assume errno is - already set. - -2007-10-20 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Don't report overflow if the available - length is INT_MAX and sizeof (DCHAR_T) > sizeof (TCHAR_T). - Reported by Ralf Wildenhues . - -2007-10-18 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Don't use %n on glibc >= 2.3 systems. - Reported by Jim Meyering. - -2007-07-13 Bruno Haible - - * vasnprintf.c (decimal_point_char): Define also if - (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) - && !NEED_PRINTF_DIRECTIVE_A. - Reported by Clemens Koller via - Gary V. Vaughan . - -2007-06-10 Bruno Haible - - * vasnprintf.c: Don't include config.h and the specification header if - VASNPRINTF is already defined. - (DCHAR_IS_TCHAR, DCHAR_CPY): New macros. - (VASNPRINTF): Use PRINTF_FETCHARGS instead of printf_fetchargs. Use - DCHAR_CPY. Handle the case that DCHAR_T and FCHAR_T are not the same - type. Handle the case that TCHAR_T and FCHAR_T are not of the same - size. Handle the case that DCHAR_T and TCHAR_T are not the same type, - add a conversion from TCHAR_T[] to DCHAR_T[], and rework the padding - code accordingly. - (VASNPRINTF) [ENABLE_UNISTDIO]: Implement the 'U' directive. Enable - pad_ourselves also in this case, with the 'c' and 's' directives, and - with a different notion of "width". - -2007-06-10 Bruno Haible - - * vasnprintf.c (VASNPRINTF) [!USE_SNPRINTF]: Remove variable - 'maxlen'. Ensure only length + width bytes are allocated, not - length + 1 + width. - -2007-06-09 Bruno Haible - - * vasnprintf.c (FCHAR_T, DCHAR_T, TCHAR_T): New macros. - (CHAR_T): Remove macro. - (VASNPRINTF): Update. - -2007-06-05 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Do the extra handling of NaN and Inf - also the %a / %A. Handle the %a / %A code before this extra handling. - -2007-06-05 Bruno Haible - - * vasnprintf.c [NEED_PRINTF_LONG_DOUBLE || - NEED_PRINTF_INFINITE_LONG_DOUBLE]: Include fpucw.h. - -2007-11-01 Bruno Haible - - * libgnuintl.h.in (LIBINTL_VERSION): Bump to 0.17. - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 8:2:0. - -2007-10-28 Ulrich Drepper - - * locale.alias: Add note that this file should never be depended on. - -2007-10-27 Bruno Haible - - * Makefile.in (libintl.la): Use @LTLIBC@ instead of -lc. Needed on - HP-UX 11. - -2007-10-21 Bruno Haible - - * printf-parse.c: Don't assume exists in IN_LIBASPRINTF - context. - -2007-10-21 Bruno Haible - - * dcigettext.c (_nl_find_msg): Use plain ANSI C. - -2007-10-20 Bruno Haible - - * Makefile.in (libintl.res): Put more literal newlines into the sed - scripts. - -2007-10-14 Bruno Haible - - * dcigettext.c (DCIGETTEXT): Save errno also around the tfind() call. - Needed because Interix 3.5 tfind() clobbers errno. - Reported by Martin Koeppe . - -2007-10-13 Bruno Haible - - * gettextP.h: Include or lock.h. - * dcigettext.c (_nl_find_msg): Unlock the conversions_lock when - exiting. - -2007-09-24 Ulrich Drepper - - [BZ #5058] - http://sourceware.org/bugzilla/show_bug.cgi?id=5058 - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=443660 - * gettextP.h (struct loaded_domain): Add conversions_lock member. - * loadmsgcat.c (_nl_load_domain): Initialize conversions_lock. - (_nl_unload_domain): Finalize conversions_lock. - * dcigettext.c (_nl_find_msg): Take conversions_lock before handling - table of known conversions. - -2007-08-03 Jakub Jelinek - - * dcigettext.c (_nl_find_msg): Free encoding if __gconv_open failed. - * finddomain.c (_nl_find_domain): Free normalized_codeset on failure. - -2007-07-26 Jakub Jelinek - - * gettextP.h (struct loaded_domain): Change plural to const - struct expression *. - * eval-plural.h (plural_eval): Change first argument to - const struct expression *. - * plural-exp.c (EXTRACT_PLURAL_EXPRESSION): Change first argument to - const struct expression **. - * plural-exp.h (EXTRACT_PLURAL_EXPRESSION, plural_eval): Adjust - prototypes. - * loadmsgcat.c (_nl_unload_domain): Cast away const in call to - __gettext_free_exp. - -2007-07-19 Jakub Jelinek - - * dcigettext.c (_nl_find_msg): Return NULL even if __gconv_open - returns __GCONV_NOCONV, but not for __GCONV_NULCONV. - -2007-07-11 Jakub Jelinek - - * finddomain.c (_nl_find_domain): If _nl_explode_name returned -1, - return NULL. - * explodename.c (_nl_explode_name): Return -1 if _nl_normalize_codeset - failed. - -2007-06-10 Bruno Haible - - * printf-parse.c: Don't include config.h and the specification - header if PRINTF_PARSE is already defined. Eliminate the set of - parameters for WIDE_CHAR_VERSION; the user of this file must provide - them now. Include c-ctype.h. - (PRINTF_PARSE) [ENABLE_UNISTDIO]: Add code implementing the 'U' - directive and CHAR_T_ONLY_ASCII. - * printf.c: Include wprintf-parse.h. Define the set of parameters for - the WIDE_CHAR_VERSION. - -2007-06-07 Bruno Haible - - * gettextP.h (gl_locale_name_canonicalize, gl_locale_name_posix, - gl_locale_name_default, gl_locale_name): New macros. - (_nl_locale_name_canonicalize): New declaration. - * localename.c: Include config.h unconditionally. Include gettextP.h or - localename.h. - (gl_locale_name_canonicalize): Renamed from - _nl_locale_name_canonicalize. Make static except in libintl. - (gl_locale_name_posix): Renamed from _nl_locale_name_posix. - (gl_locale_name_default): Renamed from _nl_locale_name_default. - (gl_locale_name): Renamed from _nl_locale_name. - -2007-05-28 Bruno Haible - - * libintl.rc: New file. - * Makefile.in (DISTFILES.common): Add it. - (WINDRES): New variable. - (OBJECTS_RES_yes, OBJECTS_RES_no): New variables. - (libintl.la, libgnuintl.la): Include also $((OBJECTS_RES_...). - (libintl.res): New rule. - (mostlyclean): Remove also libintl.res. - -2007-05-21 Bruno Haible - - * vasnprintf.c: Update comments. - -2007-03-24 Bruno Haible - - * tsearch.c [!IN_LIBINTL]: Include search.h instead of tsearch.h. - -2007-05-20 Bruno Haible - - * vasnprintf.c: Use NEED_PRINTF_INFINITE_DOUBLE instead of - NEED_PRINTF_INFINITE. - (is_infinitel): New function. - (VASNPRINTF): Handle NEED_PRINTF_INFINITE_LONG_DOUBLE case. - -2007-05-19 Bruno Haible - - * vasnprintf.c: Include math.h and isnan.h. - (is_infinite_or_zero): New function. - (VASNPRINTF): Fix also the handling of infinite or zero 'double' - values in the %f, %F, %e, %E, %g, %G directives. - -2007-05-19 Bruno Haible - - * vasnprintf.c (convert_to_decimal): Add an extra_zeroes argument. - (scale10_round_decimal_long_double): Inline scale10_round_long_double. - Instead of multiplying with 10^k, set extra_zeroes to k. - (scale10_round_long_double): Remove function. - -2007-05-18 Bruno Haible - - * vasnprintf.c (VASNPRINTF) [NEED_PRINTF_FLAG_ZERO]: Fix logic bug - introduced on 2007-05-06. - -2007-05-18 Bruno Haible - - * vasnprintf.c: Include math.h and float+.h. - (mp_limb_t): New type. - (GMP_LIMB_BITS): New macro. - (mp_twolimb_t): New type. - (GMP_TWOLIMB_BITS): New macro. - (mpn_t): New type. - (multiply, divide, convert_to_decimal, decode_long_double, - scale10_round_long_double, scale10_round_decimal_long_double, - floorlog10l): New functions. - (VASNPRINTF) [NEED_PRINTF_LONG_DOUBLE]: Implement 'long double' support - for the %f, %F, %e, %E, %g, %G directives. - -2007-05-18 Bruno Haible - - * vasnprintf.c (USE_SNPRINTF): Define to 0 on BeOS. - -2007-05-18 Bruno Haible - - * vasnprintf.c (VASNPRINTF) [WIN32]: Use %I64d instead of %lld for - printing 64-bit integers. Needed for mingw. - -2007-05-06 Bruno Haible - - * vasnprintf.c (VASNPRINTF) [NEED_PRINTF_FLAG_ZERO]: Perform the - padding ourselves for the floating-point directives. - -2007-05-06 Bruno Haible - - * vasnprintf.c (VASNPRINTF) [NEED_PRINTF_FLAG_GROUPING]: Don't pass - the ' flag character to sprintf or snprintf. - -2007-04-11 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Implement the %F directive using the %f - directive, if NEED_PRINTF_DIRECTIVE_F is defined. - -2007-04-06 Bruno Haible - - * vasnprintf.c: Include . Don't include float+.h. - (VASNPRINTF): Use signbit for faster determination whether to print a - minus sign. - -2007-03-27 Bruno Haible - - * vasnprintf.c (decimal_point_char): New function. - (VASNPRINTF): Use it. - -2007-03-25 Bruno Haible - - * vasnprintf.c: Include langinfo.h. - (VASNPRINTF): Prefer nl_langinfo over localeconv, since it's more - multithread-safe. - -2007-03-24 Bruno Haible - - * vasnprintf.c: Include fpucw.h. - (VASNPRINTF): Invoke BEGIN/END_LONG_DOUBLE_ROUNDING around the - 'long double' calculations. - -2007-03-24 Bruno Haible - - * vasnprintf.c: Include float+.h. - (VASNPRINTF): When comparing against +0.0L or +0.0, compare only - SIZEOF_LDBL or SIZEOF_DBL bytes. - -2007-03-24 Bruno Haible - - * vasnprintf.c [!HAVE_LONG_DOUBLE]: Include printf-frexp.h. Don't - include isnanl-nolibm.h. - -2007-03-21 Bruno Haible - - * vasnprintf.c: Update after isnanl.h was renamed to isnanl-nolibm.h. - -2007-03-18 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Undo first part of last patch. - -2007-03-17 Bruno Haible - - * vasnprintf.c (EOVERFLOW): New fallback definition. - (VASNPRINTF): Fail with EOVERFLOW when the given allocated size is - larger than INT_MAX, or when it grow to a value larger than INT_MAX. - -2007-03-17 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Clear out the memory used for arg_mem - before comparing it. Needed because on some platforms (e.g. x86) a - 'long double' occupies less bytes than sizeof (long double). - -2007-03-11 Bruno Haible - - * vasnprintf.c (sprintf): Undefine. - -2007-03-11 Bruno Haible - - * vasnprintf.c (snprintf): Undefine. Avoids an endless recursion. - -2007-03-09 Bruno Haible - - * vasnprintf.c (VASNPRINTF): For the 'a' and 'A' directives, use a - locale dependent decimal point, rather than always '.'. - -2007-03-04 Bruno Haible - - * vasnprintf.c: Include isnan.h, isnanl.h, printf-frexp.h, - printf-frexpl.h. - (VASNPRINTF): Handle the 'a' and 'A' directives here, if needed. - -2007-03-08 Bruno Haible - - * vasnprintf.h: Convert tabs in the middle of lines to spaces. - -2007-05-12 Bruno Haible - - * Makefile.in (install-dvi, install-html, install-info, install-ps, - install-pdf): New targets. - Reported by Noah Slater . - -2007-04-06 Bruno Haible - - * printf-args.h: Assume HAVE_LONG_DOUBLE to be true. - * printf-args.c: Likewise. - * printf-parse.c: Likewise. - * vasnprintf.c: Likewise. - -2007-03-25 Bruno Haible - - * printf-parse.c [!IN_LIBINTL]: Include , for intmax_t. - (PRINTF_PARSE): Make the support for size specifier 'j' unconditional. - -2007-03-04 Bruno Haible - - * libgnuintl.h.in (libintl_printf): Treat BeOS like NetBSD and Woe32 - systems. - * printf.c (libintl_printf): Likewise. - -2007-02-25 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Fix estimate of size needed for a 'a' or - 'A' conversion. - -2007-01-29 Bruno Haible - - * printf-args.h: Use '#if HAVE_*' instead of '#ifdef HAVE_*'. - * printf-args.c: Likewise. - * printf-parse.c: Likewise. - * vasnprintf.c: Likewise. - -2007-01-27 Bruno Haible - - * tsearch.h: New file, from gnulib. - * tsearch.c: New file, from gnulib. - * dcigettext.c [!HAVE_TSEARCH]: Include tsearch.h and tsearch.c. - (root, transcmp): Define unconditionally. - (DCIGETTEXT): Assume tsearch exists. - * Makefile.in (HEADERS): Add tsearch.h, tsearch.c. - -2006-12-21 Bruno Haible - - * localename.c (SUBLANG_BENGALI_INDIA): Change value from 0 to 1. - (SUBLANG_BENGALI_BANGLADESH): Change value from 1 to 2. - (SUBLANG_PUNJABI_INDIA): Change value from 0 to 1. - (SUBLANG_PUNJABI_PAKISTAN): Change value from 1 to 2. - (SUBLANG_ROMANIAN_ROMANIA): Change value from 0 to 1. - (SUBLANG_ROMANIAN_MOLDOVA): Change value from 1 to 2. - (SUBLANG_SINDHI_INDIA): Remove macro. - (SUBLANG_SINDHI_AFGHANISTAN): New macro. - (SUBLANG_TAMAZIGHT_ALGERIA_LATIN): Renamed from - SUBLANG_TAMAZIGHT_LATIN. - (SUBLANG_TIGRINYA_ETHIOPIA): Change value from 0 to 1. - (SUBLANG_TIGRINYA_ERITREA): Change value from 1 to 2. - (_nl_locale_name_default): Update. - Reported by Bob Rossi . - -2006-10-30 Bruno Haible - - * plural-exp.h [C++]: Define functions without name mangling. - -2006-11-03 Bruno Haible - - Move declarations to header files. - * dcigettext.c: Include localcharset.h. - (get_output_charset): Remove locale_charset declaration. - -2006-10-30 Bruno Haible - - Move declarations to header files. - * gettextP.h (_nl_default_dirname, _nl_domain_bindings): New - declarations and aliases. - (_nl_default_default_domain, _nl_current_default_domain): New - declarations and aliases. - * bindtextdom.c (_nl_default_dirname, _nl_domain_bindings): Remove - declarations and aliases. - * dcigettext.c (_nl_default_default_domain, _nl_current_default_domain, - _nl_default_dirname, _nl_domain_bindings): Remove aliases. - * textdomain.c (_nl_default_default_domain, _nl_current_default_domain): - Remove declarations and aliases. - -2006-11-01 Bruno Haible - - * printf-parse.c (PRINTF_PARSE): Cast malloc/realloc results. - -2006-10-29 Bruno Haible - - Make it compile in C++ mode. - * gettextP.h (SWAP): Don't use K&R syntax in C++ mode. - * gmo.h (struct segment_pair): Move out of the scope of struct - sysdep_string. - * dcigettext.c (DCIGETTEXT): Cast mempcpy results. - * loadmsgcat.c (_nl_load_domain): Cast alloca result. - * localealias.c (read_alias_file): Cast memcpy result. - * plural-exp.h (enum expression_operator): Move out of the scope of - struct expression. Rename from 'enum operator'. - * plural-exp.c (plvar, plone, GERMANIC_PLURAL): Don't use C99 named - initializer syntax in C++ mode. - * plural.y (%union, new_exp, new_exp_0, new_exp_1, new_exp_2, - new_exp_3): Update. - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-10-24 Bruno Haible - - * localename.c (HAVE_LOCALE_NULL): Test __GLIBC__ instead of - __GNU_LIBRARY__. - -2006-10-24 Bruno Haible - - * libgnuintl.h.in (LIBINTL_VERSION): Bump to 0.16. - -2006-10-18 Bruno Haible - - * lock.h [C++]: Wrap definitions in extern "C". - -2006-10-17 Paul Eggert - - * localcharset.c: Do not check HAVE_SETLOCALE. - -2006-10-09 Bruno Haible - - * langprefs.c: Update comment about locale name syntax. - * localename.c: Likewise. - -2006-10-11 Paul Eggert - Bruno Haible - - * printf-args.h (arg_type, argument): Test HAVE_LONG_LONG_INT - instead of HAVE_LONG_LONG. - * printf-args.c (printf_fetchargs): Likewise. - * printf-parse.c (PRINTF_PARSE): Likewise. - * vasnprintf.c (VASNPRINTF): Likewise. - -2006-10-08 Bruno Haible - - * printf.c: Include errno.h, limits.h. - (EOVERFLOW): New fallback definition. - (libintl_vfprintf): Test whether the output length is > INT_MAX. - (libintl_vsprintf): Likewise. - (libintl_vsnprintf): Fix bug when vasnprintf requested more space than - needed. Fix return value when the entire result string would be larger - than the provided buffer. Test whether the output length is > INT_MAX. - (libintl_vasprintf): Test whether the output length is > INT_MAX. - (libintl_vfwprintf): Likewise. - (libintl_vswprintf): Fix bug when vasnwprintf requested more space than - needed. Test whether the output length is > INT_MAX. - -2006-09-14 Bruno Haible - - * lock.c: Include unconditionally. - * printf-args.c: Likewise. - * printf-parse.c: Likewise. - * relocatable.c: Likewise. - * vasnprintf.c: Likewise. - -2006-08-26 Bruno Haible - - * vasnprintf.c (EOVERFLOW): Remove definition. - (VASNPRINTF): Return a string of length > INT_MAX without failing. - -2006-10-02 Bruno Haible - - * libgnuintl.h.in (LIBINTL_VERSION): Bump to 0.15.1. - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 8:1:0. - -2006-09-14 Bruno Haible - - * localcharset.c: Include unconditionally. - -2006-09-10 Bruno Haible - - * Makefile.in (install_sh): New variable. - Fixes "make install" errors in packages that have no 'mkinstalldirs' - file and use automake <= 1.9.x, on platforms where 'mkdir' does not - support the -p option. - - * Makefile.in (mkinstalldirs): Prefix with $(SHELL). - -2006-08-29 Bruno Haible - - * localcharset.c: Include configmake.h in order to get LIBDIR defined. - -2006-08-18 Ralf Wildenhues - - * Makefile.in (MKDIR_P): New variable. Needed by $(mkdir_p) with - Automake-1.10. - -2006-07-29 Bruno Haible - - * localcharset.c: Assume , , exist. - -2006-07-25 Bruno Haible - - * Makefile.msvc: Remove file. - * Makefile.in (DISTFILES.gettext): Remove libgnuintl.h.msvc-static, - libgnuintl.h.msvc-shared, Makefile.msvc. - (DISTFILES.obsolete): Add libgnuintl.h.msvc-static, - libgnuintl.h.msvc-shared, Makefile.msvc. - -2006-07-25 Bruno Haible - - * Makefile.vms: Remove file. - * Makefile.in (DISTFILES.gettext): Remove libgnuintl.h_vms, - Makefile.vms. - (DISTFILES.obsolete): Add libgnuintl.h_vms, Makefile.vms. - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2006-07-21 Bruno Haible - - * Makefile.in (mkinstalldirs): New variable. Needed for mkdir_p. - -2006-07-20 Bruno Haible - - * dcigettext.c (HAVE_NL_LOCALE_NAME): Undefine. - -2006-07-20 Bruno Haible - - * libgnuintl.h.in (LIBINTL_VERSION): Bump to 0.15.0. - -2006-07-20 Bruno Haible - - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 8:0:0. - -2006-07-13 Bruno Haible - - * printf.c (libintl_printf): Define to __printf__ on NetBSD, Cygwin, - mingw. - Reported by haibin zhang . - -2006-06-22 Ulrich Drepper - - * dcigettext.c (DCIGETTEXT): If _nl_find_msg returns -1 don't look - further, return original strings. - (_nl_find_msg): Do not return found translation if the conversion - failed. Either signal the string is unusable or that something went - wrong and the original should be used. - -2006-06-23 Bruno Haible - - * l10nflist.c (__argz_count, __argz_stringify, __argz_next): Define - using the non-underscored functions when available. Avoids warnings - on Cygwin. - Reported by Eric Blake. - -2006-06-19 Bruno Haible - - * libgnuintl.h.in (libintl_printf): Define to __printf__ on NetBSD, - Cygwin, mingw. - Reported by Henry Nelson . - -2006-06-17 Bruno Haible - - * bindtextdom.c (gl_rwlock_define, gl_rwlock_wrlock, gl_rwlock_unlock) - [_LIBC]: New macros. - (_nl_state_lock, set_binding_values): Use gl_rwlock_* instead of - __libc_rwlock_*. - * dcigettext.c (gl_rwlock_define_initialized, gl_rwlock_rdlock, - gl_rwlock_wrlock, gl_rwlock_unlock) [_LIBC]: New macros. - (tree_lock, _nl_state_lock, DCIGETTEXT): Use gl_rwlock_* instead of - __libc_rwlock_*. - * finddomain.c (gl_rwlock_define_initialized, gl_rwlock_rdlock, - gl_rwlock_wrlock, gl_rwlock_unlock) [_LIBC]: New macros. - (_nl_find_domain): Use gl_rwlock_* instead of __libc_rwlock_*. - * textdomain.c (gl_rwlock_define, gl_rwlock_wrlock, gl_rwlock_unlock) - [_LIBC]: New macros. - (_nl_state_lock, TEXTDOMAIN): Use gl_rwlock_* instead of - __libc_rwlock_*. - Needed because NetBSD 3.0 does - #define pthread_rwlock_rdlock __libc_rwlock_rdlock etc. - -2006-06-17 Bruno Haible - - * config.charset: Update for NetBSD 3.0. - -2006-05-24 Bruno Haible - - * printf-args.c (printf_fetchargs): Turn NULL pointers for - TYPE_STRING and TYPE_WIDE_STRING into a non-NULL replacement. - Reported by Thorsten Maerz via - Aaron Stone . - -2006-05-15 Ulrich Drepper - - * dcigettext.c (category_to_name): Adjust for _nl_category_names - change. - -2006-04-06 Ulrich Drepper - - * finddomain.c (_nl_find_domain): We never return NULL if we found the - locale. - -2005-12-21 Roland McGrath - - * l10nflist.c (_nl_make_l10nflist): Free ABS_FILENAME when later malloc - fails. - -2006-05-17 Bruno Haible - - Cygwin portability. - * loadinfo.h (PATH_SEPARATOR) [CYGWIN]: Define as ':'. - * localename.c (WIN32_NATIVE): Renamed from WIN32. - * localcharset.c (WIN32_NATIVE): Renamed from WIN32. - -2006-05-16 Bruno Haible - - * localcharset.c [CYGWIN]: Include . - (get_charset_aliases): For Cygwin, return the same CPxxx aliases list - as under WIN32. - (locale_charset) [CYGWIN]: Try to retrieve the encoding from the - environment variables. Fall back to GetACP(). - -2006-05-15 Bruno Haible - - * Makefile.in (LDFLAGS, libgnuintl.h): Treat mingw like Cygwin. - -2006-05-15 Bruno Haible - - * libgnuintl.h.in: Move the _INTL_MAY_RETURN_STRING_ARG annotations - from the function definition to the function declaration. Needed in - C++ mode. - -2006-05-11 Bruno Haible - - * intl-exports.c: New file. - * osdep.c: Include it on Cygwin. - * Makefile.in (LDFLAGS_yes, LDFLAGS_no): New variables. - (LDFLAGS): Use it. - (SOURCES): Add intl-exports.c. - (libgnuintl.h): When compiling a DLL on Cygwin, mark all exported - variables as to be imported. - -2006-04-17 Bruno Haible - - * Makefile.in (MKINSTALLDIRS, mkinstalldirs): Remove variables. - (mkdir_p): New variable. - (install-exec, install-data, installdirs): Use $(mkdir_p) instead of - $(mkinstalldirs). - -2006-04-05 Bruno Haible - - * config.charset: Update Juan Manuel Guerrero's address. - -2006-03-11 Bruno Haible - - * libgnuintl.h.in (_INTL_MAY_RETURN_STRING_ARG): Define to empty when - using g++ on MacOS X. - -2006-01-22 Bruno Haible - - * vasnprintf.c (VASNPRINTF): In the computation of the size of the - temporary buffer for sprintf, take into account the precision also - for 'd', 'i', 'u', 'o', 'x', 'X'. - -2006-01-10 Bruno Haible - - * localcharset.c: Assume ANSI C. Fixes a gcc warning. - Reported by Werner Lemberg . - -2005-12-25 Bruno Haible - - Fix compilation error when plural.c is generated by bison-2.1. - * Makefile.in (PLURAL_DEPS_yes, PLURAL_DEPS_no): New macros. - (plural.$lo): Add conditional dependency to libintl.h. - -2005-12-04 Bruno Haible - - Cygwin portability. - * relocatable.c: Include also on Cygwin. - (DllMain): Add support for Cygwin. - (get_shared_library_fullname): Update. - Patches partially from Charles Wilson . - -2005-10-09 Bruno Haible -2002-07-24 Ulrich Drepper - - * explodename.c (_nl_explode_name): Simplify. - -2005-10-09 Bruno Haible -2002-07-24 Ulrich Drepper - - * explodename.c: Recognize the syntax - language[_territory][.codeset][@modifier] - instead of only - language[_territory[.codeset]][@modifier] - (_nl_find_language): Accept '.' as terminator. - (_nl_explode_name): Accept to parse a codeset without a territory. - Accept an underscore in the territory. - -2005-10-09 Bruno Haible -2002-07-24 Ulrich Drepper - - * explodename.c (_nl_find_language, _nl_explode_name): Remove support - for CEN-style locale variables. It was never used and shouldn't be - since it's not portable. - * finddomain.c (_nl_find_domain): Likewise. - * l10nflist.c (_nl_make_l10nflist): Likewise. - * loadinfo.h (_nl_make_l10nflist, _nl_explode_name): Likewise. - (CEN_*, XPG_SPECIFIC): Remove macros. - (XPG_TERRITORY): Renamed from TERRITORY. - -2005-08-28 Bruno Haible - - * libgnuintl.h.in: Add IN_LIBGLOCALE conditional. - * Makefile.in (libgnuintl.h, libintl.h): Remove the IN_LIBGLOCALE - conditional. - * dcigettext.c [IN_LIBGLOCALE]: Include also , for - bindtextdomain(). - -2005-08-25 Bruno Haible - - * libintl.glibc: Update from current glibc. - * libgnuintl.h.in (_INTL_MAY_RETURN_STRING_ARG): New macro. - (gettext, dgettext, dcgettext, ngettext, dngettext, dcngettext): - -2005-08-21 Bruno Haible - - * lock.h: Add multiple inclusion guard. - -2005-08-19 Bruno Haible - - * localealias.c (read_alias_file): In case of failure, close the - file descriptor and sort the array before returning. - -2005-08-19 Bruno Haible - - * localealias.c (read_alias_file) [IN_LIBGLOCALE]: Ignore aliases - containing an underscore. - -2005-07-31 Bruno Haible - - Make code usable in libglocale. - * gettextP.h (gl_dcigettext): New declaration. - (_nl_msg_cat_cntr): Export also from libglocale. - (_nl_find_msg): In libglocale, take the encoding as argument and no - convert flag. - * dcigettext.c (HAVE_PER_THREAD_LOCALE): Define in libglocale. - (struct known_translation_t): In libglocale, add encoding field. - (transcmp): In libglocale, compare also the encoding fields. - (libintl_version): Don't define in libglocale. - (_nl_current_default_domain, _nl_domain_bindings): Likewise. - (DCIGETTEXT): In libglocale, also take the localename and encoding - as arguments. Don't call nl_langinfo. Instead of walking the other - library's _nl_domain_bindings, use bindtextdomain. - (_nl_find_msg): In libglocale, take the encoding as argument and no - convert flag. Don't call get_output_charset. - (guess_category_value): In libglocale, take the locale name as - argument. Don't call __current_locale_name or uselocale or - _nl_locale_name_posix and _nl_locale_name_default. - (get_output_charset): Don't define in libglocale. - * loadmsgcat.c (_nl_load_domain): Update. - * plural-exp.h (plural_eval): Don't declare in libglocale. - -2005-08-03 Bruno Haible - - * Makefile.in: Add comments about VPATH. - -2005-07-31 Bruno Haible - - * lock.h (gl_lock_initializer): New macro. - (gl_lock_define_initialized): Use it. - (gl_rwlock_initializer): New macro. - (gl_rwlock_define_initialized): Use it. - (gl_recursive_lock_initializer): New macro. - (gl_recursive_lock_define_initialized): Use it. - -2005-07-31 Bruno Haible - - Avoid const-cast. - * dcigettext.c (DCIGETTEXT): Change type of 'dirname' to const char *. - Use an auxiliary variable 'resolved_dirname' of type 'char *'. - -2005-07-31 Bruno Haible - - * dcigettext.c (tree_lock): Remove extraneous semicolon. - -2005-07-25 Bruno Haible - - * libgnuintl.h.in (LIBINTL_VERSION): New macro. - (libintl_version): New declaration. - * version.c: New file. - * Makefile.in (SOURCES): Add version.c. - (OBJECTS): Add version.$lo. - (version.lo): New rule. - * Makefile.msvc (OBJECTS): Add version.obj. - (version.obj): New rule. - * Makefile.vms (OBJECTS): Add version.obj. - (version.obj): New rule. - -2005-07-25 Bruno Haible - - * intl-compat.c (DLL_EXPORTED) [HAVE_VISIBILITY]: Define to the gcc - visibility attribute. - -2005-07-24 Bruno Haible - - Tidy up exported symbols. - * export.h: New file. - * gettextP.h: Move declarations so that libgnuintl.h is included - before loadinfo.h. Needed because libgnuintl.h defines - LIBINTL_DLL_EXPORTED and loadinfo.h uses it. - (_nl_msg_cat_cntr): Export. - * loadinfo.h (LIBINTL_DLL_EXPORTED): Provide fallback declaration. - (_nl_expand_alias): Export. - * bindtextdom.c: Include gettextP.h before libgnuintl.h. Needed so - that _INTL_REDIRECT_MACROS is defined when libgnuintl.h is included. - Otherwise libgnuintl.h may choose to use _INTL_REDIRECT_ASM, and then - gcc-4.0 ignores visibility declarations. - * textdomain.c: Likewise. - * relocatable.h (RELOCATABLE_DLL_EXPORTED) [HAVE_VISIBILITY]: Define - to the gcc visibility attribute. - * Makefile.in (DEFS): Define also BUILDING_LIBINTL and BUILDING_DLL. - (CFLAGS): Add CFLAG_VISIBILITY. - (DISTFILES.common): Add export.h. - (libgnuintl.h): Add LIBINTL_DLL_EXPORTED definition and uses. - (libintl.h): Create directly from libgnuintl.h.in, without - LIBINTL_DLL_EXPORTED. - -2005-07-21 Bruno Haible - - * plural.y: Modify comment about #pragma alloca. - Suggested by Paul Eggert. - -2005-07-26 Bruno Haible - - * Makefile.in (datarootdir): New variable. - -2005-07-25 Bruno Haible - - Make pthread_in_use() return 0 on Solaris and HP-UX when not linking - with -lpthread. - * lock.h (pthread_in_use) [PTHREAD_IN_USE_DETECTION_HARD]: Define - through glthread_in_use. - * lock.c (dummy_thread_func, glthread_in_use): New functions. - -2005-07-22 Bruno Haible - - * Makefile.in (libintl.la, libgnuintl.la): Link with @LTLIBTHREADS@. - -2005-07-16 Bruno Haible - - * lock.h (gl_once_t): New type. - (gl_once_define, gl_once): New macros. - * lock.c (fresh_once): New variable. - (glthread_once, glthread_once_call, glthread_once_singlethreaded): New - functions. - -2005-07-16 Bruno Haible - - * lock.h: New file. - * lock.c: New file. - * bindtextdom.c: Include lock.h. Don't include THREAD_H. Remove - definitions of __libc_rwlock_*. - * finddomain.c: Likewise. - * textdomain.c: Likewise. - * dcigettext.c: Include lock.h. Don't include THREAD_H. Remove - definitions of __libc_lock_*, __libc_rwlock_*. - * loadmsgcat.c: Include lock.h. Don't include THREAD_H. Remove - definitions of __libc_lock_*_recursive. - * localealias.c: Include lock.h. Don't include THREAD_H. Remove - definitions of __libc_lock_*. - * log.c: Likewise. - * Makefile.in (HEADERS): Add lock.h. - (SOURCES): Add lock.c. - (OBJECTS): Add lock.$lo. - (lock.lo): New rule. - (bindtextdom.$lo, dcigettext.$lo, finddomain.$lo, loadmsgcat.$lo, - localealias.$lo, lock.$lo, log.$lo): Depend on lock.h. - * Makefile.msvc (OBJECTS): Add lock.obj. - (bindtextdom.obj, finddomain.obj, loadmsgcat.obj, localealias.obj, - dcigettext.obj, log.obj): Depend on lock.h. - (lock.obj): New rule. - * Makefile.vms (OBJECTS): Add lock.obj. - (bindtextdom.obj, finddomain.obj, loadmsgcat.obj, localealias.obj, - dcigettext.obj, log.obj): Depend on lock.h. - (lock.obj): New rule. - -2005-07-05 Bruno Haible - - * printf-args.c (printf_fetchargs): Work around broken definition of - wint_t on mingw. - -2005-07-02 Bruno Haible - - * localcharset.c (get_charset_aliases) [WIN32]: Add CP65001 and others. - Reported by via Alain Bench . - -2005-05-05 Bruno Haible - - Make libintl multithread-safe outside glibc. - * bindtextdom.c: Include THREAD_H. - (__libc_rwlock_*): Define also for USE_POSIX_THREADS or - USE_PTH_THREADS. - * dcigettext.c: Include THREAD_H. - (__libc_lock_*, __libc_rwlock_*): Define also for USE_POSIX_THREADS or - USE_PTH_THREADS. - (_nl_state_lock): Define always. - (tree_lock): Define outside DCIGETTEXT. - (DCIGETTEXT): ... not here. - * finddomain.c: Include THREAD_H. - (__libc_rwlock_*): Define also for USE_POSIX_THREADS or - USE_PTH_THREADS. - * loadmsgcat.c: Include THREAD_H. - (__libc_lock_*_recursive): Define also for USE_POSIX_THREADS or - USE_PTH_THREADS. - (_nl_load_domain): Remove extraneous comma. - * localealias.c: Include THREAD_H. - (__libc_lock_*): Define also for USE_POSIX_THREADS or USE_PTH_THREADS. - (lock): Define always. - (_nl_expand_alias): Use lock always. - * textdomain.c: Include THREAD_H. - (__libc_rwlock_*): Define also for USE_POSIX_THREADS or - USE_PTH_THREADS. - * log.c: Include THREAD_H. - (__libc_lock_*): Define also for USE_POSIX_THREADS or USE_PTH_THREADS. - (last_logfilename, last_logfile, lock): New variables. - (_nl_log_untranslated_locked): Renamed from _nl_log_untranslated. - (_nl_log_untranslated): Rewritten. - -2005-02-16 Roland McGrath - - * dcigettext.c (_nl_find_msg): Add a cast. - - * dcigettext.c (INTVARDEF, INTUSE): Macros removed. - (_nl_default_dirname): Use libc_hidden_data_def instead of INTVARDEF. - (libc_freeres_fn, DCIGETTEXT): Don't use INTUSE. - * bindtextdom.c (INTUSE): Macro removed. - (_nl_default_dirname): Use libc_hidden_proto. - (set_binding_values): Don't use INTUSE. - -2005-05-05 Bruno Haible - - * dcigettext.c (__libc_rwlock_wrlock): Define fallback. - * finddomain.c (__libc_rwlock_define_initialized, - __libc_rwlock_rdlock, __libc_rwlock_wrlock, __libc_rwlock_unlock): - Define fallbacks. - * loadmsgcat.c (__libc_lock_define_initialized_recursive, - __libc_lock_lock_recursive, __libc_lock_unlock_recursive): Define - fallbacks. - (_nl_load_domain): Fix portability problems in last patch. - -2004-09-25 Ulrich Drepper - - * dcigettext.c (DCIGETTEXT): Protect tfind/tsearch calls. - * dcigettext.c (_nl_find_msg): Call _nl_load_domain also if - decided < 0. - * finddomain.c (_nl_find_domain): Likewise. - * loadmsgcat.c (_nl_load_domain): Set decided to 1 only once we - are done. First set to -1 to signal initialization is ongoing. - Protect against concurrent callers with recursive lock. - * finddomain.c (_nl_find_domain): Protect calls to - _nl_make_l10nflist. [BZ #322] - -2004-08-06 Jakub Jelinek - - * finddomain.c (free_mem): Rename to... - (_nl_finddomain_subfreeres): ... this. Add __libc_freeres_fn_section. - * loadmsgcat.c (_nl_unload_domain): Add __libc_freeres_fn_section. - * gettextP.h (_nl_unload_domain): Move into #ifdef _LIBC. - Add attribute_hidden. - (_nl_findomain_subfreeres): New prototype. - -2005-05-05 Bruno Haible - - * dcigettext.c (_nl_find_msg) [_LIBC]: Update norm_add_slashes call. - 2004-03-24 Roland McGrath - * loadmsgcat.c (_nl_init_domain_conv): Update norm_add_slashes - call. - -2005-05-05 Bruno Haible - - * localealias.c (read_alias_file): Limit last patch to _LIBC case. - -2003-09-04 Ulrich Drepper - - * localealias.c (read_alias_file): Use fopen with 'c' mode flag. - -2003-09-03 Jakub Jelinek - - * loadmsgcat.c (open, close, read, mmap, munmap): Define as - function-like macros. - -2003-09-02 Ulrich Drepper - - * loadmsgcat.c: For _LIBC, call not cancelable versions of open, close, - and read. - -2003-06-18 Ulrich Drepper - - * localealias.c (read_alias_file): Determine whether line is read - incompletely early, before we modify the line. - -2005-05-05 Bruno Haible - - * hash-string.h (__hash_string): Define differently outside glibc. - * hash-string.c: Include config.h. - * Makefile.in (SOURCES): Add hash-string.c. - (OBJECTS): Add hash-string.$lo. - (hash-string.lo): New rule. - (hash-string.$lo): Depend on hash-string.h. - * Makefile.msvc (OBJECTS): Add hash-string.obj. - (hash-string.obj): New rule. - * Makefile.vms (OBJECTS): Add hash-string.obj. - (hash-string.obj): New rule. - -2003-06-11 Ulrich Drepper - - Remove warnings gcc 3.3 shows. - * hash-string.c: New file. - * hash-string.h: Remove hash_string definition. Declare __hash_string. - * dcigettext.c (_nl_find_msg): Adjust hash_string caller. - * loadmsgcat.c (_nl_load_domain): Likewise. - -2003-04-29 Jakub Jelinek - - * plural.y: Include string.h. Needed because recent versions of bison - generate output that uses memcpy(). - -2003-01-07 Ulrich Drepper - - * explodename.c (_nl_find_language.c): Mark as static. - * loadinfo.h: Remove _nl_find_language prototype. - -2005-04-30 Bruno Haible - - * langprefs.c: Use #include syntax. It's a - special Apple syntax implemented in the C compiler, but since - already uses it, all compilers usable on MacOS X must - support it. - * localename.c: Likewise. - -2005-05-03 Bruno Haible - - * dcigettext.c: Include langinfo.h. - (HAVE_PER_THREAD_LOCALE): Define also if HAVE_NL_LOCALE_NAME. - (DCIGETTEXT): Support retrieving the locale name through nl_langinfo - and NL_LOCALE_NAME. - -2005-03-20 Bruno Haible - - Make it possible for multiple threads to use gettext() in different - locales. - * dcigettext.c (HAVE_PER_THREAD_LOCALE): New macro. - (struct known_translation_t): If HAVE_PER_THREAD_LOCALE, add localename - field. - (transcmp): If HAVE_PER_THREAD_LOCALE, compare localename fields. - (DCIGETTEXT): If HAVE_PER_THREAD_LOCALE, fill the localename field in - search and newp. - (guess_category_value): If HAVE_PER_THREAD_LOCALE, look at the thread's - locale. - -2005-03-19 Bruno Haible - - * gettextP.h (struct loaded_domain): Remove codeset_cntr field. - (struct binding): Likewise. - * bindtextdom.c (set_binding_values): Drop codeset_cntr modifications. - -2005-03-19 Bruno Haible - - Fix gettext-tools/tests/gettext-5 bug. - * gettextP.h (struct converted_domain): New type. - (struct loaded_domain): Remove the conv, conv_tab fields. Add - conversions, nconversions fields. - (_nl_init_domain_conv): Remove declaration. - (_nl_free_domain_conv): Remove declaration. - (_nl_find_msg): Add convert argument. - * dcigettext.c (DCIGETTEXT): Call _nl_find_msg with convert=1. - (_nl_find_msg): Add convert argument. When a conversion to a different - charset is needed, create a new converted_domain element, instead of - throwing away the old converted translations. - (get_output_charset): New function. - * loadmsgcat.c (_nl_init_domain_conv): Remove function. - (_nl_free_domain_conv): Remove function. - (_nl_load_domain): Initialize the conversions array to empty. Use - _nl_find_msg instead of _nl_init_domain_conv to retrieve the header - entry. - (_nl_unload_domain): Free the conversions array and its contents. - -2005-03-19 Bruno Haible - - * dcigettext.c (struct known_translation_t): Change type of domainname - field to 'const char *'. - (DCIGETTEXT): Remove const-cast. - -2005-04-18 Bruno Haible - - * libgnuintl.h.in (_INTL_REDIRECT_ASM): Test for __APPLE_CC__ > 1. - Needed because gcc-4.0 defines __APPLE_CC__ and implements - __USER_LABEL_PREFIX__ correctly. - * plural-exp.c (GERMANIC_PLURAL): Test for __APPLE_CC > 1. - Needed because gcc-4.0 defines __APPLE_CC__. - -2006-06-21 Bruno Haible - - * gettext-0.14.6 released. - -2005-05-23 Bruno Haible - - * gettext-0.14.5 released. - -2005-04-11 Bruno Haible - - * gettext-0.14.4 released. - -2005-04-11 Bruno Haible - - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 7:3:4. - -2005-03-16 Bruno Haible - - Canonicalize locale names on MacOS X. - * localename.c (_nl_locale_name_canonicalize): New function. - (_nl_locale_name_default): Use it. - * langprefs.c (_nl_locale_name_canonicalize): New declaration. - (_nl_language_preferences_default): Use it. - -2005-03-14 Bruno Haible - - * gettext-0.14.3 released. - -2005-03-14 Bruno Haible - - * Makefile.in (dist, distdir): Ignore a failure to copy Makefile.in. - Needed because the automake-1.9 generated dist rule of the parent - directory already copies this file. - -2005-03-08 Bruno Haible - - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 7:2:4. - -2005-03-06 Bruno Haible - - * Makefile.in (dist, distdir): Fail if some of the files to be - distributed do not exist or cannot be copied. - Suggested by Alexandre Duret-Lutz . - -2005-02-24 Bruno Haible - - * gettext-0.14.2 released. - -2005-02-12 Bruno Haible - - * vasnprintf.c (EOVERFLOW): Define to a fallback if needed. - -2005-02-11 Bruno Haible - - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 7:1:4. - -2005-01-29 Bruno Haible - - * Makefile.am (libintl.la, libgnuintl.la): Use INTL_MACOSX_LIBS - instead of INTL_MACOSX_LDFLAGS. - -2004-09-08 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Signal EOVERFLOW if the resulting length - is > INT_MAX. - -2005-01-01 Bruno Haible - - * dcigettext.c (guess_category_value): Let the environment variables - LC_ALL, LC_xxx, LANG take precedence over the system-dependent language - preference list. - * gettextP.h (_nl_language_preferences): Remove declaration. - (_nl_language_preferences_default): New declaration. - (_nl_locale_name_posix, _nl_locale_name_default): New declarations. - * langprefs.c (_nl_language_preferences_default): Renamed from - _nl_language_preferences. Remove handling of getenv("LANGUAGE"). - * localename.c (_nl_locale_name_posix, _nl_locale_name_default): New - functions, extracted from _nl_locale_name. - (_nl_locale_name): Use them. - -2004-09-06 Bruno Haible - - * localename.c (_nl_locale_name): Add code for MacOS X versions that - don't have the CFLocaleCopyCurrent() function. - * langprefs.c (_nl_language_preferences): Make code more robust. - -2004-09-05 Bruno Haible - - * langprefs.c: New file. - * gettextP.h (_nl_language_preferences): New declaration. - * dcigettext.c (guess_category_value) [!_LIBC]: Use - _nl_language_preferences. - * Makefile.in (SOURCES): Add langprefs.c. - (OBJECTS): Add langprefs.$lo. - (langprefs.lo): New rule. - * Makefile.msvc (OBJECTS): Add langprefs.obj. - (langprefs.obj): New rule. - * Makefile.vms (OBJECTS): Add langprefs.obj. - (langprefs.obj): New rule. - -2004-09-03 Bruno Haible - - * localename.c (_nl_locale_name): Use a more intelligent fallback on - MacOS X versions that have the CFLocaleCopyCurrent() function. - * Makefile.in (libintl.la, libgnuintl.la): Use the INTL_MACOSX_LDFLAGS. - -2004-09-01 Bruno Haible - - * config.charset: Add support for Darwin 7. - -2004-08-13 Bruno Haible - - * libgnuintl.h.in (__GNU_GETTEXT_SUPPORTED_REVISION): Treat major - revision 1 like major revision 0. Needed for 2004-01-09 change. - -2004-08-08 Bruno Haible - - * relocatable.c (FILE_SYSTEM_PREFIX_LEN): Renamed from - FILESYSTEM_PREFIX_LEN. - (compute_curr_prefix): Update. - -2004-05-14 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Correctly handle the case of a precision - that consists of a '.' followed by an empty digit string. - Patch by Tor Lillqvist . - -2004-04-28 Bruno Haible - - * dcigettext.c (ISSLASH, IS_ABSOLUTE_PATH, IS_PATH_WITH_DIR): Treat - Cygwin like Windows, since it now accepts Windows pathnames. - * l10nflist.c (ISSLASH, IS_ABSOLUTE_PATH): Treat Cygwin like Windows, - since it now accepts Windows pathnames. - * localcharset.c (ISSLASH): Treat Cygwin like Windows, since it now - accepts Windows pathnames. - * relocatable.c (ISSLASH, IS_PATH_WITH_DIR, FILESYSTEM_PREFIX_LEN): - Treat Cygwin like Windows, since it now accepts Windows pathnames. - (compute_curr_prefix): Likewise. - Reported by Derek Robert Price . - -2004-04-23 Bruno Haible - - * localcharset.c (get_charset_aliases): Allow the CHARSETALIASDIR - environment variable to override LIBDIR. - Suggested by Matthias Clasen . - -2004-04-20 Jim Meyering - Bruno Haible - - * localcharset.c (get_charset_aliases) [!VMS && !WIN32]: Don't leak - memory when realloc fails. - -2004-03-02 Bruno Haible - - * localename.c (_nl_locale_name): Add info about default territory for - Basque, Mongolian, Russian, Tamil. Map Norwegian to nb, not no. - -2004-02-02 Bruno Haible - - * Makefile.in (install-exec, installdirs, uninstall): Install - preloaded_libintl.so only on glibc systems, not on OpenBSD. - Reported by Han Boetes . - -2004-01-29 Bruno Haible - - * gettext-0.14.1 released. - -2004-01-28 Bruno Haible - - * gettext-0.14 released. - -2004-01-21 Bruno Haible - - * config.charset: Add support for MacOS X (Darwin). - -2004-01-18 Bruno Haible - - * localename.c (_nl_locale_name): Use two-letter ISO 639 codes for - Divehi, Fulfulde, Igbo, Kanuri, Venda. - -2004-01-17 Bruno Haible - - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 7:0:4. - -2003-12-02 Jakub Jelinek - - * locale.alias: Use nb_NO instead of no_NO for bokmål. - -2003-11-03 Ulrich Drepper - - * locale.alias: nb_NO is now the correct name, not no_NO. - -2004-01-09 Bruno Haible - - * gmo.h (MO_REVISION_NUMBER_WITH_SYSDEP_I): New definition. - * loadmsgcat.c (get_sysdep_segment_value): Handle "I". - (_nl_load_domain): Treat major revision 1 like major revision 0. - -2004-01-08 Bruno Haible - - * loadmsgcat.c (_nl_load_domain): When a string pair uses a system - dependent segment not known to this version of the library, ignore - the string pair instead of crashing. - -2003-12-17 Bruno Haible - - * gettext-0.13.1 released. - -2003-12-17 Bruno Haible - - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 6:1:4. - -2003-12-05 Bruno Haible - - * localename.c (_nl_locale_name): Change result for Latin Uzbek locale - to match the glibc name. - -2003-12-02 Bruno Haible - - * localename.c (LANG_AMHARIC, LANG_BURMESE, LANG_CAMBODIAN, - LANG_CHEROKEE, LANG_EDO, LANG_FRISIAN, LANG_FULFULDE, LANG_GUARANI, - LANG_HAUSA, LANG_HAWAIIAN, LANG_IBIBIO, LANG_IGBO, LANG_INUKTITUT, - LANG_KANURI, LANG_LAO, LANG_LATIN, LANG_OROMO, LANG_PAPIAMENTU, - LANG_PASHTO, LANG_SINHALESE, LANG_SOMALI, LANG_TAGALOG, LANG_TAJIK, - LANG_TAMAZIGHT, LANG_TIBETAN, LANG_TIGRINYA, LANG_TURKMEN, LANG_YI, - LANG_YIDDISH, LANG_YORUBA): New macros. - (LANG_GAELIC, LANG_MALTESE, LANG_RHAETO_ROMANCE, LANG_SAAMI, LANG_SUTU, - LANG_TSONGA, LANG_TSWANA, LANG_VENDA, LANG_WELSH, LANG_XHOSA, - LANG_ZULU): New macros, consistent with those found in Wine. - (SUBLANG_BENGALI_INDIA, SUBLANG_BENGALI_BANGLADESH, - SUBLANG_ENGLISH_INDONESIA, SUBLANG_ENGLISH_HONGKONG, - SUBLANG_ENGLISH_INDIA, SUBLANG_ENGLISH_MALAYSIA, - SUBLANG_ENGLISH_SINGAPORE, SUBLANG_FRENCH_WESTINDIES, - SUBLANG_FRENCH_REUNION, SUBLANG_FRENCH_CONGO, SUBLANG_FRENCH_SENEGAL, - SUBLANG_FRENCH_CAMEROON, SUBLANG_FRENCH_COTEDIVOIRE, - SUBLANG_FRENCH_MALI, SUBLANG_FRENCH_MOROCCO, SUBLANG_FRENCH_HAITI, - SUBLANG_PUNJABI_INDIA, SUBLANG_PUNJABI_PAKISTAN, - SUBLANG_ROMANIAN_ROMANIA, SUBLANG_ROMANIAN_MOLDOVA, - SUBLANG_SINDHI_INDIA, SUBLANG_SINDHI_PAKISTAN, - SUBLANG_TAMAZIGHT_ARABIC, SUBLANG_TAMAZIGHT_LATIN, - SUBLANG_TIGRINYA_ETHIOPIA, SUBLANG_TIGRINYA_ERITREA): New macros. - (_nl_locale_name) [WIN32]: Use them. Improve handling of Bengali, - Serbian, English, French, Punjabi, Romanian, Sindhi, Tamazight, - Tigrinya. - -2003-12-02 Bruno Haible - - * config.charset: Treat the new country name CS like the old country - name YU. - -2003-11-30 Bruno Haible - - * gettext-0.13 released. - -2003-11-23 Paul Eggert - Bruno Haible - - * printf-parse.h: Don't include sys/types.h. - (ARG_NONE): New macro. - (char_directive): Change type of *arg_index fields to size_t. - * wprintf-parse.h: Don't include sys/types.h. - (ARG_NONE): New macro. - (wchar_t_directive): Change type of *arg_index fields to size_t. - * printf-parse.c: Don't include sys/types.h. - (SSIZE_MAX): Remove macro. - (PRINTF_PARSE): Change the type of the arg_index variables to size_t. - Remove unnecessary overflow check. - * vasnprintf.c (VASNPRINTF): Update for type change of *arg_index - fields. - -2003-11-17 Bruno Haible - - * vasnprintf.c (alloca): Remove fallback definition. - (freea): Remove definition. - (VASNPRINTF): Use alloca only for small sizes, say <= 4000 bytes. - Reported by Paul Eggert. - -2003-11-16 Paul Eggert - Bruno Haible - - Protect against address arithmetic overflow. - * printf-args.h: Include stddef.h. - (arguments): Change type of field 'count' to size_t. - * printf-args.c (printf_fetchargs): Use size_t instead of - 'unsigned int' where appropriate. - * printf-parse.h: Include sys/types.h. - (char_directive): Change type of *arg_index fields to ssize_t. - (char_directives): Change type of fields 'count', max_*_length to - size_t. - * wprintf-parse.h: Include sys/types.h. - (wchar_t_directive): Change type of *arg_index fields to ssize_t. - (wchar_t_directives): Change type of fields 'count', max_*_length to - size_t. - * printf-parse.c: Include sys/types.h and xsize.h. - (SSIZE_MAX): Define fallback value. - (PRINTF_PARSE): Use size_t instead of 'unsigned int' and ssize_t - instead of 'int' where appropriate. Check a_allocated, d_allocated - against overflow. Reject %m$ argument numbers > SSIZE_MAX + 1. - * vasnprintf.c: Include xsize.h. - (VASNPRINTF): Use size_t instead of 'unsigned int' where appropriate. - Check alloca, malloc, realloc, ENSURE_ALLOCATION arguments against - overflow. Avoid wraparound when converting a width or precision from - decimal to binary. - * xsize.h: New file, from gnulib. - * Makefile.in (HEADERS): Add xsize.h. - (printf.$lo): Depend on it. - -2003-11-16 Bruno Haible - - * libgnuintl.h.in (_INTL_REDIRECT_ASM): Don't define on AIX with gcc 2. - Reported by Kouichi Hashikawa . - -2003-10-19 Bruno Haible - - * hash-string.h (hash_string): Zero-extend each char from the string; - the old code did a sign-extend on some platforms. - -2003-10-19 Jim Meyering - - * vasnprintf.c (VASNPRINTF): Work around losing snprintf on HPUX 10.20. - -2003-10-09 Bruno Haible - - * relocatable.c: Include xalloc.h instead of xmalloc.h. - -2003-10-07 Bruno Haible - - Assume ANSI C. - * libgnuintl.h.in (PARAMS): Remove macro. - (gettext, dgettext, dcgettext, ngettext, dngettext, dcngettext, - textdomain, bindtextdomain, bind_textdomain_codeset, fprintf, vfprintf, - printf, vprintf, sprintf, vsprintf, snprintf, vsnprintf, asprintf, - vasprintf, fwprintf, vfwprintf, wprintf, vwprintf, swprintf, vswprintf, - libintl_set_relocation_prefix): Use ANSI C function declarations. - * gettextP.h (PARAMS): Remove macro. - (_nl_locale_name, _nl_find_domain, _nl_load_domain, _nl_unload_domain, - _nl_init_domain_conv, _nl_free_domain_conv, _nl_find_msg, __gettext, - __dgettext, __dcgettext, __ngettext, __dngettext, __dcngettext, - __dcigettext, __textdomain, __bindtextdomain, - __bind_textdomain_codeset, libintl_dcigettext): Use ANSI C function - declarations. - * hash-string.h (PARAMS): Remove macro. - (hash_string): Use ANSI C function declaration. - * loadinfo.h (PARAMS): Remove macro. - (_nl_normalize_codeset, _nl_make_l10nflist, _nl_expand_alias, - _nl_explode_name, _nl_find_language): Use ANSI C function declarations. - * plural-exp.h (PARAMS): Remove macro. - (FREE_EXPRESSION, PLURAL_PARSE, GERMANIC_PLURAL, - EXTRACT_PLURAL_EXPRESSION): Use ANSI C function declarations. - * bindtextdom.c (set_binding_values, BINDTEXTDOMAIN, - BIND_TEXTDOMAIN_CODESET): Use ANSI C function declarations. - * dcgettext.c (DCGETTEXT): Likewise. - * dcigettext.c (transcmp, DCIGETTEXT, _nl_log_untranslated, - _nl_find_msg, plural_lookup, category_to_name, guess_category_value, - stpcpy, mempcpy): Likewise. - * dcngettext.c (DCNGETTEXT): Likewise. - * dgettext.c (DGETTEXT): Likewise. - * dngettext.c (DNGETTEXT): Likewise. - * eval-plural.h (plural_eval): Likewise. - * explodename.c (_nl_find_language, _nl_explode_name): Likewise. - * finddomain.c (_nl_find_domain): Likewise. - * gettext.c (GETTEXT): Likewise. - * intl-compat.c (gettext, dgettext, dcgettext, ngettext, dngettext, - dcngettext, textdomain, bindtextdomain, bind_textdomain_codeset): - Likewise. - * l10nflist.c (argz_count__, argz_stringify__, argz_next__, pop, - _nl_make_l10nflist, _nl_normalize_codeset, stpcpy): Likewise. - * loadmsgcat.c (get_sysdep_segment_value, _nl_init_domain_conv, - locale_charset, _nl_free_domain_conv, _nl_load_domain, - _nl_unload_domain): Likewise. - * localealias.c (_nl_expand_alias, read_alias_file, alias_compare): - Likewise. - * localename.c (_nl_locale_name): Likewise. - * log.c (print_escaped, _nl_log_untranslated): Likewise. - * ngettext.c (NGETTEXT): Likewise. - * plural-exp.c (EXTRACT_PLURAL_EXPRESSION): Likewise. - * plural.y (new_exp, new_exp_0, new_exp_1, new_exp_2, new_exp_3, - FREE_EXPRESSION, yylex, yyerror): Likewise. - * textdomain.c (TEXTDOMAIN): Likewise. - -2003-09-17 Bruno Haible - - * printf.c: Test HAVE_FWPRINTF, not HAVE_WPRINTF. Needed for - portability to Cygwin. - -2003-09-04 Bruno Haible - - * dgettext.c: Include after gettextP.h, not before. This - ensures that libintl_dcgettext is correctly declared on Solaris. - (Needed because Solaris includes libintl.h.) - * dngettext.c: Likewise, for the libintl_dcngettext declaration. - -2003-08-29 Bruno Haible - - * vasnprintf.c: Test HAVE_DECL__SNPRINTF instead of HAVE__SNPRINTF. - Test HAVE_DECL__SNWPRINTF instead of HAVE__SNWPRINTF. - * printf.c: Likewise. - -2003-08-27 Bruno Haible - - * Makefile.in (install-exec): Fix the 2003-04-06 patch. - -2003-08-24 Bruno Haible - - * vasnprintf.c (local_wcslen): Protect against multiple definition. - (USE_SNPRINTF): Define also if only _snprintf() is available. - (SNPRINTF): Possibly define as _snprintf or _snwprintf. - * printf.c (DLL_EXPORTED): New macro. - Mark all functions as DLL_EXPORTED. - (system_vsnprintf): New macro. - (libintl_vsnprintf): Use it. - (system_vswprintf): New macro. - (libintl_vswprintf): Use it. - -2003-08-24 Bruno Haible - - * libgnuintl.h.in: Use when compiling with MSVC, even though - it doesn't define __STDC__ by default. - -2003-08-24 Bruno Haible - - * relocatable.h: Make this file includable in C++ mode: add extern "C". - -2003-08-23 Bruno Haible - - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 6:0:4. - -2003-08-20 Bruno Haible - - * config.charset (linux-gnulibc1*): Change hr_HR, ro_RO to ISO-8859-2. - Reported by Alain Guibert . - -2003-08-14 Bruno Haible - - * config.charset: Add support for Linux libc5. Based on data from - Alain Guibert . - -2003-08-11 Bruno Haible - - * vasnprintf.c (local_wcslen): New function, for Solaris 2.5.1. - (VASNPRINTF): Use it instead of wcslen. - -2003-08-01 Bruno Haible - - * relocatable.c (find_shared_library_fullname): Disable the code on - Linux/libc5. Reported by Alain Guibert . - -2003-06-27 Bruno Haible - - Avoid use of *_unlocked functions on Solaris 2.5.1. - * localcharset.c: Test HAVE_DECL_GETC_UNLOCKED, not HAVE_GETC_UNLOCKED. - * localealias.c: Test HAVE_DECL_*_UNLOCKED, not HAVE_*_UNLOCKED. - Reported by Eric Botcazou . - -2003-06-22 Bruno Haible - - Portability to mingw32. - * relocatable.c [WIN32]: Include . - Reported by Jeff Bonggren . - -2003-06-22 Bruno Haible - - * relocatable.c (compute_curr_prefix): Comment out this function in - the case when it is not used. - Reported by Pavel Roskin . - -2003-06-22 Bruno Haible - - * gettextP.h: Undefine _INTL_REDIRECT_INLINE, _INTL_REDIRECT_MACROS, - possibly defined in config.h, before setting _INTL_REDIRECT_MACROS. - Reported by Pavel Roskin . - -2003-06-19 Bruno Haible - - * printf-args.h: New file, from ../libasprintf. - * printf-args.c: New file, from ../libasprintf. - * printf-parse.h: New file, from ../libasprintf. - * printf-parse.c: New file, from ../libasprintf. - * vasnprintf.h: New file, from ../libasprintf. - * vasnprintf.c: New file, from ../libasprintf. - * wprintf-parse.h: New file. - * vasnwprintf.h: New file. - * printf.c: New file. - * libgnuintl.h.in (fprintf, vfprintf, printf, vprintf, sprintf, - vsprintf, snprintf, vsnprintf, asprintf, vasprintf, fwprintf, - vfwprintf, wprintf, vwprintf, swprintf, vswprintf): New fallback - macros. - * Makefile.in (HEADERS): Add printf-args.h, printf-args.c, - printf-parse.h, wprintf-parse.h, printf-parse.c, vasnprintf.h, - vasnwprintf.h, vasnprintf.c. - (SOURCES): Add printf.c. - (OBJECTS): Add printf.$lo. - (DISTFILES.gettext): Add libgnuintl.h_vms, libgnuintl.h.msvc-static. - (printf.lo): New rule. - (libgnuintl.h): Also perform some AC_SUBST substitutions. - (printf.$lo): New dependencies. - * Makefile.msvc (OBJECTS): Add printf.obj. - (libgnuintl.h): Use libgnuintl.h.msvc-static. - (printf.obj): New rule. - * Makefile.vms (libgnuintl.h): Use libgnuintl.h_vms. - -2003-06-12 Bruno Haible - - * libgnuintl.h (_INTL_REDIRECT_ASM): Don't define when using Mingw. - Reported by Tor Lillqvist . - -2003-06-08 Bruno Haible - - * dcigettext.c (getcwd) [VMS]: Pass 3 arguments. - Reported by Jouk Jansen . - -2003-05-22 Bruno Haible - - * gettext-0.12.1 released. - -2003-05-20 Bruno Haible - - * Makefile.in (VPATH): Add back this variable, needed outside gettext - when $builddir != $srcdir. - Reported by Pavel Roskin . - -2003-05-18 Bruno Haible - - * Makefile.msvc (DEBUGFLAGS): New variable. - (intl.lib): Use it. - -2003-05-17 Bruno Haible - - * gettext-0.12 released. - -2003-05-12 Bruno Haible - - * Makefile.msvc (PICFLAGS, CFLAGS): Move BUILDING_* macros from - CFLAGS to PICFLAGS. - Reported by Perry Rapp. - -2003-05-07 Bruno Haible - - * Makefile.vms (install): Fix mistake. - -2003-05-03 Bruno Haible - - * Makefile.in (LIBS): New variable. - (libintl.la, libgnuintl.la): Use it. - Reported by Andreas Buening . - -2003-04-12 Bruno Haible - - * Makefile.vms: New variables ABIFLAGS, DEFS. Avoid rules with no - lines. Update library creation rule. Don't use the force target. - Correct wildcard syntax. - Suggested by Jouk Jansen . - -2003-04-12 Bruno Haible - - * localcharset.c (get_charset_aliases): Add special case for VMS. - -2003-04-06 Bruno Haible - - * Makefile.in (install-exec): Remove the installed libintl.la if it - has hardwired pathnames in dependency_libs and the installed package - shall be relocatable. - -2003-04-05 Bruno Haible - - * relocatable.c: Rely on DEPENDS_ON_LIBCHARSET, DEPENDS_ON_LIBICONV, - DEPENDS_ON_LIBINTL, not on NO_LIBRARIES. - * Makefile.in (DEFS): Define DEPENDS_ON_LIBICONV, for relocatable.c. - * Makefile.msvc (CFLAGS): Also define DEPENDS_ON_LIBICONV. - -2003-04-05 Bruno Haible - - * relocatable.c (_GNU_SOURCE): Define, to ensure getline() gets - declared by . - -2003-04-04 Bruno Haible - - * gettextP.h [!_LIBC]: Remove declarations of exported libintl_* - functions; include libgnuintl.h instead. - * intl-compat.c: Remove include of libgnuintl.h. - (DLL_EXPORTED): New macro. - (gettext, dgettext, dcgettext, ngettext, dngettext, dcngettext, - textdomain, bindtextdomain, bind_textdomain_codeset): Use it. - -2003-04-04 Bruno Haible - - * libgnuintl.h.in (libintl_set_relocation_prefix): Convert extern - declaration to K&R syntax. - -2003-03-30 Bruno Haible - - * Makefile.vms: New file. - * Makefile.in (DISTFILES.gettext): Add Makefile.vms. - -2003-03-30 Bruno Haible - - * Makefile.in (INCLUDES): Mention the current directory first. - -2003-03-17 Bruno Haible - - Native Woe32/MSVC support. - * libgnuintl.h.in: Renamed from libgnuintl.h. - * Makefile.msvc: New file. - * README.woe32: New file. - * Makefile.in (HEADERS): Remove libgnuintl.h, add libgnuintl.h.in. - (DISTFILES.gettext): Add libgnuintl.h.msvc-shared, README.woe32, - Makefile.msvc. - (DISTFILES.obsolete): Add libgnuintl.h. - (libgnuintl.h): New rule. - (libintl.h, $(OBJECTS)): Expect libgnuintl.h in builddir, not in - srcdir. - (mostlyclean): Also remove libgnuintl.h. - * dcigettext.c (alloca): Add support for MSVC. - * loadmsgcat.c (alloca): Likewise. - * localealias.c (alloca): Likewise. - * relocatable.h (RELOCATABLE_DLL_EXPORTED): New macro. - - * Makefile.in (loadmsgcat.$lo): Depend on hash-string.h. - -2003-02-28 Bruno Haible - - * Makefile.in (localcharset.$lo): Depend on localcharset.h. - -2003-02-28 Bruno Haible - - Support for relocatable installation. - * relocatable.h: New file. - * relocatable.c: New file. - * libgnuintl.h (libintl_set_relocation_prefix): New declaration. - * localealias.c: Include relocatable.h. - (read_alias_file): Relocate LOCALE_ALIAS_PATH element. - * localcharset.c: Include relocatable.h. - (get_charset_aliases): Relocate LIBDIR value. - * Makefile.in (DEFS): Define also ENABLE_RELOCATABLE, IN_LIBRARY, - INSTALLDIR, NO_XMALLOC, set_relocation_prefix, relocate. - (HEADERS): Add relocatable.h. - (SOURCES): Add relocatable.c. - (OBJECTS): Add relocatable.$lo. - (relocatable.$lo): New rule. - -2003-02-28 Bruno Haible - - * Makefile.in (mkinstalldirs): Simplify. Prepending "$(top_builddir)/" - in the case of a relative $srcdir is now handled in gettext.m4. - -2003-02-28 Bruno Haible - - * localcharset.h: Change copyright to LGPL. Enclose declaration in - extern "C", for C++ compilers. - * localcharset.c: Drop C linkage declaration. - -2003-02-18 Bruno Haible - - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 5:0:3. - -2003-01-29 Bruno Haible - - * config.charset: Add an alias for CP1251 on Solaris. - Reported by Hidetoshi Tajima . - -2003-02-16 Bruno Haible - - * log.c: New file. - * dcigettext.c (DCIGETTEXT) [!_LIBC]: Before returning the - untranslated string, call _nl_log_untranslated. - * intl-compat.c: Comments. - * Makefile.in (SOURCES): Add log.c. - (OBJECTS): Add intl-compat.$lo unconditionally. Add log.$lo. - (log.lo): New rule. - (install-exec): Stop using @INTLOBJS@. Install preloadable_libintl.so. - (installdirs, uninstall): Update accordingly. - -2003-02-16 Bruno Haible - - * Makefile.in (.sin.sed): Remove rule. - (ref-add.sed, ref-del.sed): New rules. - -2003-02-12 Bruno Haible - - Big restructuring. - * Makefile.in: Make usable with $srcdir != $builddir even when not - using GNU make. - (VPATH): Remove variable. - (.c.lo): Remove rule. Use a separate rule for every object file. - (libintl.h, charset.alias, $(OBJECTS)): Refer to $srcdir where - appropriate. - (INCLUDES): Simplify. - (install-exec): Special case packages 'gettext-runtime' and - 'gettext-tools'. - (install-data): Special case package 'gettext-tools'. - (installdirs, uninstall): Special case packages 'gettext-runtime' and - 'gettext-tools'. - (distclean, dist): Likewise. - (Makefile): Work around autoconf error message. - -2003-01-12 Bruno Haible - - * localcharset.h: New file. - * localcharset.c: Include it. - * Makefile.in (HEADERS): Add localcharset.h. - (COMHDRS): Remove variable, fold into HEADERS. - (COMSRCS): Remove variable, fold into SOURCES. - -2002-12-12 Bruno Haible - - * dcigettext.c (INTVARDEF): Correct fallback definition. - -2002-11-19 Ulrich Drepper - - * localealias.c (read_alias_file): Use only about 400 bytes of stack - space instead of 16k. - -2002-10-30 Jakub Jelinek - - * finddomain.c (free_mem): Use libc_freeres_fn macro, remove - text_set_element. - * dcigettext.c (free_mem): Likewise. - -2002-10-25 Jakub Jelinek - - * localealias.c (libc_freeres_ptr): Define if !_LIBC. - (string_space, map): Add libc_freeres_ptr. - (free_mem): Remove. - -2002-09-19 Bruno Haible - - * dcigettext.c (DCIGETTEXT): Restore errno only right before - returning. - -2002-09-01 Roland McGrath - - * localealias.c [__GNUC__]: #undef alloca before #define. - -2002-08-30 Roland McGrath - - * dcigettext.c (DCIGETTEXT) [_LIBC]: Check for bogus CATEGORY. - [_LIBC] (category_to_name): Don't define the function. Instead define - a macro using _nl_category_names. - -2002-08-04 Ulrich Drepper - - * dcigettext.c: Define _nl_default_dirname_internal as hidden alias - and use it. - * bindtextdom.c: Use _nl_default_dirname_internal. - -2002-08-03 Roland McGrath - - * dcigettext.c (guess_category_value): Use __current_locale_name - instead of calling setlocale. - -2002-08-02 Roland McGrath - - * loadmsgcat.c (_nl_init_domain_conv): Use _NL_CURRENT. - -2002-07-30 Roland McGrath - - * loadmsgcat.c [__GNUC__]: #undef alloca before defining it. - -2002-05-01 Ulrich Drepper - - Revert 2002-04-09 change. - * dcngettext.c (__dcngettext_internal): Remove alias. - * dngettext.c: Use __dcngettext instead of __dcngettext_internal. - * ngettext.c: Likewise. - -2002-11-07 Bruno Haible - - * Makefile.in (mostlyclean): Remove object files on OS/2 as well. - Reported by Andreas Buening . - -2002-10-16 Bruno Haible - - * Makefile.in (ps, pdf, html, ctags): New targets, for automake-1.7 - compatibility. - (CTAGS): New rule. - -2002-09-18 Bruno Haible - - * libgnuintl.h (_INTL_REDIRECT_ASM): Don't define when using Apple cc. - Reported by Julien Chiron . - -2002-08-06 Bruno Haible - - * gettext-0.11.5 released. - -2002-07-25 Bruno Haible - - * gettext-0.11.4 released. - -2002-07-25 Bruno Haible - - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 4:0:2. - -2002-07-23 Bruno Haible - - * loadmsgcat.c (PRI*): Redefine the macros if PRI_MACROS_BROKEN is set. - -2002-07-21 Bruno Haible - - * libgnuintl.h (__GNU_GETTEXT_SUPPORTED_REVISION): New macro. - * gmo.h (struct mo_file_header): New fields n_sysdep_segments, - sysdep_segments_offset, n_sysdep_strings, orig_sysdep_tab_offset, - trans_sysdep_tab_offset. - (struct sysdep_segment): New type. - (struct sysdep_string): New type. - (SEGMENTS_END): New macro. - * gettextP.h (struct sysdep_string_desc): New type. - (struct loaded_domain): New fields malloced, n_sysdep_strings, - orig_sysdep_tab, trans_sysdep_tab, must_swap_hash_tab. Make fields - orig_tab, trans_tab, hash_tab to const pointers because they point - into read-only memory. - * loadmsgcat.c: Include stdint.h, inttypes.h, hash-string.h. - (PRI*): Define fallback values. - (get_sysdep_segment_value): New function. - (_nl_load_domain): Distinguish major and minor revision parts. Add - support for minor revision 1 with system dependent strings. - (_nl_unload_domain): Also free the 'malloced' field. - * dcigettext.c (_nl_find_msg): Remove test for domain->hash_size, now - done in loadmsgcat.c. Add support for system dependent strings. - -2002-07-17 Bruno Haible - - * gettext-0.11.3 released. - -2002-07-16 Bruno Haible - - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 3:0:1. - -2002-07-13 Bruno Haible - - * dcigettext.c (freea): New macro. - (FREE_BLOCKS): Free also the registered blocks. - (DCIGETTEXT): Free the 'search' variable. - Reported by Andreas Fischer . - -2002-06-13 Bruno Haible - - Make absolute pathnames inside $LANGUAGE work. - * l10nflist.c (_nl_make_l10nflist): Ignore dirlist if language is an - absolute path. Fix sizes passed to malloc. Simplify linked list - handling. - -2002-06-13 Bruno Haible - - * localename.c [WIN32] (LANG_DIVEHI, LANG_GALICIAN, LANG_KYRGYZ, - LANG_MONGOLIAN, LANG_SYRIAC): Provide fallback definitions. - (_nl_locale_name): Add Amharic, Burmese, Cambodian, Cherokee, Divehi, - Edo, Frisian, Fulfulde, Gaelic, Guarani, Hausa, Hawaiian, Ibibio, - Igbo, Inuktitut, Kanuri, Kyrgyz, Lao, Latin, Maltese, Mongolian, - Oromo, Papiamentu, Pashto, Rhaeto-Romance, Sami, Sinhalese, Somali, - Syriac, Tagalog, Tajik, Tomazight, Tibetan, Tigrinya, Tsonga, Turkmen, - Venda, Welsh, Xhosa, Yi, Yiddish, Yoruba, Zulu. Fix Swahili, Tatar. - -2002-06-07 Bruno Haible - - * dcigettext.c (INTDIV0_RAISES_SIGFPE): Define a fallback. - Include . - * eval-plural.h (plural_eval): Let division by zero cause SIGFPE on - all platforms. - -2002-05-30 Bruno Haible - - * libgnuintl.h (_INTL_REDIRECT_ASM, _INTL_REDIRECT_INLINE, - _INTL_REDIRECT_MACROS, _INTL_ASM, _INTL_ASMNAME, _INTL_STRINGIFY): - New macros. Use them instead of plain preprocessor level indirection - when appropriate. - * intl-compat.c: Define _INTL_REDIRECT_MACROS. - -2002-05-28 Bruno Haible - - * localename.c (LANG_SORBIAN): Provide a default value, for mingw32. - Reported by Michael Opdenacker - and Rob Leslie . - -2002-05-09 Bruno Haible - - * config.charset: Update for newest glibc. Add canonical names - ISO-8859-14, KOI8-T, TCVN5712-1, GEORGIAN-PS. - -2002-05-09 Bruno Haible - - * localcharset.c (get_charset_aliases): Add more Windows specific - aliases. - -2002-05-08 Owen Taylor - - * config.charset: A few additions for Solaris. - -2001-12-05 Bruno Haible - - * localcharset.c (locale_charset): Don't return an empty string. - -2001-10-23 Bruno Haible - - * config.charset: msdos in uk_UA uses CP1125. - -2001-08-05 Bruno Haible - - Make it possible to build libcharset with CC=gcc CFLAGS="-x c++". - * localcharset.c (locale_charset): Declare as extern "C". - (get_charset_aliases): Cast malloc and realloc results to 'char *'. - -2002-04-30 Bruno Haible - - * loadmsgcat.c (_nl_init_domain_conv): Don't append //TRANSLIT to - the encoding if it already has slashes. - Reported by Perry Rapp . - -2002-04-27 Bruno Haible - - * libgnuintl.h: Redirect every function to the one prefixed with - "libintl_". Remove __OPTIMIZED variants. - * gettextP.h: Use prefix "libintl_" instead of suffix "__". - * dcigettext.c: Likewise. - * dcgettext.c: Likewise. - * dgettext.c: Likewise. - * gettext.c: Likewise. - * dcngettext.c: Likewise. - * dngettext.c: Likewise. - * ngettext.c: Likewise. - * textdomain.c: Likewise. - * bindtextdom.c: Likewise. - * plural-exp.h: Likewise. - * os2compat.c: Likewise. - * intl-compat.c: Likewise. - -2002-04-24 Bruno Haible - - * gettext-0.11.2 released. - -2002-04-24 Bruno Haible - - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 2:1:0. - -2002-04-19 Bruno Haible - - * gettextP.h (attribute_hidden): Define as empty macro if not - already defined. - -2002-04-09 Ulrich Drepper - - * dcngettext.c [_LIBC]: Use INTUSE for __dcngettext. - * dngettext.c [_LIBC] (DCNGETTEXT): Use INTUSE. - * ngettext.c: Likewise. - * l10nflist.c [_LIBC]: Use INTUSE for __argz_count and - __argz_stringify. - -2002-04-08 Ulrich Drepper - - * dcgettext.c (__dcgettext): Use INTDEF to define alias. - * dgettext.c: Call __dcgettext_internal instead of __dcgettext. - * gettext.c: Likewise. - -2002-03-12 Ulrich Drepper - - * plural-exp.h (attribute_hidden): Define as empty macro if not - already defined. - (GERMANIC_PLURAL): Declare as hidden. - * dcigettext.c (_nl_default_default_domain): Define as hidden. - (_nl_current_default_domain): Likewise - (_nl_state_lock): Likewise. - * textdomain.c (_nl_default_default_domain): Declare as hidden. - (_nl_current_default_domain): Likewise - (_nl_state_lock): Likewise. - * bindtextdom.c (_nl_state_lock): Likewise. - -2002-03-15 Andrew Zabolotny - - * os2compat.h: Use prefix _nlos2 instead of _os2, to avoid any - possible name clashes. - * os2compat.c: Likewise. - -2002-03-15 Bruno Haible - - * libgnuintl.h (LC_MESSAGES): Don't define on Solaris 2.5, to avoid - a warning. - Reported by Stephen Gildea . - -2002-03-12 Bruno Haible - - * gettext-0.11.1 released. - -2002-02-15 Bruno Haible - - * config.charset [msdosdjgpp]: For Russian, use CP866. - -2002-02-14 Andrew Zabolotny - - * os2compat.c (_nl_default_dirname__): Renamed from - _nl_default_dirname. - -2002-02-10 Bruno Haible - - * localename.c: Change copyright notice from GPL to LGPL. - * eval-plural.h: Likewise. - -2002-02-11 Bruno Haible - - * config.charset: Add support for NetBSD. - -2002-01-31 Bruno Haible - - * gettext-0.11 released. - -2002-01-31 Bruno Haible - - * eval-plural.h: Renamed from plural-eval.c. - * dcigettext.c: Include eval-plural.h instead of plural-eval.c. - * Makefile.in (COMHDRS): Remove plural-eval.c, add eval-plural.h. - (DISTFILES.obsolete): Add plural-eval.c. - -2002-01-24 Bruno Haible - - * Makefile.in (libintl.la): Use @LTLIBICONV@ instead of @LIBICONV@. - -2002-01-10 Andrew Zabolotny - Bruno Haible - - * dcigettext.c (_nl_default_dirname): On OS/2, declare, not define. - * localcharset.c: Rework OS/2 support. - * config.charset: Add OS/2 support. - * os2compat.c: Renamed from os2.c. - (_nl_default_dirname): Define here. - * os2compat.h: Moved here from ../os2/. - * osdep.c: Update. - * Makefile.in (COMHDRS): Add os2compat.h. - (COMSRCS): Add os2compat.c, remove os2.c. - -2002-01-05 Bruno Haible - - * Makefile.in (libintl.la): Add -lc. Needed on AIX. - -2002-01-02 Bruno Haible - - * loadmsgcat.c (_nl_init_domain_conv): Convert extern declaration to - K&R syntax. - -2002-01-02 Bruno Haible - - * plural.y: Fix %expect count. - -2001-12-23 Bruno Haible - - * os2.c (os2_initialize): Use LOCALEDIR_MAX macro. - -2001-12-21 Bruno Haible - - * localcharset.c (ISSLASH): Provide definition for DOS-like systems. - -2001-12-21 Bruno Haible - - * libgettext.h: Moved to ../lib/gettext.h. - * Makefile.in (HEADERS): Remove libgettext.h. - (DISTFILES.obsolete): Add libgettext.h. - -2001-12-21 Bruno Haible - - * gmo.h: Renamed from gettext.h. - * gettext.h: Remove file. - * gettextP.h: Update accordingly. - * loadmsgcat.c: Likewise. - * Makefile.in (COMHDRS): Add gmo.h, remove gettext.h. - (DISTFILES.obsolete): Add gettext.h. - Update dependencies. - -2001-12-18 Bruno Haible - - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 2:0:0. - Used to force an soname of at least libintl.so.2 on Solaris, which - already has a different libintl.so.1 in /usr/lib. - -2001-12-15 Andrew Zabolotny - Bruno Haible - - * osdep.c: New file. - * os2.c: New file. - * dcigettext.c (DCIGETTEXT): Add backward compatibility support for - OS/2. - * localcharset.c: Add OS/2 support. - * localealias.c (_nl_expand_alias): Initialize locale_alias_path once, - but not statically. - * Makefile.in (COMSRCS): Add osdep.c, os2.c. - (OBJECTS): Add osdep.$lo. - -2001-12-12 Bruno Haible - - * libgettext.h [!ENABLE_NLS]: Cast all function results to - 'const char *'. - Reported by Alexandre Duret-Lutz . - -2001-12-03 Bruno Haible - - * Makefile.in (install-exec): Don't create an empty libdir. - (installdirs): Update accordingly. - -2001-11-30 Bruno Haible - - * plural-exp.h (plural_eval): Add back declaration. - * Makefile.in (OBJECTS): Remove plural-eval.$lo. - (COMSRCS): Remove plural-eval.c. - (COMHDRS): Add plural-eval.c. - (plural-eval.$lo): Remove dependency. - (dcigettext.$lo): Depend on plural-eval.c. - -2001-11-29 Bruno Haible - - * gettextP.h (_nl_locale_name): Don't declare inside glibc. - * localename.c (_nl_locale_name): Remove _LIBC conditional. - -2001-11-27 Ulrich Drepper - - * dcigettext.c (guess_category_value): Inside glibc, use setlocale - directly, not _nl_locale_name. - -2001-11-27 Ulrich Drepper - - * loadmsgcat.c (_nl_init_domain_conv): Modify #if expression. - -2001-11-27 Ulrich Drepper - - * plural-eval.c (plural_eval): Rename back from PLURAL_EVAL. - * plural-exp.h (PLURAL_EVAL): Remove declaration. - * dcigettext.c Include plural-eval.c. - (plural_lookup): Call plural_eval instead of PLURAL_EVAL. - -2001-11-22 Bruno Haible - - * plural-exp.h (GERMANIC_PLURAL): New declaration. - * plural-exp.c (GERMANIC_PLURAL): Renamed from germanic_plural. - * loadmsgcat.c (_nl_unload_domain): Update. - -2001-07-17 Ulrich Drepper - - * localealias.c (read_alias_file): Disable implicit locking - for the stream. Use _unlocked functions for glibc. - -2001-11-11 Bruno Haible - - * Makefile.in (dist): Avoid using hard links, because the automake-1.5 - generated toplevel 'distdir' target chmods all the distributed files. - -2001-11-10 Bruno Haible - - * libgnuintl.h (_INTL_PARAMS): Renamed from PARAMS, to avoid polluting - the user's namespace. - Also test for __GNUC__, __SUNPRO_C and __PROTOTYPES because on - 64-bit Solaris, we need prototypes although __STDC__ is often defined - to 0. __GNUC__ covers GCC, __SUNPRO_C covers Sun cc, regardless of - compilation flags. __PROTOTYPES covers other compilers when compiling - programs using autoconf's AC_C_PROTOTYPES. - * gettextP.h (PARAMS): Also test for __SUNPRO_C, because 64-bit Solaris - cc needs prototypes although it defines __STDC__ to 0 by default. - Also test for __cplusplus and __PROTOTYPES, just for consistency with - libgnuintl.h. - * hash-string.h (PARAMS): Likewise. - * loadinfo.h (PARAMS): Likewise. - * plural-exp.h (PARAMS): Likewise. - -2001-10-31 Bruno Haible - - * plural.y: Include , needed for NULL with SunOS 4 cc. - -2001-10-31 Bruno Haible - - * COPYING.LIB-2.0: Renamed from COPYING.LIB-2. - * Makefile.in (DISTFILES.gettext, install-data, uninstall): Update. - (DISTFILES.obsolete): Add COPYING.LIB-2. - -2001-10-09 Bruno Haible - - * localcharset.c (getc): Define as getc_unlocked if available. - -2001-09-27 Bruno Haible - - * Makefile.in (install-strip, installdirs): New rules. - -2001-09-24 Bruno Haible - - * localename.c: New file, integrating a function from - Tor Lillqvist . - * gettextP.h: New declaration. - * dcigettext.c (guess_category_value): Call _nl_locale_name. - * Makefile.in (COMSRCS): Add localename.c. - (OBJECTS): Add localename.$lo. - -2001-09-22 Bruno Haible - - * plural-eval.c: New file, extracted from dcigettext.c. - * plural-exp.h (PLURAL_EVAL): New declaration. - * dcigettext.c (plural_eval): Remove function, moved to plural-eval.c. - (plural_lookup): Call PLURAL_EVAL instead of plural_eval. - * Makefile.in (COMSRCS): Add plural-eval.c. - (OBJECTS): Add plural-eval.$lo. - -2001-09-22 Bruno Haible - - * plural-exp.c (EXTRACT_PLURAL_EXPRESSION): Reject numbers that don't - start with a digit; nplurals must be positive. - -2001-10-20 Bruno Haible - - Assume strchr() exists. (Without it, explodename.c wouldn't link - anyway.) - * dcigettext.c (strchr): Remove fallback definition; it conflicts with - the variable 'index' in plural_lookup. - * l10nflist.c (strchr): Likewise. - * localealias.c (strchr): Likewise. - -2001-09-24 Bruno Haible - - * loadmsgcat.c (_nl_init_domain_conv): Also enable transliteration - when building on a glibc system but outside glibc. - -2001-09-02 Bruno Haible - - * plural-exp.h: New file, extracted from gettextP.h. - * plural-exp.c: New file, extracted from loadmsgcat.c. - * gettextP.h (struct expression, struct parse_args, - __gettext_free_exp, __gettextparse): Move to plural-exp.h. - * loadmsgcat.c: Include plural-exp.h. - (PLURAL_PARSE): Move macro to plural-exp.h. - (plvar, plone, germanic_plural, INIT_GERMANIC_PLURAL): Move to - plural-exp.c. - (_nl_load_domain): Move plural handling code to plural-exp.c. Call - EXTRACT_PLURAL_EXPRESSION. - * dcigettext.c: Include plural-exp.h. - * plural.y: Include plural-exp.h, not gettextP.h. - (FREE_EXPRESSION): Move macro to plural-exp.h. - * Makefile.in (DEFS): Define IN_LIBINTL. - (COMHDRS): Add plural-exp.h. - (COMSRCS): Add plural-exp.c. - (OBJECTS): Add plural-exp.$lo. - Update dependencies. - -2001-07-28 Bruno Haible - - * l10nflist.c (_nl_normalize_codeset): Cast isalnum, isalpha, isdigit, - tolower argument to 'unsigned char'. - * loadmsgcat.c (_nl_load_domain): Cast isspace argument to - 'unsigned char'. - * localealias.c (read_alias_file): Cast isspace argument to - 'unsigned char'. - -2001-07-23 Bruno Haible - - * gettext.h: Assume exists. - -2001-09-13 Bruno Haible - - * gettext-0.10.40 released. - -2001-07-11 Ulrich Drepper - - * locale.alias: Use he language code for hebrew, not iw. - -2001-09-13 Bruno Haible - - * *.h, *.c, *.y, Makefile.in: Change copyright notice from GPL to LGPL. - This is a reaction to a blackmail from the GNOME project which - threatened to distribute an LGPLed clone of libintl. - * COPYING.LIB-2, COPYING.LIB-2.1: New files. - * Makefile.in (DISTFILES.gettext): Add them. - (install-data): Install them. - (uninstall): Uninstall them. - -2001-07-24 Bruno Haible - - * gettext-0.10.39 released. - -2001-06-24 Bruno Haible - - * config.charset: Change canonical name of BIG5HKSCS to BIG5-HKSCS. - Change canonical name of SJIS to SHIFT_JIS. - -2001-06-12 Bruno Haible - - * dcigettext.c (DCIGETTEXT): Release the lock before returning. - -2001-04-30 Bruno Haible - - Silence "gcc -Wall -Wwrite-strings" warnings. - * localcharset.c (charset_aliases): Change type to 'const char *'. - (get_charset_aliases): Change type of 'cp' to 'const char *'. - -2001-05-23 Bruno Haible - - * gettext-0.10.38 released. - -2001-05-22 Bruno Haible - - * Makefile.in (install-data): Install plural.c as well. - (uninstall): Uninstall plural.c as well. - -2001-05-18 Bruno Haible - - * Makefile.in (dist): Don't assume $(srcdir) = ".". Distribute - file in either current directory or $(srcdir), whichever exists. - -2001-05-11 Bruno Haible - - * Makefile.in (install-exec): Don't install charset.alias on glibc 2.1 - systems. - -2001-04-30 Bruno Haible - - * dcigettext.c (getuid, getgid, geteuid, getegid): Provide default - definitions. Needed for mingw32. - -2001-04-19 Bruno Haible - - * gettext-0.10.37 released. - -2001-04-19 Bruno Haible - - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 1:1:0. - -2001-04-19 Bruno Haible - - * loadmsgcat.c (_nl_init_domain_conv): Don't append //TRANSLIT when - the libiconv version is smaller than 1.5. - -2001-04-09 Bruno Haible - - * loadmsgcat.c: Don't use GNU C extensions if __APPLE_CC__ is defined. - Apple's MacOS X compiler has not all the features that the regular - GCC with the same version number has. - -2001-04-07 Bruno Haible - - * gettextP.h (struct loaded_domain): Add codeset_cntr field. - (struct binding): Add codeset_cntr field. - (_nl_load_domain): Add domainbinding argument. - (_nl_init_domain_conv, _nl_free_domain_conv): New declarations. - (_nl_find_msg): New declaration, moved here from loadinfo.h. - * loadinfo.h (struct loaded_l10nfile): Remove domainbinding field. - (_nl_make_l10nflist): Remove domainbinding argument. - (_nl_find_msg): Move declaration to gettextP.h. - * bindtextdom.c (set_binding_values): Initialize ->codeset_cntr to 0. - Increment it when ->codeset is changed. - * dcigettext.c (DCIGETTEXT): Pass binding to _nl_find_msg. - (_nl_find_msg): Add domainbinding argument. Reinitialize the converter - if domainbinding->codeset_cntr has been incremented. - * finddomain.c (_nl_find_domain): Don't pass domainbinding to - _nl_make_l10nflist(). Pass it to _nl_load_domain() instead. - * l10nflist.c (_nl_make_l10nflist): Remove domainbinding argument. - * loadmsgcat.c (_nl_init_domain_conv): New function, extracted from - _nl_load_domain. Append //TRANSLIT also when using libiconv. - (_nl_free_domain_conv): New function, extracted from _nl_unload_domain. - (_nl_load_domain): Add domainbinding argument. Call - _nl_init_domain_conv. - (_nl_unload_domain): Call _nl_free_domain_conv. - -2001-04-09 Bruno Haible - - * dcigettext.c (HAVE_LOCALE_NULL): Don't define if __GNU_LIBRARY__ < 2 - (Linux libc5). - -2001-04-04 Bruno Haible - - * dcigettext.c (HAVE_LOCALE_NULL): Define also if __GNU_LIBRARY__. - -2001-04-04 Bruno Haible - - * Makefile.in (libdir, includedir, datadir): Use the autoconf - determined value, in order to respect the configure arguments. - (gettextsrcdir): Use $(datadir), not @datadir@. - -2001-03-29 Bruno Haible - - * gettext-0.10.36 released. - -2001-03-25 Bruno Haible - - * Makefile.in (install-data): Set execution bits on installed - config.charset. - -2001-03-23 Bruno Haible - - * Makefile.in (YACC): Use @INTLBISON@ instead of bison. - -2001-03-21 Bruno Haible - - * dcigettext.c (_nl_state_lock): Mark as #ifdef _LIBC. AIX 3 xlc - chokes on empty macro arguments. - * plural.y: Add #pragma for alloca on AIX 3. - -2001-03-20 Bruno Haible - - * Makefile.in (DISTFILES.generated): New variable. - (DISTFILES.gettext): Remove plural.c. - (dist): Use DISTFILES.generated. - (YACC): Use "bison -y" instead of @YACC@. - Needed for "make dist" to work in normal packages. - -2001-03-20 Bruno Haible - - * Makefile.in (dist): Don't depend on $(DISTFILES). Instead, generate - the files to be distributed through a recursive 'make' call. - -2001-03-17 Bruno Haible - - * gettextP.h (struct expression): Add operators lnot, less_than, - greater_than, less_or_equal, greater_or_equal. Replace args2/args3 - union by a 'nargs' counter and an 'args[]' array. - * plural.y: Don't include stdarg.h. - (new_exp): New function. - (new_exp_0, new_exp_2, new_exp_3): Rewritten to call new_exp. - (new_exp_1): New function. - ('?' ':'): Make right-associative. - (EQUOP2): New token, replaces '=' and '!'. - (CMPOP2): New token. - (ADDOP2): New token, replaces '+' and '-'. - (MULOP2): New token, replaces '*', '/' and '%'. - ('!'): New token. - (exp): Add rules for CMPOP2 and '!'. Don't call YYABORT. - (start): Call YYABORT here. - (FREE_EXPRESSION): Update. - (yylex): Don't skip "\\n". Recognize comparison and '!' operators. - Update for new token symbols. - * loadmsgcat.c (plvar, plone, germanic_plural, init_germanic_plural): - Update. - * dcigettext.c (_nl_find_msg): Optimize for space. - (plural_eval): Recognize comparison and '!' operators. Optimize for - space. - - * dcigettext.c (transcmp): New declaration. - -2001-03-10 Bruno Haible - - * Makefile.in (libintl.la): Pass -liconv and flag -no-undefined. - Needed on platforms like BeOS. - - * Makefile.in (all-no-yes): Depend on libgnuintl.$la, not libintl.$la. - (libgnuintl.a, libgnuintl.la): New targets. Needed for linking - ../tests/tstgettext on systems which have gettext() in libintl.so. - - * localcharset.c (locale_charset): Allow wildcard syntax. Resolve - alias also if codeset is empty. - * config.charset (BeOS): Use wildcard syntax. - - * loadmsgcat.c (_nl_load_domain): locale_charset() doesn't return NULL - any more. - -2001-03-09 Bruno Haible - - * config.charset: Update from libiconv-1.6. - * localcharset.c: Likewise. - -2001-02-25 Ulrich Drepper - - * locale.alias: Don't use nb_NO but define aliases for it. - -2001-01-26 Ulrich Drepper - - * loadmsgcat.c: Include for _LIBC. - -2001-03-09 Bruno Haible - - * dcigettext.c (transmem_block_t): Change to unsigned char, to avoid - compiler warning. - (_nl_find_msg): Add casts to avoid compiler warnings. - -2001-03-09 Bruno Haible - - * Makefile.in (DISTFILES.common): Remove ChangeLog. - (DISTFILES.obsolete): New variable. - (install-data): Install ChangeLog.inst as ChangeLog. Remove the files - listed in DISTFILES.obsolete. - (uninstall): Simplify. - (distclean): Remove ChangeLog.inst. - (dist): Mention ChangeLog explicitly. - -2001-03-04 Bruno Haible - - * dcigettext.c (ISSLASH, HAS_DEVICE, IS_ABSOLUTE_PATH, - IS_PATH_WITH_DIR): New macros. - (DCIGETTEXT): Use IS_ABSOLUTE_PATH and IS_PATH_WITH_DIR. Increment - path_max proportionally. - * loadinfo.h (PATH_SEPARATOR): New macro. - * l10nflist.c (_nl_make_l10nflist): Use PATH_SEPARATOR instead of ':'. - * localealias.c (_nl_expand_alias): Likewise. - * libgnuintl.h (gettext) [DJGPP]: Define as a macro as well. - -2001-03-06 Bruno Haible - - * libgnuintl.h (LC_MESSAGES): Don't define on Solaris. - -2001-02-24 Bruno Haible - - * dcigettext.c: Update comment about HAVE_LOCALE_NULL. - -2001-02-05 Bruno Haible - - * libgnuintl.h (LC_MESSAGES): Provide a default value. - -2001-01-30 Bruno Haible - - * config.charset: Update for FreeBSD 4.2. - -2001-01-21 Bruno Haible - - Use libtool. - * Makefile.in (l): Use INTL_LIBTOOL_SUFFIX_PREFIX instead of l. - (all-no): When USE_INCLUDED_LIBINTL is 'no' but BUILD_INCLUDED_LIBINTL - is 'yes', still build libintl.$la because the testsuite needs it. - (libintl.la): Add $(CPPFLAGS) $(CFLAGS) $(XCFLAGS). Linking via $(CC) - must use all $(CFLAGS). - (install-exec): Use libtool to install libintl.$la. - (uninstall): Use libtool to uninstall libintl.$la. - (mostlyclean): Remove *.la and the .libs subdir. - * intl-compat.c: Reorder. Add comment. - -2001-01-20 Bruno Haible - - * loadmsgcat.c (O_BINARY): Define on platforms that don't have it. - (_nl_load_domain): Open the catalog file in binary mode. - -2001-01-24 Bruno Haible - - * gettextP.h (SWAP): Remove declaration, to work around a compilation - failure on alphaev5-cray-unicosmk2.0.5.X. - -2001-01-15 Bruno Haible - - * dcigettext.c (_nl_find_msg): Cast the second iconv() arg, to avoid - a warning. - -2001-01-07 Bruno Haible - - * gettextP.h (__gettextdebug): Remove declaration. - (gettext_free_exp__, gettextparse__): New non-libc declarations. - * plural.y [!_LIBC]: Define gettextparse__, gettext_free_exp__, not - __gettextparse, __gettext_free_exp. - * loadmsgcat.c [!_LIBC]: Use gettextparse__, not __gettextparse. - -2001-01-07 Bruno Haible - - * libgnuintl.h: Renamed from intlh.inst.in. - Remove comment about __builtin_constant_p. - (gettext): Use NULL. - * libgettext.h: Completely rewritten. Now a conditional wrapper around - . Keep the handling of ENABLE_NLS and gettext_noop, remove - everything else. - * gettextP.h: Include gettext.h, for nls_uint32. - (gettext__, dgettext__, dcgettext__, textdomain__, bindtextdomain__, - bind_textdomain_codeset__): New declarations, from old libgettext.h. - * gettext.h: Don't include . - * Makefile.in (HEADERS): Add libgnuintl.h. - (DISTFILES.gettext): Remove intlh.inst.in. - (all-yes): Depend on libintl.h instead of intlh.inst. - (libintl.h): New target. Create as a copy of libgnuintl.h. - (intlh.inst): Remove target. - (install-exec): Update. - ($(OBJECTS): Depend on libgnuintl.h, not libgettext.h. - (mostlyclean): Remove libintl.h instead of intlh.inst. - (dist-libc): Remove target. - * bindtextdom.c: Include libgnuintl.h instead of libgettext.h. Don't - include gettext.h. - * dcgettext.c: Likewise. - * dcigettext.c: Likewise. - * dcngettext.c: Likewise. - * dngettext.c: Likewise. - * finddomain.c: Likewise. - * ngettext.c: Likewise. - * textdomain.c: Likewise. - * dgettext.c: Include libgnuintl.h instead of libgettext.h. Include - gettextP.h. - * gettext.c: Likewise. - * intl-compat.c: Likewise. - * localealias.c: Don't include gettext.h. - * plural.y: Likewise. - -2001-01-07 Bruno Haible - - Assume , , , exist. - * intlh.inst.in: Likewise. - * libgettext.h: Likewise. - * gettextP.h: Likewise. - * bindtextdom.c: Likewise. - * dcigettext.c: Likewise. - * dgettext.c: Likewise. - * dngettext.c: Likewise. - * explodename.c: Likewise. - * finddomain.c: Likewise. - * gettext.c: Likewise. - * l10nflist.c: Likewise. - * loadmsgcat.c: Likewise. - * localealias.c: Likewise. - * ngettext.c: Likewise. - * textdomain.c: Likewise. - -2001-01-06 Bruno Haible - - Remove catgets fallback code. - - It does not handle message clash prevention through domains and - dgettext(). - - It does not handle message catalog inheritance and the LANGUAGE - environment variable. - - It does not handle locale aliases. - - It does not handle automatic charset conversion. - - It does not handle plural form handling and ngettext(). - - It uses a slow string to integer conversion. - - It is sensitive against installation problems. - * cat-compat.c: Remove file. - * po2msg.sin, po2tbl.sin: Remove files. - * Makefile.in (datadir): Assume DATADIRNAME = share. - (SOURCES): Remove cat-compat.c. - (DISTFILES.common): Remove po2msg.sin, po2tbl.sin. - (distclean): No need to remove po2msg.sed, po2tbl.sed. - (../po/cat-id-tbl.$lo): Remove rule. - * libgettext.h (_msg_ent): Remove. - (_msg_tbl, _msg_tbl_length): Remove declarations. - (gettext, dgettext, ngettext, dngettext): Don't depend on - !HAVE_CATGETS. - -2001-01-04 Ulrich Drepper - - * plural.y (yylex): Minimal improvement in number scanner. - -2001-01-02 Ulrich Drepper - - * dcigettext.c (guess_category_value): Rewrite so that LANGUAGE value - is ignored if the selected locale is the C locale. - -2000-11-20 Ulrich Drepper - - * dcigettext.c (transcmp): Make s1 and s2 const. - * loadmsgcat.c (_nl_load_domain): Rearrange domain initialization to - avoid warning. - -2000-11-09 Ulrich Drepper - - * locale.alias: Add thai. - Patch by Chanop Silpa-Anan . - -2001-01-05 Bruno Haible - - * Makefile.in (INCLUDES): Remove reference to $(top_srcdir)/lib. - (.SUFFIXES): Put .c before .y, so that Solaris "make" uses the .c.o - rule, not the builtin .y.o rule. - (.y.c): Use $< instead of $^. $^ is not supported by SUSV2 "make" - specification. Remove $*.h explicitly: we don't need plural.h. - * gettextP.h: Include . - (__gettext_free_exp, __gettextparse): Convert prototype to K&R C - syntax. - * bindtextdom.c (offsetof): Provide fallback for platforms that lack - it, like SunOS4. - (set_binding_values): Convert prototype to K&R C syntax. - * cat-compat.c: Include stdlib.h, string.h whenever possible. - * dcigettext.c: Ignore the value of C_ALLOCA, because libintl.a - must not depend on external .o files. - (offsetof): Provide fallback for platforms that lack it, like SunOS4. - (transcmp): Convert to K&R C syntax. - * explodename.c Include stdlib.h whenever possible. - (_nl_find_language): Convert to K&R C syntax. - * finddomain.c: Include stdlib.h whenever possible. - * l10nflist.c Include stdlib.h whenever possible. - (_nl_normalize_codeset): Use tolower, not _tolower. - * loadmsgcat.c: Include stdlib.h whenever possible. - Include headers needed for alloca(). - (freea): New macro. - (_nl_load_domain): Add fallback code for platforms lacking strtoul, - like SunOS4. Add fallback code for platforms lacking alloca. - * localealias.c: Include stdlib.h whenever possible. - (ADD_BLOCK, FREE_BLOCK): Remove macros. - (freea): New macro. - (read_alias_file): Simplify fallback code for platforms lacking alloca. - * plural.y (new_exp_0, new_exp_2, new_exp_3): New functions. - (new_exp): Remove function. - (__gettext_free_exp, yylex, yyerror): Convert to K&R C syntax. - * textdomain.c: Include stdlib.h whenever possible. - * gettext.c: Likewise. - * ngettext.c: Likewise. - * localcharset.c (volatile): Define to empty if not using ANSI C. - -2001-01-01 Bruno Haible - - * Makefile.in (mostlyclean): Remove intlh.inst, charset.alias, - ref-add.sed, ref-del.sed. - (distclean): In the gettext package, remove VERSION. - -2001-01-01 Bruno Haible - - Finish implementation of plural form handling. - * dcigettext.c (known_translation_t): Rename 'domain' field to - 'domainname'. Remove 'plindex' field. Add 'domain' and - 'translation_length' fields. - (transcmp): Don't compare 'plindex' fields. - (plural_lookup): New function. - (DCIGETTEXT): Change cache handing in the plural case. Don't call - plural_eval before the translation and its catalog file have been - found. Remove plindex from cache key. Add 'translation_length' and - 'domain' to cache result. - (_nl_find_msg): Remove index argument, return length of translation - to the caller instead. Weaken comparison of string lengths, to account - for plural entries. Call iconv() on the entire result string, not - only on the portion needed so far. - * loadinfo.h (_nl_find_msg): Remove index argument, add lengthp - argument. - * loadmsgcat.c (_nl_load_domain): Adapt to _nl_find_msg change. - - * intl-compat.c (dcngettext, dngettext, ngettext): New functions. - * libgettext.h (ngettext__, dngettext__, dcngettext__): New - declarations. - (ngettext, dngettext): Add missing macro argument. - - * intlh.inst.in (ngettext, dngettext): Add missing macro argument. - -2000-12-31 Bruno Haible - - * gettextP.h (ZERO): New macro. - (struct binding): Always use ZERO. - * bindtextdom.c (set_binding_values): Use offsetof, not sizeof. - Include whenever possible. - * dcigettext.c (ZERO): Remove macro. - (struct transmem_list): Use ZERO. - (DCIGETTEXT): Use offsetof, not sizeof. - Include whenever possible. - - * config.charset: Update from libiconv-1.5.1. - * localcharset.c: Likewise. - -2000-12-30 Bruno Haible - - * locale.alias: New file, moved here from ../misc/locale.alias. Add - "Packages using this file" line. - * Makefile.in (DISTFILES.common): Add locale.alias. - (install-exec, uninstall): Install/deinstall locale.alias. - -2000-10-30 Ulrich Drepper - - * dcigettext.c (guess_category_value): For libc always use the - setlocale() method. - -2000-10-20 Ulrich Drepper - - * libintl.glibc (ngettext macro): Add missing parameter. - (dngettext macro): Likewise. - -2000-10-14 Ulrich Drepper - - * localealias.c (read_alias_file): Update string pointers in map[] - if realloc() changed the values. - Patch by Jakub Jelinek . - -2000-08-31 Ulrich Drepper - - * loadmsgcat.c: Use *stat64 instead of *stat internally. - - * dcigettext.c (free_mem): Correct freeing of _nl_domain_bindings - list. - -2000-08-27 Ulrich Drepper - - * dcigettext.c (DCIGETTEXT): Remove _nl_find_language in code to - determine invalid locale name. - -2000-08-20 Ulrich Drepper - - * dcigettext.c: Unify use of function aliases to make more compact - PLT. - - * loadmsgcat.c (_nl_unload_domain): Also free conv_tab element. - Pretty printing. - * plural.y (new_exp): Take number of optional parameters in second - parameter. Test for correct number of parameters and free correctly - in case of failure. Adjust all callers. - (yylex): Fix handling of '\0'. Allow ';' as terminator character. - -2000-07-14 Bruno Haible - - * dcigettext.c (dcigettext): Call plural_eval on all platforms, not - only those having tsearch. - -2000-06-30 Ulrich Drepper - - * dcigettext.c (_nl_find_msg): Correct reallocation of buffers in - case the translation is too large. Remember allocated memory blocks - in a list. - (free_mem): Free memory for translations. - -2000-06-16 Ulrich Drepper - - * loadmsgcat.c (_nl_load_domain): Call norm_add_slashes with new - parameter to always enable transliteration. - -1998-10-20 Paul Eggert - - * po2tbl.sin: Escape trigraphs. - -2000-10-12 Bruno Haible - - * finddomain.c: Remove unneeded includes. - -2000-10-12 Bruno Haible - - * localealias.c (memcpy): Return first argument, just like the real - memcpy function does. - * bindtextdom.c (memcpy): Likewise. - * finddomain.c (memcpy): Likewise. - * l10nflist.c (memcpy): Likewise. - * textdomain.c (memcpy): Likewise. - From Paul Eggert . - -2000-09-29 Bruno Haible - - * libintl.glibc: Update from current glibc version. - -2000-09-18 Bruno Haible - - * dcigettext.c: Outside libc, use local variable names that don't - clash with those in libc. - * bindtextdom.c: Likewise. - * textdomain.c: Likewise. - -2000-07-31 Bruno Haible - - * plural.y: Include config.h. Needed to define 'inline' away for C - compilers that don't support it. - (yylex): Don't use gcc specific case range syntax. - * loadmsgcat.y (INIT_GERMANIC_PLURAL): New macro, for old compilers. - -2000-07-28 Bruno Haible - - Simplification: In all cases where $(gnulocaledir) is used, it is - identical to $(localedir). - * Makefile.in (DEFS): Remove setting for GNULOCALEDIR. - * dcigettext.c (_nl_default_dirname): Initialize with LOCALEDIR. - -2000-07-28 Bruno Haible - - * xopen-msg.sed: Renamed to ... - * po2msg.sin: ... here. - * linux-msg.sed: Remove file. - * Makefile.in (DISTFILES.common): Update. - -2000-07-28 Bruno Haible - - * po2tbl.sed.in: Renamed to ... - * po2tbl.sin: ... here. - * Makefile.in (DISTFILES.common): Update. - -2000-07-28 Bruno Haible - - * Makefile.in (uninstall): Synchronize with the install target. - Really remove charset.alias when its reference count drops to 0. - -2000-07-28 Bruno Haible - - * Makefile.in (mkinstalldirs): New macro. Needed when configured with - --srcdir=; then ac_aux_dir will be a relative - pathname rooted at the top builddir, and @MKINSTALLDIRS@ likewise. - (install-exec, install-data): Use it. - -2000-07-26 Bruno Haible - - * Makefile.in (install-exec, install-data): Use $(SHELL) for calling - $(MKINSTALLDIRS), don't rely on its execution permissions. - - * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): New variables. - (libintl.la): Use them. - - * Makefile.in (install-exec, install-data, uninstall): Provide DESTDIR - support, as recommended by GNU standards. Fix misapplied 2000-06-16 - patch. - -2000-06-16 Bruno Haible - - * Makefile.in (COMSRCS): Add localcharset.c. - (OBJECTS): Add localcharset.$lo. - (DISTFILES.common): Add config.charset, ref-{add,del}.sin. - (DEFS): Add -DLIBDIR. - (all-yes): Add charset.alias, ref-{add,del}.sed. - (.SUFFIXES): Add .sin and .sed. - (.sin.sed, charset.alias): New rules. - (install-exec, uninstall): Install/deinstall charset.alias. - * localcharset.c: New file, from fileutils-4.0u. - * config.charset: New file, from fileutils-4.0u. - * red-add.sin, ref-del.sin: New files, from fileutils-4.0u. - - * intlh.inst.in (bind_textdomain_codeset): New declaration. - * libgettext.h (bind_textdomain_codeset, bind_textdomain_codeset__): - New declarations. - (bind_textdomain_codeset) [!ENABLE_NLS]: New macro. - * cat-compat.c (bind_textdomain_codeset): New function. - * intl-compat.c (bind_textdomain_codeset): New function. - - * libgettext.h (ngettext, dngettext, dcngettext): New - declarations. - (dcgettext): Remove macro definition. - (textdomain, bindtextdomain) [!ENABLE_NLS]: Parenthesize argument. - * intlh.inst.in (ngettext, dngettext, dcngettext): New - declarations. - (dcgettext): Remove macro definition. - - * *.h, *.c, *.y: Change copyright notice from LGPL to GPL. - -2000-05-21 Ulrich Drepper - - * dcigettext.c: Fix typo in comment. - -2000-05-08 Andreas Jaeger - - * bindtextdom.c (set_binding_values): Add prototype. - -2000-05-05 Bruno Haible - - * dcigettext.c (alignof): New macro. - (_nl_find_msg): Use it instead of __alignof__. Pass correct output - buffer length to __gconv/iconv. If malloc (freemem_size) fails, set - freemem_size to 0. - -2000-05-05 Bruno Haible - - * dcigettext.c (dcigettext): Fix interpretation of tsearch - return value. - -2000-05-06 Ulrich Drepper - - * dcigettext.c (DCIGETTEXT): Always define local variable `index'. - (mempcpy): Correct typo in parameter list. - - * hash-string.h: Don't include . - - * *.c, *.h, *.y: Update from glibc version. - -1998-04-29 Paul Eggert - - * Makefile.in (aliaspath): Don't put `.' at the end. - -1998-06-01 Ulrich Drepper - - * localealias.c (read_alias_file): Undo last change. - * l10nflist.c (_nl_normalize_codeset): Likewise. - * loadinfo.h: Likewise. - -1998-05-23 Ulrich Drepper - - * dcgettext.c: Don't use any alloca hack when C_ALLOCA is defined. - -1998-05-01 08:47 Ulrich Drepper - - * gettext-0.10.35 released. - -1998-04-29 Ulrich Drepper - - * intl/localealias.c (read_alias_file): Use unsigned char for - local variables. Remove unused variable tp. - * intl/l10nflist.c (_nl_normalize_codeset): Use unsigned char * - for type of codeset. For losing Solaris systems. - * intl/loadinfo.h: Adapt prototype of _nl_normalize_codeset. - * intl/bindtextdom.c (BINDTEXTDOMAIN): Don't define local variable - len if not needed. - Patches by Jim Meyering. - -1998-04-28 Ulrich Drepper - - * loadmsgcat.c (_nl_load_domain): Don't assign the element use_mmap if - mmap is not supported. - - * hash-string.h: Don't include . - -1998-04-27 Ulrich Drepper - - * textdomain.c: Use strdup is available. - - * localealias.c: Define HAVE_MEMPCPY so that we can use this - function. Define and use semapahores to protect modfication of - global objects when compiling for glibc. Add code to allow - freeing alias table. - - * l10nflist.c: Don't assume stpcpy not being a macro. - - * gettextP.h: Define internal_function macri if not already done. - Use glibc byte-swap macros instead of defining SWAP when compiled - for glibc. - (struct loaded_domain): Add elements to allow unloading. - - * Makefile.in (distclean): Don't remove libintl.h here. - - * bindtextdomain.c: Carry over changes from glibc. Use strdup if - available. - - * dcgettext.c: Don't assume stpcpy not being a macro. Mark internal - functions. Add memory freeing code for glibc. - - * dgettext.c: Update copyright. - - * explodename.c: Include stdlib.h and string.h only if they exist. - Use strings.h eventually. - - * finddomain.c: Mark internal functions. Use strdup if available. - Add memory freeing code for glibc. - -1997-10-10 20:00 Ulrich Drepper - - * libgettext.h: Fix dummy textdomain and bindtextdomain macros. - They should return reasonable values. - Reported by Tom Tromey . - -1997-09-16 03:33 Ulrich Drepper - - * libgettext.h: Define PARAMS also to `args' if __cplusplus is defined. - * intlh.inst.in: Likewise. - Reported by Jean-Marc Lasgouttes . - - * libintl.glibc: Update from current glibc version. - -1997-09-06 02:10 Ulrich Drepper - - * intlh.inst.in: Reformat copyright. - -1997-08-19 15:22 Ulrich Drepper - - * dcgettext.c (DCGETTEXT): Remove wrong comment. - -1997-08-16 00:13 Ulrich Drepper - - * Makefile.in (install-data): Don't change directory to install. - -1997-08-01 14:30 Ulrich Drepper - - * cat-compat.c: Fix copyright. - - * localealias.c: Don't define strchr unless !HAVE_STRCHR. - - * loadmsgcat.c: Update copyright. Fix typos. - - * l10nflist.c: Don't define strchr unless !HAVE_STRCHR. - (_nl_make_l10nflist): Handle sponsor and revision correctly. - - * gettext.c: Update copyright. - * gettext.h: Likewise. - * hash-string.h: Likewise. - - * finddomain.c: Remoave dead code. Define strchr only if - !HAVE_STRCHR. - - * explodename.c: Include . - - * explodename.c: Reformat copyright text. - (_nl_explode_name): Fix typo. - - * dcgettext.c: Define and use __set_errno. - (guess_category_value): Don't use setlocale if HAVE_LC_MESSAGES is - not defined. - - * bindtextdom.c: Pretty printing. - -1997-05-01 02:25 Ulrich Drepper - - * dcgettext.c (guess_category_value): Don't depend on - HAVE_LC_MESSAGES. We don't need the macro here. - Patch by Bruno Haible . - - * cat-compat.c (textdomain): DoN't refer to HAVE_SETLOCALE_NULL - macro. Instead use HAVE_LOCALE_NULL and define it when using - glibc, as in dcgettext.c. - Patch by Bruno Haible . - - * Makefile.in (CPPFLAGS): New variable. Reported by François - Pinard. - -Mon Mar 10 06:51:17 1997 Ulrich Drepper - - * Makefile.in: Implement handling of libtool. - - * gettextP.h: Change data structures for use of generic lowlevel - i18n file handling. - -Wed Dec 4 20:21:18 1996 Ulrich Drepper - - * textdomain.c: Put parentheses around arguments of memcpy macro - definition. - * localealias.c: Likewise. - * l10nflist.c: Likewise. - * finddomain.c: Likewise. - * bindtextdom.c: Likewise. - Reported by Thomas Esken. - -Mon Nov 25 22:57:51 1996 Ulrich Drepper - - * textdomain.c: Move definition of `memcpy` macro to right - position. - -Fri Nov 22 04:01:58 1996 Ulrich Drepper - - * finddomain.c [!HAVE_STRING_H && !_LIBC]: Define memcpy using - bcopy if not already defined. Reported by Thomas Esken. - * bindtextdom.c: Likewise. - * l10nflist.c: Likewise. - * localealias.c: Likewise. - * textdomain.c: Likewise. - -Tue Oct 29 11:10:27 1996 Ulrich Drepper - - * Makefile.in (libdir): Change to use exec_prefix instead of - prefix. Reported by Knut-HåvardAksnes . - -Sat Aug 31 03:07:09 1996 Ulrich Drepper - - * l10nflist.c (_nl_normalize_codeset): We convert to lower case, - so don't prepend uppercase `ISO' for only numeric arg. - -Fri Jul 19 00:15:46 1996 Ulrich Drepper - - * l10nflist.c: Move inclusion of argz.h, ctype.h, stdlib.h after - definition of _GNU_SOURCE. Patch by Roland McGrath. - - * Makefile.in (uninstall): Fix another bug with `for' loop and - empty arguments. Patch by Jim Meyering. Correct name os - uninstalled files: no intl- prefix anymore. - - * Makefile.in (install-data): Again work around shells which - cannot handle mpty for list. Reported by Jim Meyering. - -Sat Jul 13 18:11:35 1996 Ulrich Drepper - - * Makefile.in (install): Split goal. Now depend on install-exec - and install-data. - (install-exec, install-data): New goals. Created from former - install goal. - Reported by Karl Berry. - -Sat Jun 22 04:58:14 1996 Ulrich Drepper - - * Makefile.in (MKINSTALLDIRS): New variable. Path to - mkinstalldirs script. - (install): use MKINSTALLDIRS variable or if the script is not present - try to find it in the $top_scrdir). - -Wed Jun 19 02:56:56 1996 Ulrich Drepper - - * l10nflist.c: Linux libc *partly* includes the argz_* functions. - Grr. Work around by renaming the static version and use macros - for renaming. - -Tue Jun 18 20:11:17 1996 Ulrich Drepper - - * l10nflist.c: Correct presence test macros of __argz_* functions. - - * l10nflist.c: Include based on test of it instead when - __argz_* functions are available. - Reported by Andreas Schwab. - -Thu Jun 13 15:17:44 1996 Ulrich Drepper - - * explodename.c, l10nflist.c: Define NULL for dumb systems. - -Tue Jun 11 17:05:13 1996 Ulrich Drepper - - * intlh.inst.in, libgettext.h (dcgettext): Rename local variable - result to __result to prevent name clash. - - * l10nflist.c, localealias.c, dcgettext.c: Define _GNU_SOURCE to - get prototype for stpcpy and strcasecmp. - - * intlh.inst.in, libgettext.h: Move declaration of - `_nl_msg_cat_cntr' outside __extension__ block to prevent warning - from gcc's -Wnested-extern option. - -Fri Jun 7 01:58:00 1996 Ulrich Drepper - - * Makefile.in (install): Remove comment. - -Thu Jun 6 17:28:17 1996 Ulrich Drepper - - * Makefile.in (install): Work around for another Buglix stupidity. - Always use an `else' close for `if's. Reported by Nelson Beebe. - - * Makefile.in (intlh.inst): Correct typo in phony rule. - Reported by Nelson Beebe. - -Thu Jun 6 01:49:52 1996 Ulrich Drepper - - * dcgettext.c (read_alias_file): Rename variable alloca_list to - block_list as the macro calls assume. - Patch by Eric Backus. - - * localealias.c [!HAVE_ALLOCA]: Define alloca as macro using - malloc. - (read_alias_file): Rename varriabe alloca_list to block_list as the - macro calls assume. - Patch by Eric Backus. - - * l10nflist.c: Correct conditional for inclusion. - Reported by Roland McGrath. - - * Makefile.in (all): Depend on all-@USE_INCLUDED_LIBINTL@, not - all-@USE_NLS@. - - * Makefile.in (install): intlh.inst comes from local dir, not - $(srcdir). - - * Makefile.in (intlh.inst): Special handling of this goal. If - used in gettext, this is really a rul to construct this file. If - used in any other package it is defined as a .PHONY rule with - empty body. - - * finddomain.c: Extract locale file information handling into - l10nfile.c. Rename local stpcpy__ function to stpcpy. - - * dcgettext.c (stpcpy): Add local definition. - - * l10nflist.c: Solve some portability problems. Patches partly by - Thomas Esken. Add local definition of stpcpy. - -Tue Jun 4 02:47:49 1996 Ulrich Drepper - - * intlh.inst.in: Don't depend including on - HAVE_LOCALE_H. Instead configure must rewrite this fiile - depending on the result of the configure run. - - * Makefile.in (install): libintl.inst is now called intlh.inst. - Add rules for updating intlh.inst from intlh.inst.in. - - * libintl.inst: Renamed to intlh.inst.in. - - * localealias.c, dcgettext.c [__GNUC__]: Define HAVE_ALLOCA to 1 - because gcc has __buitlin_alloca. - Reported by Roland McGrath. - -Mon Jun 3 00:32:16 1996 Ulrich Drepper - - * Makefile.in (installcheck): New goal to fulfill needs of - automake's distcheck. - - * Makefile.in (install): Reorder commands so that VERSION is - found. - - * Makefile.in (gettextsrcdir): Now use subdirectory intl/ in - @datadir@/gettext. - (COMSRCS): Add l10nfile.c. - (OBJECTS): Add l10nfile.o. - (DISTFILES): Rename to DISTFILE.normal. Remove $(DISTFILES.common). - (DISTFILE.gettext): Remove $(DISTFILES.common). - (all-gettext): Remove goal. - (install): If $(PACKAGE) = gettext install, otherwose do nothing. No - package but gettext itself should install libintl.h + headers. - (dist): Extend goal to work for gettext, too. - (dist-gettext): Remove goal. - - * dcgettext.c [!HAVE_ALLOCA]: Define macro alloca by using malloc. - -Sun Jun 2 17:33:06 1996 Ulrich Drepper - - * loadmsgcat.c (_nl_load_domain): Parameter is now comes from - find_l10nfile. - -Sat Jun 1 02:23:03 1996 Ulrich Drepper - - * l10nflist.c (__argz_next): Add definition. - - * dcgettext.c [!HAVE_ALLOCA]: Add code for handling missing alloca - code. Use new l10nfile handling. - - * localealias.c [!HAVE_ALLOCA]: Add code for handling missing - alloca code. - - * l10nflist.c: Initial revision. - -Tue Apr 2 18:51:18 1996 Ulrich Drepper - - * Makefile.in (all-gettext): New goal. Same as all-yes. - -Thu Mar 28 23:01:22 1996 Karl Eichwalder - - * Makefile.in (gettextsrcdir): Define using @datadir@. - -Tue Mar 26 12:39:14 1996 Ulrich Drepper - - * finddomain.c: Include . Reported by Roland McGrath. - -Sat Mar 23 02:00:35 1996 Ulrich Drepper - - * finddomain.c (stpcpy): Rename to stpcpy__ to prevent clashing - with external declaration. - -Sat Mar 2 00:47:09 1996 Ulrich Drepper - - * Makefile.in (all-no): Rename from all_no. - -Sat Feb 17 00:25:59 1996 Ulrich Drepper - - * gettextP.h [loaded_domain]: Array `successor' must now contain up - to 63 elements (because of codeset name normalization). - - * finddomain.c: Implement codeset name normalization. - -Thu Feb 15 04:39:09 1996 Ulrich Drepper - - * Makefile.in (all): Define to `all-@USE_NLS@'. - (all-yes, all_no): New goals. `all-no' is noop, `all-yes' - is former all. - -Mon Jan 15 21:46:01 1996 Howard Gayle - - * localealias.c (alias_compare): Increment string pointers in loop - of strcasecmp replacement. - -Fri Dec 29 21:16:34 1995 Ulrich Drepper - - * Makefile.in (install-src): Who commented this goal out ? :-) - -Fri Dec 29 15:08:16 1995 Ulrich Drepper - - * dcgettext.c (DCGETTEXT): Save `errno'. Failing system calls - should not effect it because a missing catalog is no error. - Reported by Harald Knig . - -Tue Dec 19 22:09:13 1995 Ulrich Drepper - - * Makefile.in (Makefile): Explicitly use $(SHELL) for running - shell scripts. - -Fri Dec 15 17:34:59 1995 Andreas Schwab - - * Makefile.in (install-src): Only install library and header when - we use the own implementation. Don't do it when using the - system's gettext or catgets functions. - - * dcgettext.c (find_msg): Must not swap domain->hash_size here. - -Sat Dec 9 16:24:37 1995 Ulrich Drepper - - * localealias.c, libintl.inst, libgettext.h, hash-string.h, - gettextP.h, finddomain.c, dcgettext.c, cat-compat.c: - Use PARAMS instead of __P. Suggested by Roland McGrath. - -Tue Dec 5 11:39:14 1995 Larry Schwimmer - - * libgettext.h: Use `#if !defined (_LIBINTL_H)' instead of `#if - !_LIBINTL_H' because Solaris defines _LIBINTL_H as empty. - -Mon Dec 4 15:42:07 1995 Ulrich Drepper - - * Makefile.in (install-src): - Install libintl.inst instead of libintl.h.install. - -Sat Dec 2 22:51:38 1995 Marcus Daniels - - * cat-compat.c (textdomain): - Reverse order in which files are tried you load. First - try local file, when this failed absolute path. - -Wed Nov 29 02:03:53 1995 Nelson H. F. Beebe - - * cat-compat.c (bindtextdomain): Add missing { }. - -Sun Nov 26 18:21:41 1995 Ulrich Drepper - - * libintl.inst: Add missing __P definition. Reported by Nelson Beebe. - - * Makefile.in: - Add dummy `all' and `dvi' goals. Reported by Tom Tromey. - -Sat Nov 25 16:12:01 1995 François Pinard - - * hash-string.h: Capitalize arguments of macros. - -Sat Nov 25 12:01:36 1995 Ulrich Drepper - - * Makefile.in (DISTFILES): Prevent files names longer than 13 - characters. libintl.h.glibc->libintl.glibc, - libintl.h.install->libintl.inst. Reported by Joshua R. Poulson. - -Sat Nov 25 11:31:12 1995 Eric Backus - - * dcgettext.c: Fix bug in preprocessor conditionals. - -Sat Nov 25 02:35:27 1995 Nelson H. F. Beebe - - * libgettext.h: Solaris cc does not understand - #if !SYMBOL1 && !SYMBOL2. Sad but true. - -Thu Nov 23 16:22:14 1995 Ulrich Drepper - - * hash-string.h (hash_string): - Fix for machine with >32 bit `unsigned long's. - - * dcgettext.c (DCGETTEXT): - Fix horrible bug in loop for alternative translation. - -Thu Nov 23 01:45:29 1995 Ulrich Drepper - - * po2tbl.sed.in, linux-msg.sed, xopen-msg.sed: - Some further simplifications in message number generation. - -Mon Nov 20 21:08:43 1995 Ulrich Drepper - - * libintl.h.glibc: Use __const instead of const in prototypes. - - * Makefile.in (install-src): - Install libintl.h.install instead of libintl.h. This - is a stripped-down version. Suggested by Peter Miller. - - * libintl.h.install, libintl.h.glibc: Initial revision. - - * localealias.c (_nl_expand_alias, read_alias_file): - Protect prototypes in type casts by __P. - -Tue Nov 14 16:43:58 1995 Ulrich Drepper - - * hash-string.h: Correct prototype for hash_string. - -Sun Nov 12 12:42:30 1995 Ulrich Drepper - - * hash-string.h (hash_string): Add prototype. - - * gettextP.h: Fix copyright. - (SWAP): Add prototype. - -Wed Nov 8 22:56:33 1995 Ulrich Drepper - - * localealias.c (read_alias_file): Forgot sizeof. - Avoid calling *printf function. This introduces a big overhead. - Patch by Roland McGrath. - -Tue Nov 7 14:21:08 1995 Ulrich Drepper - - * finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy. - - * finddomain.c (stpcpy): - Define substitution function local. The macro was to flaky. - - * cat-compat.c: Fix typo. - - * xopen-msg.sed, linux-msg.sed: - While bringing message number to right place only accept digits. - - * linux-msg.sed, xopen-msg.sed: Now that the counter does not have - leading 0s we don't need to remove them. Reported by Marcus - Daniels. - - * Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in - dependency. Reported by Marcus Daniels. - - * cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement. - Generally cleanup using #if instead of #ifndef. - - * Makefile.in: Correct typos in comment. By François Pinard. - -Mon Nov 6 00:27:02 1995 Ulrich Drepper - - * Makefile.in (install-src): Don't install libintl.h and libintl.a - if we use an available gettext implementation. - -Sun Nov 5 22:02:08 1995 Ulrich Drepper - - * libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS. Reported - by François Pinard. - - * libgettext.h: Use #if instead of #ifdef/#ifndef. - - * finddomain.c: - Comments describing what has to be done should start with FIXME. - -Sun Nov 5 19:38:01 1995 Ulrich Drepper - - * Makefile.in (DISTFILES): Split. Use DISTFILES with normal meaning. - DISTFILES.common names the files common to both dist goals. - DISTFILES.gettext are the files only distributed in GNU gettext. - -Sun Nov 5 17:32:54 1995 Ulrich Drepper - - * dcgettext.c (DCGETTEXT): Correct searching in derived locales. - This was necessary since a change in _nl_find_msg several weeks - ago. I really don't know this is still not fixed. - -Sun Nov 5 12:43:12 1995 Ulrich Drepper - - * loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL. This - might mark a special condition. - - * finddomain.c (make_entry_rec): Don't make illegal entry as decided. - - * Makefile.in (dist): Suppress error message when ln failed. - Get files from $(srcdir) explicitly. - - * libgettext.h (gettext_const): Rename to gettext_noop. - -Fri Nov 3 07:36:50 1995 Ulrich Drepper - - * finddomain.c (make_entry_rec): - Protect against wrong locale names by testing mask. - - * libgettext.h (gettext_const): Add macro definition. - Capitalize macro arguments. - -Thu Nov 2 23:15:51 1995 Ulrich Drepper - - * finddomain.c (_nl_find_domain): - Test for pointer != NULL before accessing value. - Reported by Tom Tromey. - - * gettext.c (NULL): - Define as (void*)0 instad of 0. Reported by François Pinard. - -Mon Oct 30 21:28:52 1995 Ulrich Drepper - - * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering. - -Sat Oct 28 23:20:47 1995 Ulrich Drepper - - * libgettext.h: Disable dcgettext optimization for Solaris 2.3. - - * localealias.c (alias_compare): - Peter Miller reported that tolower in some systems is - even dumber than I thought. Protect call by `isupper'. - -Fri Oct 27 22:22:51 1995 Ulrich Drepper - - * Makefile.in (libdir, includedir): New variables. - (install-src): Install libintl.a and libintl.h in correct dirs. - -Fri Oct 27 22:07:29 1995 Ulrich Drepper - - * Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c. - - * po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques. - - * localealias.c: - Fix typo and superflous test. Reported by Christian von Roques. - -Fri Oct 6 11:52:05 1995 Ulrich Drepper - - * finddomain.c (_nl_find_domain): - Correct some remainder from the pre-CEN syntax. Now - we don't have a constant number of successors anymore. - -Wed Sep 27 21:41:13 1995 Ulrich Drepper - - * Makefile.in (DISTFILES): Add libintl.h.glibc. - - * Makefile.in (dist-libc): Add goal for packing sources for glibc. - (COMSRCS, COMHDRS): Splitted to separate sources shared with glibc. - - * loadmsgcat.c: Forget to continue #if line. - - * localealias.c: - [_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name - space clean. - - * dcgettext.c, finddomain.c: Better comment to last change. - - * loadmsgcat.c: - [_LIBC]: Rename fstat, open, close, read, mmap, and munmap to - __fstat, __open, __close, __read, __mmap, and __munmap resp - to keep ANSI C name space clean. - - * finddomain.c: - [_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean. - - * dcgettext.c: - [_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to - keep ANSI C name space clean. - - * libgettext.h: - Include sys/types.h for those old SysV systems out there. - Reported by Francesco Potorti`. - - * loadmsgcat.c (use_mmap): Define if compiled for glibc. - - * bindtextdom.c: Include all those standard headers - unconditionally if _LIBC is defined. - - * finddomain.c: Fix 2 times defiend -> defined. - - * textdomain.c: Include libintl.h instead of libgettext.h when - compiling for glibc. Include all those standard headers - unconditionally if _LIBC is defined. - - * localealias.c, loadmsgcat.c: Prepare to be compiled in glibc. - - * gettext.c: - Include libintl.h instead of libgettext.h when compiling for glibc. - Get NULL from stddef.h if we compile for glibc. - - * finddomain.c: Include libintl.h instead of libgettext.h when - compiling for glibc. Include all those standard headers - unconditionally if _LIBC is defined. - - * dcgettext.c: Include all those standard headers unconditionally - if _LIBC is defined. - - * dgettext.c: If compiled in glibc include libintl.h instead of - libgettext.h. - (locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc. - - * dcgettext.c: If compiled in glibc include libintl.h instead of - libgettext.h. - (getcwd): Don't rely on HAVE_GETCWD when compiling for glibc. - - * bindtextdom.c: - If compiled in glibc include libintl.h instead of libgettext.h. - -Mon Sep 25 22:23:06 1995 Ulrich Drepper - - * localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0. - Reported by Marcus Daniels. - - * cat-compat.c (bindtextdomain): - String used in putenv must not be recycled. - Reported by Marcus Daniels. - - * libgettext.h (__USE_GNU_GETTEXT): - Additional symbol to signal that we use GNU gettext - library. - - * cat-compat.c (bindtextdomain): - Fix bug with the strange stpcpy replacement. - Reported by Nelson Beebe. - -Sat Sep 23 08:23:51 1995 Ulrich Drepper - - * cat-compat.c: Include for stpcpy prototype. - - * localealias.c (read_alias_file): - While expand strdup code temporary variable `cp' hided - higher level variable with same name. Rename to `tp'. - - * textdomain.c (textdomain): - Avoid warning by using temporary variable in strdup code. - - * finddomain.c (_nl_find_domain): Remove unused variable `application'. - -Thu Sep 21 15:51:44 1995 Ulrich Drepper - - * localealias.c (alias_compare): - Use strcasecmp() only if available. Else use - implementation in place. - - * intl-compat.c: - Wrapper functions now call *__ functions instead of __*. - - * libgettext.h: Declare prototypes for *__ functions instead for __*. - - * cat-compat.c, loadmsgcat.c: - Don't use xmalloc, xstrdup, and stpcpy. These functions are not part - of the standard libc and so prevent libintl.a from being used - standalone. - - * bindtextdom.c: - Don't use xmalloc, xstrdup, and stpcpy. These functions are not part - of the standard libc and so prevent libintl.a from being used - standalone. - Rename to bindtextdomain__ if not used in GNU C Library. - - * dgettext.c: - Rename function to dgettext__ if not used in GNU C Library. - - * gettext.c: - Don't use xmalloc, xstrdup, and stpcpy. These functions are not part - of the standard libc and so prevent libintl.a from being used - standalone. - Functions now called gettext__ if not used in GNU C Library. - - * dcgettext.c, localealias.c, textdomain.c, finddomain.c: - Don't use xmalloc, xstrdup, and stpcpy. These functions are not part - of the standard libc and so prevent libintl.a from being used - standalone. - -Sun Sep 17 23:14:49 1995 Ulrich Drepper - - * finddomain.c: Correct some bugs in handling of CEN standard - locale definitions. - -Thu Sep 7 01:49:28 1995 Ulrich Drepper - - * finddomain.c: Implement CEN syntax. - - * gettextP.h (loaded_domain): Extend number of successors to 31. - -Sat Aug 19 19:25:29 1995 Ulrich Drepper - - * Makefile.in (aliaspath): Remove path to X11 locale dir. - - * Makefile.in: Make install-src depend on install. This helps - gettext to install the sources and other packages can use the - install goal. - -Sat Aug 19 15:19:33 1995 Ulrich Drepper - - * Makefile.in (uninstall): Remove stuff installed by install-src. - -Tue Aug 15 13:13:53 1995 Ulrich Drepper - - * VERSION.in: Initial revision. - - * Makefile.in (DISTFILES): - Add VERSION file. This is not necessary for gettext, but - for other packages using this library. - -Tue Aug 15 06:16:44 1995 Ulrich Drepper - - * gettextP.h (_nl_find_domain): - New prototype after changing search strategy. - - * finddomain.c (_nl_find_domain): - We now try only to find a specified catalog. Fall back to other - catalogs listed in the locale list is now done in __dcgettext. - - * dcgettext.c (__dcgettext): - Now we provide message fall back even to different languages. - I.e. if a message is not available in one language all the other - in the locale list a tried. Formerly fall back was only possible - within one language. Implemented by moving one loop from - _nl_find_domain to here. - -Mon Aug 14 23:45:50 1995 Ulrich Drepper - - * Makefile.in (gettextsrcdir): - Directory where source of GNU gettext library are made - available. - (INSTALL, INSTALL_DATA): Programs used for installing sources. - (gettext-src): New. Rule to install GNU gettext sources for use in - gettextize shell script. - -Sun Aug 13 14:40:48 1995 Ulrich Drepper - - * loadmsgcat.c (_nl_load_domain): - Use mmap for loading only when munmap function is - also available. - - * Makefile.in (install): Depend on `all' goal. - -Wed Aug 9 11:04:33 1995 Ulrich Drepper - - * localealias.c (read_alias_file): - Do not overwrite '\n' when terminating alias value string. - - * localealias.c (read_alias_file): - Handle long lines. Ignore the rest not fitting in - the buffer after the initial `fgets' call. - -Wed Aug 9 00:54:29 1995 Ulrich Drepper - - * gettextP.h (_nl_load_domain): - Add prototype, replacing prototype for _nl_load_msg_cat. - - * finddomain.c (_nl_find_domain): - Remove unneeded variable filename and filename_len. - (expand_alias): Remove prototype because functions does not - exist anymore. - - * localealias.c (read_alias_file): - Change type of fname_len parameter to int. - (xmalloc): Add prototype. - - * loadmsgcat.c: Better prototypes for xmalloc. - -Tue Aug 8 22:30:39 1995 Ulrich Drepper - - * finddomain.c (_nl_find_domain): - Allow alias name to be constructed from the four components. - - * Makefile.in (aliaspath): New variable. Set to preliminary value. - (SOURCES): Add localealias.c. - (OBJECTS): Add localealias.o. - - * gettextP.h: Add prototype for _nl_expand_alias. - - * finddomain.c: Aliasing handled in intl/localealias.c. - - * localealias.c: Aliasing for locale names. - - * bindtextdom.c: Better prototypes for xmalloc and xstrdup. - -Mon Aug 7 23:47:42 1995 Ulrich Drepper - - * Makefile.in (DISTFILES): gettext.perl is now found in misc/. - - * cat-compat.c (bindtextdomain): - Correct implementation. dirname parameter was not used. - Reported by Marcus Daniels. - - * gettextP.h (loaded_domain): - New fields `successor' and `decided' for oo, lazy - message handling implementation. - - * dcgettext.c: - Adopt for oo, lazy message handliing. - Now we can inherit translations from less specific locales. - (find_msg): New function. - - * loadmsgcat.c, finddomain.c: - Complete rewrite. Implement oo, lazy message handling :-). - We now have an additional environment variable `LANGUAGE' with - a higher priority than LC_ALL for the LC_MESSAGE locale. - Here we can set a colon separated list of specifications each - of the form `language[_territory[.codeset]][@modifier]'. - -Sat Aug 5 09:55:42 1995 Ulrich Drepper - - * finddomain.c (unistd.h): - Include to get _PC_PATH_MAX defined on system having it. - -Fri Aug 4 22:42:00 1995 Ulrich Drepper - - * finddomain.c (stpcpy): Include prototype. - - * Makefile.in (dist): Remove `copying instead' message. - -Wed Aug 2 18:52:03 1995 Ulrich Drepper - - * Makefile.in (ID, TAGS): Do not use $^. - -Tue Aug 1 20:07:11 1995 Ulrich Drepper - - * Makefile.in (TAGS, ID): Use $^ as command argument. - (TAGS): Give etags -o option t write to current directory, - not $(srcdir). - (ID): Use $(srcdir) instead os $(top_srcdir)/src. - (distclean): Remove ID. - -Sun Jul 30 11:51:46 1995 Ulrich Drepper - - * Makefile.in (gnulocaledir): - New variable, always using share/ for data directory. - (DEFS): Add GNULOCALEDIR, used in finddomain.c. - - * finddomain.c (_nl_default_dirname): - Set to GNULOCALEDIR, because it always has to point - to the directory where GNU gettext Library writes it to. - - * intl-compat.c (textdomain, bindtextdomain): - Undefine macros before function definition. - -Sat Jul 22 01:10:02 1995 Ulrich Drepper - - * libgettext.h (_LIBINTL_H): - Protect definition in case where this file is included as - libgettext.h on Solaris machines. Add comment about this. - -Wed Jul 19 02:36:42 1995 Ulrich Drepper - - * intl-compat.c (textdomain): Correct typo. - -Wed Jul 19 01:51:35 1995 Ulrich Drepper - - * dcgettext.c (dcgettext): Function now called __dcgettext. - - * dgettext.c (dgettext): Now called __dgettext and calls - __dcgettext. - - * gettext.c (gettext): - Function now called __gettext and calls __dgettext. - - * textdomain.c (textdomain): Function now called __textdomain. - - * bindtextdom.c (bindtextdomain): Function now called - __bindtextdomain. - - * intl-compat.c: Initial revision. - - * Makefile.in (SOURCES): Add intl-compat.c. - (OBJECTS): We always compile the GNU gettext library functions. - OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o, - and intl-compat.o. - (GETTOBJS): Contains now only intl-compat.o. - - * libgettext.h: - Re-include protection matches dualistic character of libgettext.h. - For all functions in GNU gettext library define __ counter part. - - * finddomain.c (strchr): Define as index if not found in C library. - (_nl_find_domain): For relative paths paste / in between. - -Tue Jul 18 16:37:45 1995 Ulrich Drepper - - * loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h. - - * xopen-msg.sed: Fix bug with `msgstr ""' lines. - A little bit better comments. - -Tue Jul 18 01:18:27 1995 Ulrich Drepper - - * Makefile.in: - po-mode.el, makelinks, combine-sh are now found in ../misc. - - * po-mode.el, makelinks, combine-sh, elisp-comp: - Moved to ../misc/. - - * libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__. - -Sun Jul 16 22:33:02 1995 Ulrich Drepper - - * Makefile.in (INSTALL, INSTALL_DATA): New variables. - (install-data, uninstall): Install/uninstall .elc file. - - * po-mode.el (Installation comment): - Add .pox as possible extension of .po files. - -Sun Jul 16 13:23:27 1995 Ulrich Drepper - - * elisp-comp: Complete new version by François: This does not - fail when not compiling in the source directory. - -Sun Jul 16 00:12:17 1995 Ulrich Drepper - - * Makefile.in (../po/cat-id-tbl.o): - Use $(MAKE) instead of make for recursive make. - - * Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh. - (install-exec): Add missing dummy goal. - (install-data, uninstall): @ in multi-line shell command at - beginning, not in front of echo. Reported by Eric Backus. - -Sat Jul 15 00:21:28 1995 Ulrich Drepper - - * Makefile.in (DISTFILES): - Rename libgettext.perl to gettext.perl to fit in 14 chars - file systems. - - * gettext.perl: - Rename to gettext.perl to fit in 14 chars file systems. - -Thu Jul 13 23:17:20 1995 Ulrich Drepper - - * cat-compat.c: If !STDC_HEADERS try to include malloc.h. - -Thu Jul 13 20:55:02 1995 Ulrich Drepper - - * po2tbl.sed.in: Pretty printing. - - * linux-msg.sed, xopen-msg.sed: - Correct bugs with handling substitute flags in branches. - - * hash-string.h (hash_string): - Old K&R compilers don't under stand `unsigned char'. - - * gettext.h (nls_uint32): - Some old K&R compilers (eg HP) don't understand `unsigned int'. - - * cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes. - -Thu Jul 13 01:34:33 1995 Ulrich Drepper - - * Makefile.in (ELCFILES): New variable. - (DISTFILES): Add elisp-comp. - Add implicit rule for .el -> .elc compilation. - (install-data): install $ELCFILES - (clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp. - - * elisp-comp: Initial revision - -Wed Jul 12 16:14:52 1995 Ulrich Drepper - - * Makefile.in: - cat-id-tbl.c is now found in po/. This enables us to use an identical - intl/ directory in all packages. - - * dcgettext.c (dcgettext): hashing does not work for table size <= 2. - - * textdomain.c: fix typo (#if def -> #if defined) - -Tue Jul 11 18:44:43 1995 Ulrich Drepper - - * Makefile.in (stamp-cat-id): use top_srcdir to address source files - (DISTFILES,distclean): move tupdate.perl to src/ - - * po-to-tbl.sed.in: - add additional jump to clear change flag to recognize multiline strings - -Tue Jul 11 01:32:50 1995 Ulrich Drepper - - * textdomain.c: Protect inclusion of stdlib.h and string.h. - - * loadmsgcat.c: Protect inclusion of stdlib.h. - - * libgettext.h: Protect inclusion of locale.h. - Allow use in C++ programs. - Define NULL is not happened already. - - * Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of - po-to-tbl.sed. - (distclean): remove po-to-tbl.sed and tupdate.perl. - - * tupdate.perl.in: Substitute Perl path even in exec line. - Don't include entries without translation from old .po file. - -Tue Jul 4 00:41:51 1995 Ulrich Drepper - - * tupdate.perl.in: use "Updated: " in msgid "". - - * cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR). - Define getenv if !__STDC__. - - * bindtextdom.c: Protect stdlib.h and string.h inclusion. - Define free if !__STDC__. - - * finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. - Define free if !__STDC__. - - * cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. - -Mon Jul 3 23:56:30 1995 Ulrich Drepper - - * Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR. - Remove unneeded $(srcdir) from Makefile.in dependency. - - * makelinks: Add copyright and short description. - - * po-mode.el: Last version for 0.7. - - * tupdate.perl.in: Fix die message. - - * dcgettext.c: Protect include of string.h. - - * gettext.c: Protect include of stdlib.h and further tries to get NULL. - - * finddomain.c: Some corrections in includes. - - * Makefile.in (INCLUDES): Prune list correct path to Makefile.in. - - * po-to-tbl.sed: Adopt for new .po file format. - - * linux-msg.sed, xopen-msg.sed: Adopt for new .po file format. - -Sun Jul 2 23:55:03 1995 Ulrich Drepper - - * tupdate.perl.in: Complete rewrite for new .po file format. - -Sun Jul 2 02:06:50 1995 Ulrich Drepper - - * First official release. This directory contains all the code - needed to internationalize own packages. It provides functions - which allow to use the X/Open catgets function with an interface - like the Uniforum gettext function. For system which does not - have neither of those a complete implementation is provided. + * gettext-runtime/intl/localename.c: Wrap langinfo.h include with same + ifdefs used in the source later on. diff -Nru gettext-0.19.6/gettext-runtime/intl/dcigettext.c gettext-0.19.7/gettext-runtime/intl/dcigettext.c --- gettext-0.19.6/gettext-runtime/intl/dcigettext.c 2015-08-21 07:18:24.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl/dcigettext.c 2015-12-23 07:08:27.000000000 +0000 @@ -323,7 +323,7 @@ #endif /* Contains the default location of the message catalogs. */ -#if defined __EMX__ +#if defined __EMX__ && !defined __KLIBC__ extern const char _nl_default_dirname[]; #else # ifdef _LIBC diff -Nru gettext-0.19.6/gettext-runtime/intl/gettextP.h gettext-0.19.7/gettext-runtime/intl/gettextP.h --- gettext-0.19.6/gettext-runtime/intl/gettextP.h 2015-08-21 07:18:24.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl/gettextP.h 2015-12-23 07:08:27.000000000 +0000 @@ -219,6 +219,9 @@ /* A counter which is incremented each time some previous translations become invalid. This variable is part of the external ABI of the GNU libintl. */ +#if defined __KLIBC__ && !defined _LIBC +# define _nl_msg_cat_cntr libintl_nl_msg_cat_cntr +#endif #ifdef IN_LIBGLOCALE # include extern LIBGLOCALE_DLL_EXPORTED int _nl_msg_cat_cntr; diff -Nru gettext-0.19.6/gettext-runtime/intl/libgnuintl.in.h gettext-0.19.7/gettext-runtime/intl/libgnuintl.in.h --- gettext-0.19.6/gettext-runtime/intl/libgnuintl.in.h 2015-09-11 01:43:14.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl/libgnuintl.in.h 2015-12-27 22:58:08.000000000 +0000 @@ -55,7 +55,7 @@ /* Version number: (major<<16) + (minor<<8) + subminor */ -#define LIBINTL_VERSION 0x001306 +#define LIBINTL_VERSION 0x001307 extern int libintl_version; diff -Nru gettext-0.19.6/gettext-runtime/intl/localename.c gettext-0.19.7/gettext-runtime/intl/localename.c --- gettext-0.19.6/gettext-runtime/intl/localename.c 2015-08-21 07:18:24.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl/localename.c 2015-12-08 12:50:04.000000000 +0000 @@ -38,7 +38,9 @@ # if defined __APPLE__ && defined __MACH__ # include # endif -# include +# if __GLIBC__ >= 2 && !defined __UCLIBC__ +# include +# endif # if !defined IN_LIBINTL # include "glthread/lock.h" # endif diff -Nru gettext-0.19.6/gettext-runtime/intl/osdep.c gettext-0.19.7/gettext-runtime/intl/osdep.c --- gettext-0.19.6/gettext-runtime/intl/osdep.c 2015-08-21 07:18:24.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl/osdep.c 2015-12-23 07:08:27.000000000 +0000 @@ -16,7 +16,7 @@ #if defined __CYGWIN__ || defined __MINGW32__ # include "intl-exports.c" -#elif defined __EMX__ +#elif defined __EMX__ && !defined __KLIBC__ # include "os2compat.c" #else /* Avoid AIX compiler warning. */ diff -Nru gettext-0.19.6/gettext-runtime/intl/plural.c gettext-0.19.7/gettext-runtime/intl/plural.c --- gettext-0.19.6/gettext-runtime/intl/plural.c 2015-09-11 03:06:04.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl/plural.c 2015-12-27 23:21:13.000000000 +0000 @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.2. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.2" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -163,7 +163,7 @@ /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE YYSTYPE; + union YYSTYPE { #line 49 "plural.y" /* yacc.c:355 */ @@ -174,6 +174,8 @@ #line 176 "plural.c" /* yacc.c:355 */ }; + +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif @@ -262,7 +264,7 @@ } -#line 266 "plural.c" /* yacc.c:358 */ +#line 268 "plural.c" /* yacc.c:358 */ #ifdef short # undef short @@ -1359,7 +1361,7 @@ YYABORT; arg->res = (yyvsp[0].exp); } -#line 1363 "plural.c" /* yacc.c:1646 */ +#line 1365 "plural.c" /* yacc.c:1646 */ break; case 3: @@ -1367,7 +1369,7 @@ { (yyval.exp) = new_exp_3 (qmop, (yyvsp[-4].exp), (yyvsp[-2].exp), (yyvsp[0].exp)); } -#line 1371 "plural.c" /* yacc.c:1646 */ +#line 1373 "plural.c" /* yacc.c:1646 */ break; case 4: @@ -1375,7 +1377,7 @@ { (yyval.exp) = new_exp_2 (lor, (yyvsp[-2].exp), (yyvsp[0].exp)); } -#line 1379 "plural.c" /* yacc.c:1646 */ +#line 1381 "plural.c" /* yacc.c:1646 */ break; case 5: @@ -1383,7 +1385,7 @@ { (yyval.exp) = new_exp_2 (land, (yyvsp[-2].exp), (yyvsp[0].exp)); } -#line 1387 "plural.c" /* yacc.c:1646 */ +#line 1389 "plural.c" /* yacc.c:1646 */ break; case 6: @@ -1391,7 +1393,7 @@ { (yyval.exp) = new_exp_2 ((yyvsp[-1].op), (yyvsp[-2].exp), (yyvsp[0].exp)); } -#line 1395 "plural.c" /* yacc.c:1646 */ +#line 1397 "plural.c" /* yacc.c:1646 */ break; case 7: @@ -1399,7 +1401,7 @@ { (yyval.exp) = new_exp_2 ((yyvsp[-1].op), (yyvsp[-2].exp), (yyvsp[0].exp)); } -#line 1403 "plural.c" /* yacc.c:1646 */ +#line 1405 "plural.c" /* yacc.c:1646 */ break; case 8: @@ -1407,7 +1409,7 @@ { (yyval.exp) = new_exp_2 ((yyvsp[-1].op), (yyvsp[-2].exp), (yyvsp[0].exp)); } -#line 1411 "plural.c" /* yacc.c:1646 */ +#line 1413 "plural.c" /* yacc.c:1646 */ break; case 9: @@ -1415,7 +1417,7 @@ { (yyval.exp) = new_exp_2 ((yyvsp[-1].op), (yyvsp[-2].exp), (yyvsp[0].exp)); } -#line 1419 "plural.c" /* yacc.c:1646 */ +#line 1421 "plural.c" /* yacc.c:1646 */ break; case 10: @@ -1423,7 +1425,7 @@ { (yyval.exp) = new_exp_1 (lnot, (yyvsp[0].exp)); } -#line 1427 "plural.c" /* yacc.c:1646 */ +#line 1429 "plural.c" /* yacc.c:1646 */ break; case 11: @@ -1431,7 +1433,7 @@ { (yyval.exp) = new_exp_0 (var); } -#line 1435 "plural.c" /* yacc.c:1646 */ +#line 1437 "plural.c" /* yacc.c:1646 */ break; case 12: @@ -1440,7 +1442,7 @@ if (((yyval.exp) = new_exp_0 (num)) != NULL) (yyval.exp)->val.num = (yyvsp[0].num); } -#line 1444 "plural.c" /* yacc.c:1646 */ +#line 1446 "plural.c" /* yacc.c:1646 */ break; case 13: @@ -1448,11 +1450,11 @@ { (yyval.exp) = (yyvsp[-1].exp); } -#line 1452 "plural.c" /* yacc.c:1646 */ +#line 1454 "plural.c" /* yacc.c:1646 */ break; -#line 1456 "plural.c" /* yacc.c:1646 */ +#line 1458 "plural.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires diff -Nru gettext-0.19.6/gettext-runtime/intl-csharp/ChangeLog gettext-0.19.7/gettext-runtime/intl-csharp/ChangeLog --- gettext-0.19.6/gettext-runtime/intl-csharp/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-csharp/ChangeLog 1970-01-01 00:00:00.000000000 +0000 @@ -1,133 +0,0 @@ -2015-09-11 Daiki Ueno - - * gettext 0.19.6 released. - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2013-06-10 Daiki Ueno - - * Makefile.am: Use $(MKDIR_P) instead of $(mkdir_p). - Suggested by Stefano Lattarini in - . - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2011-06-03 Bruno Haible - - Copyright: Use LGPL 2.1 instead of LGPL 2.0. - * intl.cs: Update copyright header. - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2007-09-02 Bruno Haible - - Implement msgctxt for C# ResourceManagers. - * intl.cs (GettextResourceManager): New methods GetParticularString, - GetParticularPluralString. - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-07-31 Bruno Haible - - * Makefile.am (CSHARPCOMP): Update for changed location of - csharpcomp.sh. - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2006-04-14 Bruno Haible - - Assume autoconf >= 2.60. - * Makefile.am (docdir, htmldir): Remove variables. - -2006-04-17 Bruno Haible - - * Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs). - -2005-12-04 Bruno Haible - - * Makefile.am (CSHARPCOMPFLAGS): Use value set by csharpcomp.m4. - -2006-06-21 Bruno Haible - - * gettext-0.14.6 released. - -2006-06-21 Bruno Haible - - * Makefile.am (CLEANFILES): Add GNU.Gettext.dll.mdb. - -2005-05-23 Bruno Haible - - * gettext-0.14.5 released. - -2005-04-11 Bruno Haible - - * gettext-0.14.4 released. - -2005-03-14 Bruno Haible - - * gettext-0.14.3 released. - -2005-02-24 Bruno Haible - - * gettext-0.14.2 released. - -2005-01-11 Bruno Haible - - * intl.cs (GettextResourceManager, GettextResourceSet): Use casts - instead of 'as' expressions. - -2004-01-29 Bruno Haible - - * gettext-0.14.1 released. - -2004-01-28 Bruno Haible - - * gettext-0.14 released. - -2003-12-26 Bruno Haible - - * intl.cs: New file. - * Makefile.am: New file. - diff -Nru gettext-0.19.6/gettext-runtime/intl-csharp/ChangeLog.0 gettext-0.19.7/gettext-runtime/intl-csharp/ChangeLog.0 --- gettext-0.19.6/gettext-runtime/intl-csharp/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-csharp/ChangeLog.0 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,143 @@ +2015-09-30 Daiki Ueno + + build: Avoid file name length limitation of tar + "csharpdoc" is a bit too long to accommodate long file names with + the version returned from git-version-gen: + tar: gettext-0.19.6.4-1e74e4/.../csharpdoc/...: file name is too + long (max 99); not dumped + * doc: Rename from csharpdoc. + * Makefile.am (doc, DOC_FILES): Adjust to the directory name change. + +2015-09-11 Daiki Ueno + + * gettext 0.19.6 released. + +2015-07-10 Daiki Ueno + + * gettext 0.19.5 released. + +2014-12-24 Daiki Ueno + + * gettext 0.19.4 released. + +2014-10-15 Daiki Ueno + + * gettext 0.19.3 released. + +2014-07-14 Daiki Ueno + + * gettext 0.19.2 released. + +2014-06-10 Daiki Ueno + + * gettext 0.19.1 released. + +2014-06-02 Daiki Ueno + + * gettext 0.19 released. + +2013-06-10 Daiki Ueno + + * Makefile.am: Use $(MKDIR_P) instead of $(mkdir_p). + Suggested by Stefano Lattarini in + . + +2012-12-25 Daiki Ueno + + * gettext-0.18.2 released. + +2011-06-03 Bruno Haible + + Copyright: Use LGPL 2.1 instead of LGPL 2.0. + * intl.cs: Update copyright header. + +2010-06-04 Bruno Haible + + * gettext-0.18.1 released. + +2010-05-09 Bruno Haible + + * gettext-0.18 released. + +2007-11-07 Bruno Haible + + * gettext-0.17 released. + +2007-09-02 Bruno Haible + + Implement msgctxt for C# ResourceManagers. + * intl.cs (GettextResourceManager): New methods GetParticularString, + GetParticularPluralString. + +2006-11-27 Bruno Haible + + * gettext-0.16.1 released. + +2006-10-26 Bruno Haible + + * gettext-0.16 released. + +2006-07-31 Bruno Haible + + * Makefile.am (CSHARPCOMP): Update for changed location of + csharpcomp.sh. + +2006-07-21 Bruno Haible + + * gettext-0.15 released. + +2006-04-14 Bruno Haible + + Assume autoconf >= 2.60. + * Makefile.am (docdir, htmldir): Remove variables. + +2006-04-17 Bruno Haible + + * Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs). + +2005-12-04 Bruno Haible + + * Makefile.am (CSHARPCOMPFLAGS): Use value set by csharpcomp.m4. + +2006-06-21 Bruno Haible + + * gettext-0.14.6 released. + +2006-06-21 Bruno Haible + + * Makefile.am (CLEANFILES): Add GNU.Gettext.dll.mdb. + +2005-05-23 Bruno Haible + + * gettext-0.14.5 released. + +2005-04-11 Bruno Haible + + * gettext-0.14.4 released. + +2005-03-14 Bruno Haible + + * gettext-0.14.3 released. + +2005-02-24 Bruno Haible + + * gettext-0.14.2 released. + +2005-01-11 Bruno Haible + + * intl.cs (GettextResourceManager, GettextResourceSet): Use casts + instead of 'as' expressions. + +2004-01-29 Bruno Haible + + * gettext-0.14.1 released. + +2004-01-28 Bruno Haible + + * gettext-0.14 released. + +2003-12-26 Bruno Haible + + * intl.cs: New file. + * Makefile.am: New file. + diff -Nru gettext-0.19.6/gettext-runtime/intl-csharp/csharpdoc/begin.html gettext-0.19.7/gettext-runtime/intl-csharp/csharpdoc/begin.html --- gettext-0.19.6/gettext-runtime/intl-csharp/csharpdoc/begin.html 2013-01-09 04:01:27.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-csharp/csharpdoc/begin.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ - -- - -

-

- -
-GNU.Gettext Namespace
-
- - - diff -Nru gettext-0.19.6/gettext-runtime/intl-csharp/csharpdoc/GNU_Gettext_GettextResourceManager.html gettext-0.19.7/gettext-runtime/intl-csharp/csharpdoc/GNU_Gettext_GettextResourceManager.html --- gettext-0.19.6/gettext-runtime/intl-csharp/csharpdoc/GNU_Gettext_GettextResourceManager.html 2013-01-09 04:01:27.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-csharp/csharpdoc/GNU_Gettext_GettextResourceManager.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,305 +0,0 @@ - - -GNU.Gettext.GettextResourceManager Class - - -

GNU.Gettext.GettextResourceManager Class

- -
- - -
public class GettextResourceManager: System.Resources.ResourceManager
-
- -

Base Types

- -
-System.Resources.ResourceManager
-  GettextResourceManager

- -

- -

Library

- -
-GNU.Gettext -
- -

Summary

- -
- -Each instance of this class can be used to lookup translations for a -given resource name. For each CultureInfo, it performs the lookup -in several assemblies, from most specific over territory-neutral to -language-neutral. -
- -

See Also

- -
-GNU.Gettext Namespace -
- -

Members

- -
-

- -GettextResourceManager Constructors

- -GettextResourceManager(System.String) Constructor
-GettextResourceManager(System.String, System.Reflection.Assembly) Constructor
-

- -GettextResourceManager Methods

- -GettextResourceManager.GetPluralString(System.String, System.String, long, System.Globalization.CultureInfo) Method
-GettextResourceManager.GetPluralString(System.String, System.String, long) Method
-GettextResourceManager.GetString(System.String, System.Globalization.CultureInfo) Method
-GettextResourceManager.GetString(System.String) Method
-

- -
- -

GettextResourceManager(System.String) Constructor

- -
- - -
public GettextResourceManager(System.String baseName);
-
- -

Summary

- -
- -Constructor. -
- -

Parameters

- -
-
-
baseName
-
the resource name, also the assembly base - name
-
-
- -

See Also

- -
-GNU.Gettext.GettextResourceManager Class, GNU.Gettext Namespace -
- -
- -

GettextResourceManager(System.String, System.Reflection.Assembly) Constructor

- -
- - -
public GettextResourceManager(System.String baseName, System.Reflection.Assembly assembly);
-
- -

Summary

- -
- -Constructor. -
- -

Parameters

- -
-
-
baseName
-
the resource name, also the assembly base - name
-
-
- -

See Also

- -
-GNU.Gettext.GettextResourceManager Class, GNU.Gettext Namespace -
- -
- -

GettextResourceManager.GetPluralString(System.String, System.String, long, System.Globalization.CultureInfo) Method

- -
- - -
public virtual System.String GetPluralString(System.String msgid, System.String msgidPlural, long n, System.Globalization.CultureInfo culture);
-
- -

Summary

- -
- -Returns the translation of msgid and -msgidPlural in a given culture, choosing the right -plural form depending on the number n. -
- -

Parameters

- -
-
-
msgid
-
the key string to be translated, an ASCII - string
-
msgidPlural
-
the English plural of msgid, - an ASCII string
-
n
-
the number, should be >= 0
-
-
- -

Return Value

- -
-the translation, or msgid or - msgidPlural if none is found -
- -

See Also

- -
-GNU.Gettext.GettextResourceManager Class, GNU.Gettext Namespace -
- -
- -

GettextResourceManager.GetPluralString(System.String, System.String, long) Method

- -
- - -
public virtual System.String GetPluralString(System.String msgid, System.String msgidPlural, long n);
-
- -

Summary

- -
- -Returns the translation of msgid and -msgidPlural in the current culture, choosing the -right plural form depending on the number n. -
- -

Parameters

- -
-
-
msgid
-
the key string to be translated, an ASCII - string
-
msgidPlural
-
the English plural of msgid, - an ASCII string
-
n
-
the number, should be >= 0
-
-
- -

Return Value

- -
-the translation, or msgid or - msgidPlural if none is found -
- -

See Also

- -
-GNU.Gettext.GettextResourceManager Class, GNU.Gettext Namespace -
- -
- -

GettextResourceManager.GetString(System.String, System.Globalization.CultureInfo) Method

- -
- - -
public override System.String GetString(System.String msgid, System.Globalization.CultureInfo culture);
-
- -

Summary

- -
- -Returns the translation of msgid in a given culture. -
- -

Parameters

- -
-
-
msgid
-
the key string to be translated, an ASCII - string
-
-
- -

Return Value

- -
-the translation of msgid, or - msgid if none is found -
- -

See Also

- -
-GNU.Gettext.GettextResourceManager Class, GNU.Gettext Namespace -
- -
- -

GettextResourceManager.GetString(System.String) Method

- -
- - -
public override System.String GetString(System.String msgid);
-
- -

Summary

- -
- -Returns the translation of msgid in the current -culture. -
- -

Parameters

- -
-
-
msgid
-
the key string to be translated, an ASCII - string
-
-
- -

Return Value

- -
-the translation of msgid, or - msgid if none is found -
- -

See Also

- -
-GNU.Gettext.GettextResourceManager Class, GNU.Gettext Namespace -
- - - diff -Nru gettext-0.19.6/gettext-runtime/intl-csharp/csharpdoc/GNU_Gettext_GettextResourceSet.html gettext-0.19.7/gettext-runtime/intl-csharp/csharpdoc/GNU_Gettext_GettextResourceSet.html --- gettext-0.19.6/gettext-runtime/intl-csharp/csharpdoc/GNU_Gettext_GettextResourceSet.html 2013-01-09 04:01:27.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-csharp/csharpdoc/GNU_Gettext_GettextResourceSet.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,356 +0,0 @@ - - -GNU.Gettext.GettextResourceSet Class - - -

GNU.Gettext.GettextResourceSet Class

- -
- - -
public class GettextResourceSet: System.Resources.ResourceSet
-
- -

Base Types

- -
-System.Resources.ResourceSet
-  GettextResourceSet

- -

- -

Library

- -
-GNU.Gettext -
- -

Summary

- -
- -Each instance of this class encapsulates a single PO file. -

- - -This API of this class is not meant to be used directly; use -GettextResourceManager instead. -

- -

- -

See Also

- -
-GNU.Gettext Namespace -
- -

Members

- -
-

- -GettextResourceSet Constructors

- -GettextResourceSet() Constructor
-GettextResourceSet(System.Resources.IResourceReader) Constructor
-GettextResourceSet(System.IO.Stream) Constructor
-GettextResourceSet(System.String) Constructor
-

- -GettextResourceSet Methods

- -GettextResourceSet.GetPluralString Method
-GettextResourceSet.GetString(System.String) Method
-GettextResourceSet.GetString(System.String, bool) Method
-GettextResourceSet.PluralEval Method
-

- -GettextResourceSet Properties

- -GettextResourceSet.Keys Property
-

- -
- -

GettextResourceSet() Constructor

- -
- - -
protected GettextResourceSet();
-
- -

Summary

- -
- -Creates a new message catalog. When using this constructor, you -must override the ReadResources method, in order to initialize -the Table property. The message catalog will support plural -forms only if the ReadResources method installs values of type -String[] and if the PluralEval method is overridden. -
- -

See Also

- -
-GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace -
- -
- -

GettextResourceSet(System.Resources.IResourceReader) Constructor

- -
- - -
public GettextResourceSet(System.Resources.IResourceReader reader);
-
- -

Summary

- -
- -Creates a new message catalog, by reading the string/value pairs from -the given reader. The message catalog will support -plural forms only if the reader can produce values of type -String[] and if the PluralEval method is overridden. -
- -

See Also

- -
-GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace -
- -
- -

GettextResourceSet(System.IO.Stream) Constructor

- -
- - -
public GettextResourceSet(System.IO.Stream stream);
-
- -

Summary

- -
- -Creates a new message catalog, by reading the string/value pairs from -the given stream, which should have the format of -a .resources file. The message catalog will not support plural -forms. -
- -

See Also

- -
-GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace -
- -
- -

GettextResourceSet(System.String) Constructor

- -
- - -
public GettextResourceSet(System.String fileName);
-
- -

Summary

- -
- -Creates a new message catalog, by reading the string/value pairs from -the file with the given fileName. The file should -be in the format of a .resources file. The message catalog will -not support plural forms. -
- -

See Also

- -
-GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace -
- -
- -

GettextResourceSet.GetPluralString Method

- -
- - -
public virtual System.String GetPluralString(System.String msgid, System.String msgidPlural, long n);
-
- -

Summary

- -
- -Returns the translation of msgid and -msgidPlural, choosing the right plural form -depending on the number n. -
- -

Parameters

- -
-
-
msgid
-
the key string to be translated, an ASCII - string
-
msgidPlural
-
the English plural of msgid, - an ASCII string
-
n
-
the number, should be >= 0
-
-
- -

Return Value

- -
-the translation, or null if none is found -
- -

See Also

- -
-GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace -
- -
- -

GettextResourceSet.GetString(System.String) Method

- -
- - -
public override System.String GetString(System.String msgid);
-
- -

Summary

- -
- -Returns the translation of msgid. -
- -

Parameters

- -
-
-
msgid
-
the key string to be translated, an ASCII - string
-
-
- -

Return Value

- -
-the translation of msgid, or null if - none is found -
- -

See Also

- -
-GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace -
- -
- -

GettextResourceSet.GetString(System.String, bool) Method

- -
- - -
public override System.String GetString(System.String msgid, bool ignoreCase);
-
- -

Summary

- -
- -Returns the translation of msgid, with possibly -case-insensitive lookup. -
- -

Parameters

- -
-
-
msgid
-
the key string to be translated, an ASCII - string
-
-
- -

Return Value

- -
-the translation of msgid, or null if - none is found -
- -

See Also

- -
-GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace -
- -
- -

GettextResourceSet.PluralEval Method

- -
- - -
protected virtual long PluralEval(long n);
-
- -

Summary

- -
- -Returns the index of the plural form to be chosen for a given number. -The default implementation is the Germanic plural formula: -zero for n == 1, one for n != 1. -
- -

See Also

- -
-GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace -
- -
- -

GettextResourceSet.Keys Property

- -
- - -
public virtual System.Collections.ICollection Keys { get; }
-
- -

Summary

- -
- -Returns the keys of this resource set, i.e. the strings for which -GetObject() can return a non-null value. -
- -

See Also

- -
-GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace -
- - - diff -Nru gettext-0.19.6/gettext-runtime/intl-csharp/csharpdoc/GNU_Gettext.html gettext-0.19.7/gettext-runtime/intl-csharp/csharpdoc/GNU_Gettext.html --- gettext-0.19.6/gettext-runtime/intl-csharp/csharpdoc/GNU_Gettext.html 2013-01-09 04:01:27.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-csharp/csharpdoc/GNU_Gettext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ - - -GNU.Gettext Namespace

- -GettextResourceManager
-GettextResourceSet
- - diff -Nru gettext-0.19.6/gettext-runtime/intl-csharp/csharpdoc/index.html gettext-0.19.7/gettext-runtime/intl-csharp/csharpdoc/index.html --- gettext-0.19.6/gettext-runtime/intl-csharp/csharpdoc/index.html 2013-01-09 04:01:27.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-csharp/csharpdoc/index.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ - -- - - - - - - - - diff -Nru gettext-0.19.6/gettext-runtime/intl-csharp/csharpdoc/namespaces.html gettext-0.19.7/gettext-runtime/intl-csharp/csharpdoc/namespaces.html --- gettext-0.19.6/gettext-runtime/intl-csharp/csharpdoc/namespaces.html 2013-01-09 04:01:27.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-csharp/csharpdoc/namespaces.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - -Namespaces

-GNU.Gettext
- - diff -Nru gettext-0.19.6/gettext-runtime/intl-csharp/doc/begin.html gettext-0.19.7/gettext-runtime/intl-csharp/doc/begin.html --- gettext-0.19.6/gettext-runtime/intl-csharp/doc/begin.html 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-csharp/doc/begin.html 2015-10-01 12:29:15.000000000 +0000 @@ -0,0 +1,11 @@ + +- + +

-

+ +
+GNU.Gettext Namespace
+
+ + + diff -Nru gettext-0.19.6/gettext-runtime/intl-csharp/doc/GNU_Gettext_GettextResourceManager.html gettext-0.19.7/gettext-runtime/intl-csharp/doc/GNU_Gettext_GettextResourceManager.html --- gettext-0.19.6/gettext-runtime/intl-csharp/doc/GNU_Gettext_GettextResourceManager.html 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-csharp/doc/GNU_Gettext_GettextResourceManager.html 2015-10-01 12:29:15.000000000 +0000 @@ -0,0 +1,305 @@ + + +GNU.Gettext.GettextResourceManager Class + + +

GNU.Gettext.GettextResourceManager Class

+ +
+ + +
public class GettextResourceManager: System.Resources.ResourceManager
+
+ +

Base Types

+ +
+System.Resources.ResourceManager
+  GettextResourceManager

+ +

+ +

Library

+ +
+GNU.Gettext +
+ +

Summary

+ +
+ +Each instance of this class can be used to lookup translations for a +given resource name. For each CultureInfo, it performs the lookup +in several assemblies, from most specific over territory-neutral to +language-neutral. +
+ +

See Also

+ +
+GNU.Gettext Namespace +
+ +

Members

+ +
+

+ +GettextResourceManager Constructors

+ +GettextResourceManager(System.String) Constructor
+GettextResourceManager(System.String, System.Reflection.Assembly) Constructor
+

+ +GettextResourceManager Methods

+ +GettextResourceManager.GetPluralString(System.String, System.String, long, System.Globalization.CultureInfo) Method
+GettextResourceManager.GetPluralString(System.String, System.String, long) Method
+GettextResourceManager.GetString(System.String, System.Globalization.CultureInfo) Method
+GettextResourceManager.GetString(System.String) Method
+

+ +
+ +

GettextResourceManager(System.String) Constructor

+ +
+ + +
public GettextResourceManager(System.String baseName);
+
+ +

Summary

+ +
+ +Constructor. +
+ +

Parameters

+ +
+
+
baseName
+
the resource name, also the assembly base + name
+
+
+ +

See Also

+ +
+GNU.Gettext.GettextResourceManager Class, GNU.Gettext Namespace +
+ +
+ +

GettextResourceManager(System.String, System.Reflection.Assembly) Constructor

+ +
+ + +
public GettextResourceManager(System.String baseName, System.Reflection.Assembly assembly);
+
+ +

Summary

+ +
+ +Constructor. +
+ +

Parameters

+ +
+
+
baseName
+
the resource name, also the assembly base + name
+
+
+ +

See Also

+ +
+GNU.Gettext.GettextResourceManager Class, GNU.Gettext Namespace +
+ +
+ +

GettextResourceManager.GetPluralString(System.String, System.String, long, System.Globalization.CultureInfo) Method

+ +
+ + +
public virtual System.String GetPluralString(System.String msgid, System.String msgidPlural, long n, System.Globalization.CultureInfo culture);
+
+ +

Summary

+ +
+ +Returns the translation of msgid and +msgidPlural in a given culture, choosing the right +plural form depending on the number n. +
+ +

Parameters

+ +
+
+
msgid
+
the key string to be translated, an ASCII + string
+
msgidPlural
+
the English plural of msgid, + an ASCII string
+
n
+
the number, should be >= 0
+
+
+ +

Return Value

+ +
+the translation, or msgid or + msgidPlural if none is found +
+ +

See Also

+ +
+GNU.Gettext.GettextResourceManager Class, GNU.Gettext Namespace +
+ +
+ +

GettextResourceManager.GetPluralString(System.String, System.String, long) Method

+ +
+ + +
public virtual System.String GetPluralString(System.String msgid, System.String msgidPlural, long n);
+
+ +

Summary

+ +
+ +Returns the translation of msgid and +msgidPlural in the current culture, choosing the +right plural form depending on the number n. +
+ +

Parameters

+ +
+
+
msgid
+
the key string to be translated, an ASCII + string
+
msgidPlural
+
the English plural of msgid, + an ASCII string
+
n
+
the number, should be >= 0
+
+
+ +

Return Value

+ +
+the translation, or msgid or + msgidPlural if none is found +
+ +

See Also

+ +
+GNU.Gettext.GettextResourceManager Class, GNU.Gettext Namespace +
+ +
+ +

GettextResourceManager.GetString(System.String, System.Globalization.CultureInfo) Method

+ +
+ + +
public override System.String GetString(System.String msgid, System.Globalization.CultureInfo culture);
+
+ +

Summary

+ +
+ +Returns the translation of msgid in a given culture. +
+ +

Parameters

+ +
+
+
msgid
+
the key string to be translated, an ASCII + string
+
+
+ +

Return Value

+ +
+the translation of msgid, or + msgid if none is found +
+ +

See Also

+ +
+GNU.Gettext.GettextResourceManager Class, GNU.Gettext Namespace +
+ +
+ +

GettextResourceManager.GetString(System.String) Method

+ +
+ + +
public override System.String GetString(System.String msgid);
+
+ +

Summary

+ +
+ +Returns the translation of msgid in the current +culture. +
+ +

Parameters

+ +
+
+
msgid
+
the key string to be translated, an ASCII + string
+
+
+ +

Return Value

+ +
+the translation of msgid, or + msgid if none is found +
+ +

See Also

+ +
+GNU.Gettext.GettextResourceManager Class, GNU.Gettext Namespace +
+ + + diff -Nru gettext-0.19.6/gettext-runtime/intl-csharp/doc/GNU_Gettext_GettextResourceSet.html gettext-0.19.7/gettext-runtime/intl-csharp/doc/GNU_Gettext_GettextResourceSet.html --- gettext-0.19.6/gettext-runtime/intl-csharp/doc/GNU_Gettext_GettextResourceSet.html 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-csharp/doc/GNU_Gettext_GettextResourceSet.html 2015-10-01 12:29:15.000000000 +0000 @@ -0,0 +1,356 @@ + + +GNU.Gettext.GettextResourceSet Class + + +

GNU.Gettext.GettextResourceSet Class

+ +
+ + +
public class GettextResourceSet: System.Resources.ResourceSet
+
+ +

Base Types

+ +
+System.Resources.ResourceSet
+  GettextResourceSet

+ +

+ +

Library

+ +
+GNU.Gettext +
+ +

Summary

+ +
+ +Each instance of this class encapsulates a single PO file. +

+ + +This API of this class is not meant to be used directly; use +GettextResourceManager instead. +

+ +

+ +

See Also

+ +
+GNU.Gettext Namespace +
+ +

Members

+ +
+

+ +GettextResourceSet Constructors

+ +GettextResourceSet() Constructor
+GettextResourceSet(System.Resources.IResourceReader) Constructor
+GettextResourceSet(System.IO.Stream) Constructor
+GettextResourceSet(System.String) Constructor
+

+ +GettextResourceSet Methods

+ +GettextResourceSet.GetPluralString Method
+GettextResourceSet.GetString(System.String) Method
+GettextResourceSet.GetString(System.String, bool) Method
+GettextResourceSet.PluralEval Method
+

+ +GettextResourceSet Properties

+ +GettextResourceSet.Keys Property
+

+ +
+ +

GettextResourceSet() Constructor

+ +
+ + +
protected GettextResourceSet();
+
+ +

Summary

+ +
+ +Creates a new message catalog. When using this constructor, you +must override the ReadResources method, in order to initialize +the Table property. The message catalog will support plural +forms only if the ReadResources method installs values of type +String[] and if the PluralEval method is overridden. +
+ +

See Also

+ +
+GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace +
+ +
+ +

GettextResourceSet(System.Resources.IResourceReader) Constructor

+ +
+ + +
public GettextResourceSet(System.Resources.IResourceReader reader);
+
+ +

Summary

+ +
+ +Creates a new message catalog, by reading the string/value pairs from +the given reader. The message catalog will support +plural forms only if the reader can produce values of type +String[] and if the PluralEval method is overridden. +
+ +

See Also

+ +
+GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace +
+ +
+ +

GettextResourceSet(System.IO.Stream) Constructor

+ +
+ + +
public GettextResourceSet(System.IO.Stream stream);
+
+ +

Summary

+ +
+ +Creates a new message catalog, by reading the string/value pairs from +the given stream, which should have the format of +a .resources file. The message catalog will not support plural +forms. +
+ +

See Also

+ +
+GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace +
+ +
+ +

GettextResourceSet(System.String) Constructor

+ +
+ + +
public GettextResourceSet(System.String fileName);
+
+ +

Summary

+ +
+ +Creates a new message catalog, by reading the string/value pairs from +the file with the given fileName. The file should +be in the format of a .resources file. The message catalog will +not support plural forms. +
+ +

See Also

+ +
+GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace +
+ +
+ +

GettextResourceSet.GetPluralString Method

+ +
+ + +
public virtual System.String GetPluralString(System.String msgid, System.String msgidPlural, long n);
+
+ +

Summary

+ +
+ +Returns the translation of msgid and +msgidPlural, choosing the right plural form +depending on the number n. +
+ +

Parameters

+ +
+
+
msgid
+
the key string to be translated, an ASCII + string
+
msgidPlural
+
the English plural of msgid, + an ASCII string
+
n
+
the number, should be >= 0
+
+
+ +

Return Value

+ +
+the translation, or null if none is found +
+ +

See Also

+ +
+GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace +
+ +
+ +

GettextResourceSet.GetString(System.String) Method

+ +
+ + +
public override System.String GetString(System.String msgid);
+
+ +

Summary

+ +
+ +Returns the translation of msgid. +
+ +

Parameters

+ +
+
+
msgid
+
the key string to be translated, an ASCII + string
+
+
+ +

Return Value

+ +
+the translation of msgid, or null if + none is found +
+ +

See Also

+ +
+GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace +
+ +
+ +

GettextResourceSet.GetString(System.String, bool) Method

+ +
+ + +
public override System.String GetString(System.String msgid, bool ignoreCase);
+
+ +

Summary

+ +
+ +Returns the translation of msgid, with possibly +case-insensitive lookup. +
+ +

Parameters

+ +
+
+
msgid
+
the key string to be translated, an ASCII + string
+
+
+ +

Return Value

+ +
+the translation of msgid, or null if + none is found +
+ +

See Also

+ +
+GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace +
+ +
+ +

GettextResourceSet.PluralEval Method

+ +
+ + +
protected virtual long PluralEval(long n);
+
+ +

Summary

+ +
+ +Returns the index of the plural form to be chosen for a given number. +The default implementation is the Germanic plural formula: +zero for n == 1, one for n != 1. +
+ +

See Also

+ +
+GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace +
+ +
+ +

GettextResourceSet.Keys Property

+ +
+ + +
public virtual System.Collections.ICollection Keys { get; }
+
+ +

Summary

+ +
+ +Returns the keys of this resource set, i.e. the strings for which +GetObject() can return a non-null value. +
+ +

See Also

+ +
+GNU.Gettext.GettextResourceSet Class, GNU.Gettext Namespace +
+ + + diff -Nru gettext-0.19.6/gettext-runtime/intl-csharp/doc/GNU_Gettext.html gettext-0.19.7/gettext-runtime/intl-csharp/doc/GNU_Gettext.html --- gettext-0.19.6/gettext-runtime/intl-csharp/doc/GNU_Gettext.html 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-csharp/doc/GNU_Gettext.html 2015-10-01 12:29:15.000000000 +0000 @@ -0,0 +1,8 @@ + + +GNU.Gettext Namespace

+ +GettextResourceManager
+GettextResourceSet
+ + diff -Nru gettext-0.19.6/gettext-runtime/intl-csharp/doc/index.html gettext-0.19.7/gettext-runtime/intl-csharp/doc/index.html --- gettext-0.19.6/gettext-runtime/intl-csharp/doc/index.html 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-csharp/doc/index.html 2015-10-01 12:29:15.000000000 +0000 @@ -0,0 +1,10 @@ + +- + + + + + + + + diff -Nru gettext-0.19.6/gettext-runtime/intl-csharp/doc/namespaces.html gettext-0.19.7/gettext-runtime/intl-csharp/doc/namespaces.html --- gettext-0.19.6/gettext-runtime/intl-csharp/doc/namespaces.html 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-csharp/doc/namespaces.html 2015-10-01 12:29:15.000000000 +0000 @@ -0,0 +1,6 @@ + + +Namespaces

+GNU.Gettext
+ + diff -Nru gettext-0.19.6/gettext-runtime/intl-csharp/Makefile.am gettext-0.19.7/gettext-runtime/intl-csharp/Makefile.am --- gettext-0.19.6/gettext-runtime/intl-csharp/Makefile.am 2015-08-21 07:18:24.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-csharp/Makefile.am 2015-10-01 12:29:15.000000000 +0000 @@ -61,32 +61,32 @@ # C# reference documentation. Requires the pnet tools. -csharpdoc: - test -d csharpdoc || mkdir csharpdoc +doc: + test -d doc || mkdir doc csdoc -flibrary-name=GNU.Gettext intl.cs | \ - csdoc2html -o csharpdoc -fmulti-file -fframes -fcombine-members -fno-namespace-directories - + csdoc2html -o doc -fmulti-file -f - - * gettext 0.19.6 released. - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2013-06-10 Daiki Ueno - - * Makefile.am: Use $(MKDIR_P) instead of $(mkdir_p). - Suggested by Stefano Lattarini in - . - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2011-06-03 Bruno Haible - - Copyright: Use LGPL 2.1 instead of LGPL 2.0. - * gnu/gettext/GettextResource.java: Update copyright header. - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2007-09-01 Bruno Haible - - Implement msgctxt for Java ResourceBundles. - * gnu/gettext/GettextResource.java (gettextnull): New method. - (gettext): Use it. - (ngettextnull): New method, extracted from ngettext. - (ngettext): Use it. - (pgettext, npgettext): New methods. - Suggested by Felix Berger. - -2007-03-27 Bruno Haible - - * Makefile.am (javadoc2/index.html): Pass the package name to javadoc. - * javadoc2/package-list: Mention package gnu.gettext. - Reported by Jens Petersen . - -2007-03-27 Bruno Haible - - * javadoc1/**: Remove files. - * Makefile.am (JAVADOC1, JAVADOC1_FILES): Remove variables. - (all-javadoc1, javadoc1/tree.html, install-javadoc1, - installdirs-javadoc1, uninstall-javadoc1): Remove rules. - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-07-31 Bruno Haible - - * Makefile.am (JAVACOMP): Update for changed location of javacomp.sh. - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2006-04-14 Bruno Haible - - Assume autoconf >= 2.60. - * Makefile.am (docdir, htmldir): Remove variables. - -2006-04-17 Bruno Haible - - * Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs). - -2006-06-21 Bruno Haible - - * gettext-0.14.6 released. - -2005-05-23 Bruno Haible - - * gettext-0.14.5 released. - -2005-04-11 Bruno Haible - - * gettext-0.14.4 released. - -2005-03-14 Bruno Haible - - * gettext-0.14.3 released. - -2005-02-24 Bruno Haible - - * gettext-0.14.2 released. - -2004-01-29 Bruno Haible - - * gettext-0.14.1 released. - -2004-01-28 Bruno Haible - - * gettext-0.14 released. - -2003-12-17 Bruno Haible - - * gettext-0.13.1 released. - -2003-11-30 Bruno Haible - - * gettext-0.13 released. - -2003-11-13 Bruno Haible - - * Makefile.am (docdir): Use the value from the configure script. - -2003-05-22 Bruno Haible - - * gettext-0.12.1 released. - -2003-05-17 Bruno Haible - - * gettext-0.12 released. - -2003-04-12 Bruno Haible - - * Makefile.am (docdir): Use datadir instead of prefix. - -2003-02-22 Bruno Haible - - * Makefile.am (installdirs): Remove dependency, redundant with - automake >= 1.6. - -2003-02-12 Bruno Haible - - * Makefile.am (docdir): Use 'gettext' instead of @PACKAGE@. - (EXTRA_DIST): Fix typo. - -2003-01-12 Bruno Haible - - * Makefile.am: Make use of += for variables. - -2002-08-06 Bruno Haible - - * gettext-0.11.5 released. - -2002-07-25 Bruno Haible - - * gettext-0.11.4 released. - -2002-07-17 Bruno Haible - - * gettext-0.11.3 released. - -2002-05-18 Bruno Haible - - * Makefile.am (RM): New variable. - -2002-04-24 Bruno Haible - - * gettext-0.11.2 released. - -2002-03-12 Bruno Haible - - * gettext-0.11.1 released. - -2002-01-31 Bruno Haible - - * gettext-0.11 released. - -2001-11-25 Bruno Haible - - * Makefile.am (install-javadoc1): Make it work when builddir != srcdir. - (install-javadoc2): Likewise. - -2001-11-03 Bruno Haible - - Distribute javadoc generated documentation. - * Makefile.am (docdir, htmldir, JAVADOC1, JAVADOC2): New variables. - (all-classes): Renamed from all-local. - (all-classes-no): Renamed from all-java-no. - (all-classes-yes): Renamed from all-java-yes. - (install-classes): Renamed from install-data-local. - (install-classes-no): Renamed from install-java-no. - (install-classes-yes): Renamed from install-java-yes. - (installdirs-classes): Renamed from installdirs-local. - (uninstall-classes): Renamed from uninstall-local. - (all-local, install-data-local, installdirs-local, uninstall-local): - New targets. - (JAVADOC1_FILES, JAVADOC2_FILES): New variables. - (all-javadoc1, javadoc1/tree.html, install-javadoc1, - installdirs-javadoc1, uninstall-javadoc1, all-javadoc2, - javadoc2/index.html, install-javadoc2, installdirs-javadoc2, - uninstall-javadoc2): New targets. - (EXTRA_DIST): Add JAVADOC1_FILES and JAVADOC2_FILES. - -2001-10-30 Bruno Haible - - * Makefile.am (EXTRA_DIST): New variable. - -2001-10-21 Bruno Haible - - * Makefile.am (install-java-no, install-java-yes): Create $(jardir), - for consistency with the installdirs rule. - -2001-09-08 Bruno Haible - - * gnu/gettext/GettextResource.java: New file. - * Makefile.am: New file. diff -Nru gettext-0.19.6/gettext-runtime/intl-java/ChangeLog.0 gettext-0.19.7/gettext-runtime/intl-java/ChangeLog.0 --- gettext-0.19.6/gettext-runtime/intl-java/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-java/ChangeLog.0 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,236 @@ +2015-09-11 Daiki Ueno + + * gettext 0.19.6 released. + +2015-07-10 Daiki Ueno + + * gettext 0.19.5 released. + +2014-12-24 Daiki Ueno + + * gettext 0.19.4 released. + +2014-10-15 Daiki Ueno + + * gettext 0.19.3 released. + +2014-07-14 Daiki Ueno + + * gettext 0.19.2 released. + +2014-06-10 Daiki Ueno + + * gettext 0.19.1 released. + +2014-06-02 Daiki Ueno + + * gettext 0.19 released. + +2013-06-10 Daiki Ueno + + * Makefile.am: Use $(MKDIR_P) instead of $(mkdir_p). + Suggested by Stefano Lattarini in + . + +2012-12-25 Daiki Ueno + + * gettext-0.18.2 released. + +2011-06-03 Bruno Haible + + Copyright: Use LGPL 2.1 instead of LGPL 2.0. + * gnu/gettext/GettextResource.java: Update copyright header. + +2010-06-04 Bruno Haible + + * gettext-0.18.1 released. + +2010-05-09 Bruno Haible + + * gettext-0.18 released. + +2007-11-07 Bruno Haible + + * gettext-0.17 released. + +2007-09-01 Bruno Haible + + Implement msgctxt for Java ResourceBundles. + * gnu/gettext/GettextResource.java (gettextnull): New method. + (gettext): Use it. + (ngettextnull): New method, extracted from ngettext. + (ngettext): Use it. + (pgettext, npgettext): New methods. + Suggested by Felix Berger. + +2007-03-27 Bruno Haible + + * Makefile.am (javadoc2/index.html): Pass the package name to javadoc. + * javadoc2/package-list: Mention package gnu.gettext. + Reported by Jens Petersen . + +2007-03-27 Bruno Haible + + * javadoc1/**: Remove files. + * Makefile.am (JAVADOC1, JAVADOC1_FILES): Remove variables. + (all-javadoc1, javadoc1/tree.html, install-javadoc1, + installdirs-javadoc1, uninstall-javadoc1): Remove rules. + +2006-11-27 Bruno Haible + + * gettext-0.16.1 released. + +2006-10-26 Bruno Haible + + * gettext-0.16 released. + +2006-07-31 Bruno Haible + + * Makefile.am (JAVACOMP): Update for changed location of javacomp.sh. + +2006-07-21 Bruno Haible + + * gettext-0.15 released. + +2006-04-14 Bruno Haible + + Assume autoconf >= 2.60. + * Makefile.am (docdir, htmldir): Remove variables. + +2006-04-17 Bruno Haible + + * Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs). + +2006-06-21 Bruno Haible + + * gettext-0.14.6 released. + +2005-05-23 Bruno Haible + + * gettext-0.14.5 released. + +2005-04-11 Bruno Haible + + * gettext-0.14.4 released. + +2005-03-14 Bruno Haible + + * gettext-0.14.3 released. + +2005-02-24 Bruno Haible + + * gettext-0.14.2 released. + +2004-01-29 Bruno Haible + + * gettext-0.14.1 released. + +2004-01-28 Bruno Haible + + * gettext-0.14 released. + +2003-12-17 Bruno Haible + + * gettext-0.13.1 released. + +2003-11-30 Bruno Haible + + * gettext-0.13 released. + +2003-11-13 Bruno Haible + + * Makefile.am (docdir): Use the value from the configure script. + +2003-05-22 Bruno Haible + + * gettext-0.12.1 released. + +2003-05-17 Bruno Haible + + * gettext-0.12 released. + +2003-04-12 Bruno Haible + + * Makefile.am (docdir): Use datadir instead of prefix. + +2003-02-22 Bruno Haible + + * Makefile.am (installdirs): Remove dependency, redundant with + automake >= 1.6. + +2003-02-12 Bruno Haible + + * Makefile.am (docdir): Use 'gettext' instead of @PACKAGE@. + (EXTRA_DIST): Fix typo. + +2003-01-12 Bruno Haible + + * Makefile.am: Make use of += for variables. + +2002-08-06 Bruno Haible + + * gettext-0.11.5 released. + +2002-07-25 Bruno Haible + + * gettext-0.11.4 released. + +2002-07-17 Bruno Haible + + * gettext-0.11.3 released. + +2002-05-18 Bruno Haible + + * Makefile.am (RM): New variable. + +2002-04-24 Bruno Haible + + * gettext-0.11.2 released. + +2002-03-12 Bruno Haible + + * gettext-0.11.1 released. + +2002-01-31 Bruno Haible + + * gettext-0.11 released. + +2001-11-25 Bruno Haible + + * Makefile.am (install-javadoc1): Make it work when builddir != srcdir. + (install-javadoc2): Likewise. + +2001-11-03 Bruno Haible + + Distribute javadoc generated documentation. + * Makefile.am (docdir, htmldir, JAVADOC1, JAVADOC2): New variables. + (all-classes): Renamed from all-local. + (all-classes-no): Renamed from all-java-no. + (all-classes-yes): Renamed from all-java-yes. + (install-classes): Renamed from install-data-local. + (install-classes-no): Renamed from install-java-no. + (install-classes-yes): Renamed from install-java-yes. + (installdirs-classes): Renamed from installdirs-local. + (uninstall-classes): Renamed from uninstall-local. + (all-local, install-data-local, installdirs-local, uninstall-local): + New targets. + (JAVADOC1_FILES, JAVADOC2_FILES): New variables. + (all-javadoc1, javadoc1/tree.html, install-javadoc1, + installdirs-javadoc1, uninstall-javadoc1, all-javadoc2, + javadoc2/index.html, install-javadoc2, installdirs-javadoc2, + uninstall-javadoc2): New targets. + (EXTRA_DIST): Add JAVADOC1_FILES and JAVADOC2_FILES. + +2001-10-30 Bruno Haible + + * Makefile.am (EXTRA_DIST): New variable. + +2001-10-21 Bruno Haible + + * Makefile.am (install-java-no, install-java-yes): Create $(jardir), + for consistency with the installdirs rule. + +2001-09-08 Bruno Haible + + * gnu/gettext/GettextResource.java: New file. + * Makefile.am: New file. diff -Nru gettext-0.19.6/gettext-runtime/intl-java/Makefile.in gettext-0.19.7/gettext-runtime/intl-java/Makefile.in --- gettext-0.19.6/gettext-runtime/intl-java/Makefile.in 2015-09-11 03:04:53.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/intl-java/Makefile.in 2015-12-27 23:09:25.000000000 +0000 @@ -225,7 +225,7 @@ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in \ - $(top_srcdir)/../build-aux/mkinstalldirs ChangeLog + $(top_srcdir)/../build-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkglibexecdir = @pkglibexecdir@ ACLOCAL = @ACLOCAL@ diff -Nru gettext-0.19.6/gettext-runtime/libasprintf/aclocal.m4 gettext-0.19.7/gettext-runtime/libasprintf/aclocal.m4 --- gettext-0.19.6/gettext-runtime/libasprintf/aclocal.m4 2015-09-11 03:04:44.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/libasprintf/aclocal.m4 2015-12-27 23:09:16.000000000 +0000 @@ -56,6 +56,66 @@ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) +# Copyright (C) 2011-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_AR([ACT-IF-FAIL]) +# ------------------------- +# Try to determine the archiver interface, and trigger the ar-lib wrapper +# if it is needed. If the detection of archiver interface fails, run +# ACT-IF-FAIL (default is to abort configure with a proper error message). +AC_DEFUN([AM_PROG_AR], +[AC_BEFORE([$0], [LT_INIT])dnl +AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([ar-lib])dnl +AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) +: ${AR=ar} + +AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], + [AC_LANG_PUSH([C]) + am_cv_ar_interface=ar + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], + [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + ]) + AC_LANG_POP([C])]) + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + m4_default([$1], + [AC_MSG_ERROR([could not determine $AR interface])]) + ;; +esac +AC_SUBST([AR])dnl +]) + # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. diff -Nru gettext-0.19.6/gettext-runtime/libasprintf/ChangeLog gettext-0.19.7/gettext-runtime/libasprintf/ChangeLog --- gettext-0.19.6/gettext-runtime/libasprintf/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/libasprintf/ChangeLog 2015-12-27 23:09:15.000000000 +0000 @@ -1,1384 +1,11 @@ -2015-09-11 Daiki Ueno - - * gettext 0.19.6 released. - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2015-03-12 Daiki Ueno - - * vasnprintf.c: Update from gnulib. - -2015-01-22 Daiki Ueno - - * vasnprintf.c: Update copyright year. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-09-30 Daiki Ueno - - * vasnprintf.c: Update from Gnulib. - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2013-06-10 Daiki Ueno - - * Makefile.am: Use $(MKDIR_P) instead of $(mkdir_p). - Suggested by Stefano Lattarini in - . - -2013-03-07 Miguel Angel Arruga Vivas (tiny change) - - Fix '__attribute__' definition. - Reported at - * autosprintf.in.h (_AUTOSPRINTF_ATTRIBUTE_FORMAT): New macro - instead of redefine __attribute__. - -2013-03-04 Miguel Angel Arruga Vivas (tiny change) - - Add 'autosprintf::operator='. Needed because destructor - is not trivial. - Reported at - * autosprintf.in.h (autosprintf::operator=): New function. - Thanks to Daiki Ueno for pointing a better copy-and-swap - idiom use. - * autosprintf.cc (autosprintf::operator=): Likewise. - -2013-01-17 Daiki Ueno - - Fix link errors related to C99-style extern inline. - Reported by Sam Thursfield . - * Makefile.am (libasprintf_la_SOURCES): Add xsize.h and xsize.c. - (lib_asprintf_EXTRASOURCES): Remove xsize.h. - * xsize.h: Remove, replacing with the one from gnulib when - bootstrapping. - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2012-12-17 Daiki Ueno - - * configure.ac: Use AC_CONFIG_HEADERS instead of AM_CONFIG_HEADER. - Suggested by Stefano Lattarini . - -2012-11-29 Paul Eggert - - * vasnprintf.c (MAX_ROOM_NEEDED): Now static, not static - inline. - -2012-06-22 Bruno Haible - - * vasnprintf.c: Write "Mac OS X" instead of "MacOS X". - -2012-02-09 Paul Eggert - - maint: replace FSF snail-mail addresses with URLs - * vasnprintf.c, xsize.h: - Replace FSF snail mail addresses with URLs, as per GNU coding - standards. See glibc bug - . - -2012-02-05 Paul Eggert - - * vasnprintf.c: Spelling fixes. - -2012-01-26 Bruno Haible - - Modernize quoting. - * autosprintf.in.h: Quote 'like this', not `like this', as per the - recent change to the GNU coding standards. - * vasnprintf.h: Likewise. - * vasprintf.h: Likewise. - * INSTALL: Process through sed -e "s/\`\([^']*\)'/‘\1’/g" - -2012-01-04 Bruno Haible - - Talk about "native Windows API", not "Win32". - * vasnprintf.c: Update comments to mention native Windows. - -2011-10-15 Bruno Haible - - vasnprintf: Optimize bit search operation. - * vasnprintf.c (divide): Use optimizations from gnulib's - integer_length.c. - -2011-10-15 Bruno Haible - - vasnprintf: Fix comments. - * vasnprintf.c (decode_long_double, decode_double): Fix comments. - -2011-06-06 Bruno Haible - - Ensure mbstate_t gets defined in libasprintf. - * configure.ac: Invoke AC_TYPE_MBSTATE_T. Needed on HP-UX 11.31. - -2011-06-04 Bruno Haible - - Ensure intmax_t gets defined in libasprintf. - * configure.ac: Invoke gl_AC_TYPE_INTMAX_T instead of gt_TYPE_INTMAX_T. - -2011-06-03 Bruno Haible - - * Makefile.am (lib_asprintf_EXTRASOURCES): Add verify.h. - -2010-10-10 Paul Eggert - - rewrite int foo[2*X-1] to verify(X) or to int foo[X?1:-1] - * vasnprintf.c: Include "verify.h". - (mp_limb_verify, mp_twolimb_verify, TCHAR_T_verify): Remove, replacing - with a verify call. - -2011-06-03 Bruno Haible - - Copyright: Use LGPL 2.1 instead of LGPL 2.0. - * COPYING.LIB: Replace with text of LGPL 2.1. - * *.h, *.c, *.cc, Makefile.am: Update copyright header. - -2011-02-23 Bruno Haible - - Fix misindentation of preprocessor directives. - * vasnprintf.c (decode_long_double): Reindent preprocessor directives. - -2011-02-04 Bruno Haible - - vasnprintf: Reduce use of malloc for small format strings. - * printf-args.h (N_DIRECT_ALLOC_ARGUMENTS): New macro. - (arguments): Add room for the first 7 arguments. - * printf-parse.h (N_DIRECT_ALLOC_DIRECTIVES): New macro. - (char_directives, u8_directives, u16_directives, u32_directives): Add - room for the first 7 directives. - * printf-parse.c: Include . - (PRINTF_PARSE): Change memory handling code so that it uses the first - 7 preallocated elements in an 'arguments' or 'DIRECTIVES' struct. - * vasnprintf.c (VASNPRINTF): Update memory handling code. - Reported by Pádraig Brady . - -2010-11-20 Bruno Haible - - Ensure that is included before __GLIBC__ is tested. - * printf-parse.h: Include . - * configure.ac: Test for . - Reported by Mike Frysinger . - -2010-11-20 Bruno Haible - - Port to uClibc. - * printf-parse.h (FLAG_LOCALIZED): Treat uClibc like a non-glibc platform. - * printf-parse.c (PRINTF_PARSE): Likewise. - * vasnprintf.c (decimal_point_char): Treat uClibc like glibc. - (VASNPRINTF): Treat uClibc like a non-glibc platform. - Reported by Mike Frysinger . - -2010-11-20 Bruno Haible - - Fix a comment. - * vasnprintf.c (VASNPRINTF): Fix comment. - -2010-11-07 Bruno Haible - - vasnprintf: Support I flag on glibc systems. - * printf-parse.h (FLAG_LOCALIZED): New macro. - * printf-parse.c (PRINTF_PARSE): Handle the 'I' flag. - * vasnprintf.c (VASNPRINTF): Pass the 'I' flag on to the system's - snprintf function. - -2010-11-07 Bruno Haible - - Rename autosprintf.h.in to autosprintf.in.h. - * autosprintf.in.h: New file, renamed from autosprintf.h.in. - * Makefile.am (autosprintf.h, EXTRA_DIST): Update. - -2010-10-14 Bruno Haible - - vasnprintf: Don't set errno to 0. - * vasnprintf.c (VASNPRINTF): Save and restore errno around the block - that sets it to 0. - Reported by Gianluigi Tiesi . - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2010-05-09 Bruno Haible - - vasnprintf: Fix syntax errors in libintl build on mingw. - * vasnprintf.c (VASNPRINTF): Move a closing brace. Undefine - pad_ourselves and prec_ourselves after use. - -2010-04-24 Bruno Haible - - vasnprintf: Correct errno value in case of out-of-memory. - * vasnprintf.c (VASNPRINTF): Set errno to 0 before calling SNPRINTF or - sprintf. Use the errno value from SNPRINTF or sprintf. - Reported by Ian Beckwith . - -2010-04-10 Bruno Haible - - vasnprintf: Correct handling of unconvertible wide string arguments. - * vasnprintf.c (MAX_ROOM_NEEDED): New function, extracted from - VASNPRINTF. - (VASNPRINTF): Use it. After snprintf failed, allocate more memory only - if HAVE_SNPRINTF_RETVAL_C99 is false and the allocated memory is - smaller than the expected maximum need for the directive. Set errno to - EILSEQ, not EINVAL, when the directive is 'c' or 's'. - (local_strnlen, local_wcslen, local_wcsnlen): Update conditions. - Reported by Jarno Rajahalme . - -2010-04-10 Bruno Haible - - vasnprintf: Fix crash in %ls directive. - * vasnprintf.c (VASNPRINTF): Don't abort when a unconvertible wide - string is passed as argument to %ls, with no precision and no width. - Reported by Jarno Rajahalme . - -2010-04-10 Bruno Haible - - vasnprintf: Fix multiple test failures on mingw. - * vasnprintf.c (SNPRINTF) [mingw]: Define to snprintf, not _snprintf, - or snwprintf, not _snwprintf. - -2010-01-01 Bruno Haible - - * vasnprintf.c (VASNPRINTF): If GNULIB_defined_mbstate_t is defined, - use wctomb instead of wcrtomb. - -2009-12-12 Bruno Haible - - * *.h, *.c: Untabify. - -2009-11-22 Bruno Haible - - * vasnprintf.c (decimal_point_char): Choose the fast path also on - MacOS X. - -2009-11-17 Eric Blake - - * vasnprintf.c (VASNPRINTF): Avoid shadowing our own local variables. - -2009-08-20 Eric Blake - - * vasnprintf.c (decimal_point_char): Avoid warning on old-style - declaration. - -2009-08-14 Bruno Haible - - Use the gnulib module 'errno'. - * Makefile.am: Include Makefile.gnulib. - (ACLOCAL_AMFLAGS): Add -I gnulib-m4. - (EXTRA_DIST): Add gnulib-m4/gnulib-cache.m4. - (BUILT_SOURCES, noinst_LTLIBRARIES): New variables. - * configure.ac (AC_PREREQ): Require autoconf 2.59 or newer. - Invoke gl_EARLY, gl_INIT. Don't invoke gl_EOVERFLOW. Remove the alloca - tests. - -2009-08-10 Bruno Haible - - * vasnprintf.c (DCHAR_SET): Undefine at the end. - -2009-06-06 Bruno Haible - - * configure.ac (AM_INIT_AUTOMAKE): Add 'silent-rules' option. - * Makefile.am (libasprintf.la): Silence 'make' output if silent-rules. - -2009-06-06 Bruno Haible - - * configure.ac: Pass package and version to AC_INIT instead of - AM_INIT_AUTOMAKE. - -2009-05-21 Bruno Haible - - Assume automake >= 1.10.2. - * configure.ac (AC_CONFIG_FILES): Remove FIX_MAKEFILE_COMPILE, - FIX_MAKEFILE_INFO invocations. - -2009-04-26 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Update after the calling convention of - u*_conv_from_encoding and u*_conv_to_encoding changed. - -2009-04-08 Bruno Haible - - * Makefile.am (SUFFIXES, CLEANFILES): Remove variables. Not needed any - more. - -2009-03-23 Jim Meyering - - * vasnprintf.c (divide): Fix typo in comment. - -2009-02-26 Bruno Haible - - Fix *printf behaviour regarding the %ls directive. - * vasnprintf.c (local_wcslen, VASNPRINTF): Handle - NEED_PRINTF_DIRECTIVE_LS. - -2009-02-23 Bruno Haible - - Fix invalid read past end of memory block. - * vasnprintf.c (DCHAR_SET): Define. - (local_wcslen): Define only when needed. - (local_strnlen, local_wcsnlen): New functions. - (VASNPRINTF) [!USE_SNPRINTF && HAVE_WCHAR_T]: Implement the %s and %ls - directives that involve a conversion ourselves. - * configure.ac: Also check for strnlen, wcsnlen, mbrtowc, wcrtomb. - -2009-01-14 Bruno Haible - - * configure.ac: More consistent m4 quoting. - -2008-09-22 Eric Blake - Bruno Haible - - vasnprintf: fix x86/glibc regression on printf("%La", 0.0L) - * vasnprintf.c (VASNPRINTF): Support 0.0 on platforms that supply %A - but mishandle pseudo-NaN. - Reported by Simon Josefsson. - -2008-09-18 Bruno Haible - - * vasnprintf.c (VASNPRINTF): When printing ±0.0L in - NEED_PRINTF_INFINITE_LONG_DOUBLE case with 'e' format, always use two - digits for the exponent. - -2008-09-18 Jim Meyering - Bruno Haible - - * vasnprintf.c (decimal_point_char): Define also if - NEED_PRINTF_INFINITE_LONG_DOUBLE. - -2008-09-16 Bruno Haible - and Eric Blake - - vasnprintf: support Irix 5.3 - * vasnprintf.c (VASNPRINTF): Also handle -0.0L on platforms that - mishandle long double infinity. - Reported by Tom G. Christensen. - -2008-09-02 Eric Blake - - vasnprintf-posix: handle large precision via %.*d - * vasnprintf.c (VASNPRINTF): Don't pass precision to snprintf - when handling it ourselves. - Reported by Alain Guibert. - -2008-07-10 Ben Pfaff - - * vasnprintf.c: Update references to renamed include files. - -2008-05-21 Bruno Haible - - Avoid one more warning from gcc. - * vasnprintf.c (IF_LINT): Update comments. - (VASNPRINTF): Use it also for the 'prefix' array initializer. - -2008-05-21 Jim Meyering - - avoid a warning from gcc - * vasnprintf.c (IF_LINT): Define. - (scale10_round_decimal_long_double): - Use it to avoid a "may be used uninitialized" warning. - (scale10_round_decimal_double): Likewise. - -2008-05-16 Jim Meyering - Bruno Haible - - Avoid some warnings from "gcc -Wshadow". - * vasnprintf.c (exp, remainder): Define to different identifiers. - -2008-04-19 Bruno Haible - - Work around snprintf bug on Linux libc5. - * vasnprintf.c (USE_SNPRINTF): Set to 0 on Linux libc5 systems. - -2008-04-19 Bruno Haible - - * vasnprintf.c (floorlog10l, floorlog10): Reduce maximum error from - 0.0058 to less than 10^-7. - -2008-04-19 Bruno Haible - - Fix rounding when a precision is given. - * vasnprintf.c (is_borderline): New function. - (VASNPRINTF): For %e and %g, consider replacing the digits 10....0 with - 9...9x. - Reported by John Darrington via - Ben Pfaff . - -2008-03-30 Bruno Haible - - Fix buffer overrun. - * vasnprintf.c (VASNPRINTF): If !USE_SNPRINTF && pad_ourselves: - Don't consider the width for tmp_length. Check count against tmp_length - before doing the padding. Ensure enough allocation during padding. - -2008-03-30 Bruno Haible - - * vasnprintf.c (EOVERFLOW): Remove fallback. - -2008-03-30 Bruno Haible - - Fix bug introduced on 2007-06-10. - * vasnprintf.c (VASNPRINTF): When performing zero-padding, use - spaces instead of 0 digits for 's' also when ENABLE_UNISTDIO. - -2008-02-28 Atsushi SAKAI - - * xsize.h: Fix typo in comment: s/tupe/type/. - -2008-02-07 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Don't use %n on native Woe32 systems. - Avoids a crash on Windows Vista. - Reported by Adam Strzelecki via - Simon Josefsson . - -2008-02-06 Bruno Haible - - Fix *printf behaviour regarding the left-adjust flag on HP-UX 10.20. - * vasnprintf.c (VASNPRINTF): Handle NEED_PRINTF_FLAG_LEFTADJUST. - Reported by Peter Fales . - -2008-02-06 Bruno Haible - - Fix bug introduced on 2007-06-10. - * vasnprintf.c (VASNPRINTF): Perform zero-padding also if - !NEED_PRINTF_FLAG_ZERO. - -2008-01-29 Jim Meyering - - vasnprintf.c: Avoid warning about unused label - * vasnprintf.c (VASNPRINTF) [!USE_SNPRINTF]: Guard the - "overflow" label definition and associated code with the - same cpp condition that guards the sole use of that label. - -2008-01-26 Bruno Haible - - Rename isnan, applicable to 'double' only, to isnand. - * vasnprintf.c: Include isnand.h instead of isnan.h. - (is_infinite_or_zero, VASNPRINTF): Use isnand instead of isnan. - -2008-01-08 Jim Meyering - Bruno Haible - - * printf-parse.c (PRINTF_PARSE): Handle a size specifier "q" on MacOS X - and a size specifier "I64" on mingw. Needed for PRIdMAX. - Reported by Peter Fales in - . - -2008-04-20 Bruno Haible - - * configure.ac: Use LT_INIT instead of AC_PROG_LIBTOOL. - -2007-11-26 Bruno Haible - - * vasnprintf.c (decode_long_double): Don't abort if the 'long double' - type has excess precision. - Reported by Jim Meyering in - . - -2007-11-10 Bruno Haible - - * configure.ac: Do _snprintf check like gnulib's vasnprintf.m4 does. - -2007-11-10 Bruno Haible - - * configure.ac: Invoke AC_TYPE_LONG_LONG_INT instead of - gl_AC_TYPE_LONG_LONG. Don't invoke gt_TYPE_LONGDOUBLE. - Report and patch by Kacper. - -2007-11-10 Bruno Haible - - * configure.ac: Invoke gl_EOVERFLOW. - -2007-11-09 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Ensure that we never call snprintf with a - size argument < 2. - -2007-11-09 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Increase reallocation of snprintf buffer. - Fixes an inefficiency introduced on 2007-11-03. - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2007-11-05 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Expand the NEED_PRINTF_DIRECTIVE_A - code when NEED_PRINTF_LONG_DOUBLE or NEED_PRINTF_DOUBLE is set. - Needed on Cygwin, where !NEED_PRINTF_DIRECTIVE_A && NEED_PRINTF_DOUBLE. - Reported by Eric Blake. - -2007-11-04 Bruno Haible - - * vasnprintf.c (DCHAR_IS_TCHAR, DCHAR_CPY): Undefine at the end. - -2007-06-11 Bruno Haible - - * printf-args.c (PRINTF_FETCHARGS) [ENABLE_UNISTDIO]: Fix NULL - replacement string. - Reported by Eric Blake. - -2007-06-10 Bruno Haible - - * printf-args.h (PRINTF_FETCHARGS): New macro. - (arg_type) [ENABLE_UNISTDIO]: Define TYPE_U8_STRING, TYPE_U16_STRING, - TYPE_U32_STRING. - (argument) [ENABLE_UNISTDIO]: Add a_u8_string, a_u16_string, - a_u32_string variants. - (PRINTF_FETCHARGS): Renamed from printf_fetchargs. - * printf-args.c: Don't include config.h and the specification header - if PRINTF_FETCHARGS is already defined. - (PRINTF_FETCHARGS): Renamed from printf_fetchargs. - (PRINTF_FETCHARGS) [ENABLE_UNISTDIO]: Add code for TYPE_U8_STRING, - TYPE_U16_STRING, TYPE_U32_STRING. - -2007-11-04 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Handle NEED_PRINTF_UNBOUNDED_PRECISION. - -2007-11-04 Bruno Haible - - * vasnprintf.c (scale10_round_decimal_decoded): Fix shift loop. - -2007-11-03 Bruno Haible - - * vasnprintf.c: Implement NEED_PRINTF_DOUBLE. - (decode_double): New function, copied from decode_long_double. - (scale10_round_decimal_decoded): New function, extracted from - scale10_round_decimal_long_double. - (scale10_round_decimal_long_double): Use it. - (scale10_round_decimal_double): New function. - (floorlog10): New function. - (VASNPRINTF): Handle NEED_PRINTF_DOUBLE case. - -2007-11-03 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Don't assume that snprintf's return value - is C99 compliant. - Needed for OSF/1 5.1. - -2007-11-03 Bruno Haible - - Fix out-of-memory handling of vasnprintf. - * printf-parse.c: Include . - (PRINTF_PARSE): When failing, set errno to EINVAL or ENOMEM. - * vasnprintf.c (VASNPRINTF): When PRINTF_PARSE fails, assume errno is - already set. - -2007-10-20 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Don't report overflow if the available - length is INT_MAX and sizeof (DCHAR_T) > sizeof (TCHAR_T). - Reported by Ralf Wildenhues . - -2007-10-18 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Don't use %n on glibc >= 2.3 systems. - Reported by Jim Meyering. - -2007-07-13 Bruno Haible - - * vasnprintf.c (decimal_point_char): Define also if - (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) - && !NEED_PRINTF_DIRECTIVE_A. - Reported by Clemens Koller via - Gary V. Vaughan . - -2007-06-10 Bruno Haible - - * vasnprintf.c: Don't include config.h and the specification header if - VASNPRINTF is already defined. - (DCHAR_IS_TCHAR, DCHAR_CPY): New macros. - (VASNPRINTF): Use PRINTF_FETCHARGS instead of printf_fetchargs. Use - DCHAR_CPY. Handle the case that DCHAR_T and FCHAR_T are not the same - type. Handle the case that TCHAR_T and FCHAR_T are not of the same - size. Handle the case that DCHAR_T and TCHAR_T are not the same type, - add a conversion from TCHAR_T[] to DCHAR_T[], and rework the padding - code accordingly. - (VASNPRINTF) [ENABLE_UNISTDIO]: Implement the 'U' directive. Enable - pad_ourselves also in this case, with the 'c' and 's' directives, and - with a different notion of "width". - -2007-06-10 Bruno Haible - - * vasnprintf.c (VASNPRINTF) [!USE_SNPRINTF]: Remove variable - 'maxlen'. Ensure only length + width bytes are allocated, not - length + 1 + width. - -2007-06-09 Bruno Haible - - * vasnprintf.c (FCHAR_T, DCHAR_T, TCHAR_T): New macros. - (CHAR_T): Remove macro. - (VASNPRINTF): Update. - -2007-06-05 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Do the extra handling of NaN and Inf - also the %a / %A. Handle the %a / %A code before this extra handling. - -2007-06-05 Bruno Haible - - * vasnprintf.c [NEED_PRINTF_LONG_DOUBLE || - NEED_PRINTF_INFINITE_LONG_DOUBLE]: Include fpucw.h. - -2007-10-21 Bruno Haible - - * printf-parse.c: Don't assume exists in IN_LIBASPRINTF - context. - -2007-06-10 Bruno Haible - - * printf-parse.c: Don't include config.h and the specification - header if PRINTF_PARSE is already defined. Eliminate the set of - parameters for WIDE_CHAR_VERSION; the user of this file must provide - them now. Include c-ctype.h. - (PRINTF_PARSE) [ENABLE_UNISTDIO]: Add code implementing the 'U' - directive and CHAR_T_ONLY_ASCII. - -2007-09-04 Bruno Haible - - * alloca.in.h: Renamed from alloca_.h. - * Makefile.am (EXTRA_DIST, alloca.h): Update. - -2007-09-01 Bruno Haible - - * autosprintf.texi (Class autosprintf): Explain memory mangement - details. - Reported at . - -2007-05-05 Bruno Haible - - * autosprintf.texi (ifmakeinfo): Remove alias. - (makeinfo): New variable. - * Makefile.am (autosprintf_all.html): Don't pass option -expandinfo - to texi2html. - -2007-05-21 Bruno Haible - - * vasnprintf.c: Update comments. - -2007-05-20 Bruno Haible - - * vasnprintf.c: Use NEED_PRINTF_INFINITE_DOUBLE instead of - NEED_PRINTF_INFINITE. - (is_infinitel): New function. - (VASNPRINTF): Handle NEED_PRINTF_INFINITE_LONG_DOUBLE case. - -2007-05-19 Bruno Haible - - * vasnprintf.c: Include math.h and isnan.h. - (is_infinite_or_zero): New function. - (VASNPRINTF): Fix also the handling of infinite or zero 'double' - values in the %f, %F, %e, %E, %g, %G directives. - -2007-05-19 Bruno Haible - - * vasnprintf.c (convert_to_decimal): Add an extra_zeroes argument. - (scale10_round_decimal_long_double): Inline scale10_round_long_double. - Instead of multiplying with 10^k, set extra_zeroes to k. - (scale10_round_long_double): Remove function. - -2007-05-18 Bruno Haible - - * vasnprintf.c (VASNPRINTF) [NEED_PRINTF_FLAG_ZERO]: Fix logic bug - introduced on 2007-05-06. - -2007-05-18 Bruno Haible - - * vasnprintf.c: Include math.h and float+.h. - (mp_limb_t): New type. - (GMP_LIMB_BITS): New macro. - (mp_twolimb_t): New type. - (GMP_TWOLIMB_BITS): New macro. - (mpn_t): New type. - (multiply, divide, convert_to_decimal, decode_long_double, - scale10_round_long_double, scale10_round_decimal_long_double, - floorlog10l): New functions. - (VASNPRINTF) [NEED_PRINTF_LONG_DOUBLE]: Implement 'long double' support - for the %f, %F, %e, %E, %g, %G directives. - -2007-05-18 Bruno Haible - - * vasnprintf.c (USE_SNPRINTF): Define to 0 on BeOS. - -2007-05-18 Bruno Haible - - * vasnprintf.c (VASNPRINTF) [WIN32]: Use %I64d instead of %lld for - printing 64-bit integers. Needed for mingw. - -2007-05-06 Bruno Haible - - * vasnprintf.c (VASNPRINTF) [NEED_PRINTF_FLAG_ZERO]: Perform the - padding ourselves for the floating-point directives. - -2007-05-06 Bruno Haible - - * vasnprintf.c (VASNPRINTF) [NEED_PRINTF_FLAG_GROUPING]: Don't pass - the ' flag character to sprintf or snprintf. - -2007-04-11 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Implement the %F directive using the %f - directive, if NEED_PRINTF_DIRECTIVE_F is defined. - -2007-04-06 Bruno Haible - - * vasnprintf.c: Include . Don't include float+.h. - (VASNPRINTF): Use signbit for faster determination whether to print a - minus sign. - -2007-03-27 Bruno Haible - - * vasnprintf.c (decimal_point_char): New function. - (VASNPRINTF): Use it. - -2007-03-25 Bruno Haible - - * vasnprintf.c: Include langinfo.h. - (VASNPRINTF): Prefer nl_langinfo over localeconv, since it's more - multithread-safe. - -2007-03-24 Bruno Haible - - * vasnprintf.c: Include fpucw.h. - (VASNPRINTF): Invoke BEGIN/END_LONG_DOUBLE_ROUNDING around the - 'long double' calculations. - -2007-03-24 Bruno Haible - - * vasnprintf.c: Include float+.h. - (VASNPRINTF): When comparing against +0.0L or +0.0, compare only - SIZEOF_LDBL or SIZEOF_DBL bytes. - -2007-03-24 Bruno Haible - - * vasnprintf.c [!HAVE_LONG_DOUBLE]: Include printf-frexp.h. Don't - include isnanl-nolibm.h. - -2007-03-21 Bruno Haible - - * vasnprintf.c: Update after isnanl.h was renamed to isnanl-nolibm.h. - -2007-03-18 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Undo first part of last patch. - -2007-03-17 Bruno Haible - - * vasnprintf.c (EOVERFLOW): New fallback definition. - (VASNPRINTF): Fail with EOVERFLOW when the given allocated size is - larger than INT_MAX, or when it grow to a value larger than INT_MAX. - -2007-03-17 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Clear out the memory used for arg_mem - before comparing it. Needed because on some platforms (e.g. x86) a - 'long double' occupies less bytes than sizeof (long double). - -2007-03-11 Bruno Haible - - * vasnprintf.c (sprintf): Undefine. - -2007-03-11 Bruno Haible - - * vasnprintf.c (snprintf): Undefine. Avoids an endless recursion. - -2007-03-09 Bruno Haible - - * vasnprintf.c (VASNPRINTF): For the 'a' and 'A' directives, use a - locale dependent decimal point, rather than always '.'. - -2007-03-04 Bruno Haible - - * vasnprintf.c: Include isnan.h, isnanl.h, printf-frexp.h, - printf-frexpl.h. - (VASNPRINTF): Handle the 'a' and 'A' directives here, if needed. - -2007-03-30 Bruno Haible - - * alloca_.h: Change prefix of double-inclusion guard macro to _GL_. - -2006-06-19 Paul Eggert - - * alloca_.h (alloca) [defined alloca]: Don't define or declare. - -2007-03-08 Bruno Haible - - * vasnprintf.h: Convert tabs in the middle of lines to spaces. - -2007-05-03 Bruno Haible - - Add support for both "makeinfo --html" and texi2html. - * autosprintf.texi (ifmakeinfo): New alias. - (Top): Use it instead of @ifinfo. - -2007-04-06 Bruno Haible - - * printf-args.h: Assume HAVE_LONG_DOUBLE to be true. - * printf-args.c: Likewise. - * printf-parse.c: Likewise. - * vasnprintf.c: Likewise. - -2007-03-29 Bruno Haible - - * Makefile.am (DEFS): New variable. - * vasprintf.c: Sync with gnulib. - * asprintf.c: Likewise. - -2007-03-25 Bruno Haible - - * printf-parse.c [!IN_LIBINTL]: Include , for intmax_t. - (PRINTF_PARSE): Make the support for size specifier 'j' unconditional. - -2007-02-25 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Fix estimate of size needed for a 'a' or - 'A' conversion. - -2007-01-29 Bruno Haible - - * printf-args.h: Use '#if HAVE_*' instead of '#ifdef HAVE_*'. - * printf-args.c: Likewise. - * printf-parse.c: Likewise. - * vasnprintf.c: Likewise. - -2006-11-01 Bruno Haible - - * printf-parse.c (PRINTF_PARSE): Cast malloc/realloc results. - -2006-10-27 Bruno Haible - - Work around automake-1.10 annoyance. - * Makefile.am (ACLOCAL): New macro. - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-10-16 Bruno Haible - - Switch to automake-1.10. - * Makefile.am (install-dvi, install-ps, install-pdf): Remove rules. - (HTMLS): New variable. - (html-local): Use it. - (install-html): Remove rule. - -2006-10-11 Paul Eggert - Bruno Haible - - * printf-args.h (arg_type, argument): Test HAVE_LONG_LONG_INT - instead of HAVE_LONG_LONG. - * printf-args.c (printf_fetchargs): Likewise. - * printf-parse.c (PRINTF_PARSE): Likewise. - * vasnprintf.c (VASNPRINTF): Likewise. - -2006-09-14 Bruno Haible - - * lib-asprintf.c: Include unconditionally. - * asnprintf.c: Likewise. - * asprintf.c: Likewise. - * printf-args.c: Likewise. - * printf-parse.c: Likewise. - * vasnprintf.c: Likewise. - * vasprintf.c: Likewise. - -2006-08-26 Bruno Haible - - * vasnprintf.c (EOVERFLOW): Remove definition. - (VASNPRINTF): Return a string of length > INT_MAX without failing. - * vasprintf.c: Include errno.h, limits.h. - (EOVERFLOW): New fallback definition. - (vasprintf): Test here whether the string length is > INT_MAX. - -2006-08-28 Bruno Haible - - * configure.ac: Remove bh_C_SIGNED invocation. - -2006-08-08 Ralf Wildenhues - - * autosprintf.texi: Reduce spacing after "i.e." and "e.g.". - -2006-07-25 Bruno Haible - - * windows: Remove directory. - * Makefile.msvc: Remove file. - * Makefile.am (config.h.msvc, autosprintf.h.msvc-shared): Remove rules. - (EXTRA_DIST): Remove Makefile.msvc, config.h.msvc, - autosprintf.h.msvc-shared, windows/*. - -2006-07-25 Bruno Haible - - * Makefile.vms: Remove file. - * Makefile.am (config.h_vms): Remove rule. - (EXTRA_DIST): Remove Makefile.vms, config.h_vms. - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2006-06-27 Bruno Haible - - Assume working 'const'. - * configure.ac: Remove AC_C_CONST invocation. - -2006-04-14 Bruno Haible - - Assume autoconf >= 2.60. - * Makefile.am (docdir, dvidir, psdir, pdfdir, htmldir): Remove - variables. - -2006-05-24 Bruno Haible - - * printf-args.c (printf_fetchargs): Turn NULL pointers for - TYPE_STRING and TYPE_WIDE_STRING into a non-NULL replacement. - Reported by Thorsten Maerz via - Aaron Stone . - -2006-05-02 Charles Wilson - - * configure.ac (LTNOUNDEF): Set to -no-undefined also on mingw and - Cygwin. - -2006-04-17 Bruno Haible - - * Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs). - -2006-04-11 Bruno Haible - - * autosprintf.texi: Change license terms to FDL | GPL. - -2006-04-01 Bruno Haible - - * texi2html: Add option -expandtex. Expand @ifhtml by default, not - @ifinfo. Use Unicode quotation marks instead of grave and acute - accents. Emit charset=UTF-8 declaration. Bump version number to 1.52b. - -2006-01-22 Bruno Haible - - * vasnprintf.c (VASNPRINTF): In the computation of the size of the - temporary buffer for sprintf, take into account the precision also - for 'd', 'i', 'u', 'o', 'x', 'X'. - -2005-11-23 Bruno Haible - - Cygwin portability. - * configure.ac: Invoke gl_WOE32_DLL. - -2005-07-07 Bruno Haible - - Add ability to create shared library on BeOS. - * configure.ac (LTNOUNDEF): New macro. - * Makefile.am (libasprintf_la_LDFLAGS): New variable. - -2005-07-05 Bruno Haible - - * printf-args.c (printf_fetchargs): Work around broken definition of - wint_t on mingw. - -2006-06-21 Bruno Haible - - * gettext-0.14.6 released. - -2005-05-23 Bruno Haible - - * gettext-0.14.5 released. - -2005-04-11 Bruno Haible - - * gettext-0.14.4 released. - -2005-03-22 Bruno Haible - - * configure.ac (AC_CONFIG_AUX_DIR): Use ../../build-aux. - * Makefile.am (ACLOCAL_AMFLAGS): Replace config/m4 with m4. - -2005-03-14 Bruno Haible - - * gettext-0.14.3 released. - -2005-02-24 Bruno Haible - - * gettext-0.14.2 released. - -2005-02-13 Bruno Haible - - * Makefile.am (libasprintf.la): New rule. Needed for BeOS. - -2005-02-12 Bruno Haible - - * Makefile.msvc (install): Update for 2004-01-18 change. - * Makefile.vms (install): Likewise. - -2005-02-12 Bruno Haible - - * vasnprintf.c (EOVERFLOW): Define to a fallback if needed. - -2004-12-19 Paul Eggert - - * alloca_.h: Conditionalize on _GNULIB_ALLOCA_H, not _ALLOCA_H. - -2004-09-08 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Signal EOVERFLOW if the resulting length - is > INT_MAX. - * vasprintf.c (vasprintf): Don't test for length > INT_MAX any more. - -2004-05-14 Bruno Haible - - * vasnprintf.c (VASNPRINTF): Correctly handle the case of a precision - that consists of a '.' followed by an empty digit string. - Patch by Tor Lillqvist . - -2004-04-19 Bruno Haible - - * gettext.m4: Change jm_ to gl_ in all uses of AC_DEFINE'd names. - -2004-03-11 Bruno Haible - - * Makefile.am (config.h.msvc): Fix the value of SIZE_MAX. - -2004-02-02 Bruno Haible - - * Makefile.am (RM): New variable. - -2004-01-29 Bruno Haible - - * gettext-0.14.1 released. - -2004-01-28 Bruno Haible - - * gettext-0.14 released. - -2004-01-18 Bruno Haible - - * Makefile.am (autosprintf_all.html): Renamed from autosprintf.html. - Works around a problem with automake-1.8: It removes autosprintf.html - during "make mostlyclean". - -2003-10-30 Paul Eggert - Bruno Haible - - * vasprintf.c: Include , . - (vasprintf): Fail if the resulting length doesn't fit in an 'int'. - -2003-12-12 Bruno Haible - - Assume automake-1.8. - * Makefile.am (clean-local): Renamed from clean-am. - (html-local): Renamed from html. - (ps, pdf, .texi.pdf): Remove rules. - (TEXI2PDF): Remove variable. - -2003-12-17 Bruno Haible - - * gettext-0.13.1 released. - -2003-12-09 Bruno Haible - - * Makefile.am (MAKEINFOFLAGS): New variable. - -2003-11-30 Bruno Haible - - * gettext-0.13 released. - -2003-11-28 Bruno Haible - - * configure.ac: Invoke AC_C_INLINE. - * Makefile.am (config.h.msvc): Define SIZE_MAX and inline. - -2003-11-23 Paul Eggert - Bruno Haible - - * printf-parse.h: Don't include sys/types.h. - (ARG_NONE): New macro. - (char_directive): Change type of *arg_index fields to size_t. - * printf-parse.c: Don't include sys/types.h. - (SSIZE_MAX): Remove macro. - (PRINTF_PARSE): Change the type of the arg_index variables to size_t. - Remove unnecessary overflow check. - * vasnprintf.c (VASNPRINTF): Update for type change of *arg_index - fields. - * configure.ac: Don't invoke gt_TYPE_SSIZE_T. - -2003-11-19 Bruno Haible - - * configure.ac: Better test for ptrdiff_t. Invoke gt_TYPE_SSIZE_T and - gl_XSIZE. - -2003-11-17 Bruno Haible - - * vasnprintf.c (alloca): Remove fallback definition. - (freea): Remove definition. - (VASNPRINTF): Use alloca only for small sizes, say <= 4000 bytes. - Reported by Paul Eggert. - -2003-11-16 Paul Eggert - Bruno Haible - - Protect against address arithmetic overflow. - * printf-args.h: Include stddef.h. - (arguments): Change type of field 'count' to size_t. - * printf-args.c (printf_fetchargs): Use size_t instead of - 'unsigned int' where appropriate. - * printf-parse.h: Include sys/types.h. - (char_directive): Change type of *arg_index fields to ssize_t. - (char_directives): Change type of fields 'count', max_*_length to - size_t. - * printf-parse.c: Include sys/types.h and xsize.h. - (SSIZE_MAX): Define fallback value. - (PRINTF_PARSE): Use size_t instead of 'unsigned int' and ssize_t - instead of 'int' where appropriate. Check a_allocated, d_allocated - against overflow. Reject %m$ argument numbers > SSIZE_MAX + 1. - * vasnprintf.c: Include xsize.h. - (VASNPRINTF): Use size_t instead of 'unsigned int' where appropriate. - Check alloca, malloc, realloc, ENSURE_ALLOCATION arguments against - overflow. Avoid wraparound when converting a width or precision from - decimal to binary. - * xsize.h: New file, from gnulib. - * Makefile.am (lib_asprintf_EXTRASOURCES): Add xsize.h. - -2003-11-04 Bruno Haible - - * Makefile.am (MAKEINFO): Set LC_MESSAGES and LC_ALL to empty as well. - -2003-10-31 Bruno Haible - - * configure.ac: Remove argument of FIX_MAKEFILE_COMPILE, - FIX_MAKEFILE_INFO. - -2003-10-19 Jim Meyering - - * vasnprintf.c (VASNPRINTF): Work around losing snprintf on HPUX 10.20. - -2003-08-29 Bruno Haible - - * configure.ac: Test whether _snprintf is declared, not only existent - as a function. - * vasnprintf.c: Test HAVE_DECL__SNPRINTF instead of HAVE__SNPRINTF. - Test HAVE_DECL__SNWPRINTF instead of HAVE__SNWPRINTF. - * Makefile.am (config.h.msvc): Define HAVE_DECL__SNPRINTF instead of - defining snprintf as a macro. - -2003-08-24 Bruno Haible - - * vasnprintf.c (local_wcslen): Protect against multiple definition. - (USE_SNPRINTF): Define also if only _snprintf() is available. - (SNPRINTF): Possibly define as _snprintf or _snwprintf. - * configure.ac: Also check for _snprintf. - -2003-08-11 Bruno Haible - - * vasnprintf.c (local_wcslen): New function, for Solaris 2.5.1. - (VASNPRINTF): Use it instead of wcslen. - * configure.ac: Also check for wcslen. - * Makefile.am (config.h_vms): Set HAVE_WCSLEN. - (config.h.msvc): Likewise. - -2003-06-20 Bruno Haible - - * configure.ac: Invoke gt_PRINTF_POSIX. - * lib-asprintf.h: Ignore an existing vasprintf() if it doesn't support - POSIX/XSI format strings. - * lib-asprintf.c: Likewise. - * Makefile.am (config.h_vms): Define HAVE_POSIX_PRINTF. - -2003-06-19 Bruno Haible - - * configure.ac (jm_AC_TYPE_LONG_LONG): Replaces gt_TYPE_LONGLONG. - * printf-parse.c: Generalize to it can be compiled for wide strings. - (PRINTF_PARSE, CHAR_T, DIRECTIVE, DIRECTIVES): New macros. - * vasnprintf.c: Generalize to it can be compiled for wide strings. - (VASNPRINTF, CHAR_T, DIRECTIVE, DIRECTIVES, PRINTF_PARSE, USE_SNPRINTF, - SNPRINTF): New macros. - Don't include if the file is used inside libintl. - -2003-05-30 Bruno Haible - - * autosprintf.texi: Tweak @dircategory and @direntry. - Reported by Karl Berry . - -2003-05-22 Bruno Haible - - * gettext-0.12.1 released. - -2003-05-20 Bruno Haible - - * Makefile.am (config.h_vms, config.h.msvc, autosprintf.h.msvc-shared): - Don't use $< here. - -2003-05-19 Bruno Haible - - * windows/asprintf.rc: Include . - Reported by Perry Rapp. - -2003-05-18 Bruno Haible - - * Makefile.msvc (DEBUGFLAGS): New variable. - (asprintf.lib): Use it. - -2003-05-17 Bruno Haible - - * gettext-0.12 released. - -2003-04-12 Bruno Haible - - * Makefile.am (config.h_vms): Renamed from config.h.vms. - * Makefile.vms: New variables ABIFLAGS, DEFS. Avoid rules with no - lines. Update library creation rule. Don't use the force target. - Correct wildcard syntax. - Suggested by Jouk Jansen . - -2003-04-12 Bruno Haible - - * Makefile.am (docdir): Use datadir instead of prefix. - * Makefile.msvc (datadir): New variable. - (sub_docdir): Use it instead of prefix. - (install, installdirs): Update. - * Makefile.vms (datadir): New variable. - (sub_docdir): Use it instead of prefix. - -2003-03-30 Bruno Haible - - * Makefile.vms: New file. - * Makefile.am (config.h.vms): New rule. - (EXTRA_DIST): Add Makefile.vms and config.h.vms. - -2003-03-17 Bruno Haible - - Native Woe32/MSVC support. - * autosprintf.h.in: Renamed from autosprintf.h. - * Makefile.msvc: New file. - * README.woe32: New file. - * windows/dllexport.h: New file. - * windows/asprintf.rc: New file. - * Makefile.am (EXTRA_DIST): Add them and config.h.msvc and - autosprintf.h.in. - (autosprintf.h): New rule. - (MOSTLYCLEANFILES): Add autosprintf.h. - (dist-hook): Don't distribute autosprintf.h. - (config.h.msvc, autosprintf.h.msvc-shared): New rules. - -2003-02-22 Bruno Haible - - * autosprintf.texi: Add comment about indices. - * Makefile.am (MOSTLYCLEANFILES): No need to clean the unused indices. - (The automake generated rule already cleans them.) - -2003-02-22 Bruno Haible - - * Makefile.am (installdirs): Remove dependency, redundant with - automake >= 1.6. - -2003-02-18 Bruno Haible - - * Makefile.am (clean-am): New rule. For Solaris cc. - -2003-02-12 Bruno Haible - - * configure.ac: Renamed from configure.in. Invoke AC_CONFIG_AUX_DIR. - Invoke AC_FUNC_ALLOCA instead of gl_FUNC_ALLOCA. Remove redundant - postprocessing of Makefile. - * Makefile.am (ACLOCAL_AMFLAGS): Add -I ../../config/m4. - ($(libasprintf_la_OBJECTS)): Make alloca.h dependency effective. - -2003-01-03 Albert Chin - - * ltmain.sh: Don't pass -R flags found in a .la's dependency_libs - variable directly down to the linker. - Reported by Tim Mooney . - -2003-01-12 Bruno Haible - - * configure.in: Invoke gl_FUNC_ALLOCA instead of AC_FUNC_ALLOCA. - * alloca_.h: New file, from gnulib. - * liballoca.h: Remove file. - * Makefile.am: Add snippet from gnulib module alloca. - (lib_asprintf_EXTRASOURCES): Remove liballoca.h. - * vasnprintf.c: Include alloca.h instead of liballoca.h. - -2003-01-12 Bruno Haible - - * Makefile.am: Make use of += for variables. - -2003-01-12 Bruno Haible - - Portability to FreeBSD. - * configure.in: Invoke gt_TYPE_WINT_T. - * printf-args.h: Use HAVE_WINT_T, not HAVE_WCHAR_T, to check for - availability of wint_t. - * printf-argc.c: Likewise. - * printf-parse.c: Likewise. - * vasnprintf.c: Likewise. - -2002-12-07 Bruno Haible - - Switch to autoconf-2.57 and automake-1.7.2. - * configure.in: Use AC_CONFIG_FILES, because the AC_OUTPUT commands - and not run any more when config.status is called to create a single - file. - -2002-11-13 Bruno Haible - - Assume ANSI C. - * libstdarg.h: Remove file. - * Makefile.am (lib_asprintf_EXTRASOURCES): Remove libstdarg.h. - * asnprintf.c: Include instead of libstdarg.h. - (asnprintf): Use ANSI C function declarations. Use va_start instead of - VA_START. - * asprintf.c: Include instead of libstdarg.h. - (asnprintf): Use ANSI C function declarations. Use va_start instead of - VA_START. - * printf-args.h (PARAMS): Remove macro. - (printf_fetchargs): Use ANSI C function declarations. - * printf-args.c (printf_fetchargs): Likewise. - * printf-parse.h (printf_parse): Likewise. - * printf-parse.c (printf_parse): Likewise. - * vasnprintf.h (PARAMS): Remove macro. - (asnprintf, vasnprintf): Use ANSI C function declarations. - * vasnprintf.c (vasnprintf): Likewise. - * vasprintf.h (PARAMS): Remove macro. - (asprintf, vasprintf): Use ANSI C function declarations. - * vasprintf.c (vasprintf): Likewise. - -2002-10-27 Bruno Haible - - * printf-args.h, printf-args.c: New files. - * printf-parse.h, printf-parse.c: New files. - * vasnprintf.h, vasnprintf.c, asnprintf.c: New files. - * vasprintf.h, vasprintf.c, asprintf.c: New files. - * lib-asprintf.h, lib-asprintf.c: New files. - * autosprintf.h, autosprintf.cc: New files. - * README, NEWS, AUTHORS, COPYING, autosprintf.texi: New files. - * Makefile.am, configure.in: New files. - * liballoca.h, libstdarg.h: New files, from gettext-0.11.6/lib. - * COPYING.LIB, INSTALL, config.guess, config.sub, install-sh, - ltmain.sh, missing, mkinstalldirs, texi2html, texinfo.tex: Standard - infrastructure files, from gettext-0.11.6. +No more ChangeLog files +======================== +Do not modify any of the ChangeLog files in gettext. Starting on +October 14th, 2015 we put changelog information only in the git commit +log, and generate a top-level ChangeLog file from logs at "make dist" +time. + +Local Variables: +buffer-read-only: t +mode: text +End: diff -Nru gettext-0.19.6/gettext-runtime/libasprintf/ChangeLog.0 gettext-0.19.7/gettext-runtime/libasprintf/ChangeLog.0 --- gettext-0.19.6/gettext-runtime/libasprintf/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/libasprintf/ChangeLog.0 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,1384 @@ +2015-09-11 Daiki Ueno + + * gettext 0.19.6 released. + +2015-07-10 Daiki Ueno + + * gettext 0.19.5 released. + +2015-03-12 Daiki Ueno + + * vasnprintf.c: Update from gnulib. + +2015-01-22 Daiki Ueno + + * vasnprintf.c: Update copyright year. + +2014-12-24 Daiki Ueno + + * gettext 0.19.4 released. + +2014-10-15 Daiki Ueno + + * gettext 0.19.3 released. + +2014-09-30 Daiki Ueno + + * vasnprintf.c: Update from Gnulib. + +2014-07-14 Daiki Ueno + + * gettext 0.19.2 released. + +2014-06-10 Daiki Ueno + + * gettext 0.19.1 released. + +2014-06-02 Daiki Ueno + + * gettext 0.19 released. + +2013-06-10 Daiki Ueno + + * Makefile.am: Use $(MKDIR_P) instead of $(mkdir_p). + Suggested by Stefano Lattarini in + . + +2013-03-07 Miguel Angel Arruga Vivas (tiny change) + + Fix '__attribute__' definition. + Reported at + * autosprintf.in.h (_AUTOSPRINTF_ATTRIBUTE_FORMAT): New macro + instead of redefine __attribute__. + +2013-03-04 Miguel Angel Arruga Vivas (tiny change) + + Add 'autosprintf::operator='. Needed because destructor + is not trivial. + Reported at + * autosprintf.in.h (autosprintf::operator=): New function. + Thanks to Daiki Ueno for pointing a better copy-and-swap + idiom use. + * autosprintf.cc (autosprintf::operator=): Likewise. + +2013-01-17 Daiki Ueno + + Fix link errors related to C99-style extern inline. + Reported by Sam Thursfield . + * Makefile.am (libasprintf_la_SOURCES): Add xsize.h and xsize.c. + (lib_asprintf_EXTRASOURCES): Remove xsize.h. + * xsize.h: Remove, replacing with the one from gnulib when + bootstrapping. + +2012-12-25 Daiki Ueno + + * gettext-0.18.2 released. + +2012-12-17 Daiki Ueno + + * configure.ac: Use AC_CONFIG_HEADERS instead of AM_CONFIG_HEADER. + Suggested by Stefano Lattarini . + +2012-11-29 Paul Eggert + + * vasnprintf.c (MAX_ROOM_NEEDED): Now static, not static + inline. + +2012-06-22 Bruno Haible + + * vasnprintf.c: Write "Mac OS X" instead of "MacOS X". + +2012-02-09 Paul Eggert + + maint: replace FSF snail-mail addresses with URLs + * vasnprintf.c, xsize.h: + Replace FSF snail mail addresses with URLs, as per GNU coding + standards. See glibc bug + . + +2012-02-05 Paul Eggert + + * vasnprintf.c: Spelling fixes. + +2012-01-26 Bruno Haible + + Modernize quoting. + * autosprintf.in.h: Quote 'like this', not `like this', as per the + recent change to the GNU coding standards. + * vasnprintf.h: Likewise. + * vasprintf.h: Likewise. + * INSTALL: Process through sed -e "s/\`\([^']*\)'/‘\1’/g" + +2012-01-04 Bruno Haible + + Talk about "native Windows API", not "Win32". + * vasnprintf.c: Update comments to mention native Windows. + +2011-10-15 Bruno Haible + + vasnprintf: Optimize bit search operation. + * vasnprintf.c (divide): Use optimizations from gnulib's + integer_length.c. + +2011-10-15 Bruno Haible + + vasnprintf: Fix comments. + * vasnprintf.c (decode_long_double, decode_double): Fix comments. + +2011-06-06 Bruno Haible + + Ensure mbstate_t gets defined in libasprintf. + * configure.ac: Invoke AC_TYPE_MBSTATE_T. Needed on HP-UX 11.31. + +2011-06-04 Bruno Haible + + Ensure intmax_t gets defined in libasprintf. + * configure.ac: Invoke gl_AC_TYPE_INTMAX_T instead of gt_TYPE_INTMAX_T. + +2011-06-03 Bruno Haible + + * Makefile.am (lib_asprintf_EXTRASOURCES): Add verify.h. + +2010-10-10 Paul Eggert + + rewrite int foo[2*X-1] to verify(X) or to int foo[X?1:-1] + * vasnprintf.c: Include "verify.h". + (mp_limb_verify, mp_twolimb_verify, TCHAR_T_verify): Remove, replacing + with a verify call. + +2011-06-03 Bruno Haible + + Copyright: Use LGPL 2.1 instead of LGPL 2.0. + * COPYING.LIB: Replace with text of LGPL 2.1. + * *.h, *.c, *.cc, Makefile.am: Update copyright header. + +2011-02-23 Bruno Haible + + Fix misindentation of preprocessor directives. + * vasnprintf.c (decode_long_double): Reindent preprocessor directives. + +2011-02-04 Bruno Haible + + vasnprintf: Reduce use of malloc for small format strings. + * printf-args.h (N_DIRECT_ALLOC_ARGUMENTS): New macro. + (arguments): Add room for the first 7 arguments. + * printf-parse.h (N_DIRECT_ALLOC_DIRECTIVES): New macro. + (char_directives, u8_directives, u16_directives, u32_directives): Add + room for the first 7 directives. + * printf-parse.c: Include . + (PRINTF_PARSE): Change memory handling code so that it uses the first + 7 preallocated elements in an 'arguments' or 'DIRECTIVES' struct. + * vasnprintf.c (VASNPRINTF): Update memory handling code. + Reported by Pádraig Brady . + +2010-11-20 Bruno Haible + + Ensure that is included before __GLIBC__ is tested. + * printf-parse.h: Include . + * configure.ac: Test for . + Reported by Mike Frysinger . + +2010-11-20 Bruno Haible + + Port to uClibc. + * printf-parse.h (FLAG_LOCALIZED): Treat uClibc like a non-glibc platform. + * printf-parse.c (PRINTF_PARSE): Likewise. + * vasnprintf.c (decimal_point_char): Treat uClibc like glibc. + (VASNPRINTF): Treat uClibc like a non-glibc platform. + Reported by Mike Frysinger . + +2010-11-20 Bruno Haible + + Fix a comment. + * vasnprintf.c (VASNPRINTF): Fix comment. + +2010-11-07 Bruno Haible + + vasnprintf: Support I flag on glibc systems. + * printf-parse.h (FLAG_LOCALIZED): New macro. + * printf-parse.c (PRINTF_PARSE): Handle the 'I' flag. + * vasnprintf.c (VASNPRINTF): Pass the 'I' flag on to the system's + snprintf function. + +2010-11-07 Bruno Haible + + Rename autosprintf.h.in to autosprintf.in.h. + * autosprintf.in.h: New file, renamed from autosprintf.h.in. + * Makefile.am (autosprintf.h, EXTRA_DIST): Update. + +2010-10-14 Bruno Haible + + vasnprintf: Don't set errno to 0. + * vasnprintf.c (VASNPRINTF): Save and restore errno around the block + that sets it to 0. + Reported by Gianluigi Tiesi . + +2010-06-04 Bruno Haible + + * gettext-0.18.1 released. + +2010-05-09 Bruno Haible + + * gettext-0.18 released. + +2010-05-09 Bruno Haible + + vasnprintf: Fix syntax errors in libintl build on mingw. + * vasnprintf.c (VASNPRINTF): Move a closing brace. Undefine + pad_ourselves and prec_ourselves after use. + +2010-04-24 Bruno Haible + + vasnprintf: Correct errno value in case of out-of-memory. + * vasnprintf.c (VASNPRINTF): Set errno to 0 before calling SNPRINTF or + sprintf. Use the errno value from SNPRINTF or sprintf. + Reported by Ian Beckwith . + +2010-04-10 Bruno Haible + + vasnprintf: Correct handling of unconvertible wide string arguments. + * vasnprintf.c (MAX_ROOM_NEEDED): New function, extracted from + VASNPRINTF. + (VASNPRINTF): Use it. After snprintf failed, allocate more memory only + if HAVE_SNPRINTF_RETVAL_C99 is false and the allocated memory is + smaller than the expected maximum need for the directive. Set errno to + EILSEQ, not EINVAL, when the directive is 'c' or 's'. + (local_strnlen, local_wcslen, local_wcsnlen): Update conditions. + Reported by Jarno Rajahalme . + +2010-04-10 Bruno Haible + + vasnprintf: Fix crash in %ls directive. + * vasnprintf.c (VASNPRINTF): Don't abort when a unconvertible wide + string is passed as argument to %ls, with no precision and no width. + Reported by Jarno Rajahalme . + +2010-04-10 Bruno Haible + + vasnprintf: Fix multiple test failures on mingw. + * vasnprintf.c (SNPRINTF) [mingw]: Define to snprintf, not _snprintf, + or snwprintf, not _snwprintf. + +2010-01-01 Bruno Haible + + * vasnprintf.c (VASNPRINTF): If GNULIB_defined_mbstate_t is defined, + use wctomb instead of wcrtomb. + +2009-12-12 Bruno Haible + + * *.h, *.c: Untabify. + +2009-11-22 Bruno Haible + + * vasnprintf.c (decimal_point_char): Choose the fast path also on + MacOS X. + +2009-11-17 Eric Blake + + * vasnprintf.c (VASNPRINTF): Avoid shadowing our own local variables. + +2009-08-20 Eric Blake + + * vasnprintf.c (decimal_point_char): Avoid warning on old-style + declaration. + +2009-08-14 Bruno Haible + + Use the gnulib module 'errno'. + * Makefile.am: Include Makefile.gnulib. + (ACLOCAL_AMFLAGS): Add -I gnulib-m4. + (EXTRA_DIST): Add gnulib-m4/gnulib-cache.m4. + (BUILT_SOURCES, noinst_LTLIBRARIES): New variables. + * configure.ac (AC_PREREQ): Require autoconf 2.59 or newer. + Invoke gl_EARLY, gl_INIT. Don't invoke gl_EOVERFLOW. Remove the alloca + tests. + +2009-08-10 Bruno Haible + + * vasnprintf.c (DCHAR_SET): Undefine at the end. + +2009-06-06 Bruno Haible + + * configure.ac (AM_INIT_AUTOMAKE): Add 'silent-rules' option. + * Makefile.am (libasprintf.la): Silence 'make' output if silent-rules. + +2009-06-06 Bruno Haible + + * configure.ac: Pass package and version to AC_INIT instead of + AM_INIT_AUTOMAKE. + +2009-05-21 Bruno Haible + + Assume automake >= 1.10.2. + * configure.ac (AC_CONFIG_FILES): Remove FIX_MAKEFILE_COMPILE, + FIX_MAKEFILE_INFO invocations. + +2009-04-26 Bruno Haible + + * vasnprintf.c (VASNPRINTF): Update after the calling convention of + u*_conv_from_encoding and u*_conv_to_encoding changed. + +2009-04-08 Bruno Haible + + * Makefile.am (SUFFIXES, CLEANFILES): Remove variables. Not needed any + more. + +2009-03-23 Jim Meyering + + * vasnprintf.c (divide): Fix typo in comment. + +2009-02-26 Bruno Haible + + Fix *printf behaviour regarding the %ls directive. + * vasnprintf.c (local_wcslen, VASNPRINTF): Handle + NEED_PRINTF_DIRECTIVE_LS. + +2009-02-23 Bruno Haible + + Fix invalid read past end of memory block. + * vasnprintf.c (DCHAR_SET): Define. + (local_wcslen): Define only when needed. + (local_strnlen, local_wcsnlen): New functions. + (VASNPRINTF) [!USE_SNPRINTF && HAVE_WCHAR_T]: Implement the %s and %ls + directives that involve a conversion ourselves. + * configure.ac: Also check for strnlen, wcsnlen, mbrtowc, wcrtomb. + +2009-01-14 Bruno Haible + + * configure.ac: More consistent m4 quoting. + +2008-09-22 Eric Blake + Bruno Haible + + vasnprintf: fix x86/glibc regression on printf("%La", 0.0L) + * vasnprintf.c (VASNPRINTF): Support 0.0 on platforms that supply %A + but mishandle pseudo-NaN. + Reported by Simon Josefsson. + +2008-09-18 Bruno Haible + + * vasnprintf.c (VASNPRINTF): When printing ±0.0L in + NEED_PRINTF_INFINITE_LONG_DOUBLE case with 'e' format, always use two + digits for the exponent. + +2008-09-18 Jim Meyering + Bruno Haible + + * vasnprintf.c (decimal_point_char): Define also if + NEED_PRINTF_INFINITE_LONG_DOUBLE. + +2008-09-16 Bruno Haible + and Eric Blake + + vasnprintf: support Irix 5.3 + * vasnprintf.c (VASNPRINTF): Also handle -0.0L on platforms that + mishandle long double infinity. + Reported by Tom G. Christensen. + +2008-09-02 Eric Blake + + vasnprintf-posix: handle large precision via %.*d + * vasnprintf.c (VASNPRINTF): Don't pass precision to snprintf + when handling it ourselves. + Reported by Alain Guibert. + +2008-07-10 Ben Pfaff + + * vasnprintf.c: Update references to renamed include files. + +2008-05-21 Bruno Haible + + Avoid one more warning from gcc. + * vasnprintf.c (IF_LINT): Update comments. + (VASNPRINTF): Use it also for the 'prefix' array initializer. + +2008-05-21 Jim Meyering + + avoid a warning from gcc + * vasnprintf.c (IF_LINT): Define. + (scale10_round_decimal_long_double): + Use it to avoid a "may be used uninitialized" warning. + (scale10_round_decimal_double): Likewise. + +2008-05-16 Jim Meyering + Bruno Haible + + Avoid some warnings from "gcc -Wshadow". + * vasnprintf.c (exp, remainder): Define to different identifiers. + +2008-04-19 Bruno Haible + + Work around snprintf bug on Linux libc5. + * vasnprintf.c (USE_SNPRINTF): Set to 0 on Linux libc5 systems. + +2008-04-19 Bruno Haible + + * vasnprintf.c (floorlog10l, floorlog10): Reduce maximum error from + 0.0058 to less than 10^-7. + +2008-04-19 Bruno Haible + + Fix rounding when a precision is given. + * vasnprintf.c (is_borderline): New function. + (VASNPRINTF): For %e and %g, consider replacing the digits 10....0 with + 9...9x. + Reported by John Darrington via + Ben Pfaff . + +2008-03-30 Bruno Haible + + Fix buffer overrun. + * vasnprintf.c (VASNPRINTF): If !USE_SNPRINTF && pad_ourselves: + Don't consider the width for tmp_length. Check count against tmp_length + before doing the padding. Ensure enough allocation during padding. + +2008-03-30 Bruno Haible + + * vasnprintf.c (EOVERFLOW): Remove fallback. + +2008-03-30 Bruno Haible + + Fix bug introduced on 2007-06-10. + * vasnprintf.c (VASNPRINTF): When performing zero-padding, use + spaces instead of 0 digits for 's' also when ENABLE_UNISTDIO. + +2008-02-28 Atsushi SAKAI + + * xsize.h: Fix typo in comment: s/tupe/type/. + +2008-02-07 Bruno Haible + + * vasnprintf.c (VASNPRINTF): Don't use %n on native Woe32 systems. + Avoids a crash on Windows Vista. + Reported by Adam Strzelecki via + Simon Josefsson . + +2008-02-06 Bruno Haible + + Fix *printf behaviour regarding the left-adjust flag on HP-UX 10.20. + * vasnprintf.c (VASNPRINTF): Handle NEED_PRINTF_FLAG_LEFTADJUST. + Reported by Peter Fales . + +2008-02-06 Bruno Haible + + Fix bug introduced on 2007-06-10. + * vasnprintf.c (VASNPRINTF): Perform zero-padding also if + !NEED_PRINTF_FLAG_ZERO. + +2008-01-29 Jim Meyering + + vasnprintf.c: Avoid warning about unused label + * vasnprintf.c (VASNPRINTF) [!USE_SNPRINTF]: Guard the + "overflow" label definition and associated code with the + same cpp condition that guards the sole use of that label. + +2008-01-26 Bruno Haible + + Rename isnan, applicable to 'double' only, to isnand. + * vasnprintf.c: Include isnand.h instead of isnan.h. + (is_infinite_or_zero, VASNPRINTF): Use isnand instead of isnan. + +2008-01-08 Jim Meyering + Bruno Haible + + * printf-parse.c (PRINTF_PARSE): Handle a size specifier "q" on MacOS X + and a size specifier "I64" on mingw. Needed for PRIdMAX. + Reported by Peter Fales in + . + +2008-04-20 Bruno Haible + + * configure.ac: Use LT_INIT instead of AC_PROG_LIBTOOL. + +2007-11-26 Bruno Haible + + * vasnprintf.c (decode_long_double): Don't abort if the 'long double' + type has excess precision. + Reported by Jim Meyering in + . + +2007-11-10 Bruno Haible + + * configure.ac: Do _snprintf check like gnulib's vasnprintf.m4 does. + +2007-11-10 Bruno Haible + + * configure.ac: Invoke AC_TYPE_LONG_LONG_INT instead of + gl_AC_TYPE_LONG_LONG. Don't invoke gt_TYPE_LONGDOUBLE. + Report and patch by Kacper. + +2007-11-10 Bruno Haible + + * configure.ac: Invoke gl_EOVERFLOW. + +2007-11-09 Bruno Haible + + * vasnprintf.c (VASNPRINTF): Ensure that we never call snprintf with a + size argument < 2. + +2007-11-09 Bruno Haible + + * vasnprintf.c (VASNPRINTF): Increase reallocation of snprintf buffer. + Fixes an inefficiency introduced on 2007-11-03. + +2007-11-07 Bruno Haible + + * gettext-0.17 released. + +2007-11-05 Bruno Haible + + * vasnprintf.c (VASNPRINTF): Expand the NEED_PRINTF_DIRECTIVE_A + code when NEED_PRINTF_LONG_DOUBLE or NEED_PRINTF_DOUBLE is set. + Needed on Cygwin, where !NEED_PRINTF_DIRECTIVE_A && NEED_PRINTF_DOUBLE. + Reported by Eric Blake. + +2007-11-04 Bruno Haible + + * vasnprintf.c (DCHAR_IS_TCHAR, DCHAR_CPY): Undefine at the end. + +2007-06-11 Bruno Haible + + * printf-args.c (PRINTF_FETCHARGS) [ENABLE_UNISTDIO]: Fix NULL + replacement string. + Reported by Eric Blake. + +2007-06-10 Bruno Haible + + * printf-args.h (PRINTF_FETCHARGS): New macro. + (arg_type) [ENABLE_UNISTDIO]: Define TYPE_U8_STRING, TYPE_U16_STRING, + TYPE_U32_STRING. + (argument) [ENABLE_UNISTDIO]: Add a_u8_string, a_u16_string, + a_u32_string variants. + (PRINTF_FETCHARGS): Renamed from printf_fetchargs. + * printf-args.c: Don't include config.h and the specification header + if PRINTF_FETCHARGS is already defined. + (PRINTF_FETCHARGS): Renamed from printf_fetchargs. + (PRINTF_FETCHARGS) [ENABLE_UNISTDIO]: Add code for TYPE_U8_STRING, + TYPE_U16_STRING, TYPE_U32_STRING. + +2007-11-04 Bruno Haible + + * vasnprintf.c (VASNPRINTF): Handle NEED_PRINTF_UNBOUNDED_PRECISION. + +2007-11-04 Bruno Haible + + * vasnprintf.c (scale10_round_decimal_decoded): Fix shift loop. + +2007-11-03 Bruno Haible + + * vasnprintf.c: Implement NEED_PRINTF_DOUBLE. + (decode_double): New function, copied from decode_long_double. + (scale10_round_decimal_decoded): New function, extracted from + scale10_round_decimal_long_double. + (scale10_round_decimal_long_double): Use it. + (scale10_round_decimal_double): New function. + (floorlog10): New function. + (VASNPRINTF): Handle NEED_PRINTF_DOUBLE case. + +2007-11-03 Bruno Haible + + * vasnprintf.c (VASNPRINTF): Don't assume that snprintf's return value + is C99 compliant. + Needed for OSF/1 5.1. + +2007-11-03 Bruno Haible + + Fix out-of-memory handling of vasnprintf. + * printf-parse.c: Include . + (PRINTF_PARSE): When failing, set errno to EINVAL or ENOMEM. + * vasnprintf.c (VASNPRINTF): When PRINTF_PARSE fails, assume errno is + already set. + +2007-10-20 Bruno Haible + + * vasnprintf.c (VASNPRINTF): Don't report overflow if the available + length is INT_MAX and sizeof (DCHAR_T) > sizeof (TCHAR_T). + Reported by Ralf Wildenhues . + +2007-10-18 Bruno Haible + + * vasnprintf.c (VASNPRINTF): Don't use %n on glibc >= 2.3 systems. + Reported by Jim Meyering. + +2007-07-13 Bruno Haible + + * vasnprintf.c (decimal_point_char): Define also if + (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) + && !NEED_PRINTF_DIRECTIVE_A. + Reported by Clemens Koller via + Gary V. Vaughan . + +2007-06-10 Bruno Haible + + * vasnprintf.c: Don't include config.h and the specification header if + VASNPRINTF is already defined. + (DCHAR_IS_TCHAR, DCHAR_CPY): New macros. + (VASNPRINTF): Use PRINTF_FETCHARGS instead of printf_fetchargs. Use + DCHAR_CPY. Handle the case that DCHAR_T and FCHAR_T are not the same + type. Handle the case that TCHAR_T and FCHAR_T are not of the same + size. Handle the case that DCHAR_T and TCHAR_T are not the same type, + add a conversion from TCHAR_T[] to DCHAR_T[], and rework the padding + code accordingly. + (VASNPRINTF) [ENABLE_UNISTDIO]: Implement the 'U' directive. Enable + pad_ourselves also in this case, with the 'c' and 's' directives, and + with a different notion of "width". + +2007-06-10 Bruno Haible + + * vasnprintf.c (VASNPRINTF) [!USE_SNPRINTF]: Remove variable + 'maxlen'. Ensure only length + width bytes are allocated, not + length + 1 + width. + +2007-06-09 Bruno Haible + + * vasnprintf.c (FCHAR_T, DCHAR_T, TCHAR_T): New macros. + (CHAR_T): Remove macro. + (VASNPRINTF): Update. + +2007-06-05 Bruno Haible + + * vasnprintf.c (VASNPRINTF): Do the extra handling of NaN and Inf + also the %a / %A. Handle the %a / %A code before this extra handling. + +2007-06-05 Bruno Haible + + * vasnprintf.c [NEED_PRINTF_LONG_DOUBLE || + NEED_PRINTF_INFINITE_LONG_DOUBLE]: Include fpucw.h. + +2007-10-21 Bruno Haible + + * printf-parse.c: Don't assume exists in IN_LIBASPRINTF + context. + +2007-06-10 Bruno Haible + + * printf-parse.c: Don't include config.h and the specification + header if PRINTF_PARSE is already defined. Eliminate the set of + parameters for WIDE_CHAR_VERSION; the user of this file must provide + them now. Include c-ctype.h. + (PRINTF_PARSE) [ENABLE_UNISTDIO]: Add code implementing the 'U' + directive and CHAR_T_ONLY_ASCII. + +2007-09-04 Bruno Haible + + * alloca.in.h: Renamed from alloca_.h. + * Makefile.am (EXTRA_DIST, alloca.h): Update. + +2007-09-01 Bruno Haible + + * autosprintf.texi (Class autosprintf): Explain memory mangement + details. + Reported at . + +2007-05-05 Bruno Haible + + * autosprintf.texi (ifmakeinfo): Remove alias. + (makeinfo): New variable. + * Makefile.am (autosprintf_all.html): Don't pass option -expandinfo + to texi2html. + +2007-05-21 Bruno Haible + + * vasnprintf.c: Update comments. + +2007-05-20 Bruno Haible + + * vasnprintf.c: Use NEED_PRINTF_INFINITE_DOUBLE instead of + NEED_PRINTF_INFINITE. + (is_infinitel): New function. + (VASNPRINTF): Handle NEED_PRINTF_INFINITE_LONG_DOUBLE case. + +2007-05-19 Bruno Haible + + * vasnprintf.c: Include math.h and isnan.h. + (is_infinite_or_zero): New function. + (VASNPRINTF): Fix also the handling of infinite or zero 'double' + values in the %f, %F, %e, %E, %g, %G directives. + +2007-05-19 Bruno Haible + + * vasnprintf.c (convert_to_decimal): Add an extra_zeroes argument. + (scale10_round_decimal_long_double): Inline scale10_round_long_double. + Instead of multiplying with 10^k, set extra_zeroes to k. + (scale10_round_long_double): Remove function. + +2007-05-18 Bruno Haible + + * vasnprintf.c (VASNPRINTF) [NEED_PRINTF_FLAG_ZERO]: Fix logic bug + introduced on 2007-05-06. + +2007-05-18 Bruno Haible + + * vasnprintf.c: Include math.h and float+.h. + (mp_limb_t): New type. + (GMP_LIMB_BITS): New macro. + (mp_twolimb_t): New type. + (GMP_TWOLIMB_BITS): New macro. + (mpn_t): New type. + (multiply, divide, convert_to_decimal, decode_long_double, + scale10_round_long_double, scale10_round_decimal_long_double, + floorlog10l): New functions. + (VASNPRINTF) [NEED_PRINTF_LONG_DOUBLE]: Implement 'long double' support + for the %f, %F, %e, %E, %g, %G directives. + +2007-05-18 Bruno Haible + + * vasnprintf.c (USE_SNPRINTF): Define to 0 on BeOS. + +2007-05-18 Bruno Haible + + * vasnprintf.c (VASNPRINTF) [WIN32]: Use %I64d instead of %lld for + printing 64-bit integers. Needed for mingw. + +2007-05-06 Bruno Haible + + * vasnprintf.c (VASNPRINTF) [NEED_PRINTF_FLAG_ZERO]: Perform the + padding ourselves for the floating-point directives. + +2007-05-06 Bruno Haible + + * vasnprintf.c (VASNPRINTF) [NEED_PRINTF_FLAG_GROUPING]: Don't pass + the ' flag character to sprintf or snprintf. + +2007-04-11 Bruno Haible + + * vasnprintf.c (VASNPRINTF): Implement the %F directive using the %f + directive, if NEED_PRINTF_DIRECTIVE_F is defined. + +2007-04-06 Bruno Haible + + * vasnprintf.c: Include . Don't include float+.h. + (VASNPRINTF): Use signbit for faster determination whether to print a + minus sign. + +2007-03-27 Bruno Haible + + * vasnprintf.c (decimal_point_char): New function. + (VASNPRINTF): Use it. + +2007-03-25 Bruno Haible + + * vasnprintf.c: Include langinfo.h. + (VASNPRINTF): Prefer nl_langinfo over localeconv, since it's more + multithread-safe. + +2007-03-24 Bruno Haible + + * vasnprintf.c: Include fpucw.h. + (VASNPRINTF): Invoke BEGIN/END_LONG_DOUBLE_ROUNDING around the + 'long double' calculations. + +2007-03-24 Bruno Haible + + * vasnprintf.c: Include float+.h. + (VASNPRINTF): When comparing against +0.0L or +0.0, compare only + SIZEOF_LDBL or SIZEOF_DBL bytes. + +2007-03-24 Bruno Haible + + * vasnprintf.c [!HAVE_LONG_DOUBLE]: Include printf-frexp.h. Don't + include isnanl-nolibm.h. + +2007-03-21 Bruno Haible + + * vasnprintf.c: Update after isnanl.h was renamed to isnanl-nolibm.h. + +2007-03-18 Bruno Haible + + * vasnprintf.c (VASNPRINTF): Undo first part of last patch. + +2007-03-17 Bruno Haible + + * vasnprintf.c (EOVERFLOW): New fallback definition. + (VASNPRINTF): Fail with EOVERFLOW when the given allocated size is + larger than INT_MAX, or when it grow to a value larger than INT_MAX. + +2007-03-17 Bruno Haible + + * vasnprintf.c (VASNPRINTF): Clear out the memory used for arg_mem + before comparing it. Needed because on some platforms (e.g. x86) a + 'long double' occupies less bytes than sizeof (long double). + +2007-03-11 Bruno Haible + + * vasnprintf.c (sprintf): Undefine. + +2007-03-11 Bruno Haible + + * vasnprintf.c (snprintf): Undefine. Avoids an endless recursion. + +2007-03-09 Bruno Haible + + * vasnprintf.c (VASNPRINTF): For the 'a' and 'A' directives, use a + locale dependent decimal point, rather than always '.'. + +2007-03-04 Bruno Haible + + * vasnprintf.c: Include isnan.h, isnanl.h, printf-frexp.h, + printf-frexpl.h. + (VASNPRINTF): Handle the 'a' and 'A' directives here, if needed. + +2007-03-30 Bruno Haible + + * alloca_.h: Change prefix of double-inclusion guard macro to _GL_. + +2006-06-19 Paul Eggert + + * alloca_.h (alloca) [defined alloca]: Don't define or declare. + +2007-03-08 Bruno Haible + + * vasnprintf.h: Convert tabs in the middle of lines to spaces. + +2007-05-03 Bruno Haible + + Add support for both "makeinfo --html" and texi2html. + * autosprintf.texi (ifmakeinfo): New alias. + (Top): Use it instead of @ifinfo. + +2007-04-06 Bruno Haible + + * printf-args.h: Assume HAVE_LONG_DOUBLE to be true. + * printf-args.c: Likewise. + * printf-parse.c: Likewise. + * vasnprintf.c: Likewise. + +2007-03-29 Bruno Haible + + * Makefile.am (DEFS): New variable. + * vasprintf.c: Sync with gnulib. + * asprintf.c: Likewise. + +2007-03-25 Bruno Haible + + * printf-parse.c [!IN_LIBINTL]: Include , for intmax_t. + (PRINTF_PARSE): Make the support for size specifier 'j' unconditional. + +2007-02-25 Bruno Haible + + * vasnprintf.c (VASNPRINTF): Fix estimate of size needed for a 'a' or + 'A' conversion. + +2007-01-29 Bruno Haible + + * printf-args.h: Use '#if HAVE_*' instead of '#ifdef HAVE_*'. + * printf-args.c: Likewise. + * printf-parse.c: Likewise. + * vasnprintf.c: Likewise. + +2006-11-01 Bruno Haible + + * printf-parse.c (PRINTF_PARSE): Cast malloc/realloc results. + +2006-10-27 Bruno Haible + + Work around automake-1.10 annoyance. + * Makefile.am (ACLOCAL): New macro. + +2006-11-27 Bruno Haible + + * gettext-0.16.1 released. + +2006-10-26 Bruno Haible + + * gettext-0.16 released. + +2006-10-16 Bruno Haible + + Switch to automake-1.10. + * Makefile.am (install-dvi, install-ps, install-pdf): Remove rules. + (HTMLS): New variable. + (html-local): Use it. + (install-html): Remove rule. + +2006-10-11 Paul Eggert + Bruno Haible + + * printf-args.h (arg_type, argument): Test HAVE_LONG_LONG_INT + instead of HAVE_LONG_LONG. + * printf-args.c (printf_fetchargs): Likewise. + * printf-parse.c (PRINTF_PARSE): Likewise. + * vasnprintf.c (VASNPRINTF): Likewise. + +2006-09-14 Bruno Haible + + * lib-asprintf.c: Include unconditionally. + * asnprintf.c: Likewise. + * asprintf.c: Likewise. + * printf-args.c: Likewise. + * printf-parse.c: Likewise. + * vasnprintf.c: Likewise. + * vasprintf.c: Likewise. + +2006-08-26 Bruno Haible + + * vasnprintf.c (EOVERFLOW): Remove definition. + (VASNPRINTF): Return a string of length > INT_MAX without failing. + * vasprintf.c: Include errno.h, limits.h. + (EOVERFLOW): New fallback definition. + (vasprintf): Test here whether the string length is > INT_MAX. + +2006-08-28 Bruno Haible + + * configure.ac: Remove bh_C_SIGNED invocation. + +2006-08-08 Ralf Wildenhues + + * autosprintf.texi: Reduce spacing after "i.e." and "e.g.". + +2006-07-25 Bruno Haible + + * windows: Remove directory. + * Makefile.msvc: Remove file. + * Makefile.am (config.h.msvc, autosprintf.h.msvc-shared): Remove rules. + (EXTRA_DIST): Remove Makefile.msvc, config.h.msvc, + autosprintf.h.msvc-shared, windows/*. + +2006-07-25 Bruno Haible + + * Makefile.vms: Remove file. + * Makefile.am (config.h_vms): Remove rule. + (EXTRA_DIST): Remove Makefile.vms, config.h_vms. + +2006-07-21 Bruno Haible + + * gettext-0.15 released. + +2006-06-27 Bruno Haible + + Assume working 'const'. + * configure.ac: Remove AC_C_CONST invocation. + +2006-04-14 Bruno Haible + + Assume autoconf >= 2.60. + * Makefile.am (docdir, dvidir, psdir, pdfdir, htmldir): Remove + variables. + +2006-05-24 Bruno Haible + + * printf-args.c (printf_fetchargs): Turn NULL pointers for + TYPE_STRING and TYPE_WIDE_STRING into a non-NULL replacement. + Reported by Thorsten Maerz via + Aaron Stone . + +2006-05-02 Charles Wilson + + * configure.ac (LTNOUNDEF): Set to -no-undefined also on mingw and + Cygwin. + +2006-04-17 Bruno Haible + + * Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs). + +2006-04-11 Bruno Haible + + * autosprintf.texi: Change license terms to FDL | GPL. + +2006-04-01 Bruno Haible + + * texi2html: Add option -expandtex. Expand @ifhtml by default, not + @ifinfo. Use Unicode quotation marks instead of grave and acute + accents. Emit charset=UTF-8 declaration. Bump version number to 1.52b. + +2006-01-22 Bruno Haible + + * vasnprintf.c (VASNPRINTF): In the computation of the size of the + temporary buffer for sprintf, take into account the precision also + for 'd', 'i', 'u', 'o', 'x', 'X'. + +2005-11-23 Bruno Haible + + Cygwin portability. + * configure.ac: Invoke gl_WOE32_DLL. + +2005-07-07 Bruno Haible + + Add ability to create shared library on BeOS. + * configure.ac (LTNOUNDEF): New macro. + * Makefile.am (libasprintf_la_LDFLAGS): New variable. + +2005-07-05 Bruno Haible + + * printf-args.c (printf_fetchargs): Work around broken definition of + wint_t on mingw. + +2006-06-21 Bruno Haible + + * gettext-0.14.6 released. + +2005-05-23 Bruno Haible + + * gettext-0.14.5 released. + +2005-04-11 Bruno Haible + + * gettext-0.14.4 released. + +2005-03-22 Bruno Haible + + * configure.ac (AC_CONFIG_AUX_DIR): Use ../../build-aux. + * Makefile.am (ACLOCAL_AMFLAGS): Replace config/m4 with m4. + +2005-03-14 Bruno Haible + + * gettext-0.14.3 released. + +2005-02-24 Bruno Haible + + * gettext-0.14.2 released. + +2005-02-13 Bruno Haible + + * Makefile.am (libasprintf.la): New rule. Needed for BeOS. + +2005-02-12 Bruno Haible + + * Makefile.msvc (install): Update for 2004-01-18 change. + * Makefile.vms (install): Likewise. + +2005-02-12 Bruno Haible + + * vasnprintf.c (EOVERFLOW): Define to a fallback if needed. + +2004-12-19 Paul Eggert + + * alloca_.h: Conditionalize on _GNULIB_ALLOCA_H, not _ALLOCA_H. + +2004-09-08 Bruno Haible + + * vasnprintf.c (VASNPRINTF): Signal EOVERFLOW if the resulting length + is > INT_MAX. + * vasprintf.c (vasprintf): Don't test for length > INT_MAX any more. + +2004-05-14 Bruno Haible + + * vasnprintf.c (VASNPRINTF): Correctly handle the case of a precision + that consists of a '.' followed by an empty digit string. + Patch by Tor Lillqvist . + +2004-04-19 Bruno Haible + + * gettext.m4: Change jm_ to gl_ in all uses of AC_DEFINE'd names. + +2004-03-11 Bruno Haible + + * Makefile.am (config.h.msvc): Fix the value of SIZE_MAX. + +2004-02-02 Bruno Haible + + * Makefile.am (RM): New variable. + +2004-01-29 Bruno Haible + + * gettext-0.14.1 released. + +2004-01-28 Bruno Haible + + * gettext-0.14 released. + +2004-01-18 Bruno Haible + + * Makefile.am (autosprintf_all.html): Renamed from autosprintf.html. + Works around a problem with automake-1.8: It removes autosprintf.html + during "make mostlyclean". + +2003-10-30 Paul Eggert + Bruno Haible + + * vasprintf.c: Include , . + (vasprintf): Fail if the resulting length doesn't fit in an 'int'. + +2003-12-12 Bruno Haible + + Assume automake-1.8. + * Makefile.am (clean-local): Renamed from clean-am. + (html-local): Renamed from html. + (ps, pdf, .texi.pdf): Remove rules. + (TEXI2PDF): Remove variable. + +2003-12-17 Bruno Haible + + * gettext-0.13.1 released. + +2003-12-09 Bruno Haible + + * Makefile.am (MAKEINFOFLAGS): New variable. + +2003-11-30 Bruno Haible + + * gettext-0.13 released. + +2003-11-28 Bruno Haible + + * configure.ac: Invoke AC_C_INLINE. + * Makefile.am (config.h.msvc): Define SIZE_MAX and inline. + +2003-11-23 Paul Eggert + Bruno Haible + + * printf-parse.h: Don't include sys/types.h. + (ARG_NONE): New macro. + (char_directive): Change type of *arg_index fields to size_t. + * printf-parse.c: Don't include sys/types.h. + (SSIZE_MAX): Remove macro. + (PRINTF_PARSE): Change the type of the arg_index variables to size_t. + Remove unnecessary overflow check. + * vasnprintf.c (VASNPRINTF): Update for type change of *arg_index + fields. + * configure.ac: Don't invoke gt_TYPE_SSIZE_T. + +2003-11-19 Bruno Haible + + * configure.ac: Better test for ptrdiff_t. Invoke gt_TYPE_SSIZE_T and + gl_XSIZE. + +2003-11-17 Bruno Haible + + * vasnprintf.c (alloca): Remove fallback definition. + (freea): Remove definition. + (VASNPRINTF): Use alloca only for small sizes, say <= 4000 bytes. + Reported by Paul Eggert. + +2003-11-16 Paul Eggert + Bruno Haible + + Protect against address arithmetic overflow. + * printf-args.h: Include stddef.h. + (arguments): Change type of field 'count' to size_t. + * printf-args.c (printf_fetchargs): Use size_t instead of + 'unsigned int' where appropriate. + * printf-parse.h: Include sys/types.h. + (char_directive): Change type of *arg_index fields to ssize_t. + (char_directives): Change type of fields 'count', max_*_length to + size_t. + * printf-parse.c: Include sys/types.h and xsize.h. + (SSIZE_MAX): Define fallback value. + (PRINTF_PARSE): Use size_t instead of 'unsigned int' and ssize_t + instead of 'int' where appropriate. Check a_allocated, d_allocated + against overflow. Reject %m$ argument numbers > SSIZE_MAX + 1. + * vasnprintf.c: Include xsize.h. + (VASNPRINTF): Use size_t instead of 'unsigned int' where appropriate. + Check alloca, malloc, realloc, ENSURE_ALLOCATION arguments against + overflow. Avoid wraparound when converting a width or precision from + decimal to binary. + * xsize.h: New file, from gnulib. + * Makefile.am (lib_asprintf_EXTRASOURCES): Add xsize.h. + +2003-11-04 Bruno Haible + + * Makefile.am (MAKEINFO): Set LC_MESSAGES and LC_ALL to empty as well. + +2003-10-31 Bruno Haible + + * configure.ac: Remove argument of FIX_MAKEFILE_COMPILE, + FIX_MAKEFILE_INFO. + +2003-10-19 Jim Meyering + + * vasnprintf.c (VASNPRINTF): Work around losing snprintf on HPUX 10.20. + +2003-08-29 Bruno Haible + + * configure.ac: Test whether _snprintf is declared, not only existent + as a function. + * vasnprintf.c: Test HAVE_DECL__SNPRINTF instead of HAVE__SNPRINTF. + Test HAVE_DECL__SNWPRINTF instead of HAVE__SNWPRINTF. + * Makefile.am (config.h.msvc): Define HAVE_DECL__SNPRINTF instead of + defining snprintf as a macro. + +2003-08-24 Bruno Haible + + * vasnprintf.c (local_wcslen): Protect against multiple definition. + (USE_SNPRINTF): Define also if only _snprintf() is available. + (SNPRINTF): Possibly define as _snprintf or _snwprintf. + * configure.ac: Also check for _snprintf. + +2003-08-11 Bruno Haible + + * vasnprintf.c (local_wcslen): New function, for Solaris 2.5.1. + (VASNPRINTF): Use it instead of wcslen. + * configure.ac: Also check for wcslen. + * Makefile.am (config.h_vms): Set HAVE_WCSLEN. + (config.h.msvc): Likewise. + +2003-06-20 Bruno Haible + + * configure.ac: Invoke gt_PRINTF_POSIX. + * lib-asprintf.h: Ignore an existing vasprintf() if it doesn't support + POSIX/XSI format strings. + * lib-asprintf.c: Likewise. + * Makefile.am (config.h_vms): Define HAVE_POSIX_PRINTF. + +2003-06-19 Bruno Haible + + * configure.ac (jm_AC_TYPE_LONG_LONG): Replaces gt_TYPE_LONGLONG. + * printf-parse.c: Generalize to it can be compiled for wide strings. + (PRINTF_PARSE, CHAR_T, DIRECTIVE, DIRECTIVES): New macros. + * vasnprintf.c: Generalize to it can be compiled for wide strings. + (VASNPRINTF, CHAR_T, DIRECTIVE, DIRECTIVES, PRINTF_PARSE, USE_SNPRINTF, + SNPRINTF): New macros. + Don't include if the file is used inside libintl. + +2003-05-30 Bruno Haible + + * autosprintf.texi: Tweak @dircategory and @direntry. + Reported by Karl Berry . + +2003-05-22 Bruno Haible + + * gettext-0.12.1 released. + +2003-05-20 Bruno Haible + + * Makefile.am (config.h_vms, config.h.msvc, autosprintf.h.msvc-shared): + Don't use $< here. + +2003-05-19 Bruno Haible + + * windows/asprintf.rc: Include . + Reported by Perry Rapp. + +2003-05-18 Bruno Haible + + * Makefile.msvc (DEBUGFLAGS): New variable. + (asprintf.lib): Use it. + +2003-05-17 Bruno Haible + + * gettext-0.12 released. + +2003-04-12 Bruno Haible + + * Makefile.am (config.h_vms): Renamed from config.h.vms. + * Makefile.vms: New variables ABIFLAGS, DEFS. Avoid rules with no + lines. Update library creation rule. Don't use the force target. + Correct wildcard syntax. + Suggested by Jouk Jansen . + +2003-04-12 Bruno Haible + + * Makefile.am (docdir): Use datadir instead of prefix. + * Makefile.msvc (datadir): New variable. + (sub_docdir): Use it instead of prefix. + (install, installdirs): Update. + * Makefile.vms (datadir): New variable. + (sub_docdir): Use it instead of prefix. + +2003-03-30 Bruno Haible + + * Makefile.vms: New file. + * Makefile.am (config.h.vms): New rule. + (EXTRA_DIST): Add Makefile.vms and config.h.vms. + +2003-03-17 Bruno Haible + + Native Woe32/MSVC support. + * autosprintf.h.in: Renamed from autosprintf.h. + * Makefile.msvc: New file. + * README.woe32: New file. + * windows/dllexport.h: New file. + * windows/asprintf.rc: New file. + * Makefile.am (EXTRA_DIST): Add them and config.h.msvc and + autosprintf.h.in. + (autosprintf.h): New rule. + (MOSTLYCLEANFILES): Add autosprintf.h. + (dist-hook): Don't distribute autosprintf.h. + (config.h.msvc, autosprintf.h.msvc-shared): New rules. + +2003-02-22 Bruno Haible + + * autosprintf.texi: Add comment about indices. + * Makefile.am (MOSTLYCLEANFILES): No need to clean the unused indices. + (The automake generated rule already cleans them.) + +2003-02-22 Bruno Haible + + * Makefile.am (installdirs): Remove dependency, redundant with + automake >= 1.6. + +2003-02-18 Bruno Haible + + * Makefile.am (clean-am): New rule. For Solaris cc. + +2003-02-12 Bruno Haible + + * configure.ac: Renamed from configure.in. Invoke AC_CONFIG_AUX_DIR. + Invoke AC_FUNC_ALLOCA instead of gl_FUNC_ALLOCA. Remove redundant + postprocessing of Makefile. + * Makefile.am (ACLOCAL_AMFLAGS): Add -I ../../config/m4. + ($(libasprintf_la_OBJECTS)): Make alloca.h dependency effective. + +2003-01-03 Albert Chin + + * ltmain.sh: Don't pass -R flags found in a .la's dependency_libs + variable directly down to the linker. + Reported by Tim Mooney . + +2003-01-12 Bruno Haible + + * configure.in: Invoke gl_FUNC_ALLOCA instead of AC_FUNC_ALLOCA. + * alloca_.h: New file, from gnulib. + * liballoca.h: Remove file. + * Makefile.am: Add snippet from gnulib module alloca. + (lib_asprintf_EXTRASOURCES): Remove liballoca.h. + * vasnprintf.c: Include alloca.h instead of liballoca.h. + +2003-01-12 Bruno Haible + + * Makefile.am: Make use of += for variables. + +2003-01-12 Bruno Haible + + Portability to FreeBSD. + * configure.in: Invoke gt_TYPE_WINT_T. + * printf-args.h: Use HAVE_WINT_T, not HAVE_WCHAR_T, to check for + availability of wint_t. + * printf-argc.c: Likewise. + * printf-parse.c: Likewise. + * vasnprintf.c: Likewise. + +2002-12-07 Bruno Haible + + Switch to autoconf-2.57 and automake-1.7.2. + * configure.in: Use AC_CONFIG_FILES, because the AC_OUTPUT commands + and not run any more when config.status is called to create a single + file. + +2002-11-13 Bruno Haible + + Assume ANSI C. + * libstdarg.h: Remove file. + * Makefile.am (lib_asprintf_EXTRASOURCES): Remove libstdarg.h. + * asnprintf.c: Include instead of libstdarg.h. + (asnprintf): Use ANSI C function declarations. Use va_start instead of + VA_START. + * asprintf.c: Include instead of libstdarg.h. + (asnprintf): Use ANSI C function declarations. Use va_start instead of + VA_START. + * printf-args.h (PARAMS): Remove macro. + (printf_fetchargs): Use ANSI C function declarations. + * printf-args.c (printf_fetchargs): Likewise. + * printf-parse.h (printf_parse): Likewise. + * printf-parse.c (printf_parse): Likewise. + * vasnprintf.h (PARAMS): Remove macro. + (asnprintf, vasnprintf): Use ANSI C function declarations. + * vasnprintf.c (vasnprintf): Likewise. + * vasprintf.h (PARAMS): Remove macro. + (asprintf, vasprintf): Use ANSI C function declarations. + * vasprintf.c (vasprintf): Likewise. + +2002-10-27 Bruno Haible + + * printf-args.h, printf-args.c: New files. + * printf-parse.h, printf-parse.c: New files. + * vasnprintf.h, vasnprintf.c, asnprintf.c: New files. + * vasprintf.h, vasprintf.c, asprintf.c: New files. + * lib-asprintf.h, lib-asprintf.c: New files. + * autosprintf.h, autosprintf.cc: New files. + * README, NEWS, AUTHORS, COPYING, autosprintf.texi: New files. + * Makefile.am, configure.in: New files. + * liballoca.h, libstdarg.h: New files, from gettext-0.11.6/lib. + * COPYING.LIB, INSTALL, config.guess, config.sub, install-sh, + ltmain.sh, missing, mkinstalldirs, texi2html, texinfo.tex: Standard + infrastructure files, from gettext-0.11.6. diff -Nru gettext-0.19.6/gettext-runtime/libasprintf/configure gettext-0.19.7/gettext-runtime/libasprintf/configure --- gettext-0.19.6/gettext-runtime/libasprintf/configure 2015-09-11 03:04:44.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/libasprintf/configure 2015-12-27 23:09:17.000000000 +0000 @@ -673,7 +673,6 @@ NMEDIT DSYMUTIL MANIFEST_TOOL -ac_ct_AR LN_S NM ac_ct_DUMPBIN @@ -687,6 +686,7 @@ AS RANLIB ARFLAGS +ac_ct_AR AR EGREP GREP @@ -768,6 +768,7 @@ docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -853,6 +854,7 @@ sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1105,6 +1107,15 @@ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1242,7 +1253,7 @@ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1395,6 +1406,7 @@ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -5041,6 +5053,7 @@ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5 $as_echo_n "checking for Minix Amsterdam compiler... " >&6; } if ${gl_cv_c_amsterdam_compiler+:} false; then : @@ -5067,14 +5080,189 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 $as_echo "$gl_cv_c_amsterdam_compiler" >&6; } - if test -z "$AR"; then - if test $gl_cv_c_amsterdam_compiler = yes; then + + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then AR='cc -c.a' - if test -z "$ARFLAGS"; then - ARFLAGS='-o' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + if test -n "$ac_tool_prefix"; then + for ac_prog in ar lib "link -lib" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar lib "link -lib" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 +$as_echo_n "checking the archiver ($AR) interface... " >&6; } +if ${am_cv_ar_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + am_cv_ar_interface=ar + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int some_variable = 0; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi fi - else - if test -n "$ac_tool_prefix"; then + rm -f conftest.lib libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 +$as_echo "$am_cv_ar_interface" >&6; } + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + as_fn_error $? "could not determine $AR interface" "$LINENO" 5 + ;; +esac + + fi + + if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -5166,17 +5354,12 @@ AR="$ac_cv_prog_AR" fi - if test -z "$ARFLAGS"; then - ARFLAGS='cr' - fi - fi - else - if test -z "$ARFLAGS"; then - ARFLAGS='cr' - fi + if test -z "$ARFLAGS"; then + ARFLAGS='cr' fi + if test -z "$RANLIB"; then if test $gl_cv_c_amsterdam_compiler = yes; then RANLIB=':' @@ -5279,6 +5462,9 @@ + # Pre-early section. + + # Code from module absolute-header: # Code from module alloca: # Code from module alloca-opt: diff -Nru gettext-0.19.6/gettext-runtime/libasprintf/gnulib-m4/gnulib-cache.m4 gettext-0.19.7/gettext-runtime/libasprintf/gnulib-m4/gnulib-cache.m4 --- gettext-0.19.6/gettext-runtime/libasprintf/gnulib-m4/gnulib-cache.m4 2015-09-11 03:03:33.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/libasprintf/gnulib-m4/gnulib-cache.m4 2015-12-27 23:08:07.000000000 +0000 @@ -27,7 +27,7 @@ # Specification in the form of a command-line invocation: -# gnulib-tool --import --dir=gettext-runtime/libasprintf --local-dir=gnulib-local --lib=libgnu --source-base=. --m4-base=gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../../build-aux --lgpl=2 --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gl alloca errno verify xsize +# gnulib-tool --import --local-dir=gnulib-local --lib=libgnu --source-base=. --m4-base=gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../../build-aux --lgpl=2 --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gl alloca errno verify xsize # Specification in the form of a few gnulib-tool.m4 macro invocations: gl_LOCAL_DIR([../../gnulib-local]) diff -Nru gettext-0.19.6/gettext-runtime/libasprintf/gnulib-m4/gnulib-common.m4 gettext-0.19.7/gettext-runtime/libasprintf/gnulib-m4/gnulib-common.m4 --- gettext-0.19.6/gettext-runtime/libasprintf/gnulib-m4/gnulib-common.m4 2015-09-11 03:03:33.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/libasprintf/gnulib-m4/gnulib-common.m4 2015-12-27 23:08:07.000000000 +0000 @@ -253,9 +253,10 @@ [ dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler dnl as "cc", and GCC as "gcc". They have different object file formats and - dnl library formats. In particular, the GNU binutils programs ar, ranlib + dnl library formats. In particular, the GNU binutils programs ar and ranlib dnl produce libraries that work only with gcc, not with cc. AC_REQUIRE([AC_PROG_CC]) + AC_BEFORE([$0], [AM_PROG_AR]) AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler], [ AC_EGREP_CPP([Amsterdam], @@ -267,25 +268,37 @@ [gl_cv_c_amsterdam_compiler=yes], [gl_cv_c_amsterdam_compiler=no]) ]) - if test -z "$AR"; then - if test $gl_cv_c_amsterdam_compiler = yes; then + + dnl Don't compete with AM_PROG_AR's decision about AR/ARFLAGS if we are not + dnl building with __ACK__. + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then AR='cc -c.a' - if test -z "$ARFLAGS"; then - ARFLAGS='-o' - fi - else - dnl Use the Automake-documented default values for AR and ARFLAGS, - dnl but prefer ${host}-ar over ar (useful for cross-compiling). - AC_CHECK_TOOL([AR], [ar], [ar]) - if test -z "$ARFLAGS"; then - ARFLAGS='cr' - fi fi - else if test -z "$ARFLAGS"; then - ARFLAGS='cr' + ARFLAGS='-o' fi + else + dnl AM_PROG_AR was added in automake v1.11.2. AM_PROG_AR does not AC_SUBST + dnl ARFLAGS variable (it is filed into Makefile.in directly by automake + dnl script on-demand, if not specified by ./configure of course). + dnl Don't AC_REQUIRE the AM_PROG_AR otherwise the code for __ACK__ above + dnl will be ignored. Also, pay attention to call AM_PROG_AR in else block + dnl because AM_PROG_AR is written so it could re-set AR variable even for + dnl __ACK__. It may seem like its easier to avoid calling the macro here, + dnl but we need to AC_SUBST both AR/ARFLAGS (thus those must have some good + dnl default value and automake should usually know them). + m4_ifdef([AM_PROG_AR], [AM_PROG_AR], [:]) + fi + + dnl In case the code above has not helped with setting AR/ARFLAGS, use + dnl Automake-documented default values for AR and ARFLAGS, but prefer + dnl ${host}-ar over ar (useful for cross-compiling). + AC_CHECK_TOOL([AR], [ar], [ar]) + if test -z "$ARFLAGS"; then + ARFLAGS='cr' fi + AC_SUBST([AR]) AC_SUBST([ARFLAGS]) if test -z "$RANLIB"; then diff -Nru gettext-0.19.6/gettext-runtime/libasprintf/gnulib-m4/gnulib-comp.m4 gettext-0.19.7/gettext-runtime/libasprintf/gnulib-m4/gnulib-comp.m4 --- gettext-0.19.6/gettext-runtime/libasprintf/gnulib-m4/gnulib-comp.m4 2015-09-11 03:03:33.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/libasprintf/gnulib-m4/gnulib-comp.m4 2015-12-27 23:08:07.000000000 +0000 @@ -37,7 +37,10 @@ m4_pattern_allow([^gl_ES$])dnl a valid locale name m4_pattern_allow([^gl_LIBOBJS$])dnl a variable m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable + + # Pre-early section. AC_REQUIRE([gl_PROG_AR_RANLIB]) + # Code from module absolute-header: # Code from module alloca: # Code from module alloca-opt: diff -Nru gettext-0.19.6/gettext-runtime/libasprintf/Makefile.gnulib gettext-0.19.7/gettext-runtime/libasprintf/Makefile.gnulib --- gettext-0.19.6/gettext-runtime/libasprintf/Makefile.gnulib 2015-09-11 03:03:33.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/libasprintf/Makefile.gnulib 2015-12-27 23:08:07.000000000 +0000 @@ -21,7 +21,7 @@ # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. -# Reproduce by: gnulib-tool --import --dir=gettext-runtime/libasprintf --local-dir=gnulib-local --lib=libgnu --source-base=. --m4-base=gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../../build-aux --lgpl=2 --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gl alloca errno verify xsize +# Reproduce by: gnulib-tool --import --local-dir=gnulib-local --lib=libgnu --source-base=. --m4-base=gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../../build-aux --lgpl=2 --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gl alloca errno verify xsize MOSTLYCLEANFILES += core *.stackdump diff -Nru gettext-0.19.6/gettext-runtime/libasprintf/Makefile.in gettext-0.19.7/gettext-runtime/libasprintf/Makefile.in --- gettext-0.19.6/gettext-runtime/libasprintf/Makefile.in 2015-09-11 03:04:45.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/libasprintf/Makefile.in 2015-12-27 23:09:18.000000000 +0000 @@ -35,7 +35,7 @@ # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. -# Reproduce by: gnulib-tool --import --dir=gettext-runtime/libasprintf --local-dir=gnulib-local --lib=libgnu --source-base=. --m4-base=gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../../build-aux --lgpl=2 --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gl alloca errno verify xsize +# Reproduce by: gnulib-tool --import --local-dir=gnulib-local --lib=libgnu --source-base=. --m4-base=gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../../build-aux --lgpl=2 --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gl alloca errno verify xsize VPATH = @srcdir@ @@ -315,7 +315,8 @@ CSCOPE = cscope AM_RECURSIVE_TARGETS = cscope am__DIST_COMMON = $(srcdir)/Makefile.gnulib $(srcdir)/Makefile.in \ - $(srcdir)/config.h.in $(top_srcdir)/../../build-aux/compile \ + $(srcdir)/config.h.in $(top_srcdir)/../../build-aux/ar-lib \ + $(top_srcdir)/../../build-aux/compile \ $(top_srcdir)/../../build-aux/config.guess \ $(top_srcdir)/../../build-aux/config.sub \ $(top_srcdir)/../../build-aux/install-sh \ @@ -323,12 +324,13 @@ $(top_srcdir)/../../build-aux/missing \ $(top_srcdir)/../../build-aux/mkinstalldirs \ $(top_srcdir)/../../build-aux/texinfo.tex \ - ../../build-aux/compile ../../build-aux/config.guess \ - ../../build-aux/config.rpath ../../build-aux/config.sub \ - ../../build-aux/install-sh ../../build-aux/ltmain.sh \ - ../../build-aux/missing ../../build-aux/mkinstalldirs \ - ../../build-aux/texinfo.tex AUTHORS COPYING COPYING.LIB \ - ChangeLog INSTALL NEWS README alloca.c + ../../build-aux/ar-lib ../../build-aux/compile \ + ../../build-aux/config.guess ../../build-aux/config.rpath \ + ../../build-aux/config.sub ../../build-aux/install-sh \ + ../../build-aux/ltmain.sh ../../build-aux/missing \ + ../../build-aux/mkinstalldirs ../../build-aux/texinfo.tex \ + AUTHORS COPYING COPYING.LIB ChangeLog INSTALL NEWS README \ + alloca.c DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -492,6 +494,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru gettext-0.19.6/gettext-runtime/libasprintf/texi2html gettext-0.19.7/gettext-runtime/libasprintf/texi2html --- gettext-0.19.6/gettext-runtime/libasprintf/texi2html 2013-01-09 04:01:27.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/libasprintf/texi2html 2015-12-08 12:50:04.000000000 +0000 @@ -1561,7 +1561,7 @@ $level--; # here we start at 0 if ($name =~ /^appendix/) { # appendix style - if (defined(@appendix_sec_num)) { + if (@appendix_sec_num) { &incr_sec_num($level, @appendix_sec_num); } else { @appendix_sec_num = ('A', 0, 0, 0); @@ -1569,7 +1569,7 @@ return(join('.', @appendix_sec_num[0..$level])); } else { # normal style - if (defined(@normal_sec_num)) { + if (@normal_sec_num) { &incr_sec_num($level, @normal_sec_num); } else { @normal_sec_num = (1, 0, 0, 0); diff -Nru gettext-0.19.6/gettext-runtime/m4/ChangeLog gettext-0.19.7/gettext-runtime/m4/ChangeLog --- gettext-0.19.6/gettext-runtime/m4/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/m4/ChangeLog 1970-01-01 00:00:00.000000000 +0000 @@ -1,1350 +0,0 @@ -2015-09-11 Daiki Ueno - - * gettext 0.19.6 released. - -2015-07-28 Daiki Ueno - - * gettext.m4 (AM_GNU_GETTEXT_REQUIRE_VERSION): New macro. Bump - serial to 67. - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2015-07-10 Daiki Ueno - - * intl.m4 (gt_INTL_SUBDIR_CORE): Check also for getlocalename_l. - Bump serial to 29. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-12-10 Daiki Ueno - - * intl.m4, po.m4: Bump serial to avoid any conflict with Gnulib's - version after Gnulib commit 71be4c87. - -2014-12-03 Daiki Ueno - - * extern-inline.m4, iconv.m4: Update from Gnulib. - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-09-30 Daiki Ueno - - * extern-inline.m4, threadlib.m4: Update from Gnulib. - -2014-07-16 Daiki Ueno - - * intl.m4 (gt_GL_ATTRIBUTE): New macro. - (AM_INTL_SUBDIR): Require gt_GL_ATTRIBUTE. - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2013-12-17 Daiki Ueno - - Add missing extern-inline.m4 into archive. - Problem reported by Reuben Thomas in: - . - * extern-inline.m4: New file, from gnulib. - * intl.m4 (AM_INTL_SUBDIR): Require gl_EXTERN_INLINE. - * Makefile.am (EXTRA_DIST): Update. - -2013-08-09 Daiki Ueno - - * intl.m4 (AM_INTL_SUBDIR): Fix AC_CHECK_DECLS usage. - (gt_INTL_SUBDIR_CORE): Likewise. - -2013-06-25 Daiki Ueno - - Allow user to supply custom sed command when generating en@quot.po. - * po.m4 (AM_PO_SUBDIRS): Require AC_PROG_SED. - -2013-04-23 Daiki Ueno - - Obsolete gt_CHECK_DECL in favor of AC_CHECK_DECLS. - Now that macros installed by 'gettextize' require Autoconf 2.60, - gt_CHECK_DECL can be safely replaced with AC_CHECK_DECLS. - * intl.m4 (gt_CHECK_DECL): Remove. - (AM_INTL_SUBDIR): Use AC_CHECK_DECLS instead of gt_CHECK_DECL. - (gt_INTL_SUBDIR_CORE): Likewise. - -2013-03-05 Daiki Ueno - - * fcntl-o.m4: Update copyright year. - * gettext.m4: Likewise. - * glibc2.m4: Likewise. - * glibc21.m4: Likewise. - * iconv.m4: Likewise. - * intdiv0.m4: Likewise. - * intl.m4: Likewise. - * intldir.m4: Likewise. - * intlmacosx.m4: Likewise. - * intmax.m4: Likewise. - * inttypes-pri.m4: Likewise. - * inttypes_h.m4: Likewise. - * lcmessage.m4: Likewise. - * lock.m4: Likewise. - * longlong.m4: Likewise. - * nls.m4: Likewise. - * po.m4: Likewise. - * printf-posix.m4: Likewise. - * progtest.m4: Likewise. - * size_max.m4: Likewise. - * stdint_h.m4: Likewise. - * threadlib.m4: Likewise. - * uintmax_t.m4: Likewise. - * visibility.m4: Likewise. - * wchar_t.m4: Likewise. - * wint_t.m4: Likewise. - * xsize.m4: Likewise. - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2012-12-07 Stefano Lattarini (tiny change) - - m4: use AC_PROG_MKDIR_P, not the deprecated AM_PROG_MKDIR_P - * gettext.m4 (AM_INTL_SUBDIR): Require AC_PROG_MKDIR_P instead - of AM_PROG_MKDIR_P, as this latter macro is deprecated since - Automake 1.12.1, and will be removed in Automake 1.14. - Accordingly, bump requirement in AC_PREREQ to 2.60. - * po.m4 (AM_PO_SUBDIRS): Likewise. - -2012-11-29 Paul Eggert - - * lock.m4 (gl_PREREQ_LOCK): Do not require AC_C_INLINE. - -2012-09-22 Paul Eggert - - * xsize.m4 (gl_XSIZE): Do not require AC_C_INLINE. - -2012-09-10 Paul Eggert - - * fcntl-o.m4 (gl_FCNTL_O_FLAGS): Check for AIX 7.1 bug - that caused a GNU tar test failure. Problem reported by Jez Wain; see - . - -2012-06-22 Bruno Haible - - * gettext.m4: Write "Mac OS X" instead of "MacOS X". - * intdiv0.m4: Likewise. - * intlmacosx.m4: Likewise. - * lock.m4: Likewise. - * threadlib.m4: Likewise. - * visibility.m4: Likewise. - -2012-02-18 Bruno Haible - - * Makefile.am (EXTRA_DIST): Remove intmax_t.m4. - -2012-02-05 Paul Eggert - - * po.m4: Spelling fixes. - -2012-01-26 Bruno Haible - - * gettext.m4: Update copyright year. - * codeset.m4: Likewise. - * glibc2.m4: Likewise. - * glibc21.m4: Likewise. - * iconv.m4: Likewise. - * intdiv0.m4: Likewise. - * intl.m4: Likewise. - * intldir.m4: Likewise. - * intlmacosx.m4: Likewise. - * intmax.m4: Likewise. - * inttypes-pri.m4: Likewise. - * inttypes_h.m4: Likewise. - * lcmessage.m4: Likewise. - * lock.m4: Likewise. - * longlong.m4: Likewise. - * nls.m4: Likewise. - * printf-posix.m4: Likewise. - * progtest.m4: Likewise. - * size_max.m4: Likewise. - * stdint_h.m4: Likewise. - * uintmax_t.m4: Likewise. - * visibility.m4: Likewise. - * wchar_t.m4: Likewise. - * wint_t.m4: Likewise. - * xsize.m4: Likewise. - -2011-09-11 Bruno Haible - - Don't assume exists. - * fcntl-o.m4 (gl_FCNTL_O_FLAGS): If does not exist, - include and instead. Don't test symbolink links if - symlink() does not exist. - -2012-01-04 Bruno Haible - - Talk about "native Windows API", not "Win32". - * threadlib.m4: Update comments to mention native Windows. - (gl_THREADLIB_EARLY_BODY, gl_THREADLIB_BODY): Expect - --enable-threads=windows instead of --enable-threads=win32. Set - USE_WINDOWS_THREADS, not USE_WIN32_THREADS. - -2012-01-06 Paul Eggert - - * m4/gettext.m4: In commentary, do not use ` to quote. - -2012-01-06 Paul Eggert - - Use ', not `, for quoting output. - * m4/intl.m4 (gt_CHECK_DECL): Quote 'like this', not `like this', as - per the recent change to the GNU coding standards. - * m4/longlong.m4 (AC_TYPE_LONG_LONG_INT, - AC_TYPE_UNSIGNED_LONG_LONG_INT): Likewise. - -2011-09-10 Bruno Haible - - iconv.m4: Add support for MSVC compiler. - * iconv.m4 (AM_ICONV): Use ISO C declaration syntax on MSVC. - -2011-07-07 Bruno Haible - - Avoid literal tabs. - * po,m4 (AM_PO_SUBDIRS, AM_POSTPROCESS_PO_MAKEFILE): Use a shell - variable containing a tab instead of a literal tab. - Reported by Jim Meyering. - -2011-06-04 Bruno Haible - - Ensure intmax_t gets defined in libasprintf. - * Makefile.am (EXTRA_DIST): Add intmax_t.m4. - -2011-02-18 Eric Blake - - longlong: skip, rather than fail, on cross-compilation - * longlong.m4 (AC_TYPE_LONG_LONG_INT): Avoid aborting configure - when cross-compiling; regression from 2011-02-16. - -2011-02-16 Paul Eggert - - longlong: tune, particularly for common case of c99 - * longlong.m4 (AC_TYPE_LONG_LONG_INT): Don't bother compiling - or running anything if c99, or if unsigned long long int does not - work. In either case, we know the answer without further tests. - Do not compile _AC_TYPE_LONG_LONG_SNIPPET twice. Instead, compile - it at most once, and use its results for both long long int and - unsigned long long int. This is more likely to be efficient in - the common case where the program wants to check for both long - long int and unsigned long long int. - (AC_TYPE_UNSIGNED_LONG_LONG_INT): Don't bother compiling if c99, - since the answer is already known. - -2010-12-04 Bruno Haible - - Put more information about failed tests into the test return codes. - * intdiv0.m4 (gt_INTDIV0): Change test program so that it returns an - enumerated value (0, 1, 2, 3, 4, ...). - * fcntl-o.m4 (gl_FCNTL_O_FLAGS): Change test program so that it returns - a bit mask. - * iconv.m4 (AM_ICONV_LINK): Likewise. - -2010-11-26 Bruno Haible - - * iconv.m4 (AM_ICONV): If the gnulib module 'iconv-h' is present, set - ICONV_CONST. - -2010-11-20 Bruno Haible - - Ensure that is included before __GLIBC__ is tested. - * intl.m4 (AM_INTL_SUBDIR): Test for . - Reported by Mike Frysinger . - -2010-11-20 Bruno Haible - - Port to uClibc. - * glibc21.m4 (gl_GLIBC21): Treat uClibc like glibc. - * glibc2.m4 (gt_GLIBC2): Treat uClibc like a non-glibc platform. - Reported by Mike Frysinger . - -2010-10-04 Bruno Haible - - Make option --with-libpth-prefix work. - * threadlib.m4 (gl_THREADLIB_BODY): When testing whether pth works, use - $LIBPTH, not just -lpth. - -2010-09-22 Bruno Haible - - * threadlib.m4 (gl_THREADLIB_EARLY_BODY): When gl_THREADLIB_DEFAULT_NO - is defined, change the default to 'no'. - Reported by Paul Eggert. - -2010-09-04 Bruno Haible - - Set PATH_SEPARATOR the same way autoconf does. - * progtest.m4 (AM_PATH_PROG_WITH_TEST): Determine the value of - PATH_SEPARATOR the same way autoconf-generated configure scripts do. - -2010-08-28 Bruno Haible - - Prefer using AC_DEFUN_ONCE over AC_DEFUN in projects with gnulib. - * iconv.m4 (gl_iconv_AC_DEFUN): Use AC_DEFUN_ONCE if gl_00GNULIB is - defined. - Suggested by Eric Blake. - -2010-07-31 Bruno Haible - - Use new ansi-c++.m4 from gnulib. - * ansi-c++.m4: Remove file. - * Makefile.am (EXTRA_DIST): Remove it. - Reported at . - -2010-07-31 Bruno Haible - - iconv: Work around AIX 6.1..7.1 bug. - * iconv.m4 (AM_ICONV_LINK): Test against AIX 6.1, 7.1 bug. When - cross-compiling, guess no on all versions of AIX. - Reported by Rainer Tammer. - -2010-07-30 Bruno Haible - - iconv: Update regarding AIX. - * iconv.m4 (AM_ICONV_LINK): When cross-compiling, guess yes on AIX 7. - Reported by Rainer Tammer. - -2010-07-19 Bruno Haible - - Modernize AC_TRY_RUN invocations. - * iconv.m4 (AM_ICONV_LINK): Use AC_RUN_IFELSE instead of AC_TRY_RUN. - * intdiv0.m4 (gt_INTDIV0): Likewise. - * printf-posix.m4 (gt_PRINTF_POSIX): Likewise. - * threadlib.m4 (gl_THREADLIB_BODY): Likewise. - -2010-07-19 Bruno Haible - - Modernize AC_TRY_LINK invocations. - * codeset.m4 (AM_LANGINFO_CODESET): Use AC_LINK_IFELSE instead of - AC_TRY_LINK. - * gettext.m4 (AM_GNU_GETTEXT): Likewise. - * iconv.m4 (AM_ICONV_LINK): Likewise. - * intl.m4 (gt_INTL_SUBDIR_CORE): Likewise. - * intlmacosx.m4 (gt_INTL_MACOSX): Likewise. - * lcmessage.m4 (gt_LC_MESSAGES): Likewise. - * threadlib.m4 (gl_THREADLIB_BODY): Likewise. - -2010-07-18 Bruno Haible - - Modernize AC_TRY_COMPILE invocations. - * iconv.m4 (gl_iconv_AC_DEFUN): Use AC_COMPILE_IFELSE instead of - AC_TRY_COMPILE. - * intl.m4 (gt_CHECK_DECL): Likewise. - * intmax.m4 (gt_TYPE_INTMAX_T): Likewise. - * inttypes-pri.m4 (gt_INTTYPES_PRI): Likewise. - * inttypes_h.m4 (gl_AC_HEADER_INTTYPES_H): Likewise. - * lock.m4 (gl_LOCK): Likewise. - * size_max.m4 (gl_SIZE_MAX): Likewise. - * stdint_h.m4 (gl_AC_HEADER_STDINT_H): Likewise. - * visibility.m4 (gl_VISIBILITY): Likewise. - * wchar_t.m4 (gt_TYPE_WCHAR_T): Likewise. - * wint_t.m4 (gt_TYPE_WINT_T): Likewise. - -2010-07-01 Christian Weisgerber (tiny change) - - Use AC_GNU_SOURCE as a fallback for AC_USE_SYSTEM_EXTENSIONS. - * fcntl-o.m4 (gl_FCNTL_O_FLAGS): When AC_USE_SYSTEM_EXTENSIONS is - not present (i.e. with autoconf 2.59 and when using gettextize, not - gnulib), require AC_GNU_SOURCE instead. - -2010-06-22 Ralf Wildenhues - - Avoid double-quotes inside backquote inside double-quote. - * gettext-runtime/m4/po.m4 (AM_PO_SUBDIRS, AM_POSTPROCESS_PO_MAKEFILE): - Remove unneeded outermost double-quotes around backquote that contains - double-quoted strings. Avoids an idiom that nearly triggers a ksh bug. - -2010-06-04 Bruno Haible - - Prefer documented low-level autoconf macro names. - * intl.m4 (gt_CHECK_DECL): Use m4_translit instead of translit. - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-06-03 Bruno Haible - - Choose among AC_DEFUN_ONCE, AC_DEFUN in a way that aclocal understands. - * iconv.m4 (gl_iconv_AC_DEFUN): New macro. - (AM_ICONV): Define it through gl_iconv_AC_DEFUN. - Reported by Ludovic Courtès . - -2010-05-16 Bruno Haible - - Avoid autoconf warnings about AM_ICONV. - * iconv.m4 (AM_ICONV): Define using AC_DEFUN_ONCE for autoconf >= 2.64. - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2010-05-09 Bruno Haible - - * po.m4 (AM_PO_SUBDIRS): Set GETTEXT_MACRO_VERSION to 0.18. - -2010-04-20 Simon Josefsson - Bruno Haible - - visibility: Don't use -fvisibility if it leads to a warning. - * visibility.m4 (gl_VISIBILITY): Check whether -Werror is usable. If - yes, don't pretend that visibility works if it leads to a warning. - Reported by Mike Gran . - -2010-04-05 Bruno Haible - - Make the multithread modules work on Cygwin 1.7.2. - * threadlib.m4 (gl_THREADLIB_BODY): Improve the test whether imported - symbols can be declared weak, so that it returns "no" on Cygwin 1.7.2. - -2010-03-28 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Emit a warning if the first argument is - empty or 'no-libtool'. - -2010-01-01 Bruno Haible - - * iconv.m4 (AM_ICONV_LINK): Recognize native Solaris iconv() bug. - -2009-12-26 Bruno Haible - - * intl.m4 (gt_INTL_SUBDIR_CORE): Don't check for NL_LOCALE_NAME macro. - -2009-12-26 Bruno Haible - - * intl.m4 (gt_INTL_SUBDIR_CORE): Check also for uselocale. - -2009-12-25 Bruno Haible - - * fcntl-o.m4: New file, from gnulib. - * fcntl_h.m4: Remove file. - * Makefile.am (EXTRA_DIST): Add fcntl-o.m4. Remove fcntl_h.m4. - -2009-12-21 Bruno Haible - - Define override of setlocale and newlocale functions. - * intl.m4 (AM_INTL_SUBDIR): Check also for newlocale. Set - HAVE_NEWLOCALE. - -2009-12-12 Bruno Haible - - * fcntl_h.m4: Untabify. - * glibc2.m4: Untabify. - * glibc21.m4: Untabify. - * longlong.m4: Untabify. - -2009-10-18 Bruno Haible - - * fcntl_h.m4: New file, from gnulib. - * intl.m4 (AM_INTL_SUBDIR): Require gl_FCNTL_O_FLAGS. - * Makefile.am (EXTRA_DIST): Add fcntl_h.m4. - -2009-08-14 Bruno Haible - - * eoverflow.m4: Remove file. Obsoleted by gnulib's 'errno' module. - * Makefile.am (EXTRA_DIST): Remove it. - -2009-08-14 Bruno Haible - - Disable multithread support by default on Cygwin 1.5.x for real. - * m4/threadlib.m4 (gl_THREADLIB_EARLY_BODY): Fix last commit. - -2009-08-12 Bruno Haible - - Disable multithread support by default on Cygwin 1.5.x. - * m4/threadlib.m4 (gl_THREADLIB_EARLY_BODY): On Cygwin 1.5.x and older, - set gl_use_threads=no if not specified otherwise. - -2009-08-03 Bruno Haible - - * iconv.m4 (AM_ICONV): Fix displayed message with autoconf-2.64. - -2009-06-06 Bruno Haible - - Interoperate with automake-1.11 provided --enable-silent-rules option. - * intl.m4 (AM_INTL_SUBDIR): Set INTL_DEFAULT_VERBOSITY. - -2009-05-21 Bruno Haible - - Avoid redefinition warnings for SIZE_MAX. - * size_max.m4 (gl_SIZE_MAX): Avoid redefining SIZE_MAX in config.h. - Reported by Simon Josefsson. - -2009-05-21 Bruno Haible - - * size_max.m4 (gl_SIZE_MAX): Use AC_CACHE_CHECK instead of - AC_CACHE_VAL. - -2009-02-23 Bruno Haible - - * intl.m4 (AM_INTL_SUBDIR): Also check for strnlen, wcsnlen, mbrtowc, - wcrtomb. - -2009-01-14 Bruno Haible - - * intl.m4: More consistent m4 quoting. - -2009-01-14 Jim Meyering - - * codeset.m4: More consistent m4 quoting. - * gettext.m4: Likewise. - * iconv.m4: Likewise. - * intldir.m4: Likewise. - * intlmacosx.m4: Likewise. - * intmax.m4: Likewise. - * inttypes_h.m4: Likewise. - * inttypes-pri.m4: Likewise. - * lcmessage.m4: Likewise. - * lock.m4: Likewise. - * longlong.m4: Likewise. - * nls.m4: Likewise. - * po.m4: Likewise. - * printf-posix.m4: Likewise. - * progtest.m4: Likewise. - * stdint_h.m4: Likewise. - * threadlib.m4: Likewise. - * uintmax_t.m4: Likewise. - * wchar_t.m4: Likewise. - * wint_t.m4: Likewise. - -2008-12-29 Bruno Haible - - * codeset.m4 (AM_LANGINFO_CODESET): More systematic m4 argument - quoting. - * gettext.m4 (AM_GNU_GETTEXT): Likewise. - * glibc2.m4 (gt_GLIBC2): Likewise. - * glibc21.m4 (gl_GLIBC21): Likewise. - * iconv.m4 (AM_ICONV_LINK, AM_ICONV): Likewise. - * intdiv0.m4 (gt_INTDIV0): Likewise. - * intl.m4 (gt_INTL_SUBDIR_CORE, gt_CHECK_DECL): Likewise. - * intlmacosx.m4 (gt_INTL_MACOSX): Likewise. - * intmax.m4 (gt_TYPE_INTMAX_T): Likewise. - * inttypes-pri.m4 (gt_INTTYPES_PRI): Likewise. - * inttypes_h.m4 (gl_AC_HEADER_INTTYPES_H): Likewise. - * lcmessage.m4 (gt_LC_MESSAGES): Likewise. - * nls.m4 (AM_NLS): Likewise. - * po.m4 (AM_PO_SUBDIRS): Likewise. - * printf-posix.m4 (gt_PRINTF_POSIX): Likewise. - * progtest.m4 (AM_PATH_PROG_WITH_TEST): Likewise. - * size_max.m4 (gl_SIZE_MAX): Likewise. - * stdint_h.m4 (gl_AC_HEADER_STDINT_H): Likewise. - * threadlib.m4 (gl_THREADLIB_BODY): Likewise. - * uintmax_t.m4 (gl_AC_TYPE_UINTMAX_T): Likewise. - * visibility.m4 (gl_VISIBILITY): Likewise. - * wchar_t.m4 (gt_TYPE_WCHAR_T): Likewise. - * wint_t.m4 (gt_TYPE_WINT_T): Likewise. - * xsize.m4 (gl_XSIZE): Likewise. - -2007-11-12 Paul Eggert - - Don't insist on 'long long int' support in the preprocessor. It - breaks too many things. For example, PRIdMAX still uses a 'long - long int' format with the latest Sun compiler, even though - HAVE_LONG_LONG_INT isn't defined due to that compiler's - preprocessor problem. This causes the latest coreutils to dump - core on Solaris 10 sparc with the Sun C compiler. - Instead, fix the 2007-10-16 problem in a different way, by evaluating - the troublesome expressions at configure-time, not at #if-time. - * longlong.m4 (_AC_TYPE_LONG_LONG_SNIPPET): Don't test the - preprocessor. - -2008-08-17 Bruno Haible - - * threadlib.m4: New file, from gnulib. - * lock.m4: Update from gnulib. - * Makefile.am (EXTRA_DIST): Add threadlib.m4. - -2008-08-14 Bruno Haible - - * intl.m4 (AM_INTL_SUBDIR): Update after changes to lock.h. - -2008-06-17 Bruno Haible - - New macro gl_DISABLE_THREADS. - * lock.m4 (gl_LOCK_EARLY_BODY): Use value gl_use_threads_default - if the user did not pass --enable-threads or --disable-threads option. - (gl_DISABLE_THREADS): New macro. - Reported by Eric Blake . - -2007-11-10 Bruno Haible - - * eoverflow.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add it. - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2007-10-31 Bruno Haible - - * ulonglong.m4: Remove file. - * Makefile.am (EXTRA_DIST): Remove it. - -2007-10-31 Bruno Haible - - * uintmax_t.m4 (gl_AC_TYPE_UINTMAX_T): Use - AC_TYPE_UNSIGNED_LONG_LONG_INT instead of gl_AC_TYPE_UNSIGNED_LONG_LONG. - * longlong.m4 (gl_AC_TYPE_LONG_LONG): Remove macro. - * ulonglong.m4 (gl_AC_TYPE_UNSIGNED_LONG_LONG): Remove macro. - -2007-10-31 Bruno Haible - - * longlong.m4 (_AC_TYPE_LONG_LONG_SNIPPET): New macro, extracted from - AC_TYPE_LONG_LONG_INT and AC_TYPE_UNSIGNED_LONG_LONG_INT. - (AC_TYPE_LONG_LONG_INT): Use it. - (AC_TYPE_UNSIGNED_LONG_LONG_INT): Moved here from ulonglong.m4. Use it - as well. - * ulonglong.m4 (AC_TYPE_UNSIGNED_LONG_LONG_INT): Remove macro; moved to - longlong.m4. - -2007-10-28 Bruno Haible - - * po.m4 (AM_PO_SUBDIRS): Initialize XGETTEXT_EXTRA_OPTIONS. - (AM_XGETTEXT_OPTION_INIT, AM_XGETTEXT_OPTION): New macros. - -2007-10-28 Bruno Haible - - * po.m4 (AM_PO_SUBDIRS): Set GETTEXT_MACRO_VERSION to 0.17. - -2007-10-27 Bruno Haible - - * intl.m4 (AM_INTL_SUBDIR): Set and AC_SUBST LTLIBC. - -2007-10-22 Bruno Haible - - * ulonglong.m4 (AC_TYPE_UNSIGNED_LONG_LONG_INT): Use -1ull, not - -1u, in preprocessor expression, so that we don't test for the bug - in HP-UX 11.00 cpp. Testing for this bug caused problems; see - . - -2007-10-16 Paul Eggert - - Check for 64-bit int errors in HP-UX 10.20 preprocessor. - Problem reported by H.Merijn Brand in - . - * longlong.m4 (AC_TYPE_LONG_LONG_INT): Check preprocessor too. - * ulonglong.m4 (AC_TYPE_UNSIGNED_LONG_LONG_INT): Likewise. - -2007-10-07 Bruno Haible - - * intl.m4 (AM_INTL_SUBDIR): Set WOE32DLL on mingw like on Cygwin. - Fixes incomplete 2006-05-15 patch. - Patch from Charles Wilson. - -2007-09-12 Bruno Haible - - * lock.m4: Don't provide an AC_USE_SYSTEM_EXTENSIONS definition. - (gl_LOCK_EARLY_BODY): Use AC_GNU_SOURCE when AC_USE_SYSTEM_EXTENSIONS - is not defined. - -2007-09-12 Eric Blake - - * lock.m4 (gl_LOCK_EARLY_BODY): AC_GNU_SOURCE will be obsolete in - Autoconf 2.62; use AC_USE_SYSTEM_EXTENSIONS instead, but provide - fallback, so that lock.m4 can be used in gettext without extensions - module. - -2007-09-08 Bruno Haible - - * po.m4 (AM_PO_SUBDIRS): Define GETTEXT_MACRO_VERSION. - Suggested by Daniel Leidert . - -2007-08-26 Bruno Haible - - * intl.m4 (gl_INTL_SUBDIR_CORE): Avoid an "unused variable" warning - in the _NL_LOCALE_NAME test. - Mentioned by Marti Raudsepp . - -2007-06-07 Bruno Haible - - * intlmacosx.m4: New file, extracted from gettext.m4. - * gettext.m4 (gt_INTL_MACOSX): Remove macro, moved to intlmacosx.m4. - * Makefile.am (EXTRA_DIST): Add intlmacosx.m4. - -2007-05-28 Bruno Haible - - * intl.m4 (AM_INTL_SUBDIR): Substitute variables WOE32, WINDRES. - -2007-05-27 Bruno Haible - - * iconv.m4: Update from gnulib. - 2007-05-27 Bruno Haible - * iconv.m4 (AM_ICONV_LINK): Fix 2007-03-31 patch. - -2007-05-20 Bruno Haible - - * iconv.m4: Update from gnulib. - 2007-03-31 Bruno Haible - * iconv.m4 (AM_ICONV_LINK): Fix 2007-03-29 patch. Test also - against a bug in HP-UX iconv_open(). - 2007-03-29 Bruno Haible - * iconv.m4 (AM_ICONV_LINK): Require AC_CANONICAL_HOST. Test - against a bug in AIX iconv(). - - * longlong.m4: Update from gnulib. - 2006-11-08 Bruno Haible - * longlong.m4 (AC_TYPE_LONG_LONG_INT): Set - ac_cv_type_long_long_int to 'yes' instead of 'cross-compiling'. - 2006-11-07 Paul Eggert - * longlong.m4 (AC_TYPE_LONG_LONG_INT): Detect bug in Tandem - NonStop Kernel (OSS) cc -O circa 2004, reported by Matthew - Woehlke. - -2007-04-06 Bruno Haible - - Assume the 'long double' type. - * longdouble.m4: Remove file. - * intl.m4: Remove gt_TYPE_LONGDOUBLE invocation. - * Makefile.am (EXTRA_DIST): Remove longdouble.m4. - -2007-04-02 Bruno Haible - - * intdiv0.m4 (gt_INTDIV0): Avoid performing the test for real on x86 - or x86_64 platforms running MacOS X. - Reported by Ryan Schmidt <@ryandesign.com>. - -2007-04-02 Bruno Haible - - * intdiv0.m4 (gt_INTDIV0): When cross-compiling, treat x86_64 like - i386. - -2007-03-04 Bruno Haible - - * printf-posix.m4 (gt_PRINTF_POSIX): Treat BeOS like NetBSD and Woe32 - systems. - -2007-02-13 Bruno Haible - - * intdiv0.m4 (gt_INTDIV0): Assume ANSI C. Fix underquoting bug. - Reported by Ralf Wildenhues . - -2007-01-10 Eric Blake - - * wint_t.m4 (gt_TYPE_WINT_T): Include before , to - work around BSDI bug in BSD/OS 4.0.1. - Reported by Chris McGuire. - -2006-11-21 Bruno Haible - - * size_max.m4 (gl_SIZE_MAX): Use AC_COMPUTE_INT instead of - _AC_COMPUTE_INT. - (AC_COMPUTE_INT): Add fallback definition for autoconf < 2.61. - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-11-20 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Revert 2005-07-28 patch: Use - changequote instead of pairs of brackets. - Reported by Andreas Schwab . - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-10-19 Bruno Haible - - * size_max.m4 (gl_SIZE_MAX): Cache the result. - -2006-10-15 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Don't use 'eval' on commands, only on - variable assignments. Fixes bug introduced on 2006-10-01. - -2006-10-11 Bruno Haible - - * intl.m4 (AM_INTL_SUBDIR): Invoke AC_TYPE_LONG_LONG_INT instead of - gl_AC_TYPE_LONG_LONG. - -2006-10-11 Bruno Haible - - * longlong.m4: Add comments. - * ulonglong.m4: Likewise. - -2006-08-22 Eric Blake - - * longlong.m4 (AC_TYPE_LONG_LONG_INT): Avoid compiler warning. - -2006-07-01 Paul Eggert - - * longlong.m4 (AC_TYPE_LONG_LONG_INT): Backport from Autoconf 2.60, - but fix a bug, by requiring at least 64 bits. - * ulonglong.m4 (AC_TYPE_UNSIGNED_LONG_LONG_INT): Likewise. - * longlong.m4 (gl_AC_TYPE_LONG_LONG): Now just call - AC_TYPE_LONG_LONG_INT. This macro is obsolete and will go soon. - * ulonglong.m4 (gl_AC_TYPE_UNSIGNED_LONG_LONG) Likewise. - -2006-10-01 Bruno Haible - - Make it possible to invoke AC_GNU_SOURCE after gl_LOCK_EARLY. - * lock.m4 (gl_LOCK_EARLY_BODY): New macro, extracted code from - gl_LOCK_BODY. - (gl_LOCK_EARLY): Require gl_LOCK_EARLY_BODY, not gl_LOCK_BODY. - (gl_LOCK_BODY): Remove settings of CPPFLAGS, now done in - gl_LOCK_EARLY_BODY. - (gl_LOCK): Require gl_LOCK_BODY. - -2006-10-01 Bruno Haible - - * gettext.m4 (gt_NEEDS_INIT, AM_GNU_GETTEXT_NEED): New macros. - (AM_GNU_GETTEXT): Invoke them. Convert gt_api_version, - gt_cv_func_gnugettext_libc, gt_cv_func_gnugettext_libintl from - m4-time variables to sh-time variables. - -2006-10-01 Bruno Haible - - * intldir.m4: New file. - * gettext.m4 (AM_GNU_GETTEXT): Define gt_included_intl to yes if - AM_GNU_GETTEXT_INTL_SUBDIR is present among the macros selected by - aclocal. - * Makefile.am (EXTRA_DIST): Add intl.m4, intldir.m4. - -2006-09-28 Ralf Wildenhues - - * intmax.m4 (gt_TYPE_INTMAX_T): Avoid unused variables warning. - -2006-09-22 Ralf Wildenhues - - * lock.m4 (gl_LOCK_BODY): Avoid unused variables warning. - -2006-09-18 Bruno Haible - - Assume autoconf-2.52 or newer. - * inttypes-h.m4: Remove file. - * inttypes-pri.m4: Require autoconf >= 2.52. - (gt_INTTYPES_PRI): Invoke AC_CHECK_HEADERS on inttypes.h. Test - ac_cv_header_inttypes_h instead of gl_cv_header_inttypes_h. - * intl.m4: Require autoconf >= 2.52. - (gt_INTL_SUBDIR_CORE): Invoke AC_CHECK_HEADERS on inttypes.h. - * Makefile.am (EXTRA_DIST): Remove inttypes-h.m4. - -2006-09-11 Bruno Haible - - * intl.m4: New file, extracted from gettext.m4. - * gettext.m4 (AM_INTL_SUBDIR, gt_INTL_SUBDIR_CORE, gt_CHECK_DECL): - Move out to intl.m4. - -2006-08-26 Bruno Haible - - * inttypes-pri.m4 (gt_INTTYPES_PRI): Also AC_SUBST PRI_MACROS_BROKEN. - -2006-08-28 Bruno Haible - - * signed.m4: Remove file. - * gettext.m4 (AM_INTL_SUBDIR): Remove bh_C_SIGNED invocation. - * Makefile.am (EXTRA_DIST): Remove signed.m4. - -2006-08-22 Eric Blake - - * stdint_h.m4 (gl_AC_HEADER_STDINT_H): Avoid compiler warning. - * inttypes_h.m4 (gl_AC_HEADER_INTTYPES_H): Likewise. - * codeset.m4 (AM_LANGINFO_CODESET): Likewise. - -2006-08-23 Bruno Haible - - * lock.m4 (gl_LOCK_EARLY): Renamed from gl_LOCK. - (gl_LOCK_BODY): Remove gl_PREREQ_LOCK invocation. - (gl_LOCK): New macro. - -2006-08-18 Bruno Haible - - * lock.m4 (gl_LOCK_BODY): Change the default value of gl_use_threads on - OSF/1 to no. - Reported by Stephen Cartwright . - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2006-06-27 Bruno Haible - - * isc-posix.m4: Remove file. - * Makefile.am (EXTRA_DIST): Remove it. - * gettext.m4 (AM_INTL_SUBDIR): Remove AC_ISC_POSIX invocation. - -2006-06-27 Bruno Haible - - Assume working 'const'. - * gettext.m4 (gt_INTL_SUBDIR_CORE): Remove AC_C_CONST invocation. - -2006-06-15 Bruno Haible - - * size_max.m4 (gl_SIZE_MAX): Make it work also when cross-compiling. - -2005-07-10 Bruno Haible - - * size_max.m4 (gl_SIZE_MAX): Cast ~(size_t)0 back to size_t. - Needed when size_t is smaller than 'unsigned int'. - Reported by Paul Eggert. - -2006-01-08 Bruno Haible - - Ensure automatic ordering between gl_LOCK and gl_ARGP. - * lock.m4 (gl_LOCK_BODY): Renamed from gl_LOCK. - (gl_LOCK): New macro, requiring gl_LOCK_BODY. - -2006-06-23 Bruno Haible - - * gettext.m4 (gt_INTL_SUBDIR_CORE): Check for argz_* functions, - not __argz*. Avoids warnings on Cygwin. - Reported by Eric Blake. - -2006-06-17 Bruno Haible - - * gettext.m4 (AM_INTL_SUBDIR): Don't redefine __libc_rwlock_* symbols. - -2006-06-17 Bruno Haible - - * po.m4 (AM_POSTPROCESS_PO_MAKEFILE): Remove double-quotes around - backquoted expression in assignment. - Fixes a problem with NetBSD /bin/sh. - -2006-06-04 Bruno Haible - - * inttypes-h.m4: Renamed from inttypes.m4. - (gl_HEADER_INTTYPES_H): Renamed from gt_HEADER_INTTYPES_H. - * inttypes-pri.m4 (gt_INTTYPES_PRI): Update. - * gettext.m4 (gt_INTL_SUBDIR_CORE): Update. - * Makefile.am (EXTRA_DIST): Update. - -2006-05-15 Bruno Haible - - * gettext.m4 (AM_INTL_SUBDIR): Set variable WOE32DLL instead of - CYGWINDLL. - -2006-05-11 Bruno Haible - - * gettext.m4 (AM_INTL_SUBDIR): Set variable CYGWINDLL. - -2006-05-07 Bruno Haible - - * gettext.m4 (gt_INTL_SUBDIR_CORE): Fix test of __builtin_expect so - that it works correctly with non-gcc compilers. - -2006-04-17 Bruno Haible - - * nls.m4 (AM_MKINSTALLDIRS): Remove macro. - * gettext.m4 (AM_INTL_SUBDIR): Require AM_PROG_MKDIR_P instead of - AM_MKINSTALLDIRS. - * po.m4 (AM_PO_SUBDIRS): Likewise. - -2006-04-14 Bruno Haible - - Prepare for autoconf-2.60. - * po.m4 (AM_PO_SUBDIRS): Set localedir if not already defined. - -2006-02-21 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Invoke AM_NLS through AC_REQUIRE, not - directly. - Reported by Ron Lee . - -2005-11-21 Bruno Haible - - * gettext.m4 (AM_INTL_SUBDIR): Invoke gt_LC_MESSAGES always, since we - assume that always exists. - Fixes bug introduced on 2005-08-28. - -2005-10-18 Bruno Haible - - * po.m4 (AM_PO_SUBDIRS): Also define MSGFMT_015, GMSGFMT_015, - XGETTEXT_015. - -2005-10-18 Bruno Haible - - * po.m4 (AM_PO_SUBDIRS): Remove redundant checks. - -2005-08-28 Bruno Haible - - * gettext.m4 (AM_INTL_SUBDIR): Remove AC_HEADER_STDC, AC_TYPE_OFF_T - tests. Remove tests for locale.h, nl_types.h, malloc.h. - (gt_INTL_SUBDIR_CORE): Add test for __builtin_expect. - -2005-08-28 Bruno Haible - - * gettext.m4 (gt_INTL_SUBDIR_CORE): New macro, extracted from - AM_INTL_SUBDIR. - (AM_INTL_SUBDIR): Require it. - -2005-08-15 Bruno Haible - - * gettext.m4 (AM_INTL_SUBDIR): Fix test for NL_LOCALE_NAME macro. - -2005-07-28 Stepan Kasal - - * gettext.m4 (AM_GNU_GETTEXT): Don't use changequote, add pairs of - brackets instead. - -2005-07-28 Bruno Haible - - * po.m4 (AM_PO_SUBDIRS, AM_POSTPROCESS_PO_MAKEFILE): Update comments - regarding automake. - Suggested by Stepan Kasal . - -2005-07-24 Bruno Haible - - Tidy up exported symbols. - * gettext.m4 (AM_INTL_SUBDIR): Require gl_VISIBILITY. - * visibility.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2005-07-26 Bruno Haible - - * lock.m4 (gl_LOCK): On OSF/1 with cc, use -D_REENTRANT, not -pthread. - -2005-07-26 Bruno Haible - - * lock.m4 (gl_LOCK): Add some ordering constraints. - -2005-07-25 Bruno Haible - - * lock.m4 (gl_LOCK): On Solaris and HP-UX, define - PTHREAD_IN_USE_DETECTION_HARD. - * gettext.m4 (AM_INTL_SUBDIR): Also hide the glthread_in_use function. - -2005-07-22 Bruno Haible - - * lock.m4 (gl_LOCK): Stronger test for pthread functions in libc, so - that the result on IRIX 6.5 is no. - -2005-07-16 Bruno Haible - - * gettext.m4 (AM_INTL_SUBDIR): Also hide the glthread_once* functions. - -2005-07-16 Bruno Haible - - * lock.m4: New file. - * gettext.m4 (AM_INTL_SUBDIR): Remove multithreading checks. Instead - require gl_LOCK and define __libc_lock_*, __libc_rwlock_*, - __libc_lock_*recursive*, glthread_* as macros. - * Makefile.am (EXTRA_DIST): Add lock.m4. - -2005-05-05 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Add LIBTHREAD to LIBINTL and - LTLIBTHREAD to LTLIBINTL. - (AM_INTL_SUBDIR): Check for thread library. Set LIBTHREAD, LTLIBTHREAD. - -2005-03-13 Bruno Haible - - * po.m4 (AM_PO_SUBDIRS): Use AC_CONFIG_COMMANDS instead of - AC_OUTPUT_COMMANDS. - Suggested by Alexandre Duret-Lutz . - -2005-04-30 Bruno Haible - - * gettext.m4 (AM_INTL_SUBDIR): Remove CPPFLAGS addition for - CoreFoundation on MacOS X. - (gt_INTL_MACOSX): Likewise. Use #include syntax. - It's a special Apple syntax implemented in the C compiler, but since - already uses it, all compilers usable on MacOS X must - support it. In LIBS, use -Wl prefix for -framework option. - -2005-05-03 Bruno Haible - - * gettext.m4 (AM_INTL_SUBDIR): Also test for NL_LOCALE_NAME macro. - -2006-06-21 Bruno Haible - - * gettext-0.14.6 released. - -2005-05-23 Bruno Haible - - * gettext-0.14.5 released. - -2005-04-11 Bruno Haible - - * gettext-0.14.4 released. - -2005-04-06 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Don't use a cast from 'char *' to 'int', - since it's not valid in C++ on 64-bit machines. - Reported by Mads Martin Joergensen . - -2005-03-14 Bruno Haible - - * gettext-0.14.3 released. - -2005-03-12 Bruno Haible - - * po.m4 (AM_PO_SUBDIRS, AM_POSTPROCESS_PO_MAKEFILE): In the LINGUAS - file, ignore also comments that don't start in column 0. - -2005-03-12 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Fix quoting bug. Fixes an endless loop - of 'aclocal' when a configure.ac contains two invocations of - AM_GNU_GETTEXT. - -2005-03-11 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): CATOBJEXT and INTLOBJS default to empty. - Reported by Stepan Kasal . - -2005-03-07 Bruno Haible - - * po.m4: Add comments. - -2005-03-05 Bruno Haible - - * nls.m4: Require autoconf >= 2.50. - (AM_MKINSTALLDIRS): Use AC_REQUIRE_AUX_FILE conditionally. - -2005-02-24 Bruno Haible - - * gettext-0.14.2 released. - -2005-01-29 Bruno Haible - - * gettext.m4 (gt_INTL_MACOSX): New macro, extracted from - AM_INTL_SUBDIR. Set INTL_MACOSX_LIBS instead of INTL_MACOSX_LDFLAGS. - (AM_GNU_GETTEXT): Invoke it. Add the INTL_MACOSX_LIBS contents to - LIBINTL and LTLIBINTL. - (AM_INTL_SUBDIR): Require gt_INTL_MACOSX. - -2005-01-19 Bruno Haible - - * ansi-c++.m4, codeset.m4, gettext.m4, glibc21.m4, glibc2.m4, iconv.m4: - * intdiv0.m4, intmax.m4, inttypes_h.m4, inttypes.m4, inttypes-pri.m4: - * isc-posix.m4, lcmessage.m4, longdouble.m4, longlong.m4, nls.m4: - * po.m4, printf-posix.m4, progtest.m4, signed.m4, size_max.m4: - * stdint_h.m4, uintmax_t.m4, ulonglong.m4, wchar_t.m4, wint_t.m4: - * xsize.m4: - Use an all-permissive copyright notice, recommended by RMS. - -2005-01-10 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Declare _nl_expand_alias with an - argument. - Reported by Mark A. Wicks and - Vaclav Haisman . - -2005-01-08 Bruno Haible - - * progtest.m4: Require autoconf >= 2.50. - (AM_PATH_PROG_WITH_TEST): Emit some traces to the log file. - * po.m4: Require autoconf >= 2.50. - (AM_PO_SUBDIRS): Emit the tested program's output to the log file. - Suggested by Yann Dirson . - -2004-06-01 Paul Eggert - - * longlong.m4, ulonglong.m4: Fix copyright date and/or serial number. - -2004-09-05 Bruno Haible - - * gettext.m4 (AM_INTL_SUBDIR): Test for CFPreferencesCopyAppValue. - -2004-09-03 Bruno Haible - - * gettext.m4 (AM_INTL_SUBDIR): Add a test for CFLocaleCopyCurrent. - -2004-05-16 Bruno Haible - - * lcmessage.m4 (gt_LC_MESSAGES): Renamed from AM_LC_MESSAGES. - * gettext.m4 (AM_INTL_SUBDIR): Update. - Suggested by Alexandre Duret-Lutz. - -2004-04-19 Bruno Haible - - * gettext.m4: Change jm_ to gl_ in AC_DEFINE'd names. Update all uses. - -2004-04-19 Bruno Haible - - * inttypes_h.m4: Change jm_ to gl_ in cache variables as well. - * stdint_h.m4: Likewise. - * uintmax_t.m4: Likewise. - -2004-04-18 Jim Meyering - - * glibc21.m4: Change jm_ to gl_ in AC_DEFINE'd names. Update all uses. - * intmax.m4: Likewise. - * inttypes_h.m4: Likewise. - * longlong.m4: Likewise. - * stdint_h.m4: Likewise. - * uintmax_t.m4: Likewise. - * ulonglong.m4: Likewise. - -2004-03-02 Bruno Haible - - * po.m4 (AM_POSTPROCESS_PO_MAKEFILE): For RESOURCESDLLFILES and - CSHARPCATALOGS, extend the lang -> frobbedlang mapping so as to support - Serbian and Uzbek locales. - -2004-02-18 Bruno Haible - - * xsize.m4 (gl_XSIZE): Require AC_C_INLINE. - Reported by Derek Robert Price . - -2004-02-02 Bruno Haible - - * glibc2.m4: New file. - * gettext.m4 (AM_INTL_SUBDIR): Require gt_GLIBC2. - * Makefile.am (EXTRA_DIST): Add glibc2.m4. - -2004-01-29 Bruno Haible - - * gettext-0.14.1 released. - -2004-01-28 Bruno Haible - - * gettext-0.14 released. - -2003-12-26 Bruno Haible - - Support for C#. - * po.m4 (AM_POSTPROCESS_PO_MAKEFILE): Substitute also the variables - RESOURCESDLLFILES and CSHARPCATALOGS. Add rules for each member of - CSHARPCATALOGS. - -2003-12-17 Bruno Haible - - * gettext-0.13.1 released. - -2003-12-16 Bruno Haible - - * printf-posix.m4 (gt_PRINTF_POSIX): Guess correctly when cross- - compiling to Cygwin. - -2003-11-30 Bruno Haible - - * gettext-0.13 released. - -2003-11-23 Bruno Haible - - * ssize_t.m4: Remove file, moved to ../../gettext-tools/m4/. - * gettext.m4 (AM_INTL_SUBDIR): Don't require gt_TYPE_SSIZE_T. - * Makefile.am (EXTRA_DIST): Remove ssize_t.m4. - -2003-11-19 Bruno Haible - - * size_max.m4 (gl_SIZE_MAX): Don't use the _ONCE macros here. - -2003-11-16 Bruno Haible - - * size_max.m4: New file, moved here from ../../gettext-tools/m4/. - * ssize_t.m4: New file, moved here from ../../gettext-tools/m4/. - * xsize.m4: New file, moved here from ../../gettext-tools/m4/. - * gettext.m4 (AM_INTL_SUBDIR): Require gt_TYPE_SSIZE_T, gl_XSIZE. - Improve ptrdiff_t test. - * Makefile.am (EXTRA_DIST): Add size_max.m4, ssize_t.m4, xsize.m4. - -2003-11-09 Bruno Haible - - * po.m4 (AM_POSTPROCESS_PO_MAKEFILE): New macro. - -2003-09-17 Bruno Haible - - * gettext.m4 (AM_INTL_SUBDIR): Test for fwprintf, not wprintf. Needed - because cygwin-1.3.22 has a broken definition of wprintf in - winsup/cygwin/syscalls.cc and lacks 1. the declaration of this function - and 2. the other wide-char I/O functions fwprintf, fwscanf, wprintf, - wscanf, swprintf, swscanf, vfwprintf, vwprintf, vwsprintf, fgetwc, - fgetwc, fputwc, fputws, getwc, getwchar, putwc, putwchar, ungetwc. - -2003-08-29 Bruno Haible - - * gettext.m4 (AM_INTL_SUBDIR): Test whether _snprintf and _snwprintf - are declared, not only existent as functions. - -2003-08-24 Bruno Haible - - * gettext.m4 (AM_INTL_SUBDIR): Also check for _snprintf, _snwprintf. - -2003-08-11 Bruno Haible - - * gettext.m4 (AM_INTL_SUBDIR): Also check for wcslen. - -2003-06-27 Bruno Haible - - Avoid use of *_unlocked functions on Solaris 2.5.1. - * gettext.m4 (AM_INTL_SUBDIR): Don't test for the functions - feof_unlocked, fgets_unlocked, getc_unlocked. Test for their - declaration instead. - (gt_CHECK_DECL): New macro. - Reported by Eric Botcazou . - -2003-06-19 Bruno Haible - - * printf-posix.m4: New file. - * Makefile.am (EXTRA_DIST): Add printf-posix.m4. - * gettext.m4 (AM_INTL_SUBDIR): Require bh_C_SIGNED, - jm_AC_TYPE_LONG_LONG, gt_TYPE_LONGDOUBLE, gt_TYPE_WCHAR_T, - gt_TYPE_WINT_T, jm_AC_HEADER_INTTYPES_H, jm_AC_HEADER_STDINT_H, - gt_TYPE_INTMAX_T, gt_PRINTF_POSIX. Check for ptrdiff_t, asprintf, - snprintf, wprintf. - * longlong.m4: Update from gnulib. - (jm_AC_TYPE_LONG_LONG): Replaces gt_TYPE_LONGLONG. - -2003-01-11 Bruno Haible - - * ulonglong.m4 (jm_AC_TYPE_UNSIGNED_LONG_LONG): Also test the ULL - suffix. - -2003-05-22 Bruno Haible - - * gettext-0.12.1 released. - -2003-05-17 Bruno Haible - - * gettext-0.12 released. - -2003-04-29 Bruno Haible - - * nls.m4: New file, extracted from gettext.m4. - * po.m4: New file, extracted from gettext.m4. - * gettext.m4 (AM_GNU_GETTEXT): Use AM_NLS. - (AM_PO_SUBDIRS, AM_MKINSTALLDIRS): Remove macros. - * Makefile.am (EXTRA_DIST): Add them. - -2003-03-16 Bruno Haible - - * gettext.m4 (AM_INTL_SUBDIR): Also test for __fsetlocking. - -2003-02-28 Bruno Haible - - * error.m4: Remove file. Use ../../gettext-tools/m4/error.m4 instead. - * Makefile.am (EXTRA_DIST): Remove it. - -2003-02-28 Bruno Haible - - * gettext.m4 (AM_MKINSTALLDIRS): Fix MKINSTALLDIRS for when AC_AUX_DIR - is given and $srcdir is a relative directory. - -2003-02-16 Bruno Haible - - * gettext.m4 (AM_PO_SUBDIRS): Require an xgettext that supports the - --msgid-bugs-address option. - -2003-02-16 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Move INTLOBJS to backward compatibility - section. - -2003-02-12 Bruno Haible - - Restructure gettext package. - * ansi-c++.m4: New file. - * gettext.m4 (AM_GNU_GETTEXT): Special case the packages - 'gettext-runtime' and 'gettext-tools'. - * Makefile.am: New file. - diff -Nru gettext-0.19.6/gettext-runtime/m4/ChangeLog.0 gettext-0.19.7/gettext-runtime/m4/ChangeLog.0 --- gettext-0.19.6/gettext-runtime/m4/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/m4/ChangeLog.0 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,1350 @@ +2015-09-11 Daiki Ueno + + * gettext 0.19.6 released. + +2015-07-28 Daiki Ueno + + * gettext.m4 (AM_GNU_GETTEXT_REQUIRE_VERSION): New macro. Bump + serial to 67. + +2015-07-10 Daiki Ueno + + * gettext 0.19.5 released. + +2015-07-10 Daiki Ueno + + * intl.m4 (gt_INTL_SUBDIR_CORE): Check also for getlocalename_l. + Bump serial to 29. + +2014-12-24 Daiki Ueno + + * gettext 0.19.4 released. + +2014-12-10 Daiki Ueno + + * intl.m4, po.m4: Bump serial to avoid any conflict with Gnulib's + version after Gnulib commit 71be4c87. + +2014-12-03 Daiki Ueno + + * extern-inline.m4, iconv.m4: Update from Gnulib. + +2014-10-15 Daiki Ueno + + * gettext 0.19.3 released. + +2014-09-30 Daiki Ueno + + * extern-inline.m4, threadlib.m4: Update from Gnulib. + +2014-07-16 Daiki Ueno + + * intl.m4 (gt_GL_ATTRIBUTE): New macro. + (AM_INTL_SUBDIR): Require gt_GL_ATTRIBUTE. + +2014-07-14 Daiki Ueno + + * gettext 0.19.2 released. + +2014-06-10 Daiki Ueno + + * gettext 0.19.1 released. + +2014-06-02 Daiki Ueno + + * gettext 0.19 released. + +2013-12-17 Daiki Ueno + + Add missing extern-inline.m4 into archive. + Problem reported by Reuben Thomas in: + . + * extern-inline.m4: New file, from gnulib. + * intl.m4 (AM_INTL_SUBDIR): Require gl_EXTERN_INLINE. + * Makefile.am (EXTRA_DIST): Update. + +2013-08-09 Daiki Ueno + + * intl.m4 (AM_INTL_SUBDIR): Fix AC_CHECK_DECLS usage. + (gt_INTL_SUBDIR_CORE): Likewise. + +2013-06-25 Daiki Ueno + + Allow user to supply custom sed command when generating en@quot.po. + * po.m4 (AM_PO_SUBDIRS): Require AC_PROG_SED. + +2013-04-23 Daiki Ueno + + Obsolete gt_CHECK_DECL in favor of AC_CHECK_DECLS. + Now that macros installed by 'gettextize' require Autoconf 2.60, + gt_CHECK_DECL can be safely replaced with AC_CHECK_DECLS. + * intl.m4 (gt_CHECK_DECL): Remove. + (AM_INTL_SUBDIR): Use AC_CHECK_DECLS instead of gt_CHECK_DECL. + (gt_INTL_SUBDIR_CORE): Likewise. + +2013-03-05 Daiki Ueno + + * fcntl-o.m4: Update copyright year. + * gettext.m4: Likewise. + * glibc2.m4: Likewise. + * glibc21.m4: Likewise. + * iconv.m4: Likewise. + * intdiv0.m4: Likewise. + * intl.m4: Likewise. + * intldir.m4: Likewise. + * intlmacosx.m4: Likewise. + * intmax.m4: Likewise. + * inttypes-pri.m4: Likewise. + * inttypes_h.m4: Likewise. + * lcmessage.m4: Likewise. + * lock.m4: Likewise. + * longlong.m4: Likewise. + * nls.m4: Likewise. + * po.m4: Likewise. + * printf-posix.m4: Likewise. + * progtest.m4: Likewise. + * size_max.m4: Likewise. + * stdint_h.m4: Likewise. + * threadlib.m4: Likewise. + * uintmax_t.m4: Likewise. + * visibility.m4: Likewise. + * wchar_t.m4: Likewise. + * wint_t.m4: Likewise. + * xsize.m4: Likewise. + +2012-12-25 Daiki Ueno + + * gettext-0.18.2 released. + +2012-12-07 Stefano Lattarini (tiny change) + + m4: use AC_PROG_MKDIR_P, not the deprecated AM_PROG_MKDIR_P + * gettext.m4 (AM_INTL_SUBDIR): Require AC_PROG_MKDIR_P instead + of AM_PROG_MKDIR_P, as this latter macro is deprecated since + Automake 1.12.1, and will be removed in Automake 1.14. + Accordingly, bump requirement in AC_PREREQ to 2.60. + * po.m4 (AM_PO_SUBDIRS): Likewise. + +2012-11-29 Paul Eggert + + * lock.m4 (gl_PREREQ_LOCK): Do not require AC_C_INLINE. + +2012-09-22 Paul Eggert + + * xsize.m4 (gl_XSIZE): Do not require AC_C_INLINE. + +2012-09-10 Paul Eggert + + * fcntl-o.m4 (gl_FCNTL_O_FLAGS): Check for AIX 7.1 bug + that caused a GNU tar test failure. Problem reported by Jez Wain; see + . + +2012-06-22 Bruno Haible + + * gettext.m4: Write "Mac OS X" instead of "MacOS X". + * intdiv0.m4: Likewise. + * intlmacosx.m4: Likewise. + * lock.m4: Likewise. + * threadlib.m4: Likewise. + * visibility.m4: Likewise. + +2012-02-18 Bruno Haible + + * Makefile.am (EXTRA_DIST): Remove intmax_t.m4. + +2012-02-05 Paul Eggert + + * po.m4: Spelling fixes. + +2012-01-26 Bruno Haible + + * gettext.m4: Update copyright year. + * codeset.m4: Likewise. + * glibc2.m4: Likewise. + * glibc21.m4: Likewise. + * iconv.m4: Likewise. + * intdiv0.m4: Likewise. + * intl.m4: Likewise. + * intldir.m4: Likewise. + * intlmacosx.m4: Likewise. + * intmax.m4: Likewise. + * inttypes-pri.m4: Likewise. + * inttypes_h.m4: Likewise. + * lcmessage.m4: Likewise. + * lock.m4: Likewise. + * longlong.m4: Likewise. + * nls.m4: Likewise. + * printf-posix.m4: Likewise. + * progtest.m4: Likewise. + * size_max.m4: Likewise. + * stdint_h.m4: Likewise. + * uintmax_t.m4: Likewise. + * visibility.m4: Likewise. + * wchar_t.m4: Likewise. + * wint_t.m4: Likewise. + * xsize.m4: Likewise. + +2011-09-11 Bruno Haible + + Don't assume exists. + * fcntl-o.m4 (gl_FCNTL_O_FLAGS): If does not exist, + include and instead. Don't test symbolink links if + symlink() does not exist. + +2012-01-04 Bruno Haible + + Talk about "native Windows API", not "Win32". + * threadlib.m4: Update comments to mention native Windows. + (gl_THREADLIB_EARLY_BODY, gl_THREADLIB_BODY): Expect + --enable-threads=windows instead of --enable-threads=win32. Set + USE_WINDOWS_THREADS, not USE_WIN32_THREADS. + +2012-01-06 Paul Eggert + + * m4/gettext.m4: In commentary, do not use ` to quote. + +2012-01-06 Paul Eggert + + Use ', not `, for quoting output. + * m4/intl.m4 (gt_CHECK_DECL): Quote 'like this', not `like this', as + per the recent change to the GNU coding standards. + * m4/longlong.m4 (AC_TYPE_LONG_LONG_INT, + AC_TYPE_UNSIGNED_LONG_LONG_INT): Likewise. + +2011-09-10 Bruno Haible + + iconv.m4: Add support for MSVC compiler. + * iconv.m4 (AM_ICONV): Use ISO C declaration syntax on MSVC. + +2011-07-07 Bruno Haible + + Avoid literal tabs. + * po,m4 (AM_PO_SUBDIRS, AM_POSTPROCESS_PO_MAKEFILE): Use a shell + variable containing a tab instead of a literal tab. + Reported by Jim Meyering. + +2011-06-04 Bruno Haible + + Ensure intmax_t gets defined in libasprintf. + * Makefile.am (EXTRA_DIST): Add intmax_t.m4. + +2011-02-18 Eric Blake + + longlong: skip, rather than fail, on cross-compilation + * longlong.m4 (AC_TYPE_LONG_LONG_INT): Avoid aborting configure + when cross-compiling; regression from 2011-02-16. + +2011-02-16 Paul Eggert + + longlong: tune, particularly for common case of c99 + * longlong.m4 (AC_TYPE_LONG_LONG_INT): Don't bother compiling + or running anything if c99, or if unsigned long long int does not + work. In either case, we know the answer without further tests. + Do not compile _AC_TYPE_LONG_LONG_SNIPPET twice. Instead, compile + it at most once, and use its results for both long long int and + unsigned long long int. This is more likely to be efficient in + the common case where the program wants to check for both long + long int and unsigned long long int. + (AC_TYPE_UNSIGNED_LONG_LONG_INT): Don't bother compiling if c99, + since the answer is already known. + +2010-12-04 Bruno Haible + + Put more information about failed tests into the test return codes. + * intdiv0.m4 (gt_INTDIV0): Change test program so that it returns an + enumerated value (0, 1, 2, 3, 4, ...). + * fcntl-o.m4 (gl_FCNTL_O_FLAGS): Change test program so that it returns + a bit mask. + * iconv.m4 (AM_ICONV_LINK): Likewise. + +2010-11-26 Bruno Haible + + * iconv.m4 (AM_ICONV): If the gnulib module 'iconv-h' is present, set + ICONV_CONST. + +2010-11-20 Bruno Haible + + Ensure that is included before __GLIBC__ is tested. + * intl.m4 (AM_INTL_SUBDIR): Test for . + Reported by Mike Frysinger . + +2010-11-20 Bruno Haible + + Port to uClibc. + * glibc21.m4 (gl_GLIBC21): Treat uClibc like glibc. + * glibc2.m4 (gt_GLIBC2): Treat uClibc like a non-glibc platform. + Reported by Mike Frysinger . + +2010-10-04 Bruno Haible + + Make option --with-libpth-prefix work. + * threadlib.m4 (gl_THREADLIB_BODY): When testing whether pth works, use + $LIBPTH, not just -lpth. + +2010-09-22 Bruno Haible + + * threadlib.m4 (gl_THREADLIB_EARLY_BODY): When gl_THREADLIB_DEFAULT_NO + is defined, change the default to 'no'. + Reported by Paul Eggert. + +2010-09-04 Bruno Haible + + Set PATH_SEPARATOR the same way autoconf does. + * progtest.m4 (AM_PATH_PROG_WITH_TEST): Determine the value of + PATH_SEPARATOR the same way autoconf-generated configure scripts do. + +2010-08-28 Bruno Haible + + Prefer using AC_DEFUN_ONCE over AC_DEFUN in projects with gnulib. + * iconv.m4 (gl_iconv_AC_DEFUN): Use AC_DEFUN_ONCE if gl_00GNULIB is + defined. + Suggested by Eric Blake. + +2010-07-31 Bruno Haible + + Use new ansi-c++.m4 from gnulib. + * ansi-c++.m4: Remove file. + * Makefile.am (EXTRA_DIST): Remove it. + Reported at . + +2010-07-31 Bruno Haible + + iconv: Work around AIX 6.1..7.1 bug. + * iconv.m4 (AM_ICONV_LINK): Test against AIX 6.1, 7.1 bug. When + cross-compiling, guess no on all versions of AIX. + Reported by Rainer Tammer. + +2010-07-30 Bruno Haible + + iconv: Update regarding AIX. + * iconv.m4 (AM_ICONV_LINK): When cross-compiling, guess yes on AIX 7. + Reported by Rainer Tammer. + +2010-07-19 Bruno Haible + + Modernize AC_TRY_RUN invocations. + * iconv.m4 (AM_ICONV_LINK): Use AC_RUN_IFELSE instead of AC_TRY_RUN. + * intdiv0.m4 (gt_INTDIV0): Likewise. + * printf-posix.m4 (gt_PRINTF_POSIX): Likewise. + * threadlib.m4 (gl_THREADLIB_BODY): Likewise. + +2010-07-19 Bruno Haible + + Modernize AC_TRY_LINK invocations. + * codeset.m4 (AM_LANGINFO_CODESET): Use AC_LINK_IFELSE instead of + AC_TRY_LINK. + * gettext.m4 (AM_GNU_GETTEXT): Likewise. + * iconv.m4 (AM_ICONV_LINK): Likewise. + * intl.m4 (gt_INTL_SUBDIR_CORE): Likewise. + * intlmacosx.m4 (gt_INTL_MACOSX): Likewise. + * lcmessage.m4 (gt_LC_MESSAGES): Likewise. + * threadlib.m4 (gl_THREADLIB_BODY): Likewise. + +2010-07-18 Bruno Haible + + Modernize AC_TRY_COMPILE invocations. + * iconv.m4 (gl_iconv_AC_DEFUN): Use AC_COMPILE_IFELSE instead of + AC_TRY_COMPILE. + * intl.m4 (gt_CHECK_DECL): Likewise. + * intmax.m4 (gt_TYPE_INTMAX_T): Likewise. + * inttypes-pri.m4 (gt_INTTYPES_PRI): Likewise. + * inttypes_h.m4 (gl_AC_HEADER_INTTYPES_H): Likewise. + * lock.m4 (gl_LOCK): Likewise. + * size_max.m4 (gl_SIZE_MAX): Likewise. + * stdint_h.m4 (gl_AC_HEADER_STDINT_H): Likewise. + * visibility.m4 (gl_VISIBILITY): Likewise. + * wchar_t.m4 (gt_TYPE_WCHAR_T): Likewise. + * wint_t.m4 (gt_TYPE_WINT_T): Likewise. + +2010-07-01 Christian Weisgerber (tiny change) + + Use AC_GNU_SOURCE as a fallback for AC_USE_SYSTEM_EXTENSIONS. + * fcntl-o.m4 (gl_FCNTL_O_FLAGS): When AC_USE_SYSTEM_EXTENSIONS is + not present (i.e. with autoconf 2.59 and when using gettextize, not + gnulib), require AC_GNU_SOURCE instead. + +2010-06-22 Ralf Wildenhues + + Avoid double-quotes inside backquote inside double-quote. + * gettext-runtime/m4/po.m4 (AM_PO_SUBDIRS, AM_POSTPROCESS_PO_MAKEFILE): + Remove unneeded outermost double-quotes around backquote that contains + double-quoted strings. Avoids an idiom that nearly triggers a ksh bug. + +2010-06-04 Bruno Haible + + Prefer documented low-level autoconf macro names. + * intl.m4 (gt_CHECK_DECL): Use m4_translit instead of translit. + +2010-06-04 Bruno Haible + + * gettext-0.18.1 released. + +2010-06-03 Bruno Haible + + Choose among AC_DEFUN_ONCE, AC_DEFUN in a way that aclocal understands. + * iconv.m4 (gl_iconv_AC_DEFUN): New macro. + (AM_ICONV): Define it through gl_iconv_AC_DEFUN. + Reported by Ludovic Courtès . + +2010-05-16 Bruno Haible + + Avoid autoconf warnings about AM_ICONV. + * iconv.m4 (AM_ICONV): Define using AC_DEFUN_ONCE for autoconf >= 2.64. + +2010-05-09 Bruno Haible + + * gettext-0.18 released. + +2010-05-09 Bruno Haible + + * po.m4 (AM_PO_SUBDIRS): Set GETTEXT_MACRO_VERSION to 0.18. + +2010-04-20 Simon Josefsson + Bruno Haible + + visibility: Don't use -fvisibility if it leads to a warning. + * visibility.m4 (gl_VISIBILITY): Check whether -Werror is usable. If + yes, don't pretend that visibility works if it leads to a warning. + Reported by Mike Gran . + +2010-04-05 Bruno Haible + + Make the multithread modules work on Cygwin 1.7.2. + * threadlib.m4 (gl_THREADLIB_BODY): Improve the test whether imported + symbols can be declared weak, so that it returns "no" on Cygwin 1.7.2. + +2010-03-28 Bruno Haible + + * gettext.m4 (AM_GNU_GETTEXT): Emit a warning if the first argument is + empty or 'no-libtool'. + +2010-01-01 Bruno Haible + + * iconv.m4 (AM_ICONV_LINK): Recognize native Solaris iconv() bug. + +2009-12-26 Bruno Haible + + * intl.m4 (gt_INTL_SUBDIR_CORE): Don't check for NL_LOCALE_NAME macro. + +2009-12-26 Bruno Haible + + * intl.m4 (gt_INTL_SUBDIR_CORE): Check also for uselocale. + +2009-12-25 Bruno Haible + + * fcntl-o.m4: New file, from gnulib. + * fcntl_h.m4: Remove file. + * Makefile.am (EXTRA_DIST): Add fcntl-o.m4. Remove fcntl_h.m4. + +2009-12-21 Bruno Haible + + Define override of setlocale and newlocale functions. + * intl.m4 (AM_INTL_SUBDIR): Check also for newlocale. Set + HAVE_NEWLOCALE. + +2009-12-12 Bruno Haible + + * fcntl_h.m4: Untabify. + * glibc2.m4: Untabify. + * glibc21.m4: Untabify. + * longlong.m4: Untabify. + +2009-10-18 Bruno Haible + + * fcntl_h.m4: New file, from gnulib. + * intl.m4 (AM_INTL_SUBDIR): Require gl_FCNTL_O_FLAGS. + * Makefile.am (EXTRA_DIST): Add fcntl_h.m4. + +2009-08-14 Bruno Haible + + * eoverflow.m4: Remove file. Obsoleted by gnulib's 'errno' module. + * Makefile.am (EXTRA_DIST): Remove it. + +2009-08-14 Bruno Haible + + Disable multithread support by default on Cygwin 1.5.x for real. + * m4/threadlib.m4 (gl_THREADLIB_EARLY_BODY): Fix last commit. + +2009-08-12 Bruno Haible + + Disable multithread support by default on Cygwin 1.5.x. + * m4/threadlib.m4 (gl_THREADLIB_EARLY_BODY): On Cygwin 1.5.x and older, + set gl_use_threads=no if not specified otherwise. + +2009-08-03 Bruno Haible + + * iconv.m4 (AM_ICONV): Fix displayed message with autoconf-2.64. + +2009-06-06 Bruno Haible + + Interoperate with automake-1.11 provided --enable-silent-rules option. + * intl.m4 (AM_INTL_SUBDIR): Set INTL_DEFAULT_VERBOSITY. + +2009-05-21 Bruno Haible + + Avoid redefinition warnings for SIZE_MAX. + * size_max.m4 (gl_SIZE_MAX): Avoid redefining SIZE_MAX in config.h. + Reported by Simon Josefsson. + +2009-05-21 Bruno Haible + + * size_max.m4 (gl_SIZE_MAX): Use AC_CACHE_CHECK instead of + AC_CACHE_VAL. + +2009-02-23 Bruno Haible + + * intl.m4 (AM_INTL_SUBDIR): Also check for strnlen, wcsnlen, mbrtowc, + wcrtomb. + +2009-01-14 Bruno Haible + + * intl.m4: More consistent m4 quoting. + +2009-01-14 Jim Meyering + + * codeset.m4: More consistent m4 quoting. + * gettext.m4: Likewise. + * iconv.m4: Likewise. + * intldir.m4: Likewise. + * intlmacosx.m4: Likewise. + * intmax.m4: Likewise. + * inttypes_h.m4: Likewise. + * inttypes-pri.m4: Likewise. + * lcmessage.m4: Likewise. + * lock.m4: Likewise. + * longlong.m4: Likewise. + * nls.m4: Likewise. + * po.m4: Likewise. + * printf-posix.m4: Likewise. + * progtest.m4: Likewise. + * stdint_h.m4: Likewise. + * threadlib.m4: Likewise. + * uintmax_t.m4: Likewise. + * wchar_t.m4: Likewise. + * wint_t.m4: Likewise. + +2008-12-29 Bruno Haible + + * codeset.m4 (AM_LANGINFO_CODESET): More systematic m4 argument + quoting. + * gettext.m4 (AM_GNU_GETTEXT): Likewise. + * glibc2.m4 (gt_GLIBC2): Likewise. + * glibc21.m4 (gl_GLIBC21): Likewise. + * iconv.m4 (AM_ICONV_LINK, AM_ICONV): Likewise. + * intdiv0.m4 (gt_INTDIV0): Likewise. + * intl.m4 (gt_INTL_SUBDIR_CORE, gt_CHECK_DECL): Likewise. + * intlmacosx.m4 (gt_INTL_MACOSX): Likewise. + * intmax.m4 (gt_TYPE_INTMAX_T): Likewise. + * inttypes-pri.m4 (gt_INTTYPES_PRI): Likewise. + * inttypes_h.m4 (gl_AC_HEADER_INTTYPES_H): Likewise. + * lcmessage.m4 (gt_LC_MESSAGES): Likewise. + * nls.m4 (AM_NLS): Likewise. + * po.m4 (AM_PO_SUBDIRS): Likewise. + * printf-posix.m4 (gt_PRINTF_POSIX): Likewise. + * progtest.m4 (AM_PATH_PROG_WITH_TEST): Likewise. + * size_max.m4 (gl_SIZE_MAX): Likewise. + * stdint_h.m4 (gl_AC_HEADER_STDINT_H): Likewise. + * threadlib.m4 (gl_THREADLIB_BODY): Likewise. + * uintmax_t.m4 (gl_AC_TYPE_UINTMAX_T): Likewise. + * visibility.m4 (gl_VISIBILITY): Likewise. + * wchar_t.m4 (gt_TYPE_WCHAR_T): Likewise. + * wint_t.m4 (gt_TYPE_WINT_T): Likewise. + * xsize.m4 (gl_XSIZE): Likewise. + +2007-11-12 Paul Eggert + + Don't insist on 'long long int' support in the preprocessor. It + breaks too many things. For example, PRIdMAX still uses a 'long + long int' format with the latest Sun compiler, even though + HAVE_LONG_LONG_INT isn't defined due to that compiler's + preprocessor problem. This causes the latest coreutils to dump + core on Solaris 10 sparc with the Sun C compiler. + Instead, fix the 2007-10-16 problem in a different way, by evaluating + the troublesome expressions at configure-time, not at #if-time. + * longlong.m4 (_AC_TYPE_LONG_LONG_SNIPPET): Don't test the + preprocessor. + +2008-08-17 Bruno Haible + + * threadlib.m4: New file, from gnulib. + * lock.m4: Update from gnulib. + * Makefile.am (EXTRA_DIST): Add threadlib.m4. + +2008-08-14 Bruno Haible + + * intl.m4 (AM_INTL_SUBDIR): Update after changes to lock.h. + +2008-06-17 Bruno Haible + + New macro gl_DISABLE_THREADS. + * lock.m4 (gl_LOCK_EARLY_BODY): Use value gl_use_threads_default + if the user did not pass --enable-threads or --disable-threads option. + (gl_DISABLE_THREADS): New macro. + Reported by Eric Blake . + +2007-11-10 Bruno Haible + + * eoverflow.m4: New file, from gnulib. + * Makefile.am (EXTRA_DIST): Add it. + +2007-11-07 Bruno Haible + + * gettext-0.17 released. + +2007-10-31 Bruno Haible + + * ulonglong.m4: Remove file. + * Makefile.am (EXTRA_DIST): Remove it. + +2007-10-31 Bruno Haible + + * uintmax_t.m4 (gl_AC_TYPE_UINTMAX_T): Use + AC_TYPE_UNSIGNED_LONG_LONG_INT instead of gl_AC_TYPE_UNSIGNED_LONG_LONG. + * longlong.m4 (gl_AC_TYPE_LONG_LONG): Remove macro. + * ulonglong.m4 (gl_AC_TYPE_UNSIGNED_LONG_LONG): Remove macro. + +2007-10-31 Bruno Haible + + * longlong.m4 (_AC_TYPE_LONG_LONG_SNIPPET): New macro, extracted from + AC_TYPE_LONG_LONG_INT and AC_TYPE_UNSIGNED_LONG_LONG_INT. + (AC_TYPE_LONG_LONG_INT): Use it. + (AC_TYPE_UNSIGNED_LONG_LONG_INT): Moved here from ulonglong.m4. Use it + as well. + * ulonglong.m4 (AC_TYPE_UNSIGNED_LONG_LONG_INT): Remove macro; moved to + longlong.m4. + +2007-10-28 Bruno Haible + + * po.m4 (AM_PO_SUBDIRS): Initialize XGETTEXT_EXTRA_OPTIONS. + (AM_XGETTEXT_OPTION_INIT, AM_XGETTEXT_OPTION): New macros. + +2007-10-28 Bruno Haible + + * po.m4 (AM_PO_SUBDIRS): Set GETTEXT_MACRO_VERSION to 0.17. + +2007-10-27 Bruno Haible + + * intl.m4 (AM_INTL_SUBDIR): Set and AC_SUBST LTLIBC. + +2007-10-22 Bruno Haible + + * ulonglong.m4 (AC_TYPE_UNSIGNED_LONG_LONG_INT): Use -1ull, not + -1u, in preprocessor expression, so that we don't test for the bug + in HP-UX 11.00 cpp. Testing for this bug caused problems; see + . + +2007-10-16 Paul Eggert + + Check for 64-bit int errors in HP-UX 10.20 preprocessor. + Problem reported by H.Merijn Brand in + . + * longlong.m4 (AC_TYPE_LONG_LONG_INT): Check preprocessor too. + * ulonglong.m4 (AC_TYPE_UNSIGNED_LONG_LONG_INT): Likewise. + +2007-10-07 Bruno Haible + + * intl.m4 (AM_INTL_SUBDIR): Set WOE32DLL on mingw like on Cygwin. + Fixes incomplete 2006-05-15 patch. + Patch from Charles Wilson. + +2007-09-12 Bruno Haible + + * lock.m4: Don't provide an AC_USE_SYSTEM_EXTENSIONS definition. + (gl_LOCK_EARLY_BODY): Use AC_GNU_SOURCE when AC_USE_SYSTEM_EXTENSIONS + is not defined. + +2007-09-12 Eric Blake + + * lock.m4 (gl_LOCK_EARLY_BODY): AC_GNU_SOURCE will be obsolete in + Autoconf 2.62; use AC_USE_SYSTEM_EXTENSIONS instead, but provide + fallback, so that lock.m4 can be used in gettext without extensions + module. + +2007-09-08 Bruno Haible + + * po.m4 (AM_PO_SUBDIRS): Define GETTEXT_MACRO_VERSION. + Suggested by Daniel Leidert . + +2007-08-26 Bruno Haible + + * intl.m4 (gl_INTL_SUBDIR_CORE): Avoid an "unused variable" warning + in the _NL_LOCALE_NAME test. + Mentioned by Marti Raudsepp . + +2007-06-07 Bruno Haible + + * intlmacosx.m4: New file, extracted from gettext.m4. + * gettext.m4 (gt_INTL_MACOSX): Remove macro, moved to intlmacosx.m4. + * Makefile.am (EXTRA_DIST): Add intlmacosx.m4. + +2007-05-28 Bruno Haible + + * intl.m4 (AM_INTL_SUBDIR): Substitute variables WOE32, WINDRES. + +2007-05-27 Bruno Haible + + * iconv.m4: Update from gnulib. + 2007-05-27 Bruno Haible + * iconv.m4 (AM_ICONV_LINK): Fix 2007-03-31 patch. + +2007-05-20 Bruno Haible + + * iconv.m4: Update from gnulib. + 2007-03-31 Bruno Haible + * iconv.m4 (AM_ICONV_LINK): Fix 2007-03-29 patch. Test also + against a bug in HP-UX iconv_open(). + 2007-03-29 Bruno Haible + * iconv.m4 (AM_ICONV_LINK): Require AC_CANONICAL_HOST. Test + against a bug in AIX iconv(). + + * longlong.m4: Update from gnulib. + 2006-11-08 Bruno Haible + * longlong.m4 (AC_TYPE_LONG_LONG_INT): Set + ac_cv_type_long_long_int to 'yes' instead of 'cross-compiling'. + 2006-11-07 Paul Eggert + * longlong.m4 (AC_TYPE_LONG_LONG_INT): Detect bug in Tandem + NonStop Kernel (OSS) cc -O circa 2004, reported by Matthew + Woehlke. + +2007-04-06 Bruno Haible + + Assume the 'long double' type. + * longdouble.m4: Remove file. + * intl.m4: Remove gt_TYPE_LONGDOUBLE invocation. + * Makefile.am (EXTRA_DIST): Remove longdouble.m4. + +2007-04-02 Bruno Haible + + * intdiv0.m4 (gt_INTDIV0): Avoid performing the test for real on x86 + or x86_64 platforms running MacOS X. + Reported by Ryan Schmidt <@ryandesign.com>. + +2007-04-02 Bruno Haible + + * intdiv0.m4 (gt_INTDIV0): When cross-compiling, treat x86_64 like + i386. + +2007-03-04 Bruno Haible + + * printf-posix.m4 (gt_PRINTF_POSIX): Treat BeOS like NetBSD and Woe32 + systems. + +2007-02-13 Bruno Haible + + * intdiv0.m4 (gt_INTDIV0): Assume ANSI C. Fix underquoting bug. + Reported by Ralf Wildenhues . + +2007-01-10 Eric Blake + + * wint_t.m4 (gt_TYPE_WINT_T): Include before , to + work around BSDI bug in BSD/OS 4.0.1. + Reported by Chris McGuire. + +2006-11-21 Bruno Haible + + * size_max.m4 (gl_SIZE_MAX): Use AC_COMPUTE_INT instead of + _AC_COMPUTE_INT. + (AC_COMPUTE_INT): Add fallback definition for autoconf < 2.61. + +2006-11-27 Bruno Haible + + * gettext-0.16.1 released. + +2006-11-20 Bruno Haible + + * gettext.m4 (AM_GNU_GETTEXT): Revert 2005-07-28 patch: Use + changequote instead of pairs of brackets. + Reported by Andreas Schwab . + +2006-10-26 Bruno Haible + + * gettext-0.16 released. + +2006-10-19 Bruno Haible + + * size_max.m4 (gl_SIZE_MAX): Cache the result. + +2006-10-15 Bruno Haible + + * gettext.m4 (AM_GNU_GETTEXT): Don't use 'eval' on commands, only on + variable assignments. Fixes bug introduced on 2006-10-01. + +2006-10-11 Bruno Haible + + * intl.m4 (AM_INTL_SUBDIR): Invoke AC_TYPE_LONG_LONG_INT instead of + gl_AC_TYPE_LONG_LONG. + +2006-10-11 Bruno Haible + + * longlong.m4: Add comments. + * ulonglong.m4: Likewise. + +2006-08-22 Eric Blake + + * longlong.m4 (AC_TYPE_LONG_LONG_INT): Avoid compiler warning. + +2006-07-01 Paul Eggert + + * longlong.m4 (AC_TYPE_LONG_LONG_INT): Backport from Autoconf 2.60, + but fix a bug, by requiring at least 64 bits. + * ulonglong.m4 (AC_TYPE_UNSIGNED_LONG_LONG_INT): Likewise. + * longlong.m4 (gl_AC_TYPE_LONG_LONG): Now just call + AC_TYPE_LONG_LONG_INT. This macro is obsolete and will go soon. + * ulonglong.m4 (gl_AC_TYPE_UNSIGNED_LONG_LONG) Likewise. + +2006-10-01 Bruno Haible + + Make it possible to invoke AC_GNU_SOURCE after gl_LOCK_EARLY. + * lock.m4 (gl_LOCK_EARLY_BODY): New macro, extracted code from + gl_LOCK_BODY. + (gl_LOCK_EARLY): Require gl_LOCK_EARLY_BODY, not gl_LOCK_BODY. + (gl_LOCK_BODY): Remove settings of CPPFLAGS, now done in + gl_LOCK_EARLY_BODY. + (gl_LOCK): Require gl_LOCK_BODY. + +2006-10-01 Bruno Haible + + * gettext.m4 (gt_NEEDS_INIT, AM_GNU_GETTEXT_NEED): New macros. + (AM_GNU_GETTEXT): Invoke them. Convert gt_api_version, + gt_cv_func_gnugettext_libc, gt_cv_func_gnugettext_libintl from + m4-time variables to sh-time variables. + +2006-10-01 Bruno Haible + + * intldir.m4: New file. + * gettext.m4 (AM_GNU_GETTEXT): Define gt_included_intl to yes if + AM_GNU_GETTEXT_INTL_SUBDIR is present among the macros selected by + aclocal. + * Makefile.am (EXTRA_DIST): Add intl.m4, intldir.m4. + +2006-09-28 Ralf Wildenhues + + * intmax.m4 (gt_TYPE_INTMAX_T): Avoid unused variables warning. + +2006-09-22 Ralf Wildenhues + + * lock.m4 (gl_LOCK_BODY): Avoid unused variables warning. + +2006-09-18 Bruno Haible + + Assume autoconf-2.52 or newer. + * inttypes-h.m4: Remove file. + * inttypes-pri.m4: Require autoconf >= 2.52. + (gt_INTTYPES_PRI): Invoke AC_CHECK_HEADERS on inttypes.h. Test + ac_cv_header_inttypes_h instead of gl_cv_header_inttypes_h. + * intl.m4: Require autoconf >= 2.52. + (gt_INTL_SUBDIR_CORE): Invoke AC_CHECK_HEADERS on inttypes.h. + * Makefile.am (EXTRA_DIST): Remove inttypes-h.m4. + +2006-09-11 Bruno Haible + + * intl.m4: New file, extracted from gettext.m4. + * gettext.m4 (AM_INTL_SUBDIR, gt_INTL_SUBDIR_CORE, gt_CHECK_DECL): + Move out to intl.m4. + +2006-08-26 Bruno Haible + + * inttypes-pri.m4 (gt_INTTYPES_PRI): Also AC_SUBST PRI_MACROS_BROKEN. + +2006-08-28 Bruno Haible + + * signed.m4: Remove file. + * gettext.m4 (AM_INTL_SUBDIR): Remove bh_C_SIGNED invocation. + * Makefile.am (EXTRA_DIST): Remove signed.m4. + +2006-08-22 Eric Blake + + * stdint_h.m4 (gl_AC_HEADER_STDINT_H): Avoid compiler warning. + * inttypes_h.m4 (gl_AC_HEADER_INTTYPES_H): Likewise. + * codeset.m4 (AM_LANGINFO_CODESET): Likewise. + +2006-08-23 Bruno Haible + + * lock.m4 (gl_LOCK_EARLY): Renamed from gl_LOCK. + (gl_LOCK_BODY): Remove gl_PREREQ_LOCK invocation. + (gl_LOCK): New macro. + +2006-08-18 Bruno Haible + + * lock.m4 (gl_LOCK_BODY): Change the default value of gl_use_threads on + OSF/1 to no. + Reported by Stephen Cartwright . + +2006-07-21 Bruno Haible + + * gettext-0.15 released. + +2006-06-27 Bruno Haible + + * isc-posix.m4: Remove file. + * Makefile.am (EXTRA_DIST): Remove it. + * gettext.m4 (AM_INTL_SUBDIR): Remove AC_ISC_POSIX invocation. + +2006-06-27 Bruno Haible + + Assume working 'const'. + * gettext.m4 (gt_INTL_SUBDIR_CORE): Remove AC_C_CONST invocation. + +2006-06-15 Bruno Haible + + * size_max.m4 (gl_SIZE_MAX): Make it work also when cross-compiling. + +2005-07-10 Bruno Haible + + * size_max.m4 (gl_SIZE_MAX): Cast ~(size_t)0 back to size_t. + Needed when size_t is smaller than 'unsigned int'. + Reported by Paul Eggert. + +2006-01-08 Bruno Haible + + Ensure automatic ordering between gl_LOCK and gl_ARGP. + * lock.m4 (gl_LOCK_BODY): Renamed from gl_LOCK. + (gl_LOCK): New macro, requiring gl_LOCK_BODY. + +2006-06-23 Bruno Haible + + * gettext.m4 (gt_INTL_SUBDIR_CORE): Check for argz_* functions, + not __argz*. Avoids warnings on Cygwin. + Reported by Eric Blake. + +2006-06-17 Bruno Haible + + * gettext.m4 (AM_INTL_SUBDIR): Don't redefine __libc_rwlock_* symbols. + +2006-06-17 Bruno Haible + + * po.m4 (AM_POSTPROCESS_PO_MAKEFILE): Remove double-quotes around + backquoted expression in assignment. + Fixes a problem with NetBSD /bin/sh. + +2006-06-04 Bruno Haible + + * inttypes-h.m4: Renamed from inttypes.m4. + (gl_HEADER_INTTYPES_H): Renamed from gt_HEADER_INTTYPES_H. + * inttypes-pri.m4 (gt_INTTYPES_PRI): Update. + * gettext.m4 (gt_INTL_SUBDIR_CORE): Update. + * Makefile.am (EXTRA_DIST): Update. + +2006-05-15 Bruno Haible + + * gettext.m4 (AM_INTL_SUBDIR): Set variable WOE32DLL instead of + CYGWINDLL. + +2006-05-11 Bruno Haible + + * gettext.m4 (AM_INTL_SUBDIR): Set variable CYGWINDLL. + +2006-05-07 Bruno Haible + + * gettext.m4 (gt_INTL_SUBDIR_CORE): Fix test of __builtin_expect so + that it works correctly with non-gcc compilers. + +2006-04-17 Bruno Haible + + * nls.m4 (AM_MKINSTALLDIRS): Remove macro. + * gettext.m4 (AM_INTL_SUBDIR): Require AM_PROG_MKDIR_P instead of + AM_MKINSTALLDIRS. + * po.m4 (AM_PO_SUBDIRS): Likewise. + +2006-04-14 Bruno Haible + + Prepare for autoconf-2.60. + * po.m4 (AM_PO_SUBDIRS): Set localedir if not already defined. + +2006-02-21 Bruno Haible + + * gettext.m4 (AM_GNU_GETTEXT): Invoke AM_NLS through AC_REQUIRE, not + directly. + Reported by Ron Lee . + +2005-11-21 Bruno Haible + + * gettext.m4 (AM_INTL_SUBDIR): Invoke gt_LC_MESSAGES always, since we + assume that always exists. + Fixes bug introduced on 2005-08-28. + +2005-10-18 Bruno Haible + + * po.m4 (AM_PO_SUBDIRS): Also define MSGFMT_015, GMSGFMT_015, + XGETTEXT_015. + +2005-10-18 Bruno Haible + + * po.m4 (AM_PO_SUBDIRS): Remove redundant checks. + +2005-08-28 Bruno Haible + + * gettext.m4 (AM_INTL_SUBDIR): Remove AC_HEADER_STDC, AC_TYPE_OFF_T + tests. Remove tests for locale.h, nl_types.h, malloc.h. + (gt_INTL_SUBDIR_CORE): Add test for __builtin_expect. + +2005-08-28 Bruno Haible + + * gettext.m4 (gt_INTL_SUBDIR_CORE): New macro, extracted from + AM_INTL_SUBDIR. + (AM_INTL_SUBDIR): Require it. + +2005-08-15 Bruno Haible + + * gettext.m4 (AM_INTL_SUBDIR): Fix test for NL_LOCALE_NAME macro. + +2005-07-28 Stepan Kasal + + * gettext.m4 (AM_GNU_GETTEXT): Don't use changequote, add pairs of + brackets instead. + +2005-07-28 Bruno Haible + + * po.m4 (AM_PO_SUBDIRS, AM_POSTPROCESS_PO_MAKEFILE): Update comments + regarding automake. + Suggested by Stepan Kasal . + +2005-07-24 Bruno Haible + + Tidy up exported symbols. + * gettext.m4 (AM_INTL_SUBDIR): Require gl_VISIBILITY. + * visibility.m4: New file. + * Makefile.am (EXTRA_DIST): Add it. + +2005-07-26 Bruno Haible + + * lock.m4 (gl_LOCK): On OSF/1 with cc, use -D_REENTRANT, not -pthread. + +2005-07-26 Bruno Haible + + * lock.m4 (gl_LOCK): Add some ordering constraints. + +2005-07-25 Bruno Haible + + * lock.m4 (gl_LOCK): On Solaris and HP-UX, define + PTHREAD_IN_USE_DETECTION_HARD. + * gettext.m4 (AM_INTL_SUBDIR): Also hide the glthread_in_use function. + +2005-07-22 Bruno Haible + + * lock.m4 (gl_LOCK): Stronger test for pthread functions in libc, so + that the result on IRIX 6.5 is no. + +2005-07-16 Bruno Haible + + * gettext.m4 (AM_INTL_SUBDIR): Also hide the glthread_once* functions. + +2005-07-16 Bruno Haible + + * lock.m4: New file. + * gettext.m4 (AM_INTL_SUBDIR): Remove multithreading checks. Instead + require gl_LOCK and define __libc_lock_*, __libc_rwlock_*, + __libc_lock_*recursive*, glthread_* as macros. + * Makefile.am (EXTRA_DIST): Add lock.m4. + +2005-05-05 Bruno Haible + + * gettext.m4 (AM_GNU_GETTEXT): Add LIBTHREAD to LIBINTL and + LTLIBTHREAD to LTLIBINTL. + (AM_INTL_SUBDIR): Check for thread library. Set LIBTHREAD, LTLIBTHREAD. + +2005-03-13 Bruno Haible + + * po.m4 (AM_PO_SUBDIRS): Use AC_CONFIG_COMMANDS instead of + AC_OUTPUT_COMMANDS. + Suggested by Alexandre Duret-Lutz . + +2005-04-30 Bruno Haible + + * gettext.m4 (AM_INTL_SUBDIR): Remove CPPFLAGS addition for + CoreFoundation on MacOS X. + (gt_INTL_MACOSX): Likewise. Use #include syntax. + It's a special Apple syntax implemented in the C compiler, but since + already uses it, all compilers usable on MacOS X must + support it. In LIBS, use -Wl prefix for -framework option. + +2005-05-03 Bruno Haible + + * gettext.m4 (AM_INTL_SUBDIR): Also test for NL_LOCALE_NAME macro. + +2006-06-21 Bruno Haible + + * gettext-0.14.6 released. + +2005-05-23 Bruno Haible + + * gettext-0.14.5 released. + +2005-04-11 Bruno Haible + + * gettext-0.14.4 released. + +2005-04-06 Bruno Haible + + * gettext.m4 (AM_GNU_GETTEXT): Don't use a cast from 'char *' to 'int', + since it's not valid in C++ on 64-bit machines. + Reported by Mads Martin Joergensen . + +2005-03-14 Bruno Haible + + * gettext-0.14.3 released. + +2005-03-12 Bruno Haible + + * po.m4 (AM_PO_SUBDIRS, AM_POSTPROCESS_PO_MAKEFILE): In the LINGUAS + file, ignore also comments that don't start in column 0. + +2005-03-12 Bruno Haible + + * gettext.m4 (AM_GNU_GETTEXT): Fix quoting bug. Fixes an endless loop + of 'aclocal' when a configure.ac contains two invocations of + AM_GNU_GETTEXT. + +2005-03-11 Bruno Haible + + * gettext.m4 (AM_GNU_GETTEXT): CATOBJEXT and INTLOBJS default to empty. + Reported by Stepan Kasal . + +2005-03-07 Bruno Haible + + * po.m4: Add comments. + +2005-03-05 Bruno Haible + + * nls.m4: Require autoconf >= 2.50. + (AM_MKINSTALLDIRS): Use AC_REQUIRE_AUX_FILE conditionally. + +2005-02-24 Bruno Haible + + * gettext-0.14.2 released. + +2005-01-29 Bruno Haible + + * gettext.m4 (gt_INTL_MACOSX): New macro, extracted from + AM_INTL_SUBDIR. Set INTL_MACOSX_LIBS instead of INTL_MACOSX_LDFLAGS. + (AM_GNU_GETTEXT): Invoke it. Add the INTL_MACOSX_LIBS contents to + LIBINTL and LTLIBINTL. + (AM_INTL_SUBDIR): Require gt_INTL_MACOSX. + +2005-01-19 Bruno Haible + + * ansi-c++.m4, codeset.m4, gettext.m4, glibc21.m4, glibc2.m4, iconv.m4: + * intdiv0.m4, intmax.m4, inttypes_h.m4, inttypes.m4, inttypes-pri.m4: + * isc-posix.m4, lcmessage.m4, longdouble.m4, longlong.m4, nls.m4: + * po.m4, printf-posix.m4, progtest.m4, signed.m4, size_max.m4: + * stdint_h.m4, uintmax_t.m4, ulonglong.m4, wchar_t.m4, wint_t.m4: + * xsize.m4: + Use an all-permissive copyright notice, recommended by RMS. + +2005-01-10 Bruno Haible + + * gettext.m4 (AM_GNU_GETTEXT): Declare _nl_expand_alias with an + argument. + Reported by Mark A. Wicks and + Vaclav Haisman . + +2005-01-08 Bruno Haible + + * progtest.m4: Require autoconf >= 2.50. + (AM_PATH_PROG_WITH_TEST): Emit some traces to the log file. + * po.m4: Require autoconf >= 2.50. + (AM_PO_SUBDIRS): Emit the tested program's output to the log file. + Suggested by Yann Dirson . + +2004-06-01 Paul Eggert + + * longlong.m4, ulonglong.m4: Fix copyright date and/or serial number. + +2004-09-05 Bruno Haible + + * gettext.m4 (AM_INTL_SUBDIR): Test for CFPreferencesCopyAppValue. + +2004-09-03 Bruno Haible + + * gettext.m4 (AM_INTL_SUBDIR): Add a test for CFLocaleCopyCurrent. + +2004-05-16 Bruno Haible + + * lcmessage.m4 (gt_LC_MESSAGES): Renamed from AM_LC_MESSAGES. + * gettext.m4 (AM_INTL_SUBDIR): Update. + Suggested by Alexandre Duret-Lutz. + +2004-04-19 Bruno Haible + + * gettext.m4: Change jm_ to gl_ in AC_DEFINE'd names. Update all uses. + +2004-04-19 Bruno Haible + + * inttypes_h.m4: Change jm_ to gl_ in cache variables as well. + * stdint_h.m4: Likewise. + * uintmax_t.m4: Likewise. + +2004-04-18 Jim Meyering + + * glibc21.m4: Change jm_ to gl_ in AC_DEFINE'd names. Update all uses. + * intmax.m4: Likewise. + * inttypes_h.m4: Likewise. + * longlong.m4: Likewise. + * stdint_h.m4: Likewise. + * uintmax_t.m4: Likewise. + * ulonglong.m4: Likewise. + +2004-03-02 Bruno Haible + + * po.m4 (AM_POSTPROCESS_PO_MAKEFILE): For RESOURCESDLLFILES and + CSHARPCATALOGS, extend the lang -> frobbedlang mapping so as to support + Serbian and Uzbek locales. + +2004-02-18 Bruno Haible + + * xsize.m4 (gl_XSIZE): Require AC_C_INLINE. + Reported by Derek Robert Price . + +2004-02-02 Bruno Haible + + * glibc2.m4: New file. + * gettext.m4 (AM_INTL_SUBDIR): Require gt_GLIBC2. + * Makefile.am (EXTRA_DIST): Add glibc2.m4. + +2004-01-29 Bruno Haible + + * gettext-0.14.1 released. + +2004-01-28 Bruno Haible + + * gettext-0.14 released. + +2003-12-26 Bruno Haible + + Support for C#. + * po.m4 (AM_POSTPROCESS_PO_MAKEFILE): Substitute also the variables + RESOURCESDLLFILES and CSHARPCATALOGS. Add rules for each member of + CSHARPCATALOGS. + +2003-12-17 Bruno Haible + + * gettext-0.13.1 released. + +2003-12-16 Bruno Haible + + * printf-posix.m4 (gt_PRINTF_POSIX): Guess correctly when cross- + compiling to Cygwin. + +2003-11-30 Bruno Haible + + * gettext-0.13 released. + +2003-11-23 Bruno Haible + + * ssize_t.m4: Remove file, moved to ../../gettext-tools/m4/. + * gettext.m4 (AM_INTL_SUBDIR): Don't require gt_TYPE_SSIZE_T. + * Makefile.am (EXTRA_DIST): Remove ssize_t.m4. + +2003-11-19 Bruno Haible + + * size_max.m4 (gl_SIZE_MAX): Don't use the _ONCE macros here. + +2003-11-16 Bruno Haible + + * size_max.m4: New file, moved here from ../../gettext-tools/m4/. + * ssize_t.m4: New file, moved here from ../../gettext-tools/m4/. + * xsize.m4: New file, moved here from ../../gettext-tools/m4/. + * gettext.m4 (AM_INTL_SUBDIR): Require gt_TYPE_SSIZE_T, gl_XSIZE. + Improve ptrdiff_t test. + * Makefile.am (EXTRA_DIST): Add size_max.m4, ssize_t.m4, xsize.m4. + +2003-11-09 Bruno Haible + + * po.m4 (AM_POSTPROCESS_PO_MAKEFILE): New macro. + +2003-09-17 Bruno Haible + + * gettext.m4 (AM_INTL_SUBDIR): Test for fwprintf, not wprintf. Needed + because cygwin-1.3.22 has a broken definition of wprintf in + winsup/cygwin/syscalls.cc and lacks 1. the declaration of this function + and 2. the other wide-char I/O functions fwprintf, fwscanf, wprintf, + wscanf, swprintf, swscanf, vfwprintf, vwprintf, vwsprintf, fgetwc, + fgetwc, fputwc, fputws, getwc, getwchar, putwc, putwchar, ungetwc. + +2003-08-29 Bruno Haible + + * gettext.m4 (AM_INTL_SUBDIR): Test whether _snprintf and _snwprintf + are declared, not only existent as functions. + +2003-08-24 Bruno Haible + + * gettext.m4 (AM_INTL_SUBDIR): Also check for _snprintf, _snwprintf. + +2003-08-11 Bruno Haible + + * gettext.m4 (AM_INTL_SUBDIR): Also check for wcslen. + +2003-06-27 Bruno Haible + + Avoid use of *_unlocked functions on Solaris 2.5.1. + * gettext.m4 (AM_INTL_SUBDIR): Don't test for the functions + feof_unlocked, fgets_unlocked, getc_unlocked. Test for their + declaration instead. + (gt_CHECK_DECL): New macro. + Reported by Eric Botcazou . + +2003-06-19 Bruno Haible + + * printf-posix.m4: New file. + * Makefile.am (EXTRA_DIST): Add printf-posix.m4. + * gettext.m4 (AM_INTL_SUBDIR): Require bh_C_SIGNED, + jm_AC_TYPE_LONG_LONG, gt_TYPE_LONGDOUBLE, gt_TYPE_WCHAR_T, + gt_TYPE_WINT_T, jm_AC_HEADER_INTTYPES_H, jm_AC_HEADER_STDINT_H, + gt_TYPE_INTMAX_T, gt_PRINTF_POSIX. Check for ptrdiff_t, asprintf, + snprintf, wprintf. + * longlong.m4: Update from gnulib. + (jm_AC_TYPE_LONG_LONG): Replaces gt_TYPE_LONGLONG. + +2003-01-11 Bruno Haible + + * ulonglong.m4 (jm_AC_TYPE_UNSIGNED_LONG_LONG): Also test the ULL + suffix. + +2003-05-22 Bruno Haible + + * gettext-0.12.1 released. + +2003-05-17 Bruno Haible + + * gettext-0.12 released. + +2003-04-29 Bruno Haible + + * nls.m4: New file, extracted from gettext.m4. + * po.m4: New file, extracted from gettext.m4. + * gettext.m4 (AM_GNU_GETTEXT): Use AM_NLS. + (AM_PO_SUBDIRS, AM_MKINSTALLDIRS): Remove macros. + * Makefile.am (EXTRA_DIST): Add them. + +2003-03-16 Bruno Haible + + * gettext.m4 (AM_INTL_SUBDIR): Also test for __fsetlocking. + +2003-02-28 Bruno Haible + + * error.m4: Remove file. Use ../../gettext-tools/m4/error.m4 instead. + * Makefile.am (EXTRA_DIST): Remove it. + +2003-02-28 Bruno Haible + + * gettext.m4 (AM_MKINSTALLDIRS): Fix MKINSTALLDIRS for when AC_AUX_DIR + is given and $srcdir is a relative directory. + +2003-02-16 Bruno Haible + + * gettext.m4 (AM_PO_SUBDIRS): Require an xgettext that supports the + --msgid-bugs-address option. + +2003-02-16 Bruno Haible + + * gettext.m4 (AM_GNU_GETTEXT): Move INTLOBJS to backward compatibility + section. + +2003-02-12 Bruno Haible + + Restructure gettext package. + * ansi-c++.m4: New file. + * gettext.m4 (AM_GNU_GETTEXT): Special case the packages + 'gettext-runtime' and 'gettext-tools'. + * Makefile.am: New file. + diff -Nru gettext-0.19.6/gettext-runtime/m4/gettext.m4 gettext-0.19.7/gettext-runtime/m4/gettext.m4 --- gettext-0.19.6/gettext-runtime/m4/gettext.m4 2015-08-21 07:18:24.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/m4/gettext.m4 2015-12-08 12:50:04.000000000 +0000 @@ -4,13 +4,13 @@ dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl -dnl This file can can be used in projects which are not available under +dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered 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 gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: diff -Nru gettext-0.19.6/gettext-runtime/m4/intldir.m4 gettext-0.19.7/gettext-runtime/m4/intldir.m4 --- gettext-0.19.6/gettext-runtime/m4/intldir.m4 2015-08-21 07:18:24.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/m4/intldir.m4 2015-12-08 12:50:04.000000000 +0000 @@ -4,13 +4,13 @@ dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl -dnl This file can can be used in projects which are not available under +dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered 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 gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. AC_PREREQ([2.52]) diff -Nru gettext-0.19.6/gettext-runtime/m4/intl.m4 gettext-0.19.7/gettext-runtime/m4/intl.m4 --- gettext-0.19.6/gettext-runtime/m4/intl.m4 2015-08-21 07:18:24.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/m4/intl.m4 2015-12-08 12:50:04.000000000 +0000 @@ -4,13 +4,13 @@ dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl -dnl This file can can be used in projects which are not available under +dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered 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 gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: diff -Nru gettext-0.19.6/gettext-runtime/m4/intlmacosx.m4 gettext-0.19.7/gettext-runtime/m4/intlmacosx.m4 --- gettext-0.19.6/gettext-runtime/m4/intlmacosx.m4 2015-08-21 07:18:24.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/m4/intlmacosx.m4 2015-12-08 12:50:04.000000000 +0000 @@ -4,13 +4,13 @@ dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl -dnl This file can can be used in projects which are not available under +dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered 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 gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Checks for special options needed on Mac OS X. diff -Nru gettext-0.19.6/gettext-runtime/m4/lcmessage.m4 gettext-0.19.7/gettext-runtime/m4/lcmessage.m4 --- gettext-0.19.6/gettext-runtime/m4/lcmessage.m4 2015-08-21 07:18:24.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/m4/lcmessage.m4 2015-12-08 12:50:04.000000000 +0000 @@ -5,13 +5,13 @@ dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl -dnl This file can can be used in projects which are not available under +dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered 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 gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: diff -Nru gettext-0.19.6/gettext-runtime/m4/Makefile.in gettext-0.19.7/gettext-runtime/m4/Makefile.in --- gettext-0.19.6/gettext-runtime/m4/Makefile.in 2015-09-11 03:04:53.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/m4/Makefile.in 2015-12-27 23:09:25.000000000 +0000 @@ -225,7 +225,7 @@ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in \ - $(top_srcdir)/../build-aux/mkinstalldirs ChangeLog README + $(top_srcdir)/../build-aux/mkinstalldirs README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkglibexecdir = @pkglibexecdir@ ACLOCAL = @ACLOCAL@ diff -Nru gettext-0.19.6/gettext-runtime/m4/nls.m4 gettext-0.19.7/gettext-runtime/m4/nls.m4 --- gettext-0.19.6/gettext-runtime/m4/nls.m4 2015-08-21 07:18:24.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/m4/nls.m4 2015-12-08 12:50:04.000000000 +0000 @@ -5,13 +5,13 @@ dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl -dnl This file can can be used in projects which are not available under +dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered 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 gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: diff -Nru gettext-0.19.6/gettext-runtime/m4/po.m4 gettext-0.19.7/gettext-runtime/m4/po.m4 --- gettext-0.19.6/gettext-runtime/m4/po.m4 2015-09-11 01:21:14.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/m4/po.m4 2015-12-08 12:50:04.000000000 +0000 @@ -4,13 +4,13 @@ dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl -dnl This file can can be used in projects which are not available under +dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered 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 gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: diff -Nru gettext-0.19.6/gettext-runtime/m4/progtest.m4 gettext-0.19.7/gettext-runtime/m4/progtest.m4 --- gettext-0.19.6/gettext-runtime/m4/progtest.m4 2015-08-21 07:18:24.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/m4/progtest.m4 2015-12-08 12:50:04.000000000 +0000 @@ -4,13 +4,13 @@ dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl -dnl This file can can be used in projects which are not available under +dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered 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 gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: diff -Nru gettext-0.19.6/gettext-runtime/Makefile.am gettext-0.19.7/gettext-runtime/Makefile.am --- gettext-0.19.6/gettext-runtime/Makefile.am 2015-08-21 07:18:23.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/Makefile.am 2015-10-01 12:29:15.000000000 +0000 @@ -44,7 +44,8 @@ ABOUT-NLS: $(srcdir)/doc/nls.texi $(srcdir)/doc/matrix.texi rm -f $(srcdir)/ABOUT-NLS \ - && $(MAKEINFO) --plaintext --no-validate -I $(srcdir)/doc nls.texi \ + && $(MAKEINFO) --plaintext --no-validate -I $(srcdir)/doc \ + $(srcdir)/doc/nls.texi \ | sed -e "s/\`\([^']*\)'/‘\1’/g" > $(srcdir)/ABOUT-NLS diff -Nru gettext-0.19.6/gettext-runtime/Makefile.in gettext-0.19.7/gettext-runtime/Makefile.in --- gettext-0.19.6/gettext-runtime/Makefile.in 2015-09-11 03:04:53.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/Makefile.in 2015-12-27 23:09:24.000000000 +0000 @@ -298,6 +298,7 @@ DIST_SUBDIRS = doc intl intl-java intl-csharp gnulib-lib libasprintf \ src po man m4 tests am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/../build-aux/ar-lib \ $(top_srcdir)/../build-aux/compile \ $(top_srcdir)/../build-aux/config.guess \ $(top_srcdir)/../build-aux/config.rpath \ @@ -308,12 +309,13 @@ $(top_srcdir)/../build-aux/ltmain.sh \ $(top_srcdir)/../build-aux/missing \ $(top_srcdir)/../build-aux/mkinstalldirs \ - $(top_srcdir)/intl/Makefile.in ../build-aux/compile \ - ../build-aux/config.guess ../build-aux/config.rpath \ - ../build-aux/config.sub ../build-aux/install-sh \ - ../build-aux/ltmain.sh ../build-aux/missing \ - ../build-aux/mkinstalldirs ../build-aux/texinfo.tex ABOUT-NLS \ - AUTHORS COPYING ChangeLog INSTALL NEWS README + $(top_srcdir)/intl/Makefile.in ../build-aux/ar-lib \ + ../build-aux/compile ../build-aux/config.guess \ + ../build-aux/config.rpath ../build-aux/config.sub \ + ../build-aux/install-sh ../build-aux/ltmain.sh \ + ../build-aux/missing ../build-aux/mkinstalldirs \ + ../build-aux/texinfo.tex ABOUT-NLS AUTHORS COPYING ChangeLog \ + INSTALL NEWS README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -1783,7 +1785,8 @@ ABOUT-NLS: $(srcdir)/doc/nls.texi $(srcdir)/doc/matrix.texi rm -f $(srcdir)/ABOUT-NLS \ - && $(MAKEINFO) --plaintext --no-validate -I $(srcdir)/doc nls.texi \ + && $(MAKEINFO) --plaintext --no-validate -I $(srcdir)/doc \ + $(srcdir)/doc/nls.texi \ | sed -e "s/\`\([^']*\)'/‘\1’/g" > $(srcdir)/ABOUT-NLS maintainer-update-po: $(top_builddir)/config.status diff -Nru gettext-0.19.6/gettext-runtime/man/bindtextdomain.3 gettext-0.19.7/gettext-runtime/man/bindtextdomain.3 --- gettext-0.19.6/gettext-runtime/man/bindtextdomain.3 2015-09-11 03:06:11.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/man/bindtextdomain.3 2015-12-27 23:21:23.000000000 +0000 @@ -10,7 +10,7 @@ .\" GNU gettext source code and manual .\" LI18NUX 2000 Globalization Specification .\" -.TH BINDTEXTDOMAIN 3 "May 2001" "GNU gettext 0.19.6" +.TH BINDTEXTDOMAIN 3 "May 2001" "GNU gettext 0.19.7" .SH NAME bindtextdomain \- set directory containing message catalogs .SH SYNOPSIS diff -Nru gettext-0.19.6/gettext-runtime/man/bind_textdomain_codeset.3 gettext-0.19.7/gettext-runtime/man/bind_textdomain_codeset.3 --- gettext-0.19.6/gettext-runtime/man/bind_textdomain_codeset.3 2015-09-11 03:06:11.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/man/bind_textdomain_codeset.3 2015-12-27 23:21:23.000000000 +0000 @@ -10,7 +10,7 @@ .\" GNU gettext source code and manual .\" LI18NUX 2000 Globalization Specification .\" -.TH BIND_TEXTDOMAIN_CODESET 3 "May 2001" "GNU gettext 0.19.6" +.TH BIND_TEXTDOMAIN_CODESET 3 "May 2001" "GNU gettext 0.19.7" .SH NAME bind_textdomain_codeset \- set encoding of message translations .SH SYNOPSIS diff -Nru gettext-0.19.6/gettext-runtime/man/ChangeLog gettext-0.19.7/gettext-runtime/man/ChangeLog --- gettext-0.19.6/gettext-runtime/man/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/man/ChangeLog 1970-01-01 00:00:00.000000000 +0000 @@ -1,257 +0,0 @@ -2015-09-11 Daiki Ueno - - * gettext 0.19.6 released. - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2014-06-01 Daiki Ueno - - * Makefile.am (EXTRA_DIST): Add $(man_HTML3) so not to regenerate - them on make distcheck. - -2014-05-19 Daiki Ueno - - build: Simplify man and HTML documentation generation - Problem reported by Santiago Vila in: - . - * Makefile.am (man_HTML1GEN): Rename from man_HTMLGEN. - (man_HTML1IN): Rename from man_HTMLIN. - (man_HTML1OTHER): Rename from man_HTMLOTHER. - (man_HTML1): New variable. - (man_HTML3): New variable split from man_HTMLOTHER. - (gt_man2html): New variable; don't overwrite output if groff fails. - ($(man_HTML1GEN)): Don't overwrite output if sed fails. - ($(man_HTML1IN)): Rewrite using $(gt_man2html). - ($(man_HTML1OTHER)): Rewrite using $(gt_man2html). - ($(man_HTML3)): Rewrite using $(gt_man2html). - -2014-05-12 Daiki Ueno - - * Makefile.am (gettext.1 ngettext.1): Don't try to replace - @localedir@ in .1.in if x-to-1 fails; rewrite the target using the - snippet in the Autoconf manual. - -2014-04-22 Daiki Ueno - - build: Use git-version-gen intead of version.sh - * Makefile.am: Refer to .version instead of version.sh. - -2013-06-10 Daiki Ueno - - * Makefile.am: Use $(MKDIR_P) instead of $(mkdir_p). - Suggested by Stefano Lattarini in - . - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2009-05-21 Bruno Haible - - Fix installation name of manual pages when --program-prefix is used. - * Makefile.am (AUTOMAKE_OPTIONS): Add 1.11. - (man_MANS): Remove manual pages for functions. - (notrans_man_MANS): New variable. - Reported at . - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-10-16 Bruno Haible - - Switch to automake-1.10. - * Makefile.am (install-html-local): Renamed from install-html. - -2006-07-25 Bruno Haible - - * Makefile.msvc: Remove file. - * Makefile.am (EXTRA_DIST): Remove Makefile.msvc. - -2006-07-25 Bruno Haible - - * Makefile.vms: Remove file. - * Makefile.am (EXTRA_DIST): Remove Makefile.vms. - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2006-04-14 Bruno Haible - - Assume autoconf >= 2.60. - * Makefile.am (mandir, docdir, htmldir, localedir): Remove variables. - -2006-04-17 Bruno Haible - - * Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs). - -2006-06-21 Bruno Haible - - * gettext-0.14.6 released. - -2005-05-23 Bruno Haible - - * gettext-0.14.5 released. - -2005-04-11 Bruno Haible - - * gettext-0.14.4 released. - -2005-03-14 Bruno Haible - - * gettext-0.14.3 released. - -2005-02-24 Bruno Haible - - * gettext-0.14.2 released. - -2004-01-29 Bruno Haible - - * gettext-0.14.1 released. - -2004-01-28 Bruno Haible - - * gettext-0.14 released. - -2003-12-12 Bruno Haible - - Assume automake-1.8. - * Makefile.am (html-local): Renamed from html. - -2003-12-17 Bruno Haible - - * gettext-0.13.1 released. - -2003-11-30 Bruno Haible - - * Makefile.msvc (install): Install also envsubst.1, envsubst.1.html. - (uninstall): Uninstall also envsubst.1, envsubst.1.html. - * Makefile.vms (install): Install also envsubst.1, envsubst.1.html. - (uninstall): Uninstall also envsubst.1, envsubst.1.html. - -2003-11-30 Bruno Haible - - * gettext-0.13 released. - -2003-11-16 Bruno Haible - - * x-to-1.in: Support --update option. - * Makefile.am (UPDATEMODE): New variable. - (gettext.1.in, ngettext.1.in, envsubst.1): Pass it to x-to-1. - (update-man1): New rule. - (distdir): Depend on it. - -2003-11-16 Bruno Haible - - * Makefile.am: Let gettext.1.in and ngettext.1.in, not gettext.1 and - ngettext.1, depend on help2man and version.sh. - -2003-11-13 Bruno Haible - - * Makefile.am (docdir): Use the value from the configure script. - -2003-09-13 Bruno Haible - - * envsubst.x: New file. - * Makefile.am (man_aux): Add envsubst.x. - (man_MAN1OTHER): New variable. - (man_MAN1): Add $(man_MAN1OTHER). - (man_HTMLOTHER): Add envsubst.1.html. - (EXTRA_DIST, MAINTAINERCLEANFILES): Add $(man_MAN1OTHER). - (envsubst.1): New rule. - (envsubst.1.html): New rule. - -2003-05-22 Bruno Haible - - * gettext-0.12.1 released. - -2003-05-17 Bruno Haible - - * gettext-0.12 released. - -2003-05-07 Bruno Haible - - * Makefile.vms (LN): Remove unused variable. - -2003-04-12 Bruno Haible - - * Makefile.vms: Avoid rules with no lines. Don't use the force target. - Correct wildcard syntax. - Suggested by Jouk Jansen . - -2003-04-12 Bruno Haible - - * Makefile.am (docdir): Use datadir instead of prefix. - * Makefile.msvc (datadir): New variable. - (mandir, docdir): Use it instead of prefix. - (install, installdirs): Update. - * Makefile.vms (datadir): New variable. - (mandir, docdir): Use it instead of prefix. - -2003-03-30 Bruno Haible - - * Makefile.vms: New file. - * Makefile.am (EXTRA_DIST): Add Makefile.vms. - -2003-03-17 Bruno Haible - - Native Woe32/MSVC support. - * Makefile.msvc: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2003-02-22 Bruno Haible - - * Makefile.am (installdirs): Remove dependency, redundant with - automake >= 1.6. - -2003-02-15 Bruno Haible - - * gettext.3.in, ngettext.3.in, textdomain.3.in, bindtextdomain.3.in, - bind_textdomain_codeset.3.in: Moved here from ../../gettext-tools/man. - * dgettext.3, dcgettext.3, dngettext.3, dcngettext.3: Likewise. - * Makefile.am: Add rules for man3 manual pages. - -2003-02-12 Bruno Haible - - Extracted from gettext package. - * Makefile.am: New file. - diff -Nru gettext-0.19.6/gettext-runtime/man/ChangeLog.0 gettext-0.19.7/gettext-runtime/man/ChangeLog.0 --- gettext-0.19.6/gettext-runtime/man/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/man/ChangeLog.0 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,257 @@ +2015-09-11 Daiki Ueno + + * gettext 0.19.6 released. + +2015-07-10 Daiki Ueno + + * gettext 0.19.5 released. + +2014-12-24 Daiki Ueno + + * gettext 0.19.4 released. + +2014-10-15 Daiki Ueno + + * gettext 0.19.3 released. + +2014-07-14 Daiki Ueno + + * gettext 0.19.2 released. + +2014-06-10 Daiki Ueno + + * gettext 0.19.1 released. + +2014-06-02 Daiki Ueno + + * gettext 0.19 released. + +2014-06-01 Daiki Ueno + + * Makefile.am (EXTRA_DIST): Add $(man_HTML3) so not to regenerate + them on make distcheck. + +2014-05-19 Daiki Ueno + + build: Simplify man and HTML documentation generation + Problem reported by Santiago Vila in: + . + * Makefile.am (man_HTML1GEN): Rename from man_HTMLGEN. + (man_HTML1IN): Rename from man_HTMLIN. + (man_HTML1OTHER): Rename from man_HTMLOTHER. + (man_HTML1): New variable. + (man_HTML3): New variable split from man_HTMLOTHER. + (gt_man2html): New variable; don't overwrite output if groff fails. + ($(man_HTML1GEN)): Don't overwrite output if sed fails. + ($(man_HTML1IN)): Rewrite using $(gt_man2html). + ($(man_HTML1OTHER)): Rewrite using $(gt_man2html). + ($(man_HTML3)): Rewrite using $(gt_man2html). + +2014-05-12 Daiki Ueno + + * Makefile.am (gettext.1 ngettext.1): Don't try to replace + @localedir@ in .1.in if x-to-1 fails; rewrite the target using the + snippet in the Autoconf manual. + +2014-04-22 Daiki Ueno + + build: Use git-version-gen intead of version.sh + * Makefile.am: Refer to .version instead of version.sh. + +2013-06-10 Daiki Ueno + + * Makefile.am: Use $(MKDIR_P) instead of $(mkdir_p). + Suggested by Stefano Lattarini in + . + +2012-12-25 Daiki Ueno + + * gettext-0.18.2 released. + +2010-06-04 Bruno Haible + + * gettext-0.18.1 released. + +2010-05-09 Bruno Haible + + * gettext-0.18 released. + +2009-05-21 Bruno Haible + + Fix installation name of manual pages when --program-prefix is used. + * Makefile.am (AUTOMAKE_OPTIONS): Add 1.11. + (man_MANS): Remove manual pages for functions. + (notrans_man_MANS): New variable. + Reported at . + +2007-11-07 Bruno Haible + + * gettext-0.17 released. + +2006-11-27 Bruno Haible + + * gettext-0.16.1 released. + +2006-10-26 Bruno Haible + + * gettext-0.16 released. + +2006-10-16 Bruno Haible + + Switch to automake-1.10. + * Makefile.am (install-html-local): Renamed from install-html. + +2006-07-25 Bruno Haible + + * Makefile.msvc: Remove file. + * Makefile.am (EXTRA_DIST): Remove Makefile.msvc. + +2006-07-25 Bruno Haible + + * Makefile.vms: Remove file. + * Makefile.am (EXTRA_DIST): Remove Makefile.vms. + +2006-07-21 Bruno Haible + + * gettext-0.15 released. + +2006-04-14 Bruno Haible + + Assume autoconf >= 2.60. + * Makefile.am (mandir, docdir, htmldir, localedir): Remove variables. + +2006-04-17 Bruno Haible + + * Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs). + +2006-06-21 Bruno Haible + + * gettext-0.14.6 released. + +2005-05-23 Bruno Haible + + * gettext-0.14.5 released. + +2005-04-11 Bruno Haible + + * gettext-0.14.4 released. + +2005-03-14 Bruno Haible + + * gettext-0.14.3 released. + +2005-02-24 Bruno Haible + + * gettext-0.14.2 released. + +2004-01-29 Bruno Haible + + * gettext-0.14.1 released. + +2004-01-28 Bruno Haible + + * gettext-0.14 released. + +2003-12-12 Bruno Haible + + Assume automake-1.8. + * Makefile.am (html-local): Renamed from html. + +2003-12-17 Bruno Haible + + * gettext-0.13.1 released. + +2003-11-30 Bruno Haible + + * Makefile.msvc (install): Install also envsubst.1, envsubst.1.html. + (uninstall): Uninstall also envsubst.1, envsubst.1.html. + * Makefile.vms (install): Install also envsubst.1, envsubst.1.html. + (uninstall): Uninstall also envsubst.1, envsubst.1.html. + +2003-11-30 Bruno Haible + + * gettext-0.13 released. + +2003-11-16 Bruno Haible + + * x-to-1.in: Support --update option. + * Makefile.am (UPDATEMODE): New variable. + (gettext.1.in, ngettext.1.in, envsubst.1): Pass it to x-to-1. + (update-man1): New rule. + (distdir): Depend on it. + +2003-11-16 Bruno Haible + + * Makefile.am: Let gettext.1.in and ngettext.1.in, not gettext.1 and + ngettext.1, depend on help2man and version.sh. + +2003-11-13 Bruno Haible + + * Makefile.am (docdir): Use the value from the configure script. + +2003-09-13 Bruno Haible + + * envsubst.x: New file. + * Makefile.am (man_aux): Add envsubst.x. + (man_MAN1OTHER): New variable. + (man_MAN1): Add $(man_MAN1OTHER). + (man_HTMLOTHER): Add envsubst.1.html. + (EXTRA_DIST, MAINTAINERCLEANFILES): Add $(man_MAN1OTHER). + (envsubst.1): New rule. + (envsubst.1.html): New rule. + +2003-05-22 Bruno Haible + + * gettext-0.12.1 released. + +2003-05-17 Bruno Haible + + * gettext-0.12 released. + +2003-05-07 Bruno Haible + + * Makefile.vms (LN): Remove unused variable. + +2003-04-12 Bruno Haible + + * Makefile.vms: Avoid rules with no lines. Don't use the force target. + Correct wildcard syntax. + Suggested by Jouk Jansen . + +2003-04-12 Bruno Haible + + * Makefile.am (docdir): Use datadir instead of prefix. + * Makefile.msvc (datadir): New variable. + (mandir, docdir): Use it instead of prefix. + (install, installdirs): Update. + * Makefile.vms (datadir): New variable. + (mandir, docdir): Use it instead of prefix. + +2003-03-30 Bruno Haible + + * Makefile.vms: New file. + * Makefile.am (EXTRA_DIST): Add Makefile.vms. + +2003-03-17 Bruno Haible + + Native Woe32/MSVC support. + * Makefile.msvc: New file. + * Makefile.am (EXTRA_DIST): Add it. + +2003-02-22 Bruno Haible + + * Makefile.am (installdirs): Remove dependency, redundant with + automake >= 1.6. + +2003-02-15 Bruno Haible + + * gettext.3.in, ngettext.3.in, textdomain.3.in, bindtextdomain.3.in, + bind_textdomain_codeset.3.in: Moved here from ../../gettext-tools/man. + * dgettext.3, dcgettext.3, dngettext.3, dcngettext.3: Likewise. + * Makefile.am: Add rules for man3 manual pages. + +2003-02-12 Bruno Haible + + Extracted from gettext package. + * Makefile.am: New file. + diff -Nru gettext-0.19.6/gettext-runtime/man/envsubst.1 gettext-0.19.7/gettext-runtime/man/envsubst.1 --- gettext-0.19.6/gettext-runtime/man/envsubst.1 2015-09-11 03:06:11.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/man/envsubst.1 2015-12-27 23:21:23.000000000 +0000 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.24. -.TH ENVSUBST "1" "September 2015" "GNU gettext-runtime 0.19.6" GNU +.TH ENVSUBST "1" "December 2015" "GNU gettext-runtime 0.19.7" GNU .SH NAME envsubst \- substitutes environment variables in shell format strings .SH SYNOPSIS diff -Nru gettext-0.19.6/gettext-runtime/man/gettext.1.in gettext-0.19.7/gettext-runtime/man/gettext.1.in --- gettext-0.19.6/gettext-runtime/man/gettext.1.in 2015-09-11 03:06:11.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/man/gettext.1.in 2015-12-27 23:21:23.000000000 +0000 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.24. -.TH GETTEXT "1" "September 2015" "GNU gettext-runtime 0.19.6" GNU +.TH GETTEXT "1" "December 2015" "GNU gettext-runtime 0.19.7" GNU .SH NAME gettext \- translate message .SH SYNOPSIS diff -Nru gettext-0.19.6/gettext-runtime/man/gettext.3 gettext-0.19.7/gettext-runtime/man/gettext.3 --- gettext-0.19.6/gettext-runtime/man/gettext.3 2015-09-11 03:06:11.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/man/gettext.3 2015-12-27 23:21:23.000000000 +0000 @@ -10,7 +10,7 @@ .\" GNU gettext source code and manual .\" LI18NUX 2000 Globalization Specification .\" -.TH GETTEXT 3 "May 2001" "GNU gettext 0.19.6" +.TH GETTEXT 3 "May 2001" "GNU gettext 0.19.7" .SH NAME gettext, dgettext, dcgettext \- translate message .SH SYNOPSIS diff -Nru gettext-0.19.6/gettext-runtime/man/Makefile.in gettext-0.19.7/gettext-runtime/man/Makefile.in --- gettext-0.19.6/gettext-runtime/man/Makefile.in 2015-09-11 03:04:53.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/man/Makefile.in 2015-12-27 23:09:25.000000000 +0000 @@ -257,7 +257,7 @@ MANS = $(man_MANS) $(notrans_man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/x-to-1.in \ - $(top_srcdir)/../build-aux/mkinstalldirs ChangeLog + $(top_srcdir)/../build-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkglibexecdir = @pkglibexecdir@ ACLOCAL = @ACLOCAL@ diff -Nru gettext-0.19.6/gettext-runtime/man/ngettext.1.in gettext-0.19.7/gettext-runtime/man/ngettext.1.in --- gettext-0.19.6/gettext-runtime/man/ngettext.1.in 2015-09-11 03:06:11.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/man/ngettext.1.in 2015-12-27 23:21:23.000000000 +0000 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.24. -.TH NGETTEXT "1" "September 2015" "GNU gettext-runtime 0.19.6" GNU +.TH NGETTEXT "1" "December 2015" "GNU gettext-runtime 0.19.7" GNU .SH NAME ngettext \- translate message and choose plural form .SH SYNOPSIS diff -Nru gettext-0.19.6/gettext-runtime/man/ngettext.3 gettext-0.19.7/gettext-runtime/man/ngettext.3 --- gettext-0.19.6/gettext-runtime/man/ngettext.3 2015-09-11 03:06:11.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/man/ngettext.3 2015-12-27 23:21:23.000000000 +0000 @@ -10,7 +10,7 @@ .\" GNU gettext source code and manual .\" LI18NUX 2000 Globalization Specification .\" -.TH NGETTEXT 3 "May 2001" "GNU gettext 0.19.6" +.TH NGETTEXT 3 "May 2001" "GNU gettext 0.19.7" .SH NAME ngettext, dngettext, dcngettext \- translate message and choose plural form .SH SYNOPSIS diff -Nru gettext-0.19.6/gettext-runtime/man/textdomain.3 gettext-0.19.7/gettext-runtime/man/textdomain.3 --- gettext-0.19.6/gettext-runtime/man/textdomain.3 2015-09-11 03:06:11.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/man/textdomain.3 2015-12-27 23:21:23.000000000 +0000 @@ -10,7 +10,7 @@ .\" GNU gettext source code and manual .\" LI18NUX 2000 Globalization Specification .\" -.TH TEXTDOMAIN 3 "May 2001" "GNU gettext 0.19.6" +.TH TEXTDOMAIN 3 "May 2001" "GNU gettext 0.19.7" .SH NAME textdomain \- set domain for future gettext() calls .SH SYNOPSIS Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/be.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/be.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/be.po gettext-0.19.7/gettext-runtime/po/be.po --- gettext-0.19.6/gettext-runtime/po/be.po 2015-09-11 03:23:55.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/be.po 2015-12-27 23:26:41.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: gettext 0.11.5\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2002-09-04 18:51+0300\n" "Last-Translator: Ales Nyakhaychyk \n" "Language-Team: Belarusian \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/bg.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/bg.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/bg.po gettext-0.19.7/gettext-runtime/po/bg.po --- gettext-0.19.6/gettext-runtime/po/bg.po 2015-09-11 03:23:55.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/bg.po 2015-12-27 23:26:41.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: GNU gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-06-23 22:12+0300\n" "Last-Translator: Roumen Petrov \n" "Language-Team: Bulgarian \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/ca.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/ca.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/ca.po gettext-0.19.7/gettext-runtime/po/ca.po --- gettext-0.19.6/gettext-runtime/po/ca.po 2015-09-11 03:23:55.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/ca.po 2015-12-27 23:26:41.000000000 +0000 @@ -52,7 +52,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-06-24 18:49+0200\n" "Last-Translator: Ivan Vilata i Balaguer \n" "Language-Team: Catalan \n" diff -Nru gettext-0.19.6/gettext-runtime/po/ChangeLog gettext-0.19.7/gettext-runtime/po/ChangeLog --- gettext-0.19.6/gettext-runtime/po/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/ChangeLog 2015-12-28 00:06:36.000000000 +0000 @@ -1,791 +1,44 @@ -2015-09-11 Daiki Ueno - - * gettext 0.19.6 released. - -2015-09-11 Daiki Ueno - - * fi.po: Update from Jorma Karvonen . - * gl.po: Update from Leandro Regueiro . - * it.po: Update from Marco Colombo . - * pl.po: Update from Rafał Maszkowski . - * zh_CN.po: Update from Ji ZhengYu . - -2015-09-01 Daiki Ueno - - * Makefile.in.in ($(DOMAIN).pot-update): Replace header comment - with the content of $(DOMAIN).pot-header, if exists. - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2015-07-10 Daiki Ueno - - * bg.po: Update from Roumen Petrov . - * ca.po: Update from Ivan Vilata i Balaguer . - * cs.po: Update from Marek Černocký . - * da.po: Update from Keld Simonsen . - * de.po: Update from Philipp Thomas . - * es.po: Update from Antonio Ceballos . - * fr.po: Update from Stéphane Aulery . - * hu.po: Update from Balázs Úr . - * ja.po: Update from Masahito Yamaga . - * ko.po: Update from Changwoo Ryu . - * nl.po: Update from Benno Schulenberg . - * pl.po: Update from Rafał Maszkowski . - * ru.po: Update from Yuri Kozlov . - * sk.po: Update from Marcel Telka . - * sl.po: Update from Primoz PETERLIN . - * tr.po: Update from Volkan Gezer . - * uk.po: Update from Yuri Chornoivan . - * vi.po: Update from Trần Ngọc Quân . - -2015-05-31 Benno Schulenberg (tiny change) - - * Makefile.in.in: Do not use --update when simply checking for - the version, as this might fail when msgmerge is very old. - -2015-02-18 Daiki Ueno - - * Makefile.in.in: Replace our own wording of licensing with GNU - All-Permissive License. Reported by Riley Baird in: - . - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-12-24 Daiki Ueno - - * vi.po: Update from Trần Ngọc Quân . - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-10-08 Daiki Ueno - - * Makevars (MSGINIT_OPTIONS): New variable. - * Rules-quot: Use it when invoking msginit. - If one wants to use '--no-wrap' in MSGMERGE_OPTIONS and - XGETTEXT_OPTIONS, there should be a way to pass the option to - msginit. Reported by Ludovic Courtès in: - . - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2014-05-02 Daiki Ueno - - Makefile.in.in: Turn {POFILES,DISTFILES}DEPS into yes/no options - Preserve the previous behavior even if a user forgot to update - Makevars, after calling autopoint. - * Makevars (PO_DEPENDS_ON_POT): Rename from POFILESDEPS and turn - it into a yes/no option. - (DIST_DEPENDS_ON_UPDATE_PO): Rename from DISTFILESDEPS and turn it - into a yes/no option. - -2014-05-01 Daiki Ueno - - Makefile.in.in: Add an option to claim the package as GNU/non-GNU - Reporeted by David Shea at: - . - * Makevars (PACKAGE_GNU): New variable. - * Makefile.in.in ($(DOMAIN).pot-update): Don't search for "GNU - packagename" if $(PACKAGE_GNU) is set. - -2014-05-01 Daiki Ueno - - Makefile.in.in: Make dependencies of a PO file and 'dist' customizable - * Makevars (POFILESDEPS): New variable. - (DISTFILESDEPS): New variable. - * Makefile.in.in ($(POFILES)): Depend on $(POFILESDEPS) instead of - $(srcdir)/$(DOMAIN).pot. - (dist distdir): Run $(DISTFILEDEPS) instead of 'update-po'. - -2014-04-21 Daiki Ueno - - * Rules-quot: Use built-in filter if possible. - -2014-04-02 Daiki Ueno - - * Rules-quot: Add a license notice. - -2013-07-07 Daiki Ueno - - * cs.po: Update from Marek Černocký . - * de.po: Update from Jakob Kramer . - * fi.po: Update from Jorma Karvonen . - * it.po: Update from Marco Colombo . - * ko.po: Update from Changwoo Ryu . - * pl.po: Update from Rafał Maszkowski . - * pt_BR.po: Update from Rafael Ferreira . - * sl.po: Update from Primoz PETERLIN . - * sv.po: Update from Jan Djärv . - * uk.po: Update from Yuri Chornoivan . - * vi.po: Update from Trần Ngọc Quân . - -2013-06-25 Daiki Ueno - - Allow user to supply custom sed command when generating en@quot.po. - This is necessary because BSD Sed is known not to work well with - an input not ending with a newline. - * Makefile.in.in (SED): Define using @SED@. - * Rules-quot: Use '$(SED)' instead of 'sed' as the FILTER argument - of msgfilter. - Reported by Mats Erik Andersson in - . - -2013-03-02 Bruno Haible - - * bg.po: Update from Roumen Petrov . - * gl.po: Update from Leandro Regueiro . - * ja.po: Update from Masahito Yamaga . - * nl.po: Update from Benno Schulenberg . - * pl.po: Update from Rafał Maszkowski . - * pt_BR.po: Update from Rafael Ferreira . - * uk.po: Update from Yuri Chornoivan . - * vi.po: Update from Trần Ngọc Quân . - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2012-12-07 Bruno Haible - - * cs.po: Update from Marek Černocký . - * gl.po: Update from Leandro Regueiro . - * hr.po: Update from Tomislav Krznar . - * sr.po: Update from Мирослав Николић . - * uk.po: Update from Yuri Chornoivan . - * vi.po: Update from Trần Ngọc Quân . - * LINGUAS: Add hr. - -2012-07-08 Bruno Haible - - * hr.po: New file, from Tomislav Krznar . - -2012-02-19 Bruno Haible - - Rules.quot: Reenable use of build gettext tools in gettext package. - * Rules-quot (.insert-header.po-update-en): Augment PATH in the - gettext-tools package. - -2011-08-11 Paul Eggert - - Makefile.in.in: fix make -q problem - * build-aux/po/Makefile.in.in (check-macro-version): Remove this - rule, since there's no file named 'check-macro-version' and its - use as a file breaks make -q. - (all): Don't depend on check-macro-version. - (CHECK_MACRO_VERSION): New macro. - (stamp-po): Use it. - -2011-01-18 Bruno Haible - - * da.po: Update from Keld Simonsen . - * it.po: Update from Marco Colombo . - * sl.po: Update from Primoz Peterlin . - -2010-10-10 Bruno Haible - - * bg.po: Update from Roumen Petrov . - -2010-08-15 Bruno Haible - - * fi.po: Update from Jorma Karvonen . - -2010-07-27 Bruno Haible - - * fr.po: Update from Christophe Combelles . - -2010-07-11 Bruno Haible - - * zh_CN.po: Update from Aron Xu . - -2010-07-02 Bruno Haible - - * nl.po: Update from Benno Schulenberg . - -2010-06-12 Bruno Haible - - * Makefile.in.in ($(DOMAIN).pot-update): When GNU find is available, - avoid grepping through monster files. - Reported by Jim Meyering . - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-05-24 Bruno Haible - - * bg.po: Update from Roumen Petrov . - * id.po: Update from Arif E. Nugroho . - * ja.po: Update from Masahito Yamaga . - * ko.po: Update from Changwoo Ryu . - * pl.po: Update from Rafał Maszkowski . - * sk.po: Update from Marcel Telka . - * sv.po: Update from Jan Djärv . - * vi.po: Update from Clytie Siddall . - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2010-05-09 Bruno Haible - - * Makefile.in.in (GETTEXT_MACRO_VERSION): Bump to 0.18. - -2010-02-07 Bruno Haible - - * bg.po: New file, from Roumen Petrov . - * LINGUAS: Add bg. - -2009-12-19 Bruno Haible - - * ko.po: Update from Changwoo Ryu . - -2009-08-16 Bruno Haible - - * Makevars (MSGMERGE_OPTIONS): New variable. - * Makefile.in.in ($(POFILES), .nop.po-update): Use it when invoking - msgmerge. - Suggested by Guillem Jover . - -2009-07-25 Bruno Haible - - * de.po: Update from Karl Eichwalder . - -2009-06-08 Bruno Haible - - * Makefile.in.in (install-data-yes, installdirs-data-yes): Remove - unnecessary mkdir of $(datadir). - Reported by Serge Pavlovsky . - -2009-02-27 Bruno Haible - - * Makefile.in.in (Makefile): Use @SHELL@, not $(SHELL). - Reported by Scott James Remnant . - -2009-01-18 Bruno Haible - - * Makefile.in.in (.po.gmo): Pass --verbose to msgfmt when producing - statistics. - Suggested by Vincent Lefevre . - -2009-01-18 Bruno Haible - - * id.po: Update from Arif E. Nugroho . - * nn.po: Update from Eirik U. Birkeland . - * zh_CN.po: Update from Li Daobing . - -2008-09-28 Bruno Haible - - * Rules-quot (.insert-header.po-update-en): Pass the locale name with - suffix to msginit. Needed for the "Language:" field in the header - entry. - -2008-05-19 Bruno Haible - - * Makevars (XGETTEXT_OPTIONS): Remove the options for proper_name and - proper_name_utf8, now collected automatically through - AM_XGETTEXT_OPTION. - -2008-05-08 Bruno Haible - - * sk.po: Update from Marcel Telka . - * sv.po: Update from Jan Djärv . - -2008-01-10 Bruno Haible - - * pt.po: Update from Helder Correia . - -2007-12-24 Bruno Haible - - * Makefile.in.in ($(POFILES), .nop.po-update): When using msgmerge - 0.18 or newer, pass a --lang option. - -2007-12-24 Bruno Haible - - * Makefile.in.in (.nop.po-update): Put all non-option arguments after - all option arguments, so that the commands work 1. when POSIXLY_CORRECT - is set, 2. on platforms whose getopt facility is POSIX compliant but - not GNU libc compatible, such as Cygwin. - -2007-11-07 Bruno Haible - - * zh_CN.po: Restore the accidentally emptied translations. - Reported by Benno Schulenberg . - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2007-10-30 Bruno Haible - - * nb.po: Renamed from no.po. - * LINGUAS: Add nb, remove no. - -2007-10-30 Bruno Haible - - * it.po: Update from Marco Colombo . - -2007-10-28 Bruno Haible - - * Makefile.in.in ($(DOMAIN).pot-update): Consider the - XGETTEXT_EXTRA_OPTIONS variable. - -2007-10-28 Bruno Haible - - * Makefile.in.in (GETTEXT_MACRO_VERSION): Bump to 0.17. - -2007-10-28 Bruno Haible - - * ca.po: Update from Ivan Vilata i Balaguer . - -2007-10-27 Bruno Haible - - * fr.po: Update from Christophe Combelles . - -2007-10-26 Bruno Haible - - * eo.po: Update from D. Dale Gulledge . - * fi.po: Update from Lauri Nurmi . - * ga.po: Update from Kevin Patrick Scannell . - * ja.po: Update from Masahito Yamaga . - * nl.po: Update from Benno Schulenberg . - * pl.po: Update from Rafał Maszkowski . - * sl.po: Update from - Primož Peterlin . - * sv.po: Update from Jan Djärv . - * vi.po: Update from Clytie Siddall . - -2007-10-18 Bruno Haible - - * Makefile.in.in ($(DOMAIN).pot-update): Don't pass the package name - and version to xgettext if the xgettext version is < 0.16.2. - -2007-10-12 Bruno Haible - - * nl.po: Update from Benno Schulenberg . - -2007-10-07 Bruno Haible - - * Makefile.in.in ($(DOMAIN).pot-update): Exclude "GNU " - matches from the libtool script in any directory. - -2007-09-30 Bruno Haible - - * Makefile.in.in ($(DOMAIN).pot-update): Pass the package name and - version to xgettext. - -2007-09-15 Bruno Haible - - * sk.po: Update from Marcel Telka . - * uk.po: Update from Maxim V. Dziumanenko . - * vi.po: Update from Clytie Siddall . - -2007-09-08 Bruno Haible - - Check that the gettext macros and Makefile.in.in are in sync. - * Makefile.in.in (GETTEXT_MACRO_VERSION): New macro. - (check-macro-version): New target. - (all): Depend on it. - Suggested by Daniel Leidert . - -2007-05-30 Bruno Haible - - * pt.po: Update from Helder Correia . - -2007-01-30 Bruno Haible - - * uk.po: Update from Maxim V. Dziumanenko . - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-10-02 Bruno Haible - - * fr.po: Update from Christophe Combelles . - * sl.po: Update from - Primož Peterlin . - -2006-09-28 Bruno Haible - - * ca.po: Update from Ivan Vilata i Balaguer . - * id.po: Update from Tedi Heriyanto . - * zh_CN.po: Update from Funda Wang . - -2006-09-10 Bruno Haible - - * Makefile.in.in (install_sh): New variable. - Fixes "make install" errors in packages that have no 'mkinstalldirs' - file and use automake <= 1.9.x, on platforms where 'mkdir' does not - support the -p option. - -2006-08-16 Ralf Wildenhues - - * Makefile.in.in (MKDIR_P): New variable. Needed by $(mkdir_p) with - Automake-1.10. - -2006-07-31 Bruno Haible - - * POTFILES.in: Refer to gnulib-lib/ instead of ../gettext-tools/lib/. - -2006-07-25 Bruno Haible - - * Rules-msvc: Remove file. - * Makefile.msvc.sh: Remove file. - -2006-07-25 Bruno Haible - - * Rules-vms: Remove file. - * Makefile.vms.sh: Remove file. - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2006-07-20 Bruno Haible - - * de.po: Update from Karl Eichwalder . - * eo.po: New file, from D. Dale Gulledge . - * fr.po: Update from Michel Robitaille . - * ga.po: Update from Kevin Patrick Scannell . - * ru.po: Update from Oleg S. Tihonov . - * sv.po: Update from Jan Djärv . - * vi.po: Update from Clytie Siddall . - * zh_HK.po: New file, from Abel Cheung . - * zh_TW.po: Update from Abel Cheung . - * LINGUAS: Add eo, zh_HK. - -2006-07-03 Bruno Haible - - * it.po: Update from Marco Colombo . - * ja.po: Update from Masahito Yamaga . - * ko.po: Update from Changwoo Ryu . - * pl.po: Update from Rafał Maszkowski . - * tr.po: Update from Nilgün Belma Bugüner . - -2006-06-12 Bruno Haible - - * Makefile.in.in (mkinstalldirs): New variable. Needed by $(mkdir_p) - if an mkinstalldirs file is present. - -2006-04-17 Bruno Haible - - * Makefile.in.in (MKINSTALLDIRS, mkinstalldirs): Remove variables. - (mkdir_p): New variable. - (install-data, install-data-yes, installdirs-data, - installdirs-data-yes): Use $(mkdir_p) instead of $(mkinstalldirs). - -2006-04-14 Bruno Haible - - Don't ignore the --localedir option from autoconf >= 2.60. - * Makefile.in.in (localedir): Set to the value determined by the - configure script. - -2006-04-07 Bruno Haible - - * es.po: Update from Max de Mendizábal . - * pt.po: Update from Helder Correia . - * sl.po: Update from - Primož Peterlin . - * vi.po: Update from Clytie Siddall . - * zh_TW.po: Update from Abel Cheung . - -2006-04-02 Bruno Haible - - * Makevars (XGETTEXT_OPTIONS): Add keywords 'proper_name' and - 'proper_name_utf8'. - -2005-10-18 Bruno Haible - - * Makevars (USE_MSGCTXT): New macro. - * Makefile.in.in (GMSGFMT, MSGFMT, XGETTEXT): Define according to the - value of $(USE_MSGCTXT). - -2005-07-26 Bruno Haible - - * Makefile.in.in (datarootdir): New variable. - Suggested by Stepan Kasal . - -2005-03-13 Bruno Haible - - * Makefile.in.in (Makefile): Call config.status with calling convention - supported since autoconf-2.50. - Suggested by Alexandre Duret-Lutz . - -2006-06-21 Bruno Haible - - * gettext-0.14.6 released. - -2005-05-23 Bruno Haible - - * gettext-0.14.5 released. - -2005-05-23 Bruno Haible - - * zh_TW.po: Update from Abel Cheung . - -2005-04-11 Bruno Haible - - * gettext-0.14.4 released. - -2005-04-11 Bruno Haible - - * it.po: Update from Marco Colombo . - * vi.po: Update from Clytie Siddall . - -2005-03-14 Bruno Haible - - * gettext-0.14.3 released. - -2005-03-13 Bruno Haible - - * Makefile.in.in (Makefile): Depend on Makevars. - Reported by Alexandre Duret-Lutz . - -2005-03-08 Bruno Haible - - * it.po: Update from Marco Colombo . - * vi.po: Update from Clytie Siddall . - -2005-03-06 Bruno Haible - - * Makefile.in.in (dist2): Fail if some of the files to be distributed - do not exist or cannot be copied. - Suggested by Alexandre Duret-Lutz . - -2005-03-06 Bruno Haible - - * Makefile.in.in (DISTFILES): Remove $(DOMAIN).pot, stamp-po. - (stamp-po): Do nothing if $(DOMAIN).pot does not exist. - (dist2): Depend on stamp-po. If $(DOMAIN).pot exists, distribute also - $(DOMAIN).pot and stamp-po. - Reported by Alexandre Duret-Lutz . - -2005-02-24 Bruno Haible - - * gettext-0.14.2 released. - -2005-02-23 Bruno Haible - - * it.po: Update from Marco Colombo . - -2005-02-21 Bruno Haible - - * vi.po: Update from Clytie Siddall . - -2005-02-11 Bruno Haible - - * ga.po: New file, from Kevin Patrick Scannell . - * LINGUAS: Add ga. - -2005-02-06 Bruno Haible - - * Makefile.in.in (PACKAGE_BUGREPORT): New variable. - ($(DOMAIN).pot-update): If MSGID_BUGS_ADDRESS is empty and - PACKAGE_BUGREPORT is available, use the latter. - Reported by Simon Josefsson . - -2005-01-29 Bruno Haible - - * vi.po: New file, from Clytie Siddall . - * LINGUAS: Add vi. - -2005-01-20 Bruno Haible - - * ru.po: Update from Oleg S. Tihonov . - -2005-01-06 Bruno Haible - - * de.po: Update from Karl Eichwalder . - * id.po: Update from Tedi Heriyanto . - * uk.po: Update from Maxim V. Dziumanenko . - -2004-01-29 Bruno Haible - - * gettext-0.14.1 released. - -2004-01-28 Bruno Haible - - * gettext-0.14 released. - -2004-01-17 Bruno Haible - - * nl.po: Update from Elros Cyriatan . - -2004-01-16 Bruno Haible - - Create en@quot.po when it doesn't exist. - * Makefile.in.in (.SUFFIXES): Add .po-create. - ($(POFILES)): Invoke .po-create target when the PO file does not exist. - (.nop.po-create): New rule. - * Rules-quot (en@quot.po-create, en@boldquot.po-create): New rules. - -2003-12-17 Bruno Haible - - * gettext-0.13.1 released. - -2003-12-17 Bruno Haible - - * fi.po: Update from Sami J. Laine . - -2003-11-30 Bruno Haible - - * gettext-0.13 released. - -2003-11-30 Bruno Haible - - * es.po: Update from Max de Mendizábal . - * sk.po: Update from Marcel Telka . - -2003-11-24 Bruno Haible - - * ca.po: Update from Ivan Vilata i Balaguer . - * ro.po: New file, from Eugen Hoanca . - * sv.po: Update from Jan Djärv . - * tr.po: Update from Nilgün Belma Bugüner . - * LINGUAS: Add ro. - -2003-11-22 Bruno Haible - - * ja.po: Update from Masahito Yamaga . - * ko.po: Update from Changwoo Ryu . - * sv.po: Update from Jan Djärv . - -2003-11-19 Bruno Haible - - * de.po: Update from Karl Eichwalder . - * fr.po: Update from Michel Robitaille . - * pl.po: Update from Rafał Maszkowski . - * sr.po: Update from Danilo Segan . - * zh_CN.po: Update from Funda Wang . - -2003-11-09 Bruno Haible - - * Makefile.in.in (stamp-po): Remake all GMOFILES, not just those - needed in this build. This is necessary because stamp-po persists - across "make distclean". - -2003-11-06 Bruno Haible - - * sr.po: New file, from Danilo Segan. - * LINGUAS: Add sr. - -2003-10-05 Bruno Haible - - * Makevars (XGETTEXT_OPTIONS): Add --flag options. - -2003-09-14 Bruno Haible - - * POTFILES.in: Add ../gettext-tools/lib/closeout.c, src/envsubst.c. - -2003-08-22 Bruno Haible - - * zh_CN.po: New file, from Funda Wang . - * LINGUAS: Add zh_CN. - -2003-07-31 Bruno Haible - - * uk.po: New file, from Volodymyr M. Lisivka . - * LINGUAS: Add uk. - -2003-06-22 Bruno Haible - - * Makefile.in.in: Add a version number, to be used by intltools. - -2003-05-22 Bruno Haible - - * gettext-0.12.1 released. - -2003-05-19 Bruno Haible - - * fi.po: Update from Sami J. Laine . - -2003-05-17 Bruno Haible - - * gettext-0.12 released. - -2003-05-12 Bruno Haible - - * es.po: Update from Max de Mendizábal . - -2003-04-29 Bruno Haible - - * Makefile.in.in (stamp-po, update-po): Avoid infinite recursion if - LINGUAS is empty. - -2003-04-22 Bruno Haible - - * sk.po: Update from Marcel Telka . - -2003-04-12 Bruno Haible - - VMS support. - * Rules-vms: New file. - * Makefile.vms.sh: New file. - -2003-03-17 Bruno Haible - - Native Woe32/MSVC support. - * Makefile.msvc.sh: New file. - * Rules-msvc: New file. - -2003-03-29 Bruno Haible - - * id.po: Update from Tedi Heriyanto . - * pl.po: Update from Rafał Maszkowski . - -2003-02-28 Bruno Haible - - * POTFILES.in: Use references to ../gettext-tools/lib. - -2003-02-28 Bruno Haible - - * Makefile.in.in (mkinstalldirs): Simplify. Prepending - "$(top_builddir)/" in the case of a relative $srcdir is now handled - in gettext.m4. - -2003-02-24 Bruno Haible - - * de.po: Update from Karl Eichwalder . - * ja.po: Update from Masahito Yamaga . - * pl.po: Update from Rafał Maszkowski . - * ru.po: Update from Oleg S. Tihonov . - -2003-02-16 Bruno Haible - - * Makevars (MSGID_BUGS_ADDRESS): New variable. - * Makefile.in.in (DISTFILES.common): Remove Makevars. - (DISTFILES): Add Makevars here. - ($(DOMAIN).pot-update): Pass --msgid-bugs-address to xgettext. - (install-data): Install Makevars.template. Uninstall Makevars. - (uninstall-data): Uninstall Makevars.template. - (dist2): Distribute Makevars.template, in gettext-tools package only. - -2003-02-12 Bruno Haible - - * POTFILES.in: New file. - * Makevars: New file. - - * Makefile.in.in (install-data, installdirs-data, uninstall-data): - Special case package 'gettext-tools'. - (.nop.po-update): Likewise. - (dist2): Distribute also ChangeLog.[0-9] if present. +2015-12-28 Daiki Ueno + Update translations + * gettext-runtime/po/fr.po: Update from Stéphane Aulery . + * gettext-runtime/po/nb.po: Update from Johnny A. Solbu . + * gettext-runtime/po/pt_BR.po: Update from Rafael Ferreira . + * gettext-runtime/po/sr.po: Update from Мирослав Николић . + * gettext-runtime/po/zh_TW.po: Update from Wei-Lun Chao . + * gettext-tools/examples/po/fr.po: Update from Stéphane Aulery . + * gettext-tools/examples/po/nb.po: Update from Johnny A. Solbu . + * gettext-tools/examples/po/pt_BR.po: Update from Rafael Ferreira . + * gettext-tools/examples/po/sr.po: Update from Мирослав Николић . + * gettext-tools/examples/po/zh_TW.po: Update from Wei-Lun Chao . + * gettext-tools/po/bg.po: Update from Roumen Petrov . + * gettext-tools/po/es.po: Update from Antonio Ceballos . + * gettext-tools/po/fr.po: Update from Stéphane Aulery . + * gettext-tools/po/ja.po: Update from Masahito Yamaga . + * gettext-tools/po/nl.po: Update from Benno Schulenberg . + * gettext-tools/po/pt_BR.po: Update from Rafael Fontenelle . + * gettext-tools/po/sk.po: Update from Marcel Telka . + * gettext-tools/po/sl.po: Update from Primoz PETERLIN . + * gettext-tools/po/sr.po: Update from Мирослав Николић . + * gettext-tools/po/uk.po: Update from Yuri Chornoivan . + * gettext-tools/po/vi.po: Update from Trần Ngọc Quân . + + Prepare for 0.19.7 + +2015-12-17 Daiki Ueno + + po: Prefer to use host tools when cross compiling + * gettext-runtime/po/Makefile.in.in (CROSS_COMPILING): New substitute + variable. + (.nop.po-update): Don't prepend ../src to $PATH when cross compiling. + * gettext-runtime/po/Rules-quot (.insert-header.po-update-en): Likewise. + +2015-10-15 Daiki Ueno + + build: Generate ChangeLogs for intl and po + * autogen.sh: Create empty ChangeLog files under intl and po. + * Makefile.am (gen-ChangeLogs): Rename from gen-ChangeLog. Generate + ChangeLog files for */intl and */po as well as top-level. + * gettext-runtime/intl/ChangeLog.0: Rename from ChangeLog. + * gettext-runtime/po/ChangeLog.0: Rename from ChangeLog. + * gettext-tools/po/ChangeLog.1: Rename from ChangeLog. diff -Nru gettext-0.19.6/gettext-runtime/po/ChangeLog.0 gettext-0.19.7/gettext-runtime/po/ChangeLog.0 --- gettext-0.19.6/gettext-runtime/po/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/ChangeLog.0 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,791 @@ +2015-09-11 Daiki Ueno + + * gettext 0.19.6 released. + +2015-09-11 Daiki Ueno + + * fi.po: Update from Jorma Karvonen . + * gl.po: Update from Leandro Regueiro . + * it.po: Update from Marco Colombo . + * pl.po: Update from Rafał Maszkowski . + * zh_CN.po: Update from Ji ZhengYu . + +2015-09-01 Daiki Ueno + + * Makefile.in.in ($(DOMAIN).pot-update): Replace header comment + with the content of $(DOMAIN).pot-header, if exists. + +2015-07-10 Daiki Ueno + + * gettext 0.19.5 released. + +2015-07-10 Daiki Ueno + + * bg.po: Update from Roumen Petrov . + * ca.po: Update from Ivan Vilata i Balaguer . + * cs.po: Update from Marek Černocký . + * da.po: Update from Keld Simonsen . + * de.po: Update from Philipp Thomas . + * es.po: Update from Antonio Ceballos . + * fr.po: Update from Stéphane Aulery . + * hu.po: Update from Balázs Úr . + * ja.po: Update from Masahito Yamaga . + * ko.po: Update from Changwoo Ryu . + * nl.po: Update from Benno Schulenberg . + * pl.po: Update from Rafał Maszkowski . + * ru.po: Update from Yuri Kozlov . + * sk.po: Update from Marcel Telka . + * sl.po: Update from Primoz PETERLIN . + * tr.po: Update from Volkan Gezer . + * uk.po: Update from Yuri Chornoivan . + * vi.po: Update from Trần Ngọc Quân . + +2015-05-31 Benno Schulenberg (tiny change) + + * Makefile.in.in: Do not use --update when simply checking for + the version, as this might fail when msgmerge is very old. + +2015-02-18 Daiki Ueno + + * Makefile.in.in: Replace our own wording of licensing with GNU + All-Permissive License. Reported by Riley Baird in: + . + +2014-12-24 Daiki Ueno + + * gettext 0.19.4 released. + +2014-12-24 Daiki Ueno + + * vi.po: Update from Trần Ngọc Quân . + +2014-10-15 Daiki Ueno + + * gettext 0.19.3 released. + +2014-10-08 Daiki Ueno + + * Makevars (MSGINIT_OPTIONS): New variable. + * Rules-quot: Use it when invoking msginit. + If one wants to use '--no-wrap' in MSGMERGE_OPTIONS and + XGETTEXT_OPTIONS, there should be a way to pass the option to + msginit. Reported by Ludovic Courtès in: + . + +2014-07-14 Daiki Ueno + + * gettext 0.19.2 released. + +2014-06-10 Daiki Ueno + + * gettext 0.19.1 released. + +2014-06-02 Daiki Ueno + + * gettext 0.19 released. + +2014-05-02 Daiki Ueno + + Makefile.in.in: Turn {POFILES,DISTFILES}DEPS into yes/no options + Preserve the previous behavior even if a user forgot to update + Makevars, after calling autopoint. + * Makevars (PO_DEPENDS_ON_POT): Rename from POFILESDEPS and turn + it into a yes/no option. + (DIST_DEPENDS_ON_UPDATE_PO): Rename from DISTFILESDEPS and turn it + into a yes/no option. + +2014-05-01 Daiki Ueno + + Makefile.in.in: Add an option to claim the package as GNU/non-GNU + Reporeted by David Shea at: + . + * Makevars (PACKAGE_GNU): New variable. + * Makefile.in.in ($(DOMAIN).pot-update): Don't search for "GNU + packagename" if $(PACKAGE_GNU) is set. + +2014-05-01 Daiki Ueno + + Makefile.in.in: Make dependencies of a PO file and 'dist' customizable + * Makevars (POFILESDEPS): New variable. + (DISTFILESDEPS): New variable. + * Makefile.in.in ($(POFILES)): Depend on $(POFILESDEPS) instead of + $(srcdir)/$(DOMAIN).pot. + (dist distdir): Run $(DISTFILEDEPS) instead of 'update-po'. + +2014-04-21 Daiki Ueno + + * Rules-quot: Use built-in filter if possible. + +2014-04-02 Daiki Ueno + + * Rules-quot: Add a license notice. + +2013-07-07 Daiki Ueno + + * cs.po: Update from Marek Černocký . + * de.po: Update from Jakob Kramer . + * fi.po: Update from Jorma Karvonen . + * it.po: Update from Marco Colombo . + * ko.po: Update from Changwoo Ryu . + * pl.po: Update from Rafał Maszkowski . + * pt_BR.po: Update from Rafael Ferreira . + * sl.po: Update from Primoz PETERLIN . + * sv.po: Update from Jan Djärv . + * uk.po: Update from Yuri Chornoivan . + * vi.po: Update from Trần Ngọc Quân . + +2013-06-25 Daiki Ueno + + Allow user to supply custom sed command when generating en@quot.po. + This is necessary because BSD Sed is known not to work well with + an input not ending with a newline. + * Makefile.in.in (SED): Define using @SED@. + * Rules-quot: Use '$(SED)' instead of 'sed' as the FILTER argument + of msgfilter. + Reported by Mats Erik Andersson in + . + +2013-03-02 Bruno Haible + + * bg.po: Update from Roumen Petrov . + * gl.po: Update from Leandro Regueiro . + * ja.po: Update from Masahito Yamaga . + * nl.po: Update from Benno Schulenberg . + * pl.po: Update from Rafał Maszkowski . + * pt_BR.po: Update from Rafael Ferreira . + * uk.po: Update from Yuri Chornoivan . + * vi.po: Update from Trần Ngọc Quân . + +2012-12-25 Daiki Ueno + + * gettext-0.18.2 released. + +2012-12-07 Bruno Haible + + * cs.po: Update from Marek Černocký . + * gl.po: Update from Leandro Regueiro . + * hr.po: Update from Tomislav Krznar . + * sr.po: Update from Мирослав Николић . + * uk.po: Update from Yuri Chornoivan . + * vi.po: Update from Trần Ngọc Quân . + * LINGUAS: Add hr. + +2012-07-08 Bruno Haible + + * hr.po: New file, from Tomislav Krznar . + +2012-02-19 Bruno Haible + + Rules.quot: Reenable use of build gettext tools in gettext package. + * Rules-quot (.insert-header.po-update-en): Augment PATH in the + gettext-tools package. + +2011-08-11 Paul Eggert + + Makefile.in.in: fix make -q problem + * build-aux/po/Makefile.in.in (check-macro-version): Remove this + rule, since there's no file named 'check-macro-version' and its + use as a file breaks make -q. + (all): Don't depend on check-macro-version. + (CHECK_MACRO_VERSION): New macro. + (stamp-po): Use it. + +2011-01-18 Bruno Haible + + * da.po: Update from Keld Simonsen . + * it.po: Update from Marco Colombo . + * sl.po: Update from Primoz Peterlin . + +2010-10-10 Bruno Haible + + * bg.po: Update from Roumen Petrov . + +2010-08-15 Bruno Haible + + * fi.po: Update from Jorma Karvonen . + +2010-07-27 Bruno Haible + + * fr.po: Update from Christophe Combelles . + +2010-07-11 Bruno Haible + + * zh_CN.po: Update from Aron Xu . + +2010-07-02 Bruno Haible + + * nl.po: Update from Benno Schulenberg . + +2010-06-12 Bruno Haible + + * Makefile.in.in ($(DOMAIN).pot-update): When GNU find is available, + avoid grepping through monster files. + Reported by Jim Meyering . + +2010-06-04 Bruno Haible + + * gettext-0.18.1 released. + +2010-05-24 Bruno Haible + + * bg.po: Update from Roumen Petrov . + * id.po: Update from Arif E. Nugroho . + * ja.po: Update from Masahito Yamaga . + * ko.po: Update from Changwoo Ryu . + * pl.po: Update from Rafał Maszkowski . + * sk.po: Update from Marcel Telka . + * sv.po: Update from Jan Djärv . + * vi.po: Update from Clytie Siddall . + +2010-05-09 Bruno Haible + + * gettext-0.18 released. + +2010-05-09 Bruno Haible + + * Makefile.in.in (GETTEXT_MACRO_VERSION): Bump to 0.18. + +2010-02-07 Bruno Haible + + * bg.po: New file, from Roumen Petrov . + * LINGUAS: Add bg. + +2009-12-19 Bruno Haible + + * ko.po: Update from Changwoo Ryu . + +2009-08-16 Bruno Haible + + * Makevars (MSGMERGE_OPTIONS): New variable. + * Makefile.in.in ($(POFILES), .nop.po-update): Use it when invoking + msgmerge. + Suggested by Guillem Jover . + +2009-07-25 Bruno Haible + + * de.po: Update from Karl Eichwalder . + +2009-06-08 Bruno Haible + + * Makefile.in.in (install-data-yes, installdirs-data-yes): Remove + unnecessary mkdir of $(datadir). + Reported by Serge Pavlovsky . + +2009-02-27 Bruno Haible + + * Makefile.in.in (Makefile): Use @SHELL@, not $(SHELL). + Reported by Scott James Remnant . + +2009-01-18 Bruno Haible + + * Makefile.in.in (.po.gmo): Pass --verbose to msgfmt when producing + statistics. + Suggested by Vincent Lefevre . + +2009-01-18 Bruno Haible + + * id.po: Update from Arif E. Nugroho . + * nn.po: Update from Eirik U. Birkeland . + * zh_CN.po: Update from Li Daobing . + +2008-09-28 Bruno Haible + + * Rules-quot (.insert-header.po-update-en): Pass the locale name with + suffix to msginit. Needed for the "Language:" field in the header + entry. + +2008-05-19 Bruno Haible + + * Makevars (XGETTEXT_OPTIONS): Remove the options for proper_name and + proper_name_utf8, now collected automatically through + AM_XGETTEXT_OPTION. + +2008-05-08 Bruno Haible + + * sk.po: Update from Marcel Telka . + * sv.po: Update from Jan Djärv . + +2008-01-10 Bruno Haible + + * pt.po: Update from Helder Correia . + +2007-12-24 Bruno Haible + + * Makefile.in.in ($(POFILES), .nop.po-update): When using msgmerge + 0.18 or newer, pass a --lang option. + +2007-12-24 Bruno Haible + + * Makefile.in.in (.nop.po-update): Put all non-option arguments after + all option arguments, so that the commands work 1. when POSIXLY_CORRECT + is set, 2. on platforms whose getopt facility is POSIX compliant but + not GNU libc compatible, such as Cygwin. + +2007-11-07 Bruno Haible + + * zh_CN.po: Restore the accidentally emptied translations. + Reported by Benno Schulenberg . + +2007-11-07 Bruno Haible + + * gettext-0.17 released. + +2007-10-30 Bruno Haible + + * nb.po: Renamed from no.po. + * LINGUAS: Add nb, remove no. + +2007-10-30 Bruno Haible + + * it.po: Update from Marco Colombo . + +2007-10-28 Bruno Haible + + * Makefile.in.in ($(DOMAIN).pot-update): Consider the + XGETTEXT_EXTRA_OPTIONS variable. + +2007-10-28 Bruno Haible + + * Makefile.in.in (GETTEXT_MACRO_VERSION): Bump to 0.17. + +2007-10-28 Bruno Haible + + * ca.po: Update from Ivan Vilata i Balaguer . + +2007-10-27 Bruno Haible + + * fr.po: Update from Christophe Combelles . + +2007-10-26 Bruno Haible + + * eo.po: Update from D. Dale Gulledge . + * fi.po: Update from Lauri Nurmi . + * ga.po: Update from Kevin Patrick Scannell . + * ja.po: Update from Masahito Yamaga . + * nl.po: Update from Benno Schulenberg . + * pl.po: Update from Rafał Maszkowski . + * sl.po: Update from + Primož Peterlin . + * sv.po: Update from Jan Djärv . + * vi.po: Update from Clytie Siddall . + +2007-10-18 Bruno Haible + + * Makefile.in.in ($(DOMAIN).pot-update): Don't pass the package name + and version to xgettext if the xgettext version is < 0.16.2. + +2007-10-12 Bruno Haible + + * nl.po: Update from Benno Schulenberg . + +2007-10-07 Bruno Haible + + * Makefile.in.in ($(DOMAIN).pot-update): Exclude "GNU " + matches from the libtool script in any directory. + +2007-09-30 Bruno Haible + + * Makefile.in.in ($(DOMAIN).pot-update): Pass the package name and + version to xgettext. + +2007-09-15 Bruno Haible + + * sk.po: Update from Marcel Telka . + * uk.po: Update from Maxim V. Dziumanenko . + * vi.po: Update from Clytie Siddall . + +2007-09-08 Bruno Haible + + Check that the gettext macros and Makefile.in.in are in sync. + * Makefile.in.in (GETTEXT_MACRO_VERSION): New macro. + (check-macro-version): New target. + (all): Depend on it. + Suggested by Daniel Leidert . + +2007-05-30 Bruno Haible + + * pt.po: Update from Helder Correia . + +2007-01-30 Bruno Haible + + * uk.po: Update from Maxim V. Dziumanenko . + +2006-11-27 Bruno Haible + + * gettext-0.16.1 released. + +2006-10-26 Bruno Haible + + * gettext-0.16 released. + +2006-10-02 Bruno Haible + + * fr.po: Update from Christophe Combelles . + * sl.po: Update from + Primož Peterlin . + +2006-09-28 Bruno Haible + + * ca.po: Update from Ivan Vilata i Balaguer . + * id.po: Update from Tedi Heriyanto . + * zh_CN.po: Update from Funda Wang . + +2006-09-10 Bruno Haible + + * Makefile.in.in (install_sh): New variable. + Fixes "make install" errors in packages that have no 'mkinstalldirs' + file and use automake <= 1.9.x, on platforms where 'mkdir' does not + support the -p option. + +2006-08-16 Ralf Wildenhues + + * Makefile.in.in (MKDIR_P): New variable. Needed by $(mkdir_p) with + Automake-1.10. + +2006-07-31 Bruno Haible + + * POTFILES.in: Refer to gnulib-lib/ instead of ../gettext-tools/lib/. + +2006-07-25 Bruno Haible + + * Rules-msvc: Remove file. + * Makefile.msvc.sh: Remove file. + +2006-07-25 Bruno Haible + + * Rules-vms: Remove file. + * Makefile.vms.sh: Remove file. + +2006-07-21 Bruno Haible + + * gettext-0.15 released. + +2006-07-20 Bruno Haible + + * de.po: Update from Karl Eichwalder . + * eo.po: New file, from D. Dale Gulledge . + * fr.po: Update from Michel Robitaille . + * ga.po: Update from Kevin Patrick Scannell . + * ru.po: Update from Oleg S. Tihonov . + * sv.po: Update from Jan Djärv . + * vi.po: Update from Clytie Siddall . + * zh_HK.po: New file, from Abel Cheung . + * zh_TW.po: Update from Abel Cheung . + * LINGUAS: Add eo, zh_HK. + +2006-07-03 Bruno Haible + + * it.po: Update from Marco Colombo . + * ja.po: Update from Masahito Yamaga . + * ko.po: Update from Changwoo Ryu . + * pl.po: Update from Rafał Maszkowski . + * tr.po: Update from Nilgün Belma Bugüner . + +2006-06-12 Bruno Haible + + * Makefile.in.in (mkinstalldirs): New variable. Needed by $(mkdir_p) + if an mkinstalldirs file is present. + +2006-04-17 Bruno Haible + + * Makefile.in.in (MKINSTALLDIRS, mkinstalldirs): Remove variables. + (mkdir_p): New variable. + (install-data, install-data-yes, installdirs-data, + installdirs-data-yes): Use $(mkdir_p) instead of $(mkinstalldirs). + +2006-04-14 Bruno Haible + + Don't ignore the --localedir option from autoconf >= 2.60. + * Makefile.in.in (localedir): Set to the value determined by the + configure script. + +2006-04-07 Bruno Haible + + * es.po: Update from Max de Mendizábal . + * pt.po: Update from Helder Correia . + * sl.po: Update from + Primož Peterlin . + * vi.po: Update from Clytie Siddall . + * zh_TW.po: Update from Abel Cheung . + +2006-04-02 Bruno Haible + + * Makevars (XGETTEXT_OPTIONS): Add keywords 'proper_name' and + 'proper_name_utf8'. + +2005-10-18 Bruno Haible + + * Makevars (USE_MSGCTXT): New macro. + * Makefile.in.in (GMSGFMT, MSGFMT, XGETTEXT): Define according to the + value of $(USE_MSGCTXT). + +2005-07-26 Bruno Haible + + * Makefile.in.in (datarootdir): New variable. + Suggested by Stepan Kasal . + +2005-03-13 Bruno Haible + + * Makefile.in.in (Makefile): Call config.status with calling convention + supported since autoconf-2.50. + Suggested by Alexandre Duret-Lutz . + +2006-06-21 Bruno Haible + + * gettext-0.14.6 released. + +2005-05-23 Bruno Haible + + * gettext-0.14.5 released. + +2005-05-23 Bruno Haible + + * zh_TW.po: Update from Abel Cheung . + +2005-04-11 Bruno Haible + + * gettext-0.14.4 released. + +2005-04-11 Bruno Haible + + * it.po: Update from Marco Colombo . + * vi.po: Update from Clytie Siddall . + +2005-03-14 Bruno Haible + + * gettext-0.14.3 released. + +2005-03-13 Bruno Haible + + * Makefile.in.in (Makefile): Depend on Makevars. + Reported by Alexandre Duret-Lutz . + +2005-03-08 Bruno Haible + + * it.po: Update from Marco Colombo . + * vi.po: Update from Clytie Siddall . + +2005-03-06 Bruno Haible + + * Makefile.in.in (dist2): Fail if some of the files to be distributed + do not exist or cannot be copied. + Suggested by Alexandre Duret-Lutz . + +2005-03-06 Bruno Haible + + * Makefile.in.in (DISTFILES): Remove $(DOMAIN).pot, stamp-po. + (stamp-po): Do nothing if $(DOMAIN).pot does not exist. + (dist2): Depend on stamp-po. If $(DOMAIN).pot exists, distribute also + $(DOMAIN).pot and stamp-po. + Reported by Alexandre Duret-Lutz . + +2005-02-24 Bruno Haible + + * gettext-0.14.2 released. + +2005-02-23 Bruno Haible + + * it.po: Update from Marco Colombo . + +2005-02-21 Bruno Haible + + * vi.po: Update from Clytie Siddall . + +2005-02-11 Bruno Haible + + * ga.po: New file, from Kevin Patrick Scannell . + * LINGUAS: Add ga. + +2005-02-06 Bruno Haible + + * Makefile.in.in (PACKAGE_BUGREPORT): New variable. + ($(DOMAIN).pot-update): If MSGID_BUGS_ADDRESS is empty and + PACKAGE_BUGREPORT is available, use the latter. + Reported by Simon Josefsson . + +2005-01-29 Bruno Haible + + * vi.po: New file, from Clytie Siddall . + * LINGUAS: Add vi. + +2005-01-20 Bruno Haible + + * ru.po: Update from Oleg S. Tihonov . + +2005-01-06 Bruno Haible + + * de.po: Update from Karl Eichwalder . + * id.po: Update from Tedi Heriyanto . + * uk.po: Update from Maxim V. Dziumanenko . + +2004-01-29 Bruno Haible + + * gettext-0.14.1 released. + +2004-01-28 Bruno Haible + + * gettext-0.14 released. + +2004-01-17 Bruno Haible + + * nl.po: Update from Elros Cyriatan . + +2004-01-16 Bruno Haible + + Create en@quot.po when it doesn't exist. + * Makefile.in.in (.SUFFIXES): Add .po-create. + ($(POFILES)): Invoke .po-create target when the PO file does not exist. + (.nop.po-create): New rule. + * Rules-quot (en@quot.po-create, en@boldquot.po-create): New rules. + +2003-12-17 Bruno Haible + + * gettext-0.13.1 released. + +2003-12-17 Bruno Haible + + * fi.po: Update from Sami J. Laine . + +2003-11-30 Bruno Haible + + * gettext-0.13 released. + +2003-11-30 Bruno Haible + + * es.po: Update from Max de Mendizábal . + * sk.po: Update from Marcel Telka . + +2003-11-24 Bruno Haible + + * ca.po: Update from Ivan Vilata i Balaguer . + * ro.po: New file, from Eugen Hoanca . + * sv.po: Update from Jan Djärv . + * tr.po: Update from Nilgün Belma Bugüner . + * LINGUAS: Add ro. + +2003-11-22 Bruno Haible + + * ja.po: Update from Masahito Yamaga . + * ko.po: Update from Changwoo Ryu . + * sv.po: Update from Jan Djärv . + +2003-11-19 Bruno Haible + + * de.po: Update from Karl Eichwalder . + * fr.po: Update from Michel Robitaille . + * pl.po: Update from Rafał Maszkowski . + * sr.po: Update from Danilo Segan . + * zh_CN.po: Update from Funda Wang . + +2003-11-09 Bruno Haible + + * Makefile.in.in (stamp-po): Remake all GMOFILES, not just those + needed in this build. This is necessary because stamp-po persists + across "make distclean". + +2003-11-06 Bruno Haible + + * sr.po: New file, from Danilo Segan. + * LINGUAS: Add sr. + +2003-10-05 Bruno Haible + + * Makevars (XGETTEXT_OPTIONS): Add --flag options. + +2003-09-14 Bruno Haible + + * POTFILES.in: Add ../gettext-tools/lib/closeout.c, src/envsubst.c. + +2003-08-22 Bruno Haible + + * zh_CN.po: New file, from Funda Wang . + * LINGUAS: Add zh_CN. + +2003-07-31 Bruno Haible + + * uk.po: New file, from Volodymyr M. Lisivka . + * LINGUAS: Add uk. + +2003-06-22 Bruno Haible + + * Makefile.in.in: Add a version number, to be used by intltools. + +2003-05-22 Bruno Haible + + * gettext-0.12.1 released. + +2003-05-19 Bruno Haible + + * fi.po: Update from Sami J. Laine . + +2003-05-17 Bruno Haible + + * gettext-0.12 released. + +2003-05-12 Bruno Haible + + * es.po: Update from Max de Mendizábal . + +2003-04-29 Bruno Haible + + * Makefile.in.in (stamp-po, update-po): Avoid infinite recursion if + LINGUAS is empty. + +2003-04-22 Bruno Haible + + * sk.po: Update from Marcel Telka . + +2003-04-12 Bruno Haible + + VMS support. + * Rules-vms: New file. + * Makefile.vms.sh: New file. + +2003-03-17 Bruno Haible + + Native Woe32/MSVC support. + * Makefile.msvc.sh: New file. + * Rules-msvc: New file. + +2003-03-29 Bruno Haible + + * id.po: Update from Tedi Heriyanto . + * pl.po: Update from Rafał Maszkowski . + +2003-02-28 Bruno Haible + + * POTFILES.in: Use references to ../gettext-tools/lib. + +2003-02-28 Bruno Haible + + * Makefile.in.in (mkinstalldirs): Simplify. Prepending + "$(top_builddir)/" in the case of a relative $srcdir is now handled + in gettext.m4. + +2003-02-24 Bruno Haible + + * de.po: Update from Karl Eichwalder . + * ja.po: Update from Masahito Yamaga . + * pl.po: Update from Rafał Maszkowski . + * ru.po: Update from Oleg S. Tihonov . + +2003-02-16 Bruno Haible + + * Makevars (MSGID_BUGS_ADDRESS): New variable. + * Makefile.in.in (DISTFILES.common): Remove Makevars. + (DISTFILES): Add Makevars here. + ($(DOMAIN).pot-update): Pass --msgid-bugs-address to xgettext. + (install-data): Install Makevars.template. Uninstall Makevars. + (uninstall-data): Uninstall Makevars.template. + (dist2): Distribute Makevars.template, in gettext-tools package only. + +2003-02-12 Bruno Haible + + * POTFILES.in: New file. + * Makevars: New file. + + * Makefile.in.in (install-data, installdirs-data, uninstall-data): + Special case package 'gettext-tools'. + (.nop.po-update): Likewise. + (dist2): Distribute also ChangeLog.[0-9] if present. + Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/cs.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/cs.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/cs.po gettext-0.19.7/gettext-runtime/po/cs.po --- gettext-0.19.6/gettext-runtime/po/cs.po 2015-09-11 03:23:55.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/cs.po 2015-12-27 23:26:41.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-06-26 08:34+0200\n" "Last-Translator: Marek Černocký \n" "Language-Team: Czech \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/da.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/da.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/da.po gettext-0.19.7/gettext-runtime/po/da.po --- gettext-0.19.6/gettext-runtime/po/da.po 2015-09-11 03:23:55.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/da.po 2015-12-27 23:26:41.000000000 +0000 @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.19.4-rc1\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-04-26 01:45+0200\n" "Last-Translator: Keld Simonsen \n" "Language-Team: Danish \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/de.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/de.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/de.po gettext-0.19.7/gettext-runtime/po/de.po --- gettext-0.19.6/gettext-runtime/po/de.po 2015-09-11 03:23:55.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/de.po 2015-12-27 23:26:41.000000000 +0000 @@ -79,7 +79,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-06-25 12:17+0200\n" "Last-Translator: Philipp Thomas \n" "Language-Team: German \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/el.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/el.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/el.po gettext-0.19.7/gettext-runtime/po/el.po --- gettext-0.19.6/gettext-runtime/po/el.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/el.po 2015-12-27 23:26:41.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: GNU gettext 0.10.34\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 1998-05-17 13:12+0200\n" "Last-Translator: Simos KSenitellis \n" "Language-Team: Greek \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/en@boldquot.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/en@boldquot.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/en@boldquot.po gettext-0.19.7/gettext-runtime/po/en@boldquot.po --- gettext-0.19.6/gettext-runtime/po/en@boldquot.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/en@boldquot.po 2015-12-27 23:26:41.000000000 +0000 @@ -30,10 +30,10 @@ # msgid "" msgstr "" -"Project-Id-Version: GNU gettext-runtime 0.19.6\n" +"Project-Id-Version: GNU gettext-runtime 0.19.7\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" -"PO-Revision-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" +"PO-Revision-Date: 2015-12-28 08:26+0900\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: en@boldquot\n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/en@quot.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/en@quot.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/en@quot.po gettext-0.19.7/gettext-runtime/po/en@quot.po --- gettext-0.19.6/gettext-runtime/po/en@quot.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/en@quot.po 2015-12-27 23:26:41.000000000 +0000 @@ -27,10 +27,10 @@ # msgid "" msgstr "" -"Project-Id-Version: GNU gettext-runtime 0.19.6\n" +"Project-Id-Version: GNU gettext-runtime 0.19.7\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" -"PO-Revision-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" +"PO-Revision-Date: 2015-12-28 08:26+0900\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: en@quot\n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/eo.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/eo.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/eo.po gettext-0.19.7/gettext-runtime/po/eo.po --- gettext-0.19.6/gettext-runtime/po/eo.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/eo.po 2015-12-27 23:26:41.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.18.2\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2013-10-30 16:17-0300\n" "Last-Translator: Felipe Castro \n" "Language-Team: Esperanto \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/es.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/es.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/es.po gettext-0.19.7/gettext-runtime/po/es.po --- gettext-0.19.6/gettext-runtime/po/es.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/es.po 2015-12-27 23:26:41.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: GNU gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-06-23 22:53+0200\n" "Last-Translator: Antonio Ceballos \n" "Language-Team: Spanish \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/et.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/et.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/et.po gettext-0.19.7/gettext-runtime/po/et.po --- gettext-0.19.6/gettext-runtime/po/et.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/et.po 2015-12-27 23:26:41.000000000 +0000 @@ -5,7 +5,7 @@ msgstr "" "Project-Id-Version: GNU gettext 0.10.37\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2001-04-30 16:25+0200\n" "Last-Translator: Ivar Smolin \n" "Language-Team: Estonian \n" @@ -31,7 +31,7 @@ #: gnulib-lib/getopt.c:619 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous\n" -msgstr "%s: vti `-W %s' on mitmethenduslik\n" +msgstr "%s: vti `%s' on mitmethenduslik\n" #: gnulib-lib/getopt.c:654 gnulib-lib/getopt.c:658 #, fuzzy, c-format Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/fi.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/fi.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/fi.po gettext-0.19.7/gettext-runtime/po/fi.po --- gettext-0.19.6/gettext-runtime/po/fi.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/fi.po 2015-12-27 23:26:41.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-09-01 18:46+0300\n" "Last-Translator: Jorma Karvonen \n" "Language-Team: Finnish \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/fr.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/fr.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/fr.po gettext-0.19.7/gettext-runtime/po/fr.po --- gettext-0.19.6/gettext-runtime/po/fr.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/fr.po 2015-12-27 23:26:41.000000000 +0000 @@ -10,10 +10,10 @@ # msgid "" msgstr "" -"Project-Id-Version: gettext-runtime 0.19.4-rc1\n" +"Project-Id-Version: gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" -"PO-Revision-Date: 2015-03-23 01:26+0100\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" +"PO-Revision-Date: 2015-12-22 23:57+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" @@ -36,9 +36,9 @@ msgstr "%s : l'option « %s » est ambiguë ; choix possibles :" #: gnulib-lib/getopt.c:619 -#, fuzzy, c-format +#, c-format msgid "%s: option '%s' is ambiguous\n" -msgstr "%s : l'option « -W %s » est ambiguë\n" +msgstr "%s : l'option « %s » est ambiguë\n" #: gnulib-lib/getopt.c:654 gnulib-lib/getopt.c:658 #, c-format Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/ga.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/ga.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/ga.po gettext-0.19.7/gettext-runtime/po/ga.po --- gettext-0.19.6/gettext-runtime/po/ga.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/ga.po 2015-12-27 23:26:41.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.16.2-pre5\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2007-10-14 12:15-0500\n" "Last-Translator: Kevin Patrick Scannell \n" "Language-Team: Irish \n" @@ -31,7 +31,7 @@ #: gnulib-lib/getopt.c:619 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous\n" -msgstr "%s: T an rogha `-W %s' dbhroch\n" +msgstr "%s: T an rogha `%s' dbhroch\n" #: gnulib-lib/getopt.c:654 gnulib-lib/getopt.c:658 #, fuzzy, c-format diff -Nru gettext-0.19.6/gettext-runtime/po/gettext-runtime.pot gettext-0.19.7/gettext-runtime/po/gettext-runtime.pot --- gettext-0.19.6/gettext-runtime/po/gettext-runtime.pot 2015-09-11 03:23:55.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/gettext-runtime.pot 2015-12-27 23:26:41.000000000 +0000 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: GNU gettext-runtime 0.19.6\n" +"Project-Id-Version: GNU gettext-runtime 0.19.7\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/gl.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/gl.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/gl.po gettext-0.19.7/gettext-runtime/po/gl.po --- gettext-0.19.6/gettext-runtime/po/gl.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/gl.po 2015-12-27 23:26:41.000000000 +0000 @@ -13,7 +13,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-09-09 16:05+0100\n" "Last-Translator: Leandro Regueiro \n" "Language-Team: Galician \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/hr.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/hr.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/hr.po gettext-0.19.7/gettext-runtime/po/hr.po --- gettext-0.19.6/gettext-runtime/po/hr.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/hr.po 2015-12-27 23:26:41.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: GNU gettext-runtime 0.18\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2012-11-02 14:40+0100\n" "Last-Translator: Tomislav Krznar \n" "Language-Team: Croatian \n" @@ -34,9 +34,9 @@ msgstr "%s: opcija „%s” je višeznačna\n" #: gnulib-lib/getopt.c:619 -#, fuzzy, c-format +#, c-format msgid "%s: option '%s' is ambiguous\n" -msgstr "%s: opcija „-W %s” je višeznačna\n" +msgstr "%s: opcija „%s” je višeznačna\n" #: gnulib-lib/getopt.c:654 gnulib-lib/getopt.c:658 #, c-format Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/hu.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/hu.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/hu.po gettext-0.19.7/gettext-runtime/po/hu.po --- gettext-0.19.6/gettext-runtime/po/hu.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/hu.po 2015-12-27 23:26:41.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: GNU gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-06-23 20:33+0200\n" "Last-Translator: Balázs Úr \n" "Language-Team: Hungarian \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/id.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/id.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/id.po gettext-0.19.7/gettext-runtime/po/id.po --- gettext-0.19.6/gettext-runtime/po/id.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/id.po 2015-12-27 23:26:41.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.18\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2010-05-24 13:00+0700\n" "Last-Translator: Arif E. Nugroho \n" "Language-Team: Indonesian \n" @@ -33,9 +33,9 @@ msgstr "%s: pilihan '%s' rancu\n" #: gnulib-lib/getopt.c:619 -#, fuzzy, c-format +#, c-format msgid "%s: option '%s' is ambiguous\n" -msgstr "%s: pilihan '-W %s' rancu\n" +msgstr "%s: pilihan '%s' rancu\n" #: gnulib-lib/getopt.c:654 gnulib-lib/getopt.c:658 #, c-format Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/it.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/it.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/it.po gettext-0.19.7/gettext-runtime/po/it.po --- gettext-0.19.6/gettext-runtime/po/it.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/it.po 2015-12-27 23:26:41.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-08-05 12:00+0100\n" "Last-Translator: Marco Colombo \n" "Language-Team: Italian \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/ja.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/ja.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/ja.po gettext-0.19.7/gettext-runtime/po/ja.po --- gettext-0.19.6/gettext-runtime/po/ja.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/ja.po 2015-12-27 23:26:41.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: GNU gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-06-24 12:18+0900\n" "Last-Translator: Masahito Yamaga \n" "Language-Team: Japanese \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/ko.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/ko.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/ko.po gettext-0.19.7/gettext-runtime/po/ko.po --- gettext-0.19.6/gettext-runtime/po/ko.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/ko.po 2015-12-27 23:26:41.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: GNU gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-06-28 05:22+0900\n" "Last-Translator: Changwoo Ryu \n" "Language-Team: Korean \n" diff -Nru gettext-0.19.6/gettext-runtime/po/Makefile.in.in gettext-0.19.7/gettext-runtime/po/Makefile.in.in --- gettext-0.19.6/gettext-runtime/po/Makefile.in.in 2015-09-11 01:43:14.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/Makefile.in.in 2015-12-27 22:58:08.000000000 +0000 @@ -6,7 +6,7 @@ # notice and this notice are preserved. This file is offered as-is, # without any warranty. # -# Origin: gettext-0.19.6 +# Origin: gettext-0.19.7 GETTEXT_MACRO_VERSION = 0.19 PACKAGE = @PACKAGE@ @@ -43,6 +43,11 @@ MKDIR_P = @MKDIR_P@ mkdir_p = @mkdir_p@ +# When building gettext-tools, we prefer to use the built programs +# rather than installed programs. However, we can't do that when we +# are cross compiling. +CROSS_COMPILING = @CROSS_COMPILING@ + GMSGFMT_ = @GMSGFMT@ GMSGFMT_no = @GMSGFMT@ GMSGFMT_yes = @GMSGFMT_015@ @@ -430,7 +435,7 @@ .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ - if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/nb.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/nb.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/nb.po gettext-0.19.7/gettext-runtime/po/nb.po --- gettext-0.19.6/gettext-runtime/po/nb.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/nb.po 2015-12-27 23:26:41.000000000 +0000 @@ -1,89 +1,92 @@ -# Norwegian messages for GNU gettext. (bokml dialect) -# Copyright (C) 1996, 1999 Free Software Foundation, Inc. -# Karl Anders ygard , 1996. +# Norwegian Bokmal translations for GNU gettext-runtime package. +# Copyright (C) 1996, 1999, 2015 Free Software Foundation, Inc. +# This file is distributed under the same license as the gettext package. +# Karl Anders Øygard , 1996. +# Johnny A. Solbu , 2015 # msgid "" msgstr "" -"Project-Id-Version: GNU gettext 0.10.37\n" +"Project-Id-Version: gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" -"PO-Revision-Date: 2001-05-09 02:08+02:00\n" -"Last-Translator: Trond Endrestl \n" -"Language-Team: Norwegian-bokml \n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" +"PO-Revision-Date: 2015-12-23 03:17+0100\n" +"Last-Translator: Johnny A. Solbu \n" +"Language-Team: Norwegian Bokmaal \n" "Language: nb\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.6.9\n" #: gnulib-lib/closeout.c:66 msgid "write error" -msgstr "" +msgstr "skrivefeil" #: gnulib-lib/error.c:191 msgid "Unknown system error" msgstr "Ukjent systemfeil" #: gnulib-lib/getopt.c:575 gnulib-lib/getopt.c:604 -#, fuzzy, c-format +#, c-format msgid "%s: option '%s' is ambiguous; possibilities:" -msgstr "%s: flagget %s er flertydig\n" +msgstr "%s: valget «%s» er tvetydig: muligheter:" #: gnulib-lib/getopt.c:619 -#, fuzzy, c-format +#, c-format msgid "%s: option '%s' is ambiguous\n" -msgstr "%s: flagg -W %s er flertydig\n" +msgstr "%s: valget «%s» er tvetydig\n" #: gnulib-lib/getopt.c:654 gnulib-lib/getopt.c:658 -#, fuzzy, c-format +#, c-format msgid "%s: option '--%s' doesn't allow an argument\n" -msgstr "%s: flagget --%s tillater ikke argumenter\n" +msgstr "%s: valget «--%s» tillater ikke argumenter\n" #: gnulib-lib/getopt.c:667 gnulib-lib/getopt.c:672 -#, fuzzy, c-format +#, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" -msgstr "%s: flagget %c%s tillater ikke argumenter\n" +msgstr "%s: valget «%c%s» tillater ikke argumenter\n" #: gnulib-lib/getopt.c:715 gnulib-lib/getopt.c:734 -#, fuzzy, c-format +#, c-format msgid "%s: option '--%s' requires an argument\n" -msgstr "%s: flagget %s krever et argument\n" +msgstr "%s: valget «%s» krever et argument\n" #: gnulib-lib/getopt.c:772 gnulib-lib/getopt.c:775 -#, fuzzy, c-format +#, c-format msgid "%s: unrecognized option '--%s'\n" -msgstr "%s: ukjent flagg --%s\n" +msgstr "%s: ukjent valg «--%s»\n" #: gnulib-lib/getopt.c:783 gnulib-lib/getopt.c:786 -#, fuzzy, c-format +#, c-format msgid "%s: unrecognized option '%c%s'\n" -msgstr "%s: ukjent flagg %c%s\n" +msgstr "%s: ukjent valg «%c%s»\n" #: gnulib-lib/getopt.c:835 gnulib-lib/getopt.c:838 -#, fuzzy, c-format +#, c-format msgid "%s: invalid option -- '%c'\n" -msgstr "%s: ugyldig flagg -- %c\n" +msgstr "%s: ugyldig valg -- «%c»\n" #: gnulib-lib/getopt.c:891 gnulib-lib/getopt.c:908 gnulib-lib/getopt.c:1118 #: gnulib-lib/getopt.c:1136 -#, fuzzy, c-format +#, c-format msgid "%s: option requires an argument -- '%c'\n" -msgstr "%s: flagg krever et argument -- %c\n" +msgstr "%s: valget krever et argument -- «%c»\n" #: gnulib-lib/getopt.c:964 gnulib-lib/getopt.c:980 -#, fuzzy, c-format +#, c-format msgid "%s: option '-W %s' is ambiguous\n" -msgstr "%s: flagg -W %s er flertydig\n" +msgstr "%s: valget «-W %s» er tvetydig\n" #: gnulib-lib/getopt.c:1004 gnulib-lib/getopt.c:1022 -#, fuzzy, c-format +#, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" -msgstr "%s: flagg -W %s tillater ikke et argument\n" +msgstr "%s: valget «-W %s» tillater ikke et argument\n" #: gnulib-lib/getopt.c:1043 gnulib-lib/getopt.c:1061 -#, fuzzy, c-format +#, c-format msgid "%s: option '-W %s' requires an argument\n" -msgstr "%s: flagget %s krever et argument\n" +msgstr "%s: valget «%s» krever et argument\n" #: gnulib-lib/xmalloc.c:38 #, c-format @@ -98,6 +101,10 @@ "This is free software: you are free to change and redistribute it.\n" "There is NO WARRANTY, to the extent permitted by law.\n" msgstr "" +"Opphavsrett © %s Free Software Foundation, Inc.\n" +"Lisens GPLv3 +: GNU GPL versjon 3 eller nyere \n" +"Dette er Fri programvare: du står fritt til å endre og redistribuere det.\n" +"Det er INGEN GARANTI, i den grad loven tillater.\n" #: src/envsubst.c:118 src/gettext.c:140 src/ngettext.c:130 #, c-format @@ -107,7 +114,7 @@ #. This is a proper name. See the gettext manual, section Names. #: src/envsubst.c:118 msgid "Bruno Haible" -msgstr "" +msgstr "Bruno Haible" #: src/envsubst.c:127 src/gettext.c:158 src/ngettext.c:142 #, c-format @@ -120,44 +127,44 @@ msgstr "mangler argumenter" #: src/envsubst.c:171 src/gettext.c:239 src/ngettext.c:208 -#, fuzzy, c-format +#, c-format msgid "Try '%s --help' for more information.\n" -msgstr "Prv %s --help for mer informasjon.\n" +msgstr "Prøv «%s --help» for mer informasjon.\n" #: src/envsubst.c:176 #, c-format, no-wrap msgid "Usage: %s [OPTION] [SHELL-FORMAT]\n" -msgstr "" +msgstr "Bruk: %s [VALG] [SHELL-FORMAT]\n" #: src/envsubst.c:181 #, c-format, no-wrap msgid "Substitutes the values of environment variables.\n" -msgstr "" +msgstr "Erstatter miljøvariabelverdiene.\n" #: src/envsubst.c:185 #, c-format, no-wrap msgid "Operation mode:\n" -msgstr "" +msgstr "Driftsmodus:\n" #: src/envsubst.c:188 #, c-format, no-wrap msgid " -v, --variables output the variables occurring in SHELL-FORMAT\n" -msgstr "" +msgstr " -v, --variables skriver ut variablene som forekommer i SHELL-FORMAT\n" #: src/envsubst.c:192 #, c-format, no-wrap msgid "Informative output:\n" -msgstr "" +msgstr "Informativ utskrift:\n" #: src/envsubst.c:195 #, c-format, no-wrap msgid " -h, --help display this help and exit\n" -msgstr "" +msgstr " -h, --help vis denne hjelpeteksten og avslutt\n" #: src/envsubst.c:198 #, c-format, no-wrap msgid " -V, --version output version information and exit\n" -msgstr "" +msgstr " -V, --version skriv ut versjonsinformasjon og avslutt\n" #: src/envsubst.c:202 #, c-format, no-wrap @@ -169,6 +176,12 @@ "substituted; otherwise all environment variables references occurring in\n" "standard input are substituted.\n" msgstr "" +"I normal driftsmodus blir standard inndata kopiert til standard utdata\n" +"med referanser til miljøvariabler på formen $VARIABEL eller ${VARIABEL}\n" +"erstattes med de tilsvarende verdier. Hvis en SHELL-FORMAT er gitt,\n" +"bare de miljøvariabler som er referert i SHELL-FORMAT er\n" +"byttet; ellers alle miljøvariablene referanser skjer i\n" +"standard inngang er byttet ut.\n" #: src/envsubst.c:211 #, c-format, no-wrap @@ -176,20 +189,23 @@ "When --variables is used, standard input is ignored, and the output consists\n" "of the environment variables that are referenced in SHELL-FORMAT, one per line.\n" msgstr "" +"Når --variables blir brukt blir standard inndata ignorert og utdata består\n" +"av miljøvariabler som er referert i SHELL-FORMAT, én per linje.\n" #. TRANSLATORS: The placeholder indicates the bug-reporting address #. for this package. Please add _another line_ saying #. "Report translation bugs to <...>\n" with the address for translation #. bugs (typically your translation team's web or email address). #: src/envsubst.c:219 src/gettext.c:280 src/ngettext.c:246 -#, fuzzy msgid "Report bugs to .\n" -msgstr "Rapporter feil til .\n" +msgstr "" +"Rapporter feil til .\n" +"Rapporter oversettelsesfeil til \n" #: src/envsubst.c:442 #, c-format msgid "error while reading \"%s\"" -msgstr "feil under lesing av %s" +msgstr "feil under lesing av «%s»" #: src/envsubst.c:443 msgid "standard input" @@ -198,7 +214,7 @@ #. This is a proper name. See the gettext manual, section Names. #: src/gettext.c:140 src/ngettext.c:130 msgid "Ulrich Drepper" -msgstr "" +msgstr "Ulrich Drepper" #: src/gettext.c:244 #, c-format, no-wrap @@ -206,14 +222,16 @@ "Usage: %s [OPTION] [[TEXTDOMAIN] MSGID]\n" "or: %s [OPTION] -s [MSGID]...\n" msgstr "" +"Bruk: %s [VALG] [[TEKSTDOMENE] MSGID]\n" +"eller: %s [VALG] -s [MSGID]...\n" #: src/gettext.c:250 #, c-format, no-wrap msgid "Display native language translation of a textual message.\n" -msgstr "" +msgstr "Vis morsmåloversettelse av en tekstmelding.\n" #: src/gettext.c:254 -#, fuzzy, c-format, no-wrap +#, c-format, no-wrap msgid "" " -d, --domain=TEXTDOMAIN retrieve translated messages from TEXTDOMAIN\n" " -e enable expansion of some escape sequences\n" @@ -224,18 +242,17 @@ " [TEXTDOMAIN] MSGID retrieve translated message corresponding\n" " to MSGID from TEXTDOMAIN\n" msgstr "" -"Bruk: %s [FLAGG] [[[TEXTDOMAIN] MSGID] | [-s [MSGID]...]]\n" -" -d, --domain=TEXTDOMAIN hent oversatte meldinger fra TEXTDOMAIN\n" -" -e sl p ekspandering av noen escape-sekvenser\n" +" -d, --domain=TEKSTDOMENE hent oversatte meldinger fra TEKSTDOMENE\n" +" -e slå på ekspandering av noen escape-sekvenser\n" " -E (tillatt av kompatibilitetshensyn)\n" " -h, --help vis denne hjelpeteksten og avslutt\n" -" -n undertrykk etterflgende linjeskift\n" +" -n undertrykk etterfølgende linjeskift\n" " -v, --version vis programversjon og avslutt\n" -" [TEXTDOMAIN] MSGID hent oversatt melding som stemmer overens med MSGID\n" -" fra TEXTDOMAIN\n" +" [TEKSTDOMENE] MSGID hent oversatt melding som stemmer overens med MSGID\n" +" fra TEKSTDOMENE\n" #: src/gettext.c:265 -#, fuzzy, c-format, no-wrap +#, c-format, no-wrap msgid "" "If the TEXTDOMAIN parameter is not given, the domain is determined from the\n" "environment variable TEXTDOMAIN. If the message catalog is not found in the\n" @@ -246,20 +263,19 @@ "found in the selected catalog are translated.\n" "Standard search directory: %s\n" msgstr "" -"\n" -"Dersom TEXTDOMAIN-parameteren ikke er gitt, blir domenet valgt fra\n" -"miljvariabelen TEXTDOMAIN. Dersom meldingskatalogen ikke finnes i den\n" +"Dersom TEKSTDOMENE-parameteren ikke er gitt, blir domenet valgt fra\n" +"miljøvariabelen TEXTDOMAIN. Dersom meldingskatalogen ikke finnes i den\n" "vanlige katalogen, kan en annen katalog spesifiseres ved hjelp av\n" -"miljvariabelen TEXTDOMAIN.\n" -"Nr flagget -s blir brukt, oppfrer programmet seg som kommandoen echo.\n" +"miljøvariabelen TEXTDOMAINDIR.\n" +"Når flagget -s blir brukt, oppfører programmet seg som kommandoen «echo».\n" "Programmet kopierer imidlertid ikke sine argumenter til standard ut. I\n" -"stedet blir funne meldinger i den valgte katalogen oversatt.\n" -"Standard skekatalog er: %s\n" +"stedet blir meldinger funnet i den valgte katalogen oversatt.\n" +"Standard søkekatalog er: %s\n" #: src/ngettext.c:213 #, c-format, no-wrap msgid "Usage: %s [OPTION] [TEXTDOMAIN] MSGID MSGID-PLURAL COUNT\n" -msgstr "" +msgstr "Bruk: %s [VALG] [TEKSTDOMENE] MSGID MSGID-FLERTALL ANTALL\n" #: src/ngettext.c:218 #, c-format, no-wrap @@ -267,9 +283,11 @@ "Display native language translation of a textual message whose grammatical\n" "form depends on a number.\n" msgstr "" +"Vis morsmåloversettelse av en tekstmelding hvis grammatiske\n" +"form avhenger av et tall.\n" #: src/ngettext.c:223 -#, fuzzy, c-format, no-wrap +#, c-format, no-wrap msgid "" " -d, --domain=TEXTDOMAIN retrieve translated message from TEXTDOMAIN\n" " -e enable expansion of some escape sequences\n" @@ -280,18 +298,17 @@ " MSGID MSGID-PLURAL translate MSGID (singular) / MSGID-PLURAL (plural)\n" " COUNT choose singular/plural form based on this value\n" msgstr "" -"Bruk: %s [FLAGG] [TEXTDOMAIN] MSGID MSGID-PLURAL COUNT\n" -" -d, --domain=TEXTDOMAIN hent oversatte meldinger fra TEXTDOMAIN\n" -" -e sl p ekspandering av noen escape-sekvenser\n" +" -d, --domain=TEKSTDOMENE hent oversatte meldinger fra TEKSTDOMENE\n" +" -e slå på ekspandering av noen escape-sekvenser\n" " -E (tillatt av kompatibilitetshensyn)\n" " -h, --help vis denne hjelpeteksten og avslutt\n" " -v, --version vis programversjon og avslutt\n" -" [TEXTDOMAIN] hent oversatt melding fra TEXTDOMAIN\n" -" MSGID MSGID-PLURAL oversett MSGID (entall) / MSGID-PLURAL (flertall)\n" -" COUNT velg entalls-/flertallsform basert p denne verdien\n" +" [TEKSTDOMENE] hent oversatt melding fra TEKSTDOMENE\n" +" MSGID MSGID-FLERTALL oversett MSGID (entall) / MSGID-FLERTALL (flertall)\n" +" COUNT velg entalls-/flertallsform basert på denne verdien\n" #: src/ngettext.c:234 -#, fuzzy, c-format, no-wrap +#, c-format, no-wrap msgid "" "If the TEXTDOMAIN parameter is not given, the domain is determined from the\n" "environment variable TEXTDOMAIN. If the message catalog is not found in the\n" @@ -299,12 +316,11 @@ "variable TEXTDOMAINDIR.\n" "Standard search directory: %s\n" msgstr "" -"\n" -"Dersom TEXTDOMAIN-parameteren ikke er gitt, blir domenet valgt fra\n" -"miljvariabelen TEXTDOMAIN. Dersom meldingskatalogen ikke finnes i den\n" +"Dersom TEKSTDOMENE-parameteren ikke er gitt, blir domenet valgt fra\n" +"miljøvariabelen TEXTDOMAIN. Dersom meldingskatalogen ikke finnes i den\n" "vanlige katalogen, kan en annen katalog spesifiseres ved hjelp av\n" -"miljvariabelen TEXTDOMAINDIR.\n" -"Standard skekatalog er: %s\n" +"miljøvariabelen TEXTDOMAINDIR.\n" +"Standard søkekatalog er: %s\n" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: ulovlig flagg -- %c\n" @@ -323,34 +339,34 @@ #~ "finnes\n" #~ "INGEN garanti; ikke engang for SALGBARHET eller SKIKKETHET FOR ET " #~ "BESTEMT\n" -#~ "FORML.\n" +#~ "FORMÅL.\n" #~ msgid "error while opening \"%s\" for reading" -#~ msgstr "feil under pning av %s for lesing" +#~ msgstr "feil under åpning av «%s» for lesing" #, fuzzy #~ msgid "cannot open backup file \"%s\" for writing" -#~ msgstr "feil under pning av %s for skriving" +#~ msgstr "feil under åpning av «%s» for skriving" #, fuzzy #~ msgid "error reading \"%s\"" -#~ msgstr "feil under lesing av %s" +#~ msgstr "feil under lesing av «%s»" #, fuzzy #~ msgid "error writing \"%s\"" -#~ msgstr "feil under skriving av filen %s" +#~ msgstr "feil under skriving av filen «%s»" #, fuzzy #~ msgid "error after reading \"%s\"" -#~ msgstr "feil under lesing av %s" +#~ msgstr "feil under lesing av «%s»" #, fuzzy #~ msgid "cannot create pipe" -#~ msgstr "kan ikke opprette utfilen %s" +#~ msgstr "kan ikke opprette utfilen «%s»" #, fuzzy #~ msgid "number of format specifications in 'msgid' and '%s' does not match" -#~ msgstr "antallet format-spesifiseringer i msgid og msgstr stemmer ikke" +#~ msgstr "antallet format-spesifiseringer i «msgid» og «msgstr» stemmer ikke" #, fuzzy #~ msgid "" @@ -385,7 +401,7 @@ #, fuzzy #~ msgid "format specifications in 'msgid' and '%s' are not equivalent" -#~ msgstr "antallet format-spesifiseringer i msgid og msgstr stemmer ikke" +#~ msgstr "antallet format-spesifiseringer i «msgid» og «msgstr» stemmer ikke" #, fuzzy #~ msgid "format specifications in '%s' are not a subset of those in 'msgid'" @@ -395,13 +411,13 @@ #~ msgid "" #~ "format specifications in 'msgid' expect a mapping, those in '%s' expect a " #~ "tuple" -#~ msgstr "antallet format-spesifiseringer i msgid og msgstr stemmer ikke" +#~ msgstr "antallet format-spesifiseringer i «msgid» og «msgstr» stemmer ikke" #, fuzzy #~ msgid "" #~ "format specifications in 'msgid' expect a tuple, those in '%s' expect a " #~ "mapping" -#~ msgstr "antallet format-spesifiseringer i msgid og msgstr stemmer ikke" +#~ msgstr "antallet format-spesifiseringer i «msgid» og «msgstr» stemmer ikke" #, fuzzy #~ msgid "" @@ -441,12 +457,12 @@ #~ " -s, --sort-output generate sorted output\n" #~ " -F, --sort-by-file sort output by file location\n" #~ msgstr "" -#~ "Bruksmte: %s [FLAGG] def.po ref.po\n" -#~ "Obligatoriske argumenter til lange flagg er ogs obligatoriske for korte " +#~ "Bruksmåte: %s [FLAGG] def.po ref.po\n" +#~ "Obligatoriske argumenter til lange flagg er også obligatoriske for korte " #~ "flagg.\n" #~ " -C --compendium=FIL ytterligere bibliotek med oversettelser,\n" #~ " kan bli angitt mer enn en gang\n" -#~ " -D, --directory=KATALOG legge KATALOG til skelisten over innfiler\n" +#~ " -D, --directory=KATALOG legge KATALOG til søkelisten over innfiler\n" #~ " -e, --no-escape ikke bruke C-escapekoder i utdata " #~ "(standard)\n" #~ " -E, --escape bruk C-escaper i utdata, ingen utvidede " @@ -455,8 +471,8 @@ #~ " -h, --help vise denne hjelpen og avslutte\n" #~ " -i, --indent innrykk i utdata\n" #~ " -o, --output-file=FIL resultat vil bli skrevet til FIL\n" -#~ " --no-location undertrykk #: filnavn:linje-linjer\n" -#~ " --add-location bevar #: filnavn:linje-linjer (standard)\n" +#~ " --no-location undertrykk «#: filnavn:linje»-linjer\n" +#~ " --add-location bevar «#: filnavn:linje»-linjer (standard)\n" #~ " --strict lag streng Uniforum-konform utdata\n" #~ " -v, --verbose gi mer fyldige meldinger\n" #~ " -V, --version skriv ut programversjon og avslutt\n" @@ -490,11 +506,11 @@ #~ "satt\n" #~ "\n" #~ "Finne meldinger som er felles i to eller flere av de angitt PO-filene.\n" -#~ "Ved bruke --more-than-flagget, kan kt fellesskap bli anmodet\n" -#~ "fr meldingene blir skrevet ut. Omvendt kan --less-than-flagget brukes\n" -#~ "for angi mindre fellesskap for meldingene blir skrevet ut (eks.\n" +#~ "Ved å bruke --more-than-flagget, kan økt fellesskap bli anmodet\n" +#~ "før meldingene blir skrevet ut. Omvendt kan --less-than-flagget brukes\n" +#~ "for å angi mindre fellesskap for meldingene blir skrevet ut (eks.\n" #~ "--less-than=2 vil bare skrive ut unike meldinger). Oversettelser,\n" -#~ "kommentarer og uttrekkskommentarer bevares, men bare fra den frste\n" +#~ "kommentarer og uttrekkskommentarer bevares, men bare fra den første\n" #~ "PO-filen som definerer dem. Filposisjonene fra alle PO-filene vil\n" #~ "bli bevart.\n" @@ -522,11 +538,11 @@ #~ "satt\n" #~ "\n" #~ "Finne meldinger som er felles i to eller flere av de angitt PO-filene.\n" -#~ "Ved bruke --more-than-flagget, kan kt fellesskap bli anmodet\n" -#~ "fr meldingene blir skrevet ut. Omvendt kan --less-than-flagget brukes\n" -#~ "for angi mindre fellesskap for meldingene blir skrevet ut (eks.\n" +#~ "Ved å bruke --more-than-flagget, kan økt fellesskap bli anmodet\n" +#~ "før meldingene blir skrevet ut. Omvendt kan --less-than-flagget brukes\n" +#~ "for å angi mindre fellesskap for meldingene blir skrevet ut (eks.\n" #~ "--less-than=2 vil bare skrive ut unike meldinger). Oversettelser,\n" -#~ "kommentarer og uttrekkskommentarer bevares, men bare fra den frste\n" +#~ "kommentarer og uttrekkskommentarer bevares, men bare fra den første\n" #~ "PO-filen som definerer dem. Filposisjonene fra alle PO-filene vil\n" #~ "bli bevart.\n" @@ -557,12 +573,12 @@ #~ " -s, --sort-output generate sorted output\n" #~ " -F, --sort-by-file sort output by file location\n" #~ msgstr "" -#~ "Bruksmte: %s [FLAGG] def.po ref.po\n" -#~ "Obligatoriske argumenter til lange flagg er ogs obligatoriske for korte " +#~ "Bruksmåte: %s [FLAGG] def.po ref.po\n" +#~ "Obligatoriske argumenter til lange flagg er også obligatoriske for korte " #~ "flagg.\n" #~ " -C --compendium=FIL ytterligere bibliotek med oversettelser,\n" #~ " kan bli angitt mer enn en gang\n" -#~ " -D, --directory=KATALOG legge KATALOG til skelisten over innfiler\n" +#~ " -D, --directory=KATALOG legge KATALOG til søkelisten over innfiler\n" #~ " -e, --no-escape ikke bruke C-escapekoder i utdata " #~ "(standard)\n" #~ " -E, --escape bruk C-escaper i utdata, ingen utvidede " @@ -571,8 +587,8 @@ #~ " -h, --help vise denne hjelpen og avslutte\n" #~ " -i, --indent innrykk i utdata\n" #~ " -o, --output-file=FIL resultat vil bli skrevet til FIL\n" -#~ " --no-location undertrykk #: filnavn:linje-linjer\n" -#~ " --add-location bevar #: filnavn:linje-linjer (standard)\n" +#~ " --no-location undertrykk «#: filnavn:linje»-linjer\n" +#~ " --add-location bevar «#: filnavn:linje»-linjer (standard)\n" #~ " --strict lag streng Uniforum-konform utdata\n" #~ " -v, --verbose gi mer fyldige meldinger\n" #~ " -V, --version skriv ut programversjon og avslutt\n" @@ -582,7 +598,7 @@ #~ msgstr "ingen innfiler angitt" #~ msgid "exactly 2 input files required" -#~ msgstr "trenger nyaktig to innfiler" +#~ msgstr "trenger nøyaktig to innfiler" #, fuzzy #~ msgid "" @@ -596,23 +612,23 @@ #~ "match cannot be found, fuzzy matching is used to produce better " #~ "diagnostics.\n" #~ msgstr "" -#~ "Bruksmte: %s [FLAGG] def.po ref.po\n" -#~ "Obligatoriske argumenter til lange flagg er ogs obligatoriske for korte " +#~ "Bruksmåte: %s [FLAGG] def.po ref.po\n" +#~ "Obligatoriske argumenter til lange flagg er også obligatoriske for korte " #~ "flagg.\n" -#~ " -D, --directory=KATALOG legge til KATALOG til skelisten for " +#~ " -D, --directory=KATALOG legge til KATALOG til søkelisten for " #~ "innfiler\n" #~ " -h, --help vise denne hjelpen og avslutte\n" #~ " -V, --version skrive ut programversjon og avslutte\n" #~ "\n" -#~ "Sammenligne to Uniforum-aktige .po-filer for sjekke at begge " +#~ "Sammenligne to Uniforum-aktige .po-filer for å sjekke at begge " #~ "inneholder\n" #~ "det samme settet med msgid-strenger. def.po-filen er en eksisterende PO-" #~ "fil\n" #~ "med de gamle oversettelsene. ref.po-filen er det sist lagde PO(T)-filen\n" -#~ "(som regel av xgettext). Dette er nyttig for sjekke at du har " +#~ "(som regel av xgettext). Dette er nyttig for å sjekke at du har " #~ "oversatt\n" -#~ "alle meldingene i programmet ditt. Nr en eksakt overensstemmelse ikke\n" -#~ "finnes, blir fuzzy-sammenligning brukt for f en bedre diagnostikk.\n" +#~ "alle meldingene i programmet ditt. Når en eksakt overensstemmelse ikke\n" +#~ "finnes, blir «fuzzy»-sammenligning brukt for å få en bedre diagnostikk.\n" #~ msgid "this message is used but not defined..." #~ msgstr "denne meldingen er brukt, men ikke definert..." @@ -632,7 +648,7 @@ #~ msgstr[1] "fant %d fatale feil" #~ msgid "at least two files must be specified" -#~ msgstr "minst to filer m angis" +#~ msgstr "minst to filer må angis" #, fuzzy #~ msgid "" @@ -657,11 +673,11 @@ #~ "satt\n" #~ "\n" #~ "Finne meldinger som er felles i to eller flere av de angitt PO-filene.\n" -#~ "Ved bruke --more-than-flagget, kan kt fellesskap bli anmodet\n" -#~ "fr meldingene blir skrevet ut. Omvendt kan --less-than-flagget brukes\n" -#~ "for angi mindre fellesskap for meldingene blir skrevet ut (eks.\n" +#~ "Ved å bruke --more-than-flagget, kan økt fellesskap bli anmodet\n" +#~ "før meldingene blir skrevet ut. Omvendt kan --less-than-flagget brukes\n" +#~ "for å angi mindre fellesskap for meldingene blir skrevet ut (eks.\n" #~ "--less-than=2 vil bare skrive ut unike meldinger). Oversettelser,\n" -#~ "kommentarer og uttrekkskommentarer bevares, men bare fra den frste\n" +#~ "kommentarer og uttrekkskommentarer bevares, men bare fra den første\n" #~ "PO-filen som definerer dem. Filposisjonene fra alle PO-filene vil\n" #~ "bli bevart.\n" @@ -689,11 +705,11 @@ #~ "satt\n" #~ "\n" #~ "Finne meldinger som er felles i to eller flere av de angitt PO-filene.\n" -#~ "Ved bruke --more-than-flagget, kan kt fellesskap bli anmodet\n" -#~ "fr meldingene blir skrevet ut. Omvendt kan --less-than-flagget brukes\n" -#~ "for angi mindre fellesskap for meldingene blir skrevet ut (eks.\n" +#~ "Ved å bruke --more-than-flagget, kan økt fellesskap bli anmodet\n" +#~ "før meldingene blir skrevet ut. Omvendt kan --less-than-flagget brukes\n" +#~ "for å angi mindre fellesskap for meldingene blir skrevet ut (eks.\n" #~ "--less-than=2 vil bare skrive ut unike meldinger). Oversettelser,\n" -#~ "kommentarer og uttrekkskommentarer bevares, men bare fra den frste\n" +#~ "kommentarer og uttrekkskommentarer bevares, men bare fra den første\n" #~ "PO-filen som definerer dem. Filposisjonene fra alle PO-filene vil\n" #~ "bli bevart.\n" @@ -721,12 +737,12 @@ #~ " --omit-header don't write header with `msgid \"\"' " #~ "entry\n" #~ msgstr "" -#~ "Bruksmte: %s [FLAGG] def.po ref.po\n" -#~ "Obligatoriske argumenter til lange flagg er ogs obligatoriske for korte " +#~ "Bruksmåte: %s [FLAGG] def.po ref.po\n" +#~ "Obligatoriske argumenter til lange flagg er også obligatoriske for korte " #~ "flagg.\n" #~ " -C --compendium=FIL ytterligere bibliotek med oversettelser,\n" #~ " kan bli angitt mer enn en gang\n" -#~ " -D, --directory=KATALOG legge KATALOG til skelisten over innfiler\n" +#~ " -D, --directory=KATALOG legge KATALOG til søkelisten over innfiler\n" #~ " -e, --no-escape ikke bruke C-escapekoder i utdata " #~ "(standard)\n" #~ " -E, --escape bruk C-escaper i utdata, ingen utvidede " @@ -735,8 +751,8 @@ #~ " -h, --help vise denne hjelpen og avslutte\n" #~ " -i, --indent innrykk i utdata\n" #~ " -o, --output-file=FIL resultat vil bli skrevet til FIL\n" -#~ " --no-location undertrykk #: filnavn:linje-linjer\n" -#~ " --add-location bevar #: filnavn:linje-linjer (standard)\n" +#~ " --no-location undertrykk «#: filnavn:linje»-linjer\n" +#~ " --add-location bevar «#: filnavn:linje»-linjer (standard)\n" #~ " --strict lag streng Uniforum-konform utdata\n" #~ " -v, --verbose gi mer fyldige meldinger\n" #~ " -V, --version skriv ut programversjon og avslutt\n" @@ -760,12 +776,12 @@ #~ " -s, --sort-output generate sorted output\n" #~ " -F, --sort-by-file sort output by file location\n" #~ msgstr "" -#~ "Bruksmte: %s [FLAGG] def.po ref.po\n" -#~ "Obligatoriske argumenter til lange flagg er ogs obligatoriske for korte " +#~ "Bruksmåte: %s [FLAGG] def.po ref.po\n" +#~ "Obligatoriske argumenter til lange flagg er også obligatoriske for korte " #~ "flagg.\n" #~ " -C --compendium=FIL ytterligere bibliotek med oversettelser,\n" #~ " kan bli angitt mer enn en gang\n" -#~ " -D, --directory=KATALOG legge KATALOG til skelisten over innfiler\n" +#~ " -D, --directory=KATALOG legge KATALOG til søkelisten over innfiler\n" #~ " -e, --no-escape ikke bruke C-escapekoder i utdata " #~ "(standard)\n" #~ " -E, --escape bruk C-escaper i utdata, ingen utvidede " @@ -774,8 +790,8 @@ #~ " -h, --help vise denne hjelpen og avslutte\n" #~ " -i, --indent innrykk i utdata\n" #~ " -o, --output-file=FIL resultat vil bli skrevet til FIL\n" -#~ " --no-location undertrykk #: filnavn:linje-linjer\n" -#~ " --add-location bevar #: filnavn:linje-linjer (standard)\n" +#~ " --no-location undertrykk «#: filnavn:linje»-linjer\n" +#~ " --add-location bevar «#: filnavn:linje»-linjer (standard)\n" #~ " --strict lag streng Uniforum-konform utdata\n" #~ " -v, --verbose gi mer fyldige meldinger\n" #~ " -V, --version skriv ut programversjon og avslutt\n" @@ -786,7 +802,7 @@ #, fuzzy #~ msgid "exactly one input file required" -#~ msgstr "trenger nyaktig to innfiler" +#~ msgstr "trenger nøyaktig to innfiler" #, fuzzy #~ msgid "missing command name" @@ -798,7 +814,7 @@ #, fuzzy #~ msgid "at least one sed script must be specified" -#~ msgstr "minst to filer m angis" +#~ msgstr "minst to filer må angis" #, fuzzy #~ msgid "" @@ -820,12 +836,12 @@ #~ " -s, --sort-output generate sorted output\n" #~ " -F, --sort-by-file sort output by file location\n" #~ msgstr "" -#~ "Bruksmte: %s [FLAGG] def.po ref.po\n" -#~ "Obligatoriske argumenter til lange flagg er ogs obligatoriske for korte " +#~ "Bruksmåte: %s [FLAGG] def.po ref.po\n" +#~ "Obligatoriske argumenter til lange flagg er også obligatoriske for korte " #~ "flagg.\n" #~ " -C --compendium=FIL ytterligere bibliotek med oversettelser,\n" #~ " kan bli angitt mer enn en gang\n" -#~ " -D, --directory=KATALOG legge KATALOG til skelisten over innfiler\n" +#~ " -D, --directory=KATALOG legge KATALOG til søkelisten over innfiler\n" #~ " -e, --no-escape ikke bruke C-escapekoder i utdata " #~ "(standard)\n" #~ " -E, --escape bruk C-escaper i utdata, ingen utvidede " @@ -834,8 +850,8 @@ #~ " -h, --help vise denne hjelpen og avslutte\n" #~ " -i, --indent innrykk i utdata\n" #~ " -o, --output-file=FIL resultat vil bli skrevet til FIL\n" -#~ " --no-location undertrykk #: filnavn:linje-linjer\n" -#~ " --add-location bevar #: filnavn:linje-linjer (standard)\n" +#~ " --no-location undertrykk «#: filnavn:linje»-linjer\n" +#~ " --add-location bevar «#: filnavn:linje»-linjer (standard)\n" #~ " --strict lag streng Uniforum-konform utdata\n" #~ " -v, --verbose gi mer fyldige meldinger\n" #~ " -V, --version skriv ut programversjon og avslutt\n" @@ -873,30 +889,30 @@ #~ msgstr[1] "denne meldingen er brukt, men ikke definert i %s" #~ msgid "`msgid' and `msgid_plural' entries do not both begin with '\\n'" -#~ msgstr "msgid- og msgid_plural-innslagene begynner ikke med `\\n'" +#~ msgstr "«msgid»- og «msgid_plural»-innslagene begynner ikke med `\\n'" #~ msgid "`msgid' and `msgstr[%u]' entries do not both begin with '\\n'" -#~ msgstr "msgid- og msgstr[%u]-innslagene begynner ikke med `\\n'" +#~ msgstr "«msgid»- og «msgstr[%u]»-innslagene begynner ikke med `\\n'" #~ msgid "`msgid' and `msgstr' entries do not both begin with '\\n'" -#~ msgstr "msgid- og msgstr-innslagene begynner ikke med `\\n'" +#~ msgstr "«msgid»- og «msgstr»-innslagene begynner ikke med `\\n'" #~ msgid "`msgid' and `msgid_plural' entries do not both end with '\\n'" -#~ msgstr "msgid- og msgstr[%u]-innslagene slutter ikke med `\\n'" +#~ msgstr "«msgid»- og «msgstr[%u]»-innslagene slutter ikke med `\\n'" #~ msgid "`msgid' and `msgstr[%u]' entries do not both end with '\\n'" -#~ msgstr "msgid- og msgstr[%u]-innslagene slutter ikke med `\\n'" +#~ msgstr "«msgid»- og «msgstr[%u]»-innslagene slutter ikke med `\\n'" #~ msgid "`msgid' and `msgstr' entries do not both end with '\\n'" -#~ msgstr "msgid- og msgstr-innslagene slutter ikke med `\\n'" +#~ msgstr "«msgid»- og «msgstr»-innslagene slutter ikke med `\\n'" #, fuzzy #~ msgid "headerfield `%s' missing in header\n" -#~ msgstr "filhodefelt %s mangler i filhode" +#~ msgstr "filhodefelt «%s» mangler i filhode" #, fuzzy #~ msgid "header field `%s' should start at beginning of line\n" -#~ msgstr "filhodefelt %s skulle ha startet ved begynnelsen av linjen" +#~ msgstr "filhodefelt «%s» skulle ha startet ved begynnelsen av linjen" #, fuzzy #~ msgid "some header fields still have the initial default value\n" @@ -904,7 +920,7 @@ #, fuzzy #~ msgid "field `%s' still has initial default value\n" -#~ msgstr "feltet %s har fremdeles sin forvalgte verdi" +#~ msgstr "feltet «%s» har fremdeles sin forvalgte verdi" #, fuzzy #~ msgid "warning: PO file header missing or invalid\n" @@ -925,25 +941,25 @@ #~ "%*s advarsel: tegnsettkonvertering vil ikke virke" #~ msgid "domain name \"%s\" not suitable as file name" -#~ msgstr "domenenavnet %s passer ikke som filnavn" +#~ msgstr "domenenavnet «%s» passer ikke som filnavn" #~ msgid "domain name \"%s\" not suitable as file name: will use prefix" -#~ msgstr "domenenavnet %s passer ikke som filnavn: bruker prefiks" +#~ msgstr "domenenavnet «%s» passer ikke som filnavn: bruker prefiks" #~ msgid "`domain %s' directive ignored" -#~ msgstr "nkkelord domain %s ignorert" +#~ msgstr "nøkkelord «domain %s» ignorert" #~ msgid "duplicate message definition" #~ msgstr "duplisert definisjon av melding" #~ msgid "...this is the location of the first definition" -#~ msgstr "... dette er lokasjonen til den frste definisjonen" +#~ msgstr "... dette er lokasjonen til den første definisjonen" #~ msgid "empty `msgstr' entry ignored" -#~ msgstr "tom msgstr-linje ignorert" +#~ msgstr "tom «msgstr»-linje ignorert" #~ msgid "fuzzy `msgstr' entry ignored" -#~ msgstr "antatt msgstr-linje ignorert" +#~ msgstr "antatt «msgstr»-linje ignorert" #~ msgid "%s: warning: source file contains fuzzy translation" #~ msgstr "%s: advarselL: kildefil har antatte oversettelser" @@ -966,12 +982,12 @@ #~ " --sort-output generate sorted output\n" #~ " --sort-by-file sort output by file location\n" #~ msgstr "" -#~ "Bruksmte: %s [FLAGG] def.po ref.po\n" -#~ "Obligatoriske argumenter til lange flagg er ogs obligatoriske for korte " +#~ "Bruksmåte: %s [FLAGG] def.po ref.po\n" +#~ "Obligatoriske argumenter til lange flagg er også obligatoriske for korte " #~ "flagg.\n" #~ " -C --compendium=FIL ytterligere bibliotek med oversettelser,\n" #~ " kan bli angitt mer enn en gang\n" -#~ " -D, --directory=KATALOG legge KATALOG til skelisten over innfiler\n" +#~ " -D, --directory=KATALOG legge KATALOG til søkelisten over innfiler\n" #~ " -e, --no-escape ikke bruke C-escapekoder i utdata " #~ "(standard)\n" #~ " -E, --escape bruk C-escaper i utdata, ingen utvidede " @@ -980,8 +996,8 @@ #~ " -h, --help vise denne hjelpen og avslutte\n" #~ " -i, --indent innrykk i utdata\n" #~ " -o, --output-file=FIL resultat vil bli skrevet til FIL\n" -#~ " --no-location undertrykk #: filnavn:linje-linjer\n" -#~ " --add-location bevar #: filnavn:linje-linjer (standard)\n" +#~ " --no-location undertrykk «#: filnavn:linje»-linjer\n" +#~ " --add-location bevar «#: filnavn:linje»-linjer (standard)\n" #~ " --strict lag streng Uniforum-konform utdata\n" #~ " -v, --verbose gi mer fyldige meldinger\n" #~ " -V, --version skriv ut programversjon og avslutt\n" @@ -996,15 +1012,15 @@ #~ "Cannot convert from \"%s\" to \"%s\". %s relies on iconv(), and iconv() " #~ "does not support this conversion." #~ msgstr "" -#~ "Tegnsettet \"%s\" er ikke stttet. %s er avhengig av iconv(),\n" -#~ "og iconv() sttter ikke \"%s\".\n" +#~ "Tegnsettet \"%s\" er ikke støttet. %s er avhengig av iconv(),\n" +#~ "og iconv() støtter ikke \"%s\".\n" #, fuzzy #~ msgid "" #~ "Cannot convert from \"%s\" to \"%s\". %s relies on iconv(). This version " #~ "was built without iconv()." #~ msgstr "" -#~ "Tegnsettet \"%s\" er ikke stttet. %s er avhengig av iconv().\n" +#~ "Tegnsettet \"%s\" er ikke støttet. %s er avhengig av iconv().\n" #~ "Denne versjonen ble blygget uten iconv().\n" #, fuzzy @@ -1022,7 +1038,7 @@ #~ msgstr "" #~ "\n" #~ "Fletter sammen to Uniforum .po-filer. def.po-filen er en eksisterende\n" -#~ "PO-fil med gamle oversettelser, som vil bli overfrt til den nye filen\n" +#~ "PO-fil med gamle oversettelser, som vil bli overført til den nye filen\n" #~ "dersom de fremdeles stemmer. Kommentarer blir tatt med, men kommentarer " #~ "om\n" #~ "selve ekstraheringen og fil-posisjoner blir slettet. ref.po-filen er " @@ -1030,8 +1046,8 @@ #~ "sist genererte PO-filen (vanligvis generert med xgettext). " #~ "Oversettelser\n" #~ "eller kommentarer i denne filen blir slettet, men punktum-kommentarer og\n" -#~ "fil-posisjoner blir ivaretatt. Der det ikke lar seg gjre finne en\n" -#~ "eksakt overensstemmelse, blir fuzzy sammenligning brukt for f bedre\n" +#~ "fil-posisjoner blir ivaretatt. Der det ikke lar seg gjøre å finne en\n" +#~ "eksakt overensstemmelse, blir «fuzzy» sammenligning brukt for å få bedre\n" #~ "resultater. Resultatet blir skrevet til standard ut, med mindre en " #~ "utfil\n" #~ "er spesifisert.\n" @@ -1071,8 +1087,8 @@ #~ " the output page width, into several lines\n" #~ " -s, --sort-output generate sorted output\n" #~ msgstr "" -#~ "Bruksmte: %s [FLAGG] [FIL]...\n" -#~ "Obligatoriske argumenter til lange flagg er ogs obligatoriske for korte " +#~ "Bruksmåte: %s [FLAGG] [FIL]...\n" +#~ "Obligatoriske argumenter til lange flagg er også obligatoriske for korte " #~ "flagg.\n" #~ " -e, --no-escape ikke bruk C-escapekoder i utdata (standard)\n" #~ " -E, --escape bruk C-escapekoder i utdata, ingen utvidede " @@ -1108,8 +1124,8 @@ #~ "Charset \"%s\" is not supported. %s relies on iconv(),\n" #~ "and iconv() does not support \"%s\".\n" #~ msgstr "" -#~ "Tegnsettet \"%s\" er ikke stttet. %s er avhengig av iconv(),\n" -#~ "og iconv() sttter ikke \"%s\".\n" +#~ "Tegnsettet \"%s\" er ikke støttet. %s er avhengig av iconv(),\n" +#~ "og iconv() støtter ikke \"%s\".\n" #~ msgid "" #~ "Installing GNU libiconv and then reinstalling GNU gettext\n" @@ -1125,7 +1141,7 @@ #~ "Charset \"%s\" is not supported. %s relies on iconv().\n" #~ "This version was built without iconv().\n" #~ msgstr "" -#~ "Tegnsettet \"%s\" er ikke stttet. %s er avhengig av iconv().\n" +#~ "Tegnsettet \"%s\" er ikke støttet. %s er avhengig av iconv().\n" #~ "Denne versjonen ble blygget uten iconv().\n" #~ msgid "" @@ -1139,16 +1155,16 @@ #~ msgstr "inkonsistent bruk av #~" #~ msgid "missing `msgstr[]' section" -#~ msgstr "mangler msgstr[]-seksjon" +#~ msgstr "mangler «msgstr[]»-seksjon" #~ msgid "missing `msgid_plural' section" -#~ msgstr "mangler msgid_plural-seksjon" +#~ msgstr "mangler «msgid_plural»-seksjon" #~ msgid "missing `msgstr' section" -#~ msgstr "mangler msgstr-seksjon" +#~ msgstr "mangler «msgstr»-seksjon" #~ msgid "first plural form has nonzero index" -#~ msgstr "frste flertallsform har en ikke-null indeks" +#~ msgstr "første flertallsform har en ikke-null indeks" #~ msgid "plural form has wrong index" #~ msgstr "flertallsform har feil indeks" @@ -1168,30 +1184,30 @@ #~ msgstr "ulovlig multibytesekvens" #~ msgid "keyword \"%s\" unknown" -#~ msgstr "nkkelord %s ukjent" +#~ msgstr "nøkkelord «%s» ukjent" #~ msgid "invalid control sequence" #~ msgstr "ulovlig kontrollsekvens" #~ msgid "end-of-file within string" -#~ msgstr "slutt-p-fil inne i streng" +#~ msgstr "slutt-på-fil inne i streng" #~ msgid "end-of-line within string" -#~ msgstr "slutt-p-linje inne i streng" +#~ msgstr "slutt-på-linje inne i streng" #, fuzzy #~ msgid "file \"%s\" is truncated" -#~ msgstr "filen %s er avkuttet" +#~ msgstr "filen «%s» er avkuttet" #~ msgid "file \"%s\" contains a not NUL terminated string" -#~ msgstr "filen %s inneholder en ikke-NUL-terminert streng" +#~ msgstr "filen «%s» inneholder en ikke-NUL-terminert streng" #~ msgid "file \"%s\" is not in GNU .mo format" -#~ msgstr "filen %s er ikke i GNU .mo-format" +#~ msgstr "filen «%s» er ikke i GNU .mo-format" #, fuzzy #~ msgid "file \"%s\" contains a not NUL terminated string, at %s" -#~ msgstr "filen %s inneholder en ikke-NUL-terminert streng" +#~ msgstr "filen «%s» inneholder en ikke-NUL-terminert streng" #, fuzzy #~ msgid "expected two arguments" @@ -1199,25 +1215,25 @@ #, fuzzy #~ msgid "error writing stdout" -#~ msgstr "feil under skriving av filen %s" +#~ msgstr "feil under skriving av filen «%s»" #, fuzzy #~ msgid "cannot create a temporary directory using template \"%s\"" -#~ msgstr "kan ikke opprette utfilen %s" +#~ msgstr "kan ikke opprette utfilen «%s»" #~ msgid "error while writing \"%s\" file" -#~ msgstr "feil under skriving av filen %s" +#~ msgstr "feil under skriving av filen «%s»" #~ msgid "error while opening \"%s\" for writing" -#~ msgstr "feil under pning av %s for skriving" +#~ msgstr "feil under åpning av «%s» for skriving" #~ msgid "" #~ "internationalized messages should not contain the `\\%c' escape sequence" #~ msgstr "" -#~ "internasjonaliserte meldinger br ikke inneholde escape-sekvensen \\%c" +#~ "internasjonaliserte meldinger bør ikke inneholde escape-sekvensen «\\%c»" #~ msgid "cannot create output file \"%s\"" -#~ msgstr "kan ikke opprette utfilen %s" +#~ msgstr "kan ikke opprette utfilen «%s»" #~ msgid "standard output" #~ msgstr "standard ut" @@ -1233,14 +1249,14 @@ #~ msgid "--join-existing cannot be used when output is written to stdout" #~ msgstr "" -#~ "--join-existing kan ikke brukes nr utdata blir skrevet til standard ut" +#~ "--join-existing kan ikke brukes når utdata blir skrevet til standard ut" #~ msgid "xgettext cannot work without keywords to look for" -#~ msgstr "xgettext kan ikke arbeide uten finne nkkelord" +#~ msgstr "xgettext kan ikke arbeide uten å finne nøkkelord" #~ msgid "warning: file `%s' extension `%s' is unknown; will try C" #~ msgstr "" -#~ "advarsel: typen til fil %s med utvidelsen %s er ukjent, forsker C" +#~ "advarsel: typen til fil «%s» med utvidelsen «%s» er ukjent, forsøker C" #, fuzzy #~ msgid "" @@ -1273,12 +1289,12 @@ #~ " -M, --msgstr-suffix[=STRING] use STRING or \"\" as suffix for msgstr " #~ "entries\n" #~ msgstr "" -#~ "Bruksmte: %s [FLAGG] def.po ref.po\n" -#~ "Obligatoriske argumenter til lange flagg er ogs obligatoriske for korte " +#~ "Bruksmåte: %s [FLAGG] def.po ref.po\n" +#~ "Obligatoriske argumenter til lange flagg er også obligatoriske for korte " #~ "flagg.\n" #~ " -C --compendium=FIL ytterligere bibliotek med oversettelser,\n" #~ " kan bli angitt mer enn en gang\n" -#~ " -D, --directory=KATALOG legge KATALOG til skelisten over innfiler\n" +#~ " -D, --directory=KATALOG legge KATALOG til søkelisten over innfiler\n" #~ " -e, --no-escape ikke bruke C-escapekoder i utdata " #~ "(standard)\n" #~ " -E, --escape bruk C-escaper i utdata, ingen utvidede " @@ -1287,22 +1303,22 @@ #~ " -h, --help vise denne hjelpen og avslutte\n" #~ " -i, --indent innrykk i utdata\n" #~ " -o, --output-file=FIL resultat vil bli skrevet til FIL\n" -#~ " --no-location undertrykk #: filnavn:linje-linjer\n" -#~ " --add-location bevar #: filnavn:linje-linjer (standard)\n" +#~ " --no-location undertrykk «#: filnavn:linje»-linjer\n" +#~ " --add-location bevar «#: filnavn:linje»-linjer (standard)\n" #~ " --strict lag streng Uniforum-konform utdata\n" #~ " -v, --verbose gi mer fyldige meldinger\n" #~ " -V, --version skriv ut programversjon og avslutt\n" #~ " -w, --width=ANTALL sett sidebredden i utdata\n" #~ msgid "language `%s' unknown" -#~ msgstr "sprket %s er ukjent" +#~ msgstr "språket «%s» er ukjent" #, fuzzy #~ msgid "file \"%s\" contains a not NUL terminated sysdep segment" -#~ msgstr "filen %s inneholder en ikke-NUL-terminert streng" +#~ msgstr "filen «%s» inneholder en ikke-NUL-terminert streng" #~ msgid "seek \"%s\" offset %ld failed" -#~ msgstr "seek %s posisjon %ld mislyktes" +#~ msgstr "«seek» «%s» posisjon %ld mislyktes" #, fuzzy #~ msgid "a format specification for argument {%u} doesn't exist in 'msgstr'" @@ -1321,17 +1337,17 @@ #, fuzzy #~ msgid "%s:%lu: warning: keyword nested in keyword arg" -#~ msgstr "%s:%d: advarsel: nkkelord nstet i et annet nkkelords argument" +#~ msgstr "%s:%d: advarsel: nøkkelord nøstet i et annet nøkkelords argument" #, fuzzy #~ msgid "%s:%lu: warning: keyword between outer keyword and its arg" -#~ msgstr "%s:%d: advarsel: nkkelord mellom ytre nkkelord og dets argument" +#~ msgstr "%s:%d: advarsel: nøkkelord mellom ytre nøkkelord og dets argument" #~ msgid "while preparing output" -#~ msgstr "under klargjring av utdata" +#~ msgstr "under klargjøring av utdata" #~ msgid "this message has no definition in the \"%s\" domain" -#~ msgstr "denne meldingen har ingen definisjon i %s-domenet" +#~ msgstr "denne meldingen har ingen definisjon i «%s»-domenet" #~ msgid "" #~ "Usage: %s [OPTION] INPUTFILE ...\n" @@ -1349,12 +1365,12 @@ #~ " -F, --sort-by-file sort output by file location\n" #~ " -h, --help display this help and exit\n" #~ msgstr "" -#~ "Bruksmte: %s [FLAGG] INNFIL ...\n" -#~ "Obligatoriske argumenter til lange flagg er ogs obligatorisk for korte " +#~ "Bruksmåte: %s [FLAGG] INNFIL ...\n" +#~ "Obligatoriske argumenter til lange flagg er også obligatorisk for korte " #~ "flagg.\n" #~ " -d, --default-domain=NAVN bruk NAVN.po som resultatfil (istedet " #~ "for messages.po)\n" -#~ " -D, --directory=KATALOG legge til KATALOG til skelisten for " +#~ " -D, --directory=KATALOG legge til KATALOG til søkelisten for " #~ "innfiler\n" #~ " -e, --no-escape ikke bruk C-escapekoder i utdata " #~ "(standard)\n" @@ -1384,17 +1400,17 @@ #~ " that only unique messages be printed\n" #~ msgstr "" #~ " -i, --indent skrive ut .po-filen med innrykk\n" -#~ " --no-location ikke skriv #: filnavn:linje-linjer\n" -#~ " -n, --add-location genererer #: filnavn:linje-linjer " +#~ " --no-location ikke skriv «#: filnavn:linje»-linjer\n" +#~ " -n, --add-location genererer «#: filnavn:linje»-linjer " #~ "(standard)\n" -#~ " --omit-header ikke skriv hode med msgid \n" +#~ " --omit-header ikke skriv hode med «msgid »\n" #~ " -o, --output=FIL skriv utdata til angitt FIL\n" #~ " -p, --output-dir=KAT utfiler plasseres i katalogen KAT\n" #~ " -s, --sort-output generer sortert utdata og fjern " #~ "duplikater\n" #~ " --strict skriv ut streng Uniforum-konform .po-" #~ "fil\n" -#~ " -T, --trigraphs forst ANSI C trigraphs i inndata\n" +#~ " -T, --trigraphs forstå ANSI C trigraphs i inndata\n" #~ " -u, --unique kortform --less-than=2, krever\n" #~ " at bare unike meldinger blir skrevet ut\n" @@ -1424,18 +1440,18 @@ #~ "If input file is -, standard input is read. If output file is -,\n" #~ "output is written to standard output.\n" #~ msgstr "" -#~ "Bruksmte: %s [FLAGG] filnavn.po ...\n" -#~ "Lage binr meldingskatalog fra tekstbasert beskrivelse.\n" +#~ "Bruksmåte: %s [FLAGG] filnavn.po ...\n" +#~ "Lage binær meldingskatalog fra tekstbasert beskrivelse.\n" #~ "\n" -#~ "Obligatoriske argumenter for lange flagg er ogs obligatoriske for korte " +#~ "Obligatoriske argumenter for lange flagg er også obligatoriske for korte " #~ "flagg.\n" #~ " -a, --alignment=ANTALL juster strengene til ANTALL byter " #~ "(standard: %d)\n" -#~ " -c, --check utfr sprkavhengige tester p strengene\n" -#~ " -D, --directory=KATALOG legge KATALOG til skelisten for innfiler\n" +#~ " -c, --check utfør språkavhengige tester på strengene\n" +#~ " -D, --directory=KATALOG legge KATALOG til søkelisten for innfiler\n" #~ " -f, --use-fuzzy bruk antatte linjer i utdata\n" #~ " -h, --help vis denne hjelpeteksten og avslutt\n" -#~ " --no-hash binr vil ikke bli inkludert i hash-" +#~ " --no-hash binær vil ikke bli inkludert i hash-" #~ "tabellen\n" #~ " -o, --output-file=FIL angi FIL som filnavn for utdata\n" #~ " --statistics skrive ut statistikk om oversettelsene\n" @@ -1457,8 +1473,8 @@ #~ "By default the output is written to standard output.\n" #~ msgstr "" #~ "\n" -#~ "Konverter binre .mo-filer til Uniforum .po-filer.\n" -#~ "Bde little-endian og big-endian .mo-filer blir hndtert.\n" +#~ "Konverter binære .mo-filer til Uniforum .po-filer.\n" +#~ "Både «little-endian» og «big-endian» .mo-filer blir håndtert.\n" #~ "Dersom innfil er -, blir standard inn lest.\n" #~ "Dersom intet annet er spesifisert, blir det skrevet til standard ut.\n" @@ -1487,22 +1503,22 @@ #~ "user\n" #~ " -F, --sort-by-file sort output by file location\n" #~ msgstr "" -#~ "Bruksmte: %s [FLAGG] INNFIL ...\n" +#~ "Bruksmåte: %s [FLAGG] INNFIL ...\n" #~ "Ekstrahere oversettbare strenger fra angitte innfiler.\n" #~ "\n" -#~ "Obligatoriske argumenter for lange flagg er ogs obligatoriske for korte " +#~ "Obligatoriske argumenter for lange flagg er også obligatoriske for korte " #~ "flagg.\n" #~ " -a, --extract-all ekstrahere alle strengene\n" #~ " -c, --add-comments[=TAG] lagre kommentarblokker med TAG (eller " #~ "kommentarer\n" -#~ " i linjer som kommer foran nkkelord) i " +#~ " i linjer som kommer foran nøkkelord) i " #~ "utfilen\n" #~ " -C, --c++ kortform for --language=C++\n" #~ " --debug mer detaljert resultat fra gjenkjenning " #~ "av formatstreng\n" #~ " -d, --default-domain=NAVN bruk NAVN.po for utdata (istedet for " #~ "messages.po)\n" -#~ " -D, --directory=KATALOG legg KATALOG til skelisten for " +#~ " -D, --directory=KATALOG legg KATALOG til søkelisten for " #~ "innfiler\n" #~ " -e, --no-escape ikke bruk C-escapesekvenser i utdata " #~ "(standard)\n" @@ -1534,21 +1550,21 @@ #~ " -h, --help vise denne hjelpen og avslutte\n" #~ " -i, --indent skrive .po-filen med innrykk\n" #~ " -j, --join-existing flett meldinger med eksisterende fil\n" -#~ " -k, --keyword[=ORD] ytterligere nkkelord for bruk i sk " +#~ " -k, --keyword[=ORD] ytterligere nøkkelord for bruk i søk " #~ "(mangler\n" -#~ " ORD skal heller ikke standard nkkelord " +#~ " ORD skal heller ikke standard nøkkelord " #~ "brukes)\n" -#~ " -l, --string-limit=ANTALL sett begrensning p strenglengde til " +#~ " -l, --string-limit=ANTALL sett begrensning på strenglengde til " #~ "ANTALL istedet for %u\n" -#~ " -L, --language=NAVN gjenkjenn det angitt sprket (C, C++, " +#~ " -L, --language=NAVN gjenkjenn det angitt språket (C, C++, " #~ "PO),\n" #~ " ellers blir det gjettet fra " #~ "filutvidelsen\n" -#~ " -m, --msgstr-prefix[=STRENG] bruk STRENG eller som prefiks for " +#~ " -m, --msgstr-prefix[=STRENG] bruk STRENG eller «» som prefiks for " #~ "msgstr-innslag\n" -#~ " -M, --msgstr-suffix[=STRENG] bruk STRENG eller som suffiks for " +#~ " -M, --msgstr-suffix[=STRENG] bruk STRENG eller «» som suffiks for " #~ "msgstr-innslag\n" -#~ " --no-location ikke skriv ut #: filnavn:linje-linjer\n" +#~ " --no-location ikke skriv ut «#: filnavn:linje»-linjer\n" #~ msgid "" #~ " -n, --add-location generate '#: filename:line' lines " @@ -1569,14 +1585,14 @@ #~ "\n" #~ "If INPUTFILE is -, standard input is read.\n" #~ msgstr "" -#~ " -n, --add-location generer #: filnavn:linje-linjer " +#~ " -n, --add-location generer «#: filnavn:linje»-linjer " #~ "(standard)\n" -#~ " --omit-header ikke skriv hode med msgid -innslag\n" +#~ " --omit-header ikke skriv hode med «msgid »-innslag\n" #~ " -o, --output=FIL skriv utdata til FIL\n" #~ " -p, --output-dir=KAT skriv ut filene til katalogen KAT\n" #~ " -s, --sort-output sorter utdata og fjern duplikater\n" #~ " --strict lag streng Uniforum-konform .po-fil\n" -#~ " -T, --trigraphs forst ANSI C trigraphs i inndata\n" +#~ " -T, --trigraphs forstå ANSI C trigraphs i inndata\n" #~ " -V, --version skriv ut programversjon og avslutt\n" #~ " -w, --width=ANTALL sett sidebredden i utdata\n" #~ " -x, --exclude-file=FIL innslag fra FIL blir ikke ekstrahert\n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/nl.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/nl.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/nl.po gettext-0.19.7/gettext-runtime/po/nl.po --- gettext-0.19.6/gettext-runtime/po/nl.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/nl.po 2015-12-27 23:26:41.000000000 +0000 @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: gettext-runtime-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-07-01 21:01+0200\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/nn.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/nn.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/nn.po gettext-0.19.7/gettext-runtime/po/nn.po --- gettext-0.19.6/gettext-runtime/po/nn.po 2015-09-11 03:23:56.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/nn.po 2015-12-27 23:26:41.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gettext-runtime-0.16.2-pre5\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2008-08-13 18:40+0200\n" "Last-Translator: Eirik U. Birkeland \n" "Language-Team: Norwegian Nynorsk \n" @@ -35,7 +35,7 @@ #: gnulib-lib/getopt.c:619 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous\n" -msgstr "%s: Valet «-W %s» er fleirtydig\n" +msgstr "%s: Valet «%s» er fleirtydig\n" #: gnulib-lib/getopt.c:654 gnulib-lib/getopt.c:658 #, fuzzy, c-format Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/pl.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/pl.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/pl.po gettext-0.19.7/gettext-runtime/po/pl.po --- gettext-0.19.6/gettext-runtime/po/pl.po 2015-09-11 03:23:57.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/pl.po 2015-12-27 23:26:41.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: GNU gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-07-15 18:54+0200\n" "Last-Translator: Rafał Maszkowski \n" "Language-Team: Polish \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/pt_BR.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/pt_BR.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/pt_BR.po gettext-0.19.7/gettext-runtime/po/pt_BR.po --- gettext-0.19.6/gettext-runtime/po/pt_BR.po 2015-09-11 03:23:57.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/pt_BR.po 2015-12-27 23:26:41.000000000 +0000 @@ -1,26 +1,26 @@ # Brazilian Portuguese translation of gettext-runtime -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. # Sandro Nunes Henrique , 1998 # Rodrigo Stulzer Lopes , 2000 # Flávio Bruno Leitner , 2001. -# Rafael Ferreira , 2013. +# Rafael Ferreira , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: gettext-runtime 0.18.2\n" +"Project-Id-Version: gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" -"PO-Revision-Date: 2013-03-01 06:03-0300\n" -"Last-Translator: Rafael Ferreira \n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.11\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.5.4\n" #: gnulib-lib/closeout.c:66 msgid "write error" @@ -36,9 +36,9 @@ msgstr "%s: a opção \"%s\" é ambígua; possibilidades:" #: gnulib-lib/getopt.c:619 -#, fuzzy, c-format +#, c-format msgid "%s: option '%s' is ambiguous\n" -msgstr "%s: opção \"-W %s\" é ambígua\n" +msgstr "%s: opção \"%s\" é ambígua\n" #: gnulib-lib/getopt.c:654 gnulib-lib/getopt.c:658 #, c-format Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/pt.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/pt.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/pt.po gettext-0.19.7/gettext-runtime/po/pt.po --- gettext-0.19.6/gettext-runtime/po/pt.po 2015-09-11 03:23:57.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/pt.po 2015-12-27 23:26:41.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.16.2-pre5\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2007-12-09 18:24+0100\n" "Last-Translator: Helder Correia \n" "Language-Team: Portuguese \n" @@ -32,7 +32,7 @@ #: gnulib-lib/getopt.c:619 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous\n" -msgstr "%s: a opção '-W %s' é ambígua\n" +msgstr "%s: a opção `%s' é ambígua\n" #: gnulib-lib/getopt.c:654 gnulib-lib/getopt.c:658 #, fuzzy, c-format Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/ro.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/ro.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/ro.po gettext-0.19.7/gettext-runtime/po/ro.po --- gettext-0.19.6/gettext-runtime/po/ro.po 2015-09-11 03:23:57.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/ro.po 2015-12-27 23:33:19.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.13-pre1\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2003-11-23 09:19+0200\n" "Last-Translator: Eugen Hoanca \n" "Language-Team: Romanian \n" @@ -32,7 +32,7 @@ #: gnulib-lib/getopt.c:619 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous\n" -msgstr "%s: opiunea `-W %s' este ambigu\n" +msgstr "%s: opiunea `%s' este ambigu\n" #: gnulib-lib/getopt.c:654 gnulib-lib/getopt.c:658 #, fuzzy, c-format Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/ru.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/ru.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/Rules-quot gettext-0.19.7/gettext-runtime/po/Rules-quot --- gettext-0.19.6/gettext-runtime/po/Rules-quot 2015-08-21 07:18:24.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/Rules-quot 2015-12-23 07:08:27.000000000 +0000 @@ -15,7 +15,7 @@ .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ - if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ diff -Nru gettext-0.19.6/gettext-runtime/po/ru.po gettext-0.19.7/gettext-runtime/po/ru.po --- gettext-0.19.6/gettext-runtime/po/ru.po 2015-09-11 03:23:57.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/ru.po 2015-12-27 23:26:41.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-06-26 08:56+0300\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/sk.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/sk.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/sk.po gettext-0.19.7/gettext-runtime/po/sk.po --- gettext-0.19.6/gettext-runtime/po/sk.po 2015-09-11 03:23:57.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/sk.po 2015-12-27 23:26:41.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: GNU gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-06-23 20:24+0200\n" "Last-Translator: Marcel Telka \n" "Language-Team: Slovak \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/sl.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/sl.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/sl.po gettext-0.19.7/gettext-runtime/po/sl.po --- gettext-0.19.6/gettext-runtime/po/sl.po 2015-09-11 03:23:57.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/sl.po 2015-12-27 23:26:41.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: GNU gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-06-28 10:38+0200\n" "Last-Translator: Primoz PETERLIN \n" "Language-Team: Slovenian \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/sr.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/sr.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/sr.po gettext-0.19.7/gettext-runtime/po/sr.po --- gettext-0.19.6/gettext-runtime/po/sr.po 2015-09-11 03:23:57.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/sr.po 2015-12-27 23:26:41.000000000 +0000 @@ -2,15 +2,15 @@ # Copyright (C) 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. # Danilo Segan , 2003. -# Мирослав Николић , 2011, 2013. +# Мирослав Николић , 2011—2015. msgid "" msgstr "" -"Project-Id-Version: gettext-runtime 0.18.2\n" +"Project-Id-Version: gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" -"PO-Revision-Date: 2013-10-03 09:12+0200\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" +"PO-Revision-Date: 2015-12-23 19:25+0200\n" "Last-Translator: Мирослав Николић \n" -"Language-Team: Serbian \n" +"Language-Team: Serbian <(nothing)>\n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,9 +32,9 @@ msgstr "%s: опција „%s“ је нејасна; могућности:" #: gnulib-lib/getopt.c:619 -#, fuzzy, c-format +#, c-format msgid "%s: option '%s' is ambiguous\n" -msgstr "%s: опција „-W %s“ је нејасна\n" +msgstr "%s: опција „%s“ је нејасна\n" #: gnulib-lib/getopt.c:654 gnulib-lib/getopt.c:658 #, c-format Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/sv.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/sv.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/sv.po gettext-0.19.7/gettext-runtime/po/sv.po --- gettext-0.19.6/gettext-runtime/po/sv.po 2015-09-11 03:23:57.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/sv.po 2015-12-27 23:26:41.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.18.2\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2013-03-10 16:05+0100\n" "Last-Translator: Jan Djärv \n" "Language-Team: Swedish \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/tr.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/tr.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/tr.po gettext-0.19.7/gettext-runtime/po/tr.po --- gettext-0.19.6/gettext-runtime/po/tr.po 2015-09-11 03:23:57.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/tr.po 2015-12-27 23:26:46.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.19.4-rc1\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-02-15 20:19+0100\n" "Last-Translator: Volkan Gezer \n" "Language-Team: Turkish \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/uk.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/uk.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/uk.po gettext-0.19.7/gettext-runtime/po/uk.po --- gettext-0.19.6/gettext-runtime/po/uk.po 2015-09-11 03:23:57.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/uk.po 2015-12-27 23:26:46.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-06-23 20:47+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/vi.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/vi.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/vi.po gettext-0.19.7/gettext-runtime/po/vi.po --- gettext-0.19.6/gettext-runtime/po/vi.po 2015-09-11 03:23:57.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/vi.po 2015-12-27 23:26:46.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-06-30 08:06+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/zh_CN.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/zh_CN.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/zh_CN.po gettext-0.19.7/gettext-runtime/po/zh_CN.po --- gettext-0.19.6/gettext-runtime/po/zh_CN.po 2015-09-11 03:23:57.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/zh_CN.po 2015-12-27 23:26:46.000000000 +0000 @@ -13,7 +13,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2015-09-01 10:02中国标准时间\n" "Last-Translator: Ji ZhengYu \n" "Language-Team: Chinese (simplified) \n" Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/zh_HK.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/zh_HK.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/zh_HK.po gettext-0.19.7/gettext-runtime/po/zh_HK.po --- gettext-0.19.6/gettext-runtime/po/zh_HK.po 2015-09-11 03:23:57.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/zh_HK.po 2015-12-27 23:33:19.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: gettext-runtime 0.15-pre5\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" "PO-Revision-Date: 2006-07-05 17:16+0800\n" "Last-Translator: Abel Cheung \n" "Language-Team: Chinese (Hong Kong) \n" @@ -36,7 +36,7 @@ #: gnulib-lib/getopt.c:619 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous\n" -msgstr "%s:選項「-W %s」不明確\n" +msgstr "%s:選項「%s」不明確\n" #: gnulib-lib/getopt.c:654 gnulib-lib/getopt.c:658 #, fuzzy, c-format Binary files /tmp/tmpDZOM3c/LsefUUjici/gettext-0.19.6/gettext-runtime/po/zh_TW.gmo and /tmp/tmpDZOM3c/AUGUFG7Zai/gettext-0.19.7/gettext-runtime/po/zh_TW.gmo differ diff -Nru gettext-0.19.6/gettext-runtime/po/zh_TW.po gettext-0.19.7/gettext-runtime/po/zh_TW.po --- gettext-0.19.6/gettext-runtime/po/zh_TW.po 2015-09-11 03:23:57.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/po/zh_TW.po 2015-12-27 23:26:46.000000000 +0000 @@ -4,14 +4,14 @@ # Yuan-Chung Cheng , 1998. # Pofeng Lee , 2001-2002. # Abel Cheung , 2002, 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: gettext-runtime 0.18.2\n" +"Project-Id-Version: gettext-runtime 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:23+0900\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"POT-Creation-Date: 2015-12-28 08:26+0900\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" @@ -31,12 +31,12 @@ #: gnulib-lib/getopt.c:575 gnulib-lib/getopt.c:604 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" -msgstr "%s:選項 %s 不明確;可能選項包括:" +msgstr "%s:選項 %s 是模稜兩可的;可能選項包括:" #: gnulib-lib/getopt.c:619 -#, fuzzy, c-format +#, c-format msgid "%s: option '%s' is ambiguous\n" -msgstr "%s:選項 -W %s 不明確\n" +msgstr "%s:選項 %s 是模稜兩可的\n" #: gnulib-lib/getopt.c:654 gnulib-lib/getopt.c:658 #, c-format @@ -77,7 +77,7 @@ #: gnulib-lib/getopt.c:964 gnulib-lib/getopt.c:980 #, c-format msgid "%s: option '-W %s' is ambiguous\n" -msgstr "%s:選項 -W %s 不明確\n" +msgstr "%s:選項 -W %s 是模稜兩可的\n" #: gnulib-lib/getopt.c:1004 gnulib-lib/getopt.c:1022 #, c-format diff -Nru gettext-0.19.6/gettext-runtime/src/ChangeLog gettext-0.19.7/gettext-runtime/src/ChangeLog --- gettext-0.19.6/gettext-runtime/src/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/src/ChangeLog 1970-01-01 00:00:00.000000000 +0000 @@ -1,389 +0,0 @@ -2015-09-11 Daiki Ueno - - * gettext 0.19.6 released. - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2012-01-26 Bruno Haible - - Modernize quoting. - * envsubst.c (usage): Quote 'like this', not `like this', as per the - recent change to the GNU coding standards. - * gettext.c (usage): Likewise. - * ngettext.c (usage): Likewise. - -2011-06-03 Bruno Haible - - Copyright: Use LGPL 2.1 instead of LGPL 2.0. - * gettext.sh.in: Update copyright header. - -2011-05-12 Bruno Haible - - * gettext.sh.in: Avoid reference to unset shell variable ZSH_VERSION. - Reported by Thorsten Kampe . - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2009-12-12 Bruno Haible - - * *.c: Untabify. - -2009-01-17 Bruno Haible - - Update after gnulib changed. - * Makefile.am (RELOCATABLE_STRIP): New variable. - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2007-10-07 Bruno Haible - - * envsubst.c (main): In the --version output, say GPLv3+. - * gettext.c (main): Likewise. - * ngettext.c (main): Likewise. - -2007-07-01 Bruno Haible - - * gettext.sh.in (func_version): Use the standard --version output, see - . - -2007-06-30 Bruno Haible - - * envsubst.c (main): Use the standard --version output, see - . - * gettext.c (main): Likewise. - * ngettext.c (main): Likewise. - -2007-06-08 Bruno Haible - - * gettext.c (main): Update year in --version output. - * ngettext.c (main): Likewise. - * envsubst.c (main): Likewise. - -2007-05-28 Bruno Haible - - * Makefile.am (MOSTLYCLEANFILES, CLEANFILES): New variables. - (WOE32_LDADD): New variable. - (LDADD): Include it. - (gettext.res): New rule. - -2007-03-27 Bruno Haible - - * envsubst.c (usage): Ask translators to specify a translation bug - report address. - * gettext.c (usage): Likewise. - * ngettext.c (usage): Likewise. - -2007-03-04 Bruno Haible - - Moved --enable-relocatable infrastructure to gnulib. - * Makefile.am: Remove SET_RELOCATABLE invocation. - -2007-02-19 Bruno Haible - - * envsubst.c: Don't include exit.h. - * gettext.c: Likewise. - * ngettext.c: Likewise. - -2006-11-03 Bruno Haible - - Simplify xmalloc expressions. Add overflow check in xmalloc arguments. - * envsubst.c (note_variable): Use XNMALLOC instead of xmalloc. - * gettext.c (expand_escape): Likewise. - * ngettext.c (expand_escape): Likewise. - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-10-14 Bruno Haible - - * gettext.sh.in: Put under LGPL. - -2006-07-31 Bruno Haible - - * Makefile.am (AM_CPPFLAGS, LDADD, RELOCATABLE_SRC_DIR, - RELOCATABLE_BUILD_DIR): Replace lib and ../gettext-tools/lib with - gnulib-lib. - -2006-07-30 Bruno Haible - - * Makefile.am (AM_CPPFLAGS): Replace gettext-tools/lib with - gettext-tools/gnulib-lib. - -2006-07-25 Bruno Haible - - * Makefile.msvc: Remove file. - * Makefile.am (EXTRA_DIST): Remove Makefile.msvc. - -2006-07-25 Bruno Haible - - * Makefile.vms: Remove file. - * Makefile.am (EXTRA_DIST): Remove Makefile.vms. - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2006-04-14 Bruno Haible - - Assume autoconf >= 2.60. - * Makefile.am (localedir): Remove variable. - -2006-04-02 Bruno Haible - - * envsubst.c: Include propername.h. - (main): Call proper_name. Bump copyright year. - * gettext.c: Include propername.h. - (main): Call proper_name. Bump copyright year. - * ngettext.c: Include propername.h. - (main): Call proper_name. Bump copyright year. - * Makefile.am (LDADD): Add LTLIBICONV. - -2005-12-19 Bruno Haible - - * gettext.sh.in: Fix behaviour when the sourceing script has a name - ending in gettext.sh. - Reported by Andreas Schwab . - -2005-12-19 Bruno Haible - - * gettext.sh.in: Make it work when sourced by zsh. - Reported by Sergio Talens-Oliag . - -2006-06-21 Bruno Haible - - * gettext-0.14.6 released. - -2005-05-23 Bruno Haible - - * gettext-0.14.5 released. - -2005-04-11 Bruno Haible - - * gettext-0.14.4 released. - -2005-03-14 Bruno Haible - - * gettext-0.14.3 released. - -2005-02-24 Bruno Haible - - * gettext-0.14.2 released. - -2005-02-10 Bruno Haible - - * gettext.sh.in: Renamed from gettext.sh. Show help or usage or an - error message when invoked as an executable. - * Makefile.am (bin_SCRIPTS, DISTCLEANFILES): New variables. - (EXTRA_DIST): Remove gettext.sh. - (all-local, install-data-local, uninstall-local): Remove rules. - * Makefile.msvc (install): Don't install gettext.sh. - (uninstall): Don't uninstall gettext.sh. - * Makefile.vms (install): Don't install gettext.sh. - (uninstall): Don't uninstall gettext.sh. - Suggested by Alfred M. Szmidt . - -2005-01-05 Bruno Haible - - * gettext.c (main): Update year in --version output. - * ngettext.c (main): Likewise. - * envsubst.c (main): Likewise. - -2004-07-10 Bruno Haible - - * gettext.c (expand_escape): Don't go into an endless loop when the - first backslash is not followed by one of the expected characters. - * ngettext.c (expand_escape): Likewise. - Reported by Arkadiusz Miśkiewicz . - -2004-07-10 Bruno Haible - - * gettext.c (expand_escape): Support also \a and \v. - * ngettext.c (expand_escape): Likewise. - -2004-02-02 Bruno Haible - - * Makefile.am (RM): New variable. - -2004-01-29 Bruno Haible - - * gettext-0.14.1 released. - -2004-01-28 Bruno Haible - - * gettext-0.14 released. - -2004-01-09 Bruno Haible - - * gettext.c (main): Update year in --version output. - * ngettext.c (main): Likewise. - * envsubst.c (main): Likewise. - -2003-12-17 Bruno Haible - - * gettext-0.13.1 released. - -2003-11-30 Bruno Haible - - * gettext-0.13 released. - -2003-11-15 Bruno Haible - - * Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. - -2003-10-09 Bruno Haible - - * envsubst.c: Include xalloc.h instead of xmalloc.h. - * gettext.c: Likewise. - * ngettext.c: Likewise. - -2003-09-16 Bruno Haible - - * envsubst.c: Include stdbool.h. - (all_variables): Change type to bool. - (main, find_variables, subst_from_stdin): Use bool. - * gettext.c: Include stdbool.h. - (add_newline, do_expand): Change type to bool. Make static. - (main, expand_escape): Use bool. - * ngettext.c: Include stdbool.h. - (do_expand): Change type to bool. Make static. - (main): Use bool. - -2003-09-14 Bruno Haible - - * envsubst.c (main): Remove stdout write error check, now done in - close_stdout. - -2003-09-18 Bruno Haible - - * Makefile.am (EXTRA_DIST): Add gettext.sh. - Reported by Guido Flohr. - -2003-09-13 Bruno Haible - - * envsubst.c: New file. - * gettext.sh: New file. - * Makefile.am (bin_PROGRAMS): Add envsubst. - (envsubst_SOURCES, envsubst_CFLAGS, envsubst_LDFLAGS): New variables. - (all-local): Depend on gettext.sh. - (install-data-local, uninstall-local): New rules, for gettext.sh. - * Makefile.msvc (PROGRAMS): Add envsubst.exe. - (envsubst_OBJECTS): New variable. - (envsubst.obj, envsubst.exe): New rules. - (install): Install also envsubst.exe and gettext.sh. - (uninstall): Uninstall also envsubst.exe and gettext.sh. - * Makefile.vms (PROGRAMS): Add envsubst.exe. - (envsubst_OBJECTS): New variable. - (envsubst.obj, envsubst.exe): New rules. - (install): Install also envsubst.exe and gettext.sh. - (uninstall): Uninstall also envsubst.exe and gettext.sh. - -2003-09-13 Bruno Haible - - Fix behaviour of " --help > /dev/full". - * gettext.c: Include closeout.h. - (main): Register close_stdout for execution at program exit. - * ngettext.c: Include closeout.h. - (main): Register close_stdout for execution at program exit. - -2003-06-08 Bruno Haible - - * Makefile.vms (LDADD): Take options from .opt files. - (libiconv.opt): New rule. - (gettext.exe, ngettext.exe): Depend on it. - Reported by Jouk Jansen . - -2003-05-22 Bruno Haible - - * gettext-0.12.1 released. - -2003-05-18 Bruno Haible - - * Makefile.msvc (DEBUGFLAGS): New variable. - (gettext.exe, ngettext.exe): Use it, and MFLAGS too. - -2003-05-17 Bruno Haible - - * gettext-0.12 released. - -2003-05-17 Bruno Haible - - * Makefile.msvc (libdir, IIlibdir): New variables. - (gettext.exe, ngettext.exe): Link with iconv.lib, needed by intl.lib. - -2003-04-12 Bruno Haible - - * Makefile.vms: New variables ABIFLAGS, DEFS. Avoid rules with no - lines. Don't use the force target. Correct wildcard syntax. - Suggested by Jouk Jansen . - -2003-03-30 Bruno Haible - - * Makefile.vms: New file. - * Makefile.am (EXTRA_DIST): Add Makefile.vms. - -2003-03-17 Bruno Haible - - Native Woe32/MSVC support. - * Makefile.msvc: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2003-02-28 Bruno Haible - - Support for relocatable installation. - * gettext.c: Include progname.h, relocatable.h. - (program_name): Remove variable. - (main): Use set_program_name. Relocate LOCALEDIR value. Update - copyright year. - * ngettext.c: Include progname.h, relocatable.h. - (program_name): Remove variable. - (main): Use set_program_name. Relocate LOCALEDIR value. Update - copyright year. - * Makefile.am (gettext_CFLAGS, ngettext_CFLAGS): New variables. - (gettext_LDFLAGS, ngettext_LDFLAGS): New variables. - (RELOCATABLE_LIBRARY_PATH, RELOCATABLE_SRC_DIR, RELOCATABLE_BUILD_DIR, - RELOCATABLE_CONFIG_H_DIR): New variables. - -2003-02-12 Bruno Haible - - Extracted from gettext package. - * Makefile.am: New file. - diff -Nru gettext-0.19.6/gettext-runtime/src/ChangeLog.0 gettext-0.19.7/gettext-runtime/src/ChangeLog.0 --- gettext-0.19.6/gettext-runtime/src/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/src/ChangeLog.0 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,389 @@ +2015-09-11 Daiki Ueno + + * gettext 0.19.6 released. + +2015-07-10 Daiki Ueno + + * gettext 0.19.5 released. + +2014-12-24 Daiki Ueno + + * gettext 0.19.4 released. + +2014-10-15 Daiki Ueno + + * gettext 0.19.3 released. + +2014-07-14 Daiki Ueno + + * gettext 0.19.2 released. + +2014-06-10 Daiki Ueno + + * gettext 0.19.1 released. + +2014-06-02 Daiki Ueno + + * gettext 0.19 released. + +2012-12-25 Daiki Ueno + + * gettext-0.18.2 released. + +2012-01-26 Bruno Haible + + Modernize quoting. + * envsubst.c (usage): Quote 'like this', not `like this', as per the + recent change to the GNU coding standards. + * gettext.c (usage): Likewise. + * ngettext.c (usage): Likewise. + +2011-06-03 Bruno Haible + + Copyright: Use LGPL 2.1 instead of LGPL 2.0. + * gettext.sh.in: Update copyright header. + +2011-05-12 Bruno Haible + + * gettext.sh.in: Avoid reference to unset shell variable ZSH_VERSION. + Reported by Thorsten Kampe . + +2010-06-04 Bruno Haible + + * gettext-0.18.1 released. + +2010-05-09 Bruno Haible + + * gettext-0.18 released. + +2009-12-12 Bruno Haible + + * *.c: Untabify. + +2009-01-17 Bruno Haible + + Update after gnulib changed. + * Makefile.am (RELOCATABLE_STRIP): New variable. + +2007-11-07 Bruno Haible + + * gettext-0.17 released. + +2007-10-07 Bruno Haible + + * envsubst.c (main): In the --version output, say GPLv3+. + * gettext.c (main): Likewise. + * ngettext.c (main): Likewise. + +2007-07-01 Bruno Haible + + * gettext.sh.in (func_version): Use the standard --version output, see + . + +2007-06-30 Bruno Haible + + * envsubst.c (main): Use the standard --version output, see + . + * gettext.c (main): Likewise. + * ngettext.c (main): Likewise. + +2007-06-08 Bruno Haible + + * gettext.c (main): Update year in --version output. + * ngettext.c (main): Likewise. + * envsubst.c (main): Likewise. + +2007-05-28 Bruno Haible + + * Makefile.am (MOSTLYCLEANFILES, CLEANFILES): New variables. + (WOE32_LDADD): New variable. + (LDADD): Include it. + (gettext.res): New rule. + +2007-03-27 Bruno Haible + + * envsubst.c (usage): Ask translators to specify a translation bug + report address. + * gettext.c (usage): Likewise. + * ngettext.c (usage): Likewise. + +2007-03-04 Bruno Haible + + Moved --enable-relocatable infrastructure to gnulib. + * Makefile.am: Remove SET_RELOCATABLE invocation. + +2007-02-19 Bruno Haible + + * envsubst.c: Don't include exit.h. + * gettext.c: Likewise. + * ngettext.c: Likewise. + +2006-11-03 Bruno Haible + + Simplify xmalloc expressions. Add overflow check in xmalloc arguments. + * envsubst.c (note_variable): Use XNMALLOC instead of xmalloc. + * gettext.c (expand_escape): Likewise. + * ngettext.c (expand_escape): Likewise. + +2006-11-27 Bruno Haible + + * gettext-0.16.1 released. + +2006-10-26 Bruno Haible + + * gettext-0.16 released. + +2006-10-14 Bruno Haible + + * gettext.sh.in: Put under LGPL. + +2006-07-31 Bruno Haible + + * Makefile.am (AM_CPPFLAGS, LDADD, RELOCATABLE_SRC_DIR, + RELOCATABLE_BUILD_DIR): Replace lib and ../gettext-tools/lib with + gnulib-lib. + +2006-07-30 Bruno Haible + + * Makefile.am (AM_CPPFLAGS): Replace gettext-tools/lib with + gettext-tools/gnulib-lib. + +2006-07-25 Bruno Haible + + * Makefile.msvc: Remove file. + * Makefile.am (EXTRA_DIST): Remove Makefile.msvc. + +2006-07-25 Bruno Haible + + * Makefile.vms: Remove file. + * Makefile.am (EXTRA_DIST): Remove Makefile.vms. + +2006-07-21 Bruno Haible + + * gettext-0.15 released. + +2006-04-14 Bruno Haible + + Assume autoconf >= 2.60. + * Makefile.am (localedir): Remove variable. + +2006-04-02 Bruno Haible + + * envsubst.c: Include propername.h. + (main): Call proper_name. Bump copyright year. + * gettext.c: Include propername.h. + (main): Call proper_name. Bump copyright year. + * ngettext.c: Include propername.h. + (main): Call proper_name. Bump copyright year. + * Makefile.am (LDADD): Add LTLIBICONV. + +2005-12-19 Bruno Haible + + * gettext.sh.in: Fix behaviour when the sourceing script has a name + ending in gettext.sh. + Reported by Andreas Schwab . + +2005-12-19 Bruno Haible + + * gettext.sh.in: Make it work when sourced by zsh. + Reported by Sergio Talens-Oliag . + +2006-06-21 Bruno Haible + + * gettext-0.14.6 released. + +2005-05-23 Bruno Haible + + * gettext-0.14.5 released. + +2005-04-11 Bruno Haible + + * gettext-0.14.4 released. + +2005-03-14 Bruno Haible + + * gettext-0.14.3 released. + +2005-02-24 Bruno Haible + + * gettext-0.14.2 released. + +2005-02-10 Bruno Haible + + * gettext.sh.in: Renamed from gettext.sh. Show help or usage or an + error message when invoked as an executable. + * Makefile.am (bin_SCRIPTS, DISTCLEANFILES): New variables. + (EXTRA_DIST): Remove gettext.sh. + (all-local, install-data-local, uninstall-local): Remove rules. + * Makefile.msvc (install): Don't install gettext.sh. + (uninstall): Don't uninstall gettext.sh. + * Makefile.vms (install): Don't install gettext.sh. + (uninstall): Don't uninstall gettext.sh. + Suggested by Alfred M. Szmidt . + +2005-01-05 Bruno Haible + + * gettext.c (main): Update year in --version output. + * ngettext.c (main): Likewise. + * envsubst.c (main): Likewise. + +2004-07-10 Bruno Haible + + * gettext.c (expand_escape): Don't go into an endless loop when the + first backslash is not followed by one of the expected characters. + * ngettext.c (expand_escape): Likewise. + Reported by Arkadiusz Miśkiewicz . + +2004-07-10 Bruno Haible + + * gettext.c (expand_escape): Support also \a and \v. + * ngettext.c (expand_escape): Likewise. + +2004-02-02 Bruno Haible + + * Makefile.am (RM): New variable. + +2004-01-29 Bruno Haible + + * gettext-0.14.1 released. + +2004-01-28 Bruno Haible + + * gettext-0.14 released. + +2004-01-09 Bruno Haible + + * gettext.c (main): Update year in --version output. + * ngettext.c (main): Likewise. + * envsubst.c (main): Likewise. + +2003-12-17 Bruno Haible + + * gettext-0.13.1 released. + +2003-11-30 Bruno Haible + + * gettext-0.13 released. + +2003-11-15 Bruno Haible + + * Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. + +2003-10-09 Bruno Haible + + * envsubst.c: Include xalloc.h instead of xmalloc.h. + * gettext.c: Likewise. + * ngettext.c: Likewise. + +2003-09-16 Bruno Haible + + * envsubst.c: Include stdbool.h. + (all_variables): Change type to bool. + (main, find_variables, subst_from_stdin): Use bool. + * gettext.c: Include stdbool.h. + (add_newline, do_expand): Change type to bool. Make static. + (main, expand_escape): Use bool. + * ngettext.c: Include stdbool.h. + (do_expand): Change type to bool. Make static. + (main): Use bool. + +2003-09-14 Bruno Haible + + * envsubst.c (main): Remove stdout write error check, now done in + close_stdout. + +2003-09-18 Bruno Haible + + * Makefile.am (EXTRA_DIST): Add gettext.sh. + Reported by Guido Flohr. + +2003-09-13 Bruno Haible + + * envsubst.c: New file. + * gettext.sh: New file. + * Makefile.am (bin_PROGRAMS): Add envsubst. + (envsubst_SOURCES, envsubst_CFLAGS, envsubst_LDFLAGS): New variables. + (all-local): Depend on gettext.sh. + (install-data-local, uninstall-local): New rules, for gettext.sh. + * Makefile.msvc (PROGRAMS): Add envsubst.exe. + (envsubst_OBJECTS): New variable. + (envsubst.obj, envsubst.exe): New rules. + (install): Install also envsubst.exe and gettext.sh. + (uninstall): Uninstall also envsubst.exe and gettext.sh. + * Makefile.vms (PROGRAMS): Add envsubst.exe. + (envsubst_OBJECTS): New variable. + (envsubst.obj, envsubst.exe): New rules. + (install): Install also envsubst.exe and gettext.sh. + (uninstall): Uninstall also envsubst.exe and gettext.sh. + +2003-09-13 Bruno Haible + + Fix behaviour of " --help > /dev/full". + * gettext.c: Include closeout.h. + (main): Register close_stdout for execution at program exit. + * ngettext.c: Include closeout.h. + (main): Register close_stdout for execution at program exit. + +2003-06-08 Bruno Haible + + * Makefile.vms (LDADD): Take options from .opt files. + (libiconv.opt): New rule. + (gettext.exe, ngettext.exe): Depend on it. + Reported by Jouk Jansen . + +2003-05-22 Bruno Haible + + * gettext-0.12.1 released. + +2003-05-18 Bruno Haible + + * Makefile.msvc (DEBUGFLAGS): New variable. + (gettext.exe, ngettext.exe): Use it, and MFLAGS too. + +2003-05-17 Bruno Haible + + * gettext-0.12 released. + +2003-05-17 Bruno Haible + + * Makefile.msvc (libdir, IIlibdir): New variables. + (gettext.exe, ngettext.exe): Link with iconv.lib, needed by intl.lib. + +2003-04-12 Bruno Haible + + * Makefile.vms: New variables ABIFLAGS, DEFS. Avoid rules with no + lines. Don't use the force target. Correct wildcard syntax. + Suggested by Jouk Jansen . + +2003-03-30 Bruno Haible + + * Makefile.vms: New file. + * Makefile.am (EXTRA_DIST): Add Makefile.vms. + +2003-03-17 Bruno Haible + + Native Woe32/MSVC support. + * Makefile.msvc: New file. + * Makefile.am (EXTRA_DIST): Add it. + +2003-02-28 Bruno Haible + + Support for relocatable installation. + * gettext.c: Include progname.h, relocatable.h. + (program_name): Remove variable. + (main): Use set_program_name. Relocate LOCALEDIR value. Update + copyright year. + * ngettext.c: Include progname.h, relocatable.h. + (program_name): Remove variable. + (main): Use set_program_name. Relocate LOCALEDIR value. Update + copyright year. + * Makefile.am (gettext_CFLAGS, ngettext_CFLAGS): New variables. + (gettext_LDFLAGS, ngettext_LDFLAGS): New variables. + (RELOCATABLE_LIBRARY_PATH, RELOCATABLE_SRC_DIR, RELOCATABLE_BUILD_DIR, + RELOCATABLE_CONFIG_H_DIR): New variables. + +2003-02-12 Bruno Haible + + Extracted from gettext package. + * Makefile.am: New file. + diff -Nru gettext-0.19.6/gettext-runtime/src/Makefile.in gettext-0.19.7/gettext-runtime/src/Makefile.in --- gettext-0.19.6/gettext-runtime/src/Makefile.in 2015-09-11 03:04:54.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/src/Makefile.in 2015-12-27 23:09:25.000000000 +0000 @@ -325,7 +325,7 @@ ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/gettext.sh.in \ - $(top_srcdir)/../build-aux/mkinstalldirs ChangeLog + $(top_srcdir)/../build-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkglibexecdir = @pkglibexecdir@ ACLOCAL = @ACLOCAL@ diff -Nru gettext-0.19.6/gettext-runtime/tests/ChangeLog gettext-0.19.7/gettext-runtime/tests/ChangeLog --- gettext-0.19.6/gettext-runtime/tests/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/tests/ChangeLog 1970-01-01 00:00:00.000000000 +0000 @@ -1,148 +0,0 @@ -2015-09-11 Daiki Ueno - - * gettext 0.19.6 released. - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2014-04-22 Roumen Petrov (tiny change) - - build: Use Automake 'subdir-objects' option - * Makefile.am (AUTOMAKE_OPTIONS): Add 'subdir-objects'. - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2012-12-17 Daiki Ueno - - test-lock: work around pthread-win32 - * test-lock.c (gl_thread_self_pointer): Renamed from - gl_thread_self; all callers changed. Work around pthread-win32. - (gl_thread_join): Add extra RETVALP argument; all callers changed. - - test-lock: merge gnulib changes - 2011-06-09 Bruno Haible - * test-lock.c: Use gl_thread_self_pointer instead of - gl_thread_self. - - 2010-03-25 Bruno Haible - Minor formatting changes. - * test-lock.c: Insert space before function argument list. - Reported by Jim Meyering. - - 2008-12-07 Bruno Haible - * test-lock.c (test_lock, test_rwlock, test_recursive_lock) - (test_once): Mark functions as static. - - 2008-09-30 Yoann Vandoorselaere - Bruno Haible - * test-lock.c (test_lock, test_rwlock, test_recursive_lock) - (test_once): Pass an additional NULL argument to gl_thread_join. - - 2008-09-21 Bruno Haible - * test-lock.c (main): Tweak skip message. - - 2008-08-22 Eric Blake - test-lock: mention why a test is skipped - * test-lock.c (main) [!USE_*_THREADS]: Print why test is skipped. - - 2007-05-28 Eric Blake - Unconditionally include in unit tests. - test-lock.c: Remove #ifdef HAVE_CONFIG_H. - -2012-02-05 Paul Eggert - - * test-lock.c: Spelling fixes. - -2012-01-06 Bruno Haible - - Talk about "native Windows API", not "Woe32". - * test-lock.c (USE_WINDOWS_THREADS): Renamed from USE_WIN32_THREADS. - (TEST_WINDOWS_THREADS): Renamed from TEST_WIN32_THREADS. - -2011-06-03 Bruno Haible - - Copyright: Use LGPL 2.1 instead of LGPL 2.0. - * test-lock.c: Update copyright header. - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2009-12-12 Bruno Haible - - * test-lock.c: Untabify. - -2009-05-21 Bruno Haible - - * Makefile.am (AUTOMAKE_OPTIONS): Add 1.11 and color-tests. - -2008-09-28 Bruno Haible - - * Makefile.am (test_lock_SOURCES): Add threadlib.c. - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-07-25 Bruno Haible - - * Makefile.msvc: Remove file. - * Makefile.am (EXTRA_DIST): Remove Makefile.msvc. - -2006-07-25 Bruno Haible - - * Makefile.vms: Remove file. - * Makefile.am (EXTRA_DIST): Remove Makefile.vms. - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2005-07-16 Bruno Haible - - * test-lock.c (DO_TEST_ONCE): New macro. - (once_execute, once_contender_thread, test_once): New functions. - (main): Also call test_once. - -2005-07-16 Bruno Haible - - * tests-lock.c: New file. - * Makefile.am: New file. - * Makefile.msvc: New file. - * Makefile.vms: New file. - diff -Nru gettext-0.19.6/gettext-runtime/tests/ChangeLog.0 gettext-0.19.7/gettext-runtime/tests/ChangeLog.0 --- gettext-0.19.6/gettext-runtime/tests/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/tests/ChangeLog.0 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,148 @@ +2015-09-11 Daiki Ueno + + * gettext 0.19.6 released. + +2015-07-10 Daiki Ueno + + * gettext 0.19.5 released. + +2014-12-24 Daiki Ueno + + * gettext 0.19.4 released. + +2014-10-15 Daiki Ueno + + * gettext 0.19.3 released. + +2014-07-14 Daiki Ueno + + * gettext 0.19.2 released. + +2014-06-10 Daiki Ueno + + * gettext 0.19.1 released. + +2014-06-02 Daiki Ueno + + * gettext 0.19 released. + +2014-04-22 Roumen Petrov (tiny change) + + build: Use Automake 'subdir-objects' option + * Makefile.am (AUTOMAKE_OPTIONS): Add 'subdir-objects'. + +2012-12-25 Daiki Ueno + + * gettext-0.18.2 released. + +2012-12-17 Daiki Ueno + + test-lock: work around pthread-win32 + * test-lock.c (gl_thread_self_pointer): Renamed from + gl_thread_self; all callers changed. Work around pthread-win32. + (gl_thread_join): Add extra RETVALP argument; all callers changed. + + test-lock: merge gnulib changes + 2011-06-09 Bruno Haible + * test-lock.c: Use gl_thread_self_pointer instead of + gl_thread_self. + + 2010-03-25 Bruno Haible + Minor formatting changes. + * test-lock.c: Insert space before function argument list. + Reported by Jim Meyering. + + 2008-12-07 Bruno Haible + * test-lock.c (test_lock, test_rwlock, test_recursive_lock) + (test_once): Mark functions as static. + + 2008-09-30 Yoann Vandoorselaere + Bruno Haible + * test-lock.c (test_lock, test_rwlock, test_recursive_lock) + (test_once): Pass an additional NULL argument to gl_thread_join. + + 2008-09-21 Bruno Haible + * test-lock.c (main): Tweak skip message. + + 2008-08-22 Eric Blake + test-lock: mention why a test is skipped + * test-lock.c (main) [!USE_*_THREADS]: Print why test is skipped. + + 2007-05-28 Eric Blake + Unconditionally include in unit tests. + test-lock.c: Remove #ifdef HAVE_CONFIG_H. + +2012-02-05 Paul Eggert + + * test-lock.c: Spelling fixes. + +2012-01-06 Bruno Haible + + Talk about "native Windows API", not "Woe32". + * test-lock.c (USE_WINDOWS_THREADS): Renamed from USE_WIN32_THREADS. + (TEST_WINDOWS_THREADS): Renamed from TEST_WIN32_THREADS. + +2011-06-03 Bruno Haible + + Copyright: Use LGPL 2.1 instead of LGPL 2.0. + * test-lock.c: Update copyright header. + +2010-06-04 Bruno Haible + + * gettext-0.18.1 released. + +2010-05-09 Bruno Haible + + * gettext-0.18 released. + +2009-12-12 Bruno Haible + + * test-lock.c: Untabify. + +2009-05-21 Bruno Haible + + * Makefile.am (AUTOMAKE_OPTIONS): Add 1.11 and color-tests. + +2008-09-28 Bruno Haible + + * Makefile.am (test_lock_SOURCES): Add threadlib.c. + +2007-11-07 Bruno Haible + + * gettext-0.17 released. + +2006-11-27 Bruno Haible + + * gettext-0.16.1 released. + +2006-10-26 Bruno Haible + + * gettext-0.16 released. + +2006-07-25 Bruno Haible + + * Makefile.msvc: Remove file. + * Makefile.am (EXTRA_DIST): Remove Makefile.msvc. + +2006-07-25 Bruno Haible + + * Makefile.vms: Remove file. + * Makefile.am (EXTRA_DIST): Remove Makefile.vms. + +2006-07-21 Bruno Haible + + * gettext-0.15 released. + +2005-07-16 Bruno Haible + + * test-lock.c (DO_TEST_ONCE): New macro. + (once_execute, once_contender_thread, test_once): New functions. + (main): Also call test_once. + +2005-07-16 Bruno Haible + + * tests-lock.c: New file. + * Makefile.am: New file. + * Makefile.msvc: New file. + * Makefile.vms: New file. + diff -Nru gettext-0.19.6/gettext-runtime/tests/Makefile.am gettext-0.19.7/gettext-runtime/tests/Makefile.am --- gettext-0.19.6/gettext-runtime/tests/Makefile.am 2015-08-21 07:18:25.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/tests/Makefile.am 2015-12-08 12:50:04.000000000 +0000 @@ -26,7 +26,7 @@ -I.. \ -I$(srcdir)/../intl -noinst_PROGRAMS = test-lock +check_PROGRAMS = test-lock test_lock_SOURCES = test-lock.c ../intl/lock.c ../intl/threadlib.c test_lock_LDADD = @LIBMULTITHREAD@ @LIBSCHED@ diff -Nru gettext-0.19.6/gettext-runtime/tests/Makefile.in gettext-0.19.7/gettext-runtime/tests/Makefile.in --- gettext-0.19.6/gettext-runtime/tests/Makefile.in 2015-09-11 03:04:54.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/tests/Makefile.in 2015-12-27 23:09:25.000000000 +0000 @@ -13,7 +13,6 @@ # PARTICULAR PURPOSE. @SET_MAKE@ - VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ @@ -88,7 +87,7 @@ build_triplet = @build@ host_triplet = @host@ TESTS = test-lock$(EXEEXT) -noinst_PROGRAMS = test-lock$(EXEEXT) +check_PROGRAMS = test-lock$(EXEEXT) subdir = tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \ @@ -207,7 +206,6 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) am__dirstamp = $(am__leading_dot)dirstamp am_test_lock_OBJECTS = test-lock.$(OBJEXT) ../intl/lock.$(OBJEXT) \ ../intl/threadlib.$(OBJEXT) @@ -482,7 +480,7 @@ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/../build-aux/mkinstalldirs \ - $(top_srcdir)/../build-aux/test-driver ChangeLog + $(top_srcdir)/../build-aux/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkglibexecdir = @pkglibexecdir@ ACLOCAL = @ACLOCAL@ @@ -1418,8 +1416,8 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ @@ -1640,7 +1638,7 @@ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; -recheck: all +recheck: all $(check_PROGRAMS) @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ @@ -1704,9 +1702,10 @@ fi; \ done check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am -all-am: Makefile $(PROGRAMS) +all-am: Makefile installdirs: install: install-am install-exec: install-exec-am @@ -1744,7 +1743,7 @@ @echo "it deletes files that may require special tools to rebuild." clean: clean-am -clean-am: clean-generic clean-libtool clean-local clean-noinstPROGRAMS \ +clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \ mostlyclean-am distclean: distclean-am @@ -1814,7 +1813,7 @@ .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ - clean-generic clean-libtool clean-local clean-noinstPROGRAMS \ + clean-checkPROGRAMS clean-generic clean-libtool clean-local \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ diff -Nru gettext-0.19.6/gettext-runtime/tests/test-lock.c gettext-0.19.7/gettext-runtime/tests/test-lock.c --- gettext-0.19.6/gettext-runtime/tests/test-lock.c 2015-08-21 07:18:25.000000000 +0000 +++ gettext-0.19.7/gettext-runtime/tests/test-lock.c 2015-12-23 07:08:27.000000000 +0000 @@ -81,7 +81,11 @@ #if TEST_POSIX_THREADS # include -# include +# ifndef __KLIBC__ +# include +# else +# define sched_yield() pthread_yield() +# endif typedef pthread_t gl_thread_t; static inline gl_thread_t gl_thread_create (void * (*func) (void *), void *arg) { diff -Nru gettext-0.19.6/gettext-tools/ABOUT-NLS gettext-0.19.7/gettext-tools/ABOUT-NLS --- gettext-0.19.6/gettext-tools/ABOUT-NLS 2015-09-11 01:43:14.000000000 +0000 +++ gettext-0.19.7/gettext-tools/ABOUT-NLS 2015-12-27 22:58:08.000000000 +0000 @@ -1,16 +1,16 @@ 1 Notes on the Free Translation Project *************************************** -Free software is going international! The Free Translation Project is -a way to get maintainers of free software, translators, and users all +Free software is going international! The Free Translation Project is a +way to get maintainers of free software, translators, and users all together, so that free software will gradually become able to speak many languages. A few packages already provide translations for their messages. - If you found this `ABOUT-NLS' file inside a distribution, you may -assume that the distributed package does use GNU `gettext' internally, + If you found this 'ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU 'gettext' internally, itself available at your nearest GNU archive site. But you do _not_ -need to install GNU `gettext' prior to configuring, installing or using +need to install GNU 'gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also @@ -23,12 +23,12 @@ Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such -packages use GNU `gettext'. Other packages have their own ways to -internationalization, predating GNU `gettext'. +packages use GNU 'gettext'. Other packages have their own ways to +internationalization, predating GNU 'gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already -provides the GNU `gettext' functions. Installers may use special +provides the GNU 'gettext' functions. Installers may use special options at configuration time for changing the default behaviour. The command: @@ -36,72 +36,71 @@ will _totally_ disable translation of messages. - When you already have GNU `gettext' installed on your system and run -configure without an option for your new package, `configure' will -probably detect the previously built and installed `libintl' library -and will decide to use it. If not, you may have to to use the -`--with-libintl-prefix' option to tell `configure' where to look for it. + When you already have GNU 'gettext' installed on your system and run +configure without an option for your new package, 'configure' will +probably detect the previously built and installed 'libintl' library and +will decide to use it. If not, you may have to to use the +'--with-libintl-prefix' option to tell 'configure' where to look for it. - Internationalized packages usually have many `po/LL.po' files, where + Internationalized packages usually have many 'po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless -translations have been forbidden at `configure' time by using the -`--disable-nls' switch, all available translations are installed -together with the package. However, the environment variable `LINGUAS' +translations have been forbidden at 'configure' time by using the +'--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable 'LINGUAS' may be set, prior to configuration, to limit the installed set. -`LINGUAS' should then contain a space separated list of two-letter +'LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. 1.2 Using This Package ====================== As a user, if your language has been installed for this package, you -only have to set the `LANG' environment variable to the appropriate -`LL_CC' combination. If you happen to have the `LC_ALL' or some other -`LC_xxx' environment variables set, you should unset them before -setting `LANG', otherwise the setting of `LANG' will not have the -desired effect. Here `LL' is an ISO 639 two-letter language code, and -`CC' is an ISO 3166 two-letter country code. For example, let's -suppose that you speak German and live in Germany. At the shell -prompt, merely execute `setenv LANG de_DE' (in `csh'), -`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). -This can be done from your `.login' or `.profile' file, once and for -all. +only have to set the 'LANG' environment variable to the appropriate +'LL_CC' combination. If you happen to have the 'LC_ALL' or some other +'LC_xxx' environment variables set, you should unset them before setting +'LANG', otherwise the setting of 'LANG' will not have the desired +effect. Here 'LL' is an ISO 639 two-letter language code, and 'CC' is +an ISO 3166 two-letter country code. For example, let's suppose that +you speak German and live in Germany. At the shell prompt, merely +execute 'setenv LANG de_DE' (in 'csh'), 'export LANG; LANG=de_DE' (in +'sh') or 'export LANG=de_DE' (in 'bash'). This can be done from your +'.login' or '.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For -example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The +example, 'de_AT' is used for Austria, and 'pt_BR' for Brazil. The country code serves to distinguish the dialects. - The locale naming convention of `LL_CC', with `LL' denoting the -language and `CC' denoting the country, is the one use on systems based -on GNU libc. On other systems, some variations of this scheme are -used, such as `LL' or `LL_CC.ENCODING'. You can get the list of -locales supported by your system for your language by running the -command `locale -a | grep '^LL''. + The locale naming convention of 'LL_CC', with 'LL' denoting the +language and 'CC' denoting the country, is the one use on systems based +on GNU libc. On other systems, some variations of this scheme are used, +such as 'LL' or 'LL_CC.ENCODING'. You can get the list of locales +supported by your system for your language by running the command +'locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called -`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' -for the purpose of message handling, but you still need to have `LANG' +'LANGUAGE'. GNU 'gettext' gives preference to 'LANGUAGE' over 'LANG' +for the purpose of message handling, but you still need to have 'LANG' set to the primary language; this is required by other parts of the -system libraries. For example, some Swedish users who would rather -read translations in German than English for when Swedish is not -available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. +system libraries. For example, some Swedish users who would rather read +translations in German than English for when Swedish is not available, +set 'LANGUAGE' to 'sv:de' while leaving 'LANG' to 'sv_SE'. Special advice for Norwegian users: The language code for Norwegian -bokma*l changed from `no' to `nb' recently (in 2003). During the +bokma*l changed from 'no' to 'nb' recently (in 2003). During the transition period, while some message catalogs for this language are -installed under `nb' and some older ones under `no', it's recommended -for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and +installed under 'nb' and some older ones under 'no', it's recommended +for Norwegian users to set 'LANGUAGE' to 'nb:no' so that both newer and older translations are used. - In the `LANGUAGE' environment variable, but not in the `LANG' -environment variable, `LL_CC' combinations can be abbreviated as `LL' -to denote the language's main dialect. For example, `de' is equivalent -to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' -(Portuguese as spoken in Portugal) in this context. + In the 'LANGUAGE' environment variable, but not in the 'LANG' +environment variable, 'LL_CC' combinations can be abbreviated as 'LL' to +denote the language's main dialect. For example, 'de' is equivalent to +'de_DE' (German as spoken in Germany), and 'pt' to 'pt_PT' (Portuguese +as spoken in Portugal) in this context. 1.3 Translating Teams ===================== @@ -111,22 +110,22 @@ able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, -`http://translationproject.org/', in the "Teams" area. +'http://translationproject.org/', in the "Teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has -`-request' appended. For example, speakers of Swedish can send a -message to `sv-request@li.org', having this message body: +'-request' appended. For example, speakers of Swedish can send a +message to 'sv-request@li.org', having this message body: subscribe - Keep in mind that team members are expected to participate -_actively_ in translations, or at solving translational difficulties, -rather than merely lurking around. If your team does not exist yet and -you want to start one, or if you are unsure about what to do or how to -get started, please write to `coordinator@translationproject.org' to -reach the coordinator for all translator teams. + Keep in mind that team members are expected to participate _actively_ +in translations, or at solving translational difficulties, rather than +merely lurking around. If your team does not exist yet and you want to +start one, or if you are unsure about what to do or how to get started, +please write to 'coordinator@translationproject.org' to reach the +coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skills are praised more than @@ -136,9 +135,9 @@ ====================== Languages are not equally supported in all packages. The following -matrix shows the current state of internationalization, as of June -2010. The matrix shows, in regard of each package, for which languages -PO files have been submitted to translation coordination, with a +matrix shows the current state of internationalization, as of Jun 2014. +The matrix shows, in regard of each package, for which languages PO +files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am an ar as ast az be bg bn bn_IN bs ca crh cs @@ -189,7 +188,6 @@ gettext-examples | [] [] [] [] [] | gettext-runtime | [] [] [] | gettext-tools | [] [] | - gip | [] [] | gjay | | glunarclock | [] [] [] | gnubiff | [] | @@ -202,9 +200,8 @@ gold | | gphoto2 | [] | gprof | [] | - gpsdrive | | gramadoir | | - grep | [] [] | + grep | [] [] [] | grub | [] | gsasl | | gss | | @@ -215,7 +212,6 @@ gstreamer | [] [] [] [] | gtick | [] | gtkam | [] [] | - gtkorphan | [] [] | gtkspell | [] [] [] [] [] | guix | | guix-packages | | @@ -242,7 +238,6 @@ libexif | () | libextractor | | libgnutls | [] | - libgpg-error | [] | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | | @@ -308,14 +303,14 @@ wcd | | wcd-man | | wdiff | [] [] | - wget | [] [] | + wget | [] | wyslij-po | | xboard | | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +---------------------------------------------------+ af am an ar as ast az be bg bn bn_IN bs ca crh cs - 4 0 2 4 3 11 0 8 24 3 3 1 55 4 76 + 4 0 2 5 3 11 0 8 23 3 3 1 54 4 73 da de el en en_GB en_ZA eo es et eu fa fi fr +--------------------------------------------------+ @@ -323,7 +318,7 @@ aegis | [] [] [] [] | anubis | [] [] [] [] [] | aspell | [] [] [] [] [] [] [] | - bash | [] [] [] [] [] | + bash | [] [] [] | bfd | [] [] [] [] | binutils | [] [] [] | bison | [] [] [] [] [] [] [] [] | @@ -339,7 +334,7 @@ cpplib | [] [] [] [] [] [] | cryptsetup | [] [] [] [] [] | datamash | [] [] [] [] | - denemo | | + denemo | [] | dfarc | [] [] [] [] [] [] | dialog | [] [] [] [] [] [] [] [] [] | dico | [] [] [] [] | @@ -365,7 +360,6 @@ gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] | - gip | [] [] [] [] [] [] [] | gjay | [] [] [] [] | glunarclock | [] [] [] [] [] | gnubiff | () [] [] () | @@ -378,7 +372,6 @@ gold | [] [] [] | gphoto2 | [] () [] [] | gprof | [] [] [] [] [] [] | - gpsdrive | [] [] [] [] | gramadoir | [] [] [] [] [] | grep | [] [] [] [] [] [] [] | grub | [] [] [] [] [] | @@ -391,9 +384,8 @@ gstreamer | [] [] [] [] [] [] [] | gtick | [] () [] [] [] | gtkam | [] () [] [] [] [] | - gtkorphan | [] [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] | - guix | [] [] [] | + guix | [] [] | guix-packages | | gutenprint | [] [] [] [] | hello | [] [] [] [] [] [] [] [] | @@ -418,7 +410,6 @@ libexif | [] [] () [] [] | libextractor | [] | libgnutls | [] [] [] [] | - libgpg-error | [] [] [] | libgphoto2 | [] () [] | libgphoto2_port | [] () [] [] [] [] | libgsasl | [] [] [] [] [] | @@ -450,7 +441,7 @@ pspp | [] [] [] | pushover | () [] [] [] | pwdutils | [] [] [] | - pyspread | [] [] | + pyspread | [] [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] | recutils | [] [] [] [] | @@ -491,7 +482,7 @@ xkeyboard-config | [] [] [] [] [] [] [] | +--------------------------------------------------+ da de el en en_GB en_ZA eo es et eu fa fi fr - 123 134 32 1 6 0 97 97 23 14 4 106 139 + 120 130 32 1 6 0 94 95 22 13 4 103 136 ga gd gl gu he hi hr hu hy ia id is it ja ka kk +-------------------------------------------------+ @@ -499,7 +490,7 @@ aegis | [] | anubis | [] [] [] [] | aspell | [] [] [] [] [] | - bash | [] [] [] [] | + bash | [] [] [] | bfd | [] [] | binutils | [] [] [] | bison | [] | @@ -541,7 +532,6 @@ gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] | gettext-tools | [] [] [] | - gip | [] [] [] [] [] [] | gjay | [] | glunarclock | [] [] [] [] [] [] | gnubiff | [] [] () | @@ -554,7 +544,6 @@ gold | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] [] | - gpsdrive | [] [] [] [] | gramadoir | [] [] [] | grep | [] [] [] [] [] [] [] | grub | [] [] [] | @@ -567,9 +556,8 @@ gstreamer | [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] | - gtkorphan | [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] [] | - guix | [] | + guix | | guix-packages | | gutenprint | [] [] [] | hello | [] [] [] [] [] | @@ -586,7 +574,7 @@ iso_639_5 | | jwhois | [] [] [] [] | kbd | [] [] [] | - klavaro | [] [] [] [] | + klavaro | [] [] [] [] [] | latrine | [] | ld | [] [] [] [] | leafpad | [] [] [] [] [] [] [] () | @@ -594,7 +582,6 @@ libexif | [] | libextractor | | libgnutls | [] | - libgpg-error | [] [] [] | libgphoto2 | [] [] | libgphoto2_port | [] [] | libgsasl | [] [] [] [] | @@ -660,14 +647,14 @@ wcd | | wcd-man | | wdiff | [] [] [] | - wget | [] [] [] [] | + wget | [] [] [] | wyslij-po | [] [] [] | xboard | | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] | +-------------------------------------------------+ ga gd gl gu he hi hr hu hy ia id is it ja ka kk - 36 2 49 4 8 2 54 75 2 6 84 11 89 60 0 3 + 35 2 47 4 8 2 53 69 2 6 80 11 86 58 0 3 kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl +--------------------------------------------------+ @@ -717,7 +704,6 @@ gettext-examples | [] [] [] [] [] [] | gettext-runtime | [] [] | gettext-tools | [] | - gip | [] [] [] | gjay | | glunarclock | [] [] | gnubiff | [] | @@ -730,20 +716,18 @@ gold | | gphoto2 | [] | gprof | [] [] | - gpsdrive | [] | gramadoir | [] | grep | [] [] | grub | [] [] [] | gsasl | [] | gss | | - gst-plugins-bad | [] | + gst-plugins-bad | [] [] | gst-plugins-base | [] [] [] | gst-plugins-good | [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | [] [] | gtick | [] | gtkam | [] [] | - gtkorphan | [] [] | gtkspell | [] [] [] [] [] [] [] | guix | | guix-packages | | @@ -770,14 +754,13 @@ libexif | [] | libextractor | [] | libgnutls | [] [] | - libgpg-error | [] | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | [] | libiconv | [] [] | libidn | [] | liferea | [] [] [] | - lilypond | | + lilypond | [] | lordsawar | | lprng | | lynx | [] | @@ -843,7 +826,7 @@ xkeyboard-config | [] [] [] | +--------------------------------------------------+ kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl - 5 11 4 6 0 13 24 3 3 3 4 12 2 40 1 126 + 5 11 4 6 0 13 22 3 3 3 4 11 2 40 1 124 nn or os pa pl ps pt pt_BR ro ru rw sk sl sq sr +--------------------------------------------------+ @@ -893,7 +876,6 @@ gettext-examples | [] [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] [] [] | - gip | [] [] [] [] [] | gjay | [] | glunarclock | [] [] [] [] [] [] | gnubiff | [] | @@ -906,7 +888,6 @@ gold | | gphoto2 | [] [] [] [] [] | gprof | [] [] [] [] | - gpsdrive | [] | gramadoir | [] [] | grep | [] [] [] [] [] [] | grub | [] [] [] [] [] | @@ -919,11 +900,10 @@ gstreamer | [] [] [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] [] | - gtkorphan | [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] | guix | | guix-packages | | - gutenprint | [] | + gutenprint | [] [] | hello | [] [] [] [] [] [] | help2man | [] [] [] [] | help2man-texi | [] | @@ -946,7 +926,6 @@ libexif | [] () [] | libextractor | [] | libgnutls | [] | - libgpg-error | [] [] [] | libgphoto2 | [] | libgphoto2_port | [] [] [] [] [] | libgsasl | [] [] [] [] | @@ -992,13 +971,13 @@ solfege | [] [] [] | solfege-manual | [] [] | spotmachine | [] [] | - sudo | [] [] [] [] [] | + sudo | [] [] [] [] [] [] | sudoers | [] [] [] [] | sysstat | [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] [] | - tigervnc | | + tigervnc | [] | tin | [] | tin-man | | tracgoogleappsa... | [] [] [] [] | @@ -1012,14 +991,14 @@ wcd | | wcd-man | | wdiff | [] [] [] [] [] | - wget | [] [] [] [] [] | + wget | [] [] [] [] | wyslij-po | [] [] [] [] | - xboard | [] [] | + xboard | [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | +--------------------------------------------------+ nn or os pa pl ps pt pt_BR ro ru rw sk sl sq sr - 7 3 1 6 117 1 12 84 33 82 3 37 45 7 98 + 7 3 1 6 114 1 12 83 32 80 3 38 45 7 94 sv sw ta te tg th tr uk ur vi wa wo zh_CN zh_HK +---------------------------------------------------+ @@ -1027,19 +1006,19 @@ aegis | [] | anubis | [] [] [] [] | aspell | [] [] [] [] | - bash | [] [] [] [] [] | + bash | [] [] [] [] | bfd | [] [] | binutils | [] [] [] | bison | [] [] [] [] | bison-runtime | [] [] [] [] [] [] | buzztrax | [] [] [] | - ccd2cue | [] [] | - ccide | [] [] [] | + ccd2cue | [] [] [] | + ccide | [] [] [] [] | cflow | [] [] [] [] | clisp | | coreutils | [] [] [] [] | cpio | [] [] [] [] [] | - cppi | [] [] [] | + cppi | [] [] [] [] | cpplib | [] [] [] [] [] | cryptsetup | [] [] [] | datamash | [] [] [] | @@ -1051,14 +1030,14 @@ dink | | direvent | [] [] | doodle | [] [] | - dos2unix | [] [] [] | - dos2unix-man | [] [] | + dos2unix | [] [] [] [] | + dos2unix-man | [] [] [] | e2fsprogs | [] [] [] [] | enscript | [] [] [] [] | exif | [] [] [] [] [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] | - flex | [] [] [] | + flex | [] [] [] [] | freedink | [] [] | fusionforge | | gas | [] | @@ -1069,11 +1048,10 @@ gettext-examples | [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] | - gip | [] [] [] [] | gjay | [] [] | glunarclock | [] [] [] [] | gnubiff | [] [] | - gnubik | [] [] [] | + gnubik | [] [] [] [] | gnucash | () () () () [] | gnuchess | [] [] | gnulib | [] [] [] [] | @@ -1082,7 +1060,6 @@ gold | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] [] | - gpsdrive | [] [] [] | gramadoir | [] [] [] | grep | [] [] [] [] [] | grub | [] [] [] [] | @@ -1095,12 +1072,11 @@ gstreamer | [] [] [] [] [] | gtick | [] [] [] | gtkam | [] [] [] [] | - gtkorphan | [] [] [] | gtkspell | [] [] [] [] [] [] [] [] | guix | [] | guix-packages | | - gutenprint | [] [] [] | - hello | [] [] [] [] [] | + gutenprint | [] [] [] [] | + hello | [] [] [] [] [] [] | help2man | [] [] [] | help2man-texi | [] | hylafax | [] | @@ -1122,7 +1098,6 @@ libexif | [] () | libextractor | [] [] | libgnutls | [] [] [] [] | - libgpg-error | [] [] [] [] | libgphoto2 | [] [] | libgphoto2_port | [] [] [] [] | libgsasl | [] [] [] [] | @@ -1136,7 +1111,7 @@ m4 | [] [] [] | mailfromd | [] [] | mailutils | [] | - make | [] [] [] | + make | [] [] [] [] | man-db | [] [] | man-db-manpages | [] | midi-instruments | [] [] [] [] [] [] | @@ -1144,13 +1119,13 @@ mkisofs | [] [] [] | myserver | [] | nano | [] [] [] [] | - opcodes | [] [] | + opcodes | [] [] [] | parted | [] [] [] [] [] | pies | [] [] | popt | [] [] [] [] [] [] [] | procps-ng | [] [] | procps-ng-man | [] | - psmisc | [] [] [] | + psmisc | [] [] [] [] | pspp | [] [] [] | pushover | [] | pwdutils | [] [] | @@ -1163,14 +1138,14 @@ sarg | | sed | [] [] [] [] [] | sharutils | [] [] [] | - shishi | [] | - skribilo | | + shishi | [] [] | + skribilo | [] | solfege | [] [] [] | solfege-manual | [] | - spotmachine | [] [] | + spotmachine | [] [] [] | sudo | [] [] [] [] | sudoers | [] [] [] | - sysstat | [] [] [] [] | + sysstat | [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] | @@ -1185,17 +1160,17 @@ vmm | | vorbis-tools | [] [] | wastesedge | | - wcd | [] [] | + wcd | [] [] [] | wcd-man | [] | - wdiff | [] [] [] | - wget | [] [] [] | + wdiff | [] [] [] [] | + wget | [] [] [] | wyslij-po | [] [] | xboard | [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | +---------------------------------------------------+ sv sw ta te tg th tr uk ur vi wa wo zh_CN zh_HK - 87 1 4 3 0 14 52 114 1 130 7 1 88 7 + 91 1 4 3 0 13 50 113 1 126 7 1 95 7 zh_TW +-------+ @@ -1203,23 +1178,23 @@ aegis | | 9 anubis | | 19 aspell | | 28 - bash | [] | 25 + bash | [] | 21 bfd | | 9 binutils | | 12 bison | [] | 18 bison-runtime | [] | 38 buzztrax | | 8 - ccd2cue | | 7 - ccide | | 16 + ccd2cue | | 8 + ccide | | 17 cflow | | 15 clisp | | 10 coreutils | | 20 - cpio | [] | 21 - cppi | | 16 + cpio | | 20 + cppi | | 17 cpplib | [] | 19 cryptsetup | | 13 datamash | | 11 - denemo | | 3 + denemo | | 4 dfarc | | 16 dialog | [] | 42 dico | | 6 @@ -1227,14 +1202,14 @@ dink | | 9 direvent | | 10 doodle | | 12 - dos2unix | [] | 17 - dos2unix-man | | 8 + dos2unix | [] | 18 + dos2unix-man | | 9 e2fsprogs | | 14 enscript | | 21 exif | | 26 fetchmail | | 19 findutils | | 28 - flex | [] | 18 + flex | [] | 19 freedink | | 23 fusionforge | | 3 gas | | 5 @@ -1245,12 +1220,11 @@ gettext-examples | [] | 40 gettext-runtime | [] | 34 gettext-tools | [] | 24 - gip | [] | 28 gjay | | 8 glunarclock | [] | 27 gnubiff | | 9 - gnubik | | 18 - gnucash | () | 6 + gnubik | | 19 + gnucash | () | 7 gnuchess | | 10 gnulib | | 23 gnunet | | 1 @@ -1258,25 +1232,23 @@ gold | | 7 gphoto2 | [] | 19 gprof | | 21 - gpsdrive | | 13 gramadoir | | 14 - grep | [] | 30 + grep | [] | 31 grub | | 21 gsasl | [] | 19 gss | | 17 - gst-plugins-bad | | 13 + gst-plugins-bad | | 14 gst-plugins-base | | 27 gst-plugins-good | | 32 gst-plugins-ugly | | 34 gstreamer | [] | 31 gtick | | 19 gtkam | | 24 - gtkorphan | | 20 gtkspell | [] | 48 - guix | | 5 + guix | | 3 guix-packages | | 0 - gutenprint | | 13 - hello | [] | 29 + gutenprint | | 15 + hello | [] | 30 help2man | | 18 help2man-texi | | 5 hylafax | | 5 @@ -1290,7 +1262,7 @@ iso_639_5 | | 2 jwhois | [] | 20 kbd | | 16 - klavaro | | 29 + klavaro | | 30 latrine | | 7 ld | [] | 15 leafpad | [] | 40 @@ -1298,21 +1270,20 @@ libexif | | 9 libextractor | | 5 libgnutls | | 13 - libgpg-error | | 15 libgphoto2 | | 9 libgphoto2_port | [] | 19 libgsasl | | 18 libiconv | [] | 29 libidn | | 17 liferea | | 29 - lilypond | | 10 + lilypond | | 11 lordsawar | | 3 lprng | | 3 lynx | | 19 m4 | [] | 22 mailfromd | | 4 mailutils | | 6 - make | | 18 + make | | 19 man-db | | 14 man-db-manpages | | 9 midi-instruments | [] | 43 @@ -1320,17 +1291,17 @@ mkisofs | | 13 myserver | | 9 nano | [] | 29 - opcodes | | 11 + opcodes | | 12 parted | [] | 21 pies | | 4 popt | [] | 36 procps-ng | | 5 procps-ng-man | | 4 - psmisc | [] | 21 + psmisc | [] | 22 pspp | | 13 pushover | | 6 pwdutils | | 8 - pyspread | | 5 + pyspread | | 6 radius | | 9 recode | | 31 recutils | | 9 @@ -1339,18 +1310,18 @@ sarg | | 4 sed | [] | 34 sharutils | | 12 - shishi | | 6 - skribilo | | 3 + shishi | | 7 + skribilo | | 4 solfege | | 19 solfege-manual | | 9 - spotmachine | | 9 - sudo | | 23 + spotmachine | | 10 + sudo | | 24 sudoers | | 20 - sysstat | | 21 + sysstat | | 22 tar | [] | 30 texinfo | | 17 texinfo_document | | 11 - tigervnc | | 10 + tigervnc | | 11 tin | [] | 7 tin-man | | 1 tracgoogleappsa... | [] | 22 @@ -1361,17 +1332,17 @@ vmm | | 3 vorbis-tools | | 13 wastesedge | | 2 - wcd | | 7 + wcd | | 8 wcd-man | | 3 - wdiff | [] | 22 - wget | | 22 + wdiff | [] | 23 + wget | | 19 wyslij-po | | 14 - xboard | | 8 + xboard | | 9 xdg-user-dirs | [] | 68 xkeyboard-config | [] | 27 +-------+ 90 teams zh_TW - 170 domains 44 2805 + 166 domains 42 2748 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are @@ -1379,32 +1350,30 @@ dialects. For a PO file in the matrix above to be effective, the package to -which it applies should also have been internationalized and -distributed as such by its maintainer. There might be an observable -lag between the mere existence a PO file and its wide availability in a -distribution. - - If June 2010 seems to be old, you may fetch a more recent copy of -this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date -matrix with full percentage details can be found at -`http://translationproject.org/extra/matrix.html'. +which it applies should also have been internationalized and distributed +as such by its maintainer. There might be an observable lag between the +mere existence a PO file and its wide availability in a distribution. + + If Jun 2014 seems to be old, you may fetch a more recent copy of this +'ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix +with full percentage details can be found at +'http://translationproject.org/extra/matrix.html'. -1.5 Using `gettext' in new packages +1.5 Using 'gettext' in new packages =================================== If you are writing a freely available program and want to -internationalize it you are welcome to use GNU `gettext' in your -package. Of course you have to respect the GNU Library General Public -License which covers the use of the GNU `gettext' library. This means -in particular that even non-free programs can use `libintl' as a shared -library, whereas only free software can use `libintl' as a static -library or use modified versions of `libintl'. +internationalize it you are welcome to use GNU 'gettext' in your +package. Of course you have to respect the GNU Lesser General Public +License which covers the use of the GNU 'gettext' library. This means +in particular that even non-free programs can use 'libintl' as a shared +library, whereas only free software can use 'libintl' as a static +library or use modified versions of 'libintl'. Once the sources are changed appropriately and the setup can handle -the use of `gettext' the only thing missing are the translations. The +the use of 'gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact -`coordinator@translationproject.org' to make the `.pot' files available +'coordinator@translationproject.org' to make the '.pot' files available to the translation teams. - diff -Nru gettext-0.19.6/gettext-tools/aclocal.m4 gettext-0.19.7/gettext-tools/aclocal.m4 --- gettext-0.19.6/gettext-tools/aclocal.m4 2015-09-11 03:05:03.000000000 +0000 +++ gettext-0.19.7/gettext-tools/aclocal.m4 2015-12-27 23:09:33.000000000 +0000 @@ -56,6 +56,66 @@ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) +# Copyright (C) 2011-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_AR([ACT-IF-FAIL]) +# ------------------------- +# Try to determine the archiver interface, and trigger the ar-lib wrapper +# if it is needed. If the detection of archiver interface fails, run +# ACT-IF-FAIL (default is to abort configure with a proper error message). +AC_DEFUN([AM_PROG_AR], +[AC_BEFORE([$0], [LT_INIT])dnl +AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([ar-lib])dnl +AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) +: ${AR=ar} + +AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], + [AC_LANG_PUSH([C]) + am_cv_ar_interface=ar + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], + [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + ]) + AC_LANG_POP([C])]) + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + m4_default([$1], + [AC_MSG_ERROR([could not determine $AR interface])]) + ;; +esac +AC_SUBST([AR])dnl +]) + # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. @@ -1215,6 +1275,7 @@ m4_include([gnulib-m4/btowc.m4]) m4_include([gnulib-m4/byteswap.m4]) m4_include([gnulib-m4/canonicalize.m4]) +m4_include([gnulib-m4/check-math-lib.m4]) m4_include([gnulib-m4/close.m4]) m4_include([gnulib-m4/closedir.m4]) m4_include([gnulib-m4/configmake.m4]) @@ -1222,6 +1283,7 @@ m4_include([gnulib-m4/csharp.m4]) m4_include([gnulib-m4/csharpcomp.m4]) m4_include([gnulib-m4/csharpexec.m4]) +m4_include([gnulib-m4/ctype.m4]) m4_include([gnulib-m4/curses.m4]) m4_include([gnulib-m4/dirent_h.m4]) m4_include([gnulib-m4/double-slash-root.m4]) @@ -1234,7 +1296,10 @@ m4_include([gnulib-m4/error.m4]) m4_include([gnulib-m4/execute.m4]) m4_include([gnulib-m4/exponentd.m4]) +m4_include([gnulib-m4/exponentf.m4]) +m4_include([gnulib-m4/exponentl.m4]) m4_include([gnulib-m4/extensions.m4]) +m4_include([gnulib-m4/fabs.m4]) m4_include([gnulib-m4/fatal-signal.m4]) m4_include([gnulib-m4/fcntl.m4]) m4_include([gnulib-m4/fcntl_h.m4]) @@ -1264,6 +1329,11 @@ m4_include([gnulib-m4/inline.m4]) m4_include([gnulib-m4/intmax_t.m4]) m4_include([gnulib-m4/inttypes.m4]) +m4_include([gnulib-m4/isinf.m4]) +m4_include([gnulib-m4/isnan.m4]) +m4_include([gnulib-m4/isnand.m4]) +m4_include([gnulib-m4/isnanf.m4]) +m4_include([gnulib-m4/isnanl.m4]) m4_include([gnulib-m4/iswblank.m4]) m4_include([gnulib-m4/java.m4]) m4_include([gnulib-m4/javacomp.m4]) @@ -1286,10 +1356,13 @@ m4_include([gnulib-m4/locale-zh.m4]) m4_include([gnulib-m4/locale_h.m4]) m4_include([gnulib-m4/localename.m4]) +m4_include([gnulib-m4/log10.m4]) m4_include([gnulib-m4/lseek.m4]) m4_include([gnulib-m4/lstat.m4]) m4_include([gnulib-m4/malloc.m4]) m4_include([gnulib-m4/malloca.m4]) +m4_include([gnulib-m4/math_h.m4]) +m4_include([gnulib-m4/mathfunc.m4]) m4_include([gnulib-m4/mbchar.m4]) m4_include([gnulib-m4/mbiter.m4]) m4_include([gnulib-m4/mbrtowc.m4]) @@ -1319,6 +1392,7 @@ m4_include([gnulib-m4/pathmax.m4]) m4_include([gnulib-m4/pipe2.m4]) m4_include([gnulib-m4/posix_spawn.m4]) +m4_include([gnulib-m4/pow.m4]) m4_include([gnulib-m4/printf.m4]) m4_include([gnulib-m4/putenv.m4]) m4_include([gnulib-m4/quote.m4]) @@ -1343,6 +1417,7 @@ m4_include([gnulib-m4/sigaction.m4]) m4_include([gnulib-m4/signal_h.m4]) m4_include([gnulib-m4/signalblocking.m4]) +m4_include([gnulib-m4/signbit.m4]) m4_include([gnulib-m4/sigpipe.m4]) m4_include([gnulib-m4/sleep.m4]) m4_include([gnulib-m4/snprintf.m4]) diff -Nru gettext-0.19.6/gettext-tools/ChangeLog gettext-0.19.7/gettext-tools/ChangeLog --- gettext-0.19.6/gettext-tools/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/gettext-tools/ChangeLog 2015-12-27 23:09:15.000000000 +0000 @@ -1,1212 +1,11 @@ -2015-09-11 Daiki Ueno - - * gettext 0.19.6 released. - -2015-07-28 Daiki Ueno - - * configure.ac (ARCHIVE_VERSION): New substituted variable. - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2015-06-25 Daiki Ueno - - * woe32dll/gettextsrc-exports.c: Export syntax_check_name. - Reported by Michele Locati. - -2015-06-24 Daiki Ueno - - * woe32dll/gettextsrc-exports.c: Export formatstring_kde_kuit. - Reported by Vincent Torri. - -2015-06-23 Daiki Ueno - - * ABOUT-NLS: Regenerate for 0.19.5. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-12-04 Daiki Ueno - - intl: Make the LCOV workaround non-intrusive - * configure.ac: Replace PLURAL_OBJECT in intl/Makefile. - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2014-05-14 Daiki Ueno - - * configure.ac: Adjust $docdir assuming that AC_PACKAGE_TARNAME is - set. - -2014-05-12 Daiki Ueno - - build: Fix Woe32 cross build - * woe32dll/gettextsrc-exports.c: Don't export line_comment and - po_lex_iconv if undefined. - -2014-04-22 Daiki Ueno - - build: Use git-version-gen intead of version.sh - * configure.ac: Use git-version-gen in AC_INIT. - -2014-03-11 Daiki Ueno - - * configure.ac: Remove unnecessary make-variable expansion, - previously needed for LIBTOOL. - -2014-01-28 Roumen Petrov (tiny change) - - tests: fix "make check" under VPATH builds - Reported at: - . - * configure.ac: Output init-env instead of init.cfg. - -2013-07-25 Daiki Ueno - - tests: allow each test to run individually without 'make' - * configure.ac: Replace occurrences of make variables in - tests/init.cfg with shell variables so they can be adjusted in - test scripts. - -2013-07-25 Daiki Ueno - - tests: fix path adjustment for LTLIBINTL - * configure.ac: Output tests/init.cfg. - -2013-05-29 Stefano Lattarini (tiny change) - - * configure.ac (AM_INIT_AUTOMAKE): Add 'parallel-tests' option. - Require Automake 1.11.1 or later, so that the 'parallel-tests' - will be certainly available. - (AC_INIT): Require Autoconf 2.62 or later; that is the minimal - version supported by Automake 1.11.1 or later. - -2013-04-26 Daiki Ueno - - Support for Python brace format. - * woe32dll/gettextsrc-exports.c: Export formatstring_python_brace. - -2013-04-17 Andreas Stricker - - Support for JavaScript. - * woe32dll/gettextsrc-exports.c: Export formatstring_javascript. - -2013-04-15 Daiki Ueno - - * woe32dll/gettextsrc-exports.c: Export formatstring_lua. - -2012-12-27 Daiki Ueno - - Determine imported C symbol prefix at configure time. - Suggested by Evgeny Grin in . - * woe32dll/export.h (IMP): Define depending on the result of the - configure run. - * configure.ac (GETTEXTLIB_EXPORTS_FLAGS): Add - -DUSER_LABEL_PREFIX_UNDERSCORE if imported C symbol has - underscore prefix. - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2012-12-25 Daiki Ueno - - * woe32dll/export.h (IMP): Check __MINGW32__ as well as _WIN64. - -2012-12-25 Daiki Ueno - - Work around error_* symbol conflict with Cygwin 1.7 DLL. - * configure.ac: Reset ac_cv_lib_error_at_line on Cygwin. - (GETTEXTLIB_EXPORTS_FLAGS): Add -DGNULIB_DEFINED_ERROR if the - error facility is replaced by gnulib. - (GNULIB_REPLACE_ERROR): Define if the error facility is replaced - by gnulib. - * woe32dll/gettextlib-exports.c (rpl_error_message_count) - (rpl_error_one_per_line, rpl_error_print_progname): Export only - if GNULIB_DEFINED_ERROR is set. - -2012-12-21 Daiki Ueno - - Fix W64 build errors. - * woe32dll/export.h (IMP) [_WIN64]: Prefix "__imp_" instead of - "_imp__". - -2012-12-17 Daiki Ueno - - * configure.ac: Use AC_CONFIG_HEADERS instead of AM_CONFIG_HEADER. - Suggested by Stefano Lattarini . - -2012-01-26 Bruno Haible - - Modernize quoting. - * INSTALL: Process through sed -e "s/\`\([^']*\)'/‘\1’/g" - -2012-01-15 Bruno Haible - - Support for MSVC 9. - * woe32dll/export.h (VARIABLE): Define to empty if not using GCC. - -2011-11-27 Bruno Haible - - Speed up configure a bit. - * configure.ac: Don't invoke AM_PATH_LISPDIR if the user specified - --without-emacs. - Based on a patch by DJ Lucas . - -2011-06-03 Bruno Haible - - Update after gl_PROG_ANSI_CXX changed in gnulib. - * configure.ac: Test whether CXX is "no", not ":". - -2011-06-03 Bruno Haible - - Fix link error on Cygwin 1.5.x. - * woe32dll/gettextsrc-exports.c: Add color_test_mode. - -2011-01-28 Bruno Haible - - Add a comment. - * woe32dll/export.h: Add a reference to the woe32dll writeup. - -2010-10-10 Bruno Haible - - Rely more on libtool. - * configure.ac (LTNOUNDEF): Remove variable. - -2010-07-31 Bruno Haible - - Use new ansi-c++.m4 from gnulib. - * configure.ac: Invoke gl_PROG_ANSI_CXX instead of gt_PROG_ANSI_CXX. - Reported at . - -2010-06-06 Bruno Haible - - New options --with-xz and --with-bzip2 for compressing the archive. - * configure.ac: New options --without-bzip2, --without-xz. - (ARCHIVE_FORMAT): Rename value 'dir' to 'dirgz'. Recognize also values - 'dirxz' or 'dirbz2', depending on options. - -2010-06-06 Bruno Haible - - * configure.ac (ARCHIVE_FORMAT): If neither --with-git nor --with-cvs - is specified, don't use the git format if the 'git' program if older - than version 1.6. - Suggested by Karl Berry . - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-06-04 Bruno Haible - - * configure.ac (ARCHIVE_FORMAT): If neither --with-git nor --with-cvs - is specified, use the git format only if the 'git' program exists. - -2010-06-03 Bruno Haible - - Deprecate the --with-cvs option. - * configure.ac: Document options --without-git, --with-cvs. - (ARCHIVE_FORMAT): Use cvs only when explicitly asked for. - -2010-05-24 Bruno Haible - - Use the newest regex module from gnulib. - * configure.ac: Invoke grgl_EARLY and grgl_INIT. Don't invoke - gt_LIBGREP. - * Makefile.am (ACLOCAL_AMFLAGS): Add -I libgrep/gnulib-m4. - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2010-05-09 Bruno Haible - - Export rpl_optind, rpl_optarg from DLL depending on platform. - * configure.ac (GETTEXTLIB_EXPORTS_FLAGS): New substituted variable. - * woe32dll/gettextlib-exports.c (rpl_optarg, rpl_optind): Export only - if GNULIB_DEFINED_GETOPT is set. - -2010-04-02 Bruno Haible - - * Makefile.am (ACLOCAL_AMFLAGS): Remove "-I ../autoconf-lib-link/m4" - option. - (gettextsrc_SCRIPTS): Update. - -2009-12-26 Bruno Haible - - * configure.ac: Don't define USE_IN_GETTEXT_TESTS. Test for uselocale. - -2009-12-12 Bruno Haible - - * woe32dll/export.h: Untabify. - -2009-09-27 Bruno Haible - - * configure.ac: Accept --without-cvs, --with-git options. Substitute - ARCHIVE_FORMAT. - (AC_CONFIG_FILES): Add misc/convert-archive. - -2009-08-10 Bruno Haible - - * woe32dll/gettextsrc-exports.c: Export formatstring_gfc_internal, - formatstring_qt_plural. - -2009-05-31 Bruno Haible - - * configure.ac (doc/Makefile.am): Don't invoke FIX_MAKEFILE_DISTRIB. - -2009-05-29 Bruno Haible - - Avoid lang-c++ test failure. - * configure.ac: Invoke LT_LANG also for C++. - -2009-05-23 Bruno Haible - - * configure.ac (AM_INIT_AUTOMAKE): Add 'silent-rules' option. - * gnulib-lib/Makefile.am (libgettextlib_la_LINK): Add $(AM_V_lt) flag. - -2009-05-23 Bruno Haible - - * configure.ac: Invoke gl_INIT_PACKAGE. Use the preferred form of - AM_INIT_AUTOMAKE. - -2009-05-21 Bruno Haible - - Assume automake >= 1.10.2. - * configure.ac (AC_CONFIG_FILES): Remove FIX_MAKEFILE_COMPILE, - FIX_MAKEFILE_INFO invocations. - -2009-04-11 Bruno Haible - - * configure.ac (gt_GLOBAL_SYMBOL_PIPE): Remove macro, moved to - m4/exported.m4. - -2009-03-25 Bruno Haible - - Fix the handling of Windows resources in shared libraries. - * configure.ac: Invoke LT_LANG for 'Windows Resource'. - -2009-01-14 Bruno Haible - - * configure.ac: More consistent m4 quoting. - -2008-09-14 Ralf Wildenhues - - * configure.ac: Use AC_TYPE_UNSIGNED_LONG_LONG_INT instead of - gl_AC_TYPE_UNSIGNED_LONG_LONG. - -2008-08-17 Bruno Haible - - * configure.ac: Adapt AC_C_BIGENDIAN invocation to autoconf 2.62: make - it work for universal binary builds on MacOS X. - -2008-04-20 Bruno Haible - - * configure.ac: Use LT_INIT instead of AC_PROG_LIBTOOL. - -2007-11-15 Bruno Haible - - * configure.ac: Check for getrlimit and setrlimit. - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2007-10-28 Bruno Haible - - * styles: New directory. - * Makefile.am (SUBDIRS): Add styles. - * configure.ac (AC_CONFIG_FILES): Add styles/Makefile. - -2007-10-17 Bruno Haible - - * woe32dll/gettextlib-exports.c: Export gl_array_list_implementation, - gl_linkedhash_list_implementation. - -2007-10-01 Bruno Haible - - * gnulib-tests: New directory. - * Makefile.am (SUBDIRS): Add gnulib-tests. - * configure.ac (AC_CONFIG_FILES): Add gnulib-tests/Makefile. - -2007-09-30 Bruno Haible - - * woe32dll/gettextsrc-exports.c: Add formatstring_kde. - -2007-07-07 Bruno Haible - - * configure.ac: Don't create libuniname/Makefile. - * Makefile.am (SUBDIRS): Remove libuniname. - -2007-05-28 Bruno Haible - - * configure.ac (WOE32): New conditional. - -2007-05-27 Bruno Haible - - * configure.ac (gt_OPENMP): Remove invocation. - -2007-02-10 Bruno Haible - - * configure.ac (MSGMERGE_LIBM): Avoid inlining of the ceil, sqrt calls - on glibc systems. - Reported by I. Thomas Cundiff . - -2006-12-23 Bruno Haible - - * gnulib-lib/Makefile.am (libgettextlib_la_LINK): New variable. - -2006-12-23 Bruno Haible - - * gnulib-lib/Makefile.am (AM_CPPFLAGS): Define LIBXML_STATIC. - Needed for mingw and cygwin. - -2006-12-22 Bruno Haible - - * woe32dll/c++html-styled-ostream.cc: New file. - * woe32dll/c++term-styled-ostream.cc: New file. - -2006-12-21 Bruno Haible - - * gnulib-lib/Makefile.am: New file, partially taken from - ../gnulib-local/modules/gettext-tools-misc. - -2006-12-21 Bruno Haible - - * woe32dll/gettextlib-exports.c: Export styled_ostream_typeinfo. - * woe32dll/gettextsrc-exports.c: Export color_mode, style_file_name. - -2006-12-10 Bruno Haible - - * configure.ac: Invoke gt_LOCALE_JA. - -2006-10-27 Bruno Haible - - Work around automake-1.10 annoyance. - * Makefile.am (ACLOCAL): New macro. - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-10-25 Bruno Haible - - * configure.ac: Don't invoke AC_RELOCATABLE; now done through the - relocwrapper and gettext-tools-libgettextpo-misc modules. - -2006-10-25 Bruno Haible - - * configure.ac (DLL_VARIABLE): Define to empty if IN_RELOCWRAPPER is - defined. - -2006-10-20 Bruno Haible - - * Makefile.am (ACLOCAL_AMFLAGS): Add -I libgettextpo/gnulib-m4. - * configure.ac: Also invoke gtpo_EARLY, gtpo_INIT. - -2006-10-18 Bruno Haible - - * woe32dll/gettextsrc-exports.c: Add {input,output}_format_*. - -2006-10-16 Bruno Haible - - * libgettextpo: New directory. - * Makefile.am (SUBDIRS): Add libgettextpo. - * configure.ac (gt_GLOBAL_SYMBOL_PIPE): New macro. - (AC_CONFIG_FILES): Add libgettextpo/Makefile, libgettextpo/exported.sh. - -2006-10-15 Bruno Haible - - * woe32dll/gettextsrc-exports.c: Remove input_syntax. - -2006-10-02 Bruno Haible - - * Makefile.am (EXTRA_DIST): Add gnulib-m4/gnulib-cache.m4. - -2006-10-02 Bruno Haible - - * Makefile.am (ACLOCAL_AMFLAGS): Move gnulib-m4 to the end, since - sometime we have newer m4 files than gnulib. - -2006-08-28 Bruno Haible - - * configure.ac: Remove bh_C_SIGNED invocation. - -2006-07-30 Bruno Haible - - * Makefile.am (ACLOCAL_AMFLAGS): Append gnulib-m4 to search path. - (SUBDIRS): Replace lib with gnulib-lib. - (examplesbuildauxdir, examplesbuildaux_DATA): New variables. - * configure.ac (AC_PREREQ): Bump to 2.59. - (gl_EARLY): Invoke. - (AC_GNU_SOURCE, gl_USE_SYSTEM_EXTENSIONS): Remove invocations. - (gl_INIT): Invoke. - (limits.h, malloc.h, string.h, unistd.h, utime.h, values.h, - gl_STDARG_H, AM_STDBOOL_H, gl_HEADER_UNISTD, gl_AC_TYPE_UINTMAX_T, - AC_TYPE_MODE_T, gt_TYPE_SIG_ATOMIC_T, gl_SIZE_MAX, gl_ALLOCSA, - chown, getcwd, posix_spawn, raise, strerror, strtoul, uname, utime, - utimes, waitid, atexit, memmove, memset, stpcpy, strcspn, strpbrk, - vasprintf, AM_FUNC_GETLINE, getdelim, gl_EXITFAIL, - gl_FUNC_FNMATCH_POSIX, gl_GETOPT, gl_FUNC_EACCESS, gl_FUNC_STPNCPY, - gl_FUNC_STRTOUL, gl_FUNC_WCWIDTH, gl_MBSWIDTH, gt_PREREQ_BACKUPFILE, - gt_UNION_WAIT, gt_TMPDIR, gt_FUNC_MKDTEMP, gt_SIGNALBLOCKING, - gt_FUNC_SETENV, gl_FUNC_STRERROR, gl_FUNC_GLIBC_UNLOCKED_IO, gl_ERROR, - gl_QUOTEARG, gl_QUOTE, gl_PATHMAX, gl_FUNC_READLINK, gl_XREADLINK, - gl_CANONICALIZE, gl_XSIZE, gl_MINMAX, gl_LIST, gl_LOCK, gl_TLS, - gl_BYTESWAP): Remove tests done directly or indirectly by gl_INIT - or that are now unused. - (AC_CONFIG_FILES): Add gnulib-lib/Makefile, remove lib/Makefile. - Remove lib/javacomp.sh, lib/javaexec.sh, lib/csharpcomp.sh, - lib/csharpexec.sh. - -2006-07-30 Bruno Haible - - * configure.ac: Don't test for the strstr function. - -2006-07-30 Bruno Haible - - * configure.ac: Update for changed location of javacomp.sh.in, - javaexec.sh.in, csharpcomp.sh.in, csharpexec.sh.in. - -2006-07-23 Bruno Haible - - * configure.ac: Invoke gt_OPENMP. - -2006-07-23 Bruno Haible - - * configure.ac: Invoke gl_LOCK and gl_TLS. - -2006-07-22 Bruno Haible - - * configure.ac: Invoke gl_SIZE_MAX and gl_LIST. - -2006-07-25 Bruno Haible - - * windows: Remove directory. - * Makefile.msvc: Remove file. - * Makefile.am (config.h.msvc, windows/stdbool.h): Remove rules. - (EXTRA_DIST): Remove Makefile.msvc, config.h.msvc, windows/*. - -2006-07-25 Bruno Haible - - * Makefile.vms: Remove file. - * Makefile.am (config.h_vms): Remove rule. - (EXTRA_DIST): Remove Makefile.vms, config.h_vms. - -2006-07-22 Bruno Haible - - * configure.ac: Invoke gl_FUNC_WCWIDTH, gl_MINMAX. - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2006-07-20 Bruno Haible - - * windows/gettextlib.rc: Bump version number to 0.15.0. - * windows/gettextsrc.rc: Likewise. - * windows/gettextpo.rc: Likewise. - -2006-07-14 Bruno Haible - - * Makefile.am (MOSTLYCLEANFILES): New variable. - -2006-06-29 Bruno Haible - - * configure.ac: Remove AC_CONFIG_FILES for files in examples subdir. - Use AC_CONFIG_SUBDIRS instead. - -2006-06-27 Bruno Haible - - * configure.ac: Remove AC_ISC_POSIX invocation. - -2006-06-27 Bruno Haible - - Assume ANSI C header files and functions. - * configure.ac: Remove AC_HEADER_STDC invocation. - -2006-06-27 Bruno Haible - - Assume vprintf function. - * configure.ac: Remove AC_FUNC_VPRINTF invocation. - * Makefile.am (config.h_vms, config.h.msvc): Remove unused HAVE_VPRINTF - substitution. - -2006-06-27 Bruno Haible - - * Makefile.am (config.h_vms, config.h.msvc): Drop unused HAVE_LOCALE_H - substitution. - -2006-04-14 Bruno Haible - - Assume autoconf >= 2.60. - * configure.ac (localedir): Remove variable. - (docdir): If --docdir value was given, use that. - (mandir): Remove customization. - -2006-05-15 Bruno Haible - - * woe32dll/export.h: Renamed from cygwin/export.h. - * woe32dll/gettextlib-exports: Renamed from cygwin/gettextlib-exports.h. - * woe32dll/gettextsrc-exports: Renamed from cygwin/gettextsrc-exports.h. - * woe32dll/gettextpo-exports: Renamed from cygwin/gettextpo-exports.h. - * configure.ac (WOE32DLL): Renamed from CYGWINDLL. - (DLL_VARIABLE): Define as nonempty on mingw if and only if - --enable-shared was specified. - * Makefile.am (EXTRA_DIST): Update. - -2006-05-11 Bruno Haible - - * woe32dll: Directory renamed from mingw. - * cygwin/export.h: New file. - * cygwin/gettextlib-exports.c: New file. - * cygwin/gettextsrc-exports.c: New file. - * cygwin/gettextpo-exports.c: New file. - * configure.ac (WOE32DLL): Condition renamed from MINGW. Activate it - also on Cygwin. Only activate it when compiling shared libraries. - (CYGWINDLL): New condition. - (CYGWINDLL): New define. - (DLL_VARIABLE): Use dllimport also on Cygwin. - * Makefile.am (EXTRA_DIST): Add cygwin/export.h. - -2006-05-11 Bruno Haible - - * woe32dll/c++format.cc: New file. - -2006-05-02 Charles Wilson - - * configure.ac (LTNOUNDEF): Set to -no-undefined also on mingw and - Cygwin. - -2006-05-08 Bruno Haible - - * Makefile.am (windows/stdbool.h): Create directory if needed. - Based on a patch by Charles Wilson. - -2006-04-30 Bruno Haible - - * configure.ac: Invoke gl_STDARG_H. - -2006-05-01 Bruno Haible - - * configure.ac: Pass a source-version to gt_JAVACOMP. Move gt_JAVAEXEC - call before the gt_JAVACOMP call. - -2006-04-23 Bruno Haible - - * configure.ac: Invoke gl_HEADER_UNISTD. - -2006-04-17 Bruno Haible - - * Makefile.am (gettextsrc_SCRIPTS): Remove mkinstalldirs. - -2006-03-11 Bruno Haible - - * configure.ac (MSGMERGE_LIBM): New variable. Test for presence of - ceil() and sqrt(). - -2005-11-23 Bruno Haible - - Cygwin portability. - * configure.ac: Invoke gl_WOE32_DLL. - -2005-11-24 Bruno Haible - - * Makefile.am (config.h_vms, config.h.msvc): Treat HAVE_FWPRINTF like - HAVE_WPRINTF. Needed since 2003-09-17. - Reported by Svante Seleborg . - -2005-08-16 Bruno Haible - - * configure.ac: Remove gl_STRCASE invocation. - -2005-09-20 Bruno Haible - - * configure.ac: Invoke BISON_I18N. - -2005-08-23 Bruno Haible - - * configure.ac: Invoke gl_BYTESWAP. Define ENDIANNESS. - -2005-08-13 Bruno Haible - - New configure options --disable-java, --disable-native-java. - * configure.ac: Invoke gt_JAVA_CHOICE. - (BUILDJAVAEXE, BUILDJAVA): Use it. - -2005-08-11 Bruno Haible - - * configure.ac: Accept --without-emacs option. - -2005-08-03 Bruno Haible - - * configure.ac (intl/Makefile): Remove the VPATH line. - Reported by Jason Keltz . - -2005-07-26 Bruno Haible - - * configure.ac: Move the AM_GNU_GETTEXT invocation early, since it - modifies CPPFLAGS. - -2005-07-05 Bruno Haible - - * mingw: New directory. - * configure.ac (LTNOUNDEF): New macro. - (MINGW): New conditional. - (DLL_VARIABLE): Define also as nonempty when building shared libraries - with mingw. - -2005-05-01 Bruno Haible - - * configure.ac: Call gt_CSHARPEXEC with parameters. - -2005-03-20 Bruno Haible - - * configure.ac: Test for field __names in struct __locale_struct. - Also define USE_IN_GETTEXT_TESTS. - -2006-06-21 Bruno Haible - - * gettext-0.14.6 released. - -2006-06-21 Bruno Haible - - * windows/gettextlib.rc: Bump version number to 0.14.6. - * windows/gettextsrc.rc: Likewise. - * windows/gettextpo.rc: Likewise. - -2005-05-23 Bruno Haible - - * gettext-0.14.5 released. - -2005-05-23 Bruno Haible - - * windows/gettextlib.rc: Bump version number to 0.14.5. - * windows/gettextsrc.rc: Likewise. - * windows/gettextpo.rc: Likewise. - -2005-04-11 Bruno Haible - - * gettext-0.14.4 released. - -2005-04-11 Bruno Haible - - * windows/gettextlib.rc: Bump version number to 0.14.4. - * windows/gettextsrc.rc: Likewise. - * windows/gettextpo.rc: Likewise. - -2005-03-22 Bruno Haible - - * configure.ac (AC_CONFIG_AUX_DIR): Use ../build-aux. - * Makefile.am (ACLOCAL_AMFLAGS): Replace config/m4 with m4. - (gettextsrc_SCRIPTS): Replace config with build-aux. - -2005-03-14 Bruno Haible - - * gettext-0.14.3 released. - -2005-03-08 Bruno Haible - - * windows/gettextlib.rc: Bump version number to 0.14.3. - * windows/gettextsrc.rc: Likewise. - * windows/gettextpo.rc: Likewise. - -2005-02-24 Bruno Haible - - * gettext-0.14.2 released. - -2005-02-13 Bruno Haible - - * configure.ac: Invoke gt_LOCALE_FR_UTF8. - -2005-02-13 Bruno Haible - - * configure.ac: Invoke gl_FUNC_STRTOUL. Keep AC_CHECK_FUNCS(strtoul) - because plural-exp.c needs it. - -2005-02-12 Bruno Haible - - * windows/gettextsrc.def: Remove po_parse_comment_filepos. Add - check_msgid_msgstr_format, is_ascii_msgdomain_list, - message_list_insert_at, string_list_join. - -2005-02-12 Bruno Haible - - * windows/getopt.h: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2005-02-11 Bruno Haible - - * windows/gettextlib.rc: Bump version number to 0.14.2. - * windows/gettextsrc.rc: Likewise. - * windows/gettextpo.rc: Likewise. - -2005-02-10 Bruno Haible - - * windows/gettextpo.def: Add po_header_set_field. - -2005-02-10 Bruno Haible - - * windows/gettextpo.def: Add libgettextpo_version. - -2005-02-10 Bruno Haible - - * windows/gettextpo.def: Add po_message_remove_filepos, - po_message_add_filepos. - -2005-02-10 Bruno Haible - - * windows/gettextpo.def: Add po_message_set_extracted_comments. - -2005-02-07 Bruno Haible - - * windows/gettextlib.def: Add c_strcasecmp, c_strncasecmp. - -2005-01-08 Bruno Haible - - * libgrep: New subdirectory. - * configure.ac: Invoke gt_LIBGREP. Declare libgrep/Makefile.am. - * Makefile.am (SUBDIRS): Add libgrep. - (config.h_vms, config.h.msvc): Define HAVE_DECL_STRDUP, HAVE_MEMCHR, - restrict. - * Makefile.msvc: Recurse into libgrep as well. - * Makefile.vms: Likewise. - -2005-01-06 Bruno Haible - - * configure.ac: Invoke gl_STRCASE. Don't test for strcasecmp and - strncasecmp here. - -2005-01-06 Bruno Haible - - * configure.ac: Invoke gl_FUNC_STPNCPY. - -2005-01-06 Bruno Haible - - * configure.ac: Invoke gl_ERROR instead of gt_FUNC_ERROR_AT_LINE. - * Makefile.am (config.h_vms, config.h.msvc): Remove setting of - HAVE_DECL_STRERROR. - -2005-01-06 Bruno Haible - - * configure.ac: Invoke gl_QUOTE. - -2005-01-06 Bruno Haible - - * configure.ac: Invoke gl_EXITFAIL. - -2005-01-06 Bruno Haible - - * configure.ac: Invoke gl_GETOPT. - * Makefile.am (config.h_vms, config.h.msvc): Define __GETOPT_PREFIX - to empty. - * Makefile.msvc: Update. - * Makefile.vms: Update. - -2005-01-06 Bruno Haible - - * Makefile.am (config.h_vms, config.h.msvc): Define HAVE_WMEMCHR and - HAVE_WMEMCPY to 1. - -2005-01-06 Bruno Haible - - * Makefile.am (config.h_vms, config.h.msvc): Define USE_UNLOCKED_IO - to 1. - -2005-01-05 Bruno Haible - - * windows/gettextlib.rc: Update copyright year. - * windows/gettextsrc.rc: Likewise. - * windows/gettextpo.rc: Likewise. - -2004-12-10 Bruno Haible - - * windows/gettextlib.def: Export obstack_free, not _obstack_free. - -2004-09-06 Bruno Haible - - * windows/gettextpo.def: Add po_message_check_format. - -2004-09-05 Bruno Haible - - * windows/gettextsrc.def: Add the variables names from po-error.h. - * windows/gettextpo.def: Add many new function names. - -2004-04-19 Bruno Haible - - * gettext.m4: Change jm_ to gl_ in all uses of AC_DEFINE'd names. - -2004-03-11 Bruno Haible - - * Makefile.am (config.h.msvc): Fix the value of SIZE_MAX. - -2004-02-07 Bruno Haible - - * configure.ac: Invoke gl_QUOTEARG. - -2004-01-29 Bruno Haible - - * gettext-0.14.1 released. - -2004-01-28 Bruno Haible - - * gettext-0.14 released. - -2004-01-24 Bruno Haible - - * Makefile.am (config.h_vms): Set MALLOC_0_IS_NONNULL to 0. - (config.h.msvc): Set MALLOC_0_IS_NONNULL to 1. - -2004-01-12 Bruno Haible - - * windows/gettextlib.def: Add compile_csharp_class, - execute_csharp_program. - * windows/gettextsrc.def: Add formatstring_csharp. Rename - get_c99_format_directives to get_sysdep_c_format_directives. - -2004-01-17 Bruno Haible - - * windows/gettextlib.rc: Bump version number to 0.14. - * windows/gettextsrc.rc: Likewise. - * windows/gettextpo.rc: Likewise. - -2004-01-10 Bruno Haible - - * configure.ac: When --disable-csharp was given, set BUILDCSHARP=no. - -2003-12-26 Bruno Haible - - Support for C#. - * configure.ac: Invoke gt_CSHARPCOMP, gt_CSHARPEXEC. Set BUILDCSHARP - and TESTCSHARP. - (AC_CONFIG_FILES): Add lib/csharpcomp.sh and lib/csharpexec.sh. - -2003-12-27 Bruno Haible - - * configure.ac: Set and AC_SUBST the TESTLIBASPRINTF variable. - -2003-12-12 Bruno Haible - - Assume automake-1.8. - * Makefile.am (html): Remove rule. - -2003-11-30 Bruno Haible - - * configure.ac: Remove computation of LTALLOCA. - -2003-11-30 Bruno Haible - - * configure.ac: Invoke gl_ALLOCSA instead of gl_FUNC_ALLOCA. - * windows/gettextlib.def: Add mallocsa, xmallocsa, freesa. - -2003-12-17 Bruno Haible - - * gettext-0.13.1 released. - -2003-12-02 Bruno Haible - - * Makefile.msvc (all, install, installdirs, uninstall, check, - mostlyclean, clean, distclean, maintainer-clean): Create the intl - directory if it doesn't exist. Needed because a widespread archiving - tool on Windows doesn't extract empty directories that are present in - .tar.gz files. - Reported by Stefan Kowski . - -2003-12-02 Bruno Haible - - * configure.ac: Invoke FIX_MAKEFILE_DISTRIB for examples/Makefile. - -2003-11-30 Bruno Haible - - * gettext-0.13 released. - -2003-11-28 Bruno Haible - - * Makefile.am (config.h.msvc): Define SIZE_MAX and inline. - -2003-11-28 Bruno Haible - - * windows/gettextlib.def: Add at_fatal_signal, block_fatal_signals, - unblock_fatal_signals, _obstack_begin, _obstack_free, - _obstack_newchunk. - * windows/gettextsrc.def: Add message_print_syntax_stringtable. - -2003-11-16 Bruno Haible - - * configure.ac (man/Makefile): Postprocess with FIX_MAKEFILE_DISTRIB. - -2003-11-16 Bruno Haible - - * windows/gettextpo.rc: Bump version number to 0.13. - -2003-11-15 Bruno Haible - - * configure.ac (AC_CONFIG_FILES): Create examples/Makefile, - examples, installpaths, examples/po/Makefile. - * Makefile.am (SUBDIRS): Add examples. - * Makefile.msvc (all, install, installdirs, uninstall, check, - mostlyclean, clean, distclean, maintainer-clean): Recurse into - examples. - * Makefile.vms (all, install, installdirs, uninstall, check, - mostlyclean, clean, distclean, maintainer-clean): Recurse into - examples. - -2003-11-13 Bruno Haible - - * configure.ac (docdir): New variable. - -2003-11-05 Bruno Haible - - * configure.ac (localedir): New variable. - (src/user-email): Generate from src/user-email.sh.in. - -2003-11-04 Bruno Haible - - * configure.ac: Invoke gl_XSIZE. - -2003-10-31 Bruno Haible - - * configure.ac: Also check for waitid. - -2003-10-31 Bruno Haible - - * configure.ac: Remove argument of FIX_MAKEFILE_COMPILE, - FIX_MAKEFILE_DISTRIB, FIX_MAKEFILE_INFO. - -2003-10-07 Bruno Haible - - * configure.ac: Drop PARAMS definition from config.h.in. - -2003-10-08 Bruno Haible - - * configure.ac: Invoke gt_SIG_ATOMIC_T. - * Makefile.am (config.h_vms, config.h.msvc): Define HAVE_SIG_ATOMIC_T. - -2003-10-04 Bruno Haible - - * configure.ac: Remove gt_PROG_LEX invocation. - -2003-09-18 Bruno Haible - - * windows/gettextpo.def: Add po_file_domain_header, po_header_field, - po_message_is_obsolete, po_message_is_fuzzy, po_message_is_format. - * windows/gettextpo.rc: Bump version number to 0.12.2. - -2003-09-16 Bruno Haible - - Portability to SunOS 4. - * configure.ac: Also check for atexit. - -2003-09-14 Bruno Haible - - * windows/gettextlib.def: Export fwriteerror. - -2003-09-13 Bruno Haible - - * windows/gettextlib.def: Export close_stdout. - -2003-09-09 Bruno Haible - - * configure.ac: Don't test for putc_unlocked. - -2003-08-31 Bruno Haible - - * windows/gettextsrc.def: Add formatstring_sh. - -2003-08-29 Bruno Haible - - * Makefile.am (config.h.msvc): Define HAVE_DECL__SNPRINTF, - HAVE_DECL__SNWPRINTF. - -2003-08-24 Bruno Haible - - * configure.ac: Define DLL_VARIABLE in config.h through AH_BOTTOM. - -2003-08-24 Bruno Haible - - * windows/gettextsrc.def: Add formatstring_gcc_internal, - formatstring_perl, formatstring_perl_brace to the export list. - -2003-08-24 Bruno Haible - - * windows/gettextpo.def: New file. - * windows/gettextpo.rc: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2003-08-23 Bruno Haible - - * Makefile.am (config.h_vms): Define HAVE_BTOWC, HAVE_DECL_GETENV, - HAVE_MBSTATE_T, HAVE_READLINK, HAVE_WCSLEN, HAVE_WINT_T, HAVE_WPRINTF. - (config.h.msvc): Define .HAVE_BTOWC, HAVE_DECL_GETENV, HAVE_WCSLEN, - HAVE_WINT_T, HAVE_WPRINTF. - -2003-08-23 Bruno Haible - - * configure.ac: Invoke gl_USE_SYSTEM_EXTENSIONS. - -2003-08-23 Bruno Haible - - * windows/fnmatch.h: Include fnmatch_.h. - -2003-08-23 Bruno Haible - - * configure.ac: Invoke AM_STDBOOL_H instead of gt_STDBOOL_H. - Invoke gl_FUNC_FNMATCH_POSIX instead of gt_FUNC_FNMATCH. - Invoke gl_MBSWIDTH instead of jm_PREREQ_MBSWIDTH. - -2003-07-01 Bruno Haible - - * configure.ac: Invoke gl_FUNC_READLINK. - -2003-07-01 Bruno Haible - - * Makefile.am (windows/stdbool.h): Use stdbool_.h instead of - stdbool.h.in. - -2003-06-19 Bruno Haible - - * configure.ac: Invoke gt_LOCALE_FR. - -2003-06-08 Bruno Haible - - * Makefile.am (config.h_vms): Don't define HAVE_ENVIRON_DECL. Define - eaccess. - * Makefile.vms (all, install, installdirs, uninstall, check, - mostlyclean, clean, distclean, maintainer-clean): Fix passing of srcdir - to sub-Makefile. - Reported by Jouk Jansen . - -2003-05-22 Bruno Haible - - * gettext-0.12.1 released. - -2003-05-20 Bruno Haible - - * Makefile.am (config.h_vms, config.h.msvc, windows/stdbool.h): - Don't use $< here. - -2003-05-19 Bruno Haible - - * windows/gettextlib.rc: Include . - * windows/gettextsrc.rc: Likewise. - Reported by Perry Rapp. - -2003-05-17 Bruno Haible - - * gettext-0.12 released. - -2003-05-17 Bruno Haible - - * Makefile.am (config.h.msvc): Define HAVE_STRPBRK. - -2003-05-15 Bruno Haible - - * Makefile.am (config.h_vms, config.h.msvc): Define HAVE_DECL_STRERROR. - -2003-05-12 Bruno Haible - - * configure.ac: Invoke AC_GNU_SOURCE and jm_FUNC_GLIBC_UNLOCKED_IO. - -2003-05-12 Bruno Haible - - * windows/gettextsrc.def: Update. - Based on a patch by Perry Rapp. - -2003-04-12 Bruno Haible - - * Makefile.am (config.h_vms): Renamed from config.h.vms. - * Makefile.vms: Don't use the force target. Use config.h_vms, not - config.h.vms. Create intl subdirectory. Correct wildcard syntax. - Suggested by Jouk Jansen . - -2003-04-12 Bruno Haible - - * configure.ac (mandir): Change default value. - * Makefile.msvc (mandir, docdir): Use datadir instead of prefix. - -2003-04-10 Bruno Haible - - * configure.ac: Invoke gl_FUNC_EACCESS. - -2003-04-05 Bruno Haible - - * Makefile.am (config.h.msvc): Remove redundant sed expression. - -2003-04-03 Bruno Haible - - * configure.ac (INVALID_PATH_CHAR): Add a definition for Woe32. - Reported by Perry Rapp. - -2003-03-30 Bruno Haible - - * Makefile.vms: New file. - * Makefile.am (config.h.vms): New rule. - (EXTRA_DIST): Add Makefile.vms and config.h.vms. - -2003-03-30 Bruno Haible - - * configure.ac: Add checks for and chown(). - -2003-03-17 Bruno Haible - - Native Woe32/MSVC support. - * Makefile.msvc: New file. - * README.woe32: New file. - * windows/gettextlib.def: New file. - * windows/gettextlib.rc: New file. - * windows/gettextsrc.def: New file. - * windows/gettextsrc.rc: New file. - * windows/alloca.h: New file. - * windows/fnmatch.h: New file. - * Makefile.am (EXTRA_DIST): Add them and config.h.msvc, - windows/stdbool.h. - (config.h.msvc, intl/libgnuintl.h.msvc-shared, windows/stdbool.h): New - rules. - * configure.ac: Invoke AC_TYPE_MODE_T. - -2003-02-28 Bruno Haible - - Support for relocatable installation. - * configure.ac: Invoke AC_RELOCATABLE, AC_REPLACE_FUNCS([memmove]), - gl_FUNC_STRERROR, gl_XREADLINK, gl_CANONICALIZE. - * INSTALL: Document --enable-relocatable and --with-libintl-prefix. - -2003-02-28 Bruno Haible - - * configure.ac: Invoke gl_PATHMAX. - -2003-02-22 Bruno Haible - - * Makefile.am (ps, pdf): Remove rules, redundant with automake 1.7.2. - -2003-02-18 Bruno Haible - - * Makefile.am: Don't install ABOUT-NLS in $(datadir)/gettext. This is - now done by the gettext-runtime package. - -2003-02-12 Bruno Haible - - Big restructuring. - * configure.ac: New file. - * Makefile.am: New file. - +No more ChangeLog files +======================== +Do not modify any of the ChangeLog files in gettext. Starting on +October 14th, 2015 we put changelog information only in the git commit +log, and generate a top-level ChangeLog file from logs at "make dist" +time. + +Local Variables: +buffer-read-only: t +mode: text +End: diff -Nru gettext-0.19.6/gettext-tools/ChangeLog.0 gettext-0.19.7/gettext-tools/ChangeLog.0 --- gettext-0.19.6/gettext-tools/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/ChangeLog.0 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,1212 @@ +2015-09-11 Daiki Ueno + + * gettext 0.19.6 released. + +2015-07-28 Daiki Ueno + + * configure.ac (ARCHIVE_VERSION): New substituted variable. + +2015-07-10 Daiki Ueno + + * gettext 0.19.5 released. + +2015-06-25 Daiki Ueno + + * woe32dll/gettextsrc-exports.c: Export syntax_check_name. + Reported by Michele Locati. + +2015-06-24 Daiki Ueno + + * woe32dll/gettextsrc-exports.c: Export formatstring_kde_kuit. + Reported by Vincent Torri. + +2015-06-23 Daiki Ueno + + * ABOUT-NLS: Regenerate for 0.19.5. + +2014-12-24 Daiki Ueno + + * gettext 0.19.4 released. + +2014-12-04 Daiki Ueno + + intl: Make the LCOV workaround non-intrusive + * configure.ac: Replace PLURAL_OBJECT in intl/Makefile. + +2014-10-15 Daiki Ueno + + * gettext 0.19.3 released. + +2014-07-14 Daiki Ueno + + * gettext 0.19.2 released. + +2014-06-10 Daiki Ueno + + * gettext 0.19.1 released. + +2014-06-02 Daiki Ueno + + * gettext 0.19 released. + +2014-05-14 Daiki Ueno + + * configure.ac: Adjust $docdir assuming that AC_PACKAGE_TARNAME is + set. + +2014-05-12 Daiki Ueno + + build: Fix Woe32 cross build + * woe32dll/gettextsrc-exports.c: Don't export line_comment and + po_lex_iconv if undefined. + +2014-04-22 Daiki Ueno + + build: Use git-version-gen intead of version.sh + * configure.ac: Use git-version-gen in AC_INIT. + +2014-03-11 Daiki Ueno + + * configure.ac: Remove unnecessary make-variable expansion, + previously needed for LIBTOOL. + +2014-01-28 Roumen Petrov (tiny change) + + tests: fix "make check" under VPATH builds + Reported at: + . + * configure.ac: Output init-env instead of init.cfg. + +2013-07-25 Daiki Ueno + + tests: allow each test to run individually without 'make' + * configure.ac: Replace occurrences of make variables in + tests/init.cfg with shell variables so they can be adjusted in + test scripts. + +2013-07-25 Daiki Ueno + + tests: fix path adjustment for LTLIBINTL + * configure.ac: Output tests/init.cfg. + +2013-05-29 Stefano Lattarini (tiny change) + + * configure.ac (AM_INIT_AUTOMAKE): Add 'parallel-tests' option. + Require Automake 1.11.1 or later, so that the 'parallel-tests' + will be certainly available. + (AC_INIT): Require Autoconf 2.62 or later; that is the minimal + version supported by Automake 1.11.1 or later. + +2013-04-26 Daiki Ueno + + Support for Python brace format. + * woe32dll/gettextsrc-exports.c: Export formatstring_python_brace. + +2013-04-17 Andreas Stricker + + Support for JavaScript. + * woe32dll/gettextsrc-exports.c: Export formatstring_javascript. + +2013-04-15 Daiki Ueno + + * woe32dll/gettextsrc-exports.c: Export formatstring_lua. + +2012-12-27 Daiki Ueno + + Determine imported C symbol prefix at configure time. + Suggested by Evgeny Grin in . + * woe32dll/export.h (IMP): Define depending on the result of the + configure run. + * configure.ac (GETTEXTLIB_EXPORTS_FLAGS): Add + -DUSER_LABEL_PREFIX_UNDERSCORE if imported C symbol has + underscore prefix. + +2012-12-25 Daiki Ueno + + * gettext-0.18.2 released. + +2012-12-25 Daiki Ueno + + * woe32dll/export.h (IMP): Check __MINGW32__ as well as _WIN64. + +2012-12-25 Daiki Ueno + + Work around error_* symbol conflict with Cygwin 1.7 DLL. + * configure.ac: Reset ac_cv_lib_error_at_line on Cygwin. + (GETTEXTLIB_EXPORTS_FLAGS): Add -DGNULIB_DEFINED_ERROR if the + error facility is replaced by gnulib. + (GNULIB_REPLACE_ERROR): Define if the error facility is replaced + by gnulib. + * woe32dll/gettextlib-exports.c (rpl_error_message_count) + (rpl_error_one_per_line, rpl_error_print_progname): Export only + if GNULIB_DEFINED_ERROR is set. + +2012-12-21 Daiki Ueno + + Fix W64 build errors. + * woe32dll/export.h (IMP) [_WIN64]: Prefix "__imp_" instead of + "_imp__". + +2012-12-17 Daiki Ueno + + * configure.ac: Use AC_CONFIG_HEADERS instead of AM_CONFIG_HEADER. + Suggested by Stefano Lattarini . + +2012-01-26 Bruno Haible + + Modernize quoting. + * INSTALL: Process through sed -e "s/\`\([^']*\)'/‘\1’/g" + +2012-01-15 Bruno Haible + + Support for MSVC 9. + * woe32dll/export.h (VARIABLE): Define to empty if not using GCC. + +2011-11-27 Bruno Haible + + Speed up configure a bit. + * configure.ac: Don't invoke AM_PATH_LISPDIR if the user specified + --without-emacs. + Based on a patch by DJ Lucas . + +2011-06-03 Bruno Haible + + Update after gl_PROG_ANSI_CXX changed in gnulib. + * configure.ac: Test whether CXX is "no", not ":". + +2011-06-03 Bruno Haible + + Fix link error on Cygwin 1.5.x. + * woe32dll/gettextsrc-exports.c: Add color_test_mode. + +2011-01-28 Bruno Haible + + Add a comment. + * woe32dll/export.h: Add a reference to the woe32dll writeup. + +2010-10-10 Bruno Haible + + Rely more on libtool. + * configure.ac (LTNOUNDEF): Remove variable. + +2010-07-31 Bruno Haible + + Use new ansi-c++.m4 from gnulib. + * configure.ac: Invoke gl_PROG_ANSI_CXX instead of gt_PROG_ANSI_CXX. + Reported at . + +2010-06-06 Bruno Haible + + New options --with-xz and --with-bzip2 for compressing the archive. + * configure.ac: New options --without-bzip2, --without-xz. + (ARCHIVE_FORMAT): Rename value 'dir' to 'dirgz'. Recognize also values + 'dirxz' or 'dirbz2', depending on options. + +2010-06-06 Bruno Haible + + * configure.ac (ARCHIVE_FORMAT): If neither --with-git nor --with-cvs + is specified, don't use the git format if the 'git' program if older + than version 1.6. + Suggested by Karl Berry . + +2010-06-04 Bruno Haible + + * gettext-0.18.1 released. + +2010-06-04 Bruno Haible + + * configure.ac (ARCHIVE_FORMAT): If neither --with-git nor --with-cvs + is specified, use the git format only if the 'git' program exists. + +2010-06-03 Bruno Haible + + Deprecate the --with-cvs option. + * configure.ac: Document options --without-git, --with-cvs. + (ARCHIVE_FORMAT): Use cvs only when explicitly asked for. + +2010-05-24 Bruno Haible + + Use the newest regex module from gnulib. + * configure.ac: Invoke grgl_EARLY and grgl_INIT. Don't invoke + gt_LIBGREP. + * Makefile.am (ACLOCAL_AMFLAGS): Add -I libgrep/gnulib-m4. + +2010-05-09 Bruno Haible + + * gettext-0.18 released. + +2010-05-09 Bruno Haible + + Export rpl_optind, rpl_optarg from DLL depending on platform. + * configure.ac (GETTEXTLIB_EXPORTS_FLAGS): New substituted variable. + * woe32dll/gettextlib-exports.c (rpl_optarg, rpl_optind): Export only + if GNULIB_DEFINED_GETOPT is set. + +2010-04-02 Bruno Haible + + * Makefile.am (ACLOCAL_AMFLAGS): Remove "-I ../autoconf-lib-link/m4" + option. + (gettextsrc_SCRIPTS): Update. + +2009-12-26 Bruno Haible + + * configure.ac: Don't define USE_IN_GETTEXT_TESTS. Test for uselocale. + +2009-12-12 Bruno Haible + + * woe32dll/export.h: Untabify. + +2009-09-27 Bruno Haible + + * configure.ac: Accept --without-cvs, --with-git options. Substitute + ARCHIVE_FORMAT. + (AC_CONFIG_FILES): Add misc/convert-archive. + +2009-08-10 Bruno Haible + + * woe32dll/gettextsrc-exports.c: Export formatstring_gfc_internal, + formatstring_qt_plural. + +2009-05-31 Bruno Haible + + * configure.ac (doc/Makefile.am): Don't invoke FIX_MAKEFILE_DISTRIB. + +2009-05-29 Bruno Haible + + Avoid lang-c++ test failure. + * configure.ac: Invoke LT_LANG also for C++. + +2009-05-23 Bruno Haible + + * configure.ac (AM_INIT_AUTOMAKE): Add 'silent-rules' option. + * gnulib-lib/Makefile.am (libgettextlib_la_LINK): Add $(AM_V_lt) flag. + +2009-05-23 Bruno Haible + + * configure.ac: Invoke gl_INIT_PACKAGE. Use the preferred form of + AM_INIT_AUTOMAKE. + +2009-05-21 Bruno Haible + + Assume automake >= 1.10.2. + * configure.ac (AC_CONFIG_FILES): Remove FIX_MAKEFILE_COMPILE, + FIX_MAKEFILE_INFO invocations. + +2009-04-11 Bruno Haible + + * configure.ac (gt_GLOBAL_SYMBOL_PIPE): Remove macro, moved to + m4/exported.m4. + +2009-03-25 Bruno Haible + + Fix the handling of Windows resources in shared libraries. + * configure.ac: Invoke LT_LANG for 'Windows Resource'. + +2009-01-14 Bruno Haible + + * configure.ac: More consistent m4 quoting. + +2008-09-14 Ralf Wildenhues + + * configure.ac: Use AC_TYPE_UNSIGNED_LONG_LONG_INT instead of + gl_AC_TYPE_UNSIGNED_LONG_LONG. + +2008-08-17 Bruno Haible + + * configure.ac: Adapt AC_C_BIGENDIAN invocation to autoconf 2.62: make + it work for universal binary builds on MacOS X. + +2008-04-20 Bruno Haible + + * configure.ac: Use LT_INIT instead of AC_PROG_LIBTOOL. + +2007-11-15 Bruno Haible + + * configure.ac: Check for getrlimit and setrlimit. + +2007-11-07 Bruno Haible + + * gettext-0.17 released. + +2007-10-28 Bruno Haible + + * styles: New directory. + * Makefile.am (SUBDIRS): Add styles. + * configure.ac (AC_CONFIG_FILES): Add styles/Makefile. + +2007-10-17 Bruno Haible + + * woe32dll/gettextlib-exports.c: Export gl_array_list_implementation, + gl_linkedhash_list_implementation. + +2007-10-01 Bruno Haible + + * gnulib-tests: New directory. + * Makefile.am (SUBDIRS): Add gnulib-tests. + * configure.ac (AC_CONFIG_FILES): Add gnulib-tests/Makefile. + +2007-09-30 Bruno Haible + + * woe32dll/gettextsrc-exports.c: Add formatstring_kde. + +2007-07-07 Bruno Haible + + * configure.ac: Don't create libuniname/Makefile. + * Makefile.am (SUBDIRS): Remove libuniname. + +2007-05-28 Bruno Haible + + * configure.ac (WOE32): New conditional. + +2007-05-27 Bruno Haible + + * configure.ac (gt_OPENMP): Remove invocation. + +2007-02-10 Bruno Haible + + * configure.ac (MSGMERGE_LIBM): Avoid inlining of the ceil, sqrt calls + on glibc systems. + Reported by I. Thomas Cundiff . + +2006-12-23 Bruno Haible + + * gnulib-lib/Makefile.am (libgettextlib_la_LINK): New variable. + +2006-12-23 Bruno Haible + + * gnulib-lib/Makefile.am (AM_CPPFLAGS): Define LIBXML_STATIC. + Needed for mingw and cygwin. + +2006-12-22 Bruno Haible + + * woe32dll/c++html-styled-ostream.cc: New file. + * woe32dll/c++term-styled-ostream.cc: New file. + +2006-12-21 Bruno Haible + + * gnulib-lib/Makefile.am: New file, partially taken from + ../gnulib-local/modules/gettext-tools-misc. + +2006-12-21 Bruno Haible + + * woe32dll/gettextlib-exports.c: Export styled_ostream_typeinfo. + * woe32dll/gettextsrc-exports.c: Export color_mode, style_file_name. + +2006-12-10 Bruno Haible + + * configure.ac: Invoke gt_LOCALE_JA. + +2006-10-27 Bruno Haible + + Work around automake-1.10 annoyance. + * Makefile.am (ACLOCAL): New macro. + +2006-11-27 Bruno Haible + + * gettext-0.16.1 released. + +2006-10-26 Bruno Haible + + * gettext-0.16 released. + +2006-10-25 Bruno Haible + + * configure.ac: Don't invoke AC_RELOCATABLE; now done through the + relocwrapper and gettext-tools-libgettextpo-misc modules. + +2006-10-25 Bruno Haible + + * configure.ac (DLL_VARIABLE): Define to empty if IN_RELOCWRAPPER is + defined. + +2006-10-20 Bruno Haible + + * Makefile.am (ACLOCAL_AMFLAGS): Add -I libgettextpo/gnulib-m4. + * configure.ac: Also invoke gtpo_EARLY, gtpo_INIT. + +2006-10-18 Bruno Haible + + * woe32dll/gettextsrc-exports.c: Add {input,output}_format_*. + +2006-10-16 Bruno Haible + + * libgettextpo: New directory. + * Makefile.am (SUBDIRS): Add libgettextpo. + * configure.ac (gt_GLOBAL_SYMBOL_PIPE): New macro. + (AC_CONFIG_FILES): Add libgettextpo/Makefile, libgettextpo/exported.sh. + +2006-10-15 Bruno Haible + + * woe32dll/gettextsrc-exports.c: Remove input_syntax. + +2006-10-02 Bruno Haible + + * Makefile.am (EXTRA_DIST): Add gnulib-m4/gnulib-cache.m4. + +2006-10-02 Bruno Haible + + * Makefile.am (ACLOCAL_AMFLAGS): Move gnulib-m4 to the end, since + sometime we have newer m4 files than gnulib. + +2006-08-28 Bruno Haible + + * configure.ac: Remove bh_C_SIGNED invocation. + +2006-07-30 Bruno Haible + + * Makefile.am (ACLOCAL_AMFLAGS): Append gnulib-m4 to search path. + (SUBDIRS): Replace lib with gnulib-lib. + (examplesbuildauxdir, examplesbuildaux_DATA): New variables. + * configure.ac (AC_PREREQ): Bump to 2.59. + (gl_EARLY): Invoke. + (AC_GNU_SOURCE, gl_USE_SYSTEM_EXTENSIONS): Remove invocations. + (gl_INIT): Invoke. + (limits.h, malloc.h, string.h, unistd.h, utime.h, values.h, + gl_STDARG_H, AM_STDBOOL_H, gl_HEADER_UNISTD, gl_AC_TYPE_UINTMAX_T, + AC_TYPE_MODE_T, gt_TYPE_SIG_ATOMIC_T, gl_SIZE_MAX, gl_ALLOCSA, + chown, getcwd, posix_spawn, raise, strerror, strtoul, uname, utime, + utimes, waitid, atexit, memmove, memset, stpcpy, strcspn, strpbrk, + vasprintf, AM_FUNC_GETLINE, getdelim, gl_EXITFAIL, + gl_FUNC_FNMATCH_POSIX, gl_GETOPT, gl_FUNC_EACCESS, gl_FUNC_STPNCPY, + gl_FUNC_STRTOUL, gl_FUNC_WCWIDTH, gl_MBSWIDTH, gt_PREREQ_BACKUPFILE, + gt_UNION_WAIT, gt_TMPDIR, gt_FUNC_MKDTEMP, gt_SIGNALBLOCKING, + gt_FUNC_SETENV, gl_FUNC_STRERROR, gl_FUNC_GLIBC_UNLOCKED_IO, gl_ERROR, + gl_QUOTEARG, gl_QUOTE, gl_PATHMAX, gl_FUNC_READLINK, gl_XREADLINK, + gl_CANONICALIZE, gl_XSIZE, gl_MINMAX, gl_LIST, gl_LOCK, gl_TLS, + gl_BYTESWAP): Remove tests done directly or indirectly by gl_INIT + or that are now unused. + (AC_CONFIG_FILES): Add gnulib-lib/Makefile, remove lib/Makefile. + Remove lib/javacomp.sh, lib/javaexec.sh, lib/csharpcomp.sh, + lib/csharpexec.sh. + +2006-07-30 Bruno Haible + + * configure.ac: Don't test for the strstr function. + +2006-07-30 Bruno Haible + + * configure.ac: Update for changed location of javacomp.sh.in, + javaexec.sh.in, csharpcomp.sh.in, csharpexec.sh.in. + +2006-07-23 Bruno Haible + + * configure.ac: Invoke gt_OPENMP. + +2006-07-23 Bruno Haible + + * configure.ac: Invoke gl_LOCK and gl_TLS. + +2006-07-22 Bruno Haible + + * configure.ac: Invoke gl_SIZE_MAX and gl_LIST. + +2006-07-25 Bruno Haible + + * windows: Remove directory. + * Makefile.msvc: Remove file. + * Makefile.am (config.h.msvc, windows/stdbool.h): Remove rules. + (EXTRA_DIST): Remove Makefile.msvc, config.h.msvc, windows/*. + +2006-07-25 Bruno Haible + + * Makefile.vms: Remove file. + * Makefile.am (config.h_vms): Remove rule. + (EXTRA_DIST): Remove Makefile.vms, config.h_vms. + +2006-07-22 Bruno Haible + + * configure.ac: Invoke gl_FUNC_WCWIDTH, gl_MINMAX. + +2006-07-21 Bruno Haible + + * gettext-0.15 released. + +2006-07-20 Bruno Haible + + * windows/gettextlib.rc: Bump version number to 0.15.0. + * windows/gettextsrc.rc: Likewise. + * windows/gettextpo.rc: Likewise. + +2006-07-14 Bruno Haible + + * Makefile.am (MOSTLYCLEANFILES): New variable. + +2006-06-29 Bruno Haible + + * configure.ac: Remove AC_CONFIG_FILES for files in examples subdir. + Use AC_CONFIG_SUBDIRS instead. + +2006-06-27 Bruno Haible + + * configure.ac: Remove AC_ISC_POSIX invocation. + +2006-06-27 Bruno Haible + + Assume ANSI C header files and functions. + * configure.ac: Remove AC_HEADER_STDC invocation. + +2006-06-27 Bruno Haible + + Assume vprintf function. + * configure.ac: Remove AC_FUNC_VPRINTF invocation. + * Makefile.am (config.h_vms, config.h.msvc): Remove unused HAVE_VPRINTF + substitution. + +2006-06-27 Bruno Haible + + * Makefile.am (config.h_vms, config.h.msvc): Drop unused HAVE_LOCALE_H + substitution. + +2006-04-14 Bruno Haible + + Assume autoconf >= 2.60. + * configure.ac (localedir): Remove variable. + (docdir): If --docdir value was given, use that. + (mandir): Remove customization. + +2006-05-15 Bruno Haible + + * woe32dll/export.h: Renamed from cygwin/export.h. + * woe32dll/gettextlib-exports: Renamed from cygwin/gettextlib-exports.h. + * woe32dll/gettextsrc-exports: Renamed from cygwin/gettextsrc-exports.h. + * woe32dll/gettextpo-exports: Renamed from cygwin/gettextpo-exports.h. + * configure.ac (WOE32DLL): Renamed from CYGWINDLL. + (DLL_VARIABLE): Define as nonempty on mingw if and only if + --enable-shared was specified. + * Makefile.am (EXTRA_DIST): Update. + +2006-05-11 Bruno Haible + + * woe32dll: Directory renamed from mingw. + * cygwin/export.h: New file. + * cygwin/gettextlib-exports.c: New file. + * cygwin/gettextsrc-exports.c: New file. + * cygwin/gettextpo-exports.c: New file. + * configure.ac (WOE32DLL): Condition renamed from MINGW. Activate it + also on Cygwin. Only activate it when compiling shared libraries. + (CYGWINDLL): New condition. + (CYGWINDLL): New define. + (DLL_VARIABLE): Use dllimport also on Cygwin. + * Makefile.am (EXTRA_DIST): Add cygwin/export.h. + +2006-05-11 Bruno Haible + + * woe32dll/c++format.cc: New file. + +2006-05-02 Charles Wilson + + * configure.ac (LTNOUNDEF): Set to -no-undefined also on mingw and + Cygwin. + +2006-05-08 Bruno Haible + + * Makefile.am (windows/stdbool.h): Create directory if needed. + Based on a patch by Charles Wilson. + +2006-04-30 Bruno Haible + + * configure.ac: Invoke gl_STDARG_H. + +2006-05-01 Bruno Haible + + * configure.ac: Pass a source-version to gt_JAVACOMP. Move gt_JAVAEXEC + call before the gt_JAVACOMP call. + +2006-04-23 Bruno Haible + + * configure.ac: Invoke gl_HEADER_UNISTD. + +2006-04-17 Bruno Haible + + * Makefile.am (gettextsrc_SCRIPTS): Remove mkinstalldirs. + +2006-03-11 Bruno Haible + + * configure.ac (MSGMERGE_LIBM): New variable. Test for presence of + ceil() and sqrt(). + +2005-11-23 Bruno Haible + + Cygwin portability. + * configure.ac: Invoke gl_WOE32_DLL. + +2005-11-24 Bruno Haible + + * Makefile.am (config.h_vms, config.h.msvc): Treat HAVE_FWPRINTF like + HAVE_WPRINTF. Needed since 2003-09-17. + Reported by Svante Seleborg . + +2005-08-16 Bruno Haible + + * configure.ac: Remove gl_STRCASE invocation. + +2005-09-20 Bruno Haible + + * configure.ac: Invoke BISON_I18N. + +2005-08-23 Bruno Haible + + * configure.ac: Invoke gl_BYTESWAP. Define ENDIANNESS. + +2005-08-13 Bruno Haible + + New configure options --disable-java, --disable-native-java. + * configure.ac: Invoke gt_JAVA_CHOICE. + (BUILDJAVAEXE, BUILDJAVA): Use it. + +2005-08-11 Bruno Haible + + * configure.ac: Accept --without-emacs option. + +2005-08-03 Bruno Haible + + * configure.ac (intl/Makefile): Remove the VPATH line. + Reported by Jason Keltz . + +2005-07-26 Bruno Haible + + * configure.ac: Move the AM_GNU_GETTEXT invocation early, since it + modifies CPPFLAGS. + +2005-07-05 Bruno Haible + + * mingw: New directory. + * configure.ac (LTNOUNDEF): New macro. + (MINGW): New conditional. + (DLL_VARIABLE): Define also as nonempty when building shared libraries + with mingw. + +2005-05-01 Bruno Haible + + * configure.ac: Call gt_CSHARPEXEC with parameters. + +2005-03-20 Bruno Haible + + * configure.ac: Test for field __names in struct __locale_struct. + Also define USE_IN_GETTEXT_TESTS. + +2006-06-21 Bruno Haible + + * gettext-0.14.6 released. + +2006-06-21 Bruno Haible + + * windows/gettextlib.rc: Bump version number to 0.14.6. + * windows/gettextsrc.rc: Likewise. + * windows/gettextpo.rc: Likewise. + +2005-05-23 Bruno Haible + + * gettext-0.14.5 released. + +2005-05-23 Bruno Haible + + * windows/gettextlib.rc: Bump version number to 0.14.5. + * windows/gettextsrc.rc: Likewise. + * windows/gettextpo.rc: Likewise. + +2005-04-11 Bruno Haible + + * gettext-0.14.4 released. + +2005-04-11 Bruno Haible + + * windows/gettextlib.rc: Bump version number to 0.14.4. + * windows/gettextsrc.rc: Likewise. + * windows/gettextpo.rc: Likewise. + +2005-03-22 Bruno Haible + + * configure.ac (AC_CONFIG_AUX_DIR): Use ../build-aux. + * Makefile.am (ACLOCAL_AMFLAGS): Replace config/m4 with m4. + (gettextsrc_SCRIPTS): Replace config with build-aux. + +2005-03-14 Bruno Haible + + * gettext-0.14.3 released. + +2005-03-08 Bruno Haible + + * windows/gettextlib.rc: Bump version number to 0.14.3. + * windows/gettextsrc.rc: Likewise. + * windows/gettextpo.rc: Likewise. + +2005-02-24 Bruno Haible + + * gettext-0.14.2 released. + +2005-02-13 Bruno Haible + + * configure.ac: Invoke gt_LOCALE_FR_UTF8. + +2005-02-13 Bruno Haible + + * configure.ac: Invoke gl_FUNC_STRTOUL. Keep AC_CHECK_FUNCS(strtoul) + because plural-exp.c needs it. + +2005-02-12 Bruno Haible + + * windows/gettextsrc.def: Remove po_parse_comment_filepos. Add + check_msgid_msgstr_format, is_ascii_msgdomain_list, + message_list_insert_at, string_list_join. + +2005-02-12 Bruno Haible + + * windows/getopt.h: New file. + * Makefile.am (EXTRA_DIST): Add it. + +2005-02-11 Bruno Haible + + * windows/gettextlib.rc: Bump version number to 0.14.2. + * windows/gettextsrc.rc: Likewise. + * windows/gettextpo.rc: Likewise. + +2005-02-10 Bruno Haible + + * windows/gettextpo.def: Add po_header_set_field. + +2005-02-10 Bruno Haible + + * windows/gettextpo.def: Add libgettextpo_version. + +2005-02-10 Bruno Haible + + * windows/gettextpo.def: Add po_message_remove_filepos, + po_message_add_filepos. + +2005-02-10 Bruno Haible + + * windows/gettextpo.def: Add po_message_set_extracted_comments. + +2005-02-07 Bruno Haible + + * windows/gettextlib.def: Add c_strcasecmp, c_strncasecmp. + +2005-01-08 Bruno Haible + + * libgrep: New subdirectory. + * configure.ac: Invoke gt_LIBGREP. Declare libgrep/Makefile.am. + * Makefile.am (SUBDIRS): Add libgrep. + (config.h_vms, config.h.msvc): Define HAVE_DECL_STRDUP, HAVE_MEMCHR, + restrict. + * Makefile.msvc: Recurse into libgrep as well. + * Makefile.vms: Likewise. + +2005-01-06 Bruno Haible + + * configure.ac: Invoke gl_STRCASE. Don't test for strcasecmp and + strncasecmp here. + +2005-01-06 Bruno Haible + + * configure.ac: Invoke gl_FUNC_STPNCPY. + +2005-01-06 Bruno Haible + + * configure.ac: Invoke gl_ERROR instead of gt_FUNC_ERROR_AT_LINE. + * Makefile.am (config.h_vms, config.h.msvc): Remove setting of + HAVE_DECL_STRERROR. + +2005-01-06 Bruno Haible + + * configure.ac: Invoke gl_QUOTE. + +2005-01-06 Bruno Haible + + * configure.ac: Invoke gl_EXITFAIL. + +2005-01-06 Bruno Haible + + * configure.ac: Invoke gl_GETOPT. + * Makefile.am (config.h_vms, config.h.msvc): Define __GETOPT_PREFIX + to empty. + * Makefile.msvc: Update. + * Makefile.vms: Update. + +2005-01-06 Bruno Haible + + * Makefile.am (config.h_vms, config.h.msvc): Define HAVE_WMEMCHR and + HAVE_WMEMCPY to 1. + +2005-01-06 Bruno Haible + + * Makefile.am (config.h_vms, config.h.msvc): Define USE_UNLOCKED_IO + to 1. + +2005-01-05 Bruno Haible + + * windows/gettextlib.rc: Update copyright year. + * windows/gettextsrc.rc: Likewise. + * windows/gettextpo.rc: Likewise. + +2004-12-10 Bruno Haible + + * windows/gettextlib.def: Export obstack_free, not _obstack_free. + +2004-09-06 Bruno Haible + + * windows/gettextpo.def: Add po_message_check_format. + +2004-09-05 Bruno Haible + + * windows/gettextsrc.def: Add the variables names from po-error.h. + * windows/gettextpo.def: Add many new function names. + +2004-04-19 Bruno Haible + + * gettext.m4: Change jm_ to gl_ in all uses of AC_DEFINE'd names. + +2004-03-11 Bruno Haible + + * Makefile.am (config.h.msvc): Fix the value of SIZE_MAX. + +2004-02-07 Bruno Haible + + * configure.ac: Invoke gl_QUOTEARG. + +2004-01-29 Bruno Haible + + * gettext-0.14.1 released. + +2004-01-28 Bruno Haible + + * gettext-0.14 released. + +2004-01-24 Bruno Haible + + * Makefile.am (config.h_vms): Set MALLOC_0_IS_NONNULL to 0. + (config.h.msvc): Set MALLOC_0_IS_NONNULL to 1. + +2004-01-12 Bruno Haible + + * windows/gettextlib.def: Add compile_csharp_class, + execute_csharp_program. + * windows/gettextsrc.def: Add formatstring_csharp. Rename + get_c99_format_directives to get_sysdep_c_format_directives. + +2004-01-17 Bruno Haible + + * windows/gettextlib.rc: Bump version number to 0.14. + * windows/gettextsrc.rc: Likewise. + * windows/gettextpo.rc: Likewise. + +2004-01-10 Bruno Haible + + * configure.ac: When --disable-csharp was given, set BUILDCSHARP=no. + +2003-12-26 Bruno Haible + + Support for C#. + * configure.ac: Invoke gt_CSHARPCOMP, gt_CSHARPEXEC. Set BUILDCSHARP + and TESTCSHARP. + (AC_CONFIG_FILES): Add lib/csharpcomp.sh and lib/csharpexec.sh. + +2003-12-27 Bruno Haible + + * configure.ac: Set and AC_SUBST the TESTLIBASPRINTF variable. + +2003-12-12 Bruno Haible + + Assume automake-1.8. + * Makefile.am (html): Remove rule. + +2003-11-30 Bruno Haible + + * configure.ac: Remove computation of LTALLOCA. + +2003-11-30 Bruno Haible + + * configure.ac: Invoke gl_ALLOCSA instead of gl_FUNC_ALLOCA. + * windows/gettextlib.def: Add mallocsa, xmallocsa, freesa. + +2003-12-17 Bruno Haible + + * gettext-0.13.1 released. + +2003-12-02 Bruno Haible + + * Makefile.msvc (all, install, installdirs, uninstall, check, + mostlyclean, clean, distclean, maintainer-clean): Create the intl + directory if it doesn't exist. Needed because a widespread archiving + tool on Windows doesn't extract empty directories that are present in + .tar.gz files. + Reported by Stefan Kowski . + +2003-12-02 Bruno Haible + + * configure.ac: Invoke FIX_MAKEFILE_DISTRIB for examples/Makefile. + +2003-11-30 Bruno Haible + + * gettext-0.13 released. + +2003-11-28 Bruno Haible + + * Makefile.am (config.h.msvc): Define SIZE_MAX and inline. + +2003-11-28 Bruno Haible + + * windows/gettextlib.def: Add at_fatal_signal, block_fatal_signals, + unblock_fatal_signals, _obstack_begin, _obstack_free, + _obstack_newchunk. + * windows/gettextsrc.def: Add message_print_syntax_stringtable. + +2003-11-16 Bruno Haible + + * configure.ac (man/Makefile): Postprocess with FIX_MAKEFILE_DISTRIB. + +2003-11-16 Bruno Haible + + * windows/gettextpo.rc: Bump version number to 0.13. + +2003-11-15 Bruno Haible + + * configure.ac (AC_CONFIG_FILES): Create examples/Makefile, + examples, installpaths, examples/po/Makefile. + * Makefile.am (SUBDIRS): Add examples. + * Makefile.msvc (all, install, installdirs, uninstall, check, + mostlyclean, clean, distclean, maintainer-clean): Recurse into + examples. + * Makefile.vms (all, install, installdirs, uninstall, check, + mostlyclean, clean, distclean, maintainer-clean): Recurse into + examples. + +2003-11-13 Bruno Haible + + * configure.ac (docdir): New variable. + +2003-11-05 Bruno Haible + + * configure.ac (localedir): New variable. + (src/user-email): Generate from src/user-email.sh.in. + +2003-11-04 Bruno Haible + + * configure.ac: Invoke gl_XSIZE. + +2003-10-31 Bruno Haible + + * configure.ac: Also check for waitid. + +2003-10-31 Bruno Haible + + * configure.ac: Remove argument of FIX_MAKEFILE_COMPILE, + FIX_MAKEFILE_DISTRIB, FIX_MAKEFILE_INFO. + +2003-10-07 Bruno Haible + + * configure.ac: Drop PARAMS definition from config.h.in. + +2003-10-08 Bruno Haible + + * configure.ac: Invoke gt_SIG_ATOMIC_T. + * Makefile.am (config.h_vms, config.h.msvc): Define HAVE_SIG_ATOMIC_T. + +2003-10-04 Bruno Haible + + * configure.ac: Remove gt_PROG_LEX invocation. + +2003-09-18 Bruno Haible + + * windows/gettextpo.def: Add po_file_domain_header, po_header_field, + po_message_is_obsolete, po_message_is_fuzzy, po_message_is_format. + * windows/gettextpo.rc: Bump version number to 0.12.2. + +2003-09-16 Bruno Haible + + Portability to SunOS 4. + * configure.ac: Also check for atexit. + +2003-09-14 Bruno Haible + + * windows/gettextlib.def: Export fwriteerror. + +2003-09-13 Bruno Haible + + * windows/gettextlib.def: Export close_stdout. + +2003-09-09 Bruno Haible + + * configure.ac: Don't test for putc_unlocked. + +2003-08-31 Bruno Haible + + * windows/gettextsrc.def: Add formatstring_sh. + +2003-08-29 Bruno Haible + + * Makefile.am (config.h.msvc): Define HAVE_DECL__SNPRINTF, + HAVE_DECL__SNWPRINTF. + +2003-08-24 Bruno Haible + + * configure.ac: Define DLL_VARIABLE in config.h through AH_BOTTOM. + +2003-08-24 Bruno Haible + + * windows/gettextsrc.def: Add formatstring_gcc_internal, + formatstring_perl, formatstring_perl_brace to the export list. + +2003-08-24 Bruno Haible + + * windows/gettextpo.def: New file. + * windows/gettextpo.rc: New file. + * Makefile.am (EXTRA_DIST): Add them. + +2003-08-23 Bruno Haible + + * Makefile.am (config.h_vms): Define HAVE_BTOWC, HAVE_DECL_GETENV, + HAVE_MBSTATE_T, HAVE_READLINK, HAVE_WCSLEN, HAVE_WINT_T, HAVE_WPRINTF. + (config.h.msvc): Define .HAVE_BTOWC, HAVE_DECL_GETENV, HAVE_WCSLEN, + HAVE_WINT_T, HAVE_WPRINTF. + +2003-08-23 Bruno Haible + + * configure.ac: Invoke gl_USE_SYSTEM_EXTENSIONS. + +2003-08-23 Bruno Haible + + * windows/fnmatch.h: Include fnmatch_.h. + +2003-08-23 Bruno Haible + + * configure.ac: Invoke AM_STDBOOL_H instead of gt_STDBOOL_H. + Invoke gl_FUNC_FNMATCH_POSIX instead of gt_FUNC_FNMATCH. + Invoke gl_MBSWIDTH instead of jm_PREREQ_MBSWIDTH. + +2003-07-01 Bruno Haible + + * configure.ac: Invoke gl_FUNC_READLINK. + +2003-07-01 Bruno Haible + + * Makefile.am (windows/stdbool.h): Use stdbool_.h instead of + stdbool.h.in. + +2003-06-19 Bruno Haible + + * configure.ac: Invoke gt_LOCALE_FR. + +2003-06-08 Bruno Haible + + * Makefile.am (config.h_vms): Don't define HAVE_ENVIRON_DECL. Define + eaccess. + * Makefile.vms (all, install, installdirs, uninstall, check, + mostlyclean, clean, distclean, maintainer-clean): Fix passing of srcdir + to sub-Makefile. + Reported by Jouk Jansen . + +2003-05-22 Bruno Haible + + * gettext-0.12.1 released. + +2003-05-20 Bruno Haible + + * Makefile.am (config.h_vms, config.h.msvc, windows/stdbool.h): + Don't use $< here. + +2003-05-19 Bruno Haible + + * windows/gettextlib.rc: Include . + * windows/gettextsrc.rc: Likewise. + Reported by Perry Rapp. + +2003-05-17 Bruno Haible + + * gettext-0.12 released. + +2003-05-17 Bruno Haible + + * Makefile.am (config.h.msvc): Define HAVE_STRPBRK. + +2003-05-15 Bruno Haible + + * Makefile.am (config.h_vms, config.h.msvc): Define HAVE_DECL_STRERROR. + +2003-05-12 Bruno Haible + + * configure.ac: Invoke AC_GNU_SOURCE and jm_FUNC_GLIBC_UNLOCKED_IO. + +2003-05-12 Bruno Haible + + * windows/gettextsrc.def: Update. + Based on a patch by Perry Rapp. + +2003-04-12 Bruno Haible + + * Makefile.am (config.h_vms): Renamed from config.h.vms. + * Makefile.vms: Don't use the force target. Use config.h_vms, not + config.h.vms. Create intl subdirectory. Correct wildcard syntax. + Suggested by Jouk Jansen . + +2003-04-12 Bruno Haible + + * configure.ac (mandir): Change default value. + * Makefile.msvc (mandir, docdir): Use datadir instead of prefix. + +2003-04-10 Bruno Haible + + * configure.ac: Invoke gl_FUNC_EACCESS. + +2003-04-05 Bruno Haible + + * Makefile.am (config.h.msvc): Remove redundant sed expression. + +2003-04-03 Bruno Haible + + * configure.ac (INVALID_PATH_CHAR): Add a definition for Woe32. + Reported by Perry Rapp. + +2003-03-30 Bruno Haible + + * Makefile.vms: New file. + * Makefile.am (config.h.vms): New rule. + (EXTRA_DIST): Add Makefile.vms and config.h.vms. + +2003-03-30 Bruno Haible + + * configure.ac: Add checks for and chown(). + +2003-03-17 Bruno Haible + + Native Woe32/MSVC support. + * Makefile.msvc: New file. + * README.woe32: New file. + * windows/gettextlib.def: New file. + * windows/gettextlib.rc: New file. + * windows/gettextsrc.def: New file. + * windows/gettextsrc.rc: New file. + * windows/alloca.h: New file. + * windows/fnmatch.h: New file. + * Makefile.am (EXTRA_DIST): Add them and config.h.msvc, + windows/stdbool.h. + (config.h.msvc, intl/libgnuintl.h.msvc-shared, windows/stdbool.h): New + rules. + * configure.ac: Invoke AC_TYPE_MODE_T. + +2003-02-28 Bruno Haible + + Support for relocatable installation. + * configure.ac: Invoke AC_RELOCATABLE, AC_REPLACE_FUNCS([memmove]), + gl_FUNC_STRERROR, gl_XREADLINK, gl_CANONICALIZE. + * INSTALL: Document --enable-relocatable and --with-libintl-prefix. + +2003-02-28 Bruno Haible + + * configure.ac: Invoke gl_PATHMAX. + +2003-02-22 Bruno Haible + + * Makefile.am (ps, pdf): Remove rules, redundant with automake 1.7.2. + +2003-02-18 Bruno Haible + + * Makefile.am: Don't install ABOUT-NLS in $(datadir)/gettext. This is + now done by the gettext-runtime package. + +2003-02-12 Bruno Haible + + Big restructuring. + * configure.ac: New file. + * Makefile.am: New file. + diff -Nru gettext-0.19.6/gettext-tools/config.h.in gettext-0.19.7/gettext-tools/config.h.in --- gettext-0.19.6/gettext-tools/config.h.in 2015-09-11 03:05:06.000000000 +0000 +++ gettext-0.19.7/gettext-tools/config.h.in 2015-12-27 23:09:37.000000000 +0000 @@ -54,12 +54,15 @@ /* Define as the word index where to find the exponent of 'double'. */ #undef DBL_EXPBIT0_WORD +/* Define as the bit index in the word where to find the sign of 'double'. */ +#undef DBL_SIGNBIT_BIT + +/* Define as the word index where to find the sign of 'double'. */ +#undef DBL_SIGNBIT_WORD + /* Define to 1 if // is a file system root distinct from /. */ #undef DOUBLE_SLASH_IS_DISTINCT_ROOT -/* Define to 1 if libexpat shall be dynamically loaded via dlopen(). */ -#undef DYNLOAD_LIBEXPAT - /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS @@ -74,6 +77,19 @@ /* Define this to 1 if F_DUPFD behavior does not match POSIX */ #undef FCNTL_DUPFD_BUGGY +/* Define as the bit index in the word where to find bit 0 of the exponent of + 'float'. */ +#undef FLT_EXPBIT0_BIT + +/* Define as the word index where to find the exponent of 'float'. */ +#undef FLT_EXPBIT0_WORD + +/* Define as the bit index in the word where to find the sign of 'float'. */ +#undef FLT_SIGNBIT_BIT + +/* Define as the word index where to find the sign of 'float'. */ +#undef FLT_SIGNBIT_WORD + /* Define to 1 if fopen() fails to recognize a trailing slash. */ #undef FOPEN_TRAILING_SLASH_BUG @@ -212,12 +228,30 @@ /* Define to 1 when the gnulib module gettimeofday should be tested. */ #undef GNULIB_TEST_GETTIMEOFDAY +/* Define to 1 when the gnulib module isinf should be tested. */ +#undef GNULIB_TEST_ISINF + +/* Define to 1 when the gnulib module isnan should be tested. */ +#undef GNULIB_TEST_ISNAN + +/* Define to 1 when the gnulib module isnand should be tested. */ +#undef GNULIB_TEST_ISNAND + +/* Define to 1 when the gnulib module isnanf should be tested. */ +#undef GNULIB_TEST_ISNANF + +/* Define to 1 when the gnulib module isnanl should be tested. */ +#undef GNULIB_TEST_ISNANL + /* Define to 1 when the gnulib module iswblank should be tested. */ #undef GNULIB_TEST_ISWBLANK /* Define to 1 when the gnulib module localeconv should be tested. */ #undef GNULIB_TEST_LOCALECONV +/* Define to 1 when the gnulib module log10 should be tested. */ +#undef GNULIB_TEST_LOG10 + /* Define to 1 when the gnulib module lseek should be tested. */ #undef GNULIB_TEST_LSEEK @@ -344,6 +378,9 @@ /* Define to 1 when the gnulib module sigaction should be tested. */ #undef GNULIB_TEST_SIGACTION +/* Define to 1 when the gnulib module signbit should be tested. */ +#undef GNULIB_TEST_SIGNBIT + /* Define to 1 when the gnulib module sigprocmask should be tested. */ #undef GNULIB_TEST_SIGPROCMASK @@ -560,6 +597,18 @@ /* Define to 1 if you have the `confstr' function. */ #undef HAVE_CONFSTR +/* Define if the copysignf function is declared in and available in + libc. */ +#undef HAVE_COPYSIGNF_IN_LIBC + +/* Define if the copysignl function is declared in and available in + libc. */ +#undef HAVE_COPYSIGNL_IN_LIBC + +/* Define if the copysign function is declared in and available in + libc. */ +#undef HAVE_COPYSIGN_IN_LIBC + /* Define to 1 if you have the header file. */ #undef HAVE_CTYPE_H @@ -575,6 +624,18 @@ you don't. */ #undef HAVE_DECL_CLEARERR_UNLOCKED +/* Define to 1 if you have the declaration of `copysign', and to 0 if you + don't. */ +#undef HAVE_DECL_COPYSIGN + +/* Define to 1 if you have the declaration of `copysignf', and to 0 if you + don't. */ +#undef HAVE_DECL_COPYSIGNF + +/* Define to 1 if you have the declaration of `copysignl', and to 0 if you + don't. */ +#undef HAVE_DECL_COPYSIGNL + /* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you don't. */ #undef HAVE_DECL_FEOF_UNLOCKED @@ -639,6 +700,10 @@ don't. */ #undef HAVE_DECL_ISBLANK +/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't. + */ +#undef HAVE_DECL_ISINF + /* Define to 1 if you have the declaration of `iswblank', and to 0 if you don't. */ #undef HAVE_DECL_ISWBLANK @@ -880,6 +945,15 @@ /* Define to 1 if you have the `isblank' function. */ #undef HAVE_ISBLANK +/* Define if the isnan(double) function is available in libc. */ +#undef HAVE_ISNAND_IN_LIBC + +/* Define if the isnan(float) function is available in libc. */ +#undef HAVE_ISNANF_IN_LIBC + +/* Define if the isnan(long double) function is available in libc. */ +#undef HAVE_ISNANL_IN_LIBC + /* Define to 1 if you have the `issetugid' function. */ #undef HAVE_ISSETUGID @@ -905,9 +979,6 @@ header file. */ #undef HAVE_LIBCROCO_0_6_LIBCROCO_LIBCROCO_CONFIG_H -/* Define if you have the libexpat library. */ -#undef HAVE_LIBEXPAT - /* Define to 1 if you have the header file. */ #undef HAVE_LIBINTL_H @@ -1072,9 +1143,27 @@ /* Define to 1 if you have the `rawmemchr' function. */ #undef HAVE_RAWMEMCHR +/* Define to 1 if acosf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_ACOSF + +/* Define to 1 if acosl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_ACOSL + /* Define to 1 if alphasort is declared even after undefining macros. */ #undef HAVE_RAW_DECL_ALPHASORT +/* Define to 1 if asinf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_ASINF + +/* Define to 1 if asinl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_ASINL + +/* Define to 1 if atanf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_ATANF + +/* Define to 1 if atanl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_ATANL + /* Define to 1 if atoll is declared even after undefining macros. */ #undef HAVE_RAW_DECL_ATOLL @@ -1085,6 +1174,21 @@ macros. */ #undef HAVE_RAW_DECL_CANONICALIZE_FILE_NAME +/* Define to 1 if cbrt is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_CBRT + +/* Define to 1 if cbrtf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_CBRTF + +/* Define to 1 if cbrtl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_CBRTL + +/* Define to 1 if ceilf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_CEILF + +/* Define to 1 if ceill is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_CEILL + /* Define to 1 if chdir is declared even after undefining macros. */ #undef HAVE_RAW_DECL_CHDIR @@ -1094,6 +1198,24 @@ /* Define to 1 if closedir is declared even after undefining macros. */ #undef HAVE_RAW_DECL_CLOSEDIR +/* Define to 1 if copysign is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_COPYSIGN + +/* Define to 1 if copysignf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_COPYSIGNF + +/* Define to 1 if copysignl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_COPYSIGNL + +/* Define to 1 if cosf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_COSF + +/* Define to 1 if coshf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_COSHF + +/* Define to 1 if cosl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_COSL + /* Define to 1 if dirfd is declared even after undefining macros. */ #undef HAVE_RAW_DECL_DIRFD @@ -1121,6 +1243,36 @@ /* Define to 1 if euidaccess is declared even after undefining macros. */ #undef HAVE_RAW_DECL_EUIDACCESS +/* Define to 1 if exp2 is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_EXP2 + +/* Define to 1 if exp2f is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_EXP2F + +/* Define to 1 if exp2l is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_EXP2L + +/* Define to 1 if expf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_EXPF + +/* Define to 1 if expl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_EXPL + +/* Define to 1 if expm1 is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_EXPM1 + +/* Define to 1 if expm1f is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_EXPM1F + +/* Define to 1 if expm1l is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_EXPM1L + +/* Define to 1 if fabsf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FABSF + +/* Define to 1 if fabsl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FABSL + /* Define to 1 if faccessat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FACCESSAT @@ -1148,9 +1300,39 @@ /* Define to 1 if ffsll is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FFSLL +/* Define to 1 if floorf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FLOORF + +/* Define to 1 if floorl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FLOORL + +/* Define to 1 if fma is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FMA + +/* Define to 1 if fmaf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FMAF + +/* Define to 1 if fmal is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FMAL + +/* Define to 1 if fmod is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FMOD + +/* Define to 1 if fmodf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FMODF + +/* Define to 1 if fmodl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FMODL + /* Define to 1 if fpurge is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FPURGE +/* Define to 1 if frexpf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FREXPF + +/* Define to 1 if frexpl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FREXPL + /* Define to 1 if fseeko is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FSEEKO @@ -1223,6 +1405,21 @@ /* Define to 1 if group_member is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GROUP_MEMBER +/* Define to 1 if hypotf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_HYPOTF + +/* Define to 1 if hypotl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_HYPOTL + +/* Define to 1 if ilogb is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_ILOGB + +/* Define to 1 if ilogbf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_ILOGBF + +/* Define to 1 if ilogbl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_ILOGBL + /* Define to 1 if imaxabs is declared even after undefining macros. */ #undef HAVE_RAW_DECL_IMAXABS @@ -1238,6 +1435,9 @@ /* Define to 1 if isatty is declared even after undefining macros. */ #undef HAVE_RAW_DECL_ISATTY +/* Define to 1 if isblank is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_ISBLANK + /* Define to 1 if iswctype is declared even after undefining macros. */ #undef HAVE_RAW_DECL_ISWCTYPE @@ -1247,12 +1447,63 @@ /* Define to 1 if lchown is declared even after undefining macros. */ #undef HAVE_RAW_DECL_LCHOWN +/* Define to 1 if ldexpf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LDEXPF + +/* Define to 1 if ldexpl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LDEXPL + /* Define to 1 if link is declared even after undefining macros. */ #undef HAVE_RAW_DECL_LINK /* Define to 1 if linkat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_LINKAT +/* Define to 1 if log is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LOG + +/* Define to 1 if log10 is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LOG10 + +/* Define to 1 if log10f is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LOG10F + +/* Define to 1 if log10l is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LOG10L + +/* Define to 1 if log1p is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LOG1P + +/* Define to 1 if log1pf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LOG1PF + +/* Define to 1 if log1pl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LOG1PL + +/* Define to 1 if log2 is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LOG2 + +/* Define to 1 if log2f is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LOG2F + +/* Define to 1 if log2l is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LOG2L + +/* Define to 1 if logb is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LOGB + +/* Define to 1 if logbf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LOGBF + +/* Define to 1 if logbl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LOGBL + +/* Define to 1 if logf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LOGF + +/* Define to 1 if logl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LOGL + /* Define to 1 if lseek is declared even after undefining macros. */ #undef HAVE_RAW_DECL_LSEEK @@ -1313,6 +1564,15 @@ /* Define to 1 if mkstemps is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKSTEMPS +/* Define to 1 if modf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_MODF + +/* Define to 1 if modff is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_MODFF + +/* Define to 1 if modfl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_MODFL + /* Define to 1 if nl_langinfo is declared even after undefining macros. */ #undef HAVE_RAW_DECL_NL_LANGINFO @@ -1419,6 +1679,9 @@ undefining macros. */ #undef HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_INIT +/* Define to 1 if powf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_POWF + /* Define to 1 if pread is declared even after undefining macros. */ #undef HAVE_RAW_DECL_PREAD @@ -1458,15 +1721,42 @@ /* Define to 1 if realpath is declared even after undefining macros. */ #undef HAVE_RAW_DECL_REALPATH +/* Define to 1 if remainder is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_REMAINDER + +/* Define to 1 if remainderf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_REMAINDERF + +/* Define to 1 if remainderl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_REMAINDERL + /* Define to 1 if renameat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_RENAMEAT /* Define to 1 if rewinddir is declared even after undefining macros. */ #undef HAVE_RAW_DECL_REWINDDIR +/* Define to 1 if rint is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_RINT + +/* Define to 1 if rintf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_RINTF + +/* Define to 1 if rintl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_RINTL + /* Define to 1 if rmdir is declared even after undefining macros. */ #undef HAVE_RAW_DECL_RMDIR +/* Define to 1 if round is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_ROUND + +/* Define to 1 if roundf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_ROUNDF + +/* Define to 1 if roundl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_ROUNDL + /* Define to 1 if rpmatch is declared even after undefining macros. */ #undef HAVE_RAW_DECL_RPMATCH @@ -1521,12 +1811,27 @@ /* Define to 1 if sigprocmask is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SIGPROCMASK +/* Define to 1 if sinf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_SINF + +/* Define to 1 if sinhf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_SINHF + +/* Define to 1 if sinl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_SINL + /* Define to 1 if sleep is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SLEEP /* Define to 1 if snprintf is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SNPRINTF +/* Define to 1 if sqrtf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_SQRTF + +/* Define to 1 if sqrtl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_SQRTL + /* Define to 1 if srandom is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SRANDOM @@ -1599,12 +1904,30 @@ /* Define to 1 if symlinkat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SYMLINKAT +/* Define to 1 if tanf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_TANF + +/* Define to 1 if tanhf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_TANHF + +/* Define to 1 if tanl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_TANL + /* Define to 1 if tmpfile is declared even after undefining macros. */ #undef HAVE_RAW_DECL_TMPFILE /* Define to 1 if towctrans is declared even after undefining macros. */ #undef HAVE_RAW_DECL_TOWCTRANS +/* Define to 1 if trunc is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_TRUNC + +/* Define to 1 if truncf is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_TRUNCF + +/* Define to 1 if truncl is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_TRUNCL + /* Define to 1 if ttyname_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_TTYNAME_R @@ -1761,6 +2084,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_RESOLV_H +/* Define to 1 if 'long double' and 'double' have the same representation. */ +#undef HAVE_SAME_LONG_DOUBLE_AS_DOUBLE + /* Define to 1 if you have the header file. */ #undef HAVE_SCHED_H @@ -2127,6 +2453,20 @@ /* Define to 1 if the C compiler is actually a C++ compiler. */ #undef IS_CPLUSPLUS +/* Define as the bit index in the word where to find bit 0 of the exponent of + 'long double'. */ +#undef LDBL_EXPBIT0_BIT + +/* Define as the word index where to find the exponent of 'long double'. */ +#undef LDBL_EXPBIT0_WORD + +/* Define as the bit index in the word where to find the sign of 'long + double'. */ +#undef LDBL_SIGNBIT_BIT + +/* Define as the word index where to find the sign of 'long double'. */ +#undef LDBL_SIGNBIT_WORD + /* Define to 1 if lseek does not detect pipes. */ #undef LSEEK_PIPE_BROKEN @@ -2174,6 +2514,9 @@ /* Define to the full name and version of this package. */ #undef PACKAGE_STRING +/* Define to the suffix of this package */ +#undef PACKAGE_SUFFIX + /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME @@ -2778,7 +3121,7 @@ #endif /* Extra OS/2 (emx+gcc) defines. */ -#ifdef __EMX__ +#if defined __EMX__ && !defined __KLIBC__ # include "intl/os2compat.h" #endif diff -Nru gettext-0.19.6/gettext-tools/configure gettext-0.19.7/gettext-tools/configure --- gettext-0.19.6/gettext-tools/configure 2015-09-11 03:05:06.000000000 +0000 +++ gettext-0.19.7/gettext-tools/configure 2015-12-27 23:09:36.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for gettext-tools 0.19.6. +# Generated by GNU Autoconf 2.69 for gettext-tools 0.19.7. # # Report bugs to . # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='gettext-tools' PACKAGE_TARNAME='gettext-tools' -PACKAGE_VERSION='0.19.6' -PACKAGE_STRING='gettext-tools 0.19.6' +PACKAGE_VERSION='0.19.7' +PACKAGE_STRING='gettext-tools 0.19.7' PACKAGE_BUGREPORT='bug-gnu-gettext@gnu.org' PACKAGE_URL='' @@ -639,6 +639,7 @@ gl_fnmatch_required=POSIX gl_getopt_required=POSIX gl_getopt_required=POSIX +gl_log10_required=plain enable_option_checking=no ac_subst_vars='gtpotests_LTLIBOBJS gtpotests_LIBOBJS @@ -663,6 +664,7 @@ PERL TEXI2PDF DVIPS +PACKAGE_SUFFIX ARCHIVE_VERSION ARCHIVE_FORMAT aclocaldir @@ -670,14 +672,16 @@ EMACS HAVE_GLOBAL_SYMBOL_PIPE GLOBAL_SYMBOL_PIPE -LIBEXPAT_PREFIX -HAVE_LIBEXPAT -LTLIBEXPAT -LIBEXPAT GETTEXTLIB_EXPORTS_FLAGS WOE32DLL_FALSE WOE32DLL_TRUE gtpotests_WITNESS +LIBUNISTRING_COMPILE_UNISTR_U8_STRMBTOUC_FALSE +LIBUNISTRING_COMPILE_UNISTR_U8_STRMBTOUC_TRUE +LIBUNISTRING_COMPILE_UNISTR_U8_NEXT_FALSE +LIBUNISTRING_COMPILE_UNISTR_U8_NEXT_TRUE +LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_ALPHA_FALSE +LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_ALPHA_TRUE LIBGREP_LTLIBDEPS LIBGREP_LIBDEPS grgltests_WITNESS @@ -710,6 +714,10 @@ GNULIB_IMAXDIV GNULIB_IMAXABS LIB_HAS_ACL +NEXT_AS_FIRST_DIRECTIVE_CTYPE_H +NEXT_CTYPE_H +HAVE_ISBLANK +GNULIB_ISBLANK LOCALE_TR_UTF8 gltests_WITNESS NEXT_AS_FIRST_DIRECTIVE_WCHAR_H @@ -1076,6 +1084,10 @@ GNULIB_MBSINIT GNULIB_WCTOB GNULIB_BTOWC +NEXT_AS_FIRST_DIRECTIVE_MATH_H +NEXT_MATH_H +LOG10_LIBM +POW_LIBM NEXT_AS_FIRST_DIRECTIVE_LOCALE_H NEXT_LOCALE_H HAVE_XLOCALE_H @@ -1143,6 +1155,266 @@ GNULIB_ISWCTYPE GNULIB_WCTYPE GNULIB_ISWBLANK +ISNAN_LIBM +ISNANL_LIBM +ISNAND_LIBM +ISNANF_LIBM +ISINF_LIBM +HAVE_SAME_LONG_DOUBLE_AS_DOUBLE +REPLACE_TRUNCL +REPLACE_TRUNCF +REPLACE_TRUNC +REPLACE_SQRTL +REPLACE_SIGNBIT_USING_GCC +REPLACE_SIGNBIT +REPLACE_ROUNDL +REPLACE_ROUNDF +REPLACE_ROUND +REPLACE_REMAINDERL +REPLACE_REMAINDERF +REPLACE_REMAINDER +REPLACE_NAN +REPLACE_MODFL +REPLACE_MODFF +REPLACE_MODF +REPLACE_LOGBL +REPLACE_LOGBF +REPLACE_LOGB +REPLACE_LOG2L +REPLACE_LOG2F +REPLACE_LOG2 +REPLACE_LOG1PL +REPLACE_LOG1PF +REPLACE_LOG1P +REPLACE_LOG10L +REPLACE_LOG10F +REPLACE_LOG10 +REPLACE_LOGL +REPLACE_LOGF +REPLACE_LOG +REPLACE_LDEXPL +REPLACE_ISNAN +REPLACE_ISINF +REPLACE_ISFINITE +REPLACE_ILOGBF +REPLACE_ILOGB +REPLACE_HYPOTL +REPLACE_HYPOTF +REPLACE_HYPOT +REPLACE_HUGE_VAL +REPLACE_FREXPL +REPLACE_FREXP +REPLACE_FREXPF +REPLACE_FMODL +REPLACE_FMODF +REPLACE_FMOD +REPLACE_FMAL +REPLACE_FMAF +REPLACE_FMA +REPLACE_FLOORL +REPLACE_FLOORF +REPLACE_FLOOR +REPLACE_FABSL +REPLACE_EXP2L +REPLACE_EXP2 +REPLACE_EXPM1F +REPLACE_EXPM1 +REPLACE_CEILL +REPLACE_CEILF +REPLACE_CEIL +REPLACE_CBRTL +REPLACE_CBRTF +HAVE_DECL_TRUNCL +HAVE_DECL_TRUNCF +HAVE_DECL_TRUNC +HAVE_DECL_TANL +HAVE_DECL_SQRTL +HAVE_DECL_SINL +HAVE_DECL_ROUNDL +HAVE_DECL_ROUNDF +HAVE_DECL_ROUND +HAVE_DECL_RINTF +HAVE_DECL_REMAINDERL +HAVE_DECL_REMAINDER +HAVE_DECL_LOGB +HAVE_DECL_LOG2L +HAVE_DECL_LOG2F +HAVE_DECL_LOG2 +HAVE_DECL_LOG10L +HAVE_DECL_LOGL +HAVE_DECL_LDEXPL +HAVE_DECL_FREXPL +HAVE_DECL_FLOORL +HAVE_DECL_FLOORF +HAVE_DECL_EXPM1L +HAVE_DECL_EXP2L +HAVE_DECL_EXP2F +HAVE_DECL_EXP2 +HAVE_DECL_EXPL +HAVE_DECL_COSL +HAVE_DECL_COPYSIGNF +HAVE_DECL_CEILL +HAVE_DECL_CEILF +HAVE_DECL_CBRTL +HAVE_DECL_CBRTF +HAVE_DECL_ATANL +HAVE_DECL_ASINL +HAVE_DECL_ACOSL +HAVE_TANHF +HAVE_TANL +HAVE_TANF +HAVE_SQRTL +HAVE_SQRTF +HAVE_SINHF +HAVE_SINL +HAVE_SINF +HAVE_RINTL +HAVE_RINT +HAVE_REMAINDERF +HAVE_REMAINDER +HAVE_POWF +HAVE_MODFL +HAVE_MODFF +HAVE_LOGBL +HAVE_LOGBF +HAVE_LOG1PL +HAVE_LOG1PF +HAVE_LOG1P +HAVE_LOG10L +HAVE_LOG10F +HAVE_LOGL +HAVE_LOGF +HAVE_LDEXPF +HAVE_ISNANL +HAVE_ISNAND +HAVE_ISNANF +HAVE_ILOGBL +HAVE_ILOGBF +HAVE_ILOGB +HAVE_HYPOTL +HAVE_HYPOTF +HAVE_FREXPF +HAVE_FMODL +HAVE_FMODF +HAVE_FMAL +HAVE_FMAF +HAVE_FMA +HAVE_FABSL +HAVE_FABSF +HAVE_EXPM1F +HAVE_EXPM1 +HAVE_EXPL +HAVE_EXPF +HAVE_COSHF +HAVE_COSL +HAVE_COSF +HAVE_COPYSIGNL +HAVE_COPYSIGN +HAVE_CBRTL +HAVE_CBRTF +HAVE_CBRT +HAVE_ATAN2F +HAVE_ATANL +HAVE_ATANF +HAVE_ASINL +HAVE_ASINF +HAVE_ACOSL +HAVE_ACOSF +GNULIB_TRUNCL +GNULIB_TRUNCF +GNULIB_TRUNC +GNULIB_TANHF +GNULIB_TANL +GNULIB_TANF +GNULIB_SQRTL +GNULIB_SQRTF +GNULIB_SINHF +GNULIB_SINL +GNULIB_SINF +GNULIB_SIGNBIT +GNULIB_ROUNDL +GNULIB_ROUNDF +GNULIB_ROUND +GNULIB_RINTL +GNULIB_RINTF +GNULIB_RINT +GNULIB_REMAINDERL +GNULIB_REMAINDERF +GNULIB_REMAINDER +GNULIB_POWF +GNULIB_MODFL +GNULIB_MODFF +GNULIB_MODF +GNULIB_LOGBL +GNULIB_LOGBF +GNULIB_LOGB +GNULIB_LOG2L +GNULIB_LOG2F +GNULIB_LOG2 +GNULIB_LOG1PL +GNULIB_LOG1PF +GNULIB_LOG1P +GNULIB_LOG10L +GNULIB_LOG10F +GNULIB_LOG10 +GNULIB_LOGL +GNULIB_LOGF +GNULIB_LOG +GNULIB_LDEXPL +GNULIB_LDEXPF +GNULIB_ISNANL +GNULIB_ISNAND +GNULIB_ISNANF +GNULIB_ISNAN +GNULIB_ISINF +GNULIB_ISFINITE +GNULIB_ILOGBL +GNULIB_ILOGBF +GNULIB_ILOGB +GNULIB_HYPOTL +GNULIB_HYPOTF +GNULIB_HYPOT +GNULIB_FREXPL +GNULIB_FREXP +GNULIB_FREXPF +GNULIB_FMODL +GNULIB_FMODF +GNULIB_FMOD +GNULIB_FMAL +GNULIB_FMAF +GNULIB_FMA +GNULIB_FLOORL +GNULIB_FLOORF +GNULIB_FLOOR +GNULIB_FABSL +GNULIB_FABSF +GNULIB_EXPM1L +GNULIB_EXPM1F +GNULIB_EXPM1 +GNULIB_EXP2L +GNULIB_EXP2F +GNULIB_EXP2 +GNULIB_EXPL +GNULIB_EXPF +GNULIB_COSHF +GNULIB_COSL +GNULIB_COSF +GNULIB_COPYSIGNL +GNULIB_COPYSIGNF +GNULIB_COPYSIGN +GNULIB_CEILL +GNULIB_CEILF +GNULIB_CEIL +GNULIB_CBRTL +GNULIB_CBRTF +GNULIB_CBRT +GNULIB_ATAN2F +GNULIB_ATANL +GNULIB_ATANF +GNULIB_ASINL +GNULIB_ASINF +GNULIB_ACOSL +GNULIB_ACOSF NEXT_AS_FIRST_DIRECTIVE_ICONV_H NEXT_ICONV_H NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H @@ -1316,6 +1588,7 @@ GNULIB_OPEN GNULIB_NONBLOCKING GNULIB_FCNTL +FABS_LIBM EOVERFLOW_VALUE EOVERFLOW_HIDDEN ENOLINK_VALUE @@ -1335,7 +1608,6 @@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE INCLUDE_NEXT pkglibexecdir -runstatedir lispdir REPLACE_FDOPENDIR REPLACE_DIRFD @@ -1649,7 +1921,6 @@ NMEDIT DSYMUTIL MANIFEST_TOOL -ac_ct_AR LN_S NM ac_ct_DUMPBIN @@ -1663,6 +1934,7 @@ AS RANLIB ARFLAGS +ac_ct_AR AR host_os host_vendor @@ -1788,6 +2060,7 @@ docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -1849,7 +2122,6 @@ with_libxcurses_prefix with_libcurses_prefix with_included_regex -with_libexpat_prefix with_emacs with_lispdir with_git @@ -1915,6 +2187,7 @@ sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -2167,6 +2440,15 @@ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -2304,7 +2586,7 @@ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -2417,7 +2699,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures gettext-tools 0.19.6 to adapt to many kinds of systems. +\`configure' configures gettext-tools 0.19.7 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2457,6 +2739,7 @@ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -2487,7 +2770,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of gettext-tools 0.19.6:";; + short | recursive ) echo "Configuration of gettext-tools 0.19.7:";; esac cat <<\_ACEOF @@ -2565,8 +2848,6 @@ don't compile regex; this is the default on systems with recent-enough versions of the GNU C Library (use with caution on other systems). - --with-libexpat-prefix[=DIR] search for libexpat in DIR/include and DIR/lib - --without-libexpat-prefix don't search for libexpat in includedir and libdir --without-emacs do not use Emacs, don't install po-mode --with-lispdir override the default lisp directory --without-git don't use git to compress the infrastructure archive @@ -2667,7 +2948,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -gettext-tools configure 0.19.6 +gettext-tools configure 0.19.7 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -3497,7 +3778,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by gettext-tools $as_me 0.19.6, which was +It was created by gettext-tools $as_me 0.19.7, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3819,6 +4100,7 @@ as_fn_append ac_header_list " libxml2/libxml/xmlversion.h" as_fn_append ac_header_list " xlocale.h" as_fn_append ac_func_list " lstat" +as_fn_append ac_header_list " math.h" as_fn_append ac_func_list " mbsinit" as_fn_append ac_func_list " mbrtowc" as_fn_append ac_func_list " mbslen" @@ -4439,7 +4721,7 @@ # Define the identity of the package. PACKAGE='gettext-tools' - VERSION='0.19.6' + VERSION='0.19.7' cat >>confdefs.h <<_ACEOF @@ -6316,7 +6598,7 @@ > conftestver.class target_version=`{ unset JAVA_HOME - echo "$as_me:6319: CLASSPATH=.${CLASSPATH:+$CLASSPATH_SEPARATOR$CLASSPATH} $CONF_JAVA conftestver" >&5 + echo "$as_me:6601: CLASSPATH=.${CLASSPATH:+$CLASSPATH_SEPARATOR$CLASSPATH} $CONF_JAVA conftestver" >&5 CLASSPATH=.${CLASSPATH:+$CLASSPATH_SEPARATOR$CLASSPATH} $CONF_JAVA conftestver 2>&5 }` case "$target_version" in @@ -6384,23 +6666,23 @@ if $JAVAC --version 2>/dev/null | sed -e 1q | grep gcj > /dev/null; then if $JAVAC --version 2>/dev/null | sed -e 's,^[^0-9]*,,' -e 1q | sed -e '/^4\.[012]/d' | grep '^[4-9]' >/dev/null; then rm -f conftest.class - if { echo "$as_me:6387: $JAVAC -d . conftest.java" >&5 + if { echo "$as_me:6669: $JAVAC -d . conftest.java" >&5 $JAVAC -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then rm -f conftest.class rm -f conftestfail.class - if { echo "$as_me:6394: $JAVAC -fsource=$source_version -d . conftest.java" >&5 + if { echo "$as_me:6676: $JAVAC -fsource=$source_version -d . conftest.java" >&5 $JAVAC -fsource="$source_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \ - && { echo "$as_me:6399: $JAVAC -d . conftestfail.java" >&5 + && { echo "$as_me:6681: $JAVAC -d . conftestfail.java" >&5 $JAVAC -d . conftestfail.java >&5 2>&1 } \ && test -f conftestfail.class \ - && ! { echo "$as_me:6403: $JAVAC -fsource=$source_version -d . conftestfail.java" >&5 + && ! { echo "$as_me:6685: $JAVAC -fsource=$source_version -d . conftestfail.java" >&5 $JAVAC -fsource="$source_version" -d . conftestfail.java >&5 2>&1 }; then CONF_JAVAC="$JAVAC -fsource=$source_version" @@ -6414,7 +6696,7 @@ else rm -f conftest.class rm -f conftestfail.class - if { echo "$as_me:6417: $JAVAC -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&5 + if { echo "$as_me:6699: $JAVAC -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&5 $JAVAC -fsource="$source_version" -ftarget="$target_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ @@ -6427,7 +6709,7 @@ else if test "$target_version" = 1.4 && test "$source_version" = 1.4; then rm -f conftest.class - if { echo "$as_me:6430: $JAVAC -d . conftest.java" >&5 + if { echo "$as_me:6712: $JAVAC -d . conftest.java" >&5 $JAVAC -d . conftest.java >&5 2>&1 } \ && test -f conftest.class; then @@ -6439,7 +6721,7 @@ if test "$target_version" = 1.4 && test "$source_version" = 1.3; then javac_works= rm -f conftest.class - if { echo "$as_me:6442: $JAVAC -d . conftest.java" >&5 + if { echo "$as_me:6724: $JAVAC -d . conftest.java" >&5 $JAVAC -d . conftest.java >&5 2>&1 } \ && test -f conftest.class; then @@ -6447,7 +6729,7 @@ fi javac_noassert_works= rm -f conftest.class - if { echo "$as_me:6450: $JAVAC -fno-assert -d . conftest.java" >&5 + if { echo "$as_me:6732: $JAVAC -fno-assert -d . conftest.java" >&5 $JAVAC -fno-assert -d . conftest.java >&5 2>&1 } \ && test -f conftest.class; then @@ -6455,11 +6737,11 @@ fi if test -n "$javac_works" && test -n "$javac_noassert_works"; then rm -f conftestfail.class - if { echo "$as_me:6458: $JAVAC -d . conftestfail.java" >&5 + if { echo "$as_me:6740: $JAVAC -d . conftestfail.java" >&5 $JAVAC -d . conftestfail.java >&5 2>&1 } \ && test -f conftestfail.class \ - && ! { echo "$as_me:6462: $JAVAC -fno-assert -d . conftestfail.java" >&5 + && ! { echo "$as_me:6744: $JAVAC -fno-assert -d . conftestfail.java" >&5 $JAVAC -fno-assert -d . conftestfail.java >&5 2>&1 }; then javac_works= @@ -6481,23 +6763,23 @@ fi else rm -f conftest.class - if { echo "$as_me:6484: $JAVAC -d . conftest.java" >&5 + if { echo "$as_me:6766: $JAVAC -d . conftest.java" >&5 $JAVAC -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then rm -f conftest.class rm -f conftestfail.class - if { echo "$as_me:6491: $JAVAC -source $source_version -d . conftest.java" >&5 + if { echo "$as_me:6773: $JAVAC -source $source_version -d . conftest.java" >&5 $JAVAC -source "$source_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \ - && { echo "$as_me:6496: $JAVAC -d . conftestfail.java" >&5 + && { echo "$as_me:6778: $JAVAC -d . conftestfail.java" >&5 $JAVAC -d . conftestfail.java >&5 2>&1 } \ && test -f conftestfail.class \ - && ! { echo "$as_me:6500: $JAVAC -source $source_version -d . conftestfail.java" >&5 + && ! { echo "$as_me:6782: $JAVAC -source $source_version -d . conftestfail.java" >&5 $JAVAC -source "$source_version" -d . conftestfail.java >&5 2>&1 }; then CONF_JAVAC="$JAVAC -source $source_version" @@ -6510,23 +6792,23 @@ fi else rm -f conftest.class - if { echo "$as_me:6513: $JAVAC -target $target_version -d . conftest.java" >&5 + if { echo "$as_me:6795: $JAVAC -target $target_version -d . conftest.java" >&5 $JAVAC -target "$target_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then rm -f conftest.class rm -f conftestfail.class - if { echo "$as_me:6520: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&5 + if { echo "$as_me:6802: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&5 $JAVAC -target "$target_version" -source "$source_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \ - && { echo "$as_me:6525: $JAVAC -target $target_version -d . conftestfail.java" >&5 + && { echo "$as_me:6807: $JAVAC -target $target_version -d . conftestfail.java" >&5 $JAVAC -target "$target_version" -d . conftestfail.java >&5 2>&1 } \ && test -f conftestfail.class \ - && ! { echo "$as_me:6529: $JAVAC -target $target_version -source $source_version -d . conftestfail.java" >&5 + && ! { echo "$as_me:6811: $JAVAC -target $target_version -source $source_version -d . conftestfail.java" >&5 $JAVAC -target "$target_version" -source "$source_version" -d . conftestfail.java >&5 2>&1 }; then CONF_JAVAC="$JAVAC -target $target_version -source $source_version" @@ -6539,7 +6821,7 @@ fi else rm -f conftest.class - if { echo "$as_me:6542: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&5 + if { echo "$as_me:6824: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&5 $JAVAC -target "$target_version" -source "$source_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ @@ -6657,28 +6939,28 @@ if test -z "$HAVE_JAVACOMP" && test -n "$HAVE_GCJ_IN_PATH"; then if gcj --version 2>/dev/null | sed -e 's,^[^0-9]*,,' -e 1q | sed -e '/^3\.[01]/d' | grep '^[3-9]' >/dev/null; then - if { echo "$as_me:6660: gcj -C -d . conftestlib.java" >&5 + if { echo "$as_me:6942: gcj -C -d . conftestlib.java" >&5 gcj -C -d . conftestlib.java >&5 2>&1 }; then if gcj --version 2>/dev/null | sed -e 's,^[^0-9]*,,' -e 1q | sed -e '/^4\.[012]/d' | grep '^[4-9]' >/dev/null; then rm -f conftest.class - if { echo "$as_me:6665: gcj -C -d . conftest.java" >&5 + if { echo "$as_me:6947: gcj -C -d . conftest.java" >&5 gcj -C -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then rm -f conftest.class rm -f conftestfail.class - if { echo "$as_me:6672: gcj -C -fsource=$source_version -d . conftest.java" >&5 + if { echo "$as_me:6954: gcj -C -fsource=$source_version -d . conftest.java" >&5 gcj -C -fsource="$source_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \ - && { echo "$as_me:6677: gcj -C -d . conftestfail.java" >&5 + && { echo "$as_me:6959: gcj -C -d . conftestfail.java" >&5 gcj -C -d . conftestfail.java >&5 2>&1 } \ && test -f conftestfail.class \ - && ! { echo "$as_me:6681: gcj -C -fsource=$source_version -d . conftestfail.java" >&5 + && ! { echo "$as_me:6963: gcj -C -fsource=$source_version -d . conftestfail.java" >&5 gcj -C -fsource="$source_version" -d . conftestfail.java >&5 2>&1 }; then CONF_JAVAC="gcj -C -fsource=$source_version" @@ -6692,7 +6974,7 @@ else rm -f conftest.class rm -f conftestfail.class - if { echo "$as_me:6695: gcj -C -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&5 + if { echo "$as_me:6977: gcj -C -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&5 gcj -C -fsource="$source_version" -ftarget="$target_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ @@ -6705,7 +6987,7 @@ else if test "$target_version" = 1.4 && test "$source_version" = 1.4; then rm -f conftest.class - if { echo "$as_me:6708: gcj -C -d . conftest.java" >&5 + if { echo "$as_me:6990: gcj -C -d . conftest.java" >&5 gcj -C -d . conftest.java >&5 2>&1 } \ && test -f conftest.class; then @@ -6716,7 +6998,7 @@ else if test "$target_version" = 1.4 && test "$source_version" = 1.3; then rm -f conftest.class - if { echo "$as_me:6719: gcj -C -fno-assert -d . conftest.java" >&5 + if { echo "$as_me:7001: gcj -C -fno-assert -d . conftest.java" >&5 gcj -C -fno-assert -d . conftest.java >&5 2>&1 } \ && test -f conftest.class; then @@ -6725,7 +7007,7 @@ HAVE_JAVACOMP=1 else rm -f conftest.class - if { echo "$as_me:6728: gcj -C -d . conftest.java" >&5 + if { echo "$as_me:7010: gcj -C -d . conftest.java" >&5 gcj -C -d . conftest.java >&5 2>&1 } \ && test -f conftest.class; then @@ -6744,23 +7026,23 @@ if { javac -version >/dev/null 2>/dev/null || test $? -le 2; } \ && ( if javac -help 2>&1 >/dev/null | grep at.dms.kjc.Main >/dev/null && javac -help 2>/dev/null | grep 'released.*2000' >/dev/null ; then exit 1; else exit 0; fi ); then rm -f conftest.class - if { echo "$as_me:6747: javac -d . conftest.java" >&5 + if { echo "$as_me:7029: javac -d . conftest.java" >&5 javac -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then rm -f conftest.class rm -f conftestfail.class - if { echo "$as_me:6754: javac -source $source_version -d . conftest.java" >&5 + if { echo "$as_me:7036: javac -source $source_version -d . conftest.java" >&5 javac -source "$source_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \ - && { echo "$as_me:6759: javac -d . conftestfail.java" >&5 + && { echo "$as_me:7041: javac -d . conftestfail.java" >&5 javac -d . conftestfail.java >&5 2>&1 } \ && test -f conftestfail.class \ - && ! { echo "$as_me:6763: javac -source $source_version -d . conftestfail.java" >&5 + && ! { echo "$as_me:7045: javac -source $source_version -d . conftestfail.java" >&5 javac -source "$source_version" -d . conftestfail.java >&5 2>&1 }; then CONF_JAVAC="javac -source $source_version" @@ -6773,23 +7055,23 @@ fi else rm -f conftest.class - if { echo "$as_me:6776: javac -target $target_version -d . conftest.java" >&5 + if { echo "$as_me:7058: javac -target $target_version -d . conftest.java" >&5 javac -target "$target_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then rm -f conftest.class rm -f conftestfail.class - if { echo "$as_me:6783: javac -target $target_version -source $source_version -d . conftest.java" >&5 + if { echo "$as_me:7065: javac -target $target_version -source $source_version -d . conftest.java" >&5 javac -target "$target_version" -source "$source_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \ - && { echo "$as_me:6788: javac -target $target_version -d . conftestfail.java" >&5 + && { echo "$as_me:7070: javac -target $target_version -d . conftestfail.java" >&5 javac -target "$target_version" -d . conftestfail.java >&5 2>&1 } \ && test -f conftestfail.class \ - && ! { echo "$as_me:6792: javac -target $target_version -source $source_version -d . conftestfail.java" >&5 + && ! { echo "$as_me:7074: javac -target $target_version -source $source_version -d . conftestfail.java" >&5 javac -target "$target_version" -source "$source_version" -d . conftestfail.java >&5 2>&1 }; then CONF_JAVAC="javac -target $target_version -source $source_version" @@ -6802,7 +7084,7 @@ fi else rm -f conftest.class - if { echo "$as_me:6805: javac -target $target_version -source $source_version -d . conftest.java" >&5 + if { echo "$as_me:7087: javac -target $target_version -source $source_version -d . conftest.java" >&5 javac -target "$target_version" -source "$source_version" -d . conftest.java >&5 2>&1 } \ && test -f conftest.class \ @@ -7354,245 +7636,6 @@ - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5 -$as_echo_n "checking for Minix Amsterdam compiler... " >&6; } -if ${gl_cv_c_amsterdam_compiler+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef __ACK__ -Amsterdam -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Amsterdam" >/dev/null 2>&1; then : - gl_cv_c_amsterdam_compiler=yes -else - gl_cv_c_amsterdam_compiler=no -fi -rm -f conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 -$as_echo "$gl_cv_c_amsterdam_compiler" >&6; } - if test -z "$AR"; then - if test $gl_cv_c_amsterdam_compiler = yes; then - AR='cc -c.a' - if test -z "$ARFLAGS"; then - ARFLAGS='-o' - fi - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="${ac_tool_prefix}ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_AR"; then - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_AR" = x; then - AR="ar" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -else - AR="$ac_cv_prog_AR" -fi - - if test -z "$ARFLAGS"; then - ARFLAGS='cr' - fi - fi - else - if test -z "$ARFLAGS"; then - ARFLAGS='cr' - fi - fi - - - if test -z "$RANLIB"; then - if test $gl_cv_c_amsterdam_compiler = yes; then - RANLIB=':' - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - - fi - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : @@ -7847,188 +7890,598 @@ - # IEEE behaviour is the default on all CPUs except Alpha and SH - # (according to the test results of Bruno Haible's ieeefp/fenv_default.m4 - # and the GCC 4.1.2 manual). - case "$host_cpu" in - alpha*) - # On Alpha systems, a compiler option provides the behaviour. - # See the ieee(3) manual page, also available at - # - if test -n "$GCC"; then - # GCC has the option -mieee. - # For full IEEE compliance (rarely needed), use option -mieee-with-inexact. - CPPFLAGS="$CPPFLAGS -mieee" - else - # Compaq (ex-DEC) C has the option -ieee, equivalent to -ieee_with_no_inexact. - # For full IEEE compliance (rarely needed), use option -ieee_with_inexact. - CPPFLAGS="$CPPFLAGS -ieee" - fi - ;; - sh*) - if test -n "$GCC"; then - # GCC has the option -mieee. - CPPFLAGS="$CPPFLAGS -mieee" - fi - ;; - esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 -$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } -if ${ac_cv_sys_largefile_source+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5 +$as_echo_n "checking for Minix Amsterdam compiler... " >&6; } +if ${gl_cv_c_amsterdam_compiler+:} false; then : $as_echo_n "(cached) " >&6 else - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include /* for off_t */ - #include -int -main () -{ -int (*fp) (FILE *, off_t, int) = fseeko; - return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_sys_largefile_source=no; break -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#define _LARGEFILE_SOURCE 1 -#include /* for off_t */ - #include -int -main () -{ -int (*fp) (FILE *, off_t, int) = fseeko; - return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); - ; - return 0; -} + +#ifdef __ACK__ +Amsterdam +#endif + _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_sys_largefile_source=1; break -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_cv_sys_largefile_source=unknown - break -done +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Amsterdam" >/dev/null 2>&1; then : + gl_cv_c_amsterdam_compiler=yes +else + gl_cv_c_amsterdam_compiler=no fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5 -$as_echo "$ac_cv_sys_largefile_source" >&6; } -case $ac_cv_sys_largefile_source in #( - no | unknown) ;; - *) -cat >>confdefs.h <<_ACEOF -#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source -_ACEOF -;; -esac -rm -rf conftest* - -# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug -# in glibc 2.1.3, but that breaks too many other things. -# If you want fseeko and ftello with glibc, upgrade to a fixed glibc. -if test $ac_cv_sys_largefile_source != unknown; then +rm -f conftest* -$as_echo "#define HAVE_FSEEKO 1" >>confdefs.h fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 +$as_echo "$gl_cv_c_amsterdam_compiler" >&6; } -# Check whether --enable-largefile was given. -if test "${enable_largefile+set}" = set; then : - enableval=$enable_largefile; + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + if test -n "$ac_tool_prefix"; then + for ac_prog in ar lib "link -lib" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -if test "$enable_largefile" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 -$as_echo_n "checking for special C compiler options needed for large files... " >&6; } -if ${ac_cv_sys_largefile_CC+:} false; then : + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar lib "link -lib" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else - ac_cv_sys_largefile_CC=no - if test "$GCC" != yes; then - ac_save_CC=$CC - while :; do - # IRIX 6.2 and later do not support large files by default, - # so use the C compiler's -n32 option if that helps. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS - ; - return 0; -} -_ACEOF - if ac_fn_c_try_compile "$LINENO"; then : - break fi -rm -f core conftest.err conftest.$ac_objext - CC="$CC -n32" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_largefile_CC=' -n32'; break fi -rm -f core conftest.err conftest.$ac_objext - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 -$as_echo "$ac_cv_sys_largefile_CC" >&6; } - if test "$ac_cv_sys_largefile_CC" != no; then - CC=$CC$ac_cv_sys_largefile_CC + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR fi +fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } -if ${ac_cv_sys_file_offset_bits+:} false; then : +: ${AR=ar} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 +$as_echo_n "checking the archiver ($AR) interface... " >&6; } +if ${am_cv_ar_interface+:} false; then : $as_echo_n "(cached) " >&6 else - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu - ; - return 0; -} + am_cv_ar_interface=ar + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int some_variable = 0; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_file_offset_bits=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 +$as_echo "$am_cv_ar_interface" >&6; } + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + as_fn_error $? "could not determine $AR interface" "$LINENO" 5 + ;; +esac + + fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + + + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + fi + fi + + + + + + + # IEEE behaviour is the default on all CPUs except Alpha and SH + # (according to the test results of Bruno Haible's ieeefp/fenv_default.m4 + # and the GCC 4.1.2 manual). + case "$host_cpu" in + alpha*) + # On Alpha systems, a compiler option provides the behaviour. + # See the ieee(3) manual page, also available at + # + if test -n "$GCC"; then + # GCC has the option -mieee. + # For full IEEE compliance (rarely needed), use option -mieee-with-inexact. + CPPFLAGS="$CPPFLAGS -mieee" + else + # Compaq (ex-DEC) C has the option -ieee, equivalent to -ieee_with_no_inexact. + # For full IEEE compliance (rarely needed), use option -ieee_with_inexact. + CPPFLAGS="$CPPFLAGS -ieee" + fi + ;; + sh*) + if test -n "$GCC"; then + # GCC has the option -mieee. + CPPFLAGS="$CPPFLAGS -mieee" + fi + ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 +$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } +if ${ac_cv_sys_largefile_source+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include /* for off_t */ + #include +int +main () +{ +int (*fp) (FILE *, off_t, int) = fseeko; + return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_sys_largefile_source=no; break +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _LARGEFILE_SOURCE 1 +#include /* for off_t */ + #include +int +main () +{ +int (*fp) (FILE *, off_t, int) = fseeko; + return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_sys_largefile_source=1; break +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_cv_sys_largefile_source=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5 +$as_echo "$ac_cv_sys_largefile_source" >&6; } +case $ac_cv_sys_largefile_source in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source +_ACEOF +;; +esac +rm -rf conftest* + +# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug +# in glibc 2.1.3, but that breaks too many other things. +# If you want fseeko and ftello with glibc, upgrade to a fixed glibc. +if test $ac_cv_sys_largefile_source != unknown; then + +$as_echo "#define HAVE_FSEEKO 1" >>confdefs.h + +fi + +# Check whether --enable-largefile was given. +if test "${enable_largefile+set}" = set; then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +$as_echo_n "checking for special C compiler options needed for large files... " >&6; } +if ${ac_cv_sys_largefile_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + if ac_fn_c_try_compile "$LINENO"; then : + break +fi +rm -f core conftest.err conftest.$ac_objext + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +$as_echo "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if ${ac_cv_sys_file_offset_bits+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 #include @@ -8485,6 +8938,10 @@ + # Pre-early section. + + + # Code from module absolute-header: # Code from module acl: @@ -8541,6 +8998,8 @@ # Code from module csharpcomp-script: # Code from module csharpexec: # Code from module csharpexec-script: + # Code from module ctype: + # Code from module ctype-tests: # Code from module diffseq: # Code from module dirent: # Code from module dirent-tests: @@ -8559,8 +9018,9 @@ # Code from module execute: # Code from module exitfail: # Code from module extensions: - # Code from module extern-inline: + # Code from module fabs: + # Code from module fabs-tests: # Code from module fatal-signal: # Code from module fcntl: # Code from module fcntl-h: @@ -8638,6 +9098,22 @@ # Code from module inttypes: # Code from module inttypes-incomplete: # Code from module inttypes-tests: + # Code from module isinf: + # Code from module isinf-tests: + # Code from module isnan: + # Code from module isnan-tests: + # Code from module isnand: + # Code from module isnand-nolibm: + # Code from module isnand-nolibm-tests: + # Code from module isnand-tests: + # Code from module isnanf: + # Code from module isnanf-nolibm: + # Code from module isnanf-nolibm-tests: + # Code from module isnanf-tests: + # Code from module isnanl: + # Code from module isnanl-nolibm: + # Code from module isnanl-nolibm-tests: + # Code from module isnanl-tests: # Code from module iswblank: # Code from module iswblank-tests: # Code from module java: @@ -8664,6 +9140,8 @@ # Code from module localename-tests: # Code from module lock: # Code from module lock-tests: + # Code from module log10: + # Code from module log10-tests: # Code from module lseek: # Code from module lseek-tests: # Code from module lstat: @@ -8671,6 +9149,8 @@ # Code from module malloc-posix: # Code from module malloca: # Code from module malloca-tests: + # Code from module math: + # Code from module math-tests: # Code from module mbchar: # Code from module mbiter: # Code from module mbrtowc: @@ -8726,6 +9206,8 @@ # Code from module posix_spawnattr_setsigmask: # Code from module posix_spawnp: # Code from module posix_spawnp-tests: + # Code from module pow: + # Code from module pow-tests: # Code from module progname: # Code from module propername: # Code from module putenv: @@ -8768,6 +9250,8 @@ # Code from module sigaction-tests: # Code from module signal-h: # Code from module signal-h-tests: + # Code from module signbit: + # Code from module signbit-tests: # Code from module sigpipe: # Code from module sigpipe-tests: # Code from module sigprocmask: @@ -8951,6 +9435,9 @@ + # Pre-early section. + + # Code from module btowc: # Code from module havelib: @@ -8971,6 +9458,10 @@ + # Pre-early section. + + + # Code from module absolute-header: # Code from module alignof: @@ -8990,7 +9481,6 @@ # Code from module error-progname: # Code from module exitfail: # Code from module extensions: - # Code from module extern-inline: # Code from module fcntl-h: # Code from module fd-hook: @@ -9018,10 +9508,13 @@ # Code from module largefile: # Code from module libunistring-optional: + # Code from module linked-list: + # Code from module list: # Code from module localcharset: # Code from module lock: # Code from module malloc-posix: # Code from module malloca: + # Code from module markup: # Code from module mbrtowc: # Code from module mbsinit: # Code from module mbswidth: @@ -9084,6 +9577,7 @@ # Code from module uniconv/base: # Code from module uniconv/u8-conv-from-enc: # Code from module unictype/base: + # Code from module unictype/ctype-alpha: # Code from module unictype/ctype-space: # Code from module unilbrk/base: # Code from module unilbrk/tables: @@ -9099,7 +9593,9 @@ # Code from module unistr/u8-mbtouc: # Code from module unistr/u8-mbtouc-unsafe: # Code from module unistr/u8-mbtoucr: + # Code from module unistr/u8-next: # Code from module unistr/u8-prev: + # Code from module unistr/u8-strmbtouc: # Code from module unistr/u8-uctomb: # Code from module unitypes: # Code from module uniwidth/base: @@ -9115,6 +9611,7 @@ # Code from module xalloc-die: # Code from module xconcat-filename: # Code from module xerror: + # Code from module xlist: # Code from module xmalloca: # Code from module xsize: # Code from module xstriconv: @@ -25096,1118 +25593,1985 @@ - GNULIB_ISWBLANK=0; - GNULIB_WCTYPE=0; - GNULIB_ISWCTYPE=0; - GNULIB_WCTRANS=0; - GNULIB_TOWCTRANS=0; - HAVE_ISWBLANK=1; - HAVE_WCTYPE_T=1; - HAVE_WCTRANS_T=1; - REPLACE_ISWBLANK=0; - - - - - + GNULIB_ACOSF=0; + GNULIB_ACOSL=0; + GNULIB_ASINF=0; + GNULIB_ASINL=0; + GNULIB_ATANF=0; + GNULIB_ATANL=0; + GNULIB_ATAN2F=0; + GNULIB_CBRT=0; + GNULIB_CBRTF=0; + GNULIB_CBRTL=0; + GNULIB_CEIL=0; + GNULIB_CEILF=0; + GNULIB_CEILL=0; + GNULIB_COPYSIGN=0; + GNULIB_COPYSIGNF=0; + GNULIB_COPYSIGNL=0; + GNULIB_COSF=0; + GNULIB_COSL=0; + GNULIB_COSHF=0; + GNULIB_EXPF=0; + GNULIB_EXPL=0; + GNULIB_EXP2=0; + GNULIB_EXP2F=0; + GNULIB_EXP2L=0; + GNULIB_EXPM1=0; + GNULIB_EXPM1F=0; + GNULIB_EXPM1L=0; + GNULIB_FABSF=0; + GNULIB_FABSL=0; + GNULIB_FLOOR=0; + GNULIB_FLOORF=0; + GNULIB_FLOORL=0; + GNULIB_FMA=0; + GNULIB_FMAF=0; + GNULIB_FMAL=0; + GNULIB_FMOD=0; + GNULIB_FMODF=0; + GNULIB_FMODL=0; + GNULIB_FREXPF=0; + GNULIB_FREXP=0; + GNULIB_FREXPL=0; + GNULIB_HYPOT=0; + GNULIB_HYPOTF=0; + GNULIB_HYPOTL=0; + GNULIB_ILOGB=0; + GNULIB_ILOGBF=0; + GNULIB_ILOGBL=0; + GNULIB_ISFINITE=0; + GNULIB_ISINF=0; + GNULIB_ISNAN=0; + GNULIB_ISNANF=0; + GNULIB_ISNAND=0; + GNULIB_ISNANL=0; + GNULIB_LDEXPF=0; + GNULIB_LDEXPL=0; + GNULIB_LOG=0; + GNULIB_LOGF=0; + GNULIB_LOGL=0; + GNULIB_LOG10=0; + GNULIB_LOG10F=0; + GNULIB_LOG10L=0; + GNULIB_LOG1P=0; + GNULIB_LOG1PF=0; + GNULIB_LOG1PL=0; + GNULIB_LOG2=0; + GNULIB_LOG2F=0; + GNULIB_LOG2L=0; + GNULIB_LOGB=0; + GNULIB_LOGBF=0; + GNULIB_LOGBL=0; + GNULIB_MODF=0; + GNULIB_MODFF=0; + GNULIB_MODFL=0; + GNULIB_POWF=0; + GNULIB_REMAINDER=0; + GNULIB_REMAINDERF=0; + GNULIB_REMAINDERL=0; + GNULIB_RINT=0; + GNULIB_RINTF=0; + GNULIB_RINTL=0; + GNULIB_ROUND=0; + GNULIB_ROUNDF=0; + GNULIB_ROUNDL=0; + GNULIB_SIGNBIT=0; + GNULIB_SINF=0; + GNULIB_SINL=0; + GNULIB_SINHF=0; + GNULIB_SQRTF=0; + GNULIB_SQRTL=0; + GNULIB_TANF=0; + GNULIB_TANL=0; + GNULIB_TANHF=0; + GNULIB_TRUNC=0; + GNULIB_TRUNCF=0; + GNULIB_TRUNCL=0; + HAVE_ACOSF=1; + HAVE_ACOSL=1; + HAVE_ASINF=1; + HAVE_ASINL=1; + HAVE_ATANF=1; + HAVE_ATANL=1; + HAVE_ATAN2F=1; + HAVE_CBRT=1; + HAVE_CBRTF=1; + HAVE_CBRTL=1; + HAVE_COPYSIGN=1; + HAVE_COPYSIGNL=1; + HAVE_COSF=1; + HAVE_COSL=1; + HAVE_COSHF=1; + HAVE_EXPF=1; + HAVE_EXPL=1; + HAVE_EXPM1=1; + HAVE_EXPM1F=1; + HAVE_FABSF=1; + HAVE_FABSL=1; + HAVE_FMA=1; + HAVE_FMAF=1; + HAVE_FMAL=1; + HAVE_FMODF=1; + HAVE_FMODL=1; + HAVE_FREXPF=1; + HAVE_HYPOTF=1; + HAVE_HYPOTL=1; + HAVE_ILOGB=1; + HAVE_ILOGBF=1; + HAVE_ILOGBL=1; + HAVE_ISNANF=1; + HAVE_ISNAND=1; + HAVE_ISNANL=1; + HAVE_LDEXPF=1; + HAVE_LOGF=1; + HAVE_LOGL=1; + HAVE_LOG10F=1; + HAVE_LOG10L=1; + HAVE_LOG1P=1; + HAVE_LOG1PF=1; + HAVE_LOG1PL=1; + HAVE_LOGBF=1; + HAVE_LOGBL=1; + HAVE_MODFF=1; + HAVE_MODFL=1; + HAVE_POWF=1; + HAVE_REMAINDER=1; + HAVE_REMAINDERF=1; + HAVE_RINT=1; + HAVE_RINTL=1; + HAVE_SINF=1; + HAVE_SINL=1; + HAVE_SINHF=1; + HAVE_SQRTF=1; + HAVE_SQRTL=1; + HAVE_TANF=1; + HAVE_TANL=1; + HAVE_TANHF=1; + HAVE_DECL_ACOSL=1; + HAVE_DECL_ASINL=1; + HAVE_DECL_ATANL=1; + HAVE_DECL_CBRTF=1; + HAVE_DECL_CBRTL=1; + HAVE_DECL_CEILF=1; + HAVE_DECL_CEILL=1; + HAVE_DECL_COPYSIGNF=1; + HAVE_DECL_COSL=1; + HAVE_DECL_EXPL=1; + HAVE_DECL_EXP2=1; + HAVE_DECL_EXP2F=1; + HAVE_DECL_EXP2L=1; + HAVE_DECL_EXPM1L=1; + HAVE_DECL_FLOORF=1; + HAVE_DECL_FLOORL=1; + HAVE_DECL_FREXPL=1; + HAVE_DECL_LDEXPL=1; + HAVE_DECL_LOGL=1; + HAVE_DECL_LOG10L=1; + HAVE_DECL_LOG2=1; + HAVE_DECL_LOG2F=1; + HAVE_DECL_LOG2L=1; + HAVE_DECL_LOGB=1; + HAVE_DECL_REMAINDER=1; + HAVE_DECL_REMAINDERL=1; + HAVE_DECL_RINTF=1; + HAVE_DECL_ROUND=1; + HAVE_DECL_ROUNDF=1; + HAVE_DECL_ROUNDL=1; + HAVE_DECL_SINL=1; + HAVE_DECL_SQRTL=1; + HAVE_DECL_TANL=1; + HAVE_DECL_TRUNC=1; + HAVE_DECL_TRUNCF=1; + HAVE_DECL_TRUNCL=1; + REPLACE_CBRTF=0; + REPLACE_CBRTL=0; + REPLACE_CEIL=0; + REPLACE_CEILF=0; + REPLACE_CEILL=0; + REPLACE_EXPM1=0; + REPLACE_EXPM1F=0; + REPLACE_EXP2=0; + REPLACE_EXP2L=0; + REPLACE_FABSL=0; + REPLACE_FLOOR=0; + REPLACE_FLOORF=0; + REPLACE_FLOORL=0; + REPLACE_FMA=0; + REPLACE_FMAF=0; + REPLACE_FMAL=0; + REPLACE_FMOD=0; + REPLACE_FMODF=0; + REPLACE_FMODL=0; + REPLACE_FREXPF=0; + REPLACE_FREXP=0; + REPLACE_FREXPL=0; + REPLACE_HUGE_VAL=0; + REPLACE_HYPOT=0; + REPLACE_HYPOTF=0; + REPLACE_HYPOTL=0; + REPLACE_ILOGB=0; + REPLACE_ILOGBF=0; + REPLACE_ISFINITE=0; + REPLACE_ISINF=0; + REPLACE_ISNAN=0; + REPLACE_LDEXPL=0; + REPLACE_LOG=0; + REPLACE_LOGF=0; + REPLACE_LOGL=0; + REPLACE_LOG10=0; + REPLACE_LOG10F=0; + REPLACE_LOG10L=0; + REPLACE_LOG1P=0; + REPLACE_LOG1PF=0; + REPLACE_LOG1PL=0; + REPLACE_LOG2=0; + REPLACE_LOG2F=0; + REPLACE_LOG2L=0; + REPLACE_LOGB=0; + REPLACE_LOGBF=0; + REPLACE_LOGBL=0; + REPLACE_MODF=0; + REPLACE_MODFF=0; + REPLACE_MODFL=0; + REPLACE_NAN=0; + REPLACE_REMAINDER=0; + REPLACE_REMAINDERF=0; + REPLACE_REMAINDERL=0; + REPLACE_ROUND=0; + REPLACE_ROUNDF=0; + REPLACE_ROUNDL=0; + REPLACE_SIGNBIT=0; + REPLACE_SIGNBIT_USING_GCC=0; + REPLACE_SQRTL=0; + REPLACE_TRUNC=0; + REPLACE_TRUNCF=0; + REPLACE_TRUNCL=0; + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +$as_echo_n "checking whether byte ordering is bigendian... " >&6; } +if ${ac_cv_c_bigendian+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; - if test $ac_cv_func_iswcntrl = yes; then - HAVE_ISWCNTRL=1 - else - HAVE_ISWCNTRL=0 - fi +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif - if test $gt_cv_c_wint_t = yes; then - HAVE_WINT_T=1 - else - HAVE_WINT_T=0 - fi + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif - - - - - - - - - - if test $gl_cv_have_include_next = yes; then - gl_cv_next_wctype_h='<'wctype.h'>' - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_next_wctype_h+:} false; then : - $as_echo_n "(cached) " >&6 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include - if test $ac_cv_header_wctype_h = yes; then +int +main () +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; +int +main () +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -_ACEOF - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac - - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; - esac - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'wctype.h' \ - | sed -e "$gl_make_literal_regex_sed"` - gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ - s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ - s|^/[^/]|//&| - p - q - }' - - gl_cv_absolute_wctype_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` +$ac_includes_default +int +main () +{ - gl_header=$gl_cv_absolute_wctype_h - gl_cv_next_wctype_h='"'$gl_header'"' - else - gl_cv_next_wctype_h='<'wctype.h'>' - fi + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_bigendian=no +else + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_wctype_h" >&5 -$as_echo "$gl_cv_next_wctype_h" >&6; } - fi - NEXT_WCTYPE_H=$gl_cv_next_wctype_h +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +$as_echo "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) - if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' - gl_next_as_first_directive='<'wctype.h'>' - else - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' - gl_next_as_first_directive=$gl_cv_next_wctype_h - fi - NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H=$gl_next_as_first_directive +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac - if test $ac_cv_header_wctype_h = yes; then - if test $ac_cv_func_iswcntrl = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iswcntrl works" >&5 -$as_echo_n "checking whether iswcntrl works... " >&6; } -if ${gl_cv_func_iswcntrl_works+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether long double and double are the same" >&5 +$as_echo_n "checking whether long double and double are the same... " >&6; } +if ${gl_cv_long_double_equals_double+:} false; then : $as_echo_n "(cached) " >&6 else - - if test "$cross_compiling" = yes; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include - #if __GNU_LIBRARY__ == 1 - Linux libc5 i18n is broken. - #endif +#include int main () { +typedef int check[sizeof (long double) == sizeof (double) + && LDBL_MANT_DIG == DBL_MANT_DIG + && LDBL_MAX_EXP == DBL_MAX_EXP + && LDBL_MIN_EXP == DBL_MIN_EXP + ? 1 : -1]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_func_iswcntrl_works="guessing yes" + gl_cv_long_double_equals_double=yes else - gl_cv_func_iswcntrl_works="guessing no" + gl_cv_long_double_equals_double=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_long_double_equals_double" >&5 +$as_echo "$gl_cv_long_double_equals_double" >&6; } + if test $gl_cv_long_double_equals_double = yes; then + +$as_echo "#define HAVE_SAME_LONG_DOUBLE_AS_DOUBLE 1" >>confdefs.h + + HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=1 + else + HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=0 + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'float'" >&5 +$as_echo_n "checking where to find the exponent in a 'float'... " >&6; } +if ${gl_cv_cc_float_expbit0+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + gl_cv_cc_float_expbit0="word 0 bit 23" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - /* Tru64 with Desktop Toolkit C has a bug: must be - included before . - BSD/OS 4.0.1 has a bug: , and - must be included before . */ - #include - #include - #include - #include - #include - int main () { return iswprint ('x') == 0; } +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { float value; unsigned int word[NWORDS]; } memory_float; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (float x) +{ + memory_float m; + size_t i; + /* Clear it first, in case + sizeof (float) < sizeof (memory_float). */ + memset (&m, 0, sizeof (memory_float)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25f); + add_to_ored_words (0.5f); + add_to_ored_words (1.0f); + add_to_ored_words (2.0f); + add_to_ored_words (4.0f); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); +} _ACEOF if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_iswcntrl_works=yes + gl_cv_cc_float_expbit0=`cat conftest.out` else - gl_cv_func_iswcntrl_works=no + gl_cv_cc_float_expbit0="unknown" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi + rm -f conftest.out fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_iswcntrl_works" >&5 -$as_echo "$gl_cv_func_iswcntrl_works" >&6; } - fi - HAVE_WCTYPE_H=1 - else - HAVE_WCTYPE_H=0 - fi - - - case "$gl_cv_func_iswcntrl_works" in - *yes) REPLACE_ISWCNTRL=0 ;; - *) REPLACE_ISWCNTRL=1 ;; - esac - - - if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then - : - fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_float_expbit0" >&5 +$as_echo "$gl_cv_cc_float_expbit0" >&6; } + case "$gl_cv_cc_float_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'` - if test $REPLACE_ISWCNTRL = 1; then - REPLACE_TOWLOWER=1 - else - for ac_func in towlower -do : - ac_fn_c_check_func "$LINENO" "towlower" "ac_cv_func_towlower" -if test "x$ac_cv_func_towlower" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_TOWLOWER 1 +cat >>confdefs.h <<_ACEOF +#define FLT_EXPBIT0_WORD $word _ACEOF -fi -done - - if test $ac_cv_func_towlower = yes; then - REPLACE_TOWLOWER=0 - else - ac_fn_c_check_decl "$LINENO" "towlower" "ac_cv_have_decl_towlower" "/* Tru64 with Desktop Toolkit C has a bug: must be - included before . - BSD/OS 4.0.1 has a bug: , and - must be included before . */ - #include - #include - #include - #include - #if HAVE_WCTYPE_H - # include - #endif - -" -if test "x$ac_cv_have_decl_towlower" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_TOWLOWER $ac_have_decl +#define FLT_EXPBIT0_BIT $bit _ACEOF - if test $ac_cv_have_decl_towlower = yes; then - REPLACE_TOWLOWER=1 - else - REPLACE_TOWLOWER=0 - fi - fi - fi + ;; + esac - if test $HAVE_ISWCNTRL = 0 || test $REPLACE_TOWLOWER = 1; then - : - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctype_t" >&5 -$as_echo_n "checking for wctype_t... " >&6; } -if ${gl_cv_type_wctype_t+:} false; then : + ISNANF_LIBM= + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(float) can be used without linking with libm" >&5 +$as_echo_n "checking whether isnan(float) can be used without linking with libm... " >&6; } +if ${gl_cv_func_isnanf_no_libm+:} false; then : $as_echo_n "(cached) " >&6 else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Tru64 with Desktop Toolkit C has a bug: must be - included before . - BSD/OS 4.0.1 has a bug: , and - must be included before . */ - #include - #include - #include - #include - #if HAVE_WCTYPE_H - # include - #endif - wctype_t a; + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #if __GNUC__ >= 4 + # undef isnanf + # define isnanf(x) __builtin_isnanf ((float)(x)) + #elif defined isnan + # undef isnanf + # define isnanf(x) isnan ((float)(x)) + #endif + float x; int main () { - +return isnanf (x); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_type_wctype_t=yes +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_isnanf_no_libm=yes else - gl_cv_type_wctype_t=no + gl_cv_func_isnanf_no_libm=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wctype_t" >&5 -$as_echo "$gl_cv_type_wctype_t" >&6; } - if test $gl_cv_type_wctype_t = no; then - HAVE_WCTYPE_T=0 - fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanf_no_libm" >&5 +$as_echo "$gl_cv_func_isnanf_no_libm" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctrans_t" >&5 -$as_echo_n "checking for wctrans_t... " >&6; } -if ${gl_cv_type_wctrans_t+:} false; then : + if test $gl_cv_func_isnanf_no_libm = no; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(float) can be used with libm" >&5 +$as_echo_n "checking whether isnan(float) can be used with libm... " >&6; } +if ${gl_cv_func_isnanf_in_libm+:} false; then : $as_echo_n "(cached) " >&6 else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Tru64 with Desktop Toolkit C has a bug: must be - included before . - BSD/OS 4.0.1 has a bug: , and - must be included before . */ - #include - #include - #include - #include - #include - wctrans_t a; + save_LIBS="$LIBS" + LIBS="$LIBS -lm" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #if __GNUC__ >= 4 + # undef isnanf + # define isnanf(x) __builtin_isnanf ((float)(x)) + #elif defined isnan + # undef isnanf + # define isnanf(x) isnan ((float)(x)) + #endif + float x; int main () { - +return isnanf (x); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_type_wctrans_t=yes +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_isnanf_in_libm=yes else - gl_cv_type_wctrans_t=no + gl_cv_func_isnanf_in_libm=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wctrans_t" >&5 -$as_echo "$gl_cv_type_wctrans_t" >&6; } - if test $gl_cv_type_wctrans_t = no; then - HAVE_WCTRANS_T=0 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanf_in_libm" >&5 +$as_echo "$gl_cv_func_isnanf_in_libm" >&6; } + + if test $gl_cv_func_isnanf_in_libm = yes; then + ISNANF_LIBM=-lm + fi fi + if test $gl_cv_func_isnanf_no_libm = yes \ + || test $gl_cv_func_isnanf_in_libm = yes; then + save_LIBS="$LIBS" + LIBS="$LIBS $ISNANF_LIBM" - for gl_func in wctype iswctype wctrans towctrans ; do - as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 -$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } -if eval \${$as_gl_Symbol+:} false; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(float) works" >&5 +$as_echo_n "checking whether isnan(float) works... " >&6; } +if ${gl_cv_func_isnanf_works+:} false; then : $as_echo_n "(cached) " >&6 else + + if test "$cross_compiling" = yes; then : + case "$host_os" in + irix* | solaris*) gl_cv_func_isnanf_works="guessing no";; + *) gl_cv_func_isnanf_works="guessing yes";; + esac + +else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be - included before . */ -#if !(defined __GLIBC__ && !defined __UCLIBC__) -# include -# include -# include -# include +#include +#if __GNUC__ >= 4 +# undef isnanf +# define isnanf(x) __builtin_isnanf ((float)(x)) +#elif defined isnan +# undef isnanf +# define isnanf(x) isnan ((float)(x)) +#endif +/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */ +#ifdef __DECC +static float +NaN () +{ + static float zero = 0.0f; + return zero / zero; +} +#else +# define NaN() (0.0f / 0.0f) #endif -#include - -int -main () +#define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { unsigned int word[NWORDS]; float value; } memory_float; +int main() { -#undef $gl_func - (void) $gl_func; - ; - return 0; + int result = 0; + + if (isnanf (1.0f / 0.0f)) + result |= 1; + + if (!isnanf (NaN ())) + result |= 2; + +#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT + /* The isnanf function should be immune against changes in the sign bit and + in the mantissa bits. The xor operation twiddles a bit that can only be + a sign bit or a mantissa bit. */ + if (FLT_EXPBIT0_WORD == 0 && FLT_EXPBIT0_BIT > 0) + { + memory_float m; + + m.value = NaN (); + /* Set the bits below the exponent to 01111...111. */ + m.word[0] &= -1U << FLT_EXPBIT0_BIT; + m.word[0] |= 1U << (FLT_EXPBIT0_BIT - 1) - 1; + if (!isnanf (m.value)) + result |= 4; + } +#endif + + return result; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$as_gl_Symbol=yes" +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_isnanf_works=yes else - eval "$as_gl_Symbol=no" + gl_cv_func_isnanf_works=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -eval ac_res=\$$as_gl_Symbol - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 -_ACEOF - eval ac_cv_have_decl_$gl_func=yes + fi - done +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanf_works" >&5 +$as_echo "$gl_cv_func_isnanf_works" >&6; } + LIBS="$save_LIBS" + case "$gl_cv_func_isnanf_works" in + *yes) gl_func_isnanf=yes ;; + *) gl_func_isnanf=no; ISNANF_LIBM= ;; + esac + else + gl_func_isnanf=no + fi + if test $gl_func_isnanf != yes; then + HAVE_ISNANF=0 + fi - GNULIB_NL_LANGINFO=0; - HAVE_NL_LANGINFO=1; - REPLACE_NL_LANGINFO=0; + ISNAND_LIBM= + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(double) can be used without linking with libm" >&5 +$as_echo_n "checking whether isnan(double) can be used without linking with libm... " >&6; } +if ${gl_cv_func_isnand_no_libm+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #if __GNUC__ >= 4 + # undef isnand + # define isnand(x) __builtin_isnan ((double)(x)) + #else + # undef isnand + # define isnand(x) isnan ((double)(x)) + #endif + double x; +int +main () +{ +return isnand (x); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_isnand_no_libm=yes +else + gl_cv_func_isnand_no_libm=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnand_no_libm" >&5 +$as_echo "$gl_cv_func_isnand_no_libm" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included glib is requested" >&5 -$as_echo_n "checking whether included glib is requested... " >&6; } + if test $gl_cv_func_isnand_no_libm = no; then -# Check whether --with-included-glib was given. -if test "${with_included_glib+set}" = set; then : - withval=$with_included_glib; gl_cv_libglib_force_included=$withval + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(double) can be used with libm" >&5 +$as_echo_n "checking whether isnan(double) can be used with libm... " >&6; } +if ${gl_cv_func_isnand_in_libm+:} false; then : + $as_echo_n "(cached) " >&6 else - gl_cv_libglib_force_included=no -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libglib_force_included" >&5 -$as_echo "$gl_cv_libglib_force_included" >&6; } + save_LIBS="$LIBS" + LIBS="$LIBS -lm" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #if __GNUC__ >= 4 + # undef isnand + # define isnand(x) __builtin_isnan ((double)(x)) + #elif defined isnan + # undef isnand + # define isnand(x) isnan ((double)(x)) + #endif + double x; +int +main () +{ +return isnand (x); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_isnand_in_libm=yes +else + gl_cv_func_isnand_in_libm=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$save_LIBS" - gl_cv_libglib_use_included="$gl_cv_libglib_force_included" - LIBGLIB= - LTLIBGLIB= - INCGLIB= - if test "$gl_cv_libglib_use_included" != yes; then - if ${gl_cv_libglib+:} false; then : +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnand_in_libm" >&5 +$as_echo "$gl_cv_func_isnand_in_libm" >&6; } + + if test $gl_cv_func_isnand_in_libm = yes; then + ISNAND_LIBM=-lm + fi + fi + if test $gl_cv_func_isnand_no_libm = yes \ + || test $gl_cv_func_isnand_in_libm = yes; then + gl_func_isnand=yes + else + gl_func_isnand=no + HAVE_ISNAND=0 + fi + + + + + ISNANL_LIBM= + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(long double) can be used without linking with libm" >&5 +$as_echo_n "checking whether isnan(long double) can be used without linking with libm... " >&6; } +if ${gl_cv_func_isnanl_no_libm+:} false; then : $as_echo_n "(cached) " >&6 else - gl_cv_libglib=no - gl_cv_LIBGLIB= - gl_cv_LTLIBGLIB= - gl_cv_INCGLIB= - gl_save_LIBS="$LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #if __GNUC__ >= 4 + # undef isnanl + # define isnanl(x) __builtin_isnanl ((long double)(x)) + #elif defined isnan + # undef isnanl + # define isnanl(x) isnan ((long double)(x)) + #endif + long double x; +int +main () +{ +return isnanl (x); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_isnanl_no_libm=yes +else + gl_cv_func_isnanl_no_libm=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanl_no_libm" >&5 +$as_echo "$gl_cv_func_isnanl_no_libm" >&6; } + if test $gl_cv_func_isnanl_no_libm = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(long double) can be used with libm" >&5 +$as_echo_n "checking whether isnan(long double) can be used with libm... " >&6; } +if ${gl_cv_func_isnanl_in_libm+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LIBS="$LIBS" + LIBS="$LIBS -lm" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #if __GNUC__ >= 4 + # undef isnanl + # define isnanl(x) __builtin_isnanl ((long double)(x)) + #elif defined isnan + # undef isnanl + # define isnanl(x) isnan ((long double)(x)) + #endif + long double x; +int +main () +{ +return isnanl (x); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_isnanl_in_libm=yes +else + gl_cv_func_isnanl_in_libm=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanl_in_libm" >&5 +$as_echo "$gl_cv_func_isnanl_in_libm" >&6; } + if test $gl_cv_func_isnanl_in_libm = yes; then + ISNANL_LIBM=-lm + fi + fi + if test $gl_cv_func_isnanl_no_libm = yes \ + || test $gl_cv_func_isnanl_in_libm = yes; then + save_LIBS="$LIBS" + LIBS="$LIBS $ISNANL_LIBM" - use_additional=yes - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnanl works" >&5 +$as_echo_n "checking whether isnanl works... " >&6; } +if ${gl_cv_func_isnanl_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + gl_cv_func_isnanl_works="guessing yes" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -# Check whether --with-libglib-2.0-prefix was given. -if test "${with_libglib_2_0_prefix+set}" = set; then : - withval=$with_libglib_2_0_prefix; - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then +#include +#include +#include +#if __GNUC__ >= 4 +# undef isnanl +# define isnanl(x) __builtin_isnanl ((long double)(x)) +#elif defined isnan +# undef isnanl +# define isnanl(x) isnan ((long double)(x)) +#endif +#define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { unsigned int word[NWORDS]; long double value; } + memory_long_double; +/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the + runtime type conversion. */ +#ifdef __sgi +static long double NaNl () +{ + double zero = 0.0; + return zero / zero; +} +#else +# define NaNl() (0.0L / 0.0L) +#endif +int main () +{ + int result = 0; - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" + if (!isnanl (NaNl ())) + result |= 1; - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" + { + memory_long_double m; + unsigned int i; - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" + /* The isnanl function should be immune against changes in the sign bit and + in the mantissa bits. The xor operation twiddles a bit that can only be + a sign bit or a mantissa bit (since the exponent never extends to + bit 31). */ + m.value = NaNl (); + m.word[NWORDS / 2] ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); + for (i = 0; i < NWORDS; i++) + m.word[i] |= 1; + if (!isnanl (m.value)) + result |= 1; + } - else - additional_includedir="$withval/include" - additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi - fi - fi +#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE +/* Representation of an 80-bit 'long double' as an initializer for a sequence + of 'unsigned int' words. */ +# ifdef WORDS_BIGENDIAN +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ + ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \ + (unsigned int) (mantlo) << 16 \ + } +# else +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { mantlo, manthi, exponent } +# endif + { /* Quiet NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; + if (!isnanl (x.value)) + result |= 2; + } + { + /* Signalling NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; + if (!isnanl (x.value)) + result |= 2; + } + /* isnanl should return something even for noncanonical values. */ + { /* Pseudo-NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 4; + } + { /* Pseudo-Infinity. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 8; + } + { /* Pseudo-Zero. */ + static memory_long_double x = + { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 16; + } + { /* Unnormalized number. */ + static memory_long_double x = + { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 32; + } + { /* Pseudo-Denormal. */ + static memory_long_double x = + { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 64; + } +#endif + return result; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_isnanl_works=yes +else + gl_cv_func_isnanl_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - LIBGLIB_2_0= - LTLIBGLIB_2_0= - INCGLIB_2_0= - LIBGLIB_2_0_PREFIX= - HAVE_LIBGLIB_2_0= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='glib-2.0 ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - eval libname=\"$acl_libname_spec\" # typically: libname=lib$name - if test -n "$acl_shlibext"; then - shrext=".$acl_shlibext" # typically: shrext=.so - else - shrext= - fi - if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBGLIB_2_0; do - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanl_works" >&5 +$as_echo "$gl_cv_func_isnanl_works" >&6; } - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no \ - || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$acl_hardcode_direct" = yes; then - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_so" - else - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBGLIB_2_0; do + LIBS="$save_LIBS" + case "$gl_cv_func_isnanl_works" in + *yes) gl_func_isnanl=yes ;; + *) gl_func_isnanl=no; ISNANL_LIBM= ;; + esac + else + gl_func_isnanl=no + fi + if test $gl_func_isnanl != yes; then + HAVE_ISNANL=0 + fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-L$found_dir" - fi - if test "$acl_hardcode_minus_L" != no; then - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_so" - else - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_a" - else - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */$acl_libdirstem | */$acl_libdirstem/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = 'glib-2.0'; then - LIBGLIB_2_0_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - */$acl_libdirstem2 | */$acl_libdirstem2/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = 'glib-2.0'; then - LIBGLIB_2_0_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCGLIB_2_0; do - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'double'" >&5 +$as_echo_n "checking where to find the exponent in a 'double'... " >&6; } +if ${gl_cv_cc_double_expbit0+:} false; then : + $as_echo_n "(cached) " >&6 +else - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCGLIB_2_0="${INCGLIB_2_0}${INCGLIB_2_0:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBGLIB_2_0; do + if test "$cross_compiling" = yes; then : - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBGLIB_2_0; do +#if defined arm || defined __arm || defined __arm__ + mixed_endianness +#endif - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "mixed_endianness" >/dev/null 2>&1; then : + gl_cv_cc_double_expbit0="unknown" +else - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$dep" - LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }$dep" - ;; - esac - done - fi - else - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-l$name" - LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$acl_hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }-R$found_dir" - done - fi + : +if ${ac_cv_c_bigendian+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif - LIBS="$gl_save_LIBS $LIBGLIB_2_0" + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#ifndef G_BEGIN_DECLS -error this glib.h includes a glibconfig.h from a glib version 1.x -#endif +#include int main () { -g_string_new ("foo"); +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_cv_libglib=yes - gl_cv_LIBGLIB="$LIBGLIB_2_0" - gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0" - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$gl_cv_libglib" != yes; then - gl_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCGLIB_2_0" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#ifndef G_BEGIN_DECLS -error this glib.h includes a glibconfig.h from a glib version 1.x -#endif +#include int main () { -g_string_new ("foo"); +#ifndef _BIG_ENDIAN + not big endian + #endif + ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_cv_libglib=yes - gl_cv_LIBGLIB="$LIBGLIB_2_0" - gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0" - gl_cv_INCGLIB="$INCGLIB_2_0" - +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$gl_cv_libglib" != yes; then - if test -n "$LIBGLIB_2_0_PREFIX"; then - CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#ifndef G_BEGIN_DECLS -error this glib.h includes a glibconfig.h from a glib version 1.x -#endif +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; int main () { -g_string_new ("foo"); +return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_cv_libglib=yes - gl_cv_LIBGLIB="$LIBGLIB_2_0" - gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0" - gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include" - +if ac_fn_c_try_compile "$LINENO"; then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - fi - fi - CPPFLAGS="$gl_save_CPPFLAGS" - fi - LIBS="$gl_save_LIBS" +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_bigendian=no +else + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for glib" >&5 -$as_echo_n "checking for glib... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libglib" >&5 -$as_echo "$gl_cv_libglib" >&6; } - if test $gl_cv_libglib = yes; then - LIBGLIB="$gl_cv_LIBGLIB" - LTLIBGLIB="$gl_cv_LTLIBGLIB" - INCGLIB="$gl_cv_INCGLIB" - else - gl_cv_libglib_use_included=yes fi - fi - - +fi +: + case $ac_cv_c_bigendian in #( + yes) + gl_cv_cc_double_expbit0="word 0 bit 20";; #( + no) + gl_cv_cc_double_expbit0="word 1 bit 20" ;; #( + universal) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the included glib" >&5 -$as_echo_n "checking whether to use the included glib... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libglib_use_included" >&5 -$as_echo "$gl_cv_libglib_use_included" >&6; } +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h - if test "$gl_cv_libglib_use_included" = yes; then - LIBGLIB_H= - LIBGLIB_H="$LIBGLIB_H glib.h" - LIBGLIB_H="$LIBGLIB_H glibconfig.h" - LIBGLIB_H="$LIBGLIB_H glib/ghash.h" - LIBGLIB_H="$LIBGLIB_H glib/glist.h" - LIBGLIB_H="$LIBGLIB_H glib/gprimes.h" - LIBGLIB_H="$LIBGLIB_H glib/gstrfuncs.h" - LIBGLIB_H="$LIBGLIB_H glib/gstring.h" - LIBGLIB_H="$LIBGLIB_H glib/gtypes.h" + ;; #( + *) + gl_cv_cc_double_expbit0="unknown" ;; + esac - for ac_header in unistd.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" -if test "x$ac_cv_header_unistd_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_UNISTD_H 1 -_ACEOF fi +rm -f conftest* -done - else - LIBGLIB_H= - fi +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { double value; unsigned int word[NWORDS]; } memory_double; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (double x) +{ + memory_double m; + size_t i; + /* Clear it first, in case sizeof (double) < sizeof (memory_double). */ + memset (&m, 0, sizeof (memory_double)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25); + add_to_ored_words (0.5); + add_to_ored_words (1.0); + add_to_ored_words (2.0); + add_to_ored_words (4.0); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); +} - if test "$gl_cv_libglib_use_included" = yes; then - INCLUDED_LIBGLIB_TRUE= - INCLUDED_LIBGLIB_FALSE='#' +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_double_expbit0=`cat conftest.out` else - INCLUDED_LIBGLIB_TRUE='#' - INCLUDED_LIBGLIB_FALSE= + gl_cv_cc_double_expbit0="unknown" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi + rm -f conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_double_expbit0" >&5 +$as_echo "$gl_cv_cc_double_expbit0" >&6; } + case "$gl_cv_cc_double_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'` +cat >>confdefs.h <<_ACEOF +#define DBL_EXPBIT0_WORD $word +_ACEOF +cat >>confdefs.h <<_ACEOF +#define DBL_EXPBIT0_BIT $bit +_ACEOF + ;; + esac + GNULIB_ISWBLANK=0; + GNULIB_WCTYPE=0; + GNULIB_ISWCTYPE=0; + GNULIB_WCTRANS=0; + GNULIB_TOWCTRANS=0; + HAVE_ISWBLANK=1; + HAVE_WCTYPE_T=1; + HAVE_WCTRANS_T=1; + REPLACE_ISWBLANK=0; - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included libunistring is requested" >&5 -$as_echo_n "checking whether included libunistring is requested... " >&6; } - -# Check whether --with-included-libunistring was given. -if test "${with_included_libunistring+set}" = set; then : - withval=$with_included_libunistring; gl_libunistring_force_included=$withval -else - gl_libunistring_force_included=no -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_libunistring_force_included" >&5 -$as_echo "$gl_libunistring_force_included" >&6; } - gl_libunistring_use_included="$gl_libunistring_force_included" - if test "$gl_libunistring_use_included" = yes; then - if test -z "$HAVE_LIBUNISTRING"; then - HAVE_LIBUNISTRING=no - fi - LIBUNISTRING= - LTLIBUNISTRING= - else - if test -n "$LIBICONV"; then + if test $ac_cv_func_iswcntrl = yes; then + HAVE_ISWCNTRL=1 + else + HAVE_ISWCNTRL=0 + fi + if test $gt_cv_c_wint_t = yes; then + HAVE_WINT_T=1 + else + HAVE_WINT_T=0 + fi - use_additional=yes - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" -# Check whether --with-libunistring-prefix was given. -if test "${with_libunistring_prefix+set}" = set; then : - withval=$with_libunistring_prefix; - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then + if test $gl_cv_have_include_next = yes; then + gl_cv_next_wctype_h='<'wctype.h'>' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if ${gl_cv_next_wctype_h+:} false; then : + $as_echo_n "(cached) " >&6 +else - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" + if test $ac_cv_header_wctype_h = yes; then - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - else - additional_includedir="$withval/include" - additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi - fi - fi -fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac - LIBUNISTRING= - LTLIBUNISTRING= - INCUNISTRING= - LIBUNISTRING_PREFIX= - HAVE_LIBUNISTRING= - rpathdirs= + case "$host_os" in + mingw*) + gl_dirsep_regex='[/\\]' + ;; + *) + gl_dirsep_regex='\/' + ;; + esac + gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' + gl_header_literal_regex=`echo 'wctype.h' \ + | sed -e "$gl_make_literal_regex_sed"` + gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ + s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ + s|^/[^/]|//&| + p + q + }' + + gl_cv_absolute_wctype_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n "$gl_absolute_header_sed"` + + gl_header=$gl_cv_absolute_wctype_h + gl_cv_next_wctype_h='"'$gl_header'"' + else + gl_cv_next_wctype_h='<'wctype.h'>' + fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_wctype_h" >&5 +$as_echo "$gl_cv_next_wctype_h" >&6; } + fi + NEXT_WCTYPE_H=$gl_cv_next_wctype_h + + if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' + gl_next_as_first_directive='<'wctype.h'>' + else + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' + gl_next_as_first_directive=$gl_cv_next_wctype_h + fi + NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H=$gl_next_as_first_directive + + + + + if test $ac_cv_header_wctype_h = yes; then + if test $ac_cv_func_iswcntrl = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iswcntrl works" >&5 +$as_echo_n "checking whether iswcntrl works... " >&6; } +if ${gl_cv_func_iswcntrl_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #if __GNU_LIBRARY__ == 1 + Linux libc5 i18n is broken. + #endif +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_func_iswcntrl_works="guessing yes" +else + gl_cv_func_iswcntrl_works="guessing no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* Tru64 with Desktop Toolkit C has a bug: must be + included before . + BSD/OS 4.0.1 has a bug: , and + must be included before . */ + #include + #include + #include + #include + #include + int main () { return iswprint ('x') == 0; } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_iswcntrl_works=yes +else + gl_cv_func_iswcntrl_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_iswcntrl_works" >&5 +$as_echo "$gl_cv_func_iswcntrl_works" >&6; } + fi + HAVE_WCTYPE_H=1 + else + HAVE_WCTYPE_H=0 + fi + + + case "$gl_cv_func_iswcntrl_works" in + *yes) REPLACE_ISWCNTRL=0 ;; + *) REPLACE_ISWCNTRL=1 ;; + esac + + + if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then + : + fi + + if test $REPLACE_ISWCNTRL = 1; then + REPLACE_TOWLOWER=1 + else + for ac_func in towlower +do : + ac_fn_c_check_func "$LINENO" "towlower" "ac_cv_func_towlower" +if test "x$ac_cv_func_towlower" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_TOWLOWER 1 +_ACEOF + +fi +done + + if test $ac_cv_func_towlower = yes; then + REPLACE_TOWLOWER=0 + else + ac_fn_c_check_decl "$LINENO" "towlower" "ac_cv_have_decl_towlower" "/* Tru64 with Desktop Toolkit C has a bug: must be + included before . + BSD/OS 4.0.1 has a bug: , and + must be included before . */ + #include + #include + #include + #include + #if HAVE_WCTYPE_H + # include + #endif + +" +if test "x$ac_cv_have_decl_towlower" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_TOWLOWER $ac_have_decl +_ACEOF + + if test $ac_cv_have_decl_towlower = yes; then + REPLACE_TOWLOWER=1 + else + REPLACE_TOWLOWER=0 + fi + fi + fi + + + if test $HAVE_ISWCNTRL = 0 || test $REPLACE_TOWLOWER = 1; then + : + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctype_t" >&5 +$as_echo_n "checking for wctype_t... " >&6; } +if ${gl_cv_type_wctype_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Tru64 with Desktop Toolkit C has a bug: must be + included before . + BSD/OS 4.0.1 has a bug: , and + must be included before . */ + #include + #include + #include + #include + #if HAVE_WCTYPE_H + # include + #endif + wctype_t a; + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_type_wctype_t=yes +else + gl_cv_type_wctype_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wctype_t" >&5 +$as_echo "$gl_cv_type_wctype_t" >&6; } + if test $gl_cv_type_wctype_t = no; then + HAVE_WCTYPE_T=0 + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctrans_t" >&5 +$as_echo_n "checking for wctrans_t... " >&6; } +if ${gl_cv_type_wctrans_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Tru64 with Desktop Toolkit C has a bug: must be + included before . + BSD/OS 4.0.1 has a bug: , and + must be included before . */ + #include + #include + #include + #include + #include + wctrans_t a; + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_type_wctrans_t=yes +else + gl_cv_type_wctrans_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wctrans_t" >&5 +$as_echo "$gl_cv_type_wctrans_t" >&6; } + if test $gl_cv_type_wctrans_t = no; then + HAVE_WCTRANS_T=0 + fi + + + for gl_func in wctype iswctype wctrans towctrans ; do + as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 +$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } +if eval \${$as_gl_Symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be + included before . */ +#if !(defined __GLIBC__ && !defined __UCLIBC__) +# include +# include +# include +# include +#endif +#include + +int +main () +{ +#undef $gl_func + (void) $gl_func; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_gl_Symbol=yes" +else + eval "$as_gl_Symbol=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$as_gl_Symbol + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 +_ACEOF + + eval ac_cv_have_decl_$gl_func=yes +fi + done + + + + + + GNULIB_NL_LANGINFO=0; + HAVE_NL_LANGINFO=1; + REPLACE_NL_LANGINFO=0; + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included glib is requested" >&5 +$as_echo_n "checking whether included glib is requested... " >&6; } + +# Check whether --with-included-glib was given. +if test "${with_included_glib+set}" = set; then : + withval=$with_included_glib; gl_cv_libglib_force_included=$withval +else + gl_cv_libglib_force_included=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libglib_force_included" >&5 +$as_echo "$gl_cv_libglib_force_included" >&6; } + + gl_cv_libglib_use_included="$gl_cv_libglib_force_included" + LIBGLIB= + LTLIBGLIB= + INCGLIB= + if test "$gl_cv_libglib_use_included" != yes; then + if ${gl_cv_libglib+:} false; then : + $as_echo_n "(cached) " >&6 +else + + gl_cv_libglib=no + gl_cv_LIBGLIB= + gl_cv_LTLIBGLIB= + gl_cv_INCGLIB= + gl_save_LIBS="$LIBS" + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libglib-2.0-prefix was given. +if test "${with_libglib_2_0_prefix+set}" = set; then : + withval=$with_libglib_2_0_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBGLIB_2_0= + LTLIBGLIB_2_0= + INCGLIB_2_0= + LIBGLIB_2_0_PREFIX= + HAVE_LIBGLIB_2_0= + rpathdirs= ltrpathdirs= names_already_handled= - names_next_round='unistring ' + names_next_round='glib-2.0 ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= @@ -26226,9 +27590,9 @@ if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" - test -z "$value" || LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$value" + test -z "$value" || LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$value" eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBUNISTRING="${LTLIBUNISTRING}${LTLIBUNISTRING:+ }$value" + test -z "$value" || LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }$value" else : fi @@ -26285,7 +27649,7 @@ fi fi if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBUNISTRING; do + for x in $LDFLAGS $LTLIBGLIB_2_0; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" @@ -26344,12 +27708,12 @@ done fi if test "X$found_dir" != "X"; then - LTLIBUNISTRING="${LTLIBUNISTRING}${LTLIBUNISTRING:+ }-L$found_dir -l$name" + LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then - LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$found_so" + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_so" else haveit= for x in $ltrpathdirs; do @@ -26362,10 +27726,10 @@ ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then - LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$found_so" + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then - LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$found_so" + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then @@ -26378,7 +27742,7 @@ fi else haveit= - for x in $LDFLAGS $LIBUNISTRING; do + for x in $LDFLAGS $LIBGLIB_2_0; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" @@ -26394,36 +27758,36 @@ fi done if test -z "$haveit"; then - LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }-L$found_dir" + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then - LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$found_so" + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_so" else - LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }-l$name" + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then - LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$found_a" + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_a" else - LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }-L$found_dir -l$name" + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = 'unistring'; then - LIBUNISTRING_PREFIX="$basedir" + if test "$name" = 'glib-2.0'; then + LIBGLIB_2_0_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = 'unistring'; then - LIBUNISTRING_PREFIX="$basedir" + if test "$name" = 'glib-2.0'; then + LIBGLIB_2_0_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; @@ -26439,7 +27803,7 @@ fi fi if test -z "$haveit"; then - for x in $CPPFLAGS $INCUNISTRING; do + for x in $CPPFLAGS $INCGLIB_2_0; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" @@ -26456,7 +27820,7 @@ done if test -z "$haveit"; then if test -d "$additional_includedir"; then - INCUNISTRING="${INCUNISTRING}${INCUNISTRING:+ }-I$additional_includedir" + INCGLIB_2_0="${INCGLIB_2_0}${INCGLIB_2_0:+ }-I$additional_includedir" fi fi fi @@ -26486,7 +27850,7 @@ fi if test -z "$haveit"; then haveit= - for x in $LDFLAGS $LIBUNISTRING; do + for x in $LDFLAGS $LIBGLIB_2_0; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" @@ -26503,11 +27867,11 @@ done if test -z "$haveit"; then if test -d "$additional_libdir"; then - LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }-L$additional_libdir" + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-L$additional_libdir" fi fi haveit= - for x in $LDFLAGS $LTLIBUNISTRING; do + for x in $LDFLAGS $LTLIBGLIB_2_0; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" @@ -26524,7 +27888,7 @@ done if test -z "$haveit"; then if test -d "$additional_libdir"; then - LTLIBUNISTRING="${LTLIBUNISTRING}${LTLIBUNISTRING:+ }-L$additional_libdir" + LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }-L$additional_libdir" fi fi fi @@ -26562,15 +27926,15 @@ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) - LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$dep" - LTLIBUNISTRING="${LTLIBUNISTRING}${LTLIBUNISTRING:+ }$dep" + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$dep" + LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }$dep" ;; esac done fi else - LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }-l$name" - LTLIBUNISTRING="${LTLIBUNISTRING}${LTLIBUNISTRING:+ }-l$name" + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-l$name" + LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }-l$name" fi fi fi @@ -26586,20 +27950,20 @@ libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" - LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$flag" + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" - LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$flag" + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do - LTLIBUNISTRING="${LTLIBUNISTRING}${LTLIBUNISTRING:+ }-R$found_dir" + LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }-R$found_dir" done fi @@ -26608,93 +27972,180 @@ - - ac_save_CPPFLAGS="$CPPFLAGS" - - for element in $INCUNISTRING; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libunistring" >&5 -$as_echo_n "checking for libunistring... " >&6; } -if ${ac_cv_libunistring+:} false; then : - $as_echo_n "(cached) " >&6 -else - - ac_save_LIBS="$LIBS" - case " $LIBUNISTRING" in - *" -l"*) LIBS="$LIBS $LIBUNISTRING" ;; - *) LIBS="$LIBUNISTRING $LIBS" ;; - esac - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + LIBS="$gl_save_LIBS $LIBGLIB_2_0" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include +#include +#ifndef G_BEGIN_DECLS +error this glib.h includes a glibconfig.h from a glib version 1.x +#endif + int main () { -u8_strconv_from_locale((char*)0); +g_string_new ("foo"); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_libunistring=yes -else - ac_cv_libunistring='no, trying again together with libiconv' + gl_cv_libglib=yes + gl_cv_LIBGLIB="$LIBGLIB_2_0" + gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0" + fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - LIBS="$ac_save_LIBS" + if test "$gl_cv_libglib" != yes; then + gl_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCGLIB_2_0" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#ifndef G_BEGIN_DECLS +error this glib.h includes a glibconfig.h from a glib version 1.x +#endif + +int +main () +{ +g_string_new ("foo"); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_libglib=yes + gl_cv_LIBGLIB="$LIBGLIB_2_0" + gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0" + gl_cv_INCGLIB="$INCGLIB_2_0" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libunistring" >&5 -$as_echo "$ac_cv_libunistring" >&6; } - if test "$ac_cv_libunistring" = yes; then - HAVE_LIBUNISTRING=yes +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$gl_cv_libglib" != yes; then + if test -n "$LIBGLIB_2_0_PREFIX"; then + CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#ifndef G_BEGIN_DECLS +error this glib.h includes a glibconfig.h from a glib version 1.x +#endif -$as_echo "#define HAVE_LIBUNISTRING 1" >>confdefs.h +int +main () +{ +g_string_new ("foo"); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_libglib=yes + gl_cv_LIBGLIB="$LIBGLIB_2_0" + gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0" + gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libunistring" >&5 -$as_echo_n "checking how to link with libunistring... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBUNISTRING" >&5 -$as_echo "$LIBUNISTRING" >&6; } - else - HAVE_LIBUNISTRING=no - CPPFLAGS="$ac_save_CPPFLAGS" - LIBUNISTRING= - LTLIBUNISTRING= - LIBUNISTRING_PREFIX= +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi + fi + CPPFLAGS="$gl_save_CPPFLAGS" + fi + LIBS="$gl_save_LIBS" + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for glib" >&5 +$as_echo_n "checking for glib... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libglib" >&5 +$as_echo "$gl_cv_libglib" >&6; } + if test $gl_cv_libglib = yes; then + LIBGLIB="$gl_cv_LIBGLIB" + LTLIBGLIB="$gl_cv_LTLIBGLIB" + INCGLIB="$gl_cv_INCGLIB" + else + gl_cv_libglib_use_included=yes + fi fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the included glib" >&5 +$as_echo_n "checking whether to use the included glib... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libglib_use_included" >&5 +$as_echo "$gl_cv_libglib_use_included" >&6; } + + if test "$gl_cv_libglib_use_included" = yes; then + LIBGLIB_H= + LIBGLIB_H="$LIBGLIB_H glib.h" + LIBGLIB_H="$LIBGLIB_H glibconfig.h" + LIBGLIB_H="$LIBGLIB_H glib/ghash.h" + LIBGLIB_H="$LIBGLIB_H glib/glist.h" + LIBGLIB_H="$LIBGLIB_H glib/gprimes.h" + LIBGLIB_H="$LIBGLIB_H glib/gstrfuncs.h" + LIBGLIB_H="$LIBGLIB_H glib/gstring.h" + LIBGLIB_H="$LIBGLIB_H glib/gtypes.h" + + for ac_header in unistd.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_UNISTD_H 1 +_ACEOF + +fi +done + else + LIBGLIB_H= + fi - if test "$ac_cv_libunistring" != yes; then - unset ac_cv_libunistring - glus_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" + if test "$gl_cv_libglib_use_included" = yes; then + INCLUDED_LIBGLIB_TRUE= + INCLUDED_LIBGLIB_FALSE='#' +else + INCLUDED_LIBGLIB_TRUE='#' + INCLUDED_LIBGLIB_FALSE= +fi + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included libunistring is requested" >&5 +$as_echo_n "checking whether included libunistring is requested... " >&6; } + +# Check whether --with-included-libunistring was given. +if test "${with_included_libunistring+set}" = set; then : + withval=$with_included_libunistring; gl_libunistring_force_included=$withval +else + gl_libunistring_force_included=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_libunistring_force_included" >&5 +$as_echo "$gl_libunistring_force_included" >&6; } + gl_libunistring_use_included="$gl_libunistring_force_included" + if test "$gl_libunistring_use_included" = yes; then + if test -z "$HAVE_LIBUNISTRING"; then + HAVE_LIBUNISTRING=no + fi + LIBUNISTRING= + LTLIBUNISTRING= + else + + + if test -n "$LIBICONV"; then @@ -27213,7 +28664,7 @@ if ac_fn_c_try_link "$LINENO"; then : ac_cv_libunistring=yes else - ac_cv_libunistring='no, consider installing GNU libunistring' + ac_cv_libunistring='no, trying again together with libiconv' fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext @@ -27245,13 +28696,10 @@ - if test -n "$LIBUNISTRING"; then - LIBUNISTRING="$LIBUNISTRING $LIBICONV" - LTLIBUNISTRING="$LTLIBUNISTRING $LTLIBICONV" - fi - LIBS="$glus_save_LIBS" - fi - else + if test "$ac_cv_libunistring" != yes; then + unset ac_cv_libunistring + glus_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" @@ -27802,401 +29250,1058 @@ - fi - if test $HAVE_LIBUNISTRING = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libunistring version" >&5 -$as_echo_n "checking for libunistring version... " >&6; } -if ${gl_cv_libunistring_version+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "_LIBUNISTRING_VERSION" "gl_libunistring_hexversion" "#include "; then : - -fi - - if test $gl_libunistring_hexversion = 9; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_libunistring_version092=true -else - gl_cv_libunistring_version092=false -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if $gl_cv_libunistring_version092; then - - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac - - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; - esac - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'unistr.h' \ - | sed -e "$gl_make_literal_regex_sed"` - gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ - s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ - s|^/[^/]|//&| - p - q - }' - - gl_cv_absolute_unistr_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` - - if test -n "$gl_cv_absolute_unistr_h" \ - && grep 'Copy no more than N units of SRC to DEST. Return a pointer' $gl_cv_absolute_unistr_h > /dev/null; then - gl_libunistring_hexversion=2307 - else - gl_libunistring_hexversion=2306 - fi - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - casing_suffix_context_t ct; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_libunistring_version091=true -else - gl_cv_libunistring_version091=false -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if $gl_cv_libunistring_version091; then - gl_libunistring_hexversion=2305 - else - gl_libunistring_hexversion=2304 - fi - fi - fi - gl_libunistring_major=`expr $gl_libunistring_hexversion / 65536` - gl_libunistring_minor=`expr $gl_libunistring_hexversion / 256 % 256` - gl_libunistring_subminor=`expr $gl_libunistring_hexversion % 256` - gl_cv_libunistring_version="$gl_libunistring_major.$gl_libunistring_minor.$gl_libunistring_subminor" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libunistring_version" >&5 -$as_echo "$gl_cv_libunistring_version" >&6; } - LIBUNISTRING_VERSION="$gl_cv_libunistring_version" - fi - - if test $HAVE_LIBUNISTRING = no; then - gl_libunistring_use_included=yes - LIBUNISTRING= - LTLIBUNISTRING= - fi + if test -n "$LIBUNISTRING"; then + LIBUNISTRING="$LIBUNISTRING $LIBICONV" + LTLIBUNISTRING="$LTLIBUNISTRING $LTLIBICONV" fi + LIBS="$glus_save_LIBS" + fi + else -ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default" -if test "x$ac_cv_have_decl_getc_unlocked" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl -_ACEOF - - - GNULIB_LOCALECONV=0; - GNULIB_SETLOCALE=0; - GNULIB_DUPLOCALE=0; - HAVE_DUPLOCALE=1; - REPLACE_LOCALECONV=0; - REPLACE_SETLOCALE=0; - REPLACE_DUPLOCALE=0; - REPLACE_STRUCT_LCONV=0; - - - REPLACE_NULL=0; - HAVE_MAX_ALIGN_T=1; - HAVE_WCHAR_T=1; - - - STDDEF_H= - ac_fn_c_check_type "$LINENO" "max_align_t" "ac_cv_type_max_align_t" "#include -" -if test "x$ac_cv_type_max_align_t" = xyes; then : -else - HAVE_MAX_ALIGN_T=0; STDDEF_H=stddef.h -fi - if test $gt_cv_c_wchar_t = no; then - HAVE_WCHAR_T=0 - STDDEF_H=stddef.h - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5 -$as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; } -if ${gl_cv_decl_null_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - int test[2 * (sizeof NULL == sizeof (void *)) -1]; -int -main () -{ - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_decl_null_works=yes -else - gl_cv_decl_null_works=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5 -$as_echo "$gl_cv_decl_null_works" >&6; } - if test $gl_cv_decl_null_works = no; then - REPLACE_NULL=1 - STDDEF_H=stddef.h - fi + use_additional=yes - if test -n "$STDDEF_H"; then - GL_GENERATE_STDDEF_H_TRUE= - GL_GENERATE_STDDEF_H_FALSE='#' -else - GL_GENERATE_STDDEF_H_TRUE='#' - GL_GENERATE_STDDEF_H_FALSE= -fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" - if test -n "$STDDEF_H"; then + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +# Check whether --with-libunistring-prefix was given. +if test "${with_libunistring_prefix+set}" = set; then : + withval=$with_libunistring_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi - if test $gl_cv_have_include_next = yes; then - gl_cv_next_stddef_h='<'stddef.h'>' - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_next_stddef_h+:} false; then : - $as_echo_n "(cached) " >&6 -else +fi + LIBUNISTRING= + LTLIBUNISTRING= + INCUNISTRING= + LIBUNISTRING_PREFIX= + HAVE_LIBUNISTRING= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='unistring ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBUNISTRING="${LTLIBUNISTRING}${LTLIBUNISTRING:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBUNISTRING; do + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBUNISTRING="${LTLIBUNISTRING}${LTLIBUNISTRING:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBUNISTRING; do - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; - esac - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'stddef.h' \ - | sed -e "$gl_make_literal_regex_sed"` - gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ - s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ - s|^/[^/]|//&| - p - q - }' + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" - gl_cv_absolute_stddef_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$found_so" + else + LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$found_a" + else + LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'unistring'; then + LIBUNISTRING_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'unistring'; then + LIBUNISTRING_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCUNISTRING; do - gl_header=$gl_cv_absolute_stddef_h - gl_cv_next_stddef_h='"'$gl_header'"' + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCUNISTRING="${INCUNISTRING}${INCUNISTRING:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBUNISTRING; do + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5 -$as_echo "$gl_cv_next_stddef_h" >&6; } - fi - NEXT_STDDEF_H=$gl_cv_next_stddef_h + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBUNISTRING; do - if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' - gl_next_as_first_directive='<'stddef.h'>' - else - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' - gl_next_as_first_directive=$gl_cv_next_stddef_h - fi - NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBUNISTRING="${LTLIBUNISTRING}${LTLIBUNISTRING:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$dep" + LTLIBUNISTRING="${LTLIBUNISTRING}${LTLIBUNISTRING:+ }$dep" + ;; + esac + done + fi + else + LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }-l$name" + LTLIBUNISTRING="${LTLIBUNISTRING}${LTLIBUNISTRING:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBUNISTRING="${LIBUNISTRING}${LIBUNISTRING:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBUNISTRING="${LTLIBUNISTRING}${LTLIBUNISTRING:+ }-R$found_dir" + done + fi - fi + ac_save_CPPFLAGS="$CPPFLAGS" + for element in $INCUNISTRING; do + haveit= + for x in $CPPFLAGS; do + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 -$as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } -if ${gl_cv_func_lstat_dereferences_slashed_symlink+:} false; then : + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libunistring" >&5 +$as_echo_n "checking for libunistring... " >&6; } +if ${ac_cv_libunistring+:} false; then : $as_echo_n "(cached) " >&6 else - rm -f conftest.sym conftest.file - echo >conftest.file - if test "$cross_compiling" = yes; then : - case "$host_os" in - *-gnu*) - # Guess yes on glibc systems. - gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;; - *) - # If we don't know, assume the worst. - gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;; - esac -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + ac_save_LIBS="$LIBS" + case " $LIBUNISTRING" in + *" -l"*) LIBS="$LIBS $LIBUNISTRING" ;; + *) LIBS="$LIBUNISTRING $LIBS" ;; + esac + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default +#include int main () { -struct stat sbuf; - if (symlink ("conftest.file", "conftest.sym") != 0) - return 1; - /* Linux will dereference the symlink and fail, as required by - POSIX. That is better in the sense that it means we will not - have to compile and use the lstat wrapper. */ - return lstat ("conftest.sym/", &sbuf) == 0; - +u8_strconv_from_locale((char*)0); ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_lstat_dereferences_slashed_symlink=yes +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_libunistring=yes else - gl_cv_func_lstat_dereferences_slashed_symlink=no + ac_cv_libunistring='no, consider installing GNU libunistring' fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$ac_save_LIBS" + fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libunistring" >&5 +$as_echo "$ac_cv_libunistring" >&6; } + if test "$ac_cv_libunistring" = yes; then + HAVE_LIBUNISTRING=yes - rm -f conftest.sym conftest.file +$as_echo "#define HAVE_LIBUNISTRING 1" >>confdefs.h -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_lstat_dereferences_slashed_symlink" >&5 -$as_echo "$gl_cv_func_lstat_dereferences_slashed_symlink" >&6; } - case "$gl_cv_func_lstat_dereferences_slashed_symlink" in - *yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libunistring" >&5 +$as_echo_n "checking how to link with libunistring... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBUNISTRING" >&5 +$as_echo "$LIBUNISTRING" >&6; } + else + HAVE_LIBUNISTRING=no + CPPFLAGS="$ac_save_CPPFLAGS" + LIBUNISTRING= + LTLIBUNISTRING= + LIBUNISTRING_PREFIX= + fi -cat >>confdefs.h <<_ACEOF -#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 -_ACEOF - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether malloc, realloc, calloc are POSIX compliant" >&5 -$as_echo_n "checking whether malloc, realloc, calloc are POSIX compliant... " >&6; } -if ${gl_cv_func_malloc_posix+:} false; then : + + + + fi + if test $HAVE_LIBUNISTRING = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libunistring version" >&5 +$as_echo_n "checking for libunistring version... " >&6; } +if ${gl_cv_libunistring_version+:} false; then : $as_echo_n "(cached) " >&6 else + if ac_fn_c_compute_int "$LINENO" "_LIBUNISTRING_VERSION" "gl_libunistring_hexversion" "#include "; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +fi + if test $gl_libunistring_hexversion = 9; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include int main () { -#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ - choke me - #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_func_malloc_posix=yes + gl_cv_libunistring_version092=true else - gl_cv_func_malloc_posix=no + gl_cv_libunistring_version092=false fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_malloc_posix" >&5 -$as_echo "$gl_cv_func_malloc_posix" >&6; } - + if $gl_cv_libunistring_version092; then - for ac_header in stdlib.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" -if test "x$ac_cv_header_stdlib_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STDLIB_H 1 + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include _ACEOF + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac -fi + case "$host_os" in + mingw*) + gl_dirsep_regex='[/\\]' + ;; + *) + gl_dirsep_regex='\/' + ;; + esac + gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' + gl_header_literal_regex=`echo 'unistr.h' \ + | sed -e "$gl_make_literal_regex_sed"` + gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ + s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ + s|^/[^/]|//&| + p + q + }' -done + gl_cv_absolute_unistr_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n "$gl_absolute_header_sed"` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 -$as_echo_n "checking for GNU libc compatible malloc... " >&6; } -if ${ac_cv_func_malloc_0_nonnull+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - case "$host_os" in - # Guess yes on platforms where we know the result. - *-gnu* | freebsd* | netbsd* | openbsd* \ - | hpux* | solaris* | cygwin* | mingw*) + if test -n "$gl_cv_absolute_unistr_h" \ + && grep 'Copy no more than N units of SRC to DEST. Return a pointer' $gl_cv_absolute_unistr_h > /dev/null; then + gl_libunistring_hexversion=2307 + else + gl_libunistring_hexversion=2306 + fi + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + casing_suffix_context_t ct; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_libunistring_version091=true +else + gl_cv_libunistring_version091=false +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if $gl_cv_libunistring_version091; then + gl_libunistring_hexversion=2305 + else + gl_libunistring_hexversion=2304 + fi + fi + fi + gl_libunistring_major=`expr $gl_libunistring_hexversion / 65536` + gl_libunistring_minor=`expr $gl_libunistring_hexversion / 256 % 256` + gl_libunistring_subminor=`expr $gl_libunistring_hexversion % 256` + gl_cv_libunistring_version="$gl_libunistring_major.$gl_libunistring_minor.$gl_libunistring_subminor" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libunistring_version" >&5 +$as_echo "$gl_cv_libunistring_version" >&6; } + LIBUNISTRING_VERSION="$gl_cv_libunistring_version" + fi + + if test $HAVE_LIBUNISTRING = no; then + gl_libunistring_use_included=yes + LIBUNISTRING= + LTLIBUNISTRING= + fi + fi + + + + + + +ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_getc_unlocked" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl +_ACEOF + + + GNULIB_LOCALECONV=0; + GNULIB_SETLOCALE=0; + GNULIB_DUPLOCALE=0; + HAVE_DUPLOCALE=1; + REPLACE_LOCALECONV=0; + REPLACE_SETLOCALE=0; + REPLACE_DUPLOCALE=0; + REPLACE_STRUCT_LCONV=0; + + + REPLACE_NULL=0; + HAVE_MAX_ALIGN_T=1; + HAVE_WCHAR_T=1; + + + + + STDDEF_H= + ac_fn_c_check_type "$LINENO" "max_align_t" "ac_cv_type_max_align_t" "#include + +" +if test "x$ac_cv_type_max_align_t" = xyes; then : + +else + HAVE_MAX_ALIGN_T=0; STDDEF_H=stddef.h +fi + + if test $gt_cv_c_wchar_t = no; then + HAVE_WCHAR_T=0 + STDDEF_H=stddef.h + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5 +$as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; } +if ${gl_cv_decl_null_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int test[2 * (sizeof NULL == sizeof (void *)) -1]; + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_decl_null_works=yes +else + gl_cv_decl_null_works=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5 +$as_echo "$gl_cv_decl_null_works" >&6; } + if test $gl_cv_decl_null_works = no; then + REPLACE_NULL=1 + STDDEF_H=stddef.h + fi + + if test -n "$STDDEF_H"; then + GL_GENERATE_STDDEF_H_TRUE= + GL_GENERATE_STDDEF_H_FALSE='#' +else + GL_GENERATE_STDDEF_H_TRUE='#' + GL_GENERATE_STDDEF_H_FALSE= +fi + + if test -n "$STDDEF_H"; then + + + + + + + + + if test $gl_cv_have_include_next = yes; then + gl_cv_next_stddef_h='<'stddef.h'>' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if ${gl_cv_next_stddef_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac + + case "$host_os" in + mingw*) + gl_dirsep_regex='[/\\]' + ;; + *) + gl_dirsep_regex='\/' + ;; + esac + gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' + gl_header_literal_regex=`echo 'stddef.h' \ + | sed -e "$gl_make_literal_regex_sed"` + gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ + s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ + s|^/[^/]|//&| + p + q + }' + + gl_cv_absolute_stddef_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n "$gl_absolute_header_sed"` + + gl_header=$gl_cv_absolute_stddef_h + gl_cv_next_stddef_h='"'$gl_header'"' + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5 +$as_echo "$gl_cv_next_stddef_h" >&6; } + fi + NEXT_STDDEF_H=$gl_cv_next_stddef_h + + if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' + gl_next_as_first_directive='<'stddef.h'>' + else + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' + gl_next_as_first_directive=$gl_cv_next_stddef_h + fi + NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive + + + + + fi + + + + + + + + + POW_LIBM= + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pow can be used without linking with libm" >&5 +$as_echo_n "checking whether pow can be used without linking with libm... " >&6; } +if ${gl_cv_func_pow_no_libm+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __NO_MATH_INLINES + # define __NO_MATH_INLINES 1 /* for glibc */ + #endif + #include + + double (*funcptr) (double, double) = pow; + int i_ret; + float f_ret; + double d_ret; + long double l_ret; +int +main () +{ +double y = funcptr (1.6180339887, 1.6180339887) + pow (1.6180339887, 1.6180339887); + + return y < 0.3 || y > 1.7; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_pow_no_libm=yes +else + gl_cv_func_pow_no_libm=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_pow_no_libm" >&5 +$as_echo "$gl_cv_func_pow_no_libm" >&6; } + if test $gl_cv_func_pow_no_libm = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pow can be used with libm" >&5 +$as_echo_n "checking whether pow can be used with libm... " >&6; } +if ${gl_cv_func_pow_in_libm+:} false; then : + $as_echo_n "(cached) " >&6 +else + + save_LIBS="$LIBS" + LIBS="$LIBS -lm" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __NO_MATH_INLINES + # define __NO_MATH_INLINES 1 /* for glibc */ + #endif + #include + + double (*funcptr) (double, double) = pow; + int i_ret; + float f_ret; + double d_ret; + long double l_ret; +int +main () +{ +double y = funcptr (1.6180339887, 1.6180339887) + pow (1.6180339887, 1.6180339887); + + return y < 0.3 || y > 1.7; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_pow_in_libm=yes +else + gl_cv_func_pow_in_libm=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$save_LIBS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_pow_in_libm" >&5 +$as_echo "$gl_cv_func_pow_in_libm" >&6; } + if test $gl_cv_func_pow_in_libm = yes; then + POW_LIBM=-lm + fi + fi + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 +$as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } +if ${gl_cv_func_lstat_dereferences_slashed_symlink+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f conftest.sym conftest.file + echo >conftest.file + if test "$cross_compiling" = yes; then : + case "$host_os" in + *-gnu*) + # Guess yes on glibc systems. + gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;; + *) + # If we don't know, assume the worst. + gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;; + esac + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +struct stat sbuf; + if (symlink ("conftest.file", "conftest.sym") != 0) + return 1; + /* Linux will dereference the symlink and fail, as required by + POSIX. That is better in the sense that it means we will not + have to compile and use the lstat wrapper. */ + return lstat ("conftest.sym/", &sbuf) == 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_lstat_dereferences_slashed_symlink=yes +else + gl_cv_func_lstat_dereferences_slashed_symlink=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + rm -f conftest.sym conftest.file + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_lstat_dereferences_slashed_symlink" >&5 +$as_echo "$gl_cv_func_lstat_dereferences_slashed_symlink" >&6; } + case "$gl_cv_func_lstat_dereferences_slashed_symlink" in + *yes) + +cat >>confdefs.h <<_ACEOF +#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 +_ACEOF + + ;; + esac + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether malloc, realloc, calloc are POSIX compliant" >&5 +$as_echo_n "checking whether malloc, realloc, calloc are POSIX compliant... " >&6; } +if ${gl_cv_func_malloc_posix+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + choke me + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_func_malloc_posix=yes +else + gl_cv_func_malloc_posix=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_malloc_posix" >&5 +$as_echo "$gl_cv_func_malloc_posix" >&6; } + + + + for ac_header in stdlib.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STDLIB_H 1 +_ACEOF + +fi + +done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 +$as_echo_n "checking for GNU libc compatible malloc... " >&6; } +if ${ac_cv_func_malloc_0_nonnull+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + case "$host_os" in + # Guess yes on platforms where we know the result. + *-gnu* | freebsd* | netbsd* | openbsd* \ + | hpux* | solaris* | cygwin* | mingw*) ac_cv_func_malloc_0_nonnull=yes ;; # If we don't know, assume the worst. *) ac_cv_func_malloc_0_nonnull=no ;; @@ -28246,6 +30351,8 @@ + + GNULIB_BTOWC=0; GNULIB_WCTOB=0; GNULIB_MBSINIT=0; @@ -34275,395 +36382,49 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'double'" >&5 -$as_echo_n "checking where to find the exponent in a 'double'... " >&6; } -if ${gl_cv_cc_double_expbit0+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#if defined arm || defined __arm || defined __arm__ - mixed_endianness -#endif + for ac_func in snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "mixed_endianness" >/dev/null 2>&1; then : - gl_cv_cc_double_expbit0="unknown" -else - : -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 +fi +done + + ac_fn_c_check_decl "$LINENO" "_snprintf" "ac_cv_have_decl__snprintf" "#include +" +if test "x$ac_cv_have_decl__snprintf" = xyes; then : + ac_have_decl=1 else - ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __APPLE_CC__ - not a universal capable compiler - #endif - typedef int dummy; + ac_have_decl=0 +fi +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL__SNPRINTF $ac_have_decl _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # Check for potential -arch flags. It is not universal unless - # there are at least two -arch flags with different values. - ac_arch= - ac_prev= - for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do - if test -n "$ac_prev"; then - case $ac_word in - i?86 | x86_64 | ppc | ppc64) - if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then - ac_arch=$ac_word - else - ac_cv_c_bigendian=universal - break - fi - ;; - esac - ac_prev= - elif test "x$ac_word" = "x-arch"; then - ac_prev=arch - fi - done -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test $ac_cv_c_bigendian = unknown; then - # See if sys/param.h defines the BYTE_ORDER macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include -int -main () -{ -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ - && LITTLE_ENDIAN) - bogus endian macros - #endif - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include + case "$gl_cv_func_snprintf_retval_c99" in + *yes) -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif +$as_echo "#define HAVE_SNPRINTF_RETVAL_C99 1" >>confdefs.h - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes + ;; + esac + +ac_fn_c_check_decl "$LINENO" "vsnprintf" "ac_cv_have_decl_vsnprintf" "$ac_includes_default" +if test "x$ac_cv_have_decl_vsnprintf" = xyes; then : + ac_have_decl=1 else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to _BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#ifndef _BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # Compile a test program. - if test "$cross_compiling" = yes; then : - # Try to guess by grepping values from an object file. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -short int ascii_mm[] = - { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = - { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; - int use_ascii (int i) { - return ascii_mm[i] + ascii_ii[i]; - } - short int ebcdic_ii[] = - { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = - { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; - int use_ebcdic (int i) { - return ebcdic_mm[i] + ebcdic_ii[i]; - } - extern int foo; - -int -main () -{ -return use_ascii (foo) == use_ebcdic (foo); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then - ac_cv_c_bigendian=yes - fi - if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi - fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long int l; - char c[sizeof (long int)]; - } u; - u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_bigendian=no -else - ac_cv_c_bigendian=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi -fi -: - case $ac_cv_c_bigendian in #( - yes) - gl_cv_cc_double_expbit0="word 0 bit 20";; #( - no) - gl_cv_cc_double_expbit0="word 1 bit 20" ;; #( - universal) - -$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h - - ;; #( - *) - gl_cv_cc_double_expbit0="unknown" ;; - esac - - -fi -rm -f conftest* - - -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include -#define NWORDS \ - ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) -typedef union { double value; unsigned int word[NWORDS]; } memory_double; -static unsigned int ored_words[NWORDS]; -static unsigned int anded_words[NWORDS]; -static void add_to_ored_words (double x) -{ - memory_double m; - size_t i; - /* Clear it first, in case sizeof (double) < sizeof (memory_double). */ - memset (&m, 0, sizeof (memory_double)); - m.value = x; - for (i = 0; i < NWORDS; i++) - { - ored_words[i] |= m.word[i]; - anded_words[i] &= m.word[i]; - } -} -int main () -{ - size_t j; - FILE *fp = fopen ("conftest.out", "w"); - if (fp == NULL) - return 1; - for (j = 0; j < NWORDS; j++) - anded_words[j] = ~ (unsigned int) 0; - add_to_ored_words (0.25); - add_to_ored_words (0.5); - add_to_ored_words (1.0); - add_to_ored_words (2.0); - add_to_ored_words (4.0); - /* Remove bits that are common (e.g. if representation of the first mantissa - bit is explicit). */ - for (j = 0; j < NWORDS; j++) - ored_words[j] &= ~anded_words[j]; - /* Now find the nonzero word. */ - for (j = 0; j < NWORDS; j++) - if (ored_words[j] != 0) - break; - if (j < NWORDS) - { - size_t i; - for (i = j + 1; i < NWORDS; i++) - if (ored_words[i] != 0) - { - fprintf (fp, "unknown"); - return (fclose (fp) != 0); - } - for (i = 0; ; i++) - if ((ored_words[j] >> i) & 1) - { - fprintf (fp, "word %d bit %d", (int) j, (int) i); - return (fclose (fp) != 0); - } - } - fprintf (fp, "unknown"); - return (fclose (fp) != 0); -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_cc_double_expbit0=`cat conftest.out` -else - gl_cv_cc_double_expbit0="unknown" -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - rm -f conftest.out - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_double_expbit0" >&5 -$as_echo "$gl_cv_cc_double_expbit0" >&6; } - case "$gl_cv_cc_double_expbit0" in - word*bit*) - word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` - bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'` - -cat >>confdefs.h <<_ACEOF -#define DBL_EXPBIT0_WORD $word -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define DBL_EXPBIT0_BIT $bit -_ACEOF - - ;; - esac - - - - - - - for ac_func in snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - ac_fn_c_check_decl "$LINENO" "_snprintf" "ac_cv_have_decl__snprintf" "#include -" -if test "x$ac_cv_have_decl__snprintf" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL__SNPRINTF $ac_have_decl -_ACEOF - - - - case "$gl_cv_func_snprintf_retval_c99" in - *yes) - -$as_echo "#define HAVE_SNPRINTF_RETVAL_C99 1" >>confdefs.h - - ;; - esac - -ac_fn_c_check_decl "$LINENO" "vsnprintf" "ac_cv_have_decl_vsnprintf" "$ac_includes_default" -if test "x$ac_cv_have_decl_vsnprintf" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 + ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF @@ -34746,6 +36507,10 @@ + + GNULIB_ISBLANK=0; + HAVE_ISBLANK=1; + ac_fn_c_check_decl "$LINENO" "alarm" "ac_cv_have_decl_alarm" "$ac_includes_default" if test "x$ac_cv_have_decl_alarm" = xyes; then : ac_have_decl=1 @@ -36926,6 +38691,106 @@ + + + FABS_LIBM= + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fabs can be used without linking with libm" >&5 +$as_echo_n "checking whether fabs can be used without linking with libm... " >&6; } +if ${gl_cv_func_fabs_no_libm+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __NO_MATH_INLINES + # define __NO_MATH_INLINES 1 /* for glibc */ + #endif + #include + + double (*funcptr) (double) = fabs; + int i_ret; + float f_ret; + double d_ret; + long double l_ret; +int +main () +{ +double y = funcptr (1.6180339887) + fabs (1.6180339887); + + return y < 0.3 || y > 1.7; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_fabs_no_libm=yes +else + gl_cv_func_fabs_no_libm=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_fabs_no_libm" >&5 +$as_echo "$gl_cv_func_fabs_no_libm" >&6; } + if test $gl_cv_func_fabs_no_libm = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fabs can be used with libm" >&5 +$as_echo_n "checking whether fabs can be used with libm... " >&6; } +if ${gl_cv_func_fabs_in_libm+:} false; then : + $as_echo_n "(cached) " >&6 +else + + save_LIBS="$LIBS" + LIBS="$LIBS -lm" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __NO_MATH_INLINES + # define __NO_MATH_INLINES 1 /* for glibc */ + #endif + #include + + double (*funcptr) (double) = fabs; + int i_ret; + float f_ret; + double d_ret; + long double l_ret; +int +main () +{ +double y = funcptr (1.6180339887) + fabs (1.6180339887); + + return y < 0.3 || y > 1.7; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_fabs_in_libm=yes +else + gl_cv_func_fabs_in_libm=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$save_LIBS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_fabs_in_libm" >&5 +$as_echo "$gl_cv_func_fabs_in_libm" >&6; } + if test $gl_cv_func_fabs_in_libm = yes; then + FABS_LIBM=-lm + fi + fi + + + + + + + + + : @@ -38814,49 +40679,202 @@ - - - ac_fn_c_check_decl "$LINENO" "iswblank" "ac_cv_have_decl_iswblank" " -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be included - before . */ -#include -#include -#include -#include -#include + ac_fn_c_check_decl "$LINENO" "isinf" "ac_cv_have_decl_isinf" "#include + #ifndef isinf + #error \"isinf must be a macro, not a function\" + #endif " -if test "x$ac_cv_have_decl_iswblank" = xyes; then : +if test "x$ac_cv_have_decl_isinf" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_ISWBLANK $ac_have_decl +#define HAVE_DECL_ISINF $ac_have_decl _ACEOF - if test $ac_cv_func_iswblank = no; then - HAVE_ISWBLANK=0 - if test $ac_cv_have_decl_iswblank = yes; then - REPLACE_ISWBLANK=1 + if test "$ac_cv_have_decl_isinf" = yes; then + + save_LIBS=$LIBS + ISINF_LIBM=missing + for libm in "" "-lm"; do + LIBS="$save_LIBS $libm" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifndef __NO_MATH_INLINES + # define __NO_MATH_INLINES 1 /* for glibc */ + #endif + #include + + double x; +int +main () +{ +x = isinf (x) + isinf ((float) x); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ISINF_LIBM=$libm +break +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done + LIBS=$save_LIBS + + if test "$ISINF_LIBM" != missing; then + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isinf(long double) works" >&5 +$as_echo_n "checking whether isinf(long double) works... " >&6; } +if ${gl_cv_func_isinfl_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + gl_cv_func_isinfl_works="guessing yes" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { unsigned int word[NWORDS]; long double value; } + memory_long_double; +/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the + runtime type conversion. */ +#ifdef __sgi +static long double NaNl () +{ + double zero = 0.0; + return zero / zero; +} +#else +# define NaNl() (0.0L / 0.0L) +#endif +int main () +{ + int result = 0; + + if (isinf (LDBL_MAX)) + result |= 1; + + { + memory_long_double m; + unsigned int i; + + /* The isinf macro should be immune against changes in the sign bit and + in the mantissa bits. The xor operation twiddles a bit that can only be + a sign bit or a mantissa bit (since the exponent never extends to + bit 31). */ + m.value = NaNl (); + m.word[NWORDS / 2] ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); + for (i = 0; i < NWORDS; i++) + m.word[i] |= 1; + if (isinf (m.value)) + result |= 2; + } + +#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE +/* Representation of an 80-bit 'long double' as an initializer for a sequence + of 'unsigned int' words. */ +# ifdef WORDS_BIGENDIAN +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ + ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \ + (unsigned int) (mantlo) << 16 \ + } +# else +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { mantlo, manthi, exponent } +# endif + { /* Quiet NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; + if (isinf (x.value)) + result |= 2; + } + { + /* Signalling NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; + if (isinf (x.value)) + result |= 2; + } + /* isinf should return something even for noncanonical values. */ + { /* Pseudo-NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; + if (isinf (x.value) && !isinf (x.value)) + result |= 4; + } + { /* Pseudo-Infinity. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; + if (isinf (x.value) && !isinf (x.value)) + result |= 8; + } + { /* Pseudo-Zero. */ + static memory_long_double x = + { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; + if (isinf (x.value) && !isinf (x.value)) + result |= 16; + } + { /* Unnormalized number. */ + static memory_long_double x = + { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; + if (isinf (x.value) && !isinf (x.value)) + result |= 32; + } + { /* Pseudo-Denormal. */ + static memory_long_double x = + { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; + if (isinf (x.value) && !isinf (x.value)) + result |= 64; + } +#endif + + return result; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_isinfl_works=yes +else + gl_cv_func_isinfl_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isinfl_works" >&5 +$as_echo "$gl_cv_func_isinfl_works" >&6; } + + case "$gl_cv_func_isinfl_works" in + *yes) ;; + *) ISINF_LIBM=missing;; + esac fi fi - if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then - : - else - if test $HAVE_ISWBLANK = 0 || test $REPLACE_ISWBLANK = 1; then - : - fi + if test "$ac_cv_have_decl_isinf" != yes || + test "$ISINF_LIBM" = missing; then + REPLACE_ISINF=1 + ISINF_LIBM= fi - if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then - : - else - if test $HAVE_ISWBLANK = 0 || test $REPLACE_ISWBLANK = 1; then + if test $REPLACE_ISINF = 1; then @@ -38865,1714 +40883,2046 @@ - gl_LIBOBJS="$gl_LIBOBJS iswblank.$ac_objext" + gl_LIBOBJS="$gl_LIBOBJS isinf.$ac_objext" - fi fi - GNULIB_ISWBLANK=1 + GNULIB_ISINF=1 -$as_echo "#define GNULIB_TEST_ISWBLANK 1" >>confdefs.h +$as_echo "#define GNULIB_TEST_ISINF 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use Java" >&5 -$as_echo_n "checking whether to use Java... " >&6; } - # Check whether --enable-java was given. -if test "${enable_java+set}" = set; then : - enableval=$enable_java; JAVA_CHOICE="$enableval" -else - JAVA_CHOICE=yes -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVA_CHOICE" >&5 -$as_echo "$JAVA_CHOICE" >&6; } - if test "$JAVA_CHOICE" = yes; then - # Check whether --enable-native-java was given. -if test "${enable_native_java+set}" = set; then : - enableval=$enable_native_java; test "$enableval" != no || JAVA_CHOICE=bytecode -fi + + + + # If we replaced any of the underlying isnan* functions, replace + # the isnan macro; it undoubtedly suffers from the same flaws. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan macro works" >&5 +$as_echo_n "checking whether isnan macro works... " >&6; } + if test $gl_func_isnanf = yes \ + && test $gl_func_isnand = yes \ + && test $gl_func_isnanl = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + ISNAN_LIBM= + case " $ISNAN_LIBM " in + *" $ISNANF_LIBM "*) ;; + *) ISNAN_LIBM="$ISNAN_LIBM $ISNANF_LIBM" ;; + esac + case " $ISNAN_LIBM " in + *" $ISNAND_LIBM "*) ;; + *) ISNAN_LIBM="$ISNAN_LIBM $ISNAND_LIBM" ;; + esac + case " $ISNAN_LIBM " in + *" $ISNANL_LIBM "*) ;; + *) ISNAN_LIBM="$ISNAN_LIBM $ISNANL_LIBM" ;; + esac + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + REPLACE_ISNAN=1 + ISNAN_LIBM= fi - # You need to invoke gt_JAVACOMP yourself, possibly with arguments. - ac_config_files="$ac_config_files javacomp.sh:../build-aux/javacomp.sh.in" - # You need to invoke gt_JAVAEXEC yourself, possibly with arguments. - ac_config_files="$ac_config_files javaexec.sh:../build-aux/javaexec.sh.in" + GNULIB_ISNAN=1 +$as_echo "#define GNULIB_TEST_ISNAN 1" >>confdefs.h + ISNAND_LIBM= - if test $gl_cv_have_include_next = yes; then - gl_cv_next_langinfo_h='<'langinfo.h'>' - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_next_langinfo_h+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(double) can be used without linking with libm" >&5 +$as_echo_n "checking whether isnan(double) can be used without linking with libm... " >&6; } +if ${gl_cv_func_isnand_no_libm+:} false; then : $as_echo_n "(cached) " >&6 else - if test $ac_cv_header_langinfo_h = yes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #if __GNUC__ >= 4 + # undef isnand + # define isnand(x) __builtin_isnan ((double)(x)) + #else + # undef isnand + # define isnand(x) isnan ((double)(x)) + #endif + double x; +int +main () +{ +return isnand (x); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_isnand_no_libm=yes +else + gl_cv_func_isnand_no_libm=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnand_no_libm" >&5 +$as_echo "$gl_cv_func_isnand_no_libm" >&6; } + if test $gl_cv_func_isnand_no_libm = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(double) can be used with libm" >&5 +$as_echo_n "checking whether isnan(double) can be used with libm... " >&6; } +if ${gl_cv_func_isnand_in_libm+:} false; then : + $as_echo_n "(cached) " >&6 +else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + save_LIBS="$LIBS" + LIBS="$LIBS -lm" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include +#include + #if __GNUC__ >= 4 + # undef isnand + # define isnand(x) __builtin_isnan ((double)(x)) + #elif defined isnan + # undef isnand + # define isnand(x) isnan ((double)(x)) + #endif + double x; +int +main () +{ +return isnand (x); + ; + return 0; +} _ACEOF - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_isnand_in_libm=yes +else + gl_cv_func_isnand_in_libm=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$save_LIBS" - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; - esac - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'langinfo.h' \ - | sed -e "$gl_make_literal_regex_sed"` - gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ - s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ - s|^/[^/]|//&| - p - q - }' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnand_in_libm" >&5 +$as_echo "$gl_cv_func_isnand_in_libm" >&6; } - gl_cv_absolute_langinfo_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` + if test $gl_cv_func_isnand_in_libm = yes; then + ISNAND_LIBM=-lm + fi + fi + if test $gl_cv_func_isnand_no_libm = yes \ + || test $gl_cv_func_isnand_in_libm = yes; then + gl_func_isnand=yes + else + gl_func_isnand=no + HAVE_ISNAND=0 + fi - gl_header=$gl_cv_absolute_langinfo_h - gl_cv_next_langinfo_h='"'$gl_header'"' - else - gl_cv_next_langinfo_h='<'langinfo.h'>' - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_langinfo_h" >&5 -$as_echo "$gl_cv_next_langinfo_h" >&6; } - fi - NEXT_LANGINFO_H=$gl_cv_next_langinfo_h - if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' - gl_next_as_first_directive='<'langinfo.h'>' - else - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' - gl_next_as_first_directive=$gl_cv_next_langinfo_h - fi - NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H=$gl_next_as_first_directive + if test $HAVE_ISNAND = 0 || test $REPLACE_ISNAN = 1; then - HAVE_LANGINFO_CODESET=0 - HAVE_LANGINFO_T_FMT_AMPM=0 - HAVE_LANGINFO_ERA=0 - HAVE_LANGINFO_YESEXPR=0 - if test $ac_cv_header_langinfo_h = yes; then - HAVE_LANGINFO_H=1 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether langinfo.h defines CODESET" >&5 -$as_echo_n "checking whether langinfo.h defines CODESET... " >&6; } -if ${gl_cv_header_langinfo_codeset+:} false; then : + + + + gl_LIBOBJS="$gl_LIBOBJS isnand.$ac_objext" + + + + + fi + + + + + + GNULIB_ISNAND=1 + + + + + +$as_echo "#define GNULIB_TEST_ISNAND 1" >>confdefs.h + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(double) can be used without linking with libm" >&5 +$as_echo_n "checking whether isnan(double) can be used without linking with libm... " >&6; } +if ${gl_cv_func_isnand_no_libm+:} false; then : $as_echo_n "(cached) " >&6 else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int a = CODESET; + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #if __GNUC__ >= 4 + # undef isnand + # define isnand(x) __builtin_isnan ((double)(x)) + #else + # undef isnand + # define isnand(x) isnan ((double)(x)) + #endif + double x; int main () { - +return isnand (x); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_header_langinfo_codeset=yes +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_isnand_no_libm=yes else - gl_cv_header_langinfo_codeset=no + gl_cv_func_isnand_no_libm=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_langinfo_codeset" >&5 -$as_echo "$gl_cv_header_langinfo_codeset" >&6; } - if test $gl_cv_header_langinfo_codeset = yes; then - HAVE_LANGINFO_CODESET=1 - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether langinfo.h defines T_FMT_AMPM" >&5 -$as_echo_n "checking whether langinfo.h defines T_FMT_AMPM... " >&6; } -if ${gl_cv_header_langinfo_t_fmt_ampm+:} false; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnand_no_libm" >&5 +$as_echo "$gl_cv_func_isnand_no_libm" >&6; } + + gl_func_isnand_no_libm=$gl_cv_func_isnand_no_libm + if test $gl_cv_func_isnand_no_libm = yes; then + +$as_echo "#define HAVE_ISNAND_IN_LIBC 1" >>confdefs.h + + fi + + if test $gl_func_isnand_no_libm != yes; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS isnand.$ac_objext" + + + + + fi + + + ISNANF_LIBM= + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(float) can be used without linking with libm" >&5 +$as_echo_n "checking whether isnan(float) can be used without linking with libm... " >&6; } +if ${gl_cv_func_isnanf_no_libm+:} false; then : $as_echo_n "(cached) " >&6 else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int a = T_FMT_AMPM; + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #if __GNUC__ >= 4 + # undef isnanf + # define isnanf(x) __builtin_isnanf ((float)(x)) + #elif defined isnan + # undef isnanf + # define isnanf(x) isnan ((float)(x)) + #endif + float x; int main () { - +return isnanf (x); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_header_langinfo_t_fmt_ampm=yes +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_isnanf_no_libm=yes else - gl_cv_header_langinfo_t_fmt_ampm=no + gl_cv_func_isnanf_no_libm=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_langinfo_t_fmt_ampm" >&5 -$as_echo "$gl_cv_header_langinfo_t_fmt_ampm" >&6; } - if test $gl_cv_header_langinfo_t_fmt_ampm = yes; then - HAVE_LANGINFO_T_FMT_AMPM=1 - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether langinfo.h defines ERA" >&5 -$as_echo_n "checking whether langinfo.h defines ERA... " >&6; } -if ${gl_cv_header_langinfo_era+:} false; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanf_no_libm" >&5 +$as_echo "$gl_cv_func_isnanf_no_libm" >&6; } + + if test $gl_cv_func_isnanf_no_libm = no; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(float) can be used with libm" >&5 +$as_echo_n "checking whether isnan(float) can be used with libm... " >&6; } +if ${gl_cv_func_isnanf_in_libm+:} false; then : $as_echo_n "(cached) " >&6 else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int a = ERA; + save_LIBS="$LIBS" + LIBS="$LIBS -lm" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #if __GNUC__ >= 4 + # undef isnanf + # define isnanf(x) __builtin_isnanf ((float)(x)) + #elif defined isnan + # undef isnanf + # define isnanf(x) isnan ((float)(x)) + #endif + float x; int main () { - +return isnanf (x); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_header_langinfo_era=yes +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_isnanf_in_libm=yes else - gl_cv_header_langinfo_era=no + gl_cv_func_isnanf_in_libm=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_langinfo_era" >&5 -$as_echo "$gl_cv_header_langinfo_era" >&6; } - if test $gl_cv_header_langinfo_era = yes; then - HAVE_LANGINFO_ERA=1 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanf_in_libm" >&5 +$as_echo "$gl_cv_func_isnanf_in_libm" >&6; } + + if test $gl_cv_func_isnanf_in_libm = yes; then + ISNANF_LIBM=-lm fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether langinfo.h defines YESEXPR" >&5 -$as_echo_n "checking whether langinfo.h defines YESEXPR... " >&6; } -if ${gl_cv_header_langinfo_yesexpr+:} false; then : + fi + if test $gl_cv_func_isnanf_no_libm = yes \ + || test $gl_cv_func_isnanf_in_libm = yes; then + save_LIBS="$LIBS" + LIBS="$LIBS $ISNANF_LIBM" + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(float) works" >&5 +$as_echo_n "checking whether isnan(float) works... " >&6; } +if ${gl_cv_func_isnanf_works+:} false; then : $as_echo_n "(cached) " >&6 else + + if test "$cross_compiling" = yes; then : + case "$host_os" in + irix* | solaris*) gl_cv_func_isnanf_works="guessing no";; + *) gl_cv_func_isnanf_works="guessing yes";; + esac + +else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -int a = YESEXPR; -int -main () +#include +#if __GNUC__ >= 4 +# undef isnanf +# define isnanf(x) __builtin_isnanf ((float)(x)) +#elif defined isnan +# undef isnanf +# define isnanf(x) isnan ((float)(x)) +#endif +/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */ +#ifdef __DECC +static float +NaN () +{ + static float zero = 0.0f; + return zero / zero; +} +#else +# define NaN() (0.0f / 0.0f) +#endif +#define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { unsigned int word[NWORDS]; float value; } memory_float; +int main() { + int result = 0; - ; - return 0; + if (isnanf (1.0f / 0.0f)) + result |= 1; + + if (!isnanf (NaN ())) + result |= 2; + +#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT + /* The isnanf function should be immune against changes in the sign bit and + in the mantissa bits. The xor operation twiddles a bit that can only be + a sign bit or a mantissa bit. */ + if (FLT_EXPBIT0_WORD == 0 && FLT_EXPBIT0_BIT > 0) + { + memory_float m; + + m.value = NaN (); + /* Set the bits below the exponent to 01111...111. */ + m.word[0] &= -1U << FLT_EXPBIT0_BIT; + m.word[0] |= 1U << (FLT_EXPBIT0_BIT - 1) - 1; + if (!isnanf (m.value)) + result |= 4; + } +#endif + + return result; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_header_langinfo_yesexpr=yes +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_isnanf_works=yes else - gl_cv_header_langinfo_yesexpr=no + gl_cv_func_isnanf_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_langinfo_yesexpr" >&5 -$as_echo "$gl_cv_header_langinfo_yesexpr" >&6; } - if test $gl_cv_header_langinfo_yesexpr = yes; then - HAVE_LANGINFO_YESEXPR=1 - fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanf_works" >&5 +$as_echo "$gl_cv_func_isnanf_works" >&6; } + + LIBS="$save_LIBS" + case "$gl_cv_func_isnanf_works" in + *yes) gl_func_isnanf=yes ;; + *) gl_func_isnanf=no; ISNANF_LIBM= ;; + esac else - HAVE_LANGINFO_H=0 + gl_func_isnanf=no + fi + if test $gl_func_isnanf != yes; then + HAVE_ISNANF=0 fi + if test $HAVE_ISNANF = 0 || test $REPLACE_ISNAN = 1; then - for gl_func in nl_langinfo; do - as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 -$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } -if eval \${$as_gl_Symbol+:} false; then : + + + + + + + gl_LIBOBJS="$gl_LIBOBJS isnanf.$ac_objext" + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'float'" >&5 +$as_echo_n "checking where to find the exponent in a 'float'... " >&6; } +if ${gl_cv_cc_float_expbit0+:} false; then : $as_echo_n "(cached) " >&6 else + + if test "$cross_compiling" = yes; then : + gl_cv_cc_float_expbit0="word 0 bit 23" +else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -int -main () +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { float value; unsigned int word[NWORDS]; } memory_float; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (float x) { -#undef $gl_func - (void) $gl_func; - ; - return 0; + memory_float m; + size_t i; + /* Clear it first, in case + sizeof (float) < sizeof (memory_float). */ + memset (&m, 0, sizeof (memory_float)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25f); + add_to_ored_words (0.5f); + add_to_ored_words (1.0f); + add_to_ored_words (2.0f); + add_to_ored_words (4.0f); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); } + _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$as_gl_Symbol=yes" +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_float_expbit0=`cat conftest.out` else - eval "$as_gl_Symbol=no" + gl_cv_cc_float_expbit0="unknown" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -eval ac_res=\$$as_gl_Symbol - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 -_ACEOF - eval ac_cv_have_decl_$gl_func=yes + rm -f conftest.out + fi - done +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_float_expbit0" >&5 +$as_echo "$gl_cv_cc_float_expbit0" >&6; } + case "$gl_cv_cc_float_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'` +cat >>confdefs.h <<_ACEOF +#define FLT_EXPBIT0_WORD $word +_ACEOF +cat >>confdefs.h <<_ACEOF +#define FLT_EXPBIT0_BIT $bit +_ACEOF + ;; + esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included libcroco is requested" >&5 -$as_echo_n "checking whether included libcroco is requested... " >&6; } + fi -# Check whether --with-included-libcroco was given. -if test "${with_included_libcroco+set}" = set; then : - withval=$with_included_libcroco; gl_cv_libcroco_force_included=$withval + + + + + GNULIB_ISNANF=1 + + + + + +$as_echo "#define GNULIB_TEST_ISNANF 1" >>confdefs.h + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(float) can be used without linking with libm" >&5 +$as_echo_n "checking whether isnan(float) can be used without linking with libm... " >&6; } +if ${gl_cv_func_isnanf_no_libm+:} false; then : + $as_echo_n "(cached) " >&6 else - gl_cv_libcroco_force_included=no + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #if __GNUC__ >= 4 + # undef isnanf + # define isnanf(x) __builtin_isnanf ((float)(x)) + #elif defined isnan + # undef isnanf + # define isnanf(x) isnan ((float)(x)) + #endif + float x; +int +main () +{ +return isnanf (x); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_isnanf_no_libm=yes +else + gl_cv_func_isnanf_no_libm=no fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libcroco_force_included" >&5 -$as_echo "$gl_cv_libcroco_force_included" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanf_no_libm" >&5 +$as_echo "$gl_cv_func_isnanf_no_libm" >&6; } - gl_cv_libcroco_use_included="$gl_cv_libcroco_force_included" - LIBCROCO= - LTLIBCROCO= - INCCROCO= - if test "$gl_cv_libcroco_use_included" != yes; then - if ${gl_cv_libcroco+:} false; then : + if test $gl_cv_func_isnanf_no_libm = yes; then + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(float) works" >&5 +$as_echo_n "checking whether isnan(float) works... " >&6; } +if ${gl_cv_func_isnanf_works+:} false; then : $as_echo_n "(cached) " >&6 else - gl_cv_libcroco=no - gl_cv_LIBCROCO= - gl_cv_LTLIBCROCO= - gl_cv_INCCROCO= - gl_save_LIBS="$LIBS" + if test "$cross_compiling" = yes; then : + case "$host_os" in + irix* | solaris*) gl_cv_func_isnanf_works="guessing no";; + *) gl_cv_func_isnanf_works="guessing yes";; + esac +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if __GNUC__ >= 4 +# undef isnanf +# define isnanf(x) __builtin_isnanf ((float)(x)) +#elif defined isnan +# undef isnanf +# define isnanf(x) isnan ((float)(x)) +#endif +/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */ +#ifdef __DECC +static float +NaN () +{ + static float zero = 0.0f; + return zero / zero; +} +#else +# define NaN() (0.0f / 0.0f) +#endif +#define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { unsigned int word[NWORDS]; float value; } memory_float; +int main() +{ + int result = 0; + if (isnanf (1.0f / 0.0f)) + result |= 1; + if (!isnanf (NaN ())) + result |= 2; +#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT + /* The isnanf function should be immune against changes in the sign bit and + in the mantissa bits. The xor operation twiddles a bit that can only be + a sign bit or a mantissa bit. */ + if (FLT_EXPBIT0_WORD == 0 && FLT_EXPBIT0_BIT > 0) + { + memory_float m; + m.value = NaN (); + /* Set the bits below the exponent to 01111...111. */ + m.word[0] &= -1U << FLT_EXPBIT0_BIT; + m.word[0] |= 1U << (FLT_EXPBIT0_BIT - 1) - 1; + if (!isnanf (m.value)) + result |= 4; + } +#endif - use_additional=yes + return result; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_isnanf_works=yes +else + gl_cv_func_isnanf_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanf_works" >&5 +$as_echo "$gl_cv_func_isnanf_works" >&6; } - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" + fi + if test $gl_cv_func_isnanf_no_libm = yes \ + && { case "$gl_cv_func_isnanf_works" in + *yes) true;; + *) false;; + esac + }; then + gl_func_isnanf_no_libm=yes +$as_echo "#define HAVE_ISNANF_IN_LIBC 1" >>confdefs.h -# Check whether --with-libcroco-0.6-prefix was given. -if test "${with_libcroco_0_6_prefix+set}" = set; then : - withval=$with_libcroco_0_6_prefix; - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then + else + gl_func_isnanf_no_libm=no + fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" + if test $gl_func_isnanf_no_libm != yes; then - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - else - additional_includedir="$withval/include" - additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi - fi - fi -fi - LIBCROCO_0_6= - LTLIBCROCO_0_6= - INCCROCO_0_6= - LIBCROCO_0_6_PREFIX= - HAVE_LIBCROCO_0_6= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='croco-0.6 glib-2.0' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBCROCO_0_6="${LTLIBCROCO_0_6}${LTLIBCROCO_0_6:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - eval libname=\"$acl_libname_spec\" # typically: libname=lib$name - if test -n "$acl_shlibext"; then - shrext=".$acl_shlibext" # typically: shrext=.so - else - shrext= - fi - if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBCROCO_0_6; do - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBCROCO_0_6="${LTLIBCROCO_0_6}${LTLIBCROCO_0_6:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no \ - || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then - LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$acl_hardcode_direct" = yes; then - LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$found_so" - else - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then - LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBCROCO_0_6; do - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" + gl_LIBOBJS="$gl_LIBOBJS isnanf.$ac_objext" - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }-L$found_dir" - fi - if test "$acl_hardcode_minus_L" != no; then - LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$found_so" - else - LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$found_a" - else - LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */$acl_libdirstem | */$acl_libdirstem/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = 'croco-0.6'; then - LIBCROCO_0_6_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - */$acl_libdirstem2 | */$acl_libdirstem2/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = 'croco-0.6'; then - LIBCROCO_0_6_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCCROCO_0_6; do - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCCROCO_0_6="${INCCROCO_0_6}${INCCROCO_0_6:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBCROCO_0_6; do + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'float'" >&5 +$as_echo_n "checking where to find the exponent in a 'float'... " >&6; } +if ${gl_cv_cc_float_expbit0+:} false; then : + $as_echo_n "(cached) " >&6 +else - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" + if test "$cross_compiling" = yes; then : + gl_cv_cc_float_expbit0="word 0 bit 23" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBCROCO_0_6; do +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { float value; unsigned int word[NWORDS]; } memory_float; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (float x) +{ + memory_float m; + size_t i; + /* Clear it first, in case + sizeof (float) < sizeof (memory_float). */ + memset (&m, 0, sizeof (memory_float)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25f); + add_to_ored_words (0.5f); + add_to_ored_words (1.0f); + add_to_ored_words (2.0f); + add_to_ored_words (4.0f); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); +} - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_float_expbit0=`cat conftest.out` +else + gl_cv_cc_float_expbit0="unknown" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + rm -f conftest.out + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_float_expbit0" >&5 +$as_echo "$gl_cv_cc_float_expbit0" >&6; } + case "$gl_cv_cc_float_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'` + +cat >>confdefs.h <<_ACEOF +#define FLT_EXPBIT0_WORD $word +_ACEOF - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBCROCO_0_6="${LTLIBCROCO_0_6}${LTLIBCROCO_0_6:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$dep" - LTLIBCROCO_0_6="${LTLIBCROCO_0_6}${LTLIBCROCO_0_6:+ }$dep" - ;; - esac - done - fi - else - LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }-l$name" - LTLIBCROCO_0_6="${LTLIBCROCO_0_6}${LTLIBCROCO_0_6:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$acl_hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBCROCO_0_6="${LTLIBCROCO_0_6}${LTLIBCROCO_0_6:+ }-R$found_dir" - done - fi +cat >>confdefs.h <<_ACEOF +#define FLT_EXPBIT0_BIT $bit +_ACEOF + ;; + esac + fi - LIBS="$gl_save_LIBS $LIBCROCO_0_6" + ISNANL_LIBM= + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(long double) can be used without linking with libm" >&5 +$as_echo_n "checking whether isnan(long double) can be used without linking with libm... " >&6; } +if ${gl_cv_func_isnanl_no_libm+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include +#include + #if __GNUC__ >= 4 + # undef isnanl + # define isnanl(x) __builtin_isnanl ((long double)(x)) + #elif defined isnan + # undef isnanl + # define isnanl(x) isnan ((long double)(x)) + #endif + long double x; int main () { -const char *version = LIBCROCO_VERSION; return !version; +return isnanl (x); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - gl_cv_libcroco=yes - gl_cv_LIBCROCO="$LIBCROCO_0_6" - gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6" - + gl_cv_func_isnanl_no_libm=yes +else + gl_cv_func_isnanl_no_libm=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - if test "$gl_cv_libcroco" != yes; then - gl_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCCROCO_0_6" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -const char *version = LIBCROCO_VERSION; return !version; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_cv_libcroco=yes - gl_cv_LIBCROCO="$LIBCROCO_0_6" - gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6" - gl_cv_INCCROCO="$INCCROCO_0_6" fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$gl_cv_libcroco" != yes; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanl_no_libm" >&5 +$as_echo "$gl_cv_func_isnanl_no_libm" >&6; } + + if test $gl_cv_func_isnanl_no_libm = no; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(long double) can be used with libm" >&5 +$as_echo_n "checking whether isnan(long double) can be used with libm... " >&6; } +if ${gl_cv_func_isnanl_in_libm+:} false; then : + $as_echo_n "(cached) " >&6 +else + + save_LIBS="$LIBS" + LIBS="$LIBS -lm" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include +#include + #if __GNUC__ >= 4 + # undef isnanl + # define isnanl(x) __builtin_isnanl ((long double)(x)) + #elif defined isnan + # undef isnanl + # define isnanl(x) isnan ((long double)(x)) + #endif + long double x; int main () { -const char *version = LIBCROCO_VERSION; return !version; +return isnanl (x); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h+:} false; then : - $as_echo_n "(cached) " >&6 + gl_cv_func_isnanl_in_libm=yes else - if test $ac_cv_header_libcroco_0_6_libcroco_libcroco_config_h = yes; then + gl_cv_func_isnanl_in_libm=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanl_in_libm" >&5 +$as_echo "$gl_cv_func_isnanl_in_libm" >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac + if test $gl_cv_func_isnanl_in_libm = yes; then + ISNANL_LIBM=-lm + fi + fi + if test $gl_cv_func_isnanl_no_libm = yes \ + || test $gl_cv_func_isnanl_in_libm = yes; then + save_LIBS="$LIBS" + LIBS="$LIBS $ISNANL_LIBM" - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; - esac - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'libcroco-0.6/libcroco/libcroco-config.h' \ - | sed -e "$gl_make_literal_regex_sed"` - gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ - s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ - s|^/[^/]|//&| - p - q - }' - gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" >&5 -$as_echo "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" >&6; } -cat >>confdefs.h <<_ACEOF -#define ABSOLUTE_LIBCROCO_0_6_LIBCROCO_LIBCROCO_CONFIG_H "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" -_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnanl works" >&5 +$as_echo_n "checking whether isnanl works... " >&6; } +if ${gl_cv_func_isnanl_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + gl_cv_func_isnanl_works="guessing yes" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ - libcroco_include_dir=`echo "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" | sed -e 's,.libcroco-config\.h$,,'` - if test -d "$libcroco_include_dir"; then - gl_cv_libcroco=yes - gl_cv_LIBCROCO="$LIBCROCO_0_6" - gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6" - gl_cv_INCCROCO="-I$libcroco_include_dir" - fi +#include +#include +#include +#if __GNUC__ >= 4 +# undef isnanl +# define isnanl(x) __builtin_isnanl ((long double)(x)) +#elif defined isnan +# undef isnanl +# define isnanl(x) isnan ((long double)(x)) +#endif +#define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { unsigned int word[NWORDS]; long double value; } + memory_long_double; +/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the + runtime type conversion. */ +#ifdef __sgi +static long double NaNl () +{ + double zero = 0.0; + return zero / zero; +} +#else +# define NaNl() (0.0L / 0.0L) +#endif +int main () +{ + int result = 0; + + if (!isnanl (NaNl ())) + result |= 1; + + { + memory_long_double m; + unsigned int i; + + /* The isnanl function should be immune against changes in the sign bit and + in the mantissa bits. The xor operation twiddles a bit that can only be + a sign bit or a mantissa bit (since the exponent never extends to + bit 31). */ + m.value = NaNl (); + m.word[NWORDS / 2] ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); + for (i = 0; i < NWORDS; i++) + m.word[i] |= 1; + if (!isnanl (m.value)) + result |= 1; + } + +#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE +/* Representation of an 80-bit 'long double' as an initializer for a sequence + of 'unsigned int' words. */ +# ifdef WORDS_BIGENDIAN +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ + ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \ + (unsigned int) (mantlo) << 16 \ + } +# else +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { mantlo, manthi, exponent } +# endif + { /* Quiet NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; + if (!isnanl (x.value)) + result |= 2; + } + { + /* Signalling NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; + if (!isnanl (x.value)) + result |= 2; + } + /* isnanl should return something even for noncanonical values. */ + { /* Pseudo-NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 4; + } + { /* Pseudo-Infinity. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 8; + } + { /* Pseudo-Zero. */ + static memory_long_double x = + { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 16; + } + { /* Unnormalized number. */ + static memory_long_double x = + { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 32; + } + { /* Pseudo-Denormal. */ + static memory_long_double x = + { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 64; + } +#endif + return result; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_isnanl_works=yes +else + gl_cv_func_isnanl_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - fi - CPPFLAGS="$gl_save_CPPFLAGS" - fi - LIBS="$gl_save_LIBS" + fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanl_works" >&5 +$as_echo "$gl_cv_func_isnanl_works" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libcroco" >&5 -$as_echo_n "checking for libcroco... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libcroco" >&5 -$as_echo "$gl_cv_libcroco" >&6; } - if test $gl_cv_libcroco = yes; then - LIBCROCO="$gl_cv_LIBCROCO" - LTLIBCROCO="$gl_cv_LTLIBCROCO" - INCCROCO="$gl_cv_INCCROCO" - else - gl_cv_libcroco_use_included=yes - fi + LIBS="$save_LIBS" + case "$gl_cv_func_isnanl_works" in + *yes) gl_func_isnanl=yes ;; + *) gl_func_isnanl=no; ISNANL_LIBM= ;; + esac + else + gl_func_isnanl=no + fi + if test $gl_func_isnanl != yes; then + HAVE_ISNANL=0 fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the included libcroco" >&5 -$as_echo_n "checking whether to use the included libcroco... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libcroco_use_included" >&5 -$as_echo "$gl_cv_libcroco_use_included" >&6; } - if test "$gl_cv_libcroco_use_included" = yes; then - INCLUDED_LIBCROCO_TRUE= - INCLUDED_LIBCROCO_FALSE='#' -else - INCLUDED_LIBCROCO_TRUE='#' - INCLUDED_LIBCROCO_FALSE= -fi + if test $HAVE_ISNANL = 0 || test $REPLACE_ISNAN = 1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included glib is requested" >&5 -$as_echo_n "checking whether included glib is requested... " >&6; } -# Check whether --with-included-glib was given. -if test "${with_included_glib+set}" = set; then : - withval=$with_included_glib; gl_cv_libglib_force_included=$withval -else - gl_cv_libglib_force_included=no -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libglib_force_included" >&5 -$as_echo "$gl_cv_libglib_force_included" >&6; } - gl_cv_libglib_use_included="$gl_cv_libglib_force_included" - LIBGLIB= - LTLIBGLIB= - INCGLIB= - if test "$gl_cv_libglib_use_included" != yes; then - if ${gl_cv_libglib+:} false; then : + + + + gl_LIBOBJS="$gl_LIBOBJS isnanl.$ac_objext" + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'long double'" >&5 +$as_echo_n "checking where to find the exponent in a 'long double'... " >&6; } +if ${gl_cv_cc_long_double_expbit0+:} false; then : $as_echo_n "(cached) " >&6 else - gl_cv_libglib=no - gl_cv_LIBGLIB= - gl_cv_LTLIBGLIB= - gl_cv_INCGLIB= - gl_save_LIBS="$LIBS" + if test "$cross_compiling" = yes; then : + gl_cv_cc_long_double_expbit0="unknown" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { long double value; unsigned int word[NWORDS]; } + memory_long_double; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (long double x) +{ + memory_long_double m; + size_t i; + /* Clear it first, in case + sizeof (long double) < sizeof (memory_long_double). */ + memset (&m, 0, sizeof (memory_long_double)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25L); + add_to_ored_words (0.5L); + add_to_ored_words (1.0L); + add_to_ored_words (2.0L); + add_to_ored_words (4.0L); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_long_double_expbit0=`cat conftest.out` +else + gl_cv_cc_long_double_expbit0="unknown" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + rm -f conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_long_double_expbit0" >&5 +$as_echo "$gl_cv_cc_long_double_expbit0" >&6; } + case "$gl_cv_cc_long_double_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word.*bit //'` - use_additional=yes +cat >>confdefs.h <<_ACEOF +#define LDBL_EXPBIT0_WORD $word +_ACEOF - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" +cat >>confdefs.h <<_ACEOF +#define LDBL_EXPBIT0_BIT $bit +_ACEOF - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" + ;; + esac -# Check whether --with-libglib-2.0-prefix was given. -if test "${with_libglib_2_0_prefix+set}" = set; then : - withval=$with_libglib_2_0_prefix; - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" + fi - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - else - additional_includedir="$withval/include" - additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi - fi - fi -fi - LIBGLIB_2_0= - LTLIBGLIB_2_0= - INCGLIB_2_0= - LIBGLIB_2_0_PREFIX= - HAVE_LIBGLIB_2_0= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='glib-2.0 ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - eval libname=\"$acl_libname_spec\" # typically: libname=lib$name - if test -n "$acl_shlibext"; then - shrext=".$acl_shlibext" # typically: shrext=.so - else - shrext= - fi - if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBGLIB_2_0; do + GNULIB_ISNANL=1 - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no \ - || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$acl_hardcode_direct" = yes; then - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_so" - else - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBGLIB_2_0; do - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-L$found_dir" - fi - if test "$acl_hardcode_minus_L" != no; then - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_so" - else - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_a" - else - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */$acl_libdirstem | */$acl_libdirstem/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = 'glib-2.0'; then - LIBGLIB_2_0_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - */$acl_libdirstem2 | */$acl_libdirstem2/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = 'glib-2.0'; then - LIBGLIB_2_0_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCGLIB_2_0; do - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCGLIB_2_0="${INCGLIB_2_0}${INCGLIB_2_0:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBGLIB_2_0; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBGLIB_2_0; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$dep" - LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }$dep" - ;; - esac - done - fi - else - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-l$name" - LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$acl_hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }-R$found_dir" - done - fi +$as_echo "#define GNULIB_TEST_ISNANL 1" >>confdefs.h + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(long double) can be used without linking with libm" >&5 +$as_echo_n "checking whether isnan(long double) can be used without linking with libm... " >&6; } +if ${gl_cv_func_isnanl_no_libm+:} false; then : + $as_echo_n "(cached) " >&6 +else - LIBS="$gl_save_LIBS $LIBGLIB_2_0" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#ifndef G_BEGIN_DECLS -error this glib.h includes a glibconfig.h from a glib version 1.x -#endif - +#include + #if __GNUC__ >= 4 + # undef isnanl + # define isnanl(x) __builtin_isnanl ((long double)(x)) + #elif defined isnan + # undef isnanl + # define isnanl(x) isnan ((long double)(x)) + #endif + long double x; int main () { -g_string_new ("foo"); +return isnanl (x); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - gl_cv_libglib=yes - gl_cv_LIBGLIB="$LIBGLIB_2_0" - gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0" - + gl_cv_func_isnanl_no_libm=yes +else + gl_cv_func_isnanl_no_libm=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - if test "$gl_cv_libglib" != yes; then - gl_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCGLIB_2_0" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanl_no_libm" >&5 +$as_echo "$gl_cv_func_isnanl_no_libm" >&6; } + + gl_func_isnanl_no_libm=$gl_cv_func_isnanl_no_libm + if test $gl_func_isnanl_no_libm = yes; then + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnanl works" >&5 +$as_echo_n "checking whether isnanl works... " >&6; } +if ${gl_cv_func_isnanl_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + gl_cv_func_isnanl_works="guessing yes" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#ifndef G_BEGIN_DECLS -error this glib.h includes a glibconfig.h from a glib version 1.x -#endif -int -main () +#include +#include +#include +#if __GNUC__ >= 4 +# undef isnanl +# define isnanl(x) __builtin_isnanl ((long double)(x)) +#elif defined isnan +# undef isnanl +# define isnanl(x) isnan ((long double)(x)) +#endif +#define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { unsigned int word[NWORDS]; long double value; } + memory_long_double; +/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the + runtime type conversion. */ +#ifdef __sgi +static long double NaNl () { -g_string_new ("foo"); - ; - return 0; + double zero = 0.0; + return zero / zero; +} +#else +# define NaNl() (0.0L / 0.0L) +#endif +int main () +{ + int result = 0; + + if (!isnanl (NaNl ())) + result |= 1; + + { + memory_long_double m; + unsigned int i; + + /* The isnanl function should be immune against changes in the sign bit and + in the mantissa bits. The xor operation twiddles a bit that can only be + a sign bit or a mantissa bit (since the exponent never extends to + bit 31). */ + m.value = NaNl (); + m.word[NWORDS / 2] ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); + for (i = 0; i < NWORDS; i++) + m.word[i] |= 1; + if (!isnanl (m.value)) + result |= 1; + } + +#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE +/* Representation of an 80-bit 'long double' as an initializer for a sequence + of 'unsigned int' words. */ +# ifdef WORDS_BIGENDIAN +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ + ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \ + (unsigned int) (mantlo) << 16 \ + } +# else +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { mantlo, manthi, exponent } +# endif + { /* Quiet NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; + if (!isnanl (x.value)) + result |= 2; + } + { + /* Signalling NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; + if (!isnanl (x.value)) + result |= 2; + } + /* isnanl should return something even for noncanonical values. */ + { /* Pseudo-NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 4; + } + { /* Pseudo-Infinity. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 8; + } + { /* Pseudo-Zero. */ + static memory_long_double x = + { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 16; + } + { /* Unnormalized number. */ + static memory_long_double x = + { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 32; + } + { /* Pseudo-Denormal. */ + static memory_long_double x = + { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 64; + } +#endif + + return result; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_cv_libglib=yes - gl_cv_LIBGLIB="$LIBGLIB_2_0" - gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0" - gl_cv_INCGLIB="$INCGLIB_2_0" +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_isnanl_works=yes +else + gl_cv_func_isnanl_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$gl_cv_libglib" != yes; then - if test -n "$LIBGLIB_2_0_PREFIX"; then - CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanl_works" >&5 +$as_echo "$gl_cv_func_isnanl_works" >&6; } + + case "$gl_cv_func_isnanl_works" in + *yes) ;; + *) gl_func_isnanl_no_libm=no ;; + esac + fi + if test $gl_func_isnanl_no_libm = yes; then + +$as_echo "#define HAVE_ISNANL_IN_LIBC 1" >>confdefs.h + + fi + + if test $gl_func_isnanl_no_libm != yes; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS isnanl.$ac_objext" + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'long double'" >&5 +$as_echo_n "checking where to find the exponent in a 'long double'... " >&6; } +if ${gl_cv_cc_long_double_expbit0+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + + gl_cv_cc_long_double_expbit0="unknown" + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#ifndef G_BEGIN_DECLS -error this glib.h includes a glibconfig.h from a glib version 1.x -#endif -int -main () +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { long double value; unsigned int word[NWORDS]; } + memory_long_double; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (long double x) { -g_string_new ("foo"); - ; - return 0; + memory_long_double m; + size_t i; + /* Clear it first, in case + sizeof (long double) < sizeof (memory_long_double). */ + memset (&m, 0, sizeof (memory_long_double)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25L); + add_to_ored_words (0.5L); + add_to_ored_words (1.0L); + add_to_ored_words (2.0L); + add_to_ored_words (4.0L); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); } + _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_cv_libglib=yes - gl_cv_LIBGLIB="$LIBGLIB_2_0" - gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0" - gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include" +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_long_double_expbit0=`cat conftest.out` +else + gl_cv_cc_long_double_expbit0="unknown" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + rm -f conftest.out fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - fi - fi - CPPFLAGS="$gl_save_CPPFLAGS" - fi - LIBS="$gl_save_LIBS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_long_double_expbit0" >&5 +$as_echo "$gl_cv_cc_long_double_expbit0" >&6; } + case "$gl_cv_cc_long_double_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word.*bit //'` + +cat >>confdefs.h <<_ACEOF +#define LDBL_EXPBIT0_WORD $word +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define LDBL_EXPBIT0_BIT $bit +_ACEOF + + ;; + esac + + + + fi + + + + + + ac_fn_c_check_decl "$LINENO" "iswblank" "ac_cv_have_decl_iswblank" " +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be included + before . */ +#include +#include +#include +#include +#include +" +if test "x$ac_cv_have_decl_iswblank" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for glib" >&5 -$as_echo_n "checking for glib... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libglib" >&5 -$as_echo "$gl_cv_libglib" >&6; } - if test $gl_cv_libglib = yes; then - LIBGLIB="$gl_cv_LIBGLIB" - LTLIBGLIB="$gl_cv_LTLIBGLIB" - INCGLIB="$gl_cv_INCGLIB" - else - gl_cv_libglib_use_included=yes +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_ISWBLANK $ac_have_decl +_ACEOF + + if test $ac_cv_func_iswblank = no; then + HAVE_ISWBLANK=0 + if test $ac_cv_have_decl_iswblank = yes; then + REPLACE_ISWBLANK=1 + fi + fi + if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then + : + else + if test $HAVE_ISWBLANK = 0 || test $REPLACE_ISWBLANK = 1; then + : fi fi + if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then + : + else + if test $HAVE_ISWBLANK = 0 || test $REPLACE_ISWBLANK = 1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the included glib" >&5 -$as_echo_n "checking whether to use the included glib... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libglib_use_included" >&5 -$as_echo "$gl_cv_libglib_use_included" >&6; } - if test "$gl_cv_libglib_use_included" = yes; then - LIBGLIB_H= - LIBGLIB_H="$LIBGLIB_H glib.h" - LIBGLIB_H="$LIBGLIB_H glibconfig.h" - LIBGLIB_H="$LIBGLIB_H glib/ghash.h" - LIBGLIB_H="$LIBGLIB_H glib/glist.h" - LIBGLIB_H="$LIBGLIB_H glib/gprimes.h" - LIBGLIB_H="$LIBGLIB_H glib/gstrfuncs.h" - LIBGLIB_H="$LIBGLIB_H glib/gstring.h" - LIBGLIB_H="$LIBGLIB_H glib/gtypes.h" - for ac_header in unistd.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" -if test "x$ac_cv_header_unistd_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_UNISTD_H 1 -_ACEOF -fi -done - else - LIBGLIB_H= + + + gl_LIBOBJS="$gl_LIBOBJS iswblank.$ac_objext" + + fi fi - if test "$gl_cv_libglib_use_included" = yes; then - INCLUDED_LIBGLIB_TRUE= - INCLUDED_LIBGLIB_FALSE='#' -else - INCLUDED_LIBGLIB_TRUE='#' - INCLUDED_LIBGLIB_FALSE= -fi + GNULIB_ISWBLANK=1 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the included libunistring" >&5 -$as_echo_n "checking whether to use the included libunistring... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_libunistring_use_included" >&5 -$as_echo "$gl_libunistring_use_included" >&6; } +$as_echo "#define GNULIB_TEST_ISWBLANK 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included libxml is requested" >&5 -$as_echo_n "checking whether included libxml is requested... " >&6; } -# Check whether --with-included-libxml was given. -if test "${with_included_libxml+set}" = set; then : - withval=$with_included_libxml; gl_cv_libxml_force_included=$withval + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use Java" >&5 +$as_echo_n "checking whether to use Java... " >&6; } + # Check whether --enable-java was given. +if test "${enable_java+set}" = set; then : + enableval=$enable_java; JAVA_CHOICE="$enableval" else - gl_cv_libxml_force_included=no + JAVA_CHOICE=yes fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libxml_force_included" >&5 -$as_echo "$gl_cv_libxml_force_included" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVA_CHOICE" >&5 +$as_echo "$JAVA_CHOICE" >&6; } + if test "$JAVA_CHOICE" = yes; then + # Check whether --enable-native-java was given. +if test "${enable_native_java+set}" = set; then : + enableval=$enable_native_java; test "$enableval" != no || JAVA_CHOICE=bytecode +fi - gl_cv_libxml_use_included="$gl_cv_libxml_force_included" - LIBXML= - LTLIBXML= - INCXML= - if test "$gl_cv_libxml_use_included" != yes; then - if ${gl_cv_libxml+:} false; then : - $as_echo_n "(cached) " >&6 -else + fi - gl_cv_libxml=no - gl_cv_LIBXML= - gl_cv_LTLIBXML= - gl_cv_INCXML= - gl_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" + # You need to invoke gt_JAVACOMP yourself, possibly with arguments. + ac_config_files="$ac_config_files javacomp.sh:../build-aux/javacomp.sh.in" + # You need to invoke gt_JAVAEXEC yourself, possibly with arguments. + ac_config_files="$ac_config_files javaexec.sh:../build-aux/javaexec.sh.in" - use_additional=yes - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" -# Check whether --with-libxml2-prefix was given. -if test "${with_libxml2_prefix+set}" = set; then : - withval=$with_libxml2_prefix; - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - else - additional_includedir="$withval/include" - additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi - fi - fi -fi + if test $gl_cv_have_include_next = yes; then + gl_cv_next_langinfo_h='<'langinfo.h'>' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if ${gl_cv_next_langinfo_h+:} false; then : + $as_echo_n "(cached) " >&6 +else - LIBXML2= - LTLIBXML2= - INCXML2= - LIBXML2_PREFIX= - HAVE_LIBXML2= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='xml2 ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then + if test $ac_cv_header_langinfo_h = yes; then + + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac + + case "$host_os" in + mingw*) + gl_dirsep_regex='[/\\]' + ;; + *) + gl_dirsep_regex='\/' + ;; + esac + gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' + gl_header_literal_regex=`echo 'langinfo.h' \ + | sed -e "$gl_make_literal_regex_sed"` + gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ + s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ + s|^/[^/]|//&| + p + q + }' + + gl_cv_absolute_langinfo_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n "$gl_absolute_header_sed"` + + gl_header=$gl_cv_absolute_langinfo_h + gl_cv_next_langinfo_h='"'$gl_header'"' + else + gl_cv_next_langinfo_h='<'langinfo.h'>' + fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_langinfo_h" >&5 +$as_echo "$gl_cv_next_langinfo_h" >&6; } + fi + NEXT_LANGINFO_H=$gl_cv_next_langinfo_h + + if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' + gl_next_as_first_directive='<'langinfo.h'>' + else + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' + gl_next_as_first_directive=$gl_cv_next_langinfo_h + fi + NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H=$gl_next_as_first_directive + + + + + + HAVE_LANGINFO_CODESET=0 + HAVE_LANGINFO_T_FMT_AMPM=0 + HAVE_LANGINFO_ERA=0 + HAVE_LANGINFO_YESEXPR=0 + + if test $ac_cv_header_langinfo_h = yes; then + HAVE_LANGINFO_H=1 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether langinfo.h defines CODESET" >&5 +$as_echo_n "checking whether langinfo.h defines CODESET... " >&6; } +if ${gl_cv_header_langinfo_codeset+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int a = CODESET; + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_header_langinfo_codeset=yes +else + gl_cv_header_langinfo_codeset=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_langinfo_codeset" >&5 +$as_echo "$gl_cv_header_langinfo_codeset" >&6; } + if test $gl_cv_header_langinfo_codeset = yes; then + HAVE_LANGINFO_CODESET=1 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether langinfo.h defines T_FMT_AMPM" >&5 +$as_echo_n "checking whether langinfo.h defines T_FMT_AMPM... " >&6; } +if ${gl_cv_header_langinfo_t_fmt_ampm+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int a = T_FMT_AMPM; + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_header_langinfo_t_fmt_ampm=yes +else + gl_cv_header_langinfo_t_fmt_ampm=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_langinfo_t_fmt_ampm" >&5 +$as_echo "$gl_cv_header_langinfo_t_fmt_ampm" >&6; } + if test $gl_cv_header_langinfo_t_fmt_ampm = yes; then + HAVE_LANGINFO_T_FMT_AMPM=1 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether langinfo.h defines ERA" >&5 +$as_echo_n "checking whether langinfo.h defines ERA... " >&6; } +if ${gl_cv_header_langinfo_era+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int a = ERA; + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_header_langinfo_era=yes +else + gl_cv_header_langinfo_era=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_langinfo_era" >&5 +$as_echo "$gl_cv_header_langinfo_era" >&6; } + if test $gl_cv_header_langinfo_era = yes; then + HAVE_LANGINFO_ERA=1 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether langinfo.h defines YESEXPR" >&5 +$as_echo_n "checking whether langinfo.h defines YESEXPR... " >&6; } +if ${gl_cv_header_langinfo_yesexpr+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int a = YESEXPR; + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_header_langinfo_yesexpr=yes +else + gl_cv_header_langinfo_yesexpr=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_langinfo_yesexpr" >&5 +$as_echo "$gl_cv_header_langinfo_yesexpr" >&6; } + if test $gl_cv_header_langinfo_yesexpr = yes; then + HAVE_LANGINFO_YESEXPR=1 + fi + else + HAVE_LANGINFO_H=0 + fi + + + + + + + + for gl_func in nl_langinfo; do + as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 +$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } +if eval \${$as_gl_Symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#undef $gl_func + (void) $gl_func; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_gl_Symbol=yes" +else + eval "$as_gl_Symbol=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$as_gl_Symbol + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 +_ACEOF + + eval ac_cv_have_decl_$gl_func=yes +fi + done + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included libcroco is requested" >&5 +$as_echo_n "checking whether included libcroco is requested... " >&6; } + +# Check whether --with-included-libcroco was given. +if test "${with_included_libcroco+set}" = set; then : + withval=$with_included_libcroco; gl_cv_libcroco_force_included=$withval +else + gl_cv_libcroco_force_included=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libcroco_force_included" >&5 +$as_echo "$gl_cv_libcroco_force_included" >&6; } + + gl_cv_libcroco_use_included="$gl_cv_libcroco_force_included" + LIBCROCO= + LTLIBCROCO= + INCCROCO= + if test "$gl_cv_libcroco_use_included" != yes; then + if ${gl_cv_libcroco+:} false; then : + $as_echo_n "(cached) " >&6 +else + + gl_cv_libcroco=no + gl_cv_LIBCROCO= + gl_cv_LTLIBCROCO= + gl_cv_INCCROCO= + gl_save_LIBS="$LIBS" + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libcroco-0.6-prefix was given. +if test "${with_libcroco_0_6_prefix+set}" = set; then : + withval=$with_libcroco_0_6_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBCROCO_0_6= + LTLIBCROCO_0_6= + INCCROCO_0_6= + LIBCROCO_0_6_PREFIX= + HAVE_LIBCROCO_0_6= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='croco-0.6 glib-2.0' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" - test -z "$value" || LIBXML2="${LIBXML2}${LIBXML2:+ }$value" + test -z "$value" || LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$value" eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBXML2="${LTLIBXML2}${LTLIBXML2:+ }$value" + test -z "$value" || LTLIBCROCO_0_6="${LTLIBCROCO_0_6}${LTLIBCROCO_0_6:+ }$value" else : fi @@ -40629,7 +42979,7 @@ fi fi if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBXML2; do + for x in $LDFLAGS $LTLIBCROCO_0_6; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" @@ -40688,12 +43038,12 @@ done fi if test "X$found_dir" != "X"; then - LTLIBXML2="${LTLIBXML2}${LTLIBXML2:+ }-L$found_dir -l$name" + LTLIBCROCO_0_6="${LTLIBCROCO_0_6}${LTLIBCROCO_0_6:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then - LIBXML2="${LIBXML2}${LIBXML2:+ }$found_so" + LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$found_so" else haveit= for x in $ltrpathdirs; do @@ -40706,10 +43056,10 @@ ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then - LIBXML2="${LIBXML2}${LIBXML2:+ }$found_so" + LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then - LIBXML2="${LIBXML2}${LIBXML2:+ }$found_so" + LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then @@ -40722,7 +43072,7 @@ fi else haveit= - for x in $LDFLAGS $LIBXML2; do + for x in $LDFLAGS $LIBCROCO_0_6; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" @@ -40738,36 +43088,36 @@ fi done if test -z "$haveit"; then - LIBXML2="${LIBXML2}${LIBXML2:+ }-L$found_dir" + LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then - LIBXML2="${LIBXML2}${LIBXML2:+ }$found_so" + LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$found_so" else - LIBXML2="${LIBXML2}${LIBXML2:+ }-l$name" + LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then - LIBXML2="${LIBXML2}${LIBXML2:+ }$found_a" + LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$found_a" else - LIBXML2="${LIBXML2}${LIBXML2:+ }-L$found_dir -l$name" + LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = 'xml2'; then - LIBXML2_PREFIX="$basedir" + if test "$name" = 'croco-0.6'; then + LIBCROCO_0_6_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = 'xml2'; then - LIBXML2_PREFIX="$basedir" + if test "$name" = 'croco-0.6'; then + LIBCROCO_0_6_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; @@ -40783,7 +43133,7 @@ fi fi if test -z "$haveit"; then - for x in $CPPFLAGS $INCXML2; do + for x in $CPPFLAGS $INCCROCO_0_6; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" @@ -40800,7 +43150,7 @@ done if test -z "$haveit"; then if test -d "$additional_includedir"; then - INCXML2="${INCXML2}${INCXML2:+ }-I$additional_includedir" + INCCROCO_0_6="${INCCROCO_0_6}${INCCROCO_0_6:+ }-I$additional_includedir" fi fi fi @@ -40830,7 +43180,7 @@ fi if test -z "$haveit"; then haveit= - for x in $LDFLAGS $LIBXML2; do + for x in $LDFLAGS $LIBCROCO_0_6; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" @@ -40847,11 +43197,11 @@ done if test -z "$haveit"; then if test -d "$additional_libdir"; then - LIBXML2="${LIBXML2}${LIBXML2:+ }-L$additional_libdir" + LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }-L$additional_libdir" fi fi haveit= - for x in $LDFLAGS $LTLIBXML2; do + for x in $LDFLAGS $LTLIBCROCO_0_6; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" @@ -40868,7 +43218,7 @@ done if test -z "$haveit"; then if test -d "$additional_libdir"; then - LTLIBXML2="${LTLIBXML2}${LTLIBXML2:+ }-L$additional_libdir" + LTLIBCROCO_0_6="${LTLIBCROCO_0_6}${LTLIBCROCO_0_6:+ }-L$additional_libdir" fi fi fi @@ -40906,15 +43256,15 @@ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) - LIBXML2="${LIBXML2}${LIBXML2:+ }$dep" - LTLIBXML2="${LTLIBXML2}${LTLIBXML2:+ }$dep" + LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$dep" + LTLIBCROCO_0_6="${LTLIBCROCO_0_6}${LTLIBCROCO_0_6:+ }$dep" ;; esac done fi else - LIBXML2="${LIBXML2}${LIBXML2:+ }-l$name" - LTLIBXML2="${LTLIBXML2}${LTLIBXML2:+ }-l$name" + LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }-l$name" + LTLIBCROCO_0_6="${LTLIBCROCO_0_6}${LTLIBCROCO_0_6:+ }-l$name" fi fi fi @@ -40930,20 +43280,20 @@ libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" - LIBXML2="${LIBXML2}${LIBXML2:+ }$flag" + LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" - LIBXML2="${LIBXML2}${LIBXML2:+ }$flag" + LIBCROCO_0_6="${LIBCROCO_0_6}${LIBCROCO_0_6:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do - LTLIBXML2="${LTLIBXML2}${LTLIBXML2:+ }-R$found_dir" + LTLIBCROCO_0_6="${LTLIBCROCO_0_6}${LTLIBCROCO_0_6:+ }-R$found_dir" done fi @@ -40952,72 +43302,74 @@ - LIBS="$gl_save_LIBS $LIBXML2 $LIBICONV" + LIBS="$gl_save_LIBS $LIBCROCO_0_6" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include - #include - +#include int main () { -xmlCheckVersion (0); xmlFree ((void *) 0); +const char *version = LIBCROCO_VERSION; return !version; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - gl_cv_libxml=yes - gl_cv_LIBXML="$LIBXML2 $LIBICONV" - gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV" + gl_cv_libcroco=yes + gl_cv_LIBCROCO="$LIBCROCO_0_6" + gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - if test "$gl_cv_libxml" != yes; then + if test "$gl_cv_libcroco" != yes; then gl_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCXML2" + CPPFLAGS="$CPPFLAGS $INCCROCO_0_6" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include - #include - +#include int main () { -xmlCheckVersion (0); xmlFree ((void *) 0); +const char *version = LIBCROCO_VERSION; return !version; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - gl_cv_libxml=yes - gl_cv_LIBXML="$LIBXML2 $LIBICONV" - gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV" - gl_cv_INCXML="$INCXML2" + gl_cv_libcroco=yes + gl_cv_LIBCROCO="$LIBCROCO_0_6" + gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6" + gl_cv_INCCROCO="$INCCROCO_0_6" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - if test "$gl_cv_libxml" != yes; then - libxml2_include_dir= - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + if test "$gl_cv_libcroco" != yes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include +#include +int +main () +{ +const char *version = LIBCROCO_VERSION; return !version; + ; + return 0; +} _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_absolute_libxml2_libxml_xmlexports_h+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if ${gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h+:} false; then : $as_echo_n "(cached) " >&6 else - if test $ac_cv_header_libxml2_libxml_xmlexports_h = yes; then + if test $ac_cv_header_libcroco_0_6_libcroco_libcroco_config_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include +#include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; @@ -41033,7 +43385,7 @@ ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'libxml2/libxml/xmlexports.h' \ + gl_header_literal_regex=`echo 'libcroco-0.6/libcroco/libcroco-config.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ @@ -41042,675 +43394,737 @@ q }' - gl_cv_absolute_libxml2_libxml_xmlexports_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_absolute_libxml2_libxml_xmlexports_h" >&5 -$as_echo "$gl_cv_absolute_libxml2_libxml_xmlexports_h" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" >&5 +$as_echo "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" >&6; } cat >>confdefs.h <<_ACEOF -#define ABSOLUTE_LIBXML2_LIBXML_XMLEXPORTS_H "$gl_cv_absolute_libxml2_libxml_xmlexports_h" +#define ABSOLUTE_LIBCROCO_0_6_LIBCROCO_LIBCROCO_CONFIG_H "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" _ACEOF - libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlexports_h" | sed -e 's,.libxml.xmlexports\.h$,,'` + libcroco_include_dir=`echo "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" | sed -e 's,.libcroco-config\.h$,,'` + if test -d "$libcroco_include_dir"; then + gl_cv_libcroco=yes + gl_cv_LIBCROCO="$LIBCROCO_0_6" + gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6" + gl_cv_INCCROCO="-I$libcroco_include_dir" + fi fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$libxml2_include_dir"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_absolute_libxml2_libxml_xmlversion_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test $ac_cv_header_libxml2_libxml_xmlversion_h = yes; then - +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gl_save_CPPFLAGS" + fi + LIBS="$gl_save_LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac +fi - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; - esac - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'libxml2/libxml/xmlversion.h' \ - | sed -e "$gl_make_literal_regex_sed"` - gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ - s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ - s|^/[^/]|//&| - p - q - }' - - gl_cv_absolute_libxml2_libxml_xmlversion_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` - - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_absolute_libxml2_libxml_xmlversion_h" >&5 -$as_echo "$gl_cv_absolute_libxml2_libxml_xmlversion_h" >&6; } -cat >>confdefs.h <<_ACEOF -#define ABSOLUTE_LIBXML2_LIBXML_XMLVERSION_H "$gl_cv_absolute_libxml2_libxml_xmlversion_h" -_ACEOF - - - libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlversion_h" | sed -e 's,.libxml.xmlversion\.h$,,'` - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - fi - if test -n "$libxml2_include_dir" && test -d "$libxml2_include_dir"; then - CPPFLAGS="$gl_save_CPPFLAGS -I$libxml2_include_dir" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -xmlCheckVersion (0); xmlFree ((void *) 0); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_cv_libxml=yes - gl_cv_LIBXML="$LIBXML2 $LIBICONV" - gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV" - gl_cv_INCXML="-I$libxml2_include_dir" - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - fi - fi - CPPFLAGS="$gl_save_CPPFLAGS" - fi - LIBS="$gl_save_LIBS" - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libxml" >&5 -$as_echo_n "checking for libxml... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libxml" >&5 -$as_echo "$gl_cv_libxml" >&6; } - if test $gl_cv_libxml = yes; then - LIBXML="$gl_cv_LIBXML" - LTLIBXML="$gl_cv_LTLIBXML" - INCXML="$gl_cv_INCXML" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libcroco" >&5 +$as_echo_n "checking for libcroco... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libcroco" >&5 +$as_echo "$gl_cv_libcroco" >&6; } + if test $gl_cv_libcroco = yes; then + LIBCROCO="$gl_cv_LIBCROCO" + LTLIBCROCO="$gl_cv_LTLIBCROCO" + INCCROCO="$gl_cv_INCCROCO" else - gl_cv_libxml_use_included=yes + gl_cv_libcroco_use_included=yes fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the included libxml" >&5 -$as_echo_n "checking whether to use the included libxml... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libxml_use_included" >&5 -$as_echo "$gl_cv_libxml_use_included" >&6; } - - if test "$gl_cv_libxml_use_included" = yes; then - LIBXML_H= - LIBXML_H="$LIBXML_H libxml/DOCBparser.h" - LIBXML_H="$LIBXML_H libxml/HTMLparser.h" - LIBXML_H="$LIBXML_H libxml/HTMLtree.h" - LIBXML_H="$LIBXML_H libxml/SAX2.h" - LIBXML_H="$LIBXML_H libxml/SAX.h" - LIBXML_H="$LIBXML_H libxml/c14n.h" - LIBXML_H="$LIBXML_H libxml/catalog.h" - LIBXML_H="$LIBXML_H libxml/chvalid.h" - LIBXML_H="$LIBXML_H libxml/debugXML.h" - LIBXML_H="$LIBXML_H libxml/dict.h" - LIBXML_H="$LIBXML_H libxml/encoding.h" - LIBXML_H="$LIBXML_H libxml/entities.h" - LIBXML_H="$LIBXML_H libxml/globals.h" - LIBXML_H="$LIBXML_H libxml/hash.h" - LIBXML_H="$LIBXML_H libxml/list.h" - LIBXML_H="$LIBXML_H libxml/nanoftp.h" - LIBXML_H="$LIBXML_H libxml/nanohttp.h" - LIBXML_H="$LIBXML_H libxml/parser.h" - LIBXML_H="$LIBXML_H libxml/parserInternals.h" - LIBXML_H="$LIBXML_H libxml/pattern.h" - LIBXML_H="$LIBXML_H libxml/relaxng.h" - LIBXML_H="$LIBXML_H libxml/schemasInternals.h" - LIBXML_H="$LIBXML_H libxml/schematron.h" - LIBXML_H="$LIBXML_H libxml/threads.h" - LIBXML_H="$LIBXML_H libxml/tree.h" - LIBXML_H="$LIBXML_H libxml/uri.h" - LIBXML_H="$LIBXML_H libxml/valid.h" - LIBXML_H="$LIBXML_H libxml/xinclude.h" - LIBXML_H="$LIBXML_H libxml/xlink.h" - LIBXML_H="$LIBXML_H libxml/xmlIO.h" - LIBXML_H="$LIBXML_H libxml/xmlautomata.h" - LIBXML_H="$LIBXML_H libxml/xmlerror.h" - LIBXML_H="$LIBXML_H libxml/xmlexports.h" - LIBXML_H="$LIBXML_H libxml/xmlmemory.h" - LIBXML_H="$LIBXML_H libxml/xmlmodule.h" - LIBXML_H="$LIBXML_H libxml/xmlreader.h" - LIBXML_H="$LIBXML_H libxml/xmlregexp.h" - LIBXML_H="$LIBXML_H libxml/xmlsave.h" - LIBXML_H="$LIBXML_H libxml/xmlschemas.h" - LIBXML_H="$LIBXML_H libxml/xmlschemastypes.h" - LIBXML_H="$LIBXML_H libxml/xmlstring.h" - LIBXML_H="$LIBXML_H libxml/xmlunicode.h" - LIBXML_H="$LIBXML_H libxml/xmlversion.h" - LIBXML_H="$LIBXML_H libxml/xmlwriter.h" - LIBXML_H="$LIBXML_H libxml/xpath.h" - LIBXML_H="$LIBXML_H libxml/xpathInternals.h" - LIBXML_H="$LIBXML_H libxml/xpointer.h" - for ac_header in arpa/inet.h ctype.h dlfcn.h dl.h errno.h \ - fcntl.h float.h limits.h malloc.h math.h netdb.h \ - netinet/in.h signal.h stdlib.h string.h \ - strings.h sys/select.h sys/socket.h sys/stat.h \ - sys/time.h sys/types.h time.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - for ac_header in arpa/nameser.h -do : - ac_fn_c_check_header_compile "$LINENO" "arpa/nameser.h" "ac_cv_header_arpa_nameser_h" " - #if HAVE_SYS_TYPES_H - # include - #endif - -" -if test "x$ac_cv_header_arpa_nameser_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_ARPA_NAMESER_H 1 -_ACEOF - -fi - -done - - for ac_header in resolv.h -do : - ac_fn_c_check_header_compile "$LINENO" "resolv.h" "ac_cv_header_resolv_h" " - #if HAVE_SYS_TYPES_H - # include - #endif - #if HAVE_NETINET_IN_H - # include - #endif - #if HAVE_ARPA_NAMESER_H - # include - #endif - -" -if test "x$ac_cv_header_resolv_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_RESOLV_H 1 -_ACEOF - -fi - -done - - for ac_func in dlopen getaddrinfo localtime shlload stat _stat strftime -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -$as_echo "#define VA_COPY va_copy" >>confdefs.h - - else - LIBXML_H= - fi - + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the included libcroco" >&5 +$as_echo_n "checking whether to use the included libcroco... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libcroco_use_included" >&5 +$as_echo "$gl_cv_libcroco_use_included" >&6; } - if test "$gl_cv_libxml_use_included" = yes; then - INCLUDED_LIBXML_TRUE= - INCLUDED_LIBXML_FALSE='#' + if test "$gl_cv_libcroco_use_included" = yes; then + INCLUDED_LIBCROCO_TRUE= + INCLUDED_LIBCROCO_FALSE='#' else - INCLUDED_LIBXML_TRUE='#' - INCLUDED_LIBXML_FALSE= + INCLUDED_LIBCROCO_TRUE='#' + INCLUDED_LIBCROCO_FALSE= fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included glib is requested" >&5 +$as_echo_n "checking whether included glib is requested... " >&6; } - - - - - - - LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\"" - - - - - - - - - - case "$host_os" in - solaris*) - -$as_echo "#define _LCONV_C99 1" >>confdefs.h - - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether locale.h conforms to POSIX:2001" >&5 -$as_echo_n "checking whether locale.h conforms to POSIX:2001... " >&6; } -if ${gl_cv_header_locale_h_posix2001+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - int x = LC_MESSAGES; - int y = sizeof (((struct lconv *) 0)->decimal_point); -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_header_locale_h_posix2001=yes -else - gl_cv_header_locale_h_posix2001=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_locale_h_posix2001" >&5 -$as_echo "$gl_cv_header_locale_h_posix2001" >&6; } - - - if test $ac_cv_header_xlocale_h = yes; then - HAVE_XLOCALE_H=1 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether locale.h defines locale_t" >&5 -$as_echo_n "checking whether locale.h defines locale_t... " >&6; } -if ${gl_cv_header_locale_has_locale_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - locale_t x; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_header_locale_has_locale_t=yes +# Check whether --with-included-glib was given. +if test "${with_included_glib+set}" = set; then : + withval=$with_included_glib; gl_cv_libglib_force_included=$withval else - gl_cv_header_locale_has_locale_t=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - + gl_cv_libglib_force_included=no fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_locale_has_locale_t" >&5 -$as_echo "$gl_cv_header_locale_has_locale_t" >&6; } - if test $gl_cv_header_locale_has_locale_t = yes; then - gl_cv_header_locale_h_needs_xlocale_h=no - else - gl_cv_header_locale_h_needs_xlocale_h=yes - fi - else - HAVE_XLOCALE_H=0 - gl_cv_header_locale_h_needs_xlocale_h=no - fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libglib_force_included" >&5 +$as_echo "$gl_cv_libglib_force_included" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct lconv is properly defined" >&5 -$as_echo_n "checking whether struct lconv is properly defined... " >&6; } -if ${gl_cv_sys_struct_lconv_ok+:} false; then : + gl_cv_libglib_use_included="$gl_cv_libglib_force_included" + LIBGLIB= + LTLIBGLIB= + INCGLIB= + if test "$gl_cv_libglib_use_included" != yes; then + if ${gl_cv_libglib+:} false; then : $as_echo_n "(cached) " >&6 else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - struct lconv l; - int x = sizeof (l.decimal_point); - int y = sizeof (l.int_p_cs_precedes); -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_sys_struct_lconv_ok=yes -else - gl_cv_sys_struct_lconv_ok=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_lconv_ok" >&5 -$as_echo "$gl_cv_sys_struct_lconv_ok" >&6; } - if test $gl_cv_sys_struct_lconv_ok = no; then - REPLACE_STRUCT_LCONV=1 - fi - - - - - + gl_cv_libglib=no + gl_cv_LIBGLIB= + gl_cv_LTLIBGLIB= + gl_cv_INCGLIB= + gl_save_LIBS="$LIBS" - if test $gl_cv_have_include_next = yes; then - gl_cv_next_locale_h='<'locale.h'>' - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_next_locale_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - - - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; - esac - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'locale.h' \ - | sed -e "$gl_make_literal_regex_sed"` - gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ - s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ - s|^/[^/]|//&| - p - q - }' - gl_cv_absolute_locale_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` - gl_header=$gl_cv_absolute_locale_h - gl_cv_next_locale_h='"'$gl_header'"' + use_additional=yes -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_locale_h" >&5 -$as_echo "$gl_cv_next_locale_h" >&6; } - fi - NEXT_LOCALE_H=$gl_cv_next_locale_h + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" - if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' - gl_next_as_first_directive='<'locale.h'>' - else - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' - gl_next_as_first_directive=$gl_cv_next_locale_h - fi - NEXT_AS_FIRST_DIRECTIVE_LOCALE_H=$gl_next_as_first_directive + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +# Check whether --with-libglib-2.0-prefix was given. +if test "${with_libglib_2_0_prefix+set}" = set; then : + withval=$with_libglib_2_0_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" - for gl_func in setlocale duplocale; do - as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 -$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } -if eval \${$as_gl_Symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -/* Some systems provide declarations in a non-standard header. */ -#if HAVE_XLOCALE_H -# include -#endif + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" -int -main () -{ -#undef $gl_func - (void) $gl_func; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$as_gl_Symbol=yes" -else - eval "$as_gl_Symbol=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$as_gl_Symbol - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 -_ACEOF + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi - eval ac_cv_have_decl_$gl_func=yes fi - done - - - - - - for ac_func in setlocale uselocale -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF -fi -done + LIBGLIB_2_0= + LTLIBGLIB_2_0= + INCGLIB_2_0= + LIBGLIB_2_0_PREFIX= + HAVE_LIBGLIB_2_0= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='glib-2.0 ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBGLIB_2_0; do - if test $ac_cv_func_uselocale = yes; then - for ac_func in getlocalename_l -do : - ac_fn_c_check_func "$LINENO" "getlocalename_l" "ac_cv_func_getlocalename_l" -if test "x$ac_cv_func_getlocalename_l" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETLOCALENAME_L 1 -_ACEOF + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" -fi -done + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBGLIB_2_0; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_so" + else + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$found_a" + else + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'glib-2.0'; then + LIBGLIB_2_0_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'glib-2.0'; then + LIBGLIB_2_0_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCGLIB_2_0; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCGLIB_2_0="${INCGLIB_2_0}${INCGLIB_2_0:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBGLIB_2_0; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBGLIB_2_0; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$dep" + LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }$dep" + ;; + esac + done + fi + else + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }-l$name" + LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBGLIB_2_0="${LIBGLIB_2_0}${LIBGLIB_2_0:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBGLIB_2_0="${LTLIBGLIB_2_0}${LTLIBGLIB_2_0:+ }-R$found_dir" + done fi - if test "$gl_threads_api" = posix; then - # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the - # pthread_rwlock_* functions. - ac_fn_c_check_type "$LINENO" "pthread_rwlock_t" "ac_cv_type_pthread_rwlock_t" "#include -" -if test "x$ac_cv_type_pthread_rwlock_t" = xyes; then : -$as_echo "#define HAVE_PTHREAD_RWLOCK 1" >>confdefs.h -fi - # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + LIBS="$gl_save_LIBS $LIBGLIB_2_0" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#include +#ifndef G_BEGIN_DECLS +error this glib.h includes a glibconfig.h from a glib version 1.x +#endif - #include int main () { +g_string_new ("foo"); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_libglib=yes + gl_cv_LIBGLIB="$LIBGLIB_2_0" + gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0" -#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; +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$gl_cv_libglib" != yes; then + gl_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCGLIB_2_0" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#ifndef G_BEGIN_DECLS +error this glib.h includes a glibconfig.h from a glib version 1.x #endif +int +main () +{ +g_string_new ("foo"); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_libglib=yes + gl_cv_LIBGLIB="$LIBGLIB_2_0" + gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0" + gl_cv_INCGLIB="$INCGLIB_2_0" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - : - - +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$gl_cv_libglib" != yes; then + if test -n "$LIBGLIB_2_0_PREFIX"; then + CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#ifndef G_BEGIN_DECLS +error this glib.h includes a glibconfig.h from a glib version 1.x +#endif -cat >>confdefs.h <<_ACEOF -#define GNULIB_LOCK 1 +int +main () +{ +g_string_new ("foo"); + ; + return 0; +} _ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_libglib=yes + gl_cv_LIBGLIB="$LIBGLIB_2_0" + gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0" + gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi + fi + CPPFLAGS="$gl_save_CPPFLAGS" + fi + LIBS="$gl_save_LIBS" +fi - - - if test $ac_cv_func_lstat = yes; then - - case "$gl_cv_func_lstat_dereferences_slashed_symlink" in - *no) - REPLACE_LSTAT=1 - ;; - esac - else - HAVE_LSTAT=0 - fi - - if test $REPLACE_LSTAT = 1; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS lstat.$ac_objext" - - : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for glib" >&5 +$as_echo_n "checking for glib... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libglib" >&5 +$as_echo "$gl_cv_libglib" >&6; } + if test $gl_cv_libglib = yes; then + LIBGLIB="$gl_cv_LIBGLIB" + LTLIBGLIB="$gl_cv_LTLIBGLIB" + INCGLIB="$gl_cv_INCGLIB" + else + gl_cv_libglib_use_included=yes + fi fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the included glib" >&5 +$as_echo_n "checking whether to use the included glib... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libglib_use_included" >&5 +$as_echo "$gl_cv_libglib_use_included" >&6; } + if test "$gl_cv_libglib_use_included" = yes; then + LIBGLIB_H= + LIBGLIB_H="$LIBGLIB_H glib.h" + LIBGLIB_H="$LIBGLIB_H glibconfig.h" + LIBGLIB_H="$LIBGLIB_H glib/ghash.h" + LIBGLIB_H="$LIBGLIB_H glib/glist.h" + LIBGLIB_H="$LIBGLIB_H glib/gprimes.h" + LIBGLIB_H="$LIBGLIB_H glib/gstrfuncs.h" + LIBGLIB_H="$LIBGLIB_H glib/gstring.h" + LIBGLIB_H="$LIBGLIB_H glib/gtypes.h" - GNULIB_LSTAT=1 - - - - - -$as_echo "#define GNULIB_TEST_LSTAT 1" >>confdefs.h - - - - - + for ac_header in unistd.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_UNISTD_H 1 +_ACEOF - if test $gl_cv_func_malloc_posix = yes; then +fi -$as_echo "#define HAVE_MALLOC_POSIX 1" >>confdefs.h +done - else - REPLACE_MALLOC=1 + else + LIBGLIB_H= fi - if test $REPLACE_MALLOC = 1; then - - - - + if test "$gl_cv_libglib_use_included" = yes; then + INCLUDED_LIBGLIB_TRUE= + INCLUDED_LIBGLIB_FALSE='#' +else + INCLUDED_LIBGLIB_TRUE='#' + INCLUDED_LIBGLIB_FALSE= +fi - gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext" - - fi - - + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the included libunistring" >&5 +$as_echo_n "checking whether to use the included libunistring... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_libunistring_use_included" >&5 +$as_echo "$gl_libunistring_use_included" >&6; } - GNULIB_MALLOC_POSIX=1 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included libxml is requested" >&5 +$as_echo_n "checking whether included libxml is requested... " >&6; } +# Check whether --with-included-libxml was given. +if test "${with_included_libxml+set}" = set; then : + withval=$with_included_libxml; gl_cv_libxml_force_included=$withval +else + gl_cv_libxml_force_included=no +fi -$as_echo "#define GNULIB_TEST_MALLOC_POSIX 1" >>confdefs.h + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libxml_force_included" >&5 +$as_echo "$gl_cv_libxml_force_included" >&6; } + gl_cv_libxml_use_included="$gl_cv_libxml_force_included" + LIBXML= + LTLIBXML= + INCXML= + if test "$gl_cv_libxml_use_included" != yes; then + if ${gl_cv_libxml+:} false; then : + $as_echo_n "(cached) " >&6 +else + gl_cv_libxml=no + gl_cv_LIBXML= + gl_cv_LTLIBXML= + gl_cv_INCXML= + gl_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" @@ -41718,849 +44132,1249 @@ + use_additional=yes + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" - : + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +# Check whether --with-libxml2-prefix was given. +if test "${with_libxml2_prefix+set}" = set; then : + withval=$with_libxml2_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi +fi + LIBXML2= + LTLIBXML2= + INCXML2= + LIBXML2_PREFIX= + HAVE_LIBXML2= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='xml2 ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBXML2="${LIBXML2}${LIBXML2:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBXML2="${LTLIBXML2}${LTLIBXML2:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBXML2; do + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBXML2="${LTLIBXML2}${LTLIBXML2:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBXML2="${LIBXML2}${LIBXML2:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBXML2="${LIBXML2}${LIBXML2:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBXML2="${LIBXML2}${LIBXML2:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBXML2; do - if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBXML2="${LIBXML2}${LIBXML2:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBXML2="${LIBXML2}${LIBXML2:+ }$found_so" + else + LIBXML2="${LIBXML2}${LIBXML2:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBXML2="${LIBXML2}${LIBXML2:+ }$found_a" + else + LIBXML2="${LIBXML2}${LIBXML2:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'xml2'; then + LIBXML2_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'xml2'; then + LIBXML2_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCXML2; do + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles incomplete characters" >&5 -$as_echo_n "checking whether mbrtowc handles incomplete characters... " >&6; } -if ${gl_cv_func_mbrtowc_incomplete_state+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCXML2="${INCXML2}${INCXML2:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBXML2; do - case "$host_os" in - # Guess no on AIX and OSF/1. - aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;; - # Guess yes otherwise. - *) gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;; - esac - if test $LOCALE_JA != none; then - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" -#include -#include -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be - included before . */ -#include -#include -#include -#include -int main () -{ - if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) - { - const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */ - mbstate_t state; - wchar_t wc; + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBXML2="${LIBXML2}${LIBXML2:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBXML2; do - memset (&state, '\0', sizeof (mbstate_t)); - if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) - if (mbsinit (&state)) - return 1; - } - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_mbrtowc_incomplete_state=yes -else - gl_cv_func_mbrtowc_incomplete_state=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBXML2="${LTLIBXML2}${LTLIBXML2:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBXML2="${LIBXML2}${LIBXML2:+ }$dep" + LTLIBXML2="${LTLIBXML2}${LTLIBXML2:+ }$dep" + ;; + esac + done + fi + else + LIBXML2="${LIBXML2}${LIBXML2:+ }-l$name" + LTLIBXML2="${LTLIBXML2}${LTLIBXML2:+ }-l$name" + fi + fi fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBXML2="${LIBXML2}${LIBXML2:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBXML2="${LIBXML2}${LIBXML2:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBXML2="${LTLIBXML2}${LTLIBXML2:+ }-R$found_dir" + done + fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_incomplete_state" >&5 -$as_echo "$gl_cv_func_mbrtowc_incomplete_state" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc works as well as mbtowc" >&5 -$as_echo_n "checking whether mbrtowc works as well as mbtowc... " >&6; } -if ${gl_cv_func_mbrtowc_sanitycheck+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$host_os" in - # Guess no on Solaris 8. - solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;; - # Guess yes otherwise. - *) gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;; - esac - if test $LOCALE_ZH_CN != none; then - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + LIBS="$gl_save_LIBS $LIBXML2 $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#include + #include -#include -#include -#include -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be - included before . */ -#include -#include -#include -#include -int main () +int +main () { - /* This fails on Solaris 8: - mbrtowc returns 2, and sets wc to 0x00F0. - mbtowc returns 4 (correct) and sets wc to 0x5EDC. */ - if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) - { - char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */ - mbstate_t state; - wchar_t wc; - - memset (&state, '\0', sizeof (mbstate_t)); - if (mbrtowc (&wc, input + 3, 6, &state) != 4 - && mbtowc (&wc, input + 3, 6) == 4) - return 1; - } +xmlCheckVersion (0); xmlFree ((void *) 0); + ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_mbrtowc_sanitycheck=yes -else - gl_cv_func_mbrtowc_sanitycheck=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_libxml=yes + gl_cv_LIBXML="$LIBXML2 $LIBICONV" + gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV" + fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$gl_cv_libxml" != yes; then + gl_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCXML2" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include - fi +int +main () +{ +xmlCheckVersion (0); xmlFree ((void *) 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_libxml=yes + gl_cv_LIBXML="$LIBXML2 $LIBICONV" + gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV" + gl_cv_INCXML="$INCXML2" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_sanitycheck" >&5 -$as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; } +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$gl_cv_libxml" != yes; then + libxml2_include_dir= + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : - REPLACE_MBSTATE_T=0 - case "$gl_cv_func_mbrtowc_incomplete_state" in - *yes) ;; - *) REPLACE_MBSTATE_T=1 ;; - esac - case "$gl_cv_func_mbrtowc_sanitycheck" in - *yes) ;; - *) REPLACE_MBSTATE_T=1 ;; - esac - else - REPLACE_MBSTATE_T=1 - fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if ${gl_cv_absolute_libxml2_libxml_xmlexports_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test $ac_cv_header_libxml2_libxml_xmlexports_h = yes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac - if test $ac_cv_func_mbrtowc = no; then - HAVE_MBRTOWC=0 - ac_fn_c_check_decl "$LINENO" "mbrtowc" "ac_cv_have_decl_mbrtowc" " -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be - included before . */ -#include -#include -#include -#include + case "$host_os" in + mingw*) + gl_dirsep_regex='[/\\]' + ;; + *) + gl_dirsep_regex='\/' + ;; + esac + gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' + gl_header_literal_regex=`echo 'libxml2/libxml/xmlexports.h' \ + | sed -e "$gl_make_literal_regex_sed"` + gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ + s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ + s|^/[^/]|//&| + p + q + }' -" -if test "x$ac_cv_have_decl_mbrtowc" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi + gl_cv_absolute_libxml2_libxml_xmlexports_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n "$gl_absolute_header_sed"` + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_absolute_libxml2_libxml_xmlexports_h" >&5 +$as_echo "$gl_cv_absolute_libxml2_libxml_xmlexports_h" >&6; } cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_MBRTOWC $ac_have_decl +#define ABSOLUTE_LIBXML2_LIBXML_XMLEXPORTS_H "$gl_cv_absolute_libxml2_libxml_xmlexports_h" _ACEOF - if test $ac_cv_have_decl_mbrtowc = yes; then - REPLACE_MBRTOWC=1 - fi - else - if test $REPLACE_MBSTATE_T = 1; then - REPLACE_MBRTOWC=1 - else + libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlexports_h" | sed -e 's,.libxml.xmlexports\.h$,,'` +fi +rm -f conftest.err conftest.i conftest.$ac_ext + if test -z "$libxml2_include_dir"; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles a NULL pwc argument" >&5 -$as_echo_n "checking whether mbrtowc handles a NULL pwc argument... " >&6; } -if ${gl_cv_func_mbrtowc_null_arg1+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if ${gl_cv_absolute_libxml2_libxml_xmlversion_h+:} false; then : $as_echo_n "(cached) " >&6 else + if test $ac_cv_header_libxml2_libxml_xmlversion_h = yes; then + - case "$host_os" in - # Guess no on Solaris. - solaris*) gl_cv_func_mbrtowc_null_arg1="guessing no" ;; - # Guess yes otherwise. - *) gl_cv_func_mbrtowc_null_arg1="guessing yes" ;; - esac - if test $LOCALE_FR_UTF8 != none; then - if test "$cross_compiling" = yes; then : - : -else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - -#include -#include -#include -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be - included before . */ -#include -#include -#include -#include -int main () -{ - int result = 0; - - if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) - { - char input[] = "\303\237er"; - mbstate_t state; - wchar_t wc; - size_t ret; - - memset (&state, '\0', sizeof (mbstate_t)); - wc = (wchar_t) 0xBADFACE; - ret = mbrtowc (&wc, input, 5, &state); - if (ret != 2) - result |= 1; - if (!mbsinit (&state)) - result |= 2; - - memset (&state, '\0', sizeof (mbstate_t)); - ret = mbrtowc (NULL, input, 5, &state); - if (ret != 2) /* Solaris 7 fails here: ret is -1. */ - result |= 4; - if (!mbsinit (&state)) - result |= 8; - } - return result; -} +#include _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_mbrtowc_null_arg1=yes -else - gl_cv_func_mbrtowc_null_arg1=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac - fi + case "$host_os" in + mingw*) + gl_dirsep_regex='[/\\]' + ;; + *) + gl_dirsep_regex='\/' + ;; + esac + gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' + gl_header_literal_regex=`echo 'libxml2/libxml/xmlversion.h' \ + | sed -e "$gl_make_literal_regex_sed"` + gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ + s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ + s|^/[^/]|//&| + p + q + }' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_null_arg1" >&5 -$as_echo "$gl_cv_func_mbrtowc_null_arg1" >&6; } + gl_cv_absolute_libxml2_libxml_xmlversion_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n "$gl_absolute_header_sed"` + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_absolute_libxml2_libxml_xmlversion_h" >&5 +$as_echo "$gl_cv_absolute_libxml2_libxml_xmlversion_h" >&6; } +cat >>confdefs.h <<_ACEOF +#define ABSOLUTE_LIBXML2_LIBXML_XMLVERSION_H "$gl_cv_absolute_libxml2_libxml_xmlversion_h" +_ACEOF - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles a NULL string argument" >&5 -$as_echo_n "checking whether mbrtowc handles a NULL string argument... " >&6; } -if ${gl_cv_func_mbrtowc_null_arg2+:} false; then : - $as_echo_n "(cached) " >&6 -else + libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlversion_h" | sed -e 's,.libxml.xmlversion\.h$,,'` - case "$host_os" in - # Guess no on OSF/1. - osf*) gl_cv_func_mbrtowc_null_arg2="guessing no" ;; - # Guess yes otherwise. - *) gl_cv_func_mbrtowc_null_arg2="guessing yes" ;; - esac - if test $LOCALE_FR_UTF8 != none; then - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +fi +rm -f conftest.err conftest.i conftest.$ac_ext + fi + if test -n "$libxml2_include_dir" && test -d "$libxml2_include_dir"; then + CPPFLAGS="$gl_save_CPPFLAGS -I$libxml2_include_dir" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#include + #include -#include -#include -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be - included before . */ -#include -#include -#include -#include -int main () +int +main () { - if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) - { - mbstate_t state; - wchar_t wc; - int ret; - - memset (&state, '\0', sizeof (mbstate_t)); - wc = (wchar_t) 0xBADFACE; - mbrtowc (&wc, NULL, 5, &state); - /* Check that wc was not modified. */ - if (wc != (wchar_t) 0xBADFACE) - return 1; - } +xmlCheckVersion (0); xmlFree ((void *) 0); + ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_mbrtowc_null_arg2=yes -else - gl_cv_func_mbrtowc_null_arg2=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_libxml=yes + gl_cv_LIBXML="$LIBXML2 $LIBICONV" + gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV" + gl_cv_INCXML="-I$libxml2_include_dir" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi + fi + CPPFLAGS="$gl_save_CPPFLAGS" fi + LIBS="$gl_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_null_arg2" >&5 -$as_echo "$gl_cv_func_mbrtowc_null_arg2" >&6; } - - - - + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libxml" >&5 +$as_echo_n "checking for libxml... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libxml" >&5 +$as_echo "$gl_cv_libxml" >&6; } + if test $gl_cv_libxml = yes; then + LIBXML="$gl_cv_LIBXML" + LTLIBXML="$gl_cv_LTLIBXML" + INCXML="$gl_cv_INCXML" + else + gl_cv_libxml_use_included=yes + fi + fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc has a correct return value" >&5 -$as_echo_n "checking whether mbrtowc has a correct return value... " >&6; } -if ${gl_cv_func_mbrtowc_retval+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$host_os" in - # Guess no on HP-UX, Solaris, native Windows. - hpux* | solaris* | mingw*) gl_cv_func_mbrtowc_retval="guessing no" ;; - # Guess yes otherwise. - *) gl_cv_func_mbrtowc_retval="guessing yes" ;; - esac - if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none \ - || { case "$host_os" in mingw*) true;; *) false;; esac; }; then - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be - included before . */ -#include -#include -#include -#include -int main () -{ - int result = 0; - int found_some_locale = 0; - /* This fails on Solaris. */ - if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) - { - char input[] = "B\303\274\303\237er"; /* "Büßer" */ - mbstate_t state; - wchar_t wc; + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the included libxml" >&5 +$as_echo_n "checking whether to use the included libxml... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_libxml_use_included" >&5 +$as_echo "$gl_cv_libxml_use_included" >&6; } - memset (&state, '\0', sizeof (mbstate_t)); - if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) - { - input[1] = '\0'; - if (mbrtowc (&wc, input + 2, 5, &state) != 1) - result |= 1; - } - found_some_locale = 1; - } - /* This fails on HP-UX 11.11. */ - if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) - { - char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */ - mbstate_t state; - wchar_t wc; + if test "$gl_cv_libxml_use_included" = yes; then + LIBXML_H= + LIBXML_H="$LIBXML_H libxml/DOCBparser.h" + LIBXML_H="$LIBXML_H libxml/HTMLparser.h" + LIBXML_H="$LIBXML_H libxml/HTMLtree.h" + LIBXML_H="$LIBXML_H libxml/SAX2.h" + LIBXML_H="$LIBXML_H libxml/SAX.h" + LIBXML_H="$LIBXML_H libxml/c14n.h" + LIBXML_H="$LIBXML_H libxml/catalog.h" + LIBXML_H="$LIBXML_H libxml/chvalid.h" + LIBXML_H="$LIBXML_H libxml/debugXML.h" + LIBXML_H="$LIBXML_H libxml/dict.h" + LIBXML_H="$LIBXML_H libxml/encoding.h" + LIBXML_H="$LIBXML_H libxml/entities.h" + LIBXML_H="$LIBXML_H libxml/globals.h" + LIBXML_H="$LIBXML_H libxml/hash.h" + LIBXML_H="$LIBXML_H libxml/list.h" + LIBXML_H="$LIBXML_H libxml/nanoftp.h" + LIBXML_H="$LIBXML_H libxml/nanohttp.h" + LIBXML_H="$LIBXML_H libxml/parser.h" + LIBXML_H="$LIBXML_H libxml/parserInternals.h" + LIBXML_H="$LIBXML_H libxml/pattern.h" + LIBXML_H="$LIBXML_H libxml/relaxng.h" + LIBXML_H="$LIBXML_H libxml/schemasInternals.h" + LIBXML_H="$LIBXML_H libxml/schematron.h" + LIBXML_H="$LIBXML_H libxml/threads.h" + LIBXML_H="$LIBXML_H libxml/tree.h" + LIBXML_H="$LIBXML_H libxml/uri.h" + LIBXML_H="$LIBXML_H libxml/valid.h" + LIBXML_H="$LIBXML_H libxml/xinclude.h" + LIBXML_H="$LIBXML_H libxml/xlink.h" + LIBXML_H="$LIBXML_H libxml/xmlIO.h" + LIBXML_H="$LIBXML_H libxml/xmlautomata.h" + LIBXML_H="$LIBXML_H libxml/xmlerror.h" + LIBXML_H="$LIBXML_H libxml/xmlexports.h" + LIBXML_H="$LIBXML_H libxml/xmlmemory.h" + LIBXML_H="$LIBXML_H libxml/xmlmodule.h" + LIBXML_H="$LIBXML_H libxml/xmlreader.h" + LIBXML_H="$LIBXML_H libxml/xmlregexp.h" + LIBXML_H="$LIBXML_H libxml/xmlsave.h" + LIBXML_H="$LIBXML_H libxml/xmlschemas.h" + LIBXML_H="$LIBXML_H libxml/xmlschemastypes.h" + LIBXML_H="$LIBXML_H libxml/xmlstring.h" + LIBXML_H="$LIBXML_H libxml/xmlunicode.h" + LIBXML_H="$LIBXML_H libxml/xmlversion.h" + LIBXML_H="$LIBXML_H libxml/xmlwriter.h" + LIBXML_H="$LIBXML_H libxml/xpath.h" + LIBXML_H="$LIBXML_H libxml/xpathInternals.h" + LIBXML_H="$LIBXML_H libxml/xpointer.h" + for ac_header in arpa/inet.h ctype.h dlfcn.h dl.h errno.h \ + fcntl.h float.h limits.h malloc.h math.h netdb.h \ + netinet/in.h signal.h stdlib.h string.h \ + strings.h sys/select.h sys/socket.h sys/stat.h \ + sys/time.h sys/types.h time.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF - memset (&state, '\0', sizeof (mbstate_t)); - if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) - { - input[1] = '\0'; - if (mbrtowc (&wc, input + 2, 5, &state) != 2) - result |= 2; - } - found_some_locale = 1; - } - /* This fails on native Windows. */ - if (setlocale (LC_ALL, "Japanese_Japan.932") != NULL) - { - char input[] = "<\223\372\226\173\214\352>"; /* "<日本語>" */ - mbstate_t state; - wchar_t wc; +fi - memset (&state, '\0', sizeof (mbstate_t)); - if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2)) - { - input[3] = '\0'; - if (mbrtowc (&wc, input + 4, 4, &state) != 1) - result |= 4; - } - found_some_locale = 1; - } - if (setlocale (LC_ALL, "Chinese_Taiwan.950") != NULL) - { - char input[] = "<\244\351\245\273\273\171>"; /* "<日本語>" */ - mbstate_t state; - wchar_t wc; +done - memset (&state, '\0', sizeof (mbstate_t)); - if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2)) - { - input[3] = '\0'; - if (mbrtowc (&wc, input + 4, 4, &state) != 1) - result |= 8; - } - found_some_locale = 1; - } - if (setlocale (LC_ALL, "Chinese_China.936") != NULL) - { - char input[] = "<\310\325\261\276\325\132>"; /* "<日本語>" */ - mbstate_t state; - wchar_t wc; + for ac_header in arpa/nameser.h +do : + ac_fn_c_check_header_compile "$LINENO" "arpa/nameser.h" "ac_cv_header_arpa_nameser_h" " + #if HAVE_SYS_TYPES_H + # include + #endif - memset (&state, '\0', sizeof (mbstate_t)); - if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2)) - { - input[3] = '\0'; - if (mbrtowc (&wc, input + 4, 4, &state) != 1) - result |= 16; - } - found_some_locale = 1; - } - return (found_some_locale ? result : 77); -} +" +if test "x$ac_cv_header_arpa_nameser_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_ARPA_NAMESER_H 1 _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_mbrtowc_retval=yes -else - if test $? != 77; then - gl_cv_func_mbrtowc_retval=no - fi fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + +done + + for ac_header in resolv.h +do : + ac_fn_c_check_header_compile "$LINENO" "resolv.h" "ac_cv_header_resolv_h" " + #if HAVE_SYS_TYPES_H + # include + #endif + #if HAVE_NETINET_IN_H + # include + #endif + #if HAVE_ARPA_NAMESER_H + # include + #endif + +" +if test "x$ac_cv_header_resolv_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_RESOLV_H 1 +_ACEOF + fi - fi +done + + for ac_func in dlopen getaddrinfo localtime shlload stat _stat strftime +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_retval" >&5 -$as_echo "$gl_cv_func_mbrtowc_retval" >&6; } +done +$as_echo "#define VA_COPY va_copy" >>confdefs.h + else + LIBXML_H= + fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc returns 0 when parsing a NUL character" >&5 -$as_echo_n "checking whether mbrtowc returns 0 when parsing a NUL character... " >&6; } -if ${gl_cv_func_mbrtowc_nul_retval+:} false; then : - $as_echo_n "(cached) " >&6 + + if test "$gl_cv_libxml_use_included" = yes; then + INCLUDED_LIBXML_TRUE= + INCLUDED_LIBXML_FALSE='#' else + INCLUDED_LIBXML_TRUE='#' + INCLUDED_LIBXML_FALSE= +fi - case "$host_os" in - # Guess no on Solaris 8 and 9. - solaris2.[89]) gl_cv_func_mbrtowc_nul_retval="guessing no" ;; - # Guess yes otherwise. - *) gl_cv_func_mbrtowc_nul_retval="guessing yes" ;; - esac - if test $LOCALE_ZH_CN != none; then - if test "$cross_compiling" = yes; then : - : + + + + + + + + + + LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\"" + + + + + + + + + + case "$host_os" in + solaris*) + +$as_echo "#define _LCONV_C99 1" >>confdefs.h + + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether locale.h conforms to POSIX:2001" >&5 +$as_echo_n "checking whether locale.h conforms to POSIX:2001... " >&6; } +if ${gl_cv_header_locale_h_posix2001+:} false; then : + $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include -#include -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be - included before . */ -#include -#include -#include -#include -int main () + int x = LC_MESSAGES; + int y = sizeof (((struct lconv *) 0)->decimal_point); +int +main () { - /* This fails on Solaris 8 and 9. */ - if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) - { - mbstate_t state; - wchar_t wc; - memset (&state, '\0', sizeof (mbstate_t)); - if (mbrtowc (&wc, "", 1, &state) != 0) - return 1; - } + ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_mbrtowc_nul_retval=yes +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_header_locale_h_posix2001=yes else - gl_cv_func_mbrtowc_nul_retval=no + gl_cv_header_locale_h_posix2001=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_locale_h_posix2001" >&5 +$as_echo "$gl_cv_header_locale_h_posix2001" >&6; } - fi + if test $ac_cv_header_xlocale_h = yes; then + HAVE_XLOCALE_H=1 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether locale.h defines locale_t" >&5 +$as_echo_n "checking whether locale.h defines locale_t... " >&6; } +if ${gl_cv_header_locale_has_locale_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + locale_t x; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_header_locale_has_locale_t=yes +else + gl_cv_header_locale_has_locale_t=no fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_nul_retval" >&5 -$as_echo "$gl_cv_func_mbrtowc_nul_retval" >&6; } +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_locale_has_locale_t" >&5 +$as_echo "$gl_cv_header_locale_has_locale_t" >&6; } + if test $gl_cv_header_locale_has_locale_t = yes; then + gl_cv_header_locale_h_needs_xlocale_h=no + else + gl_cv_header_locale_h_needs_xlocale_h=yes + fi + else + HAVE_XLOCALE_H=0 + gl_cv_header_locale_h_needs_xlocale_h=no + fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc works on empty input" >&5 -$as_echo_n "checking whether mbrtowc works on empty input... " >&6; } -if ${gl_cv_func_mbrtowc_empty_input+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct lconv is properly defined" >&5 +$as_echo_n "checking whether struct lconv is properly defined... " >&6; } +if ${gl_cv_sys_struct_lconv_ok+:} false; then : $as_echo_n "(cached) " >&6 else - - case "$host_os" in - # Guess no on AIX and glibc systems. - aix* | *-gnu*) - gl_cv_func_mbrtowc_empty_input="guessing no" ;; - *) gl_cv_func_mbrtowc_empty_input="guessing yes" ;; - esac - if test "$cross_compiling" = yes; then : - : -else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#include + struct lconv l; + int x = sizeof (l.decimal_point); + int y = sizeof (l.int_p_cs_precedes); +int +main () +{ - #include - static wchar_t wc; - static mbstate_t mbs; - int - main (void) - { - return mbrtowc (&wc, "", 0, &mbs) == (size_t) -2; - } + ; + return 0; +} _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_mbrtowc_empty_input=no +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_sys_struct_lconv_ok=yes else - gl_cv_func_mbrtowc_empty_input=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + gl_cv_sys_struct_lconv_ok=no fi - +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_empty_input" >&5 -$as_echo "$gl_cv_func_mbrtowc_empty_input" >&6; } - - case "$gl_cv_func_mbrtowc_null_arg1" in - *yes) ;; - *) -$as_echo "#define MBRTOWC_NULL_ARG1_BUG 1" >>confdefs.h +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_lconv_ok" >&5 +$as_echo "$gl_cv_sys_struct_lconv_ok" >&6; } + if test $gl_cv_sys_struct_lconv_ok = no; then + REPLACE_STRUCT_LCONV=1 + fi - REPLACE_MBRTOWC=1 - ;; - esac - case "$gl_cv_func_mbrtowc_null_arg2" in - *yes) ;; - *) -$as_echo "#define MBRTOWC_NULL_ARG2_BUG 1" >>confdefs.h - REPLACE_MBRTOWC=1 - ;; - esac - case "$gl_cv_func_mbrtowc_retval" in - *yes) ;; - *) -$as_echo "#define MBRTOWC_RETVAL_BUG 1" >>confdefs.h - REPLACE_MBRTOWC=1 - ;; - esac - case "$gl_cv_func_mbrtowc_nul_retval" in - *yes) ;; - *) -$as_echo "#define MBRTOWC_NUL_RETVAL_BUG 1" >>confdefs.h - REPLACE_MBRTOWC=1 - ;; - esac - case "$gl_cv_func_mbrtowc_empty_input" in - *yes) ;; - *) -$as_echo "#define MBRTOWC_EMPTY_INPUT_BUG 1" >>confdefs.h - REPLACE_MBRTOWC=1 - ;; - esac - fi - fi - if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then + if test $gl_cv_have_include_next = yes; then + gl_cv_next_locale_h='<'locale.h'>' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if ${gl_cv_next_locale_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac + case "$host_os" in + mingw*) + gl_dirsep_regex='[/\\]' + ;; + *) + gl_dirsep_regex='\/' + ;; + esac + gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' + gl_header_literal_regex=`echo 'locale.h' \ + | sed -e "$gl_make_literal_regex_sed"` + gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ + s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ + s|^/[^/]|//&| + p + q + }' - gl_LIBOBJS="$gl_LIBOBJS mbrtowc.$ac_objext" + gl_cv_absolute_locale_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n "$gl_absolute_header_sed"` + gl_header=$gl_cv_absolute_locale_h + gl_cv_next_locale_h='"'$gl_header'"' - : - fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_locale_h" >&5 +$as_echo "$gl_cv_next_locale_h" >&6; } + fi + NEXT_LOCALE_H=$gl_cv_next_locale_h + if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' + gl_next_as_first_directive='<'locale.h'>' + else + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' + gl_next_as_first_directive=$gl_cv_next_locale_h + fi + NEXT_AS_FIRST_DIRECTIVE_LOCALE_H=$gl_next_as_first_directive - GNULIB_MBRTOWC=1 + for gl_func in setlocale duplocale; do + as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 +$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } +if eval \${$as_gl_Symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +/* Some systems provide declarations in a non-standard header. */ +#if HAVE_XLOCALE_H +# include +#endif +int +main () +{ +#undef $gl_func + (void) $gl_func; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_gl_Symbol=yes" +else + eval "$as_gl_Symbol=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$as_gl_Symbol + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 +_ACEOF + eval ac_cv_have_decl_$gl_func=yes +fi + done -$as_echo "#define GNULIB_TEST_MBRTOWC 1" >>confdefs.h + for ac_func in setlocale uselocale +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF +fi +done + if test $ac_cv_func_uselocale = yes; then + for ac_func in getlocalename_l +do : + ac_fn_c_check_func "$LINENO" "getlocalename_l" "ac_cv_func_getlocalename_l" +if test "x$ac_cv_func_getlocalename_l" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETLOCALENAME_L 1 +_ACEOF +fi +done + fi + if test "$gl_threads_api" = posix; then + # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the + # pthread_rwlock_* functions. + ac_fn_c_check_type "$LINENO" "pthread_rwlock_t" "ac_cv_type_pthread_rwlock_t" "#include +" +if test "x$ac_cv_type_pthread_rwlock_t" = xyes; then : +$as_echo "#define HAVE_PTHREAD_RWLOCK 1" >>confdefs.h +fi - if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles incomplete characters" >&5 -$as_echo_n "checking whether mbrtowc handles incomplete characters... " >&6; } -if ${gl_cv_func_mbrtowc_incomplete_state+:} false; then : - $as_echo_n "(cached) " >&6 -else - - case "$host_os" in - # Guess no on AIX and OSF/1. - aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;; - # Guess yes otherwise. - *) gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;; - esac - if test $LOCALE_JA != none; then - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be - included before . */ -#include -#include -#include -#include -int main () + #include +int +main () { - if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) - { - const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */ - mbstate_t state; - wchar_t wc; - memset (&state, '\0', sizeof (mbstate_t)); - if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) - if (mbsinit (&state)) - return 1; - } +#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 + + ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_mbrtowc_incomplete_state=yes -else - gl_cv_func_mbrtowc_incomplete_state=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi +if ac_fn_c_try_compile "$LINENO"; then : - fi +$as_echo "#define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_incomplete_state" >&5 -$as_echo "$gl_cv_func_mbrtowc_incomplete_state" >&6; } +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + : +cat >>confdefs.h <<_ACEOF +#define GNULIB_LOCK 1 +_ACEOF - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc works as well as mbtowc" >&5 -$as_echo_n "checking whether mbrtowc works as well as mbtowc... " >&6; } -if ${gl_cv_func_mbrtowc_sanitycheck+:} false; then : + + + + + + + + + LOG10_LIBM="$POW_LIBM" + + + + + save_LIBS="$LIBS" + LIBS="$LIBS $LOG10_LIBM" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether log10 works" >&5 +$as_echo_n "checking whether log10 works... " >&6; } +if ${gl_cv_func_log10_works+:} false; then : $as_echo_n "(cached) " >&6 else - case "$host_os" in - # Guess no on Solaris 8. - solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;; - # Guess yes otherwise. - *) gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;; - esac - if test $LOCALE_ZH_CN != none; then - if test "$cross_compiling" = yes; then : - : + if test "$cross_compiling" = yes; then : + case "$host_os" in + osf*) gl_cv_func_log10_works="guessing no";; + *) gl_cv_func_log10_works="guessing yes";; + esac + else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -#include -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be - included before . */ -#include -#include -#include -#include +#include +volatile double x; +double y; int main () { - /* This fails on Solaris 8: - mbrtowc returns 2, and sets wc to 0x00F0. - mbtowc returns 4 (correct) and sets wc to 0x5EDC. */ - if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) - { - char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */ - mbstate_t state; - wchar_t wc; - - memset (&state, '\0', sizeof (mbstate_t)); - if (mbrtowc (&wc, input + 3, 6, &state) != 4 - && mbtowc (&wc, input + 3, 6) == 4) - return 1; - } + x = -0.0; + y = log10 (x); + if (!(y + y == y)) + return 1; return 0; } + _ACEOF if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_mbrtowc_sanitycheck=yes + gl_cv_func_log10_works=yes else - gl_cv_func_mbrtowc_sanitycheck=no + gl_cv_func_log10_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_sanitycheck" >&5 -$as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_log10_works" >&5 +$as_echo "$gl_cv_func_log10_works" >&6; } + + LIBS="$save_LIBS" + case "$gl_cv_func_log10_works" in + *yes) ;; + *) REPLACE_LOG10=1 ;; + esac + + + + if test $REPLACE_LOG10 = 1; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS log10.$ac_objext" - REPLACE_MBSTATE_T=0 - case "$gl_cv_func_mbrtowc_incomplete_state" in - *yes) ;; - *) REPLACE_MBSTATE_T=1 ;; - esac - case "$gl_cv_func_mbrtowc_sanitycheck" in - *yes) ;; - *) REPLACE_MBSTATE_T=1 ;; - esac - else - REPLACE_MBSTATE_T=1 fi - if test $ac_cv_func_mbsinit = no; then - HAVE_MBSINIT=0 - ac_fn_c_check_decl "$LINENO" "mbsinit" "ac_cv_have_decl_mbsinit" " -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be - included before . */ -#include -#include -#include -#include -" -if test "x$ac_cv_have_decl_mbsinit" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_MBSINIT $ac_have_decl -_ACEOF + GNULIB_LOG10=1 - if test $ac_cv_have_decl_mbsinit = yes; then - REPLACE_MBSINIT=1 - fi + + + + +$as_echo "#define GNULIB_TEST_LOG10 1" >>confdefs.h + + + + + + + if test $ac_cv_func_lstat = yes; then + + case "$gl_cv_func_lstat_dereferences_slashed_symlink" in + *no) + REPLACE_LSTAT=1 + ;; + esac else - if test $REPLACE_MBSTATE_T = 1; then - REPLACE_MBSINIT=1 - else - case "$host_os" in - mingw*) REPLACE_MBSINIT=1 ;; - esac - fi + HAVE_LSTAT=0 fi - if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then + if test $REPLACE_LSTAT = 1; then @@ -42569,48 +45383,60 @@ - gl_LIBOBJS="$gl_LIBOBJS mbsinit.$ac_objext" + gl_LIBOBJS="$gl_LIBOBJS lstat.$ac_objext" + : + fi - : - fi + GNULIB_LSTAT=1 - GNULIB_MBSINIT=1 +$as_echo "#define GNULIB_TEST_LSTAT 1" >>confdefs.h -$as_echo "#define GNULIB_TEST_MBSINIT 1" >>confdefs.h + if test $gl_cv_func_malloc_posix = yes; then +$as_echo "#define HAVE_MALLOC_POSIX 1" >>confdefs.h - if test $ac_cv_func_mbslen = yes; then - HAVE_MBSLEN=1 else - HAVE_MBSLEN=0 + REPLACE_MALLOC=1 fi + if test $REPLACE_MALLOC = 1; then + + - GNULIB_MBSLEN=1 + gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext" + + fi -$as_echo "#define GNULIB_TEST_MBSLEN 1" >>confdefs.h + + GNULIB_MALLOC_POSIX=1 + + + + + +$as_echo "#define GNULIB_TEST_MALLOC_POSIX 1" >>confdefs.h @@ -42624,6 +45450,204 @@ + + + + + + if test $gl_cv_have_include_next = yes; then + gl_cv_next_math_h='<'math.h'>' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if ${gl_cv_next_math_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test $ac_cv_header_math_h = yes; then + + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac + + case "$host_os" in + mingw*) + gl_dirsep_regex='[/\\]' + ;; + *) + gl_dirsep_regex='\/' + ;; + esac + gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' + gl_header_literal_regex=`echo 'math.h' \ + | sed -e "$gl_make_literal_regex_sed"` + gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ + s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ + s|^/[^/]|//&| + p + q + }' + + gl_cv_absolute_math_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n "$gl_absolute_header_sed"` + + gl_header=$gl_cv_absolute_math_h + gl_cv_next_math_h='"'$gl_header'"' + else + gl_cv_next_math_h='<'math.h'>' + fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_math_h" >&5 +$as_echo "$gl_cv_next_math_h" >&6; } + fi + NEXT_MATH_H=$gl_cv_next_math_h + + if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' + gl_next_as_first_directive='<'math.h'>' + else + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' + gl_next_as_first_directive=$gl_cv_next_math_h + fi + NEXT_AS_FIRST_DIRECTIVE_MATH_H=$gl_next_as_first_directive + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NAN macro works" >&5 +$as_echo_n "checking whether NAN macro works... " >&6; } +if ${gl_cv_header_math_nan_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +/* Solaris 10 has a broken definition of NAN. Other platforms + fail to provide NAN, or provide it only in C99 mode; this + test only needs to fail when NAN is provided but wrong. */ + float f = 1.0f; +#ifdef NAN + f = NAN; +#endif + return f == 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_header_math_nan_works=yes +else + gl_cv_header_math_nan_works=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_math_nan_works" >&5 +$as_echo "$gl_cv_header_math_nan_works" >&6; } + if test $gl_cv_header_math_nan_works = no; then + REPLACE_NAN=1 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether HUGE_VAL works" >&5 +$as_echo_n "checking whether HUGE_VAL works... " >&6; } +if ${gl_cv_header_math_huge_val_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +/* Solaris 10 has a broken definition of HUGE_VAL. */ + double d = HUGE_VAL; + return d == 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_header_math_huge_val_works=yes +else + gl_cv_header_math_huge_val_works=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_math_huge_val_works" >&5 +$as_echo "$gl_cv_header_math_huge_val_works" >&6; } + if test $gl_cv_header_math_huge_val_works = no; then + REPLACE_HUGE_VAL=1 + fi + + + for gl_func in acosf acosl asinf asinl atanf atanl cbrt cbrtf cbrtl ceilf ceill copysign copysignf copysignl cosf cosl coshf expf expl exp2 exp2f exp2l expm1 expm1f expm1l fabsf fabsl floorf floorl fma fmaf fmal fmod fmodf fmodl frexpf frexpl hypotf hypotl ilogb ilogbf ilogbl ldexpf ldexpl log logf logl log10 log10f log10l log1p log1pf log1pl log2 log2f log2l logb logbf logbl modf modff modfl powf remainder remainderf remainderl rint rintf rintl round roundf roundl sinf sinl sinhf sqrtf sqrtl tanf tanl tanhf trunc truncf truncl; do + as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 +$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } +if eval \${$as_gl_Symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +#undef $gl_func + (void) $gl_func; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_gl_Symbol=yes" +else + eval "$as_gl_Symbol=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$as_gl_Symbol + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 +_ACEOF + + eval ac_cv_have_decl_$gl_func=yes +fi + done + + + + + + + + : + + + + + + + + + + + if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then @@ -42770,9 +45794,9 @@ - if test $ac_cv_func_mbsrtowcs = no; then - HAVE_MBSRTOWCS=0 - ac_fn_c_check_decl "$LINENO" "mbsrtowcs" "ac_cv_have_decl_mbsrtowcs" " + if test $ac_cv_func_mbrtowc = no; then + HAVE_MBRTOWC=0 + ac_fn_c_check_decl "$LINENO" "mbrtowc" "ac_cv_have_decl_mbrtowc" " /* Tru64 with Desktop Toolkit C has a bug: must be included before . BSD/OS 4.0.1 has a bug: , and must be @@ -42783,42 +45807,39 @@ #include " -if test "x$ac_cv_have_decl_mbsrtowcs" = xyes; then : +if test "x$ac_cv_have_decl_mbrtowc" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_MBSRTOWCS $ac_have_decl +#define HAVE_DECL_MBRTOWC $ac_have_decl _ACEOF - if test $ac_cv_have_decl_mbsrtowcs = yes; then - REPLACE_MBSRTOWCS=1 + if test $ac_cv_have_decl_mbrtowc = yes; then + REPLACE_MBRTOWC=1 fi else if test $REPLACE_MBSTATE_T = 1; then - REPLACE_MBSRTOWCS=1 + REPLACE_MBRTOWC=1 else - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbsrtowcs works" >&5 -$as_echo_n "checking whether mbsrtowcs works... " >&6; } -if ${gl_cv_func_mbsrtowcs_works+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles a NULL pwc argument" >&5 +$as_echo_n "checking whether mbrtowc handles a NULL pwc argument... " >&6; } +if ${gl_cv_func_mbrtowc_null_arg1+:} false; then : $as_echo_n "(cached) " >&6 else case "$host_os" in - # Guess no on HP-UX, Solaris, mingw. - hpux* | solaris* | mingw*) gl_cv_func_mbsrtowcs_works="guessing no" ;; - # Guess yes otherwise. - *) gl_cv_func_mbsrtowcs_works="guessing yes" ;; + # Guess no on Solaris. + solaris*) gl_cv_func_mbrtowc_null_arg1="guessing no" ;; + # Guess yes otherwise. + *) gl_cv_func_mbrtowc_null_arg1="guessing yes" ;; esac - if test $LOCALE_FR != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then + if test $LOCALE_FR_UTF8 != none; then if test "$cross_compiling" = yes; then : : else @@ -42826,6 +45847,7 @@ /* end confdefs.h. */ #include +#include #include /* Tru64 with Desktop Toolkit C has a bug: must be included before . @@ -42838,70 +45860,36 @@ int main () { int result = 0; - /* Test whether the function supports a NULL destination argument. - This fails on native Windows. */ - if (setlocale (LC_ALL, "$LOCALE_FR") != NULL) - { - const char input[] = "\337er"; - const char *src = input; - mbstate_t state; - memset (&state, '\0', sizeof (mbstate_t)); - if (mbsrtowcs (NULL, &src, 1, &state) != 3 - || src != input) - result |= 1; - } - /* Test whether the function works when started with a conversion state - in non-initial state. This fails on HP-UX 11.11 and Solaris 10. */ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) { - const char input[] = "B\303\274\303\237er"; - mbstate_t state; - - memset (&state, '\0', sizeof (mbstate_t)); - if (mbrtowc (NULL, input + 1, 1, &state) == (size_t)(-2)) - if (!mbsinit (&state)) - { - const char *src = input + 2; - if (mbsrtowcs (NULL, &src, 10, &state) != 4) - result |= 2; - } - } - if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) - { - const char input[] = "<\306\374\313\334\270\354>"; + char input[] = "\303\237er"; mbstate_t state; + wchar_t wc; + size_t ret; memset (&state, '\0', sizeof (mbstate_t)); - if (mbrtowc (NULL, input + 3, 1, &state) == (size_t)(-2)) - if (!mbsinit (&state)) - { - const char *src = input + 4; - if (mbsrtowcs (NULL, &src, 10, &state) != 3) - result |= 4; - } - } - if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) - { - const char input[] = "B\250\271\201\060\211\070er"; - mbstate_t state; + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input, 5, &state); + if (ret != 2) + result |= 1; + if (!mbsinit (&state)) + result |= 2; memset (&state, '\0', sizeof (mbstate_t)); - if (mbrtowc (NULL, input + 1, 1, &state) == (size_t)(-2)) - if (!mbsinit (&state)) - { - const char *src = input + 2; - if (mbsrtowcs (NULL, &src, 10, &state) != 4) - result |= 8; - } + ret = mbrtowc (NULL, input, 5, &state); + if (ret != 2) /* Solaris 7 fails here: ret is -1. */ + result |= 4; + if (!mbsinit (&state)) + result |= 8; } return result; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_mbsrtowcs_works=yes + gl_cv_func_mbrtowc_null_arg1=yes else - gl_cv_func_mbsrtowcs_works=no + gl_cv_func_mbrtowc_null_arg1=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext @@ -42910,133 +45898,236 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbsrtowcs_works" >&5 -$as_echo "$gl_cv_func_mbsrtowcs_works" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_null_arg1" >&5 +$as_echo "$gl_cv_func_mbrtowc_null_arg1" >&6; } - case "$gl_cv_func_mbsrtowcs_works" in - *yes) ;; - *) REPLACE_MBSRTOWCS=1 ;; - esac - fi - fi - - if test $HAVE_MBSRTOWCS = 0 || test $REPLACE_MBSRTOWCS = 1; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS mbsrtowcs.$ac_objext" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles a NULL string argument" >&5 +$as_echo_n "checking whether mbrtowc handles a NULL string argument... " >&6; } +if ${gl_cv_func_mbrtowc_null_arg2+:} false; then : + $as_echo_n "(cached) " >&6 +else - - - - - - gl_LIBOBJS="$gl_LIBOBJS mbsrtowcs-state.$ac_objext" - - + case "$host_os" in + # Guess no on OSF/1. + osf*) gl_cv_func_mbrtowc_null_arg2="guessing no" ;; + # Guess yes otherwise. + *) gl_cv_func_mbrtowc_null_arg2="guessing yes" ;; + esac + if test $LOCALE_FR_UTF8 != none; then + if test "$cross_compiling" = yes; then : : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ - fi - - - - - - GNULIB_MBSRTOWCS=1 - - - - - -$as_echo "#define GNULIB_TEST_MBSRTOWCS 1" >>confdefs.h - - - - - - - - - GNULIB_MBSSTR=1 - - - +#include +#include +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be + included before . */ +#include +#include +#include +#include +int main () +{ + if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) + { + mbstate_t state; + wchar_t wc; + int ret; + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + mbrtowc (&wc, NULL, 5, &state); + /* Check that wc was not modified. */ + if (wc != (wchar_t) 0xBADFACE) + return 1; + } + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_mbrtowc_null_arg2=yes +else + gl_cv_func_mbrtowc_null_arg2=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi -$as_echo "#define GNULIB_TEST_MBSSTR 1" >>confdefs.h + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_null_arg2" >&5 +$as_echo "$gl_cv_func_mbrtowc_null_arg2" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbswidth is declared in " >&5 -$as_echo_n "checking whether mbswidth is declared in ... " >&6; } -if ${ac_cv_have_decl_mbswidth+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc has a correct return value" >&5 +$as_echo_n "checking whether mbrtowc has a correct return value... " >&6; } +if ${gl_cv_func_mbrtowc_retval+:} false; then : $as_echo_n "(cached) " >&6 else + + case "$host_os" in + # Guess no on HP-UX, Solaris, native Windows. + hpux* | solaris* | mingw*) gl_cv_func_mbrtowc_retval="guessing no" ;; + # Guess yes otherwise. + *) gl_cv_func_mbrtowc_retval="guessing yes" ;; + esac + if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none \ + || { case "$host_os" in mingw*) true;; *) false;; esac; }; then + if test "$cross_compiling" = yes; then : + : +else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#include +#include /* Tru64 with Desktop Toolkit C has a bug: must be included before . - BSD/OS 4.0.1 has a bug: , and must be included - before . */ + BSD/OS 4.0.1 has a bug: , and must be + included before . */ #include #include #include #include - -int -main () +int main () { + int result = 0; + int found_some_locale = 0; + /* This fails on Solaris. */ + if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) + { + char input[] = "B\303\274\303\237er"; /* "Büßer" */ + mbstate_t state; + wchar_t wc; - char *p = (char *) mbswidth; - return !p; + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) + { + input[1] = '\0'; + if (mbrtowc (&wc, input + 2, 5, &state) != 1) + result |= 1; + } + found_some_locale = 1; + } + /* This fails on HP-UX 11.11. */ + if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) + { + char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */ + mbstate_t state; + wchar_t wc; - ; - return 0; + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) + { + input[1] = '\0'; + if (mbrtowc (&wc, input + 2, 5, &state) != 2) + result |= 2; + } + found_some_locale = 1; + } + /* This fails on native Windows. */ + if (setlocale (LC_ALL, "Japanese_Japan.932") != NULL) + { + char input[] = "<\223\372\226\173\214\352>"; /* "<日本語>" */ + mbstate_t state; + wchar_t wc; + + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2)) + { + input[3] = '\0'; + if (mbrtowc (&wc, input + 4, 4, &state) != 1) + result |= 4; + } + found_some_locale = 1; + } + if (setlocale (LC_ALL, "Chinese_Taiwan.950") != NULL) + { + char input[] = "<\244\351\245\273\273\171>"; /* "<日本語>" */ + mbstate_t state; + wchar_t wc; + + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2)) + { + input[3] = '\0'; + if (mbrtowc (&wc, input + 4, 4, &state) != 1) + result |= 8; + } + found_some_locale = 1; + } + if (setlocale (LC_ALL, "Chinese_China.936") != NULL) + { + char input[] = "<\310\325\261\276\325\132>"; /* "<日本語>" */ + mbstate_t state; + wchar_t wc; + + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2)) + { + input[3] = '\0'; + if (mbrtowc (&wc, input + 4, 4, &state) != 1) + result |= 16; + } + found_some_locale = 1; + } + return (found_some_locale ? result : 77); } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_have_decl_mbswidth=yes +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_mbrtowc_retval=yes else - ac_cv_have_decl_mbswidth=no + if test $? != 77; then + gl_cv_func_mbrtowc_retval=no + fi + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_mbswidth" >&5 -$as_echo "$ac_cv_have_decl_mbswidth" >&6; } - if test $ac_cv_have_decl_mbswidth = yes; then - ac_val=1 - else - ac_val=0 - fi -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_MBSWIDTH_IN_WCHAR_H $ac_val -_ACEOF + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_retval" >&5 +$as_echo "$gl_cv_func_mbrtowc_retval" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mbstate_t" >&5 -$as_echo_n "checking for mbstate_t... " >&6; } -if ${ac_cv_type_mbstate_t+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc returns 0 when parsing a NUL character" >&5 +$as_echo_n "checking whether mbrtowc returns 0 when parsing a NUL character... " >&6; } +if ${gl_cv_func_mbrtowc_nul_retval+:} false; then : $as_echo_n "(cached) " >&6 else + + case "$host_os" in + # Guess no on Solaris 8 and 9. + solaris2.[89]) gl_cv_func_mbrtowc_nul_retval="guessing no" ;; + # Guess yes otherwise. + *) gl_cv_func_mbrtowc_nul_retval="guessing yes" ;; + esac + if test $LOCALE_ZH_CN != none; then + if test "$cross_compiling" = yes; then : + : +else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default + +#include +#include /* Tru64 with Desktop Toolkit C has a bug: must be included before . BSD/OS 4.0.1 has a bug: , and must be @@ -43045,122 +46136,153 @@ #include #include #include -int -main () +int main () { -mbstate_t x; return sizeof x; - ; + /* This fails on Solaris 8 and 9. */ + if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) + { + mbstate_t state; + wchar_t wc; + + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (&wc, "", 1, &state) != 0) + return 1; + } return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_type_mbstate_t=yes +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_mbrtowc_nul_retval=yes else - ac_cv_type_mbstate_t=no + gl_cv_func_mbrtowc_nul_retval=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_mbstate_t" >&5 -$as_echo "$ac_cv_type_mbstate_t" >&6; } - if test $ac_cv_type_mbstate_t = yes; then - -$as_echo "#define HAVE_MBSTATE_T 1" >>confdefs.h - - else -$as_echo "#define mbstate_t int" >>confdefs.h + fi - fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_nul_retval" >&5 +$as_echo "$gl_cv_func_mbrtowc_nul_retval" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc works on empty input" >&5 +$as_echo_n "checking whether mbrtowc works on empty input... " >&6; } +if ${gl_cv_func_mbrtowc_empty_input+:} false; then : + $as_echo_n "(cached) " >&6 +else + case "$host_os" in + # Guess no on AIX and glibc systems. + aix* | *-gnu*) + gl_cv_func_mbrtowc_empty_input="guessing no" ;; + *) gl_cv_func_mbrtowc_empty_input="guessing yes" ;; + esac + if test "$cross_compiling" = yes; then : : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ - - if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS memchr.$ac_objext" - - - for ac_header in bp-sym.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "bp-sym.h" "ac_cv_header_bp_sym_h" "$ac_includes_default" -if test "x$ac_cv_header_bp_sym_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_BP_SYM_H 1 + #include + static wchar_t wc; + static mbstate_t mbs; + int + main (void) + { + return mbrtowc (&wc, "", 0, &mbs) != (size_t) -2; + } _ACEOF - +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_mbrtowc_empty_input=yes +else + gl_cv_func_mbrtowc_empty_input=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - -done - fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_empty_input" >&5 +$as_echo "$gl_cv_func_mbrtowc_empty_input" >&6; } + case "$gl_cv_func_mbrtowc_null_arg1" in + *yes) ;; + *) +$as_echo "#define MBRTOWC_NULL_ARG1_BUG 1" >>confdefs.h + REPLACE_MBRTOWC=1 + ;; + esac + case "$gl_cv_func_mbrtowc_null_arg2" in + *yes) ;; + *) +$as_echo "#define MBRTOWC_NULL_ARG2_BUG 1" >>confdefs.h + REPLACE_MBRTOWC=1 + ;; + esac + case "$gl_cv_func_mbrtowc_retval" in + *yes) ;; + *) +$as_echo "#define MBRTOWC_RETVAL_BUG 1" >>confdefs.h + REPLACE_MBRTOWC=1 + ;; + esac + case "$gl_cv_func_mbrtowc_nul_retval" in + *yes) ;; + *) +$as_echo "#define MBRTOWC_NUL_RETVAL_BUG 1" >>confdefs.h - GNULIB_MEMCHR=1 + REPLACE_MBRTOWC=1 + ;; + esac + case "$gl_cv_func_mbrtowc_empty_input" in + *yes) ;; + *) +$as_echo "#define MBRTOWC_EMPTY_INPUT_BUG 1" >>confdefs.h + REPLACE_MBRTOWC=1 + ;; + esac + fi + fi + if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then -$as_echo "#define GNULIB_TEST_MEMCHR 1" >>confdefs.h - for ac_func in memmove -do : - ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove" -if test "x$ac_cv_func_memmove" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MEMMOVE 1 -_ACEOF -fi -done + gl_LIBOBJS="$gl_LIBOBJS mbrtowc.$ac_objext" - if test $ac_cv_func_memmove = no; then + : + fi + GNULIB_MBRTOWC=1 - gl_LIBOBJS="$gl_LIBOBJS memmove.$ac_objext" - : - fi +$as_echo "#define GNULIB_TEST_MBRTOWC 1" >>confdefs.h - for ac_func in memset -do : - ac_fn_c_check_func "$LINENO" "memset" "ac_cv_func_memset" -if test "x$ac_cv_func_memset" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MEMSET 1 -_ACEOF -fi -done - if test $ac_cv_func_memset = no; then @@ -43169,719 +46291,914 @@ - gl_LIBOBJS="$gl_LIBOBJS memset.$ac_objext" - : + if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then - fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles incomplete characters" >&5 +$as_echo_n "checking whether mbrtowc handles incomplete characters... " >&6; } +if ${gl_cv_func_mbrtowc_incomplete_state+:} false; then : + $as_echo_n "(cached) " >&6 +else + case "$host_os" in + # Guess no on AIX and OSF/1. + aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;; + # Guess yes otherwise. + *) gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;; + esac + if test $LOCALE_JA != none; then + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be + included before . */ +#include +#include +#include +#include +int main () +{ + if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) + { + const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */ + mbstate_t state; + wchar_t wc; - for ac_func in mkdtemp -do : - ac_fn_c_check_func "$LINENO" "mkdtemp" "ac_cv_func_mkdtemp" -if test "x$ac_cv_func_mkdtemp" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MKDTEMP 1 + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) + if (mbsinit (&state)) + return 1; + } + return 0; +} _ACEOF - +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_mbrtowc_incomplete_state=yes +else + gl_cv_func_mbrtowc_incomplete_state=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -done - - if test $ac_cv_func_mkdtemp = no; then - HAVE_MKDTEMP=0 - fi - - if test $HAVE_MKDTEMP = 0; then + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_incomplete_state" >&5 +$as_echo "$gl_cv_func_mbrtowc_incomplete_state" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc works as well as mbtowc" >&5 +$as_echo_n "checking whether mbrtowc works as well as mbtowc... " >&6; } +if ${gl_cv_func_mbrtowc_sanitycheck+:} false; then : + $as_echo_n "(cached) " >&6 +else + case "$host_os" in + # Guess no on Solaris 8. + solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;; + # Guess yes otherwise. + *) gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;; + esac + if test $LOCALE_ZH_CN != none; then + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ - gl_LIBOBJS="$gl_LIBOBJS mkdtemp.$ac_objext" +#include +#include +#include +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be + included before . */ +#include +#include +#include +#include +int main () +{ + /* This fails on Solaris 8: + mbrtowc returns 2, and sets wc to 0x00F0. + mbtowc returns 4 (correct) and sets wc to 0x5EDC. */ + if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) + { + char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */ + mbstate_t state; + wchar_t wc; - : + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (&wc, input + 3, 6, &state) != 4 + && mbtowc (&wc, input + 3, 6) == 4) + return 1; + } + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_mbrtowc_sanitycheck=yes +else + gl_cv_func_mbrtowc_sanitycheck=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi - fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_sanitycheck" >&5 +$as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; } + REPLACE_MBSTATE_T=0 + case "$gl_cv_func_mbrtowc_incomplete_state" in + *yes) ;; + *) REPLACE_MBSTATE_T=1 ;; + esac + case "$gl_cv_func_mbrtowc_sanitycheck" in + *yes) ;; + *) REPLACE_MBSTATE_T=1 ;; + esac + else + REPLACE_MBSTATE_T=1 + fi - GNULIB_MKDTEMP=1 + if test $ac_cv_func_mbsinit = no; then + HAVE_MBSINIT=0 + ac_fn_c_check_decl "$LINENO" "mbsinit" "ac_cv_have_decl_mbsinit" " +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be + included before . */ +#include +#include +#include +#include +" +if test "x$ac_cv_have_decl_mbsinit" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_MBSINIT $ac_have_decl +_ACEOF + if test $ac_cv_have_decl_mbsinit = yes; then + REPLACE_MBSINIT=1 + fi + else + if test $REPLACE_MBSTATE_T = 1; then + REPLACE_MBSINIT=1 + else + case "$host_os" in + mingw*) REPLACE_MBSINIT=1 ;; + esac + fi + fi + if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then -$as_echo "#define GNULIB_TEST_MKDTEMP 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler is actually a C++ compiler" >&5 -$as_echo_n "checking whether the C compiler is actually a C++ compiler... " >&6; } -if ${gl_cv_c_cplusplus+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __cplusplus - Is c++ -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Is c++" >/dev/null 2>&1; then : - gl_cv_c_cplusplus=yes -else - gl_cv_c_cplusplus=no -fi -rm -f conftest* + gl_LIBOBJS="$gl_LIBOBJS mbsinit.$ac_objext" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_cplusplus" >&5 -$as_echo "$gl_cv_c_cplusplus" >&6; } - if test $gl_cv_c_cplusplus = yes; then -$as_echo "#define IS_CPLUSPLUS 1" >>confdefs.h + : fi - if test $ac_cv_func__set_invalid_parameter_handler = yes; then - HAVE_MSVC_INVALID_PARAMETER_HANDLER=1 -$as_echo "#define HAVE_MSVC_INVALID_PARAMETER_HANDLER 1" >>confdefs.h - else - HAVE_MSVC_INVALID_PARAMETER_HANDLER=0 - fi + GNULIB_MBSINIT=1 - if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then +$as_echo "#define GNULIB_TEST_MBSINIT 1" >>confdefs.h - gl_LIBOBJS="$gl_LIBOBJS msvc-inval.$ac_objext" + if test $ac_cv_func_mbslen = yes; then + HAVE_MBSLEN=1 + else + HAVE_MBSLEN=0 fi - if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then + GNULIB_MBSLEN=1 - gl_LIBOBJS="$gl_LIBOBJS msvc-nothrow.$ac_objext" +$as_echo "#define GNULIB_TEST_MBSLEN 1" >>confdefs.h + + - fi - NO_CXX= - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#if defined __GNUC__ && defined __cplusplus - Is g++ -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Is g++" >/dev/null 2>&1; then : - NO_CXX="-x c" -fi -rm -f conftest* + if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles incomplete characters" >&5 +$as_echo_n "checking whether mbrtowc handles incomplete characters... " >&6; } +if ${gl_cv_func_mbrtowc_incomplete_state+:} false; then : + $as_echo_n "(cached) " >&6 +else + case "$host_os" in + # Guess no on AIX and OSF/1. + aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;; + # Guess yes otherwise. + *) gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;; + esac + if test $LOCALE_JA != none; then + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be + included before . */ +#include +#include +#include +#include +int main () +{ + if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) + { + const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */ + mbstate_t state; + wchar_t wc; + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) + if (mbsinit (&state)) + return 1; + } + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_mbrtowc_incomplete_state=yes +else + gl_cv_func_mbrtowc_incomplete_state=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_incomplete_state" >&5 +$as_echo "$gl_cv_func_mbrtowc_incomplete_state" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for obstacks that work with any size object" >&5 -$as_echo_n "checking for obstacks that work with any size object... " >&6; } -if ${ac_cv_func_obstack+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc works as well as mbtowc" >&5 +$as_echo_n "checking whether mbrtowc works as well as mbtowc... " >&6; } +if ${gl_cv_func_mbrtowc_sanitycheck+:} false; then : $as_echo_n "(cached) " >&6 else + + case "$host_os" in + # Guess no on Solaris 8. + solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;; + # Guess yes otherwise. + *) gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;; + esac + if test $LOCALE_ZH_CN != none; then + if test "$cross_compiling" = yes; then : + : +else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include "obstack.h" - void *obstack_chunk_alloc (size_t n) { return 0; } - void obstack_chunk_free (void *p) { } - /* Check that an internal function returns size_t, not int. */ - size_t _obstack_memory_used (struct obstack *); -int -main () +#include +#include +#include +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be + included before . */ +#include +#include +#include +#include +int main () { -struct obstack mem; - obstack_init (&mem); - obstack_free (&mem, 0); + /* This fails on Solaris 8: + mbrtowc returns 2, and sets wc to 0x00F0. + mbtowc returns 4 (correct) and sets wc to 0x5EDC. */ + if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) + { + char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */ + mbstate_t state; + wchar_t wc; - ; + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (&wc, input + 3, 6, &state) != 4 + && mbtowc (&wc, input + 3, 6) == 4) + return 1; + } return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_func_obstack=yes +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_mbrtowc_sanitycheck=yes else - ac_cv_func_obstack=no + gl_cv_func_mbrtowc_sanitycheck=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_obstack" >&5 -$as_echo "$ac_cv_func_obstack" >&6; } - if test "$ac_cv_func_obstack" = yes; then -$as_echo "#define HAVE_OBSTACK 1" >>confdefs.h + fi - else +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_sanitycheck" >&5 +$as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; } + REPLACE_MBSTATE_T=0 + case "$gl_cv_func_mbrtowc_incomplete_state" in + *yes) ;; + *) REPLACE_MBSTATE_T=1 ;; + esac + case "$gl_cv_func_mbrtowc_sanitycheck" in + *yes) ;; + *) REPLACE_MBSTATE_T=1 ;; + esac + else + REPLACE_MBSTATE_T=1 + fi + if test $ac_cv_func_mbsrtowcs = no; then + HAVE_MBSRTOWCS=0 + ac_fn_c_check_decl "$LINENO" "mbsrtowcs" "ac_cv_have_decl_mbsrtowcs" " +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be + included before . */ +#include +#include +#include +#include +" +if test "x$ac_cv_have_decl_mbsrtowcs" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_MBSRTOWCS $ac_have_decl +_ACEOF + if test $ac_cv_have_decl_mbsrtowcs = yes; then + REPLACE_MBSRTOWCS=1 + fi + else + if test $REPLACE_MBSTATE_T = 1; then + REPLACE_MBSRTOWCS=1 + else - gl_LIBOBJS="$gl_LIBOBJS obstack.$ac_objext" - fi - case "$host_os" in - mingw* | pw*) - REPLACE_OPEN=1 - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether open recognizes a trailing slash" >&5 -$as_echo_n "checking whether open recognizes a trailing slash... " >&6; } -if ${gl_cv_func_open_slash+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbsrtowcs works" >&5 +$as_echo_n "checking whether mbsrtowcs works... " >&6; } +if ${gl_cv_func_mbsrtowcs_works+:} false; then : $as_echo_n "(cached) " >&6 else - # Assume that if we have lstat, we can also check symlinks. - if test $ac_cv_func_lstat = yes; then - touch conftest.tmp - ln -s conftest.tmp conftest.lnk - fi - if test "$cross_compiling" = yes; then : - - case "$host_os" in - freebsd* | aix* | hpux* | solaris2.[0-9] | solaris2.[0-9].*) - gl_cv_func_open_slash="guessing no" ;; - *) - gl_cv_func_open_slash="guessing yes" ;; - esac + case "$host_os" in + # Guess no on HP-UX, Solaris, mingw. + hpux* | solaris* | mingw*) gl_cv_func_mbsrtowcs_works="guessing no" ;; + # Guess yes otherwise. + *) gl_cv_func_mbsrtowcs_works="guessing yes" ;; + esac + if test $LOCALE_FR != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then + if test "$cross_compiling" = yes; then : + : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#if HAVE_UNISTD_H -# include -#endif +#include +#include +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be + included before . */ +#include +#include +#include +#include int main () { int result = 0; -#if HAVE_LSTAT - if (open ("conftest.lnk/", O_RDONLY) != -1) - result |= 1; -#endif - if (open ("conftest.sl/", O_CREAT, 0600) >= 0) - result |= 2; + /* Test whether the function supports a NULL destination argument. + This fails on native Windows. */ + if (setlocale (LC_ALL, "$LOCALE_FR") != NULL) + { + const char input[] = "\337er"; + const char *src = input; + mbstate_t state; + + memset (&state, '\0', sizeof (mbstate_t)); + if (mbsrtowcs (NULL, &src, 1, &state) != 3 + || src != input) + result |= 1; + } + /* Test whether the function works when started with a conversion state + in non-initial state. This fails on HP-UX 11.11 and Solaris 10. */ + if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) + { + const char input[] = "B\303\274\303\237er"; + mbstate_t state; + + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (NULL, input + 1, 1, &state) == (size_t)(-2)) + if (!mbsinit (&state)) + { + const char *src = input + 2; + if (mbsrtowcs (NULL, &src, 10, &state) != 4) + result |= 2; + } + } + if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) + { + const char input[] = "<\306\374\313\334\270\354>"; + mbstate_t state; + + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (NULL, input + 3, 1, &state) == (size_t)(-2)) + if (!mbsinit (&state)) + { + const char *src = input + 4; + if (mbsrtowcs (NULL, &src, 10, &state) != 3) + result |= 4; + } + } + if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) + { + const char input[] = "B\250\271\201\060\211\070er"; + mbstate_t state; + + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (NULL, input + 1, 1, &state) == (size_t)(-2)) + if (!mbsinit (&state)) + { + const char *src = input + 2; + if (mbsrtowcs (NULL, &src, 10, &state) != 4) + result |= 8; + } + } return result; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_open_slash=yes + gl_cv_func_mbsrtowcs_works=yes else - gl_cv_func_open_slash=no + gl_cv_func_mbsrtowcs_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi - rm -f conftest.sl conftest.tmp conftest.lnk + fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_open_slash" >&5 -$as_echo "$gl_cv_func_open_slash" >&6; } - case "$gl_cv_func_open_slash" in - *no) - -$as_echo "#define OPEN_TRAILING_SLASH_BUG 1" >>confdefs.h +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbsrtowcs_works" >&5 +$as_echo "$gl_cv_func_mbsrtowcs_works" >&6; } - REPLACE_OPEN=1 - ;; + case "$gl_cv_func_mbsrtowcs_works" in + *yes) ;; + *) REPLACE_MBSRTOWCS=1 ;; esac - ;; - esac - - - - if test $REPLACE_OPEN = 1; then - - - - - + fi + fi + if test $HAVE_MBSRTOWCS = 0 || test $REPLACE_MBSRTOWCS = 1; then - gl_LIBOBJS="$gl_LIBOBJS open.$ac_objext" - : - fi + gl_LIBOBJS="$gl_LIBOBJS mbsrtowcs.$ac_objext" - GNULIB_OPEN=1 -$as_echo "#define GNULIB_TEST_OPEN 1" >>confdefs.h + gl_LIBOBJS="$gl_LIBOBJS mbsrtowcs-state.$ac_objext" + : + fi - for ac_func in opendir -do : - ac_fn_c_check_func "$LINENO" "opendir" "ac_cv_func_opendir" -if test "x$ac_cv_func_opendir" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_OPENDIR 1 -_ACEOF -fi -done - if test $ac_cv_func_opendir = no; then - HAVE_OPENDIR=0 - fi + GNULIB_MBSRTOWCS=1 - if test $HAVE_OPENDIR = 0 || test $REPLACE_OPENDIR = 1; then +$as_echo "#define GNULIB_TEST_MBSRTOWCS 1" >>confdefs.h - gl_LIBOBJS="$gl_LIBOBJS opendir.$ac_objext" - fi + GNULIB_MBSSTR=1 - GNULIB_OPENDIR=1 +$as_echo "#define GNULIB_TEST_MBSSTR 1" >>confdefs.h -$as_echo "#define GNULIB_TEST_OPENDIR 1" >>confdefs.h - OPENMP_CFLAGS= - # Check whether --enable-openmp was given. -if test "${enable_openmp+set}" = set; then : - enableval=$enable_openmp; -fi - if test "$enable_openmp" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to support OpenMP" >&5 -$as_echo_n "checking for $CC option to support OpenMP... " >&6; } -if ${ac_cv_prog_c_openmp+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbswidth is declared in " >&5 +$as_echo_n "checking whether mbswidth is declared in ... " >&6; } +if ${ac_cv_have_decl_mbswidth+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifndef _OPENMP - choke me -#endif -#include -int main () { return omp_get_num_threads (); } - -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_prog_c_openmp='none needed' -else - ac_cv_prog_c_openmp='unsupported' - for ac_option in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp -homp \ - -Popenmp --openmp; do - ac_save_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS $ac_option" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be included + before . */ +#include +#include +#include +#include -#ifndef _OPENMP - choke me -#endif -#include -int main () { return omp_get_num_threads (); } +int +main () +{ + + char *p = (char *) mbswidth; + return !p; + ; + return 0; +} _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_prog_c_openmp=$ac_option -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS=$ac_save_CFLAGS - if test "$ac_cv_prog_c_openmp" != unsupported; then - break - fi - done +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_have_decl_mbswidth=yes +else + ac_cv_have_decl_mbswidth=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_c_openmp" >&5 -$as_echo "$ac_cv_prog_c_openmp" >&6; } - case $ac_cv_prog_c_openmp in #( - "none needed" | unsupported) - ;; #( - *) - OPENMP_CFLAGS=$ac_cv_prog_c_openmp ;; - esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_mbswidth" >&5 +$as_echo "$ac_cv_have_decl_mbswidth" >&6; } + if test $ac_cv_have_decl_mbswidth = yes; then + ac_val=1 + else + ac_val=0 fi +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_MBSWIDTH_IN_WCHAR_H $ac_val +_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mbstate_t" >&5 +$as_echo_n "checking for mbstate_t... " >&6; } +if ${ac_cv_type_mbstate_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be + included before . */ +#include +#include +#include +#include +int +main () +{ +mbstate_t x; return sizeof x; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_type_mbstate_t=yes +else + ac_cv_type_mbstate_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_mbstate_t" >&5 +$as_echo "$ac_cv_type_mbstate_t" >&6; } + if test $ac_cv_type_mbstate_t = yes; then +$as_echo "#define HAVE_MBSTATE_T 1" >>confdefs.h + else +$as_echo "#define mbstate_t int" >>confdefs.h + fi - if test $ac_cv_func_pipe2 != yes; then - HAVE_PIPE2=0 - fi + : + if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then - GNULIB_PIPE2=1 -$as_echo "#define GNULIB_TEST_PIPE2 1" >>confdefs.h + gl_LIBOBJS="$gl_LIBOBJS memchr.$ac_objext" + for ac_header in bp-sym.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "bp-sym.h" "ac_cv_header_bp_sym_h" "$ac_includes_default" +if test "x$ac_cv_header_bp_sym_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_BP_SYM_H 1 +_ACEOF +fi +done -cat >>confdefs.h <<_ACEOF -#define GNULIB_PIPE2_SAFER 1 -_ACEOF + fi + GNULIB_MEMCHR=1 - if test $REPLACE_POSIX_SPAWN = 1; then - REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE=1 - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether posix_spawn_file_actions_addclose works" >&5 -$as_echo_n "checking whether posix_spawn_file_actions_addclose works... " >&6; } -if ${gl_cv_func_posix_spawn_file_actions_addclose_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - # Guess no on Solaris, yes otherwise. - case "$host_os" in - solaris*) gl_cv_func_posix_spawn_file_actions_addclose_works="guessing no";; - *) gl_cv_func_posix_spawn_file_actions_addclose_works="guessing yes";; - esac -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int main () -{ - posix_spawn_file_actions_t actions; - if (posix_spawn_file_actions_init (&actions) != 0) - return 1; - if (posix_spawn_file_actions_addclose (&actions, 10000000) == 0) - return 2; - return 0; -} + +$as_echo "#define GNULIB_TEST_MEMCHR 1" >>confdefs.h + + + + + for ac_func in memmove +do : + ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove" +if test "x$ac_cv_func_memmove" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_MEMMOVE 1 _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_posix_spawn_file_actions_addclose_works=yes -else - gl_cv_func_posix_spawn_file_actions_addclose_works=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + fi +done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_posix_spawn_file_actions_addclose_works" >&5 -$as_echo "$gl_cv_func_posix_spawn_file_actions_addclose_works" >&6; } - case "$gl_cv_func_posix_spawn_file_actions_addclose_works" in - *yes) ;; - *) REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE=1 ;; - esac - fi + if test $ac_cv_func_memmove = no; then + - if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE = 1; then + gl_LIBOBJS="$gl_LIBOBJS memmove.$ac_objext" - gl_LIBOBJS="$gl_LIBOBJS spawn_faction_addclose.$ac_objext" + : fi + for ac_func in memset +do : + ac_fn_c_check_func "$LINENO" "memset" "ac_cv_func_memset" +if test "x$ac_cv_func_memset" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_MEMSET 1 +_ACEOF +fi +done - - GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE=1 + if test $ac_cv_func_memset = no; then -$as_echo "#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE 1" >>confdefs.h + gl_LIBOBJS="$gl_LIBOBJS memset.$ac_objext" + : + fi - if test $REPLACE_POSIX_SPAWN = 1; then - REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2=1 - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether posix_spawn_file_actions_adddup2 works" >&5 -$as_echo_n "checking whether posix_spawn_file_actions_adddup2 works... " >&6; } -if ${gl_cv_func_posix_spawn_file_actions_adddup2_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - # Guess no on Solaris, yes otherwise. - case "$host_os" in - solaris*) gl_cv_func_posix_spawn_file_actions_adddup2_works="guessing no";; - *) gl_cv_func_posix_spawn_file_actions_adddup2_works="guessing yes";; - esac -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int main () -{ - posix_spawn_file_actions_t actions; - if (posix_spawn_file_actions_init (&actions) != 0) - return 1; - if (posix_spawn_file_actions_adddup2 (&actions, 10000000, 2) == 0) - return 2; - return 0; -} + for ac_func in mkdtemp +do : + ac_fn_c_check_func "$LINENO" "mkdtemp" "ac_cv_func_mkdtemp" +if test "x$ac_cv_func_mkdtemp" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_MKDTEMP 1 _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_posix_spawn_file_actions_adddup2_works=yes -else - gl_cv_func_posix_spawn_file_actions_adddup2_works=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_posix_spawn_file_actions_adddup2_works" >&5 -$as_echo "$gl_cv_func_posix_spawn_file_actions_adddup2_works" >&6; } - case "$gl_cv_func_posix_spawn_file_actions_adddup2_works" in - *yes) ;; - *) REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2=1 ;; - esac - fi - - if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 = 1; then - +done + if test $ac_cv_func_mkdtemp = no; then + HAVE_MKDTEMP=0 + fi + if test $HAVE_MKDTEMP = 0; then - gl_LIBOBJS="$gl_LIBOBJS spawn_faction_adddup2.$ac_objext" - fi + gl_LIBOBJS="$gl_LIBOBJS mkdtemp.$ac_objext" + : + fi - GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2=1 + GNULIB_MKDTEMP=1 -$as_echo "#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 1" >>confdefs.h +$as_echo "#define GNULIB_TEST_MKDTEMP 1" >>confdefs.h - if test $REPLACE_POSIX_SPAWN = 1; then - REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN=1 - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether posix_spawn_file_actions_addopen works" >&5 -$as_echo_n "checking whether posix_spawn_file_actions_addopen works... " >&6; } -if ${gl_cv_func_posix_spawn_file_actions_addopen_works+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler is actually a C++ compiler" >&5 +$as_echo_n "checking whether the C compiler is actually a C++ compiler... " >&6; } +if ${gl_cv_c_cplusplus+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then : - # Guess no on Solaris, yes otherwise. - case "$host_os" in - solaris*) gl_cv_func_posix_spawn_file_actions_addopen_works="guessing no";; - *) gl_cv_func_posix_spawn_file_actions_addopen_works="guessing yes";; - esac - -else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -int main () -{ - posix_spawn_file_actions_t actions; - if (posix_spawn_file_actions_init (&actions) != 0) - return 1; - if (posix_spawn_file_actions_addopen (&actions, 10000000, "foo", 0, O_RDONLY) - == 0) - return 2; - return 0; -} +#ifdef __cplusplus + Is c++ +#endif + _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_posix_spawn_file_actions_addopen_works=yes +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Is c++" >/dev/null 2>&1; then : + gl_cv_c_cplusplus=yes else - gl_cv_func_posix_spawn_file_actions_addopen_works=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + gl_cv_c_cplusplus=no fi - +rm -f conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_posix_spawn_file_actions_addopen_works" >&5 -$as_echo "$gl_cv_func_posix_spawn_file_actions_addopen_works" >&6; } - case "$gl_cv_func_posix_spawn_file_actions_addopen_works" in - *yes) ;; - *) REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN=1 ;; - esac - fi - - if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = 1; then - - +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_cplusplus" >&5 +$as_echo "$gl_cv_c_cplusplus" >&6; } + if test $gl_cv_c_cplusplus = yes; then +$as_echo "#define IS_CPLUSPLUS 1" >>confdefs.h + fi + if test $ac_cv_func__set_invalid_parameter_handler = yes; then + HAVE_MSVC_INVALID_PARAMETER_HANDLER=1 - gl_LIBOBJS="$gl_LIBOBJS spawn_faction_addopen.$ac_objext" +$as_echo "#define HAVE_MSVC_INVALID_PARAMETER_HANDLER 1" >>confdefs.h + else + HAVE_MSVC_INVALID_PARAMETER_HANDLER=0 fi + if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then - GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN=1 - - -$as_echo "#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN 1" >>confdefs.h + gl_LIBOBJS="$gl_LIBOBJS msvc-inval.$ac_objext" + fi - if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then + if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then @@ -43890,129 +47207,727 @@ - gl_LIBOBJS="$gl_LIBOBJS spawn_faction_destroy.$ac_objext" + gl_LIBOBJS="$gl_LIBOBJS msvc-nothrow.$ac_objext" fi + NO_CXX= + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __GNUC__ && defined __cplusplus + Is g++ +#endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Is g++" >/dev/null 2>&1; then : + NO_CXX="-x c" +fi +rm -f conftest* - GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY=1 -$as_echo "#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_DESTROY 1" >>confdefs.h - if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for obstacks that work with any size object" >&5 +$as_echo_n "checking for obstacks that work with any size object... " >&6; } +if ${ac_cv_func_obstack+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include "obstack.h" + void *obstack_chunk_alloc (size_t n) { return 0; } + void obstack_chunk_free (void *p) { } + /* Check that an internal function returns size_t, not int. */ + size_t _obstack_memory_used (struct obstack *); +int +main () +{ +struct obstack mem; + obstack_init (&mem); + obstack_free (&mem, 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_obstack=yes +else + ac_cv_func_obstack=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_obstack" >&5 +$as_echo "$ac_cv_func_obstack" >&6; } + if test "$ac_cv_func_obstack" = yes; then +$as_echo "#define HAVE_OBSTACK 1" >>confdefs.h + else - gl_LIBOBJS="$gl_LIBOBJS spawn_faction_init.$ac_objext" - fi - GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT=1 + gl_LIBOBJS="$gl_LIBOBJS obstack.$ac_objext" + fi + case "$host_os" in + mingw* | pw*) + REPLACE_OPEN=1 + ;; + *) -$as_echo "#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_INIT 1" >>confdefs.h + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether open recognizes a trailing slash" >&5 +$as_echo_n "checking whether open recognizes a trailing slash... " >&6; } +if ${gl_cv_func_open_slash+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Assume that if we have lstat, we can also check symlinks. + if test $ac_cv_func_lstat = yes; then + touch conftest.tmp + ln -s conftest.tmp conftest.lnk + fi + if test "$cross_compiling" = yes; then : + case "$host_os" in + freebsd* | aix* | hpux* | solaris2.[0-9] | solaris2.[0-9].*) + gl_cv_func_open_slash="guessing no" ;; + *) + gl_cv_func_open_slash="guessing yes" ;; + esac +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if HAVE_UNISTD_H +# include +#endif +int main () +{ + int result = 0; +#if HAVE_LSTAT + if (open ("conftest.lnk/", O_RDONLY) != -1) + result |= 1; +#endif + if (open ("conftest.sl/", O_CREAT, 0600) >= 0) + result |= 2; + return result; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_open_slash=yes +else + gl_cv_func_open_slash=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + rm -f conftest.sl conftest.tmp conftest.lnk +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_open_slash" >&5 +$as_echo "$gl_cv_func_open_slash" >&6; } + case "$gl_cv_func_open_slash" in + *no) - if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then +$as_echo "#define OPEN_TRAILING_SLASH_BUG 1" >>confdefs.h + REPLACE_OPEN=1 + ;; + esac + ;; + esac + if test $REPLACE_OPEN = 1; then - gl_LIBOBJS="$gl_LIBOBJS spawnattr_destroy.$ac_objext" - fi + gl_LIBOBJS="$gl_LIBOBJS open.$ac_objext" - GNULIB_POSIX_SPAWNATTR_DESTROY=1 + : + fi -$as_echo "#define GNULIB_TEST_POSIX_SPAWNATTR_DESTROY 1" >>confdefs.h + GNULIB_OPEN=1 - if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then +$as_echo "#define GNULIB_TEST_OPEN 1" >>confdefs.h + for ac_func in opendir +do : + ac_fn_c_check_func "$LINENO" "opendir" "ac_cv_func_opendir" +if test "x$ac_cv_func_opendir" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_OPENDIR 1 +_ACEOF - gl_LIBOBJS="$gl_LIBOBJS spawnattr_init.$ac_objext" +fi +done + if test $ac_cv_func_opendir = no; then + HAVE_OPENDIR=0 fi + if test $HAVE_OPENDIR = 0 || test $REPLACE_OPENDIR = 1; then - GNULIB_POSIX_SPAWNATTR_INIT=1 -$as_echo "#define GNULIB_TEST_POSIX_SPAWNATTR_INIT 1" >>confdefs.h + gl_LIBOBJS="$gl_LIBOBJS opendir.$ac_objext" + fi - if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then + GNULIB_OPENDIR=1 +$as_echo "#define GNULIB_TEST_OPENDIR 1" >>confdefs.h - gl_LIBOBJS="$gl_LIBOBJS spawnattr_setflags.$ac_objext" - fi + OPENMP_CFLAGS= + # Check whether --enable-openmp was given. +if test "${enable_openmp+set}" = set; then : + enableval=$enable_openmp; +fi + + if test "$enable_openmp" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to support OpenMP" >&5 +$as_echo_n "checking for $CC option to support OpenMP... " >&6; } +if ${ac_cv_prog_c_openmp+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef _OPENMP + choke me +#endif +#include +int main () { return omp_get_num_threads (); } + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_prog_c_openmp='none needed' +else + ac_cv_prog_c_openmp='unsupported' + for ac_option in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp -homp \ + -Popenmp --openmp; do + ac_save_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $ac_option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef _OPENMP + choke me +#endif +#include +int main () { return omp_get_num_threads (); } + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_prog_c_openmp=$ac_option +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS=$ac_save_CFLAGS + if test "$ac_cv_prog_c_openmp" != unsupported; then + break + fi + done +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_c_openmp" >&5 +$as_echo "$ac_cv_prog_c_openmp" >&6; } + case $ac_cv_prog_c_openmp in #( + "none needed" | unsupported) + ;; #( + *) + OPENMP_CFLAGS=$ac_cv_prog_c_openmp ;; + esac + fi + + + + + + + + + + + + + if test $ac_cv_func_pipe2 != yes; then + HAVE_PIPE2=0 + fi + + + + + + + GNULIB_PIPE2=1 + + + + + +$as_echo "#define GNULIB_TEST_PIPE2 1" >>confdefs.h + + + + + +cat >>confdefs.h <<_ACEOF +#define GNULIB_PIPE2_SAFER 1 +_ACEOF + + + + + + + + + if test $REPLACE_POSIX_SPAWN = 1; then + REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE=1 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether posix_spawn_file_actions_addclose works" >&5 +$as_echo_n "checking whether posix_spawn_file_actions_addclose works... " >&6; } +if ${gl_cv_func_posix_spawn_file_actions_addclose_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + # Guess no on Solaris, yes otherwise. + case "$host_os" in + solaris*) gl_cv_func_posix_spawn_file_actions_addclose_works="guessing no";; + *) gl_cv_func_posix_spawn_file_actions_addclose_works="guessing yes";; + esac + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +int main () +{ + posix_spawn_file_actions_t actions; + if (posix_spawn_file_actions_init (&actions) != 0) + return 1; + if (posix_spawn_file_actions_addclose (&actions, 10000000) == 0) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_posix_spawn_file_actions_addclose_works=yes +else + gl_cv_func_posix_spawn_file_actions_addclose_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_posix_spawn_file_actions_addclose_works" >&5 +$as_echo "$gl_cv_func_posix_spawn_file_actions_addclose_works" >&6; } + case "$gl_cv_func_posix_spawn_file_actions_addclose_works" in + *yes) ;; + *) REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE=1 ;; + esac + fi + + if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE = 1; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS spawn_faction_addclose.$ac_objext" + + fi + + + + + + GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE=1 + + + + + +$as_echo "#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE 1" >>confdefs.h + + + + + + + + + + if test $REPLACE_POSIX_SPAWN = 1; then + REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2=1 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether posix_spawn_file_actions_adddup2 works" >&5 +$as_echo_n "checking whether posix_spawn_file_actions_adddup2 works... " >&6; } +if ${gl_cv_func_posix_spawn_file_actions_adddup2_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + # Guess no on Solaris, yes otherwise. + case "$host_os" in + solaris*) gl_cv_func_posix_spawn_file_actions_adddup2_works="guessing no";; + *) gl_cv_func_posix_spawn_file_actions_adddup2_works="guessing yes";; + esac + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +int main () +{ + posix_spawn_file_actions_t actions; + if (posix_spawn_file_actions_init (&actions) != 0) + return 1; + if (posix_spawn_file_actions_adddup2 (&actions, 10000000, 2) == 0) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_posix_spawn_file_actions_adddup2_works=yes +else + gl_cv_func_posix_spawn_file_actions_adddup2_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_posix_spawn_file_actions_adddup2_works" >&5 +$as_echo "$gl_cv_func_posix_spawn_file_actions_adddup2_works" >&6; } + case "$gl_cv_func_posix_spawn_file_actions_adddup2_works" in + *yes) ;; + *) REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2=1 ;; + esac + fi + + if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 = 1; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS spawn_faction_adddup2.$ac_objext" + + fi + + + + + + GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2=1 + + + + + +$as_echo "#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 1" >>confdefs.h + + + + + + + + + + if test $REPLACE_POSIX_SPAWN = 1; then + REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN=1 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether posix_spawn_file_actions_addopen works" >&5 +$as_echo_n "checking whether posix_spawn_file_actions_addopen works... " >&6; } +if ${gl_cv_func_posix_spawn_file_actions_addopen_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + # Guess no on Solaris, yes otherwise. + case "$host_os" in + solaris*) gl_cv_func_posix_spawn_file_actions_addopen_works="guessing no";; + *) gl_cv_func_posix_spawn_file_actions_addopen_works="guessing yes";; + esac + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +int main () +{ + posix_spawn_file_actions_t actions; + if (posix_spawn_file_actions_init (&actions) != 0) + return 1; + if (posix_spawn_file_actions_addopen (&actions, 10000000, "foo", 0, O_RDONLY) + == 0) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_posix_spawn_file_actions_addopen_works=yes +else + gl_cv_func_posix_spawn_file_actions_addopen_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_posix_spawn_file_actions_addopen_works" >&5 +$as_echo "$gl_cv_func_posix_spawn_file_actions_addopen_works" >&6; } + case "$gl_cv_func_posix_spawn_file_actions_addopen_works" in + *yes) ;; + *) REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN=1 ;; + esac + fi + + if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = 1; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS spawn_faction_addopen.$ac_objext" + + fi + + + + + + GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN=1 + + + + + +$as_echo "#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN 1" >>confdefs.h + + + + + + + if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS spawn_faction_destroy.$ac_objext" + + fi + + + + + + GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY=1 + + + + + +$as_echo "#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_DESTROY 1" >>confdefs.h + + + + + + + if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS spawn_faction_init.$ac_objext" + + fi + + + + + + GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT=1 + + + + + +$as_echo "#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_INIT 1" >>confdefs.h + + + + + + + if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS spawnattr_destroy.$ac_objext" + + fi + + + + + + GNULIB_POSIX_SPAWNATTR_DESTROY=1 + + + + + +$as_echo "#define GNULIB_TEST_POSIX_SPAWNATTR_DESTROY 1" >>confdefs.h + + + + + + + if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS spawnattr_init.$ac_objext" + + fi + + + + + + GNULIB_POSIX_SPAWNATTR_INIT=1 + + + + + +$as_echo "#define GNULIB_TEST_POSIX_SPAWNATTR_INIT 1" >>confdefs.h + + + + + + + if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS spawnattr_setflags.$ac_objext" + + fi @@ -44124,6 +48039,15 @@ + + + + + POW_LIBM="$POW_LIBM" + + + + ac_fn_c_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include " if test "x$ac_cv_have_decl_program_invocation_name" = xyes; then : @@ -45278,16 +49202,774 @@ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for signbit macro" >&5 +$as_echo_n "checking for signbit macro... " >&6; } +if ${gl_cv_func_signbit+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + case "$host_os" in + # Guess yes on glibc systems. + *-gnu*) gl_cv_func_signbit="guessing yes" ;; + # If we don't know, assume the worst. + *) gl_cv_func_signbit="guessing no" ;; + esac +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -cat >>confdefs.h <<_ACEOF -#define GNULIB_SIGPIPE 1 -_ACEOF +#include +/* If signbit is defined as a function, don't use it, since calling it for + 'float' or 'long double' arguments would involve conversions. + If signbit is not declared at all but exists as a library function, don't + use it, since the prototype may not match. + If signbit is not declared at all but exists as a compiler built-in, don't + use it, since it's preferable to use __builtin_signbit* (no warnings, + no conversions). */ +#ifndef signbit +# error "signbit should be a macro" +#endif +#include +/* Global variables. + Needed because GCC 4 constant-folds __builtin_signbitl (literal) + but cannot constant-fold __builtin_signbitl (variable). */ +float vf; +double vd; +long double vl; +int main () +{ +/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. + So we use -p0f and -p0d instead. */ +float p0f = 0.0f; +float m0f = -p0f; +double p0d = 0.0; +double m0d = -p0d; +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use another constant expression instead. + But that expression does not work on other platforms, such as when + cross-compiling to PowerPC on Mac OS X 10.5. */ +long double p0l = 0.0L; +#if defined __hpux || defined __sgi +long double m0l = -LDBL_MIN * LDBL_MIN; +#else +long double m0l = -p0l; +#endif + int result = 0; + if (signbit (vf)) /* link check */ + vf++; + { + float plus_inf = 1.0f / p0f; + float minus_inf = -1.0f / p0f; + if (!(!signbit (255.0f) + && signbit (-255.0f) + && !signbit (p0f) + && (memcmp (&m0f, &p0f, sizeof (float)) == 0 || signbit (m0f)) + && !signbit (plus_inf) + && signbit (minus_inf))) + result |= 1; + } + if (signbit (vd)) /* link check */ + vd++; + { + double plus_inf = 1.0 / p0d; + double minus_inf = -1.0 / p0d; + if (!(!signbit (255.0) + && signbit (-255.0) + && !signbit (p0d) + && (memcmp (&m0d, &p0d, sizeof (double)) == 0 || signbit (m0d)) + && !signbit (plus_inf) + && signbit (minus_inf))) + result |= 2; + } + if (signbit (vl)) /* link check */ + vl++; + { + long double plus_inf = 1.0L / p0l; + long double minus_inf = -1.0L / p0l; + if (signbit (255.0L)) + result |= 4; + if (!signbit (-255.0L)) + result |= 4; + if (signbit (p0l)) + result |= 8; + if (!(memcmp (&m0l, &p0l, sizeof (long double)) == 0 || signbit (m0l))) + result |= 16; + if (signbit (plus_inf)) + result |= 32; + if (!signbit (minus_inf)) + result |= 64; + } + return result; +} - GNULIB_SIGNAL_H_SIGPIPE=1 +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_signbit=yes +else + gl_cv_func_signbit=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_signbit" >&5 +$as_echo "$gl_cv_func_signbit" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for signbit compiler built-ins" >&5 +$as_echo_n "checking for signbit compiler built-ins... " >&6; } +if ${gl_cv_func_signbit_gcc+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + case "$host_os" in + # Guess yes on glibc systems. + *-gnu*) gl_cv_func_signbit_gcc="guessing yes" ;; + # If we don't know, assume the worst. + *) gl_cv_func_signbit_gcc="guessing no" ;; + esac + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if __GNUC__ >= 4 +# define signbit(x) \ + (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \ + sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \ + __builtin_signbitf (x)) +#else +# error "signbit should be three compiler built-ins" +#endif +#include + +/* Global variables. + Needed because GCC 4 constant-folds __builtin_signbitl (literal) + but cannot constant-fold __builtin_signbitl (variable). */ +float vf; +double vd; +long double vl; +int main () +{ +/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. + So we use -p0f and -p0d instead. */ +float p0f = 0.0f; +float m0f = -p0f; +double p0d = 0.0; +double m0d = -p0d; +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use another constant expression instead. + But that expression does not work on other platforms, such as when + cross-compiling to PowerPC on Mac OS X 10.5. */ +long double p0l = 0.0L; +#if defined __hpux || defined __sgi +long double m0l = -LDBL_MIN * LDBL_MIN; +#else +long double m0l = -p0l; +#endif + int result = 0; + if (signbit (vf)) /* link check */ + vf++; + { + float plus_inf = 1.0f / p0f; + float minus_inf = -1.0f / p0f; + if (!(!signbit (255.0f) + && signbit (-255.0f) + && !signbit (p0f) + && (memcmp (&m0f, &p0f, sizeof (float)) == 0 || signbit (m0f)) + && !signbit (plus_inf) + && signbit (minus_inf))) + result |= 1; + } + if (signbit (vd)) /* link check */ + vd++; + { + double plus_inf = 1.0 / p0d; + double minus_inf = -1.0 / p0d; + if (!(!signbit (255.0) + && signbit (-255.0) + && !signbit (p0d) + && (memcmp (&m0d, &p0d, sizeof (double)) == 0 || signbit (m0d)) + && !signbit (plus_inf) + && signbit (minus_inf))) + result |= 2; + } + if (signbit (vl)) /* link check */ + vl++; + { + long double plus_inf = 1.0L / p0l; + long double minus_inf = -1.0L / p0l; + if (signbit (255.0L)) + result |= 4; + if (!signbit (-255.0L)) + result |= 4; + if (signbit (p0l)) + result |= 8; + if (!(memcmp (&m0l, &p0l, sizeof (long double)) == 0 || signbit (m0l))) + result |= 16; + if (signbit (plus_inf)) + result |= 32; + if (!signbit (minus_inf)) + result |= 64; + } + return result; +} + + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_signbit_gcc=yes +else + gl_cv_func_signbit_gcc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_signbit_gcc" >&5 +$as_echo "$gl_cv_func_signbit_gcc" >&6; } + case "$gl_cv_func_signbit_gcc" in + *yes) + REPLACE_SIGNBIT_USING_GCC=1 + ;; + *) + case "$gl_cv_func_signbit" in + *yes) ;; + *) + REPLACE_SIGNBIT=1 + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the sign bit in a 'float'" >&5 +$as_echo_n "checking where to find the sign bit in a 'float'... " >&6; } +if ${gl_cv_cc_float_signbit+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + + gl_cv_cc_float_signbit="unknown" + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { float value; unsigned int word[NWORDS]; } + memory_float; +static memory_float plus = { 1.0f }; +static memory_float minus = { -1.0f }; +int main () +{ + size_t j, k, i; + unsigned int m; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + /* Find the different bit. */ + k = 0; m = 0; + for (j = 0; j < NWORDS; j++) + { + unsigned int x = plus.word[j] ^ minus.word[j]; + if ((x & (x - 1)) || (x && m)) + { + /* More than one bit difference. */ + fprintf (fp, "unknown"); + return 2; + } + if (x) + { + k = j; + m = x; + } + } + if (m == 0) + { + /* No difference. */ + fprintf (fp, "unknown"); + return 3; + } + /* Now m = plus.word[k] ^ ~minus.word[k]. */ + if (plus.word[k] & ~minus.word[k]) + { + /* Oh? The sign bit is set in the positive and cleared in the negative + numbers? */ + fprintf (fp, "unknown"); + return 4; + } + for (i = 0; ; i++) + if ((m >> i) & 1) + break; + fprintf (fp, "word %d bit %d", (int) k, (int) i); + if (fclose (fp) != 0) + return 5; + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_float_signbit=`cat conftest.out` +else + gl_cv_cc_float_signbit="unknown" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + rm -f conftest.out + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_float_signbit" >&5 +$as_echo "$gl_cv_cc_float_signbit" >&6; } + case "$gl_cv_cc_float_signbit" in + word*bit*) + word=`echo "$gl_cv_cc_float_signbit" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_float_signbit" | sed -e 's/word.*bit //'` + +cat >>confdefs.h <<_ACEOF +#define FLT_SIGNBIT_WORD $word +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define FLT_SIGNBIT_BIT $bit +_ACEOF + + ;; + esac + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the sign bit in a 'double'" >&5 +$as_echo_n "checking where to find the sign bit in a 'double'... " >&6; } +if ${gl_cv_cc_double_signbit+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + + gl_cv_cc_double_signbit="unknown" + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#define NWORDS \ + ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { double value; unsigned int word[NWORDS]; } + memory_float; +static memory_float plus = { 1.0 }; +static memory_float minus = { -1.0 }; +int main () +{ + size_t j, k, i; + unsigned int m; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + /* Find the different bit. */ + k = 0; m = 0; + for (j = 0; j < NWORDS; j++) + { + unsigned int x = plus.word[j] ^ minus.word[j]; + if ((x & (x - 1)) || (x && m)) + { + /* More than one bit difference. */ + fprintf (fp, "unknown"); + return 2; + } + if (x) + { + k = j; + m = x; + } + } + if (m == 0) + { + /* No difference. */ + fprintf (fp, "unknown"); + return 3; + } + /* Now m = plus.word[k] ^ ~minus.word[k]. */ + if (plus.word[k] & ~minus.word[k]) + { + /* Oh? The sign bit is set in the positive and cleared in the negative + numbers? */ + fprintf (fp, "unknown"); + return 4; + } + for (i = 0; ; i++) + if ((m >> i) & 1) + break; + fprintf (fp, "word %d bit %d", (int) k, (int) i); + if (fclose (fp) != 0) + return 5; + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_double_signbit=`cat conftest.out` +else + gl_cv_cc_double_signbit="unknown" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + rm -f conftest.out + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_double_signbit" >&5 +$as_echo "$gl_cv_cc_double_signbit" >&6; } + case "$gl_cv_cc_double_signbit" in + word*bit*) + word=`echo "$gl_cv_cc_double_signbit" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_double_signbit" | sed -e 's/word.*bit //'` + +cat >>confdefs.h <<_ACEOF +#define DBL_SIGNBIT_WORD $word +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define DBL_SIGNBIT_BIT $bit +_ACEOF + + ;; + esac + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the sign bit in a 'long double'" >&5 +$as_echo_n "checking where to find the sign bit in a 'long double'... " >&6; } +if ${gl_cv_cc_long_double_signbit+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + + gl_cv_cc_long_double_signbit="unknown" + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { long double value; unsigned int word[NWORDS]; } + memory_float; +static memory_float plus = { 1.0L }; +static memory_float minus = { -1.0L }; +int main () +{ + size_t j, k, i; + unsigned int m; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + /* Find the different bit. */ + k = 0; m = 0; + for (j = 0; j < NWORDS; j++) + { + unsigned int x = plus.word[j] ^ minus.word[j]; + if ((x & (x - 1)) || (x && m)) + { + /* More than one bit difference. */ + fprintf (fp, "unknown"); + return 2; + } + if (x) + { + k = j; + m = x; + } + } + if (m == 0) + { + /* No difference. */ + fprintf (fp, "unknown"); + return 3; + } + /* Now m = plus.word[k] ^ ~minus.word[k]. */ + if (plus.word[k] & ~minus.word[k]) + { + /* Oh? The sign bit is set in the positive and cleared in the negative + numbers? */ + fprintf (fp, "unknown"); + return 4; + } + for (i = 0; ; i++) + if ((m >> i) & 1) + break; + fprintf (fp, "word %d bit %d", (int) k, (int) i); + if (fclose (fp) != 0) + return 5; + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_long_double_signbit=`cat conftest.out` +else + gl_cv_cc_long_double_signbit="unknown" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + rm -f conftest.out + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_long_double_signbit" >&5 +$as_echo "$gl_cv_cc_long_double_signbit" >&6; } + case "$gl_cv_cc_long_double_signbit" in + word*bit*) + word=`echo "$gl_cv_cc_long_double_signbit" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_long_double_signbit" | sed -e 's/word.*bit //'` + +cat >>confdefs.h <<_ACEOF +#define LDBL_SIGNBIT_WORD $word +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define LDBL_SIGNBIT_BIT $bit +_ACEOF + + ;; + esac + + + if test "$gl_cv_cc_float_signbit" = unknown; then + ac_fn_c_check_decl "$LINENO" "copysignf" "ac_cv_have_decl_copysignf" "#include +" +if test "x$ac_cv_have_decl_copysignf" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_COPYSIGNF $ac_have_decl +_ACEOF + + if test "$ac_cv_have_decl_copysignf" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether copysignf can be used without linking with libm" >&5 +$as_echo_n "checking whether copysignf can be used without linking with libm... " >&6; } +if ${gl_cv_func_copysignf_no_libm+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + float x, y; +int +main () +{ +return copysignf (x, y) < 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_copysignf_no_libm=yes +else + gl_cv_func_copysignf_no_libm=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_copysignf_no_libm" >&5 +$as_echo "$gl_cv_func_copysignf_no_libm" >&6; } + if test $gl_cv_func_copysignf_no_libm = yes; then + +$as_echo "#define HAVE_COPYSIGNF_IN_LIBC 1" >>confdefs.h + + fi + fi + fi + if test "$gl_cv_cc_double_signbit" = unknown; then + ac_fn_c_check_decl "$LINENO" "copysign" "ac_cv_have_decl_copysign" "#include +" +if test "x$ac_cv_have_decl_copysign" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_COPYSIGN $ac_have_decl +_ACEOF + + if test "$ac_cv_have_decl_copysign" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether copysign can be used without linking with libm" >&5 +$as_echo_n "checking whether copysign can be used without linking with libm... " >&6; } +if ${gl_cv_func_copysign_no_libm+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + double x, y; +int +main () +{ +return copysign (x, y) < 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_copysign_no_libm=yes +else + gl_cv_func_copysign_no_libm=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_copysign_no_libm" >&5 +$as_echo "$gl_cv_func_copysign_no_libm" >&6; } + if test $gl_cv_func_copysign_no_libm = yes; then + +$as_echo "#define HAVE_COPYSIGN_IN_LIBC 1" >>confdefs.h + + fi + fi + fi + if test "$gl_cv_cc_long_double_signbit" = unknown; then + ac_fn_c_check_decl "$LINENO" "copysignl" "ac_cv_have_decl_copysignl" "#include +" +if test "x$ac_cv_have_decl_copysignl" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_COPYSIGNL $ac_have_decl +_ACEOF + + if test "$ac_cv_have_decl_copysignl" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether copysignl can be used without linking with libm" >&5 +$as_echo_n "checking whether copysignl can be used without linking with libm... " >&6; } +if ${gl_cv_func_copysignl_no_libm+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + long double x, y; +int +main () +{ +return copysignl (x, y) < 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_copysignl_no_libm=yes +else + gl_cv_func_copysignl_no_libm=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_copysignl_no_libm" >&5 +$as_echo "$gl_cv_func_copysignl_no_libm" >&6; } + if test $gl_cv_func_copysignl_no_libm = yes; then + +$as_echo "#define HAVE_COPYSIGNL_IN_LIBC 1" >>confdefs.h + + fi + fi + fi + ;; + esac + ;; + esac + + if test $REPLACE_SIGNBIT = 1; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS signbitf.$ac_objext" + + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS signbitd.$ac_objext" + + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS signbitl.$ac_objext" + + fi + + + + + + GNULIB_SIGNBIT=1 + + + + + +$as_echo "#define GNULIB_TEST_SIGNBIT 1" >>confdefs.h + + + + + + + + +cat >>confdefs.h <<_ACEOF +#define GNULIB_SIGPIPE 1 +_ACEOF + + + + GNULIB_SIGNAL_H_SIGPIPE=1 GNULIB_STDIO_H_SIGPIPE=1 @@ -50905,817 +55587,3209 @@ rm -fr conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_tr_utf8" >&5 -$as_echo "$gt_cv_locale_tr_utf8" >&6; } - LOCALE_TR_UTF8=$gt_cv_locale_tr_utf8 - - - - - - if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then - REPLACE_DUP=1 - fi - - - if test $REPLACE_DUP = 1; then - - - - - - - - - gltests_LIBOBJS="$gltests_LIBOBJS dup.$ac_objext" - - : - fi - - - - - - if test "$GNULIB_DUP" != 1; then - if test "$GNULIB_DUP" = 0; then - GNULIB_DUP=$gl_module_indicator_condition - else - GNULIB_DUP="($GNULIB_DUP || $gl_module_indicator_condition)" - fi - fi - - +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_tr_utf8" >&5 +$as_echo "$gt_cv_locale_tr_utf8" >&6; } + LOCALE_TR_UTF8=$gt_cv_locale_tr_utf8 + + + + + + + + + + + + + + if test $gl_cv_have_include_next = yes; then + gl_cv_next_ctype_h='<'ctype.h'>' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if ${gl_cv_next_ctype_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac + + case "$host_os" in + mingw*) + gl_dirsep_regex='[/\\]' + ;; + *) + gl_dirsep_regex='\/' + ;; + esac + gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' + gl_header_literal_regex=`echo 'ctype.h' \ + | sed -e "$gl_make_literal_regex_sed"` + gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ + s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ + s|^/[^/]|//&| + p + q + }' + + gl_cv_absolute_ctype_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n "$gl_absolute_header_sed"` + + gl_header=$gl_cv_absolute_ctype_h + gl_cv_next_ctype_h='"'$gl_header'"' + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_ctype_h" >&5 +$as_echo "$gl_cv_next_ctype_h" >&6; } + fi + NEXT_CTYPE_H=$gl_cv_next_ctype_h + + if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' + gl_next_as_first_directive='<'ctype.h'>' + else + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' + gl_next_as_first_directive=$gl_cv_next_ctype_h + fi + NEXT_AS_FIRST_DIRECTIVE_CTYPE_H=$gl_next_as_first_directive + + + + + + + for gl_func in isblank; do + as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 +$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } +if eval \${$as_gl_Symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#undef $gl_func + (void) $gl_func; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_gl_Symbol=yes" +else + eval "$as_gl_Symbol=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$as_gl_Symbol + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 +_ACEOF + + eval ac_cv_have_decl_$gl_func=yes +fi + done + + + + + + if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then + REPLACE_DUP=1 + fi + + + if test $REPLACE_DUP = 1; then + + + + + + + + + gltests_LIBOBJS="$gltests_LIBOBJS dup.$ac_objext" + + : + fi + + + + + + if test "$GNULIB_DUP" != 1; then + if test "$GNULIB_DUP" = 0; then + GNULIB_DUP=$gl_module_indicator_condition + else + GNULIB_DUP="($GNULIB_DUP || $gl_module_indicator_condition)" + fi + fi + + + + + +$as_echo "#define GNULIB_TEST_DUP 1" >>confdefs.h + + + + + + + if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then + REPLACE_FDOPEN=1 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fdopen sets errno" >&5 +$as_echo_n "checking whether fdopen sets errno... " >&6; } +if ${gl_cv_func_fdopen_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + case "$host_os" in + mingw*) gl_cv_func_fdopen_works="guessing no" ;; + *) gl_cv_func_fdopen_works="guessing yes" ;; + esac + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +int +main (void) +{ + FILE *fp; + errno = 0; + fp = fdopen (-1, "r"); + if (fp == NULL && errno == 0) + return 1; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_fdopen_works=yes +else + gl_cv_func_fdopen_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_fdopen_works" >&5 +$as_echo "$gl_cv_func_fdopen_works" >&6; } + case "$gl_cv_func_fdopen_works" in + *no) REPLACE_FDOPEN=1 ;; + esac + fi + + if test $REPLACE_FDOPEN = 1; then + + + + + + + + + gltests_LIBOBJS="$gltests_LIBOBJS fdopen.$ac_objext" + + + fi + + + + + + if test "$GNULIB_FDOPEN" != 1; then + if test "$GNULIB_FDOPEN" = 0; then + GNULIB_FDOPEN=$gl_module_indicator_condition + else + GNULIB_FDOPEN="($GNULIB_FDOPEN || $gl_module_indicator_condition)" + fi + fi + + + + + +$as_echo "#define GNULIB_TEST_FDOPEN 1" >>confdefs.h + + + + + + if test "$enable_acl" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getxattr with XATTR_NAME_POSIX_ACL macros" >&5 +$as_echo_n "checking for getxattr with XATTR_NAME_POSIX_ACL macros... " >&6; } +if ${gl_cv_getxattr_with_posix_acls+:} false; then : + $as_echo_n "(cached) " >&6 +else + gl_cv_getxattr_with_posix_acls=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + +int +main () +{ +ssize_t a = getxattr (".", XATTR_NAME_POSIX_ACL_ACCESS, 0, 0); + ssize_t b = getxattr (".", XATTR_NAME_POSIX_ACL_DEFAULT, 0, 0); + return a < 0 || b < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_getxattr_with_posix_acls=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_getxattr_with_posix_acls" >&5 +$as_echo "$gl_cv_getxattr_with_posix_acls" >&6; } + fi + if test "$gl_cv_getxattr_with_posix_acls" = yes; then + LIB_HAS_ACL= + +$as_echo "#define GETXATTR_WITH_POSIX_ACLS 1" >>confdefs.h + + else + gl_need_lib_has_acl=1 + LIB_HAS_ACL=$LIB_ACL + fi + + + + + + + if test $HAVE_FTELLO = 0 || test $REPLACE_FTELLO = 1; then + REPLACE_FTELL=1 + fi + + if test $REPLACE_FTELL = 1; then + + + + + + + + + gltests_LIBOBJS="$gltests_LIBOBJS ftell.$ac_objext" + + fi + + + + + + if test "$GNULIB_FTELL" != 1; then + if test "$GNULIB_FTELL" = 0; then + GNULIB_FTELL=$gl_module_indicator_condition + else + GNULIB_FTELL="($GNULIB_FTELL || $gl_module_indicator_condition)" + fi + fi + + + + + +$as_echo "#define GNULIB_TEST_FTELL 1" >>confdefs.h + + + + + + + + + + + + + + if test $ac_cv_have_decl_ftello = no; then + HAVE_DECL_FTELLO=0 + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ftello" >&5 +$as_echo_n "checking for ftello... " >&6; } +if ${gl_cv_func_ftello+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +ftello (stdin); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func_ftello=yes +else + gl_cv_func_ftello=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ftello" >&5 +$as_echo "$gl_cv_func_ftello" >&6; } + if test $gl_cv_func_ftello = no; then + HAVE_FTELLO=0 + else + if test $WINDOWS_64_BIT_OFF_T = 1; then + REPLACE_FTELLO=1 + fi + if test $gl_cv_var_stdin_large_offset = no; then + REPLACE_FTELLO=1 + fi + if test $REPLACE_FTELLO = 0; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ftello works" >&5 +$as_echo_n "checking whether ftello works... " >&6; } +if ${gl_cv_func_ftello_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + + case "$host_os" in + # Guess no on Solaris. + solaris*) gl_cv_func_ftello_works="guessing no" ;; + # Guess yes otherwise. + *) gl_cv_func_ftello_works="guessing yes" ;; + esac + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#define TESTFILE "conftest.tmp" +int +main (void) +{ + FILE *fp; + + /* Create a file with some contents. */ + fp = fopen (TESTFILE, "w"); + if (fp == NULL) + return 70; + if (fwrite ("foogarsh", 1, 8, fp) < 8) + return 71; + if (fclose (fp)) + return 72; + + /* The file's contents is now "foogarsh". */ + + /* Try writing after reading to EOF. */ + fp = fopen (TESTFILE, "r+"); + if (fp == NULL) + return 73; + if (fseek (fp, -1, SEEK_END)) + return 74; + if (!(getc (fp) == 'h')) + return 1; + if (!(getc (fp) == EOF)) + return 2; + if (!(ftell (fp) == 8)) + return 3; + if (!(ftell (fp) == 8)) + return 4; + if (!(putc ('!', fp) == '!')) + return 5; + if (!(ftell (fp) == 9)) + return 6; + if (!(fclose (fp) == 0)) + return 7; + fp = fopen (TESTFILE, "r"); + if (fp == NULL) + return 75; + { + char buf[10]; + if (!(fread (buf, 1, 10, fp) == 9)) + return 10; + if (!(memcmp (buf, "foogarsh!", 9) == 0)) + return 11; + } + if (!(fclose (fp) == 0)) + return 12; + + /* The file's contents is now "foogarsh!". */ + + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_ftello_works=yes +else + gl_cv_func_ftello_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ftello_works" >&5 +$as_echo "$gl_cv_func_ftello_works" >&6; } + case "$gl_cv_func_ftello_works" in + *yes) ;; + *) + REPLACE_FTELLO=1 + +$as_echo "#define FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE 1" >>confdefs.h + + ;; + esac + fi + fi + + if test $HAVE_FTELLO = 0 || test $REPLACE_FTELLO = 1; then + + + + + + + + + gltests_LIBOBJS="$gltests_LIBOBJS ftello.$ac_objext" + + + for ac_func in _ftelli64 +do : + ac_fn_c_check_func "$LINENO" "_ftelli64" "ac_cv_func__ftelli64" +if test "x$ac_cv_func__ftelli64" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE__FTELLI64 1 +_ACEOF + +fi +done + + + fi + + + + + + if test "$GNULIB_FTELLO" != 1; then + if test "$GNULIB_FTELLO" = 0; then + GNULIB_FTELLO=$gl_module_indicator_condition + else + GNULIB_FTELLO="($GNULIB_FTELLO || $gl_module_indicator_condition)" + fi + fi + + + + + +$as_echo "#define GNULIB_TEST_FTELLO 1" >>confdefs.h + + + + + + + + + + case $gl_cv_func_getcwd_null,$gl_cv_func_getcwd_posix_signature in + *yes,yes) ;; + *) + REPLACE_GETCWD=1 + ;; + esac + + if test $REPLACE_GETCWD = 1; then + + + + + + + + + gltests_LIBOBJS="$gltests_LIBOBJS getcwd-lgpl.$ac_objext" + + fi + + + + + + if test "$GNULIB_GETCWD" != 1; then + if test "$GNULIB_GETCWD" = 0; then + GNULIB_GETCWD=$gl_module_indicator_condition + else + GNULIB_GETCWD="($GNULIB_GETCWD || $gl_module_indicator_condition)" + fi + fi + + + + + +$as_echo "#define GNULIB_TEST_GETCWD 1" >>confdefs.h + + + + + + + for ac_func in getpagesize +do : + ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" +if test "x$ac_cv_func_getpagesize" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETPAGESIZE 1 +_ACEOF + +fi +done + + if test $ac_cv_func_getpagesize = no; then + HAVE_GETPAGESIZE=0 + for ac_header in OS.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "OS.h" "ac_cv_header_OS_h" "$ac_includes_default" +if test "x$ac_cv_header_OS_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_OS_H 1 +_ACEOF + +fi + +done + + if test $ac_cv_header_OS_h = yes; then + HAVE_OS_H=1 + fi + for ac_header in sys/param.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_PARAM_H 1 +_ACEOF + +fi + +done + + if test $ac_cv_header_sys_param_h = yes; then + HAVE_SYS_PARAM_H=1 + fi + fi + case "$host_os" in + mingw*) + REPLACE_GETPAGESIZE=1 + ;; + esac + ac_fn_c_check_decl "$LINENO" "getpagesize" "ac_cv_have_decl_getpagesize" "$ac_includes_default" +if test "x$ac_cv_have_decl_getpagesize" = xyes; then : + +else + HAVE_DECL_GETPAGESIZE=0 +fi + + + if test $REPLACE_GETPAGESIZE = 1; then + + + + + + + + + gltests_LIBOBJS="$gltests_LIBOBJS getpagesize.$ac_objext" + + fi + + + + + + if test "$GNULIB_GETPAGESIZE" != 1; then + if test "$GNULIB_GETPAGESIZE" = 0; then + GNULIB_GETPAGESIZE=$gl_module_indicator_condition + else + GNULIB_GETPAGESIZE="($GNULIB_GETPAGESIZE || $gl_module_indicator_condition)" + fi + fi + + + + + +$as_echo "#define GNULIB_TEST_GETPAGESIZE 1" >>confdefs.h + + + + + + + + + PRIPTR_PREFIX= + if test -n "$STDINT_H"; then + PRIPTR_PREFIX='"l"' + else + for glpfx in '' l ll I64; do + case $glpfx in + '') gltype1='int';; + l) gltype1='long int';; + ll) gltype1='long long int';; + I64) gltype1='__int64';; + esac + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + extern intptr_t foo; + extern $gltype1 foo; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + PRIPTR_PREFIX='"'$glpfx'"' +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test -n "$PRIPTR_PREFIX" && break + done + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether INT32_MAX < INTMAX_MAX" >&5 +$as_echo_n "checking whether INT32_MAX < INTMAX_MAX... " >&6; } +if ${gl_cv_test_INT32_MAX_LT_INTMAX_MAX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Work also in C++ mode. */ + #define __STDC_LIMIT_MACROS 1 + + /* Work if build is not clean. */ + #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H + + #include + #if HAVE_STDINT_H + #include + #endif + + #if defined INT32_MAX && defined INTMAX_MAX + #define CONDITION (INT32_MAX < INTMAX_MAX) + #elif HAVE_LONG_LONG_INT + #define CONDITION (sizeof (int) < sizeof (long long int)) + #else + #define CONDITION 0 + #endif + int test[CONDITION ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_test_INT32_MAX_LT_INTMAX_MAX=yes +else + gl_cv_test_INT32_MAX_LT_INTMAX_MAX=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_INT32_MAX_LT_INTMAX_MAX" >&5 +$as_echo "$gl_cv_test_INT32_MAX_LT_INTMAX_MAX" >&6; } + if test $gl_cv_test_INT32_MAX_LT_INTMAX_MAX = yes; then + INT32_MAX_LT_INTMAX_MAX=1; + else + INT32_MAX_LT_INTMAX_MAX=0; + fi + + + if test $APPLE_UNIVERSAL_BUILD = 0; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether INT64_MAX == LONG_MAX" >&5 +$as_echo_n "checking whether INT64_MAX == LONG_MAX... " >&6; } +if ${gl_cv_test_INT64_MAX_EQ_LONG_MAX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Work also in C++ mode. */ + #define __STDC_LIMIT_MACROS 1 + + /* Work if build is not clean. */ + #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H + + #include + #if HAVE_STDINT_H + #include + #endif + + #if defined INT64_MAX + #define CONDITION (INT64_MAX == LONG_MAX) + #elif HAVE_LONG_LONG_INT + #define CONDITION (sizeof (long long int) == sizeof (long int)) + #else + #define CONDITION 0 + #endif + int test[CONDITION ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_test_INT64_MAX_EQ_LONG_MAX=yes +else + gl_cv_test_INT64_MAX_EQ_LONG_MAX=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_INT64_MAX_EQ_LONG_MAX" >&5 +$as_echo "$gl_cv_test_INT64_MAX_EQ_LONG_MAX" >&6; } + if test $gl_cv_test_INT64_MAX_EQ_LONG_MAX = yes; then + INT64_MAX_EQ_LONG_MAX=1; + else + INT64_MAX_EQ_LONG_MAX=0; + fi + + + else + INT64_MAX_EQ_LONG_MAX=-1 + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UINT32_MAX < UINTMAX_MAX" >&5 +$as_echo_n "checking whether UINT32_MAX < UINTMAX_MAX... " >&6; } +if ${gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Work also in C++ mode. */ + #define __STDC_LIMIT_MACROS 1 + + /* Work if build is not clean. */ + #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H + + #include + #if HAVE_STDINT_H + #include + #endif + + #if defined UINT32_MAX && defined UINTMAX_MAX + #define CONDITION (UINT32_MAX < UINTMAX_MAX) + #elif HAVE_LONG_LONG_INT + #define CONDITION (sizeof (unsigned int) < sizeof (unsigned long long int)) + #else + #define CONDITION 0 + #endif + int test[CONDITION ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX=yes +else + gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX" >&5 +$as_echo "$gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX" >&6; } + if test $gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX = yes; then + UINT32_MAX_LT_UINTMAX_MAX=1; + else + UINT32_MAX_LT_UINTMAX_MAX=0; + fi + + + if test $APPLE_UNIVERSAL_BUILD = 0; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UINT64_MAX == ULONG_MAX" >&5 +$as_echo_n "checking whether UINT64_MAX == ULONG_MAX... " >&6; } +if ${gl_cv_test_UINT64_MAX_EQ_ULONG_MAX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Work also in C++ mode. */ + #define __STDC_LIMIT_MACROS 1 + + /* Work if build is not clean. */ + #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H + + #include + #if HAVE_STDINT_H + #include + #endif + + #if defined UINT64_MAX + #define CONDITION (UINT64_MAX == ULONG_MAX) + #elif HAVE_LONG_LONG_INT + #define CONDITION (sizeof (unsigned long long int) == sizeof (unsigned long int)) + #else + #define CONDITION 0 + #endif + int test[CONDITION ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_test_UINT64_MAX_EQ_ULONG_MAX=yes +else + gl_cv_test_UINT64_MAX_EQ_ULONG_MAX=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_UINT64_MAX_EQ_ULONG_MAX" >&5 +$as_echo "$gl_cv_test_UINT64_MAX_EQ_ULONG_MAX" >&6; } + if test $gl_cv_test_UINT64_MAX_EQ_ULONG_MAX = yes; then + UINT64_MAX_EQ_ULONG_MAX=1; + else + UINT64_MAX_EQ_ULONG_MAX=0; + fi + + + else + UINT64_MAX_EQ_ULONG_MAX=-1 + fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'float'" >&5 +$as_echo_n "checking where to find the exponent in a 'float'... " >&6; } +if ${gl_cv_cc_float_expbit0+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + gl_cv_cc_float_expbit0="word 0 bit 23" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { float value; unsigned int word[NWORDS]; } memory_float; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (float x) +{ + memory_float m; + size_t i; + /* Clear it first, in case + sizeof (float) < sizeof (memory_float). */ + memset (&m, 0, sizeof (memory_float)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25f); + add_to_ored_words (0.5f); + add_to_ored_words (1.0f); + add_to_ored_words (2.0f); + add_to_ored_words (4.0f); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_float_expbit0=`cat conftest.out` +else + gl_cv_cc_float_expbit0="unknown" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + rm -f conftest.out + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_float_expbit0" >&5 +$as_echo "$gl_cv_cc_float_expbit0" >&6; } + case "$gl_cv_cc_float_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'` + +cat >>confdefs.h <<_ACEOF +#define FLT_EXPBIT0_WORD $word +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define FLT_EXPBIT0_BIT $bit +_ACEOF + + ;; + esac + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'double'" >&5 +$as_echo_n "checking where to find the exponent in a 'double'... " >&6; } +if ${gl_cv_cc_double_expbit0+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined arm || defined __arm || defined __arm__ + mixed_endianness +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "mixed_endianness" >/dev/null 2>&1; then : + gl_cv_cc_double_expbit0="unknown" +else + + : +if ${ac_cv_c_bigendian+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; + +int +main () +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_bigendian=no +else + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi +fi +: + case $ac_cv_c_bigendian in #( + yes) + gl_cv_cc_double_expbit0="word 0 bit 20";; #( + no) + gl_cv_cc_double_expbit0="word 1 bit 20" ;; #( + universal) + +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + gl_cv_cc_double_expbit0="unknown" ;; + esac + + +fi +rm -f conftest* + + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { double value; unsigned int word[NWORDS]; } memory_double; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (double x) +{ + memory_double m; + size_t i; + /* Clear it first, in case sizeof (double) < sizeof (memory_double). */ + memset (&m, 0, sizeof (memory_double)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25); + add_to_ored_words (0.5); + add_to_ored_words (1.0); + add_to_ored_words (2.0); + add_to_ored_words (4.0); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_double_expbit0=`cat conftest.out` +else + gl_cv_cc_double_expbit0="unknown" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + rm -f conftest.out + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_double_expbit0" >&5 +$as_echo "$gl_cv_cc_double_expbit0" >&6; } + case "$gl_cv_cc_double_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'` + +cat >>confdefs.h <<_ACEOF +#define DBL_EXPBIT0_WORD $word +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define DBL_EXPBIT0_BIT $bit +_ACEOF + + ;; + esac + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'long double'" >&5 +$as_echo_n "checking where to find the exponent in a 'long double'... " >&6; } +if ${gl_cv_cc_long_double_expbit0+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + + gl_cv_cc_long_double_expbit0="unknown" + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { long double value; unsigned int word[NWORDS]; } + memory_long_double; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (long double x) +{ + memory_long_double m; + size_t i; + /* Clear it first, in case + sizeof (long double) < sizeof (memory_long_double). */ + memset (&m, 0, sizeof (memory_long_double)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25L); + add_to_ored_words (0.5L); + add_to_ored_words (1.0L); + add_to_ored_words (2.0L); + add_to_ored_words (4.0L); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_long_double_expbit0=`cat conftest.out` +else + gl_cv_cc_long_double_expbit0="unknown" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + rm -f conftest.out + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_long_double_expbit0" >&5 +$as_echo "$gl_cv_cc_long_double_expbit0" >&6; } + case "$gl_cv_cc_long_double_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word.*bit //'` + +cat >>confdefs.h <<_ACEOF +#define LDBL_EXPBIT0_WORD $word +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define LDBL_EXPBIT0_BIT $bit +_ACEOF + + ;; + esac + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'float'" >&5 +$as_echo_n "checking where to find the exponent in a 'float'... " >&6; } +if ${gl_cv_cc_float_expbit0+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + gl_cv_cc_float_expbit0="word 0 bit 23" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { float value; unsigned int word[NWORDS]; } memory_float; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (float x) +{ + memory_float m; + size_t i; + /* Clear it first, in case + sizeof (float) < sizeof (memory_float). */ + memset (&m, 0, sizeof (memory_float)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25f); + add_to_ored_words (0.5f); + add_to_ored_words (1.0f); + add_to_ored_words (2.0f); + add_to_ored_words (4.0f); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_float_expbit0=`cat conftest.out` +else + gl_cv_cc_float_expbit0="unknown" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + rm -f conftest.out + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_float_expbit0" >&5 +$as_echo "$gl_cv_cc_float_expbit0" >&6; } + case "$gl_cv_cc_float_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'` + +cat >>confdefs.h <<_ACEOF +#define FLT_EXPBIT0_WORD $word +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define FLT_EXPBIT0_BIT $bit +_ACEOF + + ;; + esac + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'double'" >&5 +$as_echo_n "checking where to find the exponent in a 'double'... " >&6; } +if ${gl_cv_cc_double_expbit0+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined arm || defined __arm || defined __arm__ + mixed_endianness +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "mixed_endianness" >/dev/null 2>&1; then : + gl_cv_cc_double_expbit0="unknown" +else + + : +if ${ac_cv_c_bigendian+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; + +int +main () +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_bigendian=no +else + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi +fi +: + case $ac_cv_c_bigendian in #( + yes) + gl_cv_cc_double_expbit0="word 0 bit 20";; #( + no) + gl_cv_cc_double_expbit0="word 1 bit 20" ;; #( + universal) + +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + gl_cv_cc_double_expbit0="unknown" ;; + esac + + +fi +rm -f conftest* + + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { double value; unsigned int word[NWORDS]; } memory_double; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (double x) +{ + memory_double m; + size_t i; + /* Clear it first, in case sizeof (double) < sizeof (memory_double). */ + memset (&m, 0, sizeof (memory_double)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25); + add_to_ored_words (0.5); + add_to_ored_words (1.0); + add_to_ored_words (2.0); + add_to_ored_words (4.0); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_double_expbit0=`cat conftest.out` +else + gl_cv_cc_double_expbit0="unknown" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + rm -f conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_double_expbit0" >&5 +$as_echo "$gl_cv_cc_double_expbit0" >&6; } + case "$gl_cv_cc_double_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'` -$as_echo "#define GNULIB_TEST_DUP 1" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define DBL_EXPBIT0_WORD $word +_ACEOF +cat >>confdefs.h <<_ACEOF +#define DBL_EXPBIT0_BIT $bit +_ACEOF + ;; + esac - if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then - REPLACE_FDOPEN=1 - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fdopen sets errno" >&5 -$as_echo_n "checking whether fdopen sets errno... " >&6; } -if ${gl_cv_func_fdopen_works+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'long double'" >&5 +$as_echo_n "checking where to find the exponent in a 'long double'... " >&6; } +if ${gl_cv_cc_long_double_expbit0+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then : - case "$host_os" in - mingw*) gl_cv_func_fdopen_works="guessing no" ;; - *) gl_cv_func_fdopen_works="guessing yes" ;; - esac + if test "$cross_compiling" = yes; then : + + gl_cv_cc_long_double_expbit0="unknown" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#include +#include #include -#include -int -main (void) +#include +#define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { long double value; unsigned int word[NWORDS]; } + memory_long_double; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (long double x) { - FILE *fp; - errno = 0; - fp = fdopen (-1, "r"); - if (fp == NULL && errno == 0) + memory_long_double m; + size_t i; + /* Clear it first, in case + sizeof (long double) < sizeof (memory_long_double). */ + memset (&m, 0, sizeof (memory_long_double)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) return 1; - return 0; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25L); + add_to_ored_words (0.5L); + add_to_ored_words (1.0L); + add_to_ored_words (2.0L); + add_to_ored_words (4.0L); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); } + _ACEOF if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_fdopen_works=yes + gl_cv_cc_long_double_expbit0=`cat conftest.out` else - gl_cv_func_fdopen_works=no + gl_cv_cc_long_double_expbit0="unknown" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi + rm -f conftest.out fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_fdopen_works" >&5 -$as_echo "$gl_cv_func_fdopen_works" >&6; } - case "$gl_cv_func_fdopen_works" in - *no) REPLACE_FDOPEN=1 ;; - esac - fi - - if test $REPLACE_FDOPEN = 1; then - - - - - - - - - gltests_LIBOBJS="$gltests_LIBOBJS fdopen.$ac_objext" - +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_long_double_expbit0" >&5 +$as_echo "$gl_cv_cc_long_double_expbit0" >&6; } + case "$gl_cv_cc_long_double_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word.*bit //'` - fi +cat >>confdefs.h <<_ACEOF +#define LDBL_EXPBIT0_WORD $word +_ACEOF +cat >>confdefs.h <<_ACEOF +#define LDBL_EXPBIT0_BIT $bit +_ACEOF + ;; + esac - if test "$GNULIB_FDOPEN" != 1; then - if test "$GNULIB_FDOPEN" = 0; then - GNULIB_FDOPEN=$gl_module_indicator_condition - else - GNULIB_FDOPEN="($GNULIB_FDOPEN || $gl_module_indicator_condition)" - fi - fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'double'" >&5 +$as_echo_n "checking where to find the exponent in a 'double'... " >&6; } +if ${gl_cv_cc_double_expbit0+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined arm || defined __arm || defined __arm__ + mixed_endianness +#endif -$as_echo "#define GNULIB_TEST_FDOPEN 1" >>confdefs.h +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "mixed_endianness" >/dev/null 2>&1; then : + gl_cv_cc_double_expbit0="unknown" +else + : +if ${ac_cv_c_bigendian+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif - if test "$enable_acl" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getxattr with XATTR_NAME_POSIX_ACL macros" >&5 -$as_echo_n "checking for getxattr with XATTR_NAME_POSIX_ACL macros... " >&6; } -if ${gl_cv_getxattr_with_posix_acls+:} false; then : - $as_echo_n "(cached) " >&6 -else - gl_cv_getxattr_with_posix_acls=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include - #include - #include + #include int main () { -ssize_t a = getxattr (".", XATTR_NAME_POSIX_ACL_ACCESS, 0, 0); - ssize_t b = getxattr (".", XATTR_NAME_POSIX_ACL_DEFAULT, 0, 0); - return a < 0 || b < 0; +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_cv_getxattr_with_posix_acls=yes +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_getxattr_with_posix_acls" >&5 -$as_echo "$gl_cv_getxattr_with_posix_acls" >&6; } - fi - if test "$gl_cv_getxattr_with_posix_acls" = yes; then - LIB_HAS_ACL= - -$as_echo "#define GETXATTR_WITH_POSIX_ACLS 1" >>confdefs.h - - else - gl_need_lib_has_acl=1 - LIB_HAS_ACL=$LIB_ACL - fi - - - - - - - if test $HAVE_FTELLO = 0 || test $REPLACE_FTELLO = 1; then - REPLACE_FTELL=1 - fi - - if test $REPLACE_FTELL = 1; then - - - - - - - - - gltests_LIBOBJS="$gltests_LIBOBJS ftell.$ac_objext" - - fi - - - - - - if test "$GNULIB_FTELL" != 1; then - if test "$GNULIB_FTELL" = 0; then - GNULIB_FTELL=$gl_module_indicator_condition - else - GNULIB_FTELL="($GNULIB_FTELL || $gl_module_indicator_condition)" +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - fi - - - - - -$as_echo "#define GNULIB_TEST_FTELL 1" >>confdefs.h - - - - - - - - - - - - - - if test $ac_cv_have_decl_ftello = no; then - HAVE_DECL_FTELLO=0 - fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ftello" >&5 -$as_echo_n "checking for ftello... " >&6; } -if ${gl_cv_func_ftello+:} false; then : - $as_echo_n "(cached) " >&6 -else +int +main () +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include +#include + int main () { -ftello (stdin); +#ifndef _BIG_ENDIAN + not big endian + #endif + ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_cv_func_ftello=yes +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes else - gl_cv_func_ftello=no + ac_cv_c_bigendian=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ftello" >&5 -$as_echo "$gl_cv_func_ftello" >&6; } - if test $gl_cv_func_ftello = no; then - HAVE_FTELLO=0 - else - if test $WINDOWS_64_BIT_OFF_T = 1; then - REPLACE_FTELLO=1 - fi - if test $gl_cv_var_stdin_large_offset = no; then - REPLACE_FTELLO=1 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - if test $REPLACE_FTELLO = 0; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ftello works" >&5 -$as_echo_n "checking whether ftello works... " >&6; } -if ${gl_cv_func_ftello_works+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; - case "$host_os" in - # Guess no on Solaris. - solaris*) gl_cv_func_ftello_works="guessing no" ;; - # Guess yes otherwise. - *) gl_cv_func_ftello_works="guessing yes" ;; - esac - if test "$cross_compiling" = yes; then : - : +int +main () +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - -#include -#include -#include -#define TESTFILE "conftest.tmp" +$ac_includes_default int -main (void) +main () { - FILE *fp; - - /* Create a file with some contents. */ - fp = fopen (TESTFILE, "w"); - if (fp == NULL) - return 70; - if (fwrite ("foogarsh", 1, 8, fp) < 8) - return 71; - if (fclose (fp)) - return 72; - - /* The file's contents is now "foogarsh". */ - - /* Try writing after reading to EOF. */ - fp = fopen (TESTFILE, "r+"); - if (fp == NULL) - return 73; - if (fseek (fp, -1, SEEK_END)) - return 74; - if (!(getc (fp) == 'h')) - return 1; - if (!(getc (fp) == EOF)) - return 2; - if (!(ftell (fp) == 8)) - return 3; - if (!(ftell (fp) == 8)) - return 4; - if (!(putc ('!', fp) == '!')) - return 5; - if (!(ftell (fp) == 9)) - return 6; - if (!(fclose (fp) == 0)) - return 7; - fp = fopen (TESTFILE, "r"); - if (fp == NULL) - return 75; - { - char buf[10]; - if (!(fread (buf, 1, 10, fp) == 9)) - return 10; - if (!(memcmp (buf, "foogarsh!", 9) == 0)) - return 11; - } - if (!(fclose (fp) == 0)) - return 12; - /* The file's contents is now "foogarsh!". */ + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_ftello_works=yes + ac_cv_c_bigendian=no else - gl_cv_func_ftello_works=no + ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ftello_works" >&5 -$as_echo "$gl_cv_func_ftello_works" >&6; } - case "$gl_cv_func_ftello_works" in - *yes) ;; - *) - REPLACE_FTELLO=1 - -$as_echo "#define FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE 1" >>confdefs.h - - ;; - esac fi - fi - - if test $HAVE_FTELLO = 0 || test $REPLACE_FTELLO = 1; then - - +fi +: + case $ac_cv_c_bigendian in #( + yes) + gl_cv_cc_double_expbit0="word 0 bit 20";; #( + no) + gl_cv_cc_double_expbit0="word 1 bit 20" ;; #( + universal) +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + ;; #( + *) + gl_cv_cc_double_expbit0="unknown" ;; + esac +fi +rm -f conftest* - gltests_LIBOBJS="$gltests_LIBOBJS ftello.$ac_objext" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { double value; unsigned int word[NWORDS]; } memory_double; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (double x) +{ + memory_double m; + size_t i; + /* Clear it first, in case sizeof (double) < sizeof (memory_double). */ + memset (&m, 0, sizeof (memory_double)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25); + add_to_ored_words (0.5); + add_to_ored_words (1.0); + add_to_ored_words (2.0); + add_to_ored_words (4.0); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); +} - for ac_func in _ftelli64 -do : - ac_fn_c_check_func "$LINENO" "_ftelli64" "ac_cv_func__ftelli64" -if test "x$ac_cv_func__ftelli64" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE__FTELLI64 1 _ACEOF - +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_double_expbit0=`cat conftest.out` +else + gl_cv_cc_double_expbit0="unknown" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -done - - - fi - - - - - - if test "$GNULIB_FTELLO" != 1; then - if test "$GNULIB_FTELLO" = 0; then - GNULIB_FTELLO=$gl_module_indicator_condition - else - GNULIB_FTELLO="($GNULIB_FTELLO || $gl_module_indicator_condition)" - fi - fi - - - - - -$as_echo "#define GNULIB_TEST_FTELLO 1" >>confdefs.h - - - + rm -f conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_double_expbit0" >&5 +$as_echo "$gl_cv_cc_double_expbit0" >&6; } + case "$gl_cv_cc_double_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'` +cat >>confdefs.h <<_ACEOF +#define DBL_EXPBIT0_WORD $word +_ACEOF +cat >>confdefs.h <<_ACEOF +#define DBL_EXPBIT0_BIT $bit +_ACEOF - case $gl_cv_func_getcwd_null,$gl_cv_func_getcwd_posix_signature in - *yes,yes) ;; - *) - REPLACE_GETCWD=1 - ;; + ;; esac - if test $REPLACE_GETCWD = 1; then - - + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'double'" >&5 +$as_echo_n "checking where to find the exponent in a 'double'... " >&6; } +if ${gl_cv_cc_double_expbit0+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined arm || defined __arm || defined __arm__ + mixed_endianness +#endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "mixed_endianness" >/dev/null 2>&1; then : + gl_cv_cc_double_expbit0="unknown" +else - gltests_LIBOBJS="$gltests_LIBOBJS getcwd-lgpl.$ac_objext" + : +if ${ac_cv_c_bigendian+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; - fi +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif - if test "$GNULIB_GETCWD" != 1; then - if test "$GNULIB_GETCWD" = 0; then - GNULIB_GETCWD=$gl_module_indicator_condition - else - GNULIB_GETCWD="($GNULIB_GETCWD || $gl_module_indicator_condition)" + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - fi - - - - - -$as_echo "#define GNULIB_TEST_GETCWD 1" >>confdefs.h - - + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +#ifndef _BIG_ENDIAN + not big endian + #endif - for ac_func in getpagesize -do : - ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" -if test "x$ac_cv_func_getpagesize" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETPAGESIZE 1 + ; + return 0; +} _ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; +int +main () +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi fi -done +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ - if test $ac_cv_func_getpagesize = no; then - HAVE_GETPAGESIZE=0 - for ac_header in OS.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "OS.h" "ac_cv_header_OS_h" "$ac_includes_default" -if test "x$ac_cv_header_OS_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_OS_H 1 + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} _ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_bigendian=no +else + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + fi fi +: + case $ac_cv_c_bigendian in #( + yes) + gl_cv_cc_double_expbit0="word 0 bit 20";; #( + no) + gl_cv_cc_double_expbit0="word 1 bit 20" ;; #( + universal) -done +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + gl_cv_cc_double_expbit0="unknown" ;; + esac - if test $ac_cv_header_OS_h = yes; then - HAVE_OS_H=1 - fi - for ac_header in sys/param.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_param_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_PARAM_H 1 -_ACEOF fi +rm -f conftest* -done - if test $ac_cv_header_sys_param_h = yes; then - HAVE_SYS_PARAM_H=1 - fi - fi - case "$host_os" in - mingw*) - REPLACE_GETPAGESIZE=1 - ;; - esac - ac_fn_c_check_decl "$LINENO" "getpagesize" "ac_cv_have_decl_getpagesize" "$ac_includes_default" -if test "x$ac_cv_have_decl_getpagesize" = xyes; then : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { double value; unsigned int word[NWORDS]; } memory_double; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (double x) +{ + memory_double m; + size_t i; + /* Clear it first, in case sizeof (double) < sizeof (memory_double). */ + memset (&m, 0, sizeof (memory_double)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25); + add_to_ored_words (0.5); + add_to_ored_words (1.0); + add_to_ored_words (2.0); + add_to_ored_words (4.0); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_double_expbit0=`cat conftest.out` else - HAVE_DECL_GETPAGESIZE=0 + gl_cv_cc_double_expbit0="unknown" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi + rm -f conftest.out - if test $REPLACE_GETPAGESIZE = 1; then +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_double_expbit0" >&5 +$as_echo "$gl_cv_cc_double_expbit0" >&6; } + case "$gl_cv_cc_double_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'` +cat >>confdefs.h <<_ACEOF +#define DBL_EXPBIT0_WORD $word +_ACEOF +cat >>confdefs.h <<_ACEOF +#define DBL_EXPBIT0_BIT $bit +_ACEOF + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'float'" >&5 +$as_echo_n "checking where to find the exponent in a 'float'... " >&6; } +if ${gl_cv_cc_float_expbit0+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + gl_cv_cc_float_expbit0="word 0 bit 23" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ - gltests_LIBOBJS="$gltests_LIBOBJS getpagesize.$ac_objext" +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { float value; unsigned int word[NWORDS]; } memory_float; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (float x) +{ + memory_float m; + size_t i; + /* Clear it first, in case + sizeof (float) < sizeof (memory_float). */ + memset (&m, 0, sizeof (memory_float)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25f); + add_to_ored_words (0.5f); + add_to_ored_words (1.0f); + add_to_ored_words (2.0f); + add_to_ored_words (4.0f); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); +} - fi +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_float_expbit0=`cat conftest.out` +else + gl_cv_cc_float_expbit0="unknown" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + rm -f conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_float_expbit0" >&5 +$as_echo "$gl_cv_cc_float_expbit0" >&6; } + case "$gl_cv_cc_float_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'` +cat >>confdefs.h <<_ACEOF +#define FLT_EXPBIT0_WORD $word +_ACEOF - if test "$GNULIB_GETPAGESIZE" != 1; then - if test "$GNULIB_GETPAGESIZE" = 0; then - GNULIB_GETPAGESIZE=$gl_module_indicator_condition - else - GNULIB_GETPAGESIZE="($GNULIB_GETPAGESIZE || $gl_module_indicator_condition)" - fi - fi +cat >>confdefs.h <<_ACEOF +#define FLT_EXPBIT0_BIT $bit +_ACEOF + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'float'" >&5 +$as_echo_n "checking where to find the exponent in a 'float'... " >&6; } +if ${gl_cv_cc_float_expbit0+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + gl_cv_cc_float_expbit0="word 0 bit 23" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -$as_echo "#define GNULIB_TEST_GETPAGESIZE 1" >>confdefs.h +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { float value; unsigned int word[NWORDS]; } memory_float; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (float x) +{ + memory_float m; + size_t i; + /* Clear it first, in case + sizeof (float) < sizeof (memory_float). */ + memset (&m, 0, sizeof (memory_float)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25f); + add_to_ored_words (0.5f); + add_to_ored_words (1.0f); + add_to_ored_words (2.0f); + add_to_ored_words (4.0f); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_float_expbit0=`cat conftest.out` +else + gl_cv_cc_float_expbit0="unknown" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + rm -f conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_float_expbit0" >&5 +$as_echo "$gl_cv_cc_float_expbit0" >&6; } + case "$gl_cv_cc_float_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'` +cat >>confdefs.h <<_ACEOF +#define FLT_EXPBIT0_WORD $word +_ACEOF +cat >>confdefs.h <<_ACEOF +#define FLT_EXPBIT0_BIT $bit +_ACEOF + ;; + esac - PRIPTR_PREFIX= - if test -n "$STDINT_H"; then - PRIPTR_PREFIX='"l"' - else - for glpfx in '' l ll I64; do - case $glpfx in - '') gltype1='int';; - l) gltype1='long int';; - ll) gltype1='long long int';; - I64) gltype1='__int64';; - esac - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - extern intptr_t foo; - extern $gltype1 foo; -int -main () -{ - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - PRIPTR_PREFIX='"'$glpfx'"' -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - test -n "$PRIPTR_PREFIX" && break - done - fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'long double'" >&5 +$as_echo_n "checking where to find the exponent in a 'long double'... " >&6; } +if ${gl_cv_cc_long_double_expbit0+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + + gl_cv_cc_long_double_expbit0="unknown" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether INT32_MAX < INTMAX_MAX" >&5 -$as_echo_n "checking whether INT32_MAX < INTMAX_MAX... " >&6; } -if ${gl_cv_test_INT32_MAX_LT_INTMAX_MAX+:} false; then : - $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Work also in C++ mode. */ - #define __STDC_LIMIT_MACROS 1 - - /* Work if build is not clean. */ - #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H - - #include - #if HAVE_STDINT_H - #include - #endif - #if defined INT32_MAX && defined INTMAX_MAX - #define CONDITION (INT32_MAX < INTMAX_MAX) - #elif HAVE_LONG_LONG_INT - #define CONDITION (sizeof (int) < sizeof (long long int)) - #else - #define CONDITION 0 - #endif - int test[CONDITION ? 1 : -1]; -int -main () +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { long double value; unsigned int word[NWORDS]; } + memory_long_double; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (long double x) { - - ; - return 0; + memory_long_double m; + size_t i; + /* Clear it first, in case + sizeof (long double) < sizeof (memory_long_double). */ + memset (&m, 0, sizeof (memory_long_double)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25L); + add_to_ored_words (0.5L); + add_to_ored_words (1.0L); + add_to_ored_words (2.0L); + add_to_ored_words (4.0L); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); } + _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_test_INT32_MAX_LT_INTMAX_MAX=yes +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_long_double_expbit0=`cat conftest.out` else - gl_cv_test_INT32_MAX_LT_INTMAX_MAX=no + gl_cv_cc_long_double_expbit0="unknown" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_INT32_MAX_LT_INTMAX_MAX" >&5 -$as_echo "$gl_cv_test_INT32_MAX_LT_INTMAX_MAX" >&6; } - if test $gl_cv_test_INT32_MAX_LT_INTMAX_MAX = yes; then - INT32_MAX_LT_INTMAX_MAX=1; - else - INT32_MAX_LT_INTMAX_MAX=0; - fi - - - if test $APPLE_UNIVERSAL_BUILD = 0; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether INT64_MAX == LONG_MAX" >&5 -$as_echo_n "checking whether INT64_MAX == LONG_MAX... " >&6; } -if ${gl_cv_test_INT64_MAX_EQ_LONG_MAX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Work also in C++ mode. */ - #define __STDC_LIMIT_MACROS 1 - - /* Work if build is not clean. */ - #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H - #include - #if HAVE_STDINT_H - #include - #endif + rm -f conftest.out - #if defined INT64_MAX - #define CONDITION (INT64_MAX == LONG_MAX) - #elif HAVE_LONG_LONG_INT - #define CONDITION (sizeof (long long int) == sizeof (long int)) - #else - #define CONDITION 0 - #endif - int test[CONDITION ? 1 : -1]; -int -main () -{ +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_long_double_expbit0" >&5 +$as_echo "$gl_cv_cc_long_double_expbit0" >&6; } + case "$gl_cv_cc_long_double_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word.*bit //'` - ; - return 0; -} +cat >>confdefs.h <<_ACEOF +#define LDBL_EXPBIT0_WORD $word _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_test_INT64_MAX_EQ_LONG_MAX=yes -else - gl_cv_test_INT64_MAX_EQ_LONG_MAX=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_INT64_MAX_EQ_LONG_MAX" >&5 -$as_echo "$gl_cv_test_INT64_MAX_EQ_LONG_MAX" >&6; } - if test $gl_cv_test_INT64_MAX_EQ_LONG_MAX = yes; then - INT64_MAX_EQ_LONG_MAX=1; - else - INT64_MAX_EQ_LONG_MAX=0; - fi - else - INT64_MAX_EQ_LONG_MAX=-1 - fi +cat >>confdefs.h <<_ACEOF +#define LDBL_EXPBIT0_BIT $bit +_ACEOF - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UINT32_MAX < UINTMAX_MAX" >&5 -$as_echo_n "checking whether UINT32_MAX < UINTMAX_MAX... " >&6; } -if ${gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Work also in C++ mode. */ - #define __STDC_LIMIT_MACROS 1 + ;; + esac - /* Work if build is not clean. */ - #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H - #include - #if HAVE_STDINT_H - #include - #endif - #if defined UINT32_MAX && defined UINTMAX_MAX - #define CONDITION (UINT32_MAX < UINTMAX_MAX) - #elif HAVE_LONG_LONG_INT - #define CONDITION (sizeof (unsigned int) < sizeof (unsigned long long int)) - #else - #define CONDITION 0 - #endif - int test[CONDITION ? 1 : -1]; -int -main () -{ - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'long double'" >&5 +$as_echo_n "checking where to find the exponent in a 'long double'... " >&6; } +if ${gl_cv_cc_long_double_expbit0+:} false; then : + $as_echo_n "(cached) " >&6 else - gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX" >&5 -$as_echo "$gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX" >&6; } - if test $gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX = yes; then - UINT32_MAX_LT_UINTMAX_MAX=1; - else - UINT32_MAX_LT_UINTMAX_MAX=0; - fi + if test "$cross_compiling" = yes; then : - if test $APPLE_UNIVERSAL_BUILD = 0; then + gl_cv_cc_long_double_expbit0="unknown" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UINT64_MAX == ULONG_MAX" >&5 -$as_echo_n "checking whether UINT64_MAX == ULONG_MAX... " >&6; } -if ${gl_cv_test_UINT64_MAX_EQ_ULONG_MAX+:} false; then : - $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Work also in C++ mode. */ - #define __STDC_LIMIT_MACROS 1 - - /* Work if build is not clean. */ - #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H - - #include - #if HAVE_STDINT_H - #include - #endif - #if defined UINT64_MAX - #define CONDITION (UINT64_MAX == ULONG_MAX) - #elif HAVE_LONG_LONG_INT - #define CONDITION (sizeof (unsigned long long int) == sizeof (unsigned long int)) - #else - #define CONDITION 0 - #endif - int test[CONDITION ? 1 : -1]; -int -main () +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { long double value; unsigned int word[NWORDS]; } + memory_long_double; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (long double x) { - - ; - return 0; + memory_long_double m; + size_t i; + /* Clear it first, in case + sizeof (long double) < sizeof (memory_long_double). */ + memset (&m, 0, sizeof (memory_long_double)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25L); + add_to_ored_words (0.5L); + add_to_ored_words (1.0L); + add_to_ored_words (2.0L); + add_to_ored_words (4.0L); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); } + _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_test_UINT64_MAX_EQ_ULONG_MAX=yes +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_cc_long_double_expbit0=`cat conftest.out` else - gl_cv_test_UINT64_MAX_EQ_ULONG_MAX=no + gl_cv_cc_long_double_expbit0="unknown" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_UINT64_MAX_EQ_ULONG_MAX" >&5 -$as_echo "$gl_cv_test_UINT64_MAX_EQ_ULONG_MAX" >&6; } - if test $gl_cv_test_UINT64_MAX_EQ_ULONG_MAX = yes; then - UINT64_MAX_EQ_ULONG_MAX=1; - else - UINT64_MAX_EQ_ULONG_MAX=0; - fi + rm -f conftest.out - else - UINT64_MAX_EQ_ULONG_MAX=-1 - fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_long_double_expbit0" >&5 +$as_echo "$gl_cv_cc_long_double_expbit0" >&6; } + case "$gl_cv_cc_long_double_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word.*bit //'` + +cat >>confdefs.h <<_ACEOF +#define LDBL_EXPBIT0_WORD $word +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define LDBL_EXPBIT0_BIT $bit +_ACEOF + ;; + esac @@ -54207,6 +61281,9 @@ + + + ac_fn_c_check_decl "$LINENO" "sleep" "ac_cv_have_decl_sleep" "#include " if test "x$ac_cv_have_decl_sleep" = xyes; then : @@ -59489,13 +66566,13 @@ int main (void) { - return mbrtowc (&wc, "", 0, &mbs) == (size_t) -2; + return mbrtowc (&wc, "", 0, &mbs) != (size_t) -2; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_mbrtowc_empty_input=no -else gl_cv_func_mbrtowc_empty_input=yes +else + gl_cv_func_mbrtowc_empty_input=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext @@ -62451,6 +69528,36 @@ } }; then + LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_ALPHA_TRUE= + LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_ALPHA_FALSE='#' +else + LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_ALPHA_TRUE='#' + LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_ALPHA_FALSE= +fi + + + + + + if { test "$HAVE_LIBUNISTRING" != yes \ + || { + + + + test $LIBUNISTRING_VERSION_MAJOR -lt 0 \ + || { test $LIBUNISTRING_VERSION_MAJOR -eq 0 \ + && { test $LIBUNISTRING_VERSION_MINOR -lt 9 \ + || { test $LIBUNISTRING_VERSION_MINOR -eq 9 \ + && test $LIBUNISTRING_VERSION_SUBMINOR -lt 6 + } + } + } + + + + + } + }; then LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_SPACE_TRUE= LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_SPACE_FALSE='#' else @@ -62969,6 +70076,35 @@ } }; then + LIBUNISTRING_COMPILE_UNISTR_U8_NEXT_TRUE= + LIBUNISTRING_COMPILE_UNISTR_U8_NEXT_FALSE='#' +else + LIBUNISTRING_COMPILE_UNISTR_U8_NEXT_TRUE='#' + LIBUNISTRING_COMPILE_UNISTR_U8_NEXT_FALSE= +fi + + + + + if { test "$HAVE_LIBUNISTRING" != yes \ + || { + + + + test $LIBUNISTRING_VERSION_MAJOR -lt 0 \ + || { test $LIBUNISTRING_VERSION_MAJOR -eq 0 \ + && { test $LIBUNISTRING_VERSION_MINOR -lt 9 \ + || { test $LIBUNISTRING_VERSION_MINOR -eq 9 \ + && test $LIBUNISTRING_VERSION_SUBMINOR -lt 0 + } + } + } + + + + + } + }; then LIBUNISTRING_COMPILE_UNISTR_U8_PREV_TRUE= LIBUNISTRING_COMPILE_UNISTR_U8_PREV_FALSE='#' else @@ -62979,6 +70115,35 @@ + if { test "$HAVE_LIBUNISTRING" != yes \ + || { + + + + test $LIBUNISTRING_VERSION_MAJOR -lt 0 \ + || { test $LIBUNISTRING_VERSION_MAJOR -eq 0 \ + && { test $LIBUNISTRING_VERSION_MINOR -lt 9 \ + || { test $LIBUNISTRING_VERSION_MINOR -eq 9 \ + && test $LIBUNISTRING_VERSION_SUBMINOR -lt 0 + } + } + } + + + + + } + }; then + LIBUNISTRING_COMPILE_UNISTR_U8_STRMBTOUC_TRUE= + LIBUNISTRING_COMPILE_UNISTR_U8_STRMBTOUC_FALSE='#' +else + LIBUNISTRING_COMPILE_UNISTR_U8_STRMBTOUC_TRUE='#' + LIBUNISTRING_COMPILE_UNISTR_U8_STRMBTOUC_FALSE= +fi + + + + cat >>confdefs.h <<_ACEOF #define GNULIB_UNISTR_U8_UCTOMB 1 _ACEOF @@ -63908,858 +71073,324 @@ - GNULIB_WCWIDTH=1 - - - - - -$as_echo "#define GNULIB_TEST_WCWIDTH 1" >>confdefs.h - - - - - - for ac_header in stdint.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" -if test "x$ac_cv_header_stdint_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STDINT_H 1 -_ACEOF - -fi - -done - - - : - - - XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=xasprintf:1:c-format" - - # End of code from modules - - - - - - - - - - gltests_libdeps= - gltests_ltlibdeps= - - - - - - - - - - gl_source_base='tests' - gtpotests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS - - gl_module_indicator_condition=$gtpotests_WITNESS - - - - - - - - - - - -for ac_header in pwd.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "pwd.h" "ac_cv_header_pwd_h" "$ac_includes_default" -if test "x$ac_cv_header_pwd_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_PWD_H 1 -_ACEOF - -fi - -done - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 -$as_echo_n "checking for inline... " >&6; } -if ${ac_cv_c_inline+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __cplusplus -typedef int foo_t; -static $ac_kw foo_t static_foo () {return 0; } -$ac_kw foo_t foo () {return 0; } -#endif - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_inline=$ac_kw -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - test "$ac_cv_c_inline" != no && break -done - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 -$as_echo "$ac_cv_c_inline" >&6; } - -case $ac_cv_c_inline in - inline | yes) ;; - *) - case $ac_cv_c_inline in - no) ac_val=;; - *) ac_val=$ac_cv_c_inline;; - esac - cat >>confdefs.h <<_ACEOF -#ifndef __cplusplus -#define inline $ac_val -#endif -_ACEOF - ;; -esac - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 -$as_echo_n "checking for unsigned long long int... " >&6; } -if ${ac_cv_type_unsigned_long_long_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_type_unsigned_long_long_int=yes - if test "x${ac_cv_prog_cc_c99-no}" = xno; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - /* For now, do not test the preprocessor; as of 2007 there are too many - implementations with broken preprocessors. Perhaps this can - be revisited in 2012. In the meantime, code should not expect - #if to work with literals wider than 32 bits. */ - /* Test literals. */ - long long int ll = 9223372036854775807ll; - long long int nll = -9223372036854775807LL; - unsigned long long int ull = 18446744073709551615ULL; - /* Test constant expressions. */ - typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) - ? 1 : -1)]; - typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 - ? 1 : -1)]; - int i = 63; -int -main () -{ -/* Test availability of runtime routines for shift and division. */ - long long int llmax = 9223372036854775807ll; - unsigned long long int ullmax = 18446744073709551615ull; - return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) - | (llmax / ll) | (llmax % ll) - | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) - | (ullmax / ull) | (ullmax % ull)); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -else - ac_cv_type_unsigned_long_long_int=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 -$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; } - if test $ac_cv_type_unsigned_long_long_int = yes; then - -$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h - - fi - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF - -fi - -ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" -if test "x$ac_cv_type_ptrdiff_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_PTRDIFF_T 1 -_ACEOF - - -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ssize_t" >&5 -$as_echo_n "checking for ssize_t... " >&6; } -if ${gt_cv_ssize_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -int x = sizeof (ssize_t *) + sizeof (ssize_t); - return !x; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gt_cv_ssize_t=yes -else - gt_cv_ssize_t=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_ssize_t" >&5 -$as_echo "$gt_cv_ssize_t" >&6; } - if test $gt_cv_ssize_t = no; then - -$as_echo "#define ssize_t int" >>confdefs.h - - fi - -ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" -if test "x$ac_cv_type_pid_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define pid_t int -_ACEOF - -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5 -$as_echo_n "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; } -if ${ac_cv_gnu_library_2_1+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifdef __GNU_LIBRARY__ - #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) - Lucky GNU user - #endif -#endif -#ifdef __UCLIBC__ - Lucky user -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Lucky" >/dev/null 2>&1; then : - ac_cv_gnu_library_2_1=yes -else - ac_cv_gnu_library_2_1=no -fi -rm -f conftest* - - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5 -$as_echo "$ac_cv_gnu_library_2_1" >&6; } - - GLIBC21="$ac_cv_gnu_library_2_1" - - -if test $GLIBC21 = yes; then - ac_fn_c_check_member "$LINENO" "struct __locale_struct" "__names" "ac_cv_member_struct___locale_struct___names" "#include -" -if test "x$ac_cv_member_struct___locale_struct___names" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT___LOCALE_STRUCT___NAMES 1 -_ACEOF - - -fi - -fi - -for ac_func in select -do : - ac_fn_c_check_func "$LINENO" "select" "ac_cv_func_select" -if test "x$ac_cv_func_select" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SELECT 1 -_ACEOF - -fi -done - -for ac_header in vfork.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default" -if test "x$ac_cv_header_vfork_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_VFORK_H 1 -_ACEOF - -fi - -done - -for ac_func in fork vfork -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -if test "x$ac_cv_func_fork" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 -$as_echo_n "checking for working fork... " >&6; } -if ${ac_cv_func_fork_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_fork_works=cross -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* By Ruediger Kuhlmann. */ - return fork () < 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_fork_works=yes -else - ac_cv_func_fork_works=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 -$as_echo "$ac_cv_func_fork_works" >&6; } - -else - ac_cv_func_fork_works=$ac_cv_func_fork -fi -if test "x$ac_cv_func_fork_works" = xcross; then - case $host in - *-*-amigaos* | *-*-msdosdjgpp*) - # Override, as these systems have only a dummy fork() stub - ac_cv_func_fork_works=no - ;; - *) - ac_cv_func_fork_works=yes - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 -$as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} -fi -ac_cv_func_vfork_works=$ac_cv_func_vfork -if test "x$ac_cv_func_vfork" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 -$as_echo_n "checking for working vfork... " >&6; } -if ${ac_cv_func_vfork_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_vfork_works=cross -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Thanks to Paul Eggert for this test. */ -$ac_includes_default -#include -#ifdef HAVE_VFORK_H -# include -#endif -/* On some sparc systems, changes by the child to local and incoming - argument registers are propagated back to the parent. The compiler - is told about this with #include , but some compilers - (e.g. gcc -O) don't grok . Test for this by using a - static variable whose address is put into a register that is - clobbered by the vfork. */ -static void -#ifdef __cplusplus -sparc_address_test (int arg) -# else -sparc_address_test (arg) int arg; -#endif -{ - static pid_t child; - if (!child) { - child = vfork (); - if (child < 0) { - perror ("vfork"); - _exit(2); - } - if (!child) { - arg = getpid(); - write(-1, "", 0); - _exit (arg); - } - } -} + GNULIB_WCWIDTH=1 -int -main () -{ - pid_t parent = getpid (); - pid_t child; - sparc_address_test (0); - child = vfork (); - if (child == 0) { - /* Here is another test for sparc vfork register problems. This - test uses lots of local variables, at least as many local - variables as main has allocated so far including compiler - temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris - 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should - reuse the register of parent for one of the local variables, - since it will think that parent can't possibly be used any more - in this routine. Assigning to the local variable will thus - munge parent in the parent process. */ - pid_t - p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), - p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); - /* Convince the compiler that p..p7 are live; otherwise, it might - use the same hardware register for all 8 local variables. */ - if (p != p1 || p != p2 || p != p3 || p != p4 - || p != p5 || p != p6 || p != p7) - _exit(1); - /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent - from child file descriptors. If the child closes a descriptor - before it execs or exits, this munges the parent's descriptor - as well. Test for this by closing stdout in the child. */ - _exit(close(fileno(stdout)) != 0); - } else { - int status; - struct stat st; +$as_echo "#define GNULIB_TEST_WCWIDTH 1" >>confdefs.h - while (wait(&status) != child) - ; - return ( - /* Was there some problem with vforking? */ - child < 0 - /* Did the child fail? (This shouldn't happen.) */ - || status - /* Did the vfork/compiler bug occur? */ - || parent != getpid() - /* Did the file descriptor bug occur? */ - || fstat(fileno(stdout), &st) != 0 - ); - } -} + + for ac_header in stdint.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" +if test "x$ac_cv_header_stdint_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H 1 _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_vfork_works=yes -else - ac_cv_func_vfork_works=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 -$as_echo "$ac_cv_func_vfork_works" >&6; } -fi; -if test "x$ac_cv_func_fork_works" = xcross; then - ac_cv_func_vfork_works=$ac_cv_func_vfork - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 -$as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} -fi +done -if test "x$ac_cv_func_vfork_works" = xyes; then -$as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h + : -else -$as_echo "#define vfork fork" >>confdefs.h + XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=xasprintf:1:c-format" + + # End of code from modules + + + + + + + + + + gltests_libdeps= + gltests_ltlibdeps= + -fi -if test "x$ac_cv_func_fork_works" = xyes; then -$as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h + + + + + + + gl_source_base='tests' + gtpotests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS + + gl_module_indicator_condition=$gtpotests_WITNESS + + + + + + + + + + + +for ac_header in pwd.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "pwd.h" "ac_cv_header_pwd_h" "$ac_includes_default" +if test "x$ac_cv_header_pwd_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_PWD_H 1 +_ACEOF fi +done - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for signal handlers with siginfo_t" >&5 -$as_echo_n "checking for signal handlers with siginfo_t... " >&6; } -if ${gt_cv_siginfo_t+:} false; then : + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif -#include -int -main () -{ - -struct sigaction action; -siginfo_t info; -action.sa_flags = SA_SIGINFO; -action.sa_sigaction = (void *) 0; - - ; - return 0; -} _ACEOF if ac_fn_c_try_compile "$LINENO"; then : - gt_cv_siginfo_t=yes -else - gt_cv_siginfo_t=no + ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_siginfo_t" >&5 -$as_echo "$gt_cv_siginfo_t" >&6; } - if test $gt_cv_siginfo_t = yes; then + test "$ac_cv_c_inline" != no && break +done -$as_echo "#define HAVE_SIGINFO 1" >>confdefs.h +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } - fi +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for setlocale declaration" >&5 -$as_echo_n "checking for setlocale declaration... " >&6; } -if ${gt_cv_proto_setlocale+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +$as_echo_n "checking for unsigned long long int... " >&6; } +if ${ac_cv_type_unsigned_long_long_int+:} false; then : $as_echo_n "(cached) " >&6 else - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext + ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -extern -#ifdef __cplusplus -"C" -#endif -#if defined(__STDC__) || defined(__cplusplus) -char *setlocale (int category, char *locale); -#else -char *setlocale(); -#endif - + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; int main () { - +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); ; return 0; } + _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gt_cv_proto_setlocale_arg1="" +if ac_fn_c_try_link "$LINENO"; then : + else - gt_cv_proto_setlocale_arg1="const" + ac_cv_type_unsigned_long_long_int=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -gt_cv_proto_setlocale="extern char *setlocale (int category, $gt_cv_proto_setlocale_arg1 char *locale);" +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then -gt_cv_proto_setlocale=`echo "$gt_cv_proto_setlocale" | tr -s ' ' | sed -e 's/( /(/'` -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: - $gt_cv_proto_setlocale" >&5 -$as_echo " - $gt_cv_proto_setlocale" >&6; } - -cat >>confdefs.h <<_ACEOF -#define SETLOCALE_CONST $gt_cv_proto_setlocale_arg1 -_ACEOF +$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + fi +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 else - ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __APPLE_CC__ - not a universal capable compiler - #endif - typedef int dummy; +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # Check for potential -arch flags. It is not universal unless - # there are at least two -arch flags with different values. - ac_arch= - ac_prev= - for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do - if test -n "$ac_prev"; then - case $ac_word in - i?86 | x86_64 | ppc | ppc64) - if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then - ac_arch=$ac_word - else - ac_cv_c_bigendian=universal - break - fi - ;; - esac - ac_prev= - elif test "x$ac_word" = "x-arch"; then - ac_prev=arch - fi - done fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test $ac_cv_c_bigendian = unknown; then - # See if sys/param.h defines the BYTE_ORDER macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include -int -main () -{ -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ - && LITTLE_ENDIAN) - bogus endian macros - #endif +ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" +if test "x$ac_cv_type_ptrdiff_t" = xyes; then : - ; - return 0; -} +cat >>confdefs.h <<_ACEOF +#define HAVE_PTRDIFF_T 1 _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ssize_t" >&5 +$as_echo_n "checking for ssize_t... " >&6; } +if ${gt_cv_ssize_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include - #include - int main () { -#if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - +int x = sizeof (ssize_t *) + sizeof (ssize_t); + return !x; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes + gt_cv_ssize_t=yes else - ac_cv_c_bigendian=no + gt_cv_ssize_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_ssize_t" >&5 +$as_echo "$gt_cv_ssize_t" >&6; } + if test $gt_cv_ssize_t = no; then -int -main () -{ -#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) - bogus endian macros - #endif +$as_echo "#define ssize_t int" >>confdefs.h - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to _BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include + fi -int -main () -{ -#ifndef _BIG_ENDIAN - not big endian - #endif +ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" +if test "x$ac_cv_type_pid_t" = xyes; then : - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # Compile a test program. - if test "$cross_compiling" = yes; then : - # Try to guess by grepping values from an object file. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -short int ascii_mm[] = - { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = - { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; - int use_ascii (int i) { - return ascii_mm[i] + ascii_ii[i]; - } - short int ebcdic_ii[] = - { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = - { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; - int use_ebcdic (int i) { - return ebcdic_mm[i] + ebcdic_ii[i]; - } - extern int foo; -int -main () -{ -return use_ascii (foo) == use_ebcdic (foo); - ; - return 0; -} +cat >>confdefs.h <<_ACEOF +#define pid_t int _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then - ac_cv_c_bigendian=yes - fi - if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi - fi + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5 +$as_echo_n "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; } +if ${ac_cv_gnu_library_2_1+:} false; then : + $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default -int -main () -{ - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long int l; - char c[sizeof (long int)]; - } u; - u.l = 1; - return u.c[sizeof (long int) - 1] == 1; +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif +#ifdef __UCLIBC__ + Lucky user +#endif - ; - return 0; -} _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_bigendian=no +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Lucky" >/dev/null 2>&1; then : + ac_cv_gnu_library_2_1=yes else - ac_cv_c_bigendian=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_gnu_library_2_1=no fi +rm -f conftest* + + - fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } - case $ac_cv_c_bigendian in #( - yes) - endianness=1;; #( - no) - endianness=0 ;; #( - universal) - endianness=universal - ;; #( - *) - echo "AC-C-BIGENDIAN fails to work on your system." | sed -e 's,-,_,g' 1>&2 - echo "Please report this as a bug to bug-autoconf@gnu.org" 1>&2 - exit 1 ;; - esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5 +$as_echo "$ac_cv_gnu_library_2_1" >&6; } -if test $endianness != universal; then + GLIBC21="$ac_cv_gnu_library_2_1" + + +if test $GLIBC21 = yes; then + ac_fn_c_check_member "$LINENO" "struct __locale_struct" "__names" "ac_cv_member_struct___locale_struct___names" "#include +" +if test "x$ac_cv_member_struct___locale_struct___names" = xyes; then : cat >>confdefs.h <<_ACEOF -#define ENDIANNESS $endianness +#define HAVE_STRUCT___LOCALE_STRUCT___NAMES 1 +_ACEOF + + +fi + +fi + +for ac_func in select +do : + ac_fn_c_check_func "$LINENO" "select" "ac_cv_func_select" +if test "x$ac_cv_func_select" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SELECT 1 _ACEOF fi +done - - - for ac_header in arpa/inet.h +for ac_header in vfork.h do : - ac_fn_c_check_header_mongrel "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" "$ac_includes_default" -if test "x$ac_cv_header_arpa_inet_h" = xyes; then : + ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default" +if test "x$ac_cv_header_vfork_h" = xyes; then : cat >>confdefs.h <<_ACEOF -#define HAVE_ARPA_INET_H 1 +#define HAVE_VFORK_H 1 _ACEOF fi done - for ac_func in gethostname gethostbyname inet_ntop +for ac_func in fork vfork do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -64771,652 +71402,622 @@ fi done - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IPv6 sockets" >&5 -$as_echo_n "checking for IPv6 sockets... " >&6; } - if ${gt_cv_socket_ipv6+:} false; then : +if test "x$ac_cv_func_fork" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +$as_echo_n "checking for working fork... " >&6; } +if ${ac_cv_func_fork_works+:} false; then : $as_echo_n "(cached) " >&6 else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + if test "$cross_compiling" = yes; then : + ac_cv_func_fork_works=cross +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - -#include -#include -#include +$ac_includes_default int main () { -int x = AF_INET6; struct in6_addr y; struct sockaddr_in6 z; + + /* By Ruediger Kuhlmann. */ + return fork () < 0; + ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gt_cv_socket_ipv6=yes +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_fork_works=yes else - gt_cv_socket_ipv6=no + ac_cv_func_fork_works=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_socket_ipv6" >&5 -$as_echo "$gt_cv_socket_ipv6" >&6; } - if test $gt_cv_socket_ipv6 = yes; then - -$as_echo "#define HAVE_IPV6 1" >>confdefs.h - - fi - +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +$as_echo "$ac_cv_func_fork_works" >&6; } -if test "$enable_shared" = yes; then - case "$host_os" in - mingw* | cygwin*) is_woe32dll=yes ;; - *) is_woe32dll=no ;; - esac else - is_woe32dll=no + ac_cv_func_fork_works=$ac_cv_func_fork fi - if test $is_woe32dll = yes; then - WOE32DLL_TRUE= - WOE32DLL_FALSE='#' -else - WOE32DLL_TRUE='#' - WOE32DLL_FALSE= +if test "x$ac_cv_func_fork_works" = xcross; then + case $host in + *-*-amigaos* | *-*-msdosdjgpp*) + # Override, as these systems have only a dummy fork() stub + ac_cv_func_fork_works=no + ;; + *) + ac_cv_func_fork_works=yes + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +$as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} fi +ac_cv_func_vfork_works=$ac_cv_func_vfork +if test "x$ac_cv_func_vfork" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +$as_echo_n "checking for working vfork... " >&6; } +if ${ac_cv_func_vfork_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_vfork_works=cross +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include +#ifdef HAVE_VFORK_H +# include +#endif +/* On some sparc systems, changes by the child to local and incoming + argument registers are propagated back to the parent. The compiler + is told about this with #include , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +#ifdef __cplusplus +sparc_address_test (int arg) +# else +sparc_address_test (arg) int arg; +#endif +{ + static pid_t child; + if (!child) { + child = vfork (); + if (child < 0) { + perror ("vfork"); + _exit(2); + } + if (!child) { + arg = getpid(); + write(-1, "", 0); + _exit (arg); + } + } +} -if test $is_woe32dll = yes; then +int +main () +{ + pid_t parent = getpid (); + pid_t child; -$as_echo "#define WOE32DLL 1" >>confdefs.h + sparc_address_test (0); -fi + child = vfork (); -GETTEXTLIB_EXPORTS_FLAGS= -if test -n "$GETOPT_H"; then - GETTEXTLIB_EXPORTS_FLAGS="-DGNULIB_DEFINED_GETOPT $GETTEXTLIB_EXPORTS_FLAGS" -fi -if test "$ac_cv_lib_error_at_line" = no; then - GETTEXTLIB_EXPORTS_FLAGS="-DGNULIB_DEFINED_ERROR $GETTEXTLIB_EXPORTS_FLAGS" -fi + if (child == 0) { + /* Here is another test for sparc vfork register problems. This + test uses lots of local variables, at least as many local + variables as main has allocated so far including compiler + temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris + 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should + reuse the register of parent for one of the local variables, + since it will think that parent can't possibly be used any more + in this routine. Assigning to the local variable will thus + munge parent in the parent process. */ + pid_t + p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), + p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); + /* Convince the compiler that p..p7 are live; otherwise, it might + use the same hardware register for all 8 local variables. */ + if (p != p1 || p != p2 || p != p3 || p != p4 + || p != p5 || p != p6 || p != p7) + _exit(1); -if test "$USER_LABEL_PREFIX" = _; then - GETTEXTLIB_EXPORTS_FLAGS="-DUSER_LABEL_PREFIX_UNDERSCORE $GETTEXTLIB_EXPORTS_FLAGS" -fi + /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent + from child file descriptors. If the child closes a descriptor + before it execs or exits, this munges the parent's descriptor + as well. Test for this by closing stdout in the child. */ + _exit(close(fileno(stdout)) != 0); + } else { + int status; + struct stat st; + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 -if test "$ac_cv_lib_error_at_line" = no; then + /* Did the child fail? (This shouldn't happen.) */ + || status -$as_echo "#define GNULIB_REPLACE_ERROR 1" >>confdefs.h + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + /* Did the file descriptor bug occur? */ + || fstat(fileno(stdout), &st) != 0 + ); + } +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_vfork_works=yes +else + ac_cv_func_vfork_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +$as_echo "$ac_cv_func_vfork_works" >&6; } +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +$as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi +if test "x$ac_cv_func_vfork_works" = xyes; then -case "$host_os" in - linux*) - -$as_echo "#define DYNLOAD_LIBEXPAT 1" >>confdefs.h - - LIBEXPAT="-ldl" - LTLIBEXPAT="-ldl" - - - ;; - *) - +$as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h +else +$as_echo "#define vfork fork" >>confdefs.h +fi +if test "x$ac_cv_func_fork_works" = xyes; then +$as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for signal handlers with siginfo_t" >&5 +$as_echo_n "checking for signal handlers with siginfo_t... " >&6; } +if ${gt_cv_siginfo_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +struct sigaction action; +siginfo_t info; +action.sa_flags = SA_SIGINFO; +action.sa_sigaction = (void *) 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_siginfo_t=yes +else + gt_cv_siginfo_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_siginfo_t" >&5 +$as_echo "$gt_cv_siginfo_t" >&6; } + if test $gt_cv_siginfo_t = yes; then +$as_echo "#define HAVE_SIGINFO 1" >>confdefs.h - use_additional=yes + fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for setlocale declaration" >&5 +$as_echo_n "checking for setlocale declaration... " >&6; } +if ${gt_cv_proto_setlocale+:} false; then : + $as_echo_n "(cached) " >&6 +else - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +char *setlocale (int category, char *locale); +#else +char *setlocale(); +#endif -# Check whether --with-libexpat-prefix was given. -if test "${with_libexpat_prefix+set}" = set; then : - withval=$with_libexpat_prefix; - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then +int +main () +{ - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_proto_setlocale_arg1="" +else + gt_cv_proto_setlocale_arg1="const" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +gt_cv_proto_setlocale="extern char *setlocale (int category, $gt_cv_proto_setlocale_arg1 char *locale);" +fi - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" +gt_cv_proto_setlocale=`echo "$gt_cv_proto_setlocale" | tr -s ' ' | sed -e 's/( /(/'` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: + $gt_cv_proto_setlocale" >&5 +$as_echo " + $gt_cv_proto_setlocale" >&6; } - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" +cat >>confdefs.h <<_ACEOF +#define SETLOCALE_CONST $gt_cv_proto_setlocale_arg1 +_ACEOF - else - additional_includedir="$withval/include" - additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi - fi - fi -fi - LIBEXPAT= - LTLIBEXPAT= - INCEXPAT= - LIBEXPAT_PREFIX= - HAVE_LIBEXPAT= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='expat ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - eval libname=\"$acl_libname_spec\" # typically: libname=lib$name - if test -n "$acl_shlibext"; then - shrext=".$acl_shlibext" # typically: shrext=.so - else - shrext= - fi - if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBEXPAT; do + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +$as_echo_n "checking whether byte ordering is bigendian... " >&6; } +if ${ac_cv_c_bigendian+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no \ - || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then - LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$acl_hardcode_direct" = yes; then - LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$found_so" - else - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then - LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBEXPAT; do + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-L$found_dir" - fi - if test "$acl_hardcode_minus_L" != no; then - LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$found_so" - else - LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$found_a" - else - LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */$acl_libdirstem | */$acl_libdirstem/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = 'expat'; then - LIBEXPAT_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - */$acl_libdirstem2 | */$acl_libdirstem2/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = 'expat'; then - LIBEXPAT_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCEXPAT; do + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCEXPAT="${INCEXPAT}${INCEXPAT:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBEXPAT; do + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" +int +main () +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBEXPAT; do + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" +int +main () +{ +#ifndef _BIG_ENDIAN + not big endian + #endif - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$dep" - LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }$dep" - ;; - esac - done - fi - else - LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-l$name" - LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$acl_hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$flag" - done + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }-R$found_dir" - done - fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; +int +main () +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_bigendian=no +else + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +$as_echo "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + endianness=1;; #( + no) + endianness=0 ;; #( + universal) + endianness=universal + ;; #( + *) + echo "AC-C-BIGENDIAN fails to work on your system." | sed -e 's,-,_,g' 1>&2 + echo "Please report this as a bug to bug-autoconf@gnu.org" 1>&2 + exit 1 ;; + esac +if test $endianness != universal; then +cat >>confdefs.h <<_ACEOF +#define ENDIANNESS $endianness +_ACEOF - ac_save_CPPFLAGS="$CPPFLAGS" +fi - for element in $INCEXPAT; do - haveit= - for x in $CPPFLAGS; do - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done + for ac_header in arpa/inet.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" "$ac_includes_default" +if test "x$ac_cv_header_arpa_inet_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_ARPA_INET_H 1 +_ACEOF + +fi + +done + + for ac_func in gethostname gethostbyname inet_ntop +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libexpat" >&5 -$as_echo_n "checking for libexpat... " >&6; } -if ${ac_cv_libexpat+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IPv6 sockets" >&5 +$as_echo_n "checking for IPv6 sockets... " >&6; } + if ${gt_cv_socket_ipv6+:} false; then : $as_echo_n "(cached) " >&6 else - ac_save_LIBS="$LIBS" - case " $LIBEXPAT" in - *" -l"*) LIBS="$LIBS $LIBEXPAT" ;; - *) LIBS="$LIBEXPAT $LIBS" ;; - esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include + +#include +#include +#include int main () { -XML_ExpatVersion(); +int x = AF_INET6; struct in6_addr y; struct sockaddr_in6 z; ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_libexpat=yes +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_socket_ipv6=yes else - ac_cv_libexpat='no' + gt_cv_socket_ipv6=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$ac_save_LIBS" +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libexpat" >&5 -$as_echo "$ac_cv_libexpat" >&6; } - if test "$ac_cv_libexpat" = yes; then - HAVE_LIBEXPAT=yes - -$as_echo "#define HAVE_LIBEXPAT 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libexpat" >&5 -$as_echo_n "checking how to link with libexpat... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBEXPAT" >&5 -$as_echo "$LIBEXPAT" >&6; } - else - HAVE_LIBEXPAT=no - CPPFLAGS="$ac_save_CPPFLAGS" - LIBEXPAT= - LTLIBEXPAT= - LIBEXPAT_PREFIX= + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_socket_ipv6" >&5 +$as_echo "$gt_cv_socket_ipv6" >&6; } + if test $gt_cv_socket_ipv6 = yes; then + +$as_echo "#define HAVE_IPV6 1" >>confdefs.h + fi +if test "$enable_shared" = yes; then + case "$host_os" in + mingw* | cygwin*) is_woe32dll=yes ;; + *) is_woe32dll=no ;; + esac +else + is_woe32dll=no +fi + if test $is_woe32dll = yes; then + WOE32DLL_TRUE= + WOE32DLL_FALSE='#' +else + WOE32DLL_TRUE='#' + WOE32DLL_FALSE= +fi +if test $is_woe32dll = yes; then +$as_echo "#define WOE32DLL 1" >>confdefs.h + +fi + +GETTEXTLIB_EXPORTS_FLAGS= +if test -n "$GETOPT_H"; then + GETTEXTLIB_EXPORTS_FLAGS="-DGNULIB_DEFINED_GETOPT $GETTEXTLIB_EXPORTS_FLAGS" +fi +if test "$ac_cv_lib_error_at_line" = no; then + GETTEXTLIB_EXPORTS_FLAGS="-DGNULIB_DEFINED_ERROR $GETTEXTLIB_EXPORTS_FLAGS" +fi + +if test "$USER_LABEL_PREFIX" = _; then + GETTEXTLIB_EXPORTS_FLAGS="-DUSER_LABEL_PREFIX_UNDERSCORE $GETTEXTLIB_EXPORTS_FLAGS" +fi + + +if test "$ac_cv_lib_error_at_line" = no; then + +$as_echo "#define GNULIB_REPLACE_ERROR 1" >>confdefs.h + +fi - ;; -esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } @@ -65886,7 +72487,15 @@ fi -ARCHIVE_VERSION=0.19.6 +ARCHIVE_VERSION=0.19.7 + + +PACKAGE_SUFFIX="-$ARCHIVE_VERSION" + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_SUFFIX "$PACKAGE_SUFFIX" +_ACEOF ac_aux_dir_abs=`cd $ac_aux_dir && pwd` @@ -70501,6 +77110,9 @@ ac_config_files="$ac_config_files intl/Makefile:../gettext-runtime/intl/Makefile.in" +ac_config_files="$ac_config_files its/Makefile" + + ac_config_files="$ac_config_files gnulib-lib/Makefile" @@ -70737,6 +77349,8 @@ as_fn_error $? "conditional \"GL_GENERATE_ICONV_H\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi + + if test -z "${INCLUDED_LIBGLIB_TRUE}" && test -z "${INCLUDED_LIBGLIB_FALSE}"; then as_fn_error $? "conditional \"INCLUDED_LIBGLIB\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -70846,7 +77460,6 @@ Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi - gl_libobjs= gl_ltlibobjs= if test -n "$gl_LIBOBJS"; then @@ -70862,6 +77475,10 @@ gl_LTLIBOBJS=$gl_ltlibobjs + + + + if test -z "${POSIX_SPAWN_PORTED_TRUE}" && test -z "${POSIX_SPAWN_PORTED_FALSE}"; then as_fn_error $? "conditional \"POSIX_SPAWN_PORTED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -70966,6 +77583,10 @@ as_fn_error $? "conditional \"LIBUNISTRING_COMPILE_UNICONV_U8_CONV_FROM_ENC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_ALPHA_TRUE}" && test -z "${LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_ALPHA_FALSE}"; then + as_fn_error $? "conditional \"LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_ALPHA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_SPACE_TRUE}" && test -z "${LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_SPACE_FALSE}"; then as_fn_error $? "conditional \"LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_SPACE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -71006,10 +77627,18 @@ as_fn_error $? "conditional \"LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUCR\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${LIBUNISTRING_COMPILE_UNISTR_U8_NEXT_TRUE}" && test -z "${LIBUNISTRING_COMPILE_UNISTR_U8_NEXT_FALSE}"; then + as_fn_error $? "conditional \"LIBUNISTRING_COMPILE_UNISTR_U8_NEXT\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${LIBUNISTRING_COMPILE_UNISTR_U8_PREV_TRUE}" && test -z "${LIBUNISTRING_COMPILE_UNISTR_U8_PREV_FALSE}"; then as_fn_error $? "conditional \"LIBUNISTRING_COMPILE_UNISTR_U8_PREV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${LIBUNISTRING_COMPILE_UNISTR_U8_STRMBTOUC_TRUE}" && test -z "${LIBUNISTRING_COMPILE_UNISTR_U8_STRMBTOUC_FALSE}"; then + as_fn_error $? "conditional \"LIBUNISTRING_COMPILE_UNISTR_U8_STRMBTOUC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${LIBUNISTRING_COMPILE_UNISTR_U8_UCTOMB_TRUE}" && test -z "${LIBUNISTRING_COMPILE_UNISTR_U8_UCTOMB_FALSE}"; then as_fn_error $? "conditional \"LIBUNISTRING_COMPILE_UNISTR_U8_UCTOMB\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -71467,7 +78096,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by gettext-tools $as_me 0.19.6, which was +This file was extended by gettext-tools $as_me 0.19.7, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -71533,7 +78162,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -gettext-tools config.status 0.19.6 +gettext-tools config.status 0.19.7 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -72149,6 +78778,7 @@ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "intl/Makefile") CONFIG_FILES="$CONFIG_FILES intl/Makefile:../gettext-runtime/intl/Makefile.in" ;; + "its/Makefile") CONFIG_FILES="$CONFIG_FILES its/Makefile" ;; "gnulib-lib/Makefile") CONFIG_FILES="$CONFIG_FILES gnulib-lib/Makefile" ;; "libgrep/Makefile") CONFIG_FILES="$CONFIG_FILES libgrep/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; diff -Nru gettext-0.19.6/gettext-tools/configure.ac gettext-0.19.7/gettext-tools/configure.ac --- gettext-0.19.6/gettext-tools/configure.ac 2015-09-11 02:49:05.000000000 +0000 +++ gettext-0.19.7/gettext-tools/configure.ac 2015-12-27 22:58:08.000000000 +0000 @@ -286,30 +286,11 @@ #endif /* Extra OS/2 (emx+gcc) defines. */ -#ifdef __EMX__ +#if defined __EMX__ && !defined __KLIBC__ # include "intl/os2compat.h" #endif ]) -dnl Check for the expat XML parser. -dnl On operating systems where binary distribution vendors are likely to -dnl ship both gettext and expat, we use dynamic loading to avoid a hard -dnl dependency from gettext to expat. -case "$host_os" in - linux*) - AC_DEFINE([DYNLOAD_LIBEXPAT], [1], - [Define to 1 if libexpat shall be dynamically loaded via dlopen().]) - LIBEXPAT="-ldl" - LTLIBEXPAT="-ldl" - AC_SUBST([LIBEXPAT]) - AC_SUBST([LTLIBEXPAT]) - ;; - *) - AC_LIB_HAVE_LINKFLAGS([expat], [], - [#include ], [XML_ExpatVersion();]) - ;; -esac - dnl Check for nm output filter that yields the exported symbols. gt_GLOBAL_SYMBOL_PIPE @@ -458,9 +439,14 @@ fi AC_SUBST([ARCHIVE_FORMAT]) -ARCHIVE_VERSION=0.19.6 +ARCHIVE_VERSION=0.19.7 AC_SUBST([ARCHIVE_VERSION]) +PACKAGE_SUFFIX="-$ARCHIVE_VERSION" +AC_SUBST([PACKAGE_SUFFIX]) +AC_DEFINE_UNQUOTED(PACKAGE_SUFFIX, "$PACKAGE_SUFFIX", + [Define to the suffix of this package]) + dnl Check for tools needed for formatting the documentation. ac_aux_dir_abs=`cd $ac_aux_dir && pwd` AC_PATH_PROG([DVIPS], [dvips], [$ac_aux_dir_abs/missing dvips]) @@ -519,6 +505,8 @@ mv intl/Makefile.tmp intl/Makefile ]) +AC_CONFIG_FILES([its/Makefile]) + AC_CONFIG_FILES([gnulib-lib/Makefile]) AC_CONFIG_FILES([libgrep/Makefile]) diff -Nru gettext-0.19.6/gettext-tools/doc/autopoint.texi gettext-0.19.7/gettext-tools/doc/autopoint.texi --- gettext-0.19.6/gettext-tools/doc/autopoint.texi 2015-08-21 07:18:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/autopoint.texi 2015-10-13 21:32:17.000000000 +0000 @@ -13,10 +13,10 @@ To extract the latest available infrastructure which satisfies a version requirement, then you can use the form -@code{AM_GNU_GETTEXT_REQUIRE_VERSION(@var{version})} instead. For example, if -gettext @value{VERSION} is installed on your system and @code{0.19.1} is -requested, then the infrastructure files of version @value{VERSION} will -be copied into a source package. +@code{AM_GNU_GETTEXT_REQUIRE_VERSION(@var{version})} instead. For +example, if gettext @value{ARCHIVE-VERSION} is installed on your system +and @code{0.19.1} is requested, then the infrastructure files of version +@value{ARCHIVE-VERSION} will be copied into a source package. @subsubsection Options @@ -50,10 +50,11 @@ @end table -@code{autopoint} supports the GNU @code{gettext} versions from 0.10.35 to -the current one, @value{VERSION}. In order to apply @code{autopoint} to -a package using a @code{gettext} version newer than @value{VERSION}, you -need to install this same version of GNU @code{gettext} at least. +@code{autopoint} supports the GNU @code{gettext} versions from 0.10.35 +to the current one, @value{ARCHIVE-VERSION}. In order to apply +@code{autopoint} to a package using a @code{gettext} version newer than +@value{ARCHIVE-VERSION}, you need to install this same version of GNU +@code{gettext} at least. In packages using GNU @code{automake}, an invocation of @code{autopoint} should be followed by invocations of @code{aclocal} and then @code{autoconf} diff -Nru gettext-0.19.6/gettext-tools/doc/ChangeLog gettext-0.19.7/gettext-tools/doc/ChangeLog --- gettext-0.19.6/gettext-tools/doc/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/ChangeLog 1970-01-01 00:00:00.000000000 +0000 @@ -1,1645 +0,0 @@ -2015-09-11 Daiki Ueno - - * gettext 0.19.6 released. - -2015-07-28 Daiki Ueno - - * autopoint.texi: Mention AM_GNU_GETTEXT_REQUIRE_VERSION. - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2015-06-22 Daiki Ueno - - * msginit.texi: More explanations about "meta information". - * gettext.texi (Plural forms): Mention Unicode CLDR support in - msginit. - -2015-06-01 Daiki Ueno - - * gettext.texi (gawk): Mention new file extensions ".gawk" and - ".twjr". - -2015-06-01 Daiki Ueno - - * gettext.texi (Adjusting Files): Update link to GNU hello - distribution. Suggested by Karl Berry in: - . - -2015-05-08 Matthew Behrens (tiny change) - - * gettext.texi (python-format): Update link to Python Library - Reference. - -2015-03-15 Benno Schulenberg (tiny change) - - * xgettext.texi: Fix a word and a punctuation. - -2015-03-06 Daiki Ueno - - * gettext.texi (kde-kuit-format): New subsection. - -2015-03-03 Daiki Ueno - - * xgettext.texi: Document options --check and --sentence-end. - -2015-02-09 Daiki Ueno - - * gettext.texi (Plural forms): Add Arabic, Bahasa Indonesian, and - Thai. - Reported by Maryam Aly in: - . - -2015-02-03 Daiki Ueno - - * msgexec.texi, msgfilter.texi: Fix markup error caused by commit - 96dde0b8 and a4d132f7. - -2015-01-29 Daiki Ueno - - * msgexec.texi: Document --newline option. - -2015-01-28 Daiki Ueno - - * msgfilter.texi: Document --newline option. - -2015-01-05 Daiki Ueno - - * gettext.texi (Vala): New section. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-12-01 Daiki Ueno - - doc: Document placement of extracted comment blocks - * xgettext.texi: Mention that extracted comment blocks must be - adjacent to keyword lines. - Reported by Yves-Gwenael Bourhis at: - . - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-06-12 Daiki Ueno - - * gpl.texi, lgpl.texi, fdl.texi: Update from GNU. - * gettext.texi (GNU GPL, GNU LGPL, GNU LGPL): Define nodes here, - instead of in those license documents. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2014-06-01 Daiki Ueno - - * ISO_639: Remove Moldavian. Update Bihari, Bengali, Catalan, - Church Slavic, Divehi, Dzongkha, Ewe, Greek, Spanish, Fijian, - Gaelic, Hebrew, Interlingua, Indonesian, Inupiak, Central Khmer, - Kirghiz, Luxembourgish, Limburgan, Lao, Latvian, Norwegian Bokmal, - North Ndebele, Dutch, Norwegian Nynorsk, South Ndebele, Occitan, - Oromo, Pushto, Rundi, Romanian, Sango, Swati, South Sotho, Tswana, - Tonga, Uighur, Volapuk, Yiddish, and Zhuang. - -2014-05-31 Daiki Ueno - - * msgexec.texi: Document the environment variable - MSGEXEC_PREV_MSGCTXT, MSGEXEC_PREV_MSGID, and - MSGEXEC_PREV_MSGID_PLURAL. - -2014-05-31 Daiki Ueno - - * msgfilter.texi: Document the environment variable - MSGFILTER_PREV_MSGCTXT, MSGFILTER_PREV_MSGID, and - MSGFILTER_PREV_MSGID_PLURAL. - -2014-05-15 Stanislav Brabec (tiny change) - - * msgfilter.texi: Document the environment variable - MSGFILTER_MSGID_PLURAL and MSGFILTER_PLURAL_FORM. - -2014-05-15 Stanislav Brabec (tiny change) - - * msgexec.texi: Document the environment variable - MSGEXEC_MSGID_PLURAL and MSGEXEC_PLURAL_FORM. - -2014-05-10 Guido Flohr - - msgattrib: Add --empty option to clear msgstr - * msgattrib.texi: Document --empty option. - -2014-05-05 Daiki Ueno - - * gettext.texi (Translations under Version Control): New section. - -2014-05-05 Daiki Ueno - - * gettext.texi (Version Control Issues): Rename from "CVS Issues"; - talk about generic issues when using version control systems. - -2014-04-30 Daiki Ueno - - * gettext.texi (Scheme): Document gettext shorthand form _"abc". - -2014-04-22 Daiki Ueno - - build: Use git-version-gen intead of version.sh - * Makefile.am: Refer to .version instead of version.sh. - -2014-04-15 Daiki Ueno - - * msgfilter.texi: Document 'quot' and 'boldquot' built-in filters. - -2014-04-04 Daiki Ueno - - * msgfmt.texi: Document --desktop mode. - -2014-04-04 Daiki Ueno - - * xgettext.texi: Document Desktop Entry file. - -2014-03-26 Aurélien Gâteau (tiny change) - - * msgfmt.texi: Document --source option. - -2014-03-25 Daiki Ueno - - * msgattrib.texi: Document the optional argument of - --add-location. - * msgcat.texi: Likewise. - * msgcomm.texi: Likewise. - * msgconv.texi: Likewise. - * msgen.texi: Likewise. - * msgfilter.texi: Likewise. - * msggrep.texi: Likewise. - * msgmerge.texi: Likewise. - * msguniq.texi: Likewise. - * xgettext.texi: Likewise. - -2014-03-15 Daiki Ueno - - * FAQ.html: Point to bug-gettext@gnu.org rather than - bug-gnu-gettext@gnu.org, in the context of mailing list; add a - link to the mailing list information page. Point to the latest - URL of the GNOME Translation Project. Replace the reference of - "Free Translation Project" with "Translation Project". - Reported by Benno Schulenberg. - -2014-02-10 Daiki Ueno - - * ISO_3166: Remove AN, add BL, BQ, CW, MF, SS, and SX. Update - country code for AG, AS, BA, BN, BO, CD, CG, FK, FM, FO, GB, GS, - HM, IR, KN, KP, KR, LA, LC, MD, MK, MM, PM, PS, RU, SH, SJ, ST, - SY, TC, TF, TT, TW, TZ, UM, VA, VC, VE, VG, VI, VN, WF, and WS. - * iso-3166.texi: Regenerate. - Reported by Karl Berry in: - . - -2014-01-12 Benno Schulenberg (tiny change) - - * gettext.texi (c-format Flag): Wording fixes. - -2013-12-17 Daiki Ueno - - * gettext.texi (Installers): Fix wording. - Reported by Reuben Thomas in: - . - -2013-08-06 Daiki Ueno - - xgettext: add support for GSettings schema file - * gettext.texi (GSettings): New subsection. - * xgettext.texi: Document GSettings source language. - -2013-06-10 Daiki Ueno - - * Makefile.am: Use $(MKDIR_P) instead of $(mkdir_p). - Suggested by Stefano Lattarini in - . - -2013-06-04 Daiki Ueno - - Support for Vala. - * xgettext.texi: Document Vala source language. Document - that it is applicable to --flag. - -2013-05-20 Pavel Kharitonov (tiny change) - - Add --previous option to msgattrib. - * msgattrib.texi: Document --previous. - -2013-04-26 Daiki Ueno - - Support for Python brace format. - * gettext.texi (PO Files): Mention python-brace-format. - (python-format): Mention brace format. - -2013-04-17 Andreas Stricker - - Support for JavaScript. - * gettext.texi (PO Files): Mention javascript-format. - (javascript-format): New subsection. - (JavaScript): New subsection. - * xgettext.texi: Document JavaScript source language. Document - that it is applicable to --flag. - -2013-04-11 Ľubomír Remák - - Support for Lua. - * gettext.texi (PO Files): Mention lua-format. - (lua-format): New subsection. - (Lua): New subsection. - * xgettext.texi: Document Lua source language. Document that it is - applicable to --flag. - -2013-04-02 Daiki Ueno - - * gettext.texi (PO Files): Use '@pxref' instead of '@xref'. - -2013-03-12 Andreas Stricker (tiny change) - - * msgfmt.texi (PO Format): A note about the header entry - -2013-02-15 Daiki Ueno - - * msgfmt.texi (Input file location): Output file is not PO. - -2013-01-30 Miguel Angel Arruga Vivas (tiny change) - - * msgen.texi (Output details): Fix link in '@opindex' pointing to - msgcat. - Reported at . - * msgmerge.texi (Output details): Likewise. - -2012-12-27 Daiki Ueno - - * gettext.texi (Plural forms): Fix ngettext arguments. - Reported by Reinhard Schaffner . - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2012-06-03 Jim Meyering - - * gettext.texi: Spelling fixes. - -2012-05-03 Bruno Haible - - Document msgfmt option --endianness. - * msgfmt.texi: Document the option --endianness. - Reported by Paul Martin via - Santiago Vila . - -2012-01-26 Bruno Haible - - Modernize quoting. - * FAQ.html: Quote 'like this', not `like this', as per the recent - change to the GNU coding standards. - * ISO_3166: Likewise. - * ISO_3166_de: Likewise. - * tutorial.html: Process through - sed -e "s/\`\`\([^']*\)''/“\1”/g" | sed -e "s/\`\([^']*\)'/‘\1’/g" - -2011-07-08 Bruno Haible - - * gettext.texi (aclocal): Recommend the use of aclocal's --install - option. - Suggested by Stefano Lattarini . - -2011-06-03 Bruno Haible - - Copyright: Use LGPL 2.1 instead of LGPL 2.0. - * gettext.texi (Discussions, Licenses): Write "GNU Lesser General - Public License". - -2011-05-13 Ben Elliston - - * gettext.texi (config.guess): Update wget commands. - -2011-04-13 Bruno Haible - - * msgcat.texi: Fix description of --use-first. - * msgcomm.texi: Fix typo. - Reported by Matthijs Kooijman. - -2010-12-14 Bruno Haible - - * xgettext.texi: Mention that -L also supports Shell. - Reported by Eric Blake . - -2010-11-13 Bruno Haible - - * gettext.texi (Plural forms): Add Belarusian. - Reported by Ihar Hrachyshka . - -2010-08-29 Bruno Haible - - * gettext.texi (Using Compendia): Correct after 2007-09-09 change. - -2010-06-06 Bruno Haible - - xgettext: Recognize language of files ending in .perl. - * gettext.texi (Perl): Mention file extension '.perl'. - Suggested by Ævar Arnfjörð Bjarmason . - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-05-20 Bruno Haible - - * gettext.texi (objc-format): Fix typo. - Reported by Kalle Olavi Niemitalo . - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2010-04-25 Bruno Haible - - * gettext.texi (object-pascal-format): Add reference to Free Pascal - documentation. - Information provided by Marco van de Voort . - -2010-04-02 Bruno Haible - - * FAQ.html (building_rpath_check): Remove section. - -2010-03-31 Guido Flohr - - More explanations about how xgettext handles Perl syntax ambiguities. - * gettext.texi (General Problems): Explain how xgettext disambiguates - conditional operator vs. regular expression. - -2010-03-13 Bruno Haible - - New options --color, --style for many programs. - * msgattrib.texi: Document the options --color and --style. - * msgcomm.texi: Likewise. - * msgconv.texi: Likewise. - * msgen.texi: Likewise. - * msgfilter.texi: Likewise. - * msggrep.texi: Likewise. - * msginit.texi: Likewise. - * msgmerge.texi: Likewise. - * msgunfmt.texi: Likewise. - * msguniq.texi: Likewise. - * xgettext.texi: Likewise. - Reported by Kalle Olavi Niemitalo - via Santiago Vila . - -2010-02-20 Bruno Haible - - * gettext.texi (Plural forms): Add Bulgarian. - Reported by Roumen Petrov . - -2010-02-20 Bruno Haible - - * gettext.texi (Plural forms): Sort language lists by number of - speakers, not alphabetically. - -2009-12-25 Bruno Haible - - * gettext.texi (aclocal): Add fcntl-o.m4 instead of fcntl_h.m4 to the - file list. - -2009-10-18 Bruno Haible - - * gettext.texi (aclocal): Add fcntl_h.m4 to the file list. - -2009-09-20 Bruno Haible - - * gettext.texi (src/Makefile): Update recommendations for autoconf - versions >= 2.60. - Reported by Sylvain Beucler - at . - -2009-08-16 Bruno Haible - - * Makefile.am (dist-html-split): Depend on gettext_toc.html. - -2009-06-11 Bruno Haible - - * gettext.texi (Mark Keywords): Add cross-section references. - Reported by David Bruce . - -2009-05-31 Bruno Haible - - * Makefile.am: Use dist-hook instead of old distdir hack. - -2009-05-01 Bruno Haible - - Undo 2005-02-23 change. - * gettext.texi: Put the table of contents back to the start. - -2009-04-08 Bruno Haible - - * Makefile.am (CLEANFILES): Remove variable. Not needed any more - -2009-04-07 Bruno Haible - - * Makefile.am (SUFFIXES): Remove variable. Not needed any more since - automake-1.7. - -2009-03-29 Bruno Haible - - * gettext.texi (PO Files): Mention gfc-internal-format. - (gfc-internal-format): New subsection. - -2009-02-15 Bruno Haible - - * gettext.texi (MO Files): Update w.r.t. the maximum revision in use. - Reported by Dwayne Bailey . - -2009-01-27 Bruno Haible - - * gettext.texi (PO Files): Mention qt-plural-format. - (qt-plural-format): New subsection. - -2009-01-25 Bruno Haible - - * gettext.texi (Translating plural forms): New section. - (Header Entry, Plural forms): Refer to it. - Reported by Yan Kerb . - -2009-01-18 Bruno Haible - - * msgfmt.texi: Describe the effect of combining --statistics with - --verbose. - -2008-11-14 Bruno Haible - - * msgfilter.texi: Document the environment variables MSGFILTER_MSGCTXT, - MSGFILTER_MSGID, MSGFILTER_LOCATION. - -2008-10-10 Noritada Kobayashi - - * gettext.texi (PO Mode): Update remaining obsolete key bindings used - in the version 0.10.x era. - -2008-10-04 Bruno Haible - - * gettext.texi (PO Files): Mention the 'range:' flag syntax. - (Plural forms): Document how to produce 'range:' flags. - -2008-09-27 Bruno Haible - - * ISO_639-2: Update entry about Tamashek. - -2008-09-15 Bruno Haible - - * msgcmp.texi: Document option -N/--no-fuzzy-matching. - -2008-08-17 Bruno Haible - - * gettext.texi (aclocal): Add threadlib.m4 to the file list. - -2008-08-15 Bruno Haible - - * gettext.texi (Python): Recommend format strings with named arguments. - Reported by Alexander Dupuy - in . - -2008-06-18 Ralf Wildenhues - - * msggrep.texi: Drop leading whitespace. - -2008-05-18 Bruno Haible - - * gettext.texi (Names): Recommend the gnulib module 'propername'. - Don't mention the translation project's whoiswho.pot any more. Don't - say that Emacs does not support UTF-8 well. - Reported by Brian Kemp . - -2008-05-06 Bruno Haible - - * gettext.texi (Plural forms): Explain why the number argument must be - the last. - Reported by Benjamin Geer . - -2008-04-25 Bruno Haible - - * ISO_639: Remove Adangme. Update Belarusian, Scottish Gaelic, - Interlingue, Sichuan Yi, Central Khmer, Pashto, Romansh. - * ISO_639-2: Add Adangme, Classical Syriac, Blissymbols. Update - Aramaic, Mapudungun, Asturian, Banda, Beja, Bini, Batak, Carib, - Chipewyan, Dayak, Swiss German, Ijo, Kachin, Karen, Kru, Miscellaneous, - Nahuatl, Pampanga, Rarotongan, Songhai, Sranan Tongo, Zande, - No linguistic content. - * iso-639.texi: Regenerate. - * iso-639-2.texi: Regenerate. - * gettext.texi (Header Entry): Update name of Belarusian. - -2008-04-20 Bruno Haible - - * xgettext.texi: Clarify single-letter options that take an optional - argument: -c, -k, -m, -M. - -2008-03-10 Bruno Haible - - * gettext.texi (gettext Invocation): Mention that xgettext does not - support the various options. - (ngettext Invocation): Likewise. - Reported by Aurélio A. Heckert . - -2008-02-02 Benno Schulenberg - - * gettext.texi (PO Files): Stylistic improvements. - -2008-01-12 Bruno Haible - - * msgfilter.texi: Fix last example. - Reported by Benno Schulenberg . - -2007-12-24 Bruno Haible - - * gettext.texi (Header Entry): Document the 'Language' field. - * msgcat.texi: Document the --lang option. - * msgen.texi: Likewise. - * msgmerge.texi: Likewise. - -2007-12-02 Bruno Haible - - * gettext.texi (Plural Forms): Put Turkish under nplurals=2. - Reported by Sertaç Ö. Yıldız . - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2007-10-31 Bruno Haible - - * gettext.texi (aclocal): Remove ulonglong.m4 from the file list. - -2007-10-28 Bruno Haible - - * gettext.texi (AM_XGETTEXT_OPTION): New section. - (po/Makevers): Refer to it. - -2007-10-28 Bruno Haible - - * gettext.texi: Talk about configure.ac instead of configure.in. - (configure.ac): Renamed from configure.in. - (Autoconf macros for use in configure.ac): Renamed from "Autoconf - macros for use in configure.in". - * gettextize.texi: Talk about configure.ac instead of configure.in. - -2007-10-28 Bruno Haible - - * gettext.texi (The --style option): Document the predefined styles. - (Style rules): Mark .added, .changed, .removed as not yet implemented. - -2007-10-20 Bruno Haible - - * gettext.texi (Java): Mention the hello-java-qtjambi example. - -2007-10-05 Bruno Haible - - * gettext.texi: Enforce normal indentation of the first paragraph of each - section. - -2007-09-30 Bruno Haible - - * xgettext.texi: Document options --package-name, --package-version. - * gettext.texi (Header Entry): Mention that the Project-Id-Version may - already be filled in. - -2007-09-30 Bruno Haible - - * gettext.texi (PO Files): Mention kde-format. - (kde-format): New subsection. - (qt-format): Update for Qt 4. - * xgettext.texi: Document --kde option. - -2007-09-09 Bruno Haible - - * gettext.texi (Compendium): Upgrade node from a subsection to a - section. - -2007-09-09 Bruno Haible - - * gettext.texi (Using Compendia): Use "msgattrib --no-obsolete" - instead of "sed -e '/^#~/d'". - Suggested by Benno Schulenberg . - -2007-09-02 Bruno Haible - - * msggrep.texi: Add some examples. - * msgfilter.texi: Likewise. - Suggested by Guido at . - -2007-09-02 Bruno Haible - - Implement msgctxt for C# ResourceManagers. - * gettext.texi (Java): Mention GetParticularString and - GetParticularPluralString. - * xgettext.texi (--keyword): Update defaults for C#. - -2007-09-01 Bruno Haible - - Implement msgctxt for Java ResourceBundles. - * gettext.texi (Java): Mention pgettext and npgettext. - * xgettext.texi (--keyword): Update defaults for Java. - Suggested by Felix Berger. - -2007-08-18 Bruno Haible - - * gettext.texi (Why): Don't oppose commercial software to free - software. - Reported by Kaloian Doganov . - -2007-06-30 Bruno Haible - - * gettext.texi: Fix English typo. - Reported by Benno Schulenberg . - -2007-06-30 Bruno Haible - - * gettext.texi (Installing Localizations, Header Entry, Trans Intro 0, - Trans Intro 1, Organization, Mailing Lists, Prerequisites): Update - email addresses and URLs after the Translation Project moved. - * FAQ.html: Likewise. - -2007-06-17 Bruno Haible - - * gettext.texi (Locale Names): Explain the variant syntax. - Reported by Karl Berry . - -2007-06-07 Bruno Haible - - * gettext.texi (aclocal): Mention also intlmacosx.m4. - -2007-06-07 Bruno Haible - - * xgettext.texi: Mention some caveats. - Reported by Ariel Shkedi . - -2007-06-03 Bruno Haible - - * gettext.texi (Users): Chapter completely rewritten. - Reported by Karl Berry . - -2007-06-03 Bruno Haible - - * gettext.texi (Triggering): Talk about gnulib instead of the gettext - source code. - (Loading Catalogs): Update footnote. - -2007-06-03 Bruno Haible - - * gettext.texi (Aspects): Talk about POSIX:2001 instead of SUSV2. - -2007-06-03 Bruno Haible - - * gettext.texi: Talk about "locale categories" instead of "locale - facets" everwhere, and instead of "locales" where appropriate. - (Aspects): Explain the term "locale categories". - Reported by Karl Berry . - -2007-05-05 Bruno Haible - - * gettext.texi (ifmakeinfo): Remove alias. - (makeinfo): New variable. - -2007-05-04 Bruno Haible - - * gettext.texi (Overview of GNU gettext): Put @ifhtml outside @example, - not @inside. Fixes an indentation problem of the first line when - "makeinfo --html" is used. - Reported by Noah Slater . - -2007-05-04 Bruno Haible - - * gettext.texi: Make the @documentencoding command unconditional. - -2007-05-03 Bruno Haible - - Add support for both "makeinfo --html" and texi2html. - * gettext.texi (ifmakeinfo): New alias. - (Top): Use it instead of @ifinfo. - -2007-05-03 Bruno Haible - - * gettext.texi (Bug Report Address): Fix cross references. - -2007-04-06 Bruno Haible - - * gettext.texi (aclocal): Remove longdouble.m4 from the file list. - -2007-03-27 Bruno Haible - - * gettext.texi (Bug Report Address): New section. - -2006-12-19 Bruno Haible - - * gettextize.texi: Document the --po-dir option. - -2006-12-03 Bruno Haible - - * msgcat.texi: Document the --color and --style options. - * gettext.texi (Colorizing): New section. - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-10-20 Bruno Haible - - * gettext.texi (Mark Keywords): Explain the syntax that xgettext - understands. Fix example of a non-translatable string. - -2006-10-19 Paul Eggert - - * gettext.texi (Mark Keywords): keyword are -> keyword is. - -2006-10-16 Bruno Haible - - Switch to automake-1.10. - * Makefile.am (install-html): Add no-op rule. - (install-dvi, install-ps, install-pdf): Remove rules. - -2006-10-17 Bruno Haible - - * ISO_639-2: New file. - * iso-639-2.sed: New file. - * Makefile.am (gettext_TEXINFOS): Add iso-639-2.texi. - (EXTRA_DIST): Add iso-639-2.sed, ISO_639-2. - (iso-639-2.texi): New rule. - * gettext.texi (Language codes): Split into two nodes "Usual Language - Codes" and "Rare Language Codes". Include iso-639-2.texi. - -2006-10-08 Bruno Haible - - * gettextize.texi: Document the --symlink option instead of the --copy - option. - -2006-10-05 Bruno Haible - - * ISO_639: Add Adangme. Fix the names of Western Frisian, Galician, - Marshallese, Sinhala. - * ISO_3166: Add AX, GG, IM, JE, ME, RS. Remove CS. - * iso-3166.sed: Also transform Å to Aa. - -2006-10-03 Bruno Haible - - * gettext.texi (PO Files): Document the "previous msgid" syntax. - * msgmerge.texi: Document the --previous option. - * msgattrib.texi: Document the --clear-previous option. - -2006-10-03 Bruno Haible - - * msgcmp.texi: Document --use-fuzzy and --use-untranslated options. - -2006-10-01 Bruno Haible - - * gettext.texi (AM_GNU_GETTEXT): Mention the AM_GNU_GETTEXT_NEED - alternative. - (AM_GNU_GETTEXT_NEED): New subsection. - -2006-10-01 Bruno Haible - - * gettext.texi (aclocal): Mention intldir.m4. - (AM_GNU_GETTEXT): Mention the effect of AM_GNU_GETTEXT_INTL_SUBDIR. - (AM_GNU_GETTEXT_INTL_SUBDIR): New subsection. - -2006-09-18 Bruno Haible - - * gettext.texi (aclocal): Don't mention inttypes-h.m4. - -2006-09-11 Bruno Haible - - * gettext.texi (aclocal): Mention nls.m4, po.m4, mkdirp.m4. - -2006-09-11 Bruno Haible - - * gettext.texi (aclocal): Add intl.m4 to file list. - -2006-09-08 Bruno Haible - - * gettext.texi (Preparing strings): Also discourage unusual markup. - Suggested by Paul Eggert. - -2006-08-28 Bruno Haible - - * gettext.texi (aclocal): Update file list. - -2006-08-17 Bruno Haible - - * gettext.texi (Plural Forms): Mention the use of ngettext with a - singular format string that doesn't need as many format arguments as - the plural string. - Suggested by Paul Eggert . - -2006-08-16 Bruno Haible - - * gettext.texi (Plural Forms): Document how to deal with bignums, - negative numbers and floating-point numbers. - Suggested by Paul Eggert . - -2006-08-16 Bruno Haible - - * gettext.texi (Plural Forms): Put Hungarian under nplurals=2, and - explain why. - Reported by Arpad Biro and - Gabor Kelemen . - -2006-08-16 Bruno Haible - - * gettext.texi (Plural Forms): Mention the use of ngettext without - cardinal numbers. - Reported by Arpad Biro . - -2006-08-08 Ralf Wildenhues - - * gettext.texi: Fix 2 typos. - -2006-08-08 Ralf Wildenhues - - * gettext.texi: Reduce spacing after "i.e." and "e.g.". - * msgcat.texi: Likewise. - * msgcomm.texi: Likewise. - * msgfilter.texi: Likewise. - -2006-08-06 Ralf Wildenhues - - * gettext.texi: Fix 17 typos. - * msgattrib.texi: Fix 2 typos. - * xgettext.texi: Fix 1 typo. - -2006-07-25 Bruno Haible - - * Makefile.msvc: Remove file. - * Makefile.am (EXTRA_DIST): Remove Makefile.msvc. - -2006-07-25 Bruno Haible - - * Makefile.vms: Remove file. - * Makefile.am (EXTRA_DIST): Remove Makefile.vms. - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2006-06-27 Bruno Haible - - * gettext.texi (aclocal): Update file list. - -2006-04-14 Bruno Haible - - Assume autoconf >= 2.60. - * Makefile.am (docdir, dvidir, psdir, pdfdir, htmldir): Remove - variables. - -2006-06-18 Bruno Haible - - * gettext.texi (configure.in): Document where to put AC_GNU_SOURCE. - * gettextize.texi: Refer to this explanation. - -2006-06-15 Bruno Haible - - * gettext.texi (po/Makevars): Mention real purpose of this file. - (po/Rules-*): New section. - Reported by Karl Berry . - -2006-06-04 Bruno Haible - - * gettext.texi (aclocal): Update file list. - -2006-04-17 Bruno Haible - - * Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs). - * gettext.texi (config.guess): Don't mention mkinstalldirs file any - more. - (mkinstalldirs): Say it's obsolete. - * gettextize.texi: Don't mention mkinstalldirs. - -2006-04-11 Bruno Haible - - * gpl.texi: New file, from GNU with typesetting modifications. - * lgpl.texi: New file, from GNU with typesetting modifications. - * fdl.texi: New file, from GNU with typesetting modifications. - * gettext.texi: Change license terms to FDL | GPL. Don't reproduce - the @direntry statement in the HTML documentation. - (Licenses): New appendix chapter. - -2006-04-11 Bruno Haible - - * gettext.texi: Comment out @documentencoding, since we are using - texi2html, not makeinfo, to produce the HTML documentation. - -2006-04-02 Bruno Haible - - * gettext.texi (wxWidgets): Renamed from wxWindows. Clarify formatting - with positions. - -2006-04-02 Bruno Haible - - * gettext.texi (Contexts): Document the macros pgettext_expr, - dpgettext_expr, dcpgettext_expr. - -2006-04-02 Bruno Haible - - * gettext.texi (Plural Forms): More details about the expression - syntax. - Reported by Martin von Löwis . - -2006-04-01 Bruno Haible - - * texi2html: Add option -expandtex. Expand @ifhtml by default, not - @ifinfo. Use Unicode quotation marks instead of grave and acute - accents. Emit charset=UTF-8 declaration. Bump version number to 1.52b. - * Makefile.am (gettext.html, gettext_toc.html): Remove -expandinfo - option. - * gettext.texi: If in HTML mode, use Unicode quotation marks and - box drawing characters. - * msgattrib.texi: Likewise. - -2006-04-01 Bruno Haible - - * gettext.texi (Introduction): Swap paragraphs. - -2006-04-01 Bruno Haible - - * gettext.texi (gettext grok, Temp Programmers, Trans Intro 0, - Trans Intro 1, Discussions, Organization, Information Flow, - References): Mark as outdated. - -2006-04-01 Bruno Haible - - * xgettext.texi (--keyword): Document the default keywords. - Suggested by Bjoern Voigt . - -2006-03-28 Bruno Haible - - * msgfilter.texi: Explain built-in filters and recode-sr-latin. - -2006-03-26 Bruno Haible - - * gettext.texi (Java): Recommend a simpler idiom for Java 1.5. - -2006-03-25 Bruno Haible - - * gettext.texi (C): Also mention the hello-c++-wxwidgets example. - -2006-03-19 Bruno Haible - - * xgettext.texi (--keyword): Document the extracted comments syntax. - -2006-03-16 Bruno Haible - - * gettext.texi (PO Files): Clarify the terms "automatic comments" and - "extracted comments". - * msggrep.texi: Document the -X/--extracted-comment option. - -2006-03-16 Bruno Haible - - * xgettext.texi (--keyword): Document suffix 'g'. - -2006-02-26 Bruno Haible - - * gettext.texi (Introduction): Fix typo. - Reported by . - -2006-02-12 Bruno Haible - - * gettext.texi (PO Files): Mention boost-format. - (boost-format): New subsection. - * xgettext.texi: Document --boost option. - -2005-11-29 Colin Watson - - * msggrep.texi: Document --invert-match option. - -2005-10-18 Bruno Haible - - * xgettext.texi (--keyword): Document how to specify the total number - of arguments. - -2005-10-03 Bruno Haible - - Add support for contexts in xgettext. - * xgettext.texi (--keyword): Document how to specify context arguments. - -2005-10-07 Bruno Haible - - * gettext.texi (PO Files, Preparing Strings, Contexts): Small fixes. - Patch by Pavel Roskin . - -2005-10-01 Bruno Haible - - Support for context dependent translations in PO files. - * gettext.texi (PO Files): Explain syntax of msgctxt. - (MO Files): Explain how contexts are stored. - (Contexts): New subsection. - (GUI program problems): Remove subsection. - * msgexec.texi: Mention MSGEXEC_MSGCTXT environment variable. - * msggrep.texi: Document option -J. - -2005-09-25 Bruno Haible - - * xgettext.texi (--from-code): Python input is no longer always in - ISO-8859-1. - -2005-09-20 Bruno Haible - - * xgettext.texi (--from-code): Python input is always assumed to be - in ISO-8859-1, not UTF-8. - Reported by Danilo Segan . - -2005-08-26 Bruno Haible - - * gettext.texi (Plural forms): Add info about Romanian. - Explanations by Eddy Petrişor . - -2005-07-24 Bruno Haible - - Tidy up exported symbols. - * gettext.texi (aclocal): Mention visibility.m4. - -2005-05-17 Bruno Haible - - * gettext.texi (Why): Mention libgettextpo. - (Overview, PO Files, Header Entry, Prioritizing messages): De-emphasize - PO mode. Talk about PO file editors instead. - (Sources): New section 'Importing'. - (PO Mode): Move introducing paragraph from Overview to here. - -2005-07-17 Bruno Haible - - * gettext.texi (Editing): New chapter, including all the PO Mode - descriptions. - (PO Files): Chapter renamed from Basics. - -2005-07-17 Bruno Haible - - * gettext.texi (Users): Move chapter to become the second. - (Installers): New chapter, extracted from Users chapter. - -2005-07-16 Bruno Haible - - * gettext.texi (aclocal): Add lock.m4 to file list. - -2005-07-01 Bruno Haible - - * FAQ.html (windows_howto): Mention the three debugging runtime libs. - Reported by Stephane Matamontero . - -2005-05-02 Bruno Haible - - * gettext.texi (c-format): Write fprintf() instead of fprintf(3). - Requested by Richard Stallman. - -2006-06-21 Bruno Haible - - * gettext-0.14.6 released. - -2005-05-23 Bruno Haible - - * gettext-0.14.5 released. - -2005-04-11 Bruno Haible - - * gettext-0.14.4 released. - -2005-03-22 Bruno Haible - - * Makefile.am (stamp-vti): Replace config with build-aux. - -2005-03-14 Bruno Haible - - * gettext-0.14.3 released. - -2005-03-07 Bruno Haible - - * FAQ.html (How do I make use of gettext() in my package?): Add more - info. - Reported by Alexandre Duret-Lutz . - -2005-03-06 Bruno Haible - - * gettext.texi (src/Makefile): Document the steps that need to be done - when automake is used. - Reported by Alexandre Duret-Lutz . - -2005-03-06 Bruno Haible - - * gettext.texi (config.h.in): Explain the constraints for this file's - name and location. - -2005-03-06 Bruno Haible - - * gettext.texi (config.guess): Update the instructions for fetching - these files. - Reported by Alexandre Duret-Lutz . - -2005-03-06 Bruno Haible - - * gettext.texi (po/Makevars): Change subsection title. - Suggested by Alexandre Duret-Lutz . - -2005-03-06 Bruno Haible - - * gettext.texi (src/Makefile): Adjust example 'dist' target. - Suggested by Alexandre Duret-Lutz . - -2005-02-24 Bruno Haible - - * gettext-0.14.2 released. - -2005-02-23 Bruno Haible - - * gettext.texi: Put the table of contents at the end in TeX mode, - otherwise texi2dvi fails. - -2005-02-12 Bruno Haible - - * tutorial.html: New file, from Gora Mohanty with modifications: - Remove the navigation panel. Don't use the -s option. - * Makefile.am (doc_DATA): Add tutorial.html. - * Makefile.msvc (install, uninstall): Also tutorial.html. - * Makefile.vms (install, uninstall): Also tutorial.html. - -2005-02-06 Bruno Haible - - * gettext.texi (Files under CVS): Explain the role of the - AM_GNU_GETTEXT_VERSION argument. - -2005-02-05 Bruno Haible - - * gettext.texi (Release Management): New section. - Suggested by Karl Berry. - -2005-02-04 Bruno Haible - - * gettext.texi (Plural forms): Add info about Vietnamese. - Explanations by Clytie Siddall . - -2005-01-20 Bruno Haible - - * gettext.texi (Scheme): Correct information about setlocale. - -2005-01-16 Bruno Haible - - Support for Scheme. - * gettext.texi (PO Files): Mention scheme-format. - (scheme-format): New subsection. - (Scheme): New subsection. - * xgettext.texi: Document Scheme source language. Document that it is - applicable to --flag. - -2005-01-11 Bruno Haible - - * gettext.texi: Put the table of contents at the beginning, after the - titlepage, not at the end. - -2004-11-13 Bruno Haible - - * gettext.texi (Preparing Shell Scripts): Document extra backslashing. - -2004-09-08 Bruno Haible - - * Makefile.am (EXTRA_DIST): Add FAQ.html. - -2004-09-02 Bruno Haible - - * gettext.texi (Aspects): Tweak language: ISO-8859-1 is not a font. - Reported by Vera Mickael . - -2004-08-30 Bruno Haible - - * gettext.texi (Plural forms): Czech is now like Slovak. - Reported by Stepan Kasal . - -2004-08-11 Bruno Haible - - * gettext.texi (Aspects): Fix typo in ISO standard number. - Patch by . - -2004-07-13 Bruno Haible - - * gettext.texi (Python): Remove mention of a bug that was fixed in - Python 2.3.x. - Reported by Karl Chen . - -2004-02-27 Bruno Haible - - * gettext.texi (Plural forms): Add info about Serbian. - Reported by Danilo Segan . - -2004-02-24 Bruno Haible - - * FAQ.html (How do I make use of gettext() in my package?): New - question. Suggested by Paul Eggert . - -2004-02-21 Bruno Haible - - * FAQ.html: New file. - * Makefile.am (doc_DATA): New variable. - * Makefile.msvc (install): Also install FAQ.html. - (uninstall): Also uninstall FAQ.html. - * Makefile.vms (install): Also install FAQ.html. - (uninstall): Also uninstall FAQ.html. - -2004-02-02 Bruno Haible - - * gettext.texi (aclocal): Mention glibc2.m4. - -2004-01-29 Bruno Haible - - * gettext-0.14.1 released. - -2004-01-28 Bruno Haible - - * gettext-0.14 released. - -2004-01-18 Bruno Haible - - * ISO_639: Update. Add ak, av, bm, cr, dv, ee, ff, ig, kg, kr, lg, lu, - oj, ve. - -2004-01-10 Bruno Haible - - * gettext.texi (Libraries): New section. - -2004-01-09 Bruno Haible - - * gettext.texi (c-format): Document the 'I' flag. - -2004-01-14 Bruno Haible - - * gettext.texi: Add entrypoints for ngettext and envsubst. - Reported by Peter Breitenlohner . - -2004-01-11 Bruno Haible - - * gettext.texi (Java): Explain how to define the shorthand '_'. - (C#): Likewise. - -2003-12-28 Bruno Haible - - * gettext.texi (C#): Mention the --csharp-resources option. - * msgfmt.texi: Document the --csharp-resources option. - * msgunfmt.texi: Likewise. - -2003-12-26 Bruno Haible - - Support for C#. - * gettext.texi (C#): Add more details. - * msgfmt.texi: Document --csharp option and C# mode. - * msgunfmt.texi: Document --csharp option and C# mode. - -2003-12-14 Bruno Haible - - * gettext.texi (PO Files): Mention csharp-format. - (Preparing String): Add an example in C# syntax. - (csharp-format): New subsection. - (C#): New subsection. - * xgettext.texi: Document C# source language. Document the languages to - which --flag is applicable. - -2003-12-12 Bruno Haible - - Assume automake-1.8. - * Makefile.am (stamp-vti): Is in $(srcdir). - (html-local): Renamed from html. - (ps, pdf, .texi.pdf): Remove rules. - -2003-12-17 Bruno Haible - - * gettext-0.13.1 released. - -2003-12-09 Bruno Haible - - * Makefile.am (MAKEINFOFLAGS): Add --no-split. - -2003-12-06 Bruno Haible - - * gettext.texi (Triggering): Use ANSI C function declaration. - (Perl): Update. - -2003-11-30 Bruno Haible - - * gettext-0.13 released. - -2003-11-23 Bruno Haible - - * gettext.texi (aclocal): Don't mention ssize_t.m4. - -2003-11-16 Bruno Haible - - * gettext.texi (aclocal): Mention size_max.m4, ssize_t.m4, xsize.m4. - -2003-11-15 Bruno Haible - - * gettext.texi (C, sh, Python, Common Lisp, librep, Smalltalk, Java, - gawk, Pascal, YCP, Tcl, Perl, PHP): Mention the examples. - -2003-11-13 Bruno Haible - - * Makefile.am (docdir): Use the value from the configure script. - -2003-11-13 Bruno Haible - - * gettext.texi (About gettext): Mention OpenI18N (ex-Li18nux). - (History): Acknowledge Paul Eggert's role. - -2003-11-04 Bruno Haible - - * Makefile.am (MAKEINFO): Set LC_MESSAGES and LC_ALL to empty as well. - -2003-10-19 Bruno Haible - - * gettext.texi (PO Files): Mention qt-format. - (qt-format): New subsection. - * msgfmt.texi: Document --qt option. - * xgettext.texi: Likewise. - -2003-10-13 Bruno Haible - - * gettext.texi (PO Files): Mention objc-format, sh-format, perl-format, - perl-brace-format. - (objc-format): New subsection. - -2003-10-12 Bruno Haible - - * msgattrib.texi: Document --stringtable-input and --stringtable-output - options. - * msgcat.texi: Likewise. - * msgcomm.texi: Likewise. - * msgconv.text: Likewise. - * msgen.texi: Likewise. - * msgfilter.texi: Likewise. - * msgrep.texi: Likewise. - * msginit.texi: Likewise. - * msgmerge.texi: Likewise. - * msguniq.texi: Likewise. - * msgcmp.texi: Document --stringtable-input option. - * msgexec.texi: Likewise. - * msgfmt.texi: Likewise. - * msgunfmt.texi: Document --stringtable-output option. - * xgettext.texi: Likewise. Document --language=NXStringTable. - -2003-10-11 Bruno Haible - - * gettext.texi (PHP): Drop phplib from list of RPMs. - -2003-10-05 Bruno Haible - - * xgettext.texi (Language specific options): Renamed section. Document - the languages to which --extract-all, --keyword, --trigraphs are - applicable. Document option --flag. - -2003-09-13 Bruno Haible - - * gettext.texi: Update menus. - (sh): Update. - (Preparing Shell Scripts, gettext.sh, gettext Invocation, - ngettext Invocation, envsubst Invocation, eval_gettext Invocation, - eval_ngettext Invocation): New subsubsections. - * Makefile.am (TEXINCLUDES): New variable. - (gettext_TEXINFOS): Add the files from gettext-runtime/doc/. - (MAKEINFOFLAGS, TEXI2DVI): New variables, needed for TEXINCLUDES. - (TEXI2PDF): Add TEXINCLUDES. - (gettext.html, gettext_toc.html): Use TEXINCLUDES. - -2003-09-13 Bruno Haible - - * gettext.texi (sh-format): New subsection. - -2003-09-09 Guido Flohr - - * gettext.texi (Perl, Interpolation I): Tweaks. - -2003-08-15 Bruno Haible - - * ISO_639: Update. Add an, ht, ii, li. - * ISO_3166: Update. Change reference URL. Add CS, TL. Remove YU, TP. - * iso-3166.sed: Handle accented characters as best as texi2html can. - -2003-08-15 Bruno Haible - - * gettext.texi (Quote-like Expressions): Fix misplaced @group. - -2003-08-08 Bruno Haible - - * gettext.texi (PO Files): Mention gcc-internal-format. - (gcc-internal-format): New subsection. - (GCC-source): New subsection. - * xgettext.texi: Mention GCC-source language. - -2003-07-05 Bruno Haible - - * gettext.texi (perl-format): Use braces, not brackets, in format - strings. - (Perl pitfalls): Likewise. - -2003-07-03 Bruno Haible - - * gettext.texi (PHP): Mention plural form functions. - -2003-06-22 Bruno Haible - - * gettext.texi (Preparing Strings): More explanations. - -2003-06-21 Guido Flohr - Bruno Haible - - * gettext.texi (perl-format): Describe two kinds of format strings. - (Perl): Add more info. - -2003-06-19 Bruno Haible - - * gettext.texi (Sources): Recommend to use also for printf. - (aclocal): Mention also intmax.m4, longdouble.m4, longlong.m4, - printf-posix.m4, signed.m4, wchar_t.m4, wint_t.m4. - (c-format): Mention the printf(), fprintf() replacements. - (C, clisp C): Remove portability note for formatting with positions. - -2003-06-15 Bruno Haible - - * gettext.texi (C): Mention that formatting with positions doesn't work - on NetBSD and on Woe32. - -2003-06-12 Bruno Haible - - * gettext.texi (perl-format): Move subsection. - (Perl): Small tweaks. Replace "legal" -> "valid". - * xgettext.texi: Tweak. - -2003-06-11 Guido Flohr - - * gettext.texi (Perl): Extend and update. - * xgettext.texi: Mention language Perl. - -2003-06-10 Stepan Kasal - - * gettext.texi: Fix a few typos. - -2003-06-04 Stepan Kasal - - * gettext.texi (Header Entry): Delete some leading spaces; - they got copied verbatim to the info file. - -2003-05-27 Bruno Haible - - * gettext.texi (Plural forms): Correct formula for Slovak. - Reported by Marcel Telka . - -2003-05-24 Bruno Haible - - * gettext.texi (Glade): Mention support og Glade 2. - -2003-05-22 Bruno Haible - - * gettext-0.12.1 released. - -2003-05-19 Bruno Haible - - * Makefile.am (stamp-vti): Add some dependencies. - -2003-05-17 Bruno Haible - - * gettext-0.12 released. - -2003-05-03 Bruno Haible - - * gettext.texi: Use two spaces as sentence separator, as recommended - by the texinfo manual. - * gettextize.texi: Likewise. - * msgen.texi: Likewise. - * msgfilter.texi: Likewise. - -2003-05-03 Bruno Haible - - * gettext.texi: Distinguish between POSIX and POSIX+XSI. - Suggested by Paul Eggert. - -2003-05-03 Bruno Haible - - * gettext.texi (AM_PO_SUBDIRS): New subsection. - -2003-04-25 Bruno Haible - - * gettext.texi (Names): New section. - -2003-04-22 Bruno Haible - - * gettext.texi (Java): Document how to use .properties files. - * msgattrib.texi: Document options -P and -p. - * msgcat.texi: Likewise. - * msgcomm.texi: Likewise. - * msgconv.texi: Likewise. - * msgen.texi: Likewise. - * msgfilter.texi: Likewise. - * msggrep.texi: Likewise. - * msginit.texi: Likewise. - * msgmerge.texi: Likewise. - * msguniq.texi: Likewise. - * msgcmp.texi: Document option -P. - * msgexec.texi: Likewise. - * msgfmt.texi: Likewise. - * msgunfmt.texi: Document option -p. - * xgettext.texi: Document options -L JavaProperties and - --properties-output. - -2003-04-22 Bruno Haible - - * gettext.texi (Plural forms): Add info about Faroese. - Reported by Jacob Sparre Andersen . - -2003-04-12 Bruno Haible - - * Makefile.vms: Don't use the force target. Avoid rules with no lines. - Suggested by Jouk Jansen . - -2003-04-12 Bruno Haible - - * Makefile.am (docdir): Use datadir instead of prefix. - * Makefile.msvc (datadir): New variable. - (docdir): Use it instead of prefix. - (install, installdirs): Update. - * Makefile.vms (datadir): New variable. - (docdir): Use it instead of prefix. - -2003-03-30 Bruno Haible - - * Makefile.vms: New file. - * Makefile.am (EXTRA_DIST): Add Makefile.vms. - -2003-03-17 Bruno Haible - - Native Woe32/MSVC support. - * Makefile.msvc: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2003-03-10 Bruno Haible - - * msggrep.texi: Document option -C completely. - Reported by Martin Quinson . - -2003-03-03 Bruno Haible - - * msgen.texi: Don't say that the entries are marked fuzzy. - Reported by Karl Eichwalder . - -2003-02-22 Bruno Haible - - * gettext.texi (Python): Mention ngettext. - -2003-02-22 Bruno Haible - - * Makefile.am (MOSTLYCLEANFILES): No need to clean the unused indices. - (The automake generated rule already cleans them.) - -2003-02-22 Bruno Haible - - * Makefile.am (installdirs): Remove dependency, redundant with - automake >= 1.6. - -2003-02-16 Bruno Haible - - * gettext.texi (Header Entry): Document Report-Msgid-Bugs-To. - * xgettext.texi: Document --msgid-bugs-address option. - -2003-02-16 Bruno Haible - - * gettext.texi (Prioritizing messages): New section. - -2003-02-16 Bruno Haible - - * gettext.texi (po/LINGUAS): Document en@quot and en@boldquot. - -2003-02-15 Bruno Haible - - * gettext.texi (PO Files): Mention the other -format and - no--format flags. - -2003-02-15 Bruno Haible - - * gettext.texi: Use @code instead of @kbd in many places. - * xgettext.texi: Likewise. - -2003-02-12 Bruno Haible - - * Makefile.am (docdir): Use 'gettext' instead of @PACKAGE@. - (EXTRA_DIST): Add ChangeLog.0. - * mdate-sh: Move to ../../config/mdate-sh. - - -See ChangeLog.0 for earlier changes. diff -Nru gettext-0.19.6/gettext-tools/doc/ChangeLog.1 gettext-0.19.7/gettext-tools/doc/ChangeLog.1 --- gettext-0.19.6/gettext-tools/doc/ChangeLog.1 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/ChangeLog.1 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,1654 @@ +2015-10-06 Daiki Ueno + + doc: Don't expose generated version + * Makefile.am ($(srcdir)/stamp-vti): Set ARCHIVE-VERSION, derived + from $(ARCHIVE_VERSION) in version.texi. + * gettext.texi (Files under Version Control): Refer to + ARCHIVE-VERSION, instead of VERSION. + * autopoint.texi: Refer to ARCHIVE-VERSION, instead of VERSION. + +2015-09-11 Daiki Ueno + + * gettext 0.19.6 released. + +2015-07-28 Daiki Ueno + + * autopoint.texi: Mention AM_GNU_GETTEXT_REQUIRE_VERSION. + +2015-07-10 Daiki Ueno + + * gettext 0.19.5 released. + +2015-06-22 Daiki Ueno + + * msginit.texi: More explanations about "meta information". + * gettext.texi (Plural forms): Mention Unicode CLDR support in + msginit. + +2015-06-01 Daiki Ueno + + * gettext.texi (gawk): Mention new file extensions ".gawk" and + ".twjr". + +2015-06-01 Daiki Ueno + + * gettext.texi (Adjusting Files): Update link to GNU hello + distribution. Suggested by Karl Berry in: + . + +2015-05-08 Matthew Behrens (tiny change) + + * gettext.texi (python-format): Update link to Python Library + Reference. + +2015-03-15 Benno Schulenberg (tiny change) + + * xgettext.texi: Fix a word and a punctuation. + +2015-03-06 Daiki Ueno + + * gettext.texi (kde-kuit-format): New subsection. + +2015-03-03 Daiki Ueno + + * xgettext.texi: Document options --check and --sentence-end. + +2015-02-09 Daiki Ueno + + * gettext.texi (Plural forms): Add Arabic, Bahasa Indonesian, and + Thai. + Reported by Maryam Aly in: + . + +2015-02-03 Daiki Ueno + + * msgexec.texi, msgfilter.texi: Fix markup error caused by commit + 96dde0b8 and a4d132f7. + +2015-01-29 Daiki Ueno + + * msgexec.texi: Document --newline option. + +2015-01-28 Daiki Ueno + + * msgfilter.texi: Document --newline option. + +2015-01-05 Daiki Ueno + + * gettext.texi (Vala): New section. + +2014-12-24 Daiki Ueno + + * gettext 0.19.4 released. + +2014-12-01 Daiki Ueno + + doc: Document placement of extracted comment blocks + * xgettext.texi: Mention that extracted comment blocks must be + adjacent to keyword lines. + Reported by Yves-Gwenael Bourhis at: + . + +2014-10-15 Daiki Ueno + + * gettext 0.19.3 released. + +2014-07-14 Daiki Ueno + + * gettext 0.19.2 released. + +2014-06-12 Daiki Ueno + + * gpl.texi, lgpl.texi, fdl.texi: Update from GNU. + * gettext.texi (GNU GPL, GNU LGPL, GNU LGPL): Define nodes here, + instead of in those license documents. + +2014-06-10 Daiki Ueno + + * gettext 0.19.1 released. + +2014-06-02 Daiki Ueno + + * gettext 0.19 released. + +2014-06-01 Daiki Ueno + + * ISO_639: Remove Moldavian. Update Bihari, Bengali, Catalan, + Church Slavic, Divehi, Dzongkha, Ewe, Greek, Spanish, Fijian, + Gaelic, Hebrew, Interlingua, Indonesian, Inupiak, Central Khmer, + Kirghiz, Luxembourgish, Limburgan, Lao, Latvian, Norwegian Bokmal, + North Ndebele, Dutch, Norwegian Nynorsk, South Ndebele, Occitan, + Oromo, Pushto, Rundi, Romanian, Sango, Swati, South Sotho, Tswana, + Tonga, Uighur, Volapuk, Yiddish, and Zhuang. + +2014-05-31 Daiki Ueno + + * msgexec.texi: Document the environment variable + MSGEXEC_PREV_MSGCTXT, MSGEXEC_PREV_MSGID, and + MSGEXEC_PREV_MSGID_PLURAL. + +2014-05-31 Daiki Ueno + + * msgfilter.texi: Document the environment variable + MSGFILTER_PREV_MSGCTXT, MSGFILTER_PREV_MSGID, and + MSGFILTER_PREV_MSGID_PLURAL. + +2014-05-15 Stanislav Brabec (tiny change) + + * msgfilter.texi: Document the environment variable + MSGFILTER_MSGID_PLURAL and MSGFILTER_PLURAL_FORM. + +2014-05-15 Stanislav Brabec (tiny change) + + * msgexec.texi: Document the environment variable + MSGEXEC_MSGID_PLURAL and MSGEXEC_PLURAL_FORM. + +2014-05-10 Guido Flohr + + msgattrib: Add --empty option to clear msgstr + * msgattrib.texi: Document --empty option. + +2014-05-05 Daiki Ueno + + * gettext.texi (Translations under Version Control): New section. + +2014-05-05 Daiki Ueno + + * gettext.texi (Version Control Issues): Rename from "CVS Issues"; + talk about generic issues when using version control systems. + +2014-04-30 Daiki Ueno + + * gettext.texi (Scheme): Document gettext shorthand form _"abc". + +2014-04-22 Daiki Ueno + + build: Use git-version-gen intead of version.sh + * Makefile.am: Refer to .version instead of version.sh. + +2014-04-15 Daiki Ueno + + * msgfilter.texi: Document 'quot' and 'boldquot' built-in filters. + +2014-04-04 Daiki Ueno + + * msgfmt.texi: Document --desktop mode. + +2014-04-04 Daiki Ueno + + * xgettext.texi: Document Desktop Entry file. + +2014-03-26 Aurélien Gâteau (tiny change) + + * msgfmt.texi: Document --source option. + +2014-03-25 Daiki Ueno + + * msgattrib.texi: Document the optional argument of + --add-location. + * msgcat.texi: Likewise. + * msgcomm.texi: Likewise. + * msgconv.texi: Likewise. + * msgen.texi: Likewise. + * msgfilter.texi: Likewise. + * msggrep.texi: Likewise. + * msgmerge.texi: Likewise. + * msguniq.texi: Likewise. + * xgettext.texi: Likewise. + +2014-03-15 Daiki Ueno + + * FAQ.html: Point to bug-gettext@gnu.org rather than + bug-gnu-gettext@gnu.org, in the context of mailing list; add a + link to the mailing list information page. Point to the latest + URL of the GNOME Translation Project. Replace the reference of + "Free Translation Project" with "Translation Project". + Reported by Benno Schulenberg. + +2014-02-10 Daiki Ueno + + * ISO_3166: Remove AN, add BL, BQ, CW, MF, SS, and SX. Update + country code for AG, AS, BA, BN, BO, CD, CG, FK, FM, FO, GB, GS, + HM, IR, KN, KP, KR, LA, LC, MD, MK, MM, PM, PS, RU, SH, SJ, ST, + SY, TC, TF, TT, TW, TZ, UM, VA, VC, VE, VG, VI, VN, WF, and WS. + * iso-3166.texi: Regenerate. + Reported by Karl Berry in: + . + +2014-01-12 Benno Schulenberg (tiny change) + + * gettext.texi (c-format Flag): Wording fixes. + +2013-12-17 Daiki Ueno + + * gettext.texi (Installers): Fix wording. + Reported by Reuben Thomas in: + . + +2013-08-06 Daiki Ueno + + xgettext: add support for GSettings schema file + * gettext.texi (GSettings): New subsection. + * xgettext.texi: Document GSettings source language. + +2013-06-10 Daiki Ueno + + * Makefile.am: Use $(MKDIR_P) instead of $(mkdir_p). + Suggested by Stefano Lattarini in + . + +2013-06-04 Daiki Ueno + + Support for Vala. + * xgettext.texi: Document Vala source language. Document + that it is applicable to --flag. + +2013-05-20 Pavel Kharitonov (tiny change) + + Add --previous option to msgattrib. + * msgattrib.texi: Document --previous. + +2013-04-26 Daiki Ueno + + Support for Python brace format. + * gettext.texi (PO Files): Mention python-brace-format. + (python-format): Mention brace format. + +2013-04-17 Andreas Stricker + + Support for JavaScript. + * gettext.texi (PO Files): Mention javascript-format. + (javascript-format): New subsection. + (JavaScript): New subsection. + * xgettext.texi: Document JavaScript source language. Document + that it is applicable to --flag. + +2013-04-11 Ľubomír Remák + + Support for Lua. + * gettext.texi (PO Files): Mention lua-format. + (lua-format): New subsection. + (Lua): New subsection. + * xgettext.texi: Document Lua source language. Document that it is + applicable to --flag. + +2013-04-02 Daiki Ueno + + * gettext.texi (PO Files): Use '@pxref' instead of '@xref'. + +2013-03-12 Andreas Stricker (tiny change) + + * msgfmt.texi (PO Format): A note about the header entry + +2013-02-15 Daiki Ueno + + * msgfmt.texi (Input file location): Output file is not PO. + +2013-01-30 Miguel Angel Arruga Vivas (tiny change) + + * msgen.texi (Output details): Fix link in '@opindex' pointing to + msgcat. + Reported at . + * msgmerge.texi (Output details): Likewise. + +2012-12-27 Daiki Ueno + + * gettext.texi (Plural forms): Fix ngettext arguments. + Reported by Reinhard Schaffner . + +2012-12-25 Daiki Ueno + + * gettext-0.18.2 released. + +2012-06-03 Jim Meyering + + * gettext.texi: Spelling fixes. + +2012-05-03 Bruno Haible + + Document msgfmt option --endianness. + * msgfmt.texi: Document the option --endianness. + Reported by Paul Martin via + Santiago Vila . + +2012-01-26 Bruno Haible + + Modernize quoting. + * FAQ.html: Quote 'like this', not `like this', as per the recent + change to the GNU coding standards. + * ISO_3166: Likewise. + * ISO_3166_de: Likewise. + * tutorial.html: Process through + sed -e "s/\`\`\([^']*\)''/“\1”/g" | sed -e "s/\`\([^']*\)'/‘\1’/g" + +2011-07-08 Bruno Haible + + * gettext.texi (aclocal): Recommend the use of aclocal's --install + option. + Suggested by Stefano Lattarini . + +2011-06-03 Bruno Haible + + Copyright: Use LGPL 2.1 instead of LGPL 2.0. + * gettext.texi (Discussions, Licenses): Write "GNU Lesser General + Public License". + +2011-05-13 Ben Elliston + + * gettext.texi (config.guess): Update wget commands. + +2011-04-13 Bruno Haible + + * msgcat.texi: Fix description of --use-first. + * msgcomm.texi: Fix typo. + Reported by Matthijs Kooijman. + +2010-12-14 Bruno Haible + + * xgettext.texi: Mention that -L also supports Shell. + Reported by Eric Blake . + +2010-11-13 Bruno Haible + + * gettext.texi (Plural forms): Add Belarusian. + Reported by Ihar Hrachyshka . + +2010-08-29 Bruno Haible + + * gettext.texi (Using Compendia): Correct after 2007-09-09 change. + +2010-06-06 Bruno Haible + + xgettext: Recognize language of files ending in .perl. + * gettext.texi (Perl): Mention file extension '.perl'. + Suggested by Ævar Arnfjörð Bjarmason . + +2010-06-04 Bruno Haible + + * gettext-0.18.1 released. + +2010-05-20 Bruno Haible + + * gettext.texi (objc-format): Fix typo. + Reported by Kalle Olavi Niemitalo . + +2010-05-09 Bruno Haible + + * gettext-0.18 released. + +2010-04-25 Bruno Haible + + * gettext.texi (object-pascal-format): Add reference to Free Pascal + documentation. + Information provided by Marco van de Voort . + +2010-04-02 Bruno Haible + + * FAQ.html (building_rpath_check): Remove section. + +2010-03-31 Guido Flohr + + More explanations about how xgettext handles Perl syntax ambiguities. + * gettext.texi (General Problems): Explain how xgettext disambiguates + conditional operator vs. regular expression. + +2010-03-13 Bruno Haible + + New options --color, --style for many programs. + * msgattrib.texi: Document the options --color and --style. + * msgcomm.texi: Likewise. + * msgconv.texi: Likewise. + * msgen.texi: Likewise. + * msgfilter.texi: Likewise. + * msggrep.texi: Likewise. + * msginit.texi: Likewise. + * msgmerge.texi: Likewise. + * msgunfmt.texi: Likewise. + * msguniq.texi: Likewise. + * xgettext.texi: Likewise. + Reported by Kalle Olavi Niemitalo + via Santiago Vila . + +2010-02-20 Bruno Haible + + * gettext.texi (Plural forms): Add Bulgarian. + Reported by Roumen Petrov . + +2010-02-20 Bruno Haible + + * gettext.texi (Plural forms): Sort language lists by number of + speakers, not alphabetically. + +2009-12-25 Bruno Haible + + * gettext.texi (aclocal): Add fcntl-o.m4 instead of fcntl_h.m4 to the + file list. + +2009-10-18 Bruno Haible + + * gettext.texi (aclocal): Add fcntl_h.m4 to the file list. + +2009-09-20 Bruno Haible + + * gettext.texi (src/Makefile): Update recommendations for autoconf + versions >= 2.60. + Reported by Sylvain Beucler + at . + +2009-08-16 Bruno Haible + + * Makefile.am (dist-html-split): Depend on gettext_toc.html. + +2009-06-11 Bruno Haible + + * gettext.texi (Mark Keywords): Add cross-section references. + Reported by David Bruce . + +2009-05-31 Bruno Haible + + * Makefile.am: Use dist-hook instead of old distdir hack. + +2009-05-01 Bruno Haible + + Undo 2005-02-23 change. + * gettext.texi: Put the table of contents back to the start. + +2009-04-08 Bruno Haible + + * Makefile.am (CLEANFILES): Remove variable. Not needed any more + +2009-04-07 Bruno Haible + + * Makefile.am (SUFFIXES): Remove variable. Not needed any more since + automake-1.7. + +2009-03-29 Bruno Haible + + * gettext.texi (PO Files): Mention gfc-internal-format. + (gfc-internal-format): New subsection. + +2009-02-15 Bruno Haible + + * gettext.texi (MO Files): Update w.r.t. the maximum revision in use. + Reported by Dwayne Bailey . + +2009-01-27 Bruno Haible + + * gettext.texi (PO Files): Mention qt-plural-format. + (qt-plural-format): New subsection. + +2009-01-25 Bruno Haible + + * gettext.texi (Translating plural forms): New section. + (Header Entry, Plural forms): Refer to it. + Reported by Yan Kerb . + +2009-01-18 Bruno Haible + + * msgfmt.texi: Describe the effect of combining --statistics with + --verbose. + +2008-11-14 Bruno Haible + + * msgfilter.texi: Document the environment variables MSGFILTER_MSGCTXT, + MSGFILTER_MSGID, MSGFILTER_LOCATION. + +2008-10-10 Noritada Kobayashi + + * gettext.texi (PO Mode): Update remaining obsolete key bindings used + in the version 0.10.x era. + +2008-10-04 Bruno Haible + + * gettext.texi (PO Files): Mention the 'range:' flag syntax. + (Plural forms): Document how to produce 'range:' flags. + +2008-09-27 Bruno Haible + + * ISO_639-2: Update entry about Tamashek. + +2008-09-15 Bruno Haible + + * msgcmp.texi: Document option -N/--no-fuzzy-matching. + +2008-08-17 Bruno Haible + + * gettext.texi (aclocal): Add threadlib.m4 to the file list. + +2008-08-15 Bruno Haible + + * gettext.texi (Python): Recommend format strings with named arguments. + Reported by Alexander Dupuy + in . + +2008-06-18 Ralf Wildenhues + + * msggrep.texi: Drop leading whitespace. + +2008-05-18 Bruno Haible + + * gettext.texi (Names): Recommend the gnulib module 'propername'. + Don't mention the translation project's whoiswho.pot any more. Don't + say that Emacs does not support UTF-8 well. + Reported by Brian Kemp . + +2008-05-06 Bruno Haible + + * gettext.texi (Plural forms): Explain why the number argument must be + the last. + Reported by Benjamin Geer . + +2008-04-25 Bruno Haible + + * ISO_639: Remove Adangme. Update Belarusian, Scottish Gaelic, + Interlingue, Sichuan Yi, Central Khmer, Pashto, Romansh. + * ISO_639-2: Add Adangme, Classical Syriac, Blissymbols. Update + Aramaic, Mapudungun, Asturian, Banda, Beja, Bini, Batak, Carib, + Chipewyan, Dayak, Swiss German, Ijo, Kachin, Karen, Kru, Miscellaneous, + Nahuatl, Pampanga, Rarotongan, Songhai, Sranan Tongo, Zande, + No linguistic content. + * iso-639.texi: Regenerate. + * iso-639-2.texi: Regenerate. + * gettext.texi (Header Entry): Update name of Belarusian. + +2008-04-20 Bruno Haible + + * xgettext.texi: Clarify single-letter options that take an optional + argument: -c, -k, -m, -M. + +2008-03-10 Bruno Haible + + * gettext.texi (gettext Invocation): Mention that xgettext does not + support the various options. + (ngettext Invocation): Likewise. + Reported by Aurélio A. Heckert . + +2008-02-02 Benno Schulenberg + + * gettext.texi (PO Files): Stylistic improvements. + +2008-01-12 Bruno Haible + + * msgfilter.texi: Fix last example. + Reported by Benno Schulenberg . + +2007-12-24 Bruno Haible + + * gettext.texi (Header Entry): Document the 'Language' field. + * msgcat.texi: Document the --lang option. + * msgen.texi: Likewise. + * msgmerge.texi: Likewise. + +2007-12-02 Bruno Haible + + * gettext.texi (Plural Forms): Put Turkish under nplurals=2. + Reported by Sertaç Ö. Yıldız . + +2007-11-07 Bruno Haible + + * gettext-0.17 released. + +2007-10-31 Bruno Haible + + * gettext.texi (aclocal): Remove ulonglong.m4 from the file list. + +2007-10-28 Bruno Haible + + * gettext.texi (AM_XGETTEXT_OPTION): New section. + (po/Makevers): Refer to it. + +2007-10-28 Bruno Haible + + * gettext.texi: Talk about configure.ac instead of configure.in. + (configure.ac): Renamed from configure.in. + (Autoconf macros for use in configure.ac): Renamed from "Autoconf + macros for use in configure.in". + * gettextize.texi: Talk about configure.ac instead of configure.in. + +2007-10-28 Bruno Haible + + * gettext.texi (The --style option): Document the predefined styles. + (Style rules): Mark .added, .changed, .removed as not yet implemented. + +2007-10-20 Bruno Haible + + * gettext.texi (Java): Mention the hello-java-qtjambi example. + +2007-10-05 Bruno Haible + + * gettext.texi: Enforce normal indentation of the first paragraph of each + section. + +2007-09-30 Bruno Haible + + * xgettext.texi: Document options --package-name, --package-version. + * gettext.texi (Header Entry): Mention that the Project-Id-Version may + already be filled in. + +2007-09-30 Bruno Haible + + * gettext.texi (PO Files): Mention kde-format. + (kde-format): New subsection. + (qt-format): Update for Qt 4. + * xgettext.texi: Document --kde option. + +2007-09-09 Bruno Haible + + * gettext.texi (Compendium): Upgrade node from a subsection to a + section. + +2007-09-09 Bruno Haible + + * gettext.texi (Using Compendia): Use "msgattrib --no-obsolete" + instead of "sed -e '/^#~/d'". + Suggested by Benno Schulenberg . + +2007-09-02 Bruno Haible + + * msggrep.texi: Add some examples. + * msgfilter.texi: Likewise. + Suggested by Guido at . + +2007-09-02 Bruno Haible + + Implement msgctxt for C# ResourceManagers. + * gettext.texi (Java): Mention GetParticularString and + GetParticularPluralString. + * xgettext.texi (--keyword): Update defaults for C#. + +2007-09-01 Bruno Haible + + Implement msgctxt for Java ResourceBundles. + * gettext.texi (Java): Mention pgettext and npgettext. + * xgettext.texi (--keyword): Update defaults for Java. + Suggested by Felix Berger. + +2007-08-18 Bruno Haible + + * gettext.texi (Why): Don't oppose commercial software to free + software. + Reported by Kaloian Doganov . + +2007-06-30 Bruno Haible + + * gettext.texi: Fix English typo. + Reported by Benno Schulenberg . + +2007-06-30 Bruno Haible + + * gettext.texi (Installing Localizations, Header Entry, Trans Intro 0, + Trans Intro 1, Organization, Mailing Lists, Prerequisites): Update + email addresses and URLs after the Translation Project moved. + * FAQ.html: Likewise. + +2007-06-17 Bruno Haible + + * gettext.texi (Locale Names): Explain the variant syntax. + Reported by Karl Berry . + +2007-06-07 Bruno Haible + + * gettext.texi (aclocal): Mention also intlmacosx.m4. + +2007-06-07 Bruno Haible + + * xgettext.texi: Mention some caveats. + Reported by Ariel Shkedi . + +2007-06-03 Bruno Haible + + * gettext.texi (Users): Chapter completely rewritten. + Reported by Karl Berry . + +2007-06-03 Bruno Haible + + * gettext.texi (Triggering): Talk about gnulib instead of the gettext + source code. + (Loading Catalogs): Update footnote. + +2007-06-03 Bruno Haible + + * gettext.texi (Aspects): Talk about POSIX:2001 instead of SUSV2. + +2007-06-03 Bruno Haible + + * gettext.texi: Talk about "locale categories" instead of "locale + facets" everwhere, and instead of "locales" where appropriate. + (Aspects): Explain the term "locale categories". + Reported by Karl Berry . + +2007-05-05 Bruno Haible + + * gettext.texi (ifmakeinfo): Remove alias. + (makeinfo): New variable. + +2007-05-04 Bruno Haible + + * gettext.texi (Overview of GNU gettext): Put @ifhtml outside @example, + not @inside. Fixes an indentation problem of the first line when + "makeinfo --html" is used. + Reported by Noah Slater . + +2007-05-04 Bruno Haible + + * gettext.texi: Make the @documentencoding command unconditional. + +2007-05-03 Bruno Haible + + Add support for both "makeinfo --html" and texi2html. + * gettext.texi (ifmakeinfo): New alias. + (Top): Use it instead of @ifinfo. + +2007-05-03 Bruno Haible + + * gettext.texi (Bug Report Address): Fix cross references. + +2007-04-06 Bruno Haible + + * gettext.texi (aclocal): Remove longdouble.m4 from the file list. + +2007-03-27 Bruno Haible + + * gettext.texi (Bug Report Address): New section. + +2006-12-19 Bruno Haible + + * gettextize.texi: Document the --po-dir option. + +2006-12-03 Bruno Haible + + * msgcat.texi: Document the --color and --style options. + * gettext.texi (Colorizing): New section. + +2006-11-27 Bruno Haible + + * gettext-0.16.1 released. + +2006-10-26 Bruno Haible + + * gettext-0.16 released. + +2006-10-20 Bruno Haible + + * gettext.texi (Mark Keywords): Explain the syntax that xgettext + understands. Fix example of a non-translatable string. + +2006-10-19 Paul Eggert + + * gettext.texi (Mark Keywords): keyword are -> keyword is. + +2006-10-16 Bruno Haible + + Switch to automake-1.10. + * Makefile.am (install-html): Add no-op rule. + (install-dvi, install-ps, install-pdf): Remove rules. + +2006-10-17 Bruno Haible + + * ISO_639-2: New file. + * iso-639-2.sed: New file. + * Makefile.am (gettext_TEXINFOS): Add iso-639-2.texi. + (EXTRA_DIST): Add iso-639-2.sed, ISO_639-2. + (iso-639-2.texi): New rule. + * gettext.texi (Language codes): Split into two nodes "Usual Language + Codes" and "Rare Language Codes". Include iso-639-2.texi. + +2006-10-08 Bruno Haible + + * gettextize.texi: Document the --symlink option instead of the --copy + option. + +2006-10-05 Bruno Haible + + * ISO_639: Add Adangme. Fix the names of Western Frisian, Galician, + Marshallese, Sinhala. + * ISO_3166: Add AX, GG, IM, JE, ME, RS. Remove CS. + * iso-3166.sed: Also transform Å to Aa. + +2006-10-03 Bruno Haible + + * gettext.texi (PO Files): Document the "previous msgid" syntax. + * msgmerge.texi: Document the --previous option. + * msgattrib.texi: Document the --clear-previous option. + +2006-10-03 Bruno Haible + + * msgcmp.texi: Document --use-fuzzy and --use-untranslated options. + +2006-10-01 Bruno Haible + + * gettext.texi (AM_GNU_GETTEXT): Mention the AM_GNU_GETTEXT_NEED + alternative. + (AM_GNU_GETTEXT_NEED): New subsection. + +2006-10-01 Bruno Haible + + * gettext.texi (aclocal): Mention intldir.m4. + (AM_GNU_GETTEXT): Mention the effect of AM_GNU_GETTEXT_INTL_SUBDIR. + (AM_GNU_GETTEXT_INTL_SUBDIR): New subsection. + +2006-09-18 Bruno Haible + + * gettext.texi (aclocal): Don't mention inttypes-h.m4. + +2006-09-11 Bruno Haible + + * gettext.texi (aclocal): Mention nls.m4, po.m4, mkdirp.m4. + +2006-09-11 Bruno Haible + + * gettext.texi (aclocal): Add intl.m4 to file list. + +2006-09-08 Bruno Haible + + * gettext.texi (Preparing strings): Also discourage unusual markup. + Suggested by Paul Eggert. + +2006-08-28 Bruno Haible + + * gettext.texi (aclocal): Update file list. + +2006-08-17 Bruno Haible + + * gettext.texi (Plural Forms): Mention the use of ngettext with a + singular format string that doesn't need as many format arguments as + the plural string. + Suggested by Paul Eggert . + +2006-08-16 Bruno Haible + + * gettext.texi (Plural Forms): Document how to deal with bignums, + negative numbers and floating-point numbers. + Suggested by Paul Eggert . + +2006-08-16 Bruno Haible + + * gettext.texi (Plural Forms): Put Hungarian under nplurals=2, and + explain why. + Reported by Arpad Biro and + Gabor Kelemen . + +2006-08-16 Bruno Haible + + * gettext.texi (Plural Forms): Mention the use of ngettext without + cardinal numbers. + Reported by Arpad Biro . + +2006-08-08 Ralf Wildenhues + + * gettext.texi: Fix 2 typos. + +2006-08-08 Ralf Wildenhues + + * gettext.texi: Reduce spacing after "i.e." and "e.g.". + * msgcat.texi: Likewise. + * msgcomm.texi: Likewise. + * msgfilter.texi: Likewise. + +2006-08-06 Ralf Wildenhues + + * gettext.texi: Fix 17 typos. + * msgattrib.texi: Fix 2 typos. + * xgettext.texi: Fix 1 typo. + +2006-07-25 Bruno Haible + + * Makefile.msvc: Remove file. + * Makefile.am (EXTRA_DIST): Remove Makefile.msvc. + +2006-07-25 Bruno Haible + + * Makefile.vms: Remove file. + * Makefile.am (EXTRA_DIST): Remove Makefile.vms. + +2006-07-21 Bruno Haible + + * gettext-0.15 released. + +2006-06-27 Bruno Haible + + * gettext.texi (aclocal): Update file list. + +2006-04-14 Bruno Haible + + Assume autoconf >= 2.60. + * Makefile.am (docdir, dvidir, psdir, pdfdir, htmldir): Remove + variables. + +2006-06-18 Bruno Haible + + * gettext.texi (configure.in): Document where to put AC_GNU_SOURCE. + * gettextize.texi: Refer to this explanation. + +2006-06-15 Bruno Haible + + * gettext.texi (po/Makevars): Mention real purpose of this file. + (po/Rules-*): New section. + Reported by Karl Berry . + +2006-06-04 Bruno Haible + + * gettext.texi (aclocal): Update file list. + +2006-04-17 Bruno Haible + + * Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs). + * gettext.texi (config.guess): Don't mention mkinstalldirs file any + more. + (mkinstalldirs): Say it's obsolete. + * gettextize.texi: Don't mention mkinstalldirs. + +2006-04-11 Bruno Haible + + * gpl.texi: New file, from GNU with typesetting modifications. + * lgpl.texi: New file, from GNU with typesetting modifications. + * fdl.texi: New file, from GNU with typesetting modifications. + * gettext.texi: Change license terms to FDL | GPL. Don't reproduce + the @direntry statement in the HTML documentation. + (Licenses): New appendix chapter. + +2006-04-11 Bruno Haible + + * gettext.texi: Comment out @documentencoding, since we are using + texi2html, not makeinfo, to produce the HTML documentation. + +2006-04-02 Bruno Haible + + * gettext.texi (wxWidgets): Renamed from wxWindows. Clarify formatting + with positions. + +2006-04-02 Bruno Haible + + * gettext.texi (Contexts): Document the macros pgettext_expr, + dpgettext_expr, dcpgettext_expr. + +2006-04-02 Bruno Haible + + * gettext.texi (Plural Forms): More details about the expression + syntax. + Reported by Martin von Löwis . + +2006-04-01 Bruno Haible + + * texi2html: Add option -expandtex. Expand @ifhtml by default, not + @ifinfo. Use Unicode quotation marks instead of grave and acute + accents. Emit charset=UTF-8 declaration. Bump version number to 1.52b. + * Makefile.am (gettext.html, gettext_toc.html): Remove -expandinfo + option. + * gettext.texi: If in HTML mode, use Unicode quotation marks and + box drawing characters. + * msgattrib.texi: Likewise. + +2006-04-01 Bruno Haible + + * gettext.texi (Introduction): Swap paragraphs. + +2006-04-01 Bruno Haible + + * gettext.texi (gettext grok, Temp Programmers, Trans Intro 0, + Trans Intro 1, Discussions, Organization, Information Flow, + References): Mark as outdated. + +2006-04-01 Bruno Haible + + * xgettext.texi (--keyword): Document the default keywords. + Suggested by Bjoern Voigt . + +2006-03-28 Bruno Haible + + * msgfilter.texi: Explain built-in filters and recode-sr-latin. + +2006-03-26 Bruno Haible + + * gettext.texi (Java): Recommend a simpler idiom for Java 1.5. + +2006-03-25 Bruno Haible + + * gettext.texi (C): Also mention the hello-c++-wxwidgets example. + +2006-03-19 Bruno Haible + + * xgettext.texi (--keyword): Document the extracted comments syntax. + +2006-03-16 Bruno Haible + + * gettext.texi (PO Files): Clarify the terms "automatic comments" and + "extracted comments". + * msggrep.texi: Document the -X/--extracted-comment option. + +2006-03-16 Bruno Haible + + * xgettext.texi (--keyword): Document suffix 'g'. + +2006-02-26 Bruno Haible + + * gettext.texi (Introduction): Fix typo. + Reported by . + +2006-02-12 Bruno Haible + + * gettext.texi (PO Files): Mention boost-format. + (boost-format): New subsection. + * xgettext.texi: Document --boost option. + +2005-11-29 Colin Watson + + * msggrep.texi: Document --invert-match option. + +2005-10-18 Bruno Haible + + * xgettext.texi (--keyword): Document how to specify the total number + of arguments. + +2005-10-03 Bruno Haible + + Add support for contexts in xgettext. + * xgettext.texi (--keyword): Document how to specify context arguments. + +2005-10-07 Bruno Haible + + * gettext.texi (PO Files, Preparing Strings, Contexts): Small fixes. + Patch by Pavel Roskin . + +2005-10-01 Bruno Haible + + Support for context dependent translations in PO files. + * gettext.texi (PO Files): Explain syntax of msgctxt. + (MO Files): Explain how contexts are stored. + (Contexts): New subsection. + (GUI program problems): Remove subsection. + * msgexec.texi: Mention MSGEXEC_MSGCTXT environment variable. + * msggrep.texi: Document option -J. + +2005-09-25 Bruno Haible + + * xgettext.texi (--from-code): Python input is no longer always in + ISO-8859-1. + +2005-09-20 Bruno Haible + + * xgettext.texi (--from-code): Python input is always assumed to be + in ISO-8859-1, not UTF-8. + Reported by Danilo Segan . + +2005-08-26 Bruno Haible + + * gettext.texi (Plural forms): Add info about Romanian. + Explanations by Eddy Petrişor . + +2005-07-24 Bruno Haible + + Tidy up exported symbols. + * gettext.texi (aclocal): Mention visibility.m4. + +2005-05-17 Bruno Haible + + * gettext.texi (Why): Mention libgettextpo. + (Overview, PO Files, Header Entry, Prioritizing messages): De-emphasize + PO mode. Talk about PO file editors instead. + (Sources): New section 'Importing'. + (PO Mode): Move introducing paragraph from Overview to here. + +2005-07-17 Bruno Haible + + * gettext.texi (Editing): New chapter, including all the PO Mode + descriptions. + (PO Files): Chapter renamed from Basics. + +2005-07-17 Bruno Haible + + * gettext.texi (Users): Move chapter to become the second. + (Installers): New chapter, extracted from Users chapter. + +2005-07-16 Bruno Haible + + * gettext.texi (aclocal): Add lock.m4 to file list. + +2005-07-01 Bruno Haible + + * FAQ.html (windows_howto): Mention the three debugging runtime libs. + Reported by Stephane Matamontero . + +2005-05-02 Bruno Haible + + * gettext.texi (c-format): Write fprintf() instead of fprintf(3). + Requested by Richard Stallman. + +2006-06-21 Bruno Haible + + * gettext-0.14.6 released. + +2005-05-23 Bruno Haible + + * gettext-0.14.5 released. + +2005-04-11 Bruno Haible + + * gettext-0.14.4 released. + +2005-03-22 Bruno Haible + + * Makefile.am (stamp-vti): Replace config with build-aux. + +2005-03-14 Bruno Haible + + * gettext-0.14.3 released. + +2005-03-07 Bruno Haible + + * FAQ.html (How do I make use of gettext() in my package?): Add more + info. + Reported by Alexandre Duret-Lutz . + +2005-03-06 Bruno Haible + + * gettext.texi (src/Makefile): Document the steps that need to be done + when automake is used. + Reported by Alexandre Duret-Lutz . + +2005-03-06 Bruno Haible + + * gettext.texi (config.h.in): Explain the constraints for this file's + name and location. + +2005-03-06 Bruno Haible + + * gettext.texi (config.guess): Update the instructions for fetching + these files. + Reported by Alexandre Duret-Lutz . + +2005-03-06 Bruno Haible + + * gettext.texi (po/Makevars): Change subsection title. + Suggested by Alexandre Duret-Lutz . + +2005-03-06 Bruno Haible + + * gettext.texi (src/Makefile): Adjust example 'dist' target. + Suggested by Alexandre Duret-Lutz . + +2005-02-24 Bruno Haible + + * gettext-0.14.2 released. + +2005-02-23 Bruno Haible + + * gettext.texi: Put the table of contents at the end in TeX mode, + otherwise texi2dvi fails. + +2005-02-12 Bruno Haible + + * tutorial.html: New file, from Gora Mohanty with modifications: + Remove the navigation panel. Don't use the -s option. + * Makefile.am (doc_DATA): Add tutorial.html. + * Makefile.msvc (install, uninstall): Also tutorial.html. + * Makefile.vms (install, uninstall): Also tutorial.html. + +2005-02-06 Bruno Haible + + * gettext.texi (Files under CVS): Explain the role of the + AM_GNU_GETTEXT_VERSION argument. + +2005-02-05 Bruno Haible + + * gettext.texi (Release Management): New section. + Suggested by Karl Berry. + +2005-02-04 Bruno Haible + + * gettext.texi (Plural forms): Add info about Vietnamese. + Explanations by Clytie Siddall . + +2005-01-20 Bruno Haible + + * gettext.texi (Scheme): Correct information about setlocale. + +2005-01-16 Bruno Haible + + Support for Scheme. + * gettext.texi (PO Files): Mention scheme-format. + (scheme-format): New subsection. + (Scheme): New subsection. + * xgettext.texi: Document Scheme source language. Document that it is + applicable to --flag. + +2005-01-11 Bruno Haible + + * gettext.texi: Put the table of contents at the beginning, after the + titlepage, not at the end. + +2004-11-13 Bruno Haible + + * gettext.texi (Preparing Shell Scripts): Document extra backslashing. + +2004-09-08 Bruno Haible + + * Makefile.am (EXTRA_DIST): Add FAQ.html. + +2004-09-02 Bruno Haible + + * gettext.texi (Aspects): Tweak language: ISO-8859-1 is not a font. + Reported by Vera Mickael . + +2004-08-30 Bruno Haible + + * gettext.texi (Plural forms): Czech is now like Slovak. + Reported by Stepan Kasal . + +2004-08-11 Bruno Haible + + * gettext.texi (Aspects): Fix typo in ISO standard number. + Patch by . + +2004-07-13 Bruno Haible + + * gettext.texi (Python): Remove mention of a bug that was fixed in + Python 2.3.x. + Reported by Karl Chen . + +2004-02-27 Bruno Haible + + * gettext.texi (Plural forms): Add info about Serbian. + Reported by Danilo Segan . + +2004-02-24 Bruno Haible + + * FAQ.html (How do I make use of gettext() in my package?): New + question. Suggested by Paul Eggert . + +2004-02-21 Bruno Haible + + * FAQ.html: New file. + * Makefile.am (doc_DATA): New variable. + * Makefile.msvc (install): Also install FAQ.html. + (uninstall): Also uninstall FAQ.html. + * Makefile.vms (install): Also install FAQ.html. + (uninstall): Also uninstall FAQ.html. + +2004-02-02 Bruno Haible + + * gettext.texi (aclocal): Mention glibc2.m4. + +2004-01-29 Bruno Haible + + * gettext-0.14.1 released. + +2004-01-28 Bruno Haible + + * gettext-0.14 released. + +2004-01-18 Bruno Haible + + * ISO_639: Update. Add ak, av, bm, cr, dv, ee, ff, ig, kg, kr, lg, lu, + oj, ve. + +2004-01-10 Bruno Haible + + * gettext.texi (Libraries): New section. + +2004-01-09 Bruno Haible + + * gettext.texi (c-format): Document the 'I' flag. + +2004-01-14 Bruno Haible + + * gettext.texi: Add entrypoints for ngettext and envsubst. + Reported by Peter Breitenlohner . + +2004-01-11 Bruno Haible + + * gettext.texi (Java): Explain how to define the shorthand '_'. + (C#): Likewise. + +2003-12-28 Bruno Haible + + * gettext.texi (C#): Mention the --csharp-resources option. + * msgfmt.texi: Document the --csharp-resources option. + * msgunfmt.texi: Likewise. + +2003-12-26 Bruno Haible + + Support for C#. + * gettext.texi (C#): Add more details. + * msgfmt.texi: Document --csharp option and C# mode. + * msgunfmt.texi: Document --csharp option and C# mode. + +2003-12-14 Bruno Haible + + * gettext.texi (PO Files): Mention csharp-format. + (Preparing String): Add an example in C# syntax. + (csharp-format): New subsection. + (C#): New subsection. + * xgettext.texi: Document C# source language. Document the languages to + which --flag is applicable. + +2003-12-12 Bruno Haible + + Assume automake-1.8. + * Makefile.am (stamp-vti): Is in $(srcdir). + (html-local): Renamed from html. + (ps, pdf, .texi.pdf): Remove rules. + +2003-12-17 Bruno Haible + + * gettext-0.13.1 released. + +2003-12-09 Bruno Haible + + * Makefile.am (MAKEINFOFLAGS): Add --no-split. + +2003-12-06 Bruno Haible + + * gettext.texi (Triggering): Use ANSI C function declaration. + (Perl): Update. + +2003-11-30 Bruno Haible + + * gettext-0.13 released. + +2003-11-23 Bruno Haible + + * gettext.texi (aclocal): Don't mention ssize_t.m4. + +2003-11-16 Bruno Haible + + * gettext.texi (aclocal): Mention size_max.m4, ssize_t.m4, xsize.m4. + +2003-11-15 Bruno Haible + + * gettext.texi (C, sh, Python, Common Lisp, librep, Smalltalk, Java, + gawk, Pascal, YCP, Tcl, Perl, PHP): Mention the examples. + +2003-11-13 Bruno Haible + + * Makefile.am (docdir): Use the value from the configure script. + +2003-11-13 Bruno Haible + + * gettext.texi (About gettext): Mention OpenI18N (ex-Li18nux). + (History): Acknowledge Paul Eggert's role. + +2003-11-04 Bruno Haible + + * Makefile.am (MAKEINFO): Set LC_MESSAGES and LC_ALL to empty as well. + +2003-10-19 Bruno Haible + + * gettext.texi (PO Files): Mention qt-format. + (qt-format): New subsection. + * msgfmt.texi: Document --qt option. + * xgettext.texi: Likewise. + +2003-10-13 Bruno Haible + + * gettext.texi (PO Files): Mention objc-format, sh-format, perl-format, + perl-brace-format. + (objc-format): New subsection. + +2003-10-12 Bruno Haible + + * msgattrib.texi: Document --stringtable-input and --stringtable-output + options. + * msgcat.texi: Likewise. + * msgcomm.texi: Likewise. + * msgconv.text: Likewise. + * msgen.texi: Likewise. + * msgfilter.texi: Likewise. + * msgrep.texi: Likewise. + * msginit.texi: Likewise. + * msgmerge.texi: Likewise. + * msguniq.texi: Likewise. + * msgcmp.texi: Document --stringtable-input option. + * msgexec.texi: Likewise. + * msgfmt.texi: Likewise. + * msgunfmt.texi: Document --stringtable-output option. + * xgettext.texi: Likewise. Document --language=NXStringTable. + +2003-10-11 Bruno Haible + + * gettext.texi (PHP): Drop phplib from list of RPMs. + +2003-10-05 Bruno Haible + + * xgettext.texi (Language specific options): Renamed section. Document + the languages to which --extract-all, --keyword, --trigraphs are + applicable. Document option --flag. + +2003-09-13 Bruno Haible + + * gettext.texi: Update menus. + (sh): Update. + (Preparing Shell Scripts, gettext.sh, gettext Invocation, + ngettext Invocation, envsubst Invocation, eval_gettext Invocation, + eval_ngettext Invocation): New subsubsections. + * Makefile.am (TEXINCLUDES): New variable. + (gettext_TEXINFOS): Add the files from gettext-runtime/doc/. + (MAKEINFOFLAGS, TEXI2DVI): New variables, needed for TEXINCLUDES. + (TEXI2PDF): Add TEXINCLUDES. + (gettext.html, gettext_toc.html): Use TEXINCLUDES. + +2003-09-13 Bruno Haible + + * gettext.texi (sh-format): New subsection. + +2003-09-09 Guido Flohr + + * gettext.texi (Perl, Interpolation I): Tweaks. + +2003-08-15 Bruno Haible + + * ISO_639: Update. Add an, ht, ii, li. + * ISO_3166: Update. Change reference URL. Add CS, TL. Remove YU, TP. + * iso-3166.sed: Handle accented characters as best as texi2html can. + +2003-08-15 Bruno Haible + + * gettext.texi (Quote-like Expressions): Fix misplaced @group. + +2003-08-08 Bruno Haible + + * gettext.texi (PO Files): Mention gcc-internal-format. + (gcc-internal-format): New subsection. + (GCC-source): New subsection. + * xgettext.texi: Mention GCC-source language. + +2003-07-05 Bruno Haible + + * gettext.texi (perl-format): Use braces, not brackets, in format + strings. + (Perl pitfalls): Likewise. + +2003-07-03 Bruno Haible + + * gettext.texi (PHP): Mention plural form functions. + +2003-06-22 Bruno Haible + + * gettext.texi (Preparing Strings): More explanations. + +2003-06-21 Guido Flohr + Bruno Haible + + * gettext.texi (perl-format): Describe two kinds of format strings. + (Perl): Add more info. + +2003-06-19 Bruno Haible + + * gettext.texi (Sources): Recommend to use also for printf. + (aclocal): Mention also intmax.m4, longdouble.m4, longlong.m4, + printf-posix.m4, signed.m4, wchar_t.m4, wint_t.m4. + (c-format): Mention the printf(), fprintf() replacements. + (C, clisp C): Remove portability note for formatting with positions. + +2003-06-15 Bruno Haible + + * gettext.texi (C): Mention that formatting with positions doesn't work + on NetBSD and on Woe32. + +2003-06-12 Bruno Haible + + * gettext.texi (perl-format): Move subsection. + (Perl): Small tweaks. Replace "legal" -> "valid". + * xgettext.texi: Tweak. + +2003-06-11 Guido Flohr + + * gettext.texi (Perl): Extend and update. + * xgettext.texi: Mention language Perl. + +2003-06-10 Stepan Kasal + + * gettext.texi: Fix a few typos. + +2003-06-04 Stepan Kasal + + * gettext.texi (Header Entry): Delete some leading spaces; + they got copied verbatim to the info file. + +2003-05-27 Bruno Haible + + * gettext.texi (Plural forms): Correct formula for Slovak. + Reported by Marcel Telka . + +2003-05-24 Bruno Haible + + * gettext.texi (Glade): Mention support og Glade 2. + +2003-05-22 Bruno Haible + + * gettext-0.12.1 released. + +2003-05-19 Bruno Haible + + * Makefile.am (stamp-vti): Add some dependencies. + +2003-05-17 Bruno Haible + + * gettext-0.12 released. + +2003-05-03 Bruno Haible + + * gettext.texi: Use two spaces as sentence separator, as recommended + by the texinfo manual. + * gettextize.texi: Likewise. + * msgen.texi: Likewise. + * msgfilter.texi: Likewise. + +2003-05-03 Bruno Haible + + * gettext.texi: Distinguish between POSIX and POSIX+XSI. + Suggested by Paul Eggert. + +2003-05-03 Bruno Haible + + * gettext.texi (AM_PO_SUBDIRS): New subsection. + +2003-04-25 Bruno Haible + + * gettext.texi (Names): New section. + +2003-04-22 Bruno Haible + + * gettext.texi (Java): Document how to use .properties files. + * msgattrib.texi: Document options -P and -p. + * msgcat.texi: Likewise. + * msgcomm.texi: Likewise. + * msgconv.texi: Likewise. + * msgen.texi: Likewise. + * msgfilter.texi: Likewise. + * msggrep.texi: Likewise. + * msginit.texi: Likewise. + * msgmerge.texi: Likewise. + * msguniq.texi: Likewise. + * msgcmp.texi: Document option -P. + * msgexec.texi: Likewise. + * msgfmt.texi: Likewise. + * msgunfmt.texi: Document option -p. + * xgettext.texi: Document options -L JavaProperties and + --properties-output. + +2003-04-22 Bruno Haible + + * gettext.texi (Plural forms): Add info about Faroese. + Reported by Jacob Sparre Andersen . + +2003-04-12 Bruno Haible + + * Makefile.vms: Don't use the force target. Avoid rules with no lines. + Suggested by Jouk Jansen . + +2003-04-12 Bruno Haible + + * Makefile.am (docdir): Use datadir instead of prefix. + * Makefile.msvc (datadir): New variable. + (docdir): Use it instead of prefix. + (install, installdirs): Update. + * Makefile.vms (datadir): New variable. + (docdir): Use it instead of prefix. + +2003-03-30 Bruno Haible + + * Makefile.vms: New file. + * Makefile.am (EXTRA_DIST): Add Makefile.vms. + +2003-03-17 Bruno Haible + + Native Woe32/MSVC support. + * Makefile.msvc: New file. + * Makefile.am (EXTRA_DIST): Add it. + +2003-03-10 Bruno Haible + + * msggrep.texi: Document option -C completely. + Reported by Martin Quinson . + +2003-03-03 Bruno Haible + + * msgen.texi: Don't say that the entries are marked fuzzy. + Reported by Karl Eichwalder . + +2003-02-22 Bruno Haible + + * gettext.texi (Python): Mention ngettext. + +2003-02-22 Bruno Haible + + * Makefile.am (MOSTLYCLEANFILES): No need to clean the unused indices. + (The automake generated rule already cleans them.) + +2003-02-22 Bruno Haible + + * Makefile.am (installdirs): Remove dependency, redundant with + automake >= 1.6. + +2003-02-16 Bruno Haible + + * gettext.texi (Header Entry): Document Report-Msgid-Bugs-To. + * xgettext.texi: Document --msgid-bugs-address option. + +2003-02-16 Bruno Haible + + * gettext.texi (Prioritizing messages): New section. + +2003-02-16 Bruno Haible + + * gettext.texi (po/LINGUAS): Document en@quot and en@boldquot. + +2003-02-15 Bruno Haible + + * gettext.texi (PO Files): Mention the other -format and + no--format flags. + +2003-02-15 Bruno Haible + + * gettext.texi: Use @code instead of @kbd in many places. + * xgettext.texi: Likewise. + +2003-02-12 Bruno Haible + + * Makefile.am (docdir): Use 'gettext' instead of @PACKAGE@. + (EXTRA_DIST): Add ChangeLog.0. + * mdate-sh: Move to ../../config/mdate-sh. + + +See ChangeLog.0 for earlier changes. diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_10.html gettext-0.19.7/gettext-tools/doc/gettext_10.html --- gettext-0.19.6/gettext-tools/doc/gettext_10.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_10.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - 10 Producing Binary MO Files @@ -18,15 +18,15 @@

10.1 Invoking the msgfmt Program

- - + +

 msgfmt [option] filename.po ...
 

- + The msgfmt programs generates a binary message catalog from a textual translation description. @@ -43,8 +43,8 @@

‘--directory=directory
- - + + Add directory to the list of directories. Source files are searched relative to this list of directories. The resulting binary file will be written relative to the current directory, though. @@ -65,47 +65,53 @@
‘--java’
- - + + Java mode: generate a Java ResourceBundle class.
‘--java2’
- + Like --java, and assume Java2 (JDK 1.2 or higher).
‘--csharp’
- - + + C# mode: generate a .NET .dll file containing a subclass of GettextResourceSet.
‘--csharp-resources’
- - + + C# resources mode: generate a .NET ‘.resources’ file.
‘--tcl’
- - + + Tcl mode: generate a tcl/msgcat ‘.msg’ file.
‘--qt’
- - + + Qt mode: generate a Qt ‘.qm’ file.
‘--desktop’
- - + + Desktop Entry mode: generate a ‘.desktop’ file. +
‘--xml’ +
+ + +XML mode: generate an XML file. + @@ -118,13 +124,13 @@
‘--output-file=file
- - + + Write output to specified file.
‘--strict’
- + Direct the program to work strictly following the Uniforum/Sun implementation. Currently this only affects the naming of the output file. If this option is not given the name of the output file is the @@ -151,27 +157,27 @@
‘--resource=resource
- - + + Specify the resource name.
‘-l locale
‘--locale=locale
- - + + Specify the locale name, either a language specification of the form ll or a combined language and country specification of the form ll_CC.
‘-d directory
- + Specify the base directory of classes directory hierarchy.
‘--source’
- + Produce a .java source file, instead of a compiled .class file. @@ -192,22 +198,22 @@
‘--resource=resource
- - + + Specify the resource name.
‘-l locale
‘--locale=locale
- - + + Specify the locale name, either a language specification of the form ll or a combined language and country specification of the form ll_CC.
‘-d directory
- + Specify the base directory for locale dependent ‘.dll’ files. @@ -228,14 +234,14 @@
‘--locale=locale
- - + + Specify the locale name, either a language specification of the form ll or a combined language and country specification of the form ll_CC.
‘-d directory
- + Specify the base directory of ‘.msg’ message catalogs. @@ -253,15 +259,15 @@
‘--template=template
- + Specify a .desktop file used as a template.
‘-k[keywordspec]’
‘--keyword[=keywordspec]’
- - + + Specify keywordspec as an additional keyword to be looked for. Without a keywordspec, the option means to not use default keywords. @@ -269,15 +275,16 @@
‘--locale=locale
- - + + Specify the locale name, either a language specification of the form ll or a combined language and country specification of the form ll_CC.
‘-d directory
- -Specify the base directory of ‘.msg’ message catalogs. + +Specify the directory where PO files are read. The directory must +contain the ‘LINGUAS’ file. @@ -293,11 +300,8 @@

-On the other hand, when using msgfmt from a Makefile, it is cumbersome -to loop over all locales under a particular directory. msgfmt -provides a special operation mode for this use-case. To generate a -‘.desktop’ file from multiple ‘.po’ files under a directory, -specify the directory with the ‘-d’ option. +msgfmt provides a special "bulk" operation mode to process multiple +‘.po’ files at a time.

@@ -319,7 +323,75 @@

-

10.1.8 Input file syntax

+

10.1.8 XML mode operations

+ +
+ +
‘--template=template +
+ +Specify an XML file used as a template. + +
‘-L name +
+
‘--language=name +
+ + + +Specifies the language of the input files. + +
‘-l locale +
+
‘--locale=locale +
+ + +Specify the locale name, either a language specification of the form ll +or a combined language and country specification of the form ll_CC. + +
‘-d directory +
+ +Specify the base directory of ‘.po’ message catalogs. + +
+ +

+To generate an XML file for a single locale, you can use it as follows. + +

+ +
+msgfmt --xml --template=template --locale=locale \
+  -o file filename.po ...
+
+ +

+msgfmt provides a special "bulk" operation mode to process multiple +‘.po’ files at a time. + +

+ +
+msgfmt --xml --template=template -d directory -o file
+
+ +

+msgfmt first reads the ‘LINGUAS’ file under directory, and +then processes all ‘.po’ files listed there. You can also limit +the locales to a subset, through the ‘LINGUAS’ environment +variable. + +

+

+For either operation modes, the ‘-o’ and ‘--template’ +options are mandatory. + +

+ + +

10.1.9 Input file syntax

@@ -327,14 +399,14 @@
‘--properties-input’
- - + + Assume the input files are Java ResourceBundles in Java .properties syntax, not in PO file syntax.
‘--stringtable-input’
- + Assume the input files are NeXTstep/GNUstep localized resource files in .strings syntax, not in PO file syntax. @@ -342,7 +414,7 @@ -

10.1.9 Input file interpretation

+

10.1.10 Input file interpretation

@@ -350,15 +422,15 @@
‘--check’
- - + + Perform all the checks implied by --check-format, --check-header, --check-domain.
‘--check-format’
- - + + Check language dependent format strings. If the string represents a format string used in a @@ -377,19 +449,19 @@ errors where there are none. To solve this problem the programmer can dictate the decision to the -xgettext program (see section 15.3.1 C Format Strings). The translator should not +xgettext program (see section 15.3.1 C Format Strings). The translator should not consider removing the flag from the #, line. This "fix" would be reversed again as soon as msgmerge is called the next time.
‘--check-header’
- + Verify presence and contents of the header entry. See section 6.2 Filling in the Header Entry, for a description of the various fields in the header entry.
‘--check-domain’
- + Check for conflicts between domain directives and the --output-file option @@ -397,18 +469,18 @@
‘--check-compatibility’
- - - + + + Check that GNU msgfmt behaves like X/Open msgfmt. This will give an error when attempting to use the GNU extensions.
‘--check-accelerators[=char]’
- - - - + + + + Check presence of keyboard accelerators for menu items. This is based on the convention used in some GUIs that a keyboard accelerator in a menu item string is designated by an immediately preceding ‘&’ character. @@ -423,9 +495,9 @@
‘--use-fuzzy’
- - - + + + Use fuzzy entries in output. Note that using this option is usually wrong, because fuzzy messages are exactly those which have not been validated by a human translator. @@ -434,7 +506,7 @@ -

10.1.10 Output details

+

10.1.11 Output details

@@ -442,13 +514,13 @@
‘--alignment=number
- - + + Align strings to number bytes (default: 1).
‘--endianness=byteorder
- + Write out 32-bit numbers in the given byte order. The possible values are big and little. The default depends on the platform, namely on the endianness of the CPU. @@ -462,7 +534,7 @@
‘--no-hash’
- + Don't include a hash table in the binary file. Lookup will be more expensive at run time (binary search instead of hash table lookup). @@ -470,7 +542,7 @@ -

10.1.11 Informative output

+

10.1.12 Informative output

@@ -478,21 +550,21 @@
‘--help’
- - + + Display this help and exit.
‘-V’
‘--version’
- - + + Output version information and exit.
‘--statistics’
- + Print statistics about translations. When the option --verbose is used in combination with --statistics, the input file name is printed in front of the statistics line. @@ -501,33 +573,33 @@
‘--verbose’
- - + + Increase verbosity level.
-

10.2 Invoking the msgunfmt Program

+

10.2 Invoking the msgunfmt Program

- - + +

 msgunfmt [option] [file]...
 

- + The msgunfmt program converts a binary message catalog to a Uniforum style .po file.

-

10.2.1 Operation mode

+

10.2.1 Operation mode

@@ -535,35 +607,35 @@
‘--java’
- - - + + + Java mode: input is a Java ResourceBundle class.
‘--csharp’
- - + + C# mode: input is a .NET .dll file containing a subclass of GettextResourceSet.
‘--csharp-resources’
- - + + C# resources mode: input is a .NET ‘.resources’ file.
‘--tcl’
- - + + Tcl mode: input is a tcl/msgcat ‘.msg’ file.
-

10.2.2 Input file location

+

10.2.2 Input file location

@@ -579,7 +651,7 @@

-

10.2.3 Input file location in Java mode

+

10.2.3 Input file location in Java mode

@@ -587,16 +659,16 @@
‘--resource=resource
- - + + Specify the resource name.
‘-l locale
‘--locale=locale
- - + + Specify the locale name, either a language specification of the form ll or a combined language and country specification of the form ll_CC. @@ -609,7 +681,7 @@

-

10.2.4 Input file location in C# mode

+

10.2.4 Input file location in C# mode

@@ -617,22 +689,22 @@
‘--resource=resource
- - + + Specify the resource name.
‘-l locale
‘--locale=locale
- - + + Specify the locale name, either a language specification of the form ll or a combined language and country specification of the form ll_CC.
‘-d directory
- + Specify the base directory for locale dependent ‘.dll’ files.
@@ -645,7 +717,7 @@

-

10.2.5 Input file location in Tcl mode

+

10.2.5 Input file location in Tcl mode

@@ -653,14 +725,14 @@
‘--locale=locale
- - + + Specify the locale name, either a language specification of the form ll or a combined language and country specification of the form ll_CC.
‘-d directory
- + Specify the base directory of ‘.msg’ message catalogs.
@@ -672,7 +744,7 @@

-

10.2.6 Output file location

+

10.2.6 Output file location

@@ -680,8 +752,8 @@
‘--output-file=file
- - + + Write output to specified file.
@@ -693,7 +765,7 @@

-

10.2.7 Output details

+

10.2.7 Output details

@@ -701,32 +773,32 @@
‘--color=when
- + Specify whether or when to use colors and other text attributes. See section 9.11.1 The --color option for details.
‘--style=style_file
- + Specify the CSS style rule file to use for --color. See section 9.11.3 The --style option for details.
‘--force-po’
- + Always write an output file even if it contains no message.
‘-i’
‘--indent’
- - + + Write the .po file using indented style.
‘--strict’
- + Write out a strict Uniforum conforming PO file. Note that this Uniforum format should be avoided because it doesn't support the GNU extensions. @@ -735,15 +807,15 @@
‘--properties-output’
- - + + Write out a Java ResourceBundle in Java .properties syntax. Note that this file format doesn't support plural forms and silently drops obsolete messages.
‘--stringtable-output’
- + Write out a NeXTstep/GNUstep localized resource file in .strings syntax. Note that this file format doesn't support plural forms. @@ -751,15 +823,15 @@
‘--width=number
- - + + Set the output page width. Long strings in the output files will be split across multiple lines in order to ensure that each line's width (= number of screen columns) is less or equal to the given number.
‘--no-wrap’
- + Do not break long message lines. Message lines whose width exceeds the output page width will not be split into several lines. Only file reference lines which are wider than the output page width will be split. @@ -768,9 +840,9 @@
‘--sort-output’
- - - + + + Generate sorted output. Note that using this option makes it much harder for the translator to understand each message's context. @@ -778,7 +850,7 @@ -

10.2.8 Informative output

+

10.2.8 Informative output

@@ -786,34 +858,34 @@
‘--help’
- - + + Display this help and exit.
‘-V’
‘--version’
- - + + Output version information and exit.
‘-v’
‘--verbose’
- - + + Increase verbosity level.
-

10.3 The Format of GNU MO Files

+

10.3 The Format of GNU MO Files

- - + +

@@ -822,7 +894,7 @@

- + The first two words serve the identification of the file. The magic number will always signal GNU MO files. The number is stored in the byte order of the generating machine, so the magic number really is @@ -882,7 +954,7 @@

- + The size S of the hash table can be zero. In this case, the hash table itself is not contained in the MO file. Some people might prefer this because a precomputed hashing table takes disk space, and @@ -903,13 +975,13 @@

- + Contexts are stored by storing the concatenation of the context, a EOT byte, and the original string, instead of the original string.

- + Plural forms are stored by letting the plural of the original string follow the singular of the original string, separated through a NUL byte. The length which appears in the string descriptor diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_11.html gettext-0.19.7/gettext-tools/doc/gettext_11.html --- gettext-0.19.6/gettext-tools/doc/gettext_11.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_11.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - 11 The Programmer's View @@ -11,7 +11,7 @@


-

11 The Programmer's View

+

11 The Programmer's View

One aim of the current message catalog implementation provided by @@ -29,9 +29,9 @@ -

11.1 About catgets

+

11.1 About catgets

- +

@@ -64,9 +64,9 @@ -

11.1.1 The Interface

+

11.1.1 The Interface

- +

@@ -79,7 +79,7 @@

- + catopen is used like in this:

@@ -98,7 +98,7 @@

- + This handle is of course used in the catgets function which can be used like this: @@ -130,7 +130,7 @@

- + The last of these functions is used and behaves as expected:

@@ -145,9 +145,9 @@

-

11.1.2 Problems with the catgets Interface?!

+

11.1.2 Problems with the catgets Interface?!

- +

@@ -166,9 +166,9 @@

-

11.2 About gettext

+

11.2 About gettext

- +

@@ -183,7 +183,7 @@ method of normal file handling (open-use-close) and that it does not burden the programmer with so many tasks, especially the unique key handling. Of course here also a unique key is needed, but this key is the message -itself (how long or short it is). See section 11.3 Comparing the Two Interfaces for a more +itself (how long or short it is). See section 11.3 Comparing the Two Interfaces for a more detailed comparison of the two methods.

@@ -197,9 +197,9 @@ -

11.2.1 The Interface

+

11.2.1 The Interface

- +

@@ -268,11 +268,11 @@

-

11.2.2 Solving Ambiguities

+

11.2.2 Solving Ambiguities

- - - + + +

@@ -346,9 +346,9 @@

-

11.2.3 Locating Message Catalog Files

+

11.2.3 Locating Message Catalog Files

- +

@@ -387,10 +387,10 @@

-

11.2.4 How to specify the output character set gettext uses

+

11.2.4 How to specify the output character set gettext uses

- - + +

@@ -422,7 +422,7 @@

Function: char * bind_textdomain_codeset (const char *domainname, const char *codeset) -
+
The bind_textdomain_codeset function can be used to specify the output character set for message catalogs for domain domainname. The codeset argument must be a valid codeset name which can be used @@ -454,12 +454,12 @@

-

11.2.5 Using contexts for solving ambiguities

+

11.2.5 Using contexts for solving ambiguities

- - - - + + + +

@@ -497,7 +497,7 @@

- +

 const char *pgettext (const char *msgctxt, const char *msgid);
@@ -532,8 +532,8 @@
 
 

- - + +

 const char *dpgettext (const char *domain_name,
@@ -618,9 +618,9 @@
 
 

- - - + + +

 const char *pgettext_expr (const char *msgctxt, const char *msgid);
@@ -640,9 +640,9 @@
 

-

11.2.6 Additional functions for plural forms

+

11.2.6 Additional functions for plural forms

- +

@@ -765,7 +765,7 @@

Function: char * ngettext (const char *msgid1, const char *msgid2, unsigned long int n) -
+
The ngettext function is similar to the gettext function as it finds the message catalogs in the same way. But it takes two extra arguments. The msgid1 parameter must contain the singular @@ -836,7 +836,7 @@

-See section 15.3.1 C Format Strings for details about this argument reordering syntax. +See section 15.3.1 C Format Strings for details about this argument reordering syntax.

@@ -875,7 +875,7 @@

Function: char * dngettext (const char *domain, const char *msgid1, const char *msgid2, unsigned long int n) -
+
The dngettext is similar to the dgettext function in the way the message catalog is selected. The difference is that it takes two extra parameter to provide the correct plural form. These two @@ -886,7 +886,7 @@

Function: char * dcngettext (const char *domain, const char *msgid1, const char *msgid2, unsigned long int n, int category) -
+
The dcngettext is similar to the dcgettext function in the way the message catalog is selected. The difference is that it takes two extra parameter to provide the correct plural form. These two @@ -911,9 +911,9 @@

- - - + + + The information about the plural form selection has to be stored in the header entry of the PO file (the one with the empty msgid string). The plural form information looks like this: @@ -941,7 +941,7 @@

- + The following rules are known at this point. The language with families are listed. But this does not necessarily mean the information can be generalized for the whole family (as can be easily seen in the table @@ -1305,14 +1305,14 @@

The translators' perspective regarding plural forms is explained in -section 12.6 Translating plural forms. +section 12.6 Translating plural forms.

-

11.2.7 Optimization of the *gettext functions

+

11.2.7 Optimization of the *gettext functions

- +

@@ -1365,10 +1365,10 @@

-

11.3 Comparing the Two Interfaces

+

11.3 Comparing the Two Interfaces

- - + +

@@ -1418,7 +1418,7 @@

- +

 #include <libintl.h>
@@ -1433,7 +1433,7 @@
 
 

- + The same procedure can be done for the gettext_noop invocations (see section 4.7 Special Cases of Translatable Strings). One usually defines gettext_noop as a no-op macro. So you should consider the following code for your project: @@ -1512,12 +1512,12 @@

catgets allows same original entry to have different translations, but gettext has another, scalable approach for solving ambiguities -of this kind: See section 11.2.2 Solving Ambiguities. +of this kind: See section 11.2.2 Solving Ambiguities.

-

11.4 Using libintl.a in own programs

+

11.4 Using libintl.a in own programs

Starting with version 0.9.4 the library libintl.h should be @@ -1528,7 +1528,7 @@

-

11.5 Being a gettext grok

+

11.5 Being a gettext grok

NOTE: This documentation section is outdated and needs to be @@ -1546,7 +1546,7 @@

  • Changing the language at runtime - + For interactive programs it might be useful to offer a selection of the used language at runtime. To understand how to do this one need to know @@ -1563,20 +1563,20 @@
    1. LANGUAGE - + - +
    2. LC_ALL - - - - - - + + + + + +
    3. LC_xxx, according to selected locale category - +
    4. LANG
    @@ -1594,7 +1594,7 @@ some optimization. This optimization normally prevents the calling of the dcgettext function as long as no new catalog is loaded. But if dcgettext is not called the program also cannot find the -LANGUAGE variable be changed (see section 11.2.7 Optimization of the *gettext functions). A +LANGUAGE variable be changed (see section 11.2.7 Optimization of the *gettext functions). A solution for this is very easy. Include the following code in the language switching function. @@ -1610,7 +1610,7 @@ }
- + The variable _nl_msg_cat_cntr is defined in ‘loadmsgcat.c’. You don't need to know what this is for. But it can be used to detect whether a gettext implementation is GNU gettext and not non-GNU @@ -1620,7 +1620,7 @@ -

11.6 Temporary Notes for the Programmers Chapter

+

11.6 Temporary Notes for the Programmers Chapter

NOTE: This documentation section is outdated and needs to be @@ -1630,7 +1630,7 @@ -

11.6.1 Temporary - Two Possible Implementations

+

11.6.1 Temporary - Two Possible Implementations

There are two competing methods for language independent messages: @@ -1662,7 +1662,7 @@

-

11.6.2 Temporary - About catgets

+

11.6.2 Temporary - About catgets

There have been a few discussions of late on the use of @@ -1707,7 +1707,7 @@

-

11.6.3 Temporary - Why a single implementation

+

11.6.3 Temporary - Why a single implementation

Now it seems kind of wasteful to me to have two different systems @@ -1752,7 +1752,7 @@

-

11.6.4 Temporary - Notes

+

11.6.4 Temporary - Notes

X/Open agreed very late on the standard form so that many diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_12.html gettext-0.19.7/gettext-tools/doc/gettext_12.html --- gettext-0.19.6/gettext-tools/doc/gettext_12.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_12.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - 12 The Translator's View @@ -11,11 +11,11 @@


-

12 The Translator's View

+

12 The Translator's View

-

12.1 Introduction 0

+

12.1 Introduction 0

NOTE: This documentation section is outdated and needs to be @@ -98,7 +98,7 @@

-

12.2 Introduction 1

+

12.2 Introduction 1

NOTE: This documentation section is outdated and needs to be @@ -153,7 +153,7 @@

-

12.3 Discussions

+

12.3 Discussions

NOTE: This documentation section is outdated and needs to be @@ -236,7 +236,7 @@ -

12.4 Organization

+

12.4 Organization

NOTE: This documentation section is outdated and needs to be @@ -285,7 +285,7 @@ -

12.4.1 Central Coordination

+

12.4.1 Central Coordination

I also think GNU will need sooner than it thinks, that someone set up @@ -310,7 +310,7 @@

-

12.4.2 National Teams

+

12.4.2 National Teams

I suggest we look for volunteer coordinators/editors for individual @@ -373,7 +373,7 @@ -

12.4.2.1 Sub-Cultures

+

12.4.2.1 Sub-Cultures

Taking French for example, there are a few sub-cultures around computers @@ -395,7 +395,7 @@

-

12.4.2.2 Organizational Ideas

+

12.4.2.2 Organizational Ideas

I expect the next big changes after the official release. Please note @@ -432,7 +432,7 @@ -

12.4.3 Mailing Lists

+

12.4.3 Mailing Lists

If we get any inquiries about GNU gettext, send them on to: @@ -486,7 +486,7 @@

-

12.5 Information Flow

+

12.5 Information Flow

NOTE: This documentation section is outdated and needs to be @@ -540,10 +540,10 @@

-

12.6 Translating plural forms

+

12.6 Translating plural forms

- + Suppose you are translating a PO file, and it contains an entry like this:

@@ -565,7 +565,7 @@ the text depends on a cardinal number. The general form of the message, in English, is the msgid_plural line. The msgid line is the English singular form, that is, the form for when the number is equal to 1. -More details about plural forms are explained in section 11.2.6 Additional functions for plural forms. +More details about plural forms are explained in section 11.2.6 Additional functions for plural forms.

@@ -664,7 +664,7 @@

-

12.7 Prioritizing messages: How to determine which messages to translate first

+

12.7 Prioritizing messages: How to determine which messages to translate first

A translator sometimes has only a limited amount of time per week to @@ -688,7 +688,7 @@

- + Here a more details. The GNU libintl library (but not the corresponding functions in GNU libc) supports an environment variable GETTEXT_LOG_UNTRANSLATED. The GNU libintl library will diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_13.html gettext-0.19.7/gettext-tools/doc/gettext_13.html --- gettext-0.19.6/gettext-tools/doc/gettext_13.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_13.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - 13 The Maintainer's View @@ -11,9 +11,9 @@


-

13 The Maintainer's View

+

13 The Maintainer's View

- +

@@ -53,7 +53,7 @@ -

13.1 Flat or Non-Flat Directory Structures

+

13.1 Flat or Non-Flat Directory Structures

Some free software packages are distributed as tar files which unpack @@ -86,11 +86,11 @@

-

13.2 Prerequisite Works

+

13.2 Prerequisite Works

- - - + + +

@@ -187,7 +187,7 @@

-

13.3 Invoking the gettextize Program

+

13.3 Invoking the gettextize Program

The gettextize program is an interactive tool that helps the @@ -222,7 +222,7 @@

  • It performs as many of the tasks mentioned in the next section -section 13.4 Files You Must Create or Alter as can be performed automatically. +section 13.4 Files You Must Create or Alter as can be performed automatically.
  • It removes obsolete files and idioms used for previous GNU @@ -239,8 +239,8 @@

    - - + +

     gettextize [ option... ] [ directory ]
    @@ -256,13 +256,13 @@
     
    ‘--force’
    - - + + Force replacement of files which already exist.
    ‘--intl’
    - + Install the libintl sources in a subdirectory named ‘intl/’. This libintl will be used to provide internationalization on systems that don't have GNU libintl installed. If this option is omitted, @@ -272,7 +272,7 @@
    ‘--po-dir=dir
    - + Specify a directory containing PO files. Such a directory contains the translations into various languages of a particular POT file. This option can be specified multiple times, once for each translation domain. @@ -280,14 +280,14 @@
    ‘--no-changelog’
    - + Don't update or create ChangeLog files. By default, gettextize logs all changes (file additions, modifications and removals) in a file called ‘ChangeLog’ in each affected directory.
    ‘--symlink’
    - + Make symbolic links instead of copying the needed files. This can be useful to save a few kilobytes of disk space, but it requires extra effort to create self-contained tarballs, it may disturb some mechanism @@ -298,20 +298,20 @@
    ‘--dry-run’
    - - + + Print modifications but don't perform them. All actions that gettextize would normally execute are inhibited and instead only listed on standard output.
    ‘--help’
    - + Display this help and exit.
    ‘--version’
    - + Output version information and exit.
  • @@ -417,14 +417,14 @@ entire job of adapting a package for using GNU gettext. The amount of remaining work depends on whether the package uses GNU automake or not. But in any case, the maintainer should still -read the section section 13.4 Files You Must Create or Alter after invoking gettextize. +read the section section 13.4 Files You Must Create or Alter after invoking gettextize.

    In particular, if after using ‘gettexize’, you get an error ‘AC_COMPILE_IFELSE was called before AC_GNU_SOURCE’ or ‘AC_RUN_IFELSE was called before AC_GNU_SOURCE’, you can fix it -by modifying ‘configure.ac’, as described in section 13.4.5 ‘configure.ac’ at top level. +by modifying ‘configure.ac’, as described in section 13.4.5 ‘configure.ac’ at top level.

    @@ -432,14 +432,14 @@ of the GNU build system, in the sense that it should not be invoked automatically, and not be invoked by someone who doesn't assume the responsibilities of a package maintainer. For the latter purpose, a -separate tool is provided, see section 13.6.4 Invoking the autopoint Program. +separate tool is provided, see section 13.6.4 Invoking the autopoint Program.

    -

    13.4 Files You Must Create or Alter

    +

    13.4 Files You Must Create or Alter

    - +

    @@ -454,7 +454,7 @@

    So, here comes a list of files, each one followed by a description of all alterations it needs. Many examples are taken out from the GNU -gettext 0.19.6 distribution itself, or from the GNU +gettext 0.19.7 distribution itself, or from the GNU hello distribution (http://www.gnu.org/software/hello). You may indeed refer to the source code of the GNU gettext and GNU hello packages, as they are intended to be good examples for @@ -464,9 +464,9 @@ -

    13.4.1 ‘POTFILES.in’ in ‘po/’

    +

    13.4.1 ‘POTFILES.in’ in ‘po/’

    - +

    @@ -510,9 +510,9 @@

    -

    13.4.2 ‘LINGUAS’ in ‘po/’

    +

    13.4.2 ‘LINGUAS’ in ‘po/’

    - +

    @@ -534,7 +534,7 @@ want to further restrict, at installation time, the set of installed languages, this should not be done by modifying the ‘LINGUAS’ file, but rather by using the LINGUAS environment variable -(see section 14 The Installer's and Distributor's View). +(see section 14 The Installer's and Distributor's View).

    @@ -559,9 +559,9 @@

    -

    13.4.3 ‘Makevars’ in ‘po/’

    +

    13.4.3 ‘Makevars’ in ‘po/’

    - +

    @@ -583,14 +583,14 @@

    As an alternative to the XGETTEXT_OPTIONS variables, it is also possible to specify xgettext options through the -AM_XGETTEXT_OPTION autoconf macro. See section 13.5.6 AM_XGETTEXT_OPTION in ‘po.m4’. +AM_XGETTEXT_OPTION autoconf macro. See section 13.5.6 AM_XGETTEXT_OPTION in ‘po.m4’.

    -

    13.4.4 Extending ‘Makefile’ in ‘po/’

    +

    13.4.4 Extending ‘Makefile’ in ‘po/’

    - +

    @@ -601,8 +601,8 @@

    - - + + GNU gettext comes with a ‘Rules-quot’ file, containing rules for building catalogs ‘en@quot.po’ and ‘en@boldquot.po’. The effect of ‘en@quot.po’ is that people who set their LANGUAGE @@ -627,7 +627,7 @@

    -

    13.4.5 ‘configure.ac’ at top level

    +

    13.4.5 ‘configure.ac’ at top level

    ‘configure.ac’ or ‘configure.in’ - this is the source from which @@ -638,14 +638,14 @@

    1. Declare the package and version. - + This is done by a set of lines like these:
       PACKAGE=gettext
      -VERSION=0.19.6
      +VERSION=0.19.7
       AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
       AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
       AC_SUBST(PACKAGE)
      @@ -656,13 +656,13 @@
       
       
       
      -AM_INIT_AUTOMAKE(gettext, 0.19.6)
      +AM_INIT_AUTOMAKE(gettext, 0.19.7)
       
      Of course, you replace ‘gettext’ with the name of your package, -and ‘0.19.6’ by its version numbers, exactly as they +and ‘0.19.7’ by its version numbers, exactly as they should appear in the packaged tar file name of your distribution -(‘gettext-0.19.6.tar.gz’, here). +(‘gettext-0.19.7.tar.gz’, here).
    2. Check for internationalization support. @@ -735,7 +735,7 @@

      -

      13.4.6 ‘config.guess’, ‘config.sub’ at top level

      +

      13.4.6 ‘config.guess’, ‘config.sub’ at top level

      If you haven't suppressed the ‘intl/’ subdirectory, @@ -776,9 +776,9 @@ -

      13.4.7 ‘mkinstalldirs’ at top level

      +

      13.4.7 ‘mkinstalldirs’ at top level

      - +

      @@ -790,9 +790,9 @@

      -

      13.4.8 ‘aclocal.m4’ at top level

      +

      13.4.8 ‘aclocal.m4’ at top level

      - +

      @@ -870,9 +870,9 @@

      -

      13.4.9 ‘acconfig.h’ at top level

      +

      13.4.9 ‘acconfig.h’ at top level

      - +

      @@ -886,9 +886,9 @@

      -

      13.4.10 ‘config.h.in’ at top level

      +

      13.4.10 ‘config.h.in’ at top level

      - +

      @@ -935,7 +935,7 @@ -

      13.4.11 ‘Makefile.in’ at top level

      +

      13.4.11 ‘Makefile.in’ at top level

      Here are a few modifications you need to make to your main, top-level @@ -1022,7 +1022,7 @@

      -

      13.4.12 ‘Makefile.in’ in ‘src/’

      +

      13.4.12 ‘Makefile.in’ in ‘src/’

      Some of the modifications made in the main ‘Makefile.in’ will @@ -1224,11 +1224,11 @@ -

      13.4.13 ‘gettext.h’ in ‘lib/’

      +

      13.4.13 ‘gettext.h’ in ‘lib/’

      - - - + + +

      @@ -1265,7 +1265,7 @@

      - + ‘gettext.h’ is a convenience header file for conditional use of ‘<libintl.h>’, depending on the ENABLE_NLS macro. If ENABLE_NLS is set, it includes ‘<libintl.h>’; otherwise it @@ -1304,9 +1304,9 @@

      -

      13.5 Autoconf macros for use in ‘configure.ac’

      +

      13.5 Autoconf macros for use in ‘configure.ac’

      - +

      @@ -1319,10 +1319,10 @@ -

      13.5.1 AM_GNU_GETTEXT in ‘gettext.m4’

      +

      13.5.1 AM_GNU_GETTEXT in ‘gettext.m4’

      - + The AM_GNU_GETTEXT macro tests for the presence of the GNU gettext function family in either the C library or a separate libintl library (shared or static libraries are both supported) or in the package's @@ -1392,7 +1392,7 @@

    @@ -1154,16 +1154,16 @@
    ‘--help’
    - - + + Display this help and exit.
    ‘-V’
    ‘--version’
    - - + + Output version information and exit.
    @@ -1193,17 +1193,17 @@

    -

    15.5.2.6 Invoking the eval_gettext function

    +

    15.5.2.6 Invoking the eval_gettext function

    - +

     eval_gettext msgid
     

    - + This function outputs the native language translation of a textual message, performing dollar-substitution on the result. Note that only shell variables mentioned in msgid will be dollar-substituted in the result. @@ -1211,17 +1211,17 @@

    -

    15.5.2.7 Invoking the eval_ngettext function

    +

    15.5.2.7 Invoking the eval_ngettext function

    - +

     eval_ngettext msgid msgid-plural count
     

    - + This function outputs the native language translation of a textual message whose grammatical form depends on a number, performing dollar-substitution on the result. Note that only shell variables mentioned in msgid or @@ -1230,9 +1230,9 @@

    -

    15.5.3 bash - Bourne-Again Shell Script

    +

    15.5.3 bash - Bourne-Again Shell Script

    - +

    @@ -1281,9 +1281,9 @@

    -

    15.5.4 Python

    +

    15.5.4 Python

    - +

    @@ -1395,11 +1395,11 @@ -

    15.5.5 GNU clisp - Common Lisp

    +

    15.5.5 GNU clisp - Common Lisp

    - - - + + +

    @@ -1467,9 +1467,9 @@

    -

    15.5.6 GNU clisp C sources

    +

    15.5.6 GNU clisp C sources

    - +

    @@ -1535,9 +1535,9 @@ -

    15.5.7 Emacs Lisp

    +

    15.5.7 Emacs Lisp

    - +

    @@ -1601,9 +1601,9 @@ -

    15.5.8 librep

    +

    15.5.8 librep

    - +

    @@ -1671,10 +1671,10 @@

    -

    15.5.9 GNU guile - Scheme

    +

    15.5.9 GNU guile - Scheme

    - - + +

    @@ -1742,9 +1742,9 @@

    -

    15.5.10 GNU Smalltalk

    +

    15.5.10 GNU Smalltalk

    - +

    @@ -1815,9 +1815,9 @@

    -

    15.5.11 Java

    +

    15.5.11 Java

    - +

    @@ -1951,7 +1951,7 @@ handling and the pgettext and npgettext for strings constraint to a particular context. - + To use this API, one needs the libintl.jar file which is part of the GNU gettext package and distributed under the LGPL. @@ -2058,9 +2058,9 @@

    -

    15.5.12 C#

    +

    15.5.12 C#

    - +

    @@ -2299,7 +2299,7 @@ specific to a particular context, with plural handling, like the npgettext function in C. - + To use this API, one needs the GNU.Gettext.dll file which is part of the GNU gettext package and distributed under the LGPL. @@ -2384,10 +2384,10 @@

    -

    15.5.13 GNU awk

    +

    15.5.13 GNU awk

    - - + +

    @@ -2459,11 +2459,11 @@

    -

    15.5.14 Pascal - Free Pascal Compiler

    +

    15.5.14 Pascal - Free Pascal Compiler

    - - - + + +

    @@ -2540,9 +2540,9 @@

    -

    15.5.15 wxWidgets library

    +

    15.5.15 wxWidgets library

    - +

    @@ -2608,10 +2608,10 @@ -

    15.5.16 YCP - YaST2 scripting language

    +

    15.5.16 YCP - YaST2 scripting language

    - - + +

    @@ -2679,10 +2679,10 @@

    -

    15.5.17 Tcl - Tk's scripting language

    +

    15.5.17 Tcl - Tk's scripting language

    - - + +

    @@ -2765,9 +2765,9 @@

    -

    15.5.18 Perl

    +

    15.5.18 Perl

    - +

    @@ -2880,7 +2880,7 @@

    - +

    @@ -2895,7 +2895,7 @@ -

    15.5.18.1 General Problems Parsing Perl Code

    +

    15.5.18.1 General Problems Parsing Perl Code

    It is often heard that only Perl can parse Perl. This is not true. @@ -3100,9 +3100,9 @@

    -

    15.5.18.2 Which keywords will xgettext look for?

    +

    15.5.18.2 Which keywords will xgettext look for?

    - +

    @@ -3149,9 +3149,9 @@ -

    15.5.18.3 How to Extract Hash Keys

    +

    15.5.18.3 How to Extract Hash Keys

    - +

    @@ -3204,9 +3204,9 @@

    -

    15.5.18.4 What are Strings And Quote-like Expressions?

    +

    15.5.18.4 What are Strings And Quote-like Expressions?

    - +

    @@ -3304,9 +3304,9 @@ -

    15.5.18.5 Invalid Uses Of String Interpolation

    +

    15.5.18.5 Invalid Uses Of String Interpolation

    - +

    @@ -3442,9 +3442,9 @@

    -

    15.5.18.6 Valid Uses Of String Interpolation

    +

    15.5.18.6 Valid Uses Of String Interpolation

    - +

    @@ -3530,9 +3530,9 @@ -

    15.5.18.7 When To Use Parentheses

    +

    15.5.18.7 When To Use Parentheses

    - +

    @@ -3576,9 +3576,9 @@ -

    15.5.18.8 How To Grok with Long Lines

    +

    15.5.18.8 How To Grok with Long Lines

    - +

    @@ -3650,9 +3650,9 @@

    -

    15.5.18.9 Bugs, Pitfalls, And Things That Do Not Work

    +

    15.5.18.9 Bugs, Pitfalls, And Things That Do Not Work

    - +

    @@ -3802,9 +3802,9 @@

    -

    15.5.19 PHP Hypertext Preprocessor

    +

    15.5.19 PHP Hypertext Preprocessor

    - +

    @@ -3873,9 +3873,9 @@

    -

    15.5.20 Pike

    +

    15.5.20 Pike

    - +

    @@ -3939,9 +3939,9 @@ -

    15.5.21 GNU Compiler Collection sources

    +

    15.5.21 GNU Compiler Collection sources

    - +

    @@ -4006,7 +4006,7 @@ -

    15.5.22 Lua

    +

    15.5.22 Lua

    @@ -4085,7 +4085,7 @@ -

    15.5.23 JavaScript

    +

    15.5.23 JavaScript

    @@ -4156,7 +4156,7 @@ -

    15.5.24 Vala

    +

    15.5.24 Vala

    @@ -4227,7 +4227,7 @@ -

    15.6 Internationalizable Data

    +

    15.6 Internationalizable Data

    Here is a list of other data formats which can be internationalized @@ -4237,7 +4237,7 @@ -

    15.6.1 POT - Portable Object Template

    +

    15.6.1 POT - Portable Object Template

    @@ -4256,9 +4256,9 @@ -

    15.6.2 Resource String Table

    +

    15.6.2 Resource String Table

    - +

    @@ -4278,7 +4278,7 @@ -

    15.6.3 Glade - GNOME user interface description

    +

    15.6.3 Glade - GNOME user interface description

    @@ -4297,7 +4297,7 @@ -

    15.6.4 GSettings - GNOME user configuration schema

    +

    15.6.4 GSettings - GNOME user configuration schema

    @@ -4316,7 +4316,7 @@ -

    15.6.5 AppData - freedesktop.org application description

    +

    15.6.5 AppData - freedesktop.org application description

    @@ -4333,6 +4333,207 @@ xgettext, intltool-extract, itstool
    + + +

    15.6.6 Preparing Rules for XML Internationalization

    +

    + + +

    +

    +Marking translatable strings in an XML file is done through a separate +"rule" file, making use of the Internationalization Tag Set standard +(ITS, http://www.w3.org/TR/its20/). The currently supported ITS +data categories are: ‘Translate’, ‘Localization Note’, +‘Elements Within Text’, and ‘Preserve Space’. In addition to +them, xgettext also recognizes the following extended data +categories: + +

    +
    + +
    ‘Context’ +
    +This data category associates msgctxt to the extracted text. In +the global rule, the contextRule element contains the following: + + +
      +
    • + +A required selector attribute. It contains an absolute selector +that selects the nodes to which this rule applies. + +
    • + +A required contextPointer attribute that contains a relative +selector pointing to a node that holds the msgctxt value. + +
    • + +An optional textPointer attribute that contains a relative +selector pointing to a node that holds the msgid value. +
    + +
    ‘Escape Special Characters’ +
    +This data category indicates whether the special XML characters +(<, >, &, ") are escaped with entity +reference. In the global rule, the escapeRule element contains +the following: + + +
      +
    • + +A required selector attribute. It contains an absolute selector +that selects the nodes to which this rule applies. + +
    • + +A required escape attribute with the value yes or no. +
    + +
    ‘Extended Preserve Space’ +
    +This data category extends the standard ‘Preserve Space’ data +category with the additional value ‘trim’. The value means to +remove the leading and trailing whitespaces of the content, but not to +normalize whitespaces in the middle. In the global rule, the +preserveSpaceRule element contains the following: + + +
      +
    • + +A required selector attribute. It contains an absolute selector +that selects the nodes to which this rule applies. + +
    • + +A required space attribute with the value default, +preserve, or trim. +
    + +
    + +

    +All those extended data categories can only be expressed with global +rules, and the rule elements have to have the +https://www.gnu.org/s/gettext/ns/its/extensions/1.0 namespace. + +

    +

    +Given the following XML document in a file ‘messages.xml’: + +

    + +
    +<?xml version="1.0"?>
    +<messages>
    +  <message>
    +    <p>A translatable string</p>
    +  </message>
    +  <message>
    +    <p translatable="no">A non-translatable string</p>
    +  </message>
    +</messages>
    +
    + +

    +To extract the first text content ("A translatable string"), but not the +second ("A non-translatable string"), the following ITS rules can be used: + +

    + +
    +<?xml version="1.0"?>
    +<its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
    +  <its:translateRule selector="/messages" translate="no"/>
    +  <its:translateRule selector="//message/p" translate="yes"/>
    +
    +  <!-- If 'p' has an attribute 'translatable' with the value 'no', then
    +       the content is not translatable.  -->
    +  <its:translateRule selector="//message/p[@translatable = 'no']"
    +    translate="no"/>
    +</its:rules>
    +
    + +

    +‘xgettext’ needs another file called "locating rule" to associate +an ITS rule with an XML file. If the above ITS file is saved as +‘messages.its’, the locating rule would look like: + +

    + +
    +<?xml version="1.0"?>
    +<locatingRules>
    +  <locatingRule name="Messages" pattern="*.xml">
    +    <documentRule localName="messages" target="messages.its"/>
    +  </locatingRule>
    +  <locatingRule name="Messages" pattern="*.msg" target="messages.its"/>
    +</locatingRules>
    +
    + +

    +The locatingRule element must have a pattern attribute, +which denotes either a literal file name or a wildcard pattern of the +XML file. The locatingRule element can have child +documentRule element, which adds checks on the content of the XML +file. + +

    +

    +The first rule matches any file with the ‘.xml’ file extension, but +it only applies to XML files whose root element is ‘<messages>’. + +

    +

    +The second rule indicates that the same ITS rule file are also +applicable to any file with the ‘.msg’ file extension. The +optional name attribute of locatingRule allows to choose +rules by name, typically with xgettext's -L option. + +

    +

    +The associated ITS rule file is indicated by the target attribute +of locatingRule or documentRule. If it is specified in a +documentRule element, the parent locatingRule shouldn't +have the target attribute. + +

    +

    +Locating rule files must have the ‘.loc’ file extension. Both ITS +rule files and locating rule files must be installed in the +‘$prefix/share/gettext/its’ directory. Once those files are +properly installed, xgettext can extract translatable strings +from the matching XML files. + +

    + + +

    15.6.6.1 Two Use-cases of Translated Strings in XML

    + +

    +For XML, there are two use-cases of translated strings. One is the case +where the translated strings are directly consumed by programs, and the +other is the case where the translated strings are merged back to the +original XML document. In the former case, special characters in the +extracted strings shouldn't be escaped, while they should in the latter +case. To control wheter to escape special characters, the ‘Escape +Special Characters’ data category can be used. + +

    +

    +To merge the translations, the ‘msgfmt’ program can be used with +the option --xml. See section 10.1 Invoking the msgfmt Program, for more details +about how one calls the ‘msgfmt’ program. ‘msgfmt’'s +--xml option doesn't perform character escaping, so translated +strings can have arbitrary XML constructs, such as elements for markup. + +

    +


    Go to the first, previous, next, last section, table of contents. diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_16.html gettext-0.19.7/gettext-tools/doc/gettext_16.html --- gettext-0.19.6/gettext-tools/doc/gettext_16.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_16.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - 16 Concluding Remarks @@ -11,7 +11,7 @@


    -

    16 Concluding Remarks

    +

    16 Concluding Remarks

    We would like to conclude this GNU gettext manual by presenting @@ -23,9 +23,9 @@ -

    16.1 History of GNU gettext

    +

    16.1 History of GNU gettext

    - +

    @@ -125,10 +125,10 @@

    -

    16.2 Related Readings

    +

    16.2 Related Readings

    - - + +

    diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_17.html gettext-0.19.7/gettext-tools/doc/gettext_17.html --- gettext-0.19.6/gettext-tools/doc/gettext_17.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_17.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - A Language Codes @@ -11,10 +11,10 @@


    -

    A Language Codes

    +

    A Language Codes

    - - + +

    @@ -27,7 +27,7 @@ -

    A.1 Usual Language Codes

    +

    A.1 Usual Language Codes

    For the commonly used languages, the ISO 639-1 standard defines two-letter @@ -595,7 +595,7 @@ -

    A.2 Rare Language Codes

    +

    A.2 Rare Language Codes

    For rarely used languages, the ISO 639-2 standard defines three-letter diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_18.html gettext-0.19.7/gettext-tools/doc/gettext_18.html --- gettext-0.19.6/gettext-tools/doc/gettext_18.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_18.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - B Country Codes @@ -11,10 +11,10 @@


    -

    B Country Codes

    +

    B Country Codes

    - - + +

    diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_19.html gettext-0.19.7/gettext-tools/doc/gettext_19.html --- gettext-0.19.6/gettext-tools/doc/gettext_19.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_19.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - C Licenses @@ -11,9 +11,9 @@


    -

    C Licenses

    +

    C Licenses

    - +

    @@ -27,13 +27,13 @@ The libintl and libasprintf libraries are covered by the GNU Lesser General Public License (LGPL). -A copy of the license is included in section C.2 GNU LESSER GENERAL PUBLIC LICENSE. +A copy of the license is included in section C.2 GNU LESSER GENERAL PUBLIC LICENSE.

  • The executable programs of this package and the libgettextpo library are covered by the GNU General Public License (GPL). -A copy of the license is included in section C.1 GNU GENERAL PUBLIC LICENSE. +A copy of the license is included in section C.1 GNU GENERAL PUBLIC LICENSE.
  • @@ -47,21 +47,21 @@ License, or (at your option) any later version published by the Free Software Foundation (FSF); with no Invariant Sections, with no Front-Cover Text, and with no Back-Cover Texts. -A copy of the license is included in section C.3 GNU Free Documentation License. +A copy of the license is included in section C.3 GNU Free Documentation License.
    This manual is covered by the GNU GPL. You can redistribute it and/or modify it under the terms of the GNU General Public License (GPL), either version 2 of the License, or (at your option) any later version published by the Free Software Foundation (FSF). -A copy of the license is included in section C.1 GNU GENERAL PUBLIC LICENSE. +A copy of the license is included in section C.1 GNU GENERAL PUBLIC LICENSE. -

    C.1 GNU GENERAL PUBLIC LICENSE

    +

    C.1 GNU GENERAL PUBLIC LICENSE

    - - + + Version 2, June 1991

    @@ -492,10 +492,10 @@ Public License instead of this License. -

    C.2 GNU LESSER GENERAL PUBLIC LICENSE

    +

    C.2 GNU LESSER GENERAL PUBLIC LICENSE

    - - + + Version 2.1, February 1999

    @@ -1122,10 +1122,10 @@ That's all there is to it! -

    C.3 GNU Free Documentation License

    +

    C.3 GNU Free Documentation License

    - - + + Version 1.2, November 2002

    diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_1.html gettext-0.19.7/gettext-tools/doc/gettext_1.html --- gettext-0.19.6/gettext-tools/doc/gettext_1.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_1.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - 1 Introduction @@ -174,7 +174,7 @@ other English specific habits, and connected to generic ways of doing the same, instead. Program developers may use various techniques to internationalize their programs. Some of these have been standardized. -GNU gettext offers one of these standards. See section 11 The Programmer's View. +GNU gettext offers one of these standards. See section 11 The Programmer's View.

    @@ -559,7 +559,7 @@ See section 5.1 Invoking the xgettext Program, for more details about how one calls the xgettext program. If you are really lazy, you might be interested at working a lot more right away, and preparing the -whole distribution setup (see section 13 The Maintainer's View). By doing so, you +whole distribution setup (see section 13 The Maintainer's View). By doing so, you spare yourself typing the xgettext command, as make should now generate the proper things automatically for you! @@ -576,7 +576,7 @@ itself is a whole matter, still exclusively meant for humans, and whose complexity far overwhelms the level of this manual. Nevertheless, a few hints are given in some other chapter of this -manual (see section 12 The Translator's View). You will also find there indications +manual (see section 12 The Translator's View). You will also find there indications about how to contact translating teams, or becoming part of them, for sharing your translating concerns with others who target the same native language. @@ -675,7 +675,7 @@ Once the PO file is complete and dependable, the msgfmt program is used for turning the PO file into a machine-oriented format, which may yield efficient retrieval of translations by the programs of the -package, whenever needed at runtime (see section 10.3 The Format of GNU MO Files). See section 10.1 Invoking the msgfmt Program, for more information about all modes of execution +package, whenever needed at runtime (see section 10.3 The Format of GNU MO Files). See section 10.1 Invoking the msgfmt Program, for more information about all modes of execution for the msgfmt program.

    diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_20.html gettext-0.19.7/gettext-tools/doc/gettext_20.html --- gettext-0.19.6/gettext-tools/doc/gettext_20.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_20.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - Program Index @@ -11,7 +11,7 @@


    -

    Program Index

    +

    Program Index

    Jump to: @@ -35,49 +35,49 @@

    a

    -
  • autopoint +
  • autopoint
  • b

    -
  • boldquot +
  • boldquot
  • e

    -
  • envsubst +
  • envsubst
  • g

    -
  • gettext, gettext -
  • gettextize +
  • gettext, gettext +
  • gettextize
  • m

    -
  • msgattrib -
  • msgcat -
  • msgcmp -
  • msgcomm -
  • msgconv -
  • msgen -
  • msgexec -
  • msgfilter -
  • msgfmt -
  • msggrep -
  • msginit -
  • msgmerge -
  • msgunfmt -
  • msguniq +
  • msgattrib +
  • msgcat +
  • msgcmp +
  • msgcomm +
  • msgconv +
  • msgen +
  • msgexec +
  • msgfilter +
  • msgfmt +
  • msggrep +
  • msginit +
  • msgmerge +
  • msgunfmt +
  • msguniq
  • n

    -
  • ngettext, ngettext +
  • ngettext, ngettext
  • q

    -
  • quot +
  • quot
  • r

    -
  • recode-sr-latin +
  • recode-sr-latin
  • x

    diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_21.html gettext-0.19.7/gettext-tools/doc/gettext_21.html --- gettext-0.19.6/gettext-tools/doc/gettext_21.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_21.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - Option Index @@ -11,7 +11,7 @@


    -

    Option Index

    +

    Option Index

    Jump to: @@ -20,598 +20,603 @@

    -

  • --add-comments, xgettext option -
  • --add-location, msgattrib option -
  • --add-location, msgcat option -
  • --add-location, msgcomm option -
  • --add-location, msgconv option -
  • --add-location, msgen option -
  • --add-location, msgfilter option -
  • --add-location, msggrep option -
  • --add-location, msgmerge option -
  • --add-location, msguniq option +
  • --add-location, msgattrib option +
  • --add-location, msgcat option +
  • --add-location, msgcomm option +
  • --add-location, msgconv option +
  • --add-location, msgen option +
  • --add-location, msgfilter option +
  • --add-location, msggrep option +
  • --add-location, msgmerge option +
  • --add-location, msguniq option
  • --add-location, xgettext option -
  • --alignment, msgfmt option -
  • --backup, msgmerge option +
  • --alignment, msgfmt option +
  • --backup, msgmerge option
  • --boost, xgettext option
  • --c++, xgettext option -
  • --check, msgfmt option +
  • --check, msgfmt option
  • --check, xgettext option -
  • --check-accelerators, msgfmt option -
  • --check-compatibility, msgfmt option -
  • --check-domain, msgfmt option -
  • --check-format, msgfmt option -
  • --check-header, msgfmt option -
  • --clear-fuzzy, msgattrib option -
  • --clear-obsolete, msgattrib option -
  • --clear-previous, msgattrib option -
  • --color, msgattrib option -
  • --color, msgcat option, --color, msgcat option -
  • --color, msgcomm option -
  • --color, msgconv option -
  • --color, msgen option -
  • --color, msgfilter option -
  • --color, msggrep option -
  • --color, msginit option -
  • --color, msgmerge option -
  • --color, msgunfmt option -
  • --color, msguniq option +
  • --check-accelerators, msgfmt option +
  • --check-compatibility, msgfmt option +
  • --check-domain, msgfmt option +
  • --check-format, msgfmt option +
  • --check-header, msgfmt option +
  • --clear-fuzzy, msgattrib option +
  • --clear-obsolete, msgattrib option +
  • --clear-previous, msgattrib option +
  • --color, msgattrib option +
  • --color, msgcat option, --color, msgcat option +
  • --color, msgcomm option +
  • --color, msgconv option +
  • --color, msgen option +
  • --color, msgfilter option +
  • --color, msggrep option +
  • --color, msginit option +
  • --color, msgmerge option +
  • --color, msgunfmt option +
  • --color, msguniq option
  • --color, xgettext option -
  • --comment, msggrep option -
  • --compendium, msgmerge option -
  • --copyright-holder, xgettext option -
  • --csharp, msgfmt option -
  • --csharp, msgunfmt option -
  • --csharp-resources, msgfmt option -
  • --csharp-resources, msgunfmt option +
  • --comment, msggrep option +
  • --compendium, msgmerge option +
  • --copyright-holder, xgettext option +
  • --csharp, msgfmt option +
  • --csharp, msgunfmt option +
  • --csharp-resources, msgfmt option +
  • --csharp-resources, msgunfmt option
  • --debug, xgettext option
  • --default-domain, xgettext option -
  • --desktop, msgfmt option -
  • --directory, msgattrib option -
  • --directory, msgcat option -
  • --directory, msgcmp option -
  • --directory, msgcomm option -
  • --directory, msgconv option -
  • --directory, msgen option -
  • --directory, msgexec option -
  • --directory, msgfilter option -
  • --directory, msgfmt option -
  • --directory, msggrep option -
  • --directory, msgmerge option -
  • --directory, msguniq option +
  • --desktop, msgfmt option +
  • --directory, msgattrib option +
  • --directory, msgcat option +
  • --directory, msgcmp option +
  • --directory, msgcomm option +
  • --directory, msgconv option +
  • --directory, msgen option +
  • --directory, msgexec option +
  • --directory, msgfilter option +
  • --directory, msgfmt option +
  • --directory, msggrep option +
  • --directory, msgmerge option +
  • --directory, msguniq option
  • --directory, xgettext option -
  • --domain, gettext option -
  • --domain, msggrep option -
  • --domain, ngettext option -
  • --dry-run, autopoint option -
  • --dry-run, gettextize option -
  • --empty, msgattrib option -
  • --endianness, msgfmt option +
  • --domain, gettext option +
  • --domain, msggrep option +
  • --domain, ngettext option +
  • --dry-run, autopoint option +
  • --dry-run, gettextize option +
  • --empty, msgattrib option +
  • --endianness, msgfmt option
  • --exclude-file, xgettext option -
  • --expression, msgfilter option -
  • --extended-regexp, msggrep option +
  • --expression, msgfilter option +
  • --extended-regexp, msggrep option
  • --extract-all, xgettext option -
  • --extracted-comment, msggrep option -
  • --file, msgfilter option -
  • --file, msggrep option -
  • --files-from, msgcat option -
  • --files-from, msgcomm option +
  • --extracted-comment, msggrep option +
  • --file, msgfilter option +
  • --file, msggrep option +
  • --files-from, msgcat option +
  • --files-from, msgcomm option
  • --files-from, xgettext option -
  • --fixed-strings, msggrep option +
  • --fixed-strings, msggrep option
  • --flag, xgettext option -
  • --force, autopoint option -
  • --force, gettextize option -
  • --force-po, msgattrib option -
  • --force-po, msgcat option -
  • --force-po, msgcomm option -
  • --force-po, msgconv option -
  • --force-po, msgen option -
  • --force-po, msgfilter option -
  • --force-po, msggrep option -
  • --force-po, msgmerge option -
  • --force-po, msgunfmt option -
  • --force-po, msguniq option +
  • --force, autopoint option +
  • --force, gettextize option +
  • --force-po, msgattrib option +
  • --force-po, msgcat option +
  • --force-po, msgcomm option +
  • --force-po, msgconv option +
  • --force-po, msgen option +
  • --force-po, msgfilter option +
  • --force-po, msggrep option +
  • --force-po, msgmerge option +
  • --force-po, msgunfmt option +
  • --force-po, msguniq option
  • --force-po, xgettext option -
  • --foreign-user, xgettext option +
  • --foreign-user, xgettext option
  • --from-code, xgettext option -
  • --fuzzy, msgattrib option -
  • --help, autopoint option -
  • --help, envsubst option -
  • --help, gettext option -
  • --help, gettextize option -
  • --help, msgattrib option -
  • --help, msgcat option -
  • --help, msgcmp option -
  • --help, msgcomm option -
  • --help, msgconv option -
  • --help, msgen option -
  • --help, msgexec option -
  • --help, msgfilter option -
  • --help, msgfmt option -
  • --help, msggrep option -
  • --help, msginit option -
  • --help, msgmerge option -
  • --help, msgunfmt option -
  • --help, msguniq option -
  • --help, ngettext option -
  • --help, xgettext option -
  • --ignore-case, msggrep option -
  • --ignore-file, msgattrib option -
  • --indent, msgattrib option -
  • --indent, msgcat option -
  • --indent, msgcomm option -
  • --indent, msgconv option -
  • --indent, msgen option -
  • --indent, msgfilter option -
  • --indent, msggrep option -
  • --indent, msgmerge option -
  • --indent, msgunfmt option -
  • --indent, msguniq option +
  • --fuzzy, msgattrib option +
  • --help, autopoint option +
  • --help, envsubst option +
  • --help, gettext option +
  • --help, gettextize option +
  • --help, msgattrib option +
  • --help, msgcat option +
  • --help, msgcmp option +
  • --help, msgcomm option +
  • --help, msgconv option +
  • --help, msgen option +
  • --help, msgexec option +
  • --help, msgfilter option +
  • --help, msgfmt option +
  • --help, msggrep option +
  • --help, msginit option +
  • --help, msgmerge option +
  • --help, msgunfmt option +
  • --help, msguniq option +
  • --help, ngettext option +
  • --help, xgettext option +
  • --ignore-case, msggrep option +
  • --ignore-file, msgattrib option +
  • --indent, msgattrib option +
  • --indent, msgcat option +
  • --indent, msgcomm option +
  • --indent, msgconv option +
  • --indent, msgen option +
  • --indent, msgfilter option +
  • --indent, msggrep option +
  • --indent, msgmerge option +
  • --indent, msgunfmt option +
  • --indent, msguniq option
  • --indent, xgettext option -
  • --input, msgexec option -
  • --input, msgfilter option -
  • --input, msginit option -
  • --intl, gettextize option -
  • --invert-match, msggrep option -
  • --java, msgfmt option -
  • --java, msgunfmt option -
  • --java2, msgfmt option +
  • --input, msgexec option +
  • --input, msgfilter option +
  • --input, msginit option +
  • --intl, gettextize option +
  • --invert-match, msggrep option +
  • --its, xgettext option +
  • --itstool, xgettext option +
  • --java, msgfmt option +
  • --java, msgunfmt option +
  • --java2, msgfmt option
  • --join-existing, xgettext option
  • --kde, xgettext option -
  • --keep-header, msgfilter option -
  • --keyword, msgfmt option +
  • --keep-header, msgfilter option +
  • --keyword, msgfmt option
  • --keyword, xgettext option -
  • --lang, msgcat option -
  • --lang, msgen option -
  • --lang, msgmerge option +
  • --lang, msgcat option +
  • --lang, msgen option +
  • --lang, msgmerge option +
  • --language, msgfmt option
  • --language, xgettext option -
  • --less-than, msgcat option -
  • --less-than, msgcomm option -
  • --locale, msgfmt option, --locale, msgfmt option, --locale, msgfmt option, --locale, msgfmt option -
  • --locale, msginit option -
  • --locale, msgunfmt option, --locale, msgunfmt option, --locale, msgunfmt option -
  • --location, msggrep option -
  • --more-than, msgcat option -
  • --more-than, msgcomm option -
  • --msgctxt, msggrep option -
  • --msgid, msggrep option -
  • --msgid-bugs-address, xgettext option -
  • --msgstr, msggrep option -
  • --msgstr-prefix, xgettext option -
  • --msgstr-suffix, xgettext option -
  • --multi-domain, msgcmp option -
  • --multi-domain, msgmerge option -
  • --newline, msgfilter option, --newline, msgfilter option -
  • --no-changelog, gettextize option -
  • --no-fuzzy, msgattrib option -
  • --no-fuzzy-matching, msgcmp option -
  • --no-fuzzy-matching, msgmerge option -
  • --no-hash, msgfmt option -
  • --no-location, msgattrib option -
  • --no-location, msgcat option -
  • --no-location, msgcomm option -
  • --no-location, msgconv option -
  • --no-location, msgen option -
  • --no-location, msgfilter option -
  • --no-location, msggrep option -
  • --no-location, msgmerge option -
  • --no-location, msguniq option +
  • --less-than, msgcat option +
  • --less-than, msgcomm option +
  • --locale, msgfmt option, --locale, msgfmt option, --locale, msgfmt option, --locale, msgfmt option, --locale, msgfmt option +
  • --locale, msginit option +
  • --locale, msgunfmt option, --locale, msgunfmt option, --locale, msgunfmt option +
  • --location, msggrep option +
  • --more-than, msgcat option +
  • --more-than, msgcomm option +
  • --msgctxt, msggrep option +
  • --msgid, msggrep option +
  • --msgid-bugs-address, xgettext option +
  • --msgstr, msggrep option +
  • --msgstr-prefix, xgettext option +
  • --msgstr-suffix, xgettext option +
  • --multi-domain, msgcmp option +
  • --multi-domain, msgmerge option +
  • --newline, msgfilter option, --newline, msgfilter option +
  • --no-changelog, gettextize option +
  • --no-fuzzy, msgattrib option +
  • --no-fuzzy-matching, msgcmp option +
  • --no-fuzzy-matching, msgmerge option +
  • --no-hash, msgfmt option +
  • --no-location, msgattrib option +
  • --no-location, msgcat option +
  • --no-location, msgcomm option +
  • --no-location, msgconv option +
  • --no-location, msgen option +
  • --no-location, msgfilter option +
  • --no-location, msggrep option +
  • --no-location, msgmerge option +
  • --no-location, msguniq option
  • --no-location, xgettext option -
  • --no-obsolete, msgattrib option -
  • --no-translator, msginit option -
  • --no-wrap, msgattrib option -
  • --no-wrap, msgcat option -
  • --no-wrap, msgcomm option -
  • --no-wrap, msgconv option -
  • --no-wrap, msgen option -
  • --no-wrap, msgfilter option -
  • --no-wrap, msggrep option -
  • --no-wrap, msginit option -
  • --no-wrap, msgmerge option -
  • --no-wrap, msgunfmt option -
  • --no-wrap, msguniq option -
  • --no-wrap, xgettext option -
  • --obsolete, msgattrib option -
  • --omit-header, msgcomm option -
  • --omit-header, xgettext option -
  • --only-file, msgattrib option -
  • --only-fuzzy, msgattrib option -
  • --only-obsolete, msgattrib option +
  • --no-obsolete, msgattrib option +
  • --no-translator, msginit option +
  • --no-wrap, msgattrib option +
  • --no-wrap, msgcat option +
  • --no-wrap, msgcomm option +
  • --no-wrap, msgconv option +
  • --no-wrap, msgen option +
  • --no-wrap, msgfilter option +
  • --no-wrap, msggrep option +
  • --no-wrap, msginit option +
  • --no-wrap, msgmerge option +
  • --no-wrap, msgunfmt option +
  • --no-wrap, msguniq option +
  • --no-wrap, xgettext option +
  • --obsolete, msgattrib option +
  • --omit-header, msgcomm option +
  • --omit-header, xgettext option +
  • --only-file, msgattrib option +
  • --only-fuzzy, msgattrib option +
  • --only-obsolete, msgattrib option
  • --output, xgettext option
  • --output-dir, xgettext option -
  • --output-file, msgattrib option -
  • --output-file, msgcat option -
  • --output-file, msgcomm option -
  • --output-file, msgconv option -
  • --output-file, msgen option -
  • --output-file, msgfilter option -
  • --output-file, msgfmt option -
  • --output-file, msggrep option -
  • --output-file, msginit option -
  • --output-file, msgmerge option -
  • --output-file, msgunfmt option -
  • --output-file, msguniq option -
  • --package-name, xgettext option -
  • --package-version, xgettext option -
  • --po-dir, gettextize option -
  • --previous, msgattrib option -
  • --previous, msgmerge option -
  • --properties-input, msgattrib option -
  • --properties-input, msgcat option -
  • --properties-input, msgcmp option -
  • --properties-input, msgcomm option -
  • --properties-input, msgconv option -
  • --properties-input, msgen option -
  • --properties-input, msgexec option -
  • --properties-input, msgfilter option -
  • --properties-input, msgfmt option -
  • --properties-input, msggrep option -
  • --properties-input, msginit option -
  • --properties-input, msgmerge option -
  • --properties-input, msguniq option -
  • --properties-output, msgattrib option -
  • --properties-output, msgcat option -
  • --properties-output, msgcomm option -
  • --properties-output, msgconv option -
  • --properties-output, msgen option -
  • --properties-output, msgfilter option -
  • --properties-output, msggrep option -
  • --properties-output, msginit option -
  • --properties-output, msgmerge option -
  • --properties-output, msgunfmt option -
  • --properties-output, msguniq option +
  • --output-file, msgattrib option +
  • --output-file, msgcat option +
  • --output-file, msgcomm option +
  • --output-file, msgconv option +
  • --output-file, msgen option +
  • --output-file, msgfilter option +
  • --output-file, msgfmt option +
  • --output-file, msggrep option +
  • --output-file, msginit option +
  • --output-file, msgmerge option +
  • --output-file, msgunfmt option +
  • --output-file, msguniq option +
  • --package-name, xgettext option +
  • --package-version, xgettext option +
  • --po-dir, gettextize option +
  • --previous, msgattrib option +
  • --previous, msgmerge option +
  • --properties-input, msgattrib option +
  • --properties-input, msgcat option +
  • --properties-input, msgcmp option +
  • --properties-input, msgcomm option +
  • --properties-input, msgconv option +
  • --properties-input, msgen option +
  • --properties-input, msgexec option +
  • --properties-input, msgfilter option +
  • --properties-input, msgfmt option +
  • --properties-input, msggrep option +
  • --properties-input, msginit option +
  • --properties-input, msgmerge option +
  • --properties-input, msguniq option +
  • --properties-output, msgattrib option +
  • --properties-output, msgcat option +
  • --properties-output, msgcomm option +
  • --properties-output, msgconv option +
  • --properties-output, msgen option +
  • --properties-output, msgfilter option +
  • --properties-output, msggrep option +
  • --properties-output, msginit option +
  • --properties-output, msgmerge option +
  • --properties-output, msgunfmt option +
  • --properties-output, msguniq option
  • --properties-output, xgettext option -
  • --qt, msgfmt option +
  • --qt, msgfmt option
  • --qt, xgettext option -
  • --quiet, msgfilter option -
  • --quiet, msgmerge option -
  • --regexp=, msggrep option -
  • --repeated, msguniq option -
  • --resource, msgfmt option, --resource, msgfmt option -
  • --resource, msgunfmt option, --resource, msgunfmt option +
  • --quiet, msgfilter option +
  • --quiet, msgmerge option +
  • --regexp=, msggrep option +
  • --repeated, msguniq option +
  • --resource, msgfmt option, --resource, msgfmt option +
  • --resource, msgunfmt option, --resource, msgunfmt option
  • --sentence-end, xgettext option -
  • --set-fuzzy, msgattrib option -
  • --set-obsolete, msgattrib option -
  • --silent, msgfilter option -
  • --silent, msgmerge option -
  • --sort-by-file, msgattrib option -
  • --sort-by-file, msgcat option -
  • --sort-by-file, msgcomm option -
  • --sort-by-file, msgconv option -
  • --sort-by-file, msgen option -
  • --sort-by-file, msgfilter option -
  • --sort-by-file, msggrep option -
  • --sort-by-file, msgmerge option -
  • --sort-by-file, msguniq option -
  • --sort-by-file, xgettext option -
  • --sort-output, msgattrib option -
  • --sort-output, msgcat option -
  • --sort-output, msgcomm option -
  • --sort-output, msgconv option -
  • --sort-output, msgen option -
  • --sort-output, msgfilter option -
  • --sort-output, msggrep option -
  • --sort-output, msgmerge option -
  • --sort-output, msgunfmt option -
  • --sort-output, msguniq option -
  • --sort-output, xgettext option -
  • --source, msgfmt option -
  • --statistics, msgfmt option -
  • --strict, msgattrib option -
  • --strict, msgcat option -
  • --strict, msgcomm option -
  • --strict, msgconv option -
  • --strict, msgen option -
  • --strict, msgfilter option -
  • --strict, msgfmt option -
  • --strict, msggrep option -
  • --strict, msgmerge option -
  • --strict, msgunfmt option -
  • --strict, msguniq option +
  • --set-fuzzy, msgattrib option +
  • --set-obsolete, msgattrib option +
  • --silent, msgfilter option +
  • --silent, msgmerge option +
  • --sort-by-file, msgattrib option +
  • --sort-by-file, msgcat option +
  • --sort-by-file, msgcomm option +
  • --sort-by-file, msgconv option +
  • --sort-by-file, msgen option +
  • --sort-by-file, msgfilter option +
  • --sort-by-file, msggrep option +
  • --sort-by-file, msgmerge option +
  • --sort-by-file, msguniq option +
  • --sort-by-file, xgettext option +
  • --sort-output, msgattrib option +
  • --sort-output, msgcat option +
  • --sort-output, msgcomm option +
  • --sort-output, msgconv option +
  • --sort-output, msgen option +
  • --sort-output, msgfilter option +
  • --sort-output, msggrep option +
  • --sort-output, msgmerge option +
  • --sort-output, msgunfmt option +
  • --sort-output, msguniq option +
  • --sort-output, xgettext option +
  • --source, msgfmt option +
  • --statistics, msgfmt option +
  • --strict, msgattrib option +
  • --strict, msgcat option +
  • --strict, msgcomm option +
  • --strict, msgconv option +
  • --strict, msgen option +
  • --strict, msgfilter option +
  • --strict, msgfmt option +
  • --strict, msggrep option +
  • --strict, msgmerge option +
  • --strict, msgunfmt option +
  • --strict, msguniq option
  • --strict, xgettext option -
  • --stringtable-input, msgattrib option -
  • --stringtable-input, msgcat option -
  • --stringtable-input, msgcmp option -
  • --stringtable-input, msgcomm option -
  • --stringtable-input, msgen option -
  • --stringtable-input, msgexec option -
  • --stringtable-input, msgfilter option -
  • --stringtable-input, msgfmt option -
  • --stringtable-input, msggrep option -
  • --stringtable-input, msginit option -
  • --stringtable-input, msgmerge option -
  • --stringtable-input, msgonv option -
  • --stringtable-input, msguniq option -
  • --stringtable-output, msgattrib option -
  • --stringtable-output, msgcat option -
  • --stringtable-output, msgcomm option -
  • --stringtable-output, msgconv option -
  • --stringtable-output, msgen option -
  • --stringtable-output, msgfilter option -
  • --stringtable-output, msggrep option -
  • --stringtable-output, msginit option -
  • --stringtable-output, msgmerge option -
  • --stringtable-output, msgunfmt option -
  • --stringtable-output, msguniq option +
  • --stringtable-input, msgattrib option +
  • --stringtable-input, msgcat option +
  • --stringtable-input, msgcmp option +
  • --stringtable-input, msgcomm option +
  • --stringtable-input, msgen option +
  • --stringtable-input, msgexec option +
  • --stringtable-input, msgfilter option +
  • --stringtable-input, msgfmt option +
  • --stringtable-input, msggrep option +
  • --stringtable-input, msginit option +
  • --stringtable-input, msgmerge option +
  • --stringtable-input, msgonv option +
  • --stringtable-input, msguniq option +
  • --stringtable-output, msgattrib option +
  • --stringtable-output, msgcat option +
  • --stringtable-output, msgcomm option +
  • --stringtable-output, msgconv option +
  • --stringtable-output, msgen option +
  • --stringtable-output, msgfilter option +
  • --stringtable-output, msggrep option +
  • --stringtable-output, msginit option +
  • --stringtable-output, msgmerge option +
  • --stringtable-output, msgunfmt option +
  • --stringtable-output, msguniq option
  • --stringtable-output, xgettext option -
  • --style, msgattrib option -
  • --style, msgcat option, --style, msgcat option -
  • --style, msgcomm option -
  • --style, msgconv option -
  • --style, msgen option -
  • --style, msgfilter option -
  • --style, msggrep option -
  • --style, msginit option -
  • --style, msgmerge option -
  • --style, msgunfmt option -
  • --style, msguniq option +
  • --style, msgattrib option +
  • --style, msgcat option, --style, msgcat option +
  • --style, msgcomm option +
  • --style, msgconv option +
  • --style, msgen option +
  • --style, msgfilter option +
  • --style, msggrep option +
  • --style, msginit option +
  • --style, msgmerge option +
  • --style, msgunfmt option +
  • --style, msguniq option
  • --style, xgettext option -
  • --suffix, msgmerge option -
  • --symlink, gettextize option -
  • --tcl, msgfmt option -
  • --tcl, msgunfmt option -
  • --template, msgfmt option -
  • --to-code, msgcat option -
  • --to-code, msgconv option -
  • --to-code, msguniq option -
  • --translated, msgattrib option +
  • --suffix, msgmerge option +
  • --symlink, gettextize option +
  • --tcl, msgfmt option +
  • --tcl, msgunfmt option +
  • --template, msgfmt option, --template, msgfmt option +
  • --to-code, msgcat option +
  • --to-code, msgconv option +
  • --to-code, msguniq option +
  • --translated, msgattrib option
  • --trigraphs, xgettext option -
  • --unique, msgcat option -
  • --unique, msgcomm option -
  • --unique, msguniq option -
  • --untranslated, msgattrib option -
  • --update, msgmerge option -
  • --use-first, msgcat option -
  • --use-first, msguniq option -
  • --use-fuzzy, msgcmp option -
  • --use-fuzzy, msgfmt option -
  • --use-untranslated, msgcmp option -
  • --variables, envsubst option -
  • --verbose, msgfmt option -
  • --verbose, msgmerge option -
  • --verbose, msgunfmt option -
  • --version, autopoint option -
  • --version, envsubst option -
  • --version, gettext option -
  • --version, gettextize option -
  • --version, msgattrib option -
  • --version, msgcat option -
  • --version, msgcmp option -
  • --version, msgcomm option -
  • --version, msgconv option -
  • --version, msgen option -
  • --version, msgexec option -
  • --version, msgfilter option -
  • --version, msgfmt option -
  • --version, msggrep option -
  • --version, msginit option -
  • --version, msgmerge option -
  • --version, msgunfmt option -
  • --version, msguniq option -
  • --version, ngettext option -
  • --version, xgettext option -
  • --width, msgattrib option -
  • --width, msgcat option -
  • --width, msgcomm option -
  • --width, msgconv option -
  • --width, msgen option -
  • --width, msgfilter option -
  • --width, msggrep option -
  • --width, msginit option -
  • --width, msgmerge option -
  • --width, msgunfmt option -
  • --width, msguniq option -
  • --width, xgettext option -
  • -<, msgcat option -
  • -<, msgcomm option -
  • ->, msgcat option -
  • ->, msgcomm option -
  • -a, msgfmt option +
  • --unique, msgcat option +
  • --unique, msgcomm option +
  • --unique, msguniq option +
  • --untranslated, msgattrib option +
  • --update, msgmerge option +
  • --use-first, msgcat option +
  • --use-first, msguniq option +
  • --use-fuzzy, msgcmp option +
  • --use-fuzzy, msgfmt option +
  • --use-untranslated, msgcmp option +
  • --variables, envsubst option +
  • --verbose, msgfmt option +
  • --verbose, msgmerge option +
  • --verbose, msgunfmt option +
  • --version, autopoint option +
  • --version, envsubst option +
  • --version, gettext option +
  • --version, gettextize option +
  • --version, msgattrib option +
  • --version, msgcat option +
  • --version, msgcmp option +
  • --version, msgcomm option +
  • --version, msgconv option +
  • --version, msgen option +
  • --version, msgexec option +
  • --version, msgfilter option +
  • --version, msgfmt option +
  • --version, msggrep option +
  • --version, msginit option +
  • --version, msgmerge option +
  • --version, msgunfmt option +
  • --version, msguniq option +
  • --version, ngettext option +
  • --version, xgettext option +
  • --width, msgattrib option +
  • --width, msgcat option +
  • --width, msgcomm option +
  • --width, msgconv option +
  • --width, msgen option +
  • --width, msgfilter option +
  • --width, msggrep option +
  • --width, msginit option +
  • --width, msgmerge option +
  • --width, msgunfmt option +
  • --width, msguniq option +
  • --width, xgettext option +
  • --xml, msgfmt option +
  • -<, msgcat option +
  • -<, msgcomm option +
  • ->, msgcat option +
  • ->, msgcomm option +
  • -a, msgfmt option
  • -a, xgettext option -
  • -C, msgfmt option -
  • -c, msgfmt option -
  • -C, msggrep option -
  • -C, msgmerge option -
  • -C, xgettext option +
  • -c, msgfmt option +
  • -C, msgfmt option +
  • -C, msggrep option +
  • -C, msgmerge option
  • -c, xgettext option -
  • -d, autopoint option -
  • -d, gettext option -
  • -d, gettextize option -
  • -D, msgattrib option -
  • -D, msgcat option -
  • -D, msgcmp option -
  • -D, msgcomm option -
  • -D, msgconv option -
  • -D, msgen option -
  • -D, msgexec option -
  • -D, msgfilter option -
  • -D, msgfmt option -
  • -d, msgfmt option, -d, msgfmt option, -d, msgfmt option, -d, msgfmt option -
  • -D, msggrep option -
  • -D, msgmerge option -
  • -d, msgunfmt option, -d, msgunfmt option -
  • -D, msguniq option -
  • -d, msguniq option -
  • -d, ngettext option +
  • -C, xgettext option +
  • -d, autopoint option +
  • -d, gettext option +
  • -d, gettextize option +
  • -D, msgattrib option +
  • -D, msgcat option +
  • -D, msgcmp option +
  • -D, msgcomm option +
  • -D, msgconv option +
  • -D, msgen option +
  • -D, msgexec option +
  • -D, msgfilter option +
  • -D, msgfmt option +
  • -d, msgfmt option, -d, msgfmt option, -d, msgfmt option, -d, msgfmt option, -d, msgfmt option +
  • -D, msggrep option +
  • -D, msgmerge option +
  • -d, msgunfmt option, -d, msgunfmt option +
  • -D, msguniq option +
  • -d, msguniq option +
  • -d, ngettext option
  • -d, xgettext option
  • -D, xgettext option -
  • -E, gettext option -
  • -e, gettext option -
  • -e, msgfilter option -
  • -e, msggrep option -
  • -E, msggrep option -
  • -E, ngettext option -
  • -e, ngettext option -
  • -f, autopoint option -
  • -f, gettextize option -
  • -F, msgattrib option -
  • -f, msgcat option -
  • -F, msgcat option -
  • -F, msgcomm option -
  • -f, msgcomm option -
  • -F, msgconv option -
  • -F, msgen option -
  • -f, msgfilter option -
  • -F, msgfilter option -
  • -f, msgfmt option -
  • -f, msggrep option -
  • -F, msggrep option -
  • -F, msgmerge option -
  • -F, msguniq option -
  • -F, xgettext option +
  • -E, gettext option +
  • -e, gettext option +
  • -e, msgfilter option +
  • -e, msggrep option +
  • -E, msggrep option +
  • -E, ngettext option +
  • -e, ngettext option +
  • -f, autopoint option +
  • -f, gettextize option +
  • -F, msgattrib option +
  • -f, msgcat option +
  • -F, msgcat option +
  • -f, msgcomm option +
  • -F, msgcomm option +
  • -F, msgconv option +
  • -F, msgen option +
  • -f, msgfilter option +
  • -F, msgfilter option +
  • -f, msgfmt option +
  • -f, msggrep option +
  • -F, msggrep option +
  • -F, msgmerge option +
  • -F, msguniq option +
  • -F, xgettext option
  • -f, xgettext option -
  • -h, envsubst option -
  • -h, gettext option -
  • -h, msgattrib option -
  • -h, msgcat option -
  • -h, msgcmp option -
  • -h, msgcomm option -
  • -h, msgconv option -
  • -h, msgen option -
  • -h, msgexec option -
  • -h, msgfilter option -
  • -h, msgfmt option -
  • -h, msggrep option -
  • -h, msginit option -
  • -h, msgmerge option -
  • -h, msgunfmt option -
  • -h, msguniq option -
  • -h, ngettext option -
  • -h, xgettext option -
  • -i, msgattrib option -
  • -i, msgcat option -
  • -i, msgcomm option -
  • -i, msgconv option -
  • -i, msgen option -
  • -i, msgexec option -
  • -i, msgfilter option -
  • -i, msggrep option -
  • -i, msginit option -
  • -i, msgmerge option -
  • -i, msgunfmt option -
  • -i, msguniq option +
  • -h, envsubst option +
  • -h, gettext option +
  • -h, msgattrib option +
  • -h, msgcat option +
  • -h, msgcmp option +
  • -h, msgcomm option +
  • -h, msgconv option +
  • -h, msgen option +
  • -h, msgexec option +
  • -h, msgfilter option +
  • -h, msgfmt option +
  • -h, msggrep option +
  • -h, msginit option +
  • -h, msgmerge option +
  • -h, msgunfmt option +
  • -h, msguniq option +
  • -h, ngettext option +
  • -h, xgettext option +
  • -i, msgattrib option +
  • -i, msgcat option +
  • -i, msgcomm option +
  • -i, msgconv option +
  • -i, msgen option +
  • -i, msgexec option +
  • -i, msgfilter option +
  • -i, msggrep option +
  • -i, msginit option +
  • -i, msgmerge option +
  • -i, msgunfmt option +
  • -i, msguniq option
  • -i, xgettext option -
  • -j, msgfmt option -
  • -J, msggrep option -
  • -j, msgunfmt option +
  • -j, msgfmt option +
  • -J, msggrep option +
  • -j, msgunfmt option
  • -j, xgettext option -
  • -k, msgfmt option -
  • -K, msggrep option +
  • -k, msgfmt option +
  • -K, msggrep option
  • -k, xgettext option -
  • -l, msgfmt option, -l, msgfmt option, -l, msgfmt option, -l, msgfmt option -
  • -l, msginit option -
  • -l, msgunfmt option, -l, msgunfmt option, -l, msgunfmt option +
  • -l, msgfmt option, -l, msgfmt option, -l, msgfmt option, -l, msgfmt option, -l, msgfmt option +
  • -L, msgfmt option +
  • -l, msginit option +
  • -l, msgunfmt option, -l, msgunfmt option, -l, msgunfmt option
  • -L, xgettext option -
  • -m, msgcmp option -
  • -M, msggrep option -
  • -m, msgmerge option -
  • -m, xgettext option -
  • -M, xgettext option -
  • -n, gettext option -
  • -n, msgattrib option -
  • -n, msgcat option -
  • -N, msgcmp option -
  • -n, msgcomm option -
  • -n, msgfilter option -
  • -N, msggrep option -
  • -N, msgmerge option -
  • -n, msguniq option +
  • -m, msgcmp option +
  • -M, msggrep option +
  • -m, msgmerge option +
  • -m, xgettext option +
  • -M, xgettext option +
  • -n, gettext option +
  • -n, msgattrib option +
  • -n, msgcat option +
  • -N, msgcmp option +
  • -n, msgcomm option +
  • -n, msgfilter option +
  • -N, msggrep option +
  • -N, msgmerge option +
  • -n, msguniq option
  • -n, xgettext option -
  • -o, msgattrib option -
  • -o, msgcat option -
  • -o, msgcomm option -
  • -o, msgconv option -
  • -o, msgen option -
  • -o, msgfilter option -
  • -o, msgfmt option -
  • -o, msggrep option -
  • -o, msginit option -
  • -o, msgmerge option -
  • -o, msgunfmt option -
  • -o, msguniq option +
  • -o, msgattrib option +
  • -o, msgcat option +
  • -o, msgcomm option +
  • -o, msgconv option +
  • -o, msgen option +
  • -o, msgfilter option +
  • -o, msgfmt option +
  • -o, msggrep option +
  • -o, msginit option +
  • -o, msgmerge option +
  • -o, msgunfmt option +
  • -o, msguniq option
  • -o, xgettext option -
  • -P, msgattrib option -
  • -p, msgattrib option -
  • -P, msgcat option -
  • -p, msgcat option -
  • -P, msgcmp option -
  • -p, msgcomm option -
  • -P, msgcomm option -
  • -p, msgconv option -
  • -P, msgconv option -
  • -p, msgen option -
  • -P, msgen option -
  • -P, msgexec option -
  • -p, msgfilter option -
  • -P, msgfilter option -
  • -P, msgfmt option -
  • -P, msggrep option -
  • -p, msggrep option -
  • -p, msginit option -
  • -P, msginit option -
  • -p, msgmerge option -
  • -P, msgmerge option -
  • -p, msgunfmt option -
  • -P, msguniq option -
  • -p, msguniq option +
  • -p, msgattrib option +
  • -P, msgattrib option +
  • -p, msgcat option +
  • -P, msgcat option +
  • -P, msgcmp option +
  • -P, msgcomm option +
  • -p, msgcomm option +
  • -P, msgconv option +
  • -p, msgconv option +
  • -P, msgen option +
  • -p, msgen option +
  • -P, msgexec option +
  • -p, msgfilter option +
  • -P, msgfilter option +
  • -P, msgfmt option +
  • -p, msggrep option +
  • -P, msggrep option +
  • -P, msginit option +
  • -p, msginit option +
  • -P, msgmerge option +
  • -p, msgmerge option +
  • -p, msgunfmt option +
  • -p, msguniq option +
  • -P, msguniq option
  • -p, xgettext option -
  • -q, msgmerge option -
  • -r, msgfmt option, -r, msgfmt option -
  • -r, msgunfmt option, -r, msgunfmt option -
  • -s, msgattrib option -
  • -s, msgcat option -
  • -s, msgcomm option -
  • -s, msgconv option -
  • -s, msgen option -
  • -s, msgfilter option -
  • -s, msgmerge option -
  • -s, msgunfmt option -
  • -s, msguniq option -
  • -s, xgettext option -
  • -t, msgcat option -
  • -t, msgconv option -
  • -T, msggrep option -
  • -t, msguniq option +
  • -q, msgmerge option +
  • -r, msgfmt option, -r, msgfmt option +
  • -r, msgunfmt option, -r, msgunfmt option +
  • -s, msgattrib option +
  • -s, msgcat option +
  • -s, msgcomm option +
  • -s, msgconv option +
  • -s, msgen option +
  • -s, msgfilter option +
  • -s, msgmerge option +
  • -s, msgunfmt option +
  • -s, msguniq option +
  • -s, xgettext option +
  • -t, msgcat option +
  • -t, msgconv option +
  • -T, msggrep option +
  • -t, msguniq option
  • -T, xgettext option -
  • -u, msgcat option -
  • -u, msgcomm option -
  • -U, msgmerge option -
  • -u, msguniq option -
  • -V, envsubst option -
  • -v, envsubst option -
  • -V, gettext option -
  • -V, msgattrib option -
  • -V, msgcat option -
  • -V, msgcmp option -
  • -V, msgcomm option -
  • -V, msgconv option -
  • -V, msgen option -
  • -V, msgexec option -
  • -V, msgfilter option -
  • -V, msgfmt option -
  • -v, msgfmt option -
  • -v, msggrep option -
  • -V, msggrep option -
  • -V, msginit option -
  • -v, msgmerge option -
  • -V, msgmerge option -
  • -V, msgunfmt option -
  • -v, msgunfmt option -
  • -V, msguniq option -
  • -V, ngettext option -
  • -V, xgettext option -
  • -w, msgattrib option -
  • -w, msgcat option -
  • -w, msgcomm option -
  • -w, msgconv option -
  • -w, msgen option -
  • -w, msgfilter option -
  • -w, msggrep option -
  • -w, msginit option -
  • -w, msgmerge option -
  • -w, msgunfmt option -
  • -w, msguniq option -
  • -w, xgettext option -
  • -X, msggrep option +
  • -u, msgcat option +
  • -u, msgcomm option +
  • -U, msgmerge option +
  • -u, msguniq option +
  • -v, envsubst option +
  • -V, envsubst option +
  • -V, gettext option +
  • -V, msgattrib option +
  • -V, msgcat option +
  • -V, msgcmp option +
  • -V, msgcomm option +
  • -V, msgconv option +
  • -V, msgen option +
  • -V, msgexec option +
  • -V, msgfilter option +
  • -v, msgfmt option +
  • -V, msgfmt option +
  • -V, msggrep option +
  • -v, msggrep option +
  • -V, msginit option +
  • -V, msgmerge option +
  • -v, msgmerge option +
  • -V, msgunfmt option +
  • -v, msgunfmt option +
  • -V, msguniq option +
  • -V, ngettext option +
  • -V, xgettext option +
  • -w, msgattrib option +
  • -w, msgcat option +
  • -w, msgcomm option +
  • -w, msgconv option +
  • -w, msgen option +
  • -w, msgfilter option +
  • -w, msggrep option +
  • -w, msginit option +
  • -w, msgmerge option +
  • -w, msgunfmt option +
  • -w, msguniq option +
  • -w, xgettext option +
  • -X, msggrep option
  • -x, xgettext option
  • diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_22.html gettext-0.19.7/gettext-tools/doc/gettext_22.html --- gettext-0.19.6/gettext-tools/doc/gettext_22.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_22.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - Variable Index @@ -11,7 +11,7 @@


    -

    Variable Index

    +

    Variable Index

    Jump to: @@ -27,49 +27,49 @@

    g

    -
  • GETTEXT_LOG_UNTRANSLATED, environment variable +
  • GETTEXT_LOG_UNTRANSLATED, environment variable
  • l

    -
  • LANG, environment variable, LANG, environment variable -
  • LANGUAGE, environment variable, LANGUAGE, environment variable, LANGUAGE, environment variable -
  • LC_ALL, environment variable, LC_ALL, environment variable -
  • LC_COLLATE, environment variable, LC_COLLATE, environment variable -
  • LC_CTYPE, environment variable, LC_CTYPE, environment variable -
  • LC_MESSAGES, environment variable, LC_MESSAGES, environment variable -
  • LC_MONETARY, environment variable, LC_MONETARY, environment variable -
  • LC_NUMERIC, environment variable, LC_NUMERIC, environment variable -
  • LC_TIME, environment variable, LC_TIME, environment variable -
  • LINGUAS, environment variable +
  • LANG, environment variable, LANG, environment variable +
  • LANGUAGE, environment variable, LANGUAGE, environment variable, LANGUAGE, environment variable +
  • LC_ALL, environment variable, LC_ALL, environment variable +
  • LC_COLLATE, environment variable, LC_COLLATE, environment variable +
  • LC_CTYPE, environment variable, LC_CTYPE, environment variable +
  • LC_MESSAGES, environment variable, LC_MESSAGES, environment variable +
  • LC_MONETARY, environment variable, LC_MONETARY, environment variable +
  • LC_NUMERIC, environment variable, LC_NUMERIC, environment variable +
  • LC_TIME, environment variable, LC_TIME, environment variable +
  • LINGUAS, environment variable
  • m

    -
  • MSGEXEC_LOCATION, environment variable -
  • MSGEXEC_MSGCTXT, environment variable -
  • MSGEXEC_MSGID, environment variable -
  • MSGEXEC_MSGID_PLURAL, environment variable -
  • MSGEXEC_PLURAL_FORM, environment variable -
  • MSGEXEC_PREV_MSGCTXT, environment variable -
  • MSGEXEC_PREV_MSGID, environment variable -
  • MSGEXEC_PREV_MSGID_PLURAL, environment variable -
  • MSGFILTER_LOCATION, environment variable -
  • MSGFILTER_MSGCTXT, environment variable -
  • MSGFILTER_MSGID, environment variable -
  • MSGFILTER_MSGID_PLURAL, environment variable -
  • MSGFILTER_PLURAL_FORM, environment variable -
  • MSGFILTER_PREV_MSGCTXT, environment variable -
  • MSGFILTER_PREV_MSGID, environment variable -
  • MSGFILTER_PREV_MSGID_PLURAL, environment variable +
  • MSGEXEC_LOCATION, environment variable +
  • MSGEXEC_MSGCTXT, environment variable +
  • MSGEXEC_MSGID, environment variable +
  • MSGEXEC_MSGID_PLURAL, environment variable +
  • MSGEXEC_PLURAL_FORM, environment variable +
  • MSGEXEC_PREV_MSGCTXT, environment variable +
  • MSGEXEC_PREV_MSGID, environment variable +
  • MSGEXEC_PREV_MSGID_PLURAL, environment variable +
  • MSGFILTER_LOCATION, environment variable +
  • MSGFILTER_MSGCTXT, environment variable +
  • MSGFILTER_MSGID, environment variable +
  • MSGFILTER_MSGID_PLURAL, environment variable +
  • MSGFILTER_PLURAL_FORM, environment variable +
  • MSGFILTER_PREV_MSGCTXT, environment variable +
  • MSGFILTER_PREV_MSGID, environment variable +
  • MSGFILTER_PREV_MSGID_PLURAL, environment variable
  • p

    -
  • PO_STYLE, environment variable +
  • PO_STYLE, environment variable
  • t

    -
  • TERM, environment variable -
  • TEXTDOMAIN, environment variable -
  • TEXTDOMAINDIR, environment variable +
  • TERM, environment variable +
  • TEXTDOMAIN, environment variable +
  • TEXTDOMAINDIR, environment variable
  • diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_23.html gettext-0.19.7/gettext-tools/doc/gettext_23.html --- gettext-0.19.6/gettext-tools/doc/gettext_23.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_23.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - PO Mode Index @@ -11,7 +11,7 @@


    -

    PO Mode Index

    +

    PO Mode Index

    Jump to: @@ -41,70 +41,70 @@

    &

    -
  • ‘.emacs’ customizations +
  • ‘.emacs’ customizations
  • ‘TAGS’, and marking translatable strings
  • a

    -
  • auxiliary PO file +
  • auxiliary PO file
  • c

    -
  • commands -
  • comment out PO file entry -
  • consulting program sources -
  • consulting translations to other languages -
  • current entry of a PO file -
  • cut and paste for translated strings +
  • commands +
  • comment out PO file entry +
  • consulting program sources +
  • consulting translations to other languages +
  • current entry of a PO file +
  • cut and paste for translated strings
  • e

    -
  • editing comments -
  • editing multiple entries -
  • editing translations +
  • editing comments +
  • editing multiple entries +
  • editing translations
  • etags, using for marking strings -
  • exiting PO subedit +
  • exiting PO subedit
  • f

    -
  • find source fragment for a PO file entry +
  • find source fragment for a PO file entry
  • i

    -
  • installing PO mode +
  • installing PO mode
  • l

    -
  • looking at the source to aid translation +
  • looking at the source to aid translation
  • m

  • marking strings for translation -
  • moving by fuzzy entries -
  • moving by obsolete entries -
  • moving by translated entries -
  • moving by untranslated entries -
  • moving through a PO file +
  • moving by fuzzy entries +
  • moving by obsolete entries +
  • moving by translated entries +
  • moving by untranslated entries +
  • moving through a PO file
  • o

    -
  • obsolete active entry +
  • obsolete active entry
  • p

    -
  • pending subedits +
  • pending subedits
  • s

    -
  • starting a string translation -
  • string normalization in entries -
  • subedit minor mode +
  • starting a string translation +
  • string normalization in entries +
  • subedit minor mode
  • u

    -
  • use the source, Luke -
  • using obsolete translations to make new entries -
  • using translation compendia +
  • use the source, Luke +
  • using obsolete translations to make new entries +
  • using translation compendia
  • diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_24.html gettext-0.19.7/gettext-tools/doc/gettext_24.html --- gettext-0.19.6/gettext-tools/doc/gettext_24.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_24.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - Autoconf Macro Index @@ -11,7 +11,7 @@


    -

    Autoconf Macro Index

    +

    Autoconf Macro Index

    Jump to: @@ -19,13 +19,13 @@

    a

    -
  • AM_GNU_GETTEXT -
  • AM_GNU_GETTEXT_INTL_SUBDIR -
  • AM_GNU_GETTEXT_NEED -
  • AM_GNU_GETTEXT_VERSION -
  • AM_ICONV -
  • AM_PO_SUBDIRS -
  • AM_XGETTEXT_OPTION +
  • AM_GNU_GETTEXT +
  • AM_GNU_GETTEXT_INTL_SUBDIR +
  • AM_GNU_GETTEXT_NEED +
  • AM_GNU_GETTEXT_VERSION +
  • AM_ICONV +
  • AM_PO_SUBDIRS +
  • AM_XGETTEXT_OPTION
  • diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_25.html gettext-0.19.7/gettext-tools/doc/gettext_25.html --- gettext-0.19.6/gettext-tools/doc/gettext_25.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_25.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - General Index @@ -11,7 +11,7 @@


    -

    General Index

    +

    General Index

    Jump to: @@ -72,229 +72,229 @@

    &

  • ‘ABOUT-NLS’ file -
  • ‘acconfig.h’ file -
  • ‘aclocal.m4’ file -
  • ‘config.h.in’ file -
  • ‘gettext.h’ file -
  • ‘LINGUAS’ file -
  • ‘Makefile.in.in’ extensions -
  • ‘Makevars’ file -
  • ‘mkinstalldirs’ file -
  • ‘POTFILES.in’ file +
  • ‘acconfig.h’ file +
  • ‘aclocal.m4’ file +
  • ‘config.h.in’ file +
  • ‘gettext.h’ file +
  • ‘LINGUAS’ file +
  • ‘Makefile.in.in’ extensions +
  • ‘Makevars’ file +
  • ‘mkinstalldirs’ file +
  • ‘POTFILES.in’ file
  • _

  • _, a macro to mark strings for translation -
  • _nl_msg_cat_cntr +
  • _nl_msg_cat_cntr
  • a

    -
  • accumulating translations +
  • accumulating translations
  • adding keywords, xgettext
  • ambiguities -
  • apply a filter to translations -
  • apply command to all translations in a catalog -
  • Arabic digits -
  • attribute manipulation -
  • attribute, fuzzy -
  • attributes of a PO file entry -
  • attributes, manipulating -
  • autoconf macros for gettext -
  • autopoint program, usage -
  • auxiliary PO file +
  • apply a filter to translations +
  • apply command to all translations in a catalog +
  • Arabic digits +
  • attribute manipulation +
  • attribute, fuzzy +
  • attributes of a PO file entry +
  • attributes, manipulating +
  • autoconf macros for gettext +
  • autopoint program, usage +
  • auxiliary PO file
  • available translations -
  • awk +
  • awk
  • b

    -
  • backup old file, and msgmerge program -
  • bash -
  • bibliography +
  • backup old file, and msgmerge program +
  • bash +
  • bibliography
  • big picture -
  • bind_textdomain_codeset +
  • bind_textdomain_codeset
  • Boost format strings
  • bug report address
  • c

    -
  • C and C-like languages +
  • C and C-like languages
  • C trigraphs -
  • C# -
  • C# mode, and msgfmt program -
  • C# mode, and msgunfmt program -
  • C# resources mode, and msgfmt program -
  • C# resources mode, and msgunfmt program +
  • C# +
  • C# mode, and msgfmt program +
  • C# mode, and msgunfmt program +
  • C# resources mode, and msgfmt program +
  • C# resources mode, and msgunfmt program
  • C#, string concatenation -
  • catalog encoding and msgexec output -
  • catclose, a catgets function -
  • catgets, X/Open specification -
  • catgets, a catgets function -
  • catopen, a catgets function +
  • catalog encoding and msgexec output +
  • catclose, a catgets function +
  • catgets, X/Open specification +
  • catgets, a catgets function +
  • catopen, a catgets function
  • character encoding -
  • charset conversion at runtime -
  • charset of PO files -
  • check format strings -
  • checking of translations -
  • clisp -
  • clisp C sources +
  • charset conversion at runtime +
  • charset of PO files +
  • check format strings +
  • checking of translations +
  • clisp +
  • clisp C sources
  • codeset
  • comments in PO files
  • comments, automatic
  • comments, extracted
  • comments, translator -
  • Common Lisp -
  • compare PO files -
  • comparison of interfaces -
  • compatibility with X/Open msgfmt -
  • compendium -
  • compendium, creating -
  • concatenate PO files -
  • concatenating PO files into a compendium +
  • Common Lisp +
  • compare PO files +
  • comparison of interfaces +
  • compatibility with X/Open msgfmt +
  • compendium +
  • compendium, creating +
  • concatenate PO files +
  • concatenating PO files into a compendium
  • concatenation of strings -
  • context +
  • context
  • context, argument specification in xgettext -
  • context, in MO files +
  • context, in MO files
  • context, in PO files
  • control characters -
  • convert binary message catalog into PO file -
  • convert translations to a different encoding -
  • converting a package to use gettext -
  • country codes -
  • create new PO file -
  • creating a new PO file -
  • creating compendia +
  • convert binary message catalog into PO file +
  • convert translations to a different encoding +
  • converting a package to use gettext +
  • country codes +
  • create new PO file +
  • creating a new PO file +
  • creating compendia
  • currency symbols
  • d

  • date format -
  • dcngettext -
  • dcpgettext -
  • dcpgettext_expr +
  • dcngettext +
  • dcpgettext +
  • dcpgettext_expr
  • debugging messages marked as format strings -
  • Desktop Entry mode, and msgfmt program -
  • dialect -
  • disabling NLS -
  • distribution tarball -
  • dngettext -
  • dollar substitution -
  • domain ambiguities -
  • dpgettext -
  • dpgettext_expr -
  • duplicate elimination -
  • duplicate removal +
  • Desktop Entry mode, and msgfmt program +
  • dialect +
  • disabling NLS +
  • distribution tarball +
  • dngettext +
  • dollar substitution +
  • domain ambiguities +
  • dpgettext +
  • dpgettext_expr +
  • duplicate elimination +
  • duplicate removal
  • e

    -
  • editing comments in PO files -
  • Editing PO Files -
  • editing translations -
  • Emacs Lisp -
  • Emacs PO Mode +
  • editing comments in PO files +
  • Editing PO Files +
  • editing translations +
  • Emacs Lisp +
  • Emacs PO Mode
  • encoding -
  • encoding conversion -
  • encoding conversion at runtime -
  • encoding for your language -
  • encoding list -
  • encoding of PO files -
  • environment variables -
  • envsubst program, usage -
  • eval_gettext function, usage -
  • eval_ngettext function, usage +
  • encoding conversion +
  • encoding conversion at runtime +
  • encoding for your language +
  • encoding list +
  • encoding of PO files +
  • environment variables +
  • envsubst program, usage +
  • eval_gettext function, usage +
  • eval_ngettext function, usage
  • evolution of packages -
  • extracting parts of a PO file into a compendium +
  • extracting parts of a PO file into a compendium
  • f

    -
  • FDL, GNU Free Documentation License -
  • file format, ‘.mo’ +
  • FDL, GNU Free Documentation License +
  • file format, ‘.mo’
  • file format, ‘.po’
  • files, ‘.po’ and ‘.mo’
  • files, ‘.pot’ -
  • filter messages according to attributes -
  • find common messages -
  • force use of fuzzy entries +
  • filter messages according to attributes +
  • find common messages +
  • force use of fuzzy entries
  • format strings -
  • Free Pascal +
  • Free Pascal
  • function attribute, __format__
  • function attribute, __format_arg__ -
  • fuzzy entries +
  • fuzzy entries
  • g

    -
  • gawk -
  • GCC-source -
  • generate binary message catalog from PO file -
  • generate translation catalog in English -
  • gettext files -
  • gettext installation -
  • gettext interface -
  • gettext program, usage -
  • gettext, a programmer's view -
  • gettext vs catgets -
  • gettextize program, usage -
  • GNOME PO file editor -
  • GPL, GNU General Public License -
  • GUI programs -
  • guile +
  • gawk +
  • GCC-source +
  • generate binary message catalog from PO file +
  • generate translation catalog in English +
  • gettext files +
  • gettext installation +
  • gettext interface +
  • gettext program, usage +
  • gettext, a programmer's view +
  • gettext vs catgets +
  • gettextize program, usage +
  • GNOME PO file editor +
  • GPL, GNU General Public License +
  • GUI programs +
  • guile
  • h

    -
  • hash table, inside MO files +
  • hash table, inside MO files
  • he, she, and they -
  • header entry of a PO file +
  • header entry of a PO file
  • help option -
  • history of GNU gettext +
  • history of GNU gettext
  • i

  • i18n -
  • importing PO files -
  • include file ‘libintl.h’, include file ‘libintl.h’, include file ‘libintl.h’, include file ‘libintl.h’ +
  • importing PO files +
  • include file ‘libintl.h’, include file ‘libintl.h’, include file ‘libintl.h’, include file ‘libintl.h’
  • initialization -
  • initialize new PO file -
  • initialize translations from a compendium -
  • installing gettext -
  • interface to catgets +
  • initialize new PO file +
  • initialize translations from a compendium +
  • installing gettext +
  • interface to catgets
  • internationalization
  • inttypes.h -
  • ISO 3166 -
  • ISO 639 +
  • ISO 3166 +
  • ISO 639
  • j

    -
  • Java -
  • Java mode, and msgfmt program -
  • Java mode, and msgunfmt program +
  • Java +
  • Java mode, and msgfmt program +
  • Java mode, and msgunfmt program
  • Java, string concatenation
  • k

  • KDE format strings -
  • KDE PO file editor -
  • keyboard accelerator checking +
  • KDE PO file editor +
  • keyboard accelerator checking
  • l

  • l10n -
  • language codes +
  • language codes
  • language selection -
  • language selection at runtime -
  • large package -
  • LGPL, GNU Lesser General Public License -
  • libiconv library -
  • libintl for C# -
  • libintl for Java -
  • libintl library -
  • librep Lisp -
  • License, GNU FDL -
  • License, GNU GPL -
  • License, GNU LGPL -
  • Licenses +
  • language selection at runtime +
  • large package +
  • LGPL, GNU Lesser General Public License +
  • libiconv library +
  • libintl for C# +
  • libintl for Java +
  • libintl library +
  • librep Lisp +
  • License, GNU FDL +
  • License, GNU GPL +
  • License, GNU LGPL +
  • Licenses
  • link with ‘libintl’ -
  • Linux, Linux, Linux -
  • Lisp -
  • list of translation teams, where to find +
  • Linux, Linux, Linux +
  • Lisp +
  • list of translation teams, where to find
  • locale categories, locale categories
  • locale category, LC_ALL
  • locale category, LC_COLLATE @@ -304,200 +304,203 @@
  • locale category, LC_NUMERIC, locale category, LC_NUMERIC
  • locale category, LC_RESPONSES
  • locale category, LC_TIME, locale category, LC_TIME -
  • locale program +
  • locale program
  • localization -
  • lookup message translation, lookup message translation -
  • lookup plural message translation, lookup plural message translation +
  • lookup message translation, lookup message translation +
  • lookup plural message translation, lookup plural message translation
  • m

    -
  • magic signature of MO files -
  • manipulating PO files -
  • marking Perl sources +
  • magic signature of MO files +
  • manipulating PO files +
  • marking Perl sources
  • marking string initializers
  • marking strings that require translation
  • marking strings, preparations
  • marking translatable strings
  • markup -
  • menu entries -
  • menu, keyboard accelerator support -
  • merge PO files -
  • merging two PO files -
  • message catalog files location +
  • menu entries +
  • menu, keyboard accelerator support +
  • merge PO files +
  • merging two PO files +
  • message catalog files location
  • messages -
  • migration from earlier versions of gettext -
  • mnemonics of menu entries -
  • MO file's format -
  • modify message attributes -
  • msgattrib program, usage -
  • msgcat program, usage -
  • msgcmp program, usage -
  • msgcomm program, usage -
  • msgconv program, usage -
  • msgen program, usage -
  • msgexec program, usage -
  • msgfilter filter and catalog encoding -
  • msgfilter program, usage -
  • msgfmt program, usage -
  • msggrep program, usage -
  • msginit program, usage -
  • msgmerge program, usage -
  • msgunfmt program, usage -
  • msguniq program, usage -
  • multi-line strings +
  • migration from earlier versions of gettext +
  • mnemonics of menu entries +
  • MO file's format +
  • modify message attributes +
  • msgattrib program, usage +
  • msgcat program, usage +
  • msgcmp program, usage +
  • msgcomm program, usage +
  • msgconv program, usage +
  • msgen program, usage +
  • msgexec program, usage +
  • msgfilter filter and catalog encoding +
  • msgfilter program, usage +
  • msgfmt program, usage +
  • msggrep program, usage +
  • msginit program, usage +
  • msgmerge program, usage +
  • msgunfmt program, usage +
  • msguniq program, usage +
  • multi-line strings
  • n

    -
  • N_, a convenience macro +
  • N_, a convenience macro
  • Native Language Support
  • Natural Language Support
  • newlines in PO files -
  • ngettext -
  • ngettext program, usage +
  • ngettext +
  • ngettext program, usage
  • NLS
  • number format
  • o

    -
  • Object Pascal -
  • obsolete entries -
  • optimization of gettext functions -
  • orthography -
  • outdigits +
  • Object Pascal +
  • obsolete entries +
  • optimization of gettext functions +
  • orthography +
  • outdigits
  • output to stdout, xgettext
  • overview of gettext
  • p

    -
  • package and version declaration in ‘configure.ac’ -
  • package build and installation options -
  • package distributor's view of gettext -
  • package installer's view of gettext -
  • package maintainer's view of gettext +
  • package and version declaration in ‘configure.ac’ +
  • package build and installation options +
  • package distributor's view of gettext +
  • package installer's view of gettext +
  • package maintainer's view of gettext
  • paragraphs -
  • Pascal -
  • Perl -
  • Perl default keywords -
  • Perl invalid string interpolation -
  • Perl long lines -
  • Perl parentheses -
  • Perl pitfalls -
  • Perl quote-like expressions -
  • Perl special keywords for hash-lookups -
  • Perl valid string interpolation -
  • pgettext -
  • pgettext_expr -
  • PHP -
  • Pike -
  • plural form formulas -
  • plural forms -
  • plural forms, in MO files +
  • Pascal +
  • Perl +
  • Perl default keywords +
  • Perl invalid string interpolation +
  • Perl long lines +
  • Perl parentheses +
  • Perl pitfalls +
  • Perl quote-like expressions +
  • Perl special keywords for hash-lookups +
  • Perl valid string interpolation +
  • pgettext +
  • pgettext_expr +
  • PHP +
  • Pike +
  • plural form formulas +
  • plural forms +
  • plural forms, in MO files
  • plural forms, in PO files -
  • plural forms, translating +
  • plural forms, translating
  • PO files' format -
  • PO mode (Emacs) commands +
  • PO mode (Emacs) commands
  • PO template file -
  • po_file_domains -
  • po_file_free -
  • po_file_read -
  • po_message_iterator -
  • po_message_iterator_free -
  • po_message_msgid -
  • po_message_msgid_plural -
  • po_message_msgstr -
  • po_message_msgstr_plural -
  • po_next_message -
  • portability problems with sed +
  • po_file_domains +
  • po_file_free +
  • po_file_read +
  • po_message_iterator +
  • po_message_iterator_free +
  • po_message_msgid +
  • po_message_msgid_plural +
  • po_message_msgstr +
  • po_message_msgstr_plural +
  • po_next_message +
  • portability problems with sed
  • preparing programs for translation -
  • preparing shell scripts for translation -
  • problems with catgets interface -
  • programming languages -
  • Python +
  • preparing rules for XML translation +
  • preparing shell scripts for translation +
  • problems with catgets interface +
  • programming languages +
  • Python
  • q

  • Qt format strings -
  • Qt mode, and msgfmt program -
  • quotation marks, quotation marks -
  • quote characters, use in PO files +
  • Qt mode, and msgfmt program +
  • quotation marks, quotation marks +
  • quote characters, use in PO files
  • r

    -
  • recode-sr-latin program -
  • related reading -
  • release -
  • RST +
  • recode-sr-latin program +
  • related reading +
  • release +
  • RST
  • s

    -
  • Scheme -
  • scripting languages -
  • search messages in a catalog +
  • Scheme +
  • scripting languages +
  • search messages in a catalog
  • selecting message language
  • sentence end markers, xgettext
  • sentences -
  • setting up gettext at build time +
  • setting up gettext at build time
  • setting up gettext at run time -
  • several domains +
  • several domains
  • sex
  • she, he, and they -
  • shell format string -
  • shell scripts -
  • Smalltalk -
  • sorting msgcat output -
  • sorting msgmerge output -
  • sorting msgunfmt output -
  • sorting output of xgettext -
  • specifying plural form in a PO file -
  • standard output, and msgcat -
  • standard output, and msgmerge program +
  • shell format string +
  • shell scripts +
  • Smalltalk +
  • sorting msgcat output +
  • sorting msgmerge output +
  • sorting msgunfmt output +
  • sorting output of xgettext +
  • specifying plural form in a PO file +
  • standard output, and msgcat +
  • standard output, and msgmerge program
  • string concatenation -
  • string normalization in entries +
  • string normalization in entries
  • style +
  • supported languages, msgfmt
  • supported languages, xgettext
  • supported syntax checks, xgettext
  • t

    -
  • Tcl -
  • Tcl mode, and msgfmt program -
  • Tcl mode, and msgunfmt program +
  • Tcl +
  • Tcl mode, and msgfmt program +
  • Tcl mode, and msgunfmt program
  • template PO file -
  • testing ‘.po’ files for equivalence -
  • Tk's scripting language -
  • translated entries -
  • translating menu entries +
  • testing ‘.po’ files for equivalence +
  • Tk's scripting language +
  • translated entries +
  • translating menu entries
  • translation aspects
  • Translation Matrix
  • Translation Project -
  • turning off NLS support +
  • turning off NLS support
  • tutorial of gettext usage
  • u

    -
  • unify duplicate translations -
  • untranslated entries -
  • update translations from a compendium -
  • upgrading to new versions of gettext +
  • unify duplicate translations +
  • untranslated entries +
  • update translations from a compendium +
  • upgrading to new versions of gettext
  • v

    -
  • version control for backup files, msgmerge +
  • version control for backup files, msgmerge
  • w

    -
  • wxWidgets library +
  • wxWidgets library
  • x

    -
  • xargs, and output from msgexec +
  • xargs, and output from msgexec
  • xgettext program, usage -
  • xmodmap program, and typing quotation marks +
  • XML mode, and msgfmt program +
  • xmodmap program, and typing quotation marks
  • y

    -
  • YaST2 scripting language -
  • YCP +
  • YaST2 scripting language +
  • YCP
  • diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_2.html gettext-0.19.7/gettext-tools/doc/gettext_2.html --- gettext-0.19.6/gettext-tools/doc/gettext_2.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_2.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - 2 The User's View @@ -126,8 +126,8 @@ ll is an ISO 639 two-letter language code, and CC is an ISO 3166 two-letter country code. For example, for German in Germany, ll is de, and CC is DE. -You find a list of the language codes in appendix section A Language Codes and -a list of the country codes in appendix section B Country Codes. +You find a list of the language codes in appendix section A Language Codes and +a list of the country codes in appendix section B Country Codes.

    diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_3.html gettext-0.19.7/gettext-tools/doc/gettext_3.html --- gettext-0.19.6/gettext-tools/doc/gettext_3.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_3.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - 3 The Format of PO Files @@ -153,7 +153,7 @@ When the c-format flag is given for a string the msgfmt program does some more tests to check the validity of the translation. -See section 10.1 Invoking the msgfmt Program, section 4.6 Special Comments preceding Keywords and section 15.3.1 C Format Strings. +See section 10.1 Invoking the msgfmt Program, section 4.6 Special Comments preceding Keywords and section 15.3.1 C Format Strings.

    objc-format
    @@ -161,7 +161,7 @@
    no-objc-format
    -Likewise for Objective C, see section 15.3.2 Objective C Format Strings. +Likewise for Objective C, see section 15.3.2 Objective C Format Strings.
    sh-format
    @@ -169,7 +169,7 @@
    no-sh-format
    -Likewise for Shell, see section 15.3.3 Shell Format Strings. +Likewise for Shell, see section 15.3.3 Shell Format Strings.
    python-format
    @@ -177,7 +177,7 @@
    no-python-format
    -Likewise for Python, see section 15.3.4 Python Format Strings. +Likewise for Python, see section 15.3.4 Python Format Strings.
    python-brace-format
    @@ -185,7 +185,7 @@
    no-python-brace-format
    -Likewise for Python brace, see section 15.3.4 Python Format Strings. +Likewise for Python brace, see section 15.3.4 Python Format Strings.
    lisp-format
    @@ -193,7 +193,7 @@
    no-lisp-format
    -Likewise for Lisp, see section 15.3.5 Lisp Format Strings. +Likewise for Lisp, see section 15.3.5 Lisp Format Strings.
    elisp-format
    @@ -201,7 +201,7 @@
    no-elisp-format
    -Likewise for Emacs Lisp, see section 15.3.6 Emacs Lisp Format Strings. +Likewise for Emacs Lisp, see section 15.3.6 Emacs Lisp Format Strings.
    librep-format
    @@ -209,7 +209,7 @@
    no-librep-format
    -Likewise for librep, see section 15.3.7 librep Format Strings. +Likewise for librep, see section 15.3.7 librep Format Strings.
    scheme-format
    @@ -217,7 +217,7 @@
    no-scheme-format
    -Likewise for Scheme, see section 15.3.8 Scheme Format Strings. +Likewise for Scheme, see section 15.3.8 Scheme Format Strings.
    smalltalk-format
    @@ -225,7 +225,7 @@
    no-smalltalk-format
    -Likewise for Smalltalk, see section 15.3.9 Smalltalk Format Strings. +Likewise for Smalltalk, see section 15.3.9 Smalltalk Format Strings.
    java-format
    @@ -233,7 +233,7 @@
    no-java-format
    -Likewise for Java, see section 15.3.10 Java Format Strings. +Likewise for Java, see section 15.3.10 Java Format Strings.
    csharp-format
    @@ -241,7 +241,7 @@
    no-csharp-format
    -Likewise for C#, see section 15.3.11 C# Format Strings. +Likewise for C#, see section 15.3.11 C# Format Strings.
    awk-format
    @@ -249,7 +249,7 @@
    no-awk-format
    -Likewise for awk, see section 15.3.12 awk Format Strings. +Likewise for awk, see section 15.3.12 awk Format Strings.
    object-pascal-format
    @@ -257,7 +257,7 @@
    no-object-pascal-format
    -Likewise for Object Pascal, see section 15.3.13 Object Pascal Format Strings. +Likewise for Object Pascal, see section 15.3.13 Object Pascal Format Strings.
    ycp-format
    @@ -265,7 +265,7 @@
    no-ycp-format
    -Likewise for YCP, see section 15.3.14 YCP Format Strings. +Likewise for YCP, see section 15.3.14 YCP Format Strings.
    tcl-format
    @@ -273,7 +273,7 @@
    no-tcl-format
    -Likewise for Tcl, see section 15.3.15 Tcl Format Strings. +Likewise for Tcl, see section 15.3.15 Tcl Format Strings.
    perl-format
    @@ -281,7 +281,7 @@
    no-perl-format
    -Likewise for Perl, see section 15.3.16 Perl Format Strings. +Likewise for Perl, see section 15.3.16 Perl Format Strings.
    perl-brace-format
    @@ -289,7 +289,7 @@
    no-perl-brace-format
    -Likewise for Perl brace, see section 15.3.16 Perl Format Strings. +Likewise for Perl brace, see section 15.3.16 Perl Format Strings.
    php-format
    @@ -297,7 +297,7 @@
    no-php-format
    -Likewise for PHP, see section 15.3.17 PHP Format Strings. +Likewise for PHP, see section 15.3.17 PHP Format Strings.
    gcc-internal-format
    @@ -305,7 +305,7 @@
    no-gcc-internal-format
    -Likewise for the GCC sources, see section 15.3.18 GCC internal Format Strings. +Likewise for the GCC sources, see section 15.3.18 GCC internal Format Strings.
    gfc-internal-format
    @@ -313,7 +313,7 @@
    no-gfc-internal-format
    -Likewise for the GNU Fortran Compiler sources, see section 15.3.19 GFC internal Format Strings. +Likewise for the GNU Fortran Compiler sources, see section 15.3.19 GFC internal Format Strings.
    qt-format
    @@ -321,7 +321,7 @@
    no-qt-format
    -Likewise for Qt, see section 15.3.20 Qt Format Strings. +Likewise for Qt, see section 15.3.20 Qt Format Strings.
    qt-plural-format
    @@ -329,7 +329,7 @@
    no-qt-plural-format
    -Likewise for Qt plural forms, see section 15.3.21 Qt Format Strings. +Likewise for Qt plural forms, see section 15.3.21 Qt Format Strings.
    kde-format
    @@ -337,7 +337,7 @@
    no-kde-format
    -Likewise for KDE, see section 15.3.22 KDE Format Strings. +Likewise for KDE, see section 15.3.22 KDE Format Strings.
    boost-format
    @@ -345,7 +345,7 @@
    no-boost-format
    -Likewise for Boost, see section 15.3.24 Boost Format Strings. +Likewise for Boost, see section 15.3.24 Boost Format Strings.
    lua-format
    @@ -353,7 +353,7 @@
    no-lua-format
    -Likewise for Lua, see section 15.3.25 Lua Format Strings. +Likewise for Lua, see section 15.3.25 Lua Format Strings.
    javascript-format
    @@ -361,7 +361,7 @@
    no-javascript-format
    -Likewise for JavaScript, see section 15.3.26 JavaScript Format Strings. +Likewise for JavaScript, see section 15.3.26 JavaScript Format Strings.
  • diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_4.html gettext-0.19.7/gettext-tools/doc/gettext_4.html --- gettext-0.19.6/gettext-tools/doc/gettext_4.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_4.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - 4 Preparing Program Sources @@ -35,7 +35,7 @@

    Presuming that your set of programs, or package, has been adjusted so all needed GNU gettext files are available, and your -‘Makefile’ files are adjusted (see section 13 The Maintainer's View), each C module +‘Makefile’ files are adjusted (see section 13 The Maintainer's View), each C module having translated C strings should contain the line:

    @@ -594,7 +594,7 @@ the function call; this is useful in C++. All this is achieved using xgettext's ‘--keyword’ option. How to pass such an option to xgettext, assuming that gettextize is used, is described -in section 13.4.3 ‘Makevars’ in ‘po/’ and section 13.5.6 AM_XGETTEXT_OPTION in ‘po.m4’. +in section 13.4.3 ‘Makevars’ in ‘po/’ and section 13.5.6 AM_XGETTEXT_OPTION in ‘po.m4’.

    @@ -999,7 +999,7 @@ { static const char *messages[] = { - gettext_noop ("some very meaningful message", + gettext_noop ("some very meaningful message"), gettext_noop ("and another one") }; const char *string; diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_5.html gettext-0.19.7/gettext-tools/doc/gettext_5.html --- gettext-0.19.6/gettext-tools/doc/gettext_5.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_5.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - 5 Making the PO Template File @@ -646,19 +646,31 @@ Write out a NeXTstep/GNUstep localized resource file in .strings syntax. Note that this file format doesn't support plural forms. +

    ‘--its=file +
    + +Use ITS rules defined in file. +Note that this is only effective with XML files. + +
    ‘--itstool’ +
    + +Write out comments recognized by itstool (http://itstool.org). +Note that this is only effective with XML files. +
    ‘-w number
    ‘--width=number
    - - + + Set the output page width. Long strings in the output files will be split across multiple lines in order to ensure that each line's width (= number of screen columns) is less or equal to the given number.
    ‘--no-wrap’
    - + Do not break long message lines. Message lines whose width exceeds the output page width will not be split into several lines. Only file reference lines which are wider than the output page width will be split. @@ -667,9 +679,9 @@
    ‘--sort-output’
    - - + + Generate sorted output. Note that using this option makes it much harder for the translator to understand each message's context. @@ -677,16 +689,16 @@
    ‘--sort-by-file’
    - - + + Sort output by file location.
    ‘--omit-header’
    - + Don't write header with ‘msgid ""’ entry. - + This is useful for testing purposes because it eliminates a source of variance for generated .gmo files. With --omit-header, two invocations of xgettext on the same files with the same @@ -697,7 +709,7 @@
    ‘--copyright-holder=string
    - + Set the copyright holder in the output. string should be the copyright holder of the surrounding package. (Note that the msgstr strings, extracted from the package's sources, belong to the copyright @@ -713,25 +725,25 @@
    ‘--foreign-user’
    - + Omit FSF copyright in output. This option is equivalent to ‘--copyright-holder=”’. It can be useful for packages outside the GNU project that want their translations to be in the public domain.
    ‘--package-name=package
    - + Set the package name in the header of the output.
    ‘--package-version=version
    - + Set the package version in the header of the output. This option has an effect only if the ‘--package-name’ option is also used.
    ‘--msgid-bugs-address=email@address
    - + Set the reporting address for msgid bugs. This is the email address or URL to which the translators shall report bugs in the untranslated strings: @@ -765,16 +777,16 @@
    ‘--msgstr-prefix[=string]’
    - - + + Use string (or "" if not specified) as prefix for msgstr values.
    ‘-M[string]’
    ‘--msgstr-suffix[=string]’
    - - + + Use string (or "" if not specified) as suffix for msgstr values.
    @@ -789,16 +801,16 @@
    ‘--help’
    - - + + Display this help and exit.
    ‘-V’
    ‘--version’
    - - + + Output version information and exit.
    diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_6.html gettext-0.19.7/gettext-tools/doc/gettext_6.html --- gettext-0.19.6/gettext-tools/doc/gettext_6.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_6.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - 6 Creating a New PO File @@ -13,7 +13,7 @@

    6 Creating a New PO File

    - +

    @@ -48,16 +48,16 @@

    6.1 Invoking the msginit Program

    - - + +

     msginit [option]
     

    - - + + The msginit program creates a new PO file, initializing the meta information with values from the user's environment. @@ -117,8 +117,8 @@

    ‘--input=inputfile
    - - + + Input POT file.
    @@ -138,8 +138,8 @@
    ‘--output-file=file
    - - + + Write output to specified PO file.
    @@ -160,14 +160,14 @@
    ‘--properties-input’
    - - + + Assume the input file is a Java ResourceBundle in Java .properties syntax, not in PO file syntax.
    ‘--stringtable-input’
    - + Assume the input file is a NeXTstep/GNUstep localized resource file in .strings syntax, not in PO file syntax. @@ -183,15 +183,15 @@
    ‘--locale=ll_CC
    - - + + Set target locale. ll should be a language code, and CC should be a country code. The command ‘locale -a’ can be used to output a list of all installed locales. The default is the user's locale setting.
    ‘--no-translator’
    - + Declares that the PO file will not have a human translator and is instead automatically generated. @@ -199,13 +199,13 @@
    ‘--color=when
    - + Specify whether or when to use colors and other text attributes. See section 9.11.1 The --color option for details.
    ‘--style=style_file
    - + Specify the CSS style rule file to use for --color. See section 9.11.3 The --style option for details. @@ -213,15 +213,15 @@
    ‘--properties-output’
    - - + + Write out a Java ResourceBundle in Java .properties syntax. Note that this file format doesn't support plural forms and silently drops obsolete messages.
    ‘--stringtable-output’
    - + Write out a NeXTstep/GNUstep localized resource file in .strings syntax. Note that this file format doesn't support plural forms. @@ -229,15 +229,15 @@
    ‘--width=number
    - - + + Set the output page width. Long strings in the output files will be split across multiple lines in order to ensure that each line's width (= number of screen columns) is less or equal to the given number.
    ‘--no-wrap’
    - + Do not break long message lines. Message lines whose width exceeds the output page width will not be split into several lines. Only file reference lines which are wider than the output page width will be split. @@ -254,16 +254,16 @@
    ‘--help’
    - - + + Display this help and exit.
    ‘-V’
    ‘--version’
    - - + + Output version information and exit.
    @@ -272,7 +272,7 @@

    6.2 Filling in the Header Entry

    - +

    @@ -342,7 +342,7 @@ your translation team, not only to make sure you don't do duplicated work, but also to coordinate difficult linguistic issues. - + In the Free Translation Project, each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, http://translationproject.org/, in the "Teams" @@ -358,7 +358,7 @@

  • ll, an ISO 639 two-letter language code (lowercase). -See section A Language Codes for the list of codes. +See section A Language Codes for the list of codes.
  • @@ -367,8 +367,8 @@ country code (uppercase). The country code specification is not redundant: Some languages have dialects in different countries. For example, ‘de_AT’ is used for Austria, and ‘pt_BR’ for Brazil. The country -code serves to distinguish the dialects. See section A Language Codes and -section B Country Codes for the lists of codes. +code serves to distinguish the dialects. See section A Language Codes and +section B Country Codes for the lists of codes.
  • @@ -407,14 +407,14 @@
    Content-Type
    - - + + Replace ‘CHARSET’ with the character encoding used for your language, in your locale, or UTF-8. This field is needed for correct operation of the msgmerge and msgfmt programs, as well as for users whose -locale's character encoding differs from yours (see section 11.2.4 How to specify the output character set gettext uses). +locale's character encoding differs from yours (see section 11.2.4 How to specify the output character set gettext uses). - + You get the character encoding of your locale by running the shell command ‘locale charmap’. If the result is ‘C’ or ‘ANSI_X3.4-1968’, which is equivalent to ‘ASCII’ (= ‘US-ASCII’), it means that your @@ -422,7 +422,7 @@ team which charset to use. ‘ASCII’ is not usable for any language except Latin. - + Because the PO files must be portable to operating systems with less advanced internationalization facilities, the character encodings that can be used are limited to those supported by both GNU libc and GNU @@ -439,11 +439,11 @@ BIG5, BIG5-HKSCS, GBK, GB18030, SHIFT_JIS, JOHAB, TIS-620, VISCII, GEORGIAN-PS, UTF-8. - + In the GNU system, the following encodings are frequently used for the corresponding languages. - +
    • ISO-8859-1 for @@ -503,8 +503,8 @@
    - - + + When single quote characters or double quote characters are used in translations for your language, and your locale's encoding is one of the ISO-8859-* charsets, it is best if you create your PO files in UTF-8 @@ -516,7 +516,7 @@ vertical apostrophe and the vertical double quote instead (because that's what the character set conversion will transliterate them to). - + To enter such quote characters under X11, you can change your keyboard mapping using the xmodmap program. The X11 names of the quote characters are "leftsinglequotemark", "rightsinglequotemark", @@ -538,8 +538,8 @@
    This field is optional. It is only needed if the PO file has plural forms. You can find them by searching for the ‘msgid_plural’ keyword. The -format of the plural forms field is described in section 11.2.6 Additional functions for plural forms and -section 12.6 Translating plural forms. +format of the plural forms field is described in section 11.2.6 Additional functions for plural forms and +section 12.6 Translating plural forms.

  • diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_7.html gettext-0.19.7/gettext-tools/doc/gettext_7.html --- gettext-0.19.6/gettext-tools/doc/gettext_7.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_7.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - 7 Updating Existing PO Files @@ -18,8 +18,8 @@

    7.1 Invoking the msgmerge Program

    - - + +

     msgmerge [option] def.po ref.pot
    @@ -56,8 +56,8 @@
     
    ‘--directory=directory
    - - + + Add directory to the list of directories. Source files are searched relative to this list of directories. The resulting ‘.po’ file will be written relative to the current directory, though. @@ -66,8 +66,8 @@
    ‘--compendium=file
    - - + + Specify an additional library of message translations. See section 8.4 Using Translation Compendia. This option may be specified more than once. @@ -83,8 +83,8 @@
    ‘--update’
    - - + + Update def.po. Do nothing if def.po is already up to date.
    @@ -99,14 +99,14 @@
    ‘--output-file=file
    - - + + Write output to specified file.

    - + The results are written to standard output if no output file is specified or if it is ‘-’. @@ -123,19 +123,19 @@

    ‘--backup=control
    - - + + Make a backup of def.po
    ‘--suffix=suffix
    - + Override the usual backup suffix.

    - + The version control method may be selected via the --backup option or through the VERSION_CONTROL environment variable. Here are the values: @@ -185,22 +185,22 @@

    ‘--multi-domain’
    - - + + Apply ref.pot to each of the domains in def.po.
    ‘-N’
    ‘--no-fuzzy-matching’
    - - + + Do not use fuzzy matching when an exact match is not found. This may speed up the operation considerably.
    ‘--previous’
    - + Keep the previous msgids of translated messages, marked with ‘#|’, when adding the fuzzy marker to such messages.
    @@ -215,14 +215,14 @@
    ‘--properties-input’
    - - + + Assume the input files are Java ResourceBundles in Java .properties syntax, not in PO file syntax.
    ‘--stringtable-input’
    - + Assume the input files are NeXTstep/GNUstep localized resource files in .strings syntax, not in PO file syntax. @@ -236,7 +236,7 @@
    ‘--lang=catalogname
    - + Specify the ‘Language’ field to be used in the header entry. See section 6.2 Filling in the Header Entry for the meaning of this field. Note: The ‘Language-Team’ and ‘Plural-Forms’ fields are left unchanged. @@ -247,39 +247,39 @@
    ‘--color=when
    - + Specify whether or when to use colors and other text attributes. See section 9.11.1 The --color option for details.
    ‘--style=style_file
    - + Specify the CSS style rule file to use for --color. See section 9.11.3 The --style option for details.
    ‘--force-po’
    - + Always write an output file even if it contains no message.
    ‘-i’
    ‘--indent’
    - - + + Write the .po file using indented style.
    ‘--no-location’
    - + Do not write ‘#: filename:line lines.
    ‘-n’
    ‘--add-location=type
    - + Generate ‘#: filename:line lines (default). The optional type can be either ‘full’, ‘file’, or @@ -290,7 +290,7 @@
    ‘--strict’
    - + Write out a strict Uniforum conforming PO file. Note that this Uniforum format should be avoided because it doesn't support the GNU extensions. @@ -299,15 +299,15 @@
    ‘--properties-output’
    - - + + Write out a Java ResourceBundle in Java .properties syntax. Note that this file format doesn't support plural forms and silently drops obsolete messages.
    ‘--stringtable-output’
    - + Write out a NeXTstep/GNUstep localized resource file in .strings syntax. Note that this file format doesn't support plural forms. @@ -315,15 +315,15 @@
    ‘--width=number
    - - + + Set the output page width. Long strings in the output files will be split across multiple lines in order to ensure that each line's width (= number of screen columns) is less or equal to the given number.
    ‘--no-wrap’
    - + Do not break long message lines. Message lines whose width exceeds the output page width will not be split into several lines. Only file reference lines which are wider than the output page width will be split. @@ -332,9 +332,9 @@
    ‘--sort-output’
    - - + + Generate sorted output. Note that using this option makes it much harder for the translator to understand each message's context. @@ -342,8 +342,8 @@
    ‘--sort-by-file’
    - - + + Sort output by file location.
    @@ -358,24 +358,24 @@
    ‘--help’
    - - + + Display this help and exit.
    ‘-V’
    ‘--version’
    - - + + Output version information and exit.
    ‘-v’
    ‘--verbose’
    - - + + Increase verbosity level.
    ‘-q’ @@ -384,9 +384,9 @@
    ‘--silent’
    - - + + Suppress progress indicators.
    diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_8.html gettext-0.19.7/gettext-tools/doc/gettext_8.html --- gettext-0.19.6/gettext-tools/doc/gettext_8.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_8.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - 8 Editing PO Files @@ -13,7 +13,7 @@

    8 Editing PO Files

    - +

    @@ -21,21 +21,21 @@

    8.1 KDE's PO File Editor

    - +

    8.2 GNOME's PO File Editor

    - +

    8.3 Emacs's PO File Editor

    - +

    @@ -64,8 +64,8 @@

    8.3.1 Completing GNU gettext Installation

    - - + + Once you have received, unpacked, configured and compiled the GNU gettext distribution, the ‘make install’ command puts in place the programs xgettext, msgfmt, gettext, and @@ -75,8 +75,8 @@

    - - + + During the installation of the PO mode, you might want to modify your file ‘.emacs’, once and for all, so it contains a few lines looking like: @@ -126,8 +126,8 @@

    8.3.2 Main PO mode Commands

    - - + + After setting up Emacs with something similar to the lines in section 8.3.1 Completing GNU gettext Installation, PO mode is activated for a window when Emacs finds a PO file in that window. This puts the window read-only and establishes a @@ -159,47 +159,47 @@

    _
    - + Undo last modification to the PO file (po-undo).
    Q
    - + Quit processing and save the PO file (po-quit).
    q
    - + Quit processing, possibly after confirmation (po-confirm-and-quit).
    0
    - + Temporary leave the PO file window (po-other-window).
    ?
    h
    - - + + Show help about PO mode (po-help).
    =
    - + Give some PO file statistics (po-statistics).
    V
    - + Batch validate the format of the whole PO file (po-validate).

    - - + + The command _ (po-undo) interfaces to the Emacs undo facility. See section ‘Undoing Changes’ in The Emacs Editor. Each time _ is typed, modifications which the translator did to the PO file are undone a little more. For the purpose of @@ -211,10 +211,10 @@

    - - + + The commands Q (po-quit) and q (po-confirm-and-quit) are used when the translator is done with the PO file. The former is a bit less verbose than the latter. If the file @@ -227,8 +227,8 @@

    - - + + The command 0 (po-other-window) is another, softer way, to leave PO mode, temporarily. It just moves the cursor to some other Emacs window, and pops one if necessary. For example, if the translator @@ -242,9 +242,9 @@

    - - + + The command h (po-help) displays a summary of all available PO mode commands. The translator should then type any character to resume normal PO mode operations. The command ? has the same effect @@ -252,8 +252,8 @@

    - - + + The command = (po-statistics) computes the total number of entries in the PO file, the ordinal of the current entry (counted from 1), the number of untranslated entries, the number of obsolete entries, @@ -261,8 +261,8 @@

    - - + + The command V (po-validate) launches msgfmt in checking and verbose mode over the current PO file. This command first offers to save the @@ -273,7 +273,7 @@

    - + The program msgfmt runs asynchronously with Emacs, so the translator regains control immediately while her PO file is being studied. Error output is collected in the Emacs ‘*compilation*’ buffer, @@ -289,7 +289,7 @@

    8.3.3 Entry Positioning

    - + The cursor in a PO file window is almost always part of an entry. The only exceptions are the special case when the cursor is after the last entry in the file, or when the PO file is @@ -300,7 +300,7 @@

    - + Some PO mode commands alter the position of the cursor in a specialized way. A few of those special purpose positioning are described here, the others are described in following sections (for a complete list try @@ -311,51 +311,51 @@

    .
    - + Redisplay the current entry (po-current-entry).
    n
    - + Select the entry after the current one (po-next-entry).
    p
    - + Select the entry before the current one (po-previous-entry).
    <
    - + Select the first entry in the PO file (po-first-entry).
    >
    - + Select the last entry in the PO file (po-last-entry).
    m
    - + Record the location of the current entry for later use (po-push-location).
    r
    - + Return to a previously saved entry location (po-pop-location).
    x
    - + Exchange the current entry location with the previously saved one (po-exchange-location).

    - - + + Any Emacs command able to reposition the cursor may be used to select the current entry in PO mode, including commands which move by characters, lines, paragraphs, screens or pages, and search @@ -384,10 +384,10 @@

    - - + + The commands n (po-next-entry) and p (po-previous-entry) move the cursor the entry following, or preceding, the current one. If n is given while the @@ -396,10 +396,10 @@

    - - + + The commands < (po-first-entry) and > (po-last-entry) move the cursor to the first entry, or last entry, of the PO file. When the cursor is located past the last @@ -422,10 +422,10 @@

    - - + + PO mode offers another approach, by which cursor locations may be saved onto a special stack. The command m (po-push-location) merely adds the location of current entry to the stack, pushing @@ -445,8 +445,8 @@

    - - + + The command x (po-exchange-location) simultaneously repositions the cursor to the entry associated with the top element of the stack of saved locations, and replaces that top element with the @@ -461,7 +461,7 @@

    8.3.4 Normalizing Strings in Entries

    - +

    @@ -495,12 +495,12 @@

    - +

    M-x po-normalize
    - + Tidy the whole PO file by making entries more uniform.
    @@ -532,7 +532,7 @@

    - + Having such an explicit normalizing command allows for importing PO files from other sources, but also eases the evolution of the current convention, evolution driven mostly by aesthetic concerns, as of now. @@ -545,7 +545,7 @@

    - + Right now, in PO mode, strings are single line or multi-line. A string goes multi-line if and only if it has embedded newlines, that is, if it matches ‘[^\n]\n+[^\n]’. So, we would have: @@ -598,7 +598,7 @@

    8.3.5 Translated Entries

    - +

    @@ -610,7 +610,7 @@

    - + Some commands are more specifically related to translated entry processing.

    @@ -618,21 +618,21 @@
    t
    - + Find the next translated entry (po-next-translated-entry).
    T
    - + Find the previous translated entry (po-previous-translated-entry).

    - - + + The commands t (po-next-translated-entry) and T (po-previous-translated-entry) move forwards or backwards, chasing for an translated entry. If none is found, the search is extended and @@ -640,7 +640,7 @@

    - + Translated entries usually result from the translator having edited in a translation for them, section 8.3.9 Modifying Translations. However, if the variable po-auto-fuzzy-on-edit is not nil, the entry having @@ -653,12 +653,12 @@

    8.3.6 Fuzzy Entries

    - +

    - - + + Each PO file entry may have a set of attributes, which are qualities given a name and explicitly associated with the translation, using a special system comment. One of these attributes @@ -681,7 +681,7 @@

    - + Also, the translator may decide herself to mark an entry as fuzzy for her own convenience, when she wants to remember that the entry has to be later revisited. So, some commands are more specifically @@ -692,26 +692,26 @@

    f
    - + Find the next fuzzy entry (po-next-fuzzy-entry).
    F
    - + Find the previous fuzzy entry (po-previous-fuzzy-entry).
    TAB
    - + Remove the fuzzy attribute of the current entry (po-unfuzzy).

    - - + + The commands f (po-next-fuzzy-entry) and F (po-previous-fuzzy-entry) move forwards or backwards, chasing for a fuzzy entry. If none is found, the search is extended and wraps @@ -719,9 +719,9 @@

    - - + + The command TAB (po-unfuzzy) removes the fuzzy attribute associated with an entry, usually leaving it translated. Further, if the variable po-auto-select-on-unfuzzy has not @@ -743,8 +743,8 @@

    - - + + The translator may also use the DEL command (po-fade-out-entry) over any translated entry to mark it as being fuzzy, when she wants to easily leave a trace she wants to later return @@ -761,7 +761,7 @@

    8.3.7 Untranslated Entries

    - +

    @@ -781,7 +781,7 @@

    - + The work of the translator might be (quite naively) seen as the process of seeking for an untranslated entry, editing a translation for it, and repeating these actions until no untranslated entries remain. @@ -793,26 +793,26 @@

    u
    - + Find the next untranslated entry (po-next-untranslated-entry).
    U
    - + Find the previous untranslated entry (po-previous-untransted-entry).
    k
    - + Turn the current entry into an untranslated one (po-kill-msgstr).

    - - + + The commands u (po-next-untranslated-entry) and U (po-previous-untransted-entry) move forwards or backwards, chasing for an untranslated entry. If none is found, the search is @@ -820,8 +820,8 @@

    - - + + An entry can be turned back into an untranslated entry by merely emptying its translation, using the command k (po-kill-msgstr). See section 8.3.9 Modifying Translations. @@ -837,7 +837,7 @@

    8.3.8 Obsolete Entries

    - +

    @@ -863,7 +863,7 @@

    - + Moreover, some commands are more specifically related to obsolete entry processing. @@ -872,27 +872,27 @@

    o
    - + Find the next obsolete entry (po-next-obsolete-entry).
    O
    - + Find the previous obsolete entry (po-previous-obsolete-entry).
    DEL
    - + Make an active entry obsolete, or zap out an obsolete entry (po-fade-out-entry).

    - - + + The commands o (po-next-obsolete-entry) and O (po-previous-obsolete-entry) move forwards or backwards, chasing for an obsolete entry. If none is found, the search is @@ -908,10 +908,10 @@

    - - + + However, it is possible to comment out an active entry, so making it obsolete. GNU gettext utilities will later react to the disappearance of a translation by using the untranslated string. @@ -941,8 +941,8 @@

    8.3.9 Modifying Translations

    - - + +

    @@ -968,40 +968,40 @@

    RET
    - + Interactively edit the translation (po-edit-msgstr).
    LFD
    C-j
    - - + + Reinitialize the translation with the original, untranslated string (po-msgid-to-msgstr).
    k
    - + Save the translation on the kill ring, and delete it (po-kill-msgstr).
    w
    - + Save the translation on the kill ring, without deleting it (po-kill-ring-save-msgstr).
    y
    - + Replace the translation, taking the new from the kill ring (po-yank-msgstr).

    - - + + The command RET (po-edit-msgstr) opens a new Emacs window meant to edit in a new translation, or to modify an already existing translation. The new window contains a copy of the translation taken from @@ -1014,9 +1014,9 @@

    - - + + The command LFD (po-msgid-to-msgstr) initializes, or reinitializes the translation with the original string. This command is normally used when the translator wants to redo a fresh translation of @@ -1024,7 +1024,7 @@

    - + It is possible to arrange so, whenever editing an untranslated entry, the LFD command be automatically executed. If you set po-auto-edit-with-msgid to t, the translation gets @@ -1033,7 +1033,7 @@

    - + In fact, whether it is best to start a translation with an empty string, or rather with a copy of the original string, is a matter of taste or habit. Sometimes, the source language and the @@ -1047,11 +1047,11 @@

    - - + + The command k (po-kill-msgstr) merely empties the translation string, so turning the entry into an untranslated one. But while doing so, its previous contents is put apart in @@ -1083,8 +1083,8 @@

    - - + + The command y (po-yank-msgstr) completely replaces the translation of the current entry by a string taken from the kill ring. Following Emacs terminology, we then say that the replacement @@ -1118,7 +1118,7 @@

    - + To better illustrate the operation of killing and yanking, let's use an actual example, taken from a common situation. When the programmer slightly modifies some string right in the program, his @@ -1158,8 +1158,8 @@

    8.3.10 Modifying Comments

    - - + +

    @@ -1188,24 +1188,24 @@

    #
    - + Interactively edit the translator comments (po-edit-comment).
    K
    - + Save the translator comments on the kill ring, and delete it (po-kill-comment).
    W
    - + Save the translator comments on the kill ring, without deleting it (po-kill-ring-save-comment).
    Y
    - + Replace the translator comments, taking the new from the kill ring (po-yank-comment). @@ -1221,8 +1221,8 @@

    - - + + The command # (po-edit-comment) opens a new Emacs window containing a copy of the translator comments on the current PO file entry. If there are no such comments, PO mode understands that the translator wants @@ -1236,18 +1236,18 @@

    - + Functions found on po-subedit-mode-hook, if any, are executed after the string has been inserted in the edit buffer.

    - - + + The command K (po-kill-comment) gets rid of all translator comments, while saving those comments on the kill ring. The command W (po-kill-ring-save-comment) takes @@ -1288,7 +1288,7 @@

    8.3.11 Details of Sub Edition

    - +

    @@ -1301,25 +1301,25 @@

    C-c C-c
    - + Complete edition (po-subedit-exit).
    C-c C-k
    - + Abort edition (po-subedit-abort).
    C-c C-a
    - + Consult auxiliary PO files (po-subedit-cycle-auxiliary).

    - - + + The window's contents represents a translation for a given message, or a translator comment. The translator may modify this window to her heart's content. Once this is done, the command C-c C-c @@ -1329,8 +1329,8 @@

    - - + + If the translator becomes unsatisfied with her translation or comment, to the extent she prefers keeping what was existent prior to the RET or # command, she may use the command C-c C-k @@ -1341,8 +1341,8 @@

    - - + + The command C-c C-a (po-subedit-cycle-auxiliary) allows for glancing through translations already achieved in other languages, directly while editing the current @@ -1376,7 +1376,7 @@

    - + When a translation (or a comment) is being edited, the translator may move the cursor back into the PO file buffer and freely move to other entries, browsing at will. If, with an edition pending, the translator wanders in the @@ -1389,7 +1389,7 @@

    - + Pending subedits may be completed or aborted in any order, regardless of how or when they were started. When many subedits are pending and the translator asks for quitting the PO file (with the q command), subedits @@ -1400,9 +1400,9 @@

    8.3.12 C Sources Context

    - - + +

    @@ -1439,7 +1439,7 @@

    - + The following commands are meant to help the translator at getting program source context for a PO file entry. @@ -1448,35 +1448,35 @@

    s
    - + Resume the display of a program source context, or cycle through them (po-cycle-source-reference).
    M-s
    - + Display of a program source context selected by menu (po-select-source-reference).
    S
    - + Add a directory to the search path for source files (po-consider-source-path).
    M-S
    - + Delete a directory from the search path for source files (po-ignore-source-path).

    - - + + The commands s (po-cycle-source-reference) and M-s (po-select-source-reference) both open another window displaying some source program file, and already positioned in such a way that @@ -1521,10 +1521,10 @@

    - - + + Program source files are usually found relative to where the PO file stands. As a special provision, when this fails, the file is also looked for, but relative to the directory immediately above it. @@ -1544,7 +1544,7 @@

    8.3.13 Consulting Auxiliary PO Files

    - +

    @@ -1557,8 +1557,8 @@

    - - + + An auxiliary PO file is an existing PO file meant for the same package the translator is working on, but targeted to a different mother tongue language. Commands exist for declaring and handling auxiliary @@ -1573,41 +1573,41 @@

    a
    - + Seek auxiliary files for another translation for the same entry (po-cycle-auxiliary).
    C-c C-a
    - + Switch to a particular auxiliary file (po-select-auxiliary).
    A
    - + Declare this PO file as an auxiliary file (po-consider-as-auxiliary).
    M-A
    - + Remove this PO file from the list of auxiliary files (po-ignore-as-auxiliary).

    - - + + Command A (po-consider-as-auxiliary) adds the current PO file to the list of auxiliary files, while command M-A (po-ignore-as-auxiliary just removes it.

    - - + + The command a (po-cycle-auxiliary) seeks all auxiliary PO files, round-robin, searching for a translated entry in some other language having an msgid field identical as the one for the current entry. @@ -1619,8 +1619,8 @@

    - - + + The command C-c C-a (po-select-auxiliary) asks the translator for her choice of a particular auxiliary file, with completion, and then switches to that selected PO file. The command also checks if @@ -1640,7 +1640,7 @@

    - + However, PO files initially created by PO mode itself, while marking strings in source files, are normalised differently. So are PO files resulting of the ‘M-x normalize’ command. Until these @@ -1652,11 +1652,11 @@

    8.4 Using Translation Compendia

    - +

    - + A compendium is a special PO file containing a set of translations recurring in many different packages. The translator can use gettext tools to build a new compendium, to add entries to her @@ -1669,8 +1669,8 @@

    8.4.1 Creating Compendia

    - - + +

    @@ -1685,8 +1685,8 @@

    8.4.1.1 Concatenate PO Files

    - - + + To concatenate several valid PO files into one compendium file you can use ‘msgcomm’ or ‘msgcat’ (the latter preferred): @@ -1767,7 +1767,7 @@

    8.4.1.2 Extract a Message Subset from a PO File

    - +

    @@ -1798,7 +1798,7 @@

    8.4.2.1 Initialize a New Translation File

    - +

    @@ -1815,7 +1815,7 @@

    8.4.2.2 Update an Existing Translation File

    - +

    diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_9.html gettext-0.19.7/gettext-tools/doc/gettext_9.html --- gettext-0.19.6/gettext-tools/doc/gettext_9.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_9.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,7 +1,7 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - 9 Manipulating PO Files @@ -13,7 +13,7 @@

    9 Manipulating PO Files

    - +

    @@ -23,7 +23,7 @@

    - + When merging two packages into a single package, the resulting POT file will be the concatenation of the two packages' POT files. Thus the maintainer must concatenate the two existing package translations into @@ -33,7 +33,7 @@

    - + When a translator takes over the translation job from another translator, but she uses a different character encoding in her locale, she will convert the catalog to her character encoding. This is best done through @@ -49,8 +49,8 @@

    - - + + When a translator wants to adjust some translation catalog for a special dialect or orthography -- for example, German as written in Switzerland versus German as written in Germany -- she needs to apply some text @@ -67,14 +67,14 @@

    - + When a translator wants to check her translations, for example according to orthography rules or using a non-interactive spell checker, she can do so using the ‘msgexec’ program.

    - + When third party tools create PO or POT files, sometimes duplicates cannot be avoided. But the GNU gettext tools give an error when they encounter duplicate msgids in the same file and in the same domain. @@ -92,7 +92,7 @@

    - + ‘msgattrib’ can be used to select and extract only the fuzzy or untranslated messages of a translation catalog. @@ -114,16 +114,16 @@

    9.1 Invoking the msgcat Program

    - - + +

     msgcat [option] [inputfile]...
     

    - - + + The msgcat program concatenates and merges the specified PO files. It finds messages which are common to two or more of the specified PO files. By using the --more-than option, greater commonality may be requested @@ -149,8 +149,8 @@

    ‘--files-from=file
    - - + + Read the names of the input files from file instead of getting them from the command line. @@ -158,8 +158,8 @@
    ‘--directory=directory
    - - + + Add directory to the list of directories. Source files are searched relative to this list of directories. The resulting ‘.po’ file will be written relative to the current directory, though. @@ -180,14 +180,14 @@
    ‘--output-file=file
    - - + + Write output to specified file.

    - + The results are written to standard output if no output file is specified or if it is ‘-’. @@ -202,8 +202,8 @@

    ‘--less-than=number
    - - + + Print messages with less than number definitions, defaults to infinite if not set. @@ -211,8 +211,8 @@
    ‘--more-than=number
    - - + + Print messages with more than number definitions, defaults to 0 if not set. @@ -220,8 +220,8 @@
    ‘--unique’
    - - + + Shorthand for ‘--less-than=2’. Requests that only unique messages be printed. @@ -237,14 +237,14 @@
    ‘--properties-input’
    - - + + Assume the input files are Java ResourceBundles in Java .properties syntax, not in PO file syntax.
    ‘--stringtable-input’
    - + Assume the input files are NeXTstep/GNUstep localized resource files in .strings syntax, not in PO file syntax. @@ -260,19 +260,19 @@
    ‘--to-code=name
    - - + + Specify encoding for output.
    ‘--use-first’
    - + Use first available translation for each message. Don't merge several translations into one.
    ‘--lang=catalogname
    - + Specify the ‘Language’ field to be used in the header entry. See section 6.2 Filling in the Header Entry for the meaning of this field. Note: The ‘Language-Team’ and ‘Plural-Forms’ fields are left unchanged. @@ -281,40 +281,40 @@
    ‘--color=when
    - + Specify whether or when to use colors and other text attributes. See section 9.11.1 The --color option for details.
    ‘--style=style_file
    - + Specify the CSS style rule file to use for --color. See section 9.11.3 The --style option for details.
    ‘--force-po’
    - + Always write an output file even if it contains no message.
    ‘-i’
    ‘--indent’
    - - + + Write the .po file using indented style.
    ‘--no-location’
    - + Do not write ‘#: filename:line lines.
    ‘-n’
    ‘--add-location=type
    - - + + Generate ‘#: filename:line lines (default). The optional type can be either ‘full’, ‘file’, or @@ -325,7 +325,7 @@
    ‘--strict’
    - + Write out a strict Uniforum conforming PO file. Note that this Uniforum format should be avoided because it doesn't support the GNU extensions. @@ -334,15 +334,15 @@
    ‘--properties-output’
    - - + + Write out a Java ResourceBundle in Java .properties syntax. Note that this file format doesn't support plural forms and silently drops obsolete messages.
    ‘--stringtable-output’
    - + Write out a NeXTstep/GNUstep localized resource file in .strings syntax. Note that this file format doesn't support plural forms. @@ -350,15 +350,15 @@
    ‘--width=number
    - - + + Set the output page width. Long strings in the output files will be split across multiple lines in order to ensure that each line's width (= number of screen columns) is less or equal to the given number.
    ‘--no-wrap’
    - + Do not break long message lines. Message lines whose width exceeds the output page width will not be split into several lines. Only file reference lines which are wider than the output page width will be split. @@ -367,9 +367,9 @@
    ‘--sort-output’
    - - + + Generate sorted output. Note that using this option makes it much harder for the translator to understand each message's context. @@ -377,8 +377,8 @@
    ‘--sort-by-file’
    - - + + Sort output by file location.
    @@ -393,16 +393,16 @@
    ‘--help’
    - - + + Display this help and exit.
    ‘-V’
    ‘--version’
    - - + + Output version information and exit.
    @@ -412,15 +412,15 @@

    9.2 Invoking the msgconv Program

    - - + +

     msgconv [option] [inputfile]
     

    - + The msgconv program converts a translation catalog to a different character encoding. @@ -439,8 +439,8 @@

    ‘--directory=directory
    - - + + Add directory to the list of directories. Source files are searched relative to this list of directories. The resulting ‘.po’ file will be written relative to the current directory, though. @@ -461,8 +461,8 @@
    ‘--output-file=file
    - - + + Write output to specified file.
    @@ -482,8 +482,8 @@
    ‘--to-code=name
    - - + + Specify encoding for output.
    @@ -502,14 +502,14 @@
    ‘--properties-input’
    - - + + Assume the input file is a Java ResourceBundle in Java .properties syntax, not in PO file syntax.
    ‘--stringtable-input’
    - + Assume the input file is a NeXTstep/GNUstep localized resource file in .strings syntax, not in PO file syntax. @@ -525,39 +525,39 @@
    ‘--color=when
    - + Specify whether or when to use colors and other text attributes. See section 9.11.1 The --color option for details.
    ‘--style=style_file
    - + Specify the CSS style rule file to use for --color. See section 9.11.3 The --style option for details.
    ‘--force-po’
    - + Always write an output file even if it contains no message.
    ‘-i’
    ‘--indent’
    - - + + Write the .po file using indented style.
    ‘--no-location’
    - + Do not write ‘#: filename:line lines.
    ‘-n’
    ‘--add-location=type
    - + Generate ‘#: filename:line lines (default). The optional type can be either ‘full’, ‘file’, or @@ -568,7 +568,7 @@
    ‘--strict’
    - + Write out a strict Uniforum conforming PO file. Note that this Uniforum format should be avoided because it doesn't support the GNU extensions. @@ -577,15 +577,15 @@
    ‘--properties-output’
    - - + + Write out a Java ResourceBundle in Java .properties syntax. Note that this file format doesn't support plural forms and silently drops obsolete messages.
    ‘--stringtable-output’
    - + Write out a NeXTstep/GNUstep localized resource file in .strings syntax. Note that this file format doesn't support plural forms. @@ -593,15 +593,15 @@
    ‘--width=number
    - - + + Set the output page width. Long strings in the output files will be split across multiple lines in order to ensure that each line's width (= number of screen columns) is less or equal to the given number.
    ‘--no-wrap’
    - + Do not break long message lines. Message lines whose width exceeds the output page width will not be split into several lines. Only file reference lines which are wider than the output page width will be split. @@ -610,8 +610,8 @@
    ‘--sort-output’
    - - + + Generate sorted output. Note that using this option makes it much harder for the translator to understand each message's context. @@ -619,8 +619,8 @@
    ‘--sort-by-file’
    - - + + Sort output by file location.
    @@ -635,16 +635,16 @@
    ‘--help’
    - - + + Display this help and exit.
    ‘-V’
    ‘--version’
    - - + + Output version information and exit.
    @@ -654,15 +654,15 @@

    9.3 Invoking the msggrep Program

    - - + +

     msggrep [option] [inputfile]
     

    - + The msggrep program extracts all messages of a translation catalog that match a given pattern or belong to some given source files. @@ -681,8 +681,8 @@

    ‘--directory=directory
    - - + + Add directory to the list of directories. Source files are searched relative to this list of directories. The resulting ‘.po’ file will be written relative to the current directory, though. @@ -703,8 +703,8 @@
    ‘--output-file=file
    - - + + Write output to specified file.
    @@ -770,8 +770,8 @@
    ‘--location=sourcefile
    - - + + Select messages extracted from sourcefile. sourcefile can be either a literal file name or a wildcard pattern. @@ -779,96 +779,96 @@
    ‘--domain=domainname
    - - + + Select messages belonging to domain domainname.
    ‘-J’
    ‘--msgctxt’
    - - + + Start of patterns for the msgctxt.
    ‘-K’
    ‘--msgid’
    - - + + Start of patterns for the msgid.
    ‘-T’
    ‘--msgstr’
    - - + + Start of patterns for the msgstr.
    ‘-C’
    ‘--comment’
    - - + + Start of patterns for the translator's comment.
    ‘-X’
    ‘--extracted-comment’
    - - + + Start of patterns for the extracted comments.
    ‘-E’
    ‘--extended-regexp’
    - - + + Specify that pattern is an extended regular expression.
    ‘-F’
    ‘--fixed-strings’
    - - + + Specify that pattern is a set of newline-separated strings.
    ‘-e pattern
    ‘--regexp=pattern
    - - + + Use pattern as a regular expression.
    ‘-f file
    ‘--file=file
    - - + + Obtain pattern from file.
    ‘-i’
    ‘--ignore-case’
    - - + + Ignore case distinctions.
    ‘-v’
    ‘--invert-match’
    - - + + Output only the messages that do not match any selection criterion, instead of the messages that match a selection criterion. @@ -884,14 +884,14 @@
    ‘--properties-input’
    - - + + Assume the input file is a Java ResourceBundle in Java .properties syntax, not in PO file syntax.
    ‘--stringtable-input’
    - + Assume the input file is a NeXTstep/GNUstep localized resource file in .strings syntax, not in PO file syntax. @@ -907,36 +907,36 @@
    ‘--color=when
    - + Specify whether or when to use colors and other text attributes. See section 9.11.1 The --color option for details.
    ‘--style=style_file
    - + Specify the CSS style rule file to use for --color. See section 9.11.3 The --style option for details.
    ‘--force-po’
    - + Always write an output file even if it contains no message.
    ‘--indent’
    - + Write the .po file using indented style.
    ‘--no-location’
    - + Do not write ‘#: filename:line lines.
    ‘-n’
    ‘--add-location=type
    - + Generate ‘#: filename:line lines (default). The optional type can be either ‘full’, ‘file’, or @@ -947,7 +947,7 @@
    ‘--strict’
    - + Write out a strict Uniforum conforming PO file. Note that this Uniforum format should be avoided because it doesn't support the GNU extensions. @@ -956,15 +956,15 @@
    ‘--properties-output’
    - - + + Write out a Java ResourceBundle in Java .properties syntax. Note that this file format doesn't support plural forms and silently drops obsolete messages.
    ‘--stringtable-output’
    - + Write out a NeXTstep/GNUstep localized resource file in .strings syntax. Note that this file format doesn't support plural forms. @@ -972,28 +972,28 @@
    ‘--width=number
    - - + + Set the output page width. Long strings in the output files will be split across multiple lines in order to ensure that each line's width (= number of screen columns) is less or equal to the given number.
    ‘--no-wrap’
    - + Do not break long message lines. Message lines whose width exceeds the output page width will not be split into several lines. Only file reference lines which are wider than the output page width will be split.
    ‘--sort-output’
    - + Generate sorted output. Note that using this option makes it much harder for the translator to understand each message's context.
    ‘--sort-by-file’
    - + Sort output by file location. @@ -1008,16 +1008,16 @@
    ‘--help’
    - - + + Display this help and exit.
    ‘-V’
    ‘--version’
    - - + + Output version information and exit. @@ -1071,28 +1071,28 @@

    9.4 Invoking the msgfilter Program

    - - + +

     msgfilter [option] filter [filter-option]
     

    - + The msgfilter program applies a filter to all translations of a translation catalog.

    - - + + During each filter invocation, the environment variable MSGFILTER_MSGID is bound to the message's msgid, and the environment variable MSGFILTER_LOCATION is bound to the location in the PO file @@ -1119,16 +1119,16 @@

    ‘--input=inputfile
    - - + + Input PO file.
    ‘-D directory
    ‘--directory=directory
    - - + + Add directory to the list of directories. Source files are searched relative to this list of directories. The resulting ‘.po’ file will be written relative to the current directory, though. @@ -1149,8 +1149,8 @@
    ‘--output-file=file
    - - + + Write output to specified file. @@ -1175,14 +1175,14 @@
    ‘--newline’
    - + Add newline at the end of each input line and also strip the ending newline from the output line.

    - + Note: If the filter is not a built-in filter, you have to care about encodings: It is your responsibility to ensure that the filter can cope with input encoded in the translation catalog's encoding. If the @@ -1196,7 +1196,7 @@

    - + Note: Most translations in a translation catalog don't end with a newline character. For this reason, unless the --newline option is used, it is important that the filter recognizes its @@ -1217,16 +1217,16 @@

    ‘--expression=script
    - - + + Add script to the commands to be executed.
    ‘-f scriptfile
    ‘--file=scriptfile
    - - + + Add the contents of scriptfile to the commands to be executed.
    ‘-n’ @@ -1235,9 +1235,9 @@
    ‘--silent’
    - - + + Suppress automatic printing of pattern space. @@ -1247,8 +1247,8 @@

    9.4.5 Built-in filters

    - - + + The filter ‘recode-sr-latin’ is recognized as a built-in filter. The command ‘recode-sr-latin’ converts Serbian text, written in the Cyrillic script, to the Latin script. @@ -1258,14 +1258,14 @@

    - + The filter ‘quot’ is recognized as a built-in filter. The command ‘msgfilter quot’ converts any quotations surrounded by a pair of ‘"’, ‘'’, and ‘`’.

    - + The filter ‘boldquot’ is recognized as a built-in filter. The command ‘msgfilter boldquot’ converts any quotations surrounded by a pair of ‘"’, ‘'’, and ‘`’, also adding the @@ -1288,14 +1288,14 @@

    ‘--properties-input’
    - - + + Assume the input file is a Java ResourceBundle in Java .properties syntax, not in PO file syntax.
    ‘--stringtable-input’
    - + Assume the input file is a NeXTstep/GNUstep localized resource file in .strings syntax, not in PO file syntax. @@ -1311,43 +1311,43 @@
    ‘--color=when
    - + Specify whether or when to use colors and other text attributes. See section 9.11.1 The --color option for details.
    ‘--style=style_file
    - + Specify the CSS style rule file to use for --color. See section 9.11.3 The --style option for details.
    ‘--force-po’
    - + Always write an output file even if it contains no message.
    ‘--indent’
    - + Write the .po file using indented style.
    ‘--keep-header’
    - + Keep the header entry, i.e. the message with ‘msgid ""’, unmodified, instead of filtering it. By default, the header entry is subject to filtering like any other message.
    ‘--no-location’
    - + Do not write ‘#: filename:line lines.
    ‘-n’
    ‘--add-location=type
    - + Generate ‘#: filename:line lines (default). The optional type can be either ‘full’, ‘file’, or @@ -1358,7 +1358,7 @@
    ‘--strict’
    - + Write out a strict Uniforum conforming PO file. Note that this Uniforum format should be avoided because it doesn't support the GNU extensions. @@ -1367,15 +1367,15 @@
    ‘--properties-output’
    - - + + Write out a Java ResourceBundle in Java .properties syntax. Note that this file format doesn't support plural forms and silently drops obsolete messages.
    ‘--stringtable-output’
    - + Write out a NeXTstep/GNUstep localized resource file in .strings syntax. Note that this file format doesn't support plural forms. @@ -1383,15 +1383,15 @@
    ‘--width=number
    - - + + Set the output page width. Long strings in the output files will be split across multiple lines in order to ensure that each line's width (= number of screen columns) is less or equal to the given number.
    ‘--no-wrap’
    - + Do not break long message lines. Message lines whose width exceeds the output page width will not be split into several lines. Only file reference lines which are wider than the output page width will be split. @@ -1400,8 +1400,8 @@
    ‘--sort-output’
    - - + + Generate sorted output. Note that using this option makes it much harder for the translator to understand each message's context. @@ -1409,8 +1409,8 @@
    ‘--sort-by-file’
    - - + + Sort output by file location. @@ -1425,16 +1425,16 @@
    ‘--help’
    - - + + Display this help and exit.
    ‘-V’
    ‘--version’
    - - + + Output version information and exit. @@ -1466,16 +1466,16 @@

    9.5 Invoking the msguniq Program

    - - + +

     msguniq [option] [inputfile]
     

    - - + + The msguniq program unifies duplicate translations in a translation catalog. It finds duplicate translations of the same message ID. Such duplicates are invalid input for other programs like msgfmt, @@ -1502,8 +1502,8 @@

    ‘--directory=directory
    - - + + Add directory to the list of directories. Source files are searched relative to this list of directories. The resulting ‘.po’ file will be written relative to the current directory, though. @@ -1524,8 +1524,8 @@
    ‘--output-file=file
    - - + + Write output to specified file. @@ -1545,16 +1545,16 @@
    ‘--repeated’
    - - + + Print only duplicates.
    ‘-u’
    ‘--unique’
    - - + + Print only unique messages, discard duplicates. @@ -1569,14 +1569,14 @@
    ‘--properties-input’
    - - + + Assume the input file is a Java ResourceBundle in Java .properties syntax, not in PO file syntax.
    ‘--stringtable-input’
    - + Assume the input file is a NeXTstep/GNUstep localized resource file in .strings syntax, not in PO file syntax. @@ -1592,13 +1592,13 @@
    ‘--to-code=name
    - - + + Specify encoding for output.
    ‘--use-first’
    - + Use first available translation for each message. Don't merge several translations into one. @@ -1606,40 +1606,40 @@
    ‘--color=when
    - + Specify whether or when to use colors and other text attributes. See section 9.11.1 The --color option for details.
    ‘--style=style_file
    - + Specify the CSS style rule file to use for --color. See section 9.11.3 The --style option for details.
    ‘--force-po’
    - + Always write an output file even if it contains no message.
    ‘-i’
    ‘--indent’
    - - + + Write the .po file using indented style.
    ‘--no-location’
    - + Do not write ‘#: filename:line lines.
    ‘-n’
    ‘--add-location=type
    - - + + Generate ‘#: filename:line lines (default). The optional type can be either ‘full’, ‘file’, or @@ -1650,7 +1650,7 @@
    ‘--strict’
    - + Write out a strict Uniforum conforming PO file. Note that this Uniforum format should be avoided because it doesn't support the GNU extensions. @@ -1659,15 +1659,15 @@
    ‘--properties-output’
    - - + + Write out a Java ResourceBundle in Java .properties syntax. Note that this file format doesn't support plural forms and silently drops obsolete messages.
    ‘--stringtable-output’
    - + Write out a NeXTstep/GNUstep localized resource file in .strings syntax. Note that this file format doesn't support plural forms. @@ -1675,15 +1675,15 @@
    ‘--width=number
    - - + + Set the output page width. Long strings in the output files will be split across multiple lines in order to ensure that each line's width (= number of screen columns) is less or equal to the given number.
    ‘--no-wrap’
    - + Do not break long message lines. Message lines whose width exceeds the output page width will not be split into several lines. Only file reference lines which are wider than the output page width will be split. @@ -1692,8 +1692,8 @@
    ‘--sort-output’
    - - + + Generate sorted output. Note that using this option makes it much harder for the translator to understand each message's context. @@ -1701,8 +1701,8 @@
    ‘--sort-by-file’
    - - + + Sort output by file location. @@ -1717,16 +1717,16 @@
    ‘--help’
    - - + + Display this help and exit.
    ‘-V’
    ‘--version’
    - - + + Output version information and exit. @@ -1736,15 +1736,15 @@

    9.6 Invoking the msgcomm Program

    - - + +

     msgcomm [option] [inputfile]...
     

    - + The msgcomm program finds messages which are common to two or more of the specified PO files. By using the --more-than option, greater commonality may be requested @@ -1770,8 +1770,8 @@

    ‘--files-from=file
    - - + + Read the names of the input files from file instead of getting them from the command line. @@ -1779,8 +1779,8 @@
    ‘--directory=directory
    - - + + Add directory to the list of directories. Source files are searched relative to this list of directories. The resulting ‘.po’ file will be written relative to the current directory, though. @@ -1801,8 +1801,8 @@
    ‘--output-file=file
    - - + + Write output to specified file. @@ -1822,8 +1822,8 @@
    ‘--less-than=number
    - - + + Print messages with less than number definitions, defaults to infinite if not set. @@ -1831,8 +1831,8 @@
    ‘--more-than=number
    - - + + Print messages with more than number definitions, defaults to 1 if not set. @@ -1840,8 +1840,8 @@
    ‘--unique’
    - - + + Shorthand for ‘--less-than=2’. Requests that only unique messages be printed. @@ -1857,14 +1857,14 @@
    ‘--properties-input’
    - - + + Assume the input files are Java ResourceBundles in Java .properties syntax, not in PO file syntax.
    ‘--stringtable-input’
    - + Assume the input files are NeXTstep/GNUstep localized resource files in .strings syntax, not in PO file syntax. @@ -1880,40 +1880,40 @@
    ‘--color=when
    - + Specify whether or when to use colors and other text attributes. See section 9.11.1 The --color option for details.
    ‘--style=style_file
    - + Specify the CSS style rule file to use for --color. See section 9.11.3 The --style option for details.
    ‘--force-po’
    - + Always write an output file even if it contains no message.
    ‘-i’
    ‘--indent’
    - - + + Write the .po file using indented style.
    ‘--no-location’
    - + Do not write ‘#: filename:line lines.
    ‘-n’
    ‘--add-location=type
    - - + + Generate ‘#: filename:line lines (default). The optional type can be either ‘full’, ‘file’, or @@ -1924,7 +1924,7 @@
    ‘--strict’
    - + Write out a strict Uniforum conforming PO file. Note that this Uniforum format should be avoided because it doesn't support the GNU extensions. @@ -1933,15 +1933,15 @@
    ‘--properties-output’
    - - + + Write out a Java ResourceBundle in Java .properties syntax. Note that this file format doesn't support plural forms and silently drops obsolete messages.
    ‘--stringtable-output’
    - + Write out a NeXTstep/GNUstep localized resource file in .strings syntax. Note that this file format doesn't support plural forms. @@ -1949,15 +1949,15 @@
    ‘--width=number
    - - + + Set the output page width. Long strings in the output files will be split across multiple lines in order to ensure that each line's width (= number of screen columns) is less or equal to the given number.
    ‘--no-wrap’
    - + Do not break long message lines. Message lines whose width exceeds the output page width will not be split into several lines. Only file reference lines which are wider than the output page width will be split. @@ -1966,8 +1966,8 @@
    ‘--sort-output’
    - - + + Generate sorted output. Note that using this option makes it much harder for the translator to understand each message's context. @@ -1975,13 +1975,13 @@
    ‘--sort-by-file’
    - - + + Sort output by file location.
    ‘--omit-header’
    - + Don't write header with ‘msgid ""’ entry. @@ -1996,16 +1996,16 @@
    ‘--help’
    - - + + Display this help and exit.
    ‘-V’
    ‘--version’
    - - + + Output version information and exit. @@ -2015,15 +2015,15 @@

    9.7 Invoking the msgcmp Program

    - - + +

     msgcmp [option] def.po ref.pot
     

    - + The msgcmp program compares two Uniforum style .po files to check that both contain the same set of msgid strings. The def.po file is an existing PO file with the translations. The ref.pot file is the last @@ -2051,8 +2051,8 @@

    ‘--directory=directory
    - - + + Add directory to the list of directories. Source files are searched relative to this list of directories. @@ -2068,29 +2068,29 @@
    ‘--multi-domain’
    - - + + Apply ref.pot to each of the domains in def.po.
    ‘-N’
    ‘--no-fuzzy-matching’
    - - + + Do not use fuzzy matching when an exact match is not found. This may speed up the operation considerably.
    ‘--use-fuzzy’
    - + Consider fuzzy messages in the def.po file like translated messages. Note that using this option is usually wrong, because fuzzy messages are exactly those which have not been validated by a human translator.
    ‘--use-untranslated’
    - + Consider untranslated messages in the def.po file like translated messages. Note that using this option is usually wrong. @@ -2106,14 +2106,14 @@
    ‘--properties-input’
    - - + + Assume the input files are Java ResourceBundles in Java .properties syntax, not in PO file syntax.
    ‘--stringtable-input’
    - + Assume the input files are NeXTstep/GNUstep localized resource files in .strings syntax, not in PO file syntax. @@ -2129,16 +2129,16 @@
    ‘--help’
    - - + + Display this help and exit.
    ‘-V’
    ‘--version’
    - - + + Output version information and exit. @@ -2148,16 +2148,16 @@

    9.8 Invoking the msgattrib Program

    - - + +

     msgattrib [option] [inputfile]
     

    - - + + The msgattrib program filters the messages of a translation catalog according to their attributes, and manipulates the attributes. @@ -2176,8 +2176,8 @@

    ‘--directory=directory
    - - + + Add directory to the list of directories. Source files are searched relative to this list of directories. The resulting ‘.po’ file will be written relative to the current directory, though. @@ -2198,8 +2198,8 @@
    ‘--output-file=file
    - - + + Write output to specified file. @@ -2217,36 +2217,36 @@
    ‘--translated’
    - + Keep translated messages, remove untranslated messages.
    ‘--untranslated’
    - + Keep untranslated messages, remove translated messages.
    ‘--no-fuzzy’
    - + Remove ‘fuzzy’ marked messages.
    ‘--only-fuzzy’
    - + Keep ‘fuzzy’ marked messages, remove all other messages.
    ‘--no-obsolete’
    - + Remove obsolete #~ messages.
    ‘--only-obsolete’
    - + Keep obsolete #~ messages, remove all other messages. @@ -2256,7 +2256,7 @@

    9.8.4 Attribute manipulation

    - + Attributes are modified after the message selection/removal has been performed. If the ‘--only-file’ or ‘--ignore-file’ option is specified, the attribute modification is applied only to those messages @@ -2268,60 +2268,60 @@

    ‘--set-fuzzy’
    - + Set all messages ‘fuzzy’.
    ‘--clear-fuzzy’
    - + Set all messages non-‘fuzzy’.
    ‘--set-obsolete’
    - + Set all messages obsolete.
    ‘--clear-obsolete’
    - + Set all messages non-obsolete.
    ‘--previous’
    - + When setting ‘fuzzy’ mark, keep “previous msgid” of translated messages.
    ‘--clear-previous’
    - + Remove the “previous msgid” (‘#|’) comments from all messages.
    ‘--empty’
    - + When removing ‘fuzzy’ mark, also set msgstr empty.
    ‘--only-file=file
    - + Limit the attribute changes to entries that are listed in file. file should be a PO or POT file.
    ‘--ignore-file=file
    - + Limit the attribute changes to entries that are not listed in file. file should be a PO or POT file.
    ‘--fuzzy’
    - + Synonym for ‘--only-fuzzy --clear-fuzzy’: It keeps only the fuzzy messages and removes their ‘fuzzy’ @@ -2329,7 +2329,7 @@
    ‘--obsolete’
    - + Synonym for ‘--only-obsolete --clear-obsolete’: It keeps only the obsolete messages and makes them non-obsolete. @@ -2345,14 +2345,14 @@
    ‘--properties-input’
    - - + + Assume the input file is a Java ResourceBundle in Java .properties syntax, not in PO file syntax.
    ‘--stringtable-input’
    - + Assume the input file is a NeXTstep/GNUstep localized resource file in .strings syntax, not in PO file syntax. @@ -2368,40 +2368,40 @@
    ‘--color=when
    - + Specify whether or when to use colors and other text attributes. See section 9.11.1 The --color option for details.
    ‘--style=style_file
    - + Specify the CSS style rule file to use for --color. See section 9.11.3 The --style option for details.
    ‘--force-po’
    - + Always write an output file even if it contains no message.
    ‘-i’
    ‘--indent’
    - - + + Write the .po file using indented style.
    ‘--no-location’
    - + Do not write ‘#: filename:line lines.
    ‘-n’
    ‘--add-location=type
    - - + + Generate ‘#: filename:line lines (default). The optional type can be either ‘full’, ‘file’, or @@ -2412,7 +2412,7 @@
    ‘--strict’
    - + Write out a strict Uniforum conforming PO file. Note that this Uniforum format should be avoided because it doesn't support the GNU extensions. @@ -2421,15 +2421,15 @@
    ‘--properties-output’
    - - + + Write out a Java ResourceBundle in Java .properties syntax. Note that this file format doesn't support plural forms and silently drops obsolete messages.
    ‘--stringtable-output’
    - + Write out a NeXTstep/GNUstep localized resource file in .strings syntax. Note that this file format doesn't support plural forms. @@ -2437,15 +2437,15 @@
    ‘--width=number
    - - + + Set the output page width. Long strings in the output files will be split across multiple lines in order to ensure that each line's width (= number of screen columns) is less or equal to the given number.
    ‘--no-wrap’
    - + Do not break long message lines. Message lines whose width exceeds the output page width will not be split into several lines. Only file reference lines which are wider than the output page width will be split. @@ -2454,8 +2454,8 @@
    ‘--sort-output’
    - - + + Generate sorted output. Note that using this option makes it much harder for the translator to understand each message's context. @@ -2463,8 +2463,8 @@
    ‘--sort-by-file’
    - - + + Sort output by file location. @@ -2479,16 +2479,16 @@
    ‘--help’
    - - + + Display this help and exit.
    ‘-V’
    ‘--version’
    - - + + Output version information and exit. @@ -2498,15 +2498,15 @@

    9.9 Invoking the msgen Program

    - - + +

     msgen [option] inputfile
     

    - + The msgen program creates an English translation catalog. The input file is the last created English PO file, or a PO Template file (generally created by xgettext). Untranslated entries are assigned a @@ -2533,8 +2533,8 @@

    ‘--directory=directory
    - - + + Add directory to the list of directories. Source files are searched relative to this list of directories. The resulting ‘.po’ file will be written relative to the current directory, though. @@ -2555,8 +2555,8 @@
    ‘--output-file=file
    - - + + Write output to specified file. @@ -2576,14 +2576,14 @@
    ‘--properties-input’
    - - + + Assume the input file is a Java ResourceBundle in Java .properties syntax, not in PO file syntax.
    ‘--stringtable-input’
    - + Assume the input file is a NeXTstep/GNUstep localized resource file in .strings syntax, not in PO file syntax. @@ -2597,7 +2597,7 @@
    ‘--lang=catalogname
    - + Specify the ‘Language’ field to be used in the header entry. See section 6.2 Filling in the Header Entry for the meaning of this field. Note: The ‘Language-Team’ and ‘Plural-Forms’ fields are not set by this @@ -2607,39 +2607,39 @@
    ‘--color=when
    - + Specify whether or when to use colors and other text attributes. See section 9.11.1 The --color option for details.
    ‘--style=style_file
    - + Specify the CSS style rule file to use for --color. See section 9.11.3 The --style option for details.
    ‘--force-po’
    - + Always write an output file even if it contains no message.
    ‘-i’
    ‘--indent’
    - - + + Write the .po file using indented style.
    ‘--no-location’
    - + Do not write ‘#: filename:line lines.
    ‘-n’
    ‘--add-location=type
    - + Generate ‘#: filename:line lines (default). The optional type can be either ‘full’, ‘file’, or @@ -2650,7 +2650,7 @@
    ‘--strict’
    - + Write out a strict Uniforum conforming PO file. Note that this Uniforum format should be avoided because it doesn't support the GNU extensions. @@ -2659,15 +2659,15 @@
    ‘--properties-output’
    - - + + Write out a Java ResourceBundle in Java .properties syntax. Note that this file format doesn't support plural forms and silently drops obsolete messages.
    ‘--stringtable-output’
    - + Write out a NeXTstep/GNUstep localized resource file in .strings syntax. Note that this file format doesn't support plural forms. @@ -2675,15 +2675,15 @@
    ‘--width=number
    - - + + Set the output page width. Long strings in the output files will be split across multiple lines in order to ensure that each line's width (= number of screen columns) is less or equal to the given number.
    ‘--no-wrap’
    - + Do not break long message lines. Message lines whose width exceeds the output page width will not be split into several lines. Only file reference lines which are wider than the output page width will be split. @@ -2692,8 +2692,8 @@
    ‘--sort-output’
    - - + + Generate sorted output. Note that using this option makes it much harder for the translator to understand each message's context. @@ -2701,8 +2701,8 @@
    ‘--sort-by-file’
    - - + + Sort output by file location. @@ -2717,16 +2717,16 @@
    ‘--help’
    - - + + Display this help and exit.
    ‘-V’
    ‘--version’
    - - + + Output version information and exit. @@ -2736,15 +2736,15 @@

    9.10 Invoking the msgexec Program

    - - + +

     msgexec [option] command [command-option]
     

    - + The msgexec program applies a command to all translations of a translation catalog. The command can be any program that reads a translation from standard @@ -2754,7 +2754,7 @@

    - + A special builtin command called ‘0’ outputs the translation, followed by a null byte. The output of ‘msgexec 0’ is suitable as input for ‘xargs -0’. @@ -2764,20 +2764,20 @@

    ‘--newline’
    - + Add newline at the end of each input line.

    - - + + During each command invocation, the environment variable MSGEXEC_MSGID is bound to the message's msgid, and the environment variable MSGEXEC_LOCATION is bound to the location in the PO file @@ -2795,7 +2795,7 @@

    - + Note: It is your responsibility to ensure that the command can cope with input encoded in the translation catalog's encoding. If the command wants input in a particular encoding, you can in a first step @@ -2817,16 +2817,16 @@

    ‘--input=inputfile
    - - + + Input PO file.
    ‘-D directory
    ‘--directory=directory
    - - + + Add directory to the list of directories. Source files are searched relative to this list of directories. The resulting ‘.po’ file will be written relative to the current directory, though. @@ -2847,14 +2847,14 @@
    ‘--properties-input’
    - - + + Assume the input file is a Java ResourceBundle in Java .properties syntax, not in PO file syntax.
    ‘--stringtable-input’
    - + Assume the input file is a NeXTstep/GNUstep localized resource file in .strings syntax, not in PO file syntax. @@ -2870,16 +2870,16 @@
    ‘--help’
    - - + + Display this help and exit.
    ‘-V’
    ‘--version’
    - - + + Output version information and exit. @@ -2908,7 +2908,7 @@

    9.11.1 The --color option

    - + The ‘--color=when option specifies under which conditions colorized output should be generated. The when part can be one of the following: @@ -2974,7 +2974,7 @@

    9.11.2 The environment variable TERM

    - + The environment variable TERM contains a identifier for the text window's capabilities. You can get a detailed list of these cababilities by using the ‘infocmp’ command, using ‘man 5 terminfo’ as a @@ -3021,14 +3021,14 @@

    9.11.3 The --style option

    - + The ‘--style=style_file option specifies the style file to use when colorizing. It has an effect only when the --color option is effective.

    - + If the --style option is not specified, the environment variable PO_STYLE is considered. It is meant to point to the user's preferred style for PO files. @@ -3424,7 +3424,7 @@

    Data Type: po_file_t -
    +
    This is a pointer type that refers to the contents of a PO file, after it has been read into memory.
    @@ -3433,7 +3433,7 @@

    Data Type: po_message_iterator_t -
    +
    This is a pointer type that refers to an iterator that produces a sequence of messages.
    @@ -3442,7 +3442,7 @@

    Data Type: po_message_t -
    +
    This is a pointer type that refers to a message of a PO file, including its translation.
    @@ -3451,7 +3451,7 @@

    Function: po_file_t po_file_read (const char *filename) -
    +
    The po_file_read function reads a PO file into memory. The file name is given as argument. The return value is a handle to the PO file's contents, valid until po_file_free is called on it. In case of error, the return @@ -3462,7 +3462,7 @@

    Function: void po_file_free (po_file_t file) -
    +
    The po_file_free function frees a PO file's contents from memory, including all messages that are only implicitly accessible through iterators.
    @@ -3471,7 +3471,7 @@

    Function: const char * const * po_file_domains (po_file_t file) -
    +
    The po_file_domains function returns the domains for which the given PO file has messages. The return value is a NULL terminated array which is valid as long as the file handle is valid. For PO files which @@ -3483,7 +3483,7 @@

    Function: po_message_iterator_t po_message_iterator (po_file_t file, const char *domain) -
    +
    The po_message_iterator returns an iterator that will produce the messages of file that belong to the given domain. If domain is NULL, the default domain is used instead. To list the messages, @@ -3494,7 +3494,7 @@

    Function: void po_message_iterator_free (po_message_iterator_t iterator) -
    +
    The po_message_iterator_free function frees an iterator previously allocated through the po_message_iterator function.
    @@ -3503,7 +3503,7 @@

    Function: po_message_t po_next_message (po_message_iterator_t iterator) -
    +
    The po_next_message function returns the next message from iterator and advances the iterator. It returns NULL when the iterator has reached the end of its message list. @@ -3518,7 +3518,7 @@

    Function: const char * po_message_msgid (po_message_t message) -
    +
    The po_message_msgid function returns the msgid (untranslated English string) of a message. This is guaranteed to be non-NULL.
    @@ -3527,7 +3527,7 @@

    Function: const char * po_message_msgid_plural (po_message_t message) -
    +
    The po_message_msgid_plural function returns the msgid_plural (untranslated English plural string) of a message with plurals, or NULL for a message without plural. @@ -3537,7 +3537,7 @@

    Function: const char * po_message_msgstr (po_message_t message) -
    +
    The po_message_msgstr function returns the msgstr (translation) of a message. For an untranslated message, the return value is an empty string. @@ -3547,7 +3547,7 @@

    Function: const char * po_message_msgstr_plural (po_message_t message, int index) -
    +
    The po_message_msgstr_plural function returns the msgstr[index] of a message with plurals, or NULL when the index is out of range or for a message without plural. diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_foot.html gettext-0.19.7/gettext-tools/doc/gettext_foot.html --- gettext-0.19.6/gettext-tools/doc/gettext_foot.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_foot.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,15 +1,15 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - Footnotes -

    GNU gettext tools, version 0.19.6

    +

    GNU gettext tools, version 0.19.7

    Native Language Support Library and Tools

    -

    Edition 0.19.6, 21 August 2015

    +

    Edition 0.19.7, 8 December 2015

    Ulrich Drepper
    Jim Meyering
    François Pinard
    @@ -44,7 +44,7 @@

    you can also use it through the ‘MSGMERGE_OPTIONS’ option from ‘Makevars’


    -This document was generated on 11 September 2015 using the +This document was generated on 28 December 2015 using the texi2html translator version 1.52b.

    diff -Nru gettext-0.19.6/gettext-tools/doc/gettext.info gettext-0.19.7/gettext-tools/doc/gettext.info --- gettext-0.19.6/gettext-tools/doc/gettext.info 2015-09-11 03:06:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext.info 2015-12-27 23:21:31.000000000 +0000 @@ -55,7 +55,7 @@ *********************** This manual documents the GNU gettext tools and the GNU libintl -library, version 0.19.6. +library, version 0.19.7. * Menu: @@ -381,6 +381,7 @@ * Glade:: Glade - GNOME user interface description * GSettings:: GSettings - GNOME user configuration schema * AppData:: AppData - freedesktop.org application description +* Preparing ITS Rules:: Preparing Rules for XML Internationalization Concluding Remarks @@ -2217,7 +2218,7 @@ { static const char *messages[] = { - gettext_noop ("some very meaningful message", + gettext_noop ("some very meaningful message"), gettext_noop ("and another one") }; const char *string; @@ -2859,6 +2860,14 @@ Write out a NeXTstep/GNUstep localized resource file in ‘.strings’ syntax. Note that this file format doesn’t support plural forms. +‘--its=FILE’ + Use ITS rules defined in FILE. Note that this is only effective + with XML files. + +‘--itstool’ + Write out comments recognized by itstool (). + Note that this is only effective with XML files. + ‘-w NUMBER’ ‘--width=NUMBER’ Set the output page width. Long strings in the output files will @@ -6999,6 +7008,9 @@ ‘--desktop’ Desktop Entry mode: generate a ‘.desktop’ file. +‘--xml’ + XML mode: generate an XML file. + 10.1.3 Output file location --------------------------- @@ -7096,7 +7108,8 @@ form LL_CC. ‘-d DIRECTORY’ - Specify the base directory of ‘.msg’ message catalogs. + Specify the directory where PO files are read. The directory must + contain the ‘LINGUAS’ file. To generate a ‘.desktop’ file for a single locale, you can use it as follows. @@ -7104,11 +7117,8 @@ msgfmt --desktop --template=TEMPLATE --locale=LOCALE \ -o FILE FILENAME.po … - On the other hand, when using msgfmt from a Makefile, it is -cumbersome to loop over all locales under a particular directory. -msgfmt provides a special operation mode for this use-case. To generate -a ‘.desktop’ file from multiple ‘.po’ files under a directory, specify -the directory with the ‘-d’ option. + msgfmt provides a special "bulk" operation mode to process multiple +‘.po’ files at a time. msgfmt --desktop --template=TEMPLATE -d DIRECTORY -o FILE @@ -7119,7 +7129,44 @@ For either operation modes, the ‘-o’ and ‘--template’ options are mandatory. -10.1.8 Input file syntax +10.1.8 XML mode operations +-------------------------- + +‘--template=TEMPLATE’ + Specify an XML file used as a template. + +‘-L NAME’ +‘--language=NAME’ + Specifies the language of the input files. + +‘-l LOCALE’ +‘--locale=LOCALE’ + Specify the locale name, either a language specification of the + form LL or a combined language and country specification of the + form LL_CC. + +‘-d DIRECTORY’ + Specify the base directory of ‘.po’ message catalogs. + + To generate an XML file for a single locale, you can use it as +follows. + + msgfmt --xml --template=TEMPLATE --locale=LOCALE \ + -o FILE FILENAME.po … + + msgfmt provides a special "bulk" operation mode to process multiple +‘.po’ files at a time. + + msgfmt --xml --template=TEMPLATE -d DIRECTORY -o FILE + + msgfmt first reads the ‘LINGUAS’ file under DIRECTORY, and then +processes all ‘.po’ files listed there. You can also limit the locales +to a subset, through the ‘LINGUAS’ environment variable. + + For either operation modes, the ‘-o’ and ‘--template’ options are +mandatory. + +10.1.9 Input file syntax ------------------------ ‘-P’ @@ -7131,8 +7178,8 @@ Assume the input files are NeXTstep/GNUstep localized resource files in ‘.strings’ syntax, not in PO file syntax. -10.1.9 Input file interpretation --------------------------------- +10.1.10 Input file interpretation +--------------------------------- ‘-c’ ‘--check’ @@ -7193,7 +7240,7 @@ usually wrong, because fuzzy messages are exactly those which have not been validated by a human translator. -10.1.10 Output details +10.1.11 Output details ---------------------- ‘-a NUMBER’ @@ -7217,7 +7264,7 @@ Don’t include a hash table in the binary file. Lookup will be more expensive at run time (binary search instead of hash table lookup). -10.1.11 Informative output +10.1.12 Informative output -------------------------- ‘-h’ @@ -9745,7 +9792,7 @@ So, here comes a list of files, each one followed by a description of all alterations it needs. Many examples are taken out from the GNU -‘gettext’ 0.19.6 distribution itself, or from the GNU ‘hello’ +‘gettext’ 0.19.7 distribution itself, or from the GNU ‘hello’ distribution (). You may indeed refer to the source code of the GNU ‘gettext’ and GNU ‘hello’ packages, as they are intended to be good examples for using GNU gettext @@ -9902,7 +9949,7 @@ This is done by a set of lines like these: PACKAGE=gettext - VERSION=0.19.6 + VERSION=0.19.7 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") AC_DEFINE_UNQUOTED(VERSION, "$VERSION") AC_SUBST(PACKAGE) @@ -9910,12 +9957,12 @@ or, if you are using GNU ‘automake’, by a line like this: - AM_INIT_AUTOMAKE(gettext, 0.19.6) + AM_INIT_AUTOMAKE(gettext, 0.19.7) Of course, you replace ‘gettext’ with the name of your package, and - ‘0.19.6’ by its version numbers, exactly as they should appear in + ‘0.19.7’ by its version numbers, exactly as they should appear in the packaged ‘tar’ file name of your distribution - (‘gettext-0.19.6.tar.gz’, here). + (‘gettext-0.19.7.tar.gz’, here). 2. Check for internationalization support. @@ -10684,7 +10731,7 @@ all the files that ‘gettextize’ mentions as "copy". Instead, he adds to the ‘configure.ac’ or ‘configure.in’ a line of the form - AM_GNU_GETTEXT_VERSION(0.19.6) + AM_GNU_GETTEXT_VERSION(0.19.7) and adds to the package’s pre-build script an invocation of ‘autopoint’. For everyone who checks out the source, this ‘autopoint’ invocation will @@ -10768,8 +10815,8 @@ To extract the latest available infrastructure which satisfies a version requirement, then you can use the form ‘AM_GNU_GETTEXT_REQUIRE_VERSION(VERSION)’ instead. For example, if -gettext 0.19.6 is installed on your system and ‘0.19.1’ is requested, -then the infrastructure files of version 0.19.6 will be copied into a +gettext 0.19.7 is installed on your system and ‘0.19.1’ is requested, +then the infrastructure files of version 0.19.7 will be copied into a source package. 13.6.4.1 Options @@ -10795,8 +10842,8 @@ Output version information and exit. ‘autopoint’ supports the GNU ‘gettext’ versions from 0.10.35 to the -current one, 0.19.6. In order to apply ‘autopoint’ to a package using a -‘gettext’ version newer than 0.19.6, you need to install this same +current one, 0.19.7. In order to apply ‘autopoint’ to a package using a +‘gettext’ version newer than 0.19.7, you need to install this same version of GNU ‘gettext’ at least. In packages using GNU ‘automake’, an invocation of ‘autopoint’ should @@ -13997,6 +14044,7 @@ * Glade:: Glade - GNOME user interface description * GSettings:: GSettings - GNOME user configuration schema * AppData:: AppData - freedesktop.org application description +* Preparing ITS Rules:: Preparing Rules for XML Internationalization  File: gettext.info, Node: POT, Next: RST, Prev: List of Data Formats, Up: List of Data Formats @@ -14060,7 +14108,7 @@ ‘xgettext’, ‘intltool-extract’  -File: gettext.info, Node: AppData, Prev: GSettings, Up: List of Data Formats +File: gettext.info, Node: AppData, Next: Preparing ITS Rules, Prev: GSettings, Up: List of Data Formats 15.6.5 AppData - freedesktop.org application description -------------------------------------------------------- @@ -14075,6 +14123,144 @@ Extractor ‘xgettext’, ‘intltool-extract’, ‘itstool’ +* Menu: + + +File: gettext.info, Node: Preparing ITS Rules, Prev: AppData, Up: List of Data Formats + +15.6.6 Preparing Rules for XML Internationalization +--------------------------------------------------- + + Marking translatable strings in an XML file is done through a +separate "rule" file, making use of the Internationalization Tag Set +standard (ITS, ). The currently supported +ITS data categories are: ‘Translate’, ‘Localization Note’, ‘Elements +Within Text’, and ‘Preserve Space’. In addition to them, ‘xgettext’ +also recognizes the following extended data categories: + +‘Context’ + + This data category associates ‘msgctxt’ to the extracted text. In + the global rule, the ‘contextRule’ element contains the following: + + • A required ‘selector’ attribute. It contains an absolute + selector that selects the nodes to which this rule applies. + + • A required ‘contextPointer’ attribute that contains a relative + selector pointing to a node that holds the ‘msgctxt’ value. + + • An optional ‘textPointer’ attribute that contains a relative + selector pointing to a node that holds the ‘msgid’ value. + +‘Escape Special Characters’ + + This data category indicates whether the special XML characters + (‘<’, ‘>’, ‘&’, ‘"’) are escaped with entity reference. In the + global rule, the ‘escapeRule’ element contains the following: + + • A required ‘selector’ attribute. It contains an absolute + selector that selects the nodes to which this rule applies. + + • A required ‘escape’ attribute with the value ‘yes’ or ‘no’. + +‘Extended Preserve Space’ + + This data category extends the standard ‘Preserve Space’ data + category with the additional value ‘trim’. The value means to + remove the leading and trailing whitespaces of the content, but not + to normalize whitespaces in the middle. In the global rule, the + ‘preserveSpaceRule’ element contains the following: + + • A required ‘selector’ attribute. It contains an absolute + selector that selects the nodes to which this rule applies. + + • A required ‘space’ attribute with the value ‘default’, + ‘preserve’, or ‘trim’. + + All those extended data categories can only be expressed with global +rules, and the rule elements have to have the +‘https://www.gnu.org/s/gettext/ns/its/extensions/1.0’ namespace. + + Given the following XML document in a file ‘messages.xml’: + + + + +

    A translatable string

    +
    + +

    A non-translatable string

    +
    +
    + + To extract the first text content ("A translatable string"), but not +the second ("A non-translatable string"), the following ITS rules can be +used: + + + + + + + + + + + ‘xgettext’ needs another file called "locating rule" to associate an +ITS rule with an XML file. If the above ITS file is saved as +‘messages.its’, the locating rule would look like: + + + + + + + + + + The ‘locatingRule’ element must have a ‘pattern’ attribute, which +denotes either a literal file name or a wildcard pattern of the XML +file. The ‘locatingRule’ element can have child ‘documentRule’ element, +which adds checks on the content of the XML file. + + The first rule matches any file with the ‘.xml’ file extension, but +it only applies to XML files whose root element is ‘’. + + The second rule indicates that the same ITS rule file are also +applicable to any file with the ‘.msg’ file extension. The optional +‘name’ attribute of ‘locatingRule’ allows to choose rules by name, +typically with ‘xgettext’’s ‘-L’ option. + + The associated ITS rule file is indicated by the ‘target’ attribute +of ‘locatingRule’ or ‘documentRule’. If it is specified in a +‘documentRule’ element, the parent ‘locatingRule’ shouldn’t have the +‘target’ attribute. + + Locating rule files must have the ‘.loc’ file extension. Both ITS +rule files and locating rule files must be installed in the +‘$prefix/share/gettext/its’ directory. Once those files are properly +installed, ‘xgettext’ can extract translatable strings from the matching +XML files. + +15.6.6.1 Two Use-cases of Translated Strings in XML +................................................... + + For XML, there are two use-cases of translated strings. One is the +case where the translated strings are directly consumed by programs, and +the other is the case where the translated strings are merged back to +the original XML document. In the former case, special characters in +the extracted strings shouldn’t be escaped, while they should in the +latter case. To control wheter to escape special characters, the +‘Escape Special Characters’ data category can be used. + + To merge the translations, the ‘msgfmt’ program can be used with the +option ‘--xml’. *Note msgfmt Invocation::, for more details about how +one calls the ‘msgfmt’ program. ‘msgfmt’’s ‘--xml’ option doesn’t +perform character escaping, so translated strings can have arbitrary XML +constructs, such as elements for markup. +  File: gettext.info, Node: Conclusion, Next: Language Codes, Prev: Programming Languages, Up: Top @@ -16662,17 +16848,17 @@ * --add-location, ‘msgmerge’ option: msgmerge Invocation. (line 150) * --add-location, ‘msguniq’ option: msguniq Invocation. (line 97) * --add-location, ‘xgettext’ option: xgettext Invocation. (line 368) -* --alignment, ‘msgfmt’ option: msgfmt Invocation. (line 250) +* --alignment, ‘msgfmt’ option: msgfmt Invocation. (line 288) * --backup, ‘msgmerge’ option: msgmerge Invocation. (line 62) * --boost, ‘xgettext’ option: xgettext Invocation. (line 326) * --c++, ‘xgettext’ option: xgettext Invocation. (line 63) -* --check, ‘msgfmt’ option: msgfmt Invocation. (line 188) +* --check, ‘msgfmt’ option: msgfmt Invocation. (line 226) * --check, ‘xgettext’ option: xgettext Invocation. (line 116) -* --check-accelerators, ‘msgfmt’ option: msgfmt Invocation. (line 229) -* --check-compatibility, ‘msgfmt’ option: msgfmt Invocation. (line 225) -* --check-domain, ‘msgfmt’ option: msgfmt Invocation. (line 220) -* --check-format, ‘msgfmt’ option: msgfmt Invocation. (line 192) -* --check-header, ‘msgfmt’ option: msgfmt Invocation. (line 215) +* --check-accelerators, ‘msgfmt’ option: msgfmt Invocation. (line 267) +* --check-compatibility, ‘msgfmt’ option: msgfmt Invocation. (line 263) +* --check-domain, ‘msgfmt’ option: msgfmt Invocation. (line 258) +* --check-format, ‘msgfmt’ option: msgfmt Invocation. (line 230) +* --check-header, ‘msgfmt’ option: msgfmt Invocation. (line 253) * --clear-fuzzy, ‘msgattrib’ option: msgattrib Invocation. (line 68) * --clear-obsolete, ‘msgattrib’ option: msgattrib Invocation. @@ -16696,7 +16882,7 @@ * --color, ‘xgettext’ option: xgettext Invocation. (line 347) * --comment, ‘msggrep’ option: msggrep Invocation. (line 86) * --compendium, ‘msgmerge’ option: msgmerge Invocation. (line 36) -* --copyright-holder, ‘xgettext’ option: xgettext Invocation. (line 424) +* --copyright-holder, ‘xgettext’ option: xgettext Invocation. (line 432) * --csharp, ‘msgfmt’ option: msgfmt Invocation. (line 36) * --csharp, ‘msgunfmt’ option: msgunfmt Invocation. (line 19) * --csharp-resources, ‘msgfmt’ option: msgfmt Invocation. (line 40) @@ -16728,7 +16914,7 @@ (line 72) * --empty, ‘msgattrib’ option: msgattrib Invocation. (line 84) -* --endianness, ‘msgfmt’ option: msgfmt Invocation. (line 253) +* --endianness, ‘msgfmt’ option: msgfmt Invocation. (line 291) * --exclude-file, ‘xgettext’ option: xgettext Invocation. (line 89) * --expression, ‘msgfilter’ option: msgfilter Invocation. (line 87) @@ -16760,7 +16946,7 @@ * --force-po, ‘msgunfmt’ option: msgunfmt Invocation. (line 111) * --force-po, ‘msguniq’ option: msguniq Invocation. (line 86) * --force-po, ‘xgettext’ option: xgettext Invocation. (line 355) -* --foreign-user, ‘xgettext’ option: xgettext Invocation. (line 439) +* --foreign-user, ‘xgettext’ option: xgettext Invocation. (line 447) * --from-code, ‘xgettext’ option: xgettext Invocation. (line 72) * --fuzzy, ‘msgattrib’ option: msgattrib Invocation. (line 95) @@ -16780,14 +16966,14 @@ * --help, ‘msgexec’ option: msgexec Invocation. (line 77) * --help, ‘msgfilter’ option: msgfilter Invocation. (line 211) -* --help, ‘msgfmt’ option: msgfmt Invocation. (line 274) +* --help, ‘msgfmt’ option: msgfmt Invocation. (line 312) * --help, ‘msggrep’ option: msggrep Invocation. (line 200) * --help, ‘msginit’ option: msginit Invocation. (line 128) * --help, ‘msgmerge’ option: msgmerge Invocation. (line 200) * --help, ‘msgunfmt’ option: msgunfmt Invocation. (line 155) * --help, ‘msguniq’ option: msguniq Invocation. (line 147) * --help, ‘ngettext’ option: ngettext Invocation. (line 31) -* --help, ‘xgettext’ option: xgettext Invocation. (line 486) +* --help, ‘xgettext’ option: xgettext Invocation. (line 494) * --ignore-case, ‘msggrep’ option: msggrep Invocation. (line 110) * --ignore-file, ‘msgattrib’ option: msgattrib Invocation. (line 91) @@ -16811,6 +16997,8 @@ * --intl, ‘gettextize’ option: gettextize Invocation. (line 43) * --invert-match, ‘msggrep’ option: msggrep Invocation. (line 114) +* --its, ‘xgettext’ option: xgettext Invocation. (line 391) +* --itstool, ‘xgettext’ option: xgettext Invocation. (line 395) * --java, ‘msgfmt’ option: msgfmt Invocation. (line 30) * --java, ‘msgunfmt’ option: msgunfmt Invocation. (line 16) * --java2, ‘msgfmt’ option: msgfmt Invocation. (line 33) @@ -16818,18 +17006,20 @@ * --kde, ‘xgettext’ option: xgettext Invocation. (line 322) * --keep-header, ‘msgfilter’ option: msgfilter Invocation. (line 152) -* --keyword, ‘msgfmt’ option: msgfmt Invocation. (line 137) +* --keyword, ‘msgfmt’ option: msgfmt Invocation. (line 140) * --keyword, ‘xgettext’ option: xgettext Invocation. (line 171) * --lang, ‘msgcat’ option: msgcat Invocation. (line 89) * --lang, ‘msgen’ option: msgen Invocation. (line 57) * --lang, ‘msgmerge’ option: msgmerge Invocation. (line 123) +* --language, ‘msgfmt’ option: msgfmt Invocation. (line 180) * --language, ‘xgettext’ option: xgettext Invocation. (line 54) * --less-than, ‘msgcat’ option: msgcat Invocation. (line 52) * --less-than, ‘msgcomm’ option: msgcomm Invocation. (line 51) -* --locale, ‘msgfmt’ option: msgfmt Invocation. (line 80) -* --locale, ‘msgfmt’ option <1>: msgfmt Invocation. (line 103) -* --locale, ‘msgfmt’ option <2>: msgfmt Invocation. (line 119) -* --locale, ‘msgfmt’ option <3>: msgfmt Invocation. (line 143) +* --locale, ‘msgfmt’ option: msgfmt Invocation. (line 83) +* --locale, ‘msgfmt’ option <1>: msgfmt Invocation. (line 106) +* --locale, ‘msgfmt’ option <2>: msgfmt Invocation. (line 122) +* --locale, ‘msgfmt’ option <3>: msgfmt Invocation. (line 146) +* --locale, ‘msgfmt’ option <4>: msgfmt Invocation. (line 184) * --locale, ‘msginit’ option: msginit Invocation. (line 82) * --locale, ‘msgunfmt’ option: msgunfmt Invocation. (line 45) * --locale, ‘msgunfmt’ option <1>: msgunfmt Invocation. (line 62) @@ -16840,10 +17030,10 @@ * --msgctxt, ‘msggrep’ option: msggrep Invocation. (line 74) * --msgid, ‘msggrep’ option: msggrep Invocation. (line 78) * --msgid-bugs-address, ‘xgettext’ option: xgettext Invocation. - (line 452) + (line 460) * --msgstr, ‘msggrep’ option: msggrep Invocation. (line 82) -* --msgstr-prefix, ‘xgettext’ option: xgettext Invocation. (line 475) -* --msgstr-suffix, ‘xgettext’ option: xgettext Invocation. (line 479) +* --msgstr-prefix, ‘xgettext’ option: xgettext Invocation. (line 483) +* --msgstr-suffix, ‘xgettext’ option: xgettext Invocation. (line 487) * --multi-domain, ‘msgcmp’ option: msgcmp Invocation. (line 35) * --multi-domain, ‘msgmerge’ option: msgmerge Invocation. (line 96) * --newline, ‘msgfilter’ option: msgfilter Invocation. @@ -16856,7 +17046,7 @@ * --no-fuzzy-matching, ‘msgcmp’ option: msgcmp Invocation. (line 39) * --no-fuzzy-matching, ‘msgmerge’ option: msgmerge Invocation. (line 100) -* --no-hash, ‘msgfmt’ option: msgfmt Invocation. (line 266) +* --no-hash, ‘msgfmt’ option: msgfmt Invocation. (line 304) * --no-location, ‘msgattrib’ option: msgattrib Invocation. (line 134) * --no-location, ‘msgcat’ option: msgcat Invocation. (line 110) @@ -16885,11 +17075,11 @@ * --no-wrap, ‘msgmerge’ option: msgmerge Invocation. (line 181) * --no-wrap, ‘msgunfmt’ option: msgunfmt Invocation. (line 140) * --no-wrap, ‘msguniq’ option: msguniq Invocation. (line 128) -* --no-wrap, ‘xgettext’ option: xgettext Invocation. (line 398) +* --no-wrap, ‘xgettext’ option: xgettext Invocation. (line 406) * --obsolete, ‘msgattrib’ option: msgattrib Invocation. (line 99) * --omit-header, ‘msgcomm’ option: msgcomm Invocation. (line 146) -* --omit-header, ‘xgettext’ option: xgettext Invocation. (line 413) +* --omit-header, ‘xgettext’ option: xgettext Invocation. (line 421) * --only-file, ‘msgattrib’ option: msgattrib Invocation. (line 87) * --only-fuzzy, ‘msgattrib’ option: msgattrib Invocation. @@ -16906,14 +17096,14 @@ * --output-file, ‘msgen’ option: msgen Invocation. (line 36) * --output-file, ‘msgfilter’ option: msgfilter Invocation. (line 45) -* --output-file, ‘msgfmt’ option: msgfmt Invocation. (line 56) +* --output-file, ‘msgfmt’ option: msgfmt Invocation. (line 59) * --output-file, ‘msggrep’ option: msggrep Invocation. (line 30) * --output-file, ‘msginit’ option: msginit Invocation. (line 59) * --output-file, ‘msgmerge’ option: msgmerge Invocation. (line 51) * --output-file, ‘msgunfmt’ option: msgunfmt Invocation. (line 93) * --output-file, ‘msguniq’ option: msguniq Invocation. (line 37) -* --package-name, ‘xgettext’ option: xgettext Invocation. (line 445) -* --package-version, ‘xgettext’ option: xgettext Invocation. (line 448) +* --package-name, ‘xgettext’ option: xgettext Invocation. (line 453) +* --package-version, ‘xgettext’ option: xgettext Invocation. (line 456) * --po-dir, ‘gettextize’ option: gettextize Invocation. (line 51) * --previous, ‘msgattrib’ option: msgattrib Invocation. @@ -16929,7 +17119,7 @@ * --properties-input, ‘msgexec’ option: msgexec Invocation. (line 65) * --properties-input, ‘msgfilter’ option: msgfilter Invocation. (line 126) -* --properties-input, ‘msgfmt’ option: msgfmt Invocation. (line 176) +* --properties-input, ‘msgfmt’ option: msgfmt Invocation. (line 214) * --properties-input, ‘msggrep’ option: msggrep Invocation. (line 122) * --properties-input, ‘msginit’ option: msginit Invocation. (line 70) * --properties-input, ‘msgmerge’ option: msgmerge Invocation. (line 112) @@ -16958,8 +17148,8 @@ * --quiet, ‘msgmerge’ option: msgmerge Invocation. (line 213) * --regexp=, ‘msggrep’ option: msggrep Invocation. (line 102) * --repeated, ‘msguniq’ option: msguniq Invocation. (line 47) -* --resource, ‘msgfmt’ option: msgfmt Invocation. (line 76) -* --resource, ‘msgfmt’ option <1>: msgfmt Invocation. (line 99) +* --resource, ‘msgfmt’ option: msgfmt Invocation. (line 79) +* --resource, ‘msgfmt’ option <1>: msgfmt Invocation. (line 102) * --resource, ‘msgunfmt’ option: msgunfmt Invocation. (line 41) * --resource, ‘msgunfmt’ option <1>: msgunfmt Invocation. (line 58) * --sentence-end, ‘xgettext’ option: xgettext Invocation. (line 149) @@ -16981,7 +17171,7 @@ * --sort-by-file, ‘msggrep’ option: msggrep Invocation. (line 193) * --sort-by-file, ‘msgmerge’ option: msgmerge Invocation. (line 193) * --sort-by-file, ‘msguniq’ option: msguniq Invocation. (line 140) -* --sort-by-file, ‘xgettext’ option: xgettext Invocation. (line 410) +* --sort-by-file, ‘xgettext’ option: xgettext Invocation. (line 418) * --sort-output, ‘msgattrib’ option: msgattrib Invocation. (line 176) * --sort-output, ‘msgcat’ option: msgcat Invocation. (line 152) @@ -16994,9 +17184,9 @@ * --sort-output, ‘msgmerge’ option: msgmerge Invocation. (line 188) * --sort-output, ‘msgunfmt’ option: msgunfmt Invocation. (line 147) * --sort-output, ‘msguniq’ option: msguniq Invocation. (line 135) -* --sort-output, ‘xgettext’ option: xgettext Invocation. (line 405) -* --source, ‘msgfmt’ option: msgfmt Invocation. (line 88) -* --statistics, ‘msgfmt’ option: msgfmt Invocation. (line 281) +* --sort-output, ‘xgettext’ option: xgettext Invocation. (line 413) +* --source, ‘msgfmt’ option: msgfmt Invocation. (line 91) +* --statistics, ‘msgfmt’ option: msgfmt Invocation. (line 319) * --strict, ‘msgattrib’ option: msgattrib Invocation. (line 147) * --strict, ‘msgcat’ option: msgcat Invocation. (line 123) @@ -17005,7 +17195,7 @@ * --strict, ‘msgen’ option: msgen Invocation. (line 92) * --strict, ‘msgfilter’ option: msgfilter Invocation. (line 170) -* --strict, ‘msgfmt’ option: msgfmt Invocation. (line 59) +* --strict, ‘msgfmt’ option: msgfmt Invocation. (line 62) * --strict, ‘msggrep’ option: msggrep Invocation. (line 161) * --strict, ‘msgmerge’ option: msgmerge Invocation. (line 159) * --strict, ‘msgunfmt’ option: msgunfmt Invocation. (line 118) @@ -17020,7 +17210,7 @@ * --stringtable-input, ‘msgexec’ option: msgexec Invocation. (line 69) * --stringtable-input, ‘msgfilter’ option: msgfilter Invocation. (line 130) -* --stringtable-input, ‘msgfmt’ option: msgfmt Invocation. (line 180) +* --stringtable-input, ‘msgfmt’ option: msgfmt Invocation. (line 218) * --stringtable-input, ‘msggrep’ option: msggrep Invocation. (line 126) * --stringtable-input, ‘msginit’ option: msginit Invocation. (line 74) * --stringtable-input, ‘msgmerge’ option: msgmerge Invocation. @@ -17064,7 +17254,8 @@ (line 63) * --tcl, ‘msgfmt’ option: msgfmt Invocation. (line 43) * --tcl, ‘msgunfmt’ option: msgunfmt Invocation. (line 26) -* --template, ‘msgfmt’ option: msgfmt Invocation. (line 133) +* --template, ‘msgfmt’ option: msgfmt Invocation. (line 136) +* --template, ‘msgfmt’ option <1>: msgfmt Invocation. (line 176) * --to-code, ‘msgcat’ option: msgcat Invocation. (line 82) * --to-code, ‘msgconv’ option: msgconv Invocation. (line 40) * --to-code, ‘msguniq’ option: msguniq Invocation. (line 70) @@ -17080,10 +17271,10 @@ * --use-first, ‘msgcat’ option: msgcat Invocation. (line 85) * --use-first, ‘msguniq’ option: msguniq Invocation. (line 73) * --use-fuzzy, ‘msgcmp’ option: msgcmp Invocation. (line 43) -* --use-fuzzy, ‘msgfmt’ option: msgfmt Invocation. (line 241) +* --use-fuzzy, ‘msgfmt’ option: msgfmt Invocation. (line 279) * --use-untranslated, ‘msgcmp’ option: msgcmp Invocation. (line 49) * --variables, ‘envsubst’ option: envsubst Invocation. (line 15) -* --verbose, ‘msgfmt’ option: msgfmt Invocation. (line 287) +* --verbose, ‘msgfmt’ option: msgfmt Invocation. (line 325) * --verbose, ‘msgmerge’ option: msgmerge Invocation. (line 208) * --verbose, ‘msgunfmt’ option: msgunfmt Invocation. (line 163) * --version, ‘autopoint’ option: autopoint Invocation. @@ -17102,14 +17293,14 @@ * --version, ‘msgexec’ option: msgexec Invocation. (line 81) * --version, ‘msgfilter’ option: msgfilter Invocation. (line 215) -* --version, ‘msgfmt’ option: msgfmt Invocation. (line 278) +* --version, ‘msgfmt’ option: msgfmt Invocation. (line 316) * --version, ‘msggrep’ option: msggrep Invocation. (line 204) * --version, ‘msginit’ option: msginit Invocation. (line 132) * --version, ‘msgmerge’ option: msgmerge Invocation. (line 204) * --version, ‘msgunfmt’ option: msgunfmt Invocation. (line 159) * --version, ‘msguniq’ option: msguniq Invocation. (line 151) * --version, ‘ngettext’ option: ngettext Invocation. (line 35) -* --version, ‘xgettext’ option: xgettext Invocation. (line 490) +* --version, ‘xgettext’ option: xgettext Invocation. (line 498) * --width, ‘msgattrib’ option: msgattrib Invocation. (line 163) * --width, ‘msgcat’ option: msgcat Invocation. (line 139) @@ -17123,15 +17314,16 @@ * --width, ‘msgmerge’ option: msgmerge Invocation. (line 175) * --width, ‘msgunfmt’ option: msgunfmt Invocation. (line 134) * --width, ‘msguniq’ option: msguniq Invocation. (line 122) -* --width, ‘xgettext’ option: xgettext Invocation. (line 392) +* --width, ‘xgettext’ option: xgettext Invocation. (line 400) +* --xml, ‘msgfmt’ option: msgfmt Invocation. (line 52) * -<, ‘msgcat’ option: msgcat Invocation. (line 52) * -<, ‘msgcomm’ option: msgcomm Invocation. (line 51) * ->, ‘msgcat’ option: msgcat Invocation. (line 57) * ->, ‘msgcomm’ option: msgcomm Invocation. (line 56) -* -a, ‘msgfmt’ option: msgfmt Invocation. (line 250) +* -a, ‘msgfmt’ option: msgfmt Invocation. (line 288) * -a, ‘xgettext’ option: xgettext Invocation. (line 162) -* -c, ‘msgfmt’ option: msgfmt Invocation. (line 188) -* -C, ‘msgfmt’ option: msgfmt Invocation. (line 225) +* -c, ‘msgfmt’ option: msgfmt Invocation. (line 226) +* -C, ‘msgfmt’ option: msgfmt Invocation. (line 263) * -C, ‘msggrep’ option: msggrep Invocation. (line 86) * -C, ‘msgmerge’ option: msgmerge Invocation. (line 36) * -C, ‘xgettext’ option: xgettext Invocation. (line 63) @@ -17152,10 +17344,11 @@ * -D, ‘msgfilter’ option: msgfilter Invocation. (line 34) * -D, ‘msgfmt’ option: msgfmt Invocation. (line 18) -* -d, ‘msgfmt’ option: msgfmt Invocation. (line 85) -* -d, ‘msgfmt’ option <1>: msgfmt Invocation. (line 108) -* -d, ‘msgfmt’ option <2>: msgfmt Invocation. (line 124) -* -d, ‘msgfmt’ option <3>: msgfmt Invocation. (line 148) +* -d, ‘msgfmt’ option: msgfmt Invocation. (line 88) +* -d, ‘msgfmt’ option <1>: msgfmt Invocation. (line 111) +* -d, ‘msgfmt’ option <2>: msgfmt Invocation. (line 127) +* -d, ‘msgfmt’ option <3>: msgfmt Invocation. (line 151) +* -d, ‘msgfmt’ option <4>: msgfmt Invocation. (line 189) * -D, ‘msggrep’ option: msggrep Invocation. (line 19) * -D, ‘msgmerge’ option: msgmerge Invocation. (line 30) * -d, ‘msgunfmt’ option: msgunfmt Invocation. (line 67) @@ -17189,13 +17382,13 @@ (line 91) * -F, ‘msgfilter’ option: msgfilter Invocation. (line 204) -* -f, ‘msgfmt’ option: msgfmt Invocation. (line 241) +* -f, ‘msgfmt’ option: msgfmt Invocation. (line 279) * -F, ‘msggrep’ option: msggrep Invocation. (line 98) * -f, ‘msggrep’ option: msggrep Invocation. (line 106) * -F, ‘msgmerge’ option: msgmerge Invocation. (line 193) * -F, ‘msguniq’ option: msguniq Invocation. (line 140) * -f, ‘xgettext’ option: xgettext Invocation. (line 19) -* -F, ‘xgettext’ option: xgettext Invocation. (line 410) +* -F, ‘xgettext’ option: xgettext Invocation. (line 418) * -h, ‘envsubst’ option: envsubst Invocation. (line 21) * -h, ‘gettext’ option: gettext Invocation. (line 32) * -h, ‘msgattrib’ option: msgattrib Invocation. @@ -17208,14 +17401,14 @@ * -h, ‘msgexec’ option: msgexec Invocation. (line 77) * -h, ‘msgfilter’ option: msgfilter Invocation. (line 211) -* -h, ‘msgfmt’ option: msgfmt Invocation. (line 274) +* -h, ‘msgfmt’ option: msgfmt Invocation. (line 312) * -h, ‘msggrep’ option: msggrep Invocation. (line 200) * -h, ‘msginit’ option: msginit Invocation. (line 128) * -h, ‘msgmerge’ option: msgmerge Invocation. (line 200) * -h, ‘msgunfmt’ option: msgunfmt Invocation. (line 155) * -h, ‘msguniq’ option: msguniq Invocation. (line 147) * -h, ‘ngettext’ option: ngettext Invocation. (line 31) -* -h, ‘xgettext’ option: xgettext Invocation. (line 486) +* -h, ‘xgettext’ option: xgettext Invocation. (line 494) * -i, ‘msgattrib’ option: msgattrib Invocation. (line 131) * -i, ‘msgcat’ option: msgcat Invocation. (line 107) @@ -17235,13 +17428,15 @@ * -J, ‘msggrep’ option: msggrep Invocation. (line 74) * -j, ‘msgunfmt’ option: msgunfmt Invocation. (line 16) * -j, ‘xgettext’ option: xgettext Invocation. (line 85) -* -k, ‘msgfmt’ option: msgfmt Invocation. (line 137) +* -k, ‘msgfmt’ option: msgfmt Invocation. (line 140) * -K, ‘msggrep’ option: msggrep Invocation. (line 78) * -k, ‘xgettext’ option: xgettext Invocation. (line 171) -* -l, ‘msgfmt’ option: msgfmt Invocation. (line 80) -* -l, ‘msgfmt’ option <1>: msgfmt Invocation. (line 103) -* -l, ‘msgfmt’ option <2>: msgfmt Invocation. (line 119) -* -l, ‘msgfmt’ option <3>: msgfmt Invocation. (line 143) +* -l, ‘msgfmt’ option: msgfmt Invocation. (line 83) +* -l, ‘msgfmt’ option <1>: msgfmt Invocation. (line 106) +* -l, ‘msgfmt’ option <2>: msgfmt Invocation. (line 122) +* -l, ‘msgfmt’ option <3>: msgfmt Invocation. (line 146) +* -L, ‘msgfmt’ option: msgfmt Invocation. (line 180) +* -l, ‘msgfmt’ option <4>: msgfmt Invocation. (line 184) * -l, ‘msginit’ option: msginit Invocation. (line 82) * -l, ‘msgunfmt’ option: msgunfmt Invocation. (line 45) * -l, ‘msgunfmt’ option <1>: msgunfmt Invocation. (line 62) @@ -17250,8 +17445,8 @@ * -m, ‘msgcmp’ option: msgcmp Invocation. (line 35) * -M, ‘msggrep’ option: msggrep Invocation. (line 70) * -m, ‘msgmerge’ option: msgmerge Invocation. (line 96) -* -m, ‘xgettext’ option: xgettext Invocation. (line 475) -* -M, ‘xgettext’ option: xgettext Invocation. (line 479) +* -m, ‘xgettext’ option: xgettext Invocation. (line 483) +* -M, ‘xgettext’ option: xgettext Invocation. (line 487) * -n, ‘gettext’ option: gettext Invocation. (line 35) * -n, ‘msgattrib’ option: msgattrib Invocation. (line 138) @@ -17272,7 +17467,7 @@ * -o, ‘msgen’ option: msgen Invocation. (line 36) * -o, ‘msgfilter’ option: msgfilter Invocation. (line 45) -* -o, ‘msgfmt’ option: msgfmt Invocation. (line 56) +* -o, ‘msgfmt’ option: msgfmt Invocation. (line 59) * -o, ‘msggrep’ option: msggrep Invocation. (line 30) * -o, ‘msginit’ option: msginit Invocation. (line 59) * -o, ‘msgmerge’ option: msgmerge Invocation. (line 51) @@ -17297,7 +17492,7 @@ (line 126) * -p, ‘msgfilter’ option: msgfilter Invocation. (line 176) -* -P, ‘msgfmt’ option: msgfmt Invocation. (line 176) +* -P, ‘msgfmt’ option: msgfmt Invocation. (line 214) * -P, ‘msggrep’ option: msggrep Invocation. (line 122) * -p, ‘msggrep’ option: msggrep Invocation. (line 167) * -P, ‘msginit’ option: msginit Invocation. (line 70) @@ -17309,8 +17504,8 @@ * -p, ‘msguniq’ option: msguniq Invocation. (line 112) * -p, ‘xgettext’ option: xgettext Invocation. (line 44) * -q, ‘msgmerge’ option: msgmerge Invocation. (line 213) -* -r, ‘msgfmt’ option: msgfmt Invocation. (line 76) -* -r, ‘msgfmt’ option <1>: msgfmt Invocation. (line 99) +* -r, ‘msgfmt’ option: msgfmt Invocation. (line 79) +* -r, ‘msgfmt’ option <1>: msgfmt Invocation. (line 102) * -r, ‘msgunfmt’ option: msgunfmt Invocation. (line 41) * -r, ‘msgunfmt’ option <1>: msgunfmt Invocation. (line 58) * -s, ‘msgattrib’ option: msgattrib Invocation. @@ -17324,7 +17519,7 @@ * -s, ‘msgmerge’ option: msgmerge Invocation. (line 188) * -s, ‘msgunfmt’ option: msgunfmt Invocation. (line 147) * -s, ‘msguniq’ option: msguniq Invocation. (line 135) -* -s, ‘xgettext’ option: xgettext Invocation. (line 405) +* -s, ‘xgettext’ option: xgettext Invocation. (line 413) * -t, ‘msgcat’ option: msgcat Invocation. (line 82) * -t, ‘msgconv’ option: msgconv Invocation. (line 40) * -T, ‘msggrep’ option: msggrep Invocation. (line 82) @@ -17347,8 +17542,8 @@ * -V, ‘msgexec’ option: msgexec Invocation. (line 81) * -V, ‘msgfilter’ option: msgfilter Invocation. (line 215) -* -V, ‘msgfmt’ option: msgfmt Invocation. (line 278) -* -v, ‘msgfmt’ option: msgfmt Invocation. (line 287) +* -V, ‘msgfmt’ option: msgfmt Invocation. (line 316) +* -v, ‘msgfmt’ option: msgfmt Invocation. (line 325) * -v, ‘msggrep’ option: msggrep Invocation. (line 114) * -V, ‘msggrep’ option: msggrep Invocation. (line 204) * -V, ‘msginit’ option: msginit Invocation. (line 132) @@ -17358,7 +17553,7 @@ * -v, ‘msgunfmt’ option: msgunfmt Invocation. (line 163) * -V, ‘msguniq’ option: msguniq Invocation. (line 151) * -V, ‘ngettext’ option: ngettext Invocation. (line 35) -* -V, ‘xgettext’ option: xgettext Invocation. (line 490) +* -V, ‘xgettext’ option: xgettext Invocation. (line 498) * -w, ‘msgattrib’ option: msgattrib Invocation. (line 163) * -w, ‘msgcat’ option: msgcat Invocation. (line 139) @@ -17372,7 +17567,7 @@ * -w, ‘msgmerge’ option: msgmerge Invocation. (line 175) * -w, ‘msgunfmt’ option: msgunfmt Invocation. (line 134) * -w, ‘msguniq’ option: msguniq Invocation. (line 122) -* -w, ‘xgettext’ option: xgettext Invocation. (line 392) +* -w, ‘xgettext’ option: xgettext Invocation. (line 400) * -X, ‘msggrep’ option: msggrep Invocation. (line 90) * -x, ‘xgettext’ option: xgettext Invocation. (line 89) @@ -17777,7 +17972,7 @@ * character encoding: Aspects. (line 67) * charset conversion at runtime: Charset conversion. (line 6) * charset of PO files: Header Entry. (line 101) -* check format strings: msgfmt Invocation. (line 192) +* check format strings: msgfmt Invocation. (line 230) * checking of translations: Manipulating. (line 41) * clisp: Common Lisp. (line 6) * clisp C sources: clisp C. (line 6) @@ -17789,7 +17984,7 @@ * Common Lisp: Common Lisp. (line 6) * compare PO files: msgcmp Invocation. (line 8) * comparison of interfaces: Comparison. (line 6) -* compatibility with X/Open ‘msgfmt’: msgfmt Invocation. (line 225) +* compatibility with X/Open ‘msgfmt’: msgfmt Invocation. (line 263) * compendium: Compendium. (line 6) * compendium, creating: Creating Compendia. (line 6) * concatenate PO files: msgcat Invocation. (line 8) @@ -17862,7 +18057,7 @@ * filter messages according to attributes: msgattrib Invocation. (line 8) * find common messages: msgcomm Invocation. (line 8) -* force use of fuzzy entries: msgfmt Invocation. (line 241) +* force use of fuzzy entries: msgfmt Invocation. (line 279) * format strings: c-format Flag. (line 6) * Free Pascal: Pascal. (line 6) * function attribute, __format_arg__: xgettext Invocation. (line 291) @@ -17920,7 +18115,7 @@ * KDE format strings: xgettext Invocation. (line 322) * KDE PO file editor: KBabel. (line 5) * kde-format flag: PO Files. (line 196) -* keyboard accelerator checking: msgfmt Invocation. (line 229) +* keyboard accelerator checking: msgfmt Invocation. (line 267) * l10n: Concepts. (line 6) * language codes: Language Codes. (line 6) * language selection: Locale Environment Variables. @@ -17982,7 +18177,7 @@ * marking translatable strings: Overview. (line 34) * markup: Preparing Strings. (line 190) * menu entries: Contexts. (line 6) -* menu, keyboard accelerator support: msgfmt Invocation. (line 229) +* menu, keyboard accelerator support: msgfmt Invocation. (line 267) * merge PO files: msgcat Invocation. (line 8) * merging two PO files: Manipulating. (line 10) * message catalog files location: Locating Catalogs. (line 6) @@ -17990,7 +18185,7 @@ * migration from earlier versions of ‘gettext’: Prerequisites. (line 6) * ‘mkinstalldirs’ file: mkinstalldirs. (line 6) -* mnemonics of menu entries: msgfmt Invocation. (line 229) +* mnemonics of menu entries: msgfmt Invocation. (line 267) * MO file’s format: MO Files. (line 6) * modify message attributes: msgattrib Invocation. (line 59) @@ -18112,6 +18307,7 @@ * po_message_msgstr_plural: libgettextpo. (line 84) * po_next_message: libgettextpo. (line 60) * preparing programs for translation: Sources. (line 6) +* preparing rules for XML translation: Preparing ITS Rules. (line 6) * preparing shell scripts for translation: Preparing Shell Scripts. (line 6) * problems with ‘catgets’ interface: Problems with catgets. @@ -18157,7 +18353,7 @@ * sorting ‘msgcat’ output: msgcat Invocation. (line 152) * sorting ‘msgmerge’ output: msgmerge Invocation. (line 188) * sorting ‘msgunfmt’ output: msgunfmt Invocation. (line 147) -* sorting output of ‘xgettext’: xgettext Invocation. (line 405) +* sorting output of ‘xgettext’: xgettext Invocation. (line 413) * specifying plural form in a PO file: Plural forms. (line 177) * standard output, and ‘msgcat’: msgcat Invocation. (line 44) * standard output, and ‘msgmerge’ program: msgmerge Invocation. @@ -18165,6 +18361,7 @@ * string concatenation: Preparing Strings. (line 117) * string normalization in entries: Normalizing. (line 6) * style: Preparing Strings. (line 24) +* supported languages, ‘msgfmt’: msgfmt Invocation. (line 180) * supported languages, ‘xgettext’: xgettext Invocation. (line 54) * supported syntax checks, ‘xgettext’: xgettext Invocation. (line 116) * Tcl: Tcl. (line 6) @@ -18172,7 +18369,7 @@ * Tcl mode, and ‘msgunfmt’ program: msgunfmt Invocation. (line 26) * tcl-format flag: PO Files. (line 163) * template PO file: Overview. (line 67) -* testing ‘.po’ files for equivalence: xgettext Invocation. (line 415) +* testing ‘.po’ files for equivalence: xgettext Invocation. (line 423) * Tk’s scripting language: Tcl. (line 6) * translated entries: Translated Entries. (line 6) * translating menu entries: Contexts. (line 6) @@ -18192,6 +18389,7 @@ * ‘wxWidgets’ library: wxWidgets. (line 6) * ‘xargs’, and output from ‘msgexec’: msgexec Invocation. (line 14) * ‘xgettext’ program, usage: xgettext Invocation. (line 6) +* XML mode, and ‘msgfmt’ program: msgfmt Invocation. (line 52) * ‘xmodmap’ program, and typing quotation marks: Header Entry. (line 172) * YaST2 scripting language: YCP. (line 6) @@ -18202,248 +18400,249 @@  Tag Table: Node: Top2954 -Node: Introduction18266 -Node: Why19908 -Ref: Why-Footnote-123164 -Node: Concepts23320 -Node: Aspects26751 -Node: Files33359 -Node: Overview35309 -Node: Users45396 -Node: System Installation46311 -Node: Setting the GUI Locale48004 -Node: Setting the POSIX Locale49412 -Node: Locale Names50394 -Node: Locale Environment Variables52883 -Node: The LANGUAGE variable55226 -Node: Installing Localizations57247 -Node: PO Files58624 -Ref: PO Files-Footnote-171762 -Node: Sources71897 -Node: Importing73139 -Node: Triggering73843 -Node: Preparing Strings77201 -Node: Mark Keywords86360 -Node: Marking90928 -Node: c-format Flag98885 -Node: Special cases102931 -Node: Bug Report Address105714 -Node: Names107693 -Node: Libraries111999 -Node: Template115089 -Node: xgettext Invocation115854 -Node: Creating135838 -Node: msginit Invocation136747 -Node: Header Entry141070 -Node: Updating150527 -Node: msgmerge Invocation150746 -Node: Editing157212 -Node: KBabel157576 -Node: Gtranslator157716 -Node: PO Mode157860 -Node: Installation159520 -Node: Main PO Commands161536 -Node: Entry Positioning166808 -Node: Normalizing172453 -Node: Translated Entries177014 -Node: Fuzzy Entries178419 -Node: Untranslated Entries181726 -Node: Obsolete Entries183725 -Node: Modifying Translations187024 -Node: Modifying Comments195166 -Node: Subedit199715 -Node: C Sources Context203733 -Node: Auxiliary208962 -Node: Compendium212282 -Node: Creating Compendia212897 -Node: Using Compendia215459 -Node: Manipulating216417 -Node: msgcat Invocation220361 -Node: msgconv Invocation225683 -Node: msggrep Invocation229674 -Node: msgfilter Invocation236496 -Node: msguniq Invocation244850 -Node: msgcomm Invocation249590 -Node: msgcmp Invocation254491 -Node: msgattrib Invocation256732 -Node: msgen Invocation262501 -Node: msgexec Invocation266910 -Node: Colorizing270234 -Node: The --color option271289 -Node: The TERM variable273018 -Node: The --style option274572 -Node: Style rules275950 -Node: Customizing less282963 -Node: libgettextpo284418 -Node: Binaries289668 -Node: msgfmt Invocation290020 -Node: msgunfmt Invocation299762 -Node: MO Files304446 -Node: Programmers313057 -Node: catgets314271 -Node: Interface to catgets315701 -Node: Problems with catgets317770 -Node: gettext318695 -Node: Interface to gettext320218 -Node: Ambiguities322586 -Node: Locating Catalogs325346 -Ref: Locating Catalogs-Footnote-1326611 -Ref: Locating Catalogs-Footnote-2326843 -Node: Charset conversion326996 -Node: Contexts329516 -Node: Plural forms335136 -Ref: Plural forms-Footnote-1351852 -Node: Optimized gettext352224 -Node: Comparison353575 -Node: Using libintl.a357942 -Node: gettext grok358397 -Node: Temp Programmers361106 -Node: Temp Implementations361638 -Node: Temp catgets363056 -Node: Temp WSI364783 -Node: Temp Notes366846 -Node: Translators367360 -Node: Trans Intro 0367905 -Node: Trans Intro 1370762 -Node: Discussions372735 -Node: Organization376453 -Node: Central Coordination378539 -Node: National Teams379687 -Node: Sub-Cultures382221 -Node: Organizational Ideas383162 -Node: Mailing Lists384193 -Node: Information Flow386030 -Node: Translating plural forms388297 -Node: Prioritizing messages391740 -Node: Maintainers396124 -Node: Flat and Non-Flat398101 -Node: Prerequisites399631 -Node: gettextize Invocation403890 -Node: Adjusting Files411670 -Node: po/POTFILES.in413516 -Node: po/LINGUAS414815 -Node: po/Makevars416622 -Node: po/Rules-*417612 -Node: configure.ac419173 -Node: config.guess422338 -Node: mkinstalldirs423804 -Node: aclocal424217 -Node: acconfig426772 -Node: config.h.in427316 -Node: Makefile428864 -Node: src/Makefile431596 -Node: lib/gettext.h436522 -Node: autoconf macros438855 -Node: AM_GNU_GETTEXT439759 -Node: AM_GNU_GETTEXT_VERSION443983 -Node: AM_GNU_GETTEXT_NEED444462 -Node: AM_GNU_GETTEXT_INTL_SUBDIR445395 -Node: AM_PO_SUBDIRS446080 -Node: AM_XGETTEXT_OPTION446919 -Node: AM_ICONV447830 -Node: Version Control Issues450215 -Node: Distributed Development450970 -Node: Files under Version Control453005 -Node: Translations under Version Control456496 -Ref: Translations under Version Control-Footnote-1458572 -Node: autopoint Invocation458662 -Node: Release Management461027 -Node: Installers461568 -Node: Programming Languages462831 -Node: Language Implementors463669 -Node: Programmers for other Languages468659 -Node: Translators for other Languages469253 -Node: c-format471115 -Node: objc-format472889 -Node: sh-format473248 -Node: python-format474097 -Node: lisp-format474870 -Node: elisp-format475199 -Node: librep-format475694 -Node: scheme-format476097 -Node: smalltalk-format476376 -Node: java-format476907 -Node: csharp-format477362 -Node: awk-format477744 -Node: object-pascal-format478072 -Node: ycp-format478458 -Node: tcl-format478876 -Node: perl-format479178 -Node: php-format479970 -Node: gcc-internal-format480346 -Node: gfc-internal-format481505 -Node: qt-format482254 -Node: qt-plural-format482700 -Node: kde-format483059 -Node: kde-kuit-format483491 -Node: boost-format484156 -Node: lua-format484748 -Node: javascript-format485087 -Node: Maintainers for other Languages485857 -Node: List of Programming Languages487145 -Node: C488546 -Node: sh489994 -Node: Preparing Shell Scripts491354 -Node: gettext.sh494874 -Node: gettext Invocation495442 -Node: ngettext Invocation497493 -Node: envsubst Invocation499373 -Node: eval_gettext Invocation500852 -Node: eval_ngettext Invocation501317 -Node: bash501835 -Node: Python503884 -Node: Common Lisp506364 -Node: clisp C507214 -Node: Emacs Lisp507972 -Node: librep508740 -Node: Scheme509521 -Node: Smalltalk510396 -Node: Java511491 -Node: C#517535 -Node: gawk527209 -Node: Pascal528314 -Node: wxWidgets529726 -Node: YCP530693 -Node: Tcl531472 -Node: Perl532962 -Node: General Problems536154 -Node: Default Keywords541822 -Node: Special Keywords542850 -Node: Quote-like Expressions544412 -Node: Interpolation I546729 -Node: Interpolation II550673 -Node: Parentheses553057 -Node: Long Lines554582 -Node: Perl Pitfalls556449 -Node: PHP560783 -Node: Pike561792 -Node: GCC-source562493 -Node: Lua563313 -Node: JavaScript564319 -Node: Vala565087 -Node: List of Data Formats566006 -Node: POT566633 -Node: RST566903 -Node: Glade567141 -Node: GSettings567553 -Node: AppData567864 -Node: Conclusion568258 -Node: History568772 -Node: References573175 -Node: Language Codes574874 -Node: Usual Language Codes575389 -Node: Rare Language Codes580307 -Node: Country Codes582157 -Node: Licenses589310 -Node: GNU GPL591166 -Node: GNU LGPL610483 -Node: GNU FDL638720 -Node: Program Index661251 -Node: Option Index663661 -Node: Variable Index718186 -Node: PO Mode Index722857 -Node: Autoconf Macro Index739567 -Node: Index740374 +Node: Introduction18343 +Node: Why19985 +Ref: Why-Footnote-123241 +Node: Concepts23397 +Node: Aspects26828 +Node: Files33436 +Node: Overview35386 +Node: Users45473 +Node: System Installation46388 +Node: Setting the GUI Locale48081 +Node: Setting the POSIX Locale49489 +Node: Locale Names50471 +Node: Locale Environment Variables52960 +Node: The LANGUAGE variable55303 +Node: Installing Localizations57324 +Node: PO Files58701 +Ref: PO Files-Footnote-171839 +Node: Sources71974 +Node: Importing73216 +Node: Triggering73920 +Node: Preparing Strings77278 +Node: Mark Keywords86437 +Node: Marking91005 +Node: c-format Flag98962 +Node: Special cases103008 +Node: Bug Report Address105792 +Node: Names107771 +Node: Libraries112077 +Node: Template115167 +Node: xgettext Invocation115932 +Node: Creating136166 +Node: msginit Invocation137075 +Node: Header Entry141398 +Node: Updating150855 +Node: msgmerge Invocation151074 +Node: Editing157540 +Node: KBabel157904 +Node: Gtranslator158044 +Node: PO Mode158188 +Node: Installation159848 +Node: Main PO Commands161864 +Node: Entry Positioning167136 +Node: Normalizing172781 +Node: Translated Entries177342 +Node: Fuzzy Entries178747 +Node: Untranslated Entries182054 +Node: Obsolete Entries184053 +Node: Modifying Translations187352 +Node: Modifying Comments195494 +Node: Subedit200043 +Node: C Sources Context204061 +Node: Auxiliary209290 +Node: Compendium212610 +Node: Creating Compendia213225 +Node: Using Compendia215787 +Node: Manipulating216745 +Node: msgcat Invocation220689 +Node: msgconv Invocation226011 +Node: msggrep Invocation230002 +Node: msgfilter Invocation236824 +Node: msguniq Invocation245178 +Node: msgcomm Invocation249918 +Node: msgcmp Invocation254819 +Node: msgattrib Invocation257060 +Node: msgen Invocation262829 +Node: msgexec Invocation267238 +Node: Colorizing270562 +Node: The --color option271617 +Node: The TERM variable273346 +Node: The --style option274900 +Node: Style rules276278 +Node: Customizing less283291 +Node: libgettextpo284746 +Node: Binaries289996 +Node: msgfmt Invocation290348 +Node: msgunfmt Invocation301074 +Node: MO Files305758 +Node: Programmers314369 +Node: catgets315583 +Node: Interface to catgets317013 +Node: Problems with catgets319082 +Node: gettext320007 +Node: Interface to gettext321530 +Node: Ambiguities323898 +Node: Locating Catalogs326658 +Ref: Locating Catalogs-Footnote-1327923 +Ref: Locating Catalogs-Footnote-2328155 +Node: Charset conversion328308 +Node: Contexts330828 +Node: Plural forms336448 +Ref: Plural forms-Footnote-1353164 +Node: Optimized gettext353536 +Node: Comparison354887 +Node: Using libintl.a359254 +Node: gettext grok359709 +Node: Temp Programmers362418 +Node: Temp Implementations362950 +Node: Temp catgets364368 +Node: Temp WSI366095 +Node: Temp Notes368158 +Node: Translators368672 +Node: Trans Intro 0369217 +Node: Trans Intro 1372074 +Node: Discussions374047 +Node: Organization377765 +Node: Central Coordination379851 +Node: National Teams380999 +Node: Sub-Cultures383533 +Node: Organizational Ideas384474 +Node: Mailing Lists385505 +Node: Information Flow387342 +Node: Translating plural forms389609 +Node: Prioritizing messages393052 +Node: Maintainers397436 +Node: Flat and Non-Flat399413 +Node: Prerequisites400943 +Node: gettextize Invocation405202 +Node: Adjusting Files412982 +Node: po/POTFILES.in414828 +Node: po/LINGUAS416127 +Node: po/Makevars417934 +Node: po/Rules-*418924 +Node: configure.ac420485 +Node: config.guess423650 +Node: mkinstalldirs425116 +Node: aclocal425529 +Node: acconfig428084 +Node: config.h.in428628 +Node: Makefile430176 +Node: src/Makefile432908 +Node: lib/gettext.h437834 +Node: autoconf macros440167 +Node: AM_GNU_GETTEXT441071 +Node: AM_GNU_GETTEXT_VERSION445295 +Node: AM_GNU_GETTEXT_NEED445774 +Node: AM_GNU_GETTEXT_INTL_SUBDIR446707 +Node: AM_PO_SUBDIRS447392 +Node: AM_XGETTEXT_OPTION448231 +Node: AM_ICONV449142 +Node: Version Control Issues451527 +Node: Distributed Development452282 +Node: Files under Version Control454317 +Node: Translations under Version Control457808 +Ref: Translations under Version Control-Footnote-1459884 +Node: autopoint Invocation459974 +Node: Release Management462339 +Node: Installers462880 +Node: Programming Languages464143 +Node: Language Implementors464981 +Node: Programmers for other Languages469971 +Node: Translators for other Languages470565 +Node: c-format472427 +Node: objc-format474201 +Node: sh-format474560 +Node: python-format475409 +Node: lisp-format476182 +Node: elisp-format476511 +Node: librep-format477006 +Node: scheme-format477409 +Node: smalltalk-format477688 +Node: java-format478219 +Node: csharp-format478674 +Node: awk-format479056 +Node: object-pascal-format479384 +Node: ycp-format479770 +Node: tcl-format480188 +Node: perl-format480490 +Node: php-format481282 +Node: gcc-internal-format481658 +Node: gfc-internal-format482817 +Node: qt-format483566 +Node: qt-plural-format484012 +Node: kde-format484371 +Node: kde-kuit-format484803 +Node: boost-format485468 +Node: lua-format486060 +Node: javascript-format486399 +Node: Maintainers for other Languages487169 +Node: List of Programming Languages488457 +Node: C489858 +Node: sh491306 +Node: Preparing Shell Scripts492666 +Node: gettext.sh496186 +Node: gettext Invocation496754 +Node: ngettext Invocation498805 +Node: envsubst Invocation500685 +Node: eval_gettext Invocation502164 +Node: eval_ngettext Invocation502629 +Node: bash503147 +Node: Python505196 +Node: Common Lisp507676 +Node: clisp C508526 +Node: Emacs Lisp509284 +Node: librep510052 +Node: Scheme510833 +Node: Smalltalk511708 +Node: Java512803 +Node: C#518847 +Node: gawk528521 +Node: Pascal529626 +Node: wxWidgets531038 +Node: YCP532005 +Node: Tcl532784 +Node: Perl534274 +Node: General Problems537466 +Node: Default Keywords543134 +Node: Special Keywords544162 +Node: Quote-like Expressions545724 +Node: Interpolation I548041 +Node: Interpolation II551985 +Node: Parentheses554369 +Node: Long Lines555894 +Node: Perl Pitfalls557761 +Node: PHP562095 +Node: Pike563104 +Node: GCC-source563805 +Node: Lua564625 +Node: JavaScript565631 +Node: Vala566399 +Node: List of Data Formats567318 +Node: POT568015 +Node: RST568285 +Node: Glade568523 +Node: GSettings568935 +Node: AppData569246 +Node: Preparing ITS Rules569677 +Node: Conclusion575810 +Node: History576324 +Node: References580727 +Node: Language Codes582426 +Node: Usual Language Codes582941 +Node: Rare Language Codes587859 +Node: Country Codes589709 +Node: Licenses596862 +Node: GNU GPL598718 +Node: GNU LGPL618035 +Node: GNU FDL646272 +Node: Program Index668803 +Node: Option Index671213 +Node: Variable Index726431 +Node: PO Mode Index731102 +Node: Autoconf Macro Index747812 +Node: Index748619  End Tag Table diff -Nru gettext-0.19.6/gettext-tools/doc/gettext.texi gettext-0.19.7/gettext-tools/doc/gettext.texi --- gettext-0.19.6/gettext-tools/doc/gettext.texi 2015-08-21 07:20:38.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext.texi 2015-12-08 12:50:04.000000000 +0000 @@ -470,6 +470,7 @@ * Glade:: Glade - GNOME user interface description * GSettings:: GSettings - GNOME user configuration schema * AppData:: AppData - freedesktop.org application description +* Preparing ITS Rules:: Preparing Rules for XML Internationalization Concluding Remarks @@ -2608,7 +2609,7 @@ @{ static const char *messages[] = @{ - gettext_noop ("some very meaningful message", + gettext_noop ("some very meaningful message"), gettext_noop ("and another one") @}; const char *string; @@ -8780,7 +8781,7 @@ form @example -AM_GNU_GETTEXT_VERSION(@value{VERSION}) +AM_GNU_GETTEXT_VERSION(@value{ARCHIVE-VERSION}) @end example @noindent @@ -12155,6 +12156,7 @@ * Glade:: Glade - GNOME user interface description * GSettings:: GSettings - GNOME user configuration schema * AppData:: AppData - freedesktop.org application description +* Preparing ITS Rules:: Preparing Rules for XML Internationalization @end menu @node POT, RST, List of Data Formats, List of Data Formats @@ -12214,7 +12216,7 @@ @code{xgettext}, @code{intltool-extract} @end table -@node AppData, , GSettings, List of Data Formats +@node AppData, Preparing ITS Rules, GSettings, List of Data Formats @subsection AppData - freedesktop.org application description @table @asis @@ -12228,6 +12230,166 @@ @code{xgettext}, @code{intltool-extract}, @code{itstool} @end table +@menu +@end menu + +@node Preparing ITS Rules, , AppData, List of Data Formats +@subsection Preparing Rules for XML Internationalization +@cindex preparing rules for XML translation + +Marking translatable strings in an XML file is done through a separate +"rule" file, making use of the Internationalization Tag Set standard +(ITS, @uref{http://www.w3.org/TR/its20/}). The currently supported ITS +data categories are: @samp{Translate}, @samp{Localization Note}, +@samp{Elements Within Text}, and @samp{Preserve Space}. In addition to +them, @code{xgettext} also recognizes the following extended data +categories: + +@table @samp +@item Context + +This data category associates @code{msgctxt} to the extracted text. In +the global rule, the @code{contextRule} element contains the following: + +@itemize +@item +A required @code{selector} attribute. It contains an absolute selector +that selects the nodes to which this rule applies. + +@item +A required @code{contextPointer} attribute that contains a relative +selector pointing to a node that holds the @code{msgctxt} value. + +@item +An optional @code{textPointer} attribute that contains a relative +selector pointing to a node that holds the @code{msgid} value. +@end itemize + +@item Escape Special Characters + +This data category indicates whether the special XML characters +(@code{<}, @code{>}, @code{&}, @code{"}) are escaped with entity +reference. In the global rule, the @code{escapeRule} element contains +the following: + +@itemize +@item +A required @code{selector} attribute. It contains an absolute selector +that selects the nodes to which this rule applies. + +@item +A required @code{escape} attribute with the value @code{yes} or @code{no}. +@end itemize + +@item Extended Preserve Space + +This data category extends the standard @samp{Preserve Space} data +category with the additional value @samp{trim}. The value means to +remove the leading and trailing whitespaces of the content, but not to +normalize whitespaces in the middle. In the global rule, the +@code{preserveSpaceRule} element contains the following: + +@itemize +@item +A required @code{selector} attribute. It contains an absolute selector +that selects the nodes to which this rule applies. + +@item +A required @code{space} attribute with the value @code{default}, +@code{preserve}, or @code{trim}. +@end itemize + +@end table + +All those extended data categories can only be expressed with global +rules, and the rule elements have to have the +@code{https://www.gnu.org/s/gettext/ns/its/extensions/1.0} namespace. + +Given the following XML document in a file @file{messages.xml}: + +@example + + + +

    A translatable string

    +
    + +

    A non-translatable string

    +
    +
    +@end example + +To extract the first text content ("A translatable string"), but not the +second ("A non-translatable string"), the following ITS rules can be used: + +@example + + + + + + + + +@end example + +@samp{xgettext} needs another file called "locating rule" to associate +an ITS rule with an XML file. If the above ITS file is saved as +@file{messages.its}, the locating rule would look like: + +@example + + + + + + + +@end example + +The @code{locatingRule} element must have a @code{pattern} attribute, +which denotes either a literal file name or a wildcard pattern of the +XML file. The @code{locatingRule} element can have child +@code{documentRule} element, which adds checks on the content of the XML +file. + +The first rule matches any file with the @file{.xml} file extension, but +it only applies to XML files whose root element is @samp{}. + +The second rule indicates that the same ITS rule file are also +applicable to any file with the @file{.msg} file extension. The +optional @code{name} attribute of @code{locatingRule} allows to choose +rules by name, typically with @code{xgettext}'s @code{-L} option. + +The associated ITS rule file is indicated by the @code{target} attribute +of @code{locatingRule} or @code{documentRule}. If it is specified in a +@code{documentRule} element, the parent @code{locatingRule} shouldn't +have the @code{target} attribute. + +Locating rule files must have the @file{.loc} file extension. Both ITS +rule files and locating rule files must be installed in the +@file{$prefix/share/gettext/its} directory. Once those files are +properly installed, @code{xgettext} can extract translatable strings +from the matching XML files. + +@subsubsection Two Use-cases of Translated Strings in XML + +For XML, there are two use-cases of translated strings. One is the case +where the translated strings are directly consumed by programs, and the +other is the case where the translated strings are merged back to the +original XML document. In the former case, special characters in the +extracted strings shouldn't be escaped, while they should in the latter +case. To control wheter to escape special characters, the @samp{Escape +Special Characters} data category can be used. + +To merge the translations, the @samp{msgfmt} program can be used with +the option @code{--xml}. @xref{msgfmt Invocation}, for more details +about how one calls the @samp{msgfmt} program. @samp{msgfmt}'s +@code{--xml} option doesn't perform character escaping, so translated +strings can have arbitrary XML constructs, such as elements for markup. + @c This is the template for new data formats. @ignore diff -Nru gettext-0.19.6/gettext-tools/doc/gettext_toc.html gettext-0.19.7/gettext-tools/doc/gettext_toc.html --- gettext-0.19.6/gettext-tools/doc/gettext_toc.html 2015-09-11 03:06:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/gettext_toc.html 2015-12-27 23:21:32.000000000 +0000 @@ -1,15 +1,15 @@ + from gettext.texi on 28 December 2015 --> GNU gettext utilities - Table of Contents -

    GNU gettext tools, version 0.19.6

    +

    GNU gettext tools, version 0.19.7

    Native Language Support Library and Tools

    -

    Edition 0.19.6, 21 August 2015

    +

    Edition 0.19.7, 8 December 2015

    Ulrich Drepper
    Jim Meyering
    François Pinard
    @@ -237,232 +237,237 @@
  • 10.1.5 Output file location in C# mode
  • 10.1.6 Output file location in Tcl mode
  • 10.1.7 Desktop Entry mode operations -
  • 10.1.8 Input file syntax -
  • 10.1.9 Input file interpretation -
  • 10.1.10 Output details -
  • 10.1.11 Informative output - -
  • 10.2 Invoking the msgunfmt Program - -
  • 10.3 The Format of GNU MO Files - -
  • 11 The Programmer's View - -
  • 12 The Translator's View - -
  • 13 The Maintainer's View - -
  • 14 The Installer's and Distributor's View -
  • 15 Other Programming Languages - -
  • 16 Concluding Remarks - -
  • A Language Codes - -
  • B Country Codes -
  • C Licenses - -
  • Program Index -
  • Option Index -
  • Variable Index -
  • PO Mode Index -
  • Autoconf Macro Index -
  • General Index +
  • 10.1.8 XML mode operations +
  • 10.1.9 Input file syntax +
  • 10.1.10 Input file interpretation +
  • 10.1.11 Output details +
  • 10.1.12 Informative output + +
  • 10.2 Invoking the msgunfmt Program + +
  • 10.3 The Format of GNU MO Files + +
  • 11 The Programmer's View + +
  • 12 The Translator's View + +
  • 13 The Maintainer's View + +
  • 14 The Installer's and Distributor's View +
  • 15 Other Programming Languages + +
  • 16 Concluding Remarks + +
  • A Language Codes + +
  • B Country Codes +
  • C Licenses + +
  • Program Index +
  • Option Index +
  • Variable Index +
  • PO Mode Index +
  • Autoconf Macro Index +
  • General Index


    -This document was generated on 11 September 2015 using the +This document was generated on 28 December 2015 using the texi2html translator version 1.52b.

    diff -Nru gettext-0.19.6/gettext-tools/doc/Makefile.am gettext-0.19.7/gettext-tools/doc/Makefile.am --- gettext-0.19.6/gettext-tools/doc/Makefile.am 2015-08-21 07:18:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/Makefile.am 2015-12-08 12:50:04.000000000 +0000 @@ -51,8 +51,7 @@ EXTRA_DIST += \ iso-639.sed iso-639-2.sed iso-3166.sed \ ISO_639 ISO_639-2 ISO_3166 ISO_3166_de \ - texi2html \ - ChangeLog.0 + texi2html iso-639.texi: ISO_639 iso-639.sed $(SED) -f $(srcdir)/iso-639.sed $(srcdir)/ISO_639 > iso-639.tmp @@ -78,7 +77,8 @@ echo "@set UPDATED $$1 $$2 $$3"; \ echo "@set UPDATED-MONTH $$2 $$3"; \ echo "@set EDITION $(VERSION)"; \ - echo "@set VERSION $(VERSION)") > vti.tmp + echo "@set VERSION $(VERSION)"; \ + echo "@set ARCHIVE-VERSION $(ARCHIVE_VERSION)") > vti.tmp cmp -s vti.tmp version.texi \ || (echo "Updating version.texi"; \ cp vti.tmp version.texi) diff -Nru gettext-0.19.6/gettext-tools/doc/Makefile.in gettext-0.19.7/gettext-tools/doc/Makefile.in --- gettext-0.19.6/gettext-tools/doc/Makefile.in 2015-09-11 03:05:09.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/Makefile.in 2015-12-27 23:09:40.000000000 +0000 @@ -108,6 +108,7 @@ $(top_srcdir)/gnulib-m4/btowc.m4 \ $(top_srcdir)/gnulib-m4/byteswap.m4 \ $(top_srcdir)/gnulib-m4/canonicalize.m4 \ + $(top_srcdir)/gnulib-m4/check-math-lib.m4 \ $(top_srcdir)/gnulib-m4/close.m4 \ $(top_srcdir)/gnulib-m4/closedir.m4 \ $(top_srcdir)/gnulib-m4/configmake.m4 \ @@ -115,6 +116,7 @@ $(top_srcdir)/gnulib-m4/csharp.m4 \ $(top_srcdir)/gnulib-m4/csharpcomp.m4 \ $(top_srcdir)/gnulib-m4/csharpexec.m4 \ + $(top_srcdir)/gnulib-m4/ctype.m4 \ $(top_srcdir)/gnulib-m4/curses.m4 \ $(top_srcdir)/gnulib-m4/dirent_h.m4 \ $(top_srcdir)/gnulib-m4/double-slash-root.m4 \ @@ -126,7 +128,10 @@ $(top_srcdir)/gnulib-m4/error.m4 \ $(top_srcdir)/gnulib-m4/execute.m4 \ $(top_srcdir)/gnulib-m4/exponentd.m4 \ + $(top_srcdir)/gnulib-m4/exponentf.m4 \ + $(top_srcdir)/gnulib-m4/exponentl.m4 \ $(top_srcdir)/gnulib-m4/extensions.m4 \ + $(top_srcdir)/gnulib-m4/fabs.m4 \ $(top_srcdir)/gnulib-m4/fatal-signal.m4 \ $(top_srcdir)/gnulib-m4/fcntl.m4 \ $(top_srcdir)/gnulib-m4/fcntl_h.m4 \ @@ -156,6 +161,11 @@ $(top_srcdir)/gnulib-m4/inline.m4 \ $(top_srcdir)/gnulib-m4/intmax_t.m4 \ $(top_srcdir)/gnulib-m4/inttypes.m4 \ + $(top_srcdir)/gnulib-m4/isinf.m4 \ + $(top_srcdir)/gnulib-m4/isnan.m4 \ + $(top_srcdir)/gnulib-m4/isnand.m4 \ + $(top_srcdir)/gnulib-m4/isnanf.m4 \ + $(top_srcdir)/gnulib-m4/isnanl.m4 \ $(top_srcdir)/gnulib-m4/iswblank.m4 \ $(top_srcdir)/gnulib-m4/java.m4 \ $(top_srcdir)/gnulib-m4/javacomp.m4 \ @@ -178,10 +188,13 @@ $(top_srcdir)/gnulib-m4/locale-zh.m4 \ $(top_srcdir)/gnulib-m4/locale_h.m4 \ $(top_srcdir)/gnulib-m4/localename.m4 \ + $(top_srcdir)/gnulib-m4/log10.m4 \ $(top_srcdir)/gnulib-m4/lseek.m4 \ $(top_srcdir)/gnulib-m4/lstat.m4 \ $(top_srcdir)/gnulib-m4/malloc.m4 \ $(top_srcdir)/gnulib-m4/malloca.m4 \ + $(top_srcdir)/gnulib-m4/math_h.m4 \ + $(top_srcdir)/gnulib-m4/mathfunc.m4 \ $(top_srcdir)/gnulib-m4/mbchar.m4 \ $(top_srcdir)/gnulib-m4/mbiter.m4 \ $(top_srcdir)/gnulib-m4/mbrtowc.m4 \ @@ -211,6 +224,7 @@ $(top_srcdir)/gnulib-m4/pathmax.m4 \ $(top_srcdir)/gnulib-m4/pipe2.m4 \ $(top_srcdir)/gnulib-m4/posix_spawn.m4 \ + $(top_srcdir)/gnulib-m4/pow.m4 \ $(top_srcdir)/gnulib-m4/printf.m4 \ $(top_srcdir)/gnulib-m4/putenv.m4 \ $(top_srcdir)/gnulib-m4/quote.m4 \ @@ -235,6 +249,7 @@ $(top_srcdir)/gnulib-m4/sigaction.m4 \ $(top_srcdir)/gnulib-m4/signal_h.m4 \ $(top_srcdir)/gnulib-m4/signalblocking.m4 \ + $(top_srcdir)/gnulib-m4/signbit.m4 \ $(top_srcdir)/gnulib-m4/sigpipe.m4 \ $(top_srcdir)/gnulib-m4/sleep.m4 \ $(top_srcdir)/gnulib-m4/snprintf.m4 \ @@ -430,7 +445,7 @@ am__DIST_COMMON = $(gettext_TEXINFOS) $(srcdir)/Makefile.in \ $(top_srcdir)/../build-aux/mdate-sh \ $(top_srcdir)/../build-aux/mkinstalldirs \ - $(top_srcdir)/../build-aux/texinfo.tex ChangeLog + $(top_srcdir)/../build-aux/texinfo.tex DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkglibexecdir = @pkglibexecdir@ ACLOCAL = @ACLOCAL@ @@ -508,6 +523,7 @@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ +FABS_LIBM = @FABS_LIBM@ FGREP = @FGREP@ FLOAT_H = @FLOAT_H@ FNMATCH_H = @FNMATCH_H@ @@ -522,15 +538,34 @@ GLOBAL_SYMBOL_PIPE = @GLOBAL_SYMBOL_PIPE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_ACOSF = @GNULIB_ACOSF@ +GNULIB_ACOSL = @GNULIB_ACOSL@ GNULIB_ALPHASORT = @GNULIB_ALPHASORT@ +GNULIB_ASINF = @GNULIB_ASINF@ +GNULIB_ASINL = @GNULIB_ASINL@ +GNULIB_ATAN2F = @GNULIB_ATAN2F@ +GNULIB_ATANF = @GNULIB_ATANF@ +GNULIB_ATANL = @GNULIB_ATANL@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_BTOWC = @GNULIB_BTOWC@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ +GNULIB_CBRT = @GNULIB_CBRT@ +GNULIB_CBRTF = @GNULIB_CBRTF@ +GNULIB_CBRTL = @GNULIB_CBRTL@ +GNULIB_CEIL = @GNULIB_CEIL@ +GNULIB_CEILF = @GNULIB_CEILF@ +GNULIB_CEILL = @GNULIB_CEILL@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@ +GNULIB_COPYSIGN = @GNULIB_COPYSIGN@ +GNULIB_COPYSIGNF = @GNULIB_COPYSIGNF@ +GNULIB_COPYSIGNL = @GNULIB_COPYSIGNL@ +GNULIB_COSF = @GNULIB_COSF@ +GNULIB_COSHF = @GNULIB_COSHF@ +GNULIB_COSL = @GNULIB_COSL@ GNULIB_DIRFD = @GNULIB_DIRFD@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ @@ -539,6 +574,16 @@ GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_EXP2 = @GNULIB_EXP2@ +GNULIB_EXP2F = @GNULIB_EXP2F@ +GNULIB_EXP2L = @GNULIB_EXP2L@ +GNULIB_EXPF = @GNULIB_EXPF@ +GNULIB_EXPL = @GNULIB_EXPL@ +GNULIB_EXPM1 = @GNULIB_EXPM1@ +GNULIB_EXPM1F = @GNULIB_EXPM1F@ +GNULIB_EXPM1L = @GNULIB_EXPM1L@ +GNULIB_FABSF = @GNULIB_FABSF@ +GNULIB_FABSL = @GNULIB_FABSL@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ @@ -553,6 +598,15 @@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ +GNULIB_FLOOR = @GNULIB_FLOOR@ +GNULIB_FLOORF = @GNULIB_FLOORF@ +GNULIB_FLOORL = @GNULIB_FLOORL@ +GNULIB_FMA = @GNULIB_FMA@ +GNULIB_FMAF = @GNULIB_FMAF@ +GNULIB_FMAL = @GNULIB_FMAL@ +GNULIB_FMOD = @GNULIB_FMOD@ +GNULIB_FMODF = @GNULIB_FMODF@ +GNULIB_FMODL = @GNULIB_FMODL@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ @@ -561,6 +615,9 @@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ +GNULIB_FREXP = @GNULIB_FREXP@ +GNULIB_FREXPF = @GNULIB_FREXPF@ +GNULIB_FREXPL = @GNULIB_FREXPL@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ @@ -591,17 +648,47 @@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ +GNULIB_HYPOT = @GNULIB_HYPOT@ +GNULIB_HYPOTF = @GNULIB_HYPOTF@ +GNULIB_HYPOTL = @GNULIB_HYPOTL@ GNULIB_ICONV = @GNULIB_ICONV@ +GNULIB_ILOGB = @GNULIB_ILOGB@ +GNULIB_ILOGBF = @GNULIB_ILOGBF@ +GNULIB_ILOGBL = @GNULIB_ILOGBL@ GNULIB_IMAXABS = @GNULIB_IMAXABS@ GNULIB_IMAXDIV = @GNULIB_IMAXDIV@ GNULIB_ISATTY = @GNULIB_ISATTY@ +GNULIB_ISBLANK = @GNULIB_ISBLANK@ +GNULIB_ISFINITE = @GNULIB_ISFINITE@ +GNULIB_ISINF = @GNULIB_ISINF@ +GNULIB_ISNAN = @GNULIB_ISNAN@ +GNULIB_ISNAND = @GNULIB_ISNAND@ +GNULIB_ISNANF = @GNULIB_ISNANF@ +GNULIB_ISNANL = @GNULIB_ISNANL@ GNULIB_ISWBLANK = @GNULIB_ISWBLANK@ GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LDEXPF = @GNULIB_LDEXPF@ +GNULIB_LDEXPL = @GNULIB_LDEXPL@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LOCALECONV = @GNULIB_LOCALECONV@ +GNULIB_LOG = @GNULIB_LOG@ +GNULIB_LOG10 = @GNULIB_LOG10@ +GNULIB_LOG10F = @GNULIB_LOG10F@ +GNULIB_LOG10L = @GNULIB_LOG10L@ +GNULIB_LOG1P = @GNULIB_LOG1P@ +GNULIB_LOG1PF = @GNULIB_LOG1PF@ +GNULIB_LOG1PL = @GNULIB_LOG1PL@ +GNULIB_LOG2 = @GNULIB_LOG2@ +GNULIB_LOG2F = @GNULIB_LOG2F@ +GNULIB_LOG2L = @GNULIB_LOG2L@ +GNULIB_LOGB = @GNULIB_LOGB@ +GNULIB_LOGBF = @GNULIB_LOGBF@ +GNULIB_LOGBL = @GNULIB_LOGBL@ +GNULIB_LOGF = @GNULIB_LOGF@ +GNULIB_LOGL = @GNULIB_LOGL@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ @@ -640,6 +727,9 @@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ +GNULIB_MODF = @GNULIB_MODF@ +GNULIB_MODFF = @GNULIB_MODFF@ +GNULIB_MODFL = @GNULIB_MODFL@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@ GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ @@ -675,6 +765,7 @@ GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN@ GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY@ GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT@ +GNULIB_POWF = @GNULIB_POWF@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ @@ -698,11 +789,20 @@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ +GNULIB_REMAINDER = @GNULIB_REMAINDER@ +GNULIB_REMAINDERF = @GNULIB_REMAINDERF@ +GNULIB_REMAINDERL = @GNULIB_REMAINDERL@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_REWINDDIR = @GNULIB_REWINDDIR@ +GNULIB_RINT = @GNULIB_RINT@ +GNULIB_RINTF = @GNULIB_RINTF@ +GNULIB_RINTL = @GNULIB_RINTL@ GNULIB_RMDIR = @GNULIB_RMDIR@ +GNULIB_ROUND = @GNULIB_ROUND@ +GNULIB_ROUNDF = @GNULIB_ROUNDF@ +GNULIB_ROUNDL = @GNULIB_ROUNDL@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANDIR = @GNULIB_SCANDIR@ GNULIB_SCANF = @GNULIB_SCANF@ @@ -713,10 +813,16 @@ GNULIB_SETLOCALE = @GNULIB_SETLOCALE@ GNULIB_SIGACTION = @GNULIB_SIGACTION@ GNULIB_SIGNAL_H_SIGPIPE = @GNULIB_SIGNAL_H_SIGPIPE@ +GNULIB_SIGNBIT = @GNULIB_SIGNBIT@ GNULIB_SIGPROCMASK = @GNULIB_SIGPROCMASK@ +GNULIB_SINF = @GNULIB_SINF@ +GNULIB_SINHF = @GNULIB_SINHF@ +GNULIB_SINL = @GNULIB_SINL@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ +GNULIB_SQRTF = @GNULIB_SQRTF@ +GNULIB_SQRTL = @GNULIB_SQRTL@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ @@ -745,11 +851,17 @@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ +GNULIB_TANF = @GNULIB_TANF@ +GNULIB_TANHF = @GNULIB_TANHF@ +GNULIB_TANL = @GNULIB_TANL@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TIME_RZ = @GNULIB_TIME_RZ@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@ +GNULIB_TRUNC = @GNULIB_TRUNC@ +GNULIB_TRUNCF = @GNULIB_TRUNCF@ +GNULIB_TRUNCL = @GNULIB_TRUNCL@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ @@ -809,25 +921,57 @@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ +HAVE_ACOSF = @HAVE_ACOSF@ +HAVE_ACOSL = @HAVE_ACOSL@ HAVE_ALPHASORT = @HAVE_ALPHASORT@ +HAVE_ASINF = @HAVE_ASINF@ +HAVE_ASINL = @HAVE_ASINL@ HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_ATAN2F = @HAVE_ATAN2F@ +HAVE_ATANF = @HAVE_ATANF@ +HAVE_ATANL = @HAVE_ATANL@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_BTOWC = @HAVE_BTOWC@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ +HAVE_CBRT = @HAVE_CBRT@ +HAVE_CBRTF = @HAVE_CBRTF@ +HAVE_CBRTL = @HAVE_CBRTL@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_CLIX = @HAVE_CLIX@ HAVE_CLIX_IN_PATH = @HAVE_CLIX_IN_PATH@ HAVE_CLOSEDIR = @HAVE_CLOSEDIR@ +HAVE_COPYSIGN = @HAVE_COPYSIGN@ +HAVE_COPYSIGNL = @HAVE_COPYSIGNL@ +HAVE_COSF = @HAVE_COSF@ +HAVE_COSHF = @HAVE_COSHF@ +HAVE_COSL = @HAVE_COSL@ HAVE_CSC = @HAVE_CSC@ HAVE_CSCC = @HAVE_CSCC@ HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@ +HAVE_DECL_ASINL = @HAVE_DECL_ASINL@ +HAVE_DECL_ATANL = @HAVE_DECL_ATANL@ +HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@ +HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@ +HAVE_DECL_CEILF = @HAVE_DECL_CEILF@ +HAVE_DECL_CEILL = @HAVE_DECL_CEILL@ +HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@ +HAVE_DECL_COSL = @HAVE_DECL_COSL@ HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@ +HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@ +HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@ +HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ +HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@ +HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@ +HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ +HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ @@ -839,13 +983,28 @@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ +HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ +HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@ +HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@ +HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@ +HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@ +HAVE_DECL_LOGB = @HAVE_DECL_LOGB@ +HAVE_DECL_LOGL = @HAVE_DECL_LOGL@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ +HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@ +HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@ +HAVE_DECL_RINTF = @HAVE_DECL_RINTF@ +HAVE_DECL_ROUND = @HAVE_DECL_ROUND@ +HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@ +HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ +HAVE_DECL_SINL = @HAVE_DECL_SINL@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ +HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ @@ -854,6 +1013,10 @@ HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ +HAVE_DECL_TANL = @HAVE_DECL_TANL@ +HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@ +HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@ +HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ @@ -865,6 +1028,12 @@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_DUPLOCALE = @HAVE_DUPLOCALE@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_EXPF = @HAVE_EXPF@ +HAVE_EXPL = @HAVE_EXPL@ +HAVE_EXPM1 = @HAVE_EXPM1@ +HAVE_EXPM1F = @HAVE_EXPM1F@ +HAVE_FABSF = @HAVE_FABSF@ +HAVE_FABSL = @HAVE_FABSL@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ @@ -875,6 +1044,12 @@ HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ +HAVE_FMA = @HAVE_FMA@ +HAVE_FMAF = @HAVE_FMAF@ +HAVE_FMAL = @HAVE_FMAL@ +HAVE_FMODF = @HAVE_FMODF@ +HAVE_FMODL = @HAVE_FMODL@ +HAVE_FREXPF = @HAVE_FREXPF@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ @@ -897,9 +1072,18 @@ HAVE_GLOBAL_SYMBOL_PIPE = @HAVE_GLOBAL_SYMBOL_PIPE@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ +HAVE_HYPOTF = @HAVE_HYPOTF@ +HAVE_HYPOTL = @HAVE_HYPOTL@ +HAVE_ILOGB = @HAVE_ILOGB@ +HAVE_ILOGBF = @HAVE_ILOGBF@ +HAVE_ILOGBL = @HAVE_ILOGBL@ HAVE_ILRUN = @HAVE_ILRUN@ HAVE_ILRUN_IN_PATH = @HAVE_ILRUN_IN_PATH@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_ISBLANK = @HAVE_ISBLANK@ +HAVE_ISNAND = @HAVE_ISNAND@ +HAVE_ISNANF = @HAVE_ISNANF@ +HAVE_ISNANL = @HAVE_ISNANL@ HAVE_ISWBLANK = @HAVE_ISWBLANK@ HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ HAVE_JAVA = @HAVE_JAVA@ @@ -921,10 +1105,19 @@ HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ -HAVE_LIBEXPAT = @HAVE_LIBEXPAT@ +HAVE_LDEXPF = @HAVE_LDEXPF@ HAVE_LIBUNISTRING = @HAVE_LIBUNISTRING@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ +HAVE_LOG10F = @HAVE_LOG10F@ +HAVE_LOG10L = @HAVE_LOG10L@ +HAVE_LOG1P = @HAVE_LOG1P@ +HAVE_LOG1PF = @HAVE_LOG1PF@ +HAVE_LOG1PL = @HAVE_LOG1PL@ +HAVE_LOGBF = @HAVE_LOGBF@ +HAVE_LOGBL = @HAVE_LOGBL@ +HAVE_LOGF = @HAVE_LOGF@ +HAVE_LOGL = @HAVE_LOGL@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ @@ -948,6 +1141,8 @@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ +HAVE_MODFF = @HAVE_MODFF@ +HAVE_MODFL = @HAVE_MODFL@ HAVE_MONO = @HAVE_MONO@ HAVE_MONO_IN_PATH = @HAVE_MONO_IN_PATH@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ @@ -967,6 +1162,7 @@ HAVE_POSIX_SPAWN = @HAVE_POSIX_SPAWN@ HAVE_POSIX_SPAWNATTR_T = @HAVE_POSIX_SPAWNATTR_T@ HAVE_POSIX_SPAWN_FILE_ACTIONS_T = @HAVE_POSIX_SPAWN_FILE_ACTIONS_T@ +HAVE_POWF = @HAVE_POWF@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PSELECT = @HAVE_PSELECT@ HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ @@ -982,9 +1178,14 @@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ +HAVE_REMAINDER = @HAVE_REMAINDER@ +HAVE_REMAINDERF = @HAVE_REMAINDERF@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_REWINDDIR = @HAVE_REWINDDIR@ +HAVE_RINT = @HAVE_RINT@ +HAVE_RINTL = @HAVE_RINTL@ HAVE_RPMATCH = @HAVE_RPMATCH@ +HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@ HAVE_SCANDIR = @HAVE_SCANDIR@ HAVE_SCHED_H = @HAVE_SCHED_H@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ @@ -997,9 +1198,14 @@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SIGSET_T = @HAVE_SIGSET_T@ +HAVE_SINF = @HAVE_SINF@ +HAVE_SINHF = @HAVE_SINHF@ +HAVE_SINL = @HAVE_SINL@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_SNPRINTF = @HAVE_SNPRINTF@ HAVE_SPAWN_H = @HAVE_SPAWN_H@ +HAVE_SQRTF = @HAVE_SQRTF@ +HAVE_SQRTL = @HAVE_SQRTL@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ @@ -1025,6 +1231,9 @@ HAVE_SYS_SELECT_H = @HAVE_SYS_SELECT_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_TANF = @HAVE_TANF@ +HAVE_TANHF = @HAVE_TANHF@ +HAVE_TANL = @HAVE_TANL@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@ HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ @@ -1102,13 +1311,16 @@ INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +ISINF_LIBM = @ISINF_LIBM@ +ISNAND_LIBM = @ISNAND_LIBM@ +ISNANF_LIBM = @ISNANF_LIBM@ +ISNANL_LIBM = @ISNANL_LIBM@ +ISNAN_LIBM = @ISNAN_LIBM@ JAR = @JAR@ JAVA_CHOICE = @JAVA_CHOICE@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBCROCO = @LIBCROCO@ -LIBEXPAT = @LIBEXPAT@ -LIBEXPAT_PREFIX = @LIBEXPAT_PREFIX@ LIBGLIB = @LIBGLIB@ LIBGLIB_H = @LIBGLIB_H@ LIBGREP_LIBDEPS = @LIBGREP_LIBDEPS@ @@ -1146,9 +1358,9 @@ LOCALE_JA = @LOCALE_JA@ LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ LOCALE_ZH_CN = @LOCALE_ZH_CN@ +LOG10_LIBM = @LOG10_LIBM@ LTLIBC = @LTLIBC@ LTLIBCROCO = @LTLIBCROCO@ -LTLIBEXPAT = @LTLIBEXPAT@ LTLIBGLIB = @LTLIBGLIB@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -1169,6 +1381,7 @@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ MSGMERGE_LIBM = @MSGMERGE_LIBM@ +NEXT_AS_FIRST_DIRECTIVE_CTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_CTYPE_H@ NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ @@ -1178,6 +1391,7 @@ NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@ NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@ +NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ NEXT_AS_FIRST_DIRECTIVE_SCHED_H = @NEXT_AS_FIRST_DIRECTIVE_SCHED_H@ NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ NEXT_AS_FIRST_DIRECTIVE_SPAWN_H = @NEXT_AS_FIRST_DIRECTIVE_SPAWN_H@ @@ -1196,6 +1410,7 @@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ +NEXT_CTYPE_H = @NEXT_CTYPE_H@ NEXT_DIRENT_H = @NEXT_DIRENT_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@ @@ -1205,6 +1420,7 @@ NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ NEXT_LANGINFO_H = @NEXT_LANGINFO_H@ NEXT_LOCALE_H = @NEXT_LOCALE_H@ +NEXT_MATH_H = @NEXT_MATH_H@ NEXT_SCHED_H = @NEXT_SCHED_H@ NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ NEXT_SPAWN_H = @NEXT_SPAWN_H@ @@ -1235,12 +1451,14 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_SUFFIX = @PACKAGE_SUFFIX@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ POSUB = @POSUB@ +POW_LIBM = @POW_LIBM@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PRIPTR_PREFIX = @PRIPTR_PREFIX@ @@ -1259,6 +1477,11 @@ REPLACE_BTOWC = @REPLACE_BTOWC@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CBRTF = @REPLACE_CBRTF@ +REPLACE_CBRTL = @REPLACE_CBRTL@ +REPLACE_CEIL = @REPLACE_CEIL@ +REPLACE_CEILF = @REPLACE_CEILF@ +REPLACE_CEILL = @REPLACE_CEILL@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@ @@ -1267,16 +1490,33 @@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@ +REPLACE_EXP2 = @REPLACE_EXP2@ +REPLACE_EXP2L = @REPLACE_EXP2L@ +REPLACE_EXPM1 = @REPLACE_EXPM1@ +REPLACE_EXPM1F = @REPLACE_EXPM1F@ +REPLACE_FABSL = @REPLACE_FABSL@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCNTL = @REPLACE_FCNTL@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ +REPLACE_FLOOR = @REPLACE_FLOOR@ +REPLACE_FLOORF = @REPLACE_FLOORF@ +REPLACE_FLOORL = @REPLACE_FLOORL@ +REPLACE_FMA = @REPLACE_FMA@ +REPLACE_FMAF = @REPLACE_FMAF@ +REPLACE_FMAL = @REPLACE_FMAL@ +REPLACE_FMOD = @REPLACE_FMOD@ +REPLACE_FMODF = @REPLACE_FMODF@ +REPLACE_FMODL = @REPLACE_FMODL@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ +REPLACE_FREXP = @REPLACE_FREXP@ +REPLACE_FREXPF = @REPLACE_FREXPF@ +REPLACE_FREXPL = @REPLACE_FREXPL@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ @@ -1295,19 +1535,44 @@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ +REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ +REPLACE_HYPOT = @REPLACE_HYPOT@ +REPLACE_HYPOTF = @REPLACE_HYPOTF@ +REPLACE_HYPOTL = @REPLACE_HYPOTL@ REPLACE_ICONV = @REPLACE_ICONV@ REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_ILOGB = @REPLACE_ILOGB@ +REPLACE_ILOGBF = @REPLACE_ILOGBF@ REPLACE_ISATTY = @REPLACE_ISATTY@ +REPLACE_ISFINITE = @REPLACE_ISFINITE@ +REPLACE_ISINF = @REPLACE_ISINF@ +REPLACE_ISNAN = @REPLACE_ISNAN@ REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ REPLACE_ITOLD = @REPLACE_ITOLD@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LDEXPL = @REPLACE_LDEXPL@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALECONV = @REPLACE_LOCALECONV@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ +REPLACE_LOG = @REPLACE_LOG@ +REPLACE_LOG10 = @REPLACE_LOG10@ +REPLACE_LOG10F = @REPLACE_LOG10F@ +REPLACE_LOG10L = @REPLACE_LOG10L@ +REPLACE_LOG1P = @REPLACE_LOG1P@ +REPLACE_LOG1PF = @REPLACE_LOG1PF@ +REPLACE_LOG1PL = @REPLACE_LOG1PL@ +REPLACE_LOG2 = @REPLACE_LOG2@ +REPLACE_LOG2F = @REPLACE_LOG2F@ +REPLACE_LOG2L = @REPLACE_LOG2L@ +REPLACE_LOGB = @REPLACE_LOGB@ +REPLACE_LOGBF = @REPLACE_LOGBF@ +REPLACE_LOGBL = @REPLACE_LOGBL@ +REPLACE_LOGF = @REPLACE_LOGF@ +REPLACE_LOGL = @REPLACE_LOGL@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ @@ -1325,6 +1590,10 @@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ +REPLACE_MODF = @REPLACE_MODF@ +REPLACE_MODFF = @REPLACE_MODFF@ +REPLACE_MODFL = @REPLACE_MODFL@ +REPLACE_NAN = @REPLACE_NAN@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@ REPLACE_NULL = @REPLACE_NULL@ @@ -1354,16 +1623,25 @@ REPLACE_READLINKAT = @REPLACE_READLINKAT@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ +REPLACE_REMAINDER = @REPLACE_REMAINDER@ +REPLACE_REMAINDERF = @REPLACE_REMAINDERF@ +REPLACE_REMAINDERL = @REPLACE_REMAINDERL@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ +REPLACE_ROUND = @REPLACE_ROUND@ +REPLACE_ROUNDF = @REPLACE_ROUNDF@ +REPLACE_ROUNDL = @REPLACE_ROUNDL@ REPLACE_SELECT = @REPLACE_SELECT@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SETLOCALE = @REPLACE_SETLOCALE@ +REPLACE_SIGNBIT = @REPLACE_SIGNBIT@ +REPLACE_SIGNBIT_USING_GCC = @REPLACE_SIGNBIT_USING_GCC@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ +REPLACE_SQRTL = @REPLACE_SQRTL@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ @@ -1389,6 +1667,9 @@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ +REPLACE_TRUNC = @REPLACE_TRUNC@ +REPLACE_TRUNCF = @REPLACE_TRUNCF@ +REPLACE_TRUNCL = @REPLACE_TRUNCL@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ @@ -1529,7 +1810,7 @@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = 1.2 gnits EXTRA_DIST = $(doc_DATA) iso-639.sed iso-639-2.sed iso-3166.sed \ - ISO_639 ISO_639-2 ISO_3166 ISO_3166_de texi2html ChangeLog.0 + ISO_639 ISO_639-2 ISO_3166 ISO_3166_de texi2html # Temporary index files. automake removes only the predefined ones by itself. MOSTLYCLEANFILES = gettext.am gettext.ams gettext.cp gettext.cps \ @@ -2063,7 +2344,8 @@ echo "@set UPDATED $$1 $$2 $$3"; \ echo "@set UPDATED-MONTH $$2 $$3"; \ echo "@set EDITION $(VERSION)"; \ - echo "@set VERSION $(VERSION)") > vti.tmp + echo "@set VERSION $(VERSION)"; \ + echo "@set ARCHIVE-VERSION $(ARCHIVE_VERSION)") > vti.tmp cmp -s vti.tmp version.texi \ || (echo "Updating version.texi"; \ cp vti.tmp version.texi) diff -Nru gettext-0.19.6/gettext-tools/doc/msgfmt.texi gettext-0.19.7/gettext-tools/doc/msgfmt.texi --- gettext-0.19.6/gettext-tools/doc/msgfmt.texi 2015-08-21 07:18:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/msgfmt.texi 2015-12-08 12:50:04.000000000 +0000 @@ -65,6 +65,11 @@ @cindex Desktop Entry mode, and @code{msgfmt} program Desktop Entry mode: generate a @file{.desktop} file. +@item --xml +@opindex --xml@r{, @code{msgfmt} option} +@cindex XML mode, and @code{msgfmt} program +XML mode: generate an XML file. + @end table @subsection Output file location @@ -190,7 +195,8 @@ @item -d @var{directory} @opindex -d@r{, @code{msgfmt} option} -Specify the base directory of @file{.msg} message catalogs. +Specify the directory where PO files are read. The directory must +contain the @samp{LINGUAS} file. @end table @@ -202,17 +208,63 @@ -o @var{file} @var{filename}.po @dots{} @end example -On the other hand, when using msgfmt from a Makefile, it is cumbersome -to loop over all locales under a particular directory. msgfmt -provides a special operation mode for this use-case. To generate a -@samp{.desktop} file from multiple @samp{.po} files under a directory, -specify the directory with the @samp{-d} option. +msgfmt provides a special "bulk" operation mode to process multiple +@file{.po} files at a time. @example msgfmt --desktop --template=@var{template} -d @var{directory} -o @var{file} @end example msgfmt first reads the @samp{LINGUAS} file under @var{directory}, and +then processes all @samp{.po} files listed there. You can also limit +the locales to a subset, through the @samp{LINGUAS} environment +variable. + +For either operation modes, the @samp{-o} and @samp{--template} +options are mandatory. + +@subsection XML mode operations + +@table @samp +@item --template=@var{template} +@opindex --template@r{, @code{msgfmt} option} +Specify an XML file used as a template. + +@item -L @var{name} +@itemx --language=@var{name} +@opindex -L@r{, @code{msgfmt} option} +@opindex --language@r{, @code{msgfmt} option} +@cindex supported languages, @code{msgfmt} +Specifies the language of the input files. + +@item -l @var{locale} +@itemx --locale=@var{locale} +@opindex -l@r{, @code{msgfmt} option} +@opindex --locale@r{, @code{msgfmt} option} +Specify the locale name, either a language specification of the form @var{ll} +or a combined language and country specification of the form @var{ll_CC}. + +@item -d @var{directory} +@opindex -d@r{, @code{msgfmt} option} +Specify the base directory of @file{.po} message catalogs. + +@end table + +To generate an XML file for a single locale, you can use it as follows. + +@example +msgfmt --xml --template=@var{template} --locale=@var{locale} \ + -o @var{file} @var{filename}.po @dots{} +@end example + +msgfmt provides a special "bulk" operation mode to process multiple +@file{.po} files at a time. + +@example +msgfmt --xml --template=@var{template} -d @var{directory} -o @var{file} +@end example + +msgfmt first reads the @samp{LINGUAS} file under @var{directory}, and then processes all @samp{.po} files listed there. You can also limit the locales to a subset, through the @samp{LINGUAS} environment variable. diff -Nru gettext-0.19.6/gettext-tools/doc/stamp-vti gettext-0.19.7/gettext-tools/doc/stamp-vti --- gettext-0.19.6/gettext-tools/doc/stamp-vti 2015-09-11 03:06:15.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/stamp-vti 2015-12-27 23:21:24.000000000 +0000 @@ -1,4 +1,5 @@ -@set UPDATED 21 August 2015 -@set UPDATED-MONTH August 2015 -@set EDITION 0.19.6 -@set VERSION 0.19.6 +@set UPDATED 8 December 2015 +@set UPDATED-MONTH December 2015 +@set EDITION 0.19.7 +@set VERSION 0.19.7 +@set ARCHIVE-VERSION 0.19.7 diff -Nru gettext-0.19.6/gettext-tools/doc/texi2html gettext-0.19.7/gettext-tools/doc/texi2html --- gettext-0.19.6/gettext-tools/doc/texi2html 2015-06-05 06:49:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/texi2html 2015-12-08 12:50:04.000000000 +0000 @@ -1561,7 +1561,7 @@ $level--; # here we start at 0 if ($name =~ /^appendix/) { # appendix style - if (defined(@appendix_sec_num)) { + if (@appendix_sec_num) { &incr_sec_num($level, @appendix_sec_num); } else { @appendix_sec_num = ('A', 0, 0, 0); @@ -1569,7 +1569,7 @@ return(join('.', @appendix_sec_num[0..$level])); } else { # normal style - if (defined(@normal_sec_num)) { + if (@normal_sec_num) { &incr_sec_num($level, @normal_sec_num); } else { @normal_sec_num = (1, 0, 0, 0); diff -Nru gettext-0.19.6/gettext-tools/doc/version.texi gettext-0.19.7/gettext-tools/doc/version.texi --- gettext-0.19.6/gettext-tools/doc/version.texi 2015-09-11 03:06:15.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/version.texi 2015-12-27 23:21:24.000000000 +0000 @@ -1,4 +1,5 @@ -@set UPDATED 21 August 2015 -@set UPDATED-MONTH August 2015 -@set EDITION 0.19.6 -@set VERSION 0.19.6 +@set UPDATED 8 December 2015 +@set UPDATED-MONTH December 2015 +@set EDITION 0.19.7 +@set VERSION 0.19.7 +@set ARCHIVE-VERSION 0.19.7 diff -Nru gettext-0.19.6/gettext-tools/doc/xgettext.texi gettext-0.19.7/gettext-tools/doc/xgettext.texi --- gettext-0.19.6/gettext-tools/doc/xgettext.texi 2015-08-21 07:18:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/doc/xgettext.texi 2015-12-23 07:08:27.000000000 +0000 @@ -500,6 +500,16 @@ Write out a NeXTstep/GNUstep localized resource file in @code{.strings} syntax. Note that this file format doesn't support plural forms. +@item --its=@var{file} +@opindex --its@r{, @code{xgettext} option} +Use ITS rules defined in @var{file}. +Note that this is only effective with XML files. + +@item --itstool +@opindex --itstool@r{, @code{xgettext} option} +Write out comments recognized by itstool (@uref{http://itstool.org}). +Note that this is only effective with XML files. + @item -w @var{number} @itemx --width=@var{number} @opindex -w@r{, @code{xgettext} option} diff -Nru gettext-0.19.6/gettext-tools/examples/ChangeLog gettext-0.19.7/gettext-tools/examples/ChangeLog --- gettext-0.19.6/gettext-tools/examples/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/ChangeLog 2015-12-27 23:09:15.000000000 +0000 @@ -1,1231 +1,11 @@ -2015-09-11 Daiki Ueno - - * gettext 0.19.6 released. - -2015-09-11 Daiki Ueno - - * po/fi.po: Update from Jorma Karvonen . - * po/it.po: Update from Marco Colombo . - * po/zh_CN.po: Update from Ji ZhengYu . - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2015-07-10 Daiki Ueno - - * po/bg.po: Update from Roumen Petrov . - * po/ca.po: Update from Ivan Vilata i Balaguer . - * po/cs.po: Update from Marek Černocký . - * po/da.po: Update from Joe Hansen . - * po/de.po: Update from Philipp Thomas . - * po/es.po: Update from Antonio Ceballos . - * po/fi.po: Update from Jorma Karvonen . - * po/fr.po: Update from Stéphane Aulery . - * po/hu.po: Update from Balázs Úr . - * po/ja.po: Update from Masahito Yamaga . - * po/ms.po: Update from Sharuzzaman Ahmat Raslan . - * po/nl.po: Update from Benno Schulenberg . - * po/pl.po: Update from Rafał Maszkowski . - * po/ro.po: Update from Mihai Cristescu . - * po/ru.po: Update from Yuri Kozlov . - * po/sk.po: Update from Marcel Telka . - * po/sl.po: Update from Primož Peterlin . - * po/sr.po: Update from Мирослав Николић . - * po/uk.po: Update from Yuri Chornoivan . - * po/vi.po: Update from Trần Ngọc Quân . - -2015-03-07 Daiki Ueno - - * hello-c-gnome3/Makefile.am (hello.desktop): Remove unnecessary - $srcdir check. - -2015-03-06 Daiki Ueno - - * hello-c-gnome3/Makefile.am: Suggest hello.desktop.in should be - included in EXTRA_DIST. - -2015-02-02 Matthias Clasen - - * hello-c-gnome3/configure.ac: Require gettext 0.19, for GSettings - and Desktop files. - -2015-01-07 Daiki Ueno - - examples: Make hello-c-gnome3 translator friendly - Suggested by Benno Schulenberg in: - . - * hello-c-gnome3/hello.gschema.xml: Use "use-markup" property - instead of "sensitive", to clarify the meaning of the extracted - strings. - * hello-c-gnome3/hello.c (HelloApplicationWindow): Rename the - "label2" member to "label". - (update_content): New function. - (clicked_callback): Rename from quit_callback and call - update_content instead of quitting. All callers changed. - * hello-c-gnome3/hello.ui: Abolish the first label and put a - translatable text inside the button. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-12-24 Daiki Ueno - - * po/bg.po: Update from Roumen Petrov . - * po/ca.po: Update from Ivan Vilata i Balaguer . - * po/es.po: Update from Antonio Ceballos . - * po/ja.po: Update from Masahito Yamaga . - * po/pl.po: Update from Rafał Maszkowski . - * po/pt_BR.po: Update from Rafael Ferreira . - * po/ru.po: Update from Yuri Kozlov . - * po/sk.po: Update from Marcel Telka . - * po/sl.po: Update from Primož Peterlin . - * po/sv.po: Update from Jan Djärv . - * po/uk.po: Update from Yuri Chornoivan . - * po/vi.po: Update from Trần Ngọc Quân . - -2014-12-05 Daiki Ueno - - examples: Regenerate stamp-po after POT has changed - * Makefile.am (distdir1): Invoke 'all' target in po/Makefile, - after 'update-po'. - -2014-12-05 Daiki Ueno - - examples: Include hello-*.pot in the distribution - Partially revert 2c3d71ce, as it broke "make dist". Instead, - include all the generated POT files in the distribution to prevent - re-generation of those files. - * Makefile.am (distdir1): Call update-po in po/Makefile. - * po/Makefile.am ($(DOMAIN).pot-update): Specify --directory for - xgettext invocation. - (DISTCLEANFILES): Move $(SMALLPOTS)... - (MAINTAINERCLEANFILES): ...here. - (distdir1): Include $(SMALLPOTS) in the distribution. - -2014-12-04 Daiki Ueno - - examples: Don't forcibly regenerate POT files on 'make dist' - Previously we generated POT files on 'make dist'. However, it - take some time to complete and require autotools bootstrap for - each project. - * Makefile.am (distdir1): Don't invoke update-po rule in po/Makefile. - * po/Makefile.am (distdir1): Don't invoke update-po rule. - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-10-15 Daiki Ueno - - * po/eo.po, po/es.po, po/nb.po: Update. - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-03 Daiki Ueno - - examples: Don't require msgfmt when compiling hello-c-gnome3 - * hello-c-gnome3/Makefile.am (CLEANFILES): Clean hello.desktop. - (EXTRA_DIST): Add hello.desktop.in. - (MAINTAINERCLEANFILES): Add hello.desktop.in. - (hello.desktop): Move msgfmt invocation to... - (hello.desktop.in): ...here. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2014-05-14 Daiki Ueno - - * configure.ac: Adjust $docdir assuming that AC_PACKAGE_TARNAME is - set. - -2014-05-06 Daiki Ueno - - * Makefile.am (install-data-local): Don't fail if a PO file does - not exist, but warn user to do "make dist". - -2014-04-22 Daiki Ueno - - build: Use git-version-gen intead of version.sh - * configure.ac: Use git-version-gen in AC_INIT. - -2014-04-21 Daiki Ueno - - examples: Quote shell variables in hello-java*/configure - When running from xsmallpot.sh, embedded shell-script snippets are - stripped off from configure.ac and some variables are not set. - Make sure to quote them to avoid error. - * hello-java/configure.ac: Quote $BUILDJAVA. - * hello-java-awt/configure.ac: Quote $BUILDJAVAEXE and $BUILDJAVA. - * hello-java-qtjambi/configure.ac: Likewise. - * hello-java-swing/configure.ac: Likewise. - -2014-04-15 Daiki Ueno - - examples: Add a new example 'hello-c-gnome3' - * hello-c-gnome3: New subdirectory. - * README: Mention it. - * Makefile.am (EXAMPLESFILES): Add the files in hello-c-gnome3. - (EXAMPLESDIRS): Add hello-c-gnome3. - * po/Makefile.am (POTFILES): Add hello-c-gnome3 source. - (SMALLPOTS): Add hello-c-gnome3.pot. - (hello-c-gnome3.pot): New rule. - (SMALLPOFILES_FOR_lang): Add hello-c-gnome3 elements. - (../hello-c-gnome3/po/$(LL).po): New rule. - -2013-06-10 Daiki Ueno - - * Makefile.am: Use $(MKDIR_P) instead of $(mkdir_p). - * hello-c++-qt/po/Makefile.am: Likewise. - * hello-c++-wxwidgets/po/Makefile.am: Likewise. - * hello-clisp/po/Makefile.am: Likewise. - * hello-csharp-forms/Makefile.am: Likewise. - * hello-csharp-forms/po/Makefile.am: Likewise. - * hello-csharp/Makefile.am: Likewise. - * hello-csharp/po/Makefile.am: Likewise. - * hello-gawk/po/Makefile.am: Likewise. - * hello-guile/po/Makefile.am: Likewise. - * hello-java-awt/Makefile.am: Likewise. - * hello-java-qtjambi/Makefile.am: Likewise. - * hello-java-swing/Makefile.am: Likewise. - * hello-java/Makefile.am: Likewise. - * hello-librep/po/Makefile.am: Likewise. - * hello-pascal/Makefile.am: Likewise. - * hello-pascal/po/Makefile.am: Likewise. - * hello-perl/po/Makefile.am: Likewise. - * hello-php/po/Makefile.am: Likewise. - * hello-python/po/Makefile.am: Likewise. - * hello-sh/po/Makefile.am: Likewise. - * hello-smalltalk/po/Makefile.am: Likewise. - * hello-tcl-tk/po/Makefile.am: Likewise. - * hello-tcl/po/Makefile.am: Likewise. - * hello-ycp/po/Makefile.am: Likewise. - Suggested by Stefano Lattarini in - . - -2013-04-23 Daiki Ueno - - * po/xsmallpot.sh: Don't assume that aclocal accepts configure.in. - -2013-04-02 Daiki Ueno - - * Makefile.am (clean-local): New rule to remove tmp-hello-*. - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2012-12-19 Daiki Ueno - - Fix build error in hello-c++-kde due to autom4te cache. - * po/xsmallpot.sh: Pass -f to autoconf to ignore cache. - -2012-12-07 Bruno Haible - - * po/cs.po: New file, from Marek Černocký . - * po/nb.po: New file, from Johnny A. Solbu . - * po/vi.po: Update from Trần Ngọc Quân . - * po/LINGUAS: Add cs, hr, nb. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. - -2012-07-08 Bruno Haible - - * po/hr.po: New file, from Tomislav Krznar . - -2011-01-18 Bruno Haible - - * po/da.po: New file, from Keld Simonsen . - * po/gl.po: New file, from - Leandro Regueiro . - * po/LINGUAS: Add da, gl. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. - -2010-10-10 Bruno Haible - - * po/bg.po: Update from Roumen Petrov . - -2010-08-13 Nicola Pero (tiny change) - - Fix build error in hello-objc-gnustep due to 'ast' and 'ky' catalogs. - * hello-objc-gnustep/po/LocaleAliases: Regenerated from newest - gnustep-base/Languages/Locale.aliases. - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2010-04-25 Bruno Haible - - Update hello-pascal example. - * hello-pascal/INSTALL: Require fpc 2.0 or newer. - * hello-pascal/hello.pas: Use GetProcessID from the system unit, - instead of getpid from the oldlinux unit or fpgetpid from the baseunix - unit. - Reported by Marco van de Voort . - -2010-04-02 Bruno Haible - - * hello-c++-wxwidgets/autogen.sh: Update origin of lib-*.m4 and - config.rpath files. - -2010-03-09 Bruno Haible - - * po/ast.po: Update. - -2010-01-31 Bruno Haible - - * po/bg.po: New file, from Roumen Petrov . - * po/LINGUAS: Add bg. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. - -2009-12-19 Bruno Haible - - * po/ast.po: New file, from - Marcos Alvarez Costales . - * po/LINGUAS: Add ast. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. - -2009-08-16 Bruno Haible - - Silence the msgmerge invocations. - * hello-c/po/Makevars (MSGMERGE_OPTIONS): New variable. - * hello-c-gnome/po/Makevars (MSGMERGE_OPTIONS): Likewise. - * hello-c++/po/Makevars (MSGMERGE_OPTIONS): Likewise. - * hello-c++-kde/po/Makevars (MSGMERGE_OPTIONS): Likewise. - * hello-c++-gnome/po/Makevars (MSGMERGE_OPTIONS): Likewise. - * hello-objc/po/Makevars (MSGMERGE_OPTIONS): Likewise. - * hello-objc-gnome/po/Makevars (MSGMERGE_OPTIONS): Likewise. - * po/Makefile.am (MSGMERGE_OPTIONS): New variable. - ($(POFILES), .nop.po-update): Use it. - * hello-c++-qt/po/Makefile.am: Likewise. - * hello-c++-wxwidgets/po/Makefile.am: Likewise. - * hello-sh/po/Makefile.am: Likewise. - * hello-python/po/Makefile.am: Likewise. - * hello-clisp/po/Makefile.am: Likewise. - * hello-librep/po/Makefile.am: Likewise. - * hello-guile/po/Makefile.am: Likewise. - * hello-smalltalk/po/Makefile.am: Likewise. - * hello-java/po/Makefile.am: Likewise. - * hello-java-awt/po/Makefile.am: Likewise. - * hello-java-swing/po/Makefile.am: Likewise. - * hello-java-qtjambi/po/Makefile.am: Likewise. - * hello-csharp/po/Makefile.am: Likewise. - * hello-csharp-forms/po/Makefile.am: Likewise. - * hello-gawk/po/Makefile.am: Likewise. - * hello-pascal/po/Makefile.am: Likewise. - * hello-ycp/po/Makefile.am: Likewise. - * hello-tcl/po/Makefile.am: Likewise. - * hello-tcl-tk/po/Makefile.am: Likewise. - * hello-perl/po/Makefile.am: Likewise. - * hello-php/po/Makefile.am: Likewise. - * hello-objc-gnustep/po/GNUmakefile: Likewise. - * po/mmsmallpo.sh: Pass option --quiet to msgmerge. - -2009-08-16 Bruno Haible - - * hello-objc-gnustep/po/GNUmakefile: Apply 2007-10-18 changes to - hello-*/po/Makefile.am. - -2009-08-16 Bruno Haible - - * hello-objc-gnustep/po/GNUmakefile: Apply 2007-10-17 changes to - hello-*/po/Makefile.am. - (PACKAGE_NAME, PACKAGE_VERSION): New variables. - -2009-08-16 Bruno Haible - - * hello-objc-gnustep/po/GNUmakefile: Apply part of 2005-02-07 changes - to hello-*/po/Makefile.am.. - -2009-08-16 Bruno Haible - - * hello-objc-gnustep/po/GNUmakefile: Apply 2004-01-17 changes to - hello-*/po/Makefile.am. - -2009-07-29 Bruno Haible - - * po/lv.po: New file, from Rihards Priedītis . - * po/LINGUAS: Add lv. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. - -2009-05-23 Bruno Haible - - * configure.ac (AM_INIT_AUTOMAKE): Add 'silent-rules' option. - -2009-05-23 Bruno Haible - - * configure.ac: Invoke gl_INIT_PACKAGE. Use the preferred form of - AM_INIT_AUTOMAKE. - -2009-01-27 Bruno Haible - - * hello-c++-qt/po/Makefile.am (XGETTEXT_OPTIONS): Add more options for - the tr function, for compatibility with Qt 4. - -2009-01-18 Bruno Haible - - * hello-c++-qt/po/Makefile.am (.po.gmo): Pass --verbose to msgfmt when - producing statistics. - * hello-c++-wxwidgets/po/Makefile.am (.po.gmo): Likewise. - * hello-clisp/po/Makefile.am (.po.gmo): Likewise. - * hello-gawk/po/Makefile.am (.po.gmo): Likewise. - * hello-guile/po/Makefile.am (.po.gmo): Likewise. - * hello-librep/po/Makefile.am (.po.gmo): Likewise. - * hello-pascal/po/Makefile.am (.po.gmo): Likewise. - * hello-perl/po/Makefile.am (.po.gmo): Likewise. - * hello-php/po/Makefile.am (.po.gmo): Likewise. - * hello-python/po/Makefile.am (.po.gmo): Likewise. - * hello-sh/po/Makefile.am (.po.gmo): Likewise. - * hello-smalltalk/po/Makefile.am (.po.gmo): Likewise. - * hello-ycp/po/Makefile.am (.po.gmo): Likewise. - * hello-java/po/Makefile.am (update-properties, update-classes): - Likewise. - * hello-java-awt/po/Makefile.am (update-properties, update-classes): - Likewise. - * hello-java-swing/po/Makefile.am (update-properties, update-classes): - Likewise. - * hello-java-qtjambi/po/Makefile.am (update-properties, - update-classes): Likewise. - Suggested by Vincent Lefevre . - -2009-01-18 Bruno Haible - - * po/mt.po: New file, from Clyde Meli . - * po/LINGUAS: Add mt. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. - -2009-01-14 Bruno Haible - - * configure.ac: More consistent m4 quoting. - -2007-12-24 Bruno Haible - - * hello-*/po/Makefile.am ($(POFILES), .nop.po-update): When using - msgmerge 0.18 or newer, pass a --lang option. - * hello-objc-gnustep/po/GNUmakefile ($(POFILES), .nop.po-update): - Likewise. - -2007-12-24 Bruno Haible - - * hello-*/po/Makefile.am (.nop.po-update): Put all non-option arguments - after all option arguments, so that the commands work 1. when - POSIXLY_CORRECT is set, 2. on platforms whose getopt facility is POSIX - compliant but not GNU libc compatible, such as Cygwin. - * hello-objc-gnustep/po/GNUmakefile (.nop.po-update): Likewise. - -2007-11-13 Bruno Haible - - * po/ky.po: New file, from Ilyas Bakirov . - * po/LINGUAS: Add ky. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2007-10-31 Bruno Haible - - * hello-*/m4/Makefile.am (EXTRA_DIST): Remove ulonglong.m4. - * hello-*/autoclean.sh: Don't remove ulonglong.m4 any more. - -2007-10-28 Bruno Haible - - * hello-*/po/Makefile.am ($(DOMAIN).pot-update): Consider the - XGETTEXT_EXTRA_OPTIONS variable. - -2007-10-26 Bruno Haible - - * po/fi.po: New file, from Lauri Nurmi . - * po/LINGUAS: Add fi. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. - -2007-10-20 Bruno Haible - - New example for Qt/Jambi. - * hello-java-qtjambi: New subdirectory. - * README: Mention it. - * Makefile.am (EXAMPLESFILES): Add the files in hello-java-qtjambi. - (EXAMPLESDIRS): Add hello-java-qtjambi. - * po/Makefile.am (POTFILES): Add hello-java-qtjambi source. - (SMALLPOTS): Add hello-java-qtjambi.pot. - (hello-java-qtjambi.pot): New rule. - (SMALLPOFILES_FOR_lang): Add hello-java-qtjambi elements. - (../hello-java-qtjambi/po/$(LL).po): New rule. - -2007-10-18 Bruno Haible - - * hello-*/po/Makefile.am ($(DOMAIN).pot-update): Don't pass the package - name and version to xgettext if the xgettext version is < 0.16.2. - -2007-10-17 Bruno Haible - - * hello-*/po/Makefile.am ($(DOMAIN).pot-update): Pass the package name - and version to xgettext. - -2007-10-17 Bruno Haible - - * hello-java/po/Makefile.am (stamp-po): Test $(PROPERTIESFILES), not - $(GMOFILES). - -2007-10-13 Bruno Haible - - * po/nl.po: Update from Benno Schulenberg . - -2007-09-15 Bruno Haible - - * po/vi.po: Update from Clytie Siddall . - -2007-06-07 Bruno Haible - - * hello-*/autoclean.sh: Remove also intlmacosx.m4. - -2007-04-06 Bruno Haible - - * hello-*/autoclean.sh: Don't remove longdouble.m4 any more. - -2007-03-20 Bruno Haible - - Remove all "Copyright (C) ..." notices from files that are in the - public domain. - -2007-01-30 Bruno Haible - - * po/ms.po: New file, from - Sharuzzaman Ahmat Raslan . - * po/LINGUAS: Add ms. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. - -2006-12-04 Bruno Haible - - Work around small sh argument length limit on IRIX. - * Makefile.am (EXAMPLESFILES): Remove the common files in po - directories. - (EXAMPLESDIRS, EXAMPLESPOFILES): New variables. - (install-data-local, installdirs-local, uninstall-local, distdir1): Use - doubly-nested loop for the common files in po directories. - Reported by Paul Martinolich . - -2006-10-27 Bruno Haible - - Work around automake-1.10 annoyance. - * Makefile.am (ACLOCAL): New macro. - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-10-23 Bruno Haible - - * hello-c++-kde/admin/cvs.sh: Accept automake versions > 1.9.x. - -2006-10-01 Bruno Haible - - * hello-*/autoclean.sh: Remove also intldir.m4. - -2006-10-02 Bruno Haible - - * po/fr.po: Update from Christophe Combelles . - * po/id.po: New file, from Tedi Heriyanto . - * po/LINGUAS: Add id. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESFILES): Add the new message catalogs. - -2006-09-18 Bruno Haible - - * hello-{c,c++,objc}*/{autoclean.sh,m4/Makefile.am}: Remove - inttypes-h.m4. - -2006-09-11 Bruno Haible - - * hello-{c,c++,objc}*/autoclean.sh: Remove also intl.m4. - -2006-08-28 Bruno Haible - - * hello-*/autoclean.sh: Remove mention of signed.m4. - -2006-07-31 Bruno Haible - - * hello-c/autogen.sh: Replace gettext-tools/lib with - gettext-tools/gnulib-lib. - * hello-c++/autogen.sh: Likewise. - * hello-objc/autogen.sh: Likewise. - * hello-csharp/autogen.sh: Update for changed locations of *.m4 files. - * hello-csharp-forms/autogen.sh: Likewise. - * hello-java/autogen.sh: Likewise. - * hello-java-awt/autogen.sh: Likewise. - * hello-java-swing/autogen.sh: Likewise. - -2006-07-30 Bruno Haible - - * hello-csharp*/autogen.sh: Update for changed location of - csharpcomp.sh.in and csharpexec.sh.in. - * hello-java*/autogen.sh: Update for changed location of - javacomp.sh.in and javaexec.sh.in. - -2006-07-25 Bruno Haible - - * Makefile.msvc: Remove file. - * Makefile.am (EXTRA_DIST): Remove Makefile.msvc. - -2006-07-25 Bruno Haible - - * Makefile.vms: Remove file. - * Makefile.am (EXTRA_DIST): Remove Makefile.vms. - -2006-07-23 Bruno Haible - - * hello-c++-kde/autoclean.sh: Fix syntax error. - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2006-07-21 Bruno Haible - - * hello-*/autogen.sh (GETTEXT_TOPSRCDIR): In the build directory case, - append one more "/..". - -2006-07-20 Bruno Haible - - * po/sv.po: Update from Jan Djärv . - * po/vi.po: Update from Clytie Siddall . - * po/zh_HK.po: New file, from Abel Cheung . - * po/LINGUAS: Add zh_HK. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESFILES): Add the new message catalogs. - -2006-07-14 Bruno Haible - - * po/Makefile.am (MOSTLYCLEANFILES): Add *.stackdump. - * hello-*/po/Makefile.am (MOSTLYCLEANFILES): Likewise. - -2006-07-13 Bruno Haible - - * configure.ac (Makefile): Invoke FIX_MAKEFILE_TOPDIR_DISTRIB instead - of FIX_MAKEFILE_DISTRIB. - -2006-07-13 Bruno Haible - - * hello-c++-kde/admin/cvs.sh: Disable the search for specific - versions of autoconf, autoheader, autom4te, automake, aclocal. - Accept autoconf, autoheader versions > 2.59. Accept automake - versions > 1.8.x. - -2006-07-13 Bruno Haible - - * Makefile.am (ACLOCAL_AMFLAGS): New variable. - -2006-07-03 Bruno Haible - - * po/eo.po: New file, from Edmund Grimley Evans . - * po/it.po: Update from Marco Colombo . - * po/LINGUAS: Add eo. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESFILES): Add the new message catalogs. - -2006-06-29 Bruno Haible - - * configure.ac: New file. - * Makefile.am (AUTOMAKE_OPTIONS): Drop gnits, use foreign instead. - * po/Makefile.am (POTFILES): Remove examples/ prefix. - -2006-06-27 Bruno Haible - - * hello-c/{autoclean.sh,m4/Makefile.am}: Remove isc-posix.m4. - * hello-c-gnome/{autoclean.sh,m4/Makefile.am}: Likewise. - * hello-c++/{autoclean.sh,m4/Makefile.am}: Likewise. - * hello-c++-gnome/{autoclean.sh,m4/Makefile.am}: Likewise. - * hello-c++-kde/{autoclean.sh,m4/Makefile.am}: Likewise. - * hello-objc/{autoclean.sh,m4/Makefile.am}: Likewise. - * hello-objc-gnome/{autoclean.sh,m4/Makefile.am}: Likewise. - -2006-04-14 Bruno Haible - - Assume autoconf >= 2.60. - * Makefile.am (docdir): Remove variable. - * po/Makefile.am (localedir): Remove variable. - -2006-06-04 Bruno Haible - - * hello-c/{autoclean.sh,m4/Makefile.am}: Replace inttypes.m4 with - inttypes-h.m4. - * hello-c-gnome/{autoclean.sh,m4/Makefile.am}: Likewise. - * hello-c++/{autoclean.sh,m4/Makefile.am}: Likewise. - * hello-c++-gnome/{autoclean.sh,m4/Makefile.am}: Likewise. - * hello-c++-kde/{autoclean.sh,m4/Makefile.am}: Likewise. - * hello-objc/{autoclean.sh,m4/Makefile.am}: Likewise. - * hello-objc-gnome/{autoclean.sh,m4/Makefile.am}: Likewise. - -2006-05-01 Bruno Haible - - * hello-java/configure.ac: Pass a source-version to gt_JAVACOMP. Move - gt_JAVAEXEC call before the gt_JAVACOMP call. - * hello-java-awt/configure.ac: Likewise. - * hello-java-swing/configure.ac: Likewise. - -2006-04-17 Bruno Haible - - * Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs). - * hello-csharp/Makefile.am: Likewise. - * hello-csharp-forms/Makefile.am: Likewise. - * hello-java/Makefile.am: Likewise. - * hello-java-awt/Makefile.am: Likewise. - * hello-java-swing/Makefile.am: Likewise. - * hello-pascal/Makefile.am: Likewise. - * hello-c++-qt/po/Makefile.am: Likewise. - * hello-c++-wxwidgets/po/Makefile.am: Likewise. - * hello-clisp/po/Makefile.am: Likewise. - * hello-csharp/po/Makefile.am: Likewise. - * hello-csharp-forms/po/Makefile.am: Likewise. - * hello-gawk/po/Makefile.am: Likewise. - * hello-guile/po/Makefile.am: Likewise. - * hello-librep/po/Makefile.am: Likewise. - * hello-pascal/po/Makefile.am: Likewise. - * hello-perl/po/Makefile.am: Likewise. - * hello-php/po/Makefile.am: Likewise. - * hello-python/po/Makefile.am: Likewise. - * hello-sh/po/Makefile.am: Likewise. - * hello-smalltalk/po/Makefile.am: Likewise. - * hello-tcl/po/Makefile.am: Likewise. - * hello-tcl-tk/po/Makefile.am: Likewise. - * hello-ycp/po/Makefile.am: Likewise. - * hello-*/autoclean.sh: Don't remove mkinstalldirs. - -2006-04-14 Bruno Haible - - Don't ignore the --localedir option from autoconf >= 2.60. - * hello-c/Makefile.am (localedir): Remove variable. - * hello-c-gnome/Makefile.am (localedir): Likewise. - * hello-objc/Makefile.am (localedir): Likewise. - * hello-objc-gnome/Makefile.am (localedir): Likewise. - * hello-c++/Makefile.am (localedir): Likewise. - * hello-c++-kde/Makefile.am (localedir): Likewise. - * hello-c++-gnome/Makefile.am (localedir): Likewise. - * hello-c++-qt/Makefile.am (localedir): Likewise. - * hello-c++-qt/po/Makefile.am (localedir): Likewise. - * hello-c++-wxwidgets/Makefile.am (localedir): Likewise. - * hello-c++-wxwidgets/po/Makefile.am (localedir): Likewise. - * hello-clisp/po/Makefile.am (localedir): Likewise. - * hello-gawk/po/Makefile.am (localedir): Likewise. - * hello-guile/po/Makefile.am (localedir): Likewise. - * hello-librep/po/Makefile.am (localedir): Likewise. - * hello-pascal/po/Makefile.am (localedir): Likewise. - * hello-perl/po/Makefile.am (localedir): Likewise. - * hello-php/po/Makefile.am (localedir): Likewise. - * hello-python/po/Makefile.am (localedir): Likewise. - * hello-sh/po/Makefile.am (localedir): Likewise. - * hello-smalltalk/po/Makefile.am (localedir): Likewise. - * hello-ycp/po/Makefile.am (localedir): Likewise. - -2006-04-14 Bruno Haible - - * hello-c/configure.ac: Use gettext-0.15 infrastructure. - * hello-c-gnome/configure.ac: Likewise. - * hello-objc/configure.ac: Likewise. - * hello-objc-gnome/configure.ac: Likewise. - * hello-c++/configure.ac: Likewise. - * hello-c++-kde/configure.in.in: Likewise. - * hello-c++-gnome/configure.ac: Likewise. - * hello-c-gnome/m4/Makefile.am (EXTRA_DIST): Add lock.m4. - * hello-c++-kde/m4/Makefile.am (EXTRA_DIST): Likewise. - -2006-04-14 Bruno Haible - - Prepare for autoconf-2.60. - * hello-clisp/configure.ac: Set datarootdir before evaluating - ${datadir}. - * hello-gawk/configure.ac: Likewise. - * hello-guile/configure.ac: Likewise. - * hello-librep/configure.ac: Likewise. - * hello-pascal/configure.ac: Likewise. - * hello-perl/configure.ac: Likewise. - * hello-php/configure.ac: Likewise. - * hello-python/configure.ac: Likewise. - * hello-sh/configure.ac: Likewise. - * hello-smalltalk/configure.ac: Likewise. - -2006-04-07 Bruno Haible - - * po/hu.po: New file, from Kiss Tamás . - * po/pt.po: New file, from - Helder Correia . - * po/sl.po: New file, from - Primož Peterlin . - * po/vi.po: Update from Clytie Siddall . - * po/LINGUAS: Add hu, pt, sl. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESFILES): Add the new message catalogs. - -2006-03-25 Bruno Haible - - * hello-csharp-forms/README: New file. - * Makefile.am (EXAMPLESFILES): Add it. - -2006-03-25 Bruno Haible - - New example for wxWidgets. - * hello-c++-wxwidgets: New subdirectory. - * README: Mention it. - * Makefile.am (EXAMPLESFILES): Add the files in hello-c++-wxwidgets. - * po/Makefile.am (POTFILES): Add hello-c++-wxwidgets source. - (SMALLPOTS): Add hello-c++-wxwidgets.pot. - (hello-c++-wxwidgets.pot): New rule. - (SMALLPOFILES_FOR_lang): Add hello-c++-wxwidgets elements. - (../hello-c++-wxwidgets/po/$(LL).po): New rule. - -2005-10-18 Bruno Haible - - * hello-c/po/Makevars (USE_MSGCTXT): New macro. - * hello-c-gnome/po/Makevars (USE_MSGCTXT): New macro. - * hello-c++/po/Makevars (USE_MSGCTXT): New macro. - * hello-c++-gnome/po/Makevars (USE_MSGCTXT): New macro. - * hello-c++-kde/po/Makevars (USE_MSGCTXT): New macro. - * hello-objc/po/Makevars (USE_MSGCTXT): New macro. - * hello-objc-gnome/po/Makevars (USE_MSGCTXT): New macro. - -2005-09-19 Bruno Haible - - * hello-*/autogen.sh: Also install m4/progtest.m4. - * hello-*/autoclean.sh: Also remove m4/progtest.m4. - -2005-07-24 Bruno Haible - - Tidy up exported symbols. - * hello-c/m4/Makefile.am (EXTRA_DIST): Add visibility.m4. - * hello-c-gnome/m4/Makefile.am (EXTRA_DIST): Likewise. - * hello-c++/m4/Makefile.am (EXTRA_DIST): Likewise. - * hello-c++-gnome/m4/Makefile.am (EXTRA_DIST): Likewise. - * hello-c++-kde/m4/Makefile.am (EXTRA_DIST): Likewise. - * hello-objc/m4/Makefile.am (EXTRA_DIST): Likewise. - * hello-objc-gnome/m4/Makefile.am (EXTRA_DIST): Likewise. - * hello-c/autoclean.sh: Remove also m4/visibility.m4. - * hello-c-gnome/autoclean.sh: Likewise. - * hello-c++/autoclean.sh: Likewise. - * hello-c++-gnome/autoclean.sh: Likewise. - * hello-c++-kde/autoclean.sh: Likewise. - * hello-objc/autoclean.sh: Likewise. - * hello-objc-gnome/autoclean.sh: Likewise. - -2005-07-26 Bruno Haible - - * installpaths.in (datarootdir): New variable. - -2005-07-16 Bruno Haible - - * hello-c/m4/Makefile.am (EXTRA_DIST): Add lock.m4. - * hello-c++/m4/Makefile.am (EXTRA_DIST): Likewise. - * hello-c++-gnome/m4/Makefile.am (EXTRA_DIST): Likewise. - * hello-objc/m4/Makefile.am (EXTRA_DIST): Likewise. - * hello-objc-gnome/m4/Makefile.am (EXTRA_DIST): Likewise. - * hello-c/autoclean.sh: Remove also m4/lock.m4. - * hello-c-gnome/autoclean.sh: Likewise. - * hello-c++/autoclean.sh: Likewise. - * hello-c++-gnome/autoclean.sh: Likewise. - * hello-c++-kde/autoclean.sh: Likewise. - * hello-objc/autoclean.sh: Likewise. - * hello-objc-gnome/autoclean.sh: Likewise. - -2005-05-01 Bruno Haible - - * hello-csharp/configure.ac, hello-csharp-forms/configure.ac: Call - gt_CSHARPEXEC with parameters. - * hello-csharp/m4/Makefile.am, hello-csharp-forms/m4/Makefile.am - (EXTRA_DIST): Add csharpexec-test.exe. - * hello-csharp/autogen.sh, hello-csharp-forms/autogen.sh: Also copy - m4/csharpexec-test.exe. - * hello-csharp/autoclean.sh, hello-csharp-forms/autoclean.sh: Also - remove m4/csharpexec-test.exe. - -2006-06-21 Bruno Haible - - * gettext-0.14.6 released. - -2005-05-23 Bruno Haible - - * gettext-0.14.5 released. - -2005-05-23 Bruno Haible - - * po/zh_TW.po: New file, from Abel Cheung . - * po/LINGUAS: Add it. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESFILES): Add the new message catalogs. - -2005-04-11 Bruno Haible - - * gettext-0.14.4 released. - -2005-04-11 Bruno Haible - - * po/it.po: Update from Marco Colombo . - -2005-03-14 Bruno Haible - - * gettext-0.14.3 released. - -2005-03-08 Bruno Haible - - * po/vi.po: Update from Clytie Siddall . - -2005-03-08 Bruno Haible - - * po/it.po: New file, from Marco Colombo . - * po/LINGUAS: Add it. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESFILES): Add the new message catalogs. - -2005-03-06 Bruno Haible - - * po/Makefile.am, hello-*/po/Makefile.am (stamp-po): Do nothing if - $(DOMAIN).pot does not exist. - (EXTRA_DIST): Remove $(DOMAIN).pot, stamp-po. - (distdir1): If $(DOMAIN).pot exists, distribute also $(DOMAIN).pot and - stamp-po. - -2005-02-24 Bruno Haible - - * gettext-0.14.2 released. - -2005-02-24 Bruno Haible - - * hello-*/autogen.sh: Define and use GETTEXT_TOPSRCDIR, to make it - work in VPATH builds. - -2005-02-23 Bruno Haible - - * xsmallpot.sh: Make the temporary directory writable. - -2005-02-23 Bruno Haible - - * xsmallpot.sh: Add srcdir argument. Make it work when - builddir != srcdir. - * Makefile.am (hello-*.pot): Update xsmallpot.sh invocations. - -2005-02-21 Bruno Haible - - * po/vi.po: New file, from Clytie Siddall . - * po/LINGUAS: Add vi. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESFILES): Add the new message catalogs. - -2005-02-11 Bruno Haible - - * po/ga.po: New file, from Kevin Patrick Scannell . - * po/LINGUAS: Add ga. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESFILES): Add the new message catalogs. - -2005-02-06 Bruno Haible - - * hello-*/po/Makefile.am ($(DOMAIN).pot-update): If MSGID_BUGS_ADDRESS - is empty and PACKAGE_BUGREPORT is available, use the latter. - * po/Makefile.am ($(DOMAIN).pot-update): Likewise. - -2005-01-20 Bruno Haible - - * hello-guile/hello.scm: Invoke setlocale. Fix bindtextdomain call. - -2005-01-16 Bruno Haible - - Support for Scheme. - * hello-guile: New subdirectory. - * README: Mention it. - * Makefile.am (EXAMPLESFILES): Add the files in hello-guile. - * po/Makefile.am (POTFILES): Add hello-guile source. - (SMALLPOTS): Add hello-guile.pot. - (hello-guile.pot): New rule. - (SMALLPOFILES_FOR_lang): Add hello-guile elements. - (../hello-guile/po/$(LL).po): New rule. - -2005-01-06 Bruno Haible - - * po/el.po: New file, from Simos Xenitellis . - * po/ru.po: New file, from Pavel Maryanov . - * po/uk.po: New file, from Maxim V. Dziumanenko . - * po/LINGUAS: Add el, ru, uk. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESFILES): Add the new message catalogs. - -2004-09-07 Bruno Haible - - * po/xsmallpot.sh: Keep AC_PROG_* and OBJC lines in configure.in. - * hello-objc/configure.ac: Assign OBJC through AC_SUBST. - * hello-objc-gnome/configure.ac: Likewise. - Needed to avoid error with automake-1.9. - -2004-08-19 Bruno Haible - - * hello-librep/hello.jl.in: Remove no-op comments. - -2004-03-21 Bruno Haible - - * po/es.po: Update from Max de Mendizábal . - * po/sr.po: Update from Aleksandar Jelenak . - -2004-02-24 Bruno Haible - - * hello-csharp*/hello.cs (Hello.Main): Remove workaround for mono bug, - fixed in mono-0.30.1. - -2004-02-24 Bruno Haible - - * hello-csharp*/autogen.sh: Copy also the csharp.m4 file. - -2004-02-02 Bruno Haible - - * hello-*/autoclean.sh, hello-*/m4/Makefile.am: Handle glibc2.m4 too. - -2004-01-29 Bruno Haible - - * gettext-0.14.1 released. - -2004-01-28 Bruno Haible - - * gettext-0.14 released. - -2004-01-28 Bruno Haible - - * po/tr.po: Update from Nilgün Belma Bugüner . - -2004-01-17 Bruno Haible - - * po/Makefile.am (POTFILES): Add hello-csharp, hello-csharp-forms - sources. - (SMALLPOTS): Add hello-csharp.pot, hello-csharp-forms.pot. - (hello-csharp.pot, hello-csharp-forms.pot): New rules. - (SMALLPOFILES_FOR_lang): Add hello-csharp, hello-csharp-forms elements. - (../hello-csharp/po/$(LL).po, ../hello-csharp-forms/po/$(LL).po): New - rules. - * po/mmsmallpo.sh: Use option --force-po. - -2004-01-17 Bruno Haible - - * hello-*/po/Makefile.am: Adapt to changes made in po/Makefile.in.in. - -2004-01-17 Bruno Haible - - * po/af.po: New file, from Ysbeer . - * po/ca.po: Update from Ivan Vilata i Balaguer . - * po/de.po: Update from Karl Eichwalder . - * po/fr.po: Update from Michel Robitaille . - * po/ja.po: Update from Masahito Yamaga . - * po/nl.po: New file, from Elros Cyriatan . - * po/pl.po: Update from Rafał Maszkowski . - * po/sk.po: New file, from Marcel Telka . - * po/sv.po: Update from Jan Djärv . - * po/zh_CN.po: Update from Funda Wang . - * po/LINGUAS: Add af, nl, sk. - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESFILES): Add the new message catalogs. - -2004-01-10 Bruno Haible - - * hello-c++-kde/admin: New directory, from KDE 3.1.4. - * hello-c++-kde/auto*.sh: Don't create/remove the contents of the - admin subdirectory. - * Makefile.am (EXAMPLESFILES): Add hello-c++-kde/admin/*. - -2004-01-10 Bruno Haible - - * hello-c/*, hello-c-gnome/*, hello-objc/*, hello-objc-gnome/*, - hello-c++/*, hello-c++-gnome/*, hello-c++-kde/*: Use the autoconf - infrastructure from gettext-0.13.1, not 0.12.1. - -2004-01-10 Bruno Haible - - * hello-csharp/hello.cs: Work around mono-0.29 CurrentUICulture bug. - * hello-csharp-forms/hello.cs: Likewise. - -2003-12-29 Bruno Haible - - * hello-perl/INSTALL: Mention that libintl-perl-1.09 required. - * hello-perl/hello-1.pl.in, hello-perl/hello-2.pl.in: Inhibit the - automatic UTF-8 conversion in UTF-8 locales with Perl-5.8.0. Thanks to - Guido Flohr. - -2003-12-26 Bruno Haible - - * hello-csharp: New subdirectory. - * hello-csharp-forms: New subdirectory. - * Makefile.am (EXAMPLESFILES): Add the files in hello-csharp and - hello-csharp-forms. - -2003-12-26 Bruno Haible - - * hello-c++-qt/m4/qt.m4: Quote the first argument of AC_DEFUN. - * hello-c++-gnome/m4/gtk.m4, hello-c++-gnome/m4/gtk--.m4: Likewise. - -2003-12-17 Bruno Haible - - * gettext-0.13.1 released. - -2003-12-17 Bruno Haible - - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESFILES): Add the new message catalogs. - -2003-12-09 Bruno Haible - - * hello-smalltalk/hello.st.in: Add workaround against PackageLoader - verbosity. Solution provided by Carey Evans . - * hello-smalltalk/BUGS: Remove file. - * Makefile.am (EXAMPLESFILES): Update. - -2003-12-07 Bruno Haible - - * po/sv.po: New file, from Jan Djärv . - * po/tr.po: New file, from - Nilgün Belma Bugüner . - * po/LINGUAS: Add sv, tr. - -2003-12-07 Bruno Haible - - * hello-perl/hello-1.pl.in: Renamed from hello-perl/hello.pl. Make it - work. - * hello-perl/hello-2.pl.in: New file, from Guido Flohr. - * hello-perl/po/Makefile.am (POTFILES): Update. - (XGETTEXT_OPTIONS): Add options needed for the Locale::TextDomain API. - * hello-perl/configure.ac: Update accordingly. - * hello-perl/Makefile.am: Update accordingly. - * Makefile.am (EXAMPLESFILES): Update. - * po/Makefile.am (POTFILES): Update. - -2003-12-06 Bruno Haible - - * hello-objc-gnustep/po/LocaleAliases: Add many new locales. Fix typo - for EcuadorSpanish. Remove conflicting entries for Indonesian and - Hebrew. - -2003-12-06 Bruno Haible - - * hello-objc-gnustep/autoclean.sh: Also remove the *.lproj directories. - * hello-objc-gnustep/po/GNUmakefile: Include the general rules at the - beginning, not at the end, so that our .SUFFIXES tag has an effect. - ($(ENSTRINGSFILES)): Create the target directory. - -2003-12-06 Bruno Haible - - * hello-*/INSTALL: Update the installation instructions. - * hello-c++-qt/BUGS: New file. - * hello-c++-kde/BUGS: New file. - * hello-objc-gnustep/BUGS: New file. - * hello-smalltalk/BUGS: New file. - * hello-java-awt/BUGS: New file. - * hello-java-swing/BUGS: New file. - * Makefile.am (EXAMPLESFILES): Add them. - -2003-12-02 Bruno Haible - - * Makefile.am (EXTRA_DIST): Don't add the EXAMPLESFILES. - (distdir1): New rule. Install the EXAMPLESFILES after 'update-po'. - -2003-11-30 Bruno Haible - - * gettext-0.13 released. - -2003-11-30 Bruno Haible - - * po/mmsmallpo.sh: Remove the POT-Creation-Date line from the generated - PO file. - * Makefile.am (EXAMPLESFILES): Add hello-pascal/hello.rst. - -2003-11-30 Bruno Haible - - * hello-*/po/LINGUAS: Update. - * Makefile.am (EXAMPLESFILES): Add the new message catalogs. - -2003-11-30 Bruno Haible - - * po/es.po: New file, from Max de Mendizábal . - * po/LINGUAS: Add es. - -2003-11-24 Bruno Haible - - * po/ca.po: New file, from Ivan Vilata i Balaguer . - * po/ro.po: New file, from Eugen Hoanca . - * po/LINGUAS: Add ca, ro. - -2003-11-22 Bruno Haible - - * po/ja.po: New file, from Masahito Yamaga . - * po/LINGUAS: Add ja. - -2003-11-20 Bruno Haible - - * hello-*/configure.ac: Remove AM_NLS invocation. - * po/xsmallpot.sh: Don't keep AM_NLS lines. - -2003-11-19 Bruno Haible - - * po/de.po: Update from Karl Eichwalder . - * po/fr.po: New file, from Michel Robitaille . - * po/pl.po: New file, from Rafał Maszkowski . - * po/sr.po: New file, from Danilo Segan . - * po/zh_CN.po: New file, from Funda Wang . - * po/LINGUAS: Add fr, pl, sr, zh_CN. - -2003-11-15 Bruno Haible - - * hello-c/Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. - * hello-c-gnome/Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. - * hello-c++/Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. - * hello-c++-kde/Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. - * hello-c++-gnome/Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. - * hello-objc/Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. - * hello-objc-gnome/Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. - -2003-11-15 Bruno Haible - - * Makefile.am: New file. - * README: New file. - * installpaths.in: New file. - * hello-c: New subdirectory. - * hello-c-gnome: New subdirectory. - * hello-c++: New subdirectory. - * hello-c++-qt: New subdirectory. - * hello-c++-kde: New subdirectory. - * hello-c++-gnome: New subdirectory. - * hello-objc: New subdirectory. - * hello-objc-gnustep: New subdirectory. - * hello-objc-gnome: New subdirectory. - * hello-sh: New subdirectory. - * hello-python: New subdirectory. - * hello-clisp: New subdirectory. - * hello-librep: New subdirectory. - * hello-smalltalk: New subdirectory. - * hello-java: New subdirectory. - * hello-java-awt: New subdirectory. - * hello-java-swing: New subdirectory. - * hello-gawk: New subdirectory. - * hello-pascal: New subdirectory. - * hello-ycp: New subdirectory. - * hello-tcl: New subdirectory. - * hello-tcl-tk: New subdirectory. - * hello-perl: New subdirectory. - * hello-php: New subdirectory. - +No more ChangeLog files +======================== +Do not modify any of the ChangeLog files in gettext. Starting on +October 14th, 2015 we put changelog information only in the git commit +log, and generate a top-level ChangeLog file from logs at "make dist" +time. + +Local Variables: +buffer-read-only: t +mode: text +End: diff -Nru gettext-0.19.6/gettext-tools/examples/ChangeLog.0 gettext-0.19.7/gettext-tools/examples/ChangeLog.0 --- gettext-0.19.6/gettext-tools/examples/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/ChangeLog.0 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,1237 @@ +2015-10-08 Daiki Ueno + + * hello-c-gnome3/Makefile.am (hello.desktop.in): Don't use a + temporary file. + (hello.desktop): Likewise. + +2015-09-11 Daiki Ueno + + * gettext 0.19.6 released. + +2015-09-11 Daiki Ueno + + * po/fi.po: Update from Jorma Karvonen . + * po/it.po: Update from Marco Colombo . + * po/zh_CN.po: Update from Ji ZhengYu . + +2015-07-10 Daiki Ueno + + * gettext 0.19.5 released. + +2015-07-10 Daiki Ueno + + * po/bg.po: Update from Roumen Petrov . + * po/ca.po: Update from Ivan Vilata i Balaguer . + * po/cs.po: Update from Marek Černocký . + * po/da.po: Update from Joe Hansen . + * po/de.po: Update from Philipp Thomas . + * po/es.po: Update from Antonio Ceballos . + * po/fi.po: Update from Jorma Karvonen . + * po/fr.po: Update from Stéphane Aulery . + * po/hu.po: Update from Balázs Úr . + * po/ja.po: Update from Masahito Yamaga . + * po/ms.po: Update from Sharuzzaman Ahmat Raslan . + * po/nl.po: Update from Benno Schulenberg . + * po/pl.po: Update from Rafał Maszkowski . + * po/ro.po: Update from Mihai Cristescu . + * po/ru.po: Update from Yuri Kozlov . + * po/sk.po: Update from Marcel Telka . + * po/sl.po: Update from Primož Peterlin . + * po/sr.po: Update from Мирослав Николић . + * po/uk.po: Update from Yuri Chornoivan . + * po/vi.po: Update from Trần Ngọc Quân . + +2015-03-07 Daiki Ueno + + * hello-c-gnome3/Makefile.am (hello.desktop): Remove unnecessary + $srcdir check. + +2015-03-06 Daiki Ueno + + * hello-c-gnome3/Makefile.am: Suggest hello.desktop.in should be + included in EXTRA_DIST. + +2015-02-02 Matthias Clasen + + * hello-c-gnome3/configure.ac: Require gettext 0.19, for GSettings + and Desktop files. + +2015-01-07 Daiki Ueno + + examples: Make hello-c-gnome3 translator friendly + Suggested by Benno Schulenberg in: + . + * hello-c-gnome3/hello.gschema.xml: Use "use-markup" property + instead of "sensitive", to clarify the meaning of the extracted + strings. + * hello-c-gnome3/hello.c (HelloApplicationWindow): Rename the + "label2" member to "label". + (update_content): New function. + (clicked_callback): Rename from quit_callback and call + update_content instead of quitting. All callers changed. + * hello-c-gnome3/hello.ui: Abolish the first label and put a + translatable text inside the button. + +2014-12-24 Daiki Ueno + + * gettext 0.19.4 released. + +2014-12-24 Daiki Ueno + + * po/bg.po: Update from Roumen Petrov . + * po/ca.po: Update from Ivan Vilata i Balaguer . + * po/es.po: Update from Antonio Ceballos . + * po/ja.po: Update from Masahito Yamaga . + * po/pl.po: Update from Rafał Maszkowski . + * po/pt_BR.po: Update from Rafael Ferreira . + * po/ru.po: Update from Yuri Kozlov . + * po/sk.po: Update from Marcel Telka . + * po/sl.po: Update from Primož Peterlin . + * po/sv.po: Update from Jan Djärv . + * po/uk.po: Update from Yuri Chornoivan . + * po/vi.po: Update from Trần Ngọc Quân . + +2014-12-05 Daiki Ueno + + examples: Regenerate stamp-po after POT has changed + * Makefile.am (distdir1): Invoke 'all' target in po/Makefile, + after 'update-po'. + +2014-12-05 Daiki Ueno + + examples: Include hello-*.pot in the distribution + Partially revert 2c3d71ce, as it broke "make dist". Instead, + include all the generated POT files in the distribution to prevent + re-generation of those files. + * Makefile.am (distdir1): Call update-po in po/Makefile. + * po/Makefile.am ($(DOMAIN).pot-update): Specify --directory for + xgettext invocation. + (DISTCLEANFILES): Move $(SMALLPOTS)... + (MAINTAINERCLEANFILES): ...here. + (distdir1): Include $(SMALLPOTS) in the distribution. + +2014-12-04 Daiki Ueno + + examples: Don't forcibly regenerate POT files on 'make dist' + Previously we generated POT files on 'make dist'. However, it + take some time to complete and require autotools bootstrap for + each project. + * Makefile.am (distdir1): Don't invoke update-po rule in po/Makefile. + * po/Makefile.am (distdir1): Don't invoke update-po rule. + +2014-10-15 Daiki Ueno + + * gettext 0.19.3 released. + +2014-10-15 Daiki Ueno + + * po/eo.po, po/es.po, po/nb.po: Update. + +2014-07-14 Daiki Ueno + + * gettext 0.19.2 released. + +2014-06-10 Daiki Ueno + + * gettext 0.19.1 released. + +2014-06-03 Daiki Ueno + + examples: Don't require msgfmt when compiling hello-c-gnome3 + * hello-c-gnome3/Makefile.am (CLEANFILES): Clean hello.desktop. + (EXTRA_DIST): Add hello.desktop.in. + (MAINTAINERCLEANFILES): Add hello.desktop.in. + (hello.desktop): Move msgfmt invocation to... + (hello.desktop.in): ...here. + +2014-06-02 Daiki Ueno + + * gettext 0.19 released. + +2014-05-14 Daiki Ueno + + * configure.ac: Adjust $docdir assuming that AC_PACKAGE_TARNAME is + set. + +2014-05-06 Daiki Ueno + + * Makefile.am (install-data-local): Don't fail if a PO file does + not exist, but warn user to do "make dist". + +2014-04-22 Daiki Ueno + + build: Use git-version-gen intead of version.sh + * configure.ac: Use git-version-gen in AC_INIT. + +2014-04-21 Daiki Ueno + + examples: Quote shell variables in hello-java*/configure + When running from xsmallpot.sh, embedded shell-script snippets are + stripped off from configure.ac and some variables are not set. + Make sure to quote them to avoid error. + * hello-java/configure.ac: Quote $BUILDJAVA. + * hello-java-awt/configure.ac: Quote $BUILDJAVAEXE and $BUILDJAVA. + * hello-java-qtjambi/configure.ac: Likewise. + * hello-java-swing/configure.ac: Likewise. + +2014-04-15 Daiki Ueno + + examples: Add a new example 'hello-c-gnome3' + * hello-c-gnome3: New subdirectory. + * README: Mention it. + * Makefile.am (EXAMPLESFILES): Add the files in hello-c-gnome3. + (EXAMPLESDIRS): Add hello-c-gnome3. + * po/Makefile.am (POTFILES): Add hello-c-gnome3 source. + (SMALLPOTS): Add hello-c-gnome3.pot. + (hello-c-gnome3.pot): New rule. + (SMALLPOFILES_FOR_lang): Add hello-c-gnome3 elements. + (../hello-c-gnome3/po/$(LL).po): New rule. + +2013-06-10 Daiki Ueno + + * Makefile.am: Use $(MKDIR_P) instead of $(mkdir_p). + * hello-c++-qt/po/Makefile.am: Likewise. + * hello-c++-wxwidgets/po/Makefile.am: Likewise. + * hello-clisp/po/Makefile.am: Likewise. + * hello-csharp-forms/Makefile.am: Likewise. + * hello-csharp-forms/po/Makefile.am: Likewise. + * hello-csharp/Makefile.am: Likewise. + * hello-csharp/po/Makefile.am: Likewise. + * hello-gawk/po/Makefile.am: Likewise. + * hello-guile/po/Makefile.am: Likewise. + * hello-java-awt/Makefile.am: Likewise. + * hello-java-qtjambi/Makefile.am: Likewise. + * hello-java-swing/Makefile.am: Likewise. + * hello-java/Makefile.am: Likewise. + * hello-librep/po/Makefile.am: Likewise. + * hello-pascal/Makefile.am: Likewise. + * hello-pascal/po/Makefile.am: Likewise. + * hello-perl/po/Makefile.am: Likewise. + * hello-php/po/Makefile.am: Likewise. + * hello-python/po/Makefile.am: Likewise. + * hello-sh/po/Makefile.am: Likewise. + * hello-smalltalk/po/Makefile.am: Likewise. + * hello-tcl-tk/po/Makefile.am: Likewise. + * hello-tcl/po/Makefile.am: Likewise. + * hello-ycp/po/Makefile.am: Likewise. + Suggested by Stefano Lattarini in + . + +2013-04-23 Daiki Ueno + + * po/xsmallpot.sh: Don't assume that aclocal accepts configure.in. + +2013-04-02 Daiki Ueno + + * Makefile.am (clean-local): New rule to remove tmp-hello-*. + +2012-12-25 Daiki Ueno + + * gettext-0.18.2 released. + +2012-12-19 Daiki Ueno + + Fix build error in hello-c++-kde due to autom4te cache. + * po/xsmallpot.sh: Pass -f to autoconf to ignore cache. + +2012-12-07 Bruno Haible + + * po/cs.po: New file, from Marek Černocký . + * po/nb.po: New file, from Johnny A. Solbu . + * po/vi.po: Update from Trần Ngọc Quân . + * po/LINGUAS: Add cs, hr, nb. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. + +2012-07-08 Bruno Haible + + * po/hr.po: New file, from Tomislav Krznar . + +2011-01-18 Bruno Haible + + * po/da.po: New file, from Keld Simonsen . + * po/gl.po: New file, from + Leandro Regueiro . + * po/LINGUAS: Add da, gl. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. + +2010-10-10 Bruno Haible + + * po/bg.po: Update from Roumen Petrov . + +2010-08-13 Nicola Pero (tiny change) + + Fix build error in hello-objc-gnustep due to 'ast' and 'ky' catalogs. + * hello-objc-gnustep/po/LocaleAliases: Regenerated from newest + gnustep-base/Languages/Locale.aliases. + +2010-06-04 Bruno Haible + + * gettext-0.18.1 released. + +2010-05-09 Bruno Haible + + * gettext-0.18 released. + +2010-04-25 Bruno Haible + + Update hello-pascal example. + * hello-pascal/INSTALL: Require fpc 2.0 or newer. + * hello-pascal/hello.pas: Use GetProcessID from the system unit, + instead of getpid from the oldlinux unit or fpgetpid from the baseunix + unit. + Reported by Marco van de Voort . + +2010-04-02 Bruno Haible + + * hello-c++-wxwidgets/autogen.sh: Update origin of lib-*.m4 and + config.rpath files. + +2010-03-09 Bruno Haible + + * po/ast.po: Update. + +2010-01-31 Bruno Haible + + * po/bg.po: New file, from Roumen Petrov . + * po/LINGUAS: Add bg. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. + +2009-12-19 Bruno Haible + + * po/ast.po: New file, from + Marcos Alvarez Costales . + * po/LINGUAS: Add ast. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. + +2009-08-16 Bruno Haible + + Silence the msgmerge invocations. + * hello-c/po/Makevars (MSGMERGE_OPTIONS): New variable. + * hello-c-gnome/po/Makevars (MSGMERGE_OPTIONS): Likewise. + * hello-c++/po/Makevars (MSGMERGE_OPTIONS): Likewise. + * hello-c++-kde/po/Makevars (MSGMERGE_OPTIONS): Likewise. + * hello-c++-gnome/po/Makevars (MSGMERGE_OPTIONS): Likewise. + * hello-objc/po/Makevars (MSGMERGE_OPTIONS): Likewise. + * hello-objc-gnome/po/Makevars (MSGMERGE_OPTIONS): Likewise. + * po/Makefile.am (MSGMERGE_OPTIONS): New variable. + ($(POFILES), .nop.po-update): Use it. + * hello-c++-qt/po/Makefile.am: Likewise. + * hello-c++-wxwidgets/po/Makefile.am: Likewise. + * hello-sh/po/Makefile.am: Likewise. + * hello-python/po/Makefile.am: Likewise. + * hello-clisp/po/Makefile.am: Likewise. + * hello-librep/po/Makefile.am: Likewise. + * hello-guile/po/Makefile.am: Likewise. + * hello-smalltalk/po/Makefile.am: Likewise. + * hello-java/po/Makefile.am: Likewise. + * hello-java-awt/po/Makefile.am: Likewise. + * hello-java-swing/po/Makefile.am: Likewise. + * hello-java-qtjambi/po/Makefile.am: Likewise. + * hello-csharp/po/Makefile.am: Likewise. + * hello-csharp-forms/po/Makefile.am: Likewise. + * hello-gawk/po/Makefile.am: Likewise. + * hello-pascal/po/Makefile.am: Likewise. + * hello-ycp/po/Makefile.am: Likewise. + * hello-tcl/po/Makefile.am: Likewise. + * hello-tcl-tk/po/Makefile.am: Likewise. + * hello-perl/po/Makefile.am: Likewise. + * hello-php/po/Makefile.am: Likewise. + * hello-objc-gnustep/po/GNUmakefile: Likewise. + * po/mmsmallpo.sh: Pass option --quiet to msgmerge. + +2009-08-16 Bruno Haible + + * hello-objc-gnustep/po/GNUmakefile: Apply 2007-10-18 changes to + hello-*/po/Makefile.am. + +2009-08-16 Bruno Haible + + * hello-objc-gnustep/po/GNUmakefile: Apply 2007-10-17 changes to + hello-*/po/Makefile.am. + (PACKAGE_NAME, PACKAGE_VERSION): New variables. + +2009-08-16 Bruno Haible + + * hello-objc-gnustep/po/GNUmakefile: Apply part of 2005-02-07 changes + to hello-*/po/Makefile.am.. + +2009-08-16 Bruno Haible + + * hello-objc-gnustep/po/GNUmakefile: Apply 2004-01-17 changes to + hello-*/po/Makefile.am. + +2009-07-29 Bruno Haible + + * po/lv.po: New file, from Rihards Priedītis . + * po/LINGUAS: Add lv. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. + +2009-05-23 Bruno Haible + + * configure.ac (AM_INIT_AUTOMAKE): Add 'silent-rules' option. + +2009-05-23 Bruno Haible + + * configure.ac: Invoke gl_INIT_PACKAGE. Use the preferred form of + AM_INIT_AUTOMAKE. + +2009-01-27 Bruno Haible + + * hello-c++-qt/po/Makefile.am (XGETTEXT_OPTIONS): Add more options for + the tr function, for compatibility with Qt 4. + +2009-01-18 Bruno Haible + + * hello-c++-qt/po/Makefile.am (.po.gmo): Pass --verbose to msgfmt when + producing statistics. + * hello-c++-wxwidgets/po/Makefile.am (.po.gmo): Likewise. + * hello-clisp/po/Makefile.am (.po.gmo): Likewise. + * hello-gawk/po/Makefile.am (.po.gmo): Likewise. + * hello-guile/po/Makefile.am (.po.gmo): Likewise. + * hello-librep/po/Makefile.am (.po.gmo): Likewise. + * hello-pascal/po/Makefile.am (.po.gmo): Likewise. + * hello-perl/po/Makefile.am (.po.gmo): Likewise. + * hello-php/po/Makefile.am (.po.gmo): Likewise. + * hello-python/po/Makefile.am (.po.gmo): Likewise. + * hello-sh/po/Makefile.am (.po.gmo): Likewise. + * hello-smalltalk/po/Makefile.am (.po.gmo): Likewise. + * hello-ycp/po/Makefile.am (.po.gmo): Likewise. + * hello-java/po/Makefile.am (update-properties, update-classes): + Likewise. + * hello-java-awt/po/Makefile.am (update-properties, update-classes): + Likewise. + * hello-java-swing/po/Makefile.am (update-properties, update-classes): + Likewise. + * hello-java-qtjambi/po/Makefile.am (update-properties, + update-classes): Likewise. + Suggested by Vincent Lefevre . + +2009-01-18 Bruno Haible + + * po/mt.po: New file, from Clyde Meli . + * po/LINGUAS: Add mt. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. + +2009-01-14 Bruno Haible + + * configure.ac: More consistent m4 quoting. + +2007-12-24 Bruno Haible + + * hello-*/po/Makefile.am ($(POFILES), .nop.po-update): When using + msgmerge 0.18 or newer, pass a --lang option. + * hello-objc-gnustep/po/GNUmakefile ($(POFILES), .nop.po-update): + Likewise. + +2007-12-24 Bruno Haible + + * hello-*/po/Makefile.am (.nop.po-update): Put all non-option arguments + after all option arguments, so that the commands work 1. when + POSIXLY_CORRECT is set, 2. on platforms whose getopt facility is POSIX + compliant but not GNU libc compatible, such as Cygwin. + * hello-objc-gnustep/po/GNUmakefile (.nop.po-update): Likewise. + +2007-11-13 Bruno Haible + + * po/ky.po: New file, from Ilyas Bakirov . + * po/LINGUAS: Add ky. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. + +2007-11-07 Bruno Haible + + * gettext-0.17 released. + +2007-10-31 Bruno Haible + + * hello-*/m4/Makefile.am (EXTRA_DIST): Remove ulonglong.m4. + * hello-*/autoclean.sh: Don't remove ulonglong.m4 any more. + +2007-10-28 Bruno Haible + + * hello-*/po/Makefile.am ($(DOMAIN).pot-update): Consider the + XGETTEXT_EXTRA_OPTIONS variable. + +2007-10-26 Bruno Haible + + * po/fi.po: New file, from Lauri Nurmi . + * po/LINGUAS: Add fi. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. + +2007-10-20 Bruno Haible + + New example for Qt/Jambi. + * hello-java-qtjambi: New subdirectory. + * README: Mention it. + * Makefile.am (EXAMPLESFILES): Add the files in hello-java-qtjambi. + (EXAMPLESDIRS): Add hello-java-qtjambi. + * po/Makefile.am (POTFILES): Add hello-java-qtjambi source. + (SMALLPOTS): Add hello-java-qtjambi.pot. + (hello-java-qtjambi.pot): New rule. + (SMALLPOFILES_FOR_lang): Add hello-java-qtjambi elements. + (../hello-java-qtjambi/po/$(LL).po): New rule. + +2007-10-18 Bruno Haible + + * hello-*/po/Makefile.am ($(DOMAIN).pot-update): Don't pass the package + name and version to xgettext if the xgettext version is < 0.16.2. + +2007-10-17 Bruno Haible + + * hello-*/po/Makefile.am ($(DOMAIN).pot-update): Pass the package name + and version to xgettext. + +2007-10-17 Bruno Haible + + * hello-java/po/Makefile.am (stamp-po): Test $(PROPERTIESFILES), not + $(GMOFILES). + +2007-10-13 Bruno Haible + + * po/nl.po: Update from Benno Schulenberg . + +2007-09-15 Bruno Haible + + * po/vi.po: Update from Clytie Siddall . + +2007-06-07 Bruno Haible + + * hello-*/autoclean.sh: Remove also intlmacosx.m4. + +2007-04-06 Bruno Haible + + * hello-*/autoclean.sh: Don't remove longdouble.m4 any more. + +2007-03-20 Bruno Haible + + Remove all "Copyright (C) ..." notices from files that are in the + public domain. + +2007-01-30 Bruno Haible + + * po/ms.po: New file, from + Sharuzzaman Ahmat Raslan . + * po/LINGUAS: Add ms. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESPOFILES): Add the new message catalogs. + +2006-12-04 Bruno Haible + + Work around small sh argument length limit on IRIX. + * Makefile.am (EXAMPLESFILES): Remove the common files in po + directories. + (EXAMPLESDIRS, EXAMPLESPOFILES): New variables. + (install-data-local, installdirs-local, uninstall-local, distdir1): Use + doubly-nested loop for the common files in po directories. + Reported by Paul Martinolich . + +2006-10-27 Bruno Haible + + Work around automake-1.10 annoyance. + * Makefile.am (ACLOCAL): New macro. + +2006-11-27 Bruno Haible + + * gettext-0.16.1 released. + +2006-10-26 Bruno Haible + + * gettext-0.16 released. + +2006-10-23 Bruno Haible + + * hello-c++-kde/admin/cvs.sh: Accept automake versions > 1.9.x. + +2006-10-01 Bruno Haible + + * hello-*/autoclean.sh: Remove also intldir.m4. + +2006-10-02 Bruno Haible + + * po/fr.po: Update from Christophe Combelles . + * po/id.po: New file, from Tedi Heriyanto . + * po/LINGUAS: Add id. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESFILES): Add the new message catalogs. + +2006-09-18 Bruno Haible + + * hello-{c,c++,objc}*/{autoclean.sh,m4/Makefile.am}: Remove + inttypes-h.m4. + +2006-09-11 Bruno Haible + + * hello-{c,c++,objc}*/autoclean.sh: Remove also intl.m4. + +2006-08-28 Bruno Haible + + * hello-*/autoclean.sh: Remove mention of signed.m4. + +2006-07-31 Bruno Haible + + * hello-c/autogen.sh: Replace gettext-tools/lib with + gettext-tools/gnulib-lib. + * hello-c++/autogen.sh: Likewise. + * hello-objc/autogen.sh: Likewise. + * hello-csharp/autogen.sh: Update for changed locations of *.m4 files. + * hello-csharp-forms/autogen.sh: Likewise. + * hello-java/autogen.sh: Likewise. + * hello-java-awt/autogen.sh: Likewise. + * hello-java-swing/autogen.sh: Likewise. + +2006-07-30 Bruno Haible + + * hello-csharp*/autogen.sh: Update for changed location of + csharpcomp.sh.in and csharpexec.sh.in. + * hello-java*/autogen.sh: Update for changed location of + javacomp.sh.in and javaexec.sh.in. + +2006-07-25 Bruno Haible + + * Makefile.msvc: Remove file. + * Makefile.am (EXTRA_DIST): Remove Makefile.msvc. + +2006-07-25 Bruno Haible + + * Makefile.vms: Remove file. + * Makefile.am (EXTRA_DIST): Remove Makefile.vms. + +2006-07-23 Bruno Haible + + * hello-c++-kde/autoclean.sh: Fix syntax error. + +2006-07-21 Bruno Haible + + * gettext-0.15 released. + +2006-07-21 Bruno Haible + + * hello-*/autogen.sh (GETTEXT_TOPSRCDIR): In the build directory case, + append one more "/..". + +2006-07-20 Bruno Haible + + * po/sv.po: Update from Jan Djärv . + * po/vi.po: Update from Clytie Siddall . + * po/zh_HK.po: New file, from Abel Cheung . + * po/LINGUAS: Add zh_HK. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESFILES): Add the new message catalogs. + +2006-07-14 Bruno Haible + + * po/Makefile.am (MOSTLYCLEANFILES): Add *.stackdump. + * hello-*/po/Makefile.am (MOSTLYCLEANFILES): Likewise. + +2006-07-13 Bruno Haible + + * configure.ac (Makefile): Invoke FIX_MAKEFILE_TOPDIR_DISTRIB instead + of FIX_MAKEFILE_DISTRIB. + +2006-07-13 Bruno Haible + + * hello-c++-kde/admin/cvs.sh: Disable the search for specific + versions of autoconf, autoheader, autom4te, automake, aclocal. + Accept autoconf, autoheader versions > 2.59. Accept automake + versions > 1.8.x. + +2006-07-13 Bruno Haible + + * Makefile.am (ACLOCAL_AMFLAGS): New variable. + +2006-07-03 Bruno Haible + + * po/eo.po: New file, from Edmund Grimley Evans . + * po/it.po: Update from Marco Colombo . + * po/LINGUAS: Add eo. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESFILES): Add the new message catalogs. + +2006-06-29 Bruno Haible + + * configure.ac: New file. + * Makefile.am (AUTOMAKE_OPTIONS): Drop gnits, use foreign instead. + * po/Makefile.am (POTFILES): Remove examples/ prefix. + +2006-06-27 Bruno Haible + + * hello-c/{autoclean.sh,m4/Makefile.am}: Remove isc-posix.m4. + * hello-c-gnome/{autoclean.sh,m4/Makefile.am}: Likewise. + * hello-c++/{autoclean.sh,m4/Makefile.am}: Likewise. + * hello-c++-gnome/{autoclean.sh,m4/Makefile.am}: Likewise. + * hello-c++-kde/{autoclean.sh,m4/Makefile.am}: Likewise. + * hello-objc/{autoclean.sh,m4/Makefile.am}: Likewise. + * hello-objc-gnome/{autoclean.sh,m4/Makefile.am}: Likewise. + +2006-04-14 Bruno Haible + + Assume autoconf >= 2.60. + * Makefile.am (docdir): Remove variable. + * po/Makefile.am (localedir): Remove variable. + +2006-06-04 Bruno Haible + + * hello-c/{autoclean.sh,m4/Makefile.am}: Replace inttypes.m4 with + inttypes-h.m4. + * hello-c-gnome/{autoclean.sh,m4/Makefile.am}: Likewise. + * hello-c++/{autoclean.sh,m4/Makefile.am}: Likewise. + * hello-c++-gnome/{autoclean.sh,m4/Makefile.am}: Likewise. + * hello-c++-kde/{autoclean.sh,m4/Makefile.am}: Likewise. + * hello-objc/{autoclean.sh,m4/Makefile.am}: Likewise. + * hello-objc-gnome/{autoclean.sh,m4/Makefile.am}: Likewise. + +2006-05-01 Bruno Haible + + * hello-java/configure.ac: Pass a source-version to gt_JAVACOMP. Move + gt_JAVAEXEC call before the gt_JAVACOMP call. + * hello-java-awt/configure.ac: Likewise. + * hello-java-swing/configure.ac: Likewise. + +2006-04-17 Bruno Haible + + * Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs). + * hello-csharp/Makefile.am: Likewise. + * hello-csharp-forms/Makefile.am: Likewise. + * hello-java/Makefile.am: Likewise. + * hello-java-awt/Makefile.am: Likewise. + * hello-java-swing/Makefile.am: Likewise. + * hello-pascal/Makefile.am: Likewise. + * hello-c++-qt/po/Makefile.am: Likewise. + * hello-c++-wxwidgets/po/Makefile.am: Likewise. + * hello-clisp/po/Makefile.am: Likewise. + * hello-csharp/po/Makefile.am: Likewise. + * hello-csharp-forms/po/Makefile.am: Likewise. + * hello-gawk/po/Makefile.am: Likewise. + * hello-guile/po/Makefile.am: Likewise. + * hello-librep/po/Makefile.am: Likewise. + * hello-pascal/po/Makefile.am: Likewise. + * hello-perl/po/Makefile.am: Likewise. + * hello-php/po/Makefile.am: Likewise. + * hello-python/po/Makefile.am: Likewise. + * hello-sh/po/Makefile.am: Likewise. + * hello-smalltalk/po/Makefile.am: Likewise. + * hello-tcl/po/Makefile.am: Likewise. + * hello-tcl-tk/po/Makefile.am: Likewise. + * hello-ycp/po/Makefile.am: Likewise. + * hello-*/autoclean.sh: Don't remove mkinstalldirs. + +2006-04-14 Bruno Haible + + Don't ignore the --localedir option from autoconf >= 2.60. + * hello-c/Makefile.am (localedir): Remove variable. + * hello-c-gnome/Makefile.am (localedir): Likewise. + * hello-objc/Makefile.am (localedir): Likewise. + * hello-objc-gnome/Makefile.am (localedir): Likewise. + * hello-c++/Makefile.am (localedir): Likewise. + * hello-c++-kde/Makefile.am (localedir): Likewise. + * hello-c++-gnome/Makefile.am (localedir): Likewise. + * hello-c++-qt/Makefile.am (localedir): Likewise. + * hello-c++-qt/po/Makefile.am (localedir): Likewise. + * hello-c++-wxwidgets/Makefile.am (localedir): Likewise. + * hello-c++-wxwidgets/po/Makefile.am (localedir): Likewise. + * hello-clisp/po/Makefile.am (localedir): Likewise. + * hello-gawk/po/Makefile.am (localedir): Likewise. + * hello-guile/po/Makefile.am (localedir): Likewise. + * hello-librep/po/Makefile.am (localedir): Likewise. + * hello-pascal/po/Makefile.am (localedir): Likewise. + * hello-perl/po/Makefile.am (localedir): Likewise. + * hello-php/po/Makefile.am (localedir): Likewise. + * hello-python/po/Makefile.am (localedir): Likewise. + * hello-sh/po/Makefile.am (localedir): Likewise. + * hello-smalltalk/po/Makefile.am (localedir): Likewise. + * hello-ycp/po/Makefile.am (localedir): Likewise. + +2006-04-14 Bruno Haible + + * hello-c/configure.ac: Use gettext-0.15 infrastructure. + * hello-c-gnome/configure.ac: Likewise. + * hello-objc/configure.ac: Likewise. + * hello-objc-gnome/configure.ac: Likewise. + * hello-c++/configure.ac: Likewise. + * hello-c++-kde/configure.in.in: Likewise. + * hello-c++-gnome/configure.ac: Likewise. + * hello-c-gnome/m4/Makefile.am (EXTRA_DIST): Add lock.m4. + * hello-c++-kde/m4/Makefile.am (EXTRA_DIST): Likewise. + +2006-04-14 Bruno Haible + + Prepare for autoconf-2.60. + * hello-clisp/configure.ac: Set datarootdir before evaluating + ${datadir}. + * hello-gawk/configure.ac: Likewise. + * hello-guile/configure.ac: Likewise. + * hello-librep/configure.ac: Likewise. + * hello-pascal/configure.ac: Likewise. + * hello-perl/configure.ac: Likewise. + * hello-php/configure.ac: Likewise. + * hello-python/configure.ac: Likewise. + * hello-sh/configure.ac: Likewise. + * hello-smalltalk/configure.ac: Likewise. + +2006-04-07 Bruno Haible + + * po/hu.po: New file, from Kiss Tamás . + * po/pt.po: New file, from + Helder Correia . + * po/sl.po: New file, from + Primož Peterlin . + * po/vi.po: Update from Clytie Siddall . + * po/LINGUAS: Add hu, pt, sl. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESFILES): Add the new message catalogs. + +2006-03-25 Bruno Haible + + * hello-csharp-forms/README: New file. + * Makefile.am (EXAMPLESFILES): Add it. + +2006-03-25 Bruno Haible + + New example for wxWidgets. + * hello-c++-wxwidgets: New subdirectory. + * README: Mention it. + * Makefile.am (EXAMPLESFILES): Add the files in hello-c++-wxwidgets. + * po/Makefile.am (POTFILES): Add hello-c++-wxwidgets source. + (SMALLPOTS): Add hello-c++-wxwidgets.pot. + (hello-c++-wxwidgets.pot): New rule. + (SMALLPOFILES_FOR_lang): Add hello-c++-wxwidgets elements. + (../hello-c++-wxwidgets/po/$(LL).po): New rule. + +2005-10-18 Bruno Haible + + * hello-c/po/Makevars (USE_MSGCTXT): New macro. + * hello-c-gnome/po/Makevars (USE_MSGCTXT): New macro. + * hello-c++/po/Makevars (USE_MSGCTXT): New macro. + * hello-c++-gnome/po/Makevars (USE_MSGCTXT): New macro. + * hello-c++-kde/po/Makevars (USE_MSGCTXT): New macro. + * hello-objc/po/Makevars (USE_MSGCTXT): New macro. + * hello-objc-gnome/po/Makevars (USE_MSGCTXT): New macro. + +2005-09-19 Bruno Haible + + * hello-*/autogen.sh: Also install m4/progtest.m4. + * hello-*/autoclean.sh: Also remove m4/progtest.m4. + +2005-07-24 Bruno Haible + + Tidy up exported symbols. + * hello-c/m4/Makefile.am (EXTRA_DIST): Add visibility.m4. + * hello-c-gnome/m4/Makefile.am (EXTRA_DIST): Likewise. + * hello-c++/m4/Makefile.am (EXTRA_DIST): Likewise. + * hello-c++-gnome/m4/Makefile.am (EXTRA_DIST): Likewise. + * hello-c++-kde/m4/Makefile.am (EXTRA_DIST): Likewise. + * hello-objc/m4/Makefile.am (EXTRA_DIST): Likewise. + * hello-objc-gnome/m4/Makefile.am (EXTRA_DIST): Likewise. + * hello-c/autoclean.sh: Remove also m4/visibility.m4. + * hello-c-gnome/autoclean.sh: Likewise. + * hello-c++/autoclean.sh: Likewise. + * hello-c++-gnome/autoclean.sh: Likewise. + * hello-c++-kde/autoclean.sh: Likewise. + * hello-objc/autoclean.sh: Likewise. + * hello-objc-gnome/autoclean.sh: Likewise. + +2005-07-26 Bruno Haible + + * installpaths.in (datarootdir): New variable. + +2005-07-16 Bruno Haible + + * hello-c/m4/Makefile.am (EXTRA_DIST): Add lock.m4. + * hello-c++/m4/Makefile.am (EXTRA_DIST): Likewise. + * hello-c++-gnome/m4/Makefile.am (EXTRA_DIST): Likewise. + * hello-objc/m4/Makefile.am (EXTRA_DIST): Likewise. + * hello-objc-gnome/m4/Makefile.am (EXTRA_DIST): Likewise. + * hello-c/autoclean.sh: Remove also m4/lock.m4. + * hello-c-gnome/autoclean.sh: Likewise. + * hello-c++/autoclean.sh: Likewise. + * hello-c++-gnome/autoclean.sh: Likewise. + * hello-c++-kde/autoclean.sh: Likewise. + * hello-objc/autoclean.sh: Likewise. + * hello-objc-gnome/autoclean.sh: Likewise. + +2005-05-01 Bruno Haible + + * hello-csharp/configure.ac, hello-csharp-forms/configure.ac: Call + gt_CSHARPEXEC with parameters. + * hello-csharp/m4/Makefile.am, hello-csharp-forms/m4/Makefile.am + (EXTRA_DIST): Add csharpexec-test.exe. + * hello-csharp/autogen.sh, hello-csharp-forms/autogen.sh: Also copy + m4/csharpexec-test.exe. + * hello-csharp/autoclean.sh, hello-csharp-forms/autoclean.sh: Also + remove m4/csharpexec-test.exe. + +2006-06-21 Bruno Haible + + * gettext-0.14.6 released. + +2005-05-23 Bruno Haible + + * gettext-0.14.5 released. + +2005-05-23 Bruno Haible + + * po/zh_TW.po: New file, from Abel Cheung . + * po/LINGUAS: Add it. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESFILES): Add the new message catalogs. + +2005-04-11 Bruno Haible + + * gettext-0.14.4 released. + +2005-04-11 Bruno Haible + + * po/it.po: Update from Marco Colombo . + +2005-03-14 Bruno Haible + + * gettext-0.14.3 released. + +2005-03-08 Bruno Haible + + * po/vi.po: Update from Clytie Siddall . + +2005-03-08 Bruno Haible + + * po/it.po: New file, from Marco Colombo . + * po/LINGUAS: Add it. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESFILES): Add the new message catalogs. + +2005-03-06 Bruno Haible + + * po/Makefile.am, hello-*/po/Makefile.am (stamp-po): Do nothing if + $(DOMAIN).pot does not exist. + (EXTRA_DIST): Remove $(DOMAIN).pot, stamp-po. + (distdir1): If $(DOMAIN).pot exists, distribute also $(DOMAIN).pot and + stamp-po. + +2005-02-24 Bruno Haible + + * gettext-0.14.2 released. + +2005-02-24 Bruno Haible + + * hello-*/autogen.sh: Define and use GETTEXT_TOPSRCDIR, to make it + work in VPATH builds. + +2005-02-23 Bruno Haible + + * xsmallpot.sh: Make the temporary directory writable. + +2005-02-23 Bruno Haible + + * xsmallpot.sh: Add srcdir argument. Make it work when + builddir != srcdir. + * Makefile.am (hello-*.pot): Update xsmallpot.sh invocations. + +2005-02-21 Bruno Haible + + * po/vi.po: New file, from Clytie Siddall . + * po/LINGUAS: Add vi. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESFILES): Add the new message catalogs. + +2005-02-11 Bruno Haible + + * po/ga.po: New file, from Kevin Patrick Scannell . + * po/LINGUAS: Add ga. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESFILES): Add the new message catalogs. + +2005-02-06 Bruno Haible + + * hello-*/po/Makefile.am ($(DOMAIN).pot-update): If MSGID_BUGS_ADDRESS + is empty and PACKAGE_BUGREPORT is available, use the latter. + * po/Makefile.am ($(DOMAIN).pot-update): Likewise. + +2005-01-20 Bruno Haible + + * hello-guile/hello.scm: Invoke setlocale. Fix bindtextdomain call. + +2005-01-16 Bruno Haible + + Support for Scheme. + * hello-guile: New subdirectory. + * README: Mention it. + * Makefile.am (EXAMPLESFILES): Add the files in hello-guile. + * po/Makefile.am (POTFILES): Add hello-guile source. + (SMALLPOTS): Add hello-guile.pot. + (hello-guile.pot): New rule. + (SMALLPOFILES_FOR_lang): Add hello-guile elements. + (../hello-guile/po/$(LL).po): New rule. + +2005-01-06 Bruno Haible + + * po/el.po: New file, from Simos Xenitellis . + * po/ru.po: New file, from Pavel Maryanov . + * po/uk.po: New file, from Maxim V. Dziumanenko . + * po/LINGUAS: Add el, ru, uk. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESFILES): Add the new message catalogs. + +2004-09-07 Bruno Haible + + * po/xsmallpot.sh: Keep AC_PROG_* and OBJC lines in configure.in. + * hello-objc/configure.ac: Assign OBJC through AC_SUBST. + * hello-objc-gnome/configure.ac: Likewise. + Needed to avoid error with automake-1.9. + +2004-08-19 Bruno Haible + + * hello-librep/hello.jl.in: Remove no-op comments. + +2004-03-21 Bruno Haible + + * po/es.po: Update from Max de Mendizábal . + * po/sr.po: Update from Aleksandar Jelenak . + +2004-02-24 Bruno Haible + + * hello-csharp*/hello.cs (Hello.Main): Remove workaround for mono bug, + fixed in mono-0.30.1. + +2004-02-24 Bruno Haible + + * hello-csharp*/autogen.sh: Copy also the csharp.m4 file. + +2004-02-02 Bruno Haible + + * hello-*/autoclean.sh, hello-*/m4/Makefile.am: Handle glibc2.m4 too. + +2004-01-29 Bruno Haible + + * gettext-0.14.1 released. + +2004-01-28 Bruno Haible + + * gettext-0.14 released. + +2004-01-28 Bruno Haible + + * po/tr.po: Update from Nilgün Belma Bugüner . + +2004-01-17 Bruno Haible + + * po/Makefile.am (POTFILES): Add hello-csharp, hello-csharp-forms + sources. + (SMALLPOTS): Add hello-csharp.pot, hello-csharp-forms.pot. + (hello-csharp.pot, hello-csharp-forms.pot): New rules. + (SMALLPOFILES_FOR_lang): Add hello-csharp, hello-csharp-forms elements. + (../hello-csharp/po/$(LL).po, ../hello-csharp-forms/po/$(LL).po): New + rules. + * po/mmsmallpo.sh: Use option --force-po. + +2004-01-17 Bruno Haible + + * hello-*/po/Makefile.am: Adapt to changes made in po/Makefile.in.in. + +2004-01-17 Bruno Haible + + * po/af.po: New file, from Ysbeer . + * po/ca.po: Update from Ivan Vilata i Balaguer . + * po/de.po: Update from Karl Eichwalder . + * po/fr.po: Update from Michel Robitaille . + * po/ja.po: Update from Masahito Yamaga . + * po/nl.po: New file, from Elros Cyriatan . + * po/pl.po: Update from Rafał Maszkowski . + * po/sk.po: New file, from Marcel Telka . + * po/sv.po: Update from Jan Djärv . + * po/zh_CN.po: Update from Funda Wang . + * po/LINGUAS: Add af, nl, sk. + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESFILES): Add the new message catalogs. + +2004-01-10 Bruno Haible + + * hello-c++-kde/admin: New directory, from KDE 3.1.4. + * hello-c++-kde/auto*.sh: Don't create/remove the contents of the + admin subdirectory. + * Makefile.am (EXAMPLESFILES): Add hello-c++-kde/admin/*. + +2004-01-10 Bruno Haible + + * hello-c/*, hello-c-gnome/*, hello-objc/*, hello-objc-gnome/*, + hello-c++/*, hello-c++-gnome/*, hello-c++-kde/*: Use the autoconf + infrastructure from gettext-0.13.1, not 0.12.1. + +2004-01-10 Bruno Haible + + * hello-csharp/hello.cs: Work around mono-0.29 CurrentUICulture bug. + * hello-csharp-forms/hello.cs: Likewise. + +2003-12-29 Bruno Haible + + * hello-perl/INSTALL: Mention that libintl-perl-1.09 required. + * hello-perl/hello-1.pl.in, hello-perl/hello-2.pl.in: Inhibit the + automatic UTF-8 conversion in UTF-8 locales with Perl-5.8.0. Thanks to + Guido Flohr. + +2003-12-26 Bruno Haible + + * hello-csharp: New subdirectory. + * hello-csharp-forms: New subdirectory. + * Makefile.am (EXAMPLESFILES): Add the files in hello-csharp and + hello-csharp-forms. + +2003-12-26 Bruno Haible + + * hello-c++-qt/m4/qt.m4: Quote the first argument of AC_DEFUN. + * hello-c++-gnome/m4/gtk.m4, hello-c++-gnome/m4/gtk--.m4: Likewise. + +2003-12-17 Bruno Haible + + * gettext-0.13.1 released. + +2003-12-17 Bruno Haible + + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESFILES): Add the new message catalogs. + +2003-12-09 Bruno Haible + + * hello-smalltalk/hello.st.in: Add workaround against PackageLoader + verbosity. Solution provided by Carey Evans . + * hello-smalltalk/BUGS: Remove file. + * Makefile.am (EXAMPLESFILES): Update. + +2003-12-07 Bruno Haible + + * po/sv.po: New file, from Jan Djärv . + * po/tr.po: New file, from + Nilgün Belma Bugüner . + * po/LINGUAS: Add sv, tr. + +2003-12-07 Bruno Haible + + * hello-perl/hello-1.pl.in: Renamed from hello-perl/hello.pl. Make it + work. + * hello-perl/hello-2.pl.in: New file, from Guido Flohr. + * hello-perl/po/Makefile.am (POTFILES): Update. + (XGETTEXT_OPTIONS): Add options needed for the Locale::TextDomain API. + * hello-perl/configure.ac: Update accordingly. + * hello-perl/Makefile.am: Update accordingly. + * Makefile.am (EXAMPLESFILES): Update. + * po/Makefile.am (POTFILES): Update. + +2003-12-06 Bruno Haible + + * hello-objc-gnustep/po/LocaleAliases: Add many new locales. Fix typo + for EcuadorSpanish. Remove conflicting entries for Indonesian and + Hebrew. + +2003-12-06 Bruno Haible + + * hello-objc-gnustep/autoclean.sh: Also remove the *.lproj directories. + * hello-objc-gnustep/po/GNUmakefile: Include the general rules at the + beginning, not at the end, so that our .SUFFIXES tag has an effect. + ($(ENSTRINGSFILES)): Create the target directory. + +2003-12-06 Bruno Haible + + * hello-*/INSTALL: Update the installation instructions. + * hello-c++-qt/BUGS: New file. + * hello-c++-kde/BUGS: New file. + * hello-objc-gnustep/BUGS: New file. + * hello-smalltalk/BUGS: New file. + * hello-java-awt/BUGS: New file. + * hello-java-swing/BUGS: New file. + * Makefile.am (EXAMPLESFILES): Add them. + +2003-12-02 Bruno Haible + + * Makefile.am (EXTRA_DIST): Don't add the EXAMPLESFILES. + (distdir1): New rule. Install the EXAMPLESFILES after 'update-po'. + +2003-11-30 Bruno Haible + + * gettext-0.13 released. + +2003-11-30 Bruno Haible + + * po/mmsmallpo.sh: Remove the POT-Creation-Date line from the generated + PO file. + * Makefile.am (EXAMPLESFILES): Add hello-pascal/hello.rst. + +2003-11-30 Bruno Haible + + * hello-*/po/LINGUAS: Update. + * Makefile.am (EXAMPLESFILES): Add the new message catalogs. + +2003-11-30 Bruno Haible + + * po/es.po: New file, from Max de Mendizábal . + * po/LINGUAS: Add es. + +2003-11-24 Bruno Haible + + * po/ca.po: New file, from Ivan Vilata i Balaguer . + * po/ro.po: New file, from Eugen Hoanca . + * po/LINGUAS: Add ca, ro. + +2003-11-22 Bruno Haible + + * po/ja.po: New file, from Masahito Yamaga . + * po/LINGUAS: Add ja. + +2003-11-20 Bruno Haible + + * hello-*/configure.ac: Remove AM_NLS invocation. + * po/xsmallpot.sh: Don't keep AM_NLS lines. + +2003-11-19 Bruno Haible + + * po/de.po: Update from Karl Eichwalder . + * po/fr.po: New file, from Michel Robitaille . + * po/pl.po: New file, from Rafał Maszkowski . + * po/sr.po: New file, from Danilo Segan . + * po/zh_CN.po: New file, from Funda Wang . + * po/LINGUAS: Add fr, pl, sr, zh_CN. + +2003-11-15 Bruno Haible + + * hello-c/Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. + * hello-c-gnome/Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. + * hello-c++/Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. + * hello-c++-kde/Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. + * hello-c++-gnome/Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. + * hello-objc/Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. + * hello-objc-gnome/Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. + +2003-11-15 Bruno Haible + + * Makefile.am: New file. + * README: New file. + * installpaths.in: New file. + * hello-c: New subdirectory. + * hello-c-gnome: New subdirectory. + * hello-c++: New subdirectory. + * hello-c++-qt: New subdirectory. + * hello-c++-kde: New subdirectory. + * hello-c++-gnome: New subdirectory. + * hello-objc: New subdirectory. + * hello-objc-gnustep: New subdirectory. + * hello-objc-gnome: New subdirectory. + * hello-sh: New subdirectory. + * hello-python: New subdirectory. + * hello-clisp: New subdirectory. + * hello-librep: New subdirectory. + * hello-smalltalk: New subdirectory. + * hello-java: New subdirectory. + * hello-java-awt: New subdirectory. + * hello-java-swing: New subdirectory. + * hello-gawk: New subdirectory. + * hello-pascal: New subdirectory. + * hello-ycp: New subdirectory. + * hello-tcl: New subdirectory. + * hello-tcl-tk: New subdirectory. + * hello-perl: New subdirectory. + * hello-php: New subdirectory. + diff -Nru gettext-0.19.6/gettext-tools/examples/configure gettext-0.19.7/gettext-tools/examples/configure --- gettext-0.19.6/gettext-tools/examples/configure 2015-09-11 03:04:55.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/configure 2015-12-27 23:09:26.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for gettext-examples 0.19.6. +# Generated by GNU Autoconf 2.69 for gettext-examples 0.19.7. # # Report bugs to . # @@ -580,8 +580,8 @@ # Identity of this package. PACKAGE_NAME='gettext-examples' PACKAGE_TARNAME='gettext-examples' -PACKAGE_VERSION='0.19.6' -PACKAGE_STRING='gettext-examples 0.19.6' +PACKAGE_VERSION='0.19.7' +PACKAGE_STRING='gettext-examples 0.19.7' PACKAGE_BUGREPORT='bug-gnu-gettext@gnu.org' PACKAGE_URL='' @@ -646,6 +646,7 @@ docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -712,6 +713,7 @@ sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -964,6 +966,15 @@ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1101,7 +1112,7 @@ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1214,7 +1225,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures gettext-examples 0.19.6 to adapt to many kinds of systems. +\`configure' configures gettext-examples 0.19.7 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1254,6 +1265,7 @@ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1281,7 +1293,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of gettext-examples 0.19.6:";; + short | recursive ) echo "Configuration of gettext-examples 0.19.7:";; esac cat <<\_ACEOF @@ -1356,7 +1368,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -gettext-examples configure 0.19.6 +gettext-examples configure 0.19.7 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1373,7 +1385,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by gettext-examples $as_me 0.19.6, which was +It was created by gettext-examples $as_me 0.19.7, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2237,7 +2249,7 @@ # Define the identity of the package. PACKAGE='gettext-examples' - VERSION='0.19.6' + VERSION='0.19.7' cat >>confdefs.h <<_ACEOF @@ -3261,7 +3273,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by gettext-examples $as_me 0.19.6, which was +This file was extended by gettext-examples $as_me 0.19.7, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3318,7 +3330,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -gettext-examples config.status 0.19.6 +gettext-examples config.status 0.19.7 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-c/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-c/po/fr.po 2015-09-11 03:25:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-c 0.19.4-rc1\n" +"Project-Id-Version: hello-c 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-c/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-c/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c/po/nb.po 2015-12-27 23:28:47.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-c 0.19-rc1\n" +"Project-Id-Version: hello-c 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.c:30 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-c/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-c/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-c 0.19.4-rc1\n" +"Project-Id-Version: hello-c 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-c/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-c/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-c-0.19.4-rc1\n" +"Project-Id-Version: hello-c-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-c/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-c/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-c 0.18\n" +"Project-Id-Version: hello-c 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-c++/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-c++/po/fr.po 2015-09-11 03:25:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-c++ 0.19.4-rc1\n" +"Project-Id-Version: hello-c++ 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-c++/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-c++/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++/po/nb.po 2015-12-27 23:28:47.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-c++ 0.19-rc1\n" +"Project-Id-Version: hello-c++ 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.cc:39 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-c++/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-c++/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-c++ 0.19.4-rc1\n" +"Project-Id-Version: hello-c++ 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-c++/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-c++/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-c++-0.19.4-rc1\n" +"Project-Id-Version: hello-c++-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-c++/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-c++/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-c++ 0.18\n" +"Project-Id-Version: hello-c++ 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c-gnome/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-c-gnome/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-c-gnome/po/fr.po 2015-09-11 03:25:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c-gnome/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-c-gnome 0.19.4-rc1\n" +"Project-Id-Version: hello-c-gnome 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c-gnome/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-c-gnome/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-c-gnome/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c-gnome/po/nb.po 2015-12-27 23:28:47.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-c-gnome 0.19-rc1\n" +"Project-Id-Version: hello-c-gnome 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.c:46 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c-gnome/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-c-gnome/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-c-gnome/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c-gnome/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-c-gnome 0.19.4-rc1\n" +"Project-Id-Version: hello-c-gnome 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c-gnome/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-c-gnome/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-c-gnome/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c-gnome/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-c-gnome-0.19.4-rc1\n" +"Project-Id-Version: hello-c-gnome-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c-gnome/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-c-gnome/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-c-gnome/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c-gnome/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-c-gnome 0.18\n" +"Project-Id-Version: hello-c-gnome 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-gnome/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-c++-gnome/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-gnome/po/fr.po 2015-09-11 03:25:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-gnome/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-c++-gnome 0.19.4-rc1\n" +"Project-Id-Version: hello-c++-gnome 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-gnome/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-c++-gnome/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-gnome/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-gnome/po/nb.po 2015-12-27 23:28:47.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-c++-gnome 0.19-rc1\n" +"Project-Id-Version: hello-c++-gnome 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.cc:50 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-gnome/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-c++-gnome/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-gnome/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-gnome/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-c++-gnome 0.19.4-rc1\n" +"Project-Id-Version: hello-c++-gnome 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-gnome/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-c++-gnome/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-gnome/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-gnome/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-c++-gnome-0.19.4-rc1\n" +"Project-Id-Version: hello-c++-gnome-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-gnome/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-c++-gnome/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-gnome/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-gnome/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-c++-gnome 0.18\n" +"Project-Id-Version: hello-c++-gnome 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c-gnome3/Makefile.am gettext-0.19.7/gettext-tools/examples/hello-c-gnome3/Makefile.am --- gettext-0.19.6/gettext-tools/examples/hello-c-gnome3/Makefile.am 2015-08-21 07:18:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c-gnome3/Makefile.am 2015-10-13 21:32:17.000000000 +0000 @@ -45,12 +45,11 @@ # processed earlier than the variable substitution below. Otherwise, # the 'msgfmt' command will be required at compile-time. hello.desktop.in: hello.desktop.in.in - $(AM_V_GEN) $(MSGFMT) --desktop --template $< -o $@-t \ - -d $(top_srcdir)/po && mv $@-t $@ + $(AM_V_GEN) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ +# Substitute variables in a Desktop Entry file. hello.desktop: hello.desktop.in - @rm -f $@ $@-t - $(AM_V_GEN) sed -e 's|@bindir[@]|$(bindir)|g' $< > $@-t && mv $@-t $@ + $(AM_V_GEN) sed -e 's|@bindir[@]|$(bindir)|g' $< > $@ CLEANFILES = $(BUILT_SOURCES) hello.desktop $(desktop_DATA) diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c-gnome3/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-c-gnome3/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-c-gnome3/po/fr.po 2015-09-11 03:25:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c-gnome3/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-c-gnome3 0.19.4-rc1\n" +"Project-Id-Version: hello-c-gnome3 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" @@ -20,19 +20,21 @@ "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: hello.c:79 -#, fuzzy, c-format +#, c-format msgid "" "Hello world!\n" "This program is running as process number %d." -msgstr "Ce programme est exécuté en tant que processus numéro %d." +msgstr "" +"Salut le monde !\n" +"Ce programme est exécuté en tant que processus numéro %d." #: hello.c:84 msgid "This is another text" -msgstr "" +msgstr "Ceci est un autre texte" #: hello.c:86 msgid "This is yet another text" -msgstr "" +msgstr "Ceci est encore un autre texte" #: hello.desktop.in.in:4 msgid "Hello" @@ -44,16 +46,16 @@ #: hello.ui:5 msgid "Example Application" -msgstr "Application d'exemple" +msgstr "Application d’exemple" #: hello.ui:33 msgid "Update text" -msgstr "" +msgstr "Actualiser le texte" #: hello.gschema.xml:7 msgid "Use XML markup" -msgstr "" +msgstr "Utiliser le balisage XML" #: hello.gschema.xml:8 msgid "Whether to use XML markup in the text." -msgstr "" +msgstr "De quelle manière utiliser le balisage XML dans le texte." diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c-gnome3/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-c-gnome3/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-c-gnome3/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c-gnome3/po/nb.po 2015-12-27 23:28:47.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-c-gnome3 0.19-rc1\n" +"Project-Id-Version: hello-c-gnome3 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,26 +16,28 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.c:79 -#, fuzzy, c-format +#, c-format msgid "" "Hello world!\n" "This program is running as process number %d." -msgstr "Dette programmet kjører som prosess nummer %d." +msgstr "" +"Hello world!\n" +"Dette programmet kjører som prosess nummer %d." #: hello.c:84 msgid "This is another text" -msgstr "" +msgstr "Dette er en annen tekst" #: hello.c:86 msgid "This is yet another text" -msgstr "" +msgstr "Dette er enda en tekst" #: hello.desktop.in.in:4 msgid "Hello" -msgstr "" +msgstr "Hallo" #: hello.desktop.in.in:5 msgid "Hello, world!" @@ -47,12 +49,12 @@ #: hello.ui:33 msgid "Update text" -msgstr "" +msgstr "Oppdater tekst" #: hello.gschema.xml:7 msgid "Use XML markup" -msgstr "" +msgstr "Bruk XML-formatering" #: hello.gschema.xml:8 msgid "Whether to use XML markup in the text." -msgstr "" +msgstr "Om det skal bruke XML-formatering i teksten" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c-gnome3/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-c-gnome3/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-c-gnome3/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c-gnome3/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-c-gnome3 0.19.4-rc1\n" +"Project-Id-Version: hello-c-gnome3 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" @@ -20,19 +20,21 @@ "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: hello.c:79 -#, fuzzy, c-format +#, c-format msgid "" "Hello world!\n" "This program is running as process number %d." -msgstr "Este programa está executando com número de processo %d." +msgstr "" +"Olá mundo!\n" +"Este programa está executando com número de processo %d." #: hello.c:84 msgid "This is another text" -msgstr "" +msgstr "Este é outro texto" #: hello.c:86 msgid "This is yet another text" -msgstr "" +msgstr "Este também é outro texto" #: hello.desktop.in.in:4 msgid "Hello" @@ -48,12 +50,12 @@ #: hello.ui:33 msgid "Update text" -msgstr "" +msgstr "Atualizar texto" #: hello.gschema.xml:7 msgid "Use XML markup" -msgstr "" +msgstr "Usar marcação XML" #: hello.gschema.xml:8 msgid "Whether to use XML markup in the text." -msgstr "" +msgstr "Se deve ser usada marcação XML no texto." diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c-gnome3/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-c-gnome3/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-c-gnome3/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c-gnome3/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-c-gnome3-0.19.4-rc1\n" +"Project-Id-Version: hello-c-gnome3-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" @@ -18,19 +18,21 @@ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: hello.c:79 -#, fuzzy, c-format +#, c-format msgid "" "Hello world!\n" "This program is running as process number %d." -msgstr "Овај програм се извршава као процес број %d." +msgstr "" +"Здраво свима!\n" +"Овај програм се извршава као процес број %d." #: hello.c:84 msgid "This is another text" -msgstr "" +msgstr "Ово је још један текст" #: hello.c:86 msgid "This is yet another text" -msgstr "" +msgstr "Богами и ово је још један текст" #: hello.desktop.in.in:4 msgid "Hello" @@ -46,12 +48,12 @@ #: hello.ui:33 msgid "Update text" -msgstr "" +msgstr "Опис ажурирања" #: hello.gschema.xml:7 msgid "Use XML markup" -msgstr "" +msgstr "Користи ИксМЛ означавање" #: hello.gschema.xml:8 msgid "Whether to use XML markup in the text." -msgstr "" +msgstr "Да ли ће да користи ИксМЛ означавање у тексту." diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c-gnome3/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-c-gnome3/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-c-gnome3/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c-gnome3/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-c-gnome3 0.18\n" +"Project-Id-Version: hello-c-gnome3 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" @@ -17,23 +17,25 @@ "Content-Transfer-Encoding: 8bit\n" #: hello.c:79 -#, fuzzy, c-format +#, c-format msgid "" "Hello world!\n" "This program is running as process number %d." -msgstr "本程式正在執行,行程編號為 %d。" +msgstr "" +"哈囉,大家好!\n" +"本程式正在執行,行程編號為 %d。" #: hello.c:84 msgid "This is another text" -msgstr "" +msgstr "這是另一段文字" #: hello.c:86 msgid "This is yet another text" -msgstr "" +msgstr "這又是另一段文字" #: hello.desktop.in.in:4 msgid "Hello" -msgstr "" +msgstr "哈囉" #: hello.desktop.in.in:5 msgid "Hello, world!" @@ -41,16 +43,16 @@ #: hello.ui:5 msgid "Example Application" -msgstr "" +msgstr "應用軟體範例" #: hello.ui:33 msgid "Update text" -msgstr "" +msgstr "更新文字" #: hello.gschema.xml:7 msgid "Use XML markup" -msgstr "" +msgstr "使用 XML 標記" #: hello.gschema.xml:8 msgid "Whether to use XML markup in the text." -msgstr "" +msgstr "是否在文字中使用 XML 標記" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-kde/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-c++-kde/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-kde/po/fr.po 2015-09-11 03:25:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-kde/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-c++-kde 0.19.4-rc1\n" +"Project-Id-Version: hello-c++-kde 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-kde/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-c++-kde/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-kde/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-kde/po/nb.po 2015-12-27 23:28:47.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-c++-kde 0.19-rc1\n" +"Project-Id-Version: hello-c++-kde 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.cc:46 msgid "Hello example" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-kde/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-c++-kde/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-kde/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-kde/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-c++-kde 0.19.4-rc1\n" +"Project-Id-Version: hello-c++-kde 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-kde/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-c++-kde/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-kde/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-kde/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-c++-kde-0.19.4-rc1\n" +"Project-Id-Version: hello-c++-kde-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-kde/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-c++-kde/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-kde/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-kde/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-c++-kde 0.18\n" +"Project-Id-Version: hello-c++-kde 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-clisp/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-clisp/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-clisp/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-clisp/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-clisp 0.19.4-rc1\n" +"Project-Id-Version: hello-clisp 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-clisp/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-clisp/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-clisp/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-clisp/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-clisp 0.19-rc1\n" +"Project-Id-Version: hello-clisp 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.lisp.in:11 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-clisp/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-clisp/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-clisp/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-clisp/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-clisp 0.19.4-rc1\n" +"Project-Id-Version: hello-clisp 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-clisp/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-clisp/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-clisp/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-clisp/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-clisp-0.19.4-rc1\n" +"Project-Id-Version: hello-clisp-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-clisp/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-clisp/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-clisp/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-clisp/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-clisp 0.18\n" +"Project-Id-Version: hello-clisp 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-qt/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-c++-qt/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-qt/po/fr.po 2015-09-11 03:25:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-qt/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-c++-qt 0.19.4-rc1\n" +"Project-Id-Version: hello-c++-qt 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-qt/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-c++-qt/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-qt/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-qt/po/nb.po 2015-12-27 23:28:47.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-c++-qt 0.19-rc1\n" +"Project-Id-Version: hello-c++-qt 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.cc:45 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-qt/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-c++-qt/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-qt/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-qt/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-c++-qt 0.19.4-rc1\n" +"Project-Id-Version: hello-c++-qt 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-qt/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-c++-qt/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-qt/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-qt/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-c++-qt-0.19.4-rc1\n" +"Project-Id-Version: hello-c++-qt-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-qt/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-c++-qt/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-qt/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-qt/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-c++-qt 0.18\n" +"Project-Id-Version: hello-c++-qt 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-csharp/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-csharp/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-csharp/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-csharp/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-csharp 0.19.4-rc1\n" +"Project-Id-Version: hello-csharp 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-csharp/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-csharp/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-csharp/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-csharp/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-csharp 0.19-rc1\n" +"Project-Id-Version: hello-csharp 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.cs:14 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-csharp/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-csharp/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-csharp/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-csharp/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-csharp 0.19.4-rc1\n" +"Project-Id-Version: hello-csharp 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-csharp/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-csharp/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-csharp/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-csharp/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-csharp-0.19.4-rc1\n" +"Project-Id-Version: hello-csharp-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-csharp/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-csharp/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-csharp/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-csharp/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-csharp 0.18\n" +"Project-Id-Version: hello-csharp 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-csharp-forms/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-csharp-forms/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-csharp-forms/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-csharp-forms/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-csharp-forms 0.19.4-rc1\n" +"Project-Id-Version: hello-csharp-forms 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-csharp-forms/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-csharp-forms/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-csharp-forms/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-csharp-forms/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-csharp-forms 0.19-rc1\n" +"Project-Id-Version: hello-csharp-forms 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.cs:29 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-csharp-forms/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-csharp-forms/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-csharp-forms/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-csharp-forms/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-csharp-forms 0.19.4-rc1\n" +"Project-Id-Version: hello-csharp-forms 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-csharp-forms/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-csharp-forms/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-csharp-forms/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-csharp-forms/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-csharp-forms-0.19.4-rc1\n" +"Project-Id-Version: hello-csharp-forms-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-csharp-forms/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-csharp-forms/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-csharp-forms/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-csharp-forms/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-csharp-forms 0.18\n" +"Project-Id-Version: hello-csharp-forms 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-wxwidgets/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-c++-wxwidgets/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-wxwidgets/po/fr.po 2015-09-11 03:25:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-wxwidgets/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-c++-wxwidgets 0.19.4-rc1\n" +"Project-Id-Version: hello-c++-wxwidgets 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-wxwidgets/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-c++-wxwidgets/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-wxwidgets/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-wxwidgets/po/nb.po 2015-12-27 23:28:47.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-c++-wxwidgets 0.19-rc1\n" +"Project-Id-Version: hello-c++-wxwidgets 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.cc:68 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-wxwidgets/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-c++-wxwidgets/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-wxwidgets/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-wxwidgets/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-c++-wxwidgets 0.19.4-rc1\n" +"Project-Id-Version: hello-c++-wxwidgets 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-wxwidgets/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-c++-wxwidgets/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-wxwidgets/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-wxwidgets/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-c++-wxwidgets-0.19.4-rc1\n" +"Project-Id-Version: hello-c++-wxwidgets-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-c++-wxwidgets/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-c++-wxwidgets/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-c++-wxwidgets/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-c++-wxwidgets/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-c++-wxwidgets 0.18\n" +"Project-Id-Version: hello-c++-wxwidgets 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-gawk/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-gawk/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-gawk/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-gawk/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-gawk 0.19.4-rc1\n" +"Project-Id-Version: hello-gawk 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-gawk/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-gawk/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-gawk/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-gawk/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-gawk 0.19-rc1\n" +"Project-Id-Version: hello-gawk 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.awk:11 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-gawk/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-gawk/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-gawk/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-gawk/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-gawk 0.19.4-rc1\n" +"Project-Id-Version: hello-gawk 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-gawk/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-gawk/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-gawk/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-gawk/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-gawk-0.19.4-rc1\n" +"Project-Id-Version: hello-gawk-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-gawk/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-gawk/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-gawk/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-gawk/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-gawk 0.18\n" +"Project-Id-Version: hello-gawk 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-guile/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-guile/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-guile/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-guile/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-guile 0.19.4-rc1\n" +"Project-Id-Version: hello-guile 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-guile/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-guile/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-guile/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-guile/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-guile 0.19-rc1\n" +"Project-Id-Version: hello-guile 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.scm:15 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-guile/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-guile/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-guile/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-guile/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-guile 0.19.4-rc1\n" +"Project-Id-Version: hello-guile 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-guile/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-guile/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-guile/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-guile/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-guile-0.19.4-rc1\n" +"Project-Id-Version: hello-guile-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-guile/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-guile/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-guile/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-guile/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-guile 0.18\n" +"Project-Id-Version: hello-guile 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-java/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-java/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-java 0.19.4-rc1\n" +"Project-Id-Version: hello-java 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-java/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-java/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-java 0.19-rc1\n" +"Project-Id-Version: hello-java 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: Hello.java:14 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-java/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-java/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-java 0.19.4-rc1\n" +"Project-Id-Version: hello-java 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-java/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-java/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-java-0.19.4-rc1\n" +"Project-Id-Version: hello-java-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-java/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-java/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-java 0.18\n" +"Project-Id-Version: hello-java 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java-awt/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-java-awt/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-java-awt/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java-awt/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-java-awt 0.19.4-rc1\n" +"Project-Id-Version: hello-java-awt 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java-awt/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-java-awt/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-java-awt/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java-awt/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-java-awt 0.19-rc1\n" +"Project-Id-Version: hello-java-awt 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: Hello.java:23 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java-awt/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-java-awt/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-java-awt/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java-awt/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-java-awt 0.19.4-rc1\n" +"Project-Id-Version: hello-java-awt 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java-awt/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-java-awt/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-java-awt/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java-awt/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-java-awt-0.19.4-rc1\n" +"Project-Id-Version: hello-java-awt-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java-awt/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-java-awt/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-java-awt/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java-awt/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-java-awt 0.18\n" +"Project-Id-Version: hello-java-awt 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java-qtjambi/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-java-qtjambi/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-java-qtjambi/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java-qtjambi/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-java-qtjambi 0.19.4-rc1\n" +"Project-Id-Version: hello-java-qtjambi 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java-qtjambi/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-java-qtjambi/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-java-qtjambi/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java-qtjambi/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-java-qtjambi 0.19-rc1\n" +"Project-Id-Version: hello-java-qtjambi 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: Hello.java:27 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java-qtjambi/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-java-qtjambi/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-java-qtjambi/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java-qtjambi/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-java-qtjambi 0.19.4-rc1\n" +"Project-Id-Version: hello-java-qtjambi 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java-qtjambi/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-java-qtjambi/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-java-qtjambi/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java-qtjambi/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-java-qtjambi-0.19.4-rc1\n" +"Project-Id-Version: hello-java-qtjambi-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java-qtjambi/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-java-qtjambi/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-java-qtjambi/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java-qtjambi/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-java-qtjambi 0.18\n" +"Project-Id-Version: hello-java-qtjambi 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java-swing/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-java-swing/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-java-swing/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java-swing/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-java-swing 0.19.4-rc1\n" +"Project-Id-Version: hello-java-swing 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java-swing/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-java-swing/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-java-swing/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java-swing/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-java-swing 0.19-rc1\n" +"Project-Id-Version: hello-java-swing 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: Hello.java:20 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java-swing/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-java-swing/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-java-swing/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java-swing/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-java-swing 0.19.4-rc1\n" +"Project-Id-Version: hello-java-swing 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java-swing/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-java-swing/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-java-swing/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java-swing/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-java-swing-0.19.4-rc1\n" +"Project-Id-Version: hello-java-swing-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-java-swing/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-java-swing/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-java-swing/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-java-swing/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-java-swing 0.18\n" +"Project-Id-Version: hello-java-swing 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-librep/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-librep/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-librep/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-librep/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-librep 0.19.4-rc1\n" +"Project-Id-Version: hello-librep 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-librep/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-librep/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-librep/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-librep/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-librep 0.19-rc1\n" +"Project-Id-Version: hello-librep 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.jl.in:12 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-librep/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-librep/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-librep/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-librep/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-librep 0.19.4-rc1\n" +"Project-Id-Version: hello-librep 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-librep/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-librep/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-librep/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-librep/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-librep-0.19.4-rc1\n" +"Project-Id-Version: hello-librep-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-librep/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-librep/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-librep/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-librep/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-librep 0.18\n" +"Project-Id-Version: hello-librep 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-objc/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-objc/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-objc/po/fr.po 2015-09-11 03:25:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-objc/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-objc 0.19.4-rc1\n" +"Project-Id-Version: hello-objc 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-objc/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-objc/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-objc/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-objc/po/nb.po 2015-12-27 23:28:47.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-objc 0.19-rc1\n" +"Project-Id-Version: hello-objc 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.m:30 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-objc/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-objc/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-objc/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-objc/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-objc 0.19.4-rc1\n" +"Project-Id-Version: hello-objc 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-objc/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-objc/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-objc/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-objc/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-objc-0.19.4-rc1\n" +"Project-Id-Version: hello-objc-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-objc/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-objc/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-objc/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-objc/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-objc 0.18\n" +"Project-Id-Version: hello-objc 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-objc-gnome/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-objc-gnome/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-objc-gnome/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-objc-gnome/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-objc-gnome 0.19.4-rc1\n" +"Project-Id-Version: hello-objc-gnome 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-objc-gnome/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-objc-gnome/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-objc-gnome/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-objc-gnome/po/nb.po 2015-12-27 23:28:47.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-objc-gnome 0.19-rc1\n" +"Project-Id-Version: hello-objc-gnome 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.m:47 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-objc-gnome/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-objc-gnome/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-objc-gnome/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-objc-gnome/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-objc-gnome 0.19.4-rc1\n" +"Project-Id-Version: hello-objc-gnome 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-objc-gnome/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-objc-gnome/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-objc-gnome/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-objc-gnome/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-objc-gnome-0.19.4-rc1\n" +"Project-Id-Version: hello-objc-gnome-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-objc-gnome/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-objc-gnome/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-objc-gnome/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-objc-gnome/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-objc-gnome 0.18\n" +"Project-Id-Version: hello-objc-gnome 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-objc-gnustep/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-objc-gnustep/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-objc-gnustep/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-objc-gnustep/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-objc-gnustep 0.19.4-rc1\n" +"Project-Id-Version: hello-objc-gnustep 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-objc-gnustep/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-objc-gnustep/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-objc-gnustep/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-objc-gnustep/po/nb.po 2015-12-27 23:28:47.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-objc-gnustep 0.19-rc1\n" +"Project-Id-Version: hello-objc-gnustep 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: Hello.m:49 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-objc-gnustep/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-objc-gnustep/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-objc-gnustep/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-objc-gnustep/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-objc-gnustep 0.19.4-rc1\n" +"Project-Id-Version: hello-objc-gnustep 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-objc-gnustep/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-objc-gnustep/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-objc-gnustep/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-objc-gnustep/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-objc-gnustep-0.19.4-rc1\n" +"Project-Id-Version: hello-objc-gnustep-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-objc-gnustep/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-objc-gnustep/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-objc-gnustep/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-objc-gnustep/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-objc-gnustep 0.18\n" +"Project-Id-Version: hello-objc-gnustep 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-pascal/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-pascal/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-pascal/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-pascal/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-pascal 0.19.4-rc1\n" +"Project-Id-Version: hello-pascal 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-pascal/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-pascal/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-pascal/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-pascal/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-pascal 0.19-rc1\n" +"Project-Id-Version: hello-pascal 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.hello_world msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-pascal/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-pascal/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-pascal/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-pascal/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-pascal 0.19.4-rc1\n" +"Project-Id-Version: hello-pascal 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-pascal/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-pascal/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-pascal/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-pascal/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-pascal-0.19.4-rc1\n" +"Project-Id-Version: hello-pascal-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-pascal/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-pascal/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-pascal/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-pascal/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-pascal 0.18\n" +"Project-Id-Version: hello-pascal 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-perl/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-perl/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-perl/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-perl/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-perl 0.19.4-rc1\n" +"Project-Id-Version: hello-perl 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-perl/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-perl/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-perl/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-perl/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-perl 0.19-rc1\n" +"Project-Id-Version: hello-perl 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello-1.pl.in:17 hello-2.pl.in:12 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-perl/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-perl/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-perl/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-perl/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-perl 0.19.4-rc1\n" +"Project-Id-Version: hello-perl 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-perl/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-perl/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-perl/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-perl/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-perl-0.19.4-rc1\n" +"Project-Id-Version: hello-perl-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-perl/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-perl/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-perl/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-perl/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-perl 0.18\n" +"Project-Id-Version: hello-perl 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-php/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-php/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-php/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-php/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-php 0.19.4-rc1\n" +"Project-Id-Version: hello-php 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-php/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-php/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-php/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-php/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-php 0.19-rc1\n" +"Project-Id-Version: hello-php 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.php:12 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-php/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-php/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-php/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-php/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-php 0.19.4-rc1\n" +"Project-Id-Version: hello-php 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-php/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-php/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-php/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-php/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-php-0.19.4-rc1\n" +"Project-Id-Version: hello-php-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-php/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-php/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-php/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-php/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-php 0.18\n" +"Project-Id-Version: hello-php 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-python/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-python/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-python/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-python/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-python 0.19.4-rc1\n" +"Project-Id-Version: hello-python 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-python/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-python/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-python/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-python/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-python 0.19-rc1\n" +"Project-Id-Version: hello-python 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.py.in:12 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-python/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-python/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-python/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-python/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-python 0.19.4-rc1\n" +"Project-Id-Version: hello-python 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-python/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-python/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-python/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-python/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-python-0.19.4-rc1\n" +"Project-Id-Version: hello-python-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-python/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-python/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-python/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-python/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-python 0.18\n" +"Project-Id-Version: hello-python 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-sh/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-sh/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-sh/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-sh/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-sh 0.19.4-rc1\n" +"Project-Id-Version: hello-sh 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-sh/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-sh/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-sh/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-sh/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-sh 0.19-rc1\n" +"Project-Id-Version: hello-sh 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.sh:14 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-sh/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-sh/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-sh/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-sh/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-sh 0.19.4-rc1\n" +"Project-Id-Version: hello-sh 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-sh/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-sh/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-sh/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-sh/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-sh-0.19.4-rc1\n" +"Project-Id-Version: hello-sh-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-sh/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-sh/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-sh/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-sh/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-sh 0.18\n" +"Project-Id-Version: hello-sh 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-smalltalk/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-smalltalk/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-smalltalk/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-smalltalk/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-smalltalk 0.19.4-rc1\n" +"Project-Id-Version: hello-smalltalk 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-smalltalk/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-smalltalk/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-smalltalk/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-smalltalk/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-smalltalk 0.19-rc1\n" +"Project-Id-Version: hello-smalltalk 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.st.in:31 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-smalltalk/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-smalltalk/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-smalltalk/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-smalltalk/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-smalltalk 0.19.4-rc1\n" +"Project-Id-Version: hello-smalltalk 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-smalltalk/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-smalltalk/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-smalltalk/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-smalltalk/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-smalltalk-0.19.4-rc1\n" +"Project-Id-Version: hello-smalltalk-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-smalltalk/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-smalltalk/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-smalltalk/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-smalltalk/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-smalltalk 0.18\n" +"Project-Id-Version: hello-smalltalk 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-tcl/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-tcl/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-tcl/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-tcl/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-tcl 0.19.4-rc1\n" +"Project-Id-Version: hello-tcl 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-tcl/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-tcl/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-tcl/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-tcl/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-tcl 0.19-rc1\n" +"Project-Id-Version: hello-tcl 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.tcl:11 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-tcl/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-tcl/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-tcl/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-tcl/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-tcl 0.19.4-rc1\n" +"Project-Id-Version: hello-tcl 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-tcl/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-tcl/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-tcl/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-tcl/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-tcl-0.19.4-rc1\n" +"Project-Id-Version: hello-tcl-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-tcl/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-tcl/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-tcl/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-tcl/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-tcl 0.18\n" +"Project-Id-Version: hello-tcl 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-tcl-tk/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-tcl-tk/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-tcl-tk/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-tcl-tk/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-tcl-tk 0.19.4-rc1\n" +"Project-Id-Version: hello-tcl-tk 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-tcl-tk/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-tcl-tk/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-tcl-tk/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-tcl-tk/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-tcl-tk 0.19-rc1\n" +"Project-Id-Version: hello-tcl-tk 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.tcl:13 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-tcl-tk/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-tcl-tk/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-tcl-tk/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-tcl-tk/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-tcl-tk 0.19.4-rc1\n" +"Project-Id-Version: hello-tcl-tk 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-tcl-tk/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-tcl-tk/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-tcl-tk/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-tcl-tk/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-tcl-tk-0.19.4-rc1\n" +"Project-Id-Version: hello-tcl-tk-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-tcl-tk/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-tcl-tk/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-tcl-tk/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-tcl-tk/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-tcl-tk 0.18\n" +"Project-Id-Version: hello-tcl-tk 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-ycp/po/fr.po gettext-0.19.7/gettext-tools/examples/hello-ycp/po/fr.po --- gettext-0.19.6/gettext-tools/examples/hello-ycp/po/fr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-ycp/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: hello-ycp 0.19.4-rc1\n" +"Project-Id-Version: hello-ycp 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-ycp/po/nb.po gettext-0.19.7/gettext-tools/examples/hello-ycp/po/nb.po --- gettext-0.19.6/gettext-tools/examples/hello-ycp/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-ycp/po/nb.po 2015-12-27 23:28:48.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: hello-ycp 0.19-rc1\n" +"Project-Id-Version: hello-ycp 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello.ycp:15 msgid "Hello, world!" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-ycp/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/hello-ycp/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/hello-ycp/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-ycp/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,15 +1,15 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-ycp 0.19.4-rc1\n" +"Project-Id-Version: hello-ycp 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-ycp/po/sr.po gettext-0.19.7/gettext-tools/examples/hello-ycp/po/sr.po --- gettext-0.19.6/gettext-tools/examples/hello-ycp/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-ycp/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,9 +5,9 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: hello-ycp-0.19.4-rc1\n" +"Project-Id-Version: hello-ycp-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" diff -Nru gettext-0.19.6/gettext-tools/examples/hello-ycp/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/hello-ycp/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/hello-ycp/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/hello-ycp/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: hello-ycp 0.18\n" +"Project-Id-Version: hello-ycp 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" diff -Nru gettext-0.19.6/gettext-tools/examples/Makefile.in gettext-0.19.7/gettext-tools/examples/Makefile.in --- gettext-0.19.6/gettext-tools/examples/Makefile.in 2015-09-11 03:04:55.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/Makefile.in 2015-12-27 23:09:26.000000000 +0000 @@ -191,11 +191,12 @@ $(top_srcdir)/../../build-aux/install-sh \ $(top_srcdir)/../../build-aux/missing \ $(top_srcdir)/../../build-aux/mkinstalldirs \ - ../../build-aux/compile ../../build-aux/config.guess \ - ../../build-aux/config.rpath ../../build-aux/config.sub \ - ../../build-aux/install-sh ../../build-aux/ltmain.sh \ - ../../build-aux/missing ../../build-aux/mkinstalldirs \ - ../../build-aux/texinfo.tex ChangeLog README + ../../build-aux/ar-lib ../../build-aux/compile \ + ../../build-aux/config.guess ../../build-aux/config.rpath \ + ../../build-aux/config.sub ../../build-aux/install-sh \ + ../../build-aux/ltmain.sh ../../build-aux/missing \ + ../../build-aux/mkinstalldirs ../../build-aux/texinfo.tex \ + ChangeLog README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -315,6 +316,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru gettext-0.19.6/gettext-tools/examples/po/af.po gettext-0.19.7/gettext-tools/examples/po/af.po --- gettext-0.19.6/gettext-tools/examples/po/af.po 2015-09-11 03:25:20.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/af.po 2015-12-27 23:28:41.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gettext-examples-0.13.1\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2003-12-31 10:30+2\n" "Last-Translator: Ysbeer \n" "Language-Team: Afrikaans \n" @@ -21,15 +21,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -39,9 +38,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Hierdie program loop as prosesnommer %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/ast.po gettext-0.19.7/gettext-tools/examples/po/ast.po --- gettext-0.19.6/gettext-tools/examples/po/ast.po 2015-09-11 03:25:20.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/ast.po 2015-12-27 23:28:41.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gettext-examples-0.17\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2009-12-15 12:16+0100\n" "Last-Translator: Marquinos \n" "Language-Team: Asturian \n" @@ -22,15 +22,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -40,9 +39,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Esti programa ta corriendo como'l procesu nmberu %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/bg.po gettext-0.19.7/gettext-tools/examples/po/bg.po --- gettext-0.19.6/gettext-tools/examples/po/bg.po 2015-09-11 03:25:21.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/bg.po 2015-12-27 23:28:41.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: GNU gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-06-24 08:27+0300\n" "Last-Translator: Roumen Petrov \n" "Language-Team: Bulgarian \n" @@ -21,15 +21,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -39,9 +38,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Програмата е пусната под процес номер %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/ca.po gettext-0.19.7/gettext-tools/examples/po/ca.po --- gettext-0.19.6/gettext-tools/examples/po/ca.po 2015-09-11 03:25:21.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/ca.po 2015-12-27 23:28:42.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-06-24 18:48+0200\n" "Last-Translator: Ivan Vilata i Balaguer \n" "Language-Team: Catalan \n" @@ -22,15 +22,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -40,9 +39,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Aquest programa està corrent amb el número de procés %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/cs.po gettext-0.19.7/gettext-tools/examples/po/cs.po --- gettext-0.19.6/gettext-tools/examples/po/cs.po 2015-09-11 03:25:21.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/cs.po 2015-12-27 23:28:42.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-06-26 08:43+0200\n" "Last-Translator: Marek Černocký \n" "Language-Team: Czech \n" @@ -23,15 +23,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -41,9 +40,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Tento program běží jako proces číslo %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/da.po gettext-0.19.7/gettext-tools/examples/po/da.po --- gettext-0.19.6/gettext-tools/examples/po/da.po 2015-09-11 03:25:21.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/da.po 2015-12-27 23:28:42.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-06-27 12:39+0100\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" @@ -23,15 +23,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -41,9 +40,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Dette program kører som proces nummer %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/de.po gettext-0.19.7/gettext-tools/examples/po/de.po --- gettext-0.19.6/gettext-tools/examples/po/de.po 2015-09-11 03:25:21.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/de.po 2015-12-27 23:28:43.000000000 +0000 @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-06-26 13:05+0200\n" "Last-Translator: Philipp Thomas \n" "Language-Team: German \n" @@ -27,15 +27,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -45,9 +44,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Dieses Programm läuft mit der Prozess-Nummer %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/el.po gettext-0.19.7/gettext-tools/examples/po/el.po --- gettext-0.19.6/gettext-tools/examples/po/el.po 2015-09-11 03:25:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/el.po 2015-12-27 23:28:43.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.14.1\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2005-01-06 18:50+0000\n" "Last-Translator: Simos Xenitellis \n" "Language-Team: Greek \n" @@ -21,15 +21,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -39,9 +38,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Αυτό το πρόγραμμα εκτελείται με αριθμό διεργασίας %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/eo.po gettext-0.19.7/gettext-tools/examples/po/eo.po --- gettext-0.19.6/gettext-tools/examples/po/eo.po 2015-09-11 03:25:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/eo.po 2015-12-27 23:28:43.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.15-pre5\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2006-07-02 19:24+0100\n" "Last-Translator: Edmund GRIMLEY EVANS \n" "Language-Team: Esperanto \n" @@ -21,15 +21,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -39,9 +38,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Ĉi tiu programo rulas kiel procezo kun numero %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/es.po gettext-0.19.7/gettext-tools/examples/po/es.po --- gettext-0.19.6/gettext-tools/examples/po/es.po 2015-09-11 03:25:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/es.po 2015-12-27 23:28:43.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: gettext-examples-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-06-23 22:44+0200\n" "Last-Translator: Antonio Ceballos \n" "Language-Team: Spanish \n" @@ -25,15 +25,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -43,9 +42,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Este programa está corriendo como el proceso número %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/fi.po gettext-0.19.7/gettext-tools/examples/po/fi.po --- gettext-0.19.6/gettext-tools/examples/po/fi.po 2015-09-11 03:25:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/fi.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-09-01 16:59+0300\n" "Last-Translator: Jorma Karvonen \n" "Language-Team: Finnish \n" @@ -24,15 +24,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -42,9 +41,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Tämän ohjelman prosessinumero on %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/fr.po gettext-0.19.7/gettext-tools/examples/po/fr.po --- gettext-0.19.6/gettext-tools/examples/po/fr.po 2015-09-11 03:25:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/fr.po 2015-12-27 23:28:44.000000000 +0000 @@ -8,10 +8,10 @@ # msgid "" msgstr "" -"Project-Id-Version: gettext-examples 0.19.4-rc1\n" +"Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" -"PO-Revision-Date: 2015-03-23 02:34+0100\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" +"PO-Revision-Date: 2015-12-22 23:54+0100\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" @@ -25,15 +25,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -43,27 +42,28 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Ce programme est exécuté en tant que processus numéro %d." #: hello-c-gnome3/hello.c:79 -#, fuzzy, c-format +#, c-format msgid "" "Hello world!\n" "This program is running as process number %d." -msgstr "Ce programme est exécuté en tant que processus numéro %d." +msgstr "" +"Salut le monde !\n" +"Ce programme est exécuté en tant que processus numéro %d." #: hello-c-gnome3/hello.c:84 msgid "This is another text" -msgstr "" +msgstr "Ceci est un autre texte" #: hello-c-gnome3/hello.c:86 msgid "This is yet another text" -msgstr "" +msgstr "Ceci est encore un autre texte" #: hello-c-gnome3/hello.desktop.in.in:4 msgid "Hello" @@ -71,19 +71,19 @@ #: hello-c-gnome3/hello.ui:5 msgid "Example Application" -msgstr "Application d'exemple" +msgstr "Application d’exemple" #: hello-c-gnome3/hello.ui:33 msgid "Update text" -msgstr "" +msgstr "Actualiser le texte" #: hello-c-gnome3/hello.gschema.xml:7 msgid "Use XML markup" -msgstr "" +msgstr "Utiliser le balisage XML" #: hello-c-gnome3/hello.gschema.xml:8 msgid "Whether to use XML markup in the text." -msgstr "" +msgstr "De quelle manière utiliser le balisage XML dans le texte." #: hello-c++-qt/hello.cc:52 hello-c++-kde/hellowindow.cc:49 #: hello-smalltalk/hello.st.in:32 hello-ycp/hello.ycp:19 @@ -125,9 +125,3 @@ #, perl-brace-format msgid "This program is running as process number {pid}." msgstr "Ce programme est exécuté en tant que processus numéro {pid}." - -#~ msgid "Set label sensitive" -#~ msgstr "Sélectionner une étiquette sensible" - -#~ msgid "Whether to set the label sensitive." -#~ msgstr "Que ce soit pour sélectionner l'étiquette sensible." diff -Nru gettext-0.19.6/gettext-tools/examples/po/ga.po gettext-0.19.7/gettext-tools/examples/po/ga.po --- gettext-0.19.6/gettext-tools/examples/po/ga.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/ga.po 2015-12-27 23:28:44.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.14.1\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2005-02-07 12:09-0500\n" "Last-Translator: Kevin Patrick Scannell \n" "Language-Team: Irish \n" @@ -21,15 +21,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -39,9 +38,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "T an clr seo rith mar phriseas %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/gettext-examples.pot gettext-0.19.7/gettext-tools/examples/po/gettext-examples.pot --- gettext-0.19.6/gettext-tools/examples/po/gettext-examples.pot 2015-09-11 03:24:33.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/gettext-examples.pot 2015-12-27 23:28:41.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/gl.po gettext-0.19.7/gettext-tools/examples/po/gl.po --- gettext-0.19.6/gettext-tools/examples/po/gl.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/gl.po 2015-12-27 23:28:45.000000000 +0000 @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.19-rc1\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2014-05-10 16:34+0100\n" "Last-Translator: Leandro Regueiro \n" "Language-Team: Galician \n" @@ -26,15 +26,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -44,9 +43,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Este programa estase executando como o proceso número %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-c-gnome3.pot gettext-0.19.7/gettext-tools/examples/po/hello-c-gnome3.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-c-gnome3.pot 2015-09-11 03:08:01.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-c-gnome3.pot 2015-12-27 23:27:10.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-c-gnome3 package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-c-gnome3 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-c-gnome.pot gettext-0.19.7/gettext-tools/examples/po/hello-c-gnome.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-c-gnome.pot 2015-09-11 03:07:57.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-c-gnome.pot 2015-12-27 23:27:06.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:07+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-c++-gnome.pot gettext-0.19.7/gettext-tools/examples/po/hello-c++-gnome.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-c++-gnome.pot 2015-09-11 03:08:19.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-c++-gnome.pot 2015-12-27 23:27:25.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-c++-kde.pot gettext-0.19.7/gettext-tools/examples/po/hello-c++-kde.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-c++-kde.pot 2015-09-11 03:08:15.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-c++-kde.pot 2015-12-27 23:27:21.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-clisp.pot gettext-0.19.7/gettext-tools/examples/po/hello-clisp.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-clisp.pot 2015-09-11 03:08:40.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-clisp.pot 2015-12-27 23:27:44.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-clisp package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-clisp 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-c.pot gettext-0.19.7/gettext-tools/examples/po/hello-c.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-c.pot 2015-09-11 03:07:53.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-c.pot 2015-12-27 23:27:02.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:07+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-c++.pot gettext-0.19.7/gettext-tools/examples/po/hello-c++.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-c++.pot 2015-09-11 03:08:06.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-c++.pot 2015-12-27 23:27:14.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-c++-qt.pot gettext-0.19.7/gettext-tools/examples/po/hello-c++-qt.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-c++-qt.pot 2015-09-11 03:08:09.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-c++-qt.pot 2015-12-27 23:27:17.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-c++-qt package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-c++-qt 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-csharp-forms.pot gettext-0.19.7/gettext-tools/examples/po/hello-csharp-forms.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-csharp-forms.pot 2015-09-11 03:09:17.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-csharp-forms.pot 2015-12-27 23:28:21.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-csharp-forms package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-csharp-forms 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:09+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-csharp.pot gettext-0.19.7/gettext-tools/examples/po/hello-csharp.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-csharp.pot 2015-09-11 03:09:12.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-csharp.pot 2015-12-27 23:28:16.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-csharp package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-csharp 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:09+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-c++-wxwidgets.pot gettext-0.19.7/gettext-tools/examples/po/hello-c++-wxwidgets.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-c++-wxwidgets.pot 2015-09-11 03:08:22.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-c++-wxwidgets.pot 2015-12-27 23:27:28.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-c++-wxwidgets package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-c++-wxwidgets 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-gawk.pot gettext-0.19.7/gettext-tools/examples/po/hello-gawk.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-gawk.pot 2015-09-11 03:09:20.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-gawk.pot 2015-12-27 23:28:24.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-gawk package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-gawk 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:09+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-guile.pot gettext-0.19.7/gettext-tools/examples/po/hello-guile.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-guile.pot 2015-09-11 03:08:46.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-guile.pot 2015-12-27 23:27:50.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-guile package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-guile 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-java-awt.pot gettext-0.19.7/gettext-tools/examples/po/hello-java-awt.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-java-awt.pot 2015-09-11 03:08:58.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-java-awt.pot 2015-12-27 23:28:02.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-java-awt package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-java-awt 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-java.pot gettext-0.19.7/gettext-tools/examples/po/hello-java.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-java.pot 2015-09-11 03:08:53.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-java.pot 2015-12-27 23:27:57.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-java package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-java 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-java-qtjambi.pot gettext-0.19.7/gettext-tools/examples/po/hello-java-qtjambi.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-java-qtjambi.pot 2015-09-11 03:09:07.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-java-qtjambi.pot 2015-12-27 23:28:12.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-java-qtjambi package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-java-qtjambi 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:09+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-java-swing.pot gettext-0.19.7/gettext-tools/examples/po/hello-java-swing.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-java-swing.pot 2015-09-11 03:09:03.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-java-swing.pot 2015-12-27 23:28:07.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-java-swing package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-java-swing 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:09+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-librep.pot gettext-0.19.7/gettext-tools/examples/po/hello-librep.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-librep.pot 2015-09-11 03:08:43.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-librep.pot 2015-12-27 23:27:47.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-librep package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-librep 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-objc-gnome.pot gettext-0.19.7/gettext-tools/examples/po/hello-objc-gnome.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-objc-gnome.pot 2015-09-11 03:08:31.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-objc-gnome.pot 2015-12-27 23:27:36.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-objc-gnustep.pot gettext-0.19.7/gettext-tools/examples/po/hello-objc-gnustep.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-objc-gnustep.pot 2015-09-11 03:08:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-objc-gnustep.pot 2015-12-27 23:27:32.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the Hello package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Hello \n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-objc.pot gettext-0.19.7/gettext-tools/examples/po/hello-objc.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-objc.pot 2015-09-11 03:08:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-objc.pot 2015-12-27 23:27:32.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-pascal.pot gettext-0.19.7/gettext-tools/examples/po/hello-pascal.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-pascal.pot 2015-09-11 03:09:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-pascal.pot 2015-12-27 23:28:27.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-pascal package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-pascal 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:09+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-perl.pot gettext-0.19.7/gettext-tools/examples/po/hello-perl.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-perl.pot 2015-09-11 03:09:35.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-perl.pot 2015-12-27 23:28:38.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-perl package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-perl 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:09+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-php.pot gettext-0.19.7/gettext-tools/examples/po/hello-php.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-php.pot 2015-09-11 03:09:38.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-php.pot 2015-12-27 23:28:41.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-php package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-php 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:09+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-python.pot gettext-0.19.7/gettext-tools/examples/po/hello-python.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-python.pot 2015-09-11 03:08:37.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-python.pot 2015-12-27 23:27:41.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-python package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-python 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-sh.pot gettext-0.19.7/gettext-tools/examples/po/hello-sh.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-sh.pot 2015-09-11 03:08:34.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-sh.pot 2015-12-27 23:27:38.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-sh package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-sh 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-smalltalk.pot gettext-0.19.7/gettext-tools/examples/po/hello-smalltalk.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-smalltalk.pot 2015-09-11 03:08:48.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-smalltalk.pot 2015-12-27 23:27:52.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-smalltalk package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-smalltalk 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:08+0900\n" +"POT-Creation-Date: 2015-12-28 08:27+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-tcl.pot gettext-0.19.7/gettext-tools/examples/po/hello-tcl.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-tcl.pot 2015-09-11 03:09:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-tcl.pot 2015-12-27 23:28:32.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-tcl package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-tcl 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:09+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-tcl-tk.pot gettext-0.19.7/gettext-tools/examples/po/hello-tcl-tk.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-tcl-tk.pot 2015-09-11 03:09:32.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-tcl-tk.pot 2015-12-27 23:28:35.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-tcl-tk package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-tcl-tk 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:09+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hello-ycp.pot gettext-0.19.7/gettext-tools/examples/po/hello-ycp.pot --- gettext-0.19.6/gettext-tools/examples/po/hello-ycp.pot 2015-09-11 03:09:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hello-ycp.pot 2015-12-27 23:28:30.000000000 +0000 @@ -1,6 +1,6 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Yoyodyne, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the hello-ycp package. # FIRST AUTHOR , YEAR. # #, fuzzy @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: hello-ycp 0\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:09+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff -Nru gettext-0.19.6/gettext-tools/examples/po/hr.po gettext-0.19.7/gettext-tools/examples/po/hr.po --- gettext-0.19.6/gettext-tools/examples/po/hr.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hr.po 2015-12-27 23:28:45.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.18\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2012-07-04 18:38+0200\n" "Last-Translator: Tomislav Krznar \n" "Language-Team: Croatian \n" @@ -23,15 +23,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -41,9 +40,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Ovaj program je pokrenut kao proces broj %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/hu.po gettext-0.19.7/gettext-tools/examples/po/hu.po --- gettext-0.19.6/gettext-tools/examples/po/hu.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/hu.po 2015-12-27 23:28:45.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-06-23 20:31+0200\n" "Last-Translator: Balázs Úr \n" "Language-Team: Hungarian \n" @@ -24,15 +24,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -42,9 +41,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Ez a program a(z) %d folyamatazonosítóval fut." diff -Nru gettext-0.19.6/gettext-tools/examples/po/id.po gettext-0.19.7/gettext-tools/examples/po/id.po --- gettext-0.19.6/gettext-tools/examples/po/id.po 2015-09-11 03:25:23.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/id.po 2015-12-27 23:28:45.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gettext-examples-0.15-pre5\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2006-09-27 20:19+0700\n" "Last-Translator: Tedi Heriyanto \n" "Language-Team: Indonesian \n" @@ -22,15 +22,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -40,9 +39,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Program ini berjalan sebagai proses nomor %d" diff -Nru gettext-0.19.6/gettext-tools/examples/po/it.po gettext-0.19.7/gettext-tools/examples/po/it.po --- gettext-0.19.6/gettext-tools/examples/po/it.po 2015-09-11 03:25:24.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/it.po 2015-12-27 23:28:46.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-08-05 12:18+0100\n" "Last-Translator: Marco Colombo \n" "Language-Team: Italian \n" @@ -21,15 +21,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -39,9 +38,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Questo programma è in esecuzione con numero di processo %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/ja.po gettext-0.19.7/gettext-tools/examples/po/ja.po --- gettext-0.19.6/gettext-tools/examples/po/ja.po 2015-09-11 03:25:24.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/ja.po 2015-12-27 23:28:46.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: GNU gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-06-24 12:14+0900\n" "Last-Translator: Masahito Yamaga \n" "Language-Team: Japanese \n" @@ -21,15 +21,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -39,9 +38,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Υץϥץֹ %d ưƤޤ." diff -Nru gettext-0.19.6/gettext-tools/examples/po/ky.po gettext-0.19.7/gettext-tools/examples/po/ky.po --- gettext-0.19.6/gettext-tools/examples/po/ky.po 2015-09-11 03:25:24.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/ky.po 2015-12-27 23:28:46.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.16.2-pre5\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2007-11-13 16:02+0600\n" "Last-Translator: Ilyas Bakirov \n" "Language-Team: Kirghiz \n" @@ -23,15 +23,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -41,9 +40,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Бул программа %d процесс номери катары иштеп жатат." diff -Nru gettext-0.19.6/gettext-tools/examples/po/lv.po gettext-0.19.7/gettext-tools/examples/po/lv.po --- gettext-0.19.6/gettext-tools/examples/po/lv.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/lv.po 2015-12-27 23:28:47.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gettext-examples-0.17\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2009-07-28 21:26+0100\n" "Last-Translator: Rihards Priedītis \n" "Language-Team: Latvian \n" @@ -25,15 +25,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -43,9 +42,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Šī programma darbojas kā process ar numuru %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/Makefile.in gettext-0.19.7/gettext-tools/examples/po/Makefile.in --- gettext-0.19.6/gettext-tools/examples/po/Makefile.in 2015-09-11 03:04:55.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/Makefile.in 2015-12-27 23:09:26.000000000 +0000 @@ -198,6 +198,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru gettext-0.19.6/gettext-tools/examples/po/ms.po gettext-0.19.7/gettext-tools/examples/po/ms.po --- gettext-0.19.6/gettext-tools/examples/po/ms.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/ms.po 2015-12-27 23:28:47.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-06-25 20:48+0800\n" "Last-Translator: Sharuzzaman Ahmat Raslan \n" "Language-Team: Malay \n" @@ -23,15 +23,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -41,9 +40,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Program ini dilaksanakan sebagai proses bernombor %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/mt.po gettext-0.19.7/gettext-tools/examples/po/mt.po --- gettext-0.19.6/gettext-tools/examples/po/mt.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/mt.po 2015-12-27 23:28:47.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.16.2-pre5\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2008-11-18 17:27+0100\n" "Last-Translator: Clyde Meli \n" "Language-Team: Maltese \n" @@ -22,15 +22,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -40,9 +39,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Dal-programm qed jaħdem taħt il-proċess numru %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/nb.po gettext-0.19.7/gettext-tools/examples/po/nb.po --- gettext-0.19.6/gettext-tools/examples/po/nb.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/nb.po 2015-12-27 23:28:47.000000000 +0000 @@ -2,14 +2,14 @@ # Copyright (C) 2012 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # -# Johnny A. Solbu , 2012-2014 +# Johnny A. Solbu , 2012-2015 # msgid "" msgstr "" -"Project-Id-Version: gettext-examples 0.19-rc1\n" +"Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" -"PO-Revision-Date: 2014-07-22 13:18+0100\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" +"PO-Revision-Date: 2015-09-19 00:04+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb_NO\n" @@ -17,22 +17,21 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.9\n" #: hello-c/hello.c:30 hello-c-gnome/hello.c:46 #: hello-c-gnome3/hello.desktop.in.in:5 hello-c++/hello.cc:39 #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -42,31 +41,32 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Dette programmet kjører som prosess nummer %d." #: hello-c-gnome3/hello.c:79 -#, fuzzy, c-format +#, c-format msgid "" "Hello world!\n" "This program is running as process number %d." -msgstr "Dette programmet kjører som prosess nummer %d." +msgstr "" +"Hello world!\n" +"Dette programmet kjører som prosess nummer %d." #: hello-c-gnome3/hello.c:84 msgid "This is another text" -msgstr "" +msgstr "Dette er en annen tekst" #: hello-c-gnome3/hello.c:86 msgid "This is yet another text" -msgstr "" +msgstr "Dette er enda en tekst" #: hello-c-gnome3/hello.desktop.in.in:4 msgid "Hello" -msgstr "" +msgstr "Hallo" #: hello-c-gnome3/hello.ui:5 msgid "Example Application" @@ -74,15 +74,15 @@ #: hello-c-gnome3/hello.ui:33 msgid "Update text" -msgstr "" +msgstr "Oppdater tekst" #: hello-c-gnome3/hello.gschema.xml:7 msgid "Use XML markup" -msgstr "" +msgstr "Bruk XML-formatering" #: hello-c-gnome3/hello.gschema.xml:8 msgid "Whether to use XML markup in the text." -msgstr "" +msgstr "Om det skal bruke XML-formatering i teksten" #: hello-c++-qt/hello.cc:52 hello-c++-kde/hellowindow.cc:49 #: hello-smalltalk/hello.st.in:32 hello-ycp/hello.ycp:19 diff -Nru gettext-0.19.6/gettext-tools/examples/po/nl.po gettext-0.19.7/gettext-tools/examples/po/nl.po --- gettext-0.19.6/gettext-tools/examples/po/nl.po 2015-09-11 03:25:25.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/nl.po 2015-12-27 23:28:48.000000000 +0000 @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: gettext-examples-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-07-01 21:10+0200\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" @@ -27,15 +27,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -45,9 +44,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Dit programma draait als proces nummer %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/pl.po gettext-0.19.7/gettext-tools/examples/po/pl.po --- gettext-0.19.6/gettext-tools/examples/po/pl.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/pl.po 2015-12-27 23:28:48.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: GNU gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-06-23 22:01+0200\n" "Last-Translator: Rafał Maszkowski \n" "Language-Team: Polish \n" @@ -22,15 +22,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -40,9 +39,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Ten program działa jako proces o numerze %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/pt_BR.po gettext-0.19.7/gettext-tools/examples/po/pt_BR.po --- gettext-0.19.6/gettext-tools/examples/po/pt_BR.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/pt_BR.po 2015-12-27 23:28:49.000000000 +0000 @@ -1,16 +1,16 @@ # Brazilian Portuguese translation for gettext-example -# Copyright (C) 2014 Yoyodyne, Inc. (msgids) -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Yoyodyne, Inc. (msgids) +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gettext package. -# Rafael Ferreira , 2013, 2014. +# Rafael Ferreira , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: gettext-examples 0.19.4-rc1\n" +"Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" -"PO-Revision-Date: 2014-12-10 20:49-0300\n" -"Last-Translator: Rafael Ferreira \n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" +"PO-Revision-Date: 2015-09-15 11:27-0300\n" +"Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" @@ -25,15 +25,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -43,27 +42,28 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Este programa está executando com número de processo %d." #: hello-c-gnome3/hello.c:79 -#, fuzzy, c-format +#, c-format msgid "" "Hello world!\n" "This program is running as process number %d." -msgstr "Este programa está executando com número de processo %d." +msgstr "" +"Olá mundo!\n" +"Este programa está executando com número de processo %d." #: hello-c-gnome3/hello.c:84 msgid "This is another text" -msgstr "" +msgstr "Este é outro texto" #: hello-c-gnome3/hello.c:86 msgid "This is yet another text" -msgstr "" +msgstr "Este também é outro texto" #: hello-c-gnome3/hello.desktop.in.in:4 msgid "Hello" @@ -75,15 +75,15 @@ #: hello-c-gnome3/hello.ui:33 msgid "Update text" -msgstr "" +msgstr "Atualizar texto" #: hello-c-gnome3/hello.gschema.xml:7 msgid "Use XML markup" -msgstr "" +msgstr "Usar marcação XML" #: hello-c-gnome3/hello.gschema.xml:8 msgid "Whether to use XML markup in the text." -msgstr "" +msgstr "Se deve ser usada marcação XML no texto." #: hello-c++-qt/hello.cc:52 hello-c++-kde/hellowindow.cc:49 #: hello-smalltalk/hello.st.in:32 hello-ycp/hello.ycp:19 diff -Nru gettext-0.19.6/gettext-tools/examples/po/pt.po gettext-0.19.7/gettext-tools/examples/po/pt.po --- gettext-0.19.6/gettext-tools/examples/po/pt.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/pt.po 2015-12-27 23:28:48.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.14.5\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2005-11-19 23:08+0000\n" "Last-Translator: Helder Correia \n" "Language-Team: Portuguese \n" @@ -21,15 +21,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -39,9 +38,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Este programa está a ser executado com o número de processo %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/ro.po gettext-0.19.7/gettext-tools/examples/po/ro.po --- gettext-0.19.6/gettext-tools/examples/po/ro.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/ro.po 2015-12-27 23:28:49.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-06-23 23:05+0200\n" "Last-Translator: Mihai Cristescu \n" "Language-Team: Romanian \n" @@ -25,15 +25,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -43,9 +42,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Acest program rulează ca procesul numărul %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/ru.po gettext-0.19.7/gettext-tools/examples/po/ru.po --- gettext-0.19.6/gettext-tools/examples/po/ru.po 2015-09-11 03:25:26.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/ru.po 2015-12-27 23:28:49.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-06-26 08:55+0300\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" @@ -25,15 +25,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -43,9 +42,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Эта программа выполняется как процесс под номером %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/sk.po gettext-0.19.7/gettext-tools/examples/po/sk.po --- gettext-0.19.6/gettext-tools/examples/po/sk.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/sk.po 2015-12-27 23:28:49.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: GNU gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-06-23 20:17+0200\n" "Last-Translator: Marcel Telka \n" "Language-Team: Slovak \n" @@ -21,15 +21,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -39,9 +38,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Tento program beží ako proces s číslom %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/sl.po gettext-0.19.7/gettext-tools/examples/po/sl.po --- gettext-0.19.6/gettext-tools/examples/po/sl.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/sl.po 2015-12-27 23:28:50.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-06-28 10:37+0200\n" "Last-Translator: Primož Peterlin \n" "Language-Team: Slovenian \n" @@ -24,15 +24,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -42,9 +41,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Ta program teče kot proces številka %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/sr.po gettext-0.19.7/gettext-tools/examples/po/sr.po --- gettext-0.19.6/gettext-tools/examples/po/sr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/sr.po 2015-12-27 23:28:50.000000000 +0000 @@ -5,10 +5,10 @@ # Мирослав Николић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: gettext-examples-0.19.4-rc1\n" +"Project-Id-Version: gettext-examples-0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" -"PO-Revision-Date: 2015-04-12 11:08+0200\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" +"PO-Revision-Date: 2015-12-23 19:12+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" @@ -23,15 +23,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -41,27 +40,28 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Овај програм се извршава као процес број %d." #: hello-c-gnome3/hello.c:79 -#, fuzzy, c-format +#, c-format msgid "" "Hello world!\n" "This program is running as process number %d." -msgstr "Овај програм се извршава као процес број %d." +msgstr "" +"Здраво свима!\n" +"Овај програм се извршава као процес број %d." #: hello-c-gnome3/hello.c:84 msgid "This is another text" -msgstr "" +msgstr "Ово је још један текст" #: hello-c-gnome3/hello.c:86 msgid "This is yet another text" -msgstr "" +msgstr "Богами и ово је још један текст" #: hello-c-gnome3/hello.desktop.in.in:4 msgid "Hello" @@ -73,15 +73,15 @@ #: hello-c-gnome3/hello.ui:33 msgid "Update text" -msgstr "" +msgstr "Опис ажурирања" #: hello-c-gnome3/hello.gschema.xml:7 msgid "Use XML markup" -msgstr "" +msgstr "Користи ИксМЛ означавање" #: hello-c-gnome3/hello.gschema.xml:8 msgid "Whether to use XML markup in the text." -msgstr "" +msgstr "Да ли ће да користи ИксМЛ означавање у тексту." #: hello-c++-qt/hello.cc:52 hello-c++-kde/hellowindow.cc:49 #: hello-smalltalk/hello.st.in:32 hello-ycp/hello.ycp:19 diff -Nru gettext-0.19.6/gettext-tools/examples/po/sv.po gettext-0.19.7/gettext-tools/examples/po/sv.po --- gettext-0.19.6/gettext-tools/examples/po/sv.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/sv.po 2015-12-27 23:28:50.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.19.4-rc1\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2014-12-23 09:18+0100\n" "Last-Translator: Jan Djärv \n" "Language-Team: Swedish \n" @@ -20,15 +20,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -38,9 +37,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Detta program kör som process nummer %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/tr.po gettext-0.19.7/gettext-tools/examples/po/tr.po --- gettext-0.19.6/gettext-tools/examples/po/tr.po 2015-09-11 03:25:27.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/tr.po 2015-12-27 23:28:51.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.14-pre1\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2004-01-21 06:17+0300\n" "Last-Translator: Nilgün Belma Bugüner \n" "Language-Team: Turkish \n" @@ -21,15 +21,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -39,9 +38,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Bu yazılım, %d süreç kimliği ile çalışıyor." diff -Nru gettext-0.19.6/gettext-tools/examples/po/uk.po gettext-0.19.7/gettext-tools/examples/po/uk.po --- gettext-0.19.6/gettext-tools/examples/po/uk.po 2015-09-11 03:25:28.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/uk.po 2015-12-27 23:28:51.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-06-23 20:51+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" @@ -25,15 +25,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -43,9 +42,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Ця програма виконується як процес з номером %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/vi.po gettext-0.19.7/gettext-tools/examples/po/vi.po --- gettext-0.19.6/gettext-tools/examples/po/vi.po 2015-09-11 03:25:28.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/vi.po 2015-12-27 23:28:51.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-06-30 08:00+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" @@ -27,15 +27,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -45,9 +44,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "Chương trình này đang chạy với mã số tiến trình %d." diff -Nru gettext-0.19.6/gettext-tools/examples/po/zh_CN.po gettext-0.19.7/gettext-tools/examples/po/zh_CN.po --- gettext-0.19.6/gettext-tools/examples/po/zh_CN.po 2015-09-11 03:25:28.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/zh_CN.po 2015-12-27 23:28:51.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2015-09-01 09:53中国标准时间\n" "Last-Translator: Ji ZhengYu \n" "Language-Team: Chinese (simplified) \n" @@ -22,15 +22,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -40,9 +39,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "此程序正以进程号 %d 运行。" diff -Nru gettext-0.19.6/gettext-tools/examples/po/zh_HK.po gettext-0.19.7/gettext-tools/examples/po/zh_HK.po --- gettext-0.19.6/gettext-tools/examples/po/zh_HK.po 2015-09-11 03:25:28.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/zh_HK.po 2015-12-27 23:28:52.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: gettext-examples 0.15-pre5\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" "PO-Revision-Date: 2006-07-05 15:40+0800\n" "Last-Translator: Abel Cheung \n" "Language-Team: Chinese (Hong Kong) \n" @@ -20,15 +20,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -38,9 +37,8 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "本程式正在執行中,進程編號為 %d。" diff -Nru gettext-0.19.6/gettext-tools/examples/po/zh_TW.po gettext-0.19.7/gettext-tools/examples/po/zh_TW.po --- gettext-0.19.6/gettext-tools/examples/po/zh_TW.po 2015-09-11 03:25:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/examples/po/zh_TW.po 2015-12-27 23:28:52.000000000 +0000 @@ -2,14 +2,14 @@ # Copyright (C) 2009 Yoyodyne, Inc. (msgids) # This file is distributed under the same license as the gettext package. # Abel Cheung , 2005. -# Wei-Lun Chao , 2013. +# Wei-Lun Chao , 2013, 2015. # msgid "" msgstr "" -"Project-Id-Version: gettext-examples 0.18\n" +"Project-Id-Version: gettext-examples 0.19.4.73\n" "Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n" -"POT-Creation-Date: 2015-09-11 12:24+0900\n" -"PO-Revision-Date: 2013-09-03 13:00+0800\n" +"POT-Creation-Date: 2015-12-28 08:28+0900\n" +"PO-Revision-Date: 2015-10-08 13:00+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" @@ -22,15 +22,14 @@ #: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42 #: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68 #: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49 -#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 -#: hello-python/hello.py.in:12 hello-clisp/hello.lisp.in:11 -#: hello-librep/hello.jl.in:12 hello-guile/hello.scm:15 -#: hello-smalltalk/hello.st.in:31 hello-java/Hello.java:14 -#: hello-java-awt/Hello.java:23 hello-java-swing/Hello.java:20 -#: hello-java-qtjambi/Hello.java:27 hello-csharp/hello.cs:14 -#: hello-csharp-forms/hello.cs:29 hello-gawk/hello.awk:11 -#: hello-pascal/hello.hello_world hello-ycp/hello.ycp:15 -#: hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 +#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12 +#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12 +#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31 +#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23 +#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27 +#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29 +#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world +#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13 #: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12 #: hello-php/hello.php:12 msgid "Hello, world!" @@ -40,47 +39,48 @@ #: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71 #: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58 #: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14 -#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as -#: hello-tcl/hello.tcl:12 hello-tcl-tk/hello.tcl:16 -#: hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 +#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12 +#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14 #, php-format msgid "This program is running as process number %d." msgstr "本程式正在執行,行程編號為 %d。" #: hello-c-gnome3/hello.c:79 -#, fuzzy, c-format +#, c-format msgid "" "Hello world!\n" "This program is running as process number %d." -msgstr "本程式正在執行,行程編號為 %d。" +msgstr "" +"哈囉,大家好!\n" +"本程式正在執行,行程編號為 %d。" #: hello-c-gnome3/hello.c:84 msgid "This is another text" -msgstr "" +msgstr "這是另一段文字" #: hello-c-gnome3/hello.c:86 msgid "This is yet another text" -msgstr "" +msgstr "這又是另一段文字" #: hello-c-gnome3/hello.desktop.in.in:4 msgid "Hello" -msgstr "" +msgstr "哈囉" #: hello-c-gnome3/hello.ui:5 msgid "Example Application" -msgstr "" +msgstr "應用軟體範例" #: hello-c-gnome3/hello.ui:33 msgid "Update text" -msgstr "" +msgstr "更新文字" #: hello-c-gnome3/hello.gschema.xml:7 msgid "Use XML markup" -msgstr "" +msgstr "使用 XML 標記" #: hello-c-gnome3/hello.gschema.xml:8 msgid "Whether to use XML markup in the text." -msgstr "" +msgstr "是否在文字中使用 XML 標記" #: hello-c++-qt/hello.cc:52 hello-c++-kde/hellowindow.cc:49 #: hello-smalltalk/hello.st.in:32 hello-ycp/hello.ycp:19 diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/acl-internal.c gettext-0.19.7/gettext-tools/gnulib-lib/acl-internal.c --- gettext-0.19.6/gettext-tools/gnulib-lib/acl-internal.c 2015-09-11 03:03:51.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/acl-internal.c 2015-12-27 23:08:27.000000000 +0000 @@ -1,4 +1,4 @@ -/* Test whether a file has a nontrivial access control list. +/* Test whether a file has a nontrivial ACL. -*- coding: utf-8 -*- Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc. diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/acl-internal.h gettext-0.19.7/gettext-tools/gnulib-lib/acl-internal.h --- gettext-0.19.6/gettext-tools/gnulib-lib/acl-internal.h 2015-09-11 03:03:51.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/acl-internal.h 2015-12-27 23:08:27.000000000 +0000 @@ -1,4 +1,4 @@ -/* Internal implementation of access control lists. +/* Internal implementation of access control lists. -*- coding: utf-8 -*- Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc. diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/binary-io.c gettext-0.19.7/gettext-tools/gnulib-lib/binary-io.c --- gettext-0.19.6/gettext-tools/gnulib-lib/binary-io.c 2015-09-11 03:03:52.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/binary-io.c 2015-12-27 23:08:27.000000000 +0000 @@ -1,3 +1,4 @@ #include #define BINARY_IO_INLINE _GL_EXTERN_INLINE #include "binary-io.h" +typedef int dummy; diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/c-ctype.c gettext-0.19.7/gettext-tools/gnulib-lib/c-ctype.c --- gettext-0.19.6/gettext-tools/gnulib-lib/c-ctype.c 2015-09-11 03:03:52.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/c-ctype.c 2015-12-27 23:08:27.000000000 +0000 @@ -1,395 +1,3 @@ -/* Character handling in C locale. - - Copyright 2000-2003, 2006, 2009-2015 Free Software Foundation, Inc. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3 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 General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, see . */ - #include - -/* Specification. */ -#define NO_C_CTYPE_MACROS +#define C_CTYPE_INLINE _GL_EXTERN_INLINE #include "c-ctype.h" - -/* The function isascii is not locale dependent. Its use in EBCDIC is - questionable. */ -bool -c_isascii (int c) -{ - return (c >= 0x00 && c <= 0x7f); -} - -bool -c_isalnum (int c) -{ -#if C_CTYPE_CONSECUTIVE_DIGITS \ - && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII - return ((c >= '0' && c <= '9') - || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z')); -#else - return ((c >= '0' && c <= '9') - || (c >= 'A' && c <= 'Z') - || (c >= 'a' && c <= 'z')); -#endif -#else - switch (c) - { - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isalpha (int c) -{ -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII - return ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'); -#else - return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')); -#endif -#else - switch (c) - { - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isblank (int c) -{ - return (c == ' ' || c == '\t'); -} - -bool -c_iscntrl (int c) -{ -#if C_CTYPE_ASCII - return ((c & ~0x1f) == 0 || c == 0x7f); -#else - switch (c) - { - case ' ': case '!': case '"': case '#': case '$': case '%': - case '&': case '\'': case '(': case ')': case '*': case '+': - case ',': case '-': case '.': case '/': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case ':': case ';': case '<': case '=': case '>': case '?': - case '@': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case '[': case '\\': case ']': case '^': case '_': case '`': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - case '{': case '|': case '}': case '~': - return 0; - default: - return 1; - } -#endif -} - -bool -c_isdigit (int c) -{ -#if C_CTYPE_CONSECUTIVE_DIGITS - return (c >= '0' && c <= '9'); -#else - switch (c) - { - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - return 1; - default: - return 0; - } -#endif -} - -bool -c_islower (int c) -{ -#if C_CTYPE_CONSECUTIVE_LOWERCASE - return (c >= 'a' && c <= 'z'); -#else - switch (c) - { - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isgraph (int c) -{ -#if C_CTYPE_ASCII - return (c >= '!' && c <= '~'); -#else - switch (c) - { - case '!': case '"': case '#': case '$': case '%': case '&': - case '\'': case '(': case ')': case '*': case '+': case ',': - case '-': case '.': case '/': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case ':': case ';': case '<': case '=': case '>': case '?': - case '@': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case '[': case '\\': case ']': case '^': case '_': case '`': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - case '{': case '|': case '}': case '~': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isprint (int c) -{ -#if C_CTYPE_ASCII - return (c >= ' ' && c <= '~'); -#else - switch (c) - { - case ' ': case '!': case '"': case '#': case '$': case '%': - case '&': case '\'': case '(': case ')': case '*': case '+': - case ',': case '-': case '.': case '/': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case ':': case ';': case '<': case '=': case '>': case '?': - case '@': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case '[': case '\\': case ']': case '^': case '_': case '`': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - case '{': case '|': case '}': case '~': - return 1; - default: - return 0; - } -#endif -} - -bool -c_ispunct (int c) -{ -#if C_CTYPE_ASCII - return ((c >= '!' && c <= '~') - && !((c >= '0' && c <= '9') - || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'))); -#else - switch (c) - { - case '!': case '"': case '#': case '$': case '%': case '&': - case '\'': case '(': case ')': case '*': case '+': case ',': - case '-': case '.': case '/': - case ':': case ';': case '<': case '=': case '>': case '?': - case '@': - case '[': case '\\': case ']': case '^': case '_': case '`': - case '{': case '|': case '}': case '~': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isspace (int c) -{ - return (c == ' ' || c == '\t' - || c == '\n' || c == '\v' || c == '\f' || c == '\r'); -} - -bool -c_isupper (int c) -{ -#if C_CTYPE_CONSECUTIVE_UPPERCASE - return (c >= 'A' && c <= 'Z'); -#else - switch (c) - { - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isxdigit (int c) -{ -#if C_CTYPE_CONSECUTIVE_DIGITS \ - && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII - return ((c >= '0' && c <= '9') - || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'F')); -#else - return ((c >= '0' && c <= '9') - || (c >= 'A' && c <= 'F') - || (c >= 'a' && c <= 'f')); -#endif -#else - switch (c) - { - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - return 1; - default: - return 0; - } -#endif -} - -int -c_tolower (int c) -{ -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE - return (c >= 'A' && c <= 'Z' ? c - 'A' + 'a' : c); -#else - switch (c) - { - case 'A': return 'a'; - case 'B': return 'b'; - case 'C': return 'c'; - case 'D': return 'd'; - case 'E': return 'e'; - case 'F': return 'f'; - case 'G': return 'g'; - case 'H': return 'h'; - case 'I': return 'i'; - case 'J': return 'j'; - case 'K': return 'k'; - case 'L': return 'l'; - case 'M': return 'm'; - case 'N': return 'n'; - case 'O': return 'o'; - case 'P': return 'p'; - case 'Q': return 'q'; - case 'R': return 'r'; - case 'S': return 's'; - case 'T': return 't'; - case 'U': return 'u'; - case 'V': return 'v'; - case 'W': return 'w'; - case 'X': return 'x'; - case 'Y': return 'y'; - case 'Z': return 'z'; - default: return c; - } -#endif -} - -int -c_toupper (int c) -{ -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE - return (c >= 'a' && c <= 'z' ? c - 'a' + 'A' : c); -#else - switch (c) - { - case 'a': return 'A'; - case 'b': return 'B'; - case 'c': return 'C'; - case 'd': return 'D'; - case 'e': return 'E'; - case 'f': return 'F'; - case 'g': return 'G'; - case 'h': return 'H'; - case 'i': return 'I'; - case 'j': return 'J'; - case 'k': return 'K'; - case 'l': return 'L'; - case 'm': return 'M'; - case 'n': return 'N'; - case 'o': return 'O'; - case 'p': return 'P'; - case 'q': return 'Q'; - case 'r': return 'R'; - case 's': return 'S'; - case 't': return 'T'; - case 'u': return 'U'; - case 'v': return 'V'; - case 'w': return 'W'; - case 'x': return 'X'; - case 'y': return 'Y'; - case 'z': return 'Z'; - default: return c; - } -#endif -} diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/c-ctype.h gettext-0.19.7/gettext-tools/gnulib-lib/c-ctype.h --- gettext-0.19.6/gettext-tools/gnulib-lib/c-ctype.h 2015-09-11 03:03:52.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/c-ctype.h 2015-12-27 23:08:27.000000000 +0000 @@ -25,6 +25,13 @@ #include +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif +_GL_INLINE_HEADER_BEGIN +#ifndef C_CTYPE_INLINE +# define C_CTYPE_INLINE _GL_INLINE +#endif #ifdef __cplusplus extern "C" { @@ -39,38 +46,6 @@ characters. */ -/* Check whether the ASCII optimizations apply. */ - -/* ANSI C89 (and ISO C99 5.2.1.3 too) already guarantees that - '0', '1', ..., '9' have consecutive integer values. */ -#define C_CTYPE_CONSECUTIVE_DIGITS 1 - -#if ('A' <= 'Z') \ - && ('A' + 1 == 'B') && ('B' + 1 == 'C') && ('C' + 1 == 'D') \ - && ('D' + 1 == 'E') && ('E' + 1 == 'F') && ('F' + 1 == 'G') \ - && ('G' + 1 == 'H') && ('H' + 1 == 'I') && ('I' + 1 == 'J') \ - && ('J' + 1 == 'K') && ('K' + 1 == 'L') && ('L' + 1 == 'M') \ - && ('M' + 1 == 'N') && ('N' + 1 == 'O') && ('O' + 1 == 'P') \ - && ('P' + 1 == 'Q') && ('Q' + 1 == 'R') && ('R' + 1 == 'S') \ - && ('S' + 1 == 'T') && ('T' + 1 == 'U') && ('U' + 1 == 'V') \ - && ('V' + 1 == 'W') && ('W' + 1 == 'X') && ('X' + 1 == 'Y') \ - && ('Y' + 1 == 'Z') -#define C_CTYPE_CONSECUTIVE_UPPERCASE 1 -#endif - -#if ('a' <= 'z') \ - && ('a' + 1 == 'b') && ('b' + 1 == 'c') && ('c' + 1 == 'd') \ - && ('d' + 1 == 'e') && ('e' + 1 == 'f') && ('f' + 1 == 'g') \ - && ('g' + 1 == 'h') && ('h' + 1 == 'i') && ('i' + 1 == 'j') \ - && ('j' + 1 == 'k') && ('k' + 1 == 'l') && ('l' + 1 == 'm') \ - && ('m' + 1 == 'n') && ('n' + 1 == 'o') && ('o' + 1 == 'p') \ - && ('p' + 1 == 'q') && ('q' + 1 == 'r') && ('r' + 1 == 's') \ - && ('s' + 1 == 't') && ('t' + 1 == 'u') && ('u' + 1 == 'v') \ - && ('v' + 1 == 'w') && ('w' + 1 == 'x') && ('x' + 1 == 'y') \ - && ('y' + 1 == 'z') -#define C_CTYPE_CONSECUTIVE_LOWERCASE 1 -#endif - #if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ @@ -96,11 +71,84 @@ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126) /* The character set is ASCII or one of its variants or extensions, not EBCDIC. Testing the value of '\n' and '\r' is not relevant. */ -#define C_CTYPE_ASCII 1 +# define C_CTYPE_ASCII 1 +#elif ! (' ' == '\x40' && '0' == '\xf0' \ + && 'A' == '\xc1' && 'J' == '\xd1' && 'S' == '\xe2' \ + && 'a' == '\x81' && 'j' == '\x91' && 's' == '\xa2') +# error "Only ASCII and EBCDIC are supported" #endif +#if 'A' < 0 +# error "EBCDIC and char is signed -- not supported" +#endif + +/* Cases for control characters. */ + +#define _C_CTYPE_CNTRL \ + case '\a': case '\b': case '\f': case '\n': \ + case '\r': case '\t': case '\v': \ + _C_CTYPE_OTHER_CNTRL + +/* ASCII control characters other than those with \-letter escapes. */ + +#if C_CTYPE_ASCII +# define _C_CTYPE_OTHER_CNTRL \ + case '\x00': case '\x01': case '\x02': case '\x03': \ + case '\x04': case '\x05': case '\x06': case '\x0e': \ + case '\x0f': case '\x10': case '\x11': case '\x12': \ + case '\x13': case '\x14': case '\x15': case '\x16': \ + case '\x17': case '\x18': case '\x19': case '\x1a': \ + case '\x1b': case '\x1c': case '\x1d': case '\x1e': \ + case '\x1f': case '\x7f' +#else + /* Use EBCDIC code page 1047's assignments for ASCII control chars; + assume all EBCDIC code pages agree about these assignments. */ +# define _C_CTYPE_OTHER_CNTRL \ + case '\x00': case '\x01': case '\x02': case '\x03': \ + case '\x07': case '\x0e': case '\x0f': case '\x10': \ + case '\x11': case '\x12': case '\x13': case '\x18': \ + case '\x19': case '\x1c': case '\x1d': case '\x1e': \ + case '\x1f': case '\x26': case '\x27': case '\x2d': \ + case '\x2e': case '\x32': case '\x37': case '\x3c': \ + case '\x3d': case '\x3f' +#endif + +/* Cases for lowercase hex letters, and lowercase letters, all offset by N. */ + +#define _C_CTYPE_LOWER_A_THRU_F_N(n) \ + case 'a' + (n): case 'b' + (n): case 'c' + (n): case 'd' + (n): \ + case 'e' + (n): case 'f' + (n) +#define _C_CTYPE_LOWER_N(n) \ + _C_CTYPE_LOWER_A_THRU_F_N(n): \ + case 'g' + (n): case 'h' + (n): case 'i' + (n): case 'j' + (n): \ + case 'k' + (n): case 'l' + (n): case 'm' + (n): case 'n' + (n): \ + case 'o' + (n): case 'p' + (n): case 'q' + (n): case 'r' + (n): \ + case 's' + (n): case 't' + (n): case 'u' + (n): case 'v' + (n): \ + case 'w' + (n): case 'x' + (n): case 'y' + (n): case 'z' + (n) + +/* Cases for hex letters, digits, lower, punct, and upper. */ + +#define _C_CTYPE_A_THRU_F \ + _C_CTYPE_LOWER_A_THRU_F_N (0): \ + _C_CTYPE_LOWER_A_THRU_F_N ('A' - 'a') +#define _C_CTYPE_DIGIT \ + case '0': case '1': case '2': case '3': \ + case '4': case '5': case '6': case '7': \ + case '8': case '9' +#define _C_CTYPE_LOWER _C_CTYPE_LOWER_N (0) +#define _C_CTYPE_PUNCT \ + case '!': case '"': case '#': case '$': \ + case '%': case '&': case '\'': case '(': \ + case ')': case '*': case '+': case ',': \ + case '-': case '.': case '/': case ':': \ + case ';': case '<': case '=': case '>': \ + case '?': case '@': case '[': case '\\': \ + case ']': case '^': case '_': case '`': \ + case '{': case '|': case '}': case '~' +#define _C_CTYPE_UPPER _C_CTYPE_LOWER_N ('A' - 'a') + -/* Function declarations. */ +/* Function definitions. */ /* Unlike the functions in , which require an argument in the range of the 'unsigned char' type, the functions here operate on values that are @@ -117,179 +165,202 @@ if (c_isalpha (*s)) ... */ -extern bool c_isascii (int c) _GL_ATTRIBUTE_CONST; /* not locale dependent */ - -extern bool c_isalnum (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isalpha (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isblank (int c) _GL_ATTRIBUTE_CONST; -extern bool c_iscntrl (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isdigit (int c) _GL_ATTRIBUTE_CONST; -extern bool c_islower (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isgraph (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isprint (int c) _GL_ATTRIBUTE_CONST; -extern bool c_ispunct (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isspace (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isupper (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isxdigit (int c) _GL_ATTRIBUTE_CONST; - -extern int c_tolower (int c) _GL_ATTRIBUTE_CONST; -extern int c_toupper (int c) _GL_ATTRIBUTE_CONST; - - -#if (defined __GNUC__ && !defined __STRICT_ANSI__ && defined __OPTIMIZE__ \ - && !defined __OPTIMIZE_SIZE__ && !defined NO_C_CTYPE_MACROS) - -/* ASCII optimizations. */ - -#undef c_isascii -#define c_isascii(c) \ - ({ int __c = (c); \ - (__c >= 0x00 && __c <= 0x7f); \ - }) +C_CTYPE_INLINE bool +c_isalnum (int c) +{ + switch (c) + { + _C_CTYPE_DIGIT: + _C_CTYPE_LOWER: + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_DIGITS \ - && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII -#undef c_isalnum -#define c_isalnum(c) \ - ({ int __c = (c); \ - ((__c >= '0' && __c <= '9') \ - || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z')); \ - }) -#else -#undef c_isalnum -#define c_isalnum(c) \ - ({ int __c = (c); \ - ((__c >= '0' && __c <= '9') \ - || (__c >= 'A' && __c <= 'Z') \ - || (__c >= 'a' && __c <= 'z')); \ - }) -#endif -#endif +C_CTYPE_INLINE bool +c_isalpha (int c) +{ + switch (c) + { + _C_CTYPE_LOWER: + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII -#undef c_isalpha -#define c_isalpha(c) \ - ({ int __c = (c); \ - ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z'); \ - }) -#else -#undef c_isalpha -#define c_isalpha(c) \ - ({ int __c = (c); \ - ((__c >= 'A' && __c <= 'Z') || (__c >= 'a' && __c <= 'z')); \ - }) -#endif -#endif +/* The function isascii is not locale dependent. + Its use in EBCDIC is questionable. */ +C_CTYPE_INLINE bool +c_isascii (int c) +{ + switch (c) + { + case ' ': + _C_CTYPE_CNTRL: + _C_CTYPE_DIGIT: + _C_CTYPE_LOWER: + _C_CTYPE_PUNCT: + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#undef c_isblank -#define c_isblank(c) \ - ({ int __c = (c); \ - (__c == ' ' || __c == '\t'); \ - }) +C_CTYPE_INLINE bool +c_isblank (int c) +{ + return c == ' ' || c == '\t'; +} -#if C_CTYPE_ASCII -#undef c_iscntrl -#define c_iscntrl(c) \ - ({ int __c = (c); \ - ((__c & ~0x1f) == 0 || __c == 0x7f); \ - }) -#endif +C_CTYPE_INLINE bool +c_iscntrl (int c) +{ + switch (c) + { + _C_CTYPE_CNTRL: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_DIGITS -#undef c_isdigit -#define c_isdigit(c) \ - ({ int __c = (c); \ - (__c >= '0' && __c <= '9'); \ - }) -#endif +C_CTYPE_INLINE bool +c_isdigit (int c) +{ + switch (c) + { + _C_CTYPE_DIGIT: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_LOWERCASE -#undef c_islower -#define c_islower(c) \ - ({ int __c = (c); \ - (__c >= 'a' && __c <= 'z'); \ - }) -#endif +C_CTYPE_INLINE bool +c_isgraph (int c) +{ + switch (c) + { + _C_CTYPE_DIGIT: + _C_CTYPE_LOWER: + _C_CTYPE_PUNCT: + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#if C_CTYPE_ASCII -#undef c_isgraph -#define c_isgraph(c) \ - ({ int __c = (c); \ - (__c >= '!' && __c <= '~'); \ - }) -#endif +C_CTYPE_INLINE bool +c_islower (int c) +{ + switch (c) + { + _C_CTYPE_LOWER: + return true; + default: + return false; + } +} -#if C_CTYPE_ASCII -#undef c_isprint -#define c_isprint(c) \ - ({ int __c = (c); \ - (__c >= ' ' && __c <= '~'); \ - }) -#endif +C_CTYPE_INLINE bool +c_isprint (int c) +{ + switch (c) + { + case ' ': + _C_CTYPE_DIGIT: + _C_CTYPE_LOWER: + _C_CTYPE_PUNCT: + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#if C_CTYPE_ASCII -#undef c_ispunct -#define c_ispunct(c) \ - ({ int _c = (c); \ - (c_isgraph (_c) && ! c_isalnum (_c)); \ - }) -#endif +C_CTYPE_INLINE bool +c_ispunct (int c) +{ + switch (c) + { + _C_CTYPE_PUNCT: + return true; + default: + return false; + } +} -#undef c_isspace -#define c_isspace(c) \ - ({ int __c = (c); \ - (__c == ' ' || __c == '\t' \ - || __c == '\n' || __c == '\v' || __c == '\f' || __c == '\r'); \ - }) - -#if C_CTYPE_CONSECUTIVE_UPPERCASE -#undef c_isupper -#define c_isupper(c) \ - ({ int __c = (c); \ - (__c >= 'A' && __c <= 'Z'); \ - }) -#endif +C_CTYPE_INLINE bool +c_isspace (int c) +{ + switch (c) + { + case ' ': case '\t': case '\n': case '\v': case '\f': case '\r': + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_DIGITS \ - && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII -#undef c_isxdigit -#define c_isxdigit(c) \ - ({ int __c = (c); \ - ((__c >= '0' && __c <= '9') \ - || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'F')); \ - }) -#else -#undef c_isxdigit -#define c_isxdigit(c) \ - ({ int __c = (c); \ - ((__c >= '0' && __c <= '9') \ - || (__c >= 'A' && __c <= 'F') \ - || (__c >= 'a' && __c <= 'f')); \ - }) -#endif -#endif +C_CTYPE_INLINE bool +c_isupper (int c) +{ + switch (c) + { + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#undef c_tolower -#define c_tolower(c) \ - ({ int __c = (c); \ - (__c >= 'A' && __c <= 'Z' ? __c - 'A' + 'a' : __c); \ - }) -#undef c_toupper -#define c_toupper(c) \ - ({ int __c = (c); \ - (__c >= 'a' && __c <= 'z' ? __c - 'a' + 'A' : __c); \ - }) -#endif +C_CTYPE_INLINE bool +c_isxdigit (int c) +{ + switch (c) + { + _C_CTYPE_DIGIT: + _C_CTYPE_A_THRU_F: + return true; + default: + return false; + } +} -#endif /* optimizing for speed */ +C_CTYPE_INLINE int +c_tolower (int c) +{ + switch (c) + { + _C_CTYPE_UPPER: + return c - 'A' + 'a'; + default: + return c; + } +} +C_CTYPE_INLINE int +c_toupper (int c) +{ + switch (c) + { + _C_CTYPE_LOWER: + return c - 'a' + 'A'; + default: + return c; + } +} #ifdef __cplusplus } #endif +_GL_INLINE_HEADER_END + #endif /* C_CTYPE_H */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/copy-acl.c gettext-0.19.7/gettext-tools/gnulib-lib/copy-acl.c --- gettext-0.19.6/gettext-tools/gnulib-lib/copy-acl.c 2015-09-11 03:03:52.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/copy-acl.c 2015-12-27 23:08:28.000000000 +0000 @@ -1,4 +1,4 @@ -/* copy-acl.c - copy access control list from one file to another file +/* Copy access control list from one file to file. -*- coding: utf-8 -*- Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc. diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/copy-file.c gettext-0.19.7/gettext-tools/gnulib-lib/copy-file.c --- gettext-0.19.6/gettext-tools/gnulib-lib/copy-file.c 2015-09-11 03:03:52.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/copy-file.c 2015-12-27 23:08:28.000000000 +0000 @@ -101,6 +101,7 @@ } free (buf); + buf = NULL; /* To avoid double free in error case. */ #if !USE_ACL if (close (dest_fd) < 0) @@ -174,6 +175,7 @@ error_src: close (src_fd); error: + free (buf); return err; } diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/c-strcaseeq.h gettext-0.19.7/gettext-tools/gnulib-lib/c-strcaseeq.h --- gettext-0.19.6/gettext-tools/gnulib-lib/c-strcaseeq.h 2015-09-11 03:03:52.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/c-strcaseeq.h 2015-12-27 23:08:27.000000000 +0000 @@ -33,9 +33,6 @@ # if C_CTYPE_ASCII # define CASEEQ(other,upper) \ (c_isupper (upper) ? ((other) & ~0x20) == (upper) : (other) == (upper)) -# elif C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -# define CASEEQ(other,upper) \ - (c_isupper (upper) ? (other) == (upper) || (other) == (upper) - 'A' + 'a' : (other) == (upper)) # else # define CASEEQ(other,upper) \ (c_toupper (other) == (upper)) diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/get-permissions.c gettext-0.19.7/gettext-tools/gnulib-lib/get-permissions.c --- gettext-0.19.6/gettext-tools/gnulib-lib/get-permissions.c 2015-09-11 03:03:52.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/get-permissions.c 2015-12-27 23:08:28.000000000 +0000 @@ -1,4 +1,4 @@ -/* get-permissions.c - get permissions of a file +/* Get permissions of a file. -*- coding: utf-8 -*- Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc. diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/gl_list.h gettext-0.19.7/gettext-tools/gnulib-lib/gl_list.h --- gettext-0.19.6/gettext-tools/gnulib-lib/gl_list.h 2015-09-11 03:03:52.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/gl_list.h 2015-12-27 23:08:28.000000000 +0000 @@ -1,4 +1,4 @@ -/* Abstract sequential list data type. +/* Abstract sequential list data type. -*- coding: utf-8 -*- Copyright (C) 2006-2015 Free Software Foundation, Inc. Written by Bruno Haible , 2006. diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/ignore-value.h gettext-0.19.7/gettext-tools/gnulib-lib/ignore-value.h --- gettext-0.19.6/gettext-tools/gnulib-lib/ignore-value.h 2015-09-11 03:03:52.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/ignore-value.h 2015-12-27 23:08:28.000000000 +0000 @@ -1,4 +1,4 @@ -/* ignore a function return without a compiler warning +/* ignore a function return without a compiler warning. -*- coding: utf-8 -*- Copyright (C) 2008-2015 Free Software Foundation, Inc. diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/intprops.h gettext-0.19.7/gettext-tools/gnulib-lib/intprops.h --- gettext-0.19.6/gettext-tools/gnulib-lib/intprops.h 2015-09-11 03:03:52.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/intprops.h 2015-12-27 23:08:28.000000000 +0000 @@ -22,8 +22,7 @@ #include -/* Return an integer value, converted to the same type as the integer - expression E after integer type promotion. V is the unconverted value. */ +/* Return a value with the common real type of E and V and the value of V. */ #define _GL_INT_CONVERT(e, v) (0 * (e) + (v)) /* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see @@ -48,12 +47,12 @@ /* True if the signed integer expression E uses two's complement. */ #define _GL_INT_TWOS_COMPLEMENT(e) (~ _GL_INT_CONVERT (e, 0) == -1) -/* True if the arithmetic type T is signed. */ +/* True if the real type T is signed. */ #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) -/* Return 1 if the integer expression E, after integer promotion, has - a signed type. */ -#define _GL_INT_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) +/* Return 1 if the real expression E, after promotion, has a + signed or floating type. */ +#define EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) /* Minimum and maximum values for integer types and expressions. These @@ -76,11 +75,11 @@ /* The maximum and minimum values for the type of the expression E, after integer promotion. E should not have side effects. */ #define _GL_INT_MINIMUM(e) \ - (_GL_INT_SIGNED (e) \ + (EXPR_SIGNED (e) \ ? - _GL_INT_TWOS_COMPLEMENT (e) - _GL_SIGNED_INT_MAXIMUM (e) \ : _GL_INT_CONVERT (e, 0)) #define _GL_INT_MAXIMUM(e) \ - (_GL_INT_SIGNED (e) \ + (EXPR_SIGNED (e) \ ? _GL_SIGNED_INT_MAXIMUM (e) \ : _GL_INT_NEGATE_CONVERT (e, 1)) #define _GL_SIGNED_INT_MAXIMUM(e) \ @@ -263,22 +262,29 @@ : (a) % - (b)) \ == 0) - -/* Integer overflow checks. +/* Check for integer overflow, and report low order bits of answer. The INT__OVERFLOW macros return 1 if the corresponding C operators might not yield numerically correct answers due to arithmetic overflow. - They work correctly on all known practical hosts, and do not rely + The INT__WRAPV macros also store the low-order bits of the answer. + These macros work correctly on all known practical hosts, and do not rely on undefined behavior due to signed arithmetic overflow. - Example usage: + Example usage, assuming A and B are long int: - long int i = ...; - long int j = ...; - if (INT_MULTIPLY_OVERFLOW (i, j)) - printf ("multiply would overflow"); + if (INT_MULTIPLY_OVERFLOW (a, b)) + printf ("result would overflow\n"); else - printf ("product is %ld", i * j); + printf ("result is %ld (no overflow)\n", a * b); + + Example usage with WRAPV flavor: + + long int result; + bool overflow = INT_MULTIPLY_WRAPV (a, b, &result); + printf ("result is %ld (%s)\n", result, + overflow ? "after overflow" : "no overflow"); + + Restrictions on these macros: These macros do not check for all possible numerical problems or undefined or unspecified behavior: they do not check for division @@ -287,6 +293,9 @@ These macros may evaluate their arguments zero or multiple times, so the arguments should not have side effects. + The WRAPV macros are not constant expressions. They support only + +, binary -, and *. The result type must be signed. + These macros are tuned for their last argument being a constant. Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B, @@ -317,4 +326,104 @@ _GL_INT_MINIMUM (0 * (b) + (a)), \ _GL_INT_MAXIMUM (0 * (b) + (a))) +/* Compute A + B, A - B, A * B, respectively, storing the result into *R. + Return 1 if the result overflows. See above for restrictions. */ +#define INT_ADD_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, +, __builtin_add_overflow, INT_ADD_OVERFLOW) +#define INT_SUBTRACT_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, -, __builtin_sub_overflow, INT_SUBTRACT_OVERFLOW) +#define INT_MULTIPLY_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, *, __builtin_mul_overflow, INT_MULTIPLY_OVERFLOW) + +#ifndef __has_builtin +# define __has_builtin(x) 0 +#endif + +/* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 + https://llvm.org/bugs/show_bug.cgi?id=25390 + For now, assume all versions of GCC-like compilers generate bogus + warnings for _Generic. This matters only for older compilers that + lack __builtin_add_overflow. */ +#if __GNUC__ +# define _GL__GENERIC_BOGUS 1 +#else +# define _GL__GENERIC_BOGUS 0 +#endif + +/* Store A B into *R, where OP specifies the operation. + BUILTIN is the builtin operation, and OVERFLOW the overflow predicate. + See above for restrictions. */ +#if 5 <= __GNUC__ || __has_builtin (__builtin_add_overflow) +# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) builtin (a, b, r) +#elif 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS +# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) \ + (_Generic \ + (*(r), \ + signed char: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned char, \ + signed char, SCHAR_MIN, SCHAR_MAX), \ + short int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned short int, \ + short int, SHRT_MIN, SHRT_MAX), \ + int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX), \ + long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX), \ + long long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX))) +#else +# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) \ + (sizeof *(r) == sizeof (signed char) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned char, \ + signed char, SCHAR_MIN, SCHAR_MAX) \ + : sizeof *(r) == sizeof (short int) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned short int, \ + short int, SHRT_MIN, SHRT_MAX) \ + : sizeof *(r) == sizeof (int) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX) \ + : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow)) +# ifdef LLONG_MAX +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + (sizeof *(r) == sizeof (long int) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX)) +# else +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX)) +# endif +#endif + +/* Store the low-order bits of A B into *R, where the operation + is given by OP. Use the unsigned type UT for calculation to avoid + overflow problems. *R's type is T, with extremal values TMIN and + TMAX. T must be a signed integer type. */ +#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \ + (sizeof ((a) op (b)) < sizeof (t) \ + ? _GL_INT_OP_CALC1 ((t) (a), (t) (b), r, op, overflow, ut, t, tmin, tmax) \ + : _GL_INT_OP_CALC1 (a, b, r, op, overflow, ut, t, tmin, tmax)) +#define _GL_INT_OP_CALC1(a, b, r, op, overflow, ut, t, tmin, tmax) \ + ((overflow (a, b) \ + || (EXPR_SIGNED ((a) op (b)) && ((a) op (b)) < (tmin)) \ + || (tmax) < ((a) op (b))) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t, tmin, tmax), 1) \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t, tmin, tmax), 0)) + +/* Return A B, where the operation is given by OP. Use the + unsigned type UT for calculation to avoid overflow problems. + Convert the result to type T without overflow by subtracting TMIN + from large values before converting, and adding it afterwards. + Compilers can optimize all the operations except OP. */ +#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t, tmin, tmax) \ + (((ut) (a) op (ut) (b)) <= (tmax) \ + ? (t) ((ut) (a) op (ut) (b)) \ + : ((t) (((ut) (a) op (ut) (b)) - (tmin)) + (tmin))) + #endif /* _GL_INTPROPS_H */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/isinf.c gettext-0.19.7/gettext-tools/gnulib-lib/isinf.c --- gettext-0.19.6/gettext-tools/gnulib-lib/isinf.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/isinf.c 2015-12-27 23:08:28.000000000 +0000 @@ -0,0 +1,39 @@ +/* Test for positive or negative infinity. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, see . */ + +/* Written by Ben Pfaff , 2008. */ + +#include + +#include + +int +gl_isinff (float x) +{ + return x < -FLT_MAX || x > FLT_MAX; +} + +int +gl_isinfd (double x) +{ + return x < -DBL_MAX || x > DBL_MAX; +} + +int +gl_isinfl (long double x) +{ + return x < -LDBL_MAX || x > LDBL_MAX; +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/isnan.c gettext-0.19.7/gettext-tools/gnulib-lib/isnan.c --- gettext-0.19.6/gettext-tools/gnulib-lib/isnan.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/isnan.c 2015-12-27 23:08:28.000000000 +0000 @@ -0,0 +1,189 @@ +/* Test for NaN that does not need libm. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2007. */ + +#include + +/* Specification. */ +#ifdef USE_LONG_DOUBLE +/* Specification found in math.h or isnanl-nolibm.h. */ +extern int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST; +#elif ! defined USE_FLOAT +/* Specification found in math.h or isnand-nolibm.h. */ +extern int rpl_isnand (double x); +#else /* defined USE_FLOAT */ +/* Specification found in math.h or isnanf-nolibm.h. */ +extern int rpl_isnanf (float x); +#endif + +#include +#include + +#include "float+.h" + +#ifdef USE_LONG_DOUBLE +# define FUNC rpl_isnanl +# define DOUBLE long double +# define MAX_EXP LDBL_MAX_EXP +# define MIN_EXP LDBL_MIN_EXP +# if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT +# define KNOWN_EXPBIT0_LOCATION +# define EXPBIT0_WORD LDBL_EXPBIT0_WORD +# define EXPBIT0_BIT LDBL_EXPBIT0_BIT +# endif +# define SIZE SIZEOF_LDBL +# define L_(literal) literal##L +#elif ! defined USE_FLOAT +# define FUNC rpl_isnand +# define DOUBLE double +# define MAX_EXP DBL_MAX_EXP +# define MIN_EXP DBL_MIN_EXP +# if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT +# define KNOWN_EXPBIT0_LOCATION +# define EXPBIT0_WORD DBL_EXPBIT0_WORD +# define EXPBIT0_BIT DBL_EXPBIT0_BIT +# endif +# define SIZE SIZEOF_DBL +# define L_(literal) literal +#else /* defined USE_FLOAT */ +# define FUNC rpl_isnanf +# define DOUBLE float +# define MAX_EXP FLT_MAX_EXP +# define MIN_EXP FLT_MIN_EXP +# if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT +# define KNOWN_EXPBIT0_LOCATION +# define EXPBIT0_WORD FLT_EXPBIT0_WORD +# define EXPBIT0_BIT FLT_EXPBIT0_BIT +# endif +# define SIZE SIZEOF_FLT +# define L_(literal) literal##f +#endif + +#define EXP_MASK ((MAX_EXP - MIN_EXP) | 7) + +#define NWORDS \ + ((sizeof (DOUBLE) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { DOUBLE value; unsigned int word[NWORDS]; } memory_double; + +/* Most hosts nowadays use IEEE floating point, so they use IEC 60559 + representations, have infinities and NaNs, and do not trap on + exceptions. Define IEEE_FLOATING_POINT if this host is one of the + typical ones. The C11 macro __STDC_IEC_559__ is close to what is + wanted here, but is not quite right because this file does not require + all the features of C11 Annex F (and does not require C11 at all, + for that matter). */ + +#define IEEE_FLOATING_POINT (FLT_RADIX == 2 && FLT_MANT_DIG == 24 \ + && FLT_MIN_EXP == -125 && FLT_MAX_EXP == 128) + +int +FUNC (DOUBLE x) +{ +#if defined KNOWN_EXPBIT0_LOCATION && IEEE_FLOATING_POINT +# if defined USE_LONG_DOUBLE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE + /* Special CPU dependent code is needed to treat bit patterns outside the + IEEE 754 specification (such as Pseudo-NaNs, Pseudo-Infinities, + Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals) as NaNs. + These bit patterns are: + - exponent = 0x0001..0x7FFF, mantissa bit 63 = 0, + - exponent = 0x0000, mantissa bit 63 = 1. + The NaN bit pattern is: + - exponent = 0x7FFF, mantissa >= 0x8000000000000001. */ + memory_double m; + unsigned int exponent; + + m.value = x; + exponent = (m.word[EXPBIT0_WORD] >> EXPBIT0_BIT) & EXP_MASK; +# ifdef WORDS_BIGENDIAN + /* Big endian: EXPBIT0_WORD = 0, EXPBIT0_BIT = 16. */ + if (exponent == 0) + return 1 & (m.word[0] >> 15); + else if (exponent == EXP_MASK) + return (((m.word[0] ^ 0x8000U) << 16) | m.word[1] | (m.word[2] >> 16)) != 0; + else + return 1 & ~(m.word[0] >> 15); +# else + /* Little endian: EXPBIT0_WORD = 2, EXPBIT0_BIT = 0. */ + if (exponent == 0) + return (m.word[1] >> 31); + else if (exponent == EXP_MASK) + return ((m.word[1] ^ 0x80000000U) | m.word[0]) != 0; + else + return (m.word[1] >> 31) ^ 1; +# endif +# else + /* Be careful to not do any floating-point operation on x, such as x == x, + because x may be a signaling NaN. */ +# if defined __SUNPRO_C || defined __ICC || defined _MSC_VER \ + || defined __DECC || defined __TINYC__ \ + || (defined __sgi && !defined __GNUC__) + /* The Sun C 5.0, Intel ICC 10.0, Microsoft Visual C/C++ 9.0, Compaq (ex-DEC) + 6.4, and TinyCC compilers don't recognize the initializers as constant + expressions. The Compaq compiler also fails when constant-folding + 0.0 / 0.0 even when constant-folding is not required. The Microsoft + Visual C/C++ compiler also fails when constant-folding 1.0 / 0.0 even + when constant-folding is not required. The SGI MIPSpro C compiler + complains about "floating-point operation result is out of range". */ + static DOUBLE zero = L_(0.0); + memory_double nan; + DOUBLE plus_inf = L_(1.0) / zero; + DOUBLE minus_inf = -L_(1.0) / zero; + nan.value = zero / zero; +# else + static memory_double nan = { L_(0.0) / L_(0.0) }; + static DOUBLE plus_inf = L_(1.0) / L_(0.0); + static DOUBLE minus_inf = -L_(1.0) / L_(0.0); +# endif + { + memory_double m; + + /* A NaN can be recognized through its exponent. But exclude +Infinity and + -Infinity, which have the same exponent. */ + m.value = x; + if (((m.word[EXPBIT0_WORD] ^ nan.word[EXPBIT0_WORD]) + & (EXP_MASK << EXPBIT0_BIT)) + == 0) + return (memcmp (&m.value, &plus_inf, SIZE) != 0 + && memcmp (&m.value, &minus_inf, SIZE) != 0); + else + return 0; + } +# endif +#else + /* The configuration did not find sufficient information, or does + not use IEEE floating point. Give up about the signaling NaNs; + handle only the quiet NaNs. */ + if (x == x) + { +# if defined USE_LONG_DOUBLE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE + /* Detect any special bit patterns that pass ==; see comment above. */ + memory_double m1; + memory_double m2; + + memset (&m1.value, 0, SIZE); + memset (&m2.value, 0, SIZE); + m1.value = x; + m2.value = x + (x ? 0.0L : -0.0L); + if (memcmp (&m1.value, &m2.value, SIZE) != 0) + return 1; +# endif + return 0; + } + else + return 1; +#endif +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/isnand.c gettext-0.19.7/gettext-tools/gnulib-lib/isnand.c --- gettext-0.19.6/gettext-tools/gnulib-lib/isnand.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/isnand.c 2015-12-27 23:08:28.000000000 +0000 @@ -0,0 +1,19 @@ +/* Test for NaN that does not need libm. + Copyright (C) 2008-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2008. */ + +#include "isnan.c" diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/isnand-nolibm.h gettext-0.19.7/gettext-tools/gnulib-lib/isnand-nolibm.h --- gettext-0.19.6/gettext-tools/gnulib-lib/isnand-nolibm.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/isnand-nolibm.h 2015-12-27 23:08:28.000000000 +0000 @@ -0,0 +1,33 @@ +/* Test for NaN that does not need libm. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#if HAVE_ISNAND_IN_LIBC +/* Get declaration of isnan macro. */ +# include +# if __GNUC__ >= 4 + /* GCC 4.0 and newer provides three built-ins for isnan. */ +# undef isnand +# define isnand(x) __builtin_isnan ((double)(x)) +# else +# undef isnand +# define isnand(x) isnan ((double)(x)) +# endif +#else +/* Test whether X is a NaN. */ +# undef isnand +# define isnand rpl_isnand +extern int isnand (double x); +#endif diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/isnanf.c gettext-0.19.7/gettext-tools/gnulib-lib/isnanf.c --- gettext-0.19.6/gettext-tools/gnulib-lib/isnanf.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/isnanf.c 2015-12-27 23:08:28.000000000 +0000 @@ -0,0 +1,20 @@ +/* Test for NaN that does not need libm. + Copyright (C) 2007, 2009-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2007. */ + +#define USE_FLOAT +#include "isnan.c" diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/isnanf-nolibm.h gettext-0.19.7/gettext-tools/gnulib-lib/isnanf-nolibm.h --- gettext-0.19.6/gettext-tools/gnulib-lib/isnanf-nolibm.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/isnanf-nolibm.h 2015-12-27 23:08:28.000000000 +0000 @@ -0,0 +1,40 @@ +/* Test for NaN that does not need libm. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#if HAVE_ISNANF_IN_LIBC +/* Get declaration of isnan macro or (older) isnanf function. */ +# include +# if __GNUC__ >= 4 + /* GCC 4.0 and newer provides three built-ins for isnan. */ +# undef isnanf +# define isnanf(x) __builtin_isnanf ((float)(x)) +# elif defined isnan +# undef isnanf +# define isnanf(x) isnan ((float)(x)) +# else + /* Get declaration of isnanf(), if not declared in . */ +# if defined __sgi + /* We can't include , because it conflicts with our definition of + isnand. Therefore declare isnanf separately. */ +extern int isnanf (float x); +# endif +# endif +#else +/* Test whether X is a NaN. */ +# undef isnanf +# define isnanf rpl_isnanf +extern int isnanf (float x); +#endif diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/isnanl.c gettext-0.19.7/gettext-tools/gnulib-lib/isnanl.c --- gettext-0.19.6/gettext-tools/gnulib-lib/isnanl.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/isnanl.c 2015-12-27 23:08:28.000000000 +0000 @@ -0,0 +1,20 @@ +/* Test for NaN that does not need libm. + Copyright (C) 2007, 2009-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2007. */ + +#define USE_LONG_DOUBLE +#include "isnan.c" diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/isnanl-nolibm.h gettext-0.19.7/gettext-tools/gnulib-lib/isnanl-nolibm.h --- gettext-0.19.6/gettext-tools/gnulib-lib/isnanl-nolibm.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/isnanl-nolibm.h 2015-12-27 23:08:28.000000000 +0000 @@ -0,0 +1,33 @@ +/* Test for NaN that does not need libm. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#if HAVE_ISNANL_IN_LIBC +/* Get declaration of isnan macro or (older) isnanl function. */ +# include +# if __GNUC__ >= 4 + /* GCC 4.0 and newer provides three built-ins for isnan. */ +# undef isnanl +# define isnanl(x) __builtin_isnanl ((long double)(x)) +# elif defined isnan +# undef isnanl +# define isnanl(x) isnan ((long double)(x)) +# endif +#else +/* Test whether X is a NaN. */ +# undef isnanl +# define isnanl rpl_isnanl +extern int isnanl (long double x); +#endif diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/buf.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/buf.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/buf.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/buf.c 2015-12-23 07:08:27.000000000 +0000 @@ -0,0 +1,1345 @@ +/* + * buf.c: memory buffers for libxml2 + * + * new buffer structures and entry points to simplify the maintainance + * of libxml2 and ensure we keep good control over memory allocations + * and stay 64 bits clean. + * The new entry point use the xmlBufPtr opaque structure and + * xmlBuf...() counterparts to the old xmlBuf...() functions + * + * See Copyright for the status of this software. + * + * daniel@veillard.com + */ + +#define IN_LIBXML +#include "libxml.h" + +#include /* for memset() only ! */ +#include +#ifdef HAVE_CTYPE_H +#include +#endif +#ifdef HAVE_STDLIB_H +#include +#endif + +#include +#include +#include +#include /* for XML_MAX_TEXT_LENGTH */ +#include "buf.h" + +#define WITH_BUFFER_COMPAT + +/** + * xmlBuf: + * + * A buffer structure. The base of the structure is somehow compatible + * with struct _xmlBuffer to limit risks on application which accessed + * directly the input->buf->buffer structures. + */ + +struct _xmlBuf { + xmlChar *content; /* The buffer content UTF8 */ + unsigned int compat_use; /* for binary compatibility */ + unsigned int compat_size; /* for binary compatibility */ + xmlBufferAllocationScheme alloc; /* The realloc method */ + xmlChar *contentIO; /* in IO mode we may have a different base */ + size_t use; /* The buffer size used */ + size_t size; /* The buffer size */ + xmlBufferPtr buffer; /* wrapper for an old buffer */ + int error; /* an error code if a failure occured */ +}; + +#ifdef WITH_BUFFER_COMPAT +/* + * Macro for compatibility with xmlBuffer to be used after an xmlBuf + * is updated. This makes sure the compat fields are updated too. + */ +#define UPDATE_COMPAT(buf) \ + if (buf->size < INT_MAX) buf->compat_size = buf->size; \ + else buf->compat_size = INT_MAX; \ + if (buf->use < INT_MAX) buf->compat_use = buf->use; \ + else buf->compat_use = INT_MAX; + +/* + * Macro for compatibility with xmlBuffer to be used in all the xmlBuf + * entry points, it checks that the compat fields have not been modified + * by direct call to xmlBuffer function from code compiled before 2.9.0 . + */ +#define CHECK_COMPAT(buf) \ + if (buf->size != (size_t) buf->compat_size) \ + if (buf->compat_size < INT_MAX) \ + buf->size = buf->compat_size; \ + if (buf->use != (size_t) buf->compat_use) \ + if (buf->compat_use < INT_MAX) \ + buf->use = buf->compat_use; + +#else /* ! WITH_BUFFER_COMPAT */ +#define UPDATE_COMPAT(buf) +#define CHECK_COMPAT(buf) +#endif /* WITH_BUFFER_COMPAT */ + +/** + * xmlBufMemoryError: + * @extra: extra informations + * + * Handle an out of memory condition + * To be improved... + */ +static void +xmlBufMemoryError(xmlBufPtr buf, const char *extra) +{ + __xmlSimpleError(XML_FROM_BUFFER, XML_ERR_NO_MEMORY, NULL, NULL, extra); + if ((buf) && (buf->error == 0)) + buf->error = XML_ERR_NO_MEMORY; +} + +/** + * xmlBufOverflowError: + * @extra: extra informations + * + * Handle a buffer overflow error + * To be improved... + */ +static void +xmlBufOverflowError(xmlBufPtr buf, const char *extra) +{ + __xmlSimpleError(XML_FROM_BUFFER, XML_BUF_OVERFLOW, NULL, NULL, extra); + if ((buf) && (buf->error == 0)) + buf->error = XML_BUF_OVERFLOW; +} + + +/** + * xmlBufCreate: + * + * routine to create an XML buffer. + * returns the new structure. + */ +xmlBufPtr +xmlBufCreate(void) { + xmlBufPtr ret; + + ret = (xmlBufPtr) xmlMalloc(sizeof(xmlBuf)); + if (ret == NULL) { + xmlBufMemoryError(NULL, "creating buffer"); + return(NULL); + } + ret->compat_use = 0; + ret->use = 0; + ret->error = 0; + ret->buffer = NULL; + ret->size = xmlDefaultBufferSize; + ret->compat_size = xmlDefaultBufferSize; + ret->alloc = xmlBufferAllocScheme; + ret->content = (xmlChar *) xmlMallocAtomic(ret->size * sizeof(xmlChar)); + if (ret->content == NULL) { + xmlBufMemoryError(ret, "creating buffer"); + xmlFree(ret); + return(NULL); + } + ret->content[0] = 0; + ret->contentIO = NULL; + return(ret); +} + +/** + * xmlBufCreateSize: + * @size: initial size of buffer + * + * routine to create an XML buffer. + * returns the new structure. + */ +xmlBufPtr +xmlBufCreateSize(size_t size) { + xmlBufPtr ret; + + ret = (xmlBufPtr) xmlMalloc(sizeof(xmlBuf)); + if (ret == NULL) { + xmlBufMemoryError(NULL, "creating buffer"); + return(NULL); + } + ret->compat_use = 0; + ret->use = 0; + ret->error = 0; + ret->buffer = NULL; + ret->alloc = xmlBufferAllocScheme; + ret->size = (size ? size+2 : 0); /* +1 for ending null */ + ret->compat_size = (int) ret->size; + if (ret->size){ + ret->content = (xmlChar *) xmlMallocAtomic(ret->size * sizeof(xmlChar)); + if (ret->content == NULL) { + xmlBufMemoryError(ret, "creating buffer"); + xmlFree(ret); + return(NULL); + } + ret->content[0] = 0; + } else + ret->content = NULL; + ret->contentIO = NULL; + return(ret); +} + +/** + * xmlBufDetach: + * @buf: the buffer + * + * Remove the string contained in a buffer and give it back to the + * caller. The buffer is reset to an empty content. + * This doesn't work with immutable buffers as they can't be reset. + * + * Returns the previous string contained by the buffer. + */ +xmlChar * +xmlBufDetach(xmlBufPtr buf) { + xmlChar *ret; + + if (buf == NULL) + return(NULL); + if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) + return(NULL); + if (buf->buffer != NULL) + return(NULL); + if (buf->error) + return(NULL); + + ret = buf->content; + buf->content = NULL; + buf->size = 0; + buf->use = 0; + buf->compat_use = 0; + buf->compat_size = 0; + + return ret; +} + + +/** + * xmlBufCreateStatic: + * @mem: the memory area + * @size: the size in byte + * + * routine to create an XML buffer from an immutable memory area. + * The area won't be modified nor copied, and is expected to be + * present until the end of the buffer lifetime. + * + * returns the new structure. + */ +xmlBufPtr +xmlBufCreateStatic(void *mem, size_t size) { + xmlBufPtr ret; + + if ((mem == NULL) || (size == 0)) + return(NULL); + + ret = (xmlBufPtr) xmlMalloc(sizeof(xmlBuf)); + if (ret == NULL) { + xmlBufMemoryError(NULL, "creating buffer"); + return(NULL); + } + if (size < INT_MAX) { + ret->compat_use = size; + ret->compat_size = size; + } else { + ret->compat_use = INT_MAX; + ret->compat_size = INT_MAX; + } + ret->use = size; + ret->size = size; + ret->alloc = XML_BUFFER_ALLOC_IMMUTABLE; + ret->content = (xmlChar *) mem; + ret->error = 0; + ret->buffer = NULL; + return(ret); +} + +/** + * xmlBufGetAllocationScheme: + * @buf: the buffer + * + * Get the buffer allocation scheme + * + * Returns the scheme or -1 in case of error + */ +int +xmlBufGetAllocationScheme(xmlBufPtr buf) { + if (buf == NULL) { +#ifdef DEBUG_BUFFER + xmlGenericError(xmlGenericErrorContext, + "xmlBufGetAllocationScheme: buf == NULL\n"); +#endif + return(-1); + } + return(buf->alloc); +} + +/** + * xmlBufSetAllocationScheme: + * @buf: the buffer to tune + * @scheme: allocation scheme to use + * + * Sets the allocation scheme for this buffer + * + * returns 0 in case of success and -1 in case of failure + */ +int +xmlBufSetAllocationScheme(xmlBufPtr buf, + xmlBufferAllocationScheme scheme) { + if ((buf == NULL) || (buf->error != 0)) { +#ifdef DEBUG_BUFFER + xmlGenericError(xmlGenericErrorContext, + "xmlBufSetAllocationScheme: buf == NULL or in error\n"); +#endif + return(-1); + } + if ((buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) || + (buf->alloc == XML_BUFFER_ALLOC_IO)) + return(-1); + if ((scheme == XML_BUFFER_ALLOC_DOUBLEIT) || + (scheme == XML_BUFFER_ALLOC_EXACT) || + (scheme == XML_BUFFER_ALLOC_HYBRID) || + (scheme == XML_BUFFER_ALLOC_IMMUTABLE) || + (scheme == XML_BUFFER_ALLOC_BOUNDED)) { + buf->alloc = scheme; + if (buf->buffer) + buf->buffer->alloc = scheme; + return(0); + } + /* + * Switching a buffer ALLOC_IO has the side effect of initializing + * the contentIO field with the current content + */ + if (scheme == XML_BUFFER_ALLOC_IO) { + buf->alloc = XML_BUFFER_ALLOC_IO; + buf->contentIO = buf->content; + } + return(-1); +} + +/** + * xmlBufFree: + * @buf: the buffer to free + * + * Frees an XML buffer. It frees both the content and the structure which + * encapsulate it. + */ +void +xmlBufFree(xmlBufPtr buf) { + if (buf == NULL) { +#ifdef DEBUG_BUFFER + xmlGenericError(xmlGenericErrorContext, + "xmlBufFree: buf == NULL\n"); +#endif + return; + } + + if ((buf->alloc == XML_BUFFER_ALLOC_IO) && + (buf->contentIO != NULL)) { + xmlFree(buf->contentIO); + } else if ((buf->content != NULL) && + (buf->alloc != XML_BUFFER_ALLOC_IMMUTABLE)) { + xmlFree(buf->content); + } + xmlFree(buf); +} + +/** + * xmlBufEmpty: + * @buf: the buffer + * + * empty a buffer. + */ +void +xmlBufEmpty(xmlBufPtr buf) { + if ((buf == NULL) || (buf->error != 0)) return; + if (buf->content == NULL) return; + CHECK_COMPAT(buf) + buf->use = 0; + if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) { + buf->content = BAD_CAST ""; + } else if ((buf->alloc == XML_BUFFER_ALLOC_IO) && + (buf->contentIO != NULL)) { + size_t start_buf = buf->content - buf->contentIO; + + buf->size += start_buf; + buf->content = buf->contentIO; + buf->content[0] = 0; + } else { + buf->content[0] = 0; + } + UPDATE_COMPAT(buf) +} + +/** + * xmlBufShrink: + * @buf: the buffer to dump + * @len: the number of xmlChar to remove + * + * Remove the beginning of an XML buffer. + * NOTE that this routine behaviour differs from xmlBufferShrink() + * as it will return 0 on error instead of -1 due to size_t being + * used as the return type. + * + * Returns the number of byte removed or 0 in case of failure + */ +size_t +xmlBufShrink(xmlBufPtr buf, size_t len) { + if ((buf == NULL) || (buf->error != 0)) return(0); + CHECK_COMPAT(buf) + if (len == 0) return(0); + if (len > buf->use) return(0); + + buf->use -= len; + if ((buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) || + ((buf->alloc == XML_BUFFER_ALLOC_IO) && (buf->contentIO != NULL))) { + /* + * we just move the content pointer, but also make sure + * the perceived buffer size has shrinked accordingly + */ + buf->content += len; + buf->size -= len; + + /* + * sometimes though it maybe be better to really shrink + * on IO buffers + */ + if ((buf->alloc == XML_BUFFER_ALLOC_IO) && (buf->contentIO != NULL)) { + size_t start_buf = buf->content - buf->contentIO; + if (start_buf >= buf->size) { + memmove(buf->contentIO, &buf->content[0], buf->use); + buf->content = buf->contentIO; + buf->content[buf->use] = 0; + buf->size += start_buf; + } + } + } else { + memmove(buf->content, &buf->content[len], buf->use); + buf->content[buf->use] = 0; + } + UPDATE_COMPAT(buf) + return(len); +} + +/** + * xmlBufGrowInternal: + * @buf: the buffer + * @len: the minimum free size to allocate + * + * Grow the available space of an XML buffer, @len is the target value + * Error checking should be done on buf->error since using the return + * value doesn't work that well + * + * Returns 0 in case of error or the length made available otherwise + */ +static size_t +xmlBufGrowInternal(xmlBufPtr buf, size_t len) { + size_t size; + xmlChar *newbuf; + + if ((buf == NULL) || (buf->error != 0)) return(0); + CHECK_COMPAT(buf) + + if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) return(0); + if (buf->use + len < buf->size) + return(buf->size - buf->use); + + /* + * Windows has a BIG problem on realloc timing, so we try to double + * the buffer size (if that's enough) (bug 146697) + * Apparently BSD too, and it's probably best for linux too + * On an embedded system this may be something to change + */ +#if 1 + if (buf->size > (size_t) len) + size = buf->size * 2; + else + size = buf->use + len + 100; +#else + size = buf->use + len + 100; +#endif + + if (buf->alloc == XML_BUFFER_ALLOC_BOUNDED) { + /* + * Used to provide parsing limits + */ + if ((buf->use + len >= XML_MAX_TEXT_LENGTH) || + (buf->size >= XML_MAX_TEXT_LENGTH)) { + xmlBufMemoryError(buf, "buffer error: text too long\n"); + return(0); + } + if (size >= XML_MAX_TEXT_LENGTH) + size = XML_MAX_TEXT_LENGTH; + } + if ((buf->alloc == XML_BUFFER_ALLOC_IO) && (buf->contentIO != NULL)) { + size_t start_buf = buf->content - buf->contentIO; + + newbuf = (xmlChar *) xmlRealloc(buf->contentIO, start_buf + size); + if (newbuf == NULL) { + xmlBufMemoryError(buf, "growing buffer"); + return(0); + } + buf->contentIO = newbuf; + buf->content = newbuf + start_buf; + } else { + newbuf = (xmlChar *) xmlRealloc(buf->content, size); + if (newbuf == NULL) { + xmlBufMemoryError(buf, "growing buffer"); + return(0); + } + buf->content = newbuf; + } + buf->size = size; + UPDATE_COMPAT(buf) + return(buf->size - buf->use); +} + +/** + * xmlBufGrow: + * @buf: the buffer + * @len: the minimum free size to allocate + * + * Grow the available space of an XML buffer, @len is the target value + * This is been kept compatible with xmlBufferGrow() as much as possible + * + * Returns -1 in case of error or the length made available otherwise + */ +int +xmlBufGrow(xmlBufPtr buf, int len) { + size_t ret; + + if ((buf == NULL) || (len < 0)) return(-1); + if (len == 0) + return(0); + ret = xmlBufGrowInternal(buf, len); + if (buf->error != 0) + return(-1); + return((int) ret); +} + +/** + * xmlBufInflate: + * @buf: the buffer + * @len: the minimum extra free size to allocate + * + * Grow the available space of an XML buffer, adding at least @len bytes + * + * Returns 0 if successful or -1 in case of error + */ +int +xmlBufInflate(xmlBufPtr buf, size_t len) { + if (buf == NULL) return(-1); + xmlBufGrowInternal(buf, len + buf->size); + if (buf->error) + return(-1); + return(0); +} + +/** + * xmlBufDump: + * @file: the file output + * @buf: the buffer to dump + * + * Dumps an XML buffer to a FILE *. + * Returns the number of #xmlChar written + */ +size_t +xmlBufDump(FILE *file, xmlBufPtr buf) { + size_t ret; + + if ((buf == NULL) || (buf->error != 0)) { +#ifdef DEBUG_BUFFER + xmlGenericError(xmlGenericErrorContext, + "xmlBufDump: buf == NULL or in error\n"); +#endif + return(0); + } + if (buf->content == NULL) { +#ifdef DEBUG_BUFFER + xmlGenericError(xmlGenericErrorContext, + "xmlBufDump: buf->content == NULL\n"); +#endif + return(0); + } + CHECK_COMPAT(buf) + if (file == NULL) + file = stdout; + ret = fwrite(buf->content, sizeof(xmlChar), buf->use, file); + return(ret); +} + +/** + * xmlBufContent: + * @buf: the buffer + * + * Function to extract the content of a buffer + * + * Returns the internal content + */ + +xmlChar * +xmlBufContent(const xmlBuf *buf) +{ + if ((!buf) || (buf->error)) + return NULL; + + return(buf->content); +} + +/** + * xmlBufEnd: + * @buf: the buffer + * + * Function to extract the end of the content of a buffer + * + * Returns the end of the internal content or NULL in case of error + */ + +xmlChar * +xmlBufEnd(xmlBufPtr buf) +{ + if ((!buf) || (buf->error)) + return NULL; + CHECK_COMPAT(buf) + + return(&buf->content[buf->use]); +} + +/** + * xmlBufAddLen: + * @buf: the buffer + * @len: the size which were added at the end + * + * Sometime data may be added at the end of the buffer without + * using the xmlBuf APIs that is used to expand the used space + * and set the zero terminating at the end of the buffer + * + * Returns -1 in case of error and 0 otherwise + */ +int +xmlBufAddLen(xmlBufPtr buf, size_t len) { + if ((buf == NULL) || (buf->error)) + return(-1); + CHECK_COMPAT(buf) + if (len > (buf->size - buf->use)) + return(-1); + buf->use += len; + UPDATE_COMPAT(buf) + if (buf->size > buf->use) + buf->content[buf->use] = 0; + else + return(-1); + return(0); +} + +/** + * xmlBufErase: + * @buf: the buffer + * @len: the size to erase at the end + * + * Sometime data need to be erased at the end of the buffer + * + * Returns -1 in case of error and 0 otherwise + */ +int +xmlBufErase(xmlBufPtr buf, size_t len) { + if ((buf == NULL) || (buf->error)) + return(-1); + CHECK_COMPAT(buf) + if (len > buf->use) + return(-1); + buf->use -= len; + buf->content[buf->use] = 0; + UPDATE_COMPAT(buf) + return(0); +} + +/** + * xmlBufLength: + * @buf: the buffer + * + * Function to get the length of a buffer + * + * Returns the length of data in the internal content + */ + +size_t +xmlBufLength(const xmlBufPtr buf) +{ + if ((!buf) || (buf->error)) + return 0; + CHECK_COMPAT(buf) + + return(buf->use); +} + +/** + * xmlBufUse: + * @buf: the buffer + * + * Function to get the length of a buffer + * + * Returns the length of data in the internal content + */ + +size_t +xmlBufUse(const xmlBufPtr buf) +{ + if ((!buf) || (buf->error)) + return 0; + CHECK_COMPAT(buf) + + return(buf->use); +} + +/** + * xmlBufAvail: + * @buf: the buffer + * + * Function to find how much free space is allocated but not + * used in the buffer. It does not account for the terminating zero + * usually needed + * + * Returns the amount or 0 if none or an error occured + */ + +size_t +xmlBufAvail(const xmlBufPtr buf) +{ + if ((!buf) || (buf->error)) + return 0; + CHECK_COMPAT(buf) + + return(buf->size - buf->use); +} + +/** + * xmlBufIsEmpty: + * @buf: the buffer + * + * Tell if a buffer is empty + * + * Returns 0 if no, 1 if yes and -1 in case of error + */ +int +xmlBufIsEmpty(const xmlBufPtr buf) +{ + if ((!buf) || (buf->error)) + return(-1); + CHECK_COMPAT(buf) + + return(buf->use == 0); +} + +/** + * xmlBufResize: + * @buf: the buffer to resize + * @size: the desired size + * + * Resize a buffer to accommodate minimum size of @size. + * + * Returns 0 in case of problems, 1 otherwise + */ +int +xmlBufResize(xmlBufPtr buf, size_t size) +{ + unsigned int newSize; + xmlChar* rebuf = NULL; + size_t start_buf; + + if ((buf == NULL) || (buf->error)) + return(0); + CHECK_COMPAT(buf) + + if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) return(0); + if (buf->alloc == XML_BUFFER_ALLOC_BOUNDED) { + /* + * Used to provide parsing limits + */ + if (size >= XML_MAX_TEXT_LENGTH) { + xmlBufMemoryError(buf, "buffer error: text too long\n"); + return(0); + } + } + + /* Don't resize if we don't have to */ + if (size < buf->size) + return 1; + + /* figure out new size */ + switch (buf->alloc){ + case XML_BUFFER_ALLOC_IO: + case XML_BUFFER_ALLOC_DOUBLEIT: + /*take care of empty case*/ + newSize = (buf->size ? buf->size*2 : size + 10); + while (size > newSize) { + if (newSize > UINT_MAX / 2) { + xmlBufMemoryError(buf, "growing buffer"); + return 0; + } + newSize *= 2; + } + break; + case XML_BUFFER_ALLOC_EXACT: + newSize = size+10; + break; + case XML_BUFFER_ALLOC_HYBRID: + if (buf->use < BASE_BUFFER_SIZE) + newSize = size; + else { + newSize = buf->size * 2; + while (size > newSize) { + if (newSize > UINT_MAX / 2) { + xmlBufMemoryError(buf, "growing buffer"); + return 0; + } + newSize *= 2; + } + } + break; + + default: + newSize = size+10; + break; + } + + if ((buf->alloc == XML_BUFFER_ALLOC_IO) && (buf->contentIO != NULL)) { + start_buf = buf->content - buf->contentIO; + + if (start_buf > newSize) { + /* move data back to start */ + memmove(buf->contentIO, buf->content, buf->use); + buf->content = buf->contentIO; + buf->content[buf->use] = 0; + buf->size += start_buf; + } else { + rebuf = (xmlChar *) xmlRealloc(buf->contentIO, start_buf + newSize); + if (rebuf == NULL) { + xmlBufMemoryError(buf, "growing buffer"); + return 0; + } + buf->contentIO = rebuf; + buf->content = rebuf + start_buf; + } + } else { + if (buf->content == NULL) { + rebuf = (xmlChar *) xmlMallocAtomic(newSize); + } else if (buf->size - buf->use < 100) { + rebuf = (xmlChar *) xmlRealloc(buf->content, newSize); + } else { + /* + * if we are reallocating a buffer far from being full, it's + * better to make a new allocation and copy only the used range + * and free the old one. + */ + rebuf = (xmlChar *) xmlMallocAtomic(newSize); + if (rebuf != NULL) { + memcpy(rebuf, buf->content, buf->use); + xmlFree(buf->content); + rebuf[buf->use] = 0; + } + } + if (rebuf == NULL) { + xmlBufMemoryError(buf, "growing buffer"); + return 0; + } + buf->content = rebuf; + } + buf->size = newSize; + UPDATE_COMPAT(buf) + + return 1; +} + +/** + * xmlBufAdd: + * @buf: the buffer to dump + * @str: the #xmlChar string + * @len: the number of #xmlChar to add + * + * Add a string range to an XML buffer. if len == -1, the length of + * str is recomputed. + * + * Returns 0 successful, a positive error code number otherwise + * and -1 in case of internal or API error. + */ +int +xmlBufAdd(xmlBufPtr buf, const xmlChar *str, int len) { + unsigned int needSize; + + if ((str == NULL) || (buf == NULL) || (buf->error)) + return -1; + CHECK_COMPAT(buf) + + if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) return -1; + if (len < -1) { +#ifdef DEBUG_BUFFER + xmlGenericError(xmlGenericErrorContext, + "xmlBufAdd: len < 0\n"); +#endif + return -1; + } + if (len == 0) return 0; + + if (len < 0) + len = xmlStrlen(str); + + if (len < 0) return -1; + if (len == 0) return 0; + + needSize = buf->use + len + 2; + if (needSize > buf->size){ + if (buf->alloc == XML_BUFFER_ALLOC_BOUNDED) { + /* + * Used to provide parsing limits + */ + if (needSize >= XML_MAX_TEXT_LENGTH) { + xmlBufMemoryError(buf, "buffer error: text too long\n"); + return(-1); + } + } + if (!xmlBufResize(buf, needSize)){ + xmlBufMemoryError(buf, "growing buffer"); + return XML_ERR_NO_MEMORY; + } + } + + memmove(&buf->content[buf->use], str, len*sizeof(xmlChar)); + buf->use += len; + buf->content[buf->use] = 0; + UPDATE_COMPAT(buf) + return 0; +} + +/** + * xmlBufAddHead: + * @buf: the buffer + * @str: the #xmlChar string + * @len: the number of #xmlChar to add + * + * Add a string range to the beginning of an XML buffer. + * if len == -1, the length of @str is recomputed. + * + * Returns 0 successful, a positive error code number otherwise + * and -1 in case of internal or API error. + */ +int +xmlBufAddHead(xmlBufPtr buf, const xmlChar *str, int len) { + unsigned int needSize; + + if ((buf == NULL) || (buf->error)) + return(-1); + CHECK_COMPAT(buf) + if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) return -1; + if (str == NULL) { +#ifdef DEBUG_BUFFER + xmlGenericError(xmlGenericErrorContext, + "xmlBufAddHead: str == NULL\n"); +#endif + return -1; + } + if (len < -1) { +#ifdef DEBUG_BUFFER + xmlGenericError(xmlGenericErrorContext, + "xmlBufAddHead: len < 0\n"); +#endif + return -1; + } + if (len == 0) return 0; + + if (len < 0) + len = xmlStrlen(str); + + if (len <= 0) return -1; + + if ((buf->alloc == XML_BUFFER_ALLOC_IO) && (buf->contentIO != NULL)) { + size_t start_buf = buf->content - buf->contentIO; + + if (start_buf > (unsigned int) len) { + /* + * We can add it in the space previously shrinked + */ + buf->content -= len; + memmove(&buf->content[0], str, len); + buf->use += len; + buf->size += len; + UPDATE_COMPAT(buf) + return(0); + } + } + needSize = buf->use + len + 2; + if (needSize > buf->size){ + if (buf->alloc == XML_BUFFER_ALLOC_BOUNDED) { + /* + * Used to provide parsing limits + */ + if (needSize >= XML_MAX_TEXT_LENGTH) { + xmlBufMemoryError(buf, "buffer error: text too long\n"); + return(-1); + } + } + if (!xmlBufResize(buf, needSize)){ + xmlBufMemoryError(buf, "growing buffer"); + return XML_ERR_NO_MEMORY; + } + } + + memmove(&buf->content[len], &buf->content[0], buf->use); + memmove(&buf->content[0], str, len); + buf->use += len; + buf->content[buf->use] = 0; + UPDATE_COMPAT(buf) + return 0; +} + +/** + * xmlBufCat: + * @buf: the buffer to add to + * @str: the #xmlChar string + * + * Append a zero terminated string to an XML buffer. + * + * Returns 0 successful, a positive error code number otherwise + * and -1 in case of internal or API error. + */ +int +xmlBufCat(xmlBufPtr buf, const xmlChar *str) { + if ((buf == NULL) || (buf->error)) + return(-1); + CHECK_COMPAT(buf) + if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) return -1; + if (str == NULL) return -1; + return xmlBufAdd(buf, str, -1); +} + +/** + * xmlBufCCat: + * @buf: the buffer to dump + * @str: the C char string + * + * Append a zero terminated C string to an XML buffer. + * + * Returns 0 successful, a positive error code number otherwise + * and -1 in case of internal or API error. + */ +int +xmlBufCCat(xmlBufPtr buf, const char *str) { + const char *cur; + + if ((buf == NULL) || (buf->error)) + return(-1); + CHECK_COMPAT(buf) + if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) return -1; + if (str == NULL) { +#ifdef DEBUG_BUFFER + xmlGenericError(xmlGenericErrorContext, + "xmlBufCCat: str == NULL\n"); +#endif + return -1; + } + for (cur = str;*cur != 0;cur++) { + if (buf->use + 10 >= buf->size) { + if (!xmlBufResize(buf, buf->use+10)){ + xmlBufMemoryError(buf, "growing buffer"); + return XML_ERR_NO_MEMORY; + } + } + buf->content[buf->use++] = *cur; + } + buf->content[buf->use] = 0; + UPDATE_COMPAT(buf) + return 0; +} + +/** + * xmlBufWriteCHAR: + * @buf: the XML buffer + * @string: the string to add + * + * routine which manages and grows an output buffer. This one adds + * xmlChars at the end of the buffer. + * + * Returns 0 if successful, a positive error code number otherwise + * and -1 in case of internal or API error. + */ +int +xmlBufWriteCHAR(xmlBufPtr buf, const xmlChar *string) { + if ((buf == NULL) || (buf->error)) + return(-1); + CHECK_COMPAT(buf) + if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) + return(-1); + return(xmlBufCat(buf, string)); +} + +/** + * xmlBufWriteChar: + * @buf: the XML buffer output + * @string: the string to add + * + * routine which manage and grows an output buffer. This one add + * C chars at the end of the array. + * + * Returns 0 if successful, a positive error code number otherwise + * and -1 in case of internal or API error. + */ +int +xmlBufWriteChar(xmlBufPtr buf, const char *string) { + if ((buf == NULL) || (buf->error)) + return(-1); + CHECK_COMPAT(buf) + if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) + return(-1); + return(xmlBufCCat(buf, string)); +} + + +/** + * xmlBufWriteQuotedString: + * @buf: the XML buffer output + * @string: the string to add + * + * routine which manage and grows an output buffer. This one writes + * a quoted or double quoted #xmlChar string, checking first if it holds + * quote or double-quotes internally + * + * Returns 0 if successful, a positive error code number otherwise + * and -1 in case of internal or API error. + */ +int +xmlBufWriteQuotedString(xmlBufPtr buf, const xmlChar *string) { + const xmlChar *cur, *base; + if ((buf == NULL) || (buf->error)) + return(-1); + CHECK_COMPAT(buf) + if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) + return(-1); + if (xmlStrchr(string, '\"')) { + if (xmlStrchr(string, '\'')) { +#ifdef DEBUG_BUFFER + xmlGenericError(xmlGenericErrorContext, + "xmlBufWriteQuotedString: string contains quote and double-quotes !\n"); +#endif + xmlBufCCat(buf, "\""); + base = cur = string; + while(*cur != 0){ + if(*cur == '"'){ + if (base != cur) + xmlBufAdd(buf, base, cur - base); + xmlBufAdd(buf, BAD_CAST """, 6); + cur++; + base = cur; + } + else { + cur++; + } + } + if (base != cur) + xmlBufAdd(buf, base, cur - base); + xmlBufCCat(buf, "\""); + } + else{ + xmlBufCCat(buf, "\'"); + xmlBufCat(buf, string); + xmlBufCCat(buf, "\'"); + } + } else { + xmlBufCCat(buf, "\""); + xmlBufCat(buf, string); + xmlBufCCat(buf, "\""); + } + return(0); +} + +/** + * xmlBufFromBuffer: + * @buffer: incoming old buffer to convert to a new one + * + * Helper routine to switch from the old buffer structures in use + * in various APIs. It creates a wrapper xmlBufPtr which will be + * used for internal processing until the xmlBufBackToBuffer() is + * issued. + * + * Returns a new xmlBufPtr unless the call failed and NULL is returned + */ +xmlBufPtr +xmlBufFromBuffer(xmlBufferPtr buffer) { + xmlBufPtr ret; + + if (buffer == NULL) + return(NULL); + + ret = (xmlBufPtr) xmlMalloc(sizeof(xmlBuf)); + if (ret == NULL) { + xmlBufMemoryError(NULL, "creating buffer"); + return(NULL); + } + ret->use = buffer->use; + ret->size = buffer->size; + ret->compat_use = buffer->use; + ret->compat_size = buffer->size; + ret->error = 0; + ret->buffer = buffer; + ret->alloc = buffer->alloc; + ret->content = buffer->content; + ret->contentIO = buffer->contentIO; + + return(ret); +} + +/** + * xmlBufBackToBuffer: + * @buf: new buffer wrapping the old one + * + * Function to be called once internal processing had been done to + * update back the buffer provided by the user. This can lead to + * a failure in case the size accumulated in the xmlBuf is larger + * than what an xmlBuffer can support on 64 bits (INT_MAX) + * The xmlBufPtr @buf wrapper is deallocated by this call in any case. + * + * Returns the old xmlBufferPtr unless the call failed and NULL is returned + */ +xmlBufferPtr +xmlBufBackToBuffer(xmlBufPtr buf) { + xmlBufferPtr ret; + + if ((buf == NULL) || (buf->error)) + return(NULL); + CHECK_COMPAT(buf) + if (buf->buffer == NULL) { + xmlBufFree(buf); + return(NULL); + } + + ret = buf->buffer; + /* + * What to do in case of error in the buffer ??? + */ + if (buf->use > INT_MAX) { + /* + * Worse case, we really allocated and used more than the + * maximum allowed memory for an xmlBuffer on this architecture. + * Keep the buffer but provide a truncated size value. + */ + xmlBufOverflowError(buf, "Used size too big for xmlBuffer"); + ret->use = INT_MAX; + ret->size = INT_MAX; + } else if (buf->size > INT_MAX) { + /* + * milder case, we allocated more than the maximum allowed memory + * for an xmlBuffer on this architecture, but used less than the + * limit. + * Keep the buffer but provide a truncated size value. + */ + xmlBufOverflowError(buf, "Allocated size too big for xmlBuffer"); + ret->size = INT_MAX; + } + ret->use = (int) buf->use; + ret->size = (int) buf->size; + ret->alloc = buf->alloc; + ret->content = buf->content; + ret->contentIO = buf->contentIO; + xmlFree(buf); + return(ret); +} + +/** + * xmlBufMergeBuffer: + * @buf: an xmlBufPtr + * @buffer: the buffer to consume into @buf + * + * The content of @buffer is appended to @buf and @buffer is freed + * + * Returns -1 in case of error, 0 otherwise, in any case @buffer is freed + */ +int +xmlBufMergeBuffer(xmlBufPtr buf, xmlBufferPtr buffer) { + int ret = 0; + + if ((buf == NULL) || (buf->error)) { + xmlBufferFree(buffer); + return(-1); + } + CHECK_COMPAT(buf) + if ((buffer != NULL) && (buffer->content != NULL) && + (buffer->use > 0)) { + ret = xmlBufAdd(buf, buffer->content, buffer->use); + } + xmlBufferFree(buffer); + return(ret); +} + +/** + * xmlBufResetInput: + * @buf: an xmlBufPtr + * @input: an xmlParserInputPtr + * + * Update the input to use the current set of pointers from the buffer. + * + * Returns -1 in case of error, 0 otherwise + */ +int +xmlBufResetInput(xmlBufPtr buf, xmlParserInputPtr input) { + if ((input == NULL) || (buf == NULL) || (buf->error)) + return(-1); + CHECK_COMPAT(buf) + input->base = input->cur = buf->content; + input->end = &buf->content[buf->use]; + return(0); +} + +/** + * xmlBufGetInputBase: + * @buf: an xmlBufPtr + * @input: an xmlParserInputPtr + * + * Get the base of the @input relative to the beginning of the buffer + * + * Returns the size_t corresponding to the displacement + */ +size_t +xmlBufGetInputBase(xmlBufPtr buf, xmlParserInputPtr input) { + size_t base; + + if ((input == NULL) || (buf == NULL) || (buf->error)) + return(-1); + CHECK_COMPAT(buf) + base = input->base - buf->content; + /* + * We could do some pointer arythmetic checks but that's probably + * sufficient. + */ + if (base > buf->size) { + xmlBufOverflowError(buf, "Input reference outside of the buffer"); + base = 0; + } + return(base); +} + +/** + * xmlBufSetInputBaseCur: + * @buf: an xmlBufPtr + * @input: an xmlParserInputPtr + * @base: the base value relative to the beginning of the buffer + * @cur: the cur value relative to the beginning of the buffer + * + * Update the input to use the base and cur relative to the buffer + * after a possible reallocation of its content + * + * Returns -1 in case of error, 0 otherwise + */ +int +xmlBufSetInputBaseCur(xmlBufPtr buf, xmlParserInputPtr input, + size_t base, size_t cur) { + if ((input == NULL) || (buf == NULL) || (buf->error)) + return(-1); + CHECK_COMPAT(buf) + input->base = &buf->content[base]; + input->cur = input->base + cur; + input->end = &buf->content[buf->use]; + return(0); +} + +#define bottom_buf +#include "elfgcchack.h" diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/buf.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/buf.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/buf.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/buf.h 2015-12-23 07:08:27.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * Summary: Internal Interfaces for memory buffers in libxml2 + * Description: this module describes most of the new xmlBuf buffer + * entry points, those are private routines, with a + * few exceptions exported in tree.h. This was added + * in 2.9.0. + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_BUF_H__ +#define __XML_BUF_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +xmlBufPtr xmlBufCreate(void); +xmlBufPtr xmlBufCreateSize(size_t size); +xmlBufPtr xmlBufCreateStatic(void *mem, size_t size); + +int xmlBufSetAllocationScheme(xmlBufPtr buf, + xmlBufferAllocationScheme scheme); +int xmlBufGetAllocationScheme(xmlBufPtr buf); + +void xmlBufFree(xmlBufPtr buf); +void xmlBufEmpty(xmlBufPtr buf); + +/* size_t xmlBufShrink(xmlBufPtr buf, size_t len); */ +int xmlBufGrow(xmlBufPtr buf, int len); +int xmlBufInflate(xmlBufPtr buf, size_t len); +int xmlBufResize(xmlBufPtr buf, size_t len); + +int xmlBufAdd(xmlBufPtr buf, const xmlChar *str, int len); +int xmlBufAddHead(xmlBufPtr buf, const xmlChar *str, int len); +int xmlBufCat(xmlBufPtr buf, const xmlChar *str); +int xmlBufCCat(xmlBufPtr buf, const char *str); +int xmlBufWriteCHAR(xmlBufPtr buf, const xmlChar *string); +int xmlBufWriteChar(xmlBufPtr buf, const char *string); +int xmlBufWriteQuotedString(xmlBufPtr buf, const xmlChar *string); + +size_t xmlBufAvail(const xmlBufPtr buf); +size_t xmlBufLength(const xmlBufPtr buf); +/* size_t xmlBufUse(const xmlBufPtr buf); */ +int xmlBufIsEmpty(const xmlBufPtr buf); +int xmlBufAddLen(xmlBufPtr buf, size_t len); +int xmlBufErase(xmlBufPtr buf, size_t len); + +/* const xmlChar * xmlBufContent(const xmlBuf *buf); */ +/* const xmlChar * xmlBufEnd(xmlBufPtr buf); */ + +xmlChar * xmlBufDetach(xmlBufPtr buf); + +size_t xmlBufDump(FILE *file, xmlBufPtr buf); + +xmlBufPtr xmlBufFromBuffer(xmlBufferPtr buffer); +xmlBufferPtr xmlBufBackToBuffer(xmlBufPtr buf); +int xmlBufMergeBuffer(xmlBufPtr buf, xmlBufferPtr buffer); + +int xmlBufResetInput(xmlBufPtr buf, xmlParserInputPtr input); +size_t xmlBufGetInputBase(xmlBufPtr buf, xmlParserInputPtr input); +int xmlBufSetInputBaseCur(xmlBufPtr buf, xmlParserInputPtr input, + size_t base, size_t cur); +#ifdef __cplusplus +} +#endif +#endif /* __XML_BUF_H__ */ + diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/c14n.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/c14n.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/c14n.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/c14n.c 2015-12-23 07:08:27.000000000 +0000 @@ -1,12 +1,12 @@ /* - * "Canonical XML" implementation + * "Canonical XML" implementation * http://www.w3.org/TR/xml-c14n - * + * * "Exclusive XML Canonicalization" implementation * http://www.w3.org/TR/xml-exc-c14n * * See Copyright for the status of this software. - * + * * Author: Aleksey Sanin */ #define IN_LIBXML @@ -27,6 +27,8 @@ #include #include +#include "buf.h" + /************************************************************************ * * * Some declaration better left private ATM * @@ -44,7 +46,7 @@ int nsPrevStart; /* the begginning of the stack for previous visible node */ int nsPrevEnd; /* the end of the stack for previous visible node */ int nsMax; /* size of the array as allocated */ - xmlNsPtr *nsTab; /* array of ns in no particular order */ + xmlNsPtr *nsTab; /* array of ns in no particular order */ xmlNodePtr *nodeTab; /* array of nodes in no particular order */ } xmlC14NVisibleNsStack, *xmlC14NVisibleNsStackPtr; @@ -52,7 +54,7 @@ /* input parameters */ xmlDocPtr doc; xmlC14NIsVisibleCallback is_visible_callback; - void* user_data; + void* user_data; int with_comments; xmlOutputBufferPtr buf; @@ -61,8 +63,10 @@ int parent_is_doc; xmlC14NVisibleNsStackPtr ns_rendered; + /* C14N mode */ + xmlC14NMode mode; + /* exclusive canonicalization */ - int exclusive; xmlChar **inclusive_ns_prefixes; /* error number */ @@ -71,17 +75,17 @@ static xmlC14NVisibleNsStackPtr xmlC14NVisibleNsStackCreate (void); static void xmlC14NVisibleNsStackDestroy (xmlC14NVisibleNsStackPtr cur); -static void xmlC14NVisibleNsStackAdd (xmlC14NVisibleNsStackPtr cur, +static void xmlC14NVisibleNsStackAdd (xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlNodePtr node); -static void xmlC14NVisibleNsStackSave (xmlC14NVisibleNsStackPtr cur, +static void xmlC14NVisibleNsStackSave (xmlC14NVisibleNsStackPtr cur, xmlC14NVisibleNsStackPtr state); -static void xmlC14NVisibleNsStackRestore (xmlC14NVisibleNsStackPtr cur, +static void xmlC14NVisibleNsStackRestore (xmlC14NVisibleNsStackPtr cur, xmlC14NVisibleNsStackPtr state); -static void xmlC14NVisibleNsStackShift (xmlC14NVisibleNsStackPtr cur); -static int xmlC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur, +static void xmlC14NVisibleNsStackShift (xmlC14NVisibleNsStackPtr cur); +static int xmlC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns); -static int xmlExcC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur, +static int xmlExcC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlC14NCtxPtr ctx); @@ -103,23 +107,26 @@ static xmlChar *xmlC11NNormalizeString(const xmlChar * input, xmlC14NNormalizationMode mode); -#define xmlC11NNormalizeAttr( a ) \ +#define xmlC11NNormalizeAttr( a ) \ xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_ATTR) -#define xmlC11NNormalizeComment( a ) \ +#define xmlC11NNormalizeComment( a ) \ xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_COMMENT) -#define xmlC11NNormalizePI( a ) \ +#define xmlC11NNormalizePI( a ) \ xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_PI) -#define xmlC11NNormalizeText( a ) \ +#define xmlC11NNormalizeText( a ) \ xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_TEXT) -#define xmlC14NIsVisible( ctx, node, parent ) \ +#define xmlC14NIsVisible( ctx, node, parent ) \ (((ctx)->is_visible_callback != NULL) ? \ (ctx)->is_visible_callback((ctx)->user_data, \ (xmlNodePtr)(node), (xmlNodePtr)(parent)) : 1) +#define xmlC14NIsExclusive( ctx ) \ + ( (ctx)->mode == XML_C14N_EXCLUSIVE_1_0 ) + /************************************************************************ * * - * Some factorized error routines * + * Some factorized error routines * * * ************************************************************************/ @@ -234,7 +241,7 @@ __xmlRaiseError(NULL, NULL, NULL, ctxt, node, XML_FROM_C14N, error, XML_ERR_ERROR, NULL, 0, - NULL, NULL, NULL, 0, 0, msg); + NULL, NULL, NULL, 0, 0, "%s", msg); } /************************************************************************ @@ -244,25 +251,25 @@ ************************************************************************/ #define XML_NAMESPACES_DEFAULT 16 -static int +static int xmlC14NIsNodeInNodeset(xmlNodeSetPtr nodes, xmlNodePtr node, xmlNodePtr parent) { if((nodes != NULL) && (node != NULL)) { if(node->type != XML_NAMESPACE_DECL) { return(xmlXPathNodeSetContains(nodes, node)); } else { xmlNs ns; - - memcpy(&ns, node, sizeof(ns)); - + + memcpy(&ns, node, sizeof(ns)); + /* this is a libxml hack! check xpath.c for details */ if((parent != NULL) && (parent->type == XML_ATTRIBUTE_NODE)) { ns.next = (xmlNsPtr)parent->parent; } else { - ns.next = (xmlNsPtr)parent; + ns.next = (xmlNsPtr)parent; } - /* - * If the input is an XPath node-set, then the node-set must explicitly + /* + * If the input is an XPath node-set, then the node-set must explicitly * contain every node to be rendered to the canonical form. */ return(xmlXPathNodeSetContains(nodes, (xmlNodePtr)&ns)); @@ -300,12 +307,12 @@ } memset(cur, 0, sizeof(xmlC14NVisibleNsStack)); xmlFree(cur); - + } -static void +static void xmlC14NVisibleNsStackAdd(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlNodePtr node) { - if((cur == NULL) || + if((cur == NULL) || ((cur->nsTab == NULL) && (cur->nodeTab != NULL)) || ((cur->nsTab != NULL) && (cur->nodeTab == NULL))) { xmlC14NErrParam("adding namespace to stack"); @@ -323,9 +330,9 @@ memset(cur->nodeTab, 0 , XML_NAMESPACES_DEFAULT * sizeof(xmlNodePtr)); cur->nsMax = XML_NAMESPACES_DEFAULT; } else if(cur->nsMax == cur->nsCurEnd) { - void *tmp; + void *tmp; int tmpSize; - + tmpSize = 2 * cur->nsMax; tmp = xmlRealloc(cur->nsTab, tmpSize * sizeof(xmlNsPtr)); if (tmp == NULL) { @@ -355,7 +362,7 @@ xmlC14NErrParam("saving namespaces stack"); return; } - + state->nsCurEnd = cur->nsCurEnd; state->nsPrevStart = cur->nsPrevStart; state->nsPrevEnd = cur->nsPrevEnd; @@ -372,7 +379,7 @@ cur->nsPrevEnd = state->nsPrevEnd; } -static void +static void xmlC14NVisibleNsStackShift(xmlC14NVisibleNsStackPtr cur) { if(cur == NULL) { xmlC14NErrParam("shifting namespaces stack"); @@ -395,7 +402,7 @@ /** * xmlC14NVisibleNsStackFind: - * @ctx: the C14N context + * @ctx: the C14N context * @ns: the namespace to check * * Checks whether the given namespace was already rendered or not @@ -409,14 +416,14 @@ const xmlChar *prefix; const xmlChar *href; int has_empty_ns; - + if(cur == NULL) { xmlC14NErrParam("searching namespaces stack (c14n)"); return (0); } /* - * if the default namespace xmlns="" is not defined yet then + * if the default namespace xmlns="" is not defined yet then * we do not want to print it out */ prefix = ((ns == NULL) || (ns->prefix == NULL)) ? BAD_CAST "" : ns->prefix; @@ -427,7 +434,7 @@ int start = (has_empty_ns) ? 0 : cur->nsPrevStart; for (i = cur->nsCurEnd - 1; i >= start; --i) { xmlNsPtr ns1 = cur->nsTab[i]; - + if(xmlC14NStrEqual(prefix, (ns1 != NULL) ? ns1->prefix : NULL)) { return(xmlC14NStrEqual(href, (ns1 != NULL) ? ns1->href : NULL)); } @@ -436,20 +443,20 @@ return(has_empty_ns); } -static int +static int xmlExcC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlC14NCtxPtr ctx) { int i; const xmlChar *prefix; const xmlChar *href; int has_empty_ns; - + if(cur == NULL) { xmlC14NErrParam("searching namespaces stack (exc c14n)"); return (0); } /* - * if the default namespace xmlns="" is not defined yet then + * if the default namespace xmlns="" is not defined yet then * we do not want to print it out */ prefix = ((ns == NULL) || (ns->prefix == NULL)) ? BAD_CAST "" : ns->prefix; @@ -460,10 +467,10 @@ int start = 0; for (i = cur->nsCurEnd - 1; i >= start; --i) { xmlNsPtr ns1 = cur->nsTab[i]; - + if(xmlC14NStrEqual(prefix, (ns1 != NULL) ? ns1->prefix : NULL)) { if(xmlC14NStrEqual(href, (ns1 != NULL) ? ns1->href : NULL)) { - return(xmlC14NIsVisible(ctx, ns1, cur->nodeTab[i])); + return(xmlC14NIsVisible(ctx, ns1, cur->nodeTab[i])); } else { return(0); } @@ -478,8 +485,8 @@ /** * xmlC14NIsXmlNs: - * @ns: the namespace to check - * + * @ns: the namespace to check + * * Checks whether the given namespace is a default "xml:" namespace * with href="http://www.w3.org/XML/1998/namespace" * @@ -492,16 +499,14 @@ { return ((ns != NULL) && (xmlStrEqual(ns->prefix, BAD_CAST "xml")) && - (xmlStrEqual(ns->href, - BAD_CAST - "http://www.w3.org/XML/1998/namespace"))); + (xmlStrEqual(ns->href, XML_XML_NAMESPACE))); } /** * xmlC14NNsCompare: * @ns1: the pointer to first namespace - * @ns2: the pointer to second namespace + * @ns2: the pointer to second namespace * * Compares the namespaces by names (prefixes). * @@ -524,7 +529,7 @@ /** * xmlC14NPrintNamespaces: * @ns: the pointer to namespace - * @ctx: the C14N context + * @ctx: the C14N context * * Prints the given namespace to the output buffer from C14N context. * @@ -542,52 +547,53 @@ if (ns->prefix != NULL) { xmlOutputBufferWriteString(ctx->buf, " xmlns:"); xmlOutputBufferWriteString(ctx->buf, (const char *) ns->prefix); - xmlOutputBufferWriteString(ctx->buf, "=\""); + xmlOutputBufferWriteString(ctx->buf, "="); } else { - xmlOutputBufferWriteString(ctx->buf, " xmlns=\""); + xmlOutputBufferWriteString(ctx->buf, " xmlns="); } if(ns->href != NULL) { - xmlOutputBufferWriteString(ctx->buf, (const char *) ns->href); + xmlBufWriteQuotedString(ctx->buf->buffer, ns->href); + } else { + xmlOutputBufferWriteString(ctx->buf, "\"\""); } - xmlOutputBufferWriteString(ctx->buf, "\""); return (1); } /** * xmlC14NProcessNamespacesAxis: - * @ctx: the C14N context + * @ctx: the C14N context * @node: the current node * * Prints out canonical namespace axis of the current node to the - * buffer from C14N context as follows + * buffer from C14N context as follows * * Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n) * * Namespace Axis - * Consider a list L containing only namespace nodes in the - * axis and in the node-set in lexicographic order (ascending). To begin - * processing L, if the first node is not the default namespace node (a node - * with no namespace URI and no local name), then generate a space followed + * Consider a list L containing only namespace nodes in the + * axis and in the node-set in lexicographic order (ascending). To begin + * processing L, if the first node is not the default namespace node (a node + * with no namespace URI and no local name), then generate a space followed * by xmlns="" if and only if the following conditions are met: * - the element E that owns the axis is in the node-set - * - The nearest ancestor element of E in the node-set has a default - * namespace node in the node-set (default namespace nodes always + * - The nearest ancestor element of E in the node-set has a default + * namespace node in the node-set (default namespace nodes always * have non-empty values in XPath) - * The latter condition eliminates unnecessary occurrences of xmlns="" in - * the canonical form since an element only receives an xmlns="" if its - * default namespace is empty and if it has an immediate parent in the - * canonical form that has a non-empty default namespace. To finish - * processing L, simply process every namespace node in L, except omit - * namespace node with local name xml, which defines the xml prefix, + * The latter condition eliminates unnecessary occurrences of xmlns="" in + * the canonical form since an element only receives an xmlns="" if its + * default namespace is empty and if it has an immediate parent in the + * canonical form that has a non-empty default namespace. To finish + * processing L, simply process every namespace node in L, except omit + * namespace node with local name xml, which defines the xml prefix, * if its string value is http://www.w3.org/XML/1998/namespace. * * Exclusive XML Canonicalization v 1.0 (http://www.w3.org/TR/xml-exc-c14n) - * Canonical XML applied to a document subset requires the search of the - * ancestor nodes of each orphan element node for attributes in the xml - * namespace, such as xml:lang and xml:space. These are copied into the - * element node except if a declaration of the same attribute is already - * in the attribute axis of the element (whether or not it is included in - * the document subset). This search and copying are omitted from the + * Canonical XML applied to a document subset requires the search of the + * ancestor nodes of each orphan element node for attributes in the xml + * namespace, such as xml:lang and xml:space. These are copied into the + * element node except if a declaration of the same attribute is already + * in the attribute axis of the element (whether or not it is included in + * the document subset). This search and copying are omitted from the * Exclusive XML Canonicalization method. * * Returns 0 on success or -1 on fail. @@ -600,7 +606,7 @@ xmlListPtr list; int already_rendered; int has_empty_ns = 0; - + if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) { xmlC14NErrParam("processing namespaces axis (c14n)"); return (-1); @@ -619,29 +625,29 @@ for(n = cur; n != NULL; n = n->parent) { for(ns = n->nsDef; ns != NULL; ns = ns->next) { tmp = xmlSearchNs(cur->doc, cur, ns->prefix); - + if((tmp == ns) && !xmlC14NIsXmlNs(ns) && xmlC14NIsVisible(ctx, ns, cur)) { already_rendered = xmlC14NVisibleNsStackFind(ctx->ns_rendered, ns); if(visible) { - xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); + xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); } if(!already_rendered) { - xmlListInsert(list, ns); + xmlListInsert(list, ns); } - if(xmlStrlen(ns->prefix) == 0) { + if(xmlStrlen(ns->prefix) == 0) { has_empty_ns = 1; } } } } - + /** - * if the first node is not the default namespace node (a node with no - * namespace URI and no local name), then generate a space followed by + * if the first node is not the default namespace node (a node with no + * namespace URI and no local name), then generate a space followed by * xmlns="" if and only if the following conditions are met: * - the element E that owns the axis is in the node-set - * - the nearest ancestor element of E in the node-set has a default - * namespace node in the node-set (default namespace nodes always + * - the nearest ancestor element of E in the node-set has a default + * namespace node in the node-set (default namespace nodes always * have non-empty values in XPath) */ if(visible && !has_empty_ns) { @@ -649,17 +655,17 @@ memset(&ns_default, 0, sizeof(ns_default)); if(!xmlC14NVisibleNsStackFind(ctx->ns_rendered, &ns_default)) { - xmlC14NPrintNamespaces(&ns_default, ctx); + xmlC14NPrintNamespaces(&ns_default, ctx); } } - - - /* - * print out all elements from list + + + /* + * print out all elements from list */ xmlListWalk(list, (xmlListWalker) xmlC14NPrintNamespaces, (const void *) ctx); - /* + /* * Cleanup */ xmlListDelete(list); @@ -669,28 +675,28 @@ /** * xmlExcC14NProcessNamespacesAxis: - * @ctx: the C14N context + * @ctx: the C14N context * @node: the current node * * Prints out exclusive canonical namespace axis of the current node to the - * buffer from C14N context as follows + * buffer from C14N context as follows * * Exclusive XML Canonicalization * http://www.w3.org/TR/xml-exc-c14n * - * If the element node is in the XPath subset then output the node in - * accordance with Canonical XML except for namespace nodes which are + * If the element node is in the XPath subset then output the node in + * accordance with Canonical XML except for namespace nodes which are * rendered as follows: * * 1. Render each namespace node iff: - * * it is visibly utilized by the immediate parent element or one of + * * it is visibly utilized by the immediate parent element or one of * its attributes, or is present in InclusiveNamespaces PrefixList, and - * * its prefix and value do not appear in ns_rendered. ns_rendered is - * obtained by popping the state stack in order to obtain a list of - * prefixes and their values which have already been rendered by + * * its prefix and value do not appear in ns_rendered. ns_rendered is + * obtained by popping the state stack in order to obtain a list of + * prefixes and their values which have already been rendered by * an output ancestor of the namespace node's parent element. - * 2. Append the rendered namespace node to the list ns_rendered of namespace - * nodes rendered by output ancestors. Push ns_rendered on state stack and + * 2. Append the rendered namespace node to the list ns_rendered of namespace + * nodes rendered by output ancestors. Push ns_rendered on state stack and * recurse. * 3. After the recursion returns, pop thestate stack. * @@ -707,13 +713,13 @@ int has_empty_ns = 0; int has_visibly_utilized_empty_ns = 0; int has_empty_ns_in_inclusive_list = 0; - + if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) { xmlC14NErrParam("processing namespaces axis (exc c14n)"); return (-1); } - if(!ctx->exclusive) { + if(!xmlC14NIsExclusive(ctx)) { xmlC14NErrParam("processing namespaces axis (exc c14n)"); return (-1); @@ -728,15 +734,15 @@ return (-1); } - /* + /* * process inclusive namespaces: - * All namespace nodes appearing on inclusive ns list are + * All namespace nodes appearing on inclusive ns list are * handled as provided in Canonical XML */ if(ctx->inclusive_ns_prefixes != NULL) { - xmlChar *prefix; + xmlChar *prefix; int i; - + for (i = 0; ctx->inclusive_ns_prefixes[i] != NULL; ++i) { prefix = ctx->inclusive_ns_prefixes[i]; /* @@ -747,23 +753,23 @@ prefix = NULL; has_empty_ns_in_inclusive_list = 1; } - - ns = xmlSearchNs(cur->doc, cur, prefix); + + ns = xmlSearchNs(cur->doc, cur, prefix); if((ns != NULL) && !xmlC14NIsXmlNs(ns) && xmlC14NIsVisible(ctx, ns, cur)) { already_rendered = xmlC14NVisibleNsStackFind(ctx->ns_rendered, ns); if(visible) { - xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); + xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); } if(!already_rendered) { - xmlListInsert(list, ns); + xmlListInsert(list, ns); } - if(xmlStrlen(ns->prefix) == 0) { + if(xmlStrlen(ns->prefix) == 0) { has_empty_ns = 1; } } } } - + /* add node namespace */ if(cur->ns != NULL) { ns = cur->ns; @@ -772,32 +778,32 @@ has_visibly_utilized_empty_ns = 1; } if((ns != NULL) && !xmlC14NIsXmlNs(ns)) { - if(visible && xmlC14NIsVisible(ctx, ns, cur)) { + if(visible && xmlC14NIsVisible(ctx, ns, cur)) { if(!xmlExcC14NVisibleNsStackFind(ctx->ns_rendered, ns, ctx)) { xmlListInsert(list, ns); } } if(visible) { - xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); + xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); } if(xmlStrlen(ns->prefix) == 0) { has_empty_ns = 1; } } - - + + /* add attributes */ for(attr = cur->properties; attr != NULL; attr = attr->next) { - /* + /* * we need to check that attribute is visible and has non - * default namespace (XML Namespaces: "default namespaces - * do not apply directly to attributes") + * default namespace (XML Namespaces: "default namespaces + * do not apply directly to attributes") */ if((attr->ns != NULL) && !xmlC14NIsXmlNs(attr->ns) && xmlC14NIsVisible(ctx, attr, cur)) { already_rendered = xmlExcC14NVisibleNsStackFind(ctx->ns_rendered, attr->ns, ctx); - xmlC14NVisibleNsStackAdd(ctx->ns_rendered, attr->ns, cur); + xmlC14NVisibleNsStackAdd(ctx->ns_rendered, attr->ns, cur); if(!already_rendered && visible) { - xmlListInsert(list, attr->ns); + xmlListInsert(list, attr->ns); } if(xmlStrlen(attr->ns->prefix) == 0) { has_empty_ns = 1; @@ -810,33 +816,33 @@ /* * Process xmlns="" */ - if(visible && has_visibly_utilized_empty_ns && + if(visible && has_visibly_utilized_empty_ns && !has_empty_ns && !has_empty_ns_in_inclusive_list) { static xmlNs ns_default; memset(&ns_default, 0, sizeof(ns_default)); - + already_rendered = xmlExcC14NVisibleNsStackFind(ctx->ns_rendered, &ns_default, ctx); if(!already_rendered) { - xmlC14NPrintNamespaces(&ns_default, ctx); + xmlC14NPrintNamespaces(&ns_default, ctx); } } else if(visible && !has_empty_ns && has_empty_ns_in_inclusive_list) { static xmlNs ns_default; memset(&ns_default, 0, sizeof(ns_default)); if(!xmlC14NVisibleNsStackFind(ctx->ns_rendered, &ns_default)) { - xmlC14NPrintNamespaces(&ns_default, ctx); + xmlC14NPrintNamespaces(&ns_default, ctx); } } - - /* - * print out all elements from list + + /* + * print out all elements from list */ xmlListWalk(list, (xmlListWalker) xmlC14NPrintNamespaces, (const void *) ctx); - /* + /* * Cleanup */ xmlListDelete(list); @@ -845,9 +851,28 @@ /** + * xmlC14NIsXmlAttr: + * @attr: the attr to check + * + * Checks whether the given attribute is a default "xml:" namespace + * with href="http://www.w3.org/XML/1998/namespace" + * + * Returns 1 if the node is default or 0 otherwise + */ + +/* todo: make it a define? */ +static int +xmlC14NIsXmlAttr(xmlAttrPtr attr) +{ + return ((attr->ns != NULL) && + (xmlC14NIsXmlNs(attr->ns) != 0)); +} + + +/** * xmlC14NAttrsCompare: * @attr1: the pointer tls o first attr - * @attr2: the pointer to second attr + * @attr2: the pointer to second attr * * Prints the given attribute to the output buffer from C14N context. * @@ -871,7 +896,7 @@ return (xmlStrcmp(attr1->name, attr2->name)); } - /* + /* * Attributes in the default namespace are first * because the default namespace is not applied to * unqualified attributes @@ -896,10 +921,10 @@ /** * xmlC14NPrintAttrs: * @attr: the pointer to attr - * @ctx: the C14N context + * @ctx: the C14N context * * Prints out canonical attribute urrent node to the - * buffer from C14N context as follows + * buffer from C14N context as follows * * Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n) * @@ -925,7 +950,7 @@ xmlOutputBufferWriteString(ctx->buf, (const char *) attr->name); xmlOutputBufferWriteString(ctx->buf, "=\""); - value = xmlNodeListGetString(attr->doc, attr->children, 1); + value = xmlNodeListGetString(ctx->doc, attr->children, 1); /* todo: should we log an error if value==NULL ? */ if (value != NULL) { buffer = xmlC11NNormalizeAttr(value); @@ -943,33 +968,156 @@ } /** + * xmlC14NFindHiddenParentAttr: + * + * Finds an attribute in a hidden parent node. + * + * Returns a pointer to the attribute node (if found) or NULL otherwise. + */ +static xmlAttrPtr +xmlC14NFindHiddenParentAttr(xmlC14NCtxPtr ctx, xmlNodePtr cur, const xmlChar * name, const xmlChar * ns) +{ + xmlAttrPtr res; + while((cur != NULL) && (!xmlC14NIsVisible(ctx, cur, cur->parent))) { + res = xmlHasNsProp(cur, name, ns); + if(res != NULL) { + return res; + } + + cur = cur->parent; + } + + return NULL; +} + +/** + * xmlC14NFixupBaseAttr: + * + * Fixes up the xml:base attribute + * + * Returns the newly created attribute or NULL + */ +static xmlAttrPtr +xmlC14NFixupBaseAttr(xmlC14NCtxPtr ctx, xmlAttrPtr xml_base_attr) +{ + xmlChar * res = NULL; + xmlNodePtr cur; + xmlAttrPtr attr; + xmlChar * tmp_str; + xmlChar * tmp_str2; + int tmp_str_len; + + if ((ctx == NULL) || (xml_base_attr == NULL) || (xml_base_attr->parent == NULL)) { + xmlC14NErrParam("processing xml:base attribute"); + return (NULL); + } + + /* start from current value */ + res = xmlNodeListGetString(ctx->doc, xml_base_attr->children, 1); + if(res == NULL) { + xmlC14NErrInternal("processing xml:base attribute - can't get attr value"); + return (NULL); + } + + /* go up the stack until we find a node that we rendered already */ + cur = xml_base_attr->parent->parent; + while((cur != NULL) && (!xmlC14NIsVisible(ctx, cur, cur->parent))) { + attr = xmlHasNsProp(cur, BAD_CAST "base", XML_XML_NAMESPACE); + if(attr != NULL) { + /* get attr value */ + tmp_str = xmlNodeListGetString(ctx->doc, attr->children, 1); + if(tmp_str == NULL) { + xmlFree(res); + + xmlC14NErrInternal("processing xml:base attribute - can't get attr value"); + return (NULL); + } + + /* we need to add '/' if our current base uri ends with '..' or '.' + to ensure that we are forced to go "up" all the time */ + tmp_str_len = xmlStrlen(tmp_str); + if(tmp_str_len > 1 && tmp_str[tmp_str_len - 2] == '.') { + tmp_str2 = xmlStrcat(tmp_str, BAD_CAST "/"); + if(tmp_str2 == NULL) { + xmlFree(tmp_str); + xmlFree(res); + + xmlC14NErrInternal("processing xml:base attribute - can't modify uri"); + return (NULL); + } + + tmp_str = tmp_str2; + } + + /* build uri */ + tmp_str2 = xmlBuildURI(res, tmp_str); + if(tmp_str2 == NULL) { + xmlFree(tmp_str); + xmlFree(res); + + xmlC14NErrInternal("processing xml:base attribute - can't construct uri"); + return (NULL); + } + + /* cleanup and set the new res */ + xmlFree(tmp_str); + xmlFree(res); + res = tmp_str2; + } + + /* next */ + cur = cur->parent; + } + + /* check if result uri is empty or not */ + if((res == NULL) || xmlStrEqual(res, BAD_CAST "")) { + xmlFree(res); + return (NULL); + } + + /* create and return the new attribute node */ + attr = xmlNewNsProp(NULL, xml_base_attr->ns, BAD_CAST "base", res); + if(attr == NULL) { + xmlFree(res); + + xmlC14NErrInternal("processing xml:base attribute - can't construct attribute"); + return (NULL); + } + + /* done */ + xmlFree(res); + return (attr); +} + +/** * xmlC14NProcessAttrsAxis: - * @ctx: the C14N context + * @ctx: the C14N context * @cur: the current node * @parent_visible: the visibility of parent node + * @all_parents_visible: the visibility of all parent nodes * * Prints out canonical attribute axis of the current node to the - * buffer from C14N context as follows + * buffer from C14N context as follows * * Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n) * - * Attribute Axis - * In lexicographic order (ascending), process each node that + * Attribute Axis + * In lexicographic order (ascending), process each node that * is in the element's attribute axis and in the node-set. - * - * The processing of an element node E MUST be modified slightly - * when an XPath node-set is given as input and the element's + * + * The processing of an element node E MUST be modified slightly + * when an XPath node-set is given as input and the element's * parent is omitted from the node-set. * * * Exclusive XML Canonicalization v 1.0 (http://www.w3.org/TR/xml-exc-c14n) * - * Canonical XML applied to a document subset requires the search of the - * ancestor nodes of each orphan element node for attributes in the xml - * namespace, such as xml:lang and xml:space. These are copied into the - * element node except if a declaration of the same attribute is already - * in the attribute axis of the element (whether or not it is included in - * the document subset). This search and copying are omitted from the + * Canonical XML applied to a document subset requires the search of the + * ancestor nodes of each orphan element node for attributes in the xml + * namespace, such as xml:lang and xml:space. These are copied into the + * element node except if a declaration of the same attribute is already + * in the attribute axis of the element (whether or not it is included in + * the document subset). This search and copying are omitted from the * Exclusive XML Canonicalization method. * * Returns 0 on success or -1 on fail. @@ -979,6 +1127,12 @@ { xmlAttrPtr attr; xmlListPtr list; + xmlAttrPtr attrs_to_delete = NULL; + + /* special processing for 1.1 spec */ + xmlAttrPtr xml_base_attr = NULL; + xmlAttrPtr xml_lang_attr = NULL; + xmlAttrPtr xml_space_attr = NULL; if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) { xmlC14NErrParam("processing attributes axis"); @@ -994,57 +1148,200 @@ return (-1); } - /* - * Add all visible attributes from current node. - */ - attr = cur->properties; - while (attr != NULL) { - /* check that attribute is visible */ - if (xmlC14NIsVisible(ctx, attr, cur)) { - xmlListInsert(list, attr); + switch(ctx->mode) { + case XML_C14N_1_0: + /* The processing of an element node E MUST be modified slightly when an XPath node-set is + * given as input and the element's parent is omitted from the node-set. The method for processing + * the attribute axis of an element E in the node-set is enhanced. All element nodes along E's + * ancestor axis are examined for nearest occurrences of attributes in the xml namespace, such + * as xml:lang and xml:space (whether or not they are in the node-set). From this list of attributes, + * remove any that are in E's attribute axis (whether or not they are in the node-set). Then, + * lexicographically merge this attribute list with the nodes of E's attribute axis that are in + * the node-set. The result of visiting the attribute axis is computed by processing the attribute + * nodes in this merged attribute list. + */ + + /* + * Add all visible attributes from current node. + */ + attr = cur->properties; + while (attr != NULL) { + /* check that attribute is visible */ + if (xmlC14NIsVisible(ctx, attr, cur)) { + xmlListInsert(list, attr); + } + attr = attr->next; } - attr = attr->next; - } - /* - * include attributes in "xml" namespace defined in ancestors - * (only for non-exclusive XML Canonicalization) - */ - if (parent_visible && (!ctx->exclusive) && (cur->parent != NULL) - && (!xmlC14NIsVisible(ctx, cur->parent, cur->parent->parent))) { /* - * If XPath node-set is not specified then the parent is always - * visible! + * Handle xml attributes */ - cur = cur->parent; - while (cur != NULL) { - attr = cur->properties; - while (attr != NULL) { - if ((attr->ns != NULL) - && (xmlStrEqual(attr->ns->prefix, BAD_CAST "xml"))) { - if (xmlListSearch(list, attr) == NULL) { - xmlListInsert(list, attr); + if (parent_visible && (cur->parent != NULL) && + (!xmlC14NIsVisible(ctx, cur->parent, cur->parent->parent))) + { + xmlNodePtr tmp; + + /* + * If XPath node-set is not specified then the parent is always + * visible! + */ + tmp = cur->parent; + while (tmp != NULL) { + attr = tmp->properties; + while (attr != NULL) { + if (xmlC14NIsXmlAttr(attr) != 0) { + if (xmlListSearch(list, attr) == NULL) { + xmlListInsert(list, attr); + } } + attr = attr->next; + } + tmp = tmp->parent; + } + } + + /* done */ + break; + case XML_C14N_EXCLUSIVE_1_0: + /* attributes in the XML namespace, such as xml:lang and xml:space + * are not imported into orphan nodes of the document subset + */ + + /* + * Add all visible attributes from current node. + */ + attr = cur->properties; + while (attr != NULL) { + /* check that attribute is visible */ + if (xmlC14NIsVisible(ctx, attr, cur)) { + xmlListInsert(list, attr); + } + attr = attr->next; + } + + /* do nothing special for xml attributes */ + break; + case XML_C14N_1_1: + /* The processing of an element node E MUST be modified slightly when an XPath node-set is + * given as input and some of the element's ancestors are omitted from the node-set. + * + * Simple inheritable attributes are attributes that have a value that requires at most a simple + * redeclaration. This redeclaration is done by supplying a new value in the child axis. The + * redeclaration of a simple inheritable attribute A contained in one of E's ancestors is done + * by supplying a value to an attribute Ae inside E with the same name. Simple inheritable attributes + * are xml:lang and xml:space. + * + * The method for processing the attribute axis of an element E in the node-set is hence enhanced. + * All element nodes along E's ancestor axis are examined for the nearest occurrences of simple + * inheritable attributes in the xml namespace, such as xml:lang and xml:space (whether or not they + * are in the node-set). From this list of attributes, any simple inheritable attributes that are + * already in E's attribute axis (whether or not they are in the node-set) are removed. Then, + * lexicographically merge this attribute list with the nodes of E's attribute axis that are in + * the node-set. The result of visiting the attribute axis is computed by processing the attribute + * nodes in this merged attribute list. + * + * The xml:id attribute is not a simple inheritable attribute and no processing of these attributes is + * performed. + * + * The xml:base attribute is not a simple inheritable attribute and requires special processing beyond + * a simple redeclaration. + * + * Attributes in the XML namespace other than xml:base, xml:id, xml:lang, and xml:space MUST be processed + * as ordinary attributes. + */ + + /* + * Add all visible attributes from current node. + */ + attr = cur->properties; + while (attr != NULL) { + /* special processing for XML attribute kiks in only when we have invisible parents */ + if ((!parent_visible) || (xmlC14NIsXmlAttr(attr) == 0)) { + /* check that attribute is visible */ + if (xmlC14NIsVisible(ctx, attr, cur)) { + xmlListInsert(list, attr); + } + } else { + int matched = 0; + + /* check for simple inheritance attributes */ + if((!matched) && (xml_lang_attr == NULL) && xmlStrEqual(attr->name, BAD_CAST "lang")) { + xml_lang_attr = attr; + matched = 1; + } + if((!matched) && (xml_space_attr == NULL) && xmlStrEqual(attr->name, BAD_CAST "space")) { + xml_space_attr = attr; + matched = 1; + } + + /* check for base attr */ + if((!matched) && (xml_base_attr == NULL) && xmlStrEqual(attr->name, BAD_CAST "base")) { + xml_base_attr = attr; + matched = 1; + } + + /* otherwise, it is a normal attribute, so just check if it is visible */ + if((!matched) && xmlC14NIsVisible(ctx, attr, cur)) { + xmlListInsert(list, attr); + } + } + + /* move to the next one */ + attr = attr->next; + } + + /* special processing for XML attribute kiks in only when we have invisible parents */ + if ((parent_visible)) { + + /* simple inheritance attributes - copy */ + if(xml_lang_attr == NULL) { + xml_lang_attr = xmlC14NFindHiddenParentAttr(ctx, cur->parent, BAD_CAST "lang", XML_XML_NAMESPACE); + } + if(xml_lang_attr != NULL) { + xmlListInsert(list, xml_lang_attr); + } + if(xml_space_attr == NULL) { + xml_space_attr = xmlC14NFindHiddenParentAttr(ctx, cur->parent, BAD_CAST "space", XML_XML_NAMESPACE); + } + if(xml_space_attr != NULL) { + xmlListInsert(list, xml_space_attr); + } + + /* base uri attribute - fix up */ + if(xml_base_attr == NULL) { + /* if we don't have base uri attribute, check if we have a "hidden" one above */ + xml_base_attr = xmlC14NFindHiddenParentAttr(ctx, cur->parent, BAD_CAST "base", XML_XML_NAMESPACE); + } + if(xml_base_attr != NULL) { + xml_base_attr = xmlC14NFixupBaseAttr(ctx, xml_base_attr); + if(xml_base_attr != NULL) { + xmlListInsert(list, xml_base_attr); + + /* note that we MUST delete returned attr node ourselves! */ + xml_base_attr->next = attrs_to_delete; + attrs_to_delete = xml_base_attr; } - attr = attr->next; } - cur = cur->parent; } + + /* done */ + break; } - /* - * print out all elements from list + /* + * print out all elements from list */ xmlListWalk(list, (xmlListWalker) xmlC14NPrintAttrs, (const void *) ctx); - /* + /* * Cleanup */ + xmlFreePropList(attrs_to_delete); xmlListDelete(list); return (0); } -/** +/** * xmlC14NCheckForRelativeNamespaces: * @ctx: the C14N context * @cur: the current element node @@ -1094,21 +1391,23 @@ /** * xmlC14NProcessElementNode: - * @ctx: the pointer to C14N context object + * @ctx: the pointer to C14N context object * @cur: the node to process - * + * @visible: this node is visible + * @all_parents_visible: whether all the parents of this node are visible + * * Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n) * * Element Nodes - * If the element is not in the node-set, then the result is obtained - * by processing the namespace axis, then the attribute axis, then - * processing the child nodes of the element that are in the node-set - * (in document order). If the element is in the node-set, then the result - * is an open angle bracket (<), the element QName, the result of - * processing the namespace axis, the result of processing the attribute - * axis, a close angle bracket (>), the result of processing the child - * nodes of the element that are in the node-set (in document order), an - * open angle bracket, a forward slash (/), the element QName, and a close + * If the element is not in the node-set, then the result is obtained + * by processing the namespace axis, then the attribute axis, then + * processing the child nodes of the element that are in the node-set + * (in document order). If the element is in the node-set, then the result + * is an open angle bracket (<), the element QName, the result of + * processing the namespace axis, the result of processing the attribute + * axis, a close angle bracket (>), the result of processing the child + * nodes of the element that are in the node-set (in document order), an + * open angle bracket, a forward slash (/), the element QName, and a close * angle bracket. * * Returns non-negative value on success or negative value on fail @@ -1125,7 +1424,7 @@ return (-1); } - /* + /* * Check relative relative namespaces: * implementations of XML canonicalization MUST report an operation * failure on documents containing relative namespace URIs. @@ -1136,13 +1435,13 @@ } - /* + /* * Save ns_rendered stack position */ memset(&state, 0, sizeof(state)); xmlC14NVisibleNsStackSave(ctx->ns_rendered, &state); - if (visible) { + if (visible) { if (ctx->parent_is_doc) { /* save this flag into the stack */ parent_is_doc = ctx->parent_is_doc; @@ -1159,7 +1458,7 @@ xmlOutputBufferWriteString(ctx->buf, (const char *) cur->name); } - if (!ctx->exclusive) { + if (!xmlC14NIsExclusive(ctx)) { ret = xmlC14NProcessNamespacesAxis(ctx, cur, visible); } else { ret = xmlExcC14NProcessNamespacesAxis(ctx, cur, visible); @@ -1172,14 +1471,14 @@ if(visible) { xmlC14NVisibleNsStackShift(ctx->ns_rendered); } - + ret = xmlC14NProcessAttrsAxis(ctx, cur, visible); if (ret < 0) { xmlC14NErrInternal("processing attributes axis"); - return (-1); + return (-1); } - if (visible) { + if (visible) { xmlOutputBufferWriteString(ctx->buf, ">"); } if (cur->children != NULL) { @@ -1205,7 +1504,7 @@ } } - /* + /* * Restore ns_rendered stack position */ xmlC14NVisibleNsStackRestore(ctx->ns_rendered, &state); @@ -1214,9 +1513,9 @@ /** * xmlC14NProcessNode: - * @ctx: the pointer to C14N context object + * @ctx: the pointer to C14N context object * @cur: the node to process - * + * * Processes the given node * * Returns non-negative value on success or negative value on fail @@ -1241,9 +1540,9 @@ case XML_TEXT_NODE: /* * Text Nodes - * the string value, except all ampersands are replaced - * by &, all open angle brackets (<) are replaced by <, all closing - * angle brackets (>) are replaced by >, and all #xD characters are + * the string value, except all ampersands are replaced + * by &, all open angle brackets (<) are replaced by <, all closing + * angle brackets (>) are replaced by >, and all #xD characters are * replaced by . */ /* cdata sections are processed as text nodes */ @@ -1263,16 +1562,16 @@ } break; case XML_PI_NODE: - /* - * Processing Instruction (PI) Nodes- - * The opening PI symbol (). If the string value is empty, - * then the leading space is not added. Also, a trailing #xA is - * rendered after the closing PI symbol for PI children of the - * root node with a lesser document order than the document - * element, and a leading #xA is rendered before the opening PI - * symbol of PI children of the root node with a greater document + /* + * Processing Instruction (PI) Nodes- + * The opening PI symbol (). If the string value is empty, + * then the leading space is not added. Also, a trailing #xA is + * rendered after the closing PI symbol for PI children of the + * root node with a lesser document order than the document + * element, and a leading #xA is rendered before the opening PI + * symbol of PI children of the root node with a greater document * order than the document element. */ if (visible) { @@ -1311,17 +1610,17 @@ case XML_COMMENT_NODE: /* * Comment Nodes - * Nothing if generating canonical XML without comments. For - * canonical XML with comments, generate the opening comment - * symbol (). Also, a trailing #xA is rendered - * after the closing comment symbol for comment children of the - * root node with a lesser document order than the document - * element, and a leading #xA is rendered before the opening - * comment symbol of comment children of the root node with a - * greater document order than the document element. (Comment - * children of the root node represent comments outside of the - * top-level document element and outside of the document type + * Nothing if generating canonical XML without comments. For + * canonical XML with comments, generate the opening comment + * symbol (). Also, a trailing #xA is rendered + * after the closing comment symbol for comment children of the + * root node with a lesser document order than the document + * element, and a leading #xA is rendered before the opening + * comment symbol of comment children of the root node with a + * greater document order than the document element. (Comment + * children of the root node represent comments outside of the + * top-level document element and outside of the document type * declaration). */ if (visible && ctx->with_comments) { @@ -1391,8 +1690,8 @@ case XML_XINCLUDE_START: case XML_XINCLUDE_END: #endif - /* - * should be ignored according to "W3C Canonical XML" + /* + * should be ignored according to "W3C Canonical XML" */ break; default: @@ -1405,9 +1704,9 @@ /** * xmlC14NProcessNodeList: - * @ctx: the pointer to C14N context object + * @ctx: the pointer to C14N context object * @cur: the node to start from - * + * * Processes all nodes in the row starting from cur. * * Returns non-negative value on success or negative value on fail @@ -1432,7 +1731,7 @@ /** * xmlC14NFreeCtx: * @ctx: the pointer to C14N context object - * + * * Cleanups the C14N context object. */ @@ -1452,28 +1751,29 @@ /** * xmlC14NNewCtx: - * @doc: the XML document for canonization - * @is_visible_callback:the function to use to determine is node visible + * @doc: the XML document for canonization + * @is_visible_callback:the function to use to determine is node visible * or not - * @user_data: the first parameter for @is_visible_callback function + * @user_data: the first parameter for @is_visible_callback function * (in most cases, it is nodes set) - * @inclusive_ns_prefixe the list of inclusive namespace prefixes + * @mode: the c14n mode (see @xmlC14NMode) + * @inclusive_ns_prefixe the list of inclusive namespace prefixes * ended with a NULL or NULL if there is no - * inclusive namespaces (only for exclusive + * inclusive namespaces (only for ` * canonicalization) - * @with_comments: include comments in the result (!=0) or not (==0) - * @buf: the output buffer to store canonical XML; this + * @with_comments: include comments in the result (!=0) or not (==0) + * @buf: the output buffer to store canonical XML; this * buffer MUST have encoder==NULL because C14N requires * UTF-8 output - * + * * Creates new C14N context object to store C14N parameters. * * Returns pointer to newly created object (success) or NULL (fail) */ static xmlC14NCtxPtr -xmlC14NNewCtx(xmlDocPtr doc, +xmlC14NNewCtx(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback, void* user_data, - int exclusive, xmlChar ** inclusive_ns_prefixes, + xmlC14NMode mode, xmlChar ** inclusive_ns_prefixes, int with_comments, xmlOutputBufferPtr buf) { xmlC14NCtxPtr ctx = NULL; @@ -1531,11 +1831,11 @@ } /* - * Set "exclusive" flag, create a nodes set for namespaces - * stack and remember list of incluseve prefixes + * Set "mode" flag and remember list of incluseve prefixes + * for exclusive c14n */ - if (exclusive) { - ctx->exclusive = 1; + ctx->mode = mode; + if(xmlC14NIsExclusive(ctx)) { ctx->inclusive_ns_prefixes = inclusive_ns_prefixes; } return (ctx); @@ -1543,34 +1843,34 @@ /** * xmlC14NExecute: - * @doc: the XML document for canonization - * @is_visible_callback:the function to use to determine is node visible + * @doc: the XML document for canonization + * @is_visible_callback:the function to use to determine is node visible * or not - * @user_data: the first parameter for @is_visible_callback function + * @user_data: the first parameter for @is_visible_callback function * (in most cases, it is nodes set) - * @exclusive: the exclusive flag (0 - non-exclusive canonicalization; - * otherwise - exclusive canonicalization) - * @inclusive_ns_prefixes: the list of inclusive namespace prefixes + * @mode: the c14n mode (see @xmlC14NMode) + * @inclusive_ns_prefixes: the list of inclusive namespace prefixes * ended with a NULL or NULL if there is no - * inclusive namespaces (only for exclusive + * inclusive namespaces (only for exclusive * canonicalization, ignored otherwise) - * @with_comments: include comments in the result (!=0) or not (==0) - * @buf: the output buffer to store canonical XML; this + * @with_comments: include comments in the result (!=0) or not (==0) + * @buf: the output buffer to store canonical XML; this * buffer MUST have encoder==NULL because C14N requires * UTF-8 output - * + * * Dumps the canonized image of given XML document into the provided buffer. * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n) * - * Returns non-negative value on success or a negative value on fail + * Returns non-negative value on success or a negative value on fail */ -int +int xmlC14NExecute(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback, - void* user_data, int exclusive, xmlChar **inclusive_ns_prefixes, + void* user_data, int mode, xmlChar **inclusive_ns_prefixes, int with_comments, xmlOutputBufferPtr buf) { xmlC14NCtxPtr ctx; + xmlC14NMode c14n_mode = XML_C14N_1_0; int ret; if ((buf == NULL) || (doc == NULL)) { @@ -1578,6 +1878,19 @@ return (-1); } + /* for backward compatibility, we have to have "mode" as "int" + and here we check that user gives valid value */ + switch(mode) { + case XML_C14N_1_0: + case XML_C14N_EXCLUSIVE_1_0: + case XML_C14N_1_1: + c14n_mode = (xmlC14NMode)mode; + break; + default: + xmlC14NErrParam("invalid mode for executing c14n"); + return (-1); + } + /* * Validate the encoding output buffer encoding */ @@ -1587,9 +1900,9 @@ return (-1); } - ctx = xmlC14NNewCtx(doc, is_visible_callback, user_data, - exclusive, inclusive_ns_prefixes, - with_comments, buf); + ctx = xmlC14NNewCtx(doc, is_visible_callback, user_data, + c14n_mode, inclusive_ns_prefixes, + with_comments, buf); if (ctx == NULL) { xmlC14NErr(NULL, (xmlNodePtr) doc, XML_C14N_CREATE_CTXT, "xmlC14NExecute: unable to create C14N context\n"); @@ -1598,12 +1911,12 @@ - /* + /* * Root Node - * The root node is the parent of the top-level document element. The - * result of processing each of its child nodes that is in the node-set - * in document order. The root node does not generate a byte order mark, - * XML declaration, nor anything from within the document type + * The root node is the parent of the top-level document element. The + * result of processing each of its child nodes that is in the node-set + * in document order. The root node does not generate a byte order mark, + * XML declaration, nor anything from within the document type * declaration. */ if (doc->children != NULL) { @@ -1625,7 +1938,7 @@ return (-1); } - /* + /* * Cleanup */ xmlC14NFreeCtx(ctx); @@ -1634,34 +1947,33 @@ /** * xmlC14NDocSaveTo: - * @doc: the XML document for canonization - * @nodes: the nodes set to be included in the canonized image - * or NULL if all document nodes should be included - * @exclusive: the exclusive flag (0 - non-exclusive canonicalization; - * otherwise - exclusive canonicalization) - * @inclusive_ns_prefixes: the list of inclusive namespace prefixes + * @doc: the XML document for canonization + * @nodes: the nodes set to be included in the canonized image + * or NULL if all document nodes should be included + * @mode: the c14n mode (see @xmlC14NMode) + * @inclusive_ns_prefixes: the list of inclusive namespace prefixes * ended with a NULL or NULL if there is no - * inclusive namespaces (only for exclusive + * inclusive namespaces (only for exclusive * canonicalization, ignored otherwise) - * @with_comments: include comments in the result (!=0) or not (==0) - * @buf: the output buffer to store canonical XML; this + * @with_comments: include comments in the result (!=0) or not (==0) + * @buf: the output buffer to store canonical XML; this * buffer MUST have encoder==NULL because C14N requires * UTF-8 output - * + * * Dumps the canonized image of given XML document into the provided buffer. * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n) * - * Returns non-negative value on success or a negative value on fail + * Returns non-negative value on success or a negative value on fail */ int xmlC14NDocSaveTo(xmlDocPtr doc, xmlNodeSetPtr nodes, - int exclusive, xmlChar ** inclusive_ns_prefixes, + int mode, xmlChar ** inclusive_ns_prefixes, int with_comments, xmlOutputBufferPtr buf) { - return(xmlC14NExecute(doc, + return(xmlC14NExecute(doc, (xmlC14NIsVisibleCallback)xmlC14NIsNodeInNodeset, nodes, - exclusive, + mode, inclusive_ns_prefixes, with_comments, buf)); @@ -1670,29 +1982,28 @@ /** * xmlC14NDocDumpMemory: - * @doc: the XML document for canonization - * @nodes: the nodes set to be included in the canonized image - * or NULL if all document nodes should be included - * @exclusive: the exclusive flag (0 - non-exclusive canonicalization; - * otherwise - exclusive canonicalization) - * @inclusive_ns_prefixes: the list of inclusive namespace prefixes + * @doc: the XML document for canonization + * @nodes: the nodes set to be included in the canonized image + * or NULL if all document nodes should be included + * @mode: the c14n mode (see @xmlC14NMode) + * @inclusive_ns_prefixes: the list of inclusive namespace prefixes * ended with a NULL or NULL if there is no - * inclusive namespaces (only for exclusive + * inclusive namespaces (only for exclusive * canonicalization, ignored otherwise) - * @with_comments: include comments in the result (!=0) or not (==0) - * @doc_txt_ptr: the memory pointer for allocated canonical XML text; + * @with_comments: include comments in the result (!=0) or not (==0) + * @doc_txt_ptr: the memory pointer for allocated canonical XML text; * the caller of this functions is responsible for calling - * xmlFree() to free allocated memory - * + * xmlFree() to free allocated memory + * * Dumps the canonized image of given XML document into memory. * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n) * - * Returns the number of bytes written on success or a negative value on fail + * Returns the number of bytes written on success or a negative value on fail */ int xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes, - int exclusive, xmlChar ** inclusive_ns_prefixes, + int mode, xmlChar ** inclusive_ns_prefixes, int with_comments, xmlChar ** doc_txt_ptr) { int ret; @@ -1706,7 +2017,7 @@ *doc_txt_ptr = NULL; /* - * create memory buffer with UTF8 (default) encoding + * create memory buffer with UTF8 (default) encoding */ buf = xmlAllocOutputBuffer(NULL); if (buf == NULL) { @@ -1717,7 +2028,7 @@ /* * canonize document and write to buffer */ - ret = xmlC14NDocSaveTo(doc, nodes, exclusive, inclusive_ns_prefixes, + ret = xmlC14NDocSaveTo(doc, nodes, mode, inclusive_ns_prefixes, with_comments, buf); if (ret < 0) { xmlC14NErrInternal("saving doc to output buffer"); @@ -1725,9 +2036,9 @@ return (-1); } - ret = buf->buffer->use; + ret = xmlBufUse(buf->buffer); if (ret > 0) { - *doc_txt_ptr = xmlStrndup(buf->buffer->content, ret); + *doc_txt_ptr = xmlStrndup(xmlBufContent(buf->buffer), ret); } (void) xmlOutputBufferClose(buf); @@ -1740,31 +2051,30 @@ /** * xmlC14NDocSave: - * @doc: the XML document for canonization - * @nodes: the nodes set to be included in the canonized image - * or NULL if all document nodes should be included - * @exclusive: the exclusive flag (0 - non-exclusive canonicalization; - * otherwise - exclusive canonicalization) - * @inclusive_ns_prefixes: the list of inclusive namespace prefixes + * @doc: the XML document for canonization + * @nodes: the nodes set to be included in the canonized image + * or NULL if all document nodes should be included + * @mode: the c14n mode (see @xmlC14NMode) + * @inclusive_ns_prefixes: the list of inclusive namespace prefixes * ended with a NULL or NULL if there is no - * inclusive namespaces (only for exclusive + * inclusive namespaces (only for exclusive * canonicalization, ignored otherwise) - * @with_comments: include comments in the result (!=0) or not (==0) - * @filename: the filename to store canonical XML image - * @compression: the compression level (zlib requred): + * @with_comments: include comments in the result (!=0) or not (==0) + * @filename: the filename to store canonical XML image + * @compression: the compression level (zlib requred): * -1 - libxml default, - * 0 - uncompressed, + * 0 - uncompressed, * >0 - compression level - * + * * Dumps the canonized image of given XML document into the file. * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n) * - * Returns the number of bytes written success or a negative value on fail + * Returns the number of bytes written success or a negative value on fail */ int xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes, - int exclusive, xmlChar ** inclusive_ns_prefixes, + int mode, xmlChar ** inclusive_ns_prefixes, int with_comments, const char *filename, int compression) { xmlOutputBufferPtr buf; @@ -1779,7 +2089,7 @@ compression = xmlGetCompressMode(); #endif - /* + /* * save the content to a temp buffer, use default UTF8 encoding. */ buf = xmlOutputBufferCreateFilename(filename, NULL, compression); @@ -1791,7 +2101,7 @@ /* * canonize document and write to buffer */ - ret = xmlC14NDocSaveTo(doc, nodes, exclusive, inclusive_ns_prefixes, + ret = xmlC14NDocSaveTo(doc, nodes, mode, inclusive_ns_prefixes, with_comments, buf); if (ret < 0) { xmlC14NErrInternal("cannicanize document to buffer"); @@ -1799,8 +2109,8 @@ return (-1); } - /* - * get the numbers of bytes written + /* + * get the numbers of bytes written */ ret = xmlOutputBufferClose(buf); return (ret); @@ -1814,14 +2124,14 @@ #define growBufferReentrant() { \ buffer_size *= 2; \ buffer = (xmlChar *) \ - xmlRealloc(buffer, buffer_size * sizeof(xmlChar)); \ + xmlRealloc(buffer, buffer_size * sizeof(xmlChar)); \ if (buffer == NULL) { \ xmlC14NErrMemory("growing buffer"); \ return(NULL); \ } \ } -/** +/** * xmlC11NNormalizeString: * @input: the input string * @mode: the normalization mode (attribute, comment, PI or text) @@ -1919,7 +2229,7 @@ } cur++; } - *out++ = 0; + *out = 0; return (buffer); } #endif /* LIBXML_OUTPUT_ENABLED */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/c14n.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/c14n.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/c14n.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/c14n.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -2,30 +2,30 @@ * Summary: Provide Canonical XML and Exclusive XML Canonicalization * Description: the c14n modules provides a * - * "Canonical XML" implementation + * "Canonical XML" implementation * http://www.w3.org/TR/xml-c14n - * + * * and an * * "Exclusive XML Canonicalization" implementation * http://www.w3.org/TR/xml-exc-c14n - + * Copy: See Copyright for the status of this software. - * + * * Author: Aleksey Sanin */ #ifndef __XML_C14N_H__ -#define __XML_C14N_H__ +#define __XML_C14N_H__ #ifdef LIBXML_C14N_ENABLED #ifdef LIBXML_OUTPUT_ENABLED #ifdef __cplusplus extern "C" { -#endif /* __cplusplus */ +#endif /* __cplusplus */ #include #include -#include +#include /* * XML Canonicazation @@ -37,44 +37,55 @@ * Canonical form of an XML document could be created if and only if * a) default attributes (if any) are added to all nodes * b) all character and parsed entity references are resolved - * In order to achive this in libxml2 the document MUST be loaded with + * In order to achive this in libxml2 the document MUST be loaded with * following global setings: - * + * * xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS; * xmlSubstituteEntitiesDefault(1); * * or corresponding parser context setting: * xmlParserCtxtPtr ctxt; - * - * ... + * + * ... * ctxt->loadsubset = XML_DETECT_IDS | XML_COMPLETE_ATTRS; * ctxt->replaceEntities = 1; * ... */ +/* + * xmlC14NMode: + * + * Predefined values for C14N modes + * + */ +typedef enum { + XML_C14N_1_0 = 0, /* Origianal C14N 1.0 spec */ + XML_C14N_EXCLUSIVE_1_0 = 1, /* Exclusive C14N 1.0 spec */ + XML_C14N_1_1 = 2 /* C14N 1.1 spec */ +} xmlC14NMode; -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlC14NDocSaveTo (xmlDocPtr doc, xmlNodeSetPtr nodes, - int exclusive, + int mode, /* a xmlC14NMode */ xmlChar **inclusive_ns_prefixes, - int with_comments, + int with_comments, xmlOutputBufferPtr buf); XMLPUBFUN int XMLCALL xmlC14NDocDumpMemory (xmlDocPtr doc, xmlNodeSetPtr nodes, - int exclusive, + int mode, /* a xmlC14NMode */ xmlChar **inclusive_ns_prefixes, - int with_comments, + int with_comments, xmlChar **doc_txt_ptr); XMLPUBFUN int XMLCALL xmlC14NDocSave (xmlDocPtr doc, xmlNodeSetPtr nodes, - int exclusive, + int mode, /* a xmlC14NMode */ xmlChar **inclusive_ns_prefixes, - int with_comments, + int with_comments, const char* filename, int compression); @@ -82,17 +93,27 @@ /** * This is the core C14N function */ -typedef int (*xmlC14NIsVisibleCallback) (void* user_data, +/** + * xmlC14NIsVisibleCallback: + * @user_data: user data + * @node: the curent node + * @parent: the parent node + * + * Signature for a C14N callback on visible nodes + * + * Returns 1 if the node should be included + */ +typedef int (*xmlC14NIsVisibleCallback) (void* user_data, xmlNodePtr node, xmlNodePtr parent); XMLPUBFUN int XMLCALL xmlC14NExecute (xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback, - void* user_data, - int exclusive, + void* user_data, + int mode, /* a xmlC14NMode */ xmlChar **inclusive_ns_prefixes, - int with_comments, + int with_comments, xmlOutputBufferPtr buf); #ifdef __cplusplus diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/catalog.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/catalog.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/catalog.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/catalog.c 2015-12-23 07:08:27.000000000 +0000 @@ -1,5 +1,5 @@ /** - * catalog.c: set of generic Catalog related routines + * catalog.c: set of generic Catalog related routines * * Reference: SGML Open Technical Resolution TR9401:1997. * http://www.jclark.com/sp/catalog.htm @@ -41,9 +41,17 @@ #include #include +#include "buf.h" + #define MAX_DELEGATE 50 #define MAX_CATAL_DEPTH 50 +#ifdef _WIN32 +# define PATH_SEAPARATOR ';' +#else +# define PATH_SEAPARATOR ':' +#endif + /** * TODO: * @@ -54,7 +62,7 @@ *> values "system" and "public". I have made the default be "system" to *> match yours. */ -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); @@ -71,9 +79,17 @@ #if defined(_WIN32) && defined(_MSC_VER) #undef XML_XML_DEFAULT_CATALOG static char XML_XML_DEFAULT_CATALOG[256] = "file:///etc/xml/catalog"; +#if defined(_WIN32_WCE) +/* Windows CE don't have a A variant */ +#define GetModuleHandleA GetModuleHandle +#define GetModuleFileNameA GetModuleFileName +#else +#if !defined(_WINDOWS_) void* __stdcall GetModuleHandleA(const char*); unsigned long __stdcall GetModuleFileNameA(void*, char*, unsigned long); #endif +#endif +#endif static xmlChar *xmlCatalogNormalizePublic(const xmlChar *pubID); static int xmlExpandCatalog(xmlCatalogPtr catal, const char *filename); @@ -194,7 +210,7 @@ /************************************************************************ * * - * Catalog error handlers * + * Catalog error handlers * * * ************************************************************************/ @@ -247,9 +263,9 @@ * @name: name of the entry * @value: value of the entry * @prefer: the PUBLIC vs. SYSTEM current preference value - * @group: for members of a group, the group entry + * @group: for members of a group, the group entry * - * create a new Catalog entry, this type is shared both by XML and + * create a new Catalog entry, this type is shared both by XML and * SGML catalogs, but the acceptable types values differs. * * Returns the xmlCatalogEntryPtr or NULL in case of error @@ -387,7 +403,7 @@ * @type: type of catalog * @prefer: the PUBLIC vs. SYSTEM current preference value * - * create a new Catalog, this type is shared both by XML and + * create a new Catalog, this type is shared both by XML and * SGML catalogs, but the acceptable types values differs. * * Returns the xmlCatalogPtr or NULL in case of error @@ -555,7 +571,7 @@ xns = xmlSearchNsByHref(doc, node, XML_XML_NAMESPACE); if (xns != NULL) xmlSetNsProp(node, xns, BAD_CAST "base", - cur->value); + cur->value); } switch (cur->prefer) { case XML_CATA_PREFER_NONE: @@ -673,7 +689,7 @@ xmlAddChild((xmlNodePtr) doc, catalog); xmlDumpXMLCatalogNode(catal, catalog, doc, ns, NULL); - + /* * reserialize it */ @@ -810,7 +826,7 @@ if (xmlStrncmp(urn, BAD_CAST XML_URN_PUBID, sizeof(XML_URN_PUBID) - 1)) return(NULL); urn += sizeof(XML_URN_PUBID) - 1; - + while (*urn != 0) { if (i > sizeof(result) - 4) break; @@ -900,10 +916,7 @@ inputStream->filename = (char *) xmlCanonicPath((const xmlChar *)filename); inputStream->buf = buf; - inputStream->base = inputStream->buf->buffer->content; - inputStream->cur = inputStream->buf->buffer->content; - inputStream->end = - &inputStream->buf->buffer->content[inputStream->buf->buffer->use]; + xmlBufResetInput(buf->buffer, inputStream); inputPush(ctxt, inputStream); if ((ctxt->directory == NULL) && (directory == NULL)) @@ -926,7 +939,7 @@ ctxt->myDoc = NULL; } xmlFreeParserCtxt(ctxt); - + return(ret); } @@ -978,25 +991,27 @@ return (NULL); } #endif - content = xmlMallocAtomic(size + 10); + content = (xmlChar*)xmlMallocAtomic(size + 10); if (content == NULL) { xmlCatalogErrMemory("allocating catalog data"); +#ifdef HAVE_STAT + close(fd); +#else + fclose(fd); +#endif return (NULL); } #ifdef HAVE_STAT len = read(fd, content, size); + close(fd); #else len = fread(content, 1, size, fd); + fclose(fd); #endif if (len < 0) { xmlFree(content); return (NULL); } -#ifdef HAVE_STAT - close(fd); -#else - fclose(fd); -#endif content[len] = 0; return(content); @@ -1319,7 +1334,7 @@ * * Parses the catalog file to extract the XML tree and then analyze the * tree to build a list of Catalog entries corresponding to this catalog - * + * * Returns the resulting Catalog entries list */ static xmlCatalogEntryPtr @@ -1387,19 +1402,17 @@ * @catal: an existing but incomplete catalog entry * * Fetch and parse the subcatalog referenced by an entry - * + * * Returns 0 in case of success, -1 otherwise */ static int xmlFetchXMLCatalogFile(xmlCatalogEntryPtr catal) { xmlCatalogEntryPtr doc; - if (catal == NULL) + if (catal == NULL) return(-1); if (catal->URL == NULL) return(-1); - if (catal->children != NULL) - return(-1); /* * lock the whole catalog for modification @@ -1488,7 +1501,7 @@ xmlCatalogEntryType typ; int doregister = 0; - if ((catal == NULL) || + if ((catal == NULL) || ((catal->type != XML_CATA_CATALOG) && (catal->type != XML_CATA_BROKEN_CATALOG))) return(-1); @@ -1541,7 +1554,7 @@ NULL, catal->prefer, NULL); if (doregister) { catal->type = XML_CATA_CATALOG; - cur = xmlHashLookup(xmlCatalogXMLFiles, catal->URL); + cur = (xmlCatalogEntryPtr)xmlHashLookup(xmlCatalogXMLFiles, catal->URL); if (cur != NULL) cur->children = catal->children; } @@ -1564,7 +1577,7 @@ xmlCatalogEntryPtr cur; int ret = 0; - if ((catal == NULL) || + if ((catal == NULL) || ((catal->type != XML_CATA_CATALOG) && (catal->type != XML_CATA_BROKEN_CATALOG))) return(-1); @@ -1779,7 +1792,7 @@ } if (nbList < MAX_DELEGATE) delegates[nbList++] = cur->URL; - + if (cur->children == NULL) { xmlFetchXMLCatalogFile(cur); } @@ -1816,6 +1829,8 @@ if (ret != NULL) { catal->depth--; return(ret); + } else if (catal->depth > MAX_CATAL_DEPTH) { + return(NULL); } } } @@ -1856,6 +1871,13 @@ if (URI == NULL) return(NULL); + if (catal->depth > MAX_CATAL_DEPTH) { + xmlCatalogErr(catal, NULL, XML_CATALOG_RECURSION, + "Detected recursion in catalog %s\n", + catal->name, NULL, NULL); + return(NULL); + } + /* * First tries steps 2/ 3/ 4/ if a system ID is provided. */ @@ -1983,7 +2005,7 @@ xmlChar *ret = NULL; xmlChar *urnID = NULL; xmlChar *normid; - + if (catal == NULL) return(NULL); if ((pubID == NULL) && (sysID == NULL)) @@ -1992,7 +2014,7 @@ normid = xmlCatalogNormalizePublic(pubID); if (normid != NULL) pubID = (*normid != 0 ? normid : NULL); - + if (!xmlStrncmp(pubID, BAD_CAST XML_URN_PUBID, sizeof(XML_URN_PUBID) - 1)) { urnID = xmlCatalogUnWrapURN(pubID); if (xmlDebugCatalogs) { @@ -2041,16 +2063,18 @@ if (catal->children != NULL) { ret = xmlCatalogXMLResolve(catal->children, pubID, sysID); if (ret != NULL) { - if (normid != NULL) - xmlFree(normid); - return(ret); - } + break; + } else if ((catal->children != NULL) && + (catal->children->depth > MAX_CATAL_DEPTH)) { + ret = NULL; + break; + } } } catal = catal->next; } - if (normid != NULL) - xmlFree(normid); + if (normid != NULL) + xmlFree(normid); return(ret); } @@ -2070,7 +2094,7 @@ xmlCatalogListXMLResolveURI(xmlCatalogEntryPtr catal, const xmlChar *URI) { xmlChar *ret = NULL; xmlChar *urnID = NULL; - + if (catal == NULL) return(NULL); if (URI == NULL) @@ -2130,7 +2154,7 @@ */ static const xmlChar * xmlParseSGMLCatalogComment(const xmlChar *cur) { - if ((cur[0] != '-') || (cur[1] != '-')) + if ((cur[0] != '-') || (cur[1] != '-')) return(cur); SKIP(2); while ((cur[0] != 0) && ((cur[0] != '-') || ((cur[1] != '-')))) @@ -2593,6 +2617,8 @@ return(ret); if (sysID != NULL) ret = xmlCatalogGetSGMLSystem(catal->sgml, sysID); + if (ret != NULL) + return(ret); return(NULL); } @@ -2663,7 +2689,7 @@ first = content; - + while ((*first != 0) && (*first != '-') && (*first != '<') && (!(((*first >= 'A') && (*first <= 'Z')) || ((*first >= 'a') && (*first <= 'z'))))) @@ -2758,7 +2784,7 @@ if ((sysID == NULL) || (catal == NULL)) return(NULL); - + if (xmlDebugCatalogs) xmlGenericError(xmlGenericErrorContext, "Resolve sysID %s\n", sysID); @@ -2793,7 +2819,7 @@ if ((pubID == NULL) || (catal == NULL)) return(NULL); - + if (xmlDebugCatalogs) xmlGenericError(xmlGenericErrorContext, "Resolve pubID %s\n", pubID); @@ -2889,7 +2915,7 @@ sgml = xmlCatalogSGMLResolve(catal, NULL, URI); if (sgml != NULL) - sgml = xmlStrdup(sgml); + ret = xmlStrdup(sgml); } return(ret); } @@ -2912,7 +2938,7 @@ } else { xmlHashScan(catal->sgml, (xmlHashScanner) xmlCatalogDumpEntry, out); - } + } } #endif /* LIBXML_OUTPUT_ENABLED */ @@ -2920,7 +2946,7 @@ * xmlACatalogAdd: * @catal: a Catalog * @type: the type of record to add to the catalog - * @orig: the system, public or prefix to match + * @orig: the system, public or prefix to match * @replace: the replacement value for the match * * Add an entry in the catalog, it may overwrite existing but @@ -2979,7 +3005,7 @@ (xmlHashDeallocator) xmlFreeCatalogEntry); if (res == 0) res = 1; - } + } return(res); } @@ -3038,7 +3064,7 @@ return(1); if (res < 0) return(-1); - } + } return(0); } @@ -3061,7 +3087,7 @@ if (xmlCatalogInitialized != 0) return; - if (getenv("XML_DEBUG_CATALOG")) + if (getenv("XML_DEBUG_CATALOG")) xmlDebugCatalogs = 1; xmlCatalogMutex = xmlNewRMutex(); @@ -3082,7 +3108,7 @@ xmlInitializeCatalogData(); xmlRMutexLock(xmlCatalogMutex); - if (getenv("XML_DEBUG_CATALOG")) + if (getenv("XML_DEBUG_CATALOG")) xmlDebugCatalogs = 1; if (xmlDefaultCatalog == NULL) { @@ -3105,12 +3131,12 @@ unsigned long len = GetModuleFileNameA(hmodule, buf, 255); if (len != 0) { char* p = &(buf[len]); - while (*p != '\\' && p > buf) + while (*p != '\\' && p > buf) p--; if (p != buf) { xmlChar* uri; strncpy(p, "\\..\\etc\\catalog", 255 - (p - buf)); - uri = xmlCanonicPath(buf); + uri = xmlCanonicPath((const xmlChar*)buf); if (uri != NULL) { strncpy(XML_XML_DEFAULT_CATALOG, uri, 255); xmlFree(uri); @@ -3124,15 +3150,15 @@ catalogs = XML_XML_DEFAULT_CATALOG; #endif - catal = xmlCreateNewCatalog(XML_XML_CATALOG_TYPE, + catal = xmlCreateNewCatalog(XML_XML_CATALOG_TYPE, xmlCatalogDefaultPrefer); if (catal != NULL) { - /* the XML_CATALOG_FILES envvar is allowed to contain a + /* the XML_CATALOG_FILES envvar is allowed to contain a space-separated list of entries. */ cur = catalogs; nextent = &catal->xml; while (*cur != '\0') { - while (xmlIsBlank_ch(*cur)) + while (xmlIsBlank_ch(*cur)) cur++; if (*cur != 0) { paths = cur; @@ -3209,6 +3235,9 @@ const char *cur; const char *paths; xmlChar *path; +#ifdef _WIN32 + int i, iLen; +#endif if (pathss == NULL) return; @@ -3218,15 +3247,23 @@ while (xmlIsBlank_ch(*cur)) cur++; if (*cur != 0) { paths = cur; - while ((*cur != 0) && (*cur != ':') && (!xmlIsBlank_ch(*cur))) + while ((*cur != 0) && (*cur != PATH_SEAPARATOR) && (!xmlIsBlank_ch(*cur))) cur++; path = xmlStrndup((const xmlChar *)paths, cur - paths); +#ifdef _WIN32 + iLen = strlen((const char*)path); + for(i = 0; i < iLen; i++) { + if(path[i] == '\\') { + path[i] = '/'; + } + } +#endif if (path != NULL) { xmlLoadCatalog((const char *) path); xmlFree(path); } } - while (*cur == ':') + while (*cur == PATH_SEAPARATOR) cur++; } } @@ -3246,7 +3283,7 @@ xmlGenericError(xmlGenericErrorContext, "Catalogs cleanup\n"); if (xmlCatalogXMLFiles != NULL) - xmlHashFree(xmlCatalogXMLFiles, + xmlHashFree(xmlCatalogXMLFiles, (xmlHashDeallocator)xmlFreeCatalogHashEntryList); xmlCatalogXMLFiles = NULL; if (xmlDefaultCatalog != NULL) @@ -3361,7 +3398,7 @@ /** * xmlCatalogAdd: * @type: the type of record to add to the catalog - * @orig: the system, public or prefix to match + * @orig: the system, public or prefix to match * @replace: the replacement value for the match * * Add an entry in the catalog, it may overwrite existing but @@ -3392,7 +3429,7 @@ xmlRMutexUnlock(xmlCatalogMutex); return(0); - } + } res = xmlACatalogAdd(xmlDefaultCatalog, type, orig, replace); xmlRMutexUnlock(xmlCatalogMutex); @@ -3518,8 +3555,8 @@ xmlGenericError(xmlGenericErrorContext, "Setting catalog preference to SYSTEM\n"); break; - case XML_CATA_PREFER_NONE: - break; + default: + return(ret); } } xmlCatalogDefaultPrefer = prefer; @@ -3580,7 +3617,7 @@ * * Returns the updated list */ -void * +void * xmlCatalogAddLocal(void *catalogs, const xmlChar *URL) { xmlCatalogEntryPtr catal, add; @@ -3600,7 +3637,7 @@ return(catalogs); catal = (xmlCatalogEntryPtr) catalogs; - if (catal == NULL) + if (catal == NULL) return((void *) add); while (catal->next != NULL) @@ -3615,7 +3652,7 @@ * @pubID: the public ID string * @sysID: the system ID string * - * Do a complete resolution lookup of an External Identifier using a + * Do a complete resolution lookup of an External Identifier using a * document's private catalog list * * Returns the URI of the resource or NULL if not found, it must be freed @@ -3660,7 +3697,7 @@ * @catalogs: a document's list of catalogs * @URI: the URI * - * Do a complete resolution lookup of an URI using a + * Do a complete resolution lookup of an URI using a * document's private catalog list * * Returns the URI of the resource or NULL if not found, it must be freed @@ -3721,7 +3758,7 @@ if (sysID == NULL) return(NULL); - + /* * Check first the XML catalogs */ @@ -3765,7 +3802,7 @@ if (pubID == NULL) return(NULL); - + /* * Check first the XML catalogs */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/catalog.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/catalog.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/catalog.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/catalog.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -68,111 +68,111 @@ */ XMLPUBFUN xmlCatalogPtr XMLCALL xmlNewCatalog (int sgml); -XMLPUBFUN xmlCatalogPtr XMLCALL +XMLPUBFUN xmlCatalogPtr XMLCALL xmlLoadACatalog (const char *filename); -XMLPUBFUN xmlCatalogPtr XMLCALL +XMLPUBFUN xmlCatalogPtr XMLCALL xmlLoadSGMLSuperCatalog (const char *filename); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlConvertSGMLCatalog (xmlCatalogPtr catal); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlACatalogAdd (xmlCatalogPtr catal, const xmlChar *type, const xmlChar *orig, const xmlChar *replace); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlACatalogRemove (xmlCatalogPtr catal, const xmlChar *value); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlACatalogResolve (xmlCatalogPtr catal, const xmlChar *pubID, const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlACatalogResolveSystem(xmlCatalogPtr catal, const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlACatalogResolvePublic(xmlCatalogPtr catal, const xmlChar *pubID); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlACatalogResolveURI (xmlCatalogPtr catal, const xmlChar *URI); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlACatalogDump (xmlCatalogPtr catal, FILE *out); #endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeCatalog (xmlCatalogPtr catal); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCatalogIsEmpty (xmlCatalogPtr catal); /* * Global operations. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlInitializeCatalog (void); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlLoadCatalog (const char *filename); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlLoadCatalogs (const char *paths); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCatalogCleanup (void); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCatalogDump (FILE *out); #endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlCatalogResolve (const xmlChar *pubID, const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlCatalogResolveSystem (const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlCatalogResolvePublic (const xmlChar *pubID); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlCatalogResolveURI (const xmlChar *URI); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCatalogAdd (const xmlChar *type, const xmlChar *orig, const xmlChar *replace); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCatalogRemove (const xmlChar *value); -XMLPUBFUN xmlDocPtr XMLCALL +XMLPUBFUN xmlDocPtr XMLCALL xmlParseCatalogFile (const char *filename); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCatalogConvert (void); /* * Strictly minimal interfaces for per-document catalogs used * by the parser. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCatalogFreeLocal (void *catalogs); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlCatalogAddLocal (void *catalogs, const xmlChar *URL); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlCatalogLocalResolve (void *catalogs, const xmlChar *pubID, const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlCatalogLocalResolveURI(void *catalogs, const xmlChar *URI); /* * Preference settings. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCatalogSetDebug (int level); -XMLPUBFUN xmlCatalogPrefer XMLCALL +XMLPUBFUN xmlCatalogPrefer XMLCALL xmlCatalogSetDefaultPrefer(xmlCatalogPrefer prefer); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCatalogSetDefaults (xmlCatalogAllow allow); -XMLPUBFUN xmlCatalogAllow XMLCALL +XMLPUBFUN xmlCatalogAllow XMLCALL xmlCatalogGetDefaults (void); /* DEPRECATED interfaces */ -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlCatalogGetSystem (const xmlChar *sysID); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlCatalogGetPublic (const xmlChar *pubID); #ifdef __cplusplus diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/chvalid.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/chvalid.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/chvalid.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/chvalid.c 2015-12-23 07:08:27.000000000 +0000 @@ -46,109 +46,109 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -static const xmlChSRange xmlIsBaseChar_srng[] = { {0x100, 0x131}, - {0x134, 0x13e}, {0x141, 0x148}, {0x14a, 0x17e}, {0x180, 0x1c3}, - {0x1cd, 0x1f0}, {0x1f4, 0x1f5}, {0x1fa, 0x217}, {0x250, 0x2a8}, - {0x2bb, 0x2c1}, {0x386, 0x386}, {0x388, 0x38a}, {0x38c, 0x38c}, - {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3d6}, {0x3da, 0x3da}, - {0x3dc, 0x3dc}, {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3f3}, - {0x401, 0x40c}, {0x40e, 0x44f}, {0x451, 0x45c}, {0x45e, 0x481}, - {0x490, 0x4c4}, {0x4c7, 0x4c8}, {0x4cb, 0x4cc}, {0x4d0, 0x4eb}, - {0x4ee, 0x4f5}, {0x4f8, 0x4f9}, {0x531, 0x556}, {0x559, 0x559}, - {0x561, 0x586}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, - {0x641, 0x64a}, {0x671, 0x6b7}, {0x6ba, 0x6be}, {0x6c0, 0x6ce}, - {0x6d0, 0x6d3}, {0x6d5, 0x6d5}, {0x6e5, 0x6e6}, {0x905, 0x939}, - {0x93d, 0x93d}, {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990}, - {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, - {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a}, - {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33}, - {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e}, - {0xa72, 0xa74}, {0xa85, 0xa8b}, {0xa8d, 0xa8d}, {0xa8f, 0xa91}, - {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9}, - {0xabd, 0xabd}, {0xae0, 0xae0}, {0xb05, 0xb0c}, {0xb0f, 0xb10}, - {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb36, 0xb39}, - {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb85, 0xb8a}, - {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c}, - {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5}, - {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28}, - {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c}, - {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, - {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10}, - {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xe01, 0xe2e}, - {0xe30, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45}, {0xe81, 0xe82}, - {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d}, - {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5}, - {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeae}, {0xeb0, 0xeb0}, - {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xf40, 0xf47}, - {0xf49, 0xf69}, {0x10a0, 0x10c5}, {0x10d0, 0x10f6}, {0x1100, 0x1100}, - {0x1102, 0x1103}, {0x1105, 0x1107}, {0x1109, 0x1109}, {0x110b, 0x110c}, - {0x110e, 0x1112}, {0x113c, 0x113c}, {0x113e, 0x113e}, {0x1140, 0x1140}, - {0x114c, 0x114c}, {0x114e, 0x114e}, {0x1150, 0x1150}, {0x1154, 0x1155}, - {0x1159, 0x1159}, {0x115f, 0x1161}, {0x1163, 0x1163}, {0x1165, 0x1165}, - {0x1167, 0x1167}, {0x1169, 0x1169}, {0x116d, 0x116e}, {0x1172, 0x1173}, - {0x1175, 0x1175}, {0x119e, 0x119e}, {0x11a8, 0x11a8}, {0x11ab, 0x11ab}, - {0x11ae, 0x11af}, {0x11b7, 0x11b8}, {0x11ba, 0x11ba}, {0x11bc, 0x11c2}, - {0x11eb, 0x11eb}, {0x11f0, 0x11f0}, {0x11f9, 0x11f9}, {0x1e00, 0x1e9b}, - {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, - {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, - {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, - {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, - {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, - {0x2126, 0x2126}, {0x212a, 0x212b}, {0x212e, 0x212e}, {0x2180, 0x2182}, +static const xmlChSRange xmlIsBaseChar_srng[] = { {0x100, 0x131}, + {0x134, 0x13e}, {0x141, 0x148}, {0x14a, 0x17e}, {0x180, 0x1c3}, + {0x1cd, 0x1f0}, {0x1f4, 0x1f5}, {0x1fa, 0x217}, {0x250, 0x2a8}, + {0x2bb, 0x2c1}, {0x386, 0x386}, {0x388, 0x38a}, {0x38c, 0x38c}, + {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3d6}, {0x3da, 0x3da}, + {0x3dc, 0x3dc}, {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3f3}, + {0x401, 0x40c}, {0x40e, 0x44f}, {0x451, 0x45c}, {0x45e, 0x481}, + {0x490, 0x4c4}, {0x4c7, 0x4c8}, {0x4cb, 0x4cc}, {0x4d0, 0x4eb}, + {0x4ee, 0x4f5}, {0x4f8, 0x4f9}, {0x531, 0x556}, {0x559, 0x559}, + {0x561, 0x586}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, + {0x641, 0x64a}, {0x671, 0x6b7}, {0x6ba, 0x6be}, {0x6c0, 0x6ce}, + {0x6d0, 0x6d3}, {0x6d5, 0x6d5}, {0x6e5, 0x6e6}, {0x905, 0x939}, + {0x93d, 0x93d}, {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990}, + {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, + {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a}, + {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33}, + {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e}, + {0xa72, 0xa74}, {0xa85, 0xa8b}, {0xa8d, 0xa8d}, {0xa8f, 0xa91}, + {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9}, + {0xabd, 0xabd}, {0xae0, 0xae0}, {0xb05, 0xb0c}, {0xb0f, 0xb10}, + {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb36, 0xb39}, + {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb85, 0xb8a}, + {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c}, + {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5}, + {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28}, + {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c}, + {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, + {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10}, + {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xe01, 0xe2e}, + {0xe30, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45}, {0xe81, 0xe82}, + {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d}, + {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5}, + {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeae}, {0xeb0, 0xeb0}, + {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xf40, 0xf47}, + {0xf49, 0xf69}, {0x10a0, 0x10c5}, {0x10d0, 0x10f6}, {0x1100, 0x1100}, + {0x1102, 0x1103}, {0x1105, 0x1107}, {0x1109, 0x1109}, {0x110b, 0x110c}, + {0x110e, 0x1112}, {0x113c, 0x113c}, {0x113e, 0x113e}, {0x1140, 0x1140}, + {0x114c, 0x114c}, {0x114e, 0x114e}, {0x1150, 0x1150}, {0x1154, 0x1155}, + {0x1159, 0x1159}, {0x115f, 0x1161}, {0x1163, 0x1163}, {0x1165, 0x1165}, + {0x1167, 0x1167}, {0x1169, 0x1169}, {0x116d, 0x116e}, {0x1172, 0x1173}, + {0x1175, 0x1175}, {0x119e, 0x119e}, {0x11a8, 0x11a8}, {0x11ab, 0x11ab}, + {0x11ae, 0x11af}, {0x11b7, 0x11b8}, {0x11ba, 0x11ba}, {0x11bc, 0x11c2}, + {0x11eb, 0x11eb}, {0x11f0, 0x11f0}, {0x11f9, 0x11f9}, {0x1e00, 0x1e9b}, + {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, + {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, + {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, + {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, + {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, + {0x2126, 0x2126}, {0x212a, 0x212b}, {0x212e, 0x212e}, {0x2180, 0x2182}, {0x3041, 0x3094}, {0x30a1, 0x30fa}, {0x3105, 0x312c}, {0xac00, 0xd7a3}}; const xmlChRangeGroup xmlIsBaseCharGroup = {197, 0, xmlIsBaseChar_srng, (xmlChLRangePtr)0}; -static const xmlChSRange xmlIsChar_srng[] = { {0x100, 0xd7ff}, +static const xmlChSRange xmlIsChar_srng[] = { {0x100, 0xd7ff}, {0xe000, 0xfffd}}; static const xmlChLRange xmlIsChar_lrng[] = { {0x10000, 0x10ffff}}; const xmlChRangeGroup xmlIsCharGroup = {2, 1, xmlIsChar_srng, xmlIsChar_lrng}; -static const xmlChSRange xmlIsCombining_srng[] = { {0x300, 0x345}, - {0x360, 0x361}, {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, - {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, - {0x64b, 0x652}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6dd, 0x6df}, - {0x6e0, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x901, 0x903}, - {0x93c, 0x93c}, {0x93e, 0x94c}, {0x94d, 0x94d}, {0x951, 0x954}, - {0x962, 0x963}, {0x981, 0x983}, {0x9bc, 0x9bc}, {0x9be, 0x9be}, - {0x9bf, 0x9bf}, {0x9c0, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd}, - {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa02, 0xa02}, {0xa3c, 0xa3c}, - {0xa3e, 0xa3e}, {0xa3f, 0xa3f}, {0xa40, 0xa42}, {0xa47, 0xa48}, - {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa83}, {0xabc, 0xabc}, - {0xabe, 0xac5}, {0xac7, 0xac9}, {0xacb, 0xacd}, {0xb01, 0xb03}, - {0xb3c, 0xb3c}, {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d}, - {0xb56, 0xb57}, {0xb82, 0xb83}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, - {0xbca, 0xbcd}, {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44}, - {0xc46, 0xc48}, {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83}, - {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6}, - {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d}, - {0xd57, 0xd57}, {0xe31, 0xe31}, {0xe34, 0xe3a}, {0xe47, 0xe4e}, - {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc}, {0xec8, 0xecd}, - {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37}, {0xf39, 0xf39}, - {0xf3e, 0xf3e}, {0xf3f, 0xf3f}, {0xf71, 0xf84}, {0xf86, 0xf8b}, - {0xf90, 0xf95}, {0xf97, 0xf97}, {0xf99, 0xfad}, {0xfb1, 0xfb7}, - {0xfb9, 0xfb9}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, {0x302a, 0x302f}, +static const xmlChSRange xmlIsCombining_srng[] = { {0x300, 0x345}, + {0x360, 0x361}, {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, + {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, + {0x64b, 0x652}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6dd, 0x6df}, + {0x6e0, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x901, 0x903}, + {0x93c, 0x93c}, {0x93e, 0x94c}, {0x94d, 0x94d}, {0x951, 0x954}, + {0x962, 0x963}, {0x981, 0x983}, {0x9bc, 0x9bc}, {0x9be, 0x9be}, + {0x9bf, 0x9bf}, {0x9c0, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd}, + {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa02, 0xa02}, {0xa3c, 0xa3c}, + {0xa3e, 0xa3e}, {0xa3f, 0xa3f}, {0xa40, 0xa42}, {0xa47, 0xa48}, + {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa83}, {0xabc, 0xabc}, + {0xabe, 0xac5}, {0xac7, 0xac9}, {0xacb, 0xacd}, {0xb01, 0xb03}, + {0xb3c, 0xb3c}, {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d}, + {0xb56, 0xb57}, {0xb82, 0xb83}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, + {0xbca, 0xbcd}, {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44}, + {0xc46, 0xc48}, {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83}, + {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6}, + {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d}, + {0xd57, 0xd57}, {0xe31, 0xe31}, {0xe34, 0xe3a}, {0xe47, 0xe4e}, + {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc}, {0xec8, 0xecd}, + {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37}, {0xf39, 0xf39}, + {0xf3e, 0xf3e}, {0xf3f, 0xf3f}, {0xf71, 0xf84}, {0xf86, 0xf8b}, + {0xf90, 0xf95}, {0xf97, 0xf97}, {0xf99, 0xfad}, {0xfb1, 0xfb7}, + {0xfb9, 0xfb9}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, {0x302a, 0x302f}, {0x3099, 0x3099}, {0x309a, 0x309a}}; const xmlChRangeGroup xmlIsCombiningGroup = {95, 0, xmlIsCombining_srng, (xmlChLRangePtr)0}; -static const xmlChSRange xmlIsDigit_srng[] = { {0x660, 0x669}, - {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f}, - {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f}, - {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9}, +static const xmlChSRange xmlIsDigit_srng[] = { {0x660, 0x669}, + {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f}, + {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f}, + {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9}, {0xf20, 0xf29}}; const xmlChRangeGroup xmlIsDigitGroup = {14, 0, xmlIsDigit_srng, (xmlChLRangePtr)0}; -static const xmlChSRange xmlIsExtender_srng[] = { {0x2d0, 0x2d0}, - {0x2d1, 0x2d1}, {0x387, 0x387}, {0x640, 0x640}, {0xe46, 0xe46}, - {0xec6, 0xec6}, {0x3005, 0x3005}, {0x3031, 0x3035}, {0x309d, 0x309e}, +static const xmlChSRange xmlIsExtender_srng[] = { {0x2d0, 0x2d0}, + {0x2d1, 0x2d1}, {0x387, 0x387}, {0x640, 0x640}, {0xe46, 0xe46}, + {0xec6, 0xec6}, {0x3005, 0x3005}, {0x3031, 0x3035}, {0x309d, 0x309e}, {0x30fc, 0x30fe}}; const xmlChRangeGroup xmlIsExtenderGroup = {10, 0, xmlIsExtender_srng, (xmlChLRangePtr)0}; -static const xmlChSRange xmlIsIdeographic_srng[] = { {0x3007, 0x3007}, +static const xmlChSRange xmlIsIdeographic_srng[] = { {0x3007, 0x3007}, {0x3021, 0x3029}, {0x4e00, 0x9fa5}}; const xmlChRangeGroup xmlIsIdeographicGroup = {3, 0, xmlIsIdeographic_srng, (xmlChLRangePtr)0}; diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/COPYING gettext-0.19.7/gettext-tools/gnulib-lib/libxml/COPYING --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/COPYING 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/COPYING 2015-12-23 07:08:27.000000000 +0000 @@ -2,7 +2,7 @@ list.c and the trio files, which are covered by a similar licence but with different Copyright notices) all the files are: - Copyright (C) 1998-2003 Daniel Veillard. All Rights Reserved. + Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -17,11 +17,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON- -NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Daniel Veillard shall not -be used in advertising or otherwise to promote the sale, use or other deal- -ings in this Software without prior written authorization from him. - +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/debugXML.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/debugXML.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/debugXML.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/debugXML.c 2015-12-23 07:08:27.000000000 +0000 @@ -85,7 +85,7 @@ * * Check that a given namespace is in scope on a node. * - * Returns 1 if in scope, -1 in case of argument error, + * Returns 1 if in scope, -1 in case of argument error, * -2 if the namespace is not in scope, and -3 if not on * an ancestor node. */ @@ -141,9 +141,9 @@ return; if ((ctxt->output != NULL) && (ctxt->depth > 0)) { if (ctxt->depth < 50) - fprintf(ctxt->output, &ctxt->shift[100 - 2 * ctxt->depth]); + fprintf(ctxt->output, "%s", &ctxt->shift[100 - 2 * ctxt->depth]); else - fprintf(ctxt->output, ctxt->shift); + fprintf(ctxt->output, "%s", ctxt->shift); } } @@ -162,7 +162,7 @@ NULL, ctxt->node, XML_FROM_CHECK, error, XML_ERR_ERROR, NULL, 0, NULL, NULL, NULL, 0, 0, - msg); + "%s", msg); } static void xmlDebugErr2(xmlDebugCtxtPtr ctxt, int error, const char *msg, int extra) @@ -254,12 +254,16 @@ xmlDebugErr(ctxt, XML_CHECK_NO_NAME, "Name is NULL"); return; } +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) if (xmlValidateName(name, 0)) { xmlDebugErr3(ctxt, XML_CHECK_NOT_NCNAME, "Name is not an NCName '%s'", (const char *) name); } +#endif if ((ctxt->dict != NULL) && - (!xmlDictOwns(ctxt->dict, name))) { + (!xmlDictOwns(ctxt->dict, name)) && + ((ctxt->doc == NULL) || + ((ctxt->doc->parseFlags & (XML_PARSE_SAX1 | XML_PARSE_NODICT)) == 0))) { xmlDebugErr3(ctxt, XML_CHECK_OUTSIDE_DICT, "Name is not from the document dictionnary '%s'", (const char *) name); @@ -309,7 +313,7 @@ (node != (xmlNodePtr) node->parent->properties)) xmlDebugErr(ctxt, XML_CHECK_NO_PREV, "Attr has no prev and not first of attr list\n"); - + } else if ((node->parent != NULL) && (node->parent->children != node)) xmlDebugErr(ctxt, XML_CHECK_NO_PREV, "Node has no prev and not first of parent list\n"); @@ -320,7 +324,8 @@ } if (node->next == NULL) { if ((node->parent != NULL) && (node->type != XML_ATTRIBUTE_NODE) && - (node->parent->last != node)) + (node->parent->last != node) && + (node->parent->type == XML_ELEMENT_NODE)) xmlDebugErr(ctxt, XML_CHECK_NO_NEXT, "Node has no next and not last of parent list\n"); } else { @@ -351,7 +356,6 @@ (node->type != XML_ELEMENT_DECL) && (node->type != XML_ATTRIBUTE_DECL) && (node->type != XML_DTD_NODE) && - (node->type != XML_ELEMENT_DECL) && (node->type != XML_HTML_DOCUMENT_NODE) && (node->type != XML_DOCUMENT_NODE)) { if (node->content != NULL) @@ -1065,7 +1069,7 @@ return; } xmlCtxtDumpOneNode(ctxt, node); - if ((node->type != XML_NAMESPACE_DECL) && + if ((node->type != XML_NAMESPACE_DECL) && (node->children != NULL) && (node->type != XML_ENTITY_REF_NODE)) { ctxt->depth++; xmlCtxtDumpNodeList(ctxt, node->children); @@ -1600,7 +1604,7 @@ xmlLsCountNode(xmlNodePtr node) { int ret = 0; xmlNodePtr list = NULL; - + if (node == NULL) return(0); @@ -1641,7 +1645,7 @@ ret = 1; break; } - for (;list != NULL;ret++) + for (;list != NULL;ret++) list = list->next; return(ret); } @@ -1709,11 +1713,11 @@ if (node->type != XML_NAMESPACE_DECL) { if (node->properties != NULL) fprintf(output, "a"); - else + else fprintf(output, "-"); - if (node->nsDef != NULL) + if (node->nsDef != NULL) fprintf(output, "n"); - else + else fprintf(output, "-"); } @@ -1721,8 +1725,11 @@ switch (node->type) { case XML_ELEMENT_NODE: - if (node->name != NULL) + if (node->name != NULL) { + if ((node->ns != NULL) && (node->ns->prefix != NULL)) + fprintf(output, "%s:", node->ns->prefix); fprintf(output, "%s", (const char *) node->name); + } break; case XML_ATTRIBUTE_NODE: if (node->name != NULL) @@ -1780,7 +1787,7 @@ * xmlBoolToText: * @boolval: a bool to turn into text * - * Convenient way to turn bool into text + * Convenient way to turn bool into text * * Returns a pointer to either "True" or "False" */ @@ -1796,7 +1803,7 @@ #ifdef LIBXML_XPATH_ENABLED /**************************************************************** * * - * The XML shell related functions * + * The XML shell related functions * * * ****************************************************************/ @@ -2047,7 +2054,7 @@ if (node == NULL) { fprintf(ctxt->output, "NULL\n"); return (0); - } + } base = xmlNodeGetBase(node->doc, node); @@ -2274,7 +2281,7 @@ if (node == NULL) { fprintf(ctxt->output, "NULL\n"); return (0); - } + } if ((node->type == XML_DOCUMENT_NODE) || (node->type == XML_HTML_DOCUMENT_NODE)) { xmlDebugDumpDocumentHead(ctxt->output, (xmlDocPtr) node); @@ -2409,7 +2416,7 @@ if (node == NULL) { fprintf(ctxt->output, "NULL\n"); return (0); - } + } if (ctxt->doc->type == XML_HTML_DOCUMENT_NODE) { #ifdef LIBXML_HTML_ENABLED if (node->type == XML_HTML_DOCUMENT_NODE) @@ -2693,6 +2700,8 @@ } else if (node->type == XML_ELEMENT_NODE) { for (i = 0; i < indent; i++) fprintf(ctxt->output, " "); + if ((node->ns) && (node->ns->prefix)) + fprintf(ctxt->output, "%s:", node->ns->prefix); fprintf(ctxt->output, "%s\n", node->name); } else { } @@ -2745,7 +2754,7 @@ * xmlShellPwd: * @ctxt: the shell context * @buffer: the output buffer - * @node: a node + * @node: a node * @node2: unused * * Implements the XML shell function "pwd" @@ -2790,7 +2799,7 @@ * @input: the line reading function * @output: the output FILE*, defaults to stdout if NULL * - * Implements the XML shell + * Implements the XML shell * This allow to load, validate, view, modify and save a document * using a environment similar to a UNIX commandline. */ @@ -2800,7 +2809,6 @@ { char prompt[500] = "/ > "; char *cmdline = NULL, *cur; - int nbargs; char command[100]; char arg[400]; int i; @@ -2835,6 +2843,10 @@ while (1) { if (ctxt->node == (xmlNodePtr) ctxt->doc) snprintf(prompt, sizeof(prompt), "%s > ", "/"); + else if ((ctxt->node != NULL) && (ctxt->node->name) && + (ctxt->node->ns) && (ctxt->node->ns->prefix)) + snprintf(prompt, sizeof(prompt), "%s:%s > ", + (ctxt->node->ns->prefix), ctxt->node->name); else if ((ctxt->node != NULL) && (ctxt->node->name)) snprintf(prompt, sizeof(prompt), "%s > ", ctxt->node->name); else @@ -2852,7 +2864,6 @@ * Parse the command itself */ cur = cmdline; - nbargs = 0; while ((*cur == ' ') || (*cur == '\t')) cur++; i = 0; @@ -2865,7 +2876,6 @@ command[i] = 0; if (i == 0) continue; - nbargs++; /* * Parse the argument @@ -2879,8 +2889,6 @@ arg[i++] = *cur++; } arg[i] = 0; - if (i != 0) - nbargs++; /* * start interpreting the command @@ -2913,6 +2921,7 @@ fprintf(ctxt->output, "\t the default namespace if any uses 'defaultns' prefix\n"); #endif /* LIBXML_XPATH_ENABLED */ fprintf(ctxt->output, "\tpwd display current working directory\n"); + fprintf(ctxt->output, "\twhereis display absolute path of [path] or current working directory\n"); fprintf(ctxt->output, "\tquit leave shell\n"); #ifdef LIBXML_OUTPUT_ENABLED fprintf(ctxt->output, "\tsave [name] save this document to name or the original name\n"); @@ -2939,11 +2948,11 @@ } else if (!strcmp(command, "save")) { xmlShellSave(ctxt, arg, NULL, NULL); } else if (!strcmp(command, "write")) { - if ((arg == NULL) || (arg[0] == 0)) + if (arg[0] == 0) xmlGenericError(xmlGenericErrorContext, "Write command requires a filename argument\n"); else - xmlShellWrite(ctxt, arg, NULL, NULL); + xmlShellWrite(ctxt, arg, ctxt->node, NULL); #endif /* LIBXML_OUTPUT_ENABLED */ } else if (!strcmp(command, "grep")) { xmlShellGrep(ctxt, arg, ctxt->node, NULL); @@ -2962,7 +2971,79 @@ if (!xmlShellPwd(ctxt, dir, ctxt->node, NULL)) fprintf(ctxt->output, "%s\n", dir); } else if (!strcmp(command, "du")) { - xmlShellDu(ctxt, NULL, ctxt->node, NULL); + if (arg[0] == 0) { + xmlShellDu(ctxt, NULL, ctxt->node, NULL); + } else { + ctxt->pctxt->node = ctxt->node; +#ifdef LIBXML_XPATH_ENABLED + ctxt->pctxt->node = ctxt->node; + list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); +#else + list = NULL; +#endif /* LIBXML_XPATH_ENABLED */ + if (list != NULL) { + switch (list->type) { + case XPATH_UNDEFINED: + xmlGenericError(xmlGenericErrorContext, + "%s: no such node\n", arg); + break; + case XPATH_NODESET:{ + int indx; + + if (list->nodesetval == NULL) + break; + + for (indx = 0; + indx < list->nodesetval->nodeNr; + indx++) + xmlShellDu(ctxt, NULL, + list->nodesetval-> + nodeTab[indx], NULL); + break; + } + case XPATH_BOOLEAN: + xmlGenericError(xmlGenericErrorContext, + "%s is a Boolean\n", arg); + break; + case XPATH_NUMBER: + xmlGenericError(xmlGenericErrorContext, + "%s is a number\n", arg); + break; + case XPATH_STRING: + xmlGenericError(xmlGenericErrorContext, + "%s is a string\n", arg); + break; + case XPATH_POINT: + xmlGenericError(xmlGenericErrorContext, + "%s is a point\n", arg); + break; + case XPATH_RANGE: + xmlGenericError(xmlGenericErrorContext, + "%s is a range\n", arg); + break; + case XPATH_LOCATIONSET: + xmlGenericError(xmlGenericErrorContext, + "%s is a range\n", arg); + break; + case XPATH_USERS: + xmlGenericError(xmlGenericErrorContext, + "%s is user-defined\n", arg); + break; + case XPATH_XSLT_TREE: + xmlGenericError(xmlGenericErrorContext, + "%s is an XSLT value tree\n", + arg); + break; + } +#ifdef LIBXML_XPATH_ENABLED + xmlXPathFreeObject(list); +#endif + } else { + xmlGenericError(xmlGenericErrorContext, + "%s: no such node\n", arg); + } + ctxt->pctxt->node = NULL; + } } else if (!strcmp(command, "base")) { xmlShellBase(ctxt, NULL, ctxt->node, NULL); } else if (!strcmp(command, "set")) { @@ -3080,12 +3161,94 @@ } ctxt->pctxt->node = NULL; } + } else if (!strcmp(command, "whereis")) { + char dir[500]; + + if (arg[0] == 0) { + if (!xmlShellPwd(ctxt, dir, ctxt->node, NULL)) + fprintf(ctxt->output, "%s\n", dir); + } else { + ctxt->pctxt->node = ctxt->node; +#ifdef LIBXML_XPATH_ENABLED + list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); +#else + list = NULL; +#endif /* LIBXML_XPATH_ENABLED */ + if (list != NULL) { + switch (list->type) { + case XPATH_UNDEFINED: + xmlGenericError(xmlGenericErrorContext, + "%s: no such node\n", arg); + break; + case XPATH_NODESET:{ + int indx; + + if (list->nodesetval == NULL) + break; + + for (indx = 0; + indx < list->nodesetval->nodeNr; + indx++) { + if (!xmlShellPwd(ctxt, dir, list->nodesetval-> + nodeTab[indx], NULL)) + fprintf(ctxt->output, "%s\n", dir); + } + break; + } + case XPATH_BOOLEAN: + xmlGenericError(xmlGenericErrorContext, + "%s is a Boolean\n", arg); + break; + case XPATH_NUMBER: + xmlGenericError(xmlGenericErrorContext, + "%s is a number\n", arg); + break; + case XPATH_STRING: + xmlGenericError(xmlGenericErrorContext, + "%s is a string\n", arg); + break; + case XPATH_POINT: + xmlGenericError(xmlGenericErrorContext, + "%s is a point\n", arg); + break; + case XPATH_RANGE: + xmlGenericError(xmlGenericErrorContext, + "%s is a range\n", arg); + break; + case XPATH_LOCATIONSET: + xmlGenericError(xmlGenericErrorContext, + "%s is a range\n", arg); + break; + case XPATH_USERS: + xmlGenericError(xmlGenericErrorContext, + "%s is user-defined\n", arg); + break; + case XPATH_XSLT_TREE: + xmlGenericError(xmlGenericErrorContext, + "%s is an XSLT value tree\n", + arg); + break; + } +#ifdef LIBXML_XPATH_ENABLED + xmlXPathFreeObject(list); +#endif + } else { + xmlGenericError(xmlGenericErrorContext, + "%s: no such node\n", arg); + } + ctxt->pctxt->node = NULL; + } } else if (!strcmp(command, "cd")) { if (arg[0] == 0) { ctxt->node = (xmlNodePtr) ctxt->doc; } else { #ifdef LIBXML_XPATH_ENABLED + int l; + ctxt->pctxt->node = ctxt->node; + l = strlen(arg); + if ((l >= 2) && (arg[l - 1] == '/')) + arg[l - 1] = 0; list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); #else list = NULL; @@ -3244,6 +3407,7 @@ "Unknown command %s\n", command); } free(cmdline); /* not xmlFree here ! */ + cmdline = NULL; } #ifdef LIBXML_XPATH_ENABLED xmlXPathFreeContext(ctxt->pctxt); diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/debugXML.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/debugXML.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/debugXML.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/debugXML.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -25,18 +25,18 @@ /* * The standard Dump routines. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDebugDumpString (FILE *output, const xmlChar *str); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDebugDumpAttr (FILE *output, xmlAttrPtr attr, int depth); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDebugDumpAttrList (FILE *output, xmlAttrPtr attr, int depth); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDebugDumpOneNode (FILE *output, xmlNodePtr node, int depth); @@ -54,16 +54,16 @@ XMLPUBFUN void XMLCALL xmlDebugDumpDocument (FILE *output, xmlDocPtr doc); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDebugDumpDTD (FILE *output, xmlDtdPtr dtd); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDebugDumpEntities (FILE *output, xmlDocPtr doc); /**************************************************************** * * - * Checking routines * + * Checking routines * * * ****************************************************************/ @@ -73,16 +73,16 @@ /**************************************************************** * * - * XML shell helpers * + * XML shell helpers * * * ****************************************************************/ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlLsOneNode (FILE *output, xmlNodePtr node); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlLsCountNode (xmlNodePtr node); -XMLPUBFUN const char * XMLCALL +XMLPUBFUN const char * XMLCALL xmlBoolToText (int boolval); /**************************************************************** @@ -136,63 +136,63 @@ xmlNodePtr node, xmlNodePtr node2); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlShellPrintXPathError (int errorType, const char *arg); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlShellPrintXPathResult(xmlXPathObjectPtr list); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellList (xmlShellCtxtPtr ctxt, char *arg, xmlNodePtr node, xmlNodePtr node2); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellBase (xmlShellCtxtPtr ctxt, char *arg, xmlNodePtr node, xmlNodePtr node2); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellDir (xmlShellCtxtPtr ctxt, char *arg, xmlNodePtr node, xmlNodePtr node2); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellLoad (xmlShellCtxtPtr ctxt, char *filename, xmlNodePtr node, xmlNodePtr node2); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlShellPrintNode (xmlNodePtr node); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellCat (xmlShellCtxtPtr ctxt, char *arg, xmlNodePtr node, xmlNodePtr node2); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellWrite (xmlShellCtxtPtr ctxt, char *filename, xmlNodePtr node, xmlNodePtr node2); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellSave (xmlShellCtxtPtr ctxt, char *filename, xmlNodePtr node, xmlNodePtr node2); #endif /* LIBXML_OUTPUT_ENABLED */ #ifdef LIBXML_VALID_ENABLED -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellValidate (xmlShellCtxtPtr ctxt, char *dtd, xmlNodePtr node, xmlNodePtr node2); #endif /* LIBXML_VALID_ENABLED */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellDu (xmlShellCtxtPtr ctxt, char *arg, xmlNodePtr tree, xmlNodePtr node2); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellPwd (xmlShellCtxtPtr ctxt, char *buffer, xmlNodePtr node, @@ -201,12 +201,12 @@ /* * The Shell interface. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlShell (xmlDocPtr doc, char *filename, xmlShellReadlineFunc input, FILE *output); - + #endif /* LIBXML_XPATH_ENABLED */ #ifdef __cplusplus diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/dict.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/dict.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/dict.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/dict.c 2015-12-23 07:08:27.000000000 +0000 @@ -2,7 +2,7 @@ * dict.c: dictionary of reusable strings, just used to avoid allocation * and freeing operations. * - * Copyright (C) 2003 Daniel Veillard. + * Copyright (C) 2003-2012 Daniel Veillard. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -19,19 +19,72 @@ #define IN_LIBXML #include "libxml.h" +#include +#ifdef HAVE_STDLIB_H +#include +#endif +#ifdef HAVE_TIME_H +#include +#endif + +/* + * Following http://www.ocert.org/advisories/ocert-2011-003.html + * it seems that having hash randomization might be a good idea + * when using XML with untrusted data + * Note1: that it works correctly only if compiled with WITH_BIG_KEY + * which is the default. + * Note2: the fast function used for a small dict won't protect very + * well but since the attack is based on growing a very big hash + * list we will use the BigKey algo as soon as the hash size grows + * over MIN_DICT_SIZE so this actually works + */ +#if defined(HAVE_RAND) && defined(HAVE_SRAND) && defined(HAVE_TIME) +#define DICT_RANDOMIZATION +#endif + #include +#ifdef HAVE_STDINT_H +#include +#else +#ifdef HAVE_INTTYPES_H +#include +#elif defined(WIN32) +typedef unsigned __int32 uint32_t; +#endif +#endif #include #include #include #include #include -#define MAX_HASH_LEN 4 +/* #define DEBUG_GROW */ +/* #define DICT_DEBUG_PATTERNS */ + +#define MAX_HASH_LEN 3 #define MIN_DICT_SIZE 128 #define MAX_DICT_HASH 8 * 2048 +#define WITH_BIG_KEY -/* #define ALLOW_REMOVAL */ -/* #define DEBUG_GROW */ +#ifdef WITH_BIG_KEY +#define xmlDictComputeKey(dict, name, len) \ + (((dict)->size == MIN_DICT_SIZE) ? \ + xmlDictComputeFastKey(name, len, (dict)->seed) : \ + xmlDictComputeBigKey(name, len, (dict)->seed)) + +#define xmlDictComputeQKey(dict, prefix, plen, name, len) \ + (((prefix) == NULL) ? \ + (xmlDictComputeKey(dict, name, len)) : \ + (((dict)->size == MIN_DICT_SIZE) ? \ + xmlDictComputeFastQKey(prefix, plen, name, len, (dict)->seed) : \ + xmlDictComputeBigQKey(prefix, plen, name, len, (dict)->seed))) + +#else /* !WITH_BIG_KEY */ +#define xmlDictComputeKey(dict, name, len) \ + xmlDictComputeFastKey(name, len, (dict)->seed) +#define xmlDictComputeQKey(dict, prefix, plen, name, len) \ + xmlDictComputeFastQKey(prefix, plen, name, len, (dict)->seed) +#endif /* WITH_BIG_KEY */ /* * An entry in the dictionnary @@ -41,8 +94,9 @@ struct _xmlDictEntry { struct _xmlDictEntry *next; const xmlChar *name; - int len; + unsigned int len; int valid; + unsigned long okey; }; typedef struct _xmlDictStrings xmlDictStrings; @@ -51,8 +105,8 @@ xmlDictStringsPtr next; xmlChar *free; xmlChar *end; - int size; - int nbStrings; + size_t size; + size_t nbStrings; xmlChar array[1]; }; /* @@ -60,14 +114,17 @@ */ struct _xmlDict { int ref_counter; - xmlRMutexPtr mutex; struct _xmlDictEntry *dict; - int size; - int nbElems; + size_t size; + unsigned int nbElems; xmlDictStringsPtr strings; struct _xmlDict *subdict; + /* used for randomization */ + int seed; + /* used to impose a limit on size */ + size_t limit; }; /* @@ -81,28 +138,84 @@ */ static int xmlDictInitialized = 0; +#ifdef DICT_RANDOMIZATION +#ifdef HAVE_RAND_R +/* + * Internal data for random function, protected by xmlDictMutex + */ +static unsigned int rand_seed = 0; +#endif +#endif + /** * xmlInitializeDict: * * Do the dictionary mutex initialization. + * this function is deprecated + * + * Returns 0 if initialization was already done, and 1 if that + * call led to the initialization + */ +int xmlInitializeDict(void) { + return(0); +} + +/** + * __xmlInitializeDict: + * + * This function is not public + * Do the dictionary mutex initialization. * this function is not thread safe, initialization should - * preferably be done once at startup + * normally be done once at setup when called from xmlOnceInit() + * we may also land in this code if thread support is not compiled in + * + * Returns 0 if initialization was already done, and 1 if that + * call led to the initialization */ -static int xmlInitializeDict(void) { +int __xmlInitializeDict(void) { if (xmlDictInitialized) return(1); if ((xmlDictMutex = xmlNewRMutex()) == NULL) return(0); + xmlRMutexLock(xmlDictMutex); +#ifdef DICT_RANDOMIZATION +#ifdef HAVE_RAND_R + rand_seed = time(NULL); + rand_r(& rand_seed); +#else + srand(time(NULL)); +#endif +#endif xmlDictInitialized = 1; + xmlRMutexUnlock(xmlDictMutex); return(1); } +#ifdef DICT_RANDOMIZATION +int __xmlRandom(void) { + int ret; + + if (xmlDictInitialized == 0) + __xmlInitializeDict(); + + xmlRMutexLock(xmlDictMutex); +#ifdef HAVE_RAND_R + ret = rand_r(& rand_seed); +#else + ret = rand(); +#endif + xmlRMutexUnlock(xmlDictMutex); + return(ret); +} +#endif + /** * xmlDictCleanup: * - * Free the dictionary mutex. + * Free the dictionary mutex. Do not call unless sure the library + * is not in use anymore ! */ void xmlDictCleanup(void) { @@ -118,32 +231,41 @@ * xmlDictAddString: * @dict: the dictionnary * @name: the name of the userdata - * @len: the length of the name, if -1 it is recomputed + * @len: the length of the name * * Add the string to the array[s] * * Returns the pointer of the local string, or NULL in case of error. */ static const xmlChar * -xmlDictAddString(xmlDictPtr dict, const xmlChar *name, int namelen) { +xmlDictAddString(xmlDictPtr dict, const xmlChar *name, unsigned int namelen) { xmlDictStringsPtr pool; const xmlChar *ret; - int size = 0; /* + sizeof(_xmlDictStrings) == 1024 */ + size_t size = 0; /* + sizeof(_xmlDictStrings) == 1024 */ + size_t limit = 0; +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "-"); +#endif pool = dict->strings; while (pool != NULL) { if (pool->end - pool->free > namelen) goto found_pool; if (pool->size > size) size = pool->size; + limit += pool->size; pool = pool->next; } /* * Not found, need to allocate */ if (pool == NULL) { + if ((dict->limit > 0) && (limit > dict->limit)) { + return(NULL); + } + if (size == 0) size = 1000; else size *= 4; /* exponential growth */ - if (size < 4 * namelen) + if (size < 4 * namelen) size = 4 * namelen; /* just in case ! */ pool = (xmlDictStringsPtr) xmlMalloc(sizeof(xmlDictStrings) + size); if (pool == NULL) @@ -154,12 +276,16 @@ pool->end = &pool->array[size]; pool->next = dict->strings; dict->strings = pool; +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "+"); +#endif } found_pool: ret = pool->free; memcpy(pool->free, name, namelen); pool->free += namelen; *(pool->free++) = 0; + pool->nbStrings++; return(ret); } @@ -167,40 +293,48 @@ * xmlDictAddQString: * @dict: the dictionnary * @prefix: the prefix of the userdata + * @plen: the prefix length * @name: the name of the userdata - * @len: the length of the name, if -1 it is recomputed + * @len: the length of the name * * Add the QName to the array[s] * * Returns the pointer of the local string, or NULL in case of error. */ static const xmlChar * -xmlDictAddQString(xmlDictPtr dict, const xmlChar *prefix, - const xmlChar *name, int namelen) +xmlDictAddQString(xmlDictPtr dict, const xmlChar *prefix, unsigned int plen, + const xmlChar *name, unsigned int namelen) { xmlDictStringsPtr pool; const xmlChar *ret; - int size = 0; /* + sizeof(_xmlDictStrings) == 1024 */ - int plen; + size_t size = 0; /* + sizeof(_xmlDictStrings) == 1024 */ + size_t limit = 0; if (prefix == NULL) return(xmlDictAddString(dict, name, namelen)); - plen = xmlStrlen(prefix); +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "="); +#endif pool = dict->strings; while (pool != NULL) { - if (pool->end - pool->free > namelen) + if (pool->end - pool->free > namelen + plen + 1) goto found_pool; if (pool->size > size) size = pool->size; + limit += pool->size; pool = pool->next; } /* * Not found, need to allocate */ if (pool == NULL) { + if ((dict->limit > 0) && (limit > dict->limit)) { + return(NULL); + } + if (size == 0) size = 1000; else size *= 4; /* exponential growth */ - if (size < 4 * namelen) - size = 4 * namelen; /* just in case ! */ + if (size < 4 * (namelen + plen + 1)) + size = 4 * (namelen + plen + 1); /* just in case ! */ pool = (xmlDictStringsPtr) xmlMalloc(sizeof(xmlDictStrings) + size); if (pool == NULL) return(NULL); @@ -210,27 +344,106 @@ pool->end = &pool->array[size]; pool->next = dict->strings; dict->strings = pool; +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "+"); +#endif } found_pool: ret = pool->free; memcpy(pool->free, prefix, plen); pool->free += plen; *(pool->free++) = ':'; - namelen -= plen + 1; memcpy(pool->free, name, namelen); pool->free += namelen; *(pool->free++) = 0; + pool->nbStrings++; return(ret); } +#ifdef WITH_BIG_KEY /* - * xmlDictComputeKey: - * Calculate the hash key + * xmlDictComputeBigKey: + * + * Calculate a hash key using a good hash function that works well for + * larger hash table sizes. + * + * Hash function by "One-at-a-Time Hash" see + * http://burtleburtle.net/bob/hash/doobs.html + */ + +static uint32_t +xmlDictComputeBigKey(const xmlChar* data, int namelen, int seed) { + uint32_t hash; + int i; + + if (namelen <= 0 || data == NULL) return(0); + + hash = seed; + + for (i = 0;i < namelen; i++) { + hash += data[i]; + hash += (hash << 10); + hash ^= (hash >> 6); + } + hash += (hash << 3); + hash ^= (hash >> 11); + hash += (hash << 15); + + return hash; +} + +/* + * xmlDictComputeBigQKey: + * + * Calculate a hash key for two strings using a good hash function + * that works well for larger hash table sizes. + * + * Hash function by "One-at-a-Time Hash" see + * http://burtleburtle.net/bob/hash/doobs.html + * + * Neither of the two strings must be NULL. */ static unsigned long -xmlDictComputeKey(const xmlChar *name, int namelen) { - unsigned long value = 0L; - +xmlDictComputeBigQKey(const xmlChar *prefix, int plen, + const xmlChar *name, int len, int seed) +{ + uint32_t hash; + int i; + + hash = seed; + + for (i = 0;i < plen; i++) { + hash += prefix[i]; + hash += (hash << 10); + hash ^= (hash >> 6); + } + hash += ':'; + hash += (hash << 10); + hash ^= (hash >> 6); + + for (i = 0;i < len; i++) { + hash += name[i]; + hash += (hash << 10); + hash ^= (hash >> 6); + } + hash += (hash << 3); + hash ^= (hash >> 11); + hash += (hash << 15); + + return hash; +} +#endif /* WITH_BIG_KEY */ + +/* + * xmlDictComputeFastKey: + * + * Calculate a hash key using a fast hash function that works well + * for low hash table fill. + */ +static unsigned long +xmlDictComputeFastKey(const xmlChar *name, int namelen, int seed) { + unsigned long value = seed; + if (name == NULL) return(0); value = *name; value <<= 5; @@ -254,26 +467,29 @@ } /* - * xmlDictComputeQKey: - * Calculate the hash key + * xmlDictComputeFastQKey: + * + * Calculate a hash key for two strings using a fast hash function + * that works well for low hash table fill. + * + * Neither of the two strings must be NULL. */ static unsigned long -xmlDictComputeQKey(const xmlChar *prefix, const xmlChar *name, int len) +xmlDictComputeFastQKey(const xmlChar *prefix, int plen, + const xmlChar *name, int len, int seed) { - unsigned long value = 0L; - int plen; - - if (prefix == NULL) - return(xmlDictComputeKey(name, len)); + unsigned long value = (unsigned long) seed; - plen = xmlStrlen(prefix); if (plen == 0) value += 30 * (unsigned long) ':'; else value += 30 * (*prefix); - + if (len > 10) { - value += name[len - (plen + 1 + 1)]; + int offset = len - (plen + 1 + 1); + if (offset < 0) + offset = len - (10 + 1); + value += name[offset]; len = 10; if (plen > 10) plen = 10; @@ -324,12 +540,17 @@ xmlDictPtr dict; if (!xmlDictInitialized) - if (!xmlInitializeDict()) + if (!__xmlInitializeDict()) return(NULL); - + +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "C"); +#endif + dict = xmlMalloc(sizeof(xmlDict)); if (dict) { dict->ref_counter = 1; + dict->limit = 0; dict->size = MIN_DICT_SIZE; dict->nbElems = 0; @@ -337,11 +558,13 @@ dict->strings = NULL; dict->subdict = NULL; if (dict->dict) { - if ((dict->mutex = xmlNewRMutex()) != NULL) { - memset(dict->dict, 0, MIN_DICT_SIZE * sizeof(xmlDictEntry)); - return(dict); - } - xmlFree(dict->dict); + memset(dict->dict, 0, MIN_DICT_SIZE * sizeof(xmlDictEntry)); +#ifdef DICT_RANDOMIZATION + dict->seed = __xmlRandom(); +#else + dict->seed = 0; +#endif + return(dict); } xmlFree(dict); } @@ -362,8 +585,12 @@ xmlDictPtr xmlDictCreateSub(xmlDictPtr sub) { xmlDictPtr dict = xmlDictCreate(); - + if ((dict != NULL) && (sub != NULL)) { +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "R"); +#endif + dict->seed = sub->seed; dict->subdict = sub; xmlDictReference(dict->subdict); } @@ -381,7 +608,7 @@ int xmlDictReference(xmlDictPtr dict) { if (!xmlDictInitialized) - if (!xmlInitializeDict()) + if (!__xmlInitializeDict()) return(-1); if (dict == NULL) return -1; @@ -401,15 +628,17 @@ * Returns 0 in case of success, -1 in case of failure */ static int -xmlDictGrow(xmlDictPtr dict, int size) { - unsigned long key; - int oldsize, i; +xmlDictGrow(xmlDictPtr dict, size_t size) { + unsigned long key, okey; + size_t oldsize, i; xmlDictEntryPtr iter, next; struct _xmlDictEntry *olddict; #ifdef DEBUG_GROW unsigned long nbElem = 0; #endif - + int ret = 0; + int keep_keys = 1; + if (dict == NULL) return(-1); if (size < 8) @@ -417,11 +646,17 @@ if (size > 8 * 2048) return(-1); +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "*"); +#endif + oldsize = dict->size; olddict = dict->dict; if (olddict == NULL) return(-1); - + if (oldsize == MIN_DICT_SIZE) + keep_keys = 0; + dict->dict = xmlMalloc(size * sizeof(xmlDictEntry)); if (dict->dict == NULL) { dict->dict = olddict; @@ -431,17 +666,44 @@ dict->size = size; /* If the two loops are merged, there would be situations where - a new entry needs to allocated and data copied into it from - the main dict. So instead, we run through the array twice, first - copying all the elements in the main array (where we can't get - conflicts) and then the rest, so we only free (and don't allocate) + a new entry needs to allocated and data copied into it from + the main dict. It is nicer to run through the array twice, first + copying all the elements in the main array (less probability of + allocate) and then the rest, so we only free in the second loop. */ for (i = 0; i < oldsize; i++) { - if (olddict[i].valid == 0) + if (olddict[i].valid == 0) continue; - key = xmlDictComputeKey(olddict[i].name, olddict[i].len) % dict->size; - memcpy(&(dict->dict[key]), &(olddict[i]), sizeof(xmlDictEntry)); - dict->dict[key].next = NULL; + + if (keep_keys) + okey = olddict[i].okey; + else + okey = xmlDictComputeKey(dict, olddict[i].name, olddict[i].len); + key = okey % dict->size; + + if (dict->dict[key].valid == 0) { + memcpy(&(dict->dict[key]), &(olddict[i]), sizeof(xmlDictEntry)); + dict->dict[key].next = NULL; + dict->dict[key].okey = okey; + } else { + xmlDictEntryPtr entry; + + entry = xmlMalloc(sizeof(xmlDictEntry)); + if (entry != NULL) { + entry->name = olddict[i].name; + entry->len = olddict[i].len; + entry->okey = okey; + entry->next = dict->dict[key].next; + entry->valid = 1; + dict->dict[key].next = entry; + } else { + /* + * we don't have much ways to alert from herei + * result is loosing an entry and unicity garantee + */ + ret = -1; + } + } #ifdef DEBUG_GROW nbElem++; #endif @@ -456,15 +718,21 @@ * put back the entry in the new dict */ - key = xmlDictComputeKey(iter->name, iter->len) % dict->size; + if (keep_keys) + okey = iter->okey; + else + okey = xmlDictComputeKey(dict, iter->name, iter->len); + key = okey % dict->size; if (dict->dict[key].valid == 0) { memcpy(&(dict->dict[key]), iter, sizeof(xmlDictEntry)); dict->dict[key].next = NULL; dict->dict[key].valid = 1; + dict->dict[key].okey = okey; xmlFree(iter); } else { - iter->next = dict->dict[key].next; - dict->dict[key].next = iter; + iter->next = dict->dict[key].next; + iter->okey = okey; + dict->dict[key].next = iter; } #ifdef DEBUG_GROW @@ -479,10 +747,10 @@ #ifdef DEBUG_GROW xmlGenericError(xmlGenericErrorContext, - "xmlDictGrow : from %d to %d, %d elems\n", oldsize, size, nbElem); + "xmlDictGrow : from %lu to %lu, %u elems\n", oldsize, size, nbElem); #endif - return(0); + return(ret); } /** @@ -494,7 +762,7 @@ */ void xmlDictFree(xmlDictPtr dict) { - int i; + size_t i; xmlDictEntryPtr iter; xmlDictEntryPtr next; int inside_dict = 0; @@ -504,7 +772,7 @@ return; if (!xmlDictInitialized) - if (!xmlInitializeDict()) + if (!__xmlInitializeDict()) return; /* decrement the counter, it may be shared by a parser and docs */ @@ -535,7 +803,6 @@ inside_dict = 0; iter = next; } - inside_dict = 0; } xmlFree(dict->dict); } @@ -545,7 +812,6 @@ xmlFree(pool); pool = nextp; } - xmlFreeRMutex(dict->mutex); xmlFree(dict); } @@ -565,17 +831,24 @@ xmlDictEntryPtr entry; xmlDictEntryPtr insert; const xmlChar *ret; + unsigned int l; if ((dict == NULL) || (name == NULL)) return(NULL); if (len < 0) - len = xmlStrlen(name); + l = strlen((const char *) name); + else + l = len; + + if (((dict->limit > 0) && (l >= dict->limit)) || + (l > INT_MAX / 2)) + return(NULL); /* * Check for duplicate and insertion location. */ - okey = xmlDictComputeKey(name, len); + okey = xmlDictComputeKey(dict, name, l); key = okey % dict->size; if (dict->dict[key].valid == 0) { insert = NULL; @@ -583,63 +856,74 @@ for (insert = &(dict->dict[key]); insert->next != NULL; insert = insert->next) { #ifdef __GNUC__ - if (insert->len == len) { - if (!memcmp(insert->name, name, len)) + if ((insert->okey == okey) && (insert->len == l)) { + if (!memcmp(insert->name, name, l)) return(insert->name); } #else - if ((insert->len == len) && - (!xmlStrncmp(insert->name, name, len))) + if ((insert->okey == okey) && (insert->len == l) && + (!xmlStrncmp(insert->name, name, l))) return(insert->name); #endif nbi++; } #ifdef __GNUC__ - if (insert->len == len) { - if (!memcmp(insert->name, name, len)) + if ((insert->okey == okey) && (insert->len == l)) { + if (!memcmp(insert->name, name, l)) return(insert->name); } #else - if ((insert->len == len) && - (!xmlStrncmp(insert->name, name, len))) + if ((insert->okey == okey) && (insert->len == l) && + (!xmlStrncmp(insert->name, name, l))) return(insert->name); #endif } if (dict->subdict) { - key = okey % dict->subdict->size; + unsigned long skey; + + /* we cannot always reuse the same okey for the subdict */ + if (((dict->size == MIN_DICT_SIZE) && + (dict->subdict->size != MIN_DICT_SIZE)) || + ((dict->size != MIN_DICT_SIZE) && + (dict->subdict->size == MIN_DICT_SIZE))) + skey = xmlDictComputeKey(dict->subdict, name, l); + else + skey = okey; + + key = skey % dict->subdict->size; if (dict->subdict->dict[key].valid != 0) { xmlDictEntryPtr tmp; for (tmp = &(dict->subdict->dict[key]); tmp->next != NULL; tmp = tmp->next) { #ifdef __GNUC__ - if (tmp->len == len) { - if (!memcmp(tmp->name, name, len)) + if ((tmp->okey == skey) && (tmp->len == l)) { + if (!memcmp(tmp->name, name, l)) return(tmp->name); } #else - if ((tmp->len == len) && - (!xmlStrncmp(tmp->name, name, len))) + if ((tmp->okey == skey) && (tmp->len == l) && + (!xmlStrncmp(tmp->name, name, l))) return(tmp->name); #endif nbi++; } #ifdef __GNUC__ - if (tmp->len == len) { - if (!memcmp(tmp->name, name, len)) + if ((tmp->okey == skey) && (tmp->len == l)) { + if (!memcmp(tmp->name, name, l)) return(tmp->name); } #else - if ((tmp->len == len) && - (!xmlStrncmp(tmp->name, name, len))) + if ((tmp->okey == skey) && (tmp->len == l) && + (!xmlStrncmp(tmp->name, name, l))) return(tmp->name); #endif } key = okey % dict->size; } - ret = xmlDictAddString(dict, name, len); + ret = xmlDictAddString(dict, name, l); if (ret == NULL) return(NULL); if (insert == NULL) { @@ -650,19 +934,22 @@ return(NULL); } entry->name = ret; - entry->len = len; + entry->len = l; entry->next = NULL; entry->valid = 1; + entry->okey = okey; - if (insert != NULL) + if (insert != NULL) insert->next = entry; dict->nbElems++; if ((nbi > MAX_HASH_LEN) && - (dict->size <= ((MAX_DICT_HASH / 2) / MAX_HASH_LEN))) - xmlDictGrow(dict, MAX_HASH_LEN * 2 * dict->size); + (dict->size <= ((MAX_DICT_HASH / 2) / MAX_HASH_LEN))) { + if (xmlDictGrow(dict, MAX_HASH_LEN * 2 * dict->size) != 0) + return(NULL); + } /* Note that entry may have been freed at this point by xmlDictGrow */ return(ret); @@ -682,17 +969,23 @@ xmlDictExists(xmlDictPtr dict, const xmlChar *name, int len) { unsigned long key, okey, nbi = 0; xmlDictEntryPtr insert; + unsigned int l; if ((dict == NULL) || (name == NULL)) return(NULL); if (len < 0) - len = xmlStrlen(name); + l = strlen((const char *) name); + else + l = len; + if (((dict->limit > 0) && (l >= dict->limit)) || + (l > INT_MAX / 2)) + return(NULL); /* * Check for duplicate and insertion location. */ - okey = xmlDictComputeKey(name, len); + okey = xmlDictComputeKey(dict, name, l); key = okey % dict->size; if (dict->dict[key].valid == 0) { insert = NULL; @@ -700,60 +993,70 @@ for (insert = &(dict->dict[key]); insert->next != NULL; insert = insert->next) { #ifdef __GNUC__ - if (insert->len == len) { - if (!memcmp(insert->name, name, len)) + if ((insert->okey == okey) && (insert->len == l)) { + if (!memcmp(insert->name, name, l)) return(insert->name); } #else - if ((insert->len == len) && - (!xmlStrncmp(insert->name, name, len))) + if ((insert->okey == okey) && (insert->len == l) && + (!xmlStrncmp(insert->name, name, l))) return(insert->name); #endif nbi++; } #ifdef __GNUC__ - if (insert->len == len) { - if (!memcmp(insert->name, name, len)) + if ((insert->okey == okey) && (insert->len == l)) { + if (!memcmp(insert->name, name, l)) return(insert->name); } #else - if ((insert->len == len) && - (!xmlStrncmp(insert->name, name, len))) + if ((insert->okey == okey) && (insert->len == l) && + (!xmlStrncmp(insert->name, name, l))) return(insert->name); #endif } if (dict->subdict) { - key = okey % dict->subdict->size; + unsigned long skey; + + /* we cannot always reuse the same okey for the subdict */ + if (((dict->size == MIN_DICT_SIZE) && + (dict->subdict->size != MIN_DICT_SIZE)) || + ((dict->size != MIN_DICT_SIZE) && + (dict->subdict->size == MIN_DICT_SIZE))) + skey = xmlDictComputeKey(dict->subdict, name, l); + else + skey = okey; + + key = skey % dict->subdict->size; if (dict->subdict->dict[key].valid != 0) { xmlDictEntryPtr tmp; for (tmp = &(dict->subdict->dict[key]); tmp->next != NULL; tmp = tmp->next) { #ifdef __GNUC__ - if (tmp->len == len) { - if (!memcmp(tmp->name, name, len)) + if ((tmp->okey == skey) && (tmp->len == l)) { + if (!memcmp(tmp->name, name, l)) return(tmp->name); } #else - if ((tmp->len == len) && - (!xmlStrncmp(tmp->name, name, len))) + if ((tmp->okey == skey) && (tmp->len == l) && + (!xmlStrncmp(tmp->name, name, l))) return(tmp->name); #endif nbi++; } #ifdef __GNUC__ - if (tmp->len == len) { - if (!memcmp(tmp->name, name, len)) + if ((tmp->okey == skey) && (tmp->len == l)) { + if (!memcmp(tmp->name, name, l)) return(tmp->name); } #else - if ((tmp->len == len) && - (!xmlStrncmp(tmp->name, name, len))) + if ((tmp->okey == skey) && (tmp->len == l) && + (!xmlStrncmp(tmp->name, name, l))) return(tmp->name); #endif } - key = okey % dict->size; } /* not found */ @@ -763,7 +1066,7 @@ /** * xmlDictQLookup: * @dict: the dictionnary - * @prefix: the prefix + * @prefix: the prefix * @name: the name * * Add the QName @prefix:@name to the hash @dict if not present. @@ -776,54 +1079,67 @@ xmlDictEntryPtr entry; xmlDictEntryPtr insert; const xmlChar *ret; - int len; + unsigned int len, plen, l; if ((dict == NULL) || (name == NULL)) return(NULL); + if (prefix == NULL) + return(xmlDictLookup(dict, name, -1)); - len = xmlStrlen(name); - if (prefix != NULL) - len += 1 + xmlStrlen(prefix); + l = len = strlen((const char *) name); + plen = strlen((const char *) prefix); + len += 1 + plen; /* * Check for duplicate and insertion location. */ - okey = xmlDictComputeQKey(prefix, name, len); + okey = xmlDictComputeQKey(dict, prefix, plen, name, l); key = okey % dict->size; if (dict->dict[key].valid == 0) { insert = NULL; } else { for (insert = &(dict->dict[key]); insert->next != NULL; insert = insert->next) { - if ((insert->len == len) && + if ((insert->okey == okey) && (insert->len == len) && (xmlStrQEqual(prefix, name, insert->name))) return(insert->name); nbi++; } - if ((insert->len == len) && + if ((insert->okey == okey) && (insert->len == len) && (xmlStrQEqual(prefix, name, insert->name))) return(insert->name); } if (dict->subdict) { - key = okey % dict->subdict->size; + unsigned long skey; + + /* we cannot always reuse the same okey for the subdict */ + if (((dict->size == MIN_DICT_SIZE) && + (dict->subdict->size != MIN_DICT_SIZE)) || + ((dict->size != MIN_DICT_SIZE) && + (dict->subdict->size == MIN_DICT_SIZE))) + skey = xmlDictComputeQKey(dict->subdict, prefix, plen, name, l); + else + skey = okey; + + key = skey % dict->subdict->size; if (dict->subdict->dict[key].valid != 0) { xmlDictEntryPtr tmp; for (tmp = &(dict->subdict->dict[key]); tmp->next != NULL; tmp = tmp->next) { - if ((tmp->len == len) && + if ((tmp->okey == skey) && (tmp->len == len) && (xmlStrQEqual(prefix, name, tmp->name))) return(tmp->name); nbi++; } - if ((tmp->len == len) && + if ((tmp->okey == skey) && (tmp->len == len) && (xmlStrQEqual(prefix, name, tmp->name))) return(tmp->name); } key = okey % dict->size; } - ret = xmlDictAddQString(dict, prefix, name, len); + ret = xmlDictAddQString(dict, prefix, plen, name, l); if (ret == NULL) return(NULL); if (insert == NULL) { @@ -837,8 +1153,9 @@ entry->len = len; entry->next = NULL; entry->valid = 1; + entry->okey = okey; - if (insert != NULL) + if (insert != NULL) insert->next = entry; dict->nbElems++; @@ -896,6 +1213,50 @@ return(dict->nbElems); } +/** + * xmlDictSetLimit: + * @dict: the dictionnary + * @limit: the limit in bytes + * + * Set a size limit for the dictionary + * Added in 2.9.0 + * + * Returns the previous limit of the dictionary or 0 + */ +size_t +xmlDictSetLimit(xmlDictPtr dict, size_t limit) { + size_t ret; + + if (dict == NULL) + return(0); + ret = dict->limit; + dict->limit = limit; + return(ret); +} + +/** + * xmlDictGetUsage: + * @dict: the dictionnary + * + * Get how much memory is used by a dictionary for strings + * Added in 2.9.0 + * + * Returns the amount of strings allocated + */ +size_t +xmlDictGetUsage(xmlDictPtr dict) { + xmlDictStringsPtr pool; + size_t limit = 0; + + if (dict == NULL) + return(0); + pool = dict->strings; + while (pool != NULL) { + limit += pool->size; + pool = pool->next; + } + return(limit); +} #define bottom_dict #include "elfgcchack.h" diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/dict.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/dict.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/dict.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/dict.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -11,6 +11,7 @@ #ifndef __XML_DICT_H__ #define __XML_DICT_H__ +#include #include #include @@ -25,36 +26,46 @@ typedef xmlDict *xmlDictPtr; /* + * Initializer + */ +XMLPUBFUN int XMLCALL xmlInitializeDict(void); + +/* * Constructor and destructor. */ XMLPUBFUN xmlDictPtr XMLCALL xmlDictCreate (void); +XMLPUBFUN size_t XMLCALL + xmlDictSetLimit (xmlDictPtr dict, + size_t limit); +XMLPUBFUN size_t XMLCALL + xmlDictGetUsage (xmlDictPtr dict); XMLPUBFUN xmlDictPtr XMLCALL xmlDictCreateSub(xmlDictPtr sub); XMLPUBFUN int XMLCALL xmlDictReference(xmlDictPtr dict); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDictFree (xmlDictPtr dict); /* * Lookup of entry in the dictionnary. */ -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlDictLookup (xmlDictPtr dict, const xmlChar *name, int len); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlDictExists (xmlDictPtr dict, const xmlChar *name, int len); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlDictQLookup (xmlDictPtr dict, const xmlChar *prefix, const xmlChar *name); XMLPUBFUN int XMLCALL xmlDictOwns (xmlDictPtr dict, const xmlChar *str); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlDictSize (xmlDictPtr dict); /* diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/DOCBparser.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/DOCBparser.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/DOCBparser.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/DOCBparser.c 2015-12-23 07:08:27.000000000 +0000 @@ -53,7 +53,7 @@ /** * docbParseDocument: * @ctxt: an SGML parser context - * + * * parse an SGML document (and build a tree if using the standard SAX * interface). * @@ -163,12 +163,12 @@ * @cur: a pointer to an array of xmlChar * @encoding: a free form C string describing the SGML document encoding, or NULL * @sax: the SAX handler block - * @userData: if using SAX, this pointer will be provided on callbacks. + * @userData: if using SAX, this pointer will be provided on callbacks. * * parse an SGML in-memory document and build a tree. * It use the given SAX function block to handle the parsing callback. * If sax is NULL, fallback to the default DOM tree building routines. - * + * * Returns the resulting document tree */ @@ -196,7 +196,7 @@ * @encoding: a free form C string describing the SGML document encoding, or NULL * * parse an SGML in-memory document and build a tree. - * + * * Returns the resulting document tree */ @@ -221,7 +221,7 @@ * @filename: the filename * @encoding: the SGML document encoding, or NULL * - * Create a parser context for a file content. + * Create a parser context for a file content. * Automatic support for ZLIB/Compress compressed document is provided * by default if found at compile-time. * @@ -247,7 +247,7 @@ * @filename: the filename * @encoding: a free form C string describing the SGML document encoding, or NULL * @sax: the SAX handler block - * @userData: if using SAX, this pointer will be provided on callbacks. + * @userData: if using SAX, this pointer will be provided on callbacks. * * parse an SGML file and build a tree. Automatic support for ZLIB/Compress * compressed document is provided by default if found at compile-time. diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/DOCBparser.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/DOCBparser.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/DOCBparser.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/DOCBparser.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -47,44 +47,44 @@ const unsigned char *in, int *inlen, int quoteChar); -XMLPUBFUN docbDocPtr XMLCALL +XMLPUBFUN docbDocPtr XMLCALL docbSAXParseDoc (xmlChar *cur, const char *encoding, docbSAXHandlerPtr sax, void *userData); -XMLPUBFUN docbDocPtr XMLCALL +XMLPUBFUN docbDocPtr XMLCALL docbParseDoc (xmlChar *cur, const char *encoding); -XMLPUBFUN docbDocPtr XMLCALL +XMLPUBFUN docbDocPtr XMLCALL docbSAXParseFile (const char *filename, const char *encoding, docbSAXHandlerPtr sax, void *userData); -XMLPUBFUN docbDocPtr XMLCALL +XMLPUBFUN docbDocPtr XMLCALL docbParseFile (const char *filename, const char *encoding); /** * Interfaces for the Push mode. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL docbFreeParserCtxt (docbParserCtxtPtr ctxt); -XMLPUBFUN docbParserCtxtPtr XMLCALL +XMLPUBFUN docbParserCtxtPtr XMLCALL docbCreatePushParserCtxt(docbSAXHandlerPtr sax, void *user_data, const char *chunk, int size, const char *filename, xmlCharEncoding enc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL docbParseChunk (docbParserCtxtPtr ctxt, const char *chunk, int size, int terminate); -XMLPUBFUN docbParserCtxtPtr XMLCALL +XMLPUBFUN docbParserCtxtPtr XMLCALL docbCreateFileParserCtxt(const char *filename, const char *encoding); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL docbParseDocument (docbParserCtxtPtr ctxt); #ifdef __cplusplus diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/elfgcchack.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/elfgcchack.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/elfgcchack.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/elfgcchack.h 2015-12-23 07:08:27.000000000 +0000 @@ -0,0 +1,17808 @@ +/* + * elfgcchack.h: hack by Arjan van de Ven to speed + * up the code when using gcc for call within the library. + * + * Based on the analysis http://people.redhat.com/drepper/dsohowto.pdf + * from Ulrich drepper. Rewritten to be generated from the XML description + * file for libxml2 API + * autogenerated with xsltproc doc/elfgcchack.xsl doc/libxml2-api.xml + */ + +#ifdef IN_LIBXML +#ifdef __GNUC__ +#ifdef PIC +#ifdef linux +#if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || (__GNUC__ > 3) + +#include "libxml/c14n.h" +#include "libxml/catalog.h" +#include "libxml/chvalid.h" +#include "libxml/debugXML.h" +#include "libxml/dict.h" +#include "libxml/DOCBparser.h" +#include "libxml/encoding.h" +#include "libxml/entities.h" +#include "libxml/globals.h" +#include "libxml/hash.h" +#include "libxml/HTMLparser.h" +#include "libxml/HTMLtree.h" +#include "libxml/list.h" +#include "libxml/nanoftp.h" +#include "libxml/nanohttp.h" +#include "libxml/parser.h" +#include "libxml/parserInternals.h" +#include "libxml/pattern.h" +#include "libxml/relaxng.h" +#include "libxml/SAX2.h" +#include "libxml/SAX.h" +#include "libxml/schemasInternals.h" +#include "libxml/schematron.h" +#include "libxml/threads.h" +#include "libxml/tree.h" +#include "libxml/uri.h" +#include "libxml/valid.h" +#include "libxml/xinclude.h" +#include "libxml/xlink.h" +#include "libxml/xmlautomata.h" +#include "libxml/xmlerror.h" +#include "libxml/xmlexports.h" +#include "libxml/xmlIO.h" +#include "libxml/xmlmemory.h" +#include "libxml/xmlreader.h" +#include "libxml/xmlregexp.h" +#include "libxml/xmlsave.h" +#include "libxml/xmlschemas.h" +#include "libxml/xmlschemastypes.h" +#include "libxml/xmlstring.h" +#include "libxml/xmlunicode.h" +#include "libxml/xmlversion.h" +#include "libxml/xmlwriter.h" +#include "libxml/xpath.h" +#include "libxml/xpathInternals.h" +#include "libxml/xpointer.h" +#include "libxml/xmlmodule.h" + +/* special hot spot not exported ones */ + +#ifdef bottom_globals +#undef __xmlGenericError +extern __typeof (__xmlGenericError) __xmlGenericError __attribute((alias("__xmlGenericError__internal_alias"))); +#else +#ifndef __xmlGenericError +extern __typeof (__xmlGenericError) __xmlGenericError__internal_alias __attribute((visibility("hidden"))); +#define __xmlGenericError __xmlGenericError__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef __xmlGenericErrorContext +extern __typeof (__xmlGenericErrorContext) __xmlGenericErrorContext __attribute((alias("__xmlGenericErrorContext__internal_alias"))); +#else +#ifndef __xmlGenericErrorContext +extern __typeof (__xmlGenericErrorContext) __xmlGenericErrorContext__internal_alias __attribute((visibility("hidden"))); +#define __xmlGenericErrorContext __xmlGenericErrorContext__internal_alias +#endif +#endif + +/* list generated from libxml2-api.xml */ +#if defined(LIBXML_DOCB_ENABLED) +#ifdef bottom_DOCBparser +#undef docbCreatePushParserCtxt +extern __typeof (docbCreatePushParserCtxt) docbCreatePushParserCtxt __attribute((alias("docbCreatePushParserCtxt__internal_alias"))); +#else +#ifndef docbCreatePushParserCtxt +extern __typeof (docbCreatePushParserCtxt) docbCreatePushParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define docbCreatePushParserCtxt docbCreatePushParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlAttrAllowed +extern __typeof (htmlAttrAllowed) htmlAttrAllowed __attribute((alias("htmlAttrAllowed__internal_alias"))); +#else +#ifndef htmlAttrAllowed +extern __typeof (htmlAttrAllowed) htmlAttrAllowed__internal_alias __attribute((visibility("hidden"))); +#define htmlAttrAllowed htmlAttrAllowed__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlAutoCloseTag +extern __typeof (htmlAutoCloseTag) htmlAutoCloseTag __attribute((alias("htmlAutoCloseTag__internal_alias"))); +#else +#ifndef htmlAutoCloseTag +extern __typeof (htmlAutoCloseTag) htmlAutoCloseTag__internal_alias __attribute((visibility("hidden"))); +#define htmlAutoCloseTag htmlAutoCloseTag__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCreateFileParserCtxt +extern __typeof (htmlCreateFileParserCtxt) htmlCreateFileParserCtxt __attribute((alias("htmlCreateFileParserCtxt__internal_alias"))); +#else +#ifndef htmlCreateFileParserCtxt +extern __typeof (htmlCreateFileParserCtxt) htmlCreateFileParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define htmlCreateFileParserCtxt htmlCreateFileParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCreateMemoryParserCtxt +extern __typeof (htmlCreateMemoryParserCtxt) htmlCreateMemoryParserCtxt __attribute((alias("htmlCreateMemoryParserCtxt__internal_alias"))); +#else +#ifndef htmlCreateMemoryParserCtxt +extern __typeof (htmlCreateMemoryParserCtxt) htmlCreateMemoryParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define htmlCreateMemoryParserCtxt htmlCreateMemoryParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_PUSH_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCreatePushParserCtxt +extern __typeof (htmlCreatePushParserCtxt) htmlCreatePushParserCtxt __attribute((alias("htmlCreatePushParserCtxt__internal_alias"))); +#else +#ifndef htmlCreatePushParserCtxt +extern __typeof (htmlCreatePushParserCtxt) htmlCreatePushParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define htmlCreatePushParserCtxt htmlCreatePushParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCtxtReadDoc +extern __typeof (htmlCtxtReadDoc) htmlCtxtReadDoc __attribute((alias("htmlCtxtReadDoc__internal_alias"))); +#else +#ifndef htmlCtxtReadDoc +extern __typeof (htmlCtxtReadDoc) htmlCtxtReadDoc__internal_alias __attribute((visibility("hidden"))); +#define htmlCtxtReadDoc htmlCtxtReadDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCtxtReadFd +extern __typeof (htmlCtxtReadFd) htmlCtxtReadFd __attribute((alias("htmlCtxtReadFd__internal_alias"))); +#else +#ifndef htmlCtxtReadFd +extern __typeof (htmlCtxtReadFd) htmlCtxtReadFd__internal_alias __attribute((visibility("hidden"))); +#define htmlCtxtReadFd htmlCtxtReadFd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCtxtReadFile +extern __typeof (htmlCtxtReadFile) htmlCtxtReadFile __attribute((alias("htmlCtxtReadFile__internal_alias"))); +#else +#ifndef htmlCtxtReadFile +extern __typeof (htmlCtxtReadFile) htmlCtxtReadFile__internal_alias __attribute((visibility("hidden"))); +#define htmlCtxtReadFile htmlCtxtReadFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCtxtReadIO +extern __typeof (htmlCtxtReadIO) htmlCtxtReadIO __attribute((alias("htmlCtxtReadIO__internal_alias"))); +#else +#ifndef htmlCtxtReadIO +extern __typeof (htmlCtxtReadIO) htmlCtxtReadIO__internal_alias __attribute((visibility("hidden"))); +#define htmlCtxtReadIO htmlCtxtReadIO__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCtxtReadMemory +extern __typeof (htmlCtxtReadMemory) htmlCtxtReadMemory __attribute((alias("htmlCtxtReadMemory__internal_alias"))); +#else +#ifndef htmlCtxtReadMemory +extern __typeof (htmlCtxtReadMemory) htmlCtxtReadMemory__internal_alias __attribute((visibility("hidden"))); +#define htmlCtxtReadMemory htmlCtxtReadMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCtxtReset +extern __typeof (htmlCtxtReset) htmlCtxtReset __attribute((alias("htmlCtxtReset__internal_alias"))); +#else +#ifndef htmlCtxtReset +extern __typeof (htmlCtxtReset) htmlCtxtReset__internal_alias __attribute((visibility("hidden"))); +#define htmlCtxtReset htmlCtxtReset__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCtxtUseOptions +extern __typeof (htmlCtxtUseOptions) htmlCtxtUseOptions __attribute((alias("htmlCtxtUseOptions__internal_alias"))); +#else +#ifndef htmlCtxtUseOptions +extern __typeof (htmlCtxtUseOptions) htmlCtxtUseOptions__internal_alias __attribute((visibility("hidden"))); +#define htmlCtxtUseOptions htmlCtxtUseOptions__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_SAX2 +#undef htmlDefaultSAXHandlerInit +extern __typeof (htmlDefaultSAXHandlerInit) htmlDefaultSAXHandlerInit __attribute((alias("htmlDefaultSAXHandlerInit__internal_alias"))); +#else +#ifndef htmlDefaultSAXHandlerInit +extern __typeof (htmlDefaultSAXHandlerInit) htmlDefaultSAXHandlerInit__internal_alias __attribute((visibility("hidden"))); +#define htmlDefaultSAXHandlerInit htmlDefaultSAXHandlerInit__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlDocContentDumpFormatOutput +extern __typeof (htmlDocContentDumpFormatOutput) htmlDocContentDumpFormatOutput __attribute((alias("htmlDocContentDumpFormatOutput__internal_alias"))); +#else +#ifndef htmlDocContentDumpFormatOutput +extern __typeof (htmlDocContentDumpFormatOutput) htmlDocContentDumpFormatOutput__internal_alias __attribute((visibility("hidden"))); +#define htmlDocContentDumpFormatOutput htmlDocContentDumpFormatOutput__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlDocContentDumpOutput +extern __typeof (htmlDocContentDumpOutput) htmlDocContentDumpOutput __attribute((alias("htmlDocContentDumpOutput__internal_alias"))); +#else +#ifndef htmlDocContentDumpOutput +extern __typeof (htmlDocContentDumpOutput) htmlDocContentDumpOutput__internal_alias __attribute((visibility("hidden"))); +#define htmlDocContentDumpOutput htmlDocContentDumpOutput__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlDocDump +extern __typeof (htmlDocDump) htmlDocDump __attribute((alias("htmlDocDump__internal_alias"))); +#else +#ifndef htmlDocDump +extern __typeof (htmlDocDump) htmlDocDump__internal_alias __attribute((visibility("hidden"))); +#define htmlDocDump htmlDocDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlDocDumpMemory +extern __typeof (htmlDocDumpMemory) htmlDocDumpMemory __attribute((alias("htmlDocDumpMemory__internal_alias"))); +#else +#ifndef htmlDocDumpMemory +extern __typeof (htmlDocDumpMemory) htmlDocDumpMemory__internal_alias __attribute((visibility("hidden"))); +#define htmlDocDumpMemory htmlDocDumpMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlDocDumpMemoryFormat +extern __typeof (htmlDocDumpMemoryFormat) htmlDocDumpMemoryFormat __attribute((alias("htmlDocDumpMemoryFormat__internal_alias"))); +#else +#ifndef htmlDocDumpMemoryFormat +extern __typeof (htmlDocDumpMemoryFormat) htmlDocDumpMemoryFormat__internal_alias __attribute((visibility("hidden"))); +#define htmlDocDumpMemoryFormat htmlDocDumpMemoryFormat__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlElementAllowedHere +extern __typeof (htmlElementAllowedHere) htmlElementAllowedHere __attribute((alias("htmlElementAllowedHere__internal_alias"))); +#else +#ifndef htmlElementAllowedHere +extern __typeof (htmlElementAllowedHere) htmlElementAllowedHere__internal_alias __attribute((visibility("hidden"))); +#define htmlElementAllowedHere htmlElementAllowedHere__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlElementStatusHere +extern __typeof (htmlElementStatusHere) htmlElementStatusHere __attribute((alias("htmlElementStatusHere__internal_alias"))); +#else +#ifndef htmlElementStatusHere +extern __typeof (htmlElementStatusHere) htmlElementStatusHere__internal_alias __attribute((visibility("hidden"))); +#define htmlElementStatusHere htmlElementStatusHere__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlEncodeEntities +extern __typeof (htmlEncodeEntities) htmlEncodeEntities __attribute((alias("htmlEncodeEntities__internal_alias"))); +#else +#ifndef htmlEncodeEntities +extern __typeof (htmlEncodeEntities) htmlEncodeEntities__internal_alias __attribute((visibility("hidden"))); +#define htmlEncodeEntities htmlEncodeEntities__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlEntityLookup +extern __typeof (htmlEntityLookup) htmlEntityLookup __attribute((alias("htmlEntityLookup__internal_alias"))); +#else +#ifndef htmlEntityLookup +extern __typeof (htmlEntityLookup) htmlEntityLookup__internal_alias __attribute((visibility("hidden"))); +#define htmlEntityLookup htmlEntityLookup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlEntityValueLookup +extern __typeof (htmlEntityValueLookup) htmlEntityValueLookup __attribute((alias("htmlEntityValueLookup__internal_alias"))); +#else +#ifndef htmlEntityValueLookup +extern __typeof (htmlEntityValueLookup) htmlEntityValueLookup__internal_alias __attribute((visibility("hidden"))); +#define htmlEntityValueLookup htmlEntityValueLookup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlFreeParserCtxt +extern __typeof (htmlFreeParserCtxt) htmlFreeParserCtxt __attribute((alias("htmlFreeParserCtxt__internal_alias"))); +#else +#ifndef htmlFreeParserCtxt +extern __typeof (htmlFreeParserCtxt) htmlFreeParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define htmlFreeParserCtxt htmlFreeParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlGetMetaEncoding +extern __typeof (htmlGetMetaEncoding) htmlGetMetaEncoding __attribute((alias("htmlGetMetaEncoding__internal_alias"))); +#else +#ifndef htmlGetMetaEncoding +extern __typeof (htmlGetMetaEncoding) htmlGetMetaEncoding__internal_alias __attribute((visibility("hidden"))); +#define htmlGetMetaEncoding htmlGetMetaEncoding__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlHandleOmittedElem +extern __typeof (htmlHandleOmittedElem) htmlHandleOmittedElem __attribute((alias("htmlHandleOmittedElem__internal_alias"))); +#else +#ifndef htmlHandleOmittedElem +extern __typeof (htmlHandleOmittedElem) htmlHandleOmittedElem__internal_alias __attribute((visibility("hidden"))); +#define htmlHandleOmittedElem htmlHandleOmittedElem__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlInitAutoClose +extern __typeof (htmlInitAutoClose) htmlInitAutoClose __attribute((alias("htmlInitAutoClose__internal_alias"))); +#else +#ifndef htmlInitAutoClose +extern __typeof (htmlInitAutoClose) htmlInitAutoClose__internal_alias __attribute((visibility("hidden"))); +#define htmlInitAutoClose htmlInitAutoClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlIsAutoClosed +extern __typeof (htmlIsAutoClosed) htmlIsAutoClosed __attribute((alias("htmlIsAutoClosed__internal_alias"))); +#else +#ifndef htmlIsAutoClosed +extern __typeof (htmlIsAutoClosed) htmlIsAutoClosed__internal_alias __attribute((visibility("hidden"))); +#define htmlIsAutoClosed htmlIsAutoClosed__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlIsBooleanAttr +extern __typeof (htmlIsBooleanAttr) htmlIsBooleanAttr __attribute((alias("htmlIsBooleanAttr__internal_alias"))); +#else +#ifndef htmlIsBooleanAttr +extern __typeof (htmlIsBooleanAttr) htmlIsBooleanAttr__internal_alias __attribute((visibility("hidden"))); +#define htmlIsBooleanAttr htmlIsBooleanAttr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlIsScriptAttribute +extern __typeof (htmlIsScriptAttribute) htmlIsScriptAttribute __attribute((alias("htmlIsScriptAttribute__internal_alias"))); +#else +#ifndef htmlIsScriptAttribute +extern __typeof (htmlIsScriptAttribute) htmlIsScriptAttribute__internal_alias __attribute((visibility("hidden"))); +#define htmlIsScriptAttribute htmlIsScriptAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlNewDoc +extern __typeof (htmlNewDoc) htmlNewDoc __attribute((alias("htmlNewDoc__internal_alias"))); +#else +#ifndef htmlNewDoc +extern __typeof (htmlNewDoc) htmlNewDoc__internal_alias __attribute((visibility("hidden"))); +#define htmlNewDoc htmlNewDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlNewDocNoDtD +extern __typeof (htmlNewDocNoDtD) htmlNewDocNoDtD __attribute((alias("htmlNewDocNoDtD__internal_alias"))); +#else +#ifndef htmlNewDocNoDtD +extern __typeof (htmlNewDocNoDtD) htmlNewDocNoDtD__internal_alias __attribute((visibility("hidden"))); +#define htmlNewDocNoDtD htmlNewDocNoDtD__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlNewParserCtxt +extern __typeof (htmlNewParserCtxt) htmlNewParserCtxt __attribute((alias("htmlNewParserCtxt__internal_alias"))); +#else +#ifndef htmlNewParserCtxt +extern __typeof (htmlNewParserCtxt) htmlNewParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define htmlNewParserCtxt htmlNewParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlNodeDump +extern __typeof (htmlNodeDump) htmlNodeDump __attribute((alias("htmlNodeDump__internal_alias"))); +#else +#ifndef htmlNodeDump +extern __typeof (htmlNodeDump) htmlNodeDump__internal_alias __attribute((visibility("hidden"))); +#define htmlNodeDump htmlNodeDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlNodeDumpFile +extern __typeof (htmlNodeDumpFile) htmlNodeDumpFile __attribute((alias("htmlNodeDumpFile__internal_alias"))); +#else +#ifndef htmlNodeDumpFile +extern __typeof (htmlNodeDumpFile) htmlNodeDumpFile__internal_alias __attribute((visibility("hidden"))); +#define htmlNodeDumpFile htmlNodeDumpFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlNodeDumpFileFormat +extern __typeof (htmlNodeDumpFileFormat) htmlNodeDumpFileFormat __attribute((alias("htmlNodeDumpFileFormat__internal_alias"))); +#else +#ifndef htmlNodeDumpFileFormat +extern __typeof (htmlNodeDumpFileFormat) htmlNodeDumpFileFormat__internal_alias __attribute((visibility("hidden"))); +#define htmlNodeDumpFileFormat htmlNodeDumpFileFormat__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlNodeDumpFormatOutput +extern __typeof (htmlNodeDumpFormatOutput) htmlNodeDumpFormatOutput __attribute((alias("htmlNodeDumpFormatOutput__internal_alias"))); +#else +#ifndef htmlNodeDumpFormatOutput +extern __typeof (htmlNodeDumpFormatOutput) htmlNodeDumpFormatOutput__internal_alias __attribute((visibility("hidden"))); +#define htmlNodeDumpFormatOutput htmlNodeDumpFormatOutput__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlNodeDumpOutput +extern __typeof (htmlNodeDumpOutput) htmlNodeDumpOutput __attribute((alias("htmlNodeDumpOutput__internal_alias"))); +#else +#ifndef htmlNodeDumpOutput +extern __typeof (htmlNodeDumpOutput) htmlNodeDumpOutput__internal_alias __attribute((visibility("hidden"))); +#define htmlNodeDumpOutput htmlNodeDumpOutput__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlNodeStatus +extern __typeof (htmlNodeStatus) htmlNodeStatus __attribute((alias("htmlNodeStatus__internal_alias"))); +#else +#ifndef htmlNodeStatus +extern __typeof (htmlNodeStatus) htmlNodeStatus__internal_alias __attribute((visibility("hidden"))); +#define htmlNodeStatus htmlNodeStatus__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlParseCharRef +extern __typeof (htmlParseCharRef) htmlParseCharRef __attribute((alias("htmlParseCharRef__internal_alias"))); +#else +#ifndef htmlParseCharRef +extern __typeof (htmlParseCharRef) htmlParseCharRef__internal_alias __attribute((visibility("hidden"))); +#define htmlParseCharRef htmlParseCharRef__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_PUSH_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlParseChunk +extern __typeof (htmlParseChunk) htmlParseChunk __attribute((alias("htmlParseChunk__internal_alias"))); +#else +#ifndef htmlParseChunk +extern __typeof (htmlParseChunk) htmlParseChunk__internal_alias __attribute((visibility("hidden"))); +#define htmlParseChunk htmlParseChunk__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlParseDoc +extern __typeof (htmlParseDoc) htmlParseDoc __attribute((alias("htmlParseDoc__internal_alias"))); +#else +#ifndef htmlParseDoc +extern __typeof (htmlParseDoc) htmlParseDoc__internal_alias __attribute((visibility("hidden"))); +#define htmlParseDoc htmlParseDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlParseDocument +extern __typeof (htmlParseDocument) htmlParseDocument __attribute((alias("htmlParseDocument__internal_alias"))); +#else +#ifndef htmlParseDocument +extern __typeof (htmlParseDocument) htmlParseDocument__internal_alias __attribute((visibility("hidden"))); +#define htmlParseDocument htmlParseDocument__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlParseElement +extern __typeof (htmlParseElement) htmlParseElement __attribute((alias("htmlParseElement__internal_alias"))); +#else +#ifndef htmlParseElement +extern __typeof (htmlParseElement) htmlParseElement__internal_alias __attribute((visibility("hidden"))); +#define htmlParseElement htmlParseElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlParseEntityRef +extern __typeof (htmlParseEntityRef) htmlParseEntityRef __attribute((alias("htmlParseEntityRef__internal_alias"))); +#else +#ifndef htmlParseEntityRef +extern __typeof (htmlParseEntityRef) htmlParseEntityRef__internal_alias __attribute((visibility("hidden"))); +#define htmlParseEntityRef htmlParseEntityRef__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlParseFile +extern __typeof (htmlParseFile) htmlParseFile __attribute((alias("htmlParseFile__internal_alias"))); +#else +#ifndef htmlParseFile +extern __typeof (htmlParseFile) htmlParseFile__internal_alias __attribute((visibility("hidden"))); +#define htmlParseFile htmlParseFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlReadDoc +extern __typeof (htmlReadDoc) htmlReadDoc __attribute((alias("htmlReadDoc__internal_alias"))); +#else +#ifndef htmlReadDoc +extern __typeof (htmlReadDoc) htmlReadDoc__internal_alias __attribute((visibility("hidden"))); +#define htmlReadDoc htmlReadDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlReadFd +extern __typeof (htmlReadFd) htmlReadFd __attribute((alias("htmlReadFd__internal_alias"))); +#else +#ifndef htmlReadFd +extern __typeof (htmlReadFd) htmlReadFd__internal_alias __attribute((visibility("hidden"))); +#define htmlReadFd htmlReadFd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlReadFile +extern __typeof (htmlReadFile) htmlReadFile __attribute((alias("htmlReadFile__internal_alias"))); +#else +#ifndef htmlReadFile +extern __typeof (htmlReadFile) htmlReadFile__internal_alias __attribute((visibility("hidden"))); +#define htmlReadFile htmlReadFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlReadIO +extern __typeof (htmlReadIO) htmlReadIO __attribute((alias("htmlReadIO__internal_alias"))); +#else +#ifndef htmlReadIO +extern __typeof (htmlReadIO) htmlReadIO__internal_alias __attribute((visibility("hidden"))); +#define htmlReadIO htmlReadIO__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlReadMemory +extern __typeof (htmlReadMemory) htmlReadMemory __attribute((alias("htmlReadMemory__internal_alias"))); +#else +#ifndef htmlReadMemory +extern __typeof (htmlReadMemory) htmlReadMemory__internal_alias __attribute((visibility("hidden"))); +#define htmlReadMemory htmlReadMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlSAXParseDoc +extern __typeof (htmlSAXParseDoc) htmlSAXParseDoc __attribute((alias("htmlSAXParseDoc__internal_alias"))); +#else +#ifndef htmlSAXParseDoc +extern __typeof (htmlSAXParseDoc) htmlSAXParseDoc__internal_alias __attribute((visibility("hidden"))); +#define htmlSAXParseDoc htmlSAXParseDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlSAXParseFile +extern __typeof (htmlSAXParseFile) htmlSAXParseFile __attribute((alias("htmlSAXParseFile__internal_alias"))); +#else +#ifndef htmlSAXParseFile +extern __typeof (htmlSAXParseFile) htmlSAXParseFile__internal_alias __attribute((visibility("hidden"))); +#define htmlSAXParseFile htmlSAXParseFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlSaveFile +extern __typeof (htmlSaveFile) htmlSaveFile __attribute((alias("htmlSaveFile__internal_alias"))); +#else +#ifndef htmlSaveFile +extern __typeof (htmlSaveFile) htmlSaveFile__internal_alias __attribute((visibility("hidden"))); +#define htmlSaveFile htmlSaveFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlSaveFileEnc +extern __typeof (htmlSaveFileEnc) htmlSaveFileEnc __attribute((alias("htmlSaveFileEnc__internal_alias"))); +#else +#ifndef htmlSaveFileEnc +extern __typeof (htmlSaveFileEnc) htmlSaveFileEnc__internal_alias __attribute((visibility("hidden"))); +#define htmlSaveFileEnc htmlSaveFileEnc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlSaveFileFormat +extern __typeof (htmlSaveFileFormat) htmlSaveFileFormat __attribute((alias("htmlSaveFileFormat__internal_alias"))); +#else +#ifndef htmlSaveFileFormat +extern __typeof (htmlSaveFileFormat) htmlSaveFileFormat__internal_alias __attribute((visibility("hidden"))); +#define htmlSaveFileFormat htmlSaveFileFormat__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlSetMetaEncoding +extern __typeof (htmlSetMetaEncoding) htmlSetMetaEncoding __attribute((alias("htmlSetMetaEncoding__internal_alias"))); +#else +#ifndef htmlSetMetaEncoding +extern __typeof (htmlSetMetaEncoding) htmlSetMetaEncoding__internal_alias __attribute((visibility("hidden"))); +#define htmlSetMetaEncoding htmlSetMetaEncoding__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlTagLookup +extern __typeof (htmlTagLookup) htmlTagLookup __attribute((alias("htmlTagLookup__internal_alias"))); +#else +#ifndef htmlTagLookup +extern __typeof (htmlTagLookup) htmlTagLookup__internal_alias __attribute((visibility("hidden"))); +#define htmlTagLookup htmlTagLookup__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef inputPop +extern __typeof (inputPop) inputPop __attribute((alias("inputPop__internal_alias"))); +#else +#ifndef inputPop +extern __typeof (inputPop) inputPop__internal_alias __attribute((visibility("hidden"))); +#define inputPop inputPop__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef inputPush +extern __typeof (inputPush) inputPush __attribute((alias("inputPush__internal_alias"))); +#else +#ifndef inputPush +extern __typeof (inputPush) inputPush__internal_alias __attribute((visibility("hidden"))); +#define inputPush inputPush__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef namePop +extern __typeof (namePop) namePop __attribute((alias("namePop__internal_alias"))); +#else +#ifndef namePop +extern __typeof (namePop) namePop__internal_alias __attribute((visibility("hidden"))); +#define namePop namePop__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef namePush +extern __typeof (namePush) namePush __attribute((alias("namePush__internal_alias"))); +#else +#ifndef namePush +extern __typeof (namePush) namePush__internal_alias __attribute((visibility("hidden"))); +#define namePush namePush__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef nodePop +extern __typeof (nodePop) nodePop __attribute((alias("nodePop__internal_alias"))); +#else +#ifndef nodePop +extern __typeof (nodePop) nodePop__internal_alias __attribute((visibility("hidden"))); +#define nodePop nodePop__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef nodePush +extern __typeof (nodePush) nodePush __attribute((alias("nodePush__internal_alias"))); +#else +#ifndef nodePush +extern __typeof (nodePush) nodePush__internal_alias __attribute((visibility("hidden"))); +#define nodePush nodePush__internal_alias +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef valuePop +extern __typeof (valuePop) valuePop __attribute((alias("valuePop__internal_alias"))); +#else +#ifndef valuePop +extern __typeof (valuePop) valuePop__internal_alias __attribute((visibility("hidden"))); +#define valuePop valuePop__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef valuePush +extern __typeof (valuePush) valuePush __attribute((alias("valuePush__internal_alias"))); +#else +#ifndef valuePush +extern __typeof (valuePush) valuePush__internal_alias __attribute((visibility("hidden"))); +#define valuePush valuePush__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlACatalogAdd +extern __typeof (xmlACatalogAdd) xmlACatalogAdd __attribute((alias("xmlACatalogAdd__internal_alias"))); +#else +#ifndef xmlACatalogAdd +extern __typeof (xmlACatalogAdd) xmlACatalogAdd__internal_alias __attribute((visibility("hidden"))); +#define xmlACatalogAdd xmlACatalogAdd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_catalog +#undef xmlACatalogDump +extern __typeof (xmlACatalogDump) xmlACatalogDump __attribute((alias("xmlACatalogDump__internal_alias"))); +#else +#ifndef xmlACatalogDump +extern __typeof (xmlACatalogDump) xmlACatalogDump__internal_alias __attribute((visibility("hidden"))); +#define xmlACatalogDump xmlACatalogDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlACatalogRemove +extern __typeof (xmlACatalogRemove) xmlACatalogRemove __attribute((alias("xmlACatalogRemove__internal_alias"))); +#else +#ifndef xmlACatalogRemove +extern __typeof (xmlACatalogRemove) xmlACatalogRemove__internal_alias __attribute((visibility("hidden"))); +#define xmlACatalogRemove xmlACatalogRemove__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlACatalogResolve +extern __typeof (xmlACatalogResolve) xmlACatalogResolve __attribute((alias("xmlACatalogResolve__internal_alias"))); +#else +#ifndef xmlACatalogResolve +extern __typeof (xmlACatalogResolve) xmlACatalogResolve__internal_alias __attribute((visibility("hidden"))); +#define xmlACatalogResolve xmlACatalogResolve__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlACatalogResolvePublic +extern __typeof (xmlACatalogResolvePublic) xmlACatalogResolvePublic __attribute((alias("xmlACatalogResolvePublic__internal_alias"))); +#else +#ifndef xmlACatalogResolvePublic +extern __typeof (xmlACatalogResolvePublic) xmlACatalogResolvePublic__internal_alias __attribute((visibility("hidden"))); +#define xmlACatalogResolvePublic xmlACatalogResolvePublic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlACatalogResolveSystem +extern __typeof (xmlACatalogResolveSystem) xmlACatalogResolveSystem __attribute((alias("xmlACatalogResolveSystem__internal_alias"))); +#else +#ifndef xmlACatalogResolveSystem +extern __typeof (xmlACatalogResolveSystem) xmlACatalogResolveSystem__internal_alias __attribute((visibility("hidden"))); +#define xmlACatalogResolveSystem xmlACatalogResolveSystem__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlACatalogResolveURI +extern __typeof (xmlACatalogResolveURI) xmlACatalogResolveURI __attribute((alias("xmlACatalogResolveURI__internal_alias"))); +#else +#ifndef xmlACatalogResolveURI +extern __typeof (xmlACatalogResolveURI) xmlACatalogResolveURI__internal_alias __attribute((visibility("hidden"))); +#define xmlACatalogResolveURI xmlACatalogResolveURI__internal_alias +#endif +#endif +#endif + +#ifdef bottom_valid +#undef xmlAddAttributeDecl +extern __typeof (xmlAddAttributeDecl) xmlAddAttributeDecl __attribute((alias("xmlAddAttributeDecl__internal_alias"))); +#else +#ifndef xmlAddAttributeDecl +extern __typeof (xmlAddAttributeDecl) xmlAddAttributeDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlAddAttributeDecl xmlAddAttributeDecl__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlAddChild +extern __typeof (xmlAddChild) xmlAddChild __attribute((alias("xmlAddChild__internal_alias"))); +#else +#ifndef xmlAddChild +extern __typeof (xmlAddChild) xmlAddChild__internal_alias __attribute((visibility("hidden"))); +#define xmlAddChild xmlAddChild__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlAddChildList +extern __typeof (xmlAddChildList) xmlAddChildList __attribute((alias("xmlAddChildList__internal_alias"))); +#else +#ifndef xmlAddChildList +extern __typeof (xmlAddChildList) xmlAddChildList__internal_alias __attribute((visibility("hidden"))); +#define xmlAddChildList xmlAddChildList__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlAddDocEntity +extern __typeof (xmlAddDocEntity) xmlAddDocEntity __attribute((alias("xmlAddDocEntity__internal_alias"))); +#else +#ifndef xmlAddDocEntity +extern __typeof (xmlAddDocEntity) xmlAddDocEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlAddDocEntity xmlAddDocEntity__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlAddDtdEntity +extern __typeof (xmlAddDtdEntity) xmlAddDtdEntity __attribute((alias("xmlAddDtdEntity__internal_alias"))); +#else +#ifndef xmlAddDtdEntity +extern __typeof (xmlAddDtdEntity) xmlAddDtdEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlAddDtdEntity xmlAddDtdEntity__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlAddElementDecl +extern __typeof (xmlAddElementDecl) xmlAddElementDecl __attribute((alias("xmlAddElementDecl__internal_alias"))); +#else +#ifndef xmlAddElementDecl +extern __typeof (xmlAddElementDecl) xmlAddElementDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlAddElementDecl xmlAddElementDecl__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlAddEncodingAlias +extern __typeof (xmlAddEncodingAlias) xmlAddEncodingAlias __attribute((alias("xmlAddEncodingAlias__internal_alias"))); +#else +#ifndef xmlAddEncodingAlias +extern __typeof (xmlAddEncodingAlias) xmlAddEncodingAlias__internal_alias __attribute((visibility("hidden"))); +#define xmlAddEncodingAlias xmlAddEncodingAlias__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlAddID +extern __typeof (xmlAddID) xmlAddID __attribute((alias("xmlAddID__internal_alias"))); +#else +#ifndef xmlAddID +extern __typeof (xmlAddID) xmlAddID__internal_alias __attribute((visibility("hidden"))); +#define xmlAddID xmlAddID__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlAddNextSibling +extern __typeof (xmlAddNextSibling) xmlAddNextSibling __attribute((alias("xmlAddNextSibling__internal_alias"))); +#else +#ifndef xmlAddNextSibling +extern __typeof (xmlAddNextSibling) xmlAddNextSibling__internal_alias __attribute((visibility("hidden"))); +#define xmlAddNextSibling xmlAddNextSibling__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlAddNotationDecl +extern __typeof (xmlAddNotationDecl) xmlAddNotationDecl __attribute((alias("xmlAddNotationDecl__internal_alias"))); +#else +#ifndef xmlAddNotationDecl +extern __typeof (xmlAddNotationDecl) xmlAddNotationDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlAddNotationDecl xmlAddNotationDecl__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_tree +#undef xmlAddPrevSibling +extern __typeof (xmlAddPrevSibling) xmlAddPrevSibling __attribute((alias("xmlAddPrevSibling__internal_alias"))); +#else +#ifndef xmlAddPrevSibling +extern __typeof (xmlAddPrevSibling) xmlAddPrevSibling__internal_alias __attribute((visibility("hidden"))); +#define xmlAddPrevSibling xmlAddPrevSibling__internal_alias +#endif +#endif +#endif + +#ifdef bottom_valid +#undef xmlAddRef +extern __typeof (xmlAddRef) xmlAddRef __attribute((alias("xmlAddRef__internal_alias"))); +#else +#ifndef xmlAddRef +extern __typeof (xmlAddRef) xmlAddRef__internal_alias __attribute((visibility("hidden"))); +#define xmlAddRef xmlAddRef__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlAddSibling +extern __typeof (xmlAddSibling) xmlAddSibling __attribute((alias("xmlAddSibling__internal_alias"))); +#else +#ifndef xmlAddSibling +extern __typeof (xmlAddSibling) xmlAddSibling__internal_alias __attribute((visibility("hidden"))); +#define xmlAddSibling xmlAddSibling__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlAllocOutputBuffer +extern __typeof (xmlAllocOutputBuffer) xmlAllocOutputBuffer __attribute((alias("xmlAllocOutputBuffer__internal_alias"))); +#else +#ifndef xmlAllocOutputBuffer +extern __typeof (xmlAllocOutputBuffer) xmlAllocOutputBuffer__internal_alias __attribute((visibility("hidden"))); +#define xmlAllocOutputBuffer xmlAllocOutputBuffer__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlAllocParserInputBuffer +extern __typeof (xmlAllocParserInputBuffer) xmlAllocParserInputBuffer __attribute((alias("xmlAllocParserInputBuffer__internal_alias"))); +#else +#ifndef xmlAllocParserInputBuffer +extern __typeof (xmlAllocParserInputBuffer) xmlAllocParserInputBuffer__internal_alias __attribute((visibility("hidden"))); +#define xmlAllocParserInputBuffer xmlAllocParserInputBuffer__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlAttrSerializeTxtContent +extern __typeof (xmlAttrSerializeTxtContent) xmlAttrSerializeTxtContent __attribute((alias("xmlAttrSerializeTxtContent__internal_alias"))); +#else +#ifndef xmlAttrSerializeTxtContent +extern __typeof (xmlAttrSerializeTxtContent) xmlAttrSerializeTxtContent__internal_alias __attribute((visibility("hidden"))); +#define xmlAttrSerializeTxtContent xmlAttrSerializeTxtContent__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataCompile +extern __typeof (xmlAutomataCompile) xmlAutomataCompile __attribute((alias("xmlAutomataCompile__internal_alias"))); +#else +#ifndef xmlAutomataCompile +extern __typeof (xmlAutomataCompile) xmlAutomataCompile__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataCompile xmlAutomataCompile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataGetInitState +extern __typeof (xmlAutomataGetInitState) xmlAutomataGetInitState __attribute((alias("xmlAutomataGetInitState__internal_alias"))); +#else +#ifndef xmlAutomataGetInitState +extern __typeof (xmlAutomataGetInitState) xmlAutomataGetInitState__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataGetInitState xmlAutomataGetInitState__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataIsDeterminist +extern __typeof (xmlAutomataIsDeterminist) xmlAutomataIsDeterminist __attribute((alias("xmlAutomataIsDeterminist__internal_alias"))); +#else +#ifndef xmlAutomataIsDeterminist +extern __typeof (xmlAutomataIsDeterminist) xmlAutomataIsDeterminist__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataIsDeterminist xmlAutomataIsDeterminist__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewAllTrans +extern __typeof (xmlAutomataNewAllTrans) xmlAutomataNewAllTrans __attribute((alias("xmlAutomataNewAllTrans__internal_alias"))); +#else +#ifndef xmlAutomataNewAllTrans +extern __typeof (xmlAutomataNewAllTrans) xmlAutomataNewAllTrans__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewAllTrans xmlAutomataNewAllTrans__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewCountTrans +extern __typeof (xmlAutomataNewCountTrans) xmlAutomataNewCountTrans __attribute((alias("xmlAutomataNewCountTrans__internal_alias"))); +#else +#ifndef xmlAutomataNewCountTrans +extern __typeof (xmlAutomataNewCountTrans) xmlAutomataNewCountTrans__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewCountTrans xmlAutomataNewCountTrans__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewCountTrans2 +extern __typeof (xmlAutomataNewCountTrans2) xmlAutomataNewCountTrans2 __attribute((alias("xmlAutomataNewCountTrans2__internal_alias"))); +#else +#ifndef xmlAutomataNewCountTrans2 +extern __typeof (xmlAutomataNewCountTrans2) xmlAutomataNewCountTrans2__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewCountTrans2 xmlAutomataNewCountTrans2__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewCountedTrans +extern __typeof (xmlAutomataNewCountedTrans) xmlAutomataNewCountedTrans __attribute((alias("xmlAutomataNewCountedTrans__internal_alias"))); +#else +#ifndef xmlAutomataNewCountedTrans +extern __typeof (xmlAutomataNewCountedTrans) xmlAutomataNewCountedTrans__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewCountedTrans xmlAutomataNewCountedTrans__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewCounter +extern __typeof (xmlAutomataNewCounter) xmlAutomataNewCounter __attribute((alias("xmlAutomataNewCounter__internal_alias"))); +#else +#ifndef xmlAutomataNewCounter +extern __typeof (xmlAutomataNewCounter) xmlAutomataNewCounter__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewCounter xmlAutomataNewCounter__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewCounterTrans +extern __typeof (xmlAutomataNewCounterTrans) xmlAutomataNewCounterTrans __attribute((alias("xmlAutomataNewCounterTrans__internal_alias"))); +#else +#ifndef xmlAutomataNewCounterTrans +extern __typeof (xmlAutomataNewCounterTrans) xmlAutomataNewCounterTrans__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewCounterTrans xmlAutomataNewCounterTrans__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewEpsilon +extern __typeof (xmlAutomataNewEpsilon) xmlAutomataNewEpsilon __attribute((alias("xmlAutomataNewEpsilon__internal_alias"))); +#else +#ifndef xmlAutomataNewEpsilon +extern __typeof (xmlAutomataNewEpsilon) xmlAutomataNewEpsilon__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewEpsilon xmlAutomataNewEpsilon__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewNegTrans +extern __typeof (xmlAutomataNewNegTrans) xmlAutomataNewNegTrans __attribute((alias("xmlAutomataNewNegTrans__internal_alias"))); +#else +#ifndef xmlAutomataNewNegTrans +extern __typeof (xmlAutomataNewNegTrans) xmlAutomataNewNegTrans__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewNegTrans xmlAutomataNewNegTrans__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewOnceTrans +extern __typeof (xmlAutomataNewOnceTrans) xmlAutomataNewOnceTrans __attribute((alias("xmlAutomataNewOnceTrans__internal_alias"))); +#else +#ifndef xmlAutomataNewOnceTrans +extern __typeof (xmlAutomataNewOnceTrans) xmlAutomataNewOnceTrans__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewOnceTrans xmlAutomataNewOnceTrans__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewOnceTrans2 +extern __typeof (xmlAutomataNewOnceTrans2) xmlAutomataNewOnceTrans2 __attribute((alias("xmlAutomataNewOnceTrans2__internal_alias"))); +#else +#ifndef xmlAutomataNewOnceTrans2 +extern __typeof (xmlAutomataNewOnceTrans2) xmlAutomataNewOnceTrans2__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewOnceTrans2 xmlAutomataNewOnceTrans2__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewState +extern __typeof (xmlAutomataNewState) xmlAutomataNewState __attribute((alias("xmlAutomataNewState__internal_alias"))); +#else +#ifndef xmlAutomataNewState +extern __typeof (xmlAutomataNewState) xmlAutomataNewState__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewState xmlAutomataNewState__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewTransition +extern __typeof (xmlAutomataNewTransition) xmlAutomataNewTransition __attribute((alias("xmlAutomataNewTransition__internal_alias"))); +#else +#ifndef xmlAutomataNewTransition +extern __typeof (xmlAutomataNewTransition) xmlAutomataNewTransition__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewTransition xmlAutomataNewTransition__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewTransition2 +extern __typeof (xmlAutomataNewTransition2) xmlAutomataNewTransition2 __attribute((alias("xmlAutomataNewTransition2__internal_alias"))); +#else +#ifndef xmlAutomataNewTransition2 +extern __typeof (xmlAutomataNewTransition2) xmlAutomataNewTransition2__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewTransition2 xmlAutomataNewTransition2__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataSetFinalState +extern __typeof (xmlAutomataSetFinalState) xmlAutomataSetFinalState __attribute((alias("xmlAutomataSetFinalState__internal_alias"))); +#else +#ifndef xmlAutomataSetFinalState +extern __typeof (xmlAutomataSetFinalState) xmlAutomataSetFinalState__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataSetFinalState xmlAutomataSetFinalState__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlBoolToText +extern __typeof (xmlBoolToText) xmlBoolToText __attribute((alias("xmlBoolToText__internal_alias"))); +#else +#ifndef xmlBoolToText +extern __typeof (xmlBoolToText) xmlBoolToText__internal_alias __attribute((visibility("hidden"))); +#define xmlBoolToText xmlBoolToText__internal_alias +#endif +#endif +#endif + +#ifdef bottom_buf +#undef xmlBufContent +extern __typeof (xmlBufContent) xmlBufContent __attribute((alias("xmlBufContent__internal_alias"))); +#else +#ifndef xmlBufContent +extern __typeof (xmlBufContent) xmlBufContent__internal_alias __attribute((visibility("hidden"))); +#define xmlBufContent xmlBufContent__internal_alias +#endif +#endif + +#ifdef bottom_buf +#undef xmlBufEnd +extern __typeof (xmlBufEnd) xmlBufEnd __attribute((alias("xmlBufEnd__internal_alias"))); +#else +#ifndef xmlBufEnd +extern __typeof (xmlBufEnd) xmlBufEnd__internal_alias __attribute((visibility("hidden"))); +#define xmlBufEnd xmlBufEnd__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufGetNodeContent +extern __typeof (xmlBufGetNodeContent) xmlBufGetNodeContent __attribute((alias("xmlBufGetNodeContent__internal_alias"))); +#else +#ifndef xmlBufGetNodeContent +extern __typeof (xmlBufGetNodeContent) xmlBufGetNodeContent__internal_alias __attribute((visibility("hidden"))); +#define xmlBufGetNodeContent xmlBufGetNodeContent__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlBufNodeDump +extern __typeof (xmlBufNodeDump) xmlBufNodeDump __attribute((alias("xmlBufNodeDump__internal_alias"))); +#else +#ifndef xmlBufNodeDump +extern __typeof (xmlBufNodeDump) xmlBufNodeDump__internal_alias __attribute((visibility("hidden"))); +#define xmlBufNodeDump xmlBufNodeDump__internal_alias +#endif +#endif +#endif + +#ifdef bottom_buf +#undef xmlBufShrink +extern __typeof (xmlBufShrink) xmlBufShrink __attribute((alias("xmlBufShrink__internal_alias"))); +#else +#ifndef xmlBufShrink +extern __typeof (xmlBufShrink) xmlBufShrink__internal_alias __attribute((visibility("hidden"))); +#define xmlBufShrink xmlBufShrink__internal_alias +#endif +#endif + +#ifdef bottom_buf +#undef xmlBufUse +extern __typeof (xmlBufUse) xmlBufUse __attribute((alias("xmlBufUse__internal_alias"))); +#else +#ifndef xmlBufUse +extern __typeof (xmlBufUse) xmlBufUse__internal_alias __attribute((visibility("hidden"))); +#define xmlBufUse xmlBufUse__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferAdd +extern __typeof (xmlBufferAdd) xmlBufferAdd __attribute((alias("xmlBufferAdd__internal_alias"))); +#else +#ifndef xmlBufferAdd +extern __typeof (xmlBufferAdd) xmlBufferAdd__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferAdd xmlBufferAdd__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferAddHead +extern __typeof (xmlBufferAddHead) xmlBufferAddHead __attribute((alias("xmlBufferAddHead__internal_alias"))); +#else +#ifndef xmlBufferAddHead +extern __typeof (xmlBufferAddHead) xmlBufferAddHead__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferAddHead xmlBufferAddHead__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferCCat +extern __typeof (xmlBufferCCat) xmlBufferCCat __attribute((alias("xmlBufferCCat__internal_alias"))); +#else +#ifndef xmlBufferCCat +extern __typeof (xmlBufferCCat) xmlBufferCCat__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferCCat xmlBufferCCat__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferCat +extern __typeof (xmlBufferCat) xmlBufferCat __attribute((alias("xmlBufferCat__internal_alias"))); +#else +#ifndef xmlBufferCat +extern __typeof (xmlBufferCat) xmlBufferCat__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferCat xmlBufferCat__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferContent +extern __typeof (xmlBufferContent) xmlBufferContent __attribute((alias("xmlBufferContent__internal_alias"))); +#else +#ifndef xmlBufferContent +extern __typeof (xmlBufferContent) xmlBufferContent__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferContent xmlBufferContent__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferCreate +extern __typeof (xmlBufferCreate) xmlBufferCreate __attribute((alias("xmlBufferCreate__internal_alias"))); +#else +#ifndef xmlBufferCreate +extern __typeof (xmlBufferCreate) xmlBufferCreate__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferCreate xmlBufferCreate__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferCreateSize +extern __typeof (xmlBufferCreateSize) xmlBufferCreateSize __attribute((alias("xmlBufferCreateSize__internal_alias"))); +#else +#ifndef xmlBufferCreateSize +extern __typeof (xmlBufferCreateSize) xmlBufferCreateSize__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferCreateSize xmlBufferCreateSize__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferCreateStatic +extern __typeof (xmlBufferCreateStatic) xmlBufferCreateStatic __attribute((alias("xmlBufferCreateStatic__internal_alias"))); +#else +#ifndef xmlBufferCreateStatic +extern __typeof (xmlBufferCreateStatic) xmlBufferCreateStatic__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferCreateStatic xmlBufferCreateStatic__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferDetach +extern __typeof (xmlBufferDetach) xmlBufferDetach __attribute((alias("xmlBufferDetach__internal_alias"))); +#else +#ifndef xmlBufferDetach +extern __typeof (xmlBufferDetach) xmlBufferDetach__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferDetach xmlBufferDetach__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferDump +extern __typeof (xmlBufferDump) xmlBufferDump __attribute((alias("xmlBufferDump__internal_alias"))); +#else +#ifndef xmlBufferDump +extern __typeof (xmlBufferDump) xmlBufferDump__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferDump xmlBufferDump__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferEmpty +extern __typeof (xmlBufferEmpty) xmlBufferEmpty __attribute((alias("xmlBufferEmpty__internal_alias"))); +#else +#ifndef xmlBufferEmpty +extern __typeof (xmlBufferEmpty) xmlBufferEmpty__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferEmpty xmlBufferEmpty__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferFree +extern __typeof (xmlBufferFree) xmlBufferFree __attribute((alias("xmlBufferFree__internal_alias"))); +#else +#ifndef xmlBufferFree +extern __typeof (xmlBufferFree) xmlBufferFree__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferFree xmlBufferFree__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferGrow +extern __typeof (xmlBufferGrow) xmlBufferGrow __attribute((alias("xmlBufferGrow__internal_alias"))); +#else +#ifndef xmlBufferGrow +extern __typeof (xmlBufferGrow) xmlBufferGrow__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferGrow xmlBufferGrow__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferLength +extern __typeof (xmlBufferLength) xmlBufferLength __attribute((alias("xmlBufferLength__internal_alias"))); +#else +#ifndef xmlBufferLength +extern __typeof (xmlBufferLength) xmlBufferLength__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferLength xmlBufferLength__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferResize +extern __typeof (xmlBufferResize) xmlBufferResize __attribute((alias("xmlBufferResize__internal_alias"))); +#else +#ifndef xmlBufferResize +extern __typeof (xmlBufferResize) xmlBufferResize__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferResize xmlBufferResize__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferSetAllocationScheme +extern __typeof (xmlBufferSetAllocationScheme) xmlBufferSetAllocationScheme __attribute((alias("xmlBufferSetAllocationScheme__internal_alias"))); +#else +#ifndef xmlBufferSetAllocationScheme +extern __typeof (xmlBufferSetAllocationScheme) xmlBufferSetAllocationScheme__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferSetAllocationScheme xmlBufferSetAllocationScheme__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferShrink +extern __typeof (xmlBufferShrink) xmlBufferShrink __attribute((alias("xmlBufferShrink__internal_alias"))); +#else +#ifndef xmlBufferShrink +extern __typeof (xmlBufferShrink) xmlBufferShrink__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferShrink xmlBufferShrink__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferWriteCHAR +extern __typeof (xmlBufferWriteCHAR) xmlBufferWriteCHAR __attribute((alias("xmlBufferWriteCHAR__internal_alias"))); +#else +#ifndef xmlBufferWriteCHAR +extern __typeof (xmlBufferWriteCHAR) xmlBufferWriteCHAR__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferWriteCHAR xmlBufferWriteCHAR__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferWriteChar +extern __typeof (xmlBufferWriteChar) xmlBufferWriteChar __attribute((alias("xmlBufferWriteChar__internal_alias"))); +#else +#ifndef xmlBufferWriteChar +extern __typeof (xmlBufferWriteChar) xmlBufferWriteChar__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferWriteChar xmlBufferWriteChar__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferWriteQuotedString +extern __typeof (xmlBufferWriteQuotedString) xmlBufferWriteQuotedString __attribute((alias("xmlBufferWriteQuotedString__internal_alias"))); +#else +#ifndef xmlBufferWriteQuotedString +extern __typeof (xmlBufferWriteQuotedString) xmlBufferWriteQuotedString__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferWriteQuotedString xmlBufferWriteQuotedString__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBuildQName +extern __typeof (xmlBuildQName) xmlBuildQName __attribute((alias("xmlBuildQName__internal_alias"))); +#else +#ifndef xmlBuildQName +extern __typeof (xmlBuildQName) xmlBuildQName__internal_alias __attribute((visibility("hidden"))); +#define xmlBuildQName xmlBuildQName__internal_alias +#endif +#endif + +#ifdef bottom_uri +#undef xmlBuildRelativeURI +extern __typeof (xmlBuildRelativeURI) xmlBuildRelativeURI __attribute((alias("xmlBuildRelativeURI__internal_alias"))); +#else +#ifndef xmlBuildRelativeURI +extern __typeof (xmlBuildRelativeURI) xmlBuildRelativeURI__internal_alias __attribute((visibility("hidden"))); +#define xmlBuildRelativeURI xmlBuildRelativeURI__internal_alias +#endif +#endif + +#ifdef bottom_uri +#undef xmlBuildURI +extern __typeof (xmlBuildURI) xmlBuildURI __attribute((alias("xmlBuildURI__internal_alias"))); +#else +#ifndef xmlBuildURI +extern __typeof (xmlBuildURI) xmlBuildURI__internal_alias __attribute((visibility("hidden"))); +#define xmlBuildURI xmlBuildURI__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlByteConsumed +extern __typeof (xmlByteConsumed) xmlByteConsumed __attribute((alias("xmlByteConsumed__internal_alias"))); +#else +#ifndef xmlByteConsumed +extern __typeof (xmlByteConsumed) xmlByteConsumed__internal_alias __attribute((visibility("hidden"))); +#define xmlByteConsumed xmlByteConsumed__internal_alias +#endif +#endif + +#if defined(LIBXML_C14N_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_c14n +#undef xmlC14NDocDumpMemory +extern __typeof (xmlC14NDocDumpMemory) xmlC14NDocDumpMemory __attribute((alias("xmlC14NDocDumpMemory__internal_alias"))); +#else +#ifndef xmlC14NDocDumpMemory +extern __typeof (xmlC14NDocDumpMemory) xmlC14NDocDumpMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlC14NDocDumpMemory xmlC14NDocDumpMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_C14N_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_c14n +#undef xmlC14NDocSave +extern __typeof (xmlC14NDocSave) xmlC14NDocSave __attribute((alias("xmlC14NDocSave__internal_alias"))); +#else +#ifndef xmlC14NDocSave +extern __typeof (xmlC14NDocSave) xmlC14NDocSave__internal_alias __attribute((visibility("hidden"))); +#define xmlC14NDocSave xmlC14NDocSave__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_C14N_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_c14n +#undef xmlC14NDocSaveTo +extern __typeof (xmlC14NDocSaveTo) xmlC14NDocSaveTo __attribute((alias("xmlC14NDocSaveTo__internal_alias"))); +#else +#ifndef xmlC14NDocSaveTo +extern __typeof (xmlC14NDocSaveTo) xmlC14NDocSaveTo__internal_alias __attribute((visibility("hidden"))); +#define xmlC14NDocSaveTo xmlC14NDocSaveTo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_C14N_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_c14n +#undef xmlC14NExecute +extern __typeof (xmlC14NExecute) xmlC14NExecute __attribute((alias("xmlC14NExecute__internal_alias"))); +#else +#ifndef xmlC14NExecute +extern __typeof (xmlC14NExecute) xmlC14NExecute__internal_alias __attribute((visibility("hidden"))); +#define xmlC14NExecute xmlC14NExecute__internal_alias +#endif +#endif +#endif + +#ifdef bottom_uri +#undef xmlCanonicPath +extern __typeof (xmlCanonicPath) xmlCanonicPath __attribute((alias("xmlCanonicPath__internal_alias"))); +#else +#ifndef xmlCanonicPath +extern __typeof (xmlCanonicPath) xmlCanonicPath__internal_alias __attribute((visibility("hidden"))); +#define xmlCanonicPath xmlCanonicPath__internal_alias +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogAdd +extern __typeof (xmlCatalogAdd) xmlCatalogAdd __attribute((alias("xmlCatalogAdd__internal_alias"))); +#else +#ifndef xmlCatalogAdd +extern __typeof (xmlCatalogAdd) xmlCatalogAdd__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogAdd xmlCatalogAdd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogAddLocal +extern __typeof (xmlCatalogAddLocal) xmlCatalogAddLocal __attribute((alias("xmlCatalogAddLocal__internal_alias"))); +#else +#ifndef xmlCatalogAddLocal +extern __typeof (xmlCatalogAddLocal) xmlCatalogAddLocal__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogAddLocal xmlCatalogAddLocal__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogCleanup +extern __typeof (xmlCatalogCleanup) xmlCatalogCleanup __attribute((alias("xmlCatalogCleanup__internal_alias"))); +#else +#ifndef xmlCatalogCleanup +extern __typeof (xmlCatalogCleanup) xmlCatalogCleanup__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogCleanup xmlCatalogCleanup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogConvert +extern __typeof (xmlCatalogConvert) xmlCatalogConvert __attribute((alias("xmlCatalogConvert__internal_alias"))); +#else +#ifndef xmlCatalogConvert +extern __typeof (xmlCatalogConvert) xmlCatalogConvert__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogConvert xmlCatalogConvert__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogDump +extern __typeof (xmlCatalogDump) xmlCatalogDump __attribute((alias("xmlCatalogDump__internal_alias"))); +#else +#ifndef xmlCatalogDump +extern __typeof (xmlCatalogDump) xmlCatalogDump__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogDump xmlCatalogDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogFreeLocal +extern __typeof (xmlCatalogFreeLocal) xmlCatalogFreeLocal __attribute((alias("xmlCatalogFreeLocal__internal_alias"))); +#else +#ifndef xmlCatalogFreeLocal +extern __typeof (xmlCatalogFreeLocal) xmlCatalogFreeLocal__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogFreeLocal xmlCatalogFreeLocal__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogGetDefaults +extern __typeof (xmlCatalogGetDefaults) xmlCatalogGetDefaults __attribute((alias("xmlCatalogGetDefaults__internal_alias"))); +#else +#ifndef xmlCatalogGetDefaults +extern __typeof (xmlCatalogGetDefaults) xmlCatalogGetDefaults__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogGetDefaults xmlCatalogGetDefaults__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogGetPublic +extern __typeof (xmlCatalogGetPublic) xmlCatalogGetPublic __attribute((alias("xmlCatalogGetPublic__internal_alias"))); +#else +#ifndef xmlCatalogGetPublic +extern __typeof (xmlCatalogGetPublic) xmlCatalogGetPublic__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogGetPublic xmlCatalogGetPublic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogGetSystem +extern __typeof (xmlCatalogGetSystem) xmlCatalogGetSystem __attribute((alias("xmlCatalogGetSystem__internal_alias"))); +#else +#ifndef xmlCatalogGetSystem +extern __typeof (xmlCatalogGetSystem) xmlCatalogGetSystem__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogGetSystem xmlCatalogGetSystem__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogIsEmpty +extern __typeof (xmlCatalogIsEmpty) xmlCatalogIsEmpty __attribute((alias("xmlCatalogIsEmpty__internal_alias"))); +#else +#ifndef xmlCatalogIsEmpty +extern __typeof (xmlCatalogIsEmpty) xmlCatalogIsEmpty__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogIsEmpty xmlCatalogIsEmpty__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogLocalResolve +extern __typeof (xmlCatalogLocalResolve) xmlCatalogLocalResolve __attribute((alias("xmlCatalogLocalResolve__internal_alias"))); +#else +#ifndef xmlCatalogLocalResolve +extern __typeof (xmlCatalogLocalResolve) xmlCatalogLocalResolve__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogLocalResolve xmlCatalogLocalResolve__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogLocalResolveURI +extern __typeof (xmlCatalogLocalResolveURI) xmlCatalogLocalResolveURI __attribute((alias("xmlCatalogLocalResolveURI__internal_alias"))); +#else +#ifndef xmlCatalogLocalResolveURI +extern __typeof (xmlCatalogLocalResolveURI) xmlCatalogLocalResolveURI__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogLocalResolveURI xmlCatalogLocalResolveURI__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogRemove +extern __typeof (xmlCatalogRemove) xmlCatalogRemove __attribute((alias("xmlCatalogRemove__internal_alias"))); +#else +#ifndef xmlCatalogRemove +extern __typeof (xmlCatalogRemove) xmlCatalogRemove__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogRemove xmlCatalogRemove__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogResolve +extern __typeof (xmlCatalogResolve) xmlCatalogResolve __attribute((alias("xmlCatalogResolve__internal_alias"))); +#else +#ifndef xmlCatalogResolve +extern __typeof (xmlCatalogResolve) xmlCatalogResolve__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogResolve xmlCatalogResolve__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogResolvePublic +extern __typeof (xmlCatalogResolvePublic) xmlCatalogResolvePublic __attribute((alias("xmlCatalogResolvePublic__internal_alias"))); +#else +#ifndef xmlCatalogResolvePublic +extern __typeof (xmlCatalogResolvePublic) xmlCatalogResolvePublic__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogResolvePublic xmlCatalogResolvePublic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogResolveSystem +extern __typeof (xmlCatalogResolveSystem) xmlCatalogResolveSystem __attribute((alias("xmlCatalogResolveSystem__internal_alias"))); +#else +#ifndef xmlCatalogResolveSystem +extern __typeof (xmlCatalogResolveSystem) xmlCatalogResolveSystem__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogResolveSystem xmlCatalogResolveSystem__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogResolveURI +extern __typeof (xmlCatalogResolveURI) xmlCatalogResolveURI __attribute((alias("xmlCatalogResolveURI__internal_alias"))); +#else +#ifndef xmlCatalogResolveURI +extern __typeof (xmlCatalogResolveURI) xmlCatalogResolveURI__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogResolveURI xmlCatalogResolveURI__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogSetDebug +extern __typeof (xmlCatalogSetDebug) xmlCatalogSetDebug __attribute((alias("xmlCatalogSetDebug__internal_alias"))); +#else +#ifndef xmlCatalogSetDebug +extern __typeof (xmlCatalogSetDebug) xmlCatalogSetDebug__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogSetDebug xmlCatalogSetDebug__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogSetDefaultPrefer +extern __typeof (xmlCatalogSetDefaultPrefer) xmlCatalogSetDefaultPrefer __attribute((alias("xmlCatalogSetDefaultPrefer__internal_alias"))); +#else +#ifndef xmlCatalogSetDefaultPrefer +extern __typeof (xmlCatalogSetDefaultPrefer) xmlCatalogSetDefaultPrefer__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogSetDefaultPrefer xmlCatalogSetDefaultPrefer__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogSetDefaults +extern __typeof (xmlCatalogSetDefaults) xmlCatalogSetDefaults __attribute((alias("xmlCatalogSetDefaults__internal_alias"))); +#else +#ifndef xmlCatalogSetDefaults +extern __typeof (xmlCatalogSetDefaults) xmlCatalogSetDefaults__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogSetDefaults xmlCatalogSetDefaults__internal_alias +#endif +#endif +#endif + +#ifdef bottom_encoding +#undef xmlCharEncCloseFunc +extern __typeof (xmlCharEncCloseFunc) xmlCharEncCloseFunc __attribute((alias("xmlCharEncCloseFunc__internal_alias"))); +#else +#ifndef xmlCharEncCloseFunc +extern __typeof (xmlCharEncCloseFunc) xmlCharEncCloseFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlCharEncCloseFunc xmlCharEncCloseFunc__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlCharEncFirstLine +extern __typeof (xmlCharEncFirstLine) xmlCharEncFirstLine __attribute((alias("xmlCharEncFirstLine__internal_alias"))); +#else +#ifndef xmlCharEncFirstLine +extern __typeof (xmlCharEncFirstLine) xmlCharEncFirstLine__internal_alias __attribute((visibility("hidden"))); +#define xmlCharEncFirstLine xmlCharEncFirstLine__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlCharEncInFunc +extern __typeof (xmlCharEncInFunc) xmlCharEncInFunc __attribute((alias("xmlCharEncInFunc__internal_alias"))); +#else +#ifndef xmlCharEncInFunc +extern __typeof (xmlCharEncInFunc) xmlCharEncInFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlCharEncInFunc xmlCharEncInFunc__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlCharEncOutFunc +extern __typeof (xmlCharEncOutFunc) xmlCharEncOutFunc __attribute((alias("xmlCharEncOutFunc__internal_alias"))); +#else +#ifndef xmlCharEncOutFunc +extern __typeof (xmlCharEncOutFunc) xmlCharEncOutFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlCharEncOutFunc xmlCharEncOutFunc__internal_alias +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlCharInRange +extern __typeof (xmlCharInRange) xmlCharInRange __attribute((alias("xmlCharInRange__internal_alias"))); +#else +#ifndef xmlCharInRange +extern __typeof (xmlCharInRange) xmlCharInRange__internal_alias __attribute((visibility("hidden"))); +#define xmlCharInRange xmlCharInRange__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlCharStrdup +extern __typeof (xmlCharStrdup) xmlCharStrdup __attribute((alias("xmlCharStrdup__internal_alias"))); +#else +#ifndef xmlCharStrdup +extern __typeof (xmlCharStrdup) xmlCharStrdup__internal_alias __attribute((visibility("hidden"))); +#define xmlCharStrdup xmlCharStrdup__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlCharStrndup +extern __typeof (xmlCharStrndup) xmlCharStrndup __attribute((alias("xmlCharStrndup__internal_alias"))); +#else +#ifndef xmlCharStrndup +extern __typeof (xmlCharStrndup) xmlCharStrndup__internal_alias __attribute((visibility("hidden"))); +#define xmlCharStrndup xmlCharStrndup__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlCheckFilename +extern __typeof (xmlCheckFilename) xmlCheckFilename __attribute((alias("xmlCheckFilename__internal_alias"))); +#else +#ifndef xmlCheckFilename +extern __typeof (xmlCheckFilename) xmlCheckFilename__internal_alias __attribute((visibility("hidden"))); +#define xmlCheckFilename xmlCheckFilename__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlCheckHTTPInput +extern __typeof (xmlCheckHTTPInput) xmlCheckHTTPInput __attribute((alias("xmlCheckHTTPInput__internal_alias"))); +#else +#ifndef xmlCheckHTTPInput +extern __typeof (xmlCheckHTTPInput) xmlCheckHTTPInput__internal_alias __attribute((visibility("hidden"))); +#define xmlCheckHTTPInput xmlCheckHTTPInput__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCheckLanguageID +extern __typeof (xmlCheckLanguageID) xmlCheckLanguageID __attribute((alias("xmlCheckLanguageID__internal_alias"))); +#else +#ifndef xmlCheckLanguageID +extern __typeof (xmlCheckLanguageID) xmlCheckLanguageID__internal_alias __attribute((visibility("hidden"))); +#define xmlCheckLanguageID xmlCheckLanguageID__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlCheckUTF8 +extern __typeof (xmlCheckUTF8) xmlCheckUTF8 __attribute((alias("xmlCheckUTF8__internal_alias"))); +#else +#ifndef xmlCheckUTF8 +extern __typeof (xmlCheckUTF8) xmlCheckUTF8__internal_alias __attribute((visibility("hidden"))); +#define xmlCheckUTF8 xmlCheckUTF8__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlCheckVersion +extern __typeof (xmlCheckVersion) xmlCheckVersion __attribute((alias("xmlCheckVersion__internal_alias"))); +#else +#ifndef xmlCheckVersion +extern __typeof (xmlCheckVersion) xmlCheckVersion__internal_alias __attribute((visibility("hidden"))); +#define xmlCheckVersion xmlCheckVersion__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlChildElementCount +extern __typeof (xmlChildElementCount) xmlChildElementCount __attribute((alias("xmlChildElementCount__internal_alias"))); +#else +#ifndef xmlChildElementCount +extern __typeof (xmlChildElementCount) xmlChildElementCount__internal_alias __attribute((visibility("hidden"))); +#define xmlChildElementCount xmlChildElementCount__internal_alias +#endif +#endif +#endif + +#ifdef bottom_encoding +#undef xmlCleanupCharEncodingHandlers +extern __typeof (xmlCleanupCharEncodingHandlers) xmlCleanupCharEncodingHandlers __attribute((alias("xmlCleanupCharEncodingHandlers__internal_alias"))); +#else +#ifndef xmlCleanupCharEncodingHandlers +extern __typeof (xmlCleanupCharEncodingHandlers) xmlCleanupCharEncodingHandlers__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupCharEncodingHandlers xmlCleanupCharEncodingHandlers__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlCleanupEncodingAliases +extern __typeof (xmlCleanupEncodingAliases) xmlCleanupEncodingAliases __attribute((alias("xmlCleanupEncodingAliases__internal_alias"))); +#else +#ifndef xmlCleanupEncodingAliases +extern __typeof (xmlCleanupEncodingAliases) xmlCleanupEncodingAliases__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupEncodingAliases xmlCleanupEncodingAliases__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlCleanupGlobals +extern __typeof (xmlCleanupGlobals) xmlCleanupGlobals __attribute((alias("xmlCleanupGlobals__internal_alias"))); +#else +#ifndef xmlCleanupGlobals +extern __typeof (xmlCleanupGlobals) xmlCleanupGlobals__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupGlobals xmlCleanupGlobals__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlCleanupInputCallbacks +extern __typeof (xmlCleanupInputCallbacks) xmlCleanupInputCallbacks __attribute((alias("xmlCleanupInputCallbacks__internal_alias"))); +#else +#ifndef xmlCleanupInputCallbacks +extern __typeof (xmlCleanupInputCallbacks) xmlCleanupInputCallbacks__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupInputCallbacks xmlCleanupInputCallbacks__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlCleanupMemory +extern __typeof (xmlCleanupMemory) xmlCleanupMemory __attribute((alias("xmlCleanupMemory__internal_alias"))); +#else +#ifndef xmlCleanupMemory +extern __typeof (xmlCleanupMemory) xmlCleanupMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupMemory xmlCleanupMemory__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlCleanupOutputCallbacks +extern __typeof (xmlCleanupOutputCallbacks) xmlCleanupOutputCallbacks __attribute((alias("xmlCleanupOutputCallbacks__internal_alias"))); +#else +#ifndef xmlCleanupOutputCallbacks +extern __typeof (xmlCleanupOutputCallbacks) xmlCleanupOutputCallbacks__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupOutputCallbacks xmlCleanupOutputCallbacks__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlCleanupParser +extern __typeof (xmlCleanupParser) xmlCleanupParser __attribute((alias("xmlCleanupParser__internal_alias"))); +#else +#ifndef xmlCleanupParser +extern __typeof (xmlCleanupParser) xmlCleanupParser__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupParser xmlCleanupParser__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlCleanupPredefinedEntities +extern __typeof (xmlCleanupPredefinedEntities) xmlCleanupPredefinedEntities __attribute((alias("xmlCleanupPredefinedEntities__internal_alias"))); +#else +#ifndef xmlCleanupPredefinedEntities +extern __typeof (xmlCleanupPredefinedEntities) xmlCleanupPredefinedEntities__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupPredefinedEntities xmlCleanupPredefinedEntities__internal_alias +#endif +#endif +#endif + +#ifdef bottom_threads +#undef xmlCleanupThreads +extern __typeof (xmlCleanupThreads) xmlCleanupThreads __attribute((alias("xmlCleanupThreads__internal_alias"))); +#else +#ifndef xmlCleanupThreads +extern __typeof (xmlCleanupThreads) xmlCleanupThreads__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupThreads xmlCleanupThreads__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlClearNodeInfoSeq +extern __typeof (xmlClearNodeInfoSeq) xmlClearNodeInfoSeq __attribute((alias("xmlClearNodeInfoSeq__internal_alias"))); +#else +#ifndef xmlClearNodeInfoSeq +extern __typeof (xmlClearNodeInfoSeq) xmlClearNodeInfoSeq__internal_alias __attribute((visibility("hidden"))); +#define xmlClearNodeInfoSeq xmlClearNodeInfoSeq__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlClearParserCtxt +extern __typeof (xmlClearParserCtxt) xmlClearParserCtxt __attribute((alias("xmlClearParserCtxt__internal_alias"))); +#else +#ifndef xmlClearParserCtxt +extern __typeof (xmlClearParserCtxt) xmlClearParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlClearParserCtxt xmlClearParserCtxt__internal_alias +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlConvertSGMLCatalog +extern __typeof (xmlConvertSGMLCatalog) xmlConvertSGMLCatalog __attribute((alias("xmlConvertSGMLCatalog__internal_alias"))); +#else +#ifndef xmlConvertSGMLCatalog +extern __typeof (xmlConvertSGMLCatalog) xmlConvertSGMLCatalog__internal_alias __attribute((visibility("hidden"))); +#define xmlConvertSGMLCatalog xmlConvertSGMLCatalog__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_valid +#undef xmlCopyAttributeTable +extern __typeof (xmlCopyAttributeTable) xmlCopyAttributeTable __attribute((alias("xmlCopyAttributeTable__internal_alias"))); +#else +#ifndef xmlCopyAttributeTable +extern __typeof (xmlCopyAttributeTable) xmlCopyAttributeTable__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyAttributeTable xmlCopyAttributeTable__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlCopyChar +extern __typeof (xmlCopyChar) xmlCopyChar __attribute((alias("xmlCopyChar__internal_alias"))); +#else +#ifndef xmlCopyChar +extern __typeof (xmlCopyChar) xmlCopyChar__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyChar xmlCopyChar__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlCopyCharMultiByte +extern __typeof (xmlCopyCharMultiByte) xmlCopyCharMultiByte __attribute((alias("xmlCopyCharMultiByte__internal_alias"))); +#else +#ifndef xmlCopyCharMultiByte +extern __typeof (xmlCopyCharMultiByte) xmlCopyCharMultiByte__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyCharMultiByte xmlCopyCharMultiByte__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlCopyDoc +extern __typeof (xmlCopyDoc) xmlCopyDoc __attribute((alias("xmlCopyDoc__internal_alias"))); +#else +#ifndef xmlCopyDoc +extern __typeof (xmlCopyDoc) xmlCopyDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyDoc xmlCopyDoc__internal_alias +#endif +#endif +#endif + +#ifdef bottom_valid +#undef xmlCopyDocElementContent +extern __typeof (xmlCopyDocElementContent) xmlCopyDocElementContent __attribute((alias("xmlCopyDocElementContent__internal_alias"))); +#else +#ifndef xmlCopyDocElementContent +extern __typeof (xmlCopyDocElementContent) xmlCopyDocElementContent__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyDocElementContent xmlCopyDocElementContent__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlCopyDtd +extern __typeof (xmlCopyDtd) xmlCopyDtd __attribute((alias("xmlCopyDtd__internal_alias"))); +#else +#ifndef xmlCopyDtd +extern __typeof (xmlCopyDtd) xmlCopyDtd__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyDtd xmlCopyDtd__internal_alias +#endif +#endif +#endif + +#ifdef bottom_valid +#undef xmlCopyElementContent +extern __typeof (xmlCopyElementContent) xmlCopyElementContent __attribute((alias("xmlCopyElementContent__internal_alias"))); +#else +#ifndef xmlCopyElementContent +extern __typeof (xmlCopyElementContent) xmlCopyElementContent__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyElementContent xmlCopyElementContent__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_valid +#undef xmlCopyElementTable +extern __typeof (xmlCopyElementTable) xmlCopyElementTable __attribute((alias("xmlCopyElementTable__internal_alias"))); +#else +#ifndef xmlCopyElementTable +extern __typeof (xmlCopyElementTable) xmlCopyElementTable__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyElementTable xmlCopyElementTable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_entities +#undef xmlCopyEntitiesTable +extern __typeof (xmlCopyEntitiesTable) xmlCopyEntitiesTable __attribute((alias("xmlCopyEntitiesTable__internal_alias"))); +#else +#ifndef xmlCopyEntitiesTable +extern __typeof (xmlCopyEntitiesTable) xmlCopyEntitiesTable__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyEntitiesTable xmlCopyEntitiesTable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_valid +#undef xmlCopyEnumeration +extern __typeof (xmlCopyEnumeration) xmlCopyEnumeration __attribute((alias("xmlCopyEnumeration__internal_alias"))); +#else +#ifndef xmlCopyEnumeration +extern __typeof (xmlCopyEnumeration) xmlCopyEnumeration__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyEnumeration xmlCopyEnumeration__internal_alias +#endif +#endif +#endif + +#ifdef bottom_error +#undef xmlCopyError +extern __typeof (xmlCopyError) xmlCopyError __attribute((alias("xmlCopyError__internal_alias"))); +#else +#ifndef xmlCopyError +extern __typeof (xmlCopyError) xmlCopyError__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyError xmlCopyError__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlCopyNamespace +extern __typeof (xmlCopyNamespace) xmlCopyNamespace __attribute((alias("xmlCopyNamespace__internal_alias"))); +#else +#ifndef xmlCopyNamespace +extern __typeof (xmlCopyNamespace) xmlCopyNamespace__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyNamespace xmlCopyNamespace__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlCopyNamespaceList +extern __typeof (xmlCopyNamespaceList) xmlCopyNamespaceList __attribute((alias("xmlCopyNamespaceList__internal_alias"))); +#else +#ifndef xmlCopyNamespaceList +extern __typeof (xmlCopyNamespaceList) xmlCopyNamespaceList__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyNamespaceList xmlCopyNamespaceList__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlCopyNode +extern __typeof (xmlCopyNode) xmlCopyNode __attribute((alias("xmlCopyNode__internal_alias"))); +#else +#ifndef xmlCopyNode +extern __typeof (xmlCopyNode) xmlCopyNode__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyNode xmlCopyNode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlCopyNodeList +extern __typeof (xmlCopyNodeList) xmlCopyNodeList __attribute((alias("xmlCopyNodeList__internal_alias"))); +#else +#ifndef xmlCopyNodeList +extern __typeof (xmlCopyNodeList) xmlCopyNodeList__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyNodeList xmlCopyNodeList__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_valid +#undef xmlCopyNotationTable +extern __typeof (xmlCopyNotationTable) xmlCopyNotationTable __attribute((alias("xmlCopyNotationTable__internal_alias"))); +#else +#ifndef xmlCopyNotationTable +extern __typeof (xmlCopyNotationTable) xmlCopyNotationTable__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyNotationTable xmlCopyNotationTable__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlCopyProp +extern __typeof (xmlCopyProp) xmlCopyProp __attribute((alias("xmlCopyProp__internal_alias"))); +#else +#ifndef xmlCopyProp +extern __typeof (xmlCopyProp) xmlCopyProp__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyProp xmlCopyProp__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlCopyPropList +extern __typeof (xmlCopyPropList) xmlCopyPropList __attribute((alias("xmlCopyPropList__internal_alias"))); +#else +#ifndef xmlCopyPropList +extern __typeof (xmlCopyPropList) xmlCopyPropList__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyPropList xmlCopyPropList__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCreateDocParserCtxt +extern __typeof (xmlCreateDocParserCtxt) xmlCreateDocParserCtxt __attribute((alias("xmlCreateDocParserCtxt__internal_alias"))); +#else +#ifndef xmlCreateDocParserCtxt +extern __typeof (xmlCreateDocParserCtxt) xmlCreateDocParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateDocParserCtxt xmlCreateDocParserCtxt__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlCreateEntitiesTable +extern __typeof (xmlCreateEntitiesTable) xmlCreateEntitiesTable __attribute((alias("xmlCreateEntitiesTable__internal_alias"))); +#else +#ifndef xmlCreateEntitiesTable +extern __typeof (xmlCreateEntitiesTable) xmlCreateEntitiesTable__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateEntitiesTable xmlCreateEntitiesTable__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCreateEntityParserCtxt +extern __typeof (xmlCreateEntityParserCtxt) xmlCreateEntityParserCtxt __attribute((alias("xmlCreateEntityParserCtxt__internal_alias"))); +#else +#ifndef xmlCreateEntityParserCtxt +extern __typeof (xmlCreateEntityParserCtxt) xmlCreateEntityParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateEntityParserCtxt xmlCreateEntityParserCtxt__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlCreateEnumeration +extern __typeof (xmlCreateEnumeration) xmlCreateEnumeration __attribute((alias("xmlCreateEnumeration__internal_alias"))); +#else +#ifndef xmlCreateEnumeration +extern __typeof (xmlCreateEnumeration) xmlCreateEnumeration__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateEnumeration xmlCreateEnumeration__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCreateFileParserCtxt +extern __typeof (xmlCreateFileParserCtxt) xmlCreateFileParserCtxt __attribute((alias("xmlCreateFileParserCtxt__internal_alias"))); +#else +#ifndef xmlCreateFileParserCtxt +extern __typeof (xmlCreateFileParserCtxt) xmlCreateFileParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateFileParserCtxt xmlCreateFileParserCtxt__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCreateIOParserCtxt +extern __typeof (xmlCreateIOParserCtxt) xmlCreateIOParserCtxt __attribute((alias("xmlCreateIOParserCtxt__internal_alias"))); +#else +#ifndef xmlCreateIOParserCtxt +extern __typeof (xmlCreateIOParserCtxt) xmlCreateIOParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateIOParserCtxt xmlCreateIOParserCtxt__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlCreateIntSubset +extern __typeof (xmlCreateIntSubset) xmlCreateIntSubset __attribute((alias("xmlCreateIntSubset__internal_alias"))); +#else +#ifndef xmlCreateIntSubset +extern __typeof (xmlCreateIntSubset) xmlCreateIntSubset__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateIntSubset xmlCreateIntSubset__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCreateMemoryParserCtxt +extern __typeof (xmlCreateMemoryParserCtxt) xmlCreateMemoryParserCtxt __attribute((alias("xmlCreateMemoryParserCtxt__internal_alias"))); +#else +#ifndef xmlCreateMemoryParserCtxt +extern __typeof (xmlCreateMemoryParserCtxt) xmlCreateMemoryParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateMemoryParserCtxt xmlCreateMemoryParserCtxt__internal_alias +#endif +#endif + +#if defined(LIBXML_PUSH_ENABLED) +#ifdef bottom_parser +#undef xmlCreatePushParserCtxt +extern __typeof (xmlCreatePushParserCtxt) xmlCreatePushParserCtxt __attribute((alias("xmlCreatePushParserCtxt__internal_alias"))); +#else +#ifndef xmlCreatePushParserCtxt +extern __typeof (xmlCreatePushParserCtxt) xmlCreatePushParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlCreatePushParserCtxt xmlCreatePushParserCtxt__internal_alias +#endif +#endif +#endif + +#ifdef bottom_uri +#undef xmlCreateURI +extern __typeof (xmlCreateURI) xmlCreateURI __attribute((alias("xmlCreateURI__internal_alias"))); +#else +#ifndef xmlCreateURI +extern __typeof (xmlCreateURI) xmlCreateURI__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateURI xmlCreateURI__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCreateURLParserCtxt +extern __typeof (xmlCreateURLParserCtxt) xmlCreateURLParserCtxt __attribute((alias("xmlCreateURLParserCtxt__internal_alias"))); +#else +#ifndef xmlCreateURLParserCtxt +extern __typeof (xmlCreateURLParserCtxt) xmlCreateURLParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateURLParserCtxt xmlCreateURLParserCtxt__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlCtxtGetLastError +extern __typeof (xmlCtxtGetLastError) xmlCtxtGetLastError __attribute((alias("xmlCtxtGetLastError__internal_alias"))); +#else +#ifndef xmlCtxtGetLastError +extern __typeof (xmlCtxtGetLastError) xmlCtxtGetLastError__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtGetLastError xmlCtxtGetLastError__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCtxtReadDoc +extern __typeof (xmlCtxtReadDoc) xmlCtxtReadDoc __attribute((alias("xmlCtxtReadDoc__internal_alias"))); +#else +#ifndef xmlCtxtReadDoc +extern __typeof (xmlCtxtReadDoc) xmlCtxtReadDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtReadDoc xmlCtxtReadDoc__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCtxtReadFd +extern __typeof (xmlCtxtReadFd) xmlCtxtReadFd __attribute((alias("xmlCtxtReadFd__internal_alias"))); +#else +#ifndef xmlCtxtReadFd +extern __typeof (xmlCtxtReadFd) xmlCtxtReadFd__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtReadFd xmlCtxtReadFd__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCtxtReadFile +extern __typeof (xmlCtxtReadFile) xmlCtxtReadFile __attribute((alias("xmlCtxtReadFile__internal_alias"))); +#else +#ifndef xmlCtxtReadFile +extern __typeof (xmlCtxtReadFile) xmlCtxtReadFile__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtReadFile xmlCtxtReadFile__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCtxtReadIO +extern __typeof (xmlCtxtReadIO) xmlCtxtReadIO __attribute((alias("xmlCtxtReadIO__internal_alias"))); +#else +#ifndef xmlCtxtReadIO +extern __typeof (xmlCtxtReadIO) xmlCtxtReadIO__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtReadIO xmlCtxtReadIO__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCtxtReadMemory +extern __typeof (xmlCtxtReadMemory) xmlCtxtReadMemory __attribute((alias("xmlCtxtReadMemory__internal_alias"))); +#else +#ifndef xmlCtxtReadMemory +extern __typeof (xmlCtxtReadMemory) xmlCtxtReadMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtReadMemory xmlCtxtReadMemory__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCtxtReset +extern __typeof (xmlCtxtReset) xmlCtxtReset __attribute((alias("xmlCtxtReset__internal_alias"))); +#else +#ifndef xmlCtxtReset +extern __typeof (xmlCtxtReset) xmlCtxtReset__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtReset xmlCtxtReset__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlCtxtResetLastError +extern __typeof (xmlCtxtResetLastError) xmlCtxtResetLastError __attribute((alias("xmlCtxtResetLastError__internal_alias"))); +#else +#ifndef xmlCtxtResetLastError +extern __typeof (xmlCtxtResetLastError) xmlCtxtResetLastError__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtResetLastError xmlCtxtResetLastError__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCtxtResetPush +extern __typeof (xmlCtxtResetPush) xmlCtxtResetPush __attribute((alias("xmlCtxtResetPush__internal_alias"))); +#else +#ifndef xmlCtxtResetPush +extern __typeof (xmlCtxtResetPush) xmlCtxtResetPush__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtResetPush xmlCtxtResetPush__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCtxtUseOptions +extern __typeof (xmlCtxtUseOptions) xmlCtxtUseOptions __attribute((alias("xmlCtxtUseOptions__internal_alias"))); +#else +#ifndef xmlCtxtUseOptions +extern __typeof (xmlCtxtUseOptions) xmlCtxtUseOptions__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtUseOptions xmlCtxtUseOptions__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlCurrentChar +extern __typeof (xmlCurrentChar) xmlCurrentChar __attribute((alias("xmlCurrentChar__internal_alias"))); +#else +#ifndef xmlCurrentChar +extern __typeof (xmlCurrentChar) xmlCurrentChar__internal_alias __attribute((visibility("hidden"))); +#define xmlCurrentChar xmlCurrentChar__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlDOMWrapAdoptNode +extern __typeof (xmlDOMWrapAdoptNode) xmlDOMWrapAdoptNode __attribute((alias("xmlDOMWrapAdoptNode__internal_alias"))); +#else +#ifndef xmlDOMWrapAdoptNode +extern __typeof (xmlDOMWrapAdoptNode) xmlDOMWrapAdoptNode__internal_alias __attribute((visibility("hidden"))); +#define xmlDOMWrapAdoptNode xmlDOMWrapAdoptNode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlDOMWrapCloneNode +extern __typeof (xmlDOMWrapCloneNode) xmlDOMWrapCloneNode __attribute((alias("xmlDOMWrapCloneNode__internal_alias"))); +#else +#ifndef xmlDOMWrapCloneNode +extern __typeof (xmlDOMWrapCloneNode) xmlDOMWrapCloneNode__internal_alias __attribute((visibility("hidden"))); +#define xmlDOMWrapCloneNode xmlDOMWrapCloneNode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlDOMWrapFreeCtxt +extern __typeof (xmlDOMWrapFreeCtxt) xmlDOMWrapFreeCtxt __attribute((alias("xmlDOMWrapFreeCtxt__internal_alias"))); +#else +#ifndef xmlDOMWrapFreeCtxt +extern __typeof (xmlDOMWrapFreeCtxt) xmlDOMWrapFreeCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlDOMWrapFreeCtxt xmlDOMWrapFreeCtxt__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlDOMWrapNewCtxt +extern __typeof (xmlDOMWrapNewCtxt) xmlDOMWrapNewCtxt __attribute((alias("xmlDOMWrapNewCtxt__internal_alias"))); +#else +#ifndef xmlDOMWrapNewCtxt +extern __typeof (xmlDOMWrapNewCtxt) xmlDOMWrapNewCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlDOMWrapNewCtxt xmlDOMWrapNewCtxt__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlDOMWrapReconcileNamespaces +extern __typeof (xmlDOMWrapReconcileNamespaces) xmlDOMWrapReconcileNamespaces __attribute((alias("xmlDOMWrapReconcileNamespaces__internal_alias"))); +#else +#ifndef xmlDOMWrapReconcileNamespaces +extern __typeof (xmlDOMWrapReconcileNamespaces) xmlDOMWrapReconcileNamespaces__internal_alias __attribute((visibility("hidden"))); +#define xmlDOMWrapReconcileNamespaces xmlDOMWrapReconcileNamespaces__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlDOMWrapRemoveNode +extern __typeof (xmlDOMWrapRemoveNode) xmlDOMWrapRemoveNode __attribute((alias("xmlDOMWrapRemoveNode__internal_alias"))); +#else +#ifndef xmlDOMWrapRemoveNode +extern __typeof (xmlDOMWrapRemoveNode) xmlDOMWrapRemoveNode__internal_alias __attribute((visibility("hidden"))); +#define xmlDOMWrapRemoveNode xmlDOMWrapRemoveNode__internal_alias +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugCheckDocument +extern __typeof (xmlDebugCheckDocument) xmlDebugCheckDocument __attribute((alias("xmlDebugCheckDocument__internal_alias"))); +#else +#ifndef xmlDebugCheckDocument +extern __typeof (xmlDebugCheckDocument) xmlDebugCheckDocument__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugCheckDocument xmlDebugCheckDocument__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpAttr +extern __typeof (xmlDebugDumpAttr) xmlDebugDumpAttr __attribute((alias("xmlDebugDumpAttr__internal_alias"))); +#else +#ifndef xmlDebugDumpAttr +extern __typeof (xmlDebugDumpAttr) xmlDebugDumpAttr__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpAttr xmlDebugDumpAttr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpAttrList +extern __typeof (xmlDebugDumpAttrList) xmlDebugDumpAttrList __attribute((alias("xmlDebugDumpAttrList__internal_alias"))); +#else +#ifndef xmlDebugDumpAttrList +extern __typeof (xmlDebugDumpAttrList) xmlDebugDumpAttrList__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpAttrList xmlDebugDumpAttrList__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpDTD +extern __typeof (xmlDebugDumpDTD) xmlDebugDumpDTD __attribute((alias("xmlDebugDumpDTD__internal_alias"))); +#else +#ifndef xmlDebugDumpDTD +extern __typeof (xmlDebugDumpDTD) xmlDebugDumpDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpDTD xmlDebugDumpDTD__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpDocument +extern __typeof (xmlDebugDumpDocument) xmlDebugDumpDocument __attribute((alias("xmlDebugDumpDocument__internal_alias"))); +#else +#ifndef xmlDebugDumpDocument +extern __typeof (xmlDebugDumpDocument) xmlDebugDumpDocument__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpDocument xmlDebugDumpDocument__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpDocumentHead +extern __typeof (xmlDebugDumpDocumentHead) xmlDebugDumpDocumentHead __attribute((alias("xmlDebugDumpDocumentHead__internal_alias"))); +#else +#ifndef xmlDebugDumpDocumentHead +extern __typeof (xmlDebugDumpDocumentHead) xmlDebugDumpDocumentHead__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpDocumentHead xmlDebugDumpDocumentHead__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpEntities +extern __typeof (xmlDebugDumpEntities) xmlDebugDumpEntities __attribute((alias("xmlDebugDumpEntities__internal_alias"))); +#else +#ifndef xmlDebugDumpEntities +extern __typeof (xmlDebugDumpEntities) xmlDebugDumpEntities__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpEntities xmlDebugDumpEntities__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpNode +extern __typeof (xmlDebugDumpNode) xmlDebugDumpNode __attribute((alias("xmlDebugDumpNode__internal_alias"))); +#else +#ifndef xmlDebugDumpNode +extern __typeof (xmlDebugDumpNode) xmlDebugDumpNode__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpNode xmlDebugDumpNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpNodeList +extern __typeof (xmlDebugDumpNodeList) xmlDebugDumpNodeList __attribute((alias("xmlDebugDumpNodeList__internal_alias"))); +#else +#ifndef xmlDebugDumpNodeList +extern __typeof (xmlDebugDumpNodeList) xmlDebugDumpNodeList__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpNodeList xmlDebugDumpNodeList__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpOneNode +extern __typeof (xmlDebugDumpOneNode) xmlDebugDumpOneNode __attribute((alias("xmlDebugDumpOneNode__internal_alias"))); +#else +#ifndef xmlDebugDumpOneNode +extern __typeof (xmlDebugDumpOneNode) xmlDebugDumpOneNode__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpOneNode xmlDebugDumpOneNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpString +extern __typeof (xmlDebugDumpString) xmlDebugDumpString __attribute((alias("xmlDebugDumpString__internal_alias"))); +#else +#ifndef xmlDebugDumpString +extern __typeof (xmlDebugDumpString) xmlDebugDumpString__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpString xmlDebugDumpString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlDecodeEntities +extern __typeof (xmlDecodeEntities) xmlDecodeEntities __attribute((alias("xmlDecodeEntities__internal_alias"))); +#else +#ifndef xmlDecodeEntities +extern __typeof (xmlDecodeEntities) xmlDecodeEntities__internal_alias __attribute((visibility("hidden"))); +#define xmlDecodeEntities xmlDecodeEntities__internal_alias +#endif +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlDefaultSAXHandlerInit +extern __typeof (xmlDefaultSAXHandlerInit) xmlDefaultSAXHandlerInit __attribute((alias("xmlDefaultSAXHandlerInit__internal_alias"))); +#else +#ifndef xmlDefaultSAXHandlerInit +extern __typeof (xmlDefaultSAXHandlerInit) xmlDefaultSAXHandlerInit__internal_alias __attribute((visibility("hidden"))); +#define xmlDefaultSAXHandlerInit xmlDefaultSAXHandlerInit__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlDelEncodingAlias +extern __typeof (xmlDelEncodingAlias) xmlDelEncodingAlias __attribute((alias("xmlDelEncodingAlias__internal_alias"))); +#else +#ifndef xmlDelEncodingAlias +extern __typeof (xmlDelEncodingAlias) xmlDelEncodingAlias__internal_alias __attribute((visibility("hidden"))); +#define xmlDelEncodingAlias xmlDelEncodingAlias__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlDeregisterNodeDefault +extern __typeof (xmlDeregisterNodeDefault) xmlDeregisterNodeDefault __attribute((alias("xmlDeregisterNodeDefault__internal_alias"))); +#else +#ifndef xmlDeregisterNodeDefault +extern __typeof (xmlDeregisterNodeDefault) xmlDeregisterNodeDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlDeregisterNodeDefault xmlDeregisterNodeDefault__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlDetectCharEncoding +extern __typeof (xmlDetectCharEncoding) xmlDetectCharEncoding __attribute((alias("xmlDetectCharEncoding__internal_alias"))); +#else +#ifndef xmlDetectCharEncoding +extern __typeof (xmlDetectCharEncoding) xmlDetectCharEncoding__internal_alias __attribute((visibility("hidden"))); +#define xmlDetectCharEncoding xmlDetectCharEncoding__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictCleanup +extern __typeof (xmlDictCleanup) xmlDictCleanup __attribute((alias("xmlDictCleanup__internal_alias"))); +#else +#ifndef xmlDictCleanup +extern __typeof (xmlDictCleanup) xmlDictCleanup__internal_alias __attribute((visibility("hidden"))); +#define xmlDictCleanup xmlDictCleanup__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictCreate +extern __typeof (xmlDictCreate) xmlDictCreate __attribute((alias("xmlDictCreate__internal_alias"))); +#else +#ifndef xmlDictCreate +extern __typeof (xmlDictCreate) xmlDictCreate__internal_alias __attribute((visibility("hidden"))); +#define xmlDictCreate xmlDictCreate__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictCreateSub +extern __typeof (xmlDictCreateSub) xmlDictCreateSub __attribute((alias("xmlDictCreateSub__internal_alias"))); +#else +#ifndef xmlDictCreateSub +extern __typeof (xmlDictCreateSub) xmlDictCreateSub__internal_alias __attribute((visibility("hidden"))); +#define xmlDictCreateSub xmlDictCreateSub__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictExists +extern __typeof (xmlDictExists) xmlDictExists __attribute((alias("xmlDictExists__internal_alias"))); +#else +#ifndef xmlDictExists +extern __typeof (xmlDictExists) xmlDictExists__internal_alias __attribute((visibility("hidden"))); +#define xmlDictExists xmlDictExists__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictFree +extern __typeof (xmlDictFree) xmlDictFree __attribute((alias("xmlDictFree__internal_alias"))); +#else +#ifndef xmlDictFree +extern __typeof (xmlDictFree) xmlDictFree__internal_alias __attribute((visibility("hidden"))); +#define xmlDictFree xmlDictFree__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictGetUsage +extern __typeof (xmlDictGetUsage) xmlDictGetUsage __attribute((alias("xmlDictGetUsage__internal_alias"))); +#else +#ifndef xmlDictGetUsage +extern __typeof (xmlDictGetUsage) xmlDictGetUsage__internal_alias __attribute((visibility("hidden"))); +#define xmlDictGetUsage xmlDictGetUsage__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictLookup +extern __typeof (xmlDictLookup) xmlDictLookup __attribute((alias("xmlDictLookup__internal_alias"))); +#else +#ifndef xmlDictLookup +extern __typeof (xmlDictLookup) xmlDictLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlDictLookup xmlDictLookup__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictOwns +extern __typeof (xmlDictOwns) xmlDictOwns __attribute((alias("xmlDictOwns__internal_alias"))); +#else +#ifndef xmlDictOwns +extern __typeof (xmlDictOwns) xmlDictOwns__internal_alias __attribute((visibility("hidden"))); +#define xmlDictOwns xmlDictOwns__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictQLookup +extern __typeof (xmlDictQLookup) xmlDictQLookup __attribute((alias("xmlDictQLookup__internal_alias"))); +#else +#ifndef xmlDictQLookup +extern __typeof (xmlDictQLookup) xmlDictQLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlDictQLookup xmlDictQLookup__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictReference +extern __typeof (xmlDictReference) xmlDictReference __attribute((alias("xmlDictReference__internal_alias"))); +#else +#ifndef xmlDictReference +extern __typeof (xmlDictReference) xmlDictReference__internal_alias __attribute((visibility("hidden"))); +#define xmlDictReference xmlDictReference__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictSetLimit +extern __typeof (xmlDictSetLimit) xmlDictSetLimit __attribute((alias("xmlDictSetLimit__internal_alias"))); +#else +#ifndef xmlDictSetLimit +extern __typeof (xmlDictSetLimit) xmlDictSetLimit__internal_alias __attribute((visibility("hidden"))); +#define xmlDictSetLimit xmlDictSetLimit__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictSize +extern __typeof (xmlDictSize) xmlDictSize __attribute((alias("xmlDictSize__internal_alias"))); +#else +#ifndef xmlDictSize +extern __typeof (xmlDictSize) xmlDictSize__internal_alias __attribute((visibility("hidden"))); +#define xmlDictSize xmlDictSize__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlDocCopyNode +extern __typeof (xmlDocCopyNode) xmlDocCopyNode __attribute((alias("xmlDocCopyNode__internal_alias"))); +#else +#ifndef xmlDocCopyNode +extern __typeof (xmlDocCopyNode) xmlDocCopyNode__internal_alias __attribute((visibility("hidden"))); +#define xmlDocCopyNode xmlDocCopyNode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlDocCopyNodeList +extern __typeof (xmlDocCopyNodeList) xmlDocCopyNodeList __attribute((alias("xmlDocCopyNodeList__internal_alias"))); +#else +#ifndef xmlDocCopyNodeList +extern __typeof (xmlDocCopyNodeList) xmlDocCopyNodeList__internal_alias __attribute((visibility("hidden"))); +#define xmlDocCopyNodeList xmlDocCopyNodeList__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlDocDump +extern __typeof (xmlDocDump) xmlDocDump __attribute((alias("xmlDocDump__internal_alias"))); +#else +#ifndef xmlDocDump +extern __typeof (xmlDocDump) xmlDocDump__internal_alias __attribute((visibility("hidden"))); +#define xmlDocDump xmlDocDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlDocDumpFormatMemory +extern __typeof (xmlDocDumpFormatMemory) xmlDocDumpFormatMemory __attribute((alias("xmlDocDumpFormatMemory__internal_alias"))); +#else +#ifndef xmlDocDumpFormatMemory +extern __typeof (xmlDocDumpFormatMemory) xmlDocDumpFormatMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlDocDumpFormatMemory xmlDocDumpFormatMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlDocDumpFormatMemoryEnc +extern __typeof (xmlDocDumpFormatMemoryEnc) xmlDocDumpFormatMemoryEnc __attribute((alias("xmlDocDumpFormatMemoryEnc__internal_alias"))); +#else +#ifndef xmlDocDumpFormatMemoryEnc +extern __typeof (xmlDocDumpFormatMemoryEnc) xmlDocDumpFormatMemoryEnc__internal_alias __attribute((visibility("hidden"))); +#define xmlDocDumpFormatMemoryEnc xmlDocDumpFormatMemoryEnc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlDocDumpMemory +extern __typeof (xmlDocDumpMemory) xmlDocDumpMemory __attribute((alias("xmlDocDumpMemory__internal_alias"))); +#else +#ifndef xmlDocDumpMemory +extern __typeof (xmlDocDumpMemory) xmlDocDumpMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlDocDumpMemory xmlDocDumpMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlDocDumpMemoryEnc +extern __typeof (xmlDocDumpMemoryEnc) xmlDocDumpMemoryEnc __attribute((alias("xmlDocDumpMemoryEnc__internal_alias"))); +#else +#ifndef xmlDocDumpMemoryEnc +extern __typeof (xmlDocDumpMemoryEnc) xmlDocDumpMemoryEnc__internal_alias __attribute((visibility("hidden"))); +#define xmlDocDumpMemoryEnc xmlDocDumpMemoryEnc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlDocFormatDump +extern __typeof (xmlDocFormatDump) xmlDocFormatDump __attribute((alias("xmlDocFormatDump__internal_alias"))); +#else +#ifndef xmlDocFormatDump +extern __typeof (xmlDocFormatDump) xmlDocFormatDump__internal_alias __attribute((visibility("hidden"))); +#define xmlDocFormatDump xmlDocFormatDump__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlDocGetRootElement +extern __typeof (xmlDocGetRootElement) xmlDocGetRootElement __attribute((alias("xmlDocGetRootElement__internal_alias"))); +#else +#ifndef xmlDocGetRootElement +extern __typeof (xmlDocGetRootElement) xmlDocGetRootElement__internal_alias __attribute((visibility("hidden"))); +#define xmlDocGetRootElement xmlDocGetRootElement__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_tree +#undef xmlDocSetRootElement +extern __typeof (xmlDocSetRootElement) xmlDocSetRootElement __attribute((alias("xmlDocSetRootElement__internal_alias"))); +#else +#ifndef xmlDocSetRootElement +extern __typeof (xmlDocSetRootElement) xmlDocSetRootElement__internal_alias __attribute((visibility("hidden"))); +#define xmlDocSetRootElement xmlDocSetRootElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_valid +#undef xmlDumpAttributeDecl +extern __typeof (xmlDumpAttributeDecl) xmlDumpAttributeDecl __attribute((alias("xmlDumpAttributeDecl__internal_alias"))); +#else +#ifndef xmlDumpAttributeDecl +extern __typeof (xmlDumpAttributeDecl) xmlDumpAttributeDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlDumpAttributeDecl xmlDumpAttributeDecl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_valid +#undef xmlDumpAttributeTable +extern __typeof (xmlDumpAttributeTable) xmlDumpAttributeTable __attribute((alias("xmlDumpAttributeTable__internal_alias"))); +#else +#ifndef xmlDumpAttributeTable +extern __typeof (xmlDumpAttributeTable) xmlDumpAttributeTable__internal_alias __attribute((visibility("hidden"))); +#define xmlDumpAttributeTable xmlDumpAttributeTable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_valid +#undef xmlDumpElementDecl +extern __typeof (xmlDumpElementDecl) xmlDumpElementDecl __attribute((alias("xmlDumpElementDecl__internal_alias"))); +#else +#ifndef xmlDumpElementDecl +extern __typeof (xmlDumpElementDecl) xmlDumpElementDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlDumpElementDecl xmlDumpElementDecl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_valid +#undef xmlDumpElementTable +extern __typeof (xmlDumpElementTable) xmlDumpElementTable __attribute((alias("xmlDumpElementTable__internal_alias"))); +#else +#ifndef xmlDumpElementTable +extern __typeof (xmlDumpElementTable) xmlDumpElementTable__internal_alias __attribute((visibility("hidden"))); +#define xmlDumpElementTable xmlDumpElementTable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_entities +#undef xmlDumpEntitiesTable +extern __typeof (xmlDumpEntitiesTable) xmlDumpEntitiesTable __attribute((alias("xmlDumpEntitiesTable__internal_alias"))); +#else +#ifndef xmlDumpEntitiesTable +extern __typeof (xmlDumpEntitiesTable) xmlDumpEntitiesTable__internal_alias __attribute((visibility("hidden"))); +#define xmlDumpEntitiesTable xmlDumpEntitiesTable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_entities +#undef xmlDumpEntityDecl +extern __typeof (xmlDumpEntityDecl) xmlDumpEntityDecl __attribute((alias("xmlDumpEntityDecl__internal_alias"))); +#else +#ifndef xmlDumpEntityDecl +extern __typeof (xmlDumpEntityDecl) xmlDumpEntityDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlDumpEntityDecl xmlDumpEntityDecl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_valid +#undef xmlDumpNotationDecl +extern __typeof (xmlDumpNotationDecl) xmlDumpNotationDecl __attribute((alias("xmlDumpNotationDecl__internal_alias"))); +#else +#ifndef xmlDumpNotationDecl +extern __typeof (xmlDumpNotationDecl) xmlDumpNotationDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlDumpNotationDecl xmlDumpNotationDecl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_valid +#undef xmlDumpNotationTable +extern __typeof (xmlDumpNotationTable) xmlDumpNotationTable __attribute((alias("xmlDumpNotationTable__internal_alias"))); +#else +#ifndef xmlDumpNotationTable +extern __typeof (xmlDumpNotationTable) xmlDumpNotationTable__internal_alias __attribute((visibility("hidden"))); +#define xmlDumpNotationTable xmlDumpNotationTable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlElemDump +extern __typeof (xmlElemDump) xmlElemDump __attribute((alias("xmlElemDump__internal_alias"))); +#else +#ifndef xmlElemDump +extern __typeof (xmlElemDump) xmlElemDump__internal_alias __attribute((visibility("hidden"))); +#define xmlElemDump xmlElemDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlEncodeEntities +extern __typeof (xmlEncodeEntities) xmlEncodeEntities __attribute((alias("xmlEncodeEntities__internal_alias"))); +#else +#ifndef xmlEncodeEntities +extern __typeof (xmlEncodeEntities) xmlEncodeEntities__internal_alias __attribute((visibility("hidden"))); +#define xmlEncodeEntities xmlEncodeEntities__internal_alias +#endif +#endif +#endif + +#ifdef bottom_entities +#undef xmlEncodeEntitiesReentrant +extern __typeof (xmlEncodeEntitiesReentrant) xmlEncodeEntitiesReentrant __attribute((alias("xmlEncodeEntitiesReentrant__internal_alias"))); +#else +#ifndef xmlEncodeEntitiesReentrant +extern __typeof (xmlEncodeEntitiesReentrant) xmlEncodeEntitiesReentrant__internal_alias __attribute((visibility("hidden"))); +#define xmlEncodeEntitiesReentrant xmlEncodeEntitiesReentrant__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlEncodeSpecialChars +extern __typeof (xmlEncodeSpecialChars) xmlEncodeSpecialChars __attribute((alias("xmlEncodeSpecialChars__internal_alias"))); +#else +#ifndef xmlEncodeSpecialChars +extern __typeof (xmlEncodeSpecialChars) xmlEncodeSpecialChars__internal_alias __attribute((visibility("hidden"))); +#define xmlEncodeSpecialChars xmlEncodeSpecialChars__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlErrMemory +extern __typeof (xmlErrMemory) xmlErrMemory __attribute((alias("xmlErrMemory__internal_alias"))); +#else +#ifndef xmlErrMemory +extern __typeof (xmlErrMemory) xmlErrMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlErrMemory xmlErrMemory__internal_alias +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpCtxtNbCons +extern __typeof (xmlExpCtxtNbCons) xmlExpCtxtNbCons __attribute((alias("xmlExpCtxtNbCons__internal_alias"))); +#else +#ifndef xmlExpCtxtNbCons +extern __typeof (xmlExpCtxtNbCons) xmlExpCtxtNbCons__internal_alias __attribute((visibility("hidden"))); +#define xmlExpCtxtNbCons xmlExpCtxtNbCons__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpCtxtNbNodes +extern __typeof (xmlExpCtxtNbNodes) xmlExpCtxtNbNodes __attribute((alias("xmlExpCtxtNbNodes__internal_alias"))); +#else +#ifndef xmlExpCtxtNbNodes +extern __typeof (xmlExpCtxtNbNodes) xmlExpCtxtNbNodes__internal_alias __attribute((visibility("hidden"))); +#define xmlExpCtxtNbNodes xmlExpCtxtNbNodes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpDump +extern __typeof (xmlExpDump) xmlExpDump __attribute((alias("xmlExpDump__internal_alias"))); +#else +#ifndef xmlExpDump +extern __typeof (xmlExpDump) xmlExpDump__internal_alias __attribute((visibility("hidden"))); +#define xmlExpDump xmlExpDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpExpDerive +extern __typeof (xmlExpExpDerive) xmlExpExpDerive __attribute((alias("xmlExpExpDerive__internal_alias"))); +#else +#ifndef xmlExpExpDerive +extern __typeof (xmlExpExpDerive) xmlExpExpDerive__internal_alias __attribute((visibility("hidden"))); +#define xmlExpExpDerive xmlExpExpDerive__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpFree +extern __typeof (xmlExpFree) xmlExpFree __attribute((alias("xmlExpFree__internal_alias"))); +#else +#ifndef xmlExpFree +extern __typeof (xmlExpFree) xmlExpFree__internal_alias __attribute((visibility("hidden"))); +#define xmlExpFree xmlExpFree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpFreeCtxt +extern __typeof (xmlExpFreeCtxt) xmlExpFreeCtxt __attribute((alias("xmlExpFreeCtxt__internal_alias"))); +#else +#ifndef xmlExpFreeCtxt +extern __typeof (xmlExpFreeCtxt) xmlExpFreeCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlExpFreeCtxt xmlExpFreeCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpGetLanguage +extern __typeof (xmlExpGetLanguage) xmlExpGetLanguage __attribute((alias("xmlExpGetLanguage__internal_alias"))); +#else +#ifndef xmlExpGetLanguage +extern __typeof (xmlExpGetLanguage) xmlExpGetLanguage__internal_alias __attribute((visibility("hidden"))); +#define xmlExpGetLanguage xmlExpGetLanguage__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpGetStart +extern __typeof (xmlExpGetStart) xmlExpGetStart __attribute((alias("xmlExpGetStart__internal_alias"))); +#else +#ifndef xmlExpGetStart +extern __typeof (xmlExpGetStart) xmlExpGetStart__internal_alias __attribute((visibility("hidden"))); +#define xmlExpGetStart xmlExpGetStart__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpIsNillable +extern __typeof (xmlExpIsNillable) xmlExpIsNillable __attribute((alias("xmlExpIsNillable__internal_alias"))); +#else +#ifndef xmlExpIsNillable +extern __typeof (xmlExpIsNillable) xmlExpIsNillable__internal_alias __attribute((visibility("hidden"))); +#define xmlExpIsNillable xmlExpIsNillable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpMaxToken +extern __typeof (xmlExpMaxToken) xmlExpMaxToken __attribute((alias("xmlExpMaxToken__internal_alias"))); +#else +#ifndef xmlExpMaxToken +extern __typeof (xmlExpMaxToken) xmlExpMaxToken__internal_alias __attribute((visibility("hidden"))); +#define xmlExpMaxToken xmlExpMaxToken__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpNewAtom +extern __typeof (xmlExpNewAtom) xmlExpNewAtom __attribute((alias("xmlExpNewAtom__internal_alias"))); +#else +#ifndef xmlExpNewAtom +extern __typeof (xmlExpNewAtom) xmlExpNewAtom__internal_alias __attribute((visibility("hidden"))); +#define xmlExpNewAtom xmlExpNewAtom__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpNewCtxt +extern __typeof (xmlExpNewCtxt) xmlExpNewCtxt __attribute((alias("xmlExpNewCtxt__internal_alias"))); +#else +#ifndef xmlExpNewCtxt +extern __typeof (xmlExpNewCtxt) xmlExpNewCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlExpNewCtxt xmlExpNewCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpNewOr +extern __typeof (xmlExpNewOr) xmlExpNewOr __attribute((alias("xmlExpNewOr__internal_alias"))); +#else +#ifndef xmlExpNewOr +extern __typeof (xmlExpNewOr) xmlExpNewOr__internal_alias __attribute((visibility("hidden"))); +#define xmlExpNewOr xmlExpNewOr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpNewRange +extern __typeof (xmlExpNewRange) xmlExpNewRange __attribute((alias("xmlExpNewRange__internal_alias"))); +#else +#ifndef xmlExpNewRange +extern __typeof (xmlExpNewRange) xmlExpNewRange__internal_alias __attribute((visibility("hidden"))); +#define xmlExpNewRange xmlExpNewRange__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpNewSeq +extern __typeof (xmlExpNewSeq) xmlExpNewSeq __attribute((alias("xmlExpNewSeq__internal_alias"))); +#else +#ifndef xmlExpNewSeq +extern __typeof (xmlExpNewSeq) xmlExpNewSeq__internal_alias __attribute((visibility("hidden"))); +#define xmlExpNewSeq xmlExpNewSeq__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpParse +extern __typeof (xmlExpParse) xmlExpParse __attribute((alias("xmlExpParse__internal_alias"))); +#else +#ifndef xmlExpParse +extern __typeof (xmlExpParse) xmlExpParse__internal_alias __attribute((visibility("hidden"))); +#define xmlExpParse xmlExpParse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpRef +extern __typeof (xmlExpRef) xmlExpRef __attribute((alias("xmlExpRef__internal_alias"))); +#else +#ifndef xmlExpRef +extern __typeof (xmlExpRef) xmlExpRef__internal_alias __attribute((visibility("hidden"))); +#define xmlExpRef xmlExpRef__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpStringDerive +extern __typeof (xmlExpStringDerive) xmlExpStringDerive __attribute((alias("xmlExpStringDerive__internal_alias"))); +#else +#ifndef xmlExpStringDerive +extern __typeof (xmlExpStringDerive) xmlExpStringDerive__internal_alias __attribute((visibility("hidden"))); +#define xmlExpStringDerive xmlExpStringDerive__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpSubsume +extern __typeof (xmlExpSubsume) xmlExpSubsume __attribute((alias("xmlExpSubsume__internal_alias"))); +#else +#ifndef xmlExpSubsume +extern __typeof (xmlExpSubsume) xmlExpSubsume__internal_alias __attribute((visibility("hidden"))); +#define xmlExpSubsume xmlExpSubsume__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlFileClose +extern __typeof (xmlFileClose) xmlFileClose __attribute((alias("xmlFileClose__internal_alias"))); +#else +#ifndef xmlFileClose +extern __typeof (xmlFileClose) xmlFileClose__internal_alias __attribute((visibility("hidden"))); +#define xmlFileClose xmlFileClose__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlFileMatch +extern __typeof (xmlFileMatch) xmlFileMatch __attribute((alias("xmlFileMatch__internal_alias"))); +#else +#ifndef xmlFileMatch +extern __typeof (xmlFileMatch) xmlFileMatch__internal_alias __attribute((visibility("hidden"))); +#define xmlFileMatch xmlFileMatch__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlFileOpen +extern __typeof (xmlFileOpen) xmlFileOpen __attribute((alias("xmlFileOpen__internal_alias"))); +#else +#ifndef xmlFileOpen +extern __typeof (xmlFileOpen) xmlFileOpen__internal_alias __attribute((visibility("hidden"))); +#define xmlFileOpen xmlFileOpen__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlFileRead +extern __typeof (xmlFileRead) xmlFileRead __attribute((alias("xmlFileRead__internal_alias"))); +#else +#ifndef xmlFileRead +extern __typeof (xmlFileRead) xmlFileRead__internal_alias __attribute((visibility("hidden"))); +#define xmlFileRead xmlFileRead__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlFindCharEncodingHandler +extern __typeof (xmlFindCharEncodingHandler) xmlFindCharEncodingHandler __attribute((alias("xmlFindCharEncodingHandler__internal_alias"))); +#else +#ifndef xmlFindCharEncodingHandler +extern __typeof (xmlFindCharEncodingHandler) xmlFindCharEncodingHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlFindCharEncodingHandler xmlFindCharEncodingHandler__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlFirstElementChild +extern __typeof (xmlFirstElementChild) xmlFirstElementChild __attribute((alias("xmlFirstElementChild__internal_alias"))); +#else +#ifndef xmlFirstElementChild +extern __typeof (xmlFirstElementChild) xmlFirstElementChild__internal_alias __attribute((visibility("hidden"))); +#define xmlFirstElementChild xmlFirstElementChild__internal_alias +#endif +#endif +#endif + +#ifdef bottom_valid +#undef xmlFreeAttributeTable +extern __typeof (xmlFreeAttributeTable) xmlFreeAttributeTable __attribute((alias("xmlFreeAttributeTable__internal_alias"))); +#else +#ifndef xmlFreeAttributeTable +extern __typeof (xmlFreeAttributeTable) xmlFreeAttributeTable__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeAttributeTable xmlFreeAttributeTable__internal_alias +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlFreeAutomata +extern __typeof (xmlFreeAutomata) xmlFreeAutomata __attribute((alias("xmlFreeAutomata__internal_alias"))); +#else +#ifndef xmlFreeAutomata +extern __typeof (xmlFreeAutomata) xmlFreeAutomata__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeAutomata xmlFreeAutomata__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlFreeCatalog +extern __typeof (xmlFreeCatalog) xmlFreeCatalog __attribute((alias("xmlFreeCatalog__internal_alias"))); +#else +#ifndef xmlFreeCatalog +extern __typeof (xmlFreeCatalog) xmlFreeCatalog__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeCatalog xmlFreeCatalog__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlFreeDoc +extern __typeof (xmlFreeDoc) xmlFreeDoc __attribute((alias("xmlFreeDoc__internal_alias"))); +#else +#ifndef xmlFreeDoc +extern __typeof (xmlFreeDoc) xmlFreeDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeDoc xmlFreeDoc__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlFreeDocElementContent +extern __typeof (xmlFreeDocElementContent) xmlFreeDocElementContent __attribute((alias("xmlFreeDocElementContent__internal_alias"))); +#else +#ifndef xmlFreeDocElementContent +extern __typeof (xmlFreeDocElementContent) xmlFreeDocElementContent__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeDocElementContent xmlFreeDocElementContent__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlFreeDtd +extern __typeof (xmlFreeDtd) xmlFreeDtd __attribute((alias("xmlFreeDtd__internal_alias"))); +#else +#ifndef xmlFreeDtd +extern __typeof (xmlFreeDtd) xmlFreeDtd__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeDtd xmlFreeDtd__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlFreeElementContent +extern __typeof (xmlFreeElementContent) xmlFreeElementContent __attribute((alias("xmlFreeElementContent__internal_alias"))); +#else +#ifndef xmlFreeElementContent +extern __typeof (xmlFreeElementContent) xmlFreeElementContent__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeElementContent xmlFreeElementContent__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlFreeElementTable +extern __typeof (xmlFreeElementTable) xmlFreeElementTable __attribute((alias("xmlFreeElementTable__internal_alias"))); +#else +#ifndef xmlFreeElementTable +extern __typeof (xmlFreeElementTable) xmlFreeElementTable__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeElementTable xmlFreeElementTable__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlFreeEntitiesTable +extern __typeof (xmlFreeEntitiesTable) xmlFreeEntitiesTable __attribute((alias("xmlFreeEntitiesTable__internal_alias"))); +#else +#ifndef xmlFreeEntitiesTable +extern __typeof (xmlFreeEntitiesTable) xmlFreeEntitiesTable__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeEntitiesTable xmlFreeEntitiesTable__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlFreeEnumeration +extern __typeof (xmlFreeEnumeration) xmlFreeEnumeration __attribute((alias("xmlFreeEnumeration__internal_alias"))); +#else +#ifndef xmlFreeEnumeration +extern __typeof (xmlFreeEnumeration) xmlFreeEnumeration__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeEnumeration xmlFreeEnumeration__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlFreeIDTable +extern __typeof (xmlFreeIDTable) xmlFreeIDTable __attribute((alias("xmlFreeIDTable__internal_alias"))); +#else +#ifndef xmlFreeIDTable +extern __typeof (xmlFreeIDTable) xmlFreeIDTable__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeIDTable xmlFreeIDTable__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlFreeInputStream +extern __typeof (xmlFreeInputStream) xmlFreeInputStream __attribute((alias("xmlFreeInputStream__internal_alias"))); +#else +#ifndef xmlFreeInputStream +extern __typeof (xmlFreeInputStream) xmlFreeInputStream__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeInputStream xmlFreeInputStream__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlFreeMutex +extern __typeof (xmlFreeMutex) xmlFreeMutex __attribute((alias("xmlFreeMutex__internal_alias"))); +#else +#ifndef xmlFreeMutex +extern __typeof (xmlFreeMutex) xmlFreeMutex__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeMutex xmlFreeMutex__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlFreeNode +extern __typeof (xmlFreeNode) xmlFreeNode __attribute((alias("xmlFreeNode__internal_alias"))); +#else +#ifndef xmlFreeNode +extern __typeof (xmlFreeNode) xmlFreeNode__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeNode xmlFreeNode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlFreeNodeList +extern __typeof (xmlFreeNodeList) xmlFreeNodeList __attribute((alias("xmlFreeNodeList__internal_alias"))); +#else +#ifndef xmlFreeNodeList +extern __typeof (xmlFreeNodeList) xmlFreeNodeList__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeNodeList xmlFreeNodeList__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlFreeNotationTable +extern __typeof (xmlFreeNotationTable) xmlFreeNotationTable __attribute((alias("xmlFreeNotationTable__internal_alias"))); +#else +#ifndef xmlFreeNotationTable +extern __typeof (xmlFreeNotationTable) xmlFreeNotationTable__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeNotationTable xmlFreeNotationTable__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlFreeNs +extern __typeof (xmlFreeNs) xmlFreeNs __attribute((alias("xmlFreeNs__internal_alias"))); +#else +#ifndef xmlFreeNs +extern __typeof (xmlFreeNs) xmlFreeNs__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeNs xmlFreeNs__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlFreeNsList +extern __typeof (xmlFreeNsList) xmlFreeNsList __attribute((alias("xmlFreeNsList__internal_alias"))); +#else +#ifndef xmlFreeNsList +extern __typeof (xmlFreeNsList) xmlFreeNsList__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeNsList xmlFreeNsList__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlFreeParserCtxt +extern __typeof (xmlFreeParserCtxt) xmlFreeParserCtxt __attribute((alias("xmlFreeParserCtxt__internal_alias"))); +#else +#ifndef xmlFreeParserCtxt +extern __typeof (xmlFreeParserCtxt) xmlFreeParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeParserCtxt xmlFreeParserCtxt__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlFreeParserInputBuffer +extern __typeof (xmlFreeParserInputBuffer) xmlFreeParserInputBuffer __attribute((alias("xmlFreeParserInputBuffer__internal_alias"))); +#else +#ifndef xmlFreeParserInputBuffer +extern __typeof (xmlFreeParserInputBuffer) xmlFreeParserInputBuffer__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeParserInputBuffer xmlFreeParserInputBuffer__internal_alias +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlFreePattern +extern __typeof (xmlFreePattern) xmlFreePattern __attribute((alias("xmlFreePattern__internal_alias"))); +#else +#ifndef xmlFreePattern +extern __typeof (xmlFreePattern) xmlFreePattern__internal_alias __attribute((visibility("hidden"))); +#define xmlFreePattern xmlFreePattern__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlFreePatternList +extern __typeof (xmlFreePatternList) xmlFreePatternList __attribute((alias("xmlFreePatternList__internal_alias"))); +#else +#ifndef xmlFreePatternList +extern __typeof (xmlFreePatternList) xmlFreePatternList__internal_alias __attribute((visibility("hidden"))); +#define xmlFreePatternList xmlFreePatternList__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlFreeProp +extern __typeof (xmlFreeProp) xmlFreeProp __attribute((alias("xmlFreeProp__internal_alias"))); +#else +#ifndef xmlFreeProp +extern __typeof (xmlFreeProp) xmlFreeProp__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeProp xmlFreeProp__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlFreePropList +extern __typeof (xmlFreePropList) xmlFreePropList __attribute((alias("xmlFreePropList__internal_alias"))); +#else +#ifndef xmlFreePropList +extern __typeof (xmlFreePropList) xmlFreePropList__internal_alias __attribute((visibility("hidden"))); +#define xmlFreePropList xmlFreePropList__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlFreeRMutex +extern __typeof (xmlFreeRMutex) xmlFreeRMutex __attribute((alias("xmlFreeRMutex__internal_alias"))); +#else +#ifndef xmlFreeRMutex +extern __typeof (xmlFreeRMutex) xmlFreeRMutex__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeRMutex xmlFreeRMutex__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlFreeRefTable +extern __typeof (xmlFreeRefTable) xmlFreeRefTable __attribute((alias("xmlFreeRefTable__internal_alias"))); +#else +#ifndef xmlFreeRefTable +extern __typeof (xmlFreeRefTable) xmlFreeRefTable__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeRefTable xmlFreeRefTable__internal_alias +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlFreeStreamCtxt +extern __typeof (xmlFreeStreamCtxt) xmlFreeStreamCtxt __attribute((alias("xmlFreeStreamCtxt__internal_alias"))); +#else +#ifndef xmlFreeStreamCtxt +extern __typeof (xmlFreeStreamCtxt) xmlFreeStreamCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeStreamCtxt xmlFreeStreamCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlFreeTextReader +extern __typeof (xmlFreeTextReader) xmlFreeTextReader __attribute((alias("xmlFreeTextReader__internal_alias"))); +#else +#ifndef xmlFreeTextReader +extern __typeof (xmlFreeTextReader) xmlFreeTextReader__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeTextReader xmlFreeTextReader__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlFreeTextWriter +extern __typeof (xmlFreeTextWriter) xmlFreeTextWriter __attribute((alias("xmlFreeTextWriter__internal_alias"))); +#else +#ifndef xmlFreeTextWriter +extern __typeof (xmlFreeTextWriter) xmlFreeTextWriter__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeTextWriter xmlFreeTextWriter__internal_alias +#endif +#endif +#endif + +#ifdef bottom_uri +#undef xmlFreeURI +extern __typeof (xmlFreeURI) xmlFreeURI __attribute((alias("xmlFreeURI__internal_alias"))); +#else +#ifndef xmlFreeURI +extern __typeof (xmlFreeURI) xmlFreeURI__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeURI xmlFreeURI__internal_alias +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlFreeValidCtxt +extern __typeof (xmlFreeValidCtxt) xmlFreeValidCtxt __attribute((alias("xmlFreeValidCtxt__internal_alias"))); +#else +#ifndef xmlFreeValidCtxt +extern __typeof (xmlFreeValidCtxt) xmlFreeValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeValidCtxt xmlFreeValidCtxt__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlGcMemGet +extern __typeof (xmlGcMemGet) xmlGcMemGet __attribute((alias("xmlGcMemGet__internal_alias"))); +#else +#ifndef xmlGcMemGet +extern __typeof (xmlGcMemGet) xmlGcMemGet__internal_alias __attribute((visibility("hidden"))); +#define xmlGcMemGet xmlGcMemGet__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlGcMemSetup +extern __typeof (xmlGcMemSetup) xmlGcMemSetup __attribute((alias("xmlGcMemSetup__internal_alias"))); +#else +#ifndef xmlGcMemSetup +extern __typeof (xmlGcMemSetup) xmlGcMemSetup__internal_alias __attribute((visibility("hidden"))); +#define xmlGcMemSetup xmlGcMemSetup__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetBufferAllocationScheme +extern __typeof (xmlGetBufferAllocationScheme) xmlGetBufferAllocationScheme __attribute((alias("xmlGetBufferAllocationScheme__internal_alias"))); +#else +#ifndef xmlGetBufferAllocationScheme +extern __typeof (xmlGetBufferAllocationScheme) xmlGetBufferAllocationScheme__internal_alias __attribute((visibility("hidden"))); +#define xmlGetBufferAllocationScheme xmlGetBufferAllocationScheme__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlGetCharEncodingHandler +extern __typeof (xmlGetCharEncodingHandler) xmlGetCharEncodingHandler __attribute((alias("xmlGetCharEncodingHandler__internal_alias"))); +#else +#ifndef xmlGetCharEncodingHandler +extern __typeof (xmlGetCharEncodingHandler) xmlGetCharEncodingHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlGetCharEncodingHandler xmlGetCharEncodingHandler__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlGetCharEncodingName +extern __typeof (xmlGetCharEncodingName) xmlGetCharEncodingName __attribute((alias("xmlGetCharEncodingName__internal_alias"))); +#else +#ifndef xmlGetCharEncodingName +extern __typeof (xmlGetCharEncodingName) xmlGetCharEncodingName__internal_alias __attribute((visibility("hidden"))); +#define xmlGetCharEncodingName xmlGetCharEncodingName__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetCompressMode +extern __typeof (xmlGetCompressMode) xmlGetCompressMode __attribute((alias("xmlGetCompressMode__internal_alias"))); +#else +#ifndef xmlGetCompressMode +extern __typeof (xmlGetCompressMode) xmlGetCompressMode__internal_alias __attribute((visibility("hidden"))); +#define xmlGetCompressMode xmlGetCompressMode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetDocCompressMode +extern __typeof (xmlGetDocCompressMode) xmlGetDocCompressMode __attribute((alias("xmlGetDocCompressMode__internal_alias"))); +#else +#ifndef xmlGetDocCompressMode +extern __typeof (xmlGetDocCompressMode) xmlGetDocCompressMode__internal_alias __attribute((visibility("hidden"))); +#define xmlGetDocCompressMode xmlGetDocCompressMode__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlGetDocEntity +extern __typeof (xmlGetDocEntity) xmlGetDocEntity __attribute((alias("xmlGetDocEntity__internal_alias"))); +#else +#ifndef xmlGetDocEntity +extern __typeof (xmlGetDocEntity) xmlGetDocEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlGetDocEntity xmlGetDocEntity__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlGetDtdAttrDesc +extern __typeof (xmlGetDtdAttrDesc) xmlGetDtdAttrDesc __attribute((alias("xmlGetDtdAttrDesc__internal_alias"))); +#else +#ifndef xmlGetDtdAttrDesc +extern __typeof (xmlGetDtdAttrDesc) xmlGetDtdAttrDesc__internal_alias __attribute((visibility("hidden"))); +#define xmlGetDtdAttrDesc xmlGetDtdAttrDesc__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlGetDtdElementDesc +extern __typeof (xmlGetDtdElementDesc) xmlGetDtdElementDesc __attribute((alias("xmlGetDtdElementDesc__internal_alias"))); +#else +#ifndef xmlGetDtdElementDesc +extern __typeof (xmlGetDtdElementDesc) xmlGetDtdElementDesc__internal_alias __attribute((visibility("hidden"))); +#define xmlGetDtdElementDesc xmlGetDtdElementDesc__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlGetDtdEntity +extern __typeof (xmlGetDtdEntity) xmlGetDtdEntity __attribute((alias("xmlGetDtdEntity__internal_alias"))); +#else +#ifndef xmlGetDtdEntity +extern __typeof (xmlGetDtdEntity) xmlGetDtdEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlGetDtdEntity xmlGetDtdEntity__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlGetDtdNotationDesc +extern __typeof (xmlGetDtdNotationDesc) xmlGetDtdNotationDesc __attribute((alias("xmlGetDtdNotationDesc__internal_alias"))); +#else +#ifndef xmlGetDtdNotationDesc +extern __typeof (xmlGetDtdNotationDesc) xmlGetDtdNotationDesc__internal_alias __attribute((visibility("hidden"))); +#define xmlGetDtdNotationDesc xmlGetDtdNotationDesc__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlGetDtdQAttrDesc +extern __typeof (xmlGetDtdQAttrDesc) xmlGetDtdQAttrDesc __attribute((alias("xmlGetDtdQAttrDesc__internal_alias"))); +#else +#ifndef xmlGetDtdQAttrDesc +extern __typeof (xmlGetDtdQAttrDesc) xmlGetDtdQAttrDesc__internal_alias __attribute((visibility("hidden"))); +#define xmlGetDtdQAttrDesc xmlGetDtdQAttrDesc__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlGetDtdQElementDesc +extern __typeof (xmlGetDtdQElementDesc) xmlGetDtdQElementDesc __attribute((alias("xmlGetDtdQElementDesc__internal_alias"))); +#else +#ifndef xmlGetDtdQElementDesc +extern __typeof (xmlGetDtdQElementDesc) xmlGetDtdQElementDesc__internal_alias __attribute((visibility("hidden"))); +#define xmlGetDtdQElementDesc xmlGetDtdQElementDesc__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlGetEncodingAlias +extern __typeof (xmlGetEncodingAlias) xmlGetEncodingAlias __attribute((alias("xmlGetEncodingAlias__internal_alias"))); +#else +#ifndef xmlGetEncodingAlias +extern __typeof (xmlGetEncodingAlias) xmlGetEncodingAlias__internal_alias __attribute((visibility("hidden"))); +#define xmlGetEncodingAlias xmlGetEncodingAlias__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlGetExternalEntityLoader +extern __typeof (xmlGetExternalEntityLoader) xmlGetExternalEntityLoader __attribute((alias("xmlGetExternalEntityLoader__internal_alias"))); +#else +#ifndef xmlGetExternalEntityLoader +extern __typeof (xmlGetExternalEntityLoader) xmlGetExternalEntityLoader__internal_alias __attribute((visibility("hidden"))); +#define xmlGetExternalEntityLoader xmlGetExternalEntityLoader__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlGetFeature +extern __typeof (xmlGetFeature) xmlGetFeature __attribute((alias("xmlGetFeature__internal_alias"))); +#else +#ifndef xmlGetFeature +extern __typeof (xmlGetFeature) xmlGetFeature__internal_alias __attribute((visibility("hidden"))); +#define xmlGetFeature xmlGetFeature__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlGetFeaturesList +extern __typeof (xmlGetFeaturesList) xmlGetFeaturesList __attribute((alias("xmlGetFeaturesList__internal_alias"))); +#else +#ifndef xmlGetFeaturesList +extern __typeof (xmlGetFeaturesList) xmlGetFeaturesList__internal_alias __attribute((visibility("hidden"))); +#define xmlGetFeaturesList xmlGetFeaturesList__internal_alias +#endif +#endif +#endif + +#ifdef bottom_threads +#undef xmlGetGlobalState +extern __typeof (xmlGetGlobalState) xmlGetGlobalState __attribute((alias("xmlGetGlobalState__internal_alias"))); +#else +#ifndef xmlGetGlobalState +extern __typeof (xmlGetGlobalState) xmlGetGlobalState__internal_alias __attribute((visibility("hidden"))); +#define xmlGetGlobalState xmlGetGlobalState__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlGetID +extern __typeof (xmlGetID) xmlGetID __attribute((alias("xmlGetID__internal_alias"))); +#else +#ifndef xmlGetID +extern __typeof (xmlGetID) xmlGetID__internal_alias __attribute((visibility("hidden"))); +#define xmlGetID xmlGetID__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetIntSubset +extern __typeof (xmlGetIntSubset) xmlGetIntSubset __attribute((alias("xmlGetIntSubset__internal_alias"))); +#else +#ifndef xmlGetIntSubset +extern __typeof (xmlGetIntSubset) xmlGetIntSubset__internal_alias __attribute((visibility("hidden"))); +#define xmlGetIntSubset xmlGetIntSubset__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetLastChild +extern __typeof (xmlGetLastChild) xmlGetLastChild __attribute((alias("xmlGetLastChild__internal_alias"))); +#else +#ifndef xmlGetLastChild +extern __typeof (xmlGetLastChild) xmlGetLastChild__internal_alias __attribute((visibility("hidden"))); +#define xmlGetLastChild xmlGetLastChild__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlGetLastError +extern __typeof (xmlGetLastError) xmlGetLastError __attribute((alias("xmlGetLastError__internal_alias"))); +#else +#ifndef xmlGetLastError +extern __typeof (xmlGetLastError) xmlGetLastError__internal_alias __attribute((visibility("hidden"))); +#define xmlGetLastError xmlGetLastError__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetLineNo +extern __typeof (xmlGetLineNo) xmlGetLineNo __attribute((alias("xmlGetLineNo__internal_alias"))); +#else +#ifndef xmlGetLineNo +extern __typeof (xmlGetLineNo) xmlGetLineNo__internal_alias __attribute((visibility("hidden"))); +#define xmlGetLineNo xmlGetLineNo__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetNoNsProp +extern __typeof (xmlGetNoNsProp) xmlGetNoNsProp __attribute((alias("xmlGetNoNsProp__internal_alias"))); +#else +#ifndef xmlGetNoNsProp +extern __typeof (xmlGetNoNsProp) xmlGetNoNsProp__internal_alias __attribute((visibility("hidden"))); +#define xmlGetNoNsProp xmlGetNoNsProp__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_tree +#undef xmlGetNodePath +extern __typeof (xmlGetNodePath) xmlGetNodePath __attribute((alias("xmlGetNodePath__internal_alias"))); +#else +#ifndef xmlGetNodePath +extern __typeof (xmlGetNodePath) xmlGetNodePath__internal_alias __attribute((visibility("hidden"))); +#define xmlGetNodePath xmlGetNodePath__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlGetNsList +extern __typeof (xmlGetNsList) xmlGetNsList __attribute((alias("xmlGetNsList__internal_alias"))); +#else +#ifndef xmlGetNsList +extern __typeof (xmlGetNsList) xmlGetNsList__internal_alias __attribute((visibility("hidden"))); +#define xmlGetNsList xmlGetNsList__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetNsProp +extern __typeof (xmlGetNsProp) xmlGetNsProp __attribute((alias("xmlGetNsProp__internal_alias"))); +#else +#ifndef xmlGetNsProp +extern __typeof (xmlGetNsProp) xmlGetNsProp__internal_alias __attribute((visibility("hidden"))); +#define xmlGetNsProp xmlGetNsProp__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlGetParameterEntity +extern __typeof (xmlGetParameterEntity) xmlGetParameterEntity __attribute((alias("xmlGetParameterEntity__internal_alias"))); +#else +#ifndef xmlGetParameterEntity +extern __typeof (xmlGetParameterEntity) xmlGetParameterEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlGetParameterEntity xmlGetParameterEntity__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlGetPredefinedEntity +extern __typeof (xmlGetPredefinedEntity) xmlGetPredefinedEntity __attribute((alias("xmlGetPredefinedEntity__internal_alias"))); +#else +#ifndef xmlGetPredefinedEntity +extern __typeof (xmlGetPredefinedEntity) xmlGetPredefinedEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlGetPredefinedEntity xmlGetPredefinedEntity__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetProp +extern __typeof (xmlGetProp) xmlGetProp __attribute((alias("xmlGetProp__internal_alias"))); +#else +#ifndef xmlGetProp +extern __typeof (xmlGetProp) xmlGetProp__internal_alias __attribute((visibility("hidden"))); +#define xmlGetProp xmlGetProp__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlGetRefs +extern __typeof (xmlGetRefs) xmlGetRefs __attribute((alias("xmlGetRefs__internal_alias"))); +#else +#ifndef xmlGetRefs +extern __typeof (xmlGetRefs) xmlGetRefs__internal_alias __attribute((visibility("hidden"))); +#define xmlGetRefs xmlGetRefs__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlGetThreadId +extern __typeof (xmlGetThreadId) xmlGetThreadId __attribute((alias("xmlGetThreadId__internal_alias"))); +#else +#ifndef xmlGetThreadId +extern __typeof (xmlGetThreadId) xmlGetThreadId__internal_alias __attribute((visibility("hidden"))); +#define xmlGetThreadId xmlGetThreadId__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlGetUTF8Char +extern __typeof (xmlGetUTF8Char) xmlGetUTF8Char __attribute((alias("xmlGetUTF8Char__internal_alias"))); +#else +#ifndef xmlGetUTF8Char +extern __typeof (xmlGetUTF8Char) xmlGetUTF8Char__internal_alias __attribute((visibility("hidden"))); +#define xmlGetUTF8Char xmlGetUTF8Char__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlHandleEntity +extern __typeof (xmlHandleEntity) xmlHandleEntity __attribute((alias("xmlHandleEntity__internal_alias"))); +#else +#ifndef xmlHandleEntity +extern __typeof (xmlHandleEntity) xmlHandleEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlHandleEntity xmlHandleEntity__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlHasFeature +extern __typeof (xmlHasFeature) xmlHasFeature __attribute((alias("xmlHasFeature__internal_alias"))); +#else +#ifndef xmlHasFeature +extern __typeof (xmlHasFeature) xmlHasFeature__internal_alias __attribute((visibility("hidden"))); +#define xmlHasFeature xmlHasFeature__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlHasNsProp +extern __typeof (xmlHasNsProp) xmlHasNsProp __attribute((alias("xmlHasNsProp__internal_alias"))); +#else +#ifndef xmlHasNsProp +extern __typeof (xmlHasNsProp) xmlHasNsProp__internal_alias __attribute((visibility("hidden"))); +#define xmlHasNsProp xmlHasNsProp__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlHasProp +extern __typeof (xmlHasProp) xmlHasProp __attribute((alias("xmlHasProp__internal_alias"))); +#else +#ifndef xmlHasProp +extern __typeof (xmlHasProp) xmlHasProp__internal_alias __attribute((visibility("hidden"))); +#define xmlHasProp xmlHasProp__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashAddEntry +extern __typeof (xmlHashAddEntry) xmlHashAddEntry __attribute((alias("xmlHashAddEntry__internal_alias"))); +#else +#ifndef xmlHashAddEntry +extern __typeof (xmlHashAddEntry) xmlHashAddEntry__internal_alias __attribute((visibility("hidden"))); +#define xmlHashAddEntry xmlHashAddEntry__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashAddEntry2 +extern __typeof (xmlHashAddEntry2) xmlHashAddEntry2 __attribute((alias("xmlHashAddEntry2__internal_alias"))); +#else +#ifndef xmlHashAddEntry2 +extern __typeof (xmlHashAddEntry2) xmlHashAddEntry2__internal_alias __attribute((visibility("hidden"))); +#define xmlHashAddEntry2 xmlHashAddEntry2__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashAddEntry3 +extern __typeof (xmlHashAddEntry3) xmlHashAddEntry3 __attribute((alias("xmlHashAddEntry3__internal_alias"))); +#else +#ifndef xmlHashAddEntry3 +extern __typeof (xmlHashAddEntry3) xmlHashAddEntry3__internal_alias __attribute((visibility("hidden"))); +#define xmlHashAddEntry3 xmlHashAddEntry3__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashCopy +extern __typeof (xmlHashCopy) xmlHashCopy __attribute((alias("xmlHashCopy__internal_alias"))); +#else +#ifndef xmlHashCopy +extern __typeof (xmlHashCopy) xmlHashCopy__internal_alias __attribute((visibility("hidden"))); +#define xmlHashCopy xmlHashCopy__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashCreate +extern __typeof (xmlHashCreate) xmlHashCreate __attribute((alias("xmlHashCreate__internal_alias"))); +#else +#ifndef xmlHashCreate +extern __typeof (xmlHashCreate) xmlHashCreate__internal_alias __attribute((visibility("hidden"))); +#define xmlHashCreate xmlHashCreate__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashCreateDict +extern __typeof (xmlHashCreateDict) xmlHashCreateDict __attribute((alias("xmlHashCreateDict__internal_alias"))); +#else +#ifndef xmlHashCreateDict +extern __typeof (xmlHashCreateDict) xmlHashCreateDict__internal_alias __attribute((visibility("hidden"))); +#define xmlHashCreateDict xmlHashCreateDict__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashFree +extern __typeof (xmlHashFree) xmlHashFree __attribute((alias("xmlHashFree__internal_alias"))); +#else +#ifndef xmlHashFree +extern __typeof (xmlHashFree) xmlHashFree__internal_alias __attribute((visibility("hidden"))); +#define xmlHashFree xmlHashFree__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashLookup +extern __typeof (xmlHashLookup) xmlHashLookup __attribute((alias("xmlHashLookup__internal_alias"))); +#else +#ifndef xmlHashLookup +extern __typeof (xmlHashLookup) xmlHashLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlHashLookup xmlHashLookup__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashLookup2 +extern __typeof (xmlHashLookup2) xmlHashLookup2 __attribute((alias("xmlHashLookup2__internal_alias"))); +#else +#ifndef xmlHashLookup2 +extern __typeof (xmlHashLookup2) xmlHashLookup2__internal_alias __attribute((visibility("hidden"))); +#define xmlHashLookup2 xmlHashLookup2__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashLookup3 +extern __typeof (xmlHashLookup3) xmlHashLookup3 __attribute((alias("xmlHashLookup3__internal_alias"))); +#else +#ifndef xmlHashLookup3 +extern __typeof (xmlHashLookup3) xmlHashLookup3__internal_alias __attribute((visibility("hidden"))); +#define xmlHashLookup3 xmlHashLookup3__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashQLookup +extern __typeof (xmlHashQLookup) xmlHashQLookup __attribute((alias("xmlHashQLookup__internal_alias"))); +#else +#ifndef xmlHashQLookup +extern __typeof (xmlHashQLookup) xmlHashQLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlHashQLookup xmlHashQLookup__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashQLookup2 +extern __typeof (xmlHashQLookup2) xmlHashQLookup2 __attribute((alias("xmlHashQLookup2__internal_alias"))); +#else +#ifndef xmlHashQLookup2 +extern __typeof (xmlHashQLookup2) xmlHashQLookup2__internal_alias __attribute((visibility("hidden"))); +#define xmlHashQLookup2 xmlHashQLookup2__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashQLookup3 +extern __typeof (xmlHashQLookup3) xmlHashQLookup3 __attribute((alias("xmlHashQLookup3__internal_alias"))); +#else +#ifndef xmlHashQLookup3 +extern __typeof (xmlHashQLookup3) xmlHashQLookup3__internal_alias __attribute((visibility("hidden"))); +#define xmlHashQLookup3 xmlHashQLookup3__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashRemoveEntry +extern __typeof (xmlHashRemoveEntry) xmlHashRemoveEntry __attribute((alias("xmlHashRemoveEntry__internal_alias"))); +#else +#ifndef xmlHashRemoveEntry +extern __typeof (xmlHashRemoveEntry) xmlHashRemoveEntry__internal_alias __attribute((visibility("hidden"))); +#define xmlHashRemoveEntry xmlHashRemoveEntry__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashRemoveEntry2 +extern __typeof (xmlHashRemoveEntry2) xmlHashRemoveEntry2 __attribute((alias("xmlHashRemoveEntry2__internal_alias"))); +#else +#ifndef xmlHashRemoveEntry2 +extern __typeof (xmlHashRemoveEntry2) xmlHashRemoveEntry2__internal_alias __attribute((visibility("hidden"))); +#define xmlHashRemoveEntry2 xmlHashRemoveEntry2__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashRemoveEntry3 +extern __typeof (xmlHashRemoveEntry3) xmlHashRemoveEntry3 __attribute((alias("xmlHashRemoveEntry3__internal_alias"))); +#else +#ifndef xmlHashRemoveEntry3 +extern __typeof (xmlHashRemoveEntry3) xmlHashRemoveEntry3__internal_alias __attribute((visibility("hidden"))); +#define xmlHashRemoveEntry3 xmlHashRemoveEntry3__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashScan +extern __typeof (xmlHashScan) xmlHashScan __attribute((alias("xmlHashScan__internal_alias"))); +#else +#ifndef xmlHashScan +extern __typeof (xmlHashScan) xmlHashScan__internal_alias __attribute((visibility("hidden"))); +#define xmlHashScan xmlHashScan__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashScan3 +extern __typeof (xmlHashScan3) xmlHashScan3 __attribute((alias("xmlHashScan3__internal_alias"))); +#else +#ifndef xmlHashScan3 +extern __typeof (xmlHashScan3) xmlHashScan3__internal_alias __attribute((visibility("hidden"))); +#define xmlHashScan3 xmlHashScan3__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashScanFull +extern __typeof (xmlHashScanFull) xmlHashScanFull __attribute((alias("xmlHashScanFull__internal_alias"))); +#else +#ifndef xmlHashScanFull +extern __typeof (xmlHashScanFull) xmlHashScanFull__internal_alias __attribute((visibility("hidden"))); +#define xmlHashScanFull xmlHashScanFull__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashScanFull3 +extern __typeof (xmlHashScanFull3) xmlHashScanFull3 __attribute((alias("xmlHashScanFull3__internal_alias"))); +#else +#ifndef xmlHashScanFull3 +extern __typeof (xmlHashScanFull3) xmlHashScanFull3__internal_alias __attribute((visibility("hidden"))); +#define xmlHashScanFull3 xmlHashScanFull3__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashSize +extern __typeof (xmlHashSize) xmlHashSize __attribute((alias("xmlHashSize__internal_alias"))); +#else +#ifndef xmlHashSize +extern __typeof (xmlHashSize) xmlHashSize__internal_alias __attribute((visibility("hidden"))); +#define xmlHashSize xmlHashSize__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashUpdateEntry +extern __typeof (xmlHashUpdateEntry) xmlHashUpdateEntry __attribute((alias("xmlHashUpdateEntry__internal_alias"))); +#else +#ifndef xmlHashUpdateEntry +extern __typeof (xmlHashUpdateEntry) xmlHashUpdateEntry__internal_alias __attribute((visibility("hidden"))); +#define xmlHashUpdateEntry xmlHashUpdateEntry__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashUpdateEntry2 +extern __typeof (xmlHashUpdateEntry2) xmlHashUpdateEntry2 __attribute((alias("xmlHashUpdateEntry2__internal_alias"))); +#else +#ifndef xmlHashUpdateEntry2 +extern __typeof (xmlHashUpdateEntry2) xmlHashUpdateEntry2__internal_alias __attribute((visibility("hidden"))); +#define xmlHashUpdateEntry2 xmlHashUpdateEntry2__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashUpdateEntry3 +extern __typeof (xmlHashUpdateEntry3) xmlHashUpdateEntry3 __attribute((alias("xmlHashUpdateEntry3__internal_alias"))); +#else +#ifndef xmlHashUpdateEntry3 +extern __typeof (xmlHashUpdateEntry3) xmlHashUpdateEntry3__internal_alias __attribute((visibility("hidden"))); +#define xmlHashUpdateEntry3 xmlHashUpdateEntry3__internal_alias +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOFTPClose +extern __typeof (xmlIOFTPClose) xmlIOFTPClose __attribute((alias("xmlIOFTPClose__internal_alias"))); +#else +#ifndef xmlIOFTPClose +extern __typeof (xmlIOFTPClose) xmlIOFTPClose__internal_alias __attribute((visibility("hidden"))); +#define xmlIOFTPClose xmlIOFTPClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOFTPMatch +extern __typeof (xmlIOFTPMatch) xmlIOFTPMatch __attribute((alias("xmlIOFTPMatch__internal_alias"))); +#else +#ifndef xmlIOFTPMatch +extern __typeof (xmlIOFTPMatch) xmlIOFTPMatch__internal_alias __attribute((visibility("hidden"))); +#define xmlIOFTPMatch xmlIOFTPMatch__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOFTPOpen +extern __typeof (xmlIOFTPOpen) xmlIOFTPOpen __attribute((alias("xmlIOFTPOpen__internal_alias"))); +#else +#ifndef xmlIOFTPOpen +extern __typeof (xmlIOFTPOpen) xmlIOFTPOpen__internal_alias __attribute((visibility("hidden"))); +#define xmlIOFTPOpen xmlIOFTPOpen__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOFTPRead +extern __typeof (xmlIOFTPRead) xmlIOFTPRead __attribute((alias("xmlIOFTPRead__internal_alias"))); +#else +#ifndef xmlIOFTPRead +extern __typeof (xmlIOFTPRead) xmlIOFTPRead__internal_alias __attribute((visibility("hidden"))); +#define xmlIOFTPRead xmlIOFTPRead__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOHTTPClose +extern __typeof (xmlIOHTTPClose) xmlIOHTTPClose __attribute((alias("xmlIOHTTPClose__internal_alias"))); +#else +#ifndef xmlIOHTTPClose +extern __typeof (xmlIOHTTPClose) xmlIOHTTPClose__internal_alias __attribute((visibility("hidden"))); +#define xmlIOHTTPClose xmlIOHTTPClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOHTTPMatch +extern __typeof (xmlIOHTTPMatch) xmlIOHTTPMatch __attribute((alias("xmlIOHTTPMatch__internal_alias"))); +#else +#ifndef xmlIOHTTPMatch +extern __typeof (xmlIOHTTPMatch) xmlIOHTTPMatch__internal_alias __attribute((visibility("hidden"))); +#define xmlIOHTTPMatch xmlIOHTTPMatch__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOHTTPOpen +extern __typeof (xmlIOHTTPOpen) xmlIOHTTPOpen __attribute((alias("xmlIOHTTPOpen__internal_alias"))); +#else +#ifndef xmlIOHTTPOpen +extern __typeof (xmlIOHTTPOpen) xmlIOHTTPOpen__internal_alias __attribute((visibility("hidden"))); +#define xmlIOHTTPOpen xmlIOHTTPOpen__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOHTTPOpenW +extern __typeof (xmlIOHTTPOpenW) xmlIOHTTPOpenW __attribute((alias("xmlIOHTTPOpenW__internal_alias"))); +#else +#ifndef xmlIOHTTPOpenW +extern __typeof (xmlIOHTTPOpenW) xmlIOHTTPOpenW__internal_alias __attribute((visibility("hidden"))); +#define xmlIOHTTPOpenW xmlIOHTTPOpenW__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOHTTPRead +extern __typeof (xmlIOHTTPRead) xmlIOHTTPRead __attribute((alias("xmlIOHTTPRead__internal_alias"))); +#else +#ifndef xmlIOHTTPRead +extern __typeof (xmlIOHTTPRead) xmlIOHTTPRead__internal_alias __attribute((visibility("hidden"))); +#define xmlIOHTTPRead xmlIOHTTPRead__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_parser +#undef xmlIOParseDTD +extern __typeof (xmlIOParseDTD) xmlIOParseDTD __attribute((alias("xmlIOParseDTD__internal_alias"))); +#else +#ifndef xmlIOParseDTD +extern __typeof (xmlIOParseDTD) xmlIOParseDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlIOParseDTD xmlIOParseDTD__internal_alias +#endif +#endif +#endif + +#ifdef bottom_encoding +#undef xmlInitCharEncodingHandlers +extern __typeof (xmlInitCharEncodingHandlers) xmlInitCharEncodingHandlers __attribute((alias("xmlInitCharEncodingHandlers__internal_alias"))); +#else +#ifndef xmlInitCharEncodingHandlers +extern __typeof (xmlInitCharEncodingHandlers) xmlInitCharEncodingHandlers__internal_alias __attribute((visibility("hidden"))); +#define xmlInitCharEncodingHandlers xmlInitCharEncodingHandlers__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlInitGlobals +extern __typeof (xmlInitGlobals) xmlInitGlobals __attribute((alias("xmlInitGlobals__internal_alias"))); +#else +#ifndef xmlInitGlobals +extern __typeof (xmlInitGlobals) xmlInitGlobals__internal_alias __attribute((visibility("hidden"))); +#define xmlInitGlobals xmlInitGlobals__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlInitMemory +extern __typeof (xmlInitMemory) xmlInitMemory __attribute((alias("xmlInitMemory__internal_alias"))); +#else +#ifndef xmlInitMemory +extern __typeof (xmlInitMemory) xmlInitMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlInitMemory xmlInitMemory__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlInitNodeInfoSeq +extern __typeof (xmlInitNodeInfoSeq) xmlInitNodeInfoSeq __attribute((alias("xmlInitNodeInfoSeq__internal_alias"))); +#else +#ifndef xmlInitNodeInfoSeq +extern __typeof (xmlInitNodeInfoSeq) xmlInitNodeInfoSeq__internal_alias __attribute((visibility("hidden"))); +#define xmlInitNodeInfoSeq xmlInitNodeInfoSeq__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlInitParser +extern __typeof (xmlInitParser) xmlInitParser __attribute((alias("xmlInitParser__internal_alias"))); +#else +#ifndef xmlInitParser +extern __typeof (xmlInitParser) xmlInitParser__internal_alias __attribute((visibility("hidden"))); +#define xmlInitParser xmlInitParser__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlInitParserCtxt +extern __typeof (xmlInitParserCtxt) xmlInitParserCtxt __attribute((alias("xmlInitParserCtxt__internal_alias"))); +#else +#ifndef xmlInitParserCtxt +extern __typeof (xmlInitParserCtxt) xmlInitParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlInitParserCtxt xmlInitParserCtxt__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlInitThreads +extern __typeof (xmlInitThreads) xmlInitThreads __attribute((alias("xmlInitThreads__internal_alias"))); +#else +#ifndef xmlInitThreads +extern __typeof (xmlInitThreads) xmlInitThreads__internal_alias __attribute((visibility("hidden"))); +#define xmlInitThreads xmlInitThreads__internal_alias +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlInitializeCatalog +extern __typeof (xmlInitializeCatalog) xmlInitializeCatalog __attribute((alias("xmlInitializeCatalog__internal_alias"))); +#else +#ifndef xmlInitializeCatalog +extern __typeof (xmlInitializeCatalog) xmlInitializeCatalog__internal_alias __attribute((visibility("hidden"))); +#define xmlInitializeCatalog xmlInitializeCatalog__internal_alias +#endif +#endif +#endif + +#ifdef bottom_dict +#undef xmlInitializeDict +extern __typeof (xmlInitializeDict) xmlInitializeDict __attribute((alias("xmlInitializeDict__internal_alias"))); +#else +#ifndef xmlInitializeDict +extern __typeof (xmlInitializeDict) xmlInitializeDict__internal_alias __attribute((visibility("hidden"))); +#define xmlInitializeDict xmlInitializeDict__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlInitializeGlobalState +extern __typeof (xmlInitializeGlobalState) xmlInitializeGlobalState __attribute((alias("xmlInitializeGlobalState__internal_alias"))); +#else +#ifndef xmlInitializeGlobalState +extern __typeof (xmlInitializeGlobalState) xmlInitializeGlobalState__internal_alias __attribute((visibility("hidden"))); +#define xmlInitializeGlobalState xmlInitializeGlobalState__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlInitializePredefinedEntities +extern __typeof (xmlInitializePredefinedEntities) xmlInitializePredefinedEntities __attribute((alias("xmlInitializePredefinedEntities__internal_alias"))); +#else +#ifndef xmlInitializePredefinedEntities +extern __typeof (xmlInitializePredefinedEntities) xmlInitializePredefinedEntities__internal_alias __attribute((visibility("hidden"))); +#define xmlInitializePredefinedEntities xmlInitializePredefinedEntities__internal_alias +#endif +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlIsBaseChar +extern __typeof (xmlIsBaseChar) xmlIsBaseChar __attribute((alias("xmlIsBaseChar__internal_alias"))); +#else +#ifndef xmlIsBaseChar +extern __typeof (xmlIsBaseChar) xmlIsBaseChar__internal_alias __attribute((visibility("hidden"))); +#define xmlIsBaseChar xmlIsBaseChar__internal_alias +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlIsBlank +extern __typeof (xmlIsBlank) xmlIsBlank __attribute((alias("xmlIsBlank__internal_alias"))); +#else +#ifndef xmlIsBlank +extern __typeof (xmlIsBlank) xmlIsBlank__internal_alias __attribute((visibility("hidden"))); +#define xmlIsBlank xmlIsBlank__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlIsBlankNode +extern __typeof (xmlIsBlankNode) xmlIsBlankNode __attribute((alias("xmlIsBlankNode__internal_alias"))); +#else +#ifndef xmlIsBlankNode +extern __typeof (xmlIsBlankNode) xmlIsBlankNode__internal_alias __attribute((visibility("hidden"))); +#define xmlIsBlankNode xmlIsBlankNode__internal_alias +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlIsChar +extern __typeof (xmlIsChar) xmlIsChar __attribute((alias("xmlIsChar__internal_alias"))); +#else +#ifndef xmlIsChar +extern __typeof (xmlIsChar) xmlIsChar__internal_alias __attribute((visibility("hidden"))); +#define xmlIsChar xmlIsChar__internal_alias +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlIsCombining +extern __typeof (xmlIsCombining) xmlIsCombining __attribute((alias("xmlIsCombining__internal_alias"))); +#else +#ifndef xmlIsCombining +extern __typeof (xmlIsCombining) xmlIsCombining__internal_alias __attribute((visibility("hidden"))); +#define xmlIsCombining xmlIsCombining__internal_alias +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlIsDigit +extern __typeof (xmlIsDigit) xmlIsDigit __attribute((alias("xmlIsDigit__internal_alias"))); +#else +#ifndef xmlIsDigit +extern __typeof (xmlIsDigit) xmlIsDigit__internal_alias __attribute((visibility("hidden"))); +#define xmlIsDigit xmlIsDigit__internal_alias +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlIsExtender +extern __typeof (xmlIsExtender) xmlIsExtender __attribute((alias("xmlIsExtender__internal_alias"))); +#else +#ifndef xmlIsExtender +extern __typeof (xmlIsExtender) xmlIsExtender__internal_alias __attribute((visibility("hidden"))); +#define xmlIsExtender xmlIsExtender__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlIsID +extern __typeof (xmlIsID) xmlIsID __attribute((alias("xmlIsID__internal_alias"))); +#else +#ifndef xmlIsID +extern __typeof (xmlIsID) xmlIsID__internal_alias __attribute((visibility("hidden"))); +#define xmlIsID xmlIsID__internal_alias +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlIsIdeographic +extern __typeof (xmlIsIdeographic) xmlIsIdeographic __attribute((alias("xmlIsIdeographic__internal_alias"))); +#else +#ifndef xmlIsIdeographic +extern __typeof (xmlIsIdeographic) xmlIsIdeographic__internal_alias __attribute((visibility("hidden"))); +#define xmlIsIdeographic xmlIsIdeographic__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlIsLetter +extern __typeof (xmlIsLetter) xmlIsLetter __attribute((alias("xmlIsLetter__internal_alias"))); +#else +#ifndef xmlIsLetter +extern __typeof (xmlIsLetter) xmlIsLetter__internal_alias __attribute((visibility("hidden"))); +#define xmlIsLetter xmlIsLetter__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlIsMainThread +extern __typeof (xmlIsMainThread) xmlIsMainThread __attribute((alias("xmlIsMainThread__internal_alias"))); +#else +#ifndef xmlIsMainThread +extern __typeof (xmlIsMainThread) xmlIsMainThread__internal_alias __attribute((visibility("hidden"))); +#define xmlIsMainThread xmlIsMainThread__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlIsMixedElement +extern __typeof (xmlIsMixedElement) xmlIsMixedElement __attribute((alias("xmlIsMixedElement__internal_alias"))); +#else +#ifndef xmlIsMixedElement +extern __typeof (xmlIsMixedElement) xmlIsMixedElement__internal_alias __attribute((visibility("hidden"))); +#define xmlIsMixedElement xmlIsMixedElement__internal_alias +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlIsPubidChar +extern __typeof (xmlIsPubidChar) xmlIsPubidChar __attribute((alias("xmlIsPubidChar__internal_alias"))); +#else +#ifndef xmlIsPubidChar +extern __typeof (xmlIsPubidChar) xmlIsPubidChar__internal_alias __attribute((visibility("hidden"))); +#define xmlIsPubidChar xmlIsPubidChar__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlIsRef +extern __typeof (xmlIsRef) xmlIsRef __attribute((alias("xmlIsRef__internal_alias"))); +#else +#ifndef xmlIsRef +extern __typeof (xmlIsRef) xmlIsRef__internal_alias __attribute((visibility("hidden"))); +#define xmlIsRef xmlIsRef__internal_alias +#endif +#endif + +#ifdef bottom_xmlsave +#undef xmlIsXHTML +extern __typeof (xmlIsXHTML) xmlIsXHTML __attribute((alias("xmlIsXHTML__internal_alias"))); +#else +#ifndef xmlIsXHTML +extern __typeof (xmlIsXHTML) xmlIsXHTML__internal_alias __attribute((visibility("hidden"))); +#define xmlIsXHTML xmlIsXHTML__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlKeepBlanksDefault +extern __typeof (xmlKeepBlanksDefault) xmlKeepBlanksDefault __attribute((alias("xmlKeepBlanksDefault__internal_alias"))); +#else +#ifndef xmlKeepBlanksDefault +extern __typeof (xmlKeepBlanksDefault) xmlKeepBlanksDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlKeepBlanksDefault xmlKeepBlanksDefault__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlLastElementChild +extern __typeof (xmlLastElementChild) xmlLastElementChild __attribute((alias("xmlLastElementChild__internal_alias"))); +#else +#ifndef xmlLastElementChild +extern __typeof (xmlLastElementChild) xmlLastElementChild__internal_alias __attribute((visibility("hidden"))); +#define xmlLastElementChild xmlLastElementChild__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlLineNumbersDefault +extern __typeof (xmlLineNumbersDefault) xmlLineNumbersDefault __attribute((alias("xmlLineNumbersDefault__internal_alias"))); +#else +#ifndef xmlLineNumbersDefault +extern __typeof (xmlLineNumbersDefault) xmlLineNumbersDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlLineNumbersDefault xmlLineNumbersDefault__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlLinkGetData +extern __typeof (xmlLinkGetData) xmlLinkGetData __attribute((alias("xmlLinkGetData__internal_alias"))); +#else +#ifndef xmlLinkGetData +extern __typeof (xmlLinkGetData) xmlLinkGetData__internal_alias __attribute((visibility("hidden"))); +#define xmlLinkGetData xmlLinkGetData__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListAppend +extern __typeof (xmlListAppend) xmlListAppend __attribute((alias("xmlListAppend__internal_alias"))); +#else +#ifndef xmlListAppend +extern __typeof (xmlListAppend) xmlListAppend__internal_alias __attribute((visibility("hidden"))); +#define xmlListAppend xmlListAppend__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListClear +extern __typeof (xmlListClear) xmlListClear __attribute((alias("xmlListClear__internal_alias"))); +#else +#ifndef xmlListClear +extern __typeof (xmlListClear) xmlListClear__internal_alias __attribute((visibility("hidden"))); +#define xmlListClear xmlListClear__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListCopy +extern __typeof (xmlListCopy) xmlListCopy __attribute((alias("xmlListCopy__internal_alias"))); +#else +#ifndef xmlListCopy +extern __typeof (xmlListCopy) xmlListCopy__internal_alias __attribute((visibility("hidden"))); +#define xmlListCopy xmlListCopy__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListCreate +extern __typeof (xmlListCreate) xmlListCreate __attribute((alias("xmlListCreate__internal_alias"))); +#else +#ifndef xmlListCreate +extern __typeof (xmlListCreate) xmlListCreate__internal_alias __attribute((visibility("hidden"))); +#define xmlListCreate xmlListCreate__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListDelete +extern __typeof (xmlListDelete) xmlListDelete __attribute((alias("xmlListDelete__internal_alias"))); +#else +#ifndef xmlListDelete +extern __typeof (xmlListDelete) xmlListDelete__internal_alias __attribute((visibility("hidden"))); +#define xmlListDelete xmlListDelete__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListDup +extern __typeof (xmlListDup) xmlListDup __attribute((alias("xmlListDup__internal_alias"))); +#else +#ifndef xmlListDup +extern __typeof (xmlListDup) xmlListDup__internal_alias __attribute((visibility("hidden"))); +#define xmlListDup xmlListDup__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListEmpty +extern __typeof (xmlListEmpty) xmlListEmpty __attribute((alias("xmlListEmpty__internal_alias"))); +#else +#ifndef xmlListEmpty +extern __typeof (xmlListEmpty) xmlListEmpty__internal_alias __attribute((visibility("hidden"))); +#define xmlListEmpty xmlListEmpty__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListEnd +extern __typeof (xmlListEnd) xmlListEnd __attribute((alias("xmlListEnd__internal_alias"))); +#else +#ifndef xmlListEnd +extern __typeof (xmlListEnd) xmlListEnd__internal_alias __attribute((visibility("hidden"))); +#define xmlListEnd xmlListEnd__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListFront +extern __typeof (xmlListFront) xmlListFront __attribute((alias("xmlListFront__internal_alias"))); +#else +#ifndef xmlListFront +extern __typeof (xmlListFront) xmlListFront__internal_alias __attribute((visibility("hidden"))); +#define xmlListFront xmlListFront__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListInsert +extern __typeof (xmlListInsert) xmlListInsert __attribute((alias("xmlListInsert__internal_alias"))); +#else +#ifndef xmlListInsert +extern __typeof (xmlListInsert) xmlListInsert__internal_alias __attribute((visibility("hidden"))); +#define xmlListInsert xmlListInsert__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListMerge +extern __typeof (xmlListMerge) xmlListMerge __attribute((alias("xmlListMerge__internal_alias"))); +#else +#ifndef xmlListMerge +extern __typeof (xmlListMerge) xmlListMerge__internal_alias __attribute((visibility("hidden"))); +#define xmlListMerge xmlListMerge__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListPopBack +extern __typeof (xmlListPopBack) xmlListPopBack __attribute((alias("xmlListPopBack__internal_alias"))); +#else +#ifndef xmlListPopBack +extern __typeof (xmlListPopBack) xmlListPopBack__internal_alias __attribute((visibility("hidden"))); +#define xmlListPopBack xmlListPopBack__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListPopFront +extern __typeof (xmlListPopFront) xmlListPopFront __attribute((alias("xmlListPopFront__internal_alias"))); +#else +#ifndef xmlListPopFront +extern __typeof (xmlListPopFront) xmlListPopFront__internal_alias __attribute((visibility("hidden"))); +#define xmlListPopFront xmlListPopFront__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListPushBack +extern __typeof (xmlListPushBack) xmlListPushBack __attribute((alias("xmlListPushBack__internal_alias"))); +#else +#ifndef xmlListPushBack +extern __typeof (xmlListPushBack) xmlListPushBack__internal_alias __attribute((visibility("hidden"))); +#define xmlListPushBack xmlListPushBack__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListPushFront +extern __typeof (xmlListPushFront) xmlListPushFront __attribute((alias("xmlListPushFront__internal_alias"))); +#else +#ifndef xmlListPushFront +extern __typeof (xmlListPushFront) xmlListPushFront__internal_alias __attribute((visibility("hidden"))); +#define xmlListPushFront xmlListPushFront__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListRemoveAll +extern __typeof (xmlListRemoveAll) xmlListRemoveAll __attribute((alias("xmlListRemoveAll__internal_alias"))); +#else +#ifndef xmlListRemoveAll +extern __typeof (xmlListRemoveAll) xmlListRemoveAll__internal_alias __attribute((visibility("hidden"))); +#define xmlListRemoveAll xmlListRemoveAll__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListRemoveFirst +extern __typeof (xmlListRemoveFirst) xmlListRemoveFirst __attribute((alias("xmlListRemoveFirst__internal_alias"))); +#else +#ifndef xmlListRemoveFirst +extern __typeof (xmlListRemoveFirst) xmlListRemoveFirst__internal_alias __attribute((visibility("hidden"))); +#define xmlListRemoveFirst xmlListRemoveFirst__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListRemoveLast +extern __typeof (xmlListRemoveLast) xmlListRemoveLast __attribute((alias("xmlListRemoveLast__internal_alias"))); +#else +#ifndef xmlListRemoveLast +extern __typeof (xmlListRemoveLast) xmlListRemoveLast__internal_alias __attribute((visibility("hidden"))); +#define xmlListRemoveLast xmlListRemoveLast__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListReverse +extern __typeof (xmlListReverse) xmlListReverse __attribute((alias("xmlListReverse__internal_alias"))); +#else +#ifndef xmlListReverse +extern __typeof (xmlListReverse) xmlListReverse__internal_alias __attribute((visibility("hidden"))); +#define xmlListReverse xmlListReverse__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListReverseSearch +extern __typeof (xmlListReverseSearch) xmlListReverseSearch __attribute((alias("xmlListReverseSearch__internal_alias"))); +#else +#ifndef xmlListReverseSearch +extern __typeof (xmlListReverseSearch) xmlListReverseSearch__internal_alias __attribute((visibility("hidden"))); +#define xmlListReverseSearch xmlListReverseSearch__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListReverseWalk +extern __typeof (xmlListReverseWalk) xmlListReverseWalk __attribute((alias("xmlListReverseWalk__internal_alias"))); +#else +#ifndef xmlListReverseWalk +extern __typeof (xmlListReverseWalk) xmlListReverseWalk__internal_alias __attribute((visibility("hidden"))); +#define xmlListReverseWalk xmlListReverseWalk__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListSearch +extern __typeof (xmlListSearch) xmlListSearch __attribute((alias("xmlListSearch__internal_alias"))); +#else +#ifndef xmlListSearch +extern __typeof (xmlListSearch) xmlListSearch__internal_alias __attribute((visibility("hidden"))); +#define xmlListSearch xmlListSearch__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListSize +extern __typeof (xmlListSize) xmlListSize __attribute((alias("xmlListSize__internal_alias"))); +#else +#ifndef xmlListSize +extern __typeof (xmlListSize) xmlListSize__internal_alias __attribute((visibility("hidden"))); +#define xmlListSize xmlListSize__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListSort +extern __typeof (xmlListSort) xmlListSort __attribute((alias("xmlListSort__internal_alias"))); +#else +#ifndef xmlListSort +extern __typeof (xmlListSort) xmlListSort__internal_alias __attribute((visibility("hidden"))); +#define xmlListSort xmlListSort__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListWalk +extern __typeof (xmlListWalk) xmlListWalk __attribute((alias("xmlListWalk__internal_alias"))); +#else +#ifndef xmlListWalk +extern __typeof (xmlListWalk) xmlListWalk__internal_alias __attribute((visibility("hidden"))); +#define xmlListWalk xmlListWalk__internal_alias +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlLoadACatalog +extern __typeof (xmlLoadACatalog) xmlLoadACatalog __attribute((alias("xmlLoadACatalog__internal_alias"))); +#else +#ifndef xmlLoadACatalog +extern __typeof (xmlLoadACatalog) xmlLoadACatalog__internal_alias __attribute((visibility("hidden"))); +#define xmlLoadACatalog xmlLoadACatalog__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlLoadCatalog +extern __typeof (xmlLoadCatalog) xmlLoadCatalog __attribute((alias("xmlLoadCatalog__internal_alias"))); +#else +#ifndef xmlLoadCatalog +extern __typeof (xmlLoadCatalog) xmlLoadCatalog__internal_alias __attribute((visibility("hidden"))); +#define xmlLoadCatalog xmlLoadCatalog__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlLoadCatalogs +extern __typeof (xmlLoadCatalogs) xmlLoadCatalogs __attribute((alias("xmlLoadCatalogs__internal_alias"))); +#else +#ifndef xmlLoadCatalogs +extern __typeof (xmlLoadCatalogs) xmlLoadCatalogs__internal_alias __attribute((visibility("hidden"))); +#define xmlLoadCatalogs xmlLoadCatalogs__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlLoadExternalEntity +extern __typeof (xmlLoadExternalEntity) xmlLoadExternalEntity __attribute((alias("xmlLoadExternalEntity__internal_alias"))); +#else +#ifndef xmlLoadExternalEntity +extern __typeof (xmlLoadExternalEntity) xmlLoadExternalEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlLoadExternalEntity xmlLoadExternalEntity__internal_alias +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlLoadSGMLSuperCatalog +extern __typeof (xmlLoadSGMLSuperCatalog) xmlLoadSGMLSuperCatalog __attribute((alias("xmlLoadSGMLSuperCatalog__internal_alias"))); +#else +#ifndef xmlLoadSGMLSuperCatalog +extern __typeof (xmlLoadSGMLSuperCatalog) xmlLoadSGMLSuperCatalog__internal_alias __attribute((visibility("hidden"))); +#define xmlLoadSGMLSuperCatalog xmlLoadSGMLSuperCatalog__internal_alias +#endif +#endif +#endif + +#ifdef bottom_threads +#undef xmlLockLibrary +extern __typeof (xmlLockLibrary) xmlLockLibrary __attribute((alias("xmlLockLibrary__internal_alias"))); +#else +#ifndef xmlLockLibrary +extern __typeof (xmlLockLibrary) xmlLockLibrary__internal_alias __attribute((visibility("hidden"))); +#define xmlLockLibrary xmlLockLibrary__internal_alias +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlLsCountNode +extern __typeof (xmlLsCountNode) xmlLsCountNode __attribute((alias("xmlLsCountNode__internal_alias"))); +#else +#ifndef xmlLsCountNode +extern __typeof (xmlLsCountNode) xmlLsCountNode__internal_alias __attribute((visibility("hidden"))); +#define xmlLsCountNode xmlLsCountNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlLsOneNode +extern __typeof (xmlLsOneNode) xmlLsOneNode __attribute((alias("xmlLsOneNode__internal_alias"))); +#else +#ifndef xmlLsOneNode +extern __typeof (xmlLsOneNode) xmlLsOneNode__internal_alias __attribute((visibility("hidden"))); +#define xmlLsOneNode xmlLsOneNode__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMallocAtomicLoc +extern __typeof (xmlMallocAtomicLoc) xmlMallocAtomicLoc __attribute((alias("xmlMallocAtomicLoc__internal_alias"))); +#else +#ifndef xmlMallocAtomicLoc +extern __typeof (xmlMallocAtomicLoc) xmlMallocAtomicLoc__internal_alias __attribute((visibility("hidden"))); +#define xmlMallocAtomicLoc xmlMallocAtomicLoc__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMallocLoc +extern __typeof (xmlMallocLoc) xmlMallocLoc __attribute((alias("xmlMallocLoc__internal_alias"))); +#else +#ifndef xmlMallocLoc +extern __typeof (xmlMallocLoc) xmlMallocLoc__internal_alias __attribute((visibility("hidden"))); +#define xmlMallocLoc xmlMallocLoc__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemBlocks +extern __typeof (xmlMemBlocks) xmlMemBlocks __attribute((alias("xmlMemBlocks__internal_alias"))); +#else +#ifndef xmlMemBlocks +extern __typeof (xmlMemBlocks) xmlMemBlocks__internal_alias __attribute((visibility("hidden"))); +#define xmlMemBlocks xmlMemBlocks__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemDisplay +extern __typeof (xmlMemDisplay) xmlMemDisplay __attribute((alias("xmlMemDisplay__internal_alias"))); +#else +#ifndef xmlMemDisplay +extern __typeof (xmlMemDisplay) xmlMemDisplay__internal_alias __attribute((visibility("hidden"))); +#define xmlMemDisplay xmlMemDisplay__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemDisplayLast +extern __typeof (xmlMemDisplayLast) xmlMemDisplayLast __attribute((alias("xmlMemDisplayLast__internal_alias"))); +#else +#ifndef xmlMemDisplayLast +extern __typeof (xmlMemDisplayLast) xmlMemDisplayLast__internal_alias __attribute((visibility("hidden"))); +#define xmlMemDisplayLast xmlMemDisplayLast__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemFree +extern __typeof (xmlMemFree) xmlMemFree __attribute((alias("xmlMemFree__internal_alias"))); +#else +#ifndef xmlMemFree +extern __typeof (xmlMemFree) xmlMemFree__internal_alias __attribute((visibility("hidden"))); +#define xmlMemFree xmlMemFree__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemGet +extern __typeof (xmlMemGet) xmlMemGet __attribute((alias("xmlMemGet__internal_alias"))); +#else +#ifndef xmlMemGet +extern __typeof (xmlMemGet) xmlMemGet__internal_alias __attribute((visibility("hidden"))); +#define xmlMemGet xmlMemGet__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemMalloc +extern __typeof (xmlMemMalloc) xmlMemMalloc __attribute((alias("xmlMemMalloc__internal_alias"))); +#else +#ifndef xmlMemMalloc +extern __typeof (xmlMemMalloc) xmlMemMalloc__internal_alias __attribute((visibility("hidden"))); +#define xmlMemMalloc xmlMemMalloc__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemRealloc +extern __typeof (xmlMemRealloc) xmlMemRealloc __attribute((alias("xmlMemRealloc__internal_alias"))); +#else +#ifndef xmlMemRealloc +extern __typeof (xmlMemRealloc) xmlMemRealloc__internal_alias __attribute((visibility("hidden"))); +#define xmlMemRealloc xmlMemRealloc__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemSetup +extern __typeof (xmlMemSetup) xmlMemSetup __attribute((alias("xmlMemSetup__internal_alias"))); +#else +#ifndef xmlMemSetup +extern __typeof (xmlMemSetup) xmlMemSetup__internal_alias __attribute((visibility("hidden"))); +#define xmlMemSetup xmlMemSetup__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemShow +extern __typeof (xmlMemShow) xmlMemShow __attribute((alias("xmlMemShow__internal_alias"))); +#else +#ifndef xmlMemShow +extern __typeof (xmlMemShow) xmlMemShow__internal_alias __attribute((visibility("hidden"))); +#define xmlMemShow xmlMemShow__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemStrdupLoc +extern __typeof (xmlMemStrdupLoc) xmlMemStrdupLoc __attribute((alias("xmlMemStrdupLoc__internal_alias"))); +#else +#ifndef xmlMemStrdupLoc +extern __typeof (xmlMemStrdupLoc) xmlMemStrdupLoc__internal_alias __attribute((visibility("hidden"))); +#define xmlMemStrdupLoc xmlMemStrdupLoc__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemUsed +extern __typeof (xmlMemUsed) xmlMemUsed __attribute((alias("xmlMemUsed__internal_alias"))); +#else +#ifndef xmlMemUsed +extern __typeof (xmlMemUsed) xmlMemUsed__internal_alias __attribute((visibility("hidden"))); +#define xmlMemUsed xmlMemUsed__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemoryDump +extern __typeof (xmlMemoryDump) xmlMemoryDump __attribute((alias("xmlMemoryDump__internal_alias"))); +#else +#ifndef xmlMemoryDump +extern __typeof (xmlMemoryDump) xmlMemoryDump__internal_alias __attribute((visibility("hidden"))); +#define xmlMemoryDump xmlMemoryDump__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemoryStrdup +extern __typeof (xmlMemoryStrdup) xmlMemoryStrdup __attribute((alias("xmlMemoryStrdup__internal_alias"))); +#else +#ifndef xmlMemoryStrdup +extern __typeof (xmlMemoryStrdup) xmlMemoryStrdup__internal_alias __attribute((visibility("hidden"))); +#define xmlMemoryStrdup xmlMemoryStrdup__internal_alias +#endif +#endif + +#if defined(LIBXML_MODULES_ENABLED) +#ifdef bottom_xmlmodule +#undef xmlModuleClose +extern __typeof (xmlModuleClose) xmlModuleClose __attribute((alias("xmlModuleClose__internal_alias"))); +#else +#ifndef xmlModuleClose +extern __typeof (xmlModuleClose) xmlModuleClose__internal_alias __attribute((visibility("hidden"))); +#define xmlModuleClose xmlModuleClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_MODULES_ENABLED) +#ifdef bottom_xmlmodule +#undef xmlModuleFree +extern __typeof (xmlModuleFree) xmlModuleFree __attribute((alias("xmlModuleFree__internal_alias"))); +#else +#ifndef xmlModuleFree +extern __typeof (xmlModuleFree) xmlModuleFree__internal_alias __attribute((visibility("hidden"))); +#define xmlModuleFree xmlModuleFree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_MODULES_ENABLED) +#ifdef bottom_xmlmodule +#undef xmlModuleOpen +extern __typeof (xmlModuleOpen) xmlModuleOpen __attribute((alias("xmlModuleOpen__internal_alias"))); +#else +#ifndef xmlModuleOpen +extern __typeof (xmlModuleOpen) xmlModuleOpen__internal_alias __attribute((visibility("hidden"))); +#define xmlModuleOpen xmlModuleOpen__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_MODULES_ENABLED) +#ifdef bottom_xmlmodule +#undef xmlModuleSymbol +extern __typeof (xmlModuleSymbol) xmlModuleSymbol __attribute((alias("xmlModuleSymbol__internal_alias"))); +#else +#ifndef xmlModuleSymbol +extern __typeof (xmlModuleSymbol) xmlModuleSymbol__internal_alias __attribute((visibility("hidden"))); +#define xmlModuleSymbol xmlModuleSymbol__internal_alias +#endif +#endif +#endif + +#ifdef bottom_threads +#undef xmlMutexLock +extern __typeof (xmlMutexLock) xmlMutexLock __attribute((alias("xmlMutexLock__internal_alias"))); +#else +#ifndef xmlMutexLock +extern __typeof (xmlMutexLock) xmlMutexLock__internal_alias __attribute((visibility("hidden"))); +#define xmlMutexLock xmlMutexLock__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlMutexUnlock +extern __typeof (xmlMutexUnlock) xmlMutexUnlock __attribute((alias("xmlMutexUnlock__internal_alias"))); +#else +#ifndef xmlMutexUnlock +extern __typeof (xmlMutexUnlock) xmlMutexUnlock__internal_alias __attribute((visibility("hidden"))); +#define xmlMutexUnlock xmlMutexUnlock__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlNamespaceParseNCName +extern __typeof (xmlNamespaceParseNCName) xmlNamespaceParseNCName __attribute((alias("xmlNamespaceParseNCName__internal_alias"))); +#else +#ifndef xmlNamespaceParseNCName +extern __typeof (xmlNamespaceParseNCName) xmlNamespaceParseNCName__internal_alias __attribute((visibility("hidden"))); +#define xmlNamespaceParseNCName xmlNamespaceParseNCName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlNamespaceParseNSDef +extern __typeof (xmlNamespaceParseNSDef) xmlNamespaceParseNSDef __attribute((alias("xmlNamespaceParseNSDef__internal_alias"))); +#else +#ifndef xmlNamespaceParseNSDef +extern __typeof (xmlNamespaceParseNSDef) xmlNamespaceParseNSDef__internal_alias __attribute((visibility("hidden"))); +#define xmlNamespaceParseNSDef xmlNamespaceParseNSDef__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlNamespaceParseQName +extern __typeof (xmlNamespaceParseQName) xmlNamespaceParseQName __attribute((alias("xmlNamespaceParseQName__internal_alias"))); +#else +#ifndef xmlNamespaceParseQName +extern __typeof (xmlNamespaceParseQName) xmlNamespaceParseQName__internal_alias __attribute((visibility("hidden"))); +#define xmlNamespaceParseQName xmlNamespaceParseQName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPCheckResponse +extern __typeof (xmlNanoFTPCheckResponse) xmlNanoFTPCheckResponse __attribute((alias("xmlNanoFTPCheckResponse__internal_alias"))); +#else +#ifndef xmlNanoFTPCheckResponse +extern __typeof (xmlNanoFTPCheckResponse) xmlNanoFTPCheckResponse__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPCheckResponse xmlNanoFTPCheckResponse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPCleanup +extern __typeof (xmlNanoFTPCleanup) xmlNanoFTPCleanup __attribute((alias("xmlNanoFTPCleanup__internal_alias"))); +#else +#ifndef xmlNanoFTPCleanup +extern __typeof (xmlNanoFTPCleanup) xmlNanoFTPCleanup__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPCleanup xmlNanoFTPCleanup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPClose +extern __typeof (xmlNanoFTPClose) xmlNanoFTPClose __attribute((alias("xmlNanoFTPClose__internal_alias"))); +#else +#ifndef xmlNanoFTPClose +extern __typeof (xmlNanoFTPClose) xmlNanoFTPClose__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPClose xmlNanoFTPClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPCloseConnection +extern __typeof (xmlNanoFTPCloseConnection) xmlNanoFTPCloseConnection __attribute((alias("xmlNanoFTPCloseConnection__internal_alias"))); +#else +#ifndef xmlNanoFTPCloseConnection +extern __typeof (xmlNanoFTPCloseConnection) xmlNanoFTPCloseConnection__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPCloseConnection xmlNanoFTPCloseConnection__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPConnect +extern __typeof (xmlNanoFTPConnect) xmlNanoFTPConnect __attribute((alias("xmlNanoFTPConnect__internal_alias"))); +#else +#ifndef xmlNanoFTPConnect +extern __typeof (xmlNanoFTPConnect) xmlNanoFTPConnect__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPConnect xmlNanoFTPConnect__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPConnectTo +extern __typeof (xmlNanoFTPConnectTo) xmlNanoFTPConnectTo __attribute((alias("xmlNanoFTPConnectTo__internal_alias"))); +#else +#ifndef xmlNanoFTPConnectTo +extern __typeof (xmlNanoFTPConnectTo) xmlNanoFTPConnectTo__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPConnectTo xmlNanoFTPConnectTo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPCwd +extern __typeof (xmlNanoFTPCwd) xmlNanoFTPCwd __attribute((alias("xmlNanoFTPCwd__internal_alias"))); +#else +#ifndef xmlNanoFTPCwd +extern __typeof (xmlNanoFTPCwd) xmlNanoFTPCwd__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPCwd xmlNanoFTPCwd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPDele +extern __typeof (xmlNanoFTPDele) xmlNanoFTPDele __attribute((alias("xmlNanoFTPDele__internal_alias"))); +#else +#ifndef xmlNanoFTPDele +extern __typeof (xmlNanoFTPDele) xmlNanoFTPDele__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPDele xmlNanoFTPDele__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPFreeCtxt +extern __typeof (xmlNanoFTPFreeCtxt) xmlNanoFTPFreeCtxt __attribute((alias("xmlNanoFTPFreeCtxt__internal_alias"))); +#else +#ifndef xmlNanoFTPFreeCtxt +extern __typeof (xmlNanoFTPFreeCtxt) xmlNanoFTPFreeCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPFreeCtxt xmlNanoFTPFreeCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPGet +extern __typeof (xmlNanoFTPGet) xmlNanoFTPGet __attribute((alias("xmlNanoFTPGet__internal_alias"))); +#else +#ifndef xmlNanoFTPGet +extern __typeof (xmlNanoFTPGet) xmlNanoFTPGet__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPGet xmlNanoFTPGet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPGetConnection +extern __typeof (xmlNanoFTPGetConnection) xmlNanoFTPGetConnection __attribute((alias("xmlNanoFTPGetConnection__internal_alias"))); +#else +#ifndef xmlNanoFTPGetConnection +extern __typeof (xmlNanoFTPGetConnection) xmlNanoFTPGetConnection__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPGetConnection xmlNanoFTPGetConnection__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPGetResponse +extern __typeof (xmlNanoFTPGetResponse) xmlNanoFTPGetResponse __attribute((alias("xmlNanoFTPGetResponse__internal_alias"))); +#else +#ifndef xmlNanoFTPGetResponse +extern __typeof (xmlNanoFTPGetResponse) xmlNanoFTPGetResponse__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPGetResponse xmlNanoFTPGetResponse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPGetSocket +extern __typeof (xmlNanoFTPGetSocket) xmlNanoFTPGetSocket __attribute((alias("xmlNanoFTPGetSocket__internal_alias"))); +#else +#ifndef xmlNanoFTPGetSocket +extern __typeof (xmlNanoFTPGetSocket) xmlNanoFTPGetSocket__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPGetSocket xmlNanoFTPGetSocket__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPInit +extern __typeof (xmlNanoFTPInit) xmlNanoFTPInit __attribute((alias("xmlNanoFTPInit__internal_alias"))); +#else +#ifndef xmlNanoFTPInit +extern __typeof (xmlNanoFTPInit) xmlNanoFTPInit__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPInit xmlNanoFTPInit__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPList +extern __typeof (xmlNanoFTPList) xmlNanoFTPList __attribute((alias("xmlNanoFTPList__internal_alias"))); +#else +#ifndef xmlNanoFTPList +extern __typeof (xmlNanoFTPList) xmlNanoFTPList__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPList xmlNanoFTPList__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPNewCtxt +extern __typeof (xmlNanoFTPNewCtxt) xmlNanoFTPNewCtxt __attribute((alias("xmlNanoFTPNewCtxt__internal_alias"))); +#else +#ifndef xmlNanoFTPNewCtxt +extern __typeof (xmlNanoFTPNewCtxt) xmlNanoFTPNewCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPNewCtxt xmlNanoFTPNewCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPOpen +extern __typeof (xmlNanoFTPOpen) xmlNanoFTPOpen __attribute((alias("xmlNanoFTPOpen__internal_alias"))); +#else +#ifndef xmlNanoFTPOpen +extern __typeof (xmlNanoFTPOpen) xmlNanoFTPOpen__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPOpen xmlNanoFTPOpen__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPProxy +extern __typeof (xmlNanoFTPProxy) xmlNanoFTPProxy __attribute((alias("xmlNanoFTPProxy__internal_alias"))); +#else +#ifndef xmlNanoFTPProxy +extern __typeof (xmlNanoFTPProxy) xmlNanoFTPProxy__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPProxy xmlNanoFTPProxy__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPQuit +extern __typeof (xmlNanoFTPQuit) xmlNanoFTPQuit __attribute((alias("xmlNanoFTPQuit__internal_alias"))); +#else +#ifndef xmlNanoFTPQuit +extern __typeof (xmlNanoFTPQuit) xmlNanoFTPQuit__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPQuit xmlNanoFTPQuit__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPRead +extern __typeof (xmlNanoFTPRead) xmlNanoFTPRead __attribute((alias("xmlNanoFTPRead__internal_alias"))); +#else +#ifndef xmlNanoFTPRead +extern __typeof (xmlNanoFTPRead) xmlNanoFTPRead__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPRead xmlNanoFTPRead__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPScanProxy +extern __typeof (xmlNanoFTPScanProxy) xmlNanoFTPScanProxy __attribute((alias("xmlNanoFTPScanProxy__internal_alias"))); +#else +#ifndef xmlNanoFTPScanProxy +extern __typeof (xmlNanoFTPScanProxy) xmlNanoFTPScanProxy__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPScanProxy xmlNanoFTPScanProxy__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPUpdateURL +extern __typeof (xmlNanoFTPUpdateURL) xmlNanoFTPUpdateURL __attribute((alias("xmlNanoFTPUpdateURL__internal_alias"))); +#else +#ifndef xmlNanoFTPUpdateURL +extern __typeof (xmlNanoFTPUpdateURL) xmlNanoFTPUpdateURL__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPUpdateURL xmlNanoFTPUpdateURL__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPAuthHeader +extern __typeof (xmlNanoHTTPAuthHeader) xmlNanoHTTPAuthHeader __attribute((alias("xmlNanoHTTPAuthHeader__internal_alias"))); +#else +#ifndef xmlNanoHTTPAuthHeader +extern __typeof (xmlNanoHTTPAuthHeader) xmlNanoHTTPAuthHeader__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPAuthHeader xmlNanoHTTPAuthHeader__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPCleanup +extern __typeof (xmlNanoHTTPCleanup) xmlNanoHTTPCleanup __attribute((alias("xmlNanoHTTPCleanup__internal_alias"))); +#else +#ifndef xmlNanoHTTPCleanup +extern __typeof (xmlNanoHTTPCleanup) xmlNanoHTTPCleanup__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPCleanup xmlNanoHTTPCleanup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPClose +extern __typeof (xmlNanoHTTPClose) xmlNanoHTTPClose __attribute((alias("xmlNanoHTTPClose__internal_alias"))); +#else +#ifndef xmlNanoHTTPClose +extern __typeof (xmlNanoHTTPClose) xmlNanoHTTPClose__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPClose xmlNanoHTTPClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPContentLength +extern __typeof (xmlNanoHTTPContentLength) xmlNanoHTTPContentLength __attribute((alias("xmlNanoHTTPContentLength__internal_alias"))); +#else +#ifndef xmlNanoHTTPContentLength +extern __typeof (xmlNanoHTTPContentLength) xmlNanoHTTPContentLength__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPContentLength xmlNanoHTTPContentLength__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPEncoding +extern __typeof (xmlNanoHTTPEncoding) xmlNanoHTTPEncoding __attribute((alias("xmlNanoHTTPEncoding__internal_alias"))); +#else +#ifndef xmlNanoHTTPEncoding +extern __typeof (xmlNanoHTTPEncoding) xmlNanoHTTPEncoding__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPEncoding xmlNanoHTTPEncoding__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPFetch +extern __typeof (xmlNanoHTTPFetch) xmlNanoHTTPFetch __attribute((alias("xmlNanoHTTPFetch__internal_alias"))); +#else +#ifndef xmlNanoHTTPFetch +extern __typeof (xmlNanoHTTPFetch) xmlNanoHTTPFetch__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPFetch xmlNanoHTTPFetch__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPInit +extern __typeof (xmlNanoHTTPInit) xmlNanoHTTPInit __attribute((alias("xmlNanoHTTPInit__internal_alias"))); +#else +#ifndef xmlNanoHTTPInit +extern __typeof (xmlNanoHTTPInit) xmlNanoHTTPInit__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPInit xmlNanoHTTPInit__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPMethod +extern __typeof (xmlNanoHTTPMethod) xmlNanoHTTPMethod __attribute((alias("xmlNanoHTTPMethod__internal_alias"))); +#else +#ifndef xmlNanoHTTPMethod +extern __typeof (xmlNanoHTTPMethod) xmlNanoHTTPMethod__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPMethod xmlNanoHTTPMethod__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPMethodRedir +extern __typeof (xmlNanoHTTPMethodRedir) xmlNanoHTTPMethodRedir __attribute((alias("xmlNanoHTTPMethodRedir__internal_alias"))); +#else +#ifndef xmlNanoHTTPMethodRedir +extern __typeof (xmlNanoHTTPMethodRedir) xmlNanoHTTPMethodRedir__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPMethodRedir xmlNanoHTTPMethodRedir__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPMimeType +extern __typeof (xmlNanoHTTPMimeType) xmlNanoHTTPMimeType __attribute((alias("xmlNanoHTTPMimeType__internal_alias"))); +#else +#ifndef xmlNanoHTTPMimeType +extern __typeof (xmlNanoHTTPMimeType) xmlNanoHTTPMimeType__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPMimeType xmlNanoHTTPMimeType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPOpen +extern __typeof (xmlNanoHTTPOpen) xmlNanoHTTPOpen __attribute((alias("xmlNanoHTTPOpen__internal_alias"))); +#else +#ifndef xmlNanoHTTPOpen +extern __typeof (xmlNanoHTTPOpen) xmlNanoHTTPOpen__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPOpen xmlNanoHTTPOpen__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPOpenRedir +extern __typeof (xmlNanoHTTPOpenRedir) xmlNanoHTTPOpenRedir __attribute((alias("xmlNanoHTTPOpenRedir__internal_alias"))); +#else +#ifndef xmlNanoHTTPOpenRedir +extern __typeof (xmlNanoHTTPOpenRedir) xmlNanoHTTPOpenRedir__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPOpenRedir xmlNanoHTTPOpenRedir__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPRead +extern __typeof (xmlNanoHTTPRead) xmlNanoHTTPRead __attribute((alias("xmlNanoHTTPRead__internal_alias"))); +#else +#ifndef xmlNanoHTTPRead +extern __typeof (xmlNanoHTTPRead) xmlNanoHTTPRead__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPRead xmlNanoHTTPRead__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPRedir +extern __typeof (xmlNanoHTTPRedir) xmlNanoHTTPRedir __attribute((alias("xmlNanoHTTPRedir__internal_alias"))); +#else +#ifndef xmlNanoHTTPRedir +extern __typeof (xmlNanoHTTPRedir) xmlNanoHTTPRedir__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPRedir xmlNanoHTTPRedir__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPReturnCode +extern __typeof (xmlNanoHTTPReturnCode) xmlNanoHTTPReturnCode __attribute((alias("xmlNanoHTTPReturnCode__internal_alias"))); +#else +#ifndef xmlNanoHTTPReturnCode +extern __typeof (xmlNanoHTTPReturnCode) xmlNanoHTTPReturnCode__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPReturnCode xmlNanoHTTPReturnCode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPSave +extern __typeof (xmlNanoHTTPSave) xmlNanoHTTPSave __attribute((alias("xmlNanoHTTPSave__internal_alias"))); +#else +#ifndef xmlNanoHTTPSave +extern __typeof (xmlNanoHTTPSave) xmlNanoHTTPSave__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPSave xmlNanoHTTPSave__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPScanProxy +extern __typeof (xmlNanoHTTPScanProxy) xmlNanoHTTPScanProxy __attribute((alias("xmlNanoHTTPScanProxy__internal_alias"))); +#else +#ifndef xmlNanoHTTPScanProxy +extern __typeof (xmlNanoHTTPScanProxy) xmlNanoHTTPScanProxy__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPScanProxy xmlNanoHTTPScanProxy__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlNewAutomata +extern __typeof (xmlNewAutomata) xmlNewAutomata __attribute((alias("xmlNewAutomata__internal_alias"))); +#else +#ifndef xmlNewAutomata +extern __typeof (xmlNewAutomata) xmlNewAutomata__internal_alias __attribute((visibility("hidden"))); +#define xmlNewAutomata xmlNewAutomata__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewCDataBlock +extern __typeof (xmlNewCDataBlock) xmlNewCDataBlock __attribute((alias("xmlNewCDataBlock__internal_alias"))); +#else +#ifndef xmlNewCDataBlock +extern __typeof (xmlNewCDataBlock) xmlNewCDataBlock__internal_alias __attribute((visibility("hidden"))); +#define xmlNewCDataBlock xmlNewCDataBlock__internal_alias +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlNewCatalog +extern __typeof (xmlNewCatalog) xmlNewCatalog __attribute((alias("xmlNewCatalog__internal_alias"))); +#else +#ifndef xmlNewCatalog +extern __typeof (xmlNewCatalog) xmlNewCatalog__internal_alias __attribute((visibility("hidden"))); +#define xmlNewCatalog xmlNewCatalog__internal_alias +#endif +#endif +#endif + +#ifdef bottom_encoding +#undef xmlNewCharEncodingHandler +extern __typeof (xmlNewCharEncodingHandler) xmlNewCharEncodingHandler __attribute((alias("xmlNewCharEncodingHandler__internal_alias"))); +#else +#ifndef xmlNewCharEncodingHandler +extern __typeof (xmlNewCharEncodingHandler) xmlNewCharEncodingHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlNewCharEncodingHandler xmlNewCharEncodingHandler__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewCharRef +extern __typeof (xmlNewCharRef) xmlNewCharRef __attribute((alias("xmlNewCharRef__internal_alias"))); +#else +#ifndef xmlNewCharRef +extern __typeof (xmlNewCharRef) xmlNewCharRef__internal_alias __attribute((visibility("hidden"))); +#define xmlNewCharRef xmlNewCharRef__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlNewChild +extern __typeof (xmlNewChild) xmlNewChild __attribute((alias("xmlNewChild__internal_alias"))); +#else +#ifndef xmlNewChild +extern __typeof (xmlNewChild) xmlNewChild__internal_alias __attribute((visibility("hidden"))); +#define xmlNewChild xmlNewChild__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewComment +extern __typeof (xmlNewComment) xmlNewComment __attribute((alias("xmlNewComment__internal_alias"))); +#else +#ifndef xmlNewComment +extern __typeof (xmlNewComment) xmlNewComment__internal_alias __attribute((visibility("hidden"))); +#define xmlNewComment xmlNewComment__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDoc +extern __typeof (xmlNewDoc) xmlNewDoc __attribute((alias("xmlNewDoc__internal_alias"))); +#else +#ifndef xmlNewDoc +extern __typeof (xmlNewDoc) xmlNewDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDoc xmlNewDoc__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDocComment +extern __typeof (xmlNewDocComment) xmlNewDocComment __attribute((alias("xmlNewDocComment__internal_alias"))); +#else +#ifndef xmlNewDocComment +extern __typeof (xmlNewDocComment) xmlNewDocComment__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocComment xmlNewDocComment__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlNewDocElementContent +extern __typeof (xmlNewDocElementContent) xmlNewDocElementContent __attribute((alias("xmlNewDocElementContent__internal_alias"))); +#else +#ifndef xmlNewDocElementContent +extern __typeof (xmlNewDocElementContent) xmlNewDocElementContent__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocElementContent xmlNewDocElementContent__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNewDocFragment +extern __typeof (xmlNewDocFragment) xmlNewDocFragment __attribute((alias("xmlNewDocFragment__internal_alias"))); +#else +#ifndef xmlNewDocFragment +extern __typeof (xmlNewDocFragment) xmlNewDocFragment__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocFragment xmlNewDocFragment__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDocNode +extern __typeof (xmlNewDocNode) xmlNewDocNode __attribute((alias("xmlNewDocNode__internal_alias"))); +#else +#ifndef xmlNewDocNode +extern __typeof (xmlNewDocNode) xmlNewDocNode__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocNode xmlNewDocNode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDocNodeEatName +extern __typeof (xmlNewDocNodeEatName) xmlNewDocNodeEatName __attribute((alias("xmlNewDocNodeEatName__internal_alias"))); +#else +#ifndef xmlNewDocNodeEatName +extern __typeof (xmlNewDocNodeEatName) xmlNewDocNodeEatName__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocNodeEatName xmlNewDocNodeEatName__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDocPI +extern __typeof (xmlNewDocPI) xmlNewDocPI __attribute((alias("xmlNewDocPI__internal_alias"))); +#else +#ifndef xmlNewDocPI +extern __typeof (xmlNewDocPI) xmlNewDocPI__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocPI xmlNewDocPI__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDocProp +extern __typeof (xmlNewDocProp) xmlNewDocProp __attribute((alias("xmlNewDocProp__internal_alias"))); +#else +#ifndef xmlNewDocProp +extern __typeof (xmlNewDocProp) xmlNewDocProp__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocProp xmlNewDocProp__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNewDocRawNode +extern __typeof (xmlNewDocRawNode) xmlNewDocRawNode __attribute((alias("xmlNewDocRawNode__internal_alias"))); +#else +#ifndef xmlNewDocRawNode +extern __typeof (xmlNewDocRawNode) xmlNewDocRawNode__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocRawNode xmlNewDocRawNode__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDocText +extern __typeof (xmlNewDocText) xmlNewDocText __attribute((alias("xmlNewDocText__internal_alias"))); +#else +#ifndef xmlNewDocText +extern __typeof (xmlNewDocText) xmlNewDocText__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocText xmlNewDocText__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDocTextLen +extern __typeof (xmlNewDocTextLen) xmlNewDocTextLen __attribute((alias("xmlNewDocTextLen__internal_alias"))); +#else +#ifndef xmlNewDocTextLen +extern __typeof (xmlNewDocTextLen) xmlNewDocTextLen__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocTextLen xmlNewDocTextLen__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDtd +extern __typeof (xmlNewDtd) xmlNewDtd __attribute((alias("xmlNewDtd__internal_alias"))); +#else +#ifndef xmlNewDtd +extern __typeof (xmlNewDtd) xmlNewDtd__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDtd xmlNewDtd__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlNewElementContent +extern __typeof (xmlNewElementContent) xmlNewElementContent __attribute((alias("xmlNewElementContent__internal_alias"))); +#else +#ifndef xmlNewElementContent +extern __typeof (xmlNewElementContent) xmlNewElementContent__internal_alias __attribute((visibility("hidden"))); +#define xmlNewElementContent xmlNewElementContent__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlNewEntity +extern __typeof (xmlNewEntity) xmlNewEntity __attribute((alias("xmlNewEntity__internal_alias"))); +#else +#ifndef xmlNewEntity +extern __typeof (xmlNewEntity) xmlNewEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlNewEntity xmlNewEntity__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlNewEntityInputStream +extern __typeof (xmlNewEntityInputStream) xmlNewEntityInputStream __attribute((alias("xmlNewEntityInputStream__internal_alias"))); +#else +#ifndef xmlNewEntityInputStream +extern __typeof (xmlNewEntityInputStream) xmlNewEntityInputStream__internal_alias __attribute((visibility("hidden"))); +#define xmlNewEntityInputStream xmlNewEntityInputStream__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlNewGlobalNs +extern __typeof (xmlNewGlobalNs) xmlNewGlobalNs __attribute((alias("xmlNewGlobalNs__internal_alias"))); +#else +#ifndef xmlNewGlobalNs +extern __typeof (xmlNewGlobalNs) xmlNewGlobalNs__internal_alias __attribute((visibility("hidden"))); +#define xmlNewGlobalNs xmlNewGlobalNs__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlNewIOInputStream +extern __typeof (xmlNewIOInputStream) xmlNewIOInputStream __attribute((alias("xmlNewIOInputStream__internal_alias"))); +#else +#ifndef xmlNewIOInputStream +extern __typeof (xmlNewIOInputStream) xmlNewIOInputStream__internal_alias __attribute((visibility("hidden"))); +#define xmlNewIOInputStream xmlNewIOInputStream__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlNewInputFromFile +extern __typeof (xmlNewInputFromFile) xmlNewInputFromFile __attribute((alias("xmlNewInputFromFile__internal_alias"))); +#else +#ifndef xmlNewInputFromFile +extern __typeof (xmlNewInputFromFile) xmlNewInputFromFile__internal_alias __attribute((visibility("hidden"))); +#define xmlNewInputFromFile xmlNewInputFromFile__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlNewInputStream +extern __typeof (xmlNewInputStream) xmlNewInputStream __attribute((alias("xmlNewInputStream__internal_alias"))); +#else +#ifndef xmlNewInputStream +extern __typeof (xmlNewInputStream) xmlNewInputStream__internal_alias __attribute((visibility("hidden"))); +#define xmlNewInputStream xmlNewInputStream__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlNewMutex +extern __typeof (xmlNewMutex) xmlNewMutex __attribute((alias("xmlNewMutex__internal_alias"))); +#else +#ifndef xmlNewMutex +extern __typeof (xmlNewMutex) xmlNewMutex__internal_alias __attribute((visibility("hidden"))); +#define xmlNewMutex xmlNewMutex__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewNode +extern __typeof (xmlNewNode) xmlNewNode __attribute((alias("xmlNewNode__internal_alias"))); +#else +#ifndef xmlNewNode +extern __typeof (xmlNewNode) xmlNewNode__internal_alias __attribute((visibility("hidden"))); +#define xmlNewNode xmlNewNode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewNodeEatName +extern __typeof (xmlNewNodeEatName) xmlNewNodeEatName __attribute((alias("xmlNewNodeEatName__internal_alias"))); +#else +#ifndef xmlNewNodeEatName +extern __typeof (xmlNewNodeEatName) xmlNewNodeEatName__internal_alias __attribute((visibility("hidden"))); +#define xmlNewNodeEatName xmlNewNodeEatName__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewNs +extern __typeof (xmlNewNs) xmlNewNs __attribute((alias("xmlNewNs__internal_alias"))); +#else +#ifndef xmlNewNs +extern __typeof (xmlNewNs) xmlNewNs__internal_alias __attribute((visibility("hidden"))); +#define xmlNewNs xmlNewNs__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewNsProp +extern __typeof (xmlNewNsProp) xmlNewNsProp __attribute((alias("xmlNewNsProp__internal_alias"))); +#else +#ifndef xmlNewNsProp +extern __typeof (xmlNewNsProp) xmlNewNsProp__internal_alias __attribute((visibility("hidden"))); +#define xmlNewNsProp xmlNewNsProp__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewNsPropEatName +extern __typeof (xmlNewNsPropEatName) xmlNewNsPropEatName __attribute((alias("xmlNewNsPropEatName__internal_alias"))); +#else +#ifndef xmlNewNsPropEatName +extern __typeof (xmlNewNsPropEatName) xmlNewNsPropEatName__internal_alias __attribute((visibility("hidden"))); +#define xmlNewNsPropEatName xmlNewNsPropEatName__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewPI +extern __typeof (xmlNewPI) xmlNewPI __attribute((alias("xmlNewPI__internal_alias"))); +#else +#ifndef xmlNewPI +extern __typeof (xmlNewPI) xmlNewPI__internal_alias __attribute((visibility("hidden"))); +#define xmlNewPI xmlNewPI__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlNewParserCtxt +extern __typeof (xmlNewParserCtxt) xmlNewParserCtxt __attribute((alias("xmlNewParserCtxt__internal_alias"))); +#else +#ifndef xmlNewParserCtxt +extern __typeof (xmlNewParserCtxt) xmlNewParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlNewParserCtxt xmlNewParserCtxt__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlNewProp +extern __typeof (xmlNewProp) xmlNewProp __attribute((alias("xmlNewProp__internal_alias"))); +#else +#ifndef xmlNewProp +extern __typeof (xmlNewProp) xmlNewProp__internal_alias __attribute((visibility("hidden"))); +#define xmlNewProp xmlNewProp__internal_alias +#endif +#endif +#endif + +#ifdef bottom_threads +#undef xmlNewRMutex +extern __typeof (xmlNewRMutex) xmlNewRMutex __attribute((alias("xmlNewRMutex__internal_alias"))); +#else +#ifndef xmlNewRMutex +extern __typeof (xmlNewRMutex) xmlNewRMutex__internal_alias __attribute((visibility("hidden"))); +#define xmlNewRMutex xmlNewRMutex__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewReference +extern __typeof (xmlNewReference) xmlNewReference __attribute((alias("xmlNewReference__internal_alias"))); +#else +#ifndef xmlNewReference +extern __typeof (xmlNewReference) xmlNewReference__internal_alias __attribute((visibility("hidden"))); +#define xmlNewReference xmlNewReference__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlNewStringInputStream +extern __typeof (xmlNewStringInputStream) xmlNewStringInputStream __attribute((alias("xmlNewStringInputStream__internal_alias"))); +#else +#ifndef xmlNewStringInputStream +extern __typeof (xmlNewStringInputStream) xmlNewStringInputStream__internal_alias __attribute((visibility("hidden"))); +#define xmlNewStringInputStream xmlNewStringInputStream__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewText +extern __typeof (xmlNewText) xmlNewText __attribute((alias("xmlNewText__internal_alias"))); +#else +#ifndef xmlNewText +extern __typeof (xmlNewText) xmlNewText__internal_alias __attribute((visibility("hidden"))); +#define xmlNewText xmlNewText__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNewTextChild +extern __typeof (xmlNewTextChild) xmlNewTextChild __attribute((alias("xmlNewTextChild__internal_alias"))); +#else +#ifndef xmlNewTextChild +extern __typeof (xmlNewTextChild) xmlNewTextChild__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextChild xmlNewTextChild__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewTextLen +extern __typeof (xmlNewTextLen) xmlNewTextLen __attribute((alias("xmlNewTextLen__internal_alias"))); +#else +#ifndef xmlNewTextLen +extern __typeof (xmlNewTextLen) xmlNewTextLen__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextLen xmlNewTextLen__internal_alias +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlNewTextReader +extern __typeof (xmlNewTextReader) xmlNewTextReader __attribute((alias("xmlNewTextReader__internal_alias"))); +#else +#ifndef xmlNewTextReader +extern __typeof (xmlNewTextReader) xmlNewTextReader__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextReader xmlNewTextReader__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlNewTextReaderFilename +extern __typeof (xmlNewTextReaderFilename) xmlNewTextReaderFilename __attribute((alias("xmlNewTextReaderFilename__internal_alias"))); +#else +#ifndef xmlNewTextReaderFilename +extern __typeof (xmlNewTextReaderFilename) xmlNewTextReaderFilename__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextReaderFilename xmlNewTextReaderFilename__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlNewTextWriter +extern __typeof (xmlNewTextWriter) xmlNewTextWriter __attribute((alias("xmlNewTextWriter__internal_alias"))); +#else +#ifndef xmlNewTextWriter +extern __typeof (xmlNewTextWriter) xmlNewTextWriter__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextWriter xmlNewTextWriter__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlNewTextWriterDoc +extern __typeof (xmlNewTextWriterDoc) xmlNewTextWriterDoc __attribute((alias("xmlNewTextWriterDoc__internal_alias"))); +#else +#ifndef xmlNewTextWriterDoc +extern __typeof (xmlNewTextWriterDoc) xmlNewTextWriterDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextWriterDoc xmlNewTextWriterDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlNewTextWriterFilename +extern __typeof (xmlNewTextWriterFilename) xmlNewTextWriterFilename __attribute((alias("xmlNewTextWriterFilename__internal_alias"))); +#else +#ifndef xmlNewTextWriterFilename +extern __typeof (xmlNewTextWriterFilename) xmlNewTextWriterFilename__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextWriterFilename xmlNewTextWriterFilename__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlNewTextWriterMemory +extern __typeof (xmlNewTextWriterMemory) xmlNewTextWriterMemory __attribute((alias("xmlNewTextWriterMemory__internal_alias"))); +#else +#ifndef xmlNewTextWriterMemory +extern __typeof (xmlNewTextWriterMemory) xmlNewTextWriterMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextWriterMemory xmlNewTextWriterMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlNewTextWriterPushParser +extern __typeof (xmlNewTextWriterPushParser) xmlNewTextWriterPushParser __attribute((alias("xmlNewTextWriterPushParser__internal_alias"))); +#else +#ifndef xmlNewTextWriterPushParser +extern __typeof (xmlNewTextWriterPushParser) xmlNewTextWriterPushParser__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextWriterPushParser xmlNewTextWriterPushParser__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlNewTextWriterTree +extern __typeof (xmlNewTextWriterTree) xmlNewTextWriterTree __attribute((alias("xmlNewTextWriterTree__internal_alias"))); +#else +#ifndef xmlNewTextWriterTree +extern __typeof (xmlNewTextWriterTree) xmlNewTextWriterTree__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextWriterTree xmlNewTextWriterTree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlNewValidCtxt +extern __typeof (xmlNewValidCtxt) xmlNewValidCtxt __attribute((alias("xmlNewValidCtxt__internal_alias"))); +#else +#ifndef xmlNewValidCtxt +extern __typeof (xmlNewValidCtxt) xmlNewValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlNewValidCtxt xmlNewValidCtxt__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlNextChar +extern __typeof (xmlNextChar) xmlNextChar __attribute((alias("xmlNextChar__internal_alias"))); +#else +#ifndef xmlNextChar +extern __typeof (xmlNextChar) xmlNextChar__internal_alias __attribute((visibility("hidden"))); +#define xmlNextChar xmlNextChar__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNextElementSibling +extern __typeof (xmlNextElementSibling) xmlNextElementSibling __attribute((alias("xmlNextElementSibling__internal_alias"))); +#else +#ifndef xmlNextElementSibling +extern __typeof (xmlNextElementSibling) xmlNextElementSibling__internal_alias __attribute((visibility("hidden"))); +#define xmlNextElementSibling xmlNextElementSibling__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlNoNetExternalEntityLoader +extern __typeof (xmlNoNetExternalEntityLoader) xmlNoNetExternalEntityLoader __attribute((alias("xmlNoNetExternalEntityLoader__internal_alias"))); +#else +#ifndef xmlNoNetExternalEntityLoader +extern __typeof (xmlNoNetExternalEntityLoader) xmlNoNetExternalEntityLoader__internal_alias __attribute((visibility("hidden"))); +#define xmlNoNetExternalEntityLoader xmlNoNetExternalEntityLoader__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeAddContent +extern __typeof (xmlNodeAddContent) xmlNodeAddContent __attribute((alias("xmlNodeAddContent__internal_alias"))); +#else +#ifndef xmlNodeAddContent +extern __typeof (xmlNodeAddContent) xmlNodeAddContent__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeAddContent xmlNodeAddContent__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeAddContentLen +extern __typeof (xmlNodeAddContentLen) xmlNodeAddContentLen __attribute((alias("xmlNodeAddContentLen__internal_alias"))); +#else +#ifndef xmlNodeAddContentLen +extern __typeof (xmlNodeAddContentLen) xmlNodeAddContentLen__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeAddContentLen xmlNodeAddContentLen__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeBufGetContent +extern __typeof (xmlNodeBufGetContent) xmlNodeBufGetContent __attribute((alias("xmlNodeBufGetContent__internal_alias"))); +#else +#ifndef xmlNodeBufGetContent +extern __typeof (xmlNodeBufGetContent) xmlNodeBufGetContent__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeBufGetContent xmlNodeBufGetContent__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlNodeDump +extern __typeof (xmlNodeDump) xmlNodeDump __attribute((alias("xmlNodeDump__internal_alias"))); +#else +#ifndef xmlNodeDump +extern __typeof (xmlNodeDump) xmlNodeDump__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeDump xmlNodeDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlNodeDumpOutput +extern __typeof (xmlNodeDumpOutput) xmlNodeDumpOutput __attribute((alias("xmlNodeDumpOutput__internal_alias"))); +#else +#ifndef xmlNodeDumpOutput +extern __typeof (xmlNodeDumpOutput) xmlNodeDumpOutput__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeDumpOutput xmlNodeDumpOutput__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeGetBase +extern __typeof (xmlNodeGetBase) xmlNodeGetBase __attribute((alias("xmlNodeGetBase__internal_alias"))); +#else +#ifndef xmlNodeGetBase +extern __typeof (xmlNodeGetBase) xmlNodeGetBase__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeGetBase xmlNodeGetBase__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeGetContent +extern __typeof (xmlNodeGetContent) xmlNodeGetContent __attribute((alias("xmlNodeGetContent__internal_alias"))); +#else +#ifndef xmlNodeGetContent +extern __typeof (xmlNodeGetContent) xmlNodeGetContent__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeGetContent xmlNodeGetContent__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeGetLang +extern __typeof (xmlNodeGetLang) xmlNodeGetLang __attribute((alias("xmlNodeGetLang__internal_alias"))); +#else +#ifndef xmlNodeGetLang +extern __typeof (xmlNodeGetLang) xmlNodeGetLang__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeGetLang xmlNodeGetLang__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeGetSpacePreserve +extern __typeof (xmlNodeGetSpacePreserve) xmlNodeGetSpacePreserve __attribute((alias("xmlNodeGetSpacePreserve__internal_alias"))); +#else +#ifndef xmlNodeGetSpacePreserve +extern __typeof (xmlNodeGetSpacePreserve) xmlNodeGetSpacePreserve__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeGetSpacePreserve xmlNodeGetSpacePreserve__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeIsText +extern __typeof (xmlNodeIsText) xmlNodeIsText __attribute((alias("xmlNodeIsText__internal_alias"))); +#else +#ifndef xmlNodeIsText +extern __typeof (xmlNodeIsText) xmlNodeIsText__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeIsText xmlNodeIsText__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNodeListGetRawString +extern __typeof (xmlNodeListGetRawString) xmlNodeListGetRawString __attribute((alias("xmlNodeListGetRawString__internal_alias"))); +#else +#ifndef xmlNodeListGetRawString +extern __typeof (xmlNodeListGetRawString) xmlNodeListGetRawString__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeListGetRawString xmlNodeListGetRawString__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeListGetString +extern __typeof (xmlNodeListGetString) xmlNodeListGetString __attribute((alias("xmlNodeListGetString__internal_alias"))); +#else +#ifndef xmlNodeListGetString +extern __typeof (xmlNodeListGetString) xmlNodeListGetString__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeListGetString xmlNodeListGetString__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_tree +#undef xmlNodeSetBase +extern __typeof (xmlNodeSetBase) xmlNodeSetBase __attribute((alias("xmlNodeSetBase__internal_alias"))); +#else +#ifndef xmlNodeSetBase +extern __typeof (xmlNodeSetBase) xmlNodeSetBase__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeSetBase xmlNodeSetBase__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeSetContent +extern __typeof (xmlNodeSetContent) xmlNodeSetContent __attribute((alias("xmlNodeSetContent__internal_alias"))); +#else +#ifndef xmlNodeSetContent +extern __typeof (xmlNodeSetContent) xmlNodeSetContent__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeSetContent xmlNodeSetContent__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNodeSetContentLen +extern __typeof (xmlNodeSetContentLen) xmlNodeSetContentLen __attribute((alias("xmlNodeSetContentLen__internal_alias"))); +#else +#ifndef xmlNodeSetContentLen +extern __typeof (xmlNodeSetContentLen) xmlNodeSetContentLen__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeSetContentLen xmlNodeSetContentLen__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNodeSetLang +extern __typeof (xmlNodeSetLang) xmlNodeSetLang __attribute((alias("xmlNodeSetLang__internal_alias"))); +#else +#ifndef xmlNodeSetLang +extern __typeof (xmlNodeSetLang) xmlNodeSetLang__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeSetLang xmlNodeSetLang__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNodeSetName +extern __typeof (xmlNodeSetName) xmlNodeSetName __attribute((alias("xmlNodeSetName__internal_alias"))); +#else +#ifndef xmlNodeSetName +extern __typeof (xmlNodeSetName) xmlNodeSetName__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeSetName xmlNodeSetName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNodeSetSpacePreserve +extern __typeof (xmlNodeSetSpacePreserve) xmlNodeSetSpacePreserve __attribute((alias("xmlNodeSetSpacePreserve__internal_alias"))); +#else +#ifndef xmlNodeSetSpacePreserve +extern __typeof (xmlNodeSetSpacePreserve) xmlNodeSetSpacePreserve__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeSetSpacePreserve xmlNodeSetSpacePreserve__internal_alias +#endif +#endif +#endif + +#ifdef bottom_uri +#undef xmlNormalizeURIPath +extern __typeof (xmlNormalizeURIPath) xmlNormalizeURIPath __attribute((alias("xmlNormalizeURIPath__internal_alias"))); +#else +#ifndef xmlNormalizeURIPath +extern __typeof (xmlNormalizeURIPath) xmlNormalizeURIPath__internal_alias __attribute((visibility("hidden"))); +#define xmlNormalizeURIPath xmlNormalizeURIPath__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlNormalizeWindowsPath +extern __typeof (xmlNormalizeWindowsPath) xmlNormalizeWindowsPath __attribute((alias("xmlNormalizeWindowsPath__internal_alias"))); +#else +#ifndef xmlNormalizeWindowsPath +extern __typeof (xmlNormalizeWindowsPath) xmlNormalizeWindowsPath__internal_alias __attribute((visibility("hidden"))); +#define xmlNormalizeWindowsPath xmlNormalizeWindowsPath__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferClose +extern __typeof (xmlOutputBufferClose) xmlOutputBufferClose __attribute((alias("xmlOutputBufferClose__internal_alias"))); +#else +#ifndef xmlOutputBufferClose +extern __typeof (xmlOutputBufferClose) xmlOutputBufferClose__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferClose xmlOutputBufferClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferCreateBuffer +extern __typeof (xmlOutputBufferCreateBuffer) xmlOutputBufferCreateBuffer __attribute((alias("xmlOutputBufferCreateBuffer__internal_alias"))); +#else +#ifndef xmlOutputBufferCreateBuffer +extern __typeof (xmlOutputBufferCreateBuffer) xmlOutputBufferCreateBuffer__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferCreateBuffer xmlOutputBufferCreateBuffer__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferCreateFd +extern __typeof (xmlOutputBufferCreateFd) xmlOutputBufferCreateFd __attribute((alias("xmlOutputBufferCreateFd__internal_alias"))); +#else +#ifndef xmlOutputBufferCreateFd +extern __typeof (xmlOutputBufferCreateFd) xmlOutputBufferCreateFd__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferCreateFd xmlOutputBufferCreateFd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferCreateFile +extern __typeof (xmlOutputBufferCreateFile) xmlOutputBufferCreateFile __attribute((alias("xmlOutputBufferCreateFile__internal_alias"))); +#else +#ifndef xmlOutputBufferCreateFile +extern __typeof (xmlOutputBufferCreateFile) xmlOutputBufferCreateFile__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferCreateFile xmlOutputBufferCreateFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferCreateFilename +extern __typeof (xmlOutputBufferCreateFilename) xmlOutputBufferCreateFilename __attribute((alias("xmlOutputBufferCreateFilename__internal_alias"))); +#else +#ifndef xmlOutputBufferCreateFilename +extern __typeof (xmlOutputBufferCreateFilename) xmlOutputBufferCreateFilename__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferCreateFilename xmlOutputBufferCreateFilename__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlOutputBufferCreateFilenameDefault +extern __typeof (xmlOutputBufferCreateFilenameDefault) xmlOutputBufferCreateFilenameDefault __attribute((alias("xmlOutputBufferCreateFilenameDefault__internal_alias"))); +#else +#ifndef xmlOutputBufferCreateFilenameDefault +extern __typeof (xmlOutputBufferCreateFilenameDefault) xmlOutputBufferCreateFilenameDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferCreateFilenameDefault xmlOutputBufferCreateFilenameDefault__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferCreateIO +extern __typeof (xmlOutputBufferCreateIO) xmlOutputBufferCreateIO __attribute((alias("xmlOutputBufferCreateIO__internal_alias"))); +#else +#ifndef xmlOutputBufferCreateIO +extern __typeof (xmlOutputBufferCreateIO) xmlOutputBufferCreateIO__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferCreateIO xmlOutputBufferCreateIO__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferFlush +extern __typeof (xmlOutputBufferFlush) xmlOutputBufferFlush __attribute((alias("xmlOutputBufferFlush__internal_alias"))); +#else +#ifndef xmlOutputBufferFlush +extern __typeof (xmlOutputBufferFlush) xmlOutputBufferFlush__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferFlush xmlOutputBufferFlush__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferGetContent +extern __typeof (xmlOutputBufferGetContent) xmlOutputBufferGetContent __attribute((alias("xmlOutputBufferGetContent__internal_alias"))); +#else +#ifndef xmlOutputBufferGetContent +extern __typeof (xmlOutputBufferGetContent) xmlOutputBufferGetContent__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferGetContent xmlOutputBufferGetContent__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferGetSize +extern __typeof (xmlOutputBufferGetSize) xmlOutputBufferGetSize __attribute((alias("xmlOutputBufferGetSize__internal_alias"))); +#else +#ifndef xmlOutputBufferGetSize +extern __typeof (xmlOutputBufferGetSize) xmlOutputBufferGetSize__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferGetSize xmlOutputBufferGetSize__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferWrite +extern __typeof (xmlOutputBufferWrite) xmlOutputBufferWrite __attribute((alias("xmlOutputBufferWrite__internal_alias"))); +#else +#ifndef xmlOutputBufferWrite +extern __typeof (xmlOutputBufferWrite) xmlOutputBufferWrite__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferWrite xmlOutputBufferWrite__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferWriteEscape +extern __typeof (xmlOutputBufferWriteEscape) xmlOutputBufferWriteEscape __attribute((alias("xmlOutputBufferWriteEscape__internal_alias"))); +#else +#ifndef xmlOutputBufferWriteEscape +extern __typeof (xmlOutputBufferWriteEscape) xmlOutputBufferWriteEscape__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferWriteEscape xmlOutputBufferWriteEscape__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferWriteString +extern __typeof (xmlOutputBufferWriteString) xmlOutputBufferWriteString __attribute((alias("xmlOutputBufferWriteString__internal_alias"))); +#else +#ifndef xmlOutputBufferWriteString +extern __typeof (xmlOutputBufferWriteString) xmlOutputBufferWriteString__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferWriteString xmlOutputBufferWriteString__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseAttValue +extern __typeof (xmlParseAttValue) xmlParseAttValue __attribute((alias("xmlParseAttValue__internal_alias"))); +#else +#ifndef xmlParseAttValue +extern __typeof (xmlParseAttValue) xmlParseAttValue__internal_alias __attribute((visibility("hidden"))); +#define xmlParseAttValue xmlParseAttValue__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseAttribute +extern __typeof (xmlParseAttribute) xmlParseAttribute __attribute((alias("xmlParseAttribute__internal_alias"))); +#else +#ifndef xmlParseAttribute +extern __typeof (xmlParseAttribute) xmlParseAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlParseAttribute xmlParseAttribute__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseAttributeListDecl +extern __typeof (xmlParseAttributeListDecl) xmlParseAttributeListDecl __attribute((alias("xmlParseAttributeListDecl__internal_alias"))); +#else +#ifndef xmlParseAttributeListDecl +extern __typeof (xmlParseAttributeListDecl) xmlParseAttributeListDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseAttributeListDecl xmlParseAttributeListDecl__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseAttributeType +extern __typeof (xmlParseAttributeType) xmlParseAttributeType __attribute((alias("xmlParseAttributeType__internal_alias"))); +#else +#ifndef xmlParseAttributeType +extern __typeof (xmlParseAttributeType) xmlParseAttributeType__internal_alias __attribute((visibility("hidden"))); +#define xmlParseAttributeType xmlParseAttributeType__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseBalancedChunkMemory +extern __typeof (xmlParseBalancedChunkMemory) xmlParseBalancedChunkMemory __attribute((alias("xmlParseBalancedChunkMemory__internal_alias"))); +#else +#ifndef xmlParseBalancedChunkMemory +extern __typeof (xmlParseBalancedChunkMemory) xmlParseBalancedChunkMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlParseBalancedChunkMemory xmlParseBalancedChunkMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseBalancedChunkMemoryRecover +extern __typeof (xmlParseBalancedChunkMemoryRecover) xmlParseBalancedChunkMemoryRecover __attribute((alias("xmlParseBalancedChunkMemoryRecover__internal_alias"))); +#else +#ifndef xmlParseBalancedChunkMemoryRecover +extern __typeof (xmlParseBalancedChunkMemoryRecover) xmlParseBalancedChunkMemoryRecover__internal_alias __attribute((visibility("hidden"))); +#define xmlParseBalancedChunkMemoryRecover xmlParseBalancedChunkMemoryRecover__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseCDSect +extern __typeof (xmlParseCDSect) xmlParseCDSect __attribute((alias("xmlParseCDSect__internal_alias"))); +#else +#ifndef xmlParseCDSect +extern __typeof (xmlParseCDSect) xmlParseCDSect__internal_alias __attribute((visibility("hidden"))); +#define xmlParseCDSect xmlParseCDSect__internal_alias +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlParseCatalogFile +extern __typeof (xmlParseCatalogFile) xmlParseCatalogFile __attribute((alias("xmlParseCatalogFile__internal_alias"))); +#else +#ifndef xmlParseCatalogFile +extern __typeof (xmlParseCatalogFile) xmlParseCatalogFile__internal_alias __attribute((visibility("hidden"))); +#define xmlParseCatalogFile xmlParseCatalogFile__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseCharData +extern __typeof (xmlParseCharData) xmlParseCharData __attribute((alias("xmlParseCharData__internal_alias"))); +#else +#ifndef xmlParseCharData +extern __typeof (xmlParseCharData) xmlParseCharData__internal_alias __attribute((visibility("hidden"))); +#define xmlParseCharData xmlParseCharData__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlParseCharEncoding +extern __typeof (xmlParseCharEncoding) xmlParseCharEncoding __attribute((alias("xmlParseCharEncoding__internal_alias"))); +#else +#ifndef xmlParseCharEncoding +extern __typeof (xmlParseCharEncoding) xmlParseCharEncoding__internal_alias __attribute((visibility("hidden"))); +#define xmlParseCharEncoding xmlParseCharEncoding__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseCharRef +extern __typeof (xmlParseCharRef) xmlParseCharRef __attribute((alias("xmlParseCharRef__internal_alias"))); +#else +#ifndef xmlParseCharRef +extern __typeof (xmlParseCharRef) xmlParseCharRef__internal_alias __attribute((visibility("hidden"))); +#define xmlParseCharRef xmlParseCharRef__internal_alias +#endif +#endif + +#if defined(LIBXML_PUSH_ENABLED) +#ifdef bottom_parser +#undef xmlParseChunk +extern __typeof (xmlParseChunk) xmlParseChunk __attribute((alias("xmlParseChunk__internal_alias"))); +#else +#ifndef xmlParseChunk +extern __typeof (xmlParseChunk) xmlParseChunk__internal_alias __attribute((visibility("hidden"))); +#define xmlParseChunk xmlParseChunk__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseComment +extern __typeof (xmlParseComment) xmlParseComment __attribute((alias("xmlParseComment__internal_alias"))); +#else +#ifndef xmlParseComment +extern __typeof (xmlParseComment) xmlParseComment__internal_alias __attribute((visibility("hidden"))); +#define xmlParseComment xmlParseComment__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseContent +extern __typeof (xmlParseContent) xmlParseContent __attribute((alias("xmlParseContent__internal_alias"))); +#else +#ifndef xmlParseContent +extern __typeof (xmlParseContent) xmlParseContent__internal_alias __attribute((visibility("hidden"))); +#define xmlParseContent xmlParseContent__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseCtxtExternalEntity +extern __typeof (xmlParseCtxtExternalEntity) xmlParseCtxtExternalEntity __attribute((alias("xmlParseCtxtExternalEntity__internal_alias"))); +#else +#ifndef xmlParseCtxtExternalEntity +extern __typeof (xmlParseCtxtExternalEntity) xmlParseCtxtExternalEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlParseCtxtExternalEntity xmlParseCtxtExternalEntity__internal_alias +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_parser +#undef xmlParseDTD +extern __typeof (xmlParseDTD) xmlParseDTD __attribute((alias("xmlParseDTD__internal_alias"))); +#else +#ifndef xmlParseDTD +extern __typeof (xmlParseDTD) xmlParseDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlParseDTD xmlParseDTD__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseDefaultDecl +extern __typeof (xmlParseDefaultDecl) xmlParseDefaultDecl __attribute((alias("xmlParseDefaultDecl__internal_alias"))); +#else +#ifndef xmlParseDefaultDecl +extern __typeof (xmlParseDefaultDecl) xmlParseDefaultDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseDefaultDecl xmlParseDefaultDecl__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseDoc +extern __typeof (xmlParseDoc) xmlParseDoc __attribute((alias("xmlParseDoc__internal_alias"))); +#else +#ifndef xmlParseDoc +extern __typeof (xmlParseDoc) xmlParseDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlParseDoc xmlParseDoc__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseDocTypeDecl +extern __typeof (xmlParseDocTypeDecl) xmlParseDocTypeDecl __attribute((alias("xmlParseDocTypeDecl__internal_alias"))); +#else +#ifndef xmlParseDocTypeDecl +extern __typeof (xmlParseDocTypeDecl) xmlParseDocTypeDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseDocTypeDecl xmlParseDocTypeDecl__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseDocument +extern __typeof (xmlParseDocument) xmlParseDocument __attribute((alias("xmlParseDocument__internal_alias"))); +#else +#ifndef xmlParseDocument +extern __typeof (xmlParseDocument) xmlParseDocument__internal_alias __attribute((visibility("hidden"))); +#define xmlParseDocument xmlParseDocument__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseElement +extern __typeof (xmlParseElement) xmlParseElement __attribute((alias("xmlParseElement__internal_alias"))); +#else +#ifndef xmlParseElement +extern __typeof (xmlParseElement) xmlParseElement__internal_alias __attribute((visibility("hidden"))); +#define xmlParseElement xmlParseElement__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseElementChildrenContentDecl +extern __typeof (xmlParseElementChildrenContentDecl) xmlParseElementChildrenContentDecl __attribute((alias("xmlParseElementChildrenContentDecl__internal_alias"))); +#else +#ifndef xmlParseElementChildrenContentDecl +extern __typeof (xmlParseElementChildrenContentDecl) xmlParseElementChildrenContentDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseElementChildrenContentDecl xmlParseElementChildrenContentDecl__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseElementContentDecl +extern __typeof (xmlParseElementContentDecl) xmlParseElementContentDecl __attribute((alias("xmlParseElementContentDecl__internal_alias"))); +#else +#ifndef xmlParseElementContentDecl +extern __typeof (xmlParseElementContentDecl) xmlParseElementContentDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseElementContentDecl xmlParseElementContentDecl__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseElementDecl +extern __typeof (xmlParseElementDecl) xmlParseElementDecl __attribute((alias("xmlParseElementDecl__internal_alias"))); +#else +#ifndef xmlParseElementDecl +extern __typeof (xmlParseElementDecl) xmlParseElementDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseElementDecl xmlParseElementDecl__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseElementMixedContentDecl +extern __typeof (xmlParseElementMixedContentDecl) xmlParseElementMixedContentDecl __attribute((alias("xmlParseElementMixedContentDecl__internal_alias"))); +#else +#ifndef xmlParseElementMixedContentDecl +extern __typeof (xmlParseElementMixedContentDecl) xmlParseElementMixedContentDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseElementMixedContentDecl xmlParseElementMixedContentDecl__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseEncName +extern __typeof (xmlParseEncName) xmlParseEncName __attribute((alias("xmlParseEncName__internal_alias"))); +#else +#ifndef xmlParseEncName +extern __typeof (xmlParseEncName) xmlParseEncName__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEncName xmlParseEncName__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseEncodingDecl +extern __typeof (xmlParseEncodingDecl) xmlParseEncodingDecl __attribute((alias("xmlParseEncodingDecl__internal_alias"))); +#else +#ifndef xmlParseEncodingDecl +extern __typeof (xmlParseEncodingDecl) xmlParseEncodingDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEncodingDecl xmlParseEncodingDecl__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseEndTag +extern __typeof (xmlParseEndTag) xmlParseEndTag __attribute((alias("xmlParseEndTag__internal_alias"))); +#else +#ifndef xmlParseEndTag +extern __typeof (xmlParseEndTag) xmlParseEndTag__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEndTag xmlParseEndTag__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseEntity +extern __typeof (xmlParseEntity) xmlParseEntity __attribute((alias("xmlParseEntity__internal_alias"))); +#else +#ifndef xmlParseEntity +extern __typeof (xmlParseEntity) xmlParseEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEntity xmlParseEntity__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseEntityDecl +extern __typeof (xmlParseEntityDecl) xmlParseEntityDecl __attribute((alias("xmlParseEntityDecl__internal_alias"))); +#else +#ifndef xmlParseEntityDecl +extern __typeof (xmlParseEntityDecl) xmlParseEntityDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEntityDecl xmlParseEntityDecl__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseEntityRef +extern __typeof (xmlParseEntityRef) xmlParseEntityRef __attribute((alias("xmlParseEntityRef__internal_alias"))); +#else +#ifndef xmlParseEntityRef +extern __typeof (xmlParseEntityRef) xmlParseEntityRef__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEntityRef xmlParseEntityRef__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseEntityValue +extern __typeof (xmlParseEntityValue) xmlParseEntityValue __attribute((alias("xmlParseEntityValue__internal_alias"))); +#else +#ifndef xmlParseEntityValue +extern __typeof (xmlParseEntityValue) xmlParseEntityValue__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEntityValue xmlParseEntityValue__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseEnumeratedType +extern __typeof (xmlParseEnumeratedType) xmlParseEnumeratedType __attribute((alias("xmlParseEnumeratedType__internal_alias"))); +#else +#ifndef xmlParseEnumeratedType +extern __typeof (xmlParseEnumeratedType) xmlParseEnumeratedType__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEnumeratedType xmlParseEnumeratedType__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseEnumerationType +extern __typeof (xmlParseEnumerationType) xmlParseEnumerationType __attribute((alias("xmlParseEnumerationType__internal_alias"))); +#else +#ifndef xmlParseEnumerationType +extern __typeof (xmlParseEnumerationType) xmlParseEnumerationType__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEnumerationType xmlParseEnumerationType__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseExtParsedEnt +extern __typeof (xmlParseExtParsedEnt) xmlParseExtParsedEnt __attribute((alias("xmlParseExtParsedEnt__internal_alias"))); +#else +#ifndef xmlParseExtParsedEnt +extern __typeof (xmlParseExtParsedEnt) xmlParseExtParsedEnt__internal_alias __attribute((visibility("hidden"))); +#define xmlParseExtParsedEnt xmlParseExtParsedEnt__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseExternalEntity +extern __typeof (xmlParseExternalEntity) xmlParseExternalEntity __attribute((alias("xmlParseExternalEntity__internal_alias"))); +#else +#ifndef xmlParseExternalEntity +extern __typeof (xmlParseExternalEntity) xmlParseExternalEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlParseExternalEntity xmlParseExternalEntity__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseExternalID +extern __typeof (xmlParseExternalID) xmlParseExternalID __attribute((alias("xmlParseExternalID__internal_alias"))); +#else +#ifndef xmlParseExternalID +extern __typeof (xmlParseExternalID) xmlParseExternalID__internal_alias __attribute((visibility("hidden"))); +#define xmlParseExternalID xmlParseExternalID__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseExternalSubset +extern __typeof (xmlParseExternalSubset) xmlParseExternalSubset __attribute((alias("xmlParseExternalSubset__internal_alias"))); +#else +#ifndef xmlParseExternalSubset +extern __typeof (xmlParseExternalSubset) xmlParseExternalSubset__internal_alias __attribute((visibility("hidden"))); +#define xmlParseExternalSubset xmlParseExternalSubset__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseFile +extern __typeof (xmlParseFile) xmlParseFile __attribute((alias("xmlParseFile__internal_alias"))); +#else +#ifndef xmlParseFile +extern __typeof (xmlParseFile) xmlParseFile__internal_alias __attribute((visibility("hidden"))); +#define xmlParseFile xmlParseFile__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseInNodeContext +extern __typeof (xmlParseInNodeContext) xmlParseInNodeContext __attribute((alias("xmlParseInNodeContext__internal_alias"))); +#else +#ifndef xmlParseInNodeContext +extern __typeof (xmlParseInNodeContext) xmlParseInNodeContext__internal_alias __attribute((visibility("hidden"))); +#define xmlParseInNodeContext xmlParseInNodeContext__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseMarkupDecl +extern __typeof (xmlParseMarkupDecl) xmlParseMarkupDecl __attribute((alias("xmlParseMarkupDecl__internal_alias"))); +#else +#ifndef xmlParseMarkupDecl +extern __typeof (xmlParseMarkupDecl) xmlParseMarkupDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseMarkupDecl xmlParseMarkupDecl__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseMemory +extern __typeof (xmlParseMemory) xmlParseMemory __attribute((alias("xmlParseMemory__internal_alias"))); +#else +#ifndef xmlParseMemory +extern __typeof (xmlParseMemory) xmlParseMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlParseMemory xmlParseMemory__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseMisc +extern __typeof (xmlParseMisc) xmlParseMisc __attribute((alias("xmlParseMisc__internal_alias"))); +#else +#ifndef xmlParseMisc +extern __typeof (xmlParseMisc) xmlParseMisc__internal_alias __attribute((visibility("hidden"))); +#define xmlParseMisc xmlParseMisc__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseName +extern __typeof (xmlParseName) xmlParseName __attribute((alias("xmlParseName__internal_alias"))); +#else +#ifndef xmlParseName +extern __typeof (xmlParseName) xmlParseName__internal_alias __attribute((visibility("hidden"))); +#define xmlParseName xmlParseName__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlParseNamespace +extern __typeof (xmlParseNamespace) xmlParseNamespace __attribute((alias("xmlParseNamespace__internal_alias"))); +#else +#ifndef xmlParseNamespace +extern __typeof (xmlParseNamespace) xmlParseNamespace__internal_alias __attribute((visibility("hidden"))); +#define xmlParseNamespace xmlParseNamespace__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseNmtoken +extern __typeof (xmlParseNmtoken) xmlParseNmtoken __attribute((alias("xmlParseNmtoken__internal_alias"))); +#else +#ifndef xmlParseNmtoken +extern __typeof (xmlParseNmtoken) xmlParseNmtoken__internal_alias __attribute((visibility("hidden"))); +#define xmlParseNmtoken xmlParseNmtoken__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseNotationDecl +extern __typeof (xmlParseNotationDecl) xmlParseNotationDecl __attribute((alias("xmlParseNotationDecl__internal_alias"))); +#else +#ifndef xmlParseNotationDecl +extern __typeof (xmlParseNotationDecl) xmlParseNotationDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseNotationDecl xmlParseNotationDecl__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseNotationType +extern __typeof (xmlParseNotationType) xmlParseNotationType __attribute((alias("xmlParseNotationType__internal_alias"))); +#else +#ifndef xmlParseNotationType +extern __typeof (xmlParseNotationType) xmlParseNotationType__internal_alias __attribute((visibility("hidden"))); +#define xmlParseNotationType xmlParseNotationType__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParsePEReference +extern __typeof (xmlParsePEReference) xmlParsePEReference __attribute((alias("xmlParsePEReference__internal_alias"))); +#else +#ifndef xmlParsePEReference +extern __typeof (xmlParsePEReference) xmlParsePEReference__internal_alias __attribute((visibility("hidden"))); +#define xmlParsePEReference xmlParsePEReference__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParsePI +extern __typeof (xmlParsePI) xmlParsePI __attribute((alias("xmlParsePI__internal_alias"))); +#else +#ifndef xmlParsePI +extern __typeof (xmlParsePI) xmlParsePI__internal_alias __attribute((visibility("hidden"))); +#define xmlParsePI xmlParsePI__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParsePITarget +extern __typeof (xmlParsePITarget) xmlParsePITarget __attribute((alias("xmlParsePITarget__internal_alias"))); +#else +#ifndef xmlParsePITarget +extern __typeof (xmlParsePITarget) xmlParsePITarget__internal_alias __attribute((visibility("hidden"))); +#define xmlParsePITarget xmlParsePITarget__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParsePubidLiteral +extern __typeof (xmlParsePubidLiteral) xmlParsePubidLiteral __attribute((alias("xmlParsePubidLiteral__internal_alias"))); +#else +#ifndef xmlParsePubidLiteral +extern __typeof (xmlParsePubidLiteral) xmlParsePubidLiteral__internal_alias __attribute((visibility("hidden"))); +#define xmlParsePubidLiteral xmlParsePubidLiteral__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlParseQuotedString +extern __typeof (xmlParseQuotedString) xmlParseQuotedString __attribute((alias("xmlParseQuotedString__internal_alias"))); +#else +#ifndef xmlParseQuotedString +extern __typeof (xmlParseQuotedString) xmlParseQuotedString__internal_alias __attribute((visibility("hidden"))); +#define xmlParseQuotedString xmlParseQuotedString__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseReference +extern __typeof (xmlParseReference) xmlParseReference __attribute((alias("xmlParseReference__internal_alias"))); +#else +#ifndef xmlParseReference +extern __typeof (xmlParseReference) xmlParseReference__internal_alias __attribute((visibility("hidden"))); +#define xmlParseReference xmlParseReference__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseSDDecl +extern __typeof (xmlParseSDDecl) xmlParseSDDecl __attribute((alias("xmlParseSDDecl__internal_alias"))); +#else +#ifndef xmlParseSDDecl +extern __typeof (xmlParseSDDecl) xmlParseSDDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseSDDecl xmlParseSDDecl__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseStartTag +extern __typeof (xmlParseStartTag) xmlParseStartTag __attribute((alias("xmlParseStartTag__internal_alias"))); +#else +#ifndef xmlParseStartTag +extern __typeof (xmlParseStartTag) xmlParseStartTag__internal_alias __attribute((visibility("hidden"))); +#define xmlParseStartTag xmlParseStartTag__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseSystemLiteral +extern __typeof (xmlParseSystemLiteral) xmlParseSystemLiteral __attribute((alias("xmlParseSystemLiteral__internal_alias"))); +#else +#ifndef xmlParseSystemLiteral +extern __typeof (xmlParseSystemLiteral) xmlParseSystemLiteral__internal_alias __attribute((visibility("hidden"))); +#define xmlParseSystemLiteral xmlParseSystemLiteral__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseTextDecl +extern __typeof (xmlParseTextDecl) xmlParseTextDecl __attribute((alias("xmlParseTextDecl__internal_alias"))); +#else +#ifndef xmlParseTextDecl +extern __typeof (xmlParseTextDecl) xmlParseTextDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseTextDecl xmlParseTextDecl__internal_alias +#endif +#endif + +#ifdef bottom_uri +#undef xmlParseURI +extern __typeof (xmlParseURI) xmlParseURI __attribute((alias("xmlParseURI__internal_alias"))); +#else +#ifndef xmlParseURI +extern __typeof (xmlParseURI) xmlParseURI__internal_alias __attribute((visibility("hidden"))); +#define xmlParseURI xmlParseURI__internal_alias +#endif +#endif + +#ifdef bottom_uri +#undef xmlParseURIRaw +extern __typeof (xmlParseURIRaw) xmlParseURIRaw __attribute((alias("xmlParseURIRaw__internal_alias"))); +#else +#ifndef xmlParseURIRaw +extern __typeof (xmlParseURIRaw) xmlParseURIRaw__internal_alias __attribute((visibility("hidden"))); +#define xmlParseURIRaw xmlParseURIRaw__internal_alias +#endif +#endif + +#ifdef bottom_uri +#undef xmlParseURIReference +extern __typeof (xmlParseURIReference) xmlParseURIReference __attribute((alias("xmlParseURIReference__internal_alias"))); +#else +#ifndef xmlParseURIReference +extern __typeof (xmlParseURIReference) xmlParseURIReference__internal_alias __attribute((visibility("hidden"))); +#define xmlParseURIReference xmlParseURIReference__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseVersionInfo +extern __typeof (xmlParseVersionInfo) xmlParseVersionInfo __attribute((alias("xmlParseVersionInfo__internal_alias"))); +#else +#ifndef xmlParseVersionInfo +extern __typeof (xmlParseVersionInfo) xmlParseVersionInfo__internal_alias __attribute((visibility("hidden"))); +#define xmlParseVersionInfo xmlParseVersionInfo__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseVersionNum +extern __typeof (xmlParseVersionNum) xmlParseVersionNum __attribute((alias("xmlParseVersionNum__internal_alias"))); +#else +#ifndef xmlParseVersionNum +extern __typeof (xmlParseVersionNum) xmlParseVersionNum__internal_alias __attribute((visibility("hidden"))); +#define xmlParseVersionNum xmlParseVersionNum__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseXMLDecl +extern __typeof (xmlParseXMLDecl) xmlParseXMLDecl __attribute((alias("xmlParseXMLDecl__internal_alias"))); +#else +#ifndef xmlParseXMLDecl +extern __typeof (xmlParseXMLDecl) xmlParseXMLDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseXMLDecl xmlParseXMLDecl__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlParserAddNodeInfo +extern __typeof (xmlParserAddNodeInfo) xmlParserAddNodeInfo __attribute((alias("xmlParserAddNodeInfo__internal_alias"))); +#else +#ifndef xmlParserAddNodeInfo +extern __typeof (xmlParserAddNodeInfo) xmlParserAddNodeInfo__internal_alias __attribute((visibility("hidden"))); +#define xmlParserAddNodeInfo xmlParserAddNodeInfo__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlParserError +extern __typeof (xmlParserError) xmlParserError __attribute((alias("xmlParserError__internal_alias"))); +#else +#ifndef xmlParserError +extern __typeof (xmlParserError) xmlParserError__internal_alias __attribute((visibility("hidden"))); +#define xmlParserError xmlParserError__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlParserFindNodeInfo +extern __typeof (xmlParserFindNodeInfo) xmlParserFindNodeInfo __attribute((alias("xmlParserFindNodeInfo__internal_alias"))); +#else +#ifndef xmlParserFindNodeInfo +extern __typeof (xmlParserFindNodeInfo) xmlParserFindNodeInfo__internal_alias __attribute((visibility("hidden"))); +#define xmlParserFindNodeInfo xmlParserFindNodeInfo__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlParserFindNodeInfoIndex +extern __typeof (xmlParserFindNodeInfoIndex) xmlParserFindNodeInfoIndex __attribute((alias("xmlParserFindNodeInfoIndex__internal_alias"))); +#else +#ifndef xmlParserFindNodeInfoIndex +extern __typeof (xmlParserFindNodeInfoIndex) xmlParserFindNodeInfoIndex__internal_alias __attribute((visibility("hidden"))); +#define xmlParserFindNodeInfoIndex xmlParserFindNodeInfoIndex__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserGetDirectory +extern __typeof (xmlParserGetDirectory) xmlParserGetDirectory __attribute((alias("xmlParserGetDirectory__internal_alias"))); +#else +#ifndef xmlParserGetDirectory +extern __typeof (xmlParserGetDirectory) xmlParserGetDirectory__internal_alias __attribute((visibility("hidden"))); +#define xmlParserGetDirectory xmlParserGetDirectory__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParserHandlePEReference +extern __typeof (xmlParserHandlePEReference) xmlParserHandlePEReference __attribute((alias("xmlParserHandlePEReference__internal_alias"))); +#else +#ifndef xmlParserHandlePEReference +extern __typeof (xmlParserHandlePEReference) xmlParserHandlePEReference__internal_alias __attribute((visibility("hidden"))); +#define xmlParserHandlePEReference xmlParserHandlePEReference__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlParserHandleReference +extern __typeof (xmlParserHandleReference) xmlParserHandleReference __attribute((alias("xmlParserHandleReference__internal_alias"))); +#else +#ifndef xmlParserHandleReference +extern __typeof (xmlParserHandleReference) xmlParserHandleReference__internal_alias __attribute((visibility("hidden"))); +#define xmlParserHandleReference xmlParserHandleReference__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferCreateFd +extern __typeof (xmlParserInputBufferCreateFd) xmlParserInputBufferCreateFd __attribute((alias("xmlParserInputBufferCreateFd__internal_alias"))); +#else +#ifndef xmlParserInputBufferCreateFd +extern __typeof (xmlParserInputBufferCreateFd) xmlParserInputBufferCreateFd__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferCreateFd xmlParserInputBufferCreateFd__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferCreateFile +extern __typeof (xmlParserInputBufferCreateFile) xmlParserInputBufferCreateFile __attribute((alias("xmlParserInputBufferCreateFile__internal_alias"))); +#else +#ifndef xmlParserInputBufferCreateFile +extern __typeof (xmlParserInputBufferCreateFile) xmlParserInputBufferCreateFile__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferCreateFile xmlParserInputBufferCreateFile__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferCreateFilename +extern __typeof (xmlParserInputBufferCreateFilename) xmlParserInputBufferCreateFilename __attribute((alias("xmlParserInputBufferCreateFilename__internal_alias"))); +#else +#ifndef xmlParserInputBufferCreateFilename +extern __typeof (xmlParserInputBufferCreateFilename) xmlParserInputBufferCreateFilename__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferCreateFilename xmlParserInputBufferCreateFilename__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferCreateFilenameDefault +extern __typeof (xmlParserInputBufferCreateFilenameDefault) xmlParserInputBufferCreateFilenameDefault __attribute((alias("xmlParserInputBufferCreateFilenameDefault__internal_alias"))); +#else +#ifndef xmlParserInputBufferCreateFilenameDefault +extern __typeof (xmlParserInputBufferCreateFilenameDefault) xmlParserInputBufferCreateFilenameDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferCreateFilenameDefault xmlParserInputBufferCreateFilenameDefault__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferCreateIO +extern __typeof (xmlParserInputBufferCreateIO) xmlParserInputBufferCreateIO __attribute((alias("xmlParserInputBufferCreateIO__internal_alias"))); +#else +#ifndef xmlParserInputBufferCreateIO +extern __typeof (xmlParserInputBufferCreateIO) xmlParserInputBufferCreateIO__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferCreateIO xmlParserInputBufferCreateIO__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferCreateMem +extern __typeof (xmlParserInputBufferCreateMem) xmlParserInputBufferCreateMem __attribute((alias("xmlParserInputBufferCreateMem__internal_alias"))); +#else +#ifndef xmlParserInputBufferCreateMem +extern __typeof (xmlParserInputBufferCreateMem) xmlParserInputBufferCreateMem__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferCreateMem xmlParserInputBufferCreateMem__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferCreateStatic +extern __typeof (xmlParserInputBufferCreateStatic) xmlParserInputBufferCreateStatic __attribute((alias("xmlParserInputBufferCreateStatic__internal_alias"))); +#else +#ifndef xmlParserInputBufferCreateStatic +extern __typeof (xmlParserInputBufferCreateStatic) xmlParserInputBufferCreateStatic__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferCreateStatic xmlParserInputBufferCreateStatic__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferGrow +extern __typeof (xmlParserInputBufferGrow) xmlParserInputBufferGrow __attribute((alias("xmlParserInputBufferGrow__internal_alias"))); +#else +#ifndef xmlParserInputBufferGrow +extern __typeof (xmlParserInputBufferGrow) xmlParserInputBufferGrow__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferGrow xmlParserInputBufferGrow__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferPush +extern __typeof (xmlParserInputBufferPush) xmlParserInputBufferPush __attribute((alias("xmlParserInputBufferPush__internal_alias"))); +#else +#ifndef xmlParserInputBufferPush +extern __typeof (xmlParserInputBufferPush) xmlParserInputBufferPush__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferPush xmlParserInputBufferPush__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferRead +extern __typeof (xmlParserInputBufferRead) xmlParserInputBufferRead __attribute((alias("xmlParserInputBufferRead__internal_alias"))); +#else +#ifndef xmlParserInputBufferRead +extern __typeof (xmlParserInputBufferRead) xmlParserInputBufferRead__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferRead xmlParserInputBufferRead__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlParserInputGrow +extern __typeof (xmlParserInputGrow) xmlParserInputGrow __attribute((alias("xmlParserInputGrow__internal_alias"))); +#else +#ifndef xmlParserInputGrow +extern __typeof (xmlParserInputGrow) xmlParserInputGrow__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputGrow xmlParserInputGrow__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlParserInputRead +extern __typeof (xmlParserInputRead) xmlParserInputRead __attribute((alias("xmlParserInputRead__internal_alias"))); +#else +#ifndef xmlParserInputRead +extern __typeof (xmlParserInputRead) xmlParserInputRead__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputRead xmlParserInputRead__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlParserInputShrink +extern __typeof (xmlParserInputShrink) xmlParserInputShrink __attribute((alias("xmlParserInputShrink__internal_alias"))); +#else +#ifndef xmlParserInputShrink +extern __typeof (xmlParserInputShrink) xmlParserInputShrink__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputShrink xmlParserInputShrink__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlParserPrintFileContext +extern __typeof (xmlParserPrintFileContext) xmlParserPrintFileContext __attribute((alias("xmlParserPrintFileContext__internal_alias"))); +#else +#ifndef xmlParserPrintFileContext +extern __typeof (xmlParserPrintFileContext) xmlParserPrintFileContext__internal_alias __attribute((visibility("hidden"))); +#define xmlParserPrintFileContext xmlParserPrintFileContext__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlParserPrintFileInfo +extern __typeof (xmlParserPrintFileInfo) xmlParserPrintFileInfo __attribute((alias("xmlParserPrintFileInfo__internal_alias"))); +#else +#ifndef xmlParserPrintFileInfo +extern __typeof (xmlParserPrintFileInfo) xmlParserPrintFileInfo__internal_alias __attribute((visibility("hidden"))); +#define xmlParserPrintFileInfo xmlParserPrintFileInfo__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlParserValidityError +extern __typeof (xmlParserValidityError) xmlParserValidityError __attribute((alias("xmlParserValidityError__internal_alias"))); +#else +#ifndef xmlParserValidityError +extern __typeof (xmlParserValidityError) xmlParserValidityError__internal_alias __attribute((visibility("hidden"))); +#define xmlParserValidityError xmlParserValidityError__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlParserValidityWarning +extern __typeof (xmlParserValidityWarning) xmlParserValidityWarning __attribute((alias("xmlParserValidityWarning__internal_alias"))); +#else +#ifndef xmlParserValidityWarning +extern __typeof (xmlParserValidityWarning) xmlParserValidityWarning__internal_alias __attribute((visibility("hidden"))); +#define xmlParserValidityWarning xmlParserValidityWarning__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlParserWarning +extern __typeof (xmlParserWarning) xmlParserWarning __attribute((alias("xmlParserWarning__internal_alias"))); +#else +#ifndef xmlParserWarning +extern __typeof (xmlParserWarning) xmlParserWarning__internal_alias __attribute((visibility("hidden"))); +#define xmlParserWarning xmlParserWarning__internal_alias +#endif +#endif + +#ifdef bottom_uri +#undef xmlPathToURI +extern __typeof (xmlPathToURI) xmlPathToURI __attribute((alias("xmlPathToURI__internal_alias"))); +#else +#ifndef xmlPathToURI +extern __typeof (xmlPathToURI) xmlPathToURI__internal_alias __attribute((visibility("hidden"))); +#define xmlPathToURI xmlPathToURI__internal_alias +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlPatternFromRoot +extern __typeof (xmlPatternFromRoot) xmlPatternFromRoot __attribute((alias("xmlPatternFromRoot__internal_alias"))); +#else +#ifndef xmlPatternFromRoot +extern __typeof (xmlPatternFromRoot) xmlPatternFromRoot__internal_alias __attribute((visibility("hidden"))); +#define xmlPatternFromRoot xmlPatternFromRoot__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlPatternGetStreamCtxt +extern __typeof (xmlPatternGetStreamCtxt) xmlPatternGetStreamCtxt __attribute((alias("xmlPatternGetStreamCtxt__internal_alias"))); +#else +#ifndef xmlPatternGetStreamCtxt +extern __typeof (xmlPatternGetStreamCtxt) xmlPatternGetStreamCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlPatternGetStreamCtxt xmlPatternGetStreamCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlPatternMatch +extern __typeof (xmlPatternMatch) xmlPatternMatch __attribute((alias("xmlPatternMatch__internal_alias"))); +#else +#ifndef xmlPatternMatch +extern __typeof (xmlPatternMatch) xmlPatternMatch__internal_alias __attribute((visibility("hidden"))); +#define xmlPatternMatch xmlPatternMatch__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlPatternMaxDepth +extern __typeof (xmlPatternMaxDepth) xmlPatternMaxDepth __attribute((alias("xmlPatternMaxDepth__internal_alias"))); +#else +#ifndef xmlPatternMaxDepth +extern __typeof (xmlPatternMaxDepth) xmlPatternMaxDepth__internal_alias __attribute((visibility("hidden"))); +#define xmlPatternMaxDepth xmlPatternMaxDepth__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlPatternMinDepth +extern __typeof (xmlPatternMinDepth) xmlPatternMinDepth __attribute((alias("xmlPatternMinDepth__internal_alias"))); +#else +#ifndef xmlPatternMinDepth +extern __typeof (xmlPatternMinDepth) xmlPatternMinDepth__internal_alias __attribute((visibility("hidden"))); +#define xmlPatternMinDepth xmlPatternMinDepth__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlPatternStreamable +extern __typeof (xmlPatternStreamable) xmlPatternStreamable __attribute((alias("xmlPatternStreamable__internal_alias"))); +#else +#ifndef xmlPatternStreamable +extern __typeof (xmlPatternStreamable) xmlPatternStreamable__internal_alias __attribute((visibility("hidden"))); +#define xmlPatternStreamable xmlPatternStreamable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlPatterncompile +extern __typeof (xmlPatterncompile) xmlPatterncompile __attribute((alias("xmlPatterncompile__internal_alias"))); +#else +#ifndef xmlPatterncompile +extern __typeof (xmlPatterncompile) xmlPatterncompile__internal_alias __attribute((visibility("hidden"))); +#define xmlPatterncompile xmlPatterncompile__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlPedanticParserDefault +extern __typeof (xmlPedanticParserDefault) xmlPedanticParserDefault __attribute((alias("xmlPedanticParserDefault__internal_alias"))); +#else +#ifndef xmlPedanticParserDefault +extern __typeof (xmlPedanticParserDefault) xmlPedanticParserDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlPedanticParserDefault xmlPedanticParserDefault__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlPopInput +extern __typeof (xmlPopInput) xmlPopInput __attribute((alias("xmlPopInput__internal_alias"))); +#else +#ifndef xmlPopInput +extern __typeof (xmlPopInput) xmlPopInput__internal_alias __attribute((visibility("hidden"))); +#define xmlPopInput xmlPopInput__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlPopInputCallbacks +extern __typeof (xmlPopInputCallbacks) xmlPopInputCallbacks __attribute((alias("xmlPopInputCallbacks__internal_alias"))); +#else +#ifndef xmlPopInputCallbacks +extern __typeof (xmlPopInputCallbacks) xmlPopInputCallbacks__internal_alias __attribute((visibility("hidden"))); +#define xmlPopInputCallbacks xmlPopInputCallbacks__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlPreviousElementSibling +extern __typeof (xmlPreviousElementSibling) xmlPreviousElementSibling __attribute((alias("xmlPreviousElementSibling__internal_alias"))); +#else +#ifndef xmlPreviousElementSibling +extern __typeof (xmlPreviousElementSibling) xmlPreviousElementSibling__internal_alias __attribute((visibility("hidden"))); +#define xmlPreviousElementSibling xmlPreviousElementSibling__internal_alias +#endif +#endif +#endif + +#ifdef bottom_uri +#undef xmlPrintURI +extern __typeof (xmlPrintURI) xmlPrintURI __attribute((alias("xmlPrintURI__internal_alias"))); +#else +#ifndef xmlPrintURI +extern __typeof (xmlPrintURI) xmlPrintURI__internal_alias __attribute((visibility("hidden"))); +#define xmlPrintURI xmlPrintURI__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlPushInput +extern __typeof (xmlPushInput) xmlPushInput __attribute((alias("xmlPushInput__internal_alias"))); +#else +#ifndef xmlPushInput +extern __typeof (xmlPushInput) xmlPushInput__internal_alias __attribute((visibility("hidden"))); +#define xmlPushInput xmlPushInput__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlRMutexLock +extern __typeof (xmlRMutexLock) xmlRMutexLock __attribute((alias("xmlRMutexLock__internal_alias"))); +#else +#ifndef xmlRMutexLock +extern __typeof (xmlRMutexLock) xmlRMutexLock__internal_alias __attribute((visibility("hidden"))); +#define xmlRMutexLock xmlRMutexLock__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlRMutexUnlock +extern __typeof (xmlRMutexUnlock) xmlRMutexUnlock __attribute((alias("xmlRMutexUnlock__internal_alias"))); +#else +#ifndef xmlRMutexUnlock +extern __typeof (xmlRMutexUnlock) xmlRMutexUnlock__internal_alias __attribute((visibility("hidden"))); +#define xmlRMutexUnlock xmlRMutexUnlock__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlReadDoc +extern __typeof (xmlReadDoc) xmlReadDoc __attribute((alias("xmlReadDoc__internal_alias"))); +#else +#ifndef xmlReadDoc +extern __typeof (xmlReadDoc) xmlReadDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlReadDoc xmlReadDoc__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlReadFd +extern __typeof (xmlReadFd) xmlReadFd __attribute((alias("xmlReadFd__internal_alias"))); +#else +#ifndef xmlReadFd +extern __typeof (xmlReadFd) xmlReadFd__internal_alias __attribute((visibility("hidden"))); +#define xmlReadFd xmlReadFd__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlReadFile +extern __typeof (xmlReadFile) xmlReadFile __attribute((alias("xmlReadFile__internal_alias"))); +#else +#ifndef xmlReadFile +extern __typeof (xmlReadFile) xmlReadFile__internal_alias __attribute((visibility("hidden"))); +#define xmlReadFile xmlReadFile__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlReadIO +extern __typeof (xmlReadIO) xmlReadIO __attribute((alias("xmlReadIO__internal_alias"))); +#else +#ifndef xmlReadIO +extern __typeof (xmlReadIO) xmlReadIO__internal_alias __attribute((visibility("hidden"))); +#define xmlReadIO xmlReadIO__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlReadMemory +extern __typeof (xmlReadMemory) xmlReadMemory __attribute((alias("xmlReadMemory__internal_alias"))); +#else +#ifndef xmlReadMemory +extern __typeof (xmlReadMemory) xmlReadMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlReadMemory xmlReadMemory__internal_alias +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderForDoc +extern __typeof (xmlReaderForDoc) xmlReaderForDoc __attribute((alias("xmlReaderForDoc__internal_alias"))); +#else +#ifndef xmlReaderForDoc +extern __typeof (xmlReaderForDoc) xmlReaderForDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderForDoc xmlReaderForDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderForFd +extern __typeof (xmlReaderForFd) xmlReaderForFd __attribute((alias("xmlReaderForFd__internal_alias"))); +#else +#ifndef xmlReaderForFd +extern __typeof (xmlReaderForFd) xmlReaderForFd__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderForFd xmlReaderForFd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderForFile +extern __typeof (xmlReaderForFile) xmlReaderForFile __attribute((alias("xmlReaderForFile__internal_alias"))); +#else +#ifndef xmlReaderForFile +extern __typeof (xmlReaderForFile) xmlReaderForFile__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderForFile xmlReaderForFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderForIO +extern __typeof (xmlReaderForIO) xmlReaderForIO __attribute((alias("xmlReaderForIO__internal_alias"))); +#else +#ifndef xmlReaderForIO +extern __typeof (xmlReaderForIO) xmlReaderForIO__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderForIO xmlReaderForIO__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderForMemory +extern __typeof (xmlReaderForMemory) xmlReaderForMemory __attribute((alias("xmlReaderForMemory__internal_alias"))); +#else +#ifndef xmlReaderForMemory +extern __typeof (xmlReaderForMemory) xmlReaderForMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderForMemory xmlReaderForMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderNewDoc +extern __typeof (xmlReaderNewDoc) xmlReaderNewDoc __attribute((alias("xmlReaderNewDoc__internal_alias"))); +#else +#ifndef xmlReaderNewDoc +extern __typeof (xmlReaderNewDoc) xmlReaderNewDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderNewDoc xmlReaderNewDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderNewFd +extern __typeof (xmlReaderNewFd) xmlReaderNewFd __attribute((alias("xmlReaderNewFd__internal_alias"))); +#else +#ifndef xmlReaderNewFd +extern __typeof (xmlReaderNewFd) xmlReaderNewFd__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderNewFd xmlReaderNewFd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderNewFile +extern __typeof (xmlReaderNewFile) xmlReaderNewFile __attribute((alias("xmlReaderNewFile__internal_alias"))); +#else +#ifndef xmlReaderNewFile +extern __typeof (xmlReaderNewFile) xmlReaderNewFile__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderNewFile xmlReaderNewFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderNewIO +extern __typeof (xmlReaderNewIO) xmlReaderNewIO __attribute((alias("xmlReaderNewIO__internal_alias"))); +#else +#ifndef xmlReaderNewIO +extern __typeof (xmlReaderNewIO) xmlReaderNewIO__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderNewIO xmlReaderNewIO__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderNewMemory +extern __typeof (xmlReaderNewMemory) xmlReaderNewMemory __attribute((alias("xmlReaderNewMemory__internal_alias"))); +#else +#ifndef xmlReaderNewMemory +extern __typeof (xmlReaderNewMemory) xmlReaderNewMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderNewMemory xmlReaderNewMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderNewWalker +extern __typeof (xmlReaderNewWalker) xmlReaderNewWalker __attribute((alias("xmlReaderNewWalker__internal_alias"))); +#else +#ifndef xmlReaderNewWalker +extern __typeof (xmlReaderNewWalker) xmlReaderNewWalker__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderNewWalker xmlReaderNewWalker__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderWalker +extern __typeof (xmlReaderWalker) xmlReaderWalker __attribute((alias("xmlReaderWalker__internal_alias"))); +#else +#ifndef xmlReaderWalker +extern __typeof (xmlReaderWalker) xmlReaderWalker__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderWalker xmlReaderWalker__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlReallocLoc +extern __typeof (xmlReallocLoc) xmlReallocLoc __attribute((alias("xmlReallocLoc__internal_alias"))); +#else +#ifndef xmlReallocLoc +extern __typeof (xmlReallocLoc) xmlReallocLoc__internal_alias __attribute((visibility("hidden"))); +#define xmlReallocLoc xmlReallocLoc__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlReconciliateNs +extern __typeof (xmlReconciliateNs) xmlReconciliateNs __attribute((alias("xmlReconciliateNs__internal_alias"))); +#else +#ifndef xmlReconciliateNs +extern __typeof (xmlReconciliateNs) xmlReconciliateNs__internal_alias __attribute((visibility("hidden"))); +#define xmlReconciliateNs xmlReconciliateNs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlRecoverDoc +extern __typeof (xmlRecoverDoc) xmlRecoverDoc __attribute((alias("xmlRecoverDoc__internal_alias"))); +#else +#ifndef xmlRecoverDoc +extern __typeof (xmlRecoverDoc) xmlRecoverDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlRecoverDoc xmlRecoverDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlRecoverFile +extern __typeof (xmlRecoverFile) xmlRecoverFile __attribute((alias("xmlRecoverFile__internal_alias"))); +#else +#ifndef xmlRecoverFile +extern __typeof (xmlRecoverFile) xmlRecoverFile__internal_alias __attribute((visibility("hidden"))); +#define xmlRecoverFile xmlRecoverFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlRecoverMemory +extern __typeof (xmlRecoverMemory) xmlRecoverMemory __attribute((alias("xmlRecoverMemory__internal_alias"))); +#else +#ifndef xmlRecoverMemory +extern __typeof (xmlRecoverMemory) xmlRecoverMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlRecoverMemory xmlRecoverMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegExecErrInfo +extern __typeof (xmlRegExecErrInfo) xmlRegExecErrInfo __attribute((alias("xmlRegExecErrInfo__internal_alias"))); +#else +#ifndef xmlRegExecErrInfo +extern __typeof (xmlRegExecErrInfo) xmlRegExecErrInfo__internal_alias __attribute((visibility("hidden"))); +#define xmlRegExecErrInfo xmlRegExecErrInfo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegExecNextValues +extern __typeof (xmlRegExecNextValues) xmlRegExecNextValues __attribute((alias("xmlRegExecNextValues__internal_alias"))); +#else +#ifndef xmlRegExecNextValues +extern __typeof (xmlRegExecNextValues) xmlRegExecNextValues__internal_alias __attribute((visibility("hidden"))); +#define xmlRegExecNextValues xmlRegExecNextValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegExecPushString +extern __typeof (xmlRegExecPushString) xmlRegExecPushString __attribute((alias("xmlRegExecPushString__internal_alias"))); +#else +#ifndef xmlRegExecPushString +extern __typeof (xmlRegExecPushString) xmlRegExecPushString__internal_alias __attribute((visibility("hidden"))); +#define xmlRegExecPushString xmlRegExecPushString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegExecPushString2 +extern __typeof (xmlRegExecPushString2) xmlRegExecPushString2 __attribute((alias("xmlRegExecPushString2__internal_alias"))); +#else +#ifndef xmlRegExecPushString2 +extern __typeof (xmlRegExecPushString2) xmlRegExecPushString2__internal_alias __attribute((visibility("hidden"))); +#define xmlRegExecPushString2 xmlRegExecPushString2__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegFreeExecCtxt +extern __typeof (xmlRegFreeExecCtxt) xmlRegFreeExecCtxt __attribute((alias("xmlRegFreeExecCtxt__internal_alias"))); +#else +#ifndef xmlRegFreeExecCtxt +extern __typeof (xmlRegFreeExecCtxt) xmlRegFreeExecCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlRegFreeExecCtxt xmlRegFreeExecCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegFreeRegexp +extern __typeof (xmlRegFreeRegexp) xmlRegFreeRegexp __attribute((alias("xmlRegFreeRegexp__internal_alias"))); +#else +#ifndef xmlRegFreeRegexp +extern __typeof (xmlRegFreeRegexp) xmlRegFreeRegexp__internal_alias __attribute((visibility("hidden"))); +#define xmlRegFreeRegexp xmlRegFreeRegexp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegNewExecCtxt +extern __typeof (xmlRegNewExecCtxt) xmlRegNewExecCtxt __attribute((alias("xmlRegNewExecCtxt__internal_alias"))); +#else +#ifndef xmlRegNewExecCtxt +extern __typeof (xmlRegNewExecCtxt) xmlRegNewExecCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlRegNewExecCtxt xmlRegNewExecCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegexpCompile +extern __typeof (xmlRegexpCompile) xmlRegexpCompile __attribute((alias("xmlRegexpCompile__internal_alias"))); +#else +#ifndef xmlRegexpCompile +extern __typeof (xmlRegexpCompile) xmlRegexpCompile__internal_alias __attribute((visibility("hidden"))); +#define xmlRegexpCompile xmlRegexpCompile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegexpExec +extern __typeof (xmlRegexpExec) xmlRegexpExec __attribute((alias("xmlRegexpExec__internal_alias"))); +#else +#ifndef xmlRegexpExec +extern __typeof (xmlRegexpExec) xmlRegexpExec__internal_alias __attribute((visibility("hidden"))); +#define xmlRegexpExec xmlRegexpExec__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegexpIsDeterminist +extern __typeof (xmlRegexpIsDeterminist) xmlRegexpIsDeterminist __attribute((alias("xmlRegexpIsDeterminist__internal_alias"))); +#else +#ifndef xmlRegexpIsDeterminist +extern __typeof (xmlRegexpIsDeterminist) xmlRegexpIsDeterminist__internal_alias __attribute((visibility("hidden"))); +#define xmlRegexpIsDeterminist xmlRegexpIsDeterminist__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegexpPrint +extern __typeof (xmlRegexpPrint) xmlRegexpPrint __attribute((alias("xmlRegexpPrint__internal_alias"))); +#else +#ifndef xmlRegexpPrint +extern __typeof (xmlRegexpPrint) xmlRegexpPrint__internal_alias __attribute((visibility("hidden"))); +#define xmlRegexpPrint xmlRegexpPrint__internal_alias +#endif +#endif +#endif + +#ifdef bottom_encoding +#undef xmlRegisterCharEncodingHandler +extern __typeof (xmlRegisterCharEncodingHandler) xmlRegisterCharEncodingHandler __attribute((alias("xmlRegisterCharEncodingHandler__internal_alias"))); +#else +#ifndef xmlRegisterCharEncodingHandler +extern __typeof (xmlRegisterCharEncodingHandler) xmlRegisterCharEncodingHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlRegisterCharEncodingHandler xmlRegisterCharEncodingHandler__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlRegisterDefaultInputCallbacks +extern __typeof (xmlRegisterDefaultInputCallbacks) xmlRegisterDefaultInputCallbacks __attribute((alias("xmlRegisterDefaultInputCallbacks__internal_alias"))); +#else +#ifndef xmlRegisterDefaultInputCallbacks +extern __typeof (xmlRegisterDefaultInputCallbacks) xmlRegisterDefaultInputCallbacks__internal_alias __attribute((visibility("hidden"))); +#define xmlRegisterDefaultInputCallbacks xmlRegisterDefaultInputCallbacks__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlRegisterDefaultOutputCallbacks +extern __typeof (xmlRegisterDefaultOutputCallbacks) xmlRegisterDefaultOutputCallbacks __attribute((alias("xmlRegisterDefaultOutputCallbacks__internal_alias"))); +#else +#ifndef xmlRegisterDefaultOutputCallbacks +extern __typeof (xmlRegisterDefaultOutputCallbacks) xmlRegisterDefaultOutputCallbacks__internal_alias __attribute((visibility("hidden"))); +#define xmlRegisterDefaultOutputCallbacks xmlRegisterDefaultOutputCallbacks__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) && defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlRegisterHTTPPostCallbacks +extern __typeof (xmlRegisterHTTPPostCallbacks) xmlRegisterHTTPPostCallbacks __attribute((alias("xmlRegisterHTTPPostCallbacks__internal_alias"))); +#else +#ifndef xmlRegisterHTTPPostCallbacks +extern __typeof (xmlRegisterHTTPPostCallbacks) xmlRegisterHTTPPostCallbacks__internal_alias __attribute((visibility("hidden"))); +#define xmlRegisterHTTPPostCallbacks xmlRegisterHTTPPostCallbacks__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlRegisterInputCallbacks +extern __typeof (xmlRegisterInputCallbacks) xmlRegisterInputCallbacks __attribute((alias("xmlRegisterInputCallbacks__internal_alias"))); +#else +#ifndef xmlRegisterInputCallbacks +extern __typeof (xmlRegisterInputCallbacks) xmlRegisterInputCallbacks__internal_alias __attribute((visibility("hidden"))); +#define xmlRegisterInputCallbacks xmlRegisterInputCallbacks__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlRegisterNodeDefault +extern __typeof (xmlRegisterNodeDefault) xmlRegisterNodeDefault __attribute((alias("xmlRegisterNodeDefault__internal_alias"))); +#else +#ifndef xmlRegisterNodeDefault +extern __typeof (xmlRegisterNodeDefault) xmlRegisterNodeDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlRegisterNodeDefault xmlRegisterNodeDefault__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlRegisterOutputCallbacks +extern __typeof (xmlRegisterOutputCallbacks) xmlRegisterOutputCallbacks __attribute((alias("xmlRegisterOutputCallbacks__internal_alias"))); +#else +#ifndef xmlRegisterOutputCallbacks +extern __typeof (xmlRegisterOutputCallbacks) xmlRegisterOutputCallbacks__internal_alias __attribute((visibility("hidden"))); +#define xmlRegisterOutputCallbacks xmlRegisterOutputCallbacks__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGCleanupTypes +extern __typeof (xmlRelaxNGCleanupTypes) xmlRelaxNGCleanupTypes __attribute((alias("xmlRelaxNGCleanupTypes__internal_alias"))); +#else +#ifndef xmlRelaxNGCleanupTypes +extern __typeof (xmlRelaxNGCleanupTypes) xmlRelaxNGCleanupTypes__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGCleanupTypes xmlRelaxNGCleanupTypes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGDump +extern __typeof (xmlRelaxNGDump) xmlRelaxNGDump __attribute((alias("xmlRelaxNGDump__internal_alias"))); +#else +#ifndef xmlRelaxNGDump +extern __typeof (xmlRelaxNGDump) xmlRelaxNGDump__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGDump xmlRelaxNGDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGDumpTree +extern __typeof (xmlRelaxNGDumpTree) xmlRelaxNGDumpTree __attribute((alias("xmlRelaxNGDumpTree__internal_alias"))); +#else +#ifndef xmlRelaxNGDumpTree +extern __typeof (xmlRelaxNGDumpTree) xmlRelaxNGDumpTree__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGDumpTree xmlRelaxNGDumpTree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGFree +extern __typeof (xmlRelaxNGFree) xmlRelaxNGFree __attribute((alias("xmlRelaxNGFree__internal_alias"))); +#else +#ifndef xmlRelaxNGFree +extern __typeof (xmlRelaxNGFree) xmlRelaxNGFree__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGFree xmlRelaxNGFree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGFreeParserCtxt +extern __typeof (xmlRelaxNGFreeParserCtxt) xmlRelaxNGFreeParserCtxt __attribute((alias("xmlRelaxNGFreeParserCtxt__internal_alias"))); +#else +#ifndef xmlRelaxNGFreeParserCtxt +extern __typeof (xmlRelaxNGFreeParserCtxt) xmlRelaxNGFreeParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGFreeParserCtxt xmlRelaxNGFreeParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGFreeValidCtxt +extern __typeof (xmlRelaxNGFreeValidCtxt) xmlRelaxNGFreeValidCtxt __attribute((alias("xmlRelaxNGFreeValidCtxt__internal_alias"))); +#else +#ifndef xmlRelaxNGFreeValidCtxt +extern __typeof (xmlRelaxNGFreeValidCtxt) xmlRelaxNGFreeValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGFreeValidCtxt xmlRelaxNGFreeValidCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGGetParserErrors +extern __typeof (xmlRelaxNGGetParserErrors) xmlRelaxNGGetParserErrors __attribute((alias("xmlRelaxNGGetParserErrors__internal_alias"))); +#else +#ifndef xmlRelaxNGGetParserErrors +extern __typeof (xmlRelaxNGGetParserErrors) xmlRelaxNGGetParserErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGGetParserErrors xmlRelaxNGGetParserErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGGetValidErrors +extern __typeof (xmlRelaxNGGetValidErrors) xmlRelaxNGGetValidErrors __attribute((alias("xmlRelaxNGGetValidErrors__internal_alias"))); +#else +#ifndef xmlRelaxNGGetValidErrors +extern __typeof (xmlRelaxNGGetValidErrors) xmlRelaxNGGetValidErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGGetValidErrors xmlRelaxNGGetValidErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGInitTypes +extern __typeof (xmlRelaxNGInitTypes) xmlRelaxNGInitTypes __attribute((alias("xmlRelaxNGInitTypes__internal_alias"))); +#else +#ifndef xmlRelaxNGInitTypes +extern __typeof (xmlRelaxNGInitTypes) xmlRelaxNGInitTypes__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGInitTypes xmlRelaxNGInitTypes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGNewDocParserCtxt +extern __typeof (xmlRelaxNGNewDocParserCtxt) xmlRelaxNGNewDocParserCtxt __attribute((alias("xmlRelaxNGNewDocParserCtxt__internal_alias"))); +#else +#ifndef xmlRelaxNGNewDocParserCtxt +extern __typeof (xmlRelaxNGNewDocParserCtxt) xmlRelaxNGNewDocParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGNewDocParserCtxt xmlRelaxNGNewDocParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGNewMemParserCtxt +extern __typeof (xmlRelaxNGNewMemParserCtxt) xmlRelaxNGNewMemParserCtxt __attribute((alias("xmlRelaxNGNewMemParserCtxt__internal_alias"))); +#else +#ifndef xmlRelaxNGNewMemParserCtxt +extern __typeof (xmlRelaxNGNewMemParserCtxt) xmlRelaxNGNewMemParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGNewMemParserCtxt xmlRelaxNGNewMemParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGNewParserCtxt +extern __typeof (xmlRelaxNGNewParserCtxt) xmlRelaxNGNewParserCtxt __attribute((alias("xmlRelaxNGNewParserCtxt__internal_alias"))); +#else +#ifndef xmlRelaxNGNewParserCtxt +extern __typeof (xmlRelaxNGNewParserCtxt) xmlRelaxNGNewParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGNewParserCtxt xmlRelaxNGNewParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGNewValidCtxt +extern __typeof (xmlRelaxNGNewValidCtxt) xmlRelaxNGNewValidCtxt __attribute((alias("xmlRelaxNGNewValidCtxt__internal_alias"))); +#else +#ifndef xmlRelaxNGNewValidCtxt +extern __typeof (xmlRelaxNGNewValidCtxt) xmlRelaxNGNewValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGNewValidCtxt xmlRelaxNGNewValidCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGParse +extern __typeof (xmlRelaxNGParse) xmlRelaxNGParse __attribute((alias("xmlRelaxNGParse__internal_alias"))); +#else +#ifndef xmlRelaxNGParse +extern __typeof (xmlRelaxNGParse) xmlRelaxNGParse__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGParse xmlRelaxNGParse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGSetParserErrors +extern __typeof (xmlRelaxNGSetParserErrors) xmlRelaxNGSetParserErrors __attribute((alias("xmlRelaxNGSetParserErrors__internal_alias"))); +#else +#ifndef xmlRelaxNGSetParserErrors +extern __typeof (xmlRelaxNGSetParserErrors) xmlRelaxNGSetParserErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGSetParserErrors xmlRelaxNGSetParserErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGSetParserStructuredErrors +extern __typeof (xmlRelaxNGSetParserStructuredErrors) xmlRelaxNGSetParserStructuredErrors __attribute((alias("xmlRelaxNGSetParserStructuredErrors__internal_alias"))); +#else +#ifndef xmlRelaxNGSetParserStructuredErrors +extern __typeof (xmlRelaxNGSetParserStructuredErrors) xmlRelaxNGSetParserStructuredErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGSetParserStructuredErrors xmlRelaxNGSetParserStructuredErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGSetValidErrors +extern __typeof (xmlRelaxNGSetValidErrors) xmlRelaxNGSetValidErrors __attribute((alias("xmlRelaxNGSetValidErrors__internal_alias"))); +#else +#ifndef xmlRelaxNGSetValidErrors +extern __typeof (xmlRelaxNGSetValidErrors) xmlRelaxNGSetValidErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGSetValidErrors xmlRelaxNGSetValidErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGSetValidStructuredErrors +extern __typeof (xmlRelaxNGSetValidStructuredErrors) xmlRelaxNGSetValidStructuredErrors __attribute((alias("xmlRelaxNGSetValidStructuredErrors__internal_alias"))); +#else +#ifndef xmlRelaxNGSetValidStructuredErrors +extern __typeof (xmlRelaxNGSetValidStructuredErrors) xmlRelaxNGSetValidStructuredErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGSetValidStructuredErrors xmlRelaxNGSetValidStructuredErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGValidateDoc +extern __typeof (xmlRelaxNGValidateDoc) xmlRelaxNGValidateDoc __attribute((alias("xmlRelaxNGValidateDoc__internal_alias"))); +#else +#ifndef xmlRelaxNGValidateDoc +extern __typeof (xmlRelaxNGValidateDoc) xmlRelaxNGValidateDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGValidateDoc xmlRelaxNGValidateDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGValidateFullElement +extern __typeof (xmlRelaxNGValidateFullElement) xmlRelaxNGValidateFullElement __attribute((alias("xmlRelaxNGValidateFullElement__internal_alias"))); +#else +#ifndef xmlRelaxNGValidateFullElement +extern __typeof (xmlRelaxNGValidateFullElement) xmlRelaxNGValidateFullElement__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGValidateFullElement xmlRelaxNGValidateFullElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGValidatePopElement +extern __typeof (xmlRelaxNGValidatePopElement) xmlRelaxNGValidatePopElement __attribute((alias("xmlRelaxNGValidatePopElement__internal_alias"))); +#else +#ifndef xmlRelaxNGValidatePopElement +extern __typeof (xmlRelaxNGValidatePopElement) xmlRelaxNGValidatePopElement__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGValidatePopElement xmlRelaxNGValidatePopElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGValidatePushCData +extern __typeof (xmlRelaxNGValidatePushCData) xmlRelaxNGValidatePushCData __attribute((alias("xmlRelaxNGValidatePushCData__internal_alias"))); +#else +#ifndef xmlRelaxNGValidatePushCData +extern __typeof (xmlRelaxNGValidatePushCData) xmlRelaxNGValidatePushCData__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGValidatePushCData xmlRelaxNGValidatePushCData__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGValidatePushElement +extern __typeof (xmlRelaxNGValidatePushElement) xmlRelaxNGValidatePushElement __attribute((alias("xmlRelaxNGValidatePushElement__internal_alias"))); +#else +#ifndef xmlRelaxNGValidatePushElement +extern __typeof (xmlRelaxNGValidatePushElement) xmlRelaxNGValidatePushElement__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGValidatePushElement xmlRelaxNGValidatePushElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxParserSetFlag +extern __typeof (xmlRelaxParserSetFlag) xmlRelaxParserSetFlag __attribute((alias("xmlRelaxParserSetFlag__internal_alias"))); +#else +#ifndef xmlRelaxParserSetFlag +extern __typeof (xmlRelaxParserSetFlag) xmlRelaxParserSetFlag__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxParserSetFlag xmlRelaxParserSetFlag__internal_alias +#endif +#endif +#endif + +#ifdef bottom_valid +#undef xmlRemoveID +extern __typeof (xmlRemoveID) xmlRemoveID __attribute((alias("xmlRemoveID__internal_alias"))); +#else +#ifndef xmlRemoveID +extern __typeof (xmlRemoveID) xmlRemoveID__internal_alias __attribute((visibility("hidden"))); +#define xmlRemoveID xmlRemoveID__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlRemoveProp +extern __typeof (xmlRemoveProp) xmlRemoveProp __attribute((alias("xmlRemoveProp__internal_alias"))); +#else +#ifndef xmlRemoveProp +extern __typeof (xmlRemoveProp) xmlRemoveProp__internal_alias __attribute((visibility("hidden"))); +#define xmlRemoveProp xmlRemoveProp__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlRemoveRef +extern __typeof (xmlRemoveRef) xmlRemoveRef __attribute((alias("xmlRemoveRef__internal_alias"))); +#else +#ifndef xmlRemoveRef +extern __typeof (xmlRemoveRef) xmlRemoveRef__internal_alias __attribute((visibility("hidden"))); +#define xmlRemoveRef xmlRemoveRef__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_tree +#undef xmlReplaceNode +extern __typeof (xmlReplaceNode) xmlReplaceNode __attribute((alias("xmlReplaceNode__internal_alias"))); +#else +#ifndef xmlReplaceNode +extern __typeof (xmlReplaceNode) xmlReplaceNode__internal_alias __attribute((visibility("hidden"))); +#define xmlReplaceNode xmlReplaceNode__internal_alias +#endif +#endif +#endif + +#ifdef bottom_error +#undef xmlResetError +extern __typeof (xmlResetError) xmlResetError __attribute((alias("xmlResetError__internal_alias"))); +#else +#ifndef xmlResetError +extern __typeof (xmlResetError) xmlResetError__internal_alias __attribute((visibility("hidden"))); +#define xmlResetError xmlResetError__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlResetLastError +extern __typeof (xmlResetLastError) xmlResetLastError __attribute((alias("xmlResetLastError__internal_alias"))); +#else +#ifndef xmlResetLastError +extern __typeof (xmlResetLastError) xmlResetLastError__internal_alias __attribute((visibility("hidden"))); +#define xmlResetLastError xmlResetLastError__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2AttributeDecl +extern __typeof (xmlSAX2AttributeDecl) xmlSAX2AttributeDecl __attribute((alias("xmlSAX2AttributeDecl__internal_alias"))); +#else +#ifndef xmlSAX2AttributeDecl +extern __typeof (xmlSAX2AttributeDecl) xmlSAX2AttributeDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2AttributeDecl xmlSAX2AttributeDecl__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2CDataBlock +extern __typeof (xmlSAX2CDataBlock) xmlSAX2CDataBlock __attribute((alias("xmlSAX2CDataBlock__internal_alias"))); +#else +#ifndef xmlSAX2CDataBlock +extern __typeof (xmlSAX2CDataBlock) xmlSAX2CDataBlock__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2CDataBlock xmlSAX2CDataBlock__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2Characters +extern __typeof (xmlSAX2Characters) xmlSAX2Characters __attribute((alias("xmlSAX2Characters__internal_alias"))); +#else +#ifndef xmlSAX2Characters +extern __typeof (xmlSAX2Characters) xmlSAX2Characters__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2Characters xmlSAX2Characters__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2Comment +extern __typeof (xmlSAX2Comment) xmlSAX2Comment __attribute((alias("xmlSAX2Comment__internal_alias"))); +#else +#ifndef xmlSAX2Comment +extern __typeof (xmlSAX2Comment) xmlSAX2Comment__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2Comment xmlSAX2Comment__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2ElementDecl +extern __typeof (xmlSAX2ElementDecl) xmlSAX2ElementDecl __attribute((alias("xmlSAX2ElementDecl__internal_alias"))); +#else +#ifndef xmlSAX2ElementDecl +extern __typeof (xmlSAX2ElementDecl) xmlSAX2ElementDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2ElementDecl xmlSAX2ElementDecl__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2EndDocument +extern __typeof (xmlSAX2EndDocument) xmlSAX2EndDocument __attribute((alias("xmlSAX2EndDocument__internal_alias"))); +#else +#ifndef xmlSAX2EndDocument +extern __typeof (xmlSAX2EndDocument) xmlSAX2EndDocument__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2EndDocument xmlSAX2EndDocument__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_SAX2 +#undef xmlSAX2EndElement +extern __typeof (xmlSAX2EndElement) xmlSAX2EndElement __attribute((alias("xmlSAX2EndElement__internal_alias"))); +#else +#ifndef xmlSAX2EndElement +extern __typeof (xmlSAX2EndElement) xmlSAX2EndElement__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2EndElement xmlSAX2EndElement__internal_alias +#endif +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2EndElementNs +extern __typeof (xmlSAX2EndElementNs) xmlSAX2EndElementNs __attribute((alias("xmlSAX2EndElementNs__internal_alias"))); +#else +#ifndef xmlSAX2EndElementNs +extern __typeof (xmlSAX2EndElementNs) xmlSAX2EndElementNs__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2EndElementNs xmlSAX2EndElementNs__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2EntityDecl +extern __typeof (xmlSAX2EntityDecl) xmlSAX2EntityDecl __attribute((alias("xmlSAX2EntityDecl__internal_alias"))); +#else +#ifndef xmlSAX2EntityDecl +extern __typeof (xmlSAX2EntityDecl) xmlSAX2EntityDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2EntityDecl xmlSAX2EntityDecl__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2ExternalSubset +extern __typeof (xmlSAX2ExternalSubset) xmlSAX2ExternalSubset __attribute((alias("xmlSAX2ExternalSubset__internal_alias"))); +#else +#ifndef xmlSAX2ExternalSubset +extern __typeof (xmlSAX2ExternalSubset) xmlSAX2ExternalSubset__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2ExternalSubset xmlSAX2ExternalSubset__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2GetColumnNumber +extern __typeof (xmlSAX2GetColumnNumber) xmlSAX2GetColumnNumber __attribute((alias("xmlSAX2GetColumnNumber__internal_alias"))); +#else +#ifndef xmlSAX2GetColumnNumber +extern __typeof (xmlSAX2GetColumnNumber) xmlSAX2GetColumnNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2GetColumnNumber xmlSAX2GetColumnNumber__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2GetEntity +extern __typeof (xmlSAX2GetEntity) xmlSAX2GetEntity __attribute((alias("xmlSAX2GetEntity__internal_alias"))); +#else +#ifndef xmlSAX2GetEntity +extern __typeof (xmlSAX2GetEntity) xmlSAX2GetEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2GetEntity xmlSAX2GetEntity__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2GetLineNumber +extern __typeof (xmlSAX2GetLineNumber) xmlSAX2GetLineNumber __attribute((alias("xmlSAX2GetLineNumber__internal_alias"))); +#else +#ifndef xmlSAX2GetLineNumber +extern __typeof (xmlSAX2GetLineNumber) xmlSAX2GetLineNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2GetLineNumber xmlSAX2GetLineNumber__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2GetParameterEntity +extern __typeof (xmlSAX2GetParameterEntity) xmlSAX2GetParameterEntity __attribute((alias("xmlSAX2GetParameterEntity__internal_alias"))); +#else +#ifndef xmlSAX2GetParameterEntity +extern __typeof (xmlSAX2GetParameterEntity) xmlSAX2GetParameterEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2GetParameterEntity xmlSAX2GetParameterEntity__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2GetPublicId +extern __typeof (xmlSAX2GetPublicId) xmlSAX2GetPublicId __attribute((alias("xmlSAX2GetPublicId__internal_alias"))); +#else +#ifndef xmlSAX2GetPublicId +extern __typeof (xmlSAX2GetPublicId) xmlSAX2GetPublicId__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2GetPublicId xmlSAX2GetPublicId__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2GetSystemId +extern __typeof (xmlSAX2GetSystemId) xmlSAX2GetSystemId __attribute((alias("xmlSAX2GetSystemId__internal_alias"))); +#else +#ifndef xmlSAX2GetSystemId +extern __typeof (xmlSAX2GetSystemId) xmlSAX2GetSystemId__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2GetSystemId xmlSAX2GetSystemId__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2HasExternalSubset +extern __typeof (xmlSAX2HasExternalSubset) xmlSAX2HasExternalSubset __attribute((alias("xmlSAX2HasExternalSubset__internal_alias"))); +#else +#ifndef xmlSAX2HasExternalSubset +extern __typeof (xmlSAX2HasExternalSubset) xmlSAX2HasExternalSubset__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2HasExternalSubset xmlSAX2HasExternalSubset__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2HasInternalSubset +extern __typeof (xmlSAX2HasInternalSubset) xmlSAX2HasInternalSubset __attribute((alias("xmlSAX2HasInternalSubset__internal_alias"))); +#else +#ifndef xmlSAX2HasInternalSubset +extern __typeof (xmlSAX2HasInternalSubset) xmlSAX2HasInternalSubset__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2HasInternalSubset xmlSAX2HasInternalSubset__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2IgnorableWhitespace +extern __typeof (xmlSAX2IgnorableWhitespace) xmlSAX2IgnorableWhitespace __attribute((alias("xmlSAX2IgnorableWhitespace__internal_alias"))); +#else +#ifndef xmlSAX2IgnorableWhitespace +extern __typeof (xmlSAX2IgnorableWhitespace) xmlSAX2IgnorableWhitespace__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2IgnorableWhitespace xmlSAX2IgnorableWhitespace__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2InitDefaultSAXHandler +extern __typeof (xmlSAX2InitDefaultSAXHandler) xmlSAX2InitDefaultSAXHandler __attribute((alias("xmlSAX2InitDefaultSAXHandler__internal_alias"))); +#else +#ifndef xmlSAX2InitDefaultSAXHandler +extern __typeof (xmlSAX2InitDefaultSAXHandler) xmlSAX2InitDefaultSAXHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2InitDefaultSAXHandler xmlSAX2InitDefaultSAXHandler__internal_alias +#endif +#endif + +#if defined(LIBXML_DOCB_ENABLED) +#ifdef bottom_SAX2 +#undef xmlSAX2InitDocbDefaultSAXHandler +extern __typeof (xmlSAX2InitDocbDefaultSAXHandler) xmlSAX2InitDocbDefaultSAXHandler __attribute((alias("xmlSAX2InitDocbDefaultSAXHandler__internal_alias"))); +#else +#ifndef xmlSAX2InitDocbDefaultSAXHandler +extern __typeof (xmlSAX2InitDocbDefaultSAXHandler) xmlSAX2InitDocbDefaultSAXHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2InitDocbDefaultSAXHandler xmlSAX2InitDocbDefaultSAXHandler__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_SAX2 +#undef xmlSAX2InitHtmlDefaultSAXHandler +extern __typeof (xmlSAX2InitHtmlDefaultSAXHandler) xmlSAX2InitHtmlDefaultSAXHandler __attribute((alias("xmlSAX2InitHtmlDefaultSAXHandler__internal_alias"))); +#else +#ifndef xmlSAX2InitHtmlDefaultSAXHandler +extern __typeof (xmlSAX2InitHtmlDefaultSAXHandler) xmlSAX2InitHtmlDefaultSAXHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2InitHtmlDefaultSAXHandler xmlSAX2InitHtmlDefaultSAXHandler__internal_alias +#endif +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2InternalSubset +extern __typeof (xmlSAX2InternalSubset) xmlSAX2InternalSubset __attribute((alias("xmlSAX2InternalSubset__internal_alias"))); +#else +#ifndef xmlSAX2InternalSubset +extern __typeof (xmlSAX2InternalSubset) xmlSAX2InternalSubset__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2InternalSubset xmlSAX2InternalSubset__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2IsStandalone +extern __typeof (xmlSAX2IsStandalone) xmlSAX2IsStandalone __attribute((alias("xmlSAX2IsStandalone__internal_alias"))); +#else +#ifndef xmlSAX2IsStandalone +extern __typeof (xmlSAX2IsStandalone) xmlSAX2IsStandalone__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2IsStandalone xmlSAX2IsStandalone__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2NotationDecl +extern __typeof (xmlSAX2NotationDecl) xmlSAX2NotationDecl __attribute((alias("xmlSAX2NotationDecl__internal_alias"))); +#else +#ifndef xmlSAX2NotationDecl +extern __typeof (xmlSAX2NotationDecl) xmlSAX2NotationDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2NotationDecl xmlSAX2NotationDecl__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2ProcessingInstruction +extern __typeof (xmlSAX2ProcessingInstruction) xmlSAX2ProcessingInstruction __attribute((alias("xmlSAX2ProcessingInstruction__internal_alias"))); +#else +#ifndef xmlSAX2ProcessingInstruction +extern __typeof (xmlSAX2ProcessingInstruction) xmlSAX2ProcessingInstruction__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2ProcessingInstruction xmlSAX2ProcessingInstruction__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2Reference +extern __typeof (xmlSAX2Reference) xmlSAX2Reference __attribute((alias("xmlSAX2Reference__internal_alias"))); +#else +#ifndef xmlSAX2Reference +extern __typeof (xmlSAX2Reference) xmlSAX2Reference__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2Reference xmlSAX2Reference__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2ResolveEntity +extern __typeof (xmlSAX2ResolveEntity) xmlSAX2ResolveEntity __attribute((alias("xmlSAX2ResolveEntity__internal_alias"))); +#else +#ifndef xmlSAX2ResolveEntity +extern __typeof (xmlSAX2ResolveEntity) xmlSAX2ResolveEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2ResolveEntity xmlSAX2ResolveEntity__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2SetDocumentLocator +extern __typeof (xmlSAX2SetDocumentLocator) xmlSAX2SetDocumentLocator __attribute((alias("xmlSAX2SetDocumentLocator__internal_alias"))); +#else +#ifndef xmlSAX2SetDocumentLocator +extern __typeof (xmlSAX2SetDocumentLocator) xmlSAX2SetDocumentLocator__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2SetDocumentLocator xmlSAX2SetDocumentLocator__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2StartDocument +extern __typeof (xmlSAX2StartDocument) xmlSAX2StartDocument __attribute((alias("xmlSAX2StartDocument__internal_alias"))); +#else +#ifndef xmlSAX2StartDocument +extern __typeof (xmlSAX2StartDocument) xmlSAX2StartDocument__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2StartDocument xmlSAX2StartDocument__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_SAX2 +#undef xmlSAX2StartElement +extern __typeof (xmlSAX2StartElement) xmlSAX2StartElement __attribute((alias("xmlSAX2StartElement__internal_alias"))); +#else +#ifndef xmlSAX2StartElement +extern __typeof (xmlSAX2StartElement) xmlSAX2StartElement__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2StartElement xmlSAX2StartElement__internal_alias +#endif +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2StartElementNs +extern __typeof (xmlSAX2StartElementNs) xmlSAX2StartElementNs __attribute((alias("xmlSAX2StartElementNs__internal_alias"))); +#else +#ifndef xmlSAX2StartElementNs +extern __typeof (xmlSAX2StartElementNs) xmlSAX2StartElementNs__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2StartElementNs xmlSAX2StartElementNs__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2UnparsedEntityDecl +extern __typeof (xmlSAX2UnparsedEntityDecl) xmlSAX2UnparsedEntityDecl __attribute((alias("xmlSAX2UnparsedEntityDecl__internal_alias"))); +#else +#ifndef xmlSAX2UnparsedEntityDecl +extern __typeof (xmlSAX2UnparsedEntityDecl) xmlSAX2UnparsedEntityDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2UnparsedEntityDecl xmlSAX2UnparsedEntityDecl__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_SAX2 +#undef xmlSAXDefaultVersion +extern __typeof (xmlSAXDefaultVersion) xmlSAXDefaultVersion __attribute((alias("xmlSAXDefaultVersion__internal_alias"))); +#else +#ifndef xmlSAXDefaultVersion +extern __typeof (xmlSAXDefaultVersion) xmlSAXDefaultVersion__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXDefaultVersion xmlSAXDefaultVersion__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_parser +#undef xmlSAXParseDTD +extern __typeof (xmlSAXParseDTD) xmlSAXParseDTD __attribute((alias("xmlSAXParseDTD__internal_alias"))); +#else +#ifndef xmlSAXParseDTD +extern __typeof (xmlSAXParseDTD) xmlSAXParseDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXParseDTD xmlSAXParseDTD__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSAXParseDoc +extern __typeof (xmlSAXParseDoc) xmlSAXParseDoc __attribute((alias("xmlSAXParseDoc__internal_alias"))); +#else +#ifndef xmlSAXParseDoc +extern __typeof (xmlSAXParseDoc) xmlSAXParseDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXParseDoc xmlSAXParseDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSAXParseEntity +extern __typeof (xmlSAXParseEntity) xmlSAXParseEntity __attribute((alias("xmlSAXParseEntity__internal_alias"))); +#else +#ifndef xmlSAXParseEntity +extern __typeof (xmlSAXParseEntity) xmlSAXParseEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXParseEntity xmlSAXParseEntity__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSAXParseFile +extern __typeof (xmlSAXParseFile) xmlSAXParseFile __attribute((alias("xmlSAXParseFile__internal_alias"))); +#else +#ifndef xmlSAXParseFile +extern __typeof (xmlSAXParseFile) xmlSAXParseFile__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXParseFile xmlSAXParseFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSAXParseFileWithData +extern __typeof (xmlSAXParseFileWithData) xmlSAXParseFileWithData __attribute((alias("xmlSAXParseFileWithData__internal_alias"))); +#else +#ifndef xmlSAXParseFileWithData +extern __typeof (xmlSAXParseFileWithData) xmlSAXParseFileWithData__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXParseFileWithData xmlSAXParseFileWithData__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSAXParseMemory +extern __typeof (xmlSAXParseMemory) xmlSAXParseMemory __attribute((alias("xmlSAXParseMemory__internal_alias"))); +#else +#ifndef xmlSAXParseMemory +extern __typeof (xmlSAXParseMemory) xmlSAXParseMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXParseMemory xmlSAXParseMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSAXParseMemoryWithData +extern __typeof (xmlSAXParseMemoryWithData) xmlSAXParseMemoryWithData __attribute((alias("xmlSAXParseMemoryWithData__internal_alias"))); +#else +#ifndef xmlSAXParseMemoryWithData +extern __typeof (xmlSAXParseMemoryWithData) xmlSAXParseMemoryWithData__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXParseMemoryWithData xmlSAXParseMemoryWithData__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSAXUserParseFile +extern __typeof (xmlSAXUserParseFile) xmlSAXUserParseFile __attribute((alias("xmlSAXUserParseFile__internal_alias"))); +#else +#ifndef xmlSAXUserParseFile +extern __typeof (xmlSAXUserParseFile) xmlSAXUserParseFile__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXUserParseFile xmlSAXUserParseFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSAXUserParseMemory +extern __typeof (xmlSAXUserParseMemory) xmlSAXUserParseMemory __attribute((alias("xmlSAXUserParseMemory__internal_alias"))); +#else +#ifndef xmlSAXUserParseMemory +extern __typeof (xmlSAXUserParseMemory) xmlSAXUserParseMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXUserParseMemory xmlSAXUserParseMemory__internal_alias +#endif +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAXVersion +extern __typeof (xmlSAXVersion) xmlSAXVersion __attribute((alias("xmlSAXVersion__internal_alias"))); +#else +#ifndef xmlSAXVersion +extern __typeof (xmlSAXVersion) xmlSAXVersion__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXVersion xmlSAXVersion__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveClose +extern __typeof (xmlSaveClose) xmlSaveClose __attribute((alias("xmlSaveClose__internal_alias"))); +#else +#ifndef xmlSaveClose +extern __typeof (xmlSaveClose) xmlSaveClose__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveClose xmlSaveClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveDoc +extern __typeof (xmlSaveDoc) xmlSaveDoc __attribute((alias("xmlSaveDoc__internal_alias"))); +#else +#ifndef xmlSaveDoc +extern __typeof (xmlSaveDoc) xmlSaveDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveDoc xmlSaveDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveFile +extern __typeof (xmlSaveFile) xmlSaveFile __attribute((alias("xmlSaveFile__internal_alias"))); +#else +#ifndef xmlSaveFile +extern __typeof (xmlSaveFile) xmlSaveFile__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveFile xmlSaveFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveFileEnc +extern __typeof (xmlSaveFileEnc) xmlSaveFileEnc __attribute((alias("xmlSaveFileEnc__internal_alias"))); +#else +#ifndef xmlSaveFileEnc +extern __typeof (xmlSaveFileEnc) xmlSaveFileEnc__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveFileEnc xmlSaveFileEnc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveFileTo +extern __typeof (xmlSaveFileTo) xmlSaveFileTo __attribute((alias("xmlSaveFileTo__internal_alias"))); +#else +#ifndef xmlSaveFileTo +extern __typeof (xmlSaveFileTo) xmlSaveFileTo__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveFileTo xmlSaveFileTo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveFlush +extern __typeof (xmlSaveFlush) xmlSaveFlush __attribute((alias("xmlSaveFlush__internal_alias"))); +#else +#ifndef xmlSaveFlush +extern __typeof (xmlSaveFlush) xmlSaveFlush__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveFlush xmlSaveFlush__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveFormatFile +extern __typeof (xmlSaveFormatFile) xmlSaveFormatFile __attribute((alias("xmlSaveFormatFile__internal_alias"))); +#else +#ifndef xmlSaveFormatFile +extern __typeof (xmlSaveFormatFile) xmlSaveFormatFile__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveFormatFile xmlSaveFormatFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveFormatFileEnc +extern __typeof (xmlSaveFormatFileEnc) xmlSaveFormatFileEnc __attribute((alias("xmlSaveFormatFileEnc__internal_alias"))); +#else +#ifndef xmlSaveFormatFileEnc +extern __typeof (xmlSaveFormatFileEnc) xmlSaveFormatFileEnc__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveFormatFileEnc xmlSaveFormatFileEnc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveFormatFileTo +extern __typeof (xmlSaveFormatFileTo) xmlSaveFormatFileTo __attribute((alias("xmlSaveFormatFileTo__internal_alias"))); +#else +#ifndef xmlSaveFormatFileTo +extern __typeof (xmlSaveFormatFileTo) xmlSaveFormatFileTo__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveFormatFileTo xmlSaveFormatFileTo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveSetAttrEscape +extern __typeof (xmlSaveSetAttrEscape) xmlSaveSetAttrEscape __attribute((alias("xmlSaveSetAttrEscape__internal_alias"))); +#else +#ifndef xmlSaveSetAttrEscape +extern __typeof (xmlSaveSetAttrEscape) xmlSaveSetAttrEscape__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveSetAttrEscape xmlSaveSetAttrEscape__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveSetEscape +extern __typeof (xmlSaveSetEscape) xmlSaveSetEscape __attribute((alias("xmlSaveSetEscape__internal_alias"))); +#else +#ifndef xmlSaveSetEscape +extern __typeof (xmlSaveSetEscape) xmlSaveSetEscape__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveSetEscape xmlSaveSetEscape__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveToBuffer +extern __typeof (xmlSaveToBuffer) xmlSaveToBuffer __attribute((alias("xmlSaveToBuffer__internal_alias"))); +#else +#ifndef xmlSaveToBuffer +extern __typeof (xmlSaveToBuffer) xmlSaveToBuffer__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveToBuffer xmlSaveToBuffer__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveToFd +extern __typeof (xmlSaveToFd) xmlSaveToFd __attribute((alias("xmlSaveToFd__internal_alias"))); +#else +#ifndef xmlSaveToFd +extern __typeof (xmlSaveToFd) xmlSaveToFd__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveToFd xmlSaveToFd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveToFilename +extern __typeof (xmlSaveToFilename) xmlSaveToFilename __attribute((alias("xmlSaveToFilename__internal_alias"))); +#else +#ifndef xmlSaveToFilename +extern __typeof (xmlSaveToFilename) xmlSaveToFilename__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveToFilename xmlSaveToFilename__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveToIO +extern __typeof (xmlSaveToIO) xmlSaveToIO __attribute((alias("xmlSaveToIO__internal_alias"))); +#else +#ifndef xmlSaveToIO +extern __typeof (xmlSaveToIO) xmlSaveToIO__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveToIO xmlSaveToIO__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveTree +extern __typeof (xmlSaveTree) xmlSaveTree __attribute((alias("xmlSaveTree__internal_alias"))); +#else +#ifndef xmlSaveTree +extern __typeof (xmlSaveTree) xmlSaveTree__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveTree xmlSaveTree__internal_alias +#endif +#endif +#endif + +#ifdef bottom_uri +#undef xmlSaveUri +extern __typeof (xmlSaveUri) xmlSaveUri __attribute((alias("xmlSaveUri__internal_alias"))); +#else +#ifndef xmlSaveUri +extern __typeof (xmlSaveUri) xmlSaveUri__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveUri xmlSaveUri__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlScanName +extern __typeof (xmlScanName) xmlScanName __attribute((alias("xmlScanName__internal_alias"))); +#else +#ifndef xmlScanName +extern __typeof (xmlScanName) xmlScanName__internal_alias __attribute((visibility("hidden"))); +#define xmlScanName xmlScanName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaCheckFacet +extern __typeof (xmlSchemaCheckFacet) xmlSchemaCheckFacet __attribute((alias("xmlSchemaCheckFacet__internal_alias"))); +#else +#ifndef xmlSchemaCheckFacet +extern __typeof (xmlSchemaCheckFacet) xmlSchemaCheckFacet__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaCheckFacet xmlSchemaCheckFacet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaCleanupTypes +extern __typeof (xmlSchemaCleanupTypes) xmlSchemaCleanupTypes __attribute((alias("xmlSchemaCleanupTypes__internal_alias"))); +#else +#ifndef xmlSchemaCleanupTypes +extern __typeof (xmlSchemaCleanupTypes) xmlSchemaCleanupTypes__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaCleanupTypes xmlSchemaCleanupTypes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaCollapseString +extern __typeof (xmlSchemaCollapseString) xmlSchemaCollapseString __attribute((alias("xmlSchemaCollapseString__internal_alias"))); +#else +#ifndef xmlSchemaCollapseString +extern __typeof (xmlSchemaCollapseString) xmlSchemaCollapseString__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaCollapseString xmlSchemaCollapseString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaCompareValues +extern __typeof (xmlSchemaCompareValues) xmlSchemaCompareValues __attribute((alias("xmlSchemaCompareValues__internal_alias"))); +#else +#ifndef xmlSchemaCompareValues +extern __typeof (xmlSchemaCompareValues) xmlSchemaCompareValues__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaCompareValues xmlSchemaCompareValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaCompareValuesWhtsp +extern __typeof (xmlSchemaCompareValuesWhtsp) xmlSchemaCompareValuesWhtsp __attribute((alias("xmlSchemaCompareValuesWhtsp__internal_alias"))); +#else +#ifndef xmlSchemaCompareValuesWhtsp +extern __typeof (xmlSchemaCompareValuesWhtsp) xmlSchemaCompareValuesWhtsp__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaCompareValuesWhtsp xmlSchemaCompareValuesWhtsp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaCopyValue +extern __typeof (xmlSchemaCopyValue) xmlSchemaCopyValue __attribute((alias("xmlSchemaCopyValue__internal_alias"))); +#else +#ifndef xmlSchemaCopyValue +extern __typeof (xmlSchemaCopyValue) xmlSchemaCopyValue__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaCopyValue xmlSchemaCopyValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaDump +extern __typeof (xmlSchemaDump) xmlSchemaDump __attribute((alias("xmlSchemaDump__internal_alias"))); +#else +#ifndef xmlSchemaDump +extern __typeof (xmlSchemaDump) xmlSchemaDump__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaDump xmlSchemaDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaFree +extern __typeof (xmlSchemaFree) xmlSchemaFree __attribute((alias("xmlSchemaFree__internal_alias"))); +#else +#ifndef xmlSchemaFree +extern __typeof (xmlSchemaFree) xmlSchemaFree__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaFree xmlSchemaFree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaFreeFacet +extern __typeof (xmlSchemaFreeFacet) xmlSchemaFreeFacet __attribute((alias("xmlSchemaFreeFacet__internal_alias"))); +#else +#ifndef xmlSchemaFreeFacet +extern __typeof (xmlSchemaFreeFacet) xmlSchemaFreeFacet__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaFreeFacet xmlSchemaFreeFacet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaFreeParserCtxt +extern __typeof (xmlSchemaFreeParserCtxt) xmlSchemaFreeParserCtxt __attribute((alias("xmlSchemaFreeParserCtxt__internal_alias"))); +#else +#ifndef xmlSchemaFreeParserCtxt +extern __typeof (xmlSchemaFreeParserCtxt) xmlSchemaFreeParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaFreeParserCtxt xmlSchemaFreeParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaFreeType +extern __typeof (xmlSchemaFreeType) xmlSchemaFreeType __attribute((alias("xmlSchemaFreeType__internal_alias"))); +#else +#ifndef xmlSchemaFreeType +extern __typeof (xmlSchemaFreeType) xmlSchemaFreeType__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaFreeType xmlSchemaFreeType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaFreeValidCtxt +extern __typeof (xmlSchemaFreeValidCtxt) xmlSchemaFreeValidCtxt __attribute((alias("xmlSchemaFreeValidCtxt__internal_alias"))); +#else +#ifndef xmlSchemaFreeValidCtxt +extern __typeof (xmlSchemaFreeValidCtxt) xmlSchemaFreeValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaFreeValidCtxt xmlSchemaFreeValidCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaFreeValue +extern __typeof (xmlSchemaFreeValue) xmlSchemaFreeValue __attribute((alias("xmlSchemaFreeValue__internal_alias"))); +#else +#ifndef xmlSchemaFreeValue +extern __typeof (xmlSchemaFreeValue) xmlSchemaFreeValue__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaFreeValue xmlSchemaFreeValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaFreeWildcard +extern __typeof (xmlSchemaFreeWildcard) xmlSchemaFreeWildcard __attribute((alias("xmlSchemaFreeWildcard__internal_alias"))); +#else +#ifndef xmlSchemaFreeWildcard +extern __typeof (xmlSchemaFreeWildcard) xmlSchemaFreeWildcard__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaFreeWildcard xmlSchemaFreeWildcard__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaGetBuiltInListSimpleTypeItemType +extern __typeof (xmlSchemaGetBuiltInListSimpleTypeItemType) xmlSchemaGetBuiltInListSimpleTypeItemType __attribute((alias("xmlSchemaGetBuiltInListSimpleTypeItemType__internal_alias"))); +#else +#ifndef xmlSchemaGetBuiltInListSimpleTypeItemType +extern __typeof (xmlSchemaGetBuiltInListSimpleTypeItemType) xmlSchemaGetBuiltInListSimpleTypeItemType__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetBuiltInListSimpleTypeItemType xmlSchemaGetBuiltInListSimpleTypeItemType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaGetBuiltInType +extern __typeof (xmlSchemaGetBuiltInType) xmlSchemaGetBuiltInType __attribute((alias("xmlSchemaGetBuiltInType__internal_alias"))); +#else +#ifndef xmlSchemaGetBuiltInType +extern __typeof (xmlSchemaGetBuiltInType) xmlSchemaGetBuiltInType__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetBuiltInType xmlSchemaGetBuiltInType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaGetCanonValue +extern __typeof (xmlSchemaGetCanonValue) xmlSchemaGetCanonValue __attribute((alias("xmlSchemaGetCanonValue__internal_alias"))); +#else +#ifndef xmlSchemaGetCanonValue +extern __typeof (xmlSchemaGetCanonValue) xmlSchemaGetCanonValue__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetCanonValue xmlSchemaGetCanonValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaGetCanonValueWhtsp +extern __typeof (xmlSchemaGetCanonValueWhtsp) xmlSchemaGetCanonValueWhtsp __attribute((alias("xmlSchemaGetCanonValueWhtsp__internal_alias"))); +#else +#ifndef xmlSchemaGetCanonValueWhtsp +extern __typeof (xmlSchemaGetCanonValueWhtsp) xmlSchemaGetCanonValueWhtsp__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetCanonValueWhtsp xmlSchemaGetCanonValueWhtsp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaGetFacetValueAsULong +extern __typeof (xmlSchemaGetFacetValueAsULong) xmlSchemaGetFacetValueAsULong __attribute((alias("xmlSchemaGetFacetValueAsULong__internal_alias"))); +#else +#ifndef xmlSchemaGetFacetValueAsULong +extern __typeof (xmlSchemaGetFacetValueAsULong) xmlSchemaGetFacetValueAsULong__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetFacetValueAsULong xmlSchemaGetFacetValueAsULong__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaGetParserErrors +extern __typeof (xmlSchemaGetParserErrors) xmlSchemaGetParserErrors __attribute((alias("xmlSchemaGetParserErrors__internal_alias"))); +#else +#ifndef xmlSchemaGetParserErrors +extern __typeof (xmlSchemaGetParserErrors) xmlSchemaGetParserErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetParserErrors xmlSchemaGetParserErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaGetPredefinedType +extern __typeof (xmlSchemaGetPredefinedType) xmlSchemaGetPredefinedType __attribute((alias("xmlSchemaGetPredefinedType__internal_alias"))); +#else +#ifndef xmlSchemaGetPredefinedType +extern __typeof (xmlSchemaGetPredefinedType) xmlSchemaGetPredefinedType__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetPredefinedType xmlSchemaGetPredefinedType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaGetValType +extern __typeof (xmlSchemaGetValType) xmlSchemaGetValType __attribute((alias("xmlSchemaGetValType__internal_alias"))); +#else +#ifndef xmlSchemaGetValType +extern __typeof (xmlSchemaGetValType) xmlSchemaGetValType__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetValType xmlSchemaGetValType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaGetValidErrors +extern __typeof (xmlSchemaGetValidErrors) xmlSchemaGetValidErrors __attribute((alias("xmlSchemaGetValidErrors__internal_alias"))); +#else +#ifndef xmlSchemaGetValidErrors +extern __typeof (xmlSchemaGetValidErrors) xmlSchemaGetValidErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetValidErrors xmlSchemaGetValidErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaInitTypes +extern __typeof (xmlSchemaInitTypes) xmlSchemaInitTypes __attribute((alias("xmlSchemaInitTypes__internal_alias"))); +#else +#ifndef xmlSchemaInitTypes +extern __typeof (xmlSchemaInitTypes) xmlSchemaInitTypes__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaInitTypes xmlSchemaInitTypes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaIsBuiltInTypeFacet +extern __typeof (xmlSchemaIsBuiltInTypeFacet) xmlSchemaIsBuiltInTypeFacet __attribute((alias("xmlSchemaIsBuiltInTypeFacet__internal_alias"))); +#else +#ifndef xmlSchemaIsBuiltInTypeFacet +extern __typeof (xmlSchemaIsBuiltInTypeFacet) xmlSchemaIsBuiltInTypeFacet__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaIsBuiltInTypeFacet xmlSchemaIsBuiltInTypeFacet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaIsValid +extern __typeof (xmlSchemaIsValid) xmlSchemaIsValid __attribute((alias("xmlSchemaIsValid__internal_alias"))); +#else +#ifndef xmlSchemaIsValid +extern __typeof (xmlSchemaIsValid) xmlSchemaIsValid__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaIsValid xmlSchemaIsValid__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaNewDocParserCtxt +extern __typeof (xmlSchemaNewDocParserCtxt) xmlSchemaNewDocParserCtxt __attribute((alias("xmlSchemaNewDocParserCtxt__internal_alias"))); +#else +#ifndef xmlSchemaNewDocParserCtxt +extern __typeof (xmlSchemaNewDocParserCtxt) xmlSchemaNewDocParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaNewDocParserCtxt xmlSchemaNewDocParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaNewFacet +extern __typeof (xmlSchemaNewFacet) xmlSchemaNewFacet __attribute((alias("xmlSchemaNewFacet__internal_alias"))); +#else +#ifndef xmlSchemaNewFacet +extern __typeof (xmlSchemaNewFacet) xmlSchemaNewFacet__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaNewFacet xmlSchemaNewFacet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaNewMemParserCtxt +extern __typeof (xmlSchemaNewMemParserCtxt) xmlSchemaNewMemParserCtxt __attribute((alias("xmlSchemaNewMemParserCtxt__internal_alias"))); +#else +#ifndef xmlSchemaNewMemParserCtxt +extern __typeof (xmlSchemaNewMemParserCtxt) xmlSchemaNewMemParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaNewMemParserCtxt xmlSchemaNewMemParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaNewNOTATIONValue +extern __typeof (xmlSchemaNewNOTATIONValue) xmlSchemaNewNOTATIONValue __attribute((alias("xmlSchemaNewNOTATIONValue__internal_alias"))); +#else +#ifndef xmlSchemaNewNOTATIONValue +extern __typeof (xmlSchemaNewNOTATIONValue) xmlSchemaNewNOTATIONValue__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaNewNOTATIONValue xmlSchemaNewNOTATIONValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaNewParserCtxt +extern __typeof (xmlSchemaNewParserCtxt) xmlSchemaNewParserCtxt __attribute((alias("xmlSchemaNewParserCtxt__internal_alias"))); +#else +#ifndef xmlSchemaNewParserCtxt +extern __typeof (xmlSchemaNewParserCtxt) xmlSchemaNewParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaNewParserCtxt xmlSchemaNewParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaNewQNameValue +extern __typeof (xmlSchemaNewQNameValue) xmlSchemaNewQNameValue __attribute((alias("xmlSchemaNewQNameValue__internal_alias"))); +#else +#ifndef xmlSchemaNewQNameValue +extern __typeof (xmlSchemaNewQNameValue) xmlSchemaNewQNameValue__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaNewQNameValue xmlSchemaNewQNameValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaNewStringValue +extern __typeof (xmlSchemaNewStringValue) xmlSchemaNewStringValue __attribute((alias("xmlSchemaNewStringValue__internal_alias"))); +#else +#ifndef xmlSchemaNewStringValue +extern __typeof (xmlSchemaNewStringValue) xmlSchemaNewStringValue__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaNewStringValue xmlSchemaNewStringValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaNewValidCtxt +extern __typeof (xmlSchemaNewValidCtxt) xmlSchemaNewValidCtxt __attribute((alias("xmlSchemaNewValidCtxt__internal_alias"))); +#else +#ifndef xmlSchemaNewValidCtxt +extern __typeof (xmlSchemaNewValidCtxt) xmlSchemaNewValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaNewValidCtxt xmlSchemaNewValidCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaParse +extern __typeof (xmlSchemaParse) xmlSchemaParse __attribute((alias("xmlSchemaParse__internal_alias"))); +#else +#ifndef xmlSchemaParse +extern __typeof (xmlSchemaParse) xmlSchemaParse__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaParse xmlSchemaParse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaSAXPlug +extern __typeof (xmlSchemaSAXPlug) xmlSchemaSAXPlug __attribute((alias("xmlSchemaSAXPlug__internal_alias"))); +#else +#ifndef xmlSchemaSAXPlug +extern __typeof (xmlSchemaSAXPlug) xmlSchemaSAXPlug__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSAXPlug xmlSchemaSAXPlug__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaSAXUnplug +extern __typeof (xmlSchemaSAXUnplug) xmlSchemaSAXUnplug __attribute((alias("xmlSchemaSAXUnplug__internal_alias"))); +#else +#ifndef xmlSchemaSAXUnplug +extern __typeof (xmlSchemaSAXUnplug) xmlSchemaSAXUnplug__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSAXUnplug xmlSchemaSAXUnplug__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaSetParserErrors +extern __typeof (xmlSchemaSetParserErrors) xmlSchemaSetParserErrors __attribute((alias("xmlSchemaSetParserErrors__internal_alias"))); +#else +#ifndef xmlSchemaSetParserErrors +extern __typeof (xmlSchemaSetParserErrors) xmlSchemaSetParserErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSetParserErrors xmlSchemaSetParserErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaSetParserStructuredErrors +extern __typeof (xmlSchemaSetParserStructuredErrors) xmlSchemaSetParserStructuredErrors __attribute((alias("xmlSchemaSetParserStructuredErrors__internal_alias"))); +#else +#ifndef xmlSchemaSetParserStructuredErrors +extern __typeof (xmlSchemaSetParserStructuredErrors) xmlSchemaSetParserStructuredErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSetParserStructuredErrors xmlSchemaSetParserStructuredErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaSetValidErrors +extern __typeof (xmlSchemaSetValidErrors) xmlSchemaSetValidErrors __attribute((alias("xmlSchemaSetValidErrors__internal_alias"))); +#else +#ifndef xmlSchemaSetValidErrors +extern __typeof (xmlSchemaSetValidErrors) xmlSchemaSetValidErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSetValidErrors xmlSchemaSetValidErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaSetValidOptions +extern __typeof (xmlSchemaSetValidOptions) xmlSchemaSetValidOptions __attribute((alias("xmlSchemaSetValidOptions__internal_alias"))); +#else +#ifndef xmlSchemaSetValidOptions +extern __typeof (xmlSchemaSetValidOptions) xmlSchemaSetValidOptions__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSetValidOptions xmlSchemaSetValidOptions__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaSetValidStructuredErrors +extern __typeof (xmlSchemaSetValidStructuredErrors) xmlSchemaSetValidStructuredErrors __attribute((alias("xmlSchemaSetValidStructuredErrors__internal_alias"))); +#else +#ifndef xmlSchemaSetValidStructuredErrors +extern __typeof (xmlSchemaSetValidStructuredErrors) xmlSchemaSetValidStructuredErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSetValidStructuredErrors xmlSchemaSetValidStructuredErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValPredefTypeNode +extern __typeof (xmlSchemaValPredefTypeNode) xmlSchemaValPredefTypeNode __attribute((alias("xmlSchemaValPredefTypeNode__internal_alias"))); +#else +#ifndef xmlSchemaValPredefTypeNode +extern __typeof (xmlSchemaValPredefTypeNode) xmlSchemaValPredefTypeNode__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValPredefTypeNode xmlSchemaValPredefTypeNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValPredefTypeNodeNoNorm +extern __typeof (xmlSchemaValPredefTypeNodeNoNorm) xmlSchemaValPredefTypeNodeNoNorm __attribute((alias("xmlSchemaValPredefTypeNodeNoNorm__internal_alias"))); +#else +#ifndef xmlSchemaValPredefTypeNodeNoNorm +extern __typeof (xmlSchemaValPredefTypeNodeNoNorm) xmlSchemaValPredefTypeNodeNoNorm__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValPredefTypeNodeNoNorm xmlSchemaValPredefTypeNodeNoNorm__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaValidCtxtGetOptions +extern __typeof (xmlSchemaValidCtxtGetOptions) xmlSchemaValidCtxtGetOptions __attribute((alias("xmlSchemaValidCtxtGetOptions__internal_alias"))); +#else +#ifndef xmlSchemaValidCtxtGetOptions +extern __typeof (xmlSchemaValidCtxtGetOptions) xmlSchemaValidCtxtGetOptions__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidCtxtGetOptions xmlSchemaValidCtxtGetOptions__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaValidCtxtGetParserCtxt +extern __typeof (xmlSchemaValidCtxtGetParserCtxt) xmlSchemaValidCtxtGetParserCtxt __attribute((alias("xmlSchemaValidCtxtGetParserCtxt__internal_alias"))); +#else +#ifndef xmlSchemaValidCtxtGetParserCtxt +extern __typeof (xmlSchemaValidCtxtGetParserCtxt) xmlSchemaValidCtxtGetParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidCtxtGetParserCtxt xmlSchemaValidCtxtGetParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaValidateDoc +extern __typeof (xmlSchemaValidateDoc) xmlSchemaValidateDoc __attribute((alias("xmlSchemaValidateDoc__internal_alias"))); +#else +#ifndef xmlSchemaValidateDoc +extern __typeof (xmlSchemaValidateDoc) xmlSchemaValidateDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateDoc xmlSchemaValidateDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValidateFacet +extern __typeof (xmlSchemaValidateFacet) xmlSchemaValidateFacet __attribute((alias("xmlSchemaValidateFacet__internal_alias"))); +#else +#ifndef xmlSchemaValidateFacet +extern __typeof (xmlSchemaValidateFacet) xmlSchemaValidateFacet__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateFacet xmlSchemaValidateFacet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValidateFacetWhtsp +extern __typeof (xmlSchemaValidateFacetWhtsp) xmlSchemaValidateFacetWhtsp __attribute((alias("xmlSchemaValidateFacetWhtsp__internal_alias"))); +#else +#ifndef xmlSchemaValidateFacetWhtsp +extern __typeof (xmlSchemaValidateFacetWhtsp) xmlSchemaValidateFacetWhtsp__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateFacetWhtsp xmlSchemaValidateFacetWhtsp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaValidateFile +extern __typeof (xmlSchemaValidateFile) xmlSchemaValidateFile __attribute((alias("xmlSchemaValidateFile__internal_alias"))); +#else +#ifndef xmlSchemaValidateFile +extern __typeof (xmlSchemaValidateFile) xmlSchemaValidateFile__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateFile xmlSchemaValidateFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValidateLengthFacet +extern __typeof (xmlSchemaValidateLengthFacet) xmlSchemaValidateLengthFacet __attribute((alias("xmlSchemaValidateLengthFacet__internal_alias"))); +#else +#ifndef xmlSchemaValidateLengthFacet +extern __typeof (xmlSchemaValidateLengthFacet) xmlSchemaValidateLengthFacet__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateLengthFacet xmlSchemaValidateLengthFacet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValidateLengthFacetWhtsp +extern __typeof (xmlSchemaValidateLengthFacetWhtsp) xmlSchemaValidateLengthFacetWhtsp __attribute((alias("xmlSchemaValidateLengthFacetWhtsp__internal_alias"))); +#else +#ifndef xmlSchemaValidateLengthFacetWhtsp +extern __typeof (xmlSchemaValidateLengthFacetWhtsp) xmlSchemaValidateLengthFacetWhtsp__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateLengthFacetWhtsp xmlSchemaValidateLengthFacetWhtsp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValidateListSimpleTypeFacet +extern __typeof (xmlSchemaValidateListSimpleTypeFacet) xmlSchemaValidateListSimpleTypeFacet __attribute((alias("xmlSchemaValidateListSimpleTypeFacet__internal_alias"))); +#else +#ifndef xmlSchemaValidateListSimpleTypeFacet +extern __typeof (xmlSchemaValidateListSimpleTypeFacet) xmlSchemaValidateListSimpleTypeFacet__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateListSimpleTypeFacet xmlSchemaValidateListSimpleTypeFacet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaValidateOneElement +extern __typeof (xmlSchemaValidateOneElement) xmlSchemaValidateOneElement __attribute((alias("xmlSchemaValidateOneElement__internal_alias"))); +#else +#ifndef xmlSchemaValidateOneElement +extern __typeof (xmlSchemaValidateOneElement) xmlSchemaValidateOneElement__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateOneElement xmlSchemaValidateOneElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValidatePredefinedType +extern __typeof (xmlSchemaValidatePredefinedType) xmlSchemaValidatePredefinedType __attribute((alias("xmlSchemaValidatePredefinedType__internal_alias"))); +#else +#ifndef xmlSchemaValidatePredefinedType +extern __typeof (xmlSchemaValidatePredefinedType) xmlSchemaValidatePredefinedType__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidatePredefinedType xmlSchemaValidatePredefinedType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaValidateSetFilename +extern __typeof (xmlSchemaValidateSetFilename) xmlSchemaValidateSetFilename __attribute((alias("xmlSchemaValidateSetFilename__internal_alias"))); +#else +#ifndef xmlSchemaValidateSetFilename +extern __typeof (xmlSchemaValidateSetFilename) xmlSchemaValidateSetFilename__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateSetFilename xmlSchemaValidateSetFilename__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaValidateSetLocator +extern __typeof (xmlSchemaValidateSetLocator) xmlSchemaValidateSetLocator __attribute((alias("xmlSchemaValidateSetLocator__internal_alias"))); +#else +#ifndef xmlSchemaValidateSetLocator +extern __typeof (xmlSchemaValidateSetLocator) xmlSchemaValidateSetLocator__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateSetLocator xmlSchemaValidateSetLocator__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaValidateStream +extern __typeof (xmlSchemaValidateStream) xmlSchemaValidateStream __attribute((alias("xmlSchemaValidateStream__internal_alias"))); +#else +#ifndef xmlSchemaValidateStream +extern __typeof (xmlSchemaValidateStream) xmlSchemaValidateStream__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateStream xmlSchemaValidateStream__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValueAppend +extern __typeof (xmlSchemaValueAppend) xmlSchemaValueAppend __attribute((alias("xmlSchemaValueAppend__internal_alias"))); +#else +#ifndef xmlSchemaValueAppend +extern __typeof (xmlSchemaValueAppend) xmlSchemaValueAppend__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValueAppend xmlSchemaValueAppend__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValueGetAsBoolean +extern __typeof (xmlSchemaValueGetAsBoolean) xmlSchemaValueGetAsBoolean __attribute((alias("xmlSchemaValueGetAsBoolean__internal_alias"))); +#else +#ifndef xmlSchemaValueGetAsBoolean +extern __typeof (xmlSchemaValueGetAsBoolean) xmlSchemaValueGetAsBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValueGetAsBoolean xmlSchemaValueGetAsBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValueGetAsString +extern __typeof (xmlSchemaValueGetAsString) xmlSchemaValueGetAsString __attribute((alias("xmlSchemaValueGetAsString__internal_alias"))); +#else +#ifndef xmlSchemaValueGetAsString +extern __typeof (xmlSchemaValueGetAsString) xmlSchemaValueGetAsString__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValueGetAsString xmlSchemaValueGetAsString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValueGetNext +extern __typeof (xmlSchemaValueGetNext) xmlSchemaValueGetNext __attribute((alias("xmlSchemaValueGetNext__internal_alias"))); +#else +#ifndef xmlSchemaValueGetNext +extern __typeof (xmlSchemaValueGetNext) xmlSchemaValueGetNext__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValueGetNext xmlSchemaValueGetNext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaWhiteSpaceReplace +extern __typeof (xmlSchemaWhiteSpaceReplace) xmlSchemaWhiteSpaceReplace __attribute((alias("xmlSchemaWhiteSpaceReplace__internal_alias"))); +#else +#ifndef xmlSchemaWhiteSpaceReplace +extern __typeof (xmlSchemaWhiteSpaceReplace) xmlSchemaWhiteSpaceReplace__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaWhiteSpaceReplace xmlSchemaWhiteSpaceReplace__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronFree +extern __typeof (xmlSchematronFree) xmlSchematronFree __attribute((alias("xmlSchematronFree__internal_alias"))); +#else +#ifndef xmlSchematronFree +extern __typeof (xmlSchematronFree) xmlSchematronFree__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronFree xmlSchematronFree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronFreeParserCtxt +extern __typeof (xmlSchematronFreeParserCtxt) xmlSchematronFreeParserCtxt __attribute((alias("xmlSchematronFreeParserCtxt__internal_alias"))); +#else +#ifndef xmlSchematronFreeParserCtxt +extern __typeof (xmlSchematronFreeParserCtxt) xmlSchematronFreeParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronFreeParserCtxt xmlSchematronFreeParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronFreeValidCtxt +extern __typeof (xmlSchematronFreeValidCtxt) xmlSchematronFreeValidCtxt __attribute((alias("xmlSchematronFreeValidCtxt__internal_alias"))); +#else +#ifndef xmlSchematronFreeValidCtxt +extern __typeof (xmlSchematronFreeValidCtxt) xmlSchematronFreeValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronFreeValidCtxt xmlSchematronFreeValidCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronNewDocParserCtxt +extern __typeof (xmlSchematronNewDocParserCtxt) xmlSchematronNewDocParserCtxt __attribute((alias("xmlSchematronNewDocParserCtxt__internal_alias"))); +#else +#ifndef xmlSchematronNewDocParserCtxt +extern __typeof (xmlSchematronNewDocParserCtxt) xmlSchematronNewDocParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronNewDocParserCtxt xmlSchematronNewDocParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronNewMemParserCtxt +extern __typeof (xmlSchematronNewMemParserCtxt) xmlSchematronNewMemParserCtxt __attribute((alias("xmlSchematronNewMemParserCtxt__internal_alias"))); +#else +#ifndef xmlSchematronNewMemParserCtxt +extern __typeof (xmlSchematronNewMemParserCtxt) xmlSchematronNewMemParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronNewMemParserCtxt xmlSchematronNewMemParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronNewParserCtxt +extern __typeof (xmlSchematronNewParserCtxt) xmlSchematronNewParserCtxt __attribute((alias("xmlSchematronNewParserCtxt__internal_alias"))); +#else +#ifndef xmlSchematronNewParserCtxt +extern __typeof (xmlSchematronNewParserCtxt) xmlSchematronNewParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronNewParserCtxt xmlSchematronNewParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronNewValidCtxt +extern __typeof (xmlSchematronNewValidCtxt) xmlSchematronNewValidCtxt __attribute((alias("xmlSchematronNewValidCtxt__internal_alias"))); +#else +#ifndef xmlSchematronNewValidCtxt +extern __typeof (xmlSchematronNewValidCtxt) xmlSchematronNewValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronNewValidCtxt xmlSchematronNewValidCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronParse +extern __typeof (xmlSchematronParse) xmlSchematronParse __attribute((alias("xmlSchematronParse__internal_alias"))); +#else +#ifndef xmlSchematronParse +extern __typeof (xmlSchematronParse) xmlSchematronParse__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronParse xmlSchematronParse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronSetValidStructuredErrors +extern __typeof (xmlSchematronSetValidStructuredErrors) xmlSchematronSetValidStructuredErrors __attribute((alias("xmlSchematronSetValidStructuredErrors__internal_alias"))); +#else +#ifndef xmlSchematronSetValidStructuredErrors +extern __typeof (xmlSchematronSetValidStructuredErrors) xmlSchematronSetValidStructuredErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronSetValidStructuredErrors xmlSchematronSetValidStructuredErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronValidateDoc +extern __typeof (xmlSchematronValidateDoc) xmlSchematronValidateDoc __attribute((alias("xmlSchematronValidateDoc__internal_alias"))); +#else +#ifndef xmlSchematronValidateDoc +extern __typeof (xmlSchematronValidateDoc) xmlSchematronValidateDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronValidateDoc xmlSchematronValidateDoc__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlSearchNs +extern __typeof (xmlSearchNs) xmlSearchNs __attribute((alias("xmlSearchNs__internal_alias"))); +#else +#ifndef xmlSearchNs +extern __typeof (xmlSearchNs) xmlSearchNs__internal_alias __attribute((visibility("hidden"))); +#define xmlSearchNs xmlSearchNs__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSearchNsByHref +extern __typeof (xmlSearchNsByHref) xmlSearchNsByHref __attribute((alias("xmlSearchNsByHref__internal_alias"))); +#else +#ifndef xmlSearchNsByHref +extern __typeof (xmlSearchNsByHref) xmlSearchNsByHref__internal_alias __attribute((visibility("hidden"))); +#define xmlSearchNsByHref xmlSearchNsByHref__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSetBufferAllocationScheme +extern __typeof (xmlSetBufferAllocationScheme) xmlSetBufferAllocationScheme __attribute((alias("xmlSetBufferAllocationScheme__internal_alias"))); +#else +#ifndef xmlSetBufferAllocationScheme +extern __typeof (xmlSetBufferAllocationScheme) xmlSetBufferAllocationScheme__internal_alias __attribute((visibility("hidden"))); +#define xmlSetBufferAllocationScheme xmlSetBufferAllocationScheme__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSetCompressMode +extern __typeof (xmlSetCompressMode) xmlSetCompressMode __attribute((alias("xmlSetCompressMode__internal_alias"))); +#else +#ifndef xmlSetCompressMode +extern __typeof (xmlSetCompressMode) xmlSetCompressMode__internal_alias __attribute((visibility("hidden"))); +#define xmlSetCompressMode xmlSetCompressMode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSetDocCompressMode +extern __typeof (xmlSetDocCompressMode) xmlSetDocCompressMode __attribute((alias("xmlSetDocCompressMode__internal_alias"))); +#else +#ifndef xmlSetDocCompressMode +extern __typeof (xmlSetDocCompressMode) xmlSetDocCompressMode__internal_alias __attribute((visibility("hidden"))); +#define xmlSetDocCompressMode xmlSetDocCompressMode__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_parser +#undef xmlSetEntityReferenceFunc +extern __typeof (xmlSetEntityReferenceFunc) xmlSetEntityReferenceFunc __attribute((alias("xmlSetEntityReferenceFunc__internal_alias"))); +#else +#ifndef xmlSetEntityReferenceFunc +extern __typeof (xmlSetEntityReferenceFunc) xmlSetEntityReferenceFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlSetEntityReferenceFunc xmlSetEntityReferenceFunc__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlSetExternalEntityLoader +extern __typeof (xmlSetExternalEntityLoader) xmlSetExternalEntityLoader __attribute((alias("xmlSetExternalEntityLoader__internal_alias"))); +#else +#ifndef xmlSetExternalEntityLoader +extern __typeof (xmlSetExternalEntityLoader) xmlSetExternalEntityLoader__internal_alias __attribute((visibility("hidden"))); +#define xmlSetExternalEntityLoader xmlSetExternalEntityLoader__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlSetFeature +extern __typeof (xmlSetFeature) xmlSetFeature __attribute((alias("xmlSetFeature__internal_alias"))); +#else +#ifndef xmlSetFeature +extern __typeof (xmlSetFeature) xmlSetFeature__internal_alias __attribute((visibility("hidden"))); +#define xmlSetFeature xmlSetFeature__internal_alias +#endif +#endif +#endif + +#ifdef bottom_error +#undef xmlSetGenericErrorFunc +extern __typeof (xmlSetGenericErrorFunc) xmlSetGenericErrorFunc __attribute((alias("xmlSetGenericErrorFunc__internal_alias"))); +#else +#ifndef xmlSetGenericErrorFunc +extern __typeof (xmlSetGenericErrorFunc) xmlSetGenericErrorFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlSetGenericErrorFunc xmlSetGenericErrorFunc__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSetListDoc +extern __typeof (xmlSetListDoc) xmlSetListDoc __attribute((alias("xmlSetListDoc__internal_alias"))); +#else +#ifndef xmlSetListDoc +extern __typeof (xmlSetListDoc) xmlSetListDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlSetListDoc xmlSetListDoc__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSetNs +extern __typeof (xmlSetNs) xmlSetNs __attribute((alias("xmlSetNs__internal_alias"))); +#else +#ifndef xmlSetNs +extern __typeof (xmlSetNs) xmlSetNs__internal_alias __attribute((visibility("hidden"))); +#define xmlSetNs xmlSetNs__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) +#ifdef bottom_tree +#undef xmlSetNsProp +extern __typeof (xmlSetNsProp) xmlSetNsProp __attribute((alias("xmlSetNsProp__internal_alias"))); +#else +#ifndef xmlSetNsProp +extern __typeof (xmlSetNsProp) xmlSetNsProp__internal_alias __attribute((visibility("hidden"))); +#define xmlSetNsProp xmlSetNsProp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) +#ifdef bottom_tree +#undef xmlSetProp +extern __typeof (xmlSetProp) xmlSetProp __attribute((alias("xmlSetProp__internal_alias"))); +#else +#ifndef xmlSetProp +extern __typeof (xmlSetProp) xmlSetProp__internal_alias __attribute((visibility("hidden"))); +#define xmlSetProp xmlSetProp__internal_alias +#endif +#endif +#endif + +#ifdef bottom_error +#undef xmlSetStructuredErrorFunc +extern __typeof (xmlSetStructuredErrorFunc) xmlSetStructuredErrorFunc __attribute((alias("xmlSetStructuredErrorFunc__internal_alias"))); +#else +#ifndef xmlSetStructuredErrorFunc +extern __typeof (xmlSetStructuredErrorFunc) xmlSetStructuredErrorFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlSetStructuredErrorFunc xmlSetStructuredErrorFunc__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSetTreeDoc +extern __typeof (xmlSetTreeDoc) xmlSetTreeDoc __attribute((alias("xmlSetTreeDoc__internal_alias"))); +#else +#ifndef xmlSetTreeDoc +extern __typeof (xmlSetTreeDoc) xmlSetTreeDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlSetTreeDoc xmlSetTreeDoc__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSetupParserForBuffer +extern __typeof (xmlSetupParserForBuffer) xmlSetupParserForBuffer __attribute((alias("xmlSetupParserForBuffer__internal_alias"))); +#else +#ifndef xmlSetupParserForBuffer +extern __typeof (xmlSetupParserForBuffer) xmlSetupParserForBuffer__internal_alias __attribute((visibility("hidden"))); +#define xmlSetupParserForBuffer xmlSetupParserForBuffer__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShell +extern __typeof (xmlShell) xmlShell __attribute((alias("xmlShell__internal_alias"))); +#else +#ifndef xmlShell +extern __typeof (xmlShell) xmlShell__internal_alias __attribute((visibility("hidden"))); +#define xmlShell xmlShell__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellBase +extern __typeof (xmlShellBase) xmlShellBase __attribute((alias("xmlShellBase__internal_alias"))); +#else +#ifndef xmlShellBase +extern __typeof (xmlShellBase) xmlShellBase__internal_alias __attribute((visibility("hidden"))); +#define xmlShellBase xmlShellBase__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellCat +extern __typeof (xmlShellCat) xmlShellCat __attribute((alias("xmlShellCat__internal_alias"))); +#else +#ifndef xmlShellCat +extern __typeof (xmlShellCat) xmlShellCat__internal_alias __attribute((visibility("hidden"))); +#define xmlShellCat xmlShellCat__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellDir +extern __typeof (xmlShellDir) xmlShellDir __attribute((alias("xmlShellDir__internal_alias"))); +#else +#ifndef xmlShellDir +extern __typeof (xmlShellDir) xmlShellDir__internal_alias __attribute((visibility("hidden"))); +#define xmlShellDir xmlShellDir__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellDu +extern __typeof (xmlShellDu) xmlShellDu __attribute((alias("xmlShellDu__internal_alias"))); +#else +#ifndef xmlShellDu +extern __typeof (xmlShellDu) xmlShellDu__internal_alias __attribute((visibility("hidden"))); +#define xmlShellDu xmlShellDu__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellList +extern __typeof (xmlShellList) xmlShellList __attribute((alias("xmlShellList__internal_alias"))); +#else +#ifndef xmlShellList +extern __typeof (xmlShellList) xmlShellList__internal_alias __attribute((visibility("hidden"))); +#define xmlShellList xmlShellList__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellLoad +extern __typeof (xmlShellLoad) xmlShellLoad __attribute((alias("xmlShellLoad__internal_alias"))); +#else +#ifndef xmlShellLoad +extern __typeof (xmlShellLoad) xmlShellLoad__internal_alias __attribute((visibility("hidden"))); +#define xmlShellLoad xmlShellLoad__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellPrintNode +extern __typeof (xmlShellPrintNode) xmlShellPrintNode __attribute((alias("xmlShellPrintNode__internal_alias"))); +#else +#ifndef xmlShellPrintNode +extern __typeof (xmlShellPrintNode) xmlShellPrintNode__internal_alias __attribute((visibility("hidden"))); +#define xmlShellPrintNode xmlShellPrintNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellPrintXPathError +extern __typeof (xmlShellPrintXPathError) xmlShellPrintXPathError __attribute((alias("xmlShellPrintXPathError__internal_alias"))); +#else +#ifndef xmlShellPrintXPathError +extern __typeof (xmlShellPrintXPathError) xmlShellPrintXPathError__internal_alias __attribute((visibility("hidden"))); +#define xmlShellPrintXPathError xmlShellPrintXPathError__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellPrintXPathResult +extern __typeof (xmlShellPrintXPathResult) xmlShellPrintXPathResult __attribute((alias("xmlShellPrintXPathResult__internal_alias"))); +#else +#ifndef xmlShellPrintXPathResult +extern __typeof (xmlShellPrintXPathResult) xmlShellPrintXPathResult__internal_alias __attribute((visibility("hidden"))); +#define xmlShellPrintXPathResult xmlShellPrintXPathResult__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellPwd +extern __typeof (xmlShellPwd) xmlShellPwd __attribute((alias("xmlShellPwd__internal_alias"))); +#else +#ifndef xmlShellPwd +extern __typeof (xmlShellPwd) xmlShellPwd__internal_alias __attribute((visibility("hidden"))); +#define xmlShellPwd xmlShellPwd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellSave +extern __typeof (xmlShellSave) xmlShellSave __attribute((alias("xmlShellSave__internal_alias"))); +#else +#ifndef xmlShellSave +extern __typeof (xmlShellSave) xmlShellSave__internal_alias __attribute((visibility("hidden"))); +#define xmlShellSave xmlShellSave__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_VALID_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellValidate +extern __typeof (xmlShellValidate) xmlShellValidate __attribute((alias("xmlShellValidate__internal_alias"))); +#else +#ifndef xmlShellValidate +extern __typeof (xmlShellValidate) xmlShellValidate__internal_alias __attribute((visibility("hidden"))); +#define xmlShellValidate xmlShellValidate__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellWrite +extern __typeof (xmlShellWrite) xmlShellWrite __attribute((alias("xmlShellWrite__internal_alias"))); +#else +#ifndef xmlShellWrite +extern __typeof (xmlShellWrite) xmlShellWrite__internal_alias __attribute((visibility("hidden"))); +#define xmlShellWrite xmlShellWrite__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlSkipBlankChars +extern __typeof (xmlSkipBlankChars) xmlSkipBlankChars __attribute((alias("xmlSkipBlankChars__internal_alias"))); +#else +#ifndef xmlSkipBlankChars +extern __typeof (xmlSkipBlankChars) xmlSkipBlankChars__internal_alias __attribute((visibility("hidden"))); +#define xmlSkipBlankChars xmlSkipBlankChars__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlSnprintfElementContent +extern __typeof (xmlSnprintfElementContent) xmlSnprintfElementContent __attribute((alias("xmlSnprintfElementContent__internal_alias"))); +#else +#ifndef xmlSnprintfElementContent +extern __typeof (xmlSnprintfElementContent) xmlSnprintfElementContent__internal_alias __attribute((visibility("hidden"))); +#define xmlSnprintfElementContent xmlSnprintfElementContent__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlSplitQName +extern __typeof (xmlSplitQName) xmlSplitQName __attribute((alias("xmlSplitQName__internal_alias"))); +#else +#ifndef xmlSplitQName +extern __typeof (xmlSplitQName) xmlSplitQName__internal_alias __attribute((visibility("hidden"))); +#define xmlSplitQName xmlSplitQName__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSplitQName2 +extern __typeof (xmlSplitQName2) xmlSplitQName2 __attribute((alias("xmlSplitQName2__internal_alias"))); +#else +#ifndef xmlSplitQName2 +extern __typeof (xmlSplitQName2) xmlSplitQName2__internal_alias __attribute((visibility("hidden"))); +#define xmlSplitQName2 xmlSplitQName2__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSplitQName3 +extern __typeof (xmlSplitQName3) xmlSplitQName3 __attribute((alias("xmlSplitQName3__internal_alias"))); +#else +#ifndef xmlSplitQName3 +extern __typeof (xmlSplitQName3) xmlSplitQName3__internal_alias __attribute((visibility("hidden"))); +#define xmlSplitQName3 xmlSplitQName3__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_valid +#undef xmlSprintfElementContent +extern __typeof (xmlSprintfElementContent) xmlSprintfElementContent __attribute((alias("xmlSprintfElementContent__internal_alias"))); +#else +#ifndef xmlSprintfElementContent +extern __typeof (xmlSprintfElementContent) xmlSprintfElementContent__internal_alias __attribute((visibility("hidden"))); +#define xmlSprintfElementContent xmlSprintfElementContent__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlStopParser +extern __typeof (xmlStopParser) xmlStopParser __attribute((alias("xmlStopParser__internal_alias"))); +#else +#ifndef xmlStopParser +extern __typeof (xmlStopParser) xmlStopParser__internal_alias __attribute((visibility("hidden"))); +#define xmlStopParser xmlStopParser__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrEqual +extern __typeof (xmlStrEqual) xmlStrEqual __attribute((alias("xmlStrEqual__internal_alias"))); +#else +#ifndef xmlStrEqual +extern __typeof (xmlStrEqual) xmlStrEqual__internal_alias __attribute((visibility("hidden"))); +#define xmlStrEqual xmlStrEqual__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrPrintf +extern __typeof (xmlStrPrintf) xmlStrPrintf __attribute((alias("xmlStrPrintf__internal_alias"))); +#else +#ifndef xmlStrPrintf +extern __typeof (xmlStrPrintf) xmlStrPrintf__internal_alias __attribute((visibility("hidden"))); +#define xmlStrPrintf xmlStrPrintf__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrQEqual +extern __typeof (xmlStrQEqual) xmlStrQEqual __attribute((alias("xmlStrQEqual__internal_alias"))); +#else +#ifndef xmlStrQEqual +extern __typeof (xmlStrQEqual) xmlStrQEqual__internal_alias __attribute((visibility("hidden"))); +#define xmlStrQEqual xmlStrQEqual__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrVPrintf +extern __typeof (xmlStrVPrintf) xmlStrVPrintf __attribute((alias("xmlStrVPrintf__internal_alias"))); +#else +#ifndef xmlStrVPrintf +extern __typeof (xmlStrVPrintf) xmlStrVPrintf__internal_alias __attribute((visibility("hidden"))); +#define xmlStrVPrintf xmlStrVPrintf__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrcasecmp +extern __typeof (xmlStrcasecmp) xmlStrcasecmp __attribute((alias("xmlStrcasecmp__internal_alias"))); +#else +#ifndef xmlStrcasecmp +extern __typeof (xmlStrcasecmp) xmlStrcasecmp__internal_alias __attribute((visibility("hidden"))); +#define xmlStrcasecmp xmlStrcasecmp__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrcasestr +extern __typeof (xmlStrcasestr) xmlStrcasestr __attribute((alias("xmlStrcasestr__internal_alias"))); +#else +#ifndef xmlStrcasestr +extern __typeof (xmlStrcasestr) xmlStrcasestr__internal_alias __attribute((visibility("hidden"))); +#define xmlStrcasestr xmlStrcasestr__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrcat +extern __typeof (xmlStrcat) xmlStrcat __attribute((alias("xmlStrcat__internal_alias"))); +#else +#ifndef xmlStrcat +extern __typeof (xmlStrcat) xmlStrcat__internal_alias __attribute((visibility("hidden"))); +#define xmlStrcat xmlStrcat__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrchr +extern __typeof (xmlStrchr) xmlStrchr __attribute((alias("xmlStrchr__internal_alias"))); +#else +#ifndef xmlStrchr +extern __typeof (xmlStrchr) xmlStrchr__internal_alias __attribute((visibility("hidden"))); +#define xmlStrchr xmlStrchr__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrcmp +extern __typeof (xmlStrcmp) xmlStrcmp __attribute((alias("xmlStrcmp__internal_alias"))); +#else +#ifndef xmlStrcmp +extern __typeof (xmlStrcmp) xmlStrcmp__internal_alias __attribute((visibility("hidden"))); +#define xmlStrcmp xmlStrcmp__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrdup +extern __typeof (xmlStrdup) xmlStrdup __attribute((alias("xmlStrdup__internal_alias"))); +#else +#ifndef xmlStrdup +extern __typeof (xmlStrdup) xmlStrdup__internal_alias __attribute((visibility("hidden"))); +#define xmlStrdup xmlStrdup__internal_alias +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlStreamPop +extern __typeof (xmlStreamPop) xmlStreamPop __attribute((alias("xmlStreamPop__internal_alias"))); +#else +#ifndef xmlStreamPop +extern __typeof (xmlStreamPop) xmlStreamPop__internal_alias __attribute((visibility("hidden"))); +#define xmlStreamPop xmlStreamPop__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlStreamPush +extern __typeof (xmlStreamPush) xmlStreamPush __attribute((alias("xmlStreamPush__internal_alias"))); +#else +#ifndef xmlStreamPush +extern __typeof (xmlStreamPush) xmlStreamPush__internal_alias __attribute((visibility("hidden"))); +#define xmlStreamPush xmlStreamPush__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlStreamPushAttr +extern __typeof (xmlStreamPushAttr) xmlStreamPushAttr __attribute((alias("xmlStreamPushAttr__internal_alias"))); +#else +#ifndef xmlStreamPushAttr +extern __typeof (xmlStreamPushAttr) xmlStreamPushAttr__internal_alias __attribute((visibility("hidden"))); +#define xmlStreamPushAttr xmlStreamPushAttr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlStreamPushNode +extern __typeof (xmlStreamPushNode) xmlStreamPushNode __attribute((alias("xmlStreamPushNode__internal_alias"))); +#else +#ifndef xmlStreamPushNode +extern __typeof (xmlStreamPushNode) xmlStreamPushNode__internal_alias __attribute((visibility("hidden"))); +#define xmlStreamPushNode xmlStreamPushNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlStreamWantsAnyNode +extern __typeof (xmlStreamWantsAnyNode) xmlStreamWantsAnyNode __attribute((alias("xmlStreamWantsAnyNode__internal_alias"))); +#else +#ifndef xmlStreamWantsAnyNode +extern __typeof (xmlStreamWantsAnyNode) xmlStreamWantsAnyNode__internal_alias __attribute((visibility("hidden"))); +#define xmlStreamWantsAnyNode xmlStreamWantsAnyNode__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlStringCurrentChar +extern __typeof (xmlStringCurrentChar) xmlStringCurrentChar __attribute((alias("xmlStringCurrentChar__internal_alias"))); +#else +#ifndef xmlStringCurrentChar +extern __typeof (xmlStringCurrentChar) xmlStringCurrentChar__internal_alias __attribute((visibility("hidden"))); +#define xmlStringCurrentChar xmlStringCurrentChar__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlStringDecodeEntities +extern __typeof (xmlStringDecodeEntities) xmlStringDecodeEntities __attribute((alias("xmlStringDecodeEntities__internal_alias"))); +#else +#ifndef xmlStringDecodeEntities +extern __typeof (xmlStringDecodeEntities) xmlStringDecodeEntities__internal_alias __attribute((visibility("hidden"))); +#define xmlStringDecodeEntities xmlStringDecodeEntities__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlStringGetNodeList +extern __typeof (xmlStringGetNodeList) xmlStringGetNodeList __attribute((alias("xmlStringGetNodeList__internal_alias"))); +#else +#ifndef xmlStringGetNodeList +extern __typeof (xmlStringGetNodeList) xmlStringGetNodeList__internal_alias __attribute((visibility("hidden"))); +#define xmlStringGetNodeList xmlStringGetNodeList__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlStringLenDecodeEntities +extern __typeof (xmlStringLenDecodeEntities) xmlStringLenDecodeEntities __attribute((alias("xmlStringLenDecodeEntities__internal_alias"))); +#else +#ifndef xmlStringLenDecodeEntities +extern __typeof (xmlStringLenDecodeEntities) xmlStringLenDecodeEntities__internal_alias __attribute((visibility("hidden"))); +#define xmlStringLenDecodeEntities xmlStringLenDecodeEntities__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlStringLenGetNodeList +extern __typeof (xmlStringLenGetNodeList) xmlStringLenGetNodeList __attribute((alias("xmlStringLenGetNodeList__internal_alias"))); +#else +#ifndef xmlStringLenGetNodeList +extern __typeof (xmlStringLenGetNodeList) xmlStringLenGetNodeList__internal_alias __attribute((visibility("hidden"))); +#define xmlStringLenGetNodeList xmlStringLenGetNodeList__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrlen +extern __typeof (xmlStrlen) xmlStrlen __attribute((alias("xmlStrlen__internal_alias"))); +#else +#ifndef xmlStrlen +extern __typeof (xmlStrlen) xmlStrlen__internal_alias __attribute((visibility("hidden"))); +#define xmlStrlen xmlStrlen__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrncasecmp +extern __typeof (xmlStrncasecmp) xmlStrncasecmp __attribute((alias("xmlStrncasecmp__internal_alias"))); +#else +#ifndef xmlStrncasecmp +extern __typeof (xmlStrncasecmp) xmlStrncasecmp__internal_alias __attribute((visibility("hidden"))); +#define xmlStrncasecmp xmlStrncasecmp__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrncat +extern __typeof (xmlStrncat) xmlStrncat __attribute((alias("xmlStrncat__internal_alias"))); +#else +#ifndef xmlStrncat +extern __typeof (xmlStrncat) xmlStrncat__internal_alias __attribute((visibility("hidden"))); +#define xmlStrncat xmlStrncat__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrncatNew +extern __typeof (xmlStrncatNew) xmlStrncatNew __attribute((alias("xmlStrncatNew__internal_alias"))); +#else +#ifndef xmlStrncatNew +extern __typeof (xmlStrncatNew) xmlStrncatNew__internal_alias __attribute((visibility("hidden"))); +#define xmlStrncatNew xmlStrncatNew__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrncmp +extern __typeof (xmlStrncmp) xmlStrncmp __attribute((alias("xmlStrncmp__internal_alias"))); +#else +#ifndef xmlStrncmp +extern __typeof (xmlStrncmp) xmlStrncmp__internal_alias __attribute((visibility("hidden"))); +#define xmlStrncmp xmlStrncmp__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrndup +extern __typeof (xmlStrndup) xmlStrndup __attribute((alias("xmlStrndup__internal_alias"))); +#else +#ifndef xmlStrndup +extern __typeof (xmlStrndup) xmlStrndup__internal_alias __attribute((visibility("hidden"))); +#define xmlStrndup xmlStrndup__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrstr +extern __typeof (xmlStrstr) xmlStrstr __attribute((alias("xmlStrstr__internal_alias"))); +#else +#ifndef xmlStrstr +extern __typeof (xmlStrstr) xmlStrstr__internal_alias __attribute((visibility("hidden"))); +#define xmlStrstr xmlStrstr__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrsub +extern __typeof (xmlStrsub) xmlStrsub __attribute((alias("xmlStrsub__internal_alias"))); +#else +#ifndef xmlStrsub +extern __typeof (xmlStrsub) xmlStrsub__internal_alias __attribute((visibility("hidden"))); +#define xmlStrsub xmlStrsub__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlSubstituteEntitiesDefault +extern __typeof (xmlSubstituteEntitiesDefault) xmlSubstituteEntitiesDefault __attribute((alias("xmlSubstituteEntitiesDefault__internal_alias"))); +#else +#ifndef xmlSubstituteEntitiesDefault +extern __typeof (xmlSubstituteEntitiesDefault) xmlSubstituteEntitiesDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlSubstituteEntitiesDefault xmlSubstituteEntitiesDefault__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlSwitchEncoding +extern __typeof (xmlSwitchEncoding) xmlSwitchEncoding __attribute((alias("xmlSwitchEncoding__internal_alias"))); +#else +#ifndef xmlSwitchEncoding +extern __typeof (xmlSwitchEncoding) xmlSwitchEncoding__internal_alias __attribute((visibility("hidden"))); +#define xmlSwitchEncoding xmlSwitchEncoding__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlSwitchInputEncoding +extern __typeof (xmlSwitchInputEncoding) xmlSwitchInputEncoding __attribute((alias("xmlSwitchInputEncoding__internal_alias"))); +#else +#ifndef xmlSwitchInputEncoding +extern __typeof (xmlSwitchInputEncoding) xmlSwitchInputEncoding__internal_alias __attribute((visibility("hidden"))); +#define xmlSwitchInputEncoding xmlSwitchInputEncoding__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlSwitchToEncoding +extern __typeof (xmlSwitchToEncoding) xmlSwitchToEncoding __attribute((alias("xmlSwitchToEncoding__internal_alias"))); +#else +#ifndef xmlSwitchToEncoding +extern __typeof (xmlSwitchToEncoding) xmlSwitchToEncoding__internal_alias __attribute((visibility("hidden"))); +#define xmlSwitchToEncoding xmlSwitchToEncoding__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlTextConcat +extern __typeof (xmlTextConcat) xmlTextConcat __attribute((alias("xmlTextConcat__internal_alias"))); +#else +#ifndef xmlTextConcat +extern __typeof (xmlTextConcat) xmlTextConcat__internal_alias __attribute((visibility("hidden"))); +#define xmlTextConcat xmlTextConcat__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlTextMerge +extern __typeof (xmlTextMerge) xmlTextMerge __attribute((alias("xmlTextMerge__internal_alias"))); +#else +#ifndef xmlTextMerge +extern __typeof (xmlTextMerge) xmlTextMerge__internal_alias __attribute((visibility("hidden"))); +#define xmlTextMerge xmlTextMerge__internal_alias +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderAttributeCount +extern __typeof (xmlTextReaderAttributeCount) xmlTextReaderAttributeCount __attribute((alias("xmlTextReaderAttributeCount__internal_alias"))); +#else +#ifndef xmlTextReaderAttributeCount +extern __typeof (xmlTextReaderAttributeCount) xmlTextReaderAttributeCount__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderAttributeCount xmlTextReaderAttributeCount__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderBaseUri +extern __typeof (xmlTextReaderBaseUri) xmlTextReaderBaseUri __attribute((alias("xmlTextReaderBaseUri__internal_alias"))); +#else +#ifndef xmlTextReaderBaseUri +extern __typeof (xmlTextReaderBaseUri) xmlTextReaderBaseUri__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderBaseUri xmlTextReaderBaseUri__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderByteConsumed +extern __typeof (xmlTextReaderByteConsumed) xmlTextReaderByteConsumed __attribute((alias("xmlTextReaderByteConsumed__internal_alias"))); +#else +#ifndef xmlTextReaderByteConsumed +extern __typeof (xmlTextReaderByteConsumed) xmlTextReaderByteConsumed__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderByteConsumed xmlTextReaderByteConsumed__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderClose +extern __typeof (xmlTextReaderClose) xmlTextReaderClose __attribute((alias("xmlTextReaderClose__internal_alias"))); +#else +#ifndef xmlTextReaderClose +extern __typeof (xmlTextReaderClose) xmlTextReaderClose__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderClose xmlTextReaderClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstBaseUri +extern __typeof (xmlTextReaderConstBaseUri) xmlTextReaderConstBaseUri __attribute((alias("xmlTextReaderConstBaseUri__internal_alias"))); +#else +#ifndef xmlTextReaderConstBaseUri +extern __typeof (xmlTextReaderConstBaseUri) xmlTextReaderConstBaseUri__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstBaseUri xmlTextReaderConstBaseUri__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstEncoding +extern __typeof (xmlTextReaderConstEncoding) xmlTextReaderConstEncoding __attribute((alias("xmlTextReaderConstEncoding__internal_alias"))); +#else +#ifndef xmlTextReaderConstEncoding +extern __typeof (xmlTextReaderConstEncoding) xmlTextReaderConstEncoding__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstEncoding xmlTextReaderConstEncoding__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstLocalName +extern __typeof (xmlTextReaderConstLocalName) xmlTextReaderConstLocalName __attribute((alias("xmlTextReaderConstLocalName__internal_alias"))); +#else +#ifndef xmlTextReaderConstLocalName +extern __typeof (xmlTextReaderConstLocalName) xmlTextReaderConstLocalName__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstLocalName xmlTextReaderConstLocalName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstName +extern __typeof (xmlTextReaderConstName) xmlTextReaderConstName __attribute((alias("xmlTextReaderConstName__internal_alias"))); +#else +#ifndef xmlTextReaderConstName +extern __typeof (xmlTextReaderConstName) xmlTextReaderConstName__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstName xmlTextReaderConstName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstNamespaceUri +extern __typeof (xmlTextReaderConstNamespaceUri) xmlTextReaderConstNamespaceUri __attribute((alias("xmlTextReaderConstNamespaceUri__internal_alias"))); +#else +#ifndef xmlTextReaderConstNamespaceUri +extern __typeof (xmlTextReaderConstNamespaceUri) xmlTextReaderConstNamespaceUri__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstNamespaceUri xmlTextReaderConstNamespaceUri__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstPrefix +extern __typeof (xmlTextReaderConstPrefix) xmlTextReaderConstPrefix __attribute((alias("xmlTextReaderConstPrefix__internal_alias"))); +#else +#ifndef xmlTextReaderConstPrefix +extern __typeof (xmlTextReaderConstPrefix) xmlTextReaderConstPrefix__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstPrefix xmlTextReaderConstPrefix__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstString +extern __typeof (xmlTextReaderConstString) xmlTextReaderConstString __attribute((alias("xmlTextReaderConstString__internal_alias"))); +#else +#ifndef xmlTextReaderConstString +extern __typeof (xmlTextReaderConstString) xmlTextReaderConstString__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstString xmlTextReaderConstString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstValue +extern __typeof (xmlTextReaderConstValue) xmlTextReaderConstValue __attribute((alias("xmlTextReaderConstValue__internal_alias"))); +#else +#ifndef xmlTextReaderConstValue +extern __typeof (xmlTextReaderConstValue) xmlTextReaderConstValue__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstValue xmlTextReaderConstValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstXmlLang +extern __typeof (xmlTextReaderConstXmlLang) xmlTextReaderConstXmlLang __attribute((alias("xmlTextReaderConstXmlLang__internal_alias"))); +#else +#ifndef xmlTextReaderConstXmlLang +extern __typeof (xmlTextReaderConstXmlLang) xmlTextReaderConstXmlLang__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstXmlLang xmlTextReaderConstXmlLang__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstXmlVersion +extern __typeof (xmlTextReaderConstXmlVersion) xmlTextReaderConstXmlVersion __attribute((alias("xmlTextReaderConstXmlVersion__internal_alias"))); +#else +#ifndef xmlTextReaderConstXmlVersion +extern __typeof (xmlTextReaderConstXmlVersion) xmlTextReaderConstXmlVersion__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstXmlVersion xmlTextReaderConstXmlVersion__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderCurrentDoc +extern __typeof (xmlTextReaderCurrentDoc) xmlTextReaderCurrentDoc __attribute((alias("xmlTextReaderCurrentDoc__internal_alias"))); +#else +#ifndef xmlTextReaderCurrentDoc +extern __typeof (xmlTextReaderCurrentDoc) xmlTextReaderCurrentDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderCurrentDoc xmlTextReaderCurrentDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderCurrentNode +extern __typeof (xmlTextReaderCurrentNode) xmlTextReaderCurrentNode __attribute((alias("xmlTextReaderCurrentNode__internal_alias"))); +#else +#ifndef xmlTextReaderCurrentNode +extern __typeof (xmlTextReaderCurrentNode) xmlTextReaderCurrentNode__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderCurrentNode xmlTextReaderCurrentNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderDepth +extern __typeof (xmlTextReaderDepth) xmlTextReaderDepth __attribute((alias("xmlTextReaderDepth__internal_alias"))); +#else +#ifndef xmlTextReaderDepth +extern __typeof (xmlTextReaderDepth) xmlTextReaderDepth__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderDepth xmlTextReaderDepth__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderExpand +extern __typeof (xmlTextReaderExpand) xmlTextReaderExpand __attribute((alias("xmlTextReaderExpand__internal_alias"))); +#else +#ifndef xmlTextReaderExpand +extern __typeof (xmlTextReaderExpand) xmlTextReaderExpand__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderExpand xmlTextReaderExpand__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderGetAttribute +extern __typeof (xmlTextReaderGetAttribute) xmlTextReaderGetAttribute __attribute((alias("xmlTextReaderGetAttribute__internal_alias"))); +#else +#ifndef xmlTextReaderGetAttribute +extern __typeof (xmlTextReaderGetAttribute) xmlTextReaderGetAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderGetAttribute xmlTextReaderGetAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderGetAttributeNo +extern __typeof (xmlTextReaderGetAttributeNo) xmlTextReaderGetAttributeNo __attribute((alias("xmlTextReaderGetAttributeNo__internal_alias"))); +#else +#ifndef xmlTextReaderGetAttributeNo +extern __typeof (xmlTextReaderGetAttributeNo) xmlTextReaderGetAttributeNo__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderGetAttributeNo xmlTextReaderGetAttributeNo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderGetAttributeNs +extern __typeof (xmlTextReaderGetAttributeNs) xmlTextReaderGetAttributeNs __attribute((alias("xmlTextReaderGetAttributeNs__internal_alias"))); +#else +#ifndef xmlTextReaderGetAttributeNs +extern __typeof (xmlTextReaderGetAttributeNs) xmlTextReaderGetAttributeNs__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderGetAttributeNs xmlTextReaderGetAttributeNs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderGetErrorHandler +extern __typeof (xmlTextReaderGetErrorHandler) xmlTextReaderGetErrorHandler __attribute((alias("xmlTextReaderGetErrorHandler__internal_alias"))); +#else +#ifndef xmlTextReaderGetErrorHandler +extern __typeof (xmlTextReaderGetErrorHandler) xmlTextReaderGetErrorHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderGetErrorHandler xmlTextReaderGetErrorHandler__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderGetParserColumnNumber +extern __typeof (xmlTextReaderGetParserColumnNumber) xmlTextReaderGetParserColumnNumber __attribute((alias("xmlTextReaderGetParserColumnNumber__internal_alias"))); +#else +#ifndef xmlTextReaderGetParserColumnNumber +extern __typeof (xmlTextReaderGetParserColumnNumber) xmlTextReaderGetParserColumnNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderGetParserColumnNumber xmlTextReaderGetParserColumnNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderGetParserLineNumber +extern __typeof (xmlTextReaderGetParserLineNumber) xmlTextReaderGetParserLineNumber __attribute((alias("xmlTextReaderGetParserLineNumber__internal_alias"))); +#else +#ifndef xmlTextReaderGetParserLineNumber +extern __typeof (xmlTextReaderGetParserLineNumber) xmlTextReaderGetParserLineNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderGetParserLineNumber xmlTextReaderGetParserLineNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderGetParserProp +extern __typeof (xmlTextReaderGetParserProp) xmlTextReaderGetParserProp __attribute((alias("xmlTextReaderGetParserProp__internal_alias"))); +#else +#ifndef xmlTextReaderGetParserProp +extern __typeof (xmlTextReaderGetParserProp) xmlTextReaderGetParserProp__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderGetParserProp xmlTextReaderGetParserProp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderGetRemainder +extern __typeof (xmlTextReaderGetRemainder) xmlTextReaderGetRemainder __attribute((alias("xmlTextReaderGetRemainder__internal_alias"))); +#else +#ifndef xmlTextReaderGetRemainder +extern __typeof (xmlTextReaderGetRemainder) xmlTextReaderGetRemainder__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderGetRemainder xmlTextReaderGetRemainder__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderHasAttributes +extern __typeof (xmlTextReaderHasAttributes) xmlTextReaderHasAttributes __attribute((alias("xmlTextReaderHasAttributes__internal_alias"))); +#else +#ifndef xmlTextReaderHasAttributes +extern __typeof (xmlTextReaderHasAttributes) xmlTextReaderHasAttributes__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderHasAttributes xmlTextReaderHasAttributes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderHasValue +extern __typeof (xmlTextReaderHasValue) xmlTextReaderHasValue __attribute((alias("xmlTextReaderHasValue__internal_alias"))); +#else +#ifndef xmlTextReaderHasValue +extern __typeof (xmlTextReaderHasValue) xmlTextReaderHasValue__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderHasValue xmlTextReaderHasValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderIsDefault +extern __typeof (xmlTextReaderIsDefault) xmlTextReaderIsDefault __attribute((alias("xmlTextReaderIsDefault__internal_alias"))); +#else +#ifndef xmlTextReaderIsDefault +extern __typeof (xmlTextReaderIsDefault) xmlTextReaderIsDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderIsDefault xmlTextReaderIsDefault__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderIsEmptyElement +extern __typeof (xmlTextReaderIsEmptyElement) xmlTextReaderIsEmptyElement __attribute((alias("xmlTextReaderIsEmptyElement__internal_alias"))); +#else +#ifndef xmlTextReaderIsEmptyElement +extern __typeof (xmlTextReaderIsEmptyElement) xmlTextReaderIsEmptyElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderIsEmptyElement xmlTextReaderIsEmptyElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderIsNamespaceDecl +extern __typeof (xmlTextReaderIsNamespaceDecl) xmlTextReaderIsNamespaceDecl __attribute((alias("xmlTextReaderIsNamespaceDecl__internal_alias"))); +#else +#ifndef xmlTextReaderIsNamespaceDecl +extern __typeof (xmlTextReaderIsNamespaceDecl) xmlTextReaderIsNamespaceDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderIsNamespaceDecl xmlTextReaderIsNamespaceDecl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderIsValid +extern __typeof (xmlTextReaderIsValid) xmlTextReaderIsValid __attribute((alias("xmlTextReaderIsValid__internal_alias"))); +#else +#ifndef xmlTextReaderIsValid +extern __typeof (xmlTextReaderIsValid) xmlTextReaderIsValid__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderIsValid xmlTextReaderIsValid__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderLocalName +extern __typeof (xmlTextReaderLocalName) xmlTextReaderLocalName __attribute((alias("xmlTextReaderLocalName__internal_alias"))); +#else +#ifndef xmlTextReaderLocalName +extern __typeof (xmlTextReaderLocalName) xmlTextReaderLocalName__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderLocalName xmlTextReaderLocalName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderLocatorBaseURI +extern __typeof (xmlTextReaderLocatorBaseURI) xmlTextReaderLocatorBaseURI __attribute((alias("xmlTextReaderLocatorBaseURI__internal_alias"))); +#else +#ifndef xmlTextReaderLocatorBaseURI +extern __typeof (xmlTextReaderLocatorBaseURI) xmlTextReaderLocatorBaseURI__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderLocatorBaseURI xmlTextReaderLocatorBaseURI__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderLocatorLineNumber +extern __typeof (xmlTextReaderLocatorLineNumber) xmlTextReaderLocatorLineNumber __attribute((alias("xmlTextReaderLocatorLineNumber__internal_alias"))); +#else +#ifndef xmlTextReaderLocatorLineNumber +extern __typeof (xmlTextReaderLocatorLineNumber) xmlTextReaderLocatorLineNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderLocatorLineNumber xmlTextReaderLocatorLineNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderLookupNamespace +extern __typeof (xmlTextReaderLookupNamespace) xmlTextReaderLookupNamespace __attribute((alias("xmlTextReaderLookupNamespace__internal_alias"))); +#else +#ifndef xmlTextReaderLookupNamespace +extern __typeof (xmlTextReaderLookupNamespace) xmlTextReaderLookupNamespace__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderLookupNamespace xmlTextReaderLookupNamespace__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderMoveToAttribute +extern __typeof (xmlTextReaderMoveToAttribute) xmlTextReaderMoveToAttribute __attribute((alias("xmlTextReaderMoveToAttribute__internal_alias"))); +#else +#ifndef xmlTextReaderMoveToAttribute +extern __typeof (xmlTextReaderMoveToAttribute) xmlTextReaderMoveToAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderMoveToAttribute xmlTextReaderMoveToAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderMoveToAttributeNo +extern __typeof (xmlTextReaderMoveToAttributeNo) xmlTextReaderMoveToAttributeNo __attribute((alias("xmlTextReaderMoveToAttributeNo__internal_alias"))); +#else +#ifndef xmlTextReaderMoveToAttributeNo +extern __typeof (xmlTextReaderMoveToAttributeNo) xmlTextReaderMoveToAttributeNo__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderMoveToAttributeNo xmlTextReaderMoveToAttributeNo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderMoveToAttributeNs +extern __typeof (xmlTextReaderMoveToAttributeNs) xmlTextReaderMoveToAttributeNs __attribute((alias("xmlTextReaderMoveToAttributeNs__internal_alias"))); +#else +#ifndef xmlTextReaderMoveToAttributeNs +extern __typeof (xmlTextReaderMoveToAttributeNs) xmlTextReaderMoveToAttributeNs__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderMoveToAttributeNs xmlTextReaderMoveToAttributeNs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderMoveToElement +extern __typeof (xmlTextReaderMoveToElement) xmlTextReaderMoveToElement __attribute((alias("xmlTextReaderMoveToElement__internal_alias"))); +#else +#ifndef xmlTextReaderMoveToElement +extern __typeof (xmlTextReaderMoveToElement) xmlTextReaderMoveToElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderMoveToElement xmlTextReaderMoveToElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderMoveToFirstAttribute +extern __typeof (xmlTextReaderMoveToFirstAttribute) xmlTextReaderMoveToFirstAttribute __attribute((alias("xmlTextReaderMoveToFirstAttribute__internal_alias"))); +#else +#ifndef xmlTextReaderMoveToFirstAttribute +extern __typeof (xmlTextReaderMoveToFirstAttribute) xmlTextReaderMoveToFirstAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderMoveToFirstAttribute xmlTextReaderMoveToFirstAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderMoveToNextAttribute +extern __typeof (xmlTextReaderMoveToNextAttribute) xmlTextReaderMoveToNextAttribute __attribute((alias("xmlTextReaderMoveToNextAttribute__internal_alias"))); +#else +#ifndef xmlTextReaderMoveToNextAttribute +extern __typeof (xmlTextReaderMoveToNextAttribute) xmlTextReaderMoveToNextAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderMoveToNextAttribute xmlTextReaderMoveToNextAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderName +extern __typeof (xmlTextReaderName) xmlTextReaderName __attribute((alias("xmlTextReaderName__internal_alias"))); +#else +#ifndef xmlTextReaderName +extern __typeof (xmlTextReaderName) xmlTextReaderName__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderName xmlTextReaderName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderNamespaceUri +extern __typeof (xmlTextReaderNamespaceUri) xmlTextReaderNamespaceUri __attribute((alias("xmlTextReaderNamespaceUri__internal_alias"))); +#else +#ifndef xmlTextReaderNamespaceUri +extern __typeof (xmlTextReaderNamespaceUri) xmlTextReaderNamespaceUri__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderNamespaceUri xmlTextReaderNamespaceUri__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderNext +extern __typeof (xmlTextReaderNext) xmlTextReaderNext __attribute((alias("xmlTextReaderNext__internal_alias"))); +#else +#ifndef xmlTextReaderNext +extern __typeof (xmlTextReaderNext) xmlTextReaderNext__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderNext xmlTextReaderNext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderNextSibling +extern __typeof (xmlTextReaderNextSibling) xmlTextReaderNextSibling __attribute((alias("xmlTextReaderNextSibling__internal_alias"))); +#else +#ifndef xmlTextReaderNextSibling +extern __typeof (xmlTextReaderNextSibling) xmlTextReaderNextSibling__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderNextSibling xmlTextReaderNextSibling__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderNodeType +extern __typeof (xmlTextReaderNodeType) xmlTextReaderNodeType __attribute((alias("xmlTextReaderNodeType__internal_alias"))); +#else +#ifndef xmlTextReaderNodeType +extern __typeof (xmlTextReaderNodeType) xmlTextReaderNodeType__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderNodeType xmlTextReaderNodeType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderNormalization +extern __typeof (xmlTextReaderNormalization) xmlTextReaderNormalization __attribute((alias("xmlTextReaderNormalization__internal_alias"))); +#else +#ifndef xmlTextReaderNormalization +extern __typeof (xmlTextReaderNormalization) xmlTextReaderNormalization__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderNormalization xmlTextReaderNormalization__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderPrefix +extern __typeof (xmlTextReaderPrefix) xmlTextReaderPrefix __attribute((alias("xmlTextReaderPrefix__internal_alias"))); +#else +#ifndef xmlTextReaderPrefix +extern __typeof (xmlTextReaderPrefix) xmlTextReaderPrefix__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderPrefix xmlTextReaderPrefix__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderPreserve +extern __typeof (xmlTextReaderPreserve) xmlTextReaderPreserve __attribute((alias("xmlTextReaderPreserve__internal_alias"))); +#else +#ifndef xmlTextReaderPreserve +extern __typeof (xmlTextReaderPreserve) xmlTextReaderPreserve__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderPreserve xmlTextReaderPreserve__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderPreservePattern +extern __typeof (xmlTextReaderPreservePattern) xmlTextReaderPreservePattern __attribute((alias("xmlTextReaderPreservePattern__internal_alias"))); +#else +#ifndef xmlTextReaderPreservePattern +extern __typeof (xmlTextReaderPreservePattern) xmlTextReaderPreservePattern__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderPreservePattern xmlTextReaderPreservePattern__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderQuoteChar +extern __typeof (xmlTextReaderQuoteChar) xmlTextReaderQuoteChar __attribute((alias("xmlTextReaderQuoteChar__internal_alias"))); +#else +#ifndef xmlTextReaderQuoteChar +extern __typeof (xmlTextReaderQuoteChar) xmlTextReaderQuoteChar__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderQuoteChar xmlTextReaderQuoteChar__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderRead +extern __typeof (xmlTextReaderRead) xmlTextReaderRead __attribute((alias("xmlTextReaderRead__internal_alias"))); +#else +#ifndef xmlTextReaderRead +extern __typeof (xmlTextReaderRead) xmlTextReaderRead__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderRead xmlTextReaderRead__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderReadAttributeValue +extern __typeof (xmlTextReaderReadAttributeValue) xmlTextReaderReadAttributeValue __attribute((alias("xmlTextReaderReadAttributeValue__internal_alias"))); +#else +#ifndef xmlTextReaderReadAttributeValue +extern __typeof (xmlTextReaderReadAttributeValue) xmlTextReaderReadAttributeValue__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderReadAttributeValue xmlTextReaderReadAttributeValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderReadInnerXml +extern __typeof (xmlTextReaderReadInnerXml) xmlTextReaderReadInnerXml __attribute((alias("xmlTextReaderReadInnerXml__internal_alias"))); +#else +#ifndef xmlTextReaderReadInnerXml +extern __typeof (xmlTextReaderReadInnerXml) xmlTextReaderReadInnerXml__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderReadInnerXml xmlTextReaderReadInnerXml__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderReadOuterXml +extern __typeof (xmlTextReaderReadOuterXml) xmlTextReaderReadOuterXml __attribute((alias("xmlTextReaderReadOuterXml__internal_alias"))); +#else +#ifndef xmlTextReaderReadOuterXml +extern __typeof (xmlTextReaderReadOuterXml) xmlTextReaderReadOuterXml__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderReadOuterXml xmlTextReaderReadOuterXml__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderReadState +extern __typeof (xmlTextReaderReadState) xmlTextReaderReadState __attribute((alias("xmlTextReaderReadState__internal_alias"))); +#else +#ifndef xmlTextReaderReadState +extern __typeof (xmlTextReaderReadState) xmlTextReaderReadState__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderReadState xmlTextReaderReadState__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderReadString +extern __typeof (xmlTextReaderReadString) xmlTextReaderReadString __attribute((alias("xmlTextReaderReadString__internal_alias"))); +#else +#ifndef xmlTextReaderReadString +extern __typeof (xmlTextReaderReadString) xmlTextReaderReadString__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderReadString xmlTextReaderReadString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderRelaxNGSetSchema +extern __typeof (xmlTextReaderRelaxNGSetSchema) xmlTextReaderRelaxNGSetSchema __attribute((alias("xmlTextReaderRelaxNGSetSchema__internal_alias"))); +#else +#ifndef xmlTextReaderRelaxNGSetSchema +extern __typeof (xmlTextReaderRelaxNGSetSchema) xmlTextReaderRelaxNGSetSchema__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderRelaxNGSetSchema xmlTextReaderRelaxNGSetSchema__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderRelaxNGValidate +extern __typeof (xmlTextReaderRelaxNGValidate) xmlTextReaderRelaxNGValidate __attribute((alias("xmlTextReaderRelaxNGValidate__internal_alias"))); +#else +#ifndef xmlTextReaderRelaxNGValidate +extern __typeof (xmlTextReaderRelaxNGValidate) xmlTextReaderRelaxNGValidate__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderRelaxNGValidate xmlTextReaderRelaxNGValidate__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderRelaxNGValidateCtxt +extern __typeof (xmlTextReaderRelaxNGValidateCtxt) xmlTextReaderRelaxNGValidateCtxt __attribute((alias("xmlTextReaderRelaxNGValidateCtxt__internal_alias"))); +#else +#ifndef xmlTextReaderRelaxNGValidateCtxt +extern __typeof (xmlTextReaderRelaxNGValidateCtxt) xmlTextReaderRelaxNGValidateCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderRelaxNGValidateCtxt xmlTextReaderRelaxNGValidateCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderSchemaValidate +extern __typeof (xmlTextReaderSchemaValidate) xmlTextReaderSchemaValidate __attribute((alias("xmlTextReaderSchemaValidate__internal_alias"))); +#else +#ifndef xmlTextReaderSchemaValidate +extern __typeof (xmlTextReaderSchemaValidate) xmlTextReaderSchemaValidate__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderSchemaValidate xmlTextReaderSchemaValidate__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderSchemaValidateCtxt +extern __typeof (xmlTextReaderSchemaValidateCtxt) xmlTextReaderSchemaValidateCtxt __attribute((alias("xmlTextReaderSchemaValidateCtxt__internal_alias"))); +#else +#ifndef xmlTextReaderSchemaValidateCtxt +extern __typeof (xmlTextReaderSchemaValidateCtxt) xmlTextReaderSchemaValidateCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderSchemaValidateCtxt xmlTextReaderSchemaValidateCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderSetErrorHandler +extern __typeof (xmlTextReaderSetErrorHandler) xmlTextReaderSetErrorHandler __attribute((alias("xmlTextReaderSetErrorHandler__internal_alias"))); +#else +#ifndef xmlTextReaderSetErrorHandler +extern __typeof (xmlTextReaderSetErrorHandler) xmlTextReaderSetErrorHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderSetErrorHandler xmlTextReaderSetErrorHandler__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderSetParserProp +extern __typeof (xmlTextReaderSetParserProp) xmlTextReaderSetParserProp __attribute((alias("xmlTextReaderSetParserProp__internal_alias"))); +#else +#ifndef xmlTextReaderSetParserProp +extern __typeof (xmlTextReaderSetParserProp) xmlTextReaderSetParserProp__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderSetParserProp xmlTextReaderSetParserProp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderSetSchema +extern __typeof (xmlTextReaderSetSchema) xmlTextReaderSetSchema __attribute((alias("xmlTextReaderSetSchema__internal_alias"))); +#else +#ifndef xmlTextReaderSetSchema +extern __typeof (xmlTextReaderSetSchema) xmlTextReaderSetSchema__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderSetSchema xmlTextReaderSetSchema__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderSetStructuredErrorHandler +extern __typeof (xmlTextReaderSetStructuredErrorHandler) xmlTextReaderSetStructuredErrorHandler __attribute((alias("xmlTextReaderSetStructuredErrorHandler__internal_alias"))); +#else +#ifndef xmlTextReaderSetStructuredErrorHandler +extern __typeof (xmlTextReaderSetStructuredErrorHandler) xmlTextReaderSetStructuredErrorHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderSetStructuredErrorHandler xmlTextReaderSetStructuredErrorHandler__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderSetup +extern __typeof (xmlTextReaderSetup) xmlTextReaderSetup __attribute((alias("xmlTextReaderSetup__internal_alias"))); +#else +#ifndef xmlTextReaderSetup +extern __typeof (xmlTextReaderSetup) xmlTextReaderSetup__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderSetup xmlTextReaderSetup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderStandalone +extern __typeof (xmlTextReaderStandalone) xmlTextReaderStandalone __attribute((alias("xmlTextReaderStandalone__internal_alias"))); +#else +#ifndef xmlTextReaderStandalone +extern __typeof (xmlTextReaderStandalone) xmlTextReaderStandalone__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderStandalone xmlTextReaderStandalone__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderValue +extern __typeof (xmlTextReaderValue) xmlTextReaderValue __attribute((alias("xmlTextReaderValue__internal_alias"))); +#else +#ifndef xmlTextReaderValue +extern __typeof (xmlTextReaderValue) xmlTextReaderValue__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderValue xmlTextReaderValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderXmlLang +extern __typeof (xmlTextReaderXmlLang) xmlTextReaderXmlLang __attribute((alias("xmlTextReaderXmlLang__internal_alias"))); +#else +#ifndef xmlTextReaderXmlLang +extern __typeof (xmlTextReaderXmlLang) xmlTextReaderXmlLang__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderXmlLang xmlTextReaderXmlLang__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndAttribute +extern __typeof (xmlTextWriterEndAttribute) xmlTextWriterEndAttribute __attribute((alias("xmlTextWriterEndAttribute__internal_alias"))); +#else +#ifndef xmlTextWriterEndAttribute +extern __typeof (xmlTextWriterEndAttribute) xmlTextWriterEndAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndAttribute xmlTextWriterEndAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndCDATA +extern __typeof (xmlTextWriterEndCDATA) xmlTextWriterEndCDATA __attribute((alias("xmlTextWriterEndCDATA__internal_alias"))); +#else +#ifndef xmlTextWriterEndCDATA +extern __typeof (xmlTextWriterEndCDATA) xmlTextWriterEndCDATA__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndCDATA xmlTextWriterEndCDATA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndComment +extern __typeof (xmlTextWriterEndComment) xmlTextWriterEndComment __attribute((alias("xmlTextWriterEndComment__internal_alias"))); +#else +#ifndef xmlTextWriterEndComment +extern __typeof (xmlTextWriterEndComment) xmlTextWriterEndComment__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndComment xmlTextWriterEndComment__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndDTD +extern __typeof (xmlTextWriterEndDTD) xmlTextWriterEndDTD __attribute((alias("xmlTextWriterEndDTD__internal_alias"))); +#else +#ifndef xmlTextWriterEndDTD +extern __typeof (xmlTextWriterEndDTD) xmlTextWriterEndDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndDTD xmlTextWriterEndDTD__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndDTDAttlist +extern __typeof (xmlTextWriterEndDTDAttlist) xmlTextWriterEndDTDAttlist __attribute((alias("xmlTextWriterEndDTDAttlist__internal_alias"))); +#else +#ifndef xmlTextWriterEndDTDAttlist +extern __typeof (xmlTextWriterEndDTDAttlist) xmlTextWriterEndDTDAttlist__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndDTDAttlist xmlTextWriterEndDTDAttlist__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndDTDElement +extern __typeof (xmlTextWriterEndDTDElement) xmlTextWriterEndDTDElement __attribute((alias("xmlTextWriterEndDTDElement__internal_alias"))); +#else +#ifndef xmlTextWriterEndDTDElement +extern __typeof (xmlTextWriterEndDTDElement) xmlTextWriterEndDTDElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndDTDElement xmlTextWriterEndDTDElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndDTDEntity +extern __typeof (xmlTextWriterEndDTDEntity) xmlTextWriterEndDTDEntity __attribute((alias("xmlTextWriterEndDTDEntity__internal_alias"))); +#else +#ifndef xmlTextWriterEndDTDEntity +extern __typeof (xmlTextWriterEndDTDEntity) xmlTextWriterEndDTDEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndDTDEntity xmlTextWriterEndDTDEntity__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndDocument +extern __typeof (xmlTextWriterEndDocument) xmlTextWriterEndDocument __attribute((alias("xmlTextWriterEndDocument__internal_alias"))); +#else +#ifndef xmlTextWriterEndDocument +extern __typeof (xmlTextWriterEndDocument) xmlTextWriterEndDocument__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndDocument xmlTextWriterEndDocument__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndElement +extern __typeof (xmlTextWriterEndElement) xmlTextWriterEndElement __attribute((alias("xmlTextWriterEndElement__internal_alias"))); +#else +#ifndef xmlTextWriterEndElement +extern __typeof (xmlTextWriterEndElement) xmlTextWriterEndElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndElement xmlTextWriterEndElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndPI +extern __typeof (xmlTextWriterEndPI) xmlTextWriterEndPI __attribute((alias("xmlTextWriterEndPI__internal_alias"))); +#else +#ifndef xmlTextWriterEndPI +extern __typeof (xmlTextWriterEndPI) xmlTextWriterEndPI__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndPI xmlTextWriterEndPI__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterFlush +extern __typeof (xmlTextWriterFlush) xmlTextWriterFlush __attribute((alias("xmlTextWriterFlush__internal_alias"))); +#else +#ifndef xmlTextWriterFlush +extern __typeof (xmlTextWriterFlush) xmlTextWriterFlush__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterFlush xmlTextWriterFlush__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterFullEndElement +extern __typeof (xmlTextWriterFullEndElement) xmlTextWriterFullEndElement __attribute((alias("xmlTextWriterFullEndElement__internal_alias"))); +#else +#ifndef xmlTextWriterFullEndElement +extern __typeof (xmlTextWriterFullEndElement) xmlTextWriterFullEndElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterFullEndElement xmlTextWriterFullEndElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterSetIndent +extern __typeof (xmlTextWriterSetIndent) xmlTextWriterSetIndent __attribute((alias("xmlTextWriterSetIndent__internal_alias"))); +#else +#ifndef xmlTextWriterSetIndent +extern __typeof (xmlTextWriterSetIndent) xmlTextWriterSetIndent__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterSetIndent xmlTextWriterSetIndent__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterSetIndentString +extern __typeof (xmlTextWriterSetIndentString) xmlTextWriterSetIndentString __attribute((alias("xmlTextWriterSetIndentString__internal_alias"))); +#else +#ifndef xmlTextWriterSetIndentString +extern __typeof (xmlTextWriterSetIndentString) xmlTextWriterSetIndentString__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterSetIndentString xmlTextWriterSetIndentString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterSetQuoteChar +extern __typeof (xmlTextWriterSetQuoteChar) xmlTextWriterSetQuoteChar __attribute((alias("xmlTextWriterSetQuoteChar__internal_alias"))); +#else +#ifndef xmlTextWriterSetQuoteChar +extern __typeof (xmlTextWriterSetQuoteChar) xmlTextWriterSetQuoteChar__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterSetQuoteChar xmlTextWriterSetQuoteChar__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartAttribute +extern __typeof (xmlTextWriterStartAttribute) xmlTextWriterStartAttribute __attribute((alias("xmlTextWriterStartAttribute__internal_alias"))); +#else +#ifndef xmlTextWriterStartAttribute +extern __typeof (xmlTextWriterStartAttribute) xmlTextWriterStartAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartAttribute xmlTextWriterStartAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartAttributeNS +extern __typeof (xmlTextWriterStartAttributeNS) xmlTextWriterStartAttributeNS __attribute((alias("xmlTextWriterStartAttributeNS__internal_alias"))); +#else +#ifndef xmlTextWriterStartAttributeNS +extern __typeof (xmlTextWriterStartAttributeNS) xmlTextWriterStartAttributeNS__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartAttributeNS xmlTextWriterStartAttributeNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartCDATA +extern __typeof (xmlTextWriterStartCDATA) xmlTextWriterStartCDATA __attribute((alias("xmlTextWriterStartCDATA__internal_alias"))); +#else +#ifndef xmlTextWriterStartCDATA +extern __typeof (xmlTextWriterStartCDATA) xmlTextWriterStartCDATA__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartCDATA xmlTextWriterStartCDATA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartComment +extern __typeof (xmlTextWriterStartComment) xmlTextWriterStartComment __attribute((alias("xmlTextWriterStartComment__internal_alias"))); +#else +#ifndef xmlTextWriterStartComment +extern __typeof (xmlTextWriterStartComment) xmlTextWriterStartComment__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartComment xmlTextWriterStartComment__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartDTD +extern __typeof (xmlTextWriterStartDTD) xmlTextWriterStartDTD __attribute((alias("xmlTextWriterStartDTD__internal_alias"))); +#else +#ifndef xmlTextWriterStartDTD +extern __typeof (xmlTextWriterStartDTD) xmlTextWriterStartDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartDTD xmlTextWriterStartDTD__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartDTDAttlist +extern __typeof (xmlTextWriterStartDTDAttlist) xmlTextWriterStartDTDAttlist __attribute((alias("xmlTextWriterStartDTDAttlist__internal_alias"))); +#else +#ifndef xmlTextWriterStartDTDAttlist +extern __typeof (xmlTextWriterStartDTDAttlist) xmlTextWriterStartDTDAttlist__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartDTDAttlist xmlTextWriterStartDTDAttlist__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartDTDElement +extern __typeof (xmlTextWriterStartDTDElement) xmlTextWriterStartDTDElement __attribute((alias("xmlTextWriterStartDTDElement__internal_alias"))); +#else +#ifndef xmlTextWriterStartDTDElement +extern __typeof (xmlTextWriterStartDTDElement) xmlTextWriterStartDTDElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartDTDElement xmlTextWriterStartDTDElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartDTDEntity +extern __typeof (xmlTextWriterStartDTDEntity) xmlTextWriterStartDTDEntity __attribute((alias("xmlTextWriterStartDTDEntity__internal_alias"))); +#else +#ifndef xmlTextWriterStartDTDEntity +extern __typeof (xmlTextWriterStartDTDEntity) xmlTextWriterStartDTDEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartDTDEntity xmlTextWriterStartDTDEntity__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartDocument +extern __typeof (xmlTextWriterStartDocument) xmlTextWriterStartDocument __attribute((alias("xmlTextWriterStartDocument__internal_alias"))); +#else +#ifndef xmlTextWriterStartDocument +extern __typeof (xmlTextWriterStartDocument) xmlTextWriterStartDocument__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartDocument xmlTextWriterStartDocument__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartElement +extern __typeof (xmlTextWriterStartElement) xmlTextWriterStartElement __attribute((alias("xmlTextWriterStartElement__internal_alias"))); +#else +#ifndef xmlTextWriterStartElement +extern __typeof (xmlTextWriterStartElement) xmlTextWriterStartElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartElement xmlTextWriterStartElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartElementNS +extern __typeof (xmlTextWriterStartElementNS) xmlTextWriterStartElementNS __attribute((alias("xmlTextWriterStartElementNS__internal_alias"))); +#else +#ifndef xmlTextWriterStartElementNS +extern __typeof (xmlTextWriterStartElementNS) xmlTextWriterStartElementNS__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartElementNS xmlTextWriterStartElementNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartPI +extern __typeof (xmlTextWriterStartPI) xmlTextWriterStartPI __attribute((alias("xmlTextWriterStartPI__internal_alias"))); +#else +#ifndef xmlTextWriterStartPI +extern __typeof (xmlTextWriterStartPI) xmlTextWriterStartPI__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartPI xmlTextWriterStartPI__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteAttribute +extern __typeof (xmlTextWriterWriteAttribute) xmlTextWriterWriteAttribute __attribute((alias("xmlTextWriterWriteAttribute__internal_alias"))); +#else +#ifndef xmlTextWriterWriteAttribute +extern __typeof (xmlTextWriterWriteAttribute) xmlTextWriterWriteAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteAttribute xmlTextWriterWriteAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteAttributeNS +extern __typeof (xmlTextWriterWriteAttributeNS) xmlTextWriterWriteAttributeNS __attribute((alias("xmlTextWriterWriteAttributeNS__internal_alias"))); +#else +#ifndef xmlTextWriterWriteAttributeNS +extern __typeof (xmlTextWriterWriteAttributeNS) xmlTextWriterWriteAttributeNS__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteAttributeNS xmlTextWriterWriteAttributeNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteBase64 +extern __typeof (xmlTextWriterWriteBase64) xmlTextWriterWriteBase64 __attribute((alias("xmlTextWriterWriteBase64__internal_alias"))); +#else +#ifndef xmlTextWriterWriteBase64 +extern __typeof (xmlTextWriterWriteBase64) xmlTextWriterWriteBase64__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteBase64 xmlTextWriterWriteBase64__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteBinHex +extern __typeof (xmlTextWriterWriteBinHex) xmlTextWriterWriteBinHex __attribute((alias("xmlTextWriterWriteBinHex__internal_alias"))); +#else +#ifndef xmlTextWriterWriteBinHex +extern __typeof (xmlTextWriterWriteBinHex) xmlTextWriterWriteBinHex__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteBinHex xmlTextWriterWriteBinHex__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteCDATA +extern __typeof (xmlTextWriterWriteCDATA) xmlTextWriterWriteCDATA __attribute((alias("xmlTextWriterWriteCDATA__internal_alias"))); +#else +#ifndef xmlTextWriterWriteCDATA +extern __typeof (xmlTextWriterWriteCDATA) xmlTextWriterWriteCDATA__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteCDATA xmlTextWriterWriteCDATA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteComment +extern __typeof (xmlTextWriterWriteComment) xmlTextWriterWriteComment __attribute((alias("xmlTextWriterWriteComment__internal_alias"))); +#else +#ifndef xmlTextWriterWriteComment +extern __typeof (xmlTextWriterWriteComment) xmlTextWriterWriteComment__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteComment xmlTextWriterWriteComment__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteDTD +extern __typeof (xmlTextWriterWriteDTD) xmlTextWriterWriteDTD __attribute((alias("xmlTextWriterWriteDTD__internal_alias"))); +#else +#ifndef xmlTextWriterWriteDTD +extern __typeof (xmlTextWriterWriteDTD) xmlTextWriterWriteDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteDTD xmlTextWriterWriteDTD__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteDTDAttlist +extern __typeof (xmlTextWriterWriteDTDAttlist) xmlTextWriterWriteDTDAttlist __attribute((alias("xmlTextWriterWriteDTDAttlist__internal_alias"))); +#else +#ifndef xmlTextWriterWriteDTDAttlist +extern __typeof (xmlTextWriterWriteDTDAttlist) xmlTextWriterWriteDTDAttlist__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteDTDAttlist xmlTextWriterWriteDTDAttlist__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteDTDElement +extern __typeof (xmlTextWriterWriteDTDElement) xmlTextWriterWriteDTDElement __attribute((alias("xmlTextWriterWriteDTDElement__internal_alias"))); +#else +#ifndef xmlTextWriterWriteDTDElement +extern __typeof (xmlTextWriterWriteDTDElement) xmlTextWriterWriteDTDElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteDTDElement xmlTextWriterWriteDTDElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteDTDEntity +extern __typeof (xmlTextWriterWriteDTDEntity) xmlTextWriterWriteDTDEntity __attribute((alias("xmlTextWriterWriteDTDEntity__internal_alias"))); +#else +#ifndef xmlTextWriterWriteDTDEntity +extern __typeof (xmlTextWriterWriteDTDEntity) xmlTextWriterWriteDTDEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteDTDEntity xmlTextWriterWriteDTDEntity__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteDTDExternalEntity +extern __typeof (xmlTextWriterWriteDTDExternalEntity) xmlTextWriterWriteDTDExternalEntity __attribute((alias("xmlTextWriterWriteDTDExternalEntity__internal_alias"))); +#else +#ifndef xmlTextWriterWriteDTDExternalEntity +extern __typeof (xmlTextWriterWriteDTDExternalEntity) xmlTextWriterWriteDTDExternalEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteDTDExternalEntity xmlTextWriterWriteDTDExternalEntity__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteDTDExternalEntityContents +extern __typeof (xmlTextWriterWriteDTDExternalEntityContents) xmlTextWriterWriteDTDExternalEntityContents __attribute((alias("xmlTextWriterWriteDTDExternalEntityContents__internal_alias"))); +#else +#ifndef xmlTextWriterWriteDTDExternalEntityContents +extern __typeof (xmlTextWriterWriteDTDExternalEntityContents) xmlTextWriterWriteDTDExternalEntityContents__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteDTDExternalEntityContents xmlTextWriterWriteDTDExternalEntityContents__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteDTDInternalEntity +extern __typeof (xmlTextWriterWriteDTDInternalEntity) xmlTextWriterWriteDTDInternalEntity __attribute((alias("xmlTextWriterWriteDTDInternalEntity__internal_alias"))); +#else +#ifndef xmlTextWriterWriteDTDInternalEntity +extern __typeof (xmlTextWriterWriteDTDInternalEntity) xmlTextWriterWriteDTDInternalEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteDTDInternalEntity xmlTextWriterWriteDTDInternalEntity__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteDTDNotation +extern __typeof (xmlTextWriterWriteDTDNotation) xmlTextWriterWriteDTDNotation __attribute((alias("xmlTextWriterWriteDTDNotation__internal_alias"))); +#else +#ifndef xmlTextWriterWriteDTDNotation +extern __typeof (xmlTextWriterWriteDTDNotation) xmlTextWriterWriteDTDNotation__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteDTDNotation xmlTextWriterWriteDTDNotation__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteElement +extern __typeof (xmlTextWriterWriteElement) xmlTextWriterWriteElement __attribute((alias("xmlTextWriterWriteElement__internal_alias"))); +#else +#ifndef xmlTextWriterWriteElement +extern __typeof (xmlTextWriterWriteElement) xmlTextWriterWriteElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteElement xmlTextWriterWriteElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteElementNS +extern __typeof (xmlTextWriterWriteElementNS) xmlTextWriterWriteElementNS __attribute((alias("xmlTextWriterWriteElementNS__internal_alias"))); +#else +#ifndef xmlTextWriterWriteElementNS +extern __typeof (xmlTextWriterWriteElementNS) xmlTextWriterWriteElementNS__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteElementNS xmlTextWriterWriteElementNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatAttribute +extern __typeof (xmlTextWriterWriteFormatAttribute) xmlTextWriterWriteFormatAttribute __attribute((alias("xmlTextWriterWriteFormatAttribute__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatAttribute +extern __typeof (xmlTextWriterWriteFormatAttribute) xmlTextWriterWriteFormatAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatAttribute xmlTextWriterWriteFormatAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatAttributeNS +extern __typeof (xmlTextWriterWriteFormatAttributeNS) xmlTextWriterWriteFormatAttributeNS __attribute((alias("xmlTextWriterWriteFormatAttributeNS__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatAttributeNS +extern __typeof (xmlTextWriterWriteFormatAttributeNS) xmlTextWriterWriteFormatAttributeNS__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatAttributeNS xmlTextWriterWriteFormatAttributeNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatCDATA +extern __typeof (xmlTextWriterWriteFormatCDATA) xmlTextWriterWriteFormatCDATA __attribute((alias("xmlTextWriterWriteFormatCDATA__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatCDATA +extern __typeof (xmlTextWriterWriteFormatCDATA) xmlTextWriterWriteFormatCDATA__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatCDATA xmlTextWriterWriteFormatCDATA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatComment +extern __typeof (xmlTextWriterWriteFormatComment) xmlTextWriterWriteFormatComment __attribute((alias("xmlTextWriterWriteFormatComment__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatComment +extern __typeof (xmlTextWriterWriteFormatComment) xmlTextWriterWriteFormatComment__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatComment xmlTextWriterWriteFormatComment__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatDTD +extern __typeof (xmlTextWriterWriteFormatDTD) xmlTextWriterWriteFormatDTD __attribute((alias("xmlTextWriterWriteFormatDTD__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatDTD +extern __typeof (xmlTextWriterWriteFormatDTD) xmlTextWriterWriteFormatDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatDTD xmlTextWriterWriteFormatDTD__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatDTDAttlist +extern __typeof (xmlTextWriterWriteFormatDTDAttlist) xmlTextWriterWriteFormatDTDAttlist __attribute((alias("xmlTextWriterWriteFormatDTDAttlist__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatDTDAttlist +extern __typeof (xmlTextWriterWriteFormatDTDAttlist) xmlTextWriterWriteFormatDTDAttlist__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatDTDAttlist xmlTextWriterWriteFormatDTDAttlist__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatDTDElement +extern __typeof (xmlTextWriterWriteFormatDTDElement) xmlTextWriterWriteFormatDTDElement __attribute((alias("xmlTextWriterWriteFormatDTDElement__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatDTDElement +extern __typeof (xmlTextWriterWriteFormatDTDElement) xmlTextWriterWriteFormatDTDElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatDTDElement xmlTextWriterWriteFormatDTDElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatDTDInternalEntity +extern __typeof (xmlTextWriterWriteFormatDTDInternalEntity) xmlTextWriterWriteFormatDTDInternalEntity __attribute((alias("xmlTextWriterWriteFormatDTDInternalEntity__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatDTDInternalEntity +extern __typeof (xmlTextWriterWriteFormatDTDInternalEntity) xmlTextWriterWriteFormatDTDInternalEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatDTDInternalEntity xmlTextWriterWriteFormatDTDInternalEntity__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatElement +extern __typeof (xmlTextWriterWriteFormatElement) xmlTextWriterWriteFormatElement __attribute((alias("xmlTextWriterWriteFormatElement__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatElement +extern __typeof (xmlTextWriterWriteFormatElement) xmlTextWriterWriteFormatElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatElement xmlTextWriterWriteFormatElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatElementNS +extern __typeof (xmlTextWriterWriteFormatElementNS) xmlTextWriterWriteFormatElementNS __attribute((alias("xmlTextWriterWriteFormatElementNS__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatElementNS +extern __typeof (xmlTextWriterWriteFormatElementNS) xmlTextWriterWriteFormatElementNS__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatElementNS xmlTextWriterWriteFormatElementNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatPI +extern __typeof (xmlTextWriterWriteFormatPI) xmlTextWriterWriteFormatPI __attribute((alias("xmlTextWriterWriteFormatPI__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatPI +extern __typeof (xmlTextWriterWriteFormatPI) xmlTextWriterWriteFormatPI__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatPI xmlTextWriterWriteFormatPI__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatRaw +extern __typeof (xmlTextWriterWriteFormatRaw) xmlTextWriterWriteFormatRaw __attribute((alias("xmlTextWriterWriteFormatRaw__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatRaw +extern __typeof (xmlTextWriterWriteFormatRaw) xmlTextWriterWriteFormatRaw__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatRaw xmlTextWriterWriteFormatRaw__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatString +extern __typeof (xmlTextWriterWriteFormatString) xmlTextWriterWriteFormatString __attribute((alias("xmlTextWriterWriteFormatString__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatString +extern __typeof (xmlTextWriterWriteFormatString) xmlTextWriterWriteFormatString__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatString xmlTextWriterWriteFormatString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWritePI +extern __typeof (xmlTextWriterWritePI) xmlTextWriterWritePI __attribute((alias("xmlTextWriterWritePI__internal_alias"))); +#else +#ifndef xmlTextWriterWritePI +extern __typeof (xmlTextWriterWritePI) xmlTextWriterWritePI__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWritePI xmlTextWriterWritePI__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteRaw +extern __typeof (xmlTextWriterWriteRaw) xmlTextWriterWriteRaw __attribute((alias("xmlTextWriterWriteRaw__internal_alias"))); +#else +#ifndef xmlTextWriterWriteRaw +extern __typeof (xmlTextWriterWriteRaw) xmlTextWriterWriteRaw__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteRaw xmlTextWriterWriteRaw__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteRawLen +extern __typeof (xmlTextWriterWriteRawLen) xmlTextWriterWriteRawLen __attribute((alias("xmlTextWriterWriteRawLen__internal_alias"))); +#else +#ifndef xmlTextWriterWriteRawLen +extern __typeof (xmlTextWriterWriteRawLen) xmlTextWriterWriteRawLen__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteRawLen xmlTextWriterWriteRawLen__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteString +extern __typeof (xmlTextWriterWriteString) xmlTextWriterWriteString __attribute((alias("xmlTextWriterWriteString__internal_alias"))); +#else +#ifndef xmlTextWriterWriteString +extern __typeof (xmlTextWriterWriteString) xmlTextWriterWriteString__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteString xmlTextWriterWriteString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatAttribute +extern __typeof (xmlTextWriterWriteVFormatAttribute) xmlTextWriterWriteVFormatAttribute __attribute((alias("xmlTextWriterWriteVFormatAttribute__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatAttribute +extern __typeof (xmlTextWriterWriteVFormatAttribute) xmlTextWriterWriteVFormatAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatAttribute xmlTextWriterWriteVFormatAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatAttributeNS +extern __typeof (xmlTextWriterWriteVFormatAttributeNS) xmlTextWriterWriteVFormatAttributeNS __attribute((alias("xmlTextWriterWriteVFormatAttributeNS__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatAttributeNS +extern __typeof (xmlTextWriterWriteVFormatAttributeNS) xmlTextWriterWriteVFormatAttributeNS__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatAttributeNS xmlTextWriterWriteVFormatAttributeNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatCDATA +extern __typeof (xmlTextWriterWriteVFormatCDATA) xmlTextWriterWriteVFormatCDATA __attribute((alias("xmlTextWriterWriteVFormatCDATA__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatCDATA +extern __typeof (xmlTextWriterWriteVFormatCDATA) xmlTextWriterWriteVFormatCDATA__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatCDATA xmlTextWriterWriteVFormatCDATA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatComment +extern __typeof (xmlTextWriterWriteVFormatComment) xmlTextWriterWriteVFormatComment __attribute((alias("xmlTextWriterWriteVFormatComment__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatComment +extern __typeof (xmlTextWriterWriteVFormatComment) xmlTextWriterWriteVFormatComment__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatComment xmlTextWriterWriteVFormatComment__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatDTD +extern __typeof (xmlTextWriterWriteVFormatDTD) xmlTextWriterWriteVFormatDTD __attribute((alias("xmlTextWriterWriteVFormatDTD__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatDTD +extern __typeof (xmlTextWriterWriteVFormatDTD) xmlTextWriterWriteVFormatDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatDTD xmlTextWriterWriteVFormatDTD__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatDTDAttlist +extern __typeof (xmlTextWriterWriteVFormatDTDAttlist) xmlTextWriterWriteVFormatDTDAttlist __attribute((alias("xmlTextWriterWriteVFormatDTDAttlist__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatDTDAttlist +extern __typeof (xmlTextWriterWriteVFormatDTDAttlist) xmlTextWriterWriteVFormatDTDAttlist__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatDTDAttlist xmlTextWriterWriteVFormatDTDAttlist__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatDTDElement +extern __typeof (xmlTextWriterWriteVFormatDTDElement) xmlTextWriterWriteVFormatDTDElement __attribute((alias("xmlTextWriterWriteVFormatDTDElement__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatDTDElement +extern __typeof (xmlTextWriterWriteVFormatDTDElement) xmlTextWriterWriteVFormatDTDElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatDTDElement xmlTextWriterWriteVFormatDTDElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatDTDInternalEntity +extern __typeof (xmlTextWriterWriteVFormatDTDInternalEntity) xmlTextWriterWriteVFormatDTDInternalEntity __attribute((alias("xmlTextWriterWriteVFormatDTDInternalEntity__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatDTDInternalEntity +extern __typeof (xmlTextWriterWriteVFormatDTDInternalEntity) xmlTextWriterWriteVFormatDTDInternalEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatDTDInternalEntity xmlTextWriterWriteVFormatDTDInternalEntity__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatElement +extern __typeof (xmlTextWriterWriteVFormatElement) xmlTextWriterWriteVFormatElement __attribute((alias("xmlTextWriterWriteVFormatElement__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatElement +extern __typeof (xmlTextWriterWriteVFormatElement) xmlTextWriterWriteVFormatElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatElement xmlTextWriterWriteVFormatElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatElementNS +extern __typeof (xmlTextWriterWriteVFormatElementNS) xmlTextWriterWriteVFormatElementNS __attribute((alias("xmlTextWriterWriteVFormatElementNS__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatElementNS +extern __typeof (xmlTextWriterWriteVFormatElementNS) xmlTextWriterWriteVFormatElementNS__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatElementNS xmlTextWriterWriteVFormatElementNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatPI +extern __typeof (xmlTextWriterWriteVFormatPI) xmlTextWriterWriteVFormatPI __attribute((alias("xmlTextWriterWriteVFormatPI__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatPI +extern __typeof (xmlTextWriterWriteVFormatPI) xmlTextWriterWriteVFormatPI__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatPI xmlTextWriterWriteVFormatPI__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatRaw +extern __typeof (xmlTextWriterWriteVFormatRaw) xmlTextWriterWriteVFormatRaw __attribute((alias("xmlTextWriterWriteVFormatRaw__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatRaw +extern __typeof (xmlTextWriterWriteVFormatRaw) xmlTextWriterWriteVFormatRaw__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatRaw xmlTextWriterWriteVFormatRaw__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatString +extern __typeof (xmlTextWriterWriteVFormatString) xmlTextWriterWriteVFormatString __attribute((alias("xmlTextWriterWriteVFormatString__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatString +extern __typeof (xmlTextWriterWriteVFormatString) xmlTextWriterWriteVFormatString__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatString xmlTextWriterWriteVFormatString__internal_alias +#endif +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefBufferAllocScheme +extern __typeof (xmlThrDefBufferAllocScheme) xmlThrDefBufferAllocScheme __attribute((alias("xmlThrDefBufferAllocScheme__internal_alias"))); +#else +#ifndef xmlThrDefBufferAllocScheme +extern __typeof (xmlThrDefBufferAllocScheme) xmlThrDefBufferAllocScheme__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefBufferAllocScheme xmlThrDefBufferAllocScheme__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefDefaultBufferSize +extern __typeof (xmlThrDefDefaultBufferSize) xmlThrDefDefaultBufferSize __attribute((alias("xmlThrDefDefaultBufferSize__internal_alias"))); +#else +#ifndef xmlThrDefDefaultBufferSize +extern __typeof (xmlThrDefDefaultBufferSize) xmlThrDefDefaultBufferSize__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefDefaultBufferSize xmlThrDefDefaultBufferSize__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefDeregisterNodeDefault +extern __typeof (xmlThrDefDeregisterNodeDefault) xmlThrDefDeregisterNodeDefault __attribute((alias("xmlThrDefDeregisterNodeDefault__internal_alias"))); +#else +#ifndef xmlThrDefDeregisterNodeDefault +extern __typeof (xmlThrDefDeregisterNodeDefault) xmlThrDefDeregisterNodeDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefDeregisterNodeDefault xmlThrDefDeregisterNodeDefault__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefDoValidityCheckingDefaultValue +extern __typeof (xmlThrDefDoValidityCheckingDefaultValue) xmlThrDefDoValidityCheckingDefaultValue __attribute((alias("xmlThrDefDoValidityCheckingDefaultValue__internal_alias"))); +#else +#ifndef xmlThrDefDoValidityCheckingDefaultValue +extern __typeof (xmlThrDefDoValidityCheckingDefaultValue) xmlThrDefDoValidityCheckingDefaultValue__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefDoValidityCheckingDefaultValue xmlThrDefDoValidityCheckingDefaultValue__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefGetWarningsDefaultValue +extern __typeof (xmlThrDefGetWarningsDefaultValue) xmlThrDefGetWarningsDefaultValue __attribute((alias("xmlThrDefGetWarningsDefaultValue__internal_alias"))); +#else +#ifndef xmlThrDefGetWarningsDefaultValue +extern __typeof (xmlThrDefGetWarningsDefaultValue) xmlThrDefGetWarningsDefaultValue__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefGetWarningsDefaultValue xmlThrDefGetWarningsDefaultValue__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefIndentTreeOutput +extern __typeof (xmlThrDefIndentTreeOutput) xmlThrDefIndentTreeOutput __attribute((alias("xmlThrDefIndentTreeOutput__internal_alias"))); +#else +#ifndef xmlThrDefIndentTreeOutput +extern __typeof (xmlThrDefIndentTreeOutput) xmlThrDefIndentTreeOutput__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefIndentTreeOutput xmlThrDefIndentTreeOutput__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefKeepBlanksDefaultValue +extern __typeof (xmlThrDefKeepBlanksDefaultValue) xmlThrDefKeepBlanksDefaultValue __attribute((alias("xmlThrDefKeepBlanksDefaultValue__internal_alias"))); +#else +#ifndef xmlThrDefKeepBlanksDefaultValue +extern __typeof (xmlThrDefKeepBlanksDefaultValue) xmlThrDefKeepBlanksDefaultValue__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefKeepBlanksDefaultValue xmlThrDefKeepBlanksDefaultValue__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefLineNumbersDefaultValue +extern __typeof (xmlThrDefLineNumbersDefaultValue) xmlThrDefLineNumbersDefaultValue __attribute((alias("xmlThrDefLineNumbersDefaultValue__internal_alias"))); +#else +#ifndef xmlThrDefLineNumbersDefaultValue +extern __typeof (xmlThrDefLineNumbersDefaultValue) xmlThrDefLineNumbersDefaultValue__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefLineNumbersDefaultValue xmlThrDefLineNumbersDefaultValue__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefLoadExtDtdDefaultValue +extern __typeof (xmlThrDefLoadExtDtdDefaultValue) xmlThrDefLoadExtDtdDefaultValue __attribute((alias("xmlThrDefLoadExtDtdDefaultValue__internal_alias"))); +#else +#ifndef xmlThrDefLoadExtDtdDefaultValue +extern __typeof (xmlThrDefLoadExtDtdDefaultValue) xmlThrDefLoadExtDtdDefaultValue__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefLoadExtDtdDefaultValue xmlThrDefLoadExtDtdDefaultValue__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefOutputBufferCreateFilenameDefault +extern __typeof (xmlThrDefOutputBufferCreateFilenameDefault) xmlThrDefOutputBufferCreateFilenameDefault __attribute((alias("xmlThrDefOutputBufferCreateFilenameDefault__internal_alias"))); +#else +#ifndef xmlThrDefOutputBufferCreateFilenameDefault +extern __typeof (xmlThrDefOutputBufferCreateFilenameDefault) xmlThrDefOutputBufferCreateFilenameDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefOutputBufferCreateFilenameDefault xmlThrDefOutputBufferCreateFilenameDefault__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefParserDebugEntities +extern __typeof (xmlThrDefParserDebugEntities) xmlThrDefParserDebugEntities __attribute((alias("xmlThrDefParserDebugEntities__internal_alias"))); +#else +#ifndef xmlThrDefParserDebugEntities +extern __typeof (xmlThrDefParserDebugEntities) xmlThrDefParserDebugEntities__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefParserDebugEntities xmlThrDefParserDebugEntities__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefParserInputBufferCreateFilenameDefault +extern __typeof (xmlThrDefParserInputBufferCreateFilenameDefault) xmlThrDefParserInputBufferCreateFilenameDefault __attribute((alias("xmlThrDefParserInputBufferCreateFilenameDefault__internal_alias"))); +#else +#ifndef xmlThrDefParserInputBufferCreateFilenameDefault +extern __typeof (xmlThrDefParserInputBufferCreateFilenameDefault) xmlThrDefParserInputBufferCreateFilenameDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefParserInputBufferCreateFilenameDefault xmlThrDefParserInputBufferCreateFilenameDefault__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefPedanticParserDefaultValue +extern __typeof (xmlThrDefPedanticParserDefaultValue) xmlThrDefPedanticParserDefaultValue __attribute((alias("xmlThrDefPedanticParserDefaultValue__internal_alias"))); +#else +#ifndef xmlThrDefPedanticParserDefaultValue +extern __typeof (xmlThrDefPedanticParserDefaultValue) xmlThrDefPedanticParserDefaultValue__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefPedanticParserDefaultValue xmlThrDefPedanticParserDefaultValue__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefRegisterNodeDefault +extern __typeof (xmlThrDefRegisterNodeDefault) xmlThrDefRegisterNodeDefault __attribute((alias("xmlThrDefRegisterNodeDefault__internal_alias"))); +#else +#ifndef xmlThrDefRegisterNodeDefault +extern __typeof (xmlThrDefRegisterNodeDefault) xmlThrDefRegisterNodeDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefRegisterNodeDefault xmlThrDefRegisterNodeDefault__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefSaveNoEmptyTags +extern __typeof (xmlThrDefSaveNoEmptyTags) xmlThrDefSaveNoEmptyTags __attribute((alias("xmlThrDefSaveNoEmptyTags__internal_alias"))); +#else +#ifndef xmlThrDefSaveNoEmptyTags +extern __typeof (xmlThrDefSaveNoEmptyTags) xmlThrDefSaveNoEmptyTags__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefSaveNoEmptyTags xmlThrDefSaveNoEmptyTags__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefSetGenericErrorFunc +extern __typeof (xmlThrDefSetGenericErrorFunc) xmlThrDefSetGenericErrorFunc __attribute((alias("xmlThrDefSetGenericErrorFunc__internal_alias"))); +#else +#ifndef xmlThrDefSetGenericErrorFunc +extern __typeof (xmlThrDefSetGenericErrorFunc) xmlThrDefSetGenericErrorFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefSetGenericErrorFunc xmlThrDefSetGenericErrorFunc__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefSetStructuredErrorFunc +extern __typeof (xmlThrDefSetStructuredErrorFunc) xmlThrDefSetStructuredErrorFunc __attribute((alias("xmlThrDefSetStructuredErrorFunc__internal_alias"))); +#else +#ifndef xmlThrDefSetStructuredErrorFunc +extern __typeof (xmlThrDefSetStructuredErrorFunc) xmlThrDefSetStructuredErrorFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefSetStructuredErrorFunc xmlThrDefSetStructuredErrorFunc__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefSubstituteEntitiesDefaultValue +extern __typeof (xmlThrDefSubstituteEntitiesDefaultValue) xmlThrDefSubstituteEntitiesDefaultValue __attribute((alias("xmlThrDefSubstituteEntitiesDefaultValue__internal_alias"))); +#else +#ifndef xmlThrDefSubstituteEntitiesDefaultValue +extern __typeof (xmlThrDefSubstituteEntitiesDefaultValue) xmlThrDefSubstituteEntitiesDefaultValue__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefSubstituteEntitiesDefaultValue xmlThrDefSubstituteEntitiesDefaultValue__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefTreeIndentString +extern __typeof (xmlThrDefTreeIndentString) xmlThrDefTreeIndentString __attribute((alias("xmlThrDefTreeIndentString__internal_alias"))); +#else +#ifndef xmlThrDefTreeIndentString +extern __typeof (xmlThrDefTreeIndentString) xmlThrDefTreeIndentString__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefTreeIndentString xmlThrDefTreeIndentString__internal_alias +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsAegeanNumbers +extern __typeof (xmlUCSIsAegeanNumbers) xmlUCSIsAegeanNumbers __attribute((alias("xmlUCSIsAegeanNumbers__internal_alias"))); +#else +#ifndef xmlUCSIsAegeanNumbers +extern __typeof (xmlUCSIsAegeanNumbers) xmlUCSIsAegeanNumbers__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsAegeanNumbers xmlUCSIsAegeanNumbers__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsAlphabeticPresentationForms +extern __typeof (xmlUCSIsAlphabeticPresentationForms) xmlUCSIsAlphabeticPresentationForms __attribute((alias("xmlUCSIsAlphabeticPresentationForms__internal_alias"))); +#else +#ifndef xmlUCSIsAlphabeticPresentationForms +extern __typeof (xmlUCSIsAlphabeticPresentationForms) xmlUCSIsAlphabeticPresentationForms__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsAlphabeticPresentationForms xmlUCSIsAlphabeticPresentationForms__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsArabic +extern __typeof (xmlUCSIsArabic) xmlUCSIsArabic __attribute((alias("xmlUCSIsArabic__internal_alias"))); +#else +#ifndef xmlUCSIsArabic +extern __typeof (xmlUCSIsArabic) xmlUCSIsArabic__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsArabic xmlUCSIsArabic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsArabicPresentationFormsA +extern __typeof (xmlUCSIsArabicPresentationFormsA) xmlUCSIsArabicPresentationFormsA __attribute((alias("xmlUCSIsArabicPresentationFormsA__internal_alias"))); +#else +#ifndef xmlUCSIsArabicPresentationFormsA +extern __typeof (xmlUCSIsArabicPresentationFormsA) xmlUCSIsArabicPresentationFormsA__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsArabicPresentationFormsA xmlUCSIsArabicPresentationFormsA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsArabicPresentationFormsB +extern __typeof (xmlUCSIsArabicPresentationFormsB) xmlUCSIsArabicPresentationFormsB __attribute((alias("xmlUCSIsArabicPresentationFormsB__internal_alias"))); +#else +#ifndef xmlUCSIsArabicPresentationFormsB +extern __typeof (xmlUCSIsArabicPresentationFormsB) xmlUCSIsArabicPresentationFormsB__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsArabicPresentationFormsB xmlUCSIsArabicPresentationFormsB__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsArmenian +extern __typeof (xmlUCSIsArmenian) xmlUCSIsArmenian __attribute((alias("xmlUCSIsArmenian__internal_alias"))); +#else +#ifndef xmlUCSIsArmenian +extern __typeof (xmlUCSIsArmenian) xmlUCSIsArmenian__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsArmenian xmlUCSIsArmenian__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsArrows +extern __typeof (xmlUCSIsArrows) xmlUCSIsArrows __attribute((alias("xmlUCSIsArrows__internal_alias"))); +#else +#ifndef xmlUCSIsArrows +extern __typeof (xmlUCSIsArrows) xmlUCSIsArrows__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsArrows xmlUCSIsArrows__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBasicLatin +extern __typeof (xmlUCSIsBasicLatin) xmlUCSIsBasicLatin __attribute((alias("xmlUCSIsBasicLatin__internal_alias"))); +#else +#ifndef xmlUCSIsBasicLatin +extern __typeof (xmlUCSIsBasicLatin) xmlUCSIsBasicLatin__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBasicLatin xmlUCSIsBasicLatin__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBengali +extern __typeof (xmlUCSIsBengali) xmlUCSIsBengali __attribute((alias("xmlUCSIsBengali__internal_alias"))); +#else +#ifndef xmlUCSIsBengali +extern __typeof (xmlUCSIsBengali) xmlUCSIsBengali__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBengali xmlUCSIsBengali__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBlock +extern __typeof (xmlUCSIsBlock) xmlUCSIsBlock __attribute((alias("xmlUCSIsBlock__internal_alias"))); +#else +#ifndef xmlUCSIsBlock +extern __typeof (xmlUCSIsBlock) xmlUCSIsBlock__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBlock xmlUCSIsBlock__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBlockElements +extern __typeof (xmlUCSIsBlockElements) xmlUCSIsBlockElements __attribute((alias("xmlUCSIsBlockElements__internal_alias"))); +#else +#ifndef xmlUCSIsBlockElements +extern __typeof (xmlUCSIsBlockElements) xmlUCSIsBlockElements__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBlockElements xmlUCSIsBlockElements__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBopomofo +extern __typeof (xmlUCSIsBopomofo) xmlUCSIsBopomofo __attribute((alias("xmlUCSIsBopomofo__internal_alias"))); +#else +#ifndef xmlUCSIsBopomofo +extern __typeof (xmlUCSIsBopomofo) xmlUCSIsBopomofo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBopomofo xmlUCSIsBopomofo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBopomofoExtended +extern __typeof (xmlUCSIsBopomofoExtended) xmlUCSIsBopomofoExtended __attribute((alias("xmlUCSIsBopomofoExtended__internal_alias"))); +#else +#ifndef xmlUCSIsBopomofoExtended +extern __typeof (xmlUCSIsBopomofoExtended) xmlUCSIsBopomofoExtended__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBopomofoExtended xmlUCSIsBopomofoExtended__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBoxDrawing +extern __typeof (xmlUCSIsBoxDrawing) xmlUCSIsBoxDrawing __attribute((alias("xmlUCSIsBoxDrawing__internal_alias"))); +#else +#ifndef xmlUCSIsBoxDrawing +extern __typeof (xmlUCSIsBoxDrawing) xmlUCSIsBoxDrawing__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBoxDrawing xmlUCSIsBoxDrawing__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBraillePatterns +extern __typeof (xmlUCSIsBraillePatterns) xmlUCSIsBraillePatterns __attribute((alias("xmlUCSIsBraillePatterns__internal_alias"))); +#else +#ifndef xmlUCSIsBraillePatterns +extern __typeof (xmlUCSIsBraillePatterns) xmlUCSIsBraillePatterns__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBraillePatterns xmlUCSIsBraillePatterns__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBuhid +extern __typeof (xmlUCSIsBuhid) xmlUCSIsBuhid __attribute((alias("xmlUCSIsBuhid__internal_alias"))); +#else +#ifndef xmlUCSIsBuhid +extern __typeof (xmlUCSIsBuhid) xmlUCSIsBuhid__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBuhid xmlUCSIsBuhid__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsByzantineMusicalSymbols +extern __typeof (xmlUCSIsByzantineMusicalSymbols) xmlUCSIsByzantineMusicalSymbols __attribute((alias("xmlUCSIsByzantineMusicalSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsByzantineMusicalSymbols +extern __typeof (xmlUCSIsByzantineMusicalSymbols) xmlUCSIsByzantineMusicalSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsByzantineMusicalSymbols xmlUCSIsByzantineMusicalSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKCompatibility +extern __typeof (xmlUCSIsCJKCompatibility) xmlUCSIsCJKCompatibility __attribute((alias("xmlUCSIsCJKCompatibility__internal_alias"))); +#else +#ifndef xmlUCSIsCJKCompatibility +extern __typeof (xmlUCSIsCJKCompatibility) xmlUCSIsCJKCompatibility__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKCompatibility xmlUCSIsCJKCompatibility__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKCompatibilityForms +extern __typeof (xmlUCSIsCJKCompatibilityForms) xmlUCSIsCJKCompatibilityForms __attribute((alias("xmlUCSIsCJKCompatibilityForms__internal_alias"))); +#else +#ifndef xmlUCSIsCJKCompatibilityForms +extern __typeof (xmlUCSIsCJKCompatibilityForms) xmlUCSIsCJKCompatibilityForms__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKCompatibilityForms xmlUCSIsCJKCompatibilityForms__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKCompatibilityIdeographs +extern __typeof (xmlUCSIsCJKCompatibilityIdeographs) xmlUCSIsCJKCompatibilityIdeographs __attribute((alias("xmlUCSIsCJKCompatibilityIdeographs__internal_alias"))); +#else +#ifndef xmlUCSIsCJKCompatibilityIdeographs +extern __typeof (xmlUCSIsCJKCompatibilityIdeographs) xmlUCSIsCJKCompatibilityIdeographs__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKCompatibilityIdeographs xmlUCSIsCJKCompatibilityIdeographs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKCompatibilityIdeographsSupplement +extern __typeof (xmlUCSIsCJKCompatibilityIdeographsSupplement) xmlUCSIsCJKCompatibilityIdeographsSupplement __attribute((alias("xmlUCSIsCJKCompatibilityIdeographsSupplement__internal_alias"))); +#else +#ifndef xmlUCSIsCJKCompatibilityIdeographsSupplement +extern __typeof (xmlUCSIsCJKCompatibilityIdeographsSupplement) xmlUCSIsCJKCompatibilityIdeographsSupplement__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKCompatibilityIdeographsSupplement xmlUCSIsCJKCompatibilityIdeographsSupplement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKRadicalsSupplement +extern __typeof (xmlUCSIsCJKRadicalsSupplement) xmlUCSIsCJKRadicalsSupplement __attribute((alias("xmlUCSIsCJKRadicalsSupplement__internal_alias"))); +#else +#ifndef xmlUCSIsCJKRadicalsSupplement +extern __typeof (xmlUCSIsCJKRadicalsSupplement) xmlUCSIsCJKRadicalsSupplement__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKRadicalsSupplement xmlUCSIsCJKRadicalsSupplement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKSymbolsandPunctuation +extern __typeof (xmlUCSIsCJKSymbolsandPunctuation) xmlUCSIsCJKSymbolsandPunctuation __attribute((alias("xmlUCSIsCJKSymbolsandPunctuation__internal_alias"))); +#else +#ifndef xmlUCSIsCJKSymbolsandPunctuation +extern __typeof (xmlUCSIsCJKSymbolsandPunctuation) xmlUCSIsCJKSymbolsandPunctuation__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKSymbolsandPunctuation xmlUCSIsCJKSymbolsandPunctuation__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKUnifiedIdeographs +extern __typeof (xmlUCSIsCJKUnifiedIdeographs) xmlUCSIsCJKUnifiedIdeographs __attribute((alias("xmlUCSIsCJKUnifiedIdeographs__internal_alias"))); +#else +#ifndef xmlUCSIsCJKUnifiedIdeographs +extern __typeof (xmlUCSIsCJKUnifiedIdeographs) xmlUCSIsCJKUnifiedIdeographs__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKUnifiedIdeographs xmlUCSIsCJKUnifiedIdeographs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKUnifiedIdeographsExtensionA +extern __typeof (xmlUCSIsCJKUnifiedIdeographsExtensionA) xmlUCSIsCJKUnifiedIdeographsExtensionA __attribute((alias("xmlUCSIsCJKUnifiedIdeographsExtensionA__internal_alias"))); +#else +#ifndef xmlUCSIsCJKUnifiedIdeographsExtensionA +extern __typeof (xmlUCSIsCJKUnifiedIdeographsExtensionA) xmlUCSIsCJKUnifiedIdeographsExtensionA__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKUnifiedIdeographsExtensionA xmlUCSIsCJKUnifiedIdeographsExtensionA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKUnifiedIdeographsExtensionB +extern __typeof (xmlUCSIsCJKUnifiedIdeographsExtensionB) xmlUCSIsCJKUnifiedIdeographsExtensionB __attribute((alias("xmlUCSIsCJKUnifiedIdeographsExtensionB__internal_alias"))); +#else +#ifndef xmlUCSIsCJKUnifiedIdeographsExtensionB +extern __typeof (xmlUCSIsCJKUnifiedIdeographsExtensionB) xmlUCSIsCJKUnifiedIdeographsExtensionB__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKUnifiedIdeographsExtensionB xmlUCSIsCJKUnifiedIdeographsExtensionB__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCat +extern __typeof (xmlUCSIsCat) xmlUCSIsCat __attribute((alias("xmlUCSIsCat__internal_alias"))); +#else +#ifndef xmlUCSIsCat +extern __typeof (xmlUCSIsCat) xmlUCSIsCat__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCat xmlUCSIsCat__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatC +extern __typeof (xmlUCSIsCatC) xmlUCSIsCatC __attribute((alias("xmlUCSIsCatC__internal_alias"))); +#else +#ifndef xmlUCSIsCatC +extern __typeof (xmlUCSIsCatC) xmlUCSIsCatC__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatC xmlUCSIsCatC__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatCc +extern __typeof (xmlUCSIsCatCc) xmlUCSIsCatCc __attribute((alias("xmlUCSIsCatCc__internal_alias"))); +#else +#ifndef xmlUCSIsCatCc +extern __typeof (xmlUCSIsCatCc) xmlUCSIsCatCc__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatCc xmlUCSIsCatCc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatCf +extern __typeof (xmlUCSIsCatCf) xmlUCSIsCatCf __attribute((alias("xmlUCSIsCatCf__internal_alias"))); +#else +#ifndef xmlUCSIsCatCf +extern __typeof (xmlUCSIsCatCf) xmlUCSIsCatCf__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatCf xmlUCSIsCatCf__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatCo +extern __typeof (xmlUCSIsCatCo) xmlUCSIsCatCo __attribute((alias("xmlUCSIsCatCo__internal_alias"))); +#else +#ifndef xmlUCSIsCatCo +extern __typeof (xmlUCSIsCatCo) xmlUCSIsCatCo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatCo xmlUCSIsCatCo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatCs +extern __typeof (xmlUCSIsCatCs) xmlUCSIsCatCs __attribute((alias("xmlUCSIsCatCs__internal_alias"))); +#else +#ifndef xmlUCSIsCatCs +extern __typeof (xmlUCSIsCatCs) xmlUCSIsCatCs__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatCs xmlUCSIsCatCs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatL +extern __typeof (xmlUCSIsCatL) xmlUCSIsCatL __attribute((alias("xmlUCSIsCatL__internal_alias"))); +#else +#ifndef xmlUCSIsCatL +extern __typeof (xmlUCSIsCatL) xmlUCSIsCatL__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatL xmlUCSIsCatL__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatLl +extern __typeof (xmlUCSIsCatLl) xmlUCSIsCatLl __attribute((alias("xmlUCSIsCatLl__internal_alias"))); +#else +#ifndef xmlUCSIsCatLl +extern __typeof (xmlUCSIsCatLl) xmlUCSIsCatLl__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatLl xmlUCSIsCatLl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatLm +extern __typeof (xmlUCSIsCatLm) xmlUCSIsCatLm __attribute((alias("xmlUCSIsCatLm__internal_alias"))); +#else +#ifndef xmlUCSIsCatLm +extern __typeof (xmlUCSIsCatLm) xmlUCSIsCatLm__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatLm xmlUCSIsCatLm__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatLo +extern __typeof (xmlUCSIsCatLo) xmlUCSIsCatLo __attribute((alias("xmlUCSIsCatLo__internal_alias"))); +#else +#ifndef xmlUCSIsCatLo +extern __typeof (xmlUCSIsCatLo) xmlUCSIsCatLo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatLo xmlUCSIsCatLo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatLt +extern __typeof (xmlUCSIsCatLt) xmlUCSIsCatLt __attribute((alias("xmlUCSIsCatLt__internal_alias"))); +#else +#ifndef xmlUCSIsCatLt +extern __typeof (xmlUCSIsCatLt) xmlUCSIsCatLt__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatLt xmlUCSIsCatLt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatLu +extern __typeof (xmlUCSIsCatLu) xmlUCSIsCatLu __attribute((alias("xmlUCSIsCatLu__internal_alias"))); +#else +#ifndef xmlUCSIsCatLu +extern __typeof (xmlUCSIsCatLu) xmlUCSIsCatLu__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatLu xmlUCSIsCatLu__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatM +extern __typeof (xmlUCSIsCatM) xmlUCSIsCatM __attribute((alias("xmlUCSIsCatM__internal_alias"))); +#else +#ifndef xmlUCSIsCatM +extern __typeof (xmlUCSIsCatM) xmlUCSIsCatM__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatM xmlUCSIsCatM__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatMc +extern __typeof (xmlUCSIsCatMc) xmlUCSIsCatMc __attribute((alias("xmlUCSIsCatMc__internal_alias"))); +#else +#ifndef xmlUCSIsCatMc +extern __typeof (xmlUCSIsCatMc) xmlUCSIsCatMc__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatMc xmlUCSIsCatMc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatMe +extern __typeof (xmlUCSIsCatMe) xmlUCSIsCatMe __attribute((alias("xmlUCSIsCatMe__internal_alias"))); +#else +#ifndef xmlUCSIsCatMe +extern __typeof (xmlUCSIsCatMe) xmlUCSIsCatMe__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatMe xmlUCSIsCatMe__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatMn +extern __typeof (xmlUCSIsCatMn) xmlUCSIsCatMn __attribute((alias("xmlUCSIsCatMn__internal_alias"))); +#else +#ifndef xmlUCSIsCatMn +extern __typeof (xmlUCSIsCatMn) xmlUCSIsCatMn__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatMn xmlUCSIsCatMn__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatN +extern __typeof (xmlUCSIsCatN) xmlUCSIsCatN __attribute((alias("xmlUCSIsCatN__internal_alias"))); +#else +#ifndef xmlUCSIsCatN +extern __typeof (xmlUCSIsCatN) xmlUCSIsCatN__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatN xmlUCSIsCatN__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatNd +extern __typeof (xmlUCSIsCatNd) xmlUCSIsCatNd __attribute((alias("xmlUCSIsCatNd__internal_alias"))); +#else +#ifndef xmlUCSIsCatNd +extern __typeof (xmlUCSIsCatNd) xmlUCSIsCatNd__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatNd xmlUCSIsCatNd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatNl +extern __typeof (xmlUCSIsCatNl) xmlUCSIsCatNl __attribute((alias("xmlUCSIsCatNl__internal_alias"))); +#else +#ifndef xmlUCSIsCatNl +extern __typeof (xmlUCSIsCatNl) xmlUCSIsCatNl__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatNl xmlUCSIsCatNl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatNo +extern __typeof (xmlUCSIsCatNo) xmlUCSIsCatNo __attribute((alias("xmlUCSIsCatNo__internal_alias"))); +#else +#ifndef xmlUCSIsCatNo +extern __typeof (xmlUCSIsCatNo) xmlUCSIsCatNo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatNo xmlUCSIsCatNo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatP +extern __typeof (xmlUCSIsCatP) xmlUCSIsCatP __attribute((alias("xmlUCSIsCatP__internal_alias"))); +#else +#ifndef xmlUCSIsCatP +extern __typeof (xmlUCSIsCatP) xmlUCSIsCatP__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatP xmlUCSIsCatP__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatPc +extern __typeof (xmlUCSIsCatPc) xmlUCSIsCatPc __attribute((alias("xmlUCSIsCatPc__internal_alias"))); +#else +#ifndef xmlUCSIsCatPc +extern __typeof (xmlUCSIsCatPc) xmlUCSIsCatPc__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatPc xmlUCSIsCatPc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatPd +extern __typeof (xmlUCSIsCatPd) xmlUCSIsCatPd __attribute((alias("xmlUCSIsCatPd__internal_alias"))); +#else +#ifndef xmlUCSIsCatPd +extern __typeof (xmlUCSIsCatPd) xmlUCSIsCatPd__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatPd xmlUCSIsCatPd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatPe +extern __typeof (xmlUCSIsCatPe) xmlUCSIsCatPe __attribute((alias("xmlUCSIsCatPe__internal_alias"))); +#else +#ifndef xmlUCSIsCatPe +extern __typeof (xmlUCSIsCatPe) xmlUCSIsCatPe__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatPe xmlUCSIsCatPe__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatPf +extern __typeof (xmlUCSIsCatPf) xmlUCSIsCatPf __attribute((alias("xmlUCSIsCatPf__internal_alias"))); +#else +#ifndef xmlUCSIsCatPf +extern __typeof (xmlUCSIsCatPf) xmlUCSIsCatPf__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatPf xmlUCSIsCatPf__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatPi +extern __typeof (xmlUCSIsCatPi) xmlUCSIsCatPi __attribute((alias("xmlUCSIsCatPi__internal_alias"))); +#else +#ifndef xmlUCSIsCatPi +extern __typeof (xmlUCSIsCatPi) xmlUCSIsCatPi__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatPi xmlUCSIsCatPi__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatPo +extern __typeof (xmlUCSIsCatPo) xmlUCSIsCatPo __attribute((alias("xmlUCSIsCatPo__internal_alias"))); +#else +#ifndef xmlUCSIsCatPo +extern __typeof (xmlUCSIsCatPo) xmlUCSIsCatPo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatPo xmlUCSIsCatPo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatPs +extern __typeof (xmlUCSIsCatPs) xmlUCSIsCatPs __attribute((alias("xmlUCSIsCatPs__internal_alias"))); +#else +#ifndef xmlUCSIsCatPs +extern __typeof (xmlUCSIsCatPs) xmlUCSIsCatPs__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatPs xmlUCSIsCatPs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatS +extern __typeof (xmlUCSIsCatS) xmlUCSIsCatS __attribute((alias("xmlUCSIsCatS__internal_alias"))); +#else +#ifndef xmlUCSIsCatS +extern __typeof (xmlUCSIsCatS) xmlUCSIsCatS__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatS xmlUCSIsCatS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatSc +extern __typeof (xmlUCSIsCatSc) xmlUCSIsCatSc __attribute((alias("xmlUCSIsCatSc__internal_alias"))); +#else +#ifndef xmlUCSIsCatSc +extern __typeof (xmlUCSIsCatSc) xmlUCSIsCatSc__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatSc xmlUCSIsCatSc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatSk +extern __typeof (xmlUCSIsCatSk) xmlUCSIsCatSk __attribute((alias("xmlUCSIsCatSk__internal_alias"))); +#else +#ifndef xmlUCSIsCatSk +extern __typeof (xmlUCSIsCatSk) xmlUCSIsCatSk__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatSk xmlUCSIsCatSk__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatSm +extern __typeof (xmlUCSIsCatSm) xmlUCSIsCatSm __attribute((alias("xmlUCSIsCatSm__internal_alias"))); +#else +#ifndef xmlUCSIsCatSm +extern __typeof (xmlUCSIsCatSm) xmlUCSIsCatSm__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatSm xmlUCSIsCatSm__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatSo +extern __typeof (xmlUCSIsCatSo) xmlUCSIsCatSo __attribute((alias("xmlUCSIsCatSo__internal_alias"))); +#else +#ifndef xmlUCSIsCatSo +extern __typeof (xmlUCSIsCatSo) xmlUCSIsCatSo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatSo xmlUCSIsCatSo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatZ +extern __typeof (xmlUCSIsCatZ) xmlUCSIsCatZ __attribute((alias("xmlUCSIsCatZ__internal_alias"))); +#else +#ifndef xmlUCSIsCatZ +extern __typeof (xmlUCSIsCatZ) xmlUCSIsCatZ__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatZ xmlUCSIsCatZ__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatZl +extern __typeof (xmlUCSIsCatZl) xmlUCSIsCatZl __attribute((alias("xmlUCSIsCatZl__internal_alias"))); +#else +#ifndef xmlUCSIsCatZl +extern __typeof (xmlUCSIsCatZl) xmlUCSIsCatZl__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatZl xmlUCSIsCatZl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatZp +extern __typeof (xmlUCSIsCatZp) xmlUCSIsCatZp __attribute((alias("xmlUCSIsCatZp__internal_alias"))); +#else +#ifndef xmlUCSIsCatZp +extern __typeof (xmlUCSIsCatZp) xmlUCSIsCatZp__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatZp xmlUCSIsCatZp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatZs +extern __typeof (xmlUCSIsCatZs) xmlUCSIsCatZs __attribute((alias("xmlUCSIsCatZs__internal_alias"))); +#else +#ifndef xmlUCSIsCatZs +extern __typeof (xmlUCSIsCatZs) xmlUCSIsCatZs__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatZs xmlUCSIsCatZs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCherokee +extern __typeof (xmlUCSIsCherokee) xmlUCSIsCherokee __attribute((alias("xmlUCSIsCherokee__internal_alias"))); +#else +#ifndef xmlUCSIsCherokee +extern __typeof (xmlUCSIsCherokee) xmlUCSIsCherokee__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCherokee xmlUCSIsCherokee__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCombiningDiacriticalMarks +extern __typeof (xmlUCSIsCombiningDiacriticalMarks) xmlUCSIsCombiningDiacriticalMarks __attribute((alias("xmlUCSIsCombiningDiacriticalMarks__internal_alias"))); +#else +#ifndef xmlUCSIsCombiningDiacriticalMarks +extern __typeof (xmlUCSIsCombiningDiacriticalMarks) xmlUCSIsCombiningDiacriticalMarks__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCombiningDiacriticalMarks xmlUCSIsCombiningDiacriticalMarks__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCombiningDiacriticalMarksforSymbols +extern __typeof (xmlUCSIsCombiningDiacriticalMarksforSymbols) xmlUCSIsCombiningDiacriticalMarksforSymbols __attribute((alias("xmlUCSIsCombiningDiacriticalMarksforSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsCombiningDiacriticalMarksforSymbols +extern __typeof (xmlUCSIsCombiningDiacriticalMarksforSymbols) xmlUCSIsCombiningDiacriticalMarksforSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCombiningDiacriticalMarksforSymbols xmlUCSIsCombiningDiacriticalMarksforSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCombiningHalfMarks +extern __typeof (xmlUCSIsCombiningHalfMarks) xmlUCSIsCombiningHalfMarks __attribute((alias("xmlUCSIsCombiningHalfMarks__internal_alias"))); +#else +#ifndef xmlUCSIsCombiningHalfMarks +extern __typeof (xmlUCSIsCombiningHalfMarks) xmlUCSIsCombiningHalfMarks__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCombiningHalfMarks xmlUCSIsCombiningHalfMarks__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCombiningMarksforSymbols +extern __typeof (xmlUCSIsCombiningMarksforSymbols) xmlUCSIsCombiningMarksforSymbols __attribute((alias("xmlUCSIsCombiningMarksforSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsCombiningMarksforSymbols +extern __typeof (xmlUCSIsCombiningMarksforSymbols) xmlUCSIsCombiningMarksforSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCombiningMarksforSymbols xmlUCSIsCombiningMarksforSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsControlPictures +extern __typeof (xmlUCSIsControlPictures) xmlUCSIsControlPictures __attribute((alias("xmlUCSIsControlPictures__internal_alias"))); +#else +#ifndef xmlUCSIsControlPictures +extern __typeof (xmlUCSIsControlPictures) xmlUCSIsControlPictures__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsControlPictures xmlUCSIsControlPictures__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCurrencySymbols +extern __typeof (xmlUCSIsCurrencySymbols) xmlUCSIsCurrencySymbols __attribute((alias("xmlUCSIsCurrencySymbols__internal_alias"))); +#else +#ifndef xmlUCSIsCurrencySymbols +extern __typeof (xmlUCSIsCurrencySymbols) xmlUCSIsCurrencySymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCurrencySymbols xmlUCSIsCurrencySymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCypriotSyllabary +extern __typeof (xmlUCSIsCypriotSyllabary) xmlUCSIsCypriotSyllabary __attribute((alias("xmlUCSIsCypriotSyllabary__internal_alias"))); +#else +#ifndef xmlUCSIsCypriotSyllabary +extern __typeof (xmlUCSIsCypriotSyllabary) xmlUCSIsCypriotSyllabary__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCypriotSyllabary xmlUCSIsCypriotSyllabary__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCyrillic +extern __typeof (xmlUCSIsCyrillic) xmlUCSIsCyrillic __attribute((alias("xmlUCSIsCyrillic__internal_alias"))); +#else +#ifndef xmlUCSIsCyrillic +extern __typeof (xmlUCSIsCyrillic) xmlUCSIsCyrillic__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCyrillic xmlUCSIsCyrillic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCyrillicSupplement +extern __typeof (xmlUCSIsCyrillicSupplement) xmlUCSIsCyrillicSupplement __attribute((alias("xmlUCSIsCyrillicSupplement__internal_alias"))); +#else +#ifndef xmlUCSIsCyrillicSupplement +extern __typeof (xmlUCSIsCyrillicSupplement) xmlUCSIsCyrillicSupplement__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCyrillicSupplement xmlUCSIsCyrillicSupplement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsDeseret +extern __typeof (xmlUCSIsDeseret) xmlUCSIsDeseret __attribute((alias("xmlUCSIsDeseret__internal_alias"))); +#else +#ifndef xmlUCSIsDeseret +extern __typeof (xmlUCSIsDeseret) xmlUCSIsDeseret__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsDeseret xmlUCSIsDeseret__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsDevanagari +extern __typeof (xmlUCSIsDevanagari) xmlUCSIsDevanagari __attribute((alias("xmlUCSIsDevanagari__internal_alias"))); +#else +#ifndef xmlUCSIsDevanagari +extern __typeof (xmlUCSIsDevanagari) xmlUCSIsDevanagari__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsDevanagari xmlUCSIsDevanagari__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsDingbats +extern __typeof (xmlUCSIsDingbats) xmlUCSIsDingbats __attribute((alias("xmlUCSIsDingbats__internal_alias"))); +#else +#ifndef xmlUCSIsDingbats +extern __typeof (xmlUCSIsDingbats) xmlUCSIsDingbats__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsDingbats xmlUCSIsDingbats__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsEnclosedAlphanumerics +extern __typeof (xmlUCSIsEnclosedAlphanumerics) xmlUCSIsEnclosedAlphanumerics __attribute((alias("xmlUCSIsEnclosedAlphanumerics__internal_alias"))); +#else +#ifndef xmlUCSIsEnclosedAlphanumerics +extern __typeof (xmlUCSIsEnclosedAlphanumerics) xmlUCSIsEnclosedAlphanumerics__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsEnclosedAlphanumerics xmlUCSIsEnclosedAlphanumerics__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsEnclosedCJKLettersandMonths +extern __typeof (xmlUCSIsEnclosedCJKLettersandMonths) xmlUCSIsEnclosedCJKLettersandMonths __attribute((alias("xmlUCSIsEnclosedCJKLettersandMonths__internal_alias"))); +#else +#ifndef xmlUCSIsEnclosedCJKLettersandMonths +extern __typeof (xmlUCSIsEnclosedCJKLettersandMonths) xmlUCSIsEnclosedCJKLettersandMonths__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsEnclosedCJKLettersandMonths xmlUCSIsEnclosedCJKLettersandMonths__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsEthiopic +extern __typeof (xmlUCSIsEthiopic) xmlUCSIsEthiopic __attribute((alias("xmlUCSIsEthiopic__internal_alias"))); +#else +#ifndef xmlUCSIsEthiopic +extern __typeof (xmlUCSIsEthiopic) xmlUCSIsEthiopic__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsEthiopic xmlUCSIsEthiopic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGeneralPunctuation +extern __typeof (xmlUCSIsGeneralPunctuation) xmlUCSIsGeneralPunctuation __attribute((alias("xmlUCSIsGeneralPunctuation__internal_alias"))); +#else +#ifndef xmlUCSIsGeneralPunctuation +extern __typeof (xmlUCSIsGeneralPunctuation) xmlUCSIsGeneralPunctuation__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGeneralPunctuation xmlUCSIsGeneralPunctuation__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGeometricShapes +extern __typeof (xmlUCSIsGeometricShapes) xmlUCSIsGeometricShapes __attribute((alias("xmlUCSIsGeometricShapes__internal_alias"))); +#else +#ifndef xmlUCSIsGeometricShapes +extern __typeof (xmlUCSIsGeometricShapes) xmlUCSIsGeometricShapes__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGeometricShapes xmlUCSIsGeometricShapes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGeorgian +extern __typeof (xmlUCSIsGeorgian) xmlUCSIsGeorgian __attribute((alias("xmlUCSIsGeorgian__internal_alias"))); +#else +#ifndef xmlUCSIsGeorgian +extern __typeof (xmlUCSIsGeorgian) xmlUCSIsGeorgian__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGeorgian xmlUCSIsGeorgian__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGothic +extern __typeof (xmlUCSIsGothic) xmlUCSIsGothic __attribute((alias("xmlUCSIsGothic__internal_alias"))); +#else +#ifndef xmlUCSIsGothic +extern __typeof (xmlUCSIsGothic) xmlUCSIsGothic__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGothic xmlUCSIsGothic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGreek +extern __typeof (xmlUCSIsGreek) xmlUCSIsGreek __attribute((alias("xmlUCSIsGreek__internal_alias"))); +#else +#ifndef xmlUCSIsGreek +extern __typeof (xmlUCSIsGreek) xmlUCSIsGreek__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGreek xmlUCSIsGreek__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGreekExtended +extern __typeof (xmlUCSIsGreekExtended) xmlUCSIsGreekExtended __attribute((alias("xmlUCSIsGreekExtended__internal_alias"))); +#else +#ifndef xmlUCSIsGreekExtended +extern __typeof (xmlUCSIsGreekExtended) xmlUCSIsGreekExtended__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGreekExtended xmlUCSIsGreekExtended__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGreekandCoptic +extern __typeof (xmlUCSIsGreekandCoptic) xmlUCSIsGreekandCoptic __attribute((alias("xmlUCSIsGreekandCoptic__internal_alias"))); +#else +#ifndef xmlUCSIsGreekandCoptic +extern __typeof (xmlUCSIsGreekandCoptic) xmlUCSIsGreekandCoptic__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGreekandCoptic xmlUCSIsGreekandCoptic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGujarati +extern __typeof (xmlUCSIsGujarati) xmlUCSIsGujarati __attribute((alias("xmlUCSIsGujarati__internal_alias"))); +#else +#ifndef xmlUCSIsGujarati +extern __typeof (xmlUCSIsGujarati) xmlUCSIsGujarati__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGujarati xmlUCSIsGujarati__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGurmukhi +extern __typeof (xmlUCSIsGurmukhi) xmlUCSIsGurmukhi __attribute((alias("xmlUCSIsGurmukhi__internal_alias"))); +#else +#ifndef xmlUCSIsGurmukhi +extern __typeof (xmlUCSIsGurmukhi) xmlUCSIsGurmukhi__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGurmukhi xmlUCSIsGurmukhi__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHalfwidthandFullwidthForms +extern __typeof (xmlUCSIsHalfwidthandFullwidthForms) xmlUCSIsHalfwidthandFullwidthForms __attribute((alias("xmlUCSIsHalfwidthandFullwidthForms__internal_alias"))); +#else +#ifndef xmlUCSIsHalfwidthandFullwidthForms +extern __typeof (xmlUCSIsHalfwidthandFullwidthForms) xmlUCSIsHalfwidthandFullwidthForms__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHalfwidthandFullwidthForms xmlUCSIsHalfwidthandFullwidthForms__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHangulCompatibilityJamo +extern __typeof (xmlUCSIsHangulCompatibilityJamo) xmlUCSIsHangulCompatibilityJamo __attribute((alias("xmlUCSIsHangulCompatibilityJamo__internal_alias"))); +#else +#ifndef xmlUCSIsHangulCompatibilityJamo +extern __typeof (xmlUCSIsHangulCompatibilityJamo) xmlUCSIsHangulCompatibilityJamo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHangulCompatibilityJamo xmlUCSIsHangulCompatibilityJamo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHangulJamo +extern __typeof (xmlUCSIsHangulJamo) xmlUCSIsHangulJamo __attribute((alias("xmlUCSIsHangulJamo__internal_alias"))); +#else +#ifndef xmlUCSIsHangulJamo +extern __typeof (xmlUCSIsHangulJamo) xmlUCSIsHangulJamo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHangulJamo xmlUCSIsHangulJamo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHangulSyllables +extern __typeof (xmlUCSIsHangulSyllables) xmlUCSIsHangulSyllables __attribute((alias("xmlUCSIsHangulSyllables__internal_alias"))); +#else +#ifndef xmlUCSIsHangulSyllables +extern __typeof (xmlUCSIsHangulSyllables) xmlUCSIsHangulSyllables__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHangulSyllables xmlUCSIsHangulSyllables__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHanunoo +extern __typeof (xmlUCSIsHanunoo) xmlUCSIsHanunoo __attribute((alias("xmlUCSIsHanunoo__internal_alias"))); +#else +#ifndef xmlUCSIsHanunoo +extern __typeof (xmlUCSIsHanunoo) xmlUCSIsHanunoo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHanunoo xmlUCSIsHanunoo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHebrew +extern __typeof (xmlUCSIsHebrew) xmlUCSIsHebrew __attribute((alias("xmlUCSIsHebrew__internal_alias"))); +#else +#ifndef xmlUCSIsHebrew +extern __typeof (xmlUCSIsHebrew) xmlUCSIsHebrew__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHebrew xmlUCSIsHebrew__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHighPrivateUseSurrogates +extern __typeof (xmlUCSIsHighPrivateUseSurrogates) xmlUCSIsHighPrivateUseSurrogates __attribute((alias("xmlUCSIsHighPrivateUseSurrogates__internal_alias"))); +#else +#ifndef xmlUCSIsHighPrivateUseSurrogates +extern __typeof (xmlUCSIsHighPrivateUseSurrogates) xmlUCSIsHighPrivateUseSurrogates__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHighPrivateUseSurrogates xmlUCSIsHighPrivateUseSurrogates__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHighSurrogates +extern __typeof (xmlUCSIsHighSurrogates) xmlUCSIsHighSurrogates __attribute((alias("xmlUCSIsHighSurrogates__internal_alias"))); +#else +#ifndef xmlUCSIsHighSurrogates +extern __typeof (xmlUCSIsHighSurrogates) xmlUCSIsHighSurrogates__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHighSurrogates xmlUCSIsHighSurrogates__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHiragana +extern __typeof (xmlUCSIsHiragana) xmlUCSIsHiragana __attribute((alias("xmlUCSIsHiragana__internal_alias"))); +#else +#ifndef xmlUCSIsHiragana +extern __typeof (xmlUCSIsHiragana) xmlUCSIsHiragana__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHiragana xmlUCSIsHiragana__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsIPAExtensions +extern __typeof (xmlUCSIsIPAExtensions) xmlUCSIsIPAExtensions __attribute((alias("xmlUCSIsIPAExtensions__internal_alias"))); +#else +#ifndef xmlUCSIsIPAExtensions +extern __typeof (xmlUCSIsIPAExtensions) xmlUCSIsIPAExtensions__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsIPAExtensions xmlUCSIsIPAExtensions__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsIdeographicDescriptionCharacters +extern __typeof (xmlUCSIsIdeographicDescriptionCharacters) xmlUCSIsIdeographicDescriptionCharacters __attribute((alias("xmlUCSIsIdeographicDescriptionCharacters__internal_alias"))); +#else +#ifndef xmlUCSIsIdeographicDescriptionCharacters +extern __typeof (xmlUCSIsIdeographicDescriptionCharacters) xmlUCSIsIdeographicDescriptionCharacters__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsIdeographicDescriptionCharacters xmlUCSIsIdeographicDescriptionCharacters__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsKanbun +extern __typeof (xmlUCSIsKanbun) xmlUCSIsKanbun __attribute((alias("xmlUCSIsKanbun__internal_alias"))); +#else +#ifndef xmlUCSIsKanbun +extern __typeof (xmlUCSIsKanbun) xmlUCSIsKanbun__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsKanbun xmlUCSIsKanbun__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsKangxiRadicals +extern __typeof (xmlUCSIsKangxiRadicals) xmlUCSIsKangxiRadicals __attribute((alias("xmlUCSIsKangxiRadicals__internal_alias"))); +#else +#ifndef xmlUCSIsKangxiRadicals +extern __typeof (xmlUCSIsKangxiRadicals) xmlUCSIsKangxiRadicals__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsKangxiRadicals xmlUCSIsKangxiRadicals__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsKannada +extern __typeof (xmlUCSIsKannada) xmlUCSIsKannada __attribute((alias("xmlUCSIsKannada__internal_alias"))); +#else +#ifndef xmlUCSIsKannada +extern __typeof (xmlUCSIsKannada) xmlUCSIsKannada__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsKannada xmlUCSIsKannada__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsKatakana +extern __typeof (xmlUCSIsKatakana) xmlUCSIsKatakana __attribute((alias("xmlUCSIsKatakana__internal_alias"))); +#else +#ifndef xmlUCSIsKatakana +extern __typeof (xmlUCSIsKatakana) xmlUCSIsKatakana__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsKatakana xmlUCSIsKatakana__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsKatakanaPhoneticExtensions +extern __typeof (xmlUCSIsKatakanaPhoneticExtensions) xmlUCSIsKatakanaPhoneticExtensions __attribute((alias("xmlUCSIsKatakanaPhoneticExtensions__internal_alias"))); +#else +#ifndef xmlUCSIsKatakanaPhoneticExtensions +extern __typeof (xmlUCSIsKatakanaPhoneticExtensions) xmlUCSIsKatakanaPhoneticExtensions__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsKatakanaPhoneticExtensions xmlUCSIsKatakanaPhoneticExtensions__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsKhmer +extern __typeof (xmlUCSIsKhmer) xmlUCSIsKhmer __attribute((alias("xmlUCSIsKhmer__internal_alias"))); +#else +#ifndef xmlUCSIsKhmer +extern __typeof (xmlUCSIsKhmer) xmlUCSIsKhmer__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsKhmer xmlUCSIsKhmer__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsKhmerSymbols +extern __typeof (xmlUCSIsKhmerSymbols) xmlUCSIsKhmerSymbols __attribute((alias("xmlUCSIsKhmerSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsKhmerSymbols +extern __typeof (xmlUCSIsKhmerSymbols) xmlUCSIsKhmerSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsKhmerSymbols xmlUCSIsKhmerSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLao +extern __typeof (xmlUCSIsLao) xmlUCSIsLao __attribute((alias("xmlUCSIsLao__internal_alias"))); +#else +#ifndef xmlUCSIsLao +extern __typeof (xmlUCSIsLao) xmlUCSIsLao__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLao xmlUCSIsLao__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLatin1Supplement +extern __typeof (xmlUCSIsLatin1Supplement) xmlUCSIsLatin1Supplement __attribute((alias("xmlUCSIsLatin1Supplement__internal_alias"))); +#else +#ifndef xmlUCSIsLatin1Supplement +extern __typeof (xmlUCSIsLatin1Supplement) xmlUCSIsLatin1Supplement__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLatin1Supplement xmlUCSIsLatin1Supplement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLatinExtendedA +extern __typeof (xmlUCSIsLatinExtendedA) xmlUCSIsLatinExtendedA __attribute((alias("xmlUCSIsLatinExtendedA__internal_alias"))); +#else +#ifndef xmlUCSIsLatinExtendedA +extern __typeof (xmlUCSIsLatinExtendedA) xmlUCSIsLatinExtendedA__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLatinExtendedA xmlUCSIsLatinExtendedA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLatinExtendedAdditional +extern __typeof (xmlUCSIsLatinExtendedAdditional) xmlUCSIsLatinExtendedAdditional __attribute((alias("xmlUCSIsLatinExtendedAdditional__internal_alias"))); +#else +#ifndef xmlUCSIsLatinExtendedAdditional +extern __typeof (xmlUCSIsLatinExtendedAdditional) xmlUCSIsLatinExtendedAdditional__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLatinExtendedAdditional xmlUCSIsLatinExtendedAdditional__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLatinExtendedB +extern __typeof (xmlUCSIsLatinExtendedB) xmlUCSIsLatinExtendedB __attribute((alias("xmlUCSIsLatinExtendedB__internal_alias"))); +#else +#ifndef xmlUCSIsLatinExtendedB +extern __typeof (xmlUCSIsLatinExtendedB) xmlUCSIsLatinExtendedB__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLatinExtendedB xmlUCSIsLatinExtendedB__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLetterlikeSymbols +extern __typeof (xmlUCSIsLetterlikeSymbols) xmlUCSIsLetterlikeSymbols __attribute((alias("xmlUCSIsLetterlikeSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsLetterlikeSymbols +extern __typeof (xmlUCSIsLetterlikeSymbols) xmlUCSIsLetterlikeSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLetterlikeSymbols xmlUCSIsLetterlikeSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLimbu +extern __typeof (xmlUCSIsLimbu) xmlUCSIsLimbu __attribute((alias("xmlUCSIsLimbu__internal_alias"))); +#else +#ifndef xmlUCSIsLimbu +extern __typeof (xmlUCSIsLimbu) xmlUCSIsLimbu__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLimbu xmlUCSIsLimbu__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLinearBIdeograms +extern __typeof (xmlUCSIsLinearBIdeograms) xmlUCSIsLinearBIdeograms __attribute((alias("xmlUCSIsLinearBIdeograms__internal_alias"))); +#else +#ifndef xmlUCSIsLinearBIdeograms +extern __typeof (xmlUCSIsLinearBIdeograms) xmlUCSIsLinearBIdeograms__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLinearBIdeograms xmlUCSIsLinearBIdeograms__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLinearBSyllabary +extern __typeof (xmlUCSIsLinearBSyllabary) xmlUCSIsLinearBSyllabary __attribute((alias("xmlUCSIsLinearBSyllabary__internal_alias"))); +#else +#ifndef xmlUCSIsLinearBSyllabary +extern __typeof (xmlUCSIsLinearBSyllabary) xmlUCSIsLinearBSyllabary__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLinearBSyllabary xmlUCSIsLinearBSyllabary__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLowSurrogates +extern __typeof (xmlUCSIsLowSurrogates) xmlUCSIsLowSurrogates __attribute((alias("xmlUCSIsLowSurrogates__internal_alias"))); +#else +#ifndef xmlUCSIsLowSurrogates +extern __typeof (xmlUCSIsLowSurrogates) xmlUCSIsLowSurrogates__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLowSurrogates xmlUCSIsLowSurrogates__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMalayalam +extern __typeof (xmlUCSIsMalayalam) xmlUCSIsMalayalam __attribute((alias("xmlUCSIsMalayalam__internal_alias"))); +#else +#ifndef xmlUCSIsMalayalam +extern __typeof (xmlUCSIsMalayalam) xmlUCSIsMalayalam__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMalayalam xmlUCSIsMalayalam__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMathematicalAlphanumericSymbols +extern __typeof (xmlUCSIsMathematicalAlphanumericSymbols) xmlUCSIsMathematicalAlphanumericSymbols __attribute((alias("xmlUCSIsMathematicalAlphanumericSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsMathematicalAlphanumericSymbols +extern __typeof (xmlUCSIsMathematicalAlphanumericSymbols) xmlUCSIsMathematicalAlphanumericSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMathematicalAlphanumericSymbols xmlUCSIsMathematicalAlphanumericSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMathematicalOperators +extern __typeof (xmlUCSIsMathematicalOperators) xmlUCSIsMathematicalOperators __attribute((alias("xmlUCSIsMathematicalOperators__internal_alias"))); +#else +#ifndef xmlUCSIsMathematicalOperators +extern __typeof (xmlUCSIsMathematicalOperators) xmlUCSIsMathematicalOperators__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMathematicalOperators xmlUCSIsMathematicalOperators__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMiscellaneousMathematicalSymbolsA +extern __typeof (xmlUCSIsMiscellaneousMathematicalSymbolsA) xmlUCSIsMiscellaneousMathematicalSymbolsA __attribute((alias("xmlUCSIsMiscellaneousMathematicalSymbolsA__internal_alias"))); +#else +#ifndef xmlUCSIsMiscellaneousMathematicalSymbolsA +extern __typeof (xmlUCSIsMiscellaneousMathematicalSymbolsA) xmlUCSIsMiscellaneousMathematicalSymbolsA__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMiscellaneousMathematicalSymbolsA xmlUCSIsMiscellaneousMathematicalSymbolsA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMiscellaneousMathematicalSymbolsB +extern __typeof (xmlUCSIsMiscellaneousMathematicalSymbolsB) xmlUCSIsMiscellaneousMathematicalSymbolsB __attribute((alias("xmlUCSIsMiscellaneousMathematicalSymbolsB__internal_alias"))); +#else +#ifndef xmlUCSIsMiscellaneousMathematicalSymbolsB +extern __typeof (xmlUCSIsMiscellaneousMathematicalSymbolsB) xmlUCSIsMiscellaneousMathematicalSymbolsB__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMiscellaneousMathematicalSymbolsB xmlUCSIsMiscellaneousMathematicalSymbolsB__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMiscellaneousSymbols +extern __typeof (xmlUCSIsMiscellaneousSymbols) xmlUCSIsMiscellaneousSymbols __attribute((alias("xmlUCSIsMiscellaneousSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsMiscellaneousSymbols +extern __typeof (xmlUCSIsMiscellaneousSymbols) xmlUCSIsMiscellaneousSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMiscellaneousSymbols xmlUCSIsMiscellaneousSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMiscellaneousSymbolsandArrows +extern __typeof (xmlUCSIsMiscellaneousSymbolsandArrows) xmlUCSIsMiscellaneousSymbolsandArrows __attribute((alias("xmlUCSIsMiscellaneousSymbolsandArrows__internal_alias"))); +#else +#ifndef xmlUCSIsMiscellaneousSymbolsandArrows +extern __typeof (xmlUCSIsMiscellaneousSymbolsandArrows) xmlUCSIsMiscellaneousSymbolsandArrows__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMiscellaneousSymbolsandArrows xmlUCSIsMiscellaneousSymbolsandArrows__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMiscellaneousTechnical +extern __typeof (xmlUCSIsMiscellaneousTechnical) xmlUCSIsMiscellaneousTechnical __attribute((alias("xmlUCSIsMiscellaneousTechnical__internal_alias"))); +#else +#ifndef xmlUCSIsMiscellaneousTechnical +extern __typeof (xmlUCSIsMiscellaneousTechnical) xmlUCSIsMiscellaneousTechnical__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMiscellaneousTechnical xmlUCSIsMiscellaneousTechnical__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMongolian +extern __typeof (xmlUCSIsMongolian) xmlUCSIsMongolian __attribute((alias("xmlUCSIsMongolian__internal_alias"))); +#else +#ifndef xmlUCSIsMongolian +extern __typeof (xmlUCSIsMongolian) xmlUCSIsMongolian__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMongolian xmlUCSIsMongolian__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMusicalSymbols +extern __typeof (xmlUCSIsMusicalSymbols) xmlUCSIsMusicalSymbols __attribute((alias("xmlUCSIsMusicalSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsMusicalSymbols +extern __typeof (xmlUCSIsMusicalSymbols) xmlUCSIsMusicalSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMusicalSymbols xmlUCSIsMusicalSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMyanmar +extern __typeof (xmlUCSIsMyanmar) xmlUCSIsMyanmar __attribute((alias("xmlUCSIsMyanmar__internal_alias"))); +#else +#ifndef xmlUCSIsMyanmar +extern __typeof (xmlUCSIsMyanmar) xmlUCSIsMyanmar__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMyanmar xmlUCSIsMyanmar__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsNumberForms +extern __typeof (xmlUCSIsNumberForms) xmlUCSIsNumberForms __attribute((alias("xmlUCSIsNumberForms__internal_alias"))); +#else +#ifndef xmlUCSIsNumberForms +extern __typeof (xmlUCSIsNumberForms) xmlUCSIsNumberForms__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsNumberForms xmlUCSIsNumberForms__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsOgham +extern __typeof (xmlUCSIsOgham) xmlUCSIsOgham __attribute((alias("xmlUCSIsOgham__internal_alias"))); +#else +#ifndef xmlUCSIsOgham +extern __typeof (xmlUCSIsOgham) xmlUCSIsOgham__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsOgham xmlUCSIsOgham__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsOldItalic +extern __typeof (xmlUCSIsOldItalic) xmlUCSIsOldItalic __attribute((alias("xmlUCSIsOldItalic__internal_alias"))); +#else +#ifndef xmlUCSIsOldItalic +extern __typeof (xmlUCSIsOldItalic) xmlUCSIsOldItalic__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsOldItalic xmlUCSIsOldItalic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsOpticalCharacterRecognition +extern __typeof (xmlUCSIsOpticalCharacterRecognition) xmlUCSIsOpticalCharacterRecognition __attribute((alias("xmlUCSIsOpticalCharacterRecognition__internal_alias"))); +#else +#ifndef xmlUCSIsOpticalCharacterRecognition +extern __typeof (xmlUCSIsOpticalCharacterRecognition) xmlUCSIsOpticalCharacterRecognition__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsOpticalCharacterRecognition xmlUCSIsOpticalCharacterRecognition__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsOriya +extern __typeof (xmlUCSIsOriya) xmlUCSIsOriya __attribute((alias("xmlUCSIsOriya__internal_alias"))); +#else +#ifndef xmlUCSIsOriya +extern __typeof (xmlUCSIsOriya) xmlUCSIsOriya__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsOriya xmlUCSIsOriya__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsOsmanya +extern __typeof (xmlUCSIsOsmanya) xmlUCSIsOsmanya __attribute((alias("xmlUCSIsOsmanya__internal_alias"))); +#else +#ifndef xmlUCSIsOsmanya +extern __typeof (xmlUCSIsOsmanya) xmlUCSIsOsmanya__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsOsmanya xmlUCSIsOsmanya__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsPhoneticExtensions +extern __typeof (xmlUCSIsPhoneticExtensions) xmlUCSIsPhoneticExtensions __attribute((alias("xmlUCSIsPhoneticExtensions__internal_alias"))); +#else +#ifndef xmlUCSIsPhoneticExtensions +extern __typeof (xmlUCSIsPhoneticExtensions) xmlUCSIsPhoneticExtensions__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsPhoneticExtensions xmlUCSIsPhoneticExtensions__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsPrivateUse +extern __typeof (xmlUCSIsPrivateUse) xmlUCSIsPrivateUse __attribute((alias("xmlUCSIsPrivateUse__internal_alias"))); +#else +#ifndef xmlUCSIsPrivateUse +extern __typeof (xmlUCSIsPrivateUse) xmlUCSIsPrivateUse__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsPrivateUse xmlUCSIsPrivateUse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsPrivateUseArea +extern __typeof (xmlUCSIsPrivateUseArea) xmlUCSIsPrivateUseArea __attribute((alias("xmlUCSIsPrivateUseArea__internal_alias"))); +#else +#ifndef xmlUCSIsPrivateUseArea +extern __typeof (xmlUCSIsPrivateUseArea) xmlUCSIsPrivateUseArea__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsPrivateUseArea xmlUCSIsPrivateUseArea__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsRunic +extern __typeof (xmlUCSIsRunic) xmlUCSIsRunic __attribute((alias("xmlUCSIsRunic__internal_alias"))); +#else +#ifndef xmlUCSIsRunic +extern __typeof (xmlUCSIsRunic) xmlUCSIsRunic__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsRunic xmlUCSIsRunic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsShavian +extern __typeof (xmlUCSIsShavian) xmlUCSIsShavian __attribute((alias("xmlUCSIsShavian__internal_alias"))); +#else +#ifndef xmlUCSIsShavian +extern __typeof (xmlUCSIsShavian) xmlUCSIsShavian__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsShavian xmlUCSIsShavian__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSinhala +extern __typeof (xmlUCSIsSinhala) xmlUCSIsSinhala __attribute((alias("xmlUCSIsSinhala__internal_alias"))); +#else +#ifndef xmlUCSIsSinhala +extern __typeof (xmlUCSIsSinhala) xmlUCSIsSinhala__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSinhala xmlUCSIsSinhala__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSmallFormVariants +extern __typeof (xmlUCSIsSmallFormVariants) xmlUCSIsSmallFormVariants __attribute((alias("xmlUCSIsSmallFormVariants__internal_alias"))); +#else +#ifndef xmlUCSIsSmallFormVariants +extern __typeof (xmlUCSIsSmallFormVariants) xmlUCSIsSmallFormVariants__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSmallFormVariants xmlUCSIsSmallFormVariants__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSpacingModifierLetters +extern __typeof (xmlUCSIsSpacingModifierLetters) xmlUCSIsSpacingModifierLetters __attribute((alias("xmlUCSIsSpacingModifierLetters__internal_alias"))); +#else +#ifndef xmlUCSIsSpacingModifierLetters +extern __typeof (xmlUCSIsSpacingModifierLetters) xmlUCSIsSpacingModifierLetters__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSpacingModifierLetters xmlUCSIsSpacingModifierLetters__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSpecials +extern __typeof (xmlUCSIsSpecials) xmlUCSIsSpecials __attribute((alias("xmlUCSIsSpecials__internal_alias"))); +#else +#ifndef xmlUCSIsSpecials +extern __typeof (xmlUCSIsSpecials) xmlUCSIsSpecials__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSpecials xmlUCSIsSpecials__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSuperscriptsandSubscripts +extern __typeof (xmlUCSIsSuperscriptsandSubscripts) xmlUCSIsSuperscriptsandSubscripts __attribute((alias("xmlUCSIsSuperscriptsandSubscripts__internal_alias"))); +#else +#ifndef xmlUCSIsSuperscriptsandSubscripts +extern __typeof (xmlUCSIsSuperscriptsandSubscripts) xmlUCSIsSuperscriptsandSubscripts__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSuperscriptsandSubscripts xmlUCSIsSuperscriptsandSubscripts__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSupplementalArrowsA +extern __typeof (xmlUCSIsSupplementalArrowsA) xmlUCSIsSupplementalArrowsA __attribute((alias("xmlUCSIsSupplementalArrowsA__internal_alias"))); +#else +#ifndef xmlUCSIsSupplementalArrowsA +extern __typeof (xmlUCSIsSupplementalArrowsA) xmlUCSIsSupplementalArrowsA__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSupplementalArrowsA xmlUCSIsSupplementalArrowsA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSupplementalArrowsB +extern __typeof (xmlUCSIsSupplementalArrowsB) xmlUCSIsSupplementalArrowsB __attribute((alias("xmlUCSIsSupplementalArrowsB__internal_alias"))); +#else +#ifndef xmlUCSIsSupplementalArrowsB +extern __typeof (xmlUCSIsSupplementalArrowsB) xmlUCSIsSupplementalArrowsB__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSupplementalArrowsB xmlUCSIsSupplementalArrowsB__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSupplementalMathematicalOperators +extern __typeof (xmlUCSIsSupplementalMathematicalOperators) xmlUCSIsSupplementalMathematicalOperators __attribute((alias("xmlUCSIsSupplementalMathematicalOperators__internal_alias"))); +#else +#ifndef xmlUCSIsSupplementalMathematicalOperators +extern __typeof (xmlUCSIsSupplementalMathematicalOperators) xmlUCSIsSupplementalMathematicalOperators__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSupplementalMathematicalOperators xmlUCSIsSupplementalMathematicalOperators__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSupplementaryPrivateUseAreaA +extern __typeof (xmlUCSIsSupplementaryPrivateUseAreaA) xmlUCSIsSupplementaryPrivateUseAreaA __attribute((alias("xmlUCSIsSupplementaryPrivateUseAreaA__internal_alias"))); +#else +#ifndef xmlUCSIsSupplementaryPrivateUseAreaA +extern __typeof (xmlUCSIsSupplementaryPrivateUseAreaA) xmlUCSIsSupplementaryPrivateUseAreaA__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSupplementaryPrivateUseAreaA xmlUCSIsSupplementaryPrivateUseAreaA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSupplementaryPrivateUseAreaB +extern __typeof (xmlUCSIsSupplementaryPrivateUseAreaB) xmlUCSIsSupplementaryPrivateUseAreaB __attribute((alias("xmlUCSIsSupplementaryPrivateUseAreaB__internal_alias"))); +#else +#ifndef xmlUCSIsSupplementaryPrivateUseAreaB +extern __typeof (xmlUCSIsSupplementaryPrivateUseAreaB) xmlUCSIsSupplementaryPrivateUseAreaB__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSupplementaryPrivateUseAreaB xmlUCSIsSupplementaryPrivateUseAreaB__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSyriac +extern __typeof (xmlUCSIsSyriac) xmlUCSIsSyriac __attribute((alias("xmlUCSIsSyriac__internal_alias"))); +#else +#ifndef xmlUCSIsSyriac +extern __typeof (xmlUCSIsSyriac) xmlUCSIsSyriac__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSyriac xmlUCSIsSyriac__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsTagalog +extern __typeof (xmlUCSIsTagalog) xmlUCSIsTagalog __attribute((alias("xmlUCSIsTagalog__internal_alias"))); +#else +#ifndef xmlUCSIsTagalog +extern __typeof (xmlUCSIsTagalog) xmlUCSIsTagalog__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsTagalog xmlUCSIsTagalog__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsTagbanwa +extern __typeof (xmlUCSIsTagbanwa) xmlUCSIsTagbanwa __attribute((alias("xmlUCSIsTagbanwa__internal_alias"))); +#else +#ifndef xmlUCSIsTagbanwa +extern __typeof (xmlUCSIsTagbanwa) xmlUCSIsTagbanwa__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsTagbanwa xmlUCSIsTagbanwa__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsTags +extern __typeof (xmlUCSIsTags) xmlUCSIsTags __attribute((alias("xmlUCSIsTags__internal_alias"))); +#else +#ifndef xmlUCSIsTags +extern __typeof (xmlUCSIsTags) xmlUCSIsTags__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsTags xmlUCSIsTags__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsTaiLe +extern __typeof (xmlUCSIsTaiLe) xmlUCSIsTaiLe __attribute((alias("xmlUCSIsTaiLe__internal_alias"))); +#else +#ifndef xmlUCSIsTaiLe +extern __typeof (xmlUCSIsTaiLe) xmlUCSIsTaiLe__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsTaiLe xmlUCSIsTaiLe__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsTaiXuanJingSymbols +extern __typeof (xmlUCSIsTaiXuanJingSymbols) xmlUCSIsTaiXuanJingSymbols __attribute((alias("xmlUCSIsTaiXuanJingSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsTaiXuanJingSymbols +extern __typeof (xmlUCSIsTaiXuanJingSymbols) xmlUCSIsTaiXuanJingSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsTaiXuanJingSymbols xmlUCSIsTaiXuanJingSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsTamil +extern __typeof (xmlUCSIsTamil) xmlUCSIsTamil __attribute((alias("xmlUCSIsTamil__internal_alias"))); +#else +#ifndef xmlUCSIsTamil +extern __typeof (xmlUCSIsTamil) xmlUCSIsTamil__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsTamil xmlUCSIsTamil__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsTelugu +extern __typeof (xmlUCSIsTelugu) xmlUCSIsTelugu __attribute((alias("xmlUCSIsTelugu__internal_alias"))); +#else +#ifndef xmlUCSIsTelugu +extern __typeof (xmlUCSIsTelugu) xmlUCSIsTelugu__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsTelugu xmlUCSIsTelugu__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsThaana +extern __typeof (xmlUCSIsThaana) xmlUCSIsThaana __attribute((alias("xmlUCSIsThaana__internal_alias"))); +#else +#ifndef xmlUCSIsThaana +extern __typeof (xmlUCSIsThaana) xmlUCSIsThaana__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsThaana xmlUCSIsThaana__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsThai +extern __typeof (xmlUCSIsThai) xmlUCSIsThai __attribute((alias("xmlUCSIsThai__internal_alias"))); +#else +#ifndef xmlUCSIsThai +extern __typeof (xmlUCSIsThai) xmlUCSIsThai__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsThai xmlUCSIsThai__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsTibetan +extern __typeof (xmlUCSIsTibetan) xmlUCSIsTibetan __attribute((alias("xmlUCSIsTibetan__internal_alias"))); +#else +#ifndef xmlUCSIsTibetan +extern __typeof (xmlUCSIsTibetan) xmlUCSIsTibetan__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsTibetan xmlUCSIsTibetan__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsUgaritic +extern __typeof (xmlUCSIsUgaritic) xmlUCSIsUgaritic __attribute((alias("xmlUCSIsUgaritic__internal_alias"))); +#else +#ifndef xmlUCSIsUgaritic +extern __typeof (xmlUCSIsUgaritic) xmlUCSIsUgaritic__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsUgaritic xmlUCSIsUgaritic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsUnifiedCanadianAboriginalSyllabics +extern __typeof (xmlUCSIsUnifiedCanadianAboriginalSyllabics) xmlUCSIsUnifiedCanadianAboriginalSyllabics __attribute((alias("xmlUCSIsUnifiedCanadianAboriginalSyllabics__internal_alias"))); +#else +#ifndef xmlUCSIsUnifiedCanadianAboriginalSyllabics +extern __typeof (xmlUCSIsUnifiedCanadianAboriginalSyllabics) xmlUCSIsUnifiedCanadianAboriginalSyllabics__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsUnifiedCanadianAboriginalSyllabics xmlUCSIsUnifiedCanadianAboriginalSyllabics__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsVariationSelectors +extern __typeof (xmlUCSIsVariationSelectors) xmlUCSIsVariationSelectors __attribute((alias("xmlUCSIsVariationSelectors__internal_alias"))); +#else +#ifndef xmlUCSIsVariationSelectors +extern __typeof (xmlUCSIsVariationSelectors) xmlUCSIsVariationSelectors__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsVariationSelectors xmlUCSIsVariationSelectors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsVariationSelectorsSupplement +extern __typeof (xmlUCSIsVariationSelectorsSupplement) xmlUCSIsVariationSelectorsSupplement __attribute((alias("xmlUCSIsVariationSelectorsSupplement__internal_alias"))); +#else +#ifndef xmlUCSIsVariationSelectorsSupplement +extern __typeof (xmlUCSIsVariationSelectorsSupplement) xmlUCSIsVariationSelectorsSupplement__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsVariationSelectorsSupplement xmlUCSIsVariationSelectorsSupplement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsYiRadicals +extern __typeof (xmlUCSIsYiRadicals) xmlUCSIsYiRadicals __attribute((alias("xmlUCSIsYiRadicals__internal_alias"))); +#else +#ifndef xmlUCSIsYiRadicals +extern __typeof (xmlUCSIsYiRadicals) xmlUCSIsYiRadicals__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsYiRadicals xmlUCSIsYiRadicals__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsYiSyllables +extern __typeof (xmlUCSIsYiSyllables) xmlUCSIsYiSyllables __attribute((alias("xmlUCSIsYiSyllables__internal_alias"))); +#else +#ifndef xmlUCSIsYiSyllables +extern __typeof (xmlUCSIsYiSyllables) xmlUCSIsYiSyllables__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsYiSyllables xmlUCSIsYiSyllables__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsYijingHexagramSymbols +extern __typeof (xmlUCSIsYijingHexagramSymbols) xmlUCSIsYijingHexagramSymbols __attribute((alias("xmlUCSIsYijingHexagramSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsYijingHexagramSymbols +extern __typeof (xmlUCSIsYijingHexagramSymbols) xmlUCSIsYijingHexagramSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsYijingHexagramSymbols xmlUCSIsYijingHexagramSymbols__internal_alias +#endif +#endif +#endif + +#ifdef bottom_uri +#undef xmlURIEscape +extern __typeof (xmlURIEscape) xmlURIEscape __attribute((alias("xmlURIEscape__internal_alias"))); +#else +#ifndef xmlURIEscape +extern __typeof (xmlURIEscape) xmlURIEscape__internal_alias __attribute((visibility("hidden"))); +#define xmlURIEscape xmlURIEscape__internal_alias +#endif +#endif + +#ifdef bottom_uri +#undef xmlURIEscapeStr +extern __typeof (xmlURIEscapeStr) xmlURIEscapeStr __attribute((alias("xmlURIEscapeStr__internal_alias"))); +#else +#ifndef xmlURIEscapeStr +extern __typeof (xmlURIEscapeStr) xmlURIEscapeStr__internal_alias __attribute((visibility("hidden"))); +#define xmlURIEscapeStr xmlURIEscapeStr__internal_alias +#endif +#endif + +#ifdef bottom_uri +#undef xmlURIUnescapeString +extern __typeof (xmlURIUnescapeString) xmlURIUnescapeString __attribute((alias("xmlURIUnescapeString__internal_alias"))); +#else +#ifndef xmlURIUnescapeString +extern __typeof (xmlURIUnescapeString) xmlURIUnescapeString__internal_alias __attribute((visibility("hidden"))); +#define xmlURIUnescapeString xmlURIUnescapeString__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlUTF8Charcmp +extern __typeof (xmlUTF8Charcmp) xmlUTF8Charcmp __attribute((alias("xmlUTF8Charcmp__internal_alias"))); +#else +#ifndef xmlUTF8Charcmp +extern __typeof (xmlUTF8Charcmp) xmlUTF8Charcmp__internal_alias __attribute((visibility("hidden"))); +#define xmlUTF8Charcmp xmlUTF8Charcmp__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlUTF8Size +extern __typeof (xmlUTF8Size) xmlUTF8Size __attribute((alias("xmlUTF8Size__internal_alias"))); +#else +#ifndef xmlUTF8Size +extern __typeof (xmlUTF8Size) xmlUTF8Size__internal_alias __attribute((visibility("hidden"))); +#define xmlUTF8Size xmlUTF8Size__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlUTF8Strlen +extern __typeof (xmlUTF8Strlen) xmlUTF8Strlen __attribute((alias("xmlUTF8Strlen__internal_alias"))); +#else +#ifndef xmlUTF8Strlen +extern __typeof (xmlUTF8Strlen) xmlUTF8Strlen__internal_alias __attribute((visibility("hidden"))); +#define xmlUTF8Strlen xmlUTF8Strlen__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlUTF8Strloc +extern __typeof (xmlUTF8Strloc) xmlUTF8Strloc __attribute((alias("xmlUTF8Strloc__internal_alias"))); +#else +#ifndef xmlUTF8Strloc +extern __typeof (xmlUTF8Strloc) xmlUTF8Strloc__internal_alias __attribute((visibility("hidden"))); +#define xmlUTF8Strloc xmlUTF8Strloc__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlUTF8Strndup +extern __typeof (xmlUTF8Strndup) xmlUTF8Strndup __attribute((alias("xmlUTF8Strndup__internal_alias"))); +#else +#ifndef xmlUTF8Strndup +extern __typeof (xmlUTF8Strndup) xmlUTF8Strndup__internal_alias __attribute((visibility("hidden"))); +#define xmlUTF8Strndup xmlUTF8Strndup__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlUTF8Strpos +extern __typeof (xmlUTF8Strpos) xmlUTF8Strpos __attribute((alias("xmlUTF8Strpos__internal_alias"))); +#else +#ifndef xmlUTF8Strpos +extern __typeof (xmlUTF8Strpos) xmlUTF8Strpos__internal_alias __attribute((visibility("hidden"))); +#define xmlUTF8Strpos xmlUTF8Strpos__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlUTF8Strsize +extern __typeof (xmlUTF8Strsize) xmlUTF8Strsize __attribute((alias("xmlUTF8Strsize__internal_alias"))); +#else +#ifndef xmlUTF8Strsize +extern __typeof (xmlUTF8Strsize) xmlUTF8Strsize__internal_alias __attribute((visibility("hidden"))); +#define xmlUTF8Strsize xmlUTF8Strsize__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlUTF8Strsub +extern __typeof (xmlUTF8Strsub) xmlUTF8Strsub __attribute((alias("xmlUTF8Strsub__internal_alias"))); +#else +#ifndef xmlUTF8Strsub +extern __typeof (xmlUTF8Strsub) xmlUTF8Strsub__internal_alias __attribute((visibility("hidden"))); +#define xmlUTF8Strsub xmlUTF8Strsub__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlUnlinkNode +extern __typeof (xmlUnlinkNode) xmlUnlinkNode __attribute((alias("xmlUnlinkNode__internal_alias"))); +#else +#ifndef xmlUnlinkNode +extern __typeof (xmlUnlinkNode) xmlUnlinkNode__internal_alias __attribute((visibility("hidden"))); +#define xmlUnlinkNode xmlUnlinkNode__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlUnlockLibrary +extern __typeof (xmlUnlockLibrary) xmlUnlockLibrary __attribute((alias("xmlUnlockLibrary__internal_alias"))); +#else +#ifndef xmlUnlockLibrary +extern __typeof (xmlUnlockLibrary) xmlUnlockLibrary__internal_alias __attribute((visibility("hidden"))); +#define xmlUnlockLibrary xmlUnlockLibrary__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlUnsetNsProp +extern __typeof (xmlUnsetNsProp) xmlUnsetNsProp __attribute((alias("xmlUnsetNsProp__internal_alias"))); +#else +#ifndef xmlUnsetNsProp +extern __typeof (xmlUnsetNsProp) xmlUnsetNsProp__internal_alias __attribute((visibility("hidden"))); +#define xmlUnsetNsProp xmlUnsetNsProp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlUnsetProp +extern __typeof (xmlUnsetProp) xmlUnsetProp __attribute((alias("xmlUnsetProp__internal_alias"))); +#else +#ifndef xmlUnsetProp +extern __typeof (xmlUnsetProp) xmlUnsetProp__internal_alias __attribute((visibility("hidden"))); +#define xmlUnsetProp xmlUnsetProp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_valid +#undef xmlValidBuildContentModel +extern __typeof (xmlValidBuildContentModel) xmlValidBuildContentModel __attribute((alias("xmlValidBuildContentModel__internal_alias"))); +#else +#ifndef xmlValidBuildContentModel +extern __typeof (xmlValidBuildContentModel) xmlValidBuildContentModel__internal_alias __attribute((visibility("hidden"))); +#define xmlValidBuildContentModel xmlValidBuildContentModel__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidCtxtNormalizeAttributeValue +extern __typeof (xmlValidCtxtNormalizeAttributeValue) xmlValidCtxtNormalizeAttributeValue __attribute((alias("xmlValidCtxtNormalizeAttributeValue__internal_alias"))); +#else +#ifndef xmlValidCtxtNormalizeAttributeValue +extern __typeof (xmlValidCtxtNormalizeAttributeValue) xmlValidCtxtNormalizeAttributeValue__internal_alias __attribute((visibility("hidden"))); +#define xmlValidCtxtNormalizeAttributeValue xmlValidCtxtNormalizeAttributeValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidGetPotentialChildren +extern __typeof (xmlValidGetPotentialChildren) xmlValidGetPotentialChildren __attribute((alias("xmlValidGetPotentialChildren__internal_alias"))); +#else +#ifndef xmlValidGetPotentialChildren +extern __typeof (xmlValidGetPotentialChildren) xmlValidGetPotentialChildren__internal_alias __attribute((visibility("hidden"))); +#define xmlValidGetPotentialChildren xmlValidGetPotentialChildren__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidGetValidElements +extern __typeof (xmlValidGetValidElements) xmlValidGetValidElements __attribute((alias("xmlValidGetValidElements__internal_alias"))); +#else +#ifndef xmlValidGetValidElements +extern __typeof (xmlValidGetValidElements) xmlValidGetValidElements__internal_alias __attribute((visibility("hidden"))); +#define xmlValidGetValidElements xmlValidGetValidElements__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidNormalizeAttributeValue +extern __typeof (xmlValidNormalizeAttributeValue) xmlValidNormalizeAttributeValue __attribute((alias("xmlValidNormalizeAttributeValue__internal_alias"))); +#else +#ifndef xmlValidNormalizeAttributeValue +extern __typeof (xmlValidNormalizeAttributeValue) xmlValidNormalizeAttributeValue__internal_alias __attribute((visibility("hidden"))); +#define xmlValidNormalizeAttributeValue xmlValidNormalizeAttributeValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateAttributeDecl +extern __typeof (xmlValidateAttributeDecl) xmlValidateAttributeDecl __attribute((alias("xmlValidateAttributeDecl__internal_alias"))); +#else +#ifndef xmlValidateAttributeDecl +extern __typeof (xmlValidateAttributeDecl) xmlValidateAttributeDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateAttributeDecl xmlValidateAttributeDecl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateAttributeValue +extern __typeof (xmlValidateAttributeValue) xmlValidateAttributeValue __attribute((alias("xmlValidateAttributeValue__internal_alias"))); +#else +#ifndef xmlValidateAttributeValue +extern __typeof (xmlValidateAttributeValue) xmlValidateAttributeValue__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateAttributeValue xmlValidateAttributeValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateDocument +extern __typeof (xmlValidateDocument) xmlValidateDocument __attribute((alias("xmlValidateDocument__internal_alias"))); +#else +#ifndef xmlValidateDocument +extern __typeof (xmlValidateDocument) xmlValidateDocument__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateDocument xmlValidateDocument__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateDocumentFinal +extern __typeof (xmlValidateDocumentFinal) xmlValidateDocumentFinal __attribute((alias("xmlValidateDocumentFinal__internal_alias"))); +#else +#ifndef xmlValidateDocumentFinal +extern __typeof (xmlValidateDocumentFinal) xmlValidateDocumentFinal__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateDocumentFinal xmlValidateDocumentFinal__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateDtd +extern __typeof (xmlValidateDtd) xmlValidateDtd __attribute((alias("xmlValidateDtd__internal_alias"))); +#else +#ifndef xmlValidateDtd +extern __typeof (xmlValidateDtd) xmlValidateDtd__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateDtd xmlValidateDtd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateDtdFinal +extern __typeof (xmlValidateDtdFinal) xmlValidateDtdFinal __attribute((alias("xmlValidateDtdFinal__internal_alias"))); +#else +#ifndef xmlValidateDtdFinal +extern __typeof (xmlValidateDtdFinal) xmlValidateDtdFinal__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateDtdFinal xmlValidateDtdFinal__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateElement +extern __typeof (xmlValidateElement) xmlValidateElement __attribute((alias("xmlValidateElement__internal_alias"))); +#else +#ifndef xmlValidateElement +extern __typeof (xmlValidateElement) xmlValidateElement__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateElement xmlValidateElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateElementDecl +extern __typeof (xmlValidateElementDecl) xmlValidateElementDecl __attribute((alias("xmlValidateElementDecl__internal_alias"))); +#else +#ifndef xmlValidateElementDecl +extern __typeof (xmlValidateElementDecl) xmlValidateElementDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateElementDecl xmlValidateElementDecl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_tree +#undef xmlValidateNCName +extern __typeof (xmlValidateNCName) xmlValidateNCName __attribute((alias("xmlValidateNCName__internal_alias"))); +#else +#ifndef xmlValidateNCName +extern __typeof (xmlValidateNCName) xmlValidateNCName__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateNCName xmlValidateNCName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlValidateNMToken +extern __typeof (xmlValidateNMToken) xmlValidateNMToken __attribute((alias("xmlValidateNMToken__internal_alias"))); +#else +#ifndef xmlValidateNMToken +extern __typeof (xmlValidateNMToken) xmlValidateNMToken__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateNMToken xmlValidateNMToken__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlValidateName +extern __typeof (xmlValidateName) xmlValidateName __attribute((alias("xmlValidateName__internal_alias"))); +#else +#ifndef xmlValidateName +extern __typeof (xmlValidateName) xmlValidateName__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateName xmlValidateName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateNameValue +extern __typeof (xmlValidateNameValue) xmlValidateNameValue __attribute((alias("xmlValidateNameValue__internal_alias"))); +#else +#ifndef xmlValidateNameValue +extern __typeof (xmlValidateNameValue) xmlValidateNameValue__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateNameValue xmlValidateNameValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateNamesValue +extern __typeof (xmlValidateNamesValue) xmlValidateNamesValue __attribute((alias("xmlValidateNamesValue__internal_alias"))); +#else +#ifndef xmlValidateNamesValue +extern __typeof (xmlValidateNamesValue) xmlValidateNamesValue__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateNamesValue xmlValidateNamesValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateNmtokenValue +extern __typeof (xmlValidateNmtokenValue) xmlValidateNmtokenValue __attribute((alias("xmlValidateNmtokenValue__internal_alias"))); +#else +#ifndef xmlValidateNmtokenValue +extern __typeof (xmlValidateNmtokenValue) xmlValidateNmtokenValue__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateNmtokenValue xmlValidateNmtokenValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateNmtokensValue +extern __typeof (xmlValidateNmtokensValue) xmlValidateNmtokensValue __attribute((alias("xmlValidateNmtokensValue__internal_alias"))); +#else +#ifndef xmlValidateNmtokensValue +extern __typeof (xmlValidateNmtokensValue) xmlValidateNmtokensValue__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateNmtokensValue xmlValidateNmtokensValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateNotationDecl +extern __typeof (xmlValidateNotationDecl) xmlValidateNotationDecl __attribute((alias("xmlValidateNotationDecl__internal_alias"))); +#else +#ifndef xmlValidateNotationDecl +extern __typeof (xmlValidateNotationDecl) xmlValidateNotationDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateNotationDecl xmlValidateNotationDecl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_valid +#undef xmlValidateNotationUse +extern __typeof (xmlValidateNotationUse) xmlValidateNotationUse __attribute((alias("xmlValidateNotationUse__internal_alias"))); +#else +#ifndef xmlValidateNotationUse +extern __typeof (xmlValidateNotationUse) xmlValidateNotationUse__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateNotationUse xmlValidateNotationUse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateOneAttribute +extern __typeof (xmlValidateOneAttribute) xmlValidateOneAttribute __attribute((alias("xmlValidateOneAttribute__internal_alias"))); +#else +#ifndef xmlValidateOneAttribute +extern __typeof (xmlValidateOneAttribute) xmlValidateOneAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateOneAttribute xmlValidateOneAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateOneElement +extern __typeof (xmlValidateOneElement) xmlValidateOneElement __attribute((alias("xmlValidateOneElement__internal_alias"))); +#else +#ifndef xmlValidateOneElement +extern __typeof (xmlValidateOneElement) xmlValidateOneElement__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateOneElement xmlValidateOneElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateOneNamespace +extern __typeof (xmlValidateOneNamespace) xmlValidateOneNamespace __attribute((alias("xmlValidateOneNamespace__internal_alias"))); +#else +#ifndef xmlValidateOneNamespace +extern __typeof (xmlValidateOneNamespace) xmlValidateOneNamespace__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateOneNamespace xmlValidateOneNamespace__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_valid +#undef xmlValidatePopElement +extern __typeof (xmlValidatePopElement) xmlValidatePopElement __attribute((alias("xmlValidatePopElement__internal_alias"))); +#else +#ifndef xmlValidatePopElement +extern __typeof (xmlValidatePopElement) xmlValidatePopElement__internal_alias __attribute((visibility("hidden"))); +#define xmlValidatePopElement xmlValidatePopElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_valid +#undef xmlValidatePushCData +extern __typeof (xmlValidatePushCData) xmlValidatePushCData __attribute((alias("xmlValidatePushCData__internal_alias"))); +#else +#ifndef xmlValidatePushCData +extern __typeof (xmlValidatePushCData) xmlValidatePushCData__internal_alias __attribute((visibility("hidden"))); +#define xmlValidatePushCData xmlValidatePushCData__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_valid +#undef xmlValidatePushElement +extern __typeof (xmlValidatePushElement) xmlValidatePushElement __attribute((alias("xmlValidatePushElement__internal_alias"))); +#else +#ifndef xmlValidatePushElement +extern __typeof (xmlValidatePushElement) xmlValidatePushElement__internal_alias __attribute((visibility("hidden"))); +#define xmlValidatePushElement xmlValidatePushElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlValidateQName +extern __typeof (xmlValidateQName) xmlValidateQName __attribute((alias("xmlValidateQName__internal_alias"))); +#else +#ifndef xmlValidateQName +extern __typeof (xmlValidateQName) xmlValidateQName__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateQName xmlValidateQName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateRoot +extern __typeof (xmlValidateRoot) xmlValidateRoot __attribute((alias("xmlValidateRoot__internal_alias"))); +#else +#ifndef xmlValidateRoot +extern __typeof (xmlValidateRoot) xmlValidateRoot__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateRoot xmlValidateRoot__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeFreeContext +extern __typeof (xmlXIncludeFreeContext) xmlXIncludeFreeContext __attribute((alias("xmlXIncludeFreeContext__internal_alias"))); +#else +#ifndef xmlXIncludeFreeContext +extern __typeof (xmlXIncludeFreeContext) xmlXIncludeFreeContext__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeFreeContext xmlXIncludeFreeContext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeNewContext +extern __typeof (xmlXIncludeNewContext) xmlXIncludeNewContext __attribute((alias("xmlXIncludeNewContext__internal_alias"))); +#else +#ifndef xmlXIncludeNewContext +extern __typeof (xmlXIncludeNewContext) xmlXIncludeNewContext__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeNewContext xmlXIncludeNewContext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeProcess +extern __typeof (xmlXIncludeProcess) xmlXIncludeProcess __attribute((alias("xmlXIncludeProcess__internal_alias"))); +#else +#ifndef xmlXIncludeProcess +extern __typeof (xmlXIncludeProcess) xmlXIncludeProcess__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeProcess xmlXIncludeProcess__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeProcessFlags +extern __typeof (xmlXIncludeProcessFlags) xmlXIncludeProcessFlags __attribute((alias("xmlXIncludeProcessFlags__internal_alias"))); +#else +#ifndef xmlXIncludeProcessFlags +extern __typeof (xmlXIncludeProcessFlags) xmlXIncludeProcessFlags__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeProcessFlags xmlXIncludeProcessFlags__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeProcessFlagsData +extern __typeof (xmlXIncludeProcessFlagsData) xmlXIncludeProcessFlagsData __attribute((alias("xmlXIncludeProcessFlagsData__internal_alias"))); +#else +#ifndef xmlXIncludeProcessFlagsData +extern __typeof (xmlXIncludeProcessFlagsData) xmlXIncludeProcessFlagsData__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeProcessFlagsData xmlXIncludeProcessFlagsData__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeProcessNode +extern __typeof (xmlXIncludeProcessNode) xmlXIncludeProcessNode __attribute((alias("xmlXIncludeProcessNode__internal_alias"))); +#else +#ifndef xmlXIncludeProcessNode +extern __typeof (xmlXIncludeProcessNode) xmlXIncludeProcessNode__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeProcessNode xmlXIncludeProcessNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeProcessTree +extern __typeof (xmlXIncludeProcessTree) xmlXIncludeProcessTree __attribute((alias("xmlXIncludeProcessTree__internal_alias"))); +#else +#ifndef xmlXIncludeProcessTree +extern __typeof (xmlXIncludeProcessTree) xmlXIncludeProcessTree__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeProcessTree xmlXIncludeProcessTree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeProcessTreeFlags +extern __typeof (xmlXIncludeProcessTreeFlags) xmlXIncludeProcessTreeFlags __attribute((alias("xmlXIncludeProcessTreeFlags__internal_alias"))); +#else +#ifndef xmlXIncludeProcessTreeFlags +extern __typeof (xmlXIncludeProcessTreeFlags) xmlXIncludeProcessTreeFlags__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeProcessTreeFlags xmlXIncludeProcessTreeFlags__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeProcessTreeFlagsData +extern __typeof (xmlXIncludeProcessTreeFlagsData) xmlXIncludeProcessTreeFlagsData __attribute((alias("xmlXIncludeProcessTreeFlagsData__internal_alias"))); +#else +#ifndef xmlXIncludeProcessTreeFlagsData +extern __typeof (xmlXIncludeProcessTreeFlagsData) xmlXIncludeProcessTreeFlagsData__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeProcessTreeFlagsData xmlXIncludeProcessTreeFlagsData__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeSetFlags +extern __typeof (xmlXIncludeSetFlags) xmlXIncludeSetFlags __attribute((alias("xmlXIncludeSetFlags__internal_alias"))); +#else +#ifndef xmlXIncludeSetFlags +extern __typeof (xmlXIncludeSetFlags) xmlXIncludeSetFlags__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeSetFlags xmlXIncludeSetFlags__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathAddValues +extern __typeof (xmlXPathAddValues) xmlXPathAddValues __attribute((alias("xmlXPathAddValues__internal_alias"))); +#else +#ifndef xmlXPathAddValues +extern __typeof (xmlXPathAddValues) xmlXPathAddValues__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathAddValues xmlXPathAddValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathBooleanFunction +extern __typeof (xmlXPathBooleanFunction) xmlXPathBooleanFunction __attribute((alias("xmlXPathBooleanFunction__internal_alias"))); +#else +#ifndef xmlXPathBooleanFunction +extern __typeof (xmlXPathBooleanFunction) xmlXPathBooleanFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathBooleanFunction xmlXPathBooleanFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastBooleanToNumber +extern __typeof (xmlXPathCastBooleanToNumber) xmlXPathCastBooleanToNumber __attribute((alias("xmlXPathCastBooleanToNumber__internal_alias"))); +#else +#ifndef xmlXPathCastBooleanToNumber +extern __typeof (xmlXPathCastBooleanToNumber) xmlXPathCastBooleanToNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastBooleanToNumber xmlXPathCastBooleanToNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastBooleanToString +extern __typeof (xmlXPathCastBooleanToString) xmlXPathCastBooleanToString __attribute((alias("xmlXPathCastBooleanToString__internal_alias"))); +#else +#ifndef xmlXPathCastBooleanToString +extern __typeof (xmlXPathCastBooleanToString) xmlXPathCastBooleanToString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastBooleanToString xmlXPathCastBooleanToString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastNodeSetToBoolean +extern __typeof (xmlXPathCastNodeSetToBoolean) xmlXPathCastNodeSetToBoolean __attribute((alias("xmlXPathCastNodeSetToBoolean__internal_alias"))); +#else +#ifndef xmlXPathCastNodeSetToBoolean +extern __typeof (xmlXPathCastNodeSetToBoolean) xmlXPathCastNodeSetToBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastNodeSetToBoolean xmlXPathCastNodeSetToBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastNodeSetToNumber +extern __typeof (xmlXPathCastNodeSetToNumber) xmlXPathCastNodeSetToNumber __attribute((alias("xmlXPathCastNodeSetToNumber__internal_alias"))); +#else +#ifndef xmlXPathCastNodeSetToNumber +extern __typeof (xmlXPathCastNodeSetToNumber) xmlXPathCastNodeSetToNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastNodeSetToNumber xmlXPathCastNodeSetToNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastNodeSetToString +extern __typeof (xmlXPathCastNodeSetToString) xmlXPathCastNodeSetToString __attribute((alias("xmlXPathCastNodeSetToString__internal_alias"))); +#else +#ifndef xmlXPathCastNodeSetToString +extern __typeof (xmlXPathCastNodeSetToString) xmlXPathCastNodeSetToString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastNodeSetToString xmlXPathCastNodeSetToString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastNodeToNumber +extern __typeof (xmlXPathCastNodeToNumber) xmlXPathCastNodeToNumber __attribute((alias("xmlXPathCastNodeToNumber__internal_alias"))); +#else +#ifndef xmlXPathCastNodeToNumber +extern __typeof (xmlXPathCastNodeToNumber) xmlXPathCastNodeToNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastNodeToNumber xmlXPathCastNodeToNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastNodeToString +extern __typeof (xmlXPathCastNodeToString) xmlXPathCastNodeToString __attribute((alias("xmlXPathCastNodeToString__internal_alias"))); +#else +#ifndef xmlXPathCastNodeToString +extern __typeof (xmlXPathCastNodeToString) xmlXPathCastNodeToString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastNodeToString xmlXPathCastNodeToString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastNumberToBoolean +extern __typeof (xmlXPathCastNumberToBoolean) xmlXPathCastNumberToBoolean __attribute((alias("xmlXPathCastNumberToBoolean__internal_alias"))); +#else +#ifndef xmlXPathCastNumberToBoolean +extern __typeof (xmlXPathCastNumberToBoolean) xmlXPathCastNumberToBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastNumberToBoolean xmlXPathCastNumberToBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastNumberToString +extern __typeof (xmlXPathCastNumberToString) xmlXPathCastNumberToString __attribute((alias("xmlXPathCastNumberToString__internal_alias"))); +#else +#ifndef xmlXPathCastNumberToString +extern __typeof (xmlXPathCastNumberToString) xmlXPathCastNumberToString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastNumberToString xmlXPathCastNumberToString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastStringToBoolean +extern __typeof (xmlXPathCastStringToBoolean) xmlXPathCastStringToBoolean __attribute((alias("xmlXPathCastStringToBoolean__internal_alias"))); +#else +#ifndef xmlXPathCastStringToBoolean +extern __typeof (xmlXPathCastStringToBoolean) xmlXPathCastStringToBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastStringToBoolean xmlXPathCastStringToBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastStringToNumber +extern __typeof (xmlXPathCastStringToNumber) xmlXPathCastStringToNumber __attribute((alias("xmlXPathCastStringToNumber__internal_alias"))); +#else +#ifndef xmlXPathCastStringToNumber +extern __typeof (xmlXPathCastStringToNumber) xmlXPathCastStringToNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastStringToNumber xmlXPathCastStringToNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastToBoolean +extern __typeof (xmlXPathCastToBoolean) xmlXPathCastToBoolean __attribute((alias("xmlXPathCastToBoolean__internal_alias"))); +#else +#ifndef xmlXPathCastToBoolean +extern __typeof (xmlXPathCastToBoolean) xmlXPathCastToBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastToBoolean xmlXPathCastToBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastToNumber +extern __typeof (xmlXPathCastToNumber) xmlXPathCastToNumber __attribute((alias("xmlXPathCastToNumber__internal_alias"))); +#else +#ifndef xmlXPathCastToNumber +extern __typeof (xmlXPathCastToNumber) xmlXPathCastToNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastToNumber xmlXPathCastToNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastToString +extern __typeof (xmlXPathCastToString) xmlXPathCastToString __attribute((alias("xmlXPathCastToString__internal_alias"))); +#else +#ifndef xmlXPathCastToString +extern __typeof (xmlXPathCastToString) xmlXPathCastToString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastToString xmlXPathCastToString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCeilingFunction +extern __typeof (xmlXPathCeilingFunction) xmlXPathCeilingFunction __attribute((alias("xmlXPathCeilingFunction__internal_alias"))); +#else +#ifndef xmlXPathCeilingFunction +extern __typeof (xmlXPathCeilingFunction) xmlXPathCeilingFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCeilingFunction xmlXPathCeilingFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCmpNodes +extern __typeof (xmlXPathCmpNodes) xmlXPathCmpNodes __attribute((alias("xmlXPathCmpNodes__internal_alias"))); +#else +#ifndef xmlXPathCmpNodes +extern __typeof (xmlXPathCmpNodes) xmlXPathCmpNodes__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCmpNodes xmlXPathCmpNodes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCompareValues +extern __typeof (xmlXPathCompareValues) xmlXPathCompareValues __attribute((alias("xmlXPathCompareValues__internal_alias"))); +#else +#ifndef xmlXPathCompareValues +extern __typeof (xmlXPathCompareValues) xmlXPathCompareValues__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCompareValues xmlXPathCompareValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCompile +extern __typeof (xmlXPathCompile) xmlXPathCompile __attribute((alias("xmlXPathCompile__internal_alias"))); +#else +#ifndef xmlXPathCompile +extern __typeof (xmlXPathCompile) xmlXPathCompile__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCompile xmlXPathCompile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCompiledEval +extern __typeof (xmlXPathCompiledEval) xmlXPathCompiledEval __attribute((alias("xmlXPathCompiledEval__internal_alias"))); +#else +#ifndef xmlXPathCompiledEval +extern __typeof (xmlXPathCompiledEval) xmlXPathCompiledEval__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCompiledEval xmlXPathCompiledEval__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCompiledEvalToBoolean +extern __typeof (xmlXPathCompiledEvalToBoolean) xmlXPathCompiledEvalToBoolean __attribute((alias("xmlXPathCompiledEvalToBoolean__internal_alias"))); +#else +#ifndef xmlXPathCompiledEvalToBoolean +extern __typeof (xmlXPathCompiledEvalToBoolean) xmlXPathCompiledEvalToBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCompiledEvalToBoolean xmlXPathCompiledEvalToBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathConcatFunction +extern __typeof (xmlXPathConcatFunction) xmlXPathConcatFunction __attribute((alias("xmlXPathConcatFunction__internal_alias"))); +#else +#ifndef xmlXPathConcatFunction +extern __typeof (xmlXPathConcatFunction) xmlXPathConcatFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathConcatFunction xmlXPathConcatFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathContainsFunction +extern __typeof (xmlXPathContainsFunction) xmlXPathContainsFunction __attribute((alias("xmlXPathContainsFunction__internal_alias"))); +#else +#ifndef xmlXPathContainsFunction +extern __typeof (xmlXPathContainsFunction) xmlXPathContainsFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathContainsFunction xmlXPathContainsFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathContextSetCache +extern __typeof (xmlXPathContextSetCache) xmlXPathContextSetCache __attribute((alias("xmlXPathContextSetCache__internal_alias"))); +#else +#ifndef xmlXPathContextSetCache +extern __typeof (xmlXPathContextSetCache) xmlXPathContextSetCache__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathContextSetCache xmlXPathContextSetCache__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathConvertBoolean +extern __typeof (xmlXPathConvertBoolean) xmlXPathConvertBoolean __attribute((alias("xmlXPathConvertBoolean__internal_alias"))); +#else +#ifndef xmlXPathConvertBoolean +extern __typeof (xmlXPathConvertBoolean) xmlXPathConvertBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathConvertBoolean xmlXPathConvertBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathConvertNumber +extern __typeof (xmlXPathConvertNumber) xmlXPathConvertNumber __attribute((alias("xmlXPathConvertNumber__internal_alias"))); +#else +#ifndef xmlXPathConvertNumber +extern __typeof (xmlXPathConvertNumber) xmlXPathConvertNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathConvertNumber xmlXPathConvertNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathConvertString +extern __typeof (xmlXPathConvertString) xmlXPathConvertString __attribute((alias("xmlXPathConvertString__internal_alias"))); +#else +#ifndef xmlXPathConvertString +extern __typeof (xmlXPathConvertString) xmlXPathConvertString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathConvertString xmlXPathConvertString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCountFunction +extern __typeof (xmlXPathCountFunction) xmlXPathCountFunction __attribute((alias("xmlXPathCountFunction__internal_alias"))); +#else +#ifndef xmlXPathCountFunction +extern __typeof (xmlXPathCountFunction) xmlXPathCountFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCountFunction xmlXPathCountFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCtxtCompile +extern __typeof (xmlXPathCtxtCompile) xmlXPathCtxtCompile __attribute((alias("xmlXPathCtxtCompile__internal_alias"))); +#else +#ifndef xmlXPathCtxtCompile +extern __typeof (xmlXPathCtxtCompile) xmlXPathCtxtCompile__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCtxtCompile xmlXPathCtxtCompile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathDebugDumpCompExpr +extern __typeof (xmlXPathDebugDumpCompExpr) xmlXPathDebugDumpCompExpr __attribute((alias("xmlXPathDebugDumpCompExpr__internal_alias"))); +#else +#ifndef xmlXPathDebugDumpCompExpr +extern __typeof (xmlXPathDebugDumpCompExpr) xmlXPathDebugDumpCompExpr__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathDebugDumpCompExpr xmlXPathDebugDumpCompExpr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathDebugDumpObject +extern __typeof (xmlXPathDebugDumpObject) xmlXPathDebugDumpObject __attribute((alias("xmlXPathDebugDumpObject__internal_alias"))); +#else +#ifndef xmlXPathDebugDumpObject +extern __typeof (xmlXPathDebugDumpObject) xmlXPathDebugDumpObject__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathDebugDumpObject xmlXPathDebugDumpObject__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathDifference +extern __typeof (xmlXPathDifference) xmlXPathDifference __attribute((alias("xmlXPathDifference__internal_alias"))); +#else +#ifndef xmlXPathDifference +extern __typeof (xmlXPathDifference) xmlXPathDifference__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathDifference xmlXPathDifference__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathDistinct +extern __typeof (xmlXPathDistinct) xmlXPathDistinct __attribute((alias("xmlXPathDistinct__internal_alias"))); +#else +#ifndef xmlXPathDistinct +extern __typeof (xmlXPathDistinct) xmlXPathDistinct__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathDistinct xmlXPathDistinct__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathDistinctSorted +extern __typeof (xmlXPathDistinctSorted) xmlXPathDistinctSorted __attribute((alias("xmlXPathDistinctSorted__internal_alias"))); +#else +#ifndef xmlXPathDistinctSorted +extern __typeof (xmlXPathDistinctSorted) xmlXPathDistinctSorted__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathDistinctSorted xmlXPathDistinctSorted__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathDivValues +extern __typeof (xmlXPathDivValues) xmlXPathDivValues __attribute((alias("xmlXPathDivValues__internal_alias"))); +#else +#ifndef xmlXPathDivValues +extern __typeof (xmlXPathDivValues) xmlXPathDivValues__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathDivValues xmlXPathDivValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathEqualValues +extern __typeof (xmlXPathEqualValues) xmlXPathEqualValues __attribute((alias("xmlXPathEqualValues__internal_alias"))); +#else +#ifndef xmlXPathEqualValues +extern __typeof (xmlXPathEqualValues) xmlXPathEqualValues__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathEqualValues xmlXPathEqualValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathErr +extern __typeof (xmlXPathErr) xmlXPathErr __attribute((alias("xmlXPathErr__internal_alias"))); +#else +#ifndef xmlXPathErr +extern __typeof (xmlXPathErr) xmlXPathErr__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathErr xmlXPathErr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathEval +extern __typeof (xmlXPathEval) xmlXPathEval __attribute((alias("xmlXPathEval__internal_alias"))); +#else +#ifndef xmlXPathEval +extern __typeof (xmlXPathEval) xmlXPathEval__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathEval xmlXPathEval__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathEvalExpr +extern __typeof (xmlXPathEvalExpr) xmlXPathEvalExpr __attribute((alias("xmlXPathEvalExpr__internal_alias"))); +#else +#ifndef xmlXPathEvalExpr +extern __typeof (xmlXPathEvalExpr) xmlXPathEvalExpr__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathEvalExpr xmlXPathEvalExpr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathEvalExpression +extern __typeof (xmlXPathEvalExpression) xmlXPathEvalExpression __attribute((alias("xmlXPathEvalExpression__internal_alias"))); +#else +#ifndef xmlXPathEvalExpression +extern __typeof (xmlXPathEvalExpression) xmlXPathEvalExpression__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathEvalExpression xmlXPathEvalExpression__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathEvalPredicate +extern __typeof (xmlXPathEvalPredicate) xmlXPathEvalPredicate __attribute((alias("xmlXPathEvalPredicate__internal_alias"))); +#else +#ifndef xmlXPathEvalPredicate +extern __typeof (xmlXPathEvalPredicate) xmlXPathEvalPredicate__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathEvalPredicate xmlXPathEvalPredicate__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathEvaluatePredicateResult +extern __typeof (xmlXPathEvaluatePredicateResult) xmlXPathEvaluatePredicateResult __attribute((alias("xmlXPathEvaluatePredicateResult__internal_alias"))); +#else +#ifndef xmlXPathEvaluatePredicateResult +extern __typeof (xmlXPathEvaluatePredicateResult) xmlXPathEvaluatePredicateResult__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathEvaluatePredicateResult xmlXPathEvaluatePredicateResult__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFalseFunction +extern __typeof (xmlXPathFalseFunction) xmlXPathFalseFunction __attribute((alias("xmlXPathFalseFunction__internal_alias"))); +#else +#ifndef xmlXPathFalseFunction +extern __typeof (xmlXPathFalseFunction) xmlXPathFalseFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFalseFunction xmlXPathFalseFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFloorFunction +extern __typeof (xmlXPathFloorFunction) xmlXPathFloorFunction __attribute((alias("xmlXPathFloorFunction__internal_alias"))); +#else +#ifndef xmlXPathFloorFunction +extern __typeof (xmlXPathFloorFunction) xmlXPathFloorFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFloorFunction xmlXPathFloorFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFreeCompExpr +extern __typeof (xmlXPathFreeCompExpr) xmlXPathFreeCompExpr __attribute((alias("xmlXPathFreeCompExpr__internal_alias"))); +#else +#ifndef xmlXPathFreeCompExpr +extern __typeof (xmlXPathFreeCompExpr) xmlXPathFreeCompExpr__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFreeCompExpr xmlXPathFreeCompExpr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFreeContext +extern __typeof (xmlXPathFreeContext) xmlXPathFreeContext __attribute((alias("xmlXPathFreeContext__internal_alias"))); +#else +#ifndef xmlXPathFreeContext +extern __typeof (xmlXPathFreeContext) xmlXPathFreeContext__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFreeContext xmlXPathFreeContext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFreeNodeSet +extern __typeof (xmlXPathFreeNodeSet) xmlXPathFreeNodeSet __attribute((alias("xmlXPathFreeNodeSet__internal_alias"))); +#else +#ifndef xmlXPathFreeNodeSet +extern __typeof (xmlXPathFreeNodeSet) xmlXPathFreeNodeSet__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFreeNodeSet xmlXPathFreeNodeSet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFreeNodeSetList +extern __typeof (xmlXPathFreeNodeSetList) xmlXPathFreeNodeSetList __attribute((alias("xmlXPathFreeNodeSetList__internal_alias"))); +#else +#ifndef xmlXPathFreeNodeSetList +extern __typeof (xmlXPathFreeNodeSetList) xmlXPathFreeNodeSetList__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFreeNodeSetList xmlXPathFreeNodeSetList__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFreeObject +extern __typeof (xmlXPathFreeObject) xmlXPathFreeObject __attribute((alias("xmlXPathFreeObject__internal_alias"))); +#else +#ifndef xmlXPathFreeObject +extern __typeof (xmlXPathFreeObject) xmlXPathFreeObject__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFreeObject xmlXPathFreeObject__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFreeParserContext +extern __typeof (xmlXPathFreeParserContext) xmlXPathFreeParserContext __attribute((alias("xmlXPathFreeParserContext__internal_alias"))); +#else +#ifndef xmlXPathFreeParserContext +extern __typeof (xmlXPathFreeParserContext) xmlXPathFreeParserContext__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFreeParserContext xmlXPathFreeParserContext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFunctionLookup +extern __typeof (xmlXPathFunctionLookup) xmlXPathFunctionLookup __attribute((alias("xmlXPathFunctionLookup__internal_alias"))); +#else +#ifndef xmlXPathFunctionLookup +extern __typeof (xmlXPathFunctionLookup) xmlXPathFunctionLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFunctionLookup xmlXPathFunctionLookup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFunctionLookupNS +extern __typeof (xmlXPathFunctionLookupNS) xmlXPathFunctionLookupNS __attribute((alias("xmlXPathFunctionLookupNS__internal_alias"))); +#else +#ifndef xmlXPathFunctionLookupNS +extern __typeof (xmlXPathFunctionLookupNS) xmlXPathFunctionLookupNS__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFunctionLookupNS xmlXPathFunctionLookupNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathHasSameNodes +extern __typeof (xmlXPathHasSameNodes) xmlXPathHasSameNodes __attribute((alias("xmlXPathHasSameNodes__internal_alias"))); +#else +#ifndef xmlXPathHasSameNodes +extern __typeof (xmlXPathHasSameNodes) xmlXPathHasSameNodes__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathHasSameNodes xmlXPathHasSameNodes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathIdFunction +extern __typeof (xmlXPathIdFunction) xmlXPathIdFunction __attribute((alias("xmlXPathIdFunction__internal_alias"))); +#else +#ifndef xmlXPathIdFunction +extern __typeof (xmlXPathIdFunction) xmlXPathIdFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathIdFunction xmlXPathIdFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathInit +extern __typeof (xmlXPathInit) xmlXPathInit __attribute((alias("xmlXPathInit__internal_alias"))); +#else +#ifndef xmlXPathInit +extern __typeof (xmlXPathInit) xmlXPathInit__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathInit xmlXPathInit__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathIntersection +extern __typeof (xmlXPathIntersection) xmlXPathIntersection __attribute((alias("xmlXPathIntersection__internal_alias"))); +#else +#ifndef xmlXPathIntersection +extern __typeof (xmlXPathIntersection) xmlXPathIntersection__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathIntersection xmlXPathIntersection__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathIsInf +extern __typeof (xmlXPathIsInf) xmlXPathIsInf __attribute((alias("xmlXPathIsInf__internal_alias"))); +#else +#ifndef xmlXPathIsInf +extern __typeof (xmlXPathIsInf) xmlXPathIsInf__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathIsInf xmlXPathIsInf__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathIsNaN +extern __typeof (xmlXPathIsNaN) xmlXPathIsNaN __attribute((alias("xmlXPathIsNaN__internal_alias"))); +#else +#ifndef xmlXPathIsNaN +extern __typeof (xmlXPathIsNaN) xmlXPathIsNaN__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathIsNaN xmlXPathIsNaN__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathIsNodeType +extern __typeof (xmlXPathIsNodeType) xmlXPathIsNodeType __attribute((alias("xmlXPathIsNodeType__internal_alias"))); +#else +#ifndef xmlXPathIsNodeType +extern __typeof (xmlXPathIsNodeType) xmlXPathIsNodeType__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathIsNodeType xmlXPathIsNodeType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathLangFunction +extern __typeof (xmlXPathLangFunction) xmlXPathLangFunction __attribute((alias("xmlXPathLangFunction__internal_alias"))); +#else +#ifndef xmlXPathLangFunction +extern __typeof (xmlXPathLangFunction) xmlXPathLangFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathLangFunction xmlXPathLangFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathLastFunction +extern __typeof (xmlXPathLastFunction) xmlXPathLastFunction __attribute((alias("xmlXPathLastFunction__internal_alias"))); +#else +#ifndef xmlXPathLastFunction +extern __typeof (xmlXPathLastFunction) xmlXPathLastFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathLastFunction xmlXPathLastFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathLeading +extern __typeof (xmlXPathLeading) xmlXPathLeading __attribute((alias("xmlXPathLeading__internal_alias"))); +#else +#ifndef xmlXPathLeading +extern __typeof (xmlXPathLeading) xmlXPathLeading__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathLeading xmlXPathLeading__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathLeadingSorted +extern __typeof (xmlXPathLeadingSorted) xmlXPathLeadingSorted __attribute((alias("xmlXPathLeadingSorted__internal_alias"))); +#else +#ifndef xmlXPathLeadingSorted +extern __typeof (xmlXPathLeadingSorted) xmlXPathLeadingSorted__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathLeadingSorted xmlXPathLeadingSorted__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathLocalNameFunction +extern __typeof (xmlXPathLocalNameFunction) xmlXPathLocalNameFunction __attribute((alias("xmlXPathLocalNameFunction__internal_alias"))); +#else +#ifndef xmlXPathLocalNameFunction +extern __typeof (xmlXPathLocalNameFunction) xmlXPathLocalNameFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathLocalNameFunction xmlXPathLocalNameFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathModValues +extern __typeof (xmlXPathModValues) xmlXPathModValues __attribute((alias("xmlXPathModValues__internal_alias"))); +#else +#ifndef xmlXPathModValues +extern __typeof (xmlXPathModValues) xmlXPathModValues__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathModValues xmlXPathModValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathMultValues +extern __typeof (xmlXPathMultValues) xmlXPathMultValues __attribute((alias("xmlXPathMultValues__internal_alias"))); +#else +#ifndef xmlXPathMultValues +extern __typeof (xmlXPathMultValues) xmlXPathMultValues__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathMultValues xmlXPathMultValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNamespaceURIFunction +extern __typeof (xmlXPathNamespaceURIFunction) xmlXPathNamespaceURIFunction __attribute((alias("xmlXPathNamespaceURIFunction__internal_alias"))); +#else +#ifndef xmlXPathNamespaceURIFunction +extern __typeof (xmlXPathNamespaceURIFunction) xmlXPathNamespaceURIFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNamespaceURIFunction xmlXPathNamespaceURIFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewBoolean +extern __typeof (xmlXPathNewBoolean) xmlXPathNewBoolean __attribute((alias("xmlXPathNewBoolean__internal_alias"))); +#else +#ifndef xmlXPathNewBoolean +extern __typeof (xmlXPathNewBoolean) xmlXPathNewBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewBoolean xmlXPathNewBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewCString +extern __typeof (xmlXPathNewCString) xmlXPathNewCString __attribute((alias("xmlXPathNewCString__internal_alias"))); +#else +#ifndef xmlXPathNewCString +extern __typeof (xmlXPathNewCString) xmlXPathNewCString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewCString xmlXPathNewCString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewContext +extern __typeof (xmlXPathNewContext) xmlXPathNewContext __attribute((alias("xmlXPathNewContext__internal_alias"))); +#else +#ifndef xmlXPathNewContext +extern __typeof (xmlXPathNewContext) xmlXPathNewContext__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewContext xmlXPathNewContext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewFloat +extern __typeof (xmlXPathNewFloat) xmlXPathNewFloat __attribute((alias("xmlXPathNewFloat__internal_alias"))); +#else +#ifndef xmlXPathNewFloat +extern __typeof (xmlXPathNewFloat) xmlXPathNewFloat__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewFloat xmlXPathNewFloat__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewNodeSet +extern __typeof (xmlXPathNewNodeSet) xmlXPathNewNodeSet __attribute((alias("xmlXPathNewNodeSet__internal_alias"))); +#else +#ifndef xmlXPathNewNodeSet +extern __typeof (xmlXPathNewNodeSet) xmlXPathNewNodeSet__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewNodeSet xmlXPathNewNodeSet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewNodeSetList +extern __typeof (xmlXPathNewNodeSetList) xmlXPathNewNodeSetList __attribute((alias("xmlXPathNewNodeSetList__internal_alias"))); +#else +#ifndef xmlXPathNewNodeSetList +extern __typeof (xmlXPathNewNodeSetList) xmlXPathNewNodeSetList__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewNodeSetList xmlXPathNewNodeSetList__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewParserContext +extern __typeof (xmlXPathNewParserContext) xmlXPathNewParserContext __attribute((alias("xmlXPathNewParserContext__internal_alias"))); +#else +#ifndef xmlXPathNewParserContext +extern __typeof (xmlXPathNewParserContext) xmlXPathNewParserContext__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewParserContext xmlXPathNewParserContext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewString +extern __typeof (xmlXPathNewString) xmlXPathNewString __attribute((alias("xmlXPathNewString__internal_alias"))); +#else +#ifndef xmlXPathNewString +extern __typeof (xmlXPathNewString) xmlXPathNewString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewString xmlXPathNewString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewValueTree +extern __typeof (xmlXPathNewValueTree) xmlXPathNewValueTree __attribute((alias("xmlXPathNewValueTree__internal_alias"))); +#else +#ifndef xmlXPathNewValueTree +extern __typeof (xmlXPathNewValueTree) xmlXPathNewValueTree__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewValueTree xmlXPathNewValueTree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextAncestor +extern __typeof (xmlXPathNextAncestor) xmlXPathNextAncestor __attribute((alias("xmlXPathNextAncestor__internal_alias"))); +#else +#ifndef xmlXPathNextAncestor +extern __typeof (xmlXPathNextAncestor) xmlXPathNextAncestor__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextAncestor xmlXPathNextAncestor__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextAncestorOrSelf +extern __typeof (xmlXPathNextAncestorOrSelf) xmlXPathNextAncestorOrSelf __attribute((alias("xmlXPathNextAncestorOrSelf__internal_alias"))); +#else +#ifndef xmlXPathNextAncestorOrSelf +extern __typeof (xmlXPathNextAncestorOrSelf) xmlXPathNextAncestorOrSelf__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextAncestorOrSelf xmlXPathNextAncestorOrSelf__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextAttribute +extern __typeof (xmlXPathNextAttribute) xmlXPathNextAttribute __attribute((alias("xmlXPathNextAttribute__internal_alias"))); +#else +#ifndef xmlXPathNextAttribute +extern __typeof (xmlXPathNextAttribute) xmlXPathNextAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextAttribute xmlXPathNextAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextChild +extern __typeof (xmlXPathNextChild) xmlXPathNextChild __attribute((alias("xmlXPathNextChild__internal_alias"))); +#else +#ifndef xmlXPathNextChild +extern __typeof (xmlXPathNextChild) xmlXPathNextChild__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextChild xmlXPathNextChild__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextDescendant +extern __typeof (xmlXPathNextDescendant) xmlXPathNextDescendant __attribute((alias("xmlXPathNextDescendant__internal_alias"))); +#else +#ifndef xmlXPathNextDescendant +extern __typeof (xmlXPathNextDescendant) xmlXPathNextDescendant__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextDescendant xmlXPathNextDescendant__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextDescendantOrSelf +extern __typeof (xmlXPathNextDescendantOrSelf) xmlXPathNextDescendantOrSelf __attribute((alias("xmlXPathNextDescendantOrSelf__internal_alias"))); +#else +#ifndef xmlXPathNextDescendantOrSelf +extern __typeof (xmlXPathNextDescendantOrSelf) xmlXPathNextDescendantOrSelf__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextDescendantOrSelf xmlXPathNextDescendantOrSelf__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextFollowing +extern __typeof (xmlXPathNextFollowing) xmlXPathNextFollowing __attribute((alias("xmlXPathNextFollowing__internal_alias"))); +#else +#ifndef xmlXPathNextFollowing +extern __typeof (xmlXPathNextFollowing) xmlXPathNextFollowing__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextFollowing xmlXPathNextFollowing__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextFollowingSibling +extern __typeof (xmlXPathNextFollowingSibling) xmlXPathNextFollowingSibling __attribute((alias("xmlXPathNextFollowingSibling__internal_alias"))); +#else +#ifndef xmlXPathNextFollowingSibling +extern __typeof (xmlXPathNextFollowingSibling) xmlXPathNextFollowingSibling__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextFollowingSibling xmlXPathNextFollowingSibling__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextNamespace +extern __typeof (xmlXPathNextNamespace) xmlXPathNextNamespace __attribute((alias("xmlXPathNextNamespace__internal_alias"))); +#else +#ifndef xmlXPathNextNamespace +extern __typeof (xmlXPathNextNamespace) xmlXPathNextNamespace__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextNamespace xmlXPathNextNamespace__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextParent +extern __typeof (xmlXPathNextParent) xmlXPathNextParent __attribute((alias("xmlXPathNextParent__internal_alias"))); +#else +#ifndef xmlXPathNextParent +extern __typeof (xmlXPathNextParent) xmlXPathNextParent__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextParent xmlXPathNextParent__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextPreceding +extern __typeof (xmlXPathNextPreceding) xmlXPathNextPreceding __attribute((alias("xmlXPathNextPreceding__internal_alias"))); +#else +#ifndef xmlXPathNextPreceding +extern __typeof (xmlXPathNextPreceding) xmlXPathNextPreceding__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextPreceding xmlXPathNextPreceding__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextPrecedingSibling +extern __typeof (xmlXPathNextPrecedingSibling) xmlXPathNextPrecedingSibling __attribute((alias("xmlXPathNextPrecedingSibling__internal_alias"))); +#else +#ifndef xmlXPathNextPrecedingSibling +extern __typeof (xmlXPathNextPrecedingSibling) xmlXPathNextPrecedingSibling__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextPrecedingSibling xmlXPathNextPrecedingSibling__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextSelf +extern __typeof (xmlXPathNextSelf) xmlXPathNextSelf __attribute((alias("xmlXPathNextSelf__internal_alias"))); +#else +#ifndef xmlXPathNextSelf +extern __typeof (xmlXPathNextSelf) xmlXPathNextSelf__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextSelf xmlXPathNextSelf__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeEval +extern __typeof (xmlXPathNodeEval) xmlXPathNodeEval __attribute((alias("xmlXPathNodeEval__internal_alias"))); +#else +#ifndef xmlXPathNodeEval +extern __typeof (xmlXPathNodeEval) xmlXPathNodeEval__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeEval xmlXPathNodeEval__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeLeading +extern __typeof (xmlXPathNodeLeading) xmlXPathNodeLeading __attribute((alias("xmlXPathNodeLeading__internal_alias"))); +#else +#ifndef xmlXPathNodeLeading +extern __typeof (xmlXPathNodeLeading) xmlXPathNodeLeading__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeLeading xmlXPathNodeLeading__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeLeadingSorted +extern __typeof (xmlXPathNodeLeadingSorted) xmlXPathNodeLeadingSorted __attribute((alias("xmlXPathNodeLeadingSorted__internal_alias"))); +#else +#ifndef xmlXPathNodeLeadingSorted +extern __typeof (xmlXPathNodeLeadingSorted) xmlXPathNodeLeadingSorted__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeLeadingSorted xmlXPathNodeLeadingSorted__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetAdd +extern __typeof (xmlXPathNodeSetAdd) xmlXPathNodeSetAdd __attribute((alias("xmlXPathNodeSetAdd__internal_alias"))); +#else +#ifndef xmlXPathNodeSetAdd +extern __typeof (xmlXPathNodeSetAdd) xmlXPathNodeSetAdd__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetAdd xmlXPathNodeSetAdd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetAddNs +extern __typeof (xmlXPathNodeSetAddNs) xmlXPathNodeSetAddNs __attribute((alias("xmlXPathNodeSetAddNs__internal_alias"))); +#else +#ifndef xmlXPathNodeSetAddNs +extern __typeof (xmlXPathNodeSetAddNs) xmlXPathNodeSetAddNs__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetAddNs xmlXPathNodeSetAddNs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetAddUnique +extern __typeof (xmlXPathNodeSetAddUnique) xmlXPathNodeSetAddUnique __attribute((alias("xmlXPathNodeSetAddUnique__internal_alias"))); +#else +#ifndef xmlXPathNodeSetAddUnique +extern __typeof (xmlXPathNodeSetAddUnique) xmlXPathNodeSetAddUnique__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetAddUnique xmlXPathNodeSetAddUnique__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetContains +extern __typeof (xmlXPathNodeSetContains) xmlXPathNodeSetContains __attribute((alias("xmlXPathNodeSetContains__internal_alias"))); +#else +#ifndef xmlXPathNodeSetContains +extern __typeof (xmlXPathNodeSetContains) xmlXPathNodeSetContains__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetContains xmlXPathNodeSetContains__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetCreate +extern __typeof (xmlXPathNodeSetCreate) xmlXPathNodeSetCreate __attribute((alias("xmlXPathNodeSetCreate__internal_alias"))); +#else +#ifndef xmlXPathNodeSetCreate +extern __typeof (xmlXPathNodeSetCreate) xmlXPathNodeSetCreate__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetCreate xmlXPathNodeSetCreate__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetDel +extern __typeof (xmlXPathNodeSetDel) xmlXPathNodeSetDel __attribute((alias("xmlXPathNodeSetDel__internal_alias"))); +#else +#ifndef xmlXPathNodeSetDel +extern __typeof (xmlXPathNodeSetDel) xmlXPathNodeSetDel__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetDel xmlXPathNodeSetDel__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetFreeNs +extern __typeof (xmlXPathNodeSetFreeNs) xmlXPathNodeSetFreeNs __attribute((alias("xmlXPathNodeSetFreeNs__internal_alias"))); +#else +#ifndef xmlXPathNodeSetFreeNs +extern __typeof (xmlXPathNodeSetFreeNs) xmlXPathNodeSetFreeNs__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetFreeNs xmlXPathNodeSetFreeNs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetMerge +extern __typeof (xmlXPathNodeSetMerge) xmlXPathNodeSetMerge __attribute((alias("xmlXPathNodeSetMerge__internal_alias"))); +#else +#ifndef xmlXPathNodeSetMerge +extern __typeof (xmlXPathNodeSetMerge) xmlXPathNodeSetMerge__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetMerge xmlXPathNodeSetMerge__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetRemove +extern __typeof (xmlXPathNodeSetRemove) xmlXPathNodeSetRemove __attribute((alias("xmlXPathNodeSetRemove__internal_alias"))); +#else +#ifndef xmlXPathNodeSetRemove +extern __typeof (xmlXPathNodeSetRemove) xmlXPathNodeSetRemove__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetRemove xmlXPathNodeSetRemove__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetSort +extern __typeof (xmlXPathNodeSetSort) xmlXPathNodeSetSort __attribute((alias("xmlXPathNodeSetSort__internal_alias"))); +#else +#ifndef xmlXPathNodeSetSort +extern __typeof (xmlXPathNodeSetSort) xmlXPathNodeSetSort__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetSort xmlXPathNodeSetSort__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeTrailing +extern __typeof (xmlXPathNodeTrailing) xmlXPathNodeTrailing __attribute((alias("xmlXPathNodeTrailing__internal_alias"))); +#else +#ifndef xmlXPathNodeTrailing +extern __typeof (xmlXPathNodeTrailing) xmlXPathNodeTrailing__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeTrailing xmlXPathNodeTrailing__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeTrailingSorted +extern __typeof (xmlXPathNodeTrailingSorted) xmlXPathNodeTrailingSorted __attribute((alias("xmlXPathNodeTrailingSorted__internal_alias"))); +#else +#ifndef xmlXPathNodeTrailingSorted +extern __typeof (xmlXPathNodeTrailingSorted) xmlXPathNodeTrailingSorted__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeTrailingSorted xmlXPathNodeTrailingSorted__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNormalizeFunction +extern __typeof (xmlXPathNormalizeFunction) xmlXPathNormalizeFunction __attribute((alias("xmlXPathNormalizeFunction__internal_alias"))); +#else +#ifndef xmlXPathNormalizeFunction +extern __typeof (xmlXPathNormalizeFunction) xmlXPathNormalizeFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNormalizeFunction xmlXPathNormalizeFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNotEqualValues +extern __typeof (xmlXPathNotEqualValues) xmlXPathNotEqualValues __attribute((alias("xmlXPathNotEqualValues__internal_alias"))); +#else +#ifndef xmlXPathNotEqualValues +extern __typeof (xmlXPathNotEqualValues) xmlXPathNotEqualValues__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNotEqualValues xmlXPathNotEqualValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNotFunction +extern __typeof (xmlXPathNotFunction) xmlXPathNotFunction __attribute((alias("xmlXPathNotFunction__internal_alias"))); +#else +#ifndef xmlXPathNotFunction +extern __typeof (xmlXPathNotFunction) xmlXPathNotFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNotFunction xmlXPathNotFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNsLookup +extern __typeof (xmlXPathNsLookup) xmlXPathNsLookup __attribute((alias("xmlXPathNsLookup__internal_alias"))); +#else +#ifndef xmlXPathNsLookup +extern __typeof (xmlXPathNsLookup) xmlXPathNsLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNsLookup xmlXPathNsLookup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNumberFunction +extern __typeof (xmlXPathNumberFunction) xmlXPathNumberFunction __attribute((alias("xmlXPathNumberFunction__internal_alias"))); +#else +#ifndef xmlXPathNumberFunction +extern __typeof (xmlXPathNumberFunction) xmlXPathNumberFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNumberFunction xmlXPathNumberFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathObjectCopy +extern __typeof (xmlXPathObjectCopy) xmlXPathObjectCopy __attribute((alias("xmlXPathObjectCopy__internal_alias"))); +#else +#ifndef xmlXPathObjectCopy +extern __typeof (xmlXPathObjectCopy) xmlXPathObjectCopy__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathObjectCopy xmlXPathObjectCopy__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathOrderDocElems +extern __typeof (xmlXPathOrderDocElems) xmlXPathOrderDocElems __attribute((alias("xmlXPathOrderDocElems__internal_alias"))); +#else +#ifndef xmlXPathOrderDocElems +extern __typeof (xmlXPathOrderDocElems) xmlXPathOrderDocElems__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathOrderDocElems xmlXPathOrderDocElems__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathParseNCName +extern __typeof (xmlXPathParseNCName) xmlXPathParseNCName __attribute((alias("xmlXPathParseNCName__internal_alias"))); +#else +#ifndef xmlXPathParseNCName +extern __typeof (xmlXPathParseNCName) xmlXPathParseNCName__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathParseNCName xmlXPathParseNCName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathParseName +extern __typeof (xmlXPathParseName) xmlXPathParseName __attribute((alias("xmlXPathParseName__internal_alias"))); +#else +#ifndef xmlXPathParseName +extern __typeof (xmlXPathParseName) xmlXPathParseName__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathParseName xmlXPathParseName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathPopBoolean +extern __typeof (xmlXPathPopBoolean) xmlXPathPopBoolean __attribute((alias("xmlXPathPopBoolean__internal_alias"))); +#else +#ifndef xmlXPathPopBoolean +extern __typeof (xmlXPathPopBoolean) xmlXPathPopBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathPopBoolean xmlXPathPopBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathPopExternal +extern __typeof (xmlXPathPopExternal) xmlXPathPopExternal __attribute((alias("xmlXPathPopExternal__internal_alias"))); +#else +#ifndef xmlXPathPopExternal +extern __typeof (xmlXPathPopExternal) xmlXPathPopExternal__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathPopExternal xmlXPathPopExternal__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathPopNodeSet +extern __typeof (xmlXPathPopNodeSet) xmlXPathPopNodeSet __attribute((alias("xmlXPathPopNodeSet__internal_alias"))); +#else +#ifndef xmlXPathPopNodeSet +extern __typeof (xmlXPathPopNodeSet) xmlXPathPopNodeSet__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathPopNodeSet xmlXPathPopNodeSet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathPopNumber +extern __typeof (xmlXPathPopNumber) xmlXPathPopNumber __attribute((alias("xmlXPathPopNumber__internal_alias"))); +#else +#ifndef xmlXPathPopNumber +extern __typeof (xmlXPathPopNumber) xmlXPathPopNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathPopNumber xmlXPathPopNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathPopString +extern __typeof (xmlXPathPopString) xmlXPathPopString __attribute((alias("xmlXPathPopString__internal_alias"))); +#else +#ifndef xmlXPathPopString +extern __typeof (xmlXPathPopString) xmlXPathPopString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathPopString xmlXPathPopString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathPositionFunction +extern __typeof (xmlXPathPositionFunction) xmlXPathPositionFunction __attribute((alias("xmlXPathPositionFunction__internal_alias"))); +#else +#ifndef xmlXPathPositionFunction +extern __typeof (xmlXPathPositionFunction) xmlXPathPositionFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathPositionFunction xmlXPathPositionFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisterAllFunctions +extern __typeof (xmlXPathRegisterAllFunctions) xmlXPathRegisterAllFunctions __attribute((alias("xmlXPathRegisterAllFunctions__internal_alias"))); +#else +#ifndef xmlXPathRegisterAllFunctions +extern __typeof (xmlXPathRegisterAllFunctions) xmlXPathRegisterAllFunctions__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisterAllFunctions xmlXPathRegisterAllFunctions__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisterFunc +extern __typeof (xmlXPathRegisterFunc) xmlXPathRegisterFunc __attribute((alias("xmlXPathRegisterFunc__internal_alias"))); +#else +#ifndef xmlXPathRegisterFunc +extern __typeof (xmlXPathRegisterFunc) xmlXPathRegisterFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisterFunc xmlXPathRegisterFunc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisterFuncLookup +extern __typeof (xmlXPathRegisterFuncLookup) xmlXPathRegisterFuncLookup __attribute((alias("xmlXPathRegisterFuncLookup__internal_alias"))); +#else +#ifndef xmlXPathRegisterFuncLookup +extern __typeof (xmlXPathRegisterFuncLookup) xmlXPathRegisterFuncLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisterFuncLookup xmlXPathRegisterFuncLookup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisterFuncNS +extern __typeof (xmlXPathRegisterFuncNS) xmlXPathRegisterFuncNS __attribute((alias("xmlXPathRegisterFuncNS__internal_alias"))); +#else +#ifndef xmlXPathRegisterFuncNS +extern __typeof (xmlXPathRegisterFuncNS) xmlXPathRegisterFuncNS__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisterFuncNS xmlXPathRegisterFuncNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisterNs +extern __typeof (xmlXPathRegisterNs) xmlXPathRegisterNs __attribute((alias("xmlXPathRegisterNs__internal_alias"))); +#else +#ifndef xmlXPathRegisterNs +extern __typeof (xmlXPathRegisterNs) xmlXPathRegisterNs__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisterNs xmlXPathRegisterNs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisterVariable +extern __typeof (xmlXPathRegisterVariable) xmlXPathRegisterVariable __attribute((alias("xmlXPathRegisterVariable__internal_alias"))); +#else +#ifndef xmlXPathRegisterVariable +extern __typeof (xmlXPathRegisterVariable) xmlXPathRegisterVariable__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisterVariable xmlXPathRegisterVariable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisterVariableLookup +extern __typeof (xmlXPathRegisterVariableLookup) xmlXPathRegisterVariableLookup __attribute((alias("xmlXPathRegisterVariableLookup__internal_alias"))); +#else +#ifndef xmlXPathRegisterVariableLookup +extern __typeof (xmlXPathRegisterVariableLookup) xmlXPathRegisterVariableLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisterVariableLookup xmlXPathRegisterVariableLookup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisterVariableNS +extern __typeof (xmlXPathRegisterVariableNS) xmlXPathRegisterVariableNS __attribute((alias("xmlXPathRegisterVariableNS__internal_alias"))); +#else +#ifndef xmlXPathRegisterVariableNS +extern __typeof (xmlXPathRegisterVariableNS) xmlXPathRegisterVariableNS__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisterVariableNS xmlXPathRegisterVariableNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisteredFuncsCleanup +extern __typeof (xmlXPathRegisteredFuncsCleanup) xmlXPathRegisteredFuncsCleanup __attribute((alias("xmlXPathRegisteredFuncsCleanup__internal_alias"))); +#else +#ifndef xmlXPathRegisteredFuncsCleanup +extern __typeof (xmlXPathRegisteredFuncsCleanup) xmlXPathRegisteredFuncsCleanup__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisteredFuncsCleanup xmlXPathRegisteredFuncsCleanup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisteredNsCleanup +extern __typeof (xmlXPathRegisteredNsCleanup) xmlXPathRegisteredNsCleanup __attribute((alias("xmlXPathRegisteredNsCleanup__internal_alias"))); +#else +#ifndef xmlXPathRegisteredNsCleanup +extern __typeof (xmlXPathRegisteredNsCleanup) xmlXPathRegisteredNsCleanup__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisteredNsCleanup xmlXPathRegisteredNsCleanup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisteredVariablesCleanup +extern __typeof (xmlXPathRegisteredVariablesCleanup) xmlXPathRegisteredVariablesCleanup __attribute((alias("xmlXPathRegisteredVariablesCleanup__internal_alias"))); +#else +#ifndef xmlXPathRegisteredVariablesCleanup +extern __typeof (xmlXPathRegisteredVariablesCleanup) xmlXPathRegisteredVariablesCleanup__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisteredVariablesCleanup xmlXPathRegisteredVariablesCleanup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRoot +extern __typeof (xmlXPathRoot) xmlXPathRoot __attribute((alias("xmlXPathRoot__internal_alias"))); +#else +#ifndef xmlXPathRoot +extern __typeof (xmlXPathRoot) xmlXPathRoot__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRoot xmlXPathRoot__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRoundFunction +extern __typeof (xmlXPathRoundFunction) xmlXPathRoundFunction __attribute((alias("xmlXPathRoundFunction__internal_alias"))); +#else +#ifndef xmlXPathRoundFunction +extern __typeof (xmlXPathRoundFunction) xmlXPathRoundFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRoundFunction xmlXPathRoundFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathSetContextNode +extern __typeof (xmlXPathSetContextNode) xmlXPathSetContextNode __attribute((alias("xmlXPathSetContextNode__internal_alias"))); +#else +#ifndef xmlXPathSetContextNode +extern __typeof (xmlXPathSetContextNode) xmlXPathSetContextNode__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathSetContextNode xmlXPathSetContextNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathStartsWithFunction +extern __typeof (xmlXPathStartsWithFunction) xmlXPathStartsWithFunction __attribute((alias("xmlXPathStartsWithFunction__internal_alias"))); +#else +#ifndef xmlXPathStartsWithFunction +extern __typeof (xmlXPathStartsWithFunction) xmlXPathStartsWithFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathStartsWithFunction xmlXPathStartsWithFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathStringEvalNumber +extern __typeof (xmlXPathStringEvalNumber) xmlXPathStringEvalNumber __attribute((alias("xmlXPathStringEvalNumber__internal_alias"))); +#else +#ifndef xmlXPathStringEvalNumber +extern __typeof (xmlXPathStringEvalNumber) xmlXPathStringEvalNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathStringEvalNumber xmlXPathStringEvalNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathStringFunction +extern __typeof (xmlXPathStringFunction) xmlXPathStringFunction __attribute((alias("xmlXPathStringFunction__internal_alias"))); +#else +#ifndef xmlXPathStringFunction +extern __typeof (xmlXPathStringFunction) xmlXPathStringFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathStringFunction xmlXPathStringFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathStringLengthFunction +extern __typeof (xmlXPathStringLengthFunction) xmlXPathStringLengthFunction __attribute((alias("xmlXPathStringLengthFunction__internal_alias"))); +#else +#ifndef xmlXPathStringLengthFunction +extern __typeof (xmlXPathStringLengthFunction) xmlXPathStringLengthFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathStringLengthFunction xmlXPathStringLengthFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathSubValues +extern __typeof (xmlXPathSubValues) xmlXPathSubValues __attribute((alias("xmlXPathSubValues__internal_alias"))); +#else +#ifndef xmlXPathSubValues +extern __typeof (xmlXPathSubValues) xmlXPathSubValues__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathSubValues xmlXPathSubValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathSubstringAfterFunction +extern __typeof (xmlXPathSubstringAfterFunction) xmlXPathSubstringAfterFunction __attribute((alias("xmlXPathSubstringAfterFunction__internal_alias"))); +#else +#ifndef xmlXPathSubstringAfterFunction +extern __typeof (xmlXPathSubstringAfterFunction) xmlXPathSubstringAfterFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathSubstringAfterFunction xmlXPathSubstringAfterFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathSubstringBeforeFunction +extern __typeof (xmlXPathSubstringBeforeFunction) xmlXPathSubstringBeforeFunction __attribute((alias("xmlXPathSubstringBeforeFunction__internal_alias"))); +#else +#ifndef xmlXPathSubstringBeforeFunction +extern __typeof (xmlXPathSubstringBeforeFunction) xmlXPathSubstringBeforeFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathSubstringBeforeFunction xmlXPathSubstringBeforeFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathSubstringFunction +extern __typeof (xmlXPathSubstringFunction) xmlXPathSubstringFunction __attribute((alias("xmlXPathSubstringFunction__internal_alias"))); +#else +#ifndef xmlXPathSubstringFunction +extern __typeof (xmlXPathSubstringFunction) xmlXPathSubstringFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathSubstringFunction xmlXPathSubstringFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathSumFunction +extern __typeof (xmlXPathSumFunction) xmlXPathSumFunction __attribute((alias("xmlXPathSumFunction__internal_alias"))); +#else +#ifndef xmlXPathSumFunction +extern __typeof (xmlXPathSumFunction) xmlXPathSumFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathSumFunction xmlXPathSumFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathTrailing +extern __typeof (xmlXPathTrailing) xmlXPathTrailing __attribute((alias("xmlXPathTrailing__internal_alias"))); +#else +#ifndef xmlXPathTrailing +extern __typeof (xmlXPathTrailing) xmlXPathTrailing__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathTrailing xmlXPathTrailing__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathTrailingSorted +extern __typeof (xmlXPathTrailingSorted) xmlXPathTrailingSorted __attribute((alias("xmlXPathTrailingSorted__internal_alias"))); +#else +#ifndef xmlXPathTrailingSorted +extern __typeof (xmlXPathTrailingSorted) xmlXPathTrailingSorted__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathTrailingSorted xmlXPathTrailingSorted__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathTranslateFunction +extern __typeof (xmlXPathTranslateFunction) xmlXPathTranslateFunction __attribute((alias("xmlXPathTranslateFunction__internal_alias"))); +#else +#ifndef xmlXPathTranslateFunction +extern __typeof (xmlXPathTranslateFunction) xmlXPathTranslateFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathTranslateFunction xmlXPathTranslateFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathTrueFunction +extern __typeof (xmlXPathTrueFunction) xmlXPathTrueFunction __attribute((alias("xmlXPathTrueFunction__internal_alias"))); +#else +#ifndef xmlXPathTrueFunction +extern __typeof (xmlXPathTrueFunction) xmlXPathTrueFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathTrueFunction xmlXPathTrueFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathValueFlipSign +extern __typeof (xmlXPathValueFlipSign) xmlXPathValueFlipSign __attribute((alias("xmlXPathValueFlipSign__internal_alias"))); +#else +#ifndef xmlXPathValueFlipSign +extern __typeof (xmlXPathValueFlipSign) xmlXPathValueFlipSign__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathValueFlipSign xmlXPathValueFlipSign__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathVariableLookup +extern __typeof (xmlXPathVariableLookup) xmlXPathVariableLookup __attribute((alias("xmlXPathVariableLookup__internal_alias"))); +#else +#ifndef xmlXPathVariableLookup +extern __typeof (xmlXPathVariableLookup) xmlXPathVariableLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathVariableLookup xmlXPathVariableLookup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathVariableLookupNS +extern __typeof (xmlXPathVariableLookupNS) xmlXPathVariableLookupNS __attribute((alias("xmlXPathVariableLookupNS__internal_alias"))); +#else +#ifndef xmlXPathVariableLookupNS +extern __typeof (xmlXPathVariableLookupNS) xmlXPathVariableLookupNS__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathVariableLookupNS xmlXPathVariableLookupNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathWrapCString +extern __typeof (xmlXPathWrapCString) xmlXPathWrapCString __attribute((alias("xmlXPathWrapCString__internal_alias"))); +#else +#ifndef xmlXPathWrapCString +extern __typeof (xmlXPathWrapCString) xmlXPathWrapCString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathWrapCString xmlXPathWrapCString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathWrapExternal +extern __typeof (xmlXPathWrapExternal) xmlXPathWrapExternal __attribute((alias("xmlXPathWrapExternal__internal_alias"))); +#else +#ifndef xmlXPathWrapExternal +extern __typeof (xmlXPathWrapExternal) xmlXPathWrapExternal__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathWrapExternal xmlXPathWrapExternal__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathWrapNodeSet +extern __typeof (xmlXPathWrapNodeSet) xmlXPathWrapNodeSet __attribute((alias("xmlXPathWrapNodeSet__internal_alias"))); +#else +#ifndef xmlXPathWrapNodeSet +extern __typeof (xmlXPathWrapNodeSet) xmlXPathWrapNodeSet__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathWrapNodeSet xmlXPathWrapNodeSet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathWrapString +extern __typeof (xmlXPathWrapString) xmlXPathWrapString __attribute((alias("xmlXPathWrapString__internal_alias"))); +#else +#ifndef xmlXPathWrapString +extern __typeof (xmlXPathWrapString) xmlXPathWrapString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathWrapString xmlXPathWrapString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPatherror +extern __typeof (xmlXPatherror) xmlXPatherror __attribute((alias("xmlXPatherror__internal_alias"))); +#else +#ifndef xmlXPatherror +extern __typeof (xmlXPatherror) xmlXPatherror__internal_alias __attribute((visibility("hidden"))); +#define xmlXPatherror xmlXPatherror__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrBuildNodeList +extern __typeof (xmlXPtrBuildNodeList) xmlXPtrBuildNodeList __attribute((alias("xmlXPtrBuildNodeList__internal_alias"))); +#else +#ifndef xmlXPtrBuildNodeList +extern __typeof (xmlXPtrBuildNodeList) xmlXPtrBuildNodeList__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrBuildNodeList xmlXPtrBuildNodeList__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrEval +extern __typeof (xmlXPtrEval) xmlXPtrEval __attribute((alias("xmlXPtrEval__internal_alias"))); +#else +#ifndef xmlXPtrEval +extern __typeof (xmlXPtrEval) xmlXPtrEval__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrEval xmlXPtrEval__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrEvalRangePredicate +extern __typeof (xmlXPtrEvalRangePredicate) xmlXPtrEvalRangePredicate __attribute((alias("xmlXPtrEvalRangePredicate__internal_alias"))); +#else +#ifndef xmlXPtrEvalRangePredicate +extern __typeof (xmlXPtrEvalRangePredicate) xmlXPtrEvalRangePredicate__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrEvalRangePredicate xmlXPtrEvalRangePredicate__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrFreeLocationSet +extern __typeof (xmlXPtrFreeLocationSet) xmlXPtrFreeLocationSet __attribute((alias("xmlXPtrFreeLocationSet__internal_alias"))); +#else +#ifndef xmlXPtrFreeLocationSet +extern __typeof (xmlXPtrFreeLocationSet) xmlXPtrFreeLocationSet__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrFreeLocationSet xmlXPtrFreeLocationSet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrLocationSetAdd +extern __typeof (xmlXPtrLocationSetAdd) xmlXPtrLocationSetAdd __attribute((alias("xmlXPtrLocationSetAdd__internal_alias"))); +#else +#ifndef xmlXPtrLocationSetAdd +extern __typeof (xmlXPtrLocationSetAdd) xmlXPtrLocationSetAdd__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrLocationSetAdd xmlXPtrLocationSetAdd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrLocationSetCreate +extern __typeof (xmlXPtrLocationSetCreate) xmlXPtrLocationSetCreate __attribute((alias("xmlXPtrLocationSetCreate__internal_alias"))); +#else +#ifndef xmlXPtrLocationSetCreate +extern __typeof (xmlXPtrLocationSetCreate) xmlXPtrLocationSetCreate__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrLocationSetCreate xmlXPtrLocationSetCreate__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrLocationSetDel +extern __typeof (xmlXPtrLocationSetDel) xmlXPtrLocationSetDel __attribute((alias("xmlXPtrLocationSetDel__internal_alias"))); +#else +#ifndef xmlXPtrLocationSetDel +extern __typeof (xmlXPtrLocationSetDel) xmlXPtrLocationSetDel__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrLocationSetDel xmlXPtrLocationSetDel__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrLocationSetMerge +extern __typeof (xmlXPtrLocationSetMerge) xmlXPtrLocationSetMerge __attribute((alias("xmlXPtrLocationSetMerge__internal_alias"))); +#else +#ifndef xmlXPtrLocationSetMerge +extern __typeof (xmlXPtrLocationSetMerge) xmlXPtrLocationSetMerge__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrLocationSetMerge xmlXPtrLocationSetMerge__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrLocationSetRemove +extern __typeof (xmlXPtrLocationSetRemove) xmlXPtrLocationSetRemove __attribute((alias("xmlXPtrLocationSetRemove__internal_alias"))); +#else +#ifndef xmlXPtrLocationSetRemove +extern __typeof (xmlXPtrLocationSetRemove) xmlXPtrLocationSetRemove__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrLocationSetRemove xmlXPtrLocationSetRemove__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewCollapsedRange +extern __typeof (xmlXPtrNewCollapsedRange) xmlXPtrNewCollapsedRange __attribute((alias("xmlXPtrNewCollapsedRange__internal_alias"))); +#else +#ifndef xmlXPtrNewCollapsedRange +extern __typeof (xmlXPtrNewCollapsedRange) xmlXPtrNewCollapsedRange__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewCollapsedRange xmlXPtrNewCollapsedRange__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewContext +extern __typeof (xmlXPtrNewContext) xmlXPtrNewContext __attribute((alias("xmlXPtrNewContext__internal_alias"))); +#else +#ifndef xmlXPtrNewContext +extern __typeof (xmlXPtrNewContext) xmlXPtrNewContext__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewContext xmlXPtrNewContext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewLocationSetNodeSet +extern __typeof (xmlXPtrNewLocationSetNodeSet) xmlXPtrNewLocationSetNodeSet __attribute((alias("xmlXPtrNewLocationSetNodeSet__internal_alias"))); +#else +#ifndef xmlXPtrNewLocationSetNodeSet +extern __typeof (xmlXPtrNewLocationSetNodeSet) xmlXPtrNewLocationSetNodeSet__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewLocationSetNodeSet xmlXPtrNewLocationSetNodeSet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewLocationSetNodes +extern __typeof (xmlXPtrNewLocationSetNodes) xmlXPtrNewLocationSetNodes __attribute((alias("xmlXPtrNewLocationSetNodes__internal_alias"))); +#else +#ifndef xmlXPtrNewLocationSetNodes +extern __typeof (xmlXPtrNewLocationSetNodes) xmlXPtrNewLocationSetNodes__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewLocationSetNodes xmlXPtrNewLocationSetNodes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewRange +extern __typeof (xmlXPtrNewRange) xmlXPtrNewRange __attribute((alias("xmlXPtrNewRange__internal_alias"))); +#else +#ifndef xmlXPtrNewRange +extern __typeof (xmlXPtrNewRange) xmlXPtrNewRange__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewRange xmlXPtrNewRange__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewRangeNodeObject +extern __typeof (xmlXPtrNewRangeNodeObject) xmlXPtrNewRangeNodeObject __attribute((alias("xmlXPtrNewRangeNodeObject__internal_alias"))); +#else +#ifndef xmlXPtrNewRangeNodeObject +extern __typeof (xmlXPtrNewRangeNodeObject) xmlXPtrNewRangeNodeObject__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewRangeNodeObject xmlXPtrNewRangeNodeObject__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewRangeNodePoint +extern __typeof (xmlXPtrNewRangeNodePoint) xmlXPtrNewRangeNodePoint __attribute((alias("xmlXPtrNewRangeNodePoint__internal_alias"))); +#else +#ifndef xmlXPtrNewRangeNodePoint +extern __typeof (xmlXPtrNewRangeNodePoint) xmlXPtrNewRangeNodePoint__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewRangeNodePoint xmlXPtrNewRangeNodePoint__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewRangeNodes +extern __typeof (xmlXPtrNewRangeNodes) xmlXPtrNewRangeNodes __attribute((alias("xmlXPtrNewRangeNodes__internal_alias"))); +#else +#ifndef xmlXPtrNewRangeNodes +extern __typeof (xmlXPtrNewRangeNodes) xmlXPtrNewRangeNodes__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewRangeNodes xmlXPtrNewRangeNodes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewRangePointNode +extern __typeof (xmlXPtrNewRangePointNode) xmlXPtrNewRangePointNode __attribute((alias("xmlXPtrNewRangePointNode__internal_alias"))); +#else +#ifndef xmlXPtrNewRangePointNode +extern __typeof (xmlXPtrNewRangePointNode) xmlXPtrNewRangePointNode__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewRangePointNode xmlXPtrNewRangePointNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewRangePoints +extern __typeof (xmlXPtrNewRangePoints) xmlXPtrNewRangePoints __attribute((alias("xmlXPtrNewRangePoints__internal_alias"))); +#else +#ifndef xmlXPtrNewRangePoints +extern __typeof (xmlXPtrNewRangePoints) xmlXPtrNewRangePoints__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewRangePoints xmlXPtrNewRangePoints__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrRangeToFunction +extern __typeof (xmlXPtrRangeToFunction) xmlXPtrRangeToFunction __attribute((alias("xmlXPtrRangeToFunction__internal_alias"))); +#else +#ifndef xmlXPtrRangeToFunction +extern __typeof (xmlXPtrRangeToFunction) xmlXPtrRangeToFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrRangeToFunction xmlXPtrRangeToFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrWrapLocationSet +extern __typeof (xmlXPtrWrapLocationSet) xmlXPtrWrapLocationSet __attribute((alias("xmlXPtrWrapLocationSet__internal_alias"))); +#else +#ifndef xmlXPtrWrapLocationSet +extern __typeof (xmlXPtrWrapLocationSet) xmlXPtrWrapLocationSet__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrWrapLocationSet xmlXPtrWrapLocationSet__internal_alias +#endif +#endif +#endif + + +#endif +#endif +#endif +#endif +#endif + diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/enc.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/enc.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/enc.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/enc.h 2015-12-23 07:08:27.000000000 +0000 @@ -0,0 +1,32 @@ +/* + * Summary: Internal Interfaces for encoding in libxml2 + * Description: this module describes a few interfaces which were + * addded along with the API changes in 2.9.0 + * those are private routines at this point + * + * Copy: See Copyright for the status of this software. + * + * Author: Daniel Veillard + */ + +#ifndef __XML_ENC_H__ +#define __XML_ENC_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int xmlCharEncFirstLineInt(xmlCharEncodingHandler *handler, xmlBufferPtr out, + xmlBufferPtr in, int len); +int xmlCharEncFirstLineInput(xmlParserInputBufferPtr input, int len); +int xmlCharEncInput(xmlParserInputBufferPtr input, int flush); +int xmlCharEncOutput(xmlOutputBufferPtr output, int init); + +#ifdef __cplusplus +} +#endif +#endif /* __XML_ENC_H__ */ + + diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/encoding.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/encoding.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/encoding.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/encoding.c 2015-12-23 07:08:27.000000000 +0000 @@ -1,7 +1,7 @@ /* * encoding.c : implements the encoding conversion functions needed for XML * - * Related specs: + * Related specs: * rfc2044 (UTF-8 and UTF-16) F. Yergeau Alis Technologies * rfc2781 UTF-16, an encoding of ISO 10646, P. Hoffman, F. Yergeau * [ISO-10646] UTF-8 and UTF-16 in Annexes @@ -24,6 +24,7 @@ #include "libxml.h" #include +#include #ifdef HAVE_CTYPE_H #include @@ -44,6 +45,9 @@ #include #include +#include "buf.h" +#include "enc.h" + static xmlCharEncodingHandlerPtr xmlUTF16LEHandler = NULL; static xmlCharEncodingHandlerPtr xmlUTF16BEHandler = NULL; @@ -58,7 +62,7 @@ static int xmlCharEncodingAliasesNb = 0; static int xmlCharEncodingAliasesMax = 0; -#ifdef LIBXML_ICONV_ENABLED +#if defined(LIBXML_ICONV_ENABLED) || defined(LIBXML_ICU_ENABLED) #if 0 #define DEBUG_ENCODING /* Define this to get encoding traces */ #endif @@ -97,6 +101,54 @@ NULL, 0, val, NULL, NULL, 0, 0, msg, val); } +#ifdef LIBXML_ICU_ENABLED +static uconv_t* +openIcuConverter(const char* name, int toUnicode) +{ + UErrorCode status = U_ZERO_ERROR; + uconv_t *conv = (uconv_t *) xmlMalloc(sizeof(uconv_t)); + if (conv == NULL) + return NULL; + + conv->uconv = ucnv_open(name, &status); + if (U_FAILURE(status)) + goto error; + + status = U_ZERO_ERROR; + if (toUnicode) { + ucnv_setToUCallBack(conv->uconv, UCNV_TO_U_CALLBACK_STOP, + NULL, NULL, NULL, &status); + } + else { + ucnv_setFromUCallBack(conv->uconv, UCNV_FROM_U_CALLBACK_STOP, + NULL, NULL, NULL, &status); + } + if (U_FAILURE(status)) + goto error; + + status = U_ZERO_ERROR; + conv->utf8 = ucnv_open("UTF-8", &status); + if (U_SUCCESS(status)) + return conv; + +error: + if (conv->uconv) + ucnv_close(conv->uconv); + xmlFree(conv); + return NULL; +} + +static void +closeIcuConverter(uconv_t *conv) +{ + if (conv != NULL) { + ucnv_close(conv->uconv); + ucnv_close(conv->utf8); + xmlFree(conv); + } +} +#endif /* LIBXML_ICU_ENABLED */ + /************************************************************************ * * * Conversions To/From UTF8 encoding * @@ -135,12 +187,12 @@ break; if (c < 0x80) { *out++ = c; - } else { + } else { *outlen = out - outstart; *inlen = processed - base; return(-1); } - + processed = (const unsigned char*) in; } *outlen = out - outstart; @@ -206,7 +258,7 @@ if (inend - in < trailing) { break; - } + } for ( ; trailing; trailing--) { if ((in >= inend) || (((d= *in++) & 0xC0) != 0x80)) @@ -263,19 +315,19 @@ outend = out + *outlen; inend = in + (*inlen); instop = inend; - - while (in < inend && out < outend - 1) { - if (*in >= 0x80) { + + while ((in < inend) && (out < outend - 1)) { + if (*in >= 0x80) { *out++ = (((*in) >> 6) & 0x1F) | 0xC0; - *out++ = ((*in) & 0x3F) | 0x80; + *out++ = ((*in) & 0x3F) | 0x80; ++in; } - if (instop - in > outend - out) instop = in + (outend - out); - while (in < instop && *in < 0x80) { + if ((instop - in) > (outend - out)) instop = in + (outend - out); + while ((in < instop) && (*in < 0x80)) { *out++ = *in++; } - } - if (in < inend && out < outend && *in < 0x80) { + } + if ((in < inend) && (out < outend) && (*in < 0x80)) { *out++ = *in++; } *outlen = out - outstart; @@ -379,7 +431,7 @@ if (inend - in < trailing) { break; - } + } for ( ; trailing; trailing--) { if (in >= inend) @@ -487,7 +539,7 @@ else if (c < 0x800) { *out++= ((c >> 6) & 0x1F) | 0xC0; bits= 0; } else if (c < 0x10000) { *out++= ((c >> 12) & 0x0F) | 0xE0; bits= 6; } else { *out++= ((c >> 18) & 0x07) | 0xF0; bits= 12; } - + for ( ; bits >= 0; bits-= 6) { if (out >= outend) break; @@ -512,7 +564,7 @@ * block of chars out. * * Returns the number of bytes written, or -1 if lack of space, or -2 - * if the transcoding failed. + * if the transcoding failed. */ static int UTF8ToUTF16LE(unsigned char* outb, int *outlen, @@ -558,7 +610,7 @@ if (inend - in < trailing) { break; - } + } for ( ; trailing; trailing--) { if ((in >= inend) || (((d= *in++) & 0xC0) != 0x80)) @@ -621,7 +673,7 @@ * block of chars out. * * Returns the number of bytes written, or -1 if lack of space, or -2 - * if the transcoding failed. + * if the transcoding failed. */ static int UTF8ToUTF16(unsigned char* outb, int *outlen, @@ -693,7 +745,7 @@ in++; } else { c= *in++; - } + } if ((c & 0xFC00) == 0xD800) { /* surrogates */ if (in >= inend) { /* (in > inend) shouldn't happens */ *outlen = out - outstart; @@ -723,15 +775,15 @@ } /* assertion: c is a single UTF-4 value */ - if (out >= outend) + if (out >= outend) break; if (c < 0x80) { *out++= c; bits= -6; } else if (c < 0x800) { *out++= ((c >> 6) & 0x1F) | 0xC0; bits= 0; } else if (c < 0x10000) { *out++= ((c >> 12) & 0x0F) | 0xE0; bits= 6; } else { *out++= ((c >> 18) & 0x07) | 0xF0; bits= 12; } - + for ( ; bits >= 0; bits-= 6) { - if (out >= outend) + if (out >= outend) break; *out++= ((c >> bits) & 0x3F) | 0x80; } @@ -754,7 +806,7 @@ * block of chars out. * * Returns the number of byte written, or -1 by lack of space, or -2 - * if the transcoding failed. + * if the transcoding failed. */ static int UTF8ToUTF16BE(unsigned char* outb, int *outlen, @@ -800,7 +852,7 @@ if (inend - in < trailing) { break; - } + } for ( ; trailing; trailing--) { if ((in >= inend) || (((d= *in++) & 0xC0) != 0x80)) break; @@ -864,13 +916,13 @@ * * Guess the encoding of the entity using the first bytes of the entity content * according to the non-normative appendix F of the XML-1.0 recommendation. - * + * * Returns one of the XML_CHAR_ENCODING_... values. */ xmlCharEncoding xmlDetectCharEncoding(const unsigned char* in, int len) { - if (in == NULL) + if (in == NULL) return(XML_CHAR_ENCODING_NONE); if (len >= 4) { if ((in[0] == 0x00) && (in[1] == 0x00) && @@ -951,7 +1003,7 @@ * @alias: the alias name as parsed, in UTF-8 format (ASCII actually) * * Lookup an encoding name for the given alias. - * + * * Returns NULL if not found, otherwise the original name */ const char * @@ -989,7 +1041,7 @@ * * Registers an alias @alias for an encoding named @name. Existing alias * will be overwritten. - * + * * Returns 0 in case of success, -1 in case of error */ int @@ -1009,13 +1061,13 @@ if (xmlCharEncodingAliases == NULL) { xmlCharEncodingAliasesNb = 0; xmlCharEncodingAliasesMax = 20; - xmlCharEncodingAliases = (xmlCharEncodingAliasPtr) + xmlCharEncodingAliases = (xmlCharEncodingAliasPtr) xmlMalloc(xmlCharEncodingAliasesMax * sizeof(xmlCharEncodingAlias)); if (xmlCharEncodingAliases == NULL) return(-1); } else if (xmlCharEncodingAliasesNb >= xmlCharEncodingAliasesMax) { xmlCharEncodingAliasesMax *= 2; - xmlCharEncodingAliases = (xmlCharEncodingAliasPtr) + xmlCharEncodingAliases = (xmlCharEncodingAliasPtr) xmlRealloc(xmlCharEncodingAliases, xmlCharEncodingAliasesMax * sizeof(xmlCharEncodingAlias)); } @@ -1046,7 +1098,7 @@ * @alias: the alias name as parsed, in UTF-8 format (ASCII actually) * * Unregisters an encoding alias @alias - * + * * Returns 0 in case of success, -1 in case of error */ int @@ -1081,7 +1133,7 @@ * Compare the string to the encoding schemes already known. Note * that the comparison is case insensitive accordingly to the section * [XML] 4.3.3 Character Encoding in Entities. - * + * * Returns one of the XML_CHAR_ENCODING_... values or XML_CHAR_ENCODING_NONE * if not recognized. */ @@ -1118,7 +1170,7 @@ */ if (!strcmp(upper, "UTF-16")) return(XML_CHAR_ENCODING_UTF16LE); if (!strcmp(upper, "UTF16")) return(XML_CHAR_ENCODING_UTF16LE); - + if (!strcmp(upper, "ISO-10646-UCS-2")) return(XML_CHAR_ENCODING_UCS2); if (!strcmp(upper, "UCS-2")) return(XML_CHAR_ENCODING_UCS2); if (!strcmp(upper, "UCS2")) return(XML_CHAR_ENCODING_UCS2); @@ -1131,7 +1183,7 @@ if (!strcmp(upper, "UCS-4")) return(XML_CHAR_ENCODING_UCS4LE); if (!strcmp(upper, "UCS4")) return(XML_CHAR_ENCODING_UCS4LE); - + if (!strcmp(upper, "ISO-8859-1")) return(XML_CHAR_ENCODING_8859_1); if (!strcmp(upper, "ISO-LATIN-1")) return(XML_CHAR_ENCODING_8859_1); if (!strcmp(upper, "ISO LATIN 1")) return(XML_CHAR_ENCODING_8859_1); @@ -1254,7 +1306,7 @@ * Returns the xmlCharEncodingHandlerPtr created (or NULL in case of error). */ xmlCharEncodingHandlerPtr -xmlNewCharEncodingHandler(const char *name, +xmlNewCharEncodingHandler(const char *name, xmlCharEncodingInputFunc input, xmlCharEncodingOutputFunc output) { xmlCharEncodingHandlerPtr handler; @@ -1299,6 +1351,7 @@ xmlEncodingErrMemory("xmlNewCharEncodingHandler : out of memory !\n"); return(NULL); } + memset(handler, 0, sizeof(xmlCharEncodingHandler)); handler->input = input; handler->output = output; handler->name = up; @@ -1306,7 +1359,11 @@ #ifdef LIBXML_ICONV_ENABLED handler->iconv_in = NULL; handler->iconv_out = NULL; -#endif /* LIBXML_ICONV_ENABLED */ +#endif +#ifdef LIBXML_ICU_ENABLED + handler->uconv_in = NULL; + handler->uconv_out = NULL; +#endif /* * registers and returns the handler. @@ -1330,7 +1387,7 @@ void xmlInitCharEncodingHandlers(void) { unsigned short int tst = 0x1234; - unsigned char *ptr = (unsigned char *) &tst; + unsigned char *ptr = (unsigned char *) &tst; if (handlers != NULL) return; @@ -1350,9 +1407,9 @@ } xmlNewCharEncodingHandler("UTF-8", UTF8ToUTF8, UTF8ToUTF8); #ifdef LIBXML_OUTPUT_ENABLED - xmlUTF16LEHandler = + xmlUTF16LEHandler = xmlNewCharEncodingHandler("UTF-16LE", UTF16LEToUTF8, UTF8ToUTF16LE); - xmlUTF16BEHandler = + xmlUTF16BEHandler = xmlNewCharEncodingHandler("UTF-16BE", UTF16BEToUTF8, UTF8ToUTF16BE); xmlNewCharEncodingHandler("UTF-16", UTF16LEToUTF8, UTF8ToUTF16); xmlNewCharEncodingHandler("ISO-8859-1", isolat1ToUTF8, UTF8Toisolat1); @@ -1362,16 +1419,16 @@ xmlNewCharEncodingHandler("HTML", NULL, UTF8ToHtml); #endif #else - xmlUTF16LEHandler = + xmlUTF16LEHandler = xmlNewCharEncodingHandler("UTF-16LE", UTF16LEToUTF8, NULL); - xmlUTF16BEHandler = + xmlUTF16BEHandler = xmlNewCharEncodingHandler("UTF-16BE", UTF16BEToUTF8, NULL); xmlNewCharEncodingHandler("UTF-16", UTF16LEToUTF8, NULL); xmlNewCharEncodingHandler("ISO-8859-1", isolat1ToUTF8, NULL); xmlNewCharEncodingHandler("ASCII", asciiToUTF8, NULL); xmlNewCharEncodingHandler("US-ASCII", asciiToUTF8, NULL); #endif /* LIBXML_OUTPUT_ENABLED */ -#ifndef LIBXML_ICONV_ENABLED +#if !defined(LIBXML_ICONV_ENABLED) && !defined(LIBXML_ICU_ENABLED) #ifdef LIBXML_ISO8859X_ENABLED xmlRegisterCharEncodingHandlersISO8859x (); #endif @@ -1414,7 +1471,7 @@ void xmlRegisterCharEncodingHandler(xmlCharEncodingHandlerPtr handler) { if (handlers == NULL) xmlInitCharEncodingHandlers(); - if (handler == NULL) { + if ((handler == NULL) || (handlers == NULL)) { xmlEncodingErr(XML_I18N_NO_HANDLER, "xmlRegisterCharEncodingHandler: NULL handler !\n", NULL); return; @@ -1458,6 +1515,10 @@ if (handler != NULL) return(handler); handler = xmlFindCharEncodingHandler("ebcdic"); if (handler != NULL) return(handler); + handler = xmlFindCharEncodingHandler("EBCDIC-US"); + if (handler != NULL) return(handler); + handler = xmlFindCharEncodingHandler("IBM-037"); + if (handler != NULL) return(handler); break; case XML_CHAR_ENCODING_UCS4BE: handler = xmlFindCharEncodingHandler("ISO-10646-UCS-4"); @@ -1548,10 +1609,10 @@ handler = xmlFindCharEncodingHandler("EUC-JP"); if (handler != NULL) return(handler); break; - default: + default: break; } - + #ifdef DEBUG_ENCODING xmlGenericError(xmlGenericErrorContext, "No handler found for encoding %d\n", enc); @@ -1576,6 +1637,10 @@ xmlCharEncodingHandlerPtr enc; iconv_t icv_in, icv_out; #endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + xmlCharEncodingHandlerPtr encu; + uconv_t *ucv_in, *ucv_out; +#endif /* LIBXML_ICU_ENABLED */ char upper[100]; int i; @@ -1600,14 +1665,17 @@ } upper[i] = 0; - for (i = 0;i < nbCharEncodingHandler; i++) - if (!strcmp(upper, handlers[i]->name)) { + if (handlers != NULL) { + for (i = 0;i < nbCharEncodingHandler; i++) { + if (!strcmp(upper, handlers[i]->name)) { #ifdef DEBUG_ENCODING - xmlGenericError(xmlGenericErrorContext, - "Found registered handler for encoding %s\n", name); + xmlGenericError(xmlGenericErrorContext, + "Found registered handler for encoding %s\n", name); #endif - return(handlers[i]); - } + return(handlers[i]); + } + } + } #ifdef LIBXML_ICONV_ENABLED /* check whether iconv can handle this */ @@ -1627,6 +1695,7 @@ iconv_close(icv_out); return(NULL); } + memset(enc, 0, sizeof(xmlCharEncodingHandler)); enc->name = xmlMemStrdup(name); enc->input = NULL; enc->output = NULL; @@ -1642,6 +1711,36 @@ "iconv : problems with filters for '%s'\n", name); } #endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + /* check whether icu can handle this */ + ucv_in = openIcuConverter(name, 1); + ucv_out = openIcuConverter(name, 0); + if (ucv_in != NULL && ucv_out != NULL) { + encu = (xmlCharEncodingHandlerPtr) + xmlMalloc(sizeof(xmlCharEncodingHandler)); + if (encu == NULL) { + closeIcuConverter(ucv_in); + closeIcuConverter(ucv_out); + return(NULL); + } + memset(encu, 0, sizeof(xmlCharEncodingHandler)); + encu->name = xmlMemStrdup(name); + encu->input = NULL; + encu->output = NULL; + encu->uconv_in = ucv_in; + encu->uconv_out = ucv_out; +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "Found ICU converter handler for encoding %s\n", name); +#endif + return encu; + } else if (ucv_in != NULL || ucv_out != NULL) { + closeIcuConverter(ucv_in); + closeIcuConverter(ucv_out); + xmlEncodingErr(XML_ERR_INTERNAL_ERROR, + "ICU converter : problems with filters for '%s'\n", name); + } +#endif /* LIBXML_ICU_ENABLED */ #ifdef DEBUG_ENCODING xmlGenericError(xmlGenericErrorContext, @@ -1679,12 +1778,12 @@ * @in: a pointer to an array of ISO Latin 1 chars * @inlen: the length of @in * - * Returns 0 if success, or + * Returns 0 if success, or * -1 by lack of space, or * -2 if the transcoding fails (for *in is not valid utf8 string or * the result of transformation can't fit into the encoding we want), or * -3 if there the last byte can't form a single output char. - * + * * The value of @inlen after return is the number of octets consumed * as the return value is positive, else unpredictable. * The value of @outlen after return is the number of ocetes consumed. @@ -1703,7 +1802,7 @@ } icv_inlen = *inlen; icv_outlen = *outlen; - ret = iconv(cd, (char **) &icv_in, &icv_inlen, &icv_out, &icv_outlen); + ret = iconv(cd, (ICONV_CONST char **) &icv_in, &icv_inlen, &icv_out, &icv_outlen); *inlen -= icv_inlen; *outlen -= icv_outlen; if ((icv_inlen != 0) || (ret == -1)) { @@ -1732,27 +1831,97 @@ /************************************************************************ * * + * ICU based generic conversion functions * + * * + ************************************************************************/ + +#ifdef LIBXML_ICU_ENABLED +/** + * xmlUconvWrapper: + * @cd: ICU uconverter data structure + * @toUnicode : non-zero if toUnicode. 0 otherwise. + * @out: a pointer to an array of bytes to store the result + * @outlen: the length of @out + * @in: a pointer to an array of ISO Latin 1 chars + * @inlen: the length of @in + * + * Returns 0 if success, or + * -1 by lack of space, or + * -2 if the transcoding fails (for *in is not valid utf8 string or + * the result of transformation can't fit into the encoding we want), or + * -3 if there the last byte can't form a single output char. + * + * The value of @inlen after return is the number of octets consumed + * as the return value is positive, else unpredictable. + * The value of @outlen after return is the number of ocetes consumed. + */ +static int +xmlUconvWrapper(uconv_t *cd, int toUnicode, unsigned char *out, int *outlen, + const unsigned char *in, int *inlen) { + const char *ucv_in = (const char *) in; + char *ucv_out = (char *) out; + UErrorCode err = U_ZERO_ERROR; + + if ((out == NULL) || (outlen == NULL) || (inlen == NULL) || (in == NULL)) { + if (outlen != NULL) *outlen = 0; + return(-1); + } + + /* + * TODO(jungshik) + * 1. is ucnv_convert(To|From)Algorithmic better? + * 2. had we better use an explicit pivot buffer? + * 3. error returned comes from 'fromUnicode' only even + * when toUnicode is true ! + */ + if (toUnicode) { + /* encoding => UTF-16 => UTF-8 */ + ucnv_convertEx(cd->utf8, cd->uconv, &ucv_out, ucv_out + *outlen, + &ucv_in, ucv_in + *inlen, NULL, NULL, NULL, NULL, + 0, TRUE, &err); + } else { + /* UTF-8 => UTF-16 => encoding */ + ucnv_convertEx(cd->uconv, cd->utf8, &ucv_out, ucv_out + *outlen, + &ucv_in, ucv_in + *inlen, NULL, NULL, NULL, NULL, + 0, TRUE, &err); + } + *inlen = ucv_in - (const char*) in; + *outlen = ucv_out - (char *) out; + if (U_SUCCESS(err)) + return 0; + if (err == U_BUFFER_OVERFLOW_ERROR) + return -1; + if (err == U_INVALID_CHAR_FOUND || err == U_ILLEGAL_CHAR_FOUND) + return -2; + /* if (err == U_TRUNCATED_CHAR_FOUND) */ + return -3; +} +#endif /* LIBXML_ICU_ENABLED */ + +/************************************************************************ + * * * The real API used by libxml for on-the-fly conversion * * * ************************************************************************/ /** - * xmlCharEncFirstLine: + * xmlCharEncFirstLineInt: * @handler: char enconding transformation data structure * @out: an xmlBuffer for the output. * @in: an xmlBuffer for the input - * + * @len: number of bytes to convert for the first line, or -1 + * * Front-end for the encoding handler input function, but handle only * the very first line, i.e. limit itself to 45 chars. - * - * Returns the number of byte written if success, or + * + * Returns the number of byte written if success, or * -1 general error * -2 if the transcoding fails (for *in is not valid utf8 string or * the result of transformation can't fit into the encoding we want), or */ int -xmlCharEncFirstLine(xmlCharEncodingHandler *handler, xmlBufferPtr out, - xmlBufferPtr in) { +xmlCharEncFirstLineInt(xmlCharEncodingHandler *handler, xmlBufferPtr out, + xmlBufferPtr in, int len) { int ret = -2; int written; int toconv; @@ -1761,19 +1930,28 @@ if (out == NULL) return(-1); if (in == NULL) return(-1); - written = out->size - out->use; + /* calculate space available */ + written = out->size - out->use - 1; /* count '\0' */ toconv = in->use; - if (toconv * 2 >= written) { - xmlBufferGrow(out, toconv); - written = out->size - out->use - 1; - } - /* * echo '' | wc -c => 38 * 45 chars should be sufficient to reach the end of the encoding * declaration without going too far inside the document content. - */ - written = 45; + * on UTF-16 this means 90bytes, on UCS4 this means 180 + * The actual value depending on guessed encoding is passed as @len + * if provided + */ + if (len >= 0) { + if (toconv > len) + toconv = len; + } else { + if (toconv > 180) + toconv = 180; + } + if (toconv * 2 >= written) { + xmlBufferGrow(out, toconv * 2); + written = out->size - out->use - 1; + } if (handler->input != NULL) { ret = handler->input(&out->content[out->use], &written, @@ -1792,6 +1970,16 @@ if (ret == -1) ret = -3; } #endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + else if (handler->uconv_in != NULL) { + ret = xmlUconvWrapper(handler->uconv_in, 1, &out->content[out->use], + &written, in->content, &toconv); + xmlBufferShrink(in, toconv); + out->use += written; + out->content[out->use] = 0; + if (ret == -1) ret = -3; + } +#endif /* LIBXML_ICU_ENABLED */ #ifdef DEBUG_ENCODING switch (ret) { case 0: @@ -1824,14 +2012,280 @@ } /** + * xmlCharEncFirstLine: + * @handler: char enconding transformation data structure + * @out: an xmlBuffer for the output. + * @in: an xmlBuffer for the input + * + * Front-end for the encoding handler input function, but handle only + * the very first line, i.e. limit itself to 45 chars. + * + * Returns the number of byte written if success, or + * -1 general error + * -2 if the transcoding fails (for *in is not valid utf8 string or + * the result of transformation can't fit into the encoding we want), or + */ +int +xmlCharEncFirstLine(xmlCharEncodingHandler *handler, xmlBufferPtr out, + xmlBufferPtr in) { + return(xmlCharEncFirstLineInt(handler, out, in, -1)); +} + +/** + * xmlCharEncFirstLineInput: + * @input: a parser input buffer + * @len: number of bytes to convert for the first line, or -1 + * + * Front-end for the encoding handler input function, but handle only + * the very first line. Point is that this is based on autodetection + * of the encoding and once that first line is converted we may find + * out that a different decoder is needed to process the input. + * + * Returns the number of byte written if success, or + * -1 general error + * -2 if the transcoding fails (for *in is not valid utf8 string or + * the result of transformation can't fit into the encoding we want), or + */ +int +xmlCharEncFirstLineInput(xmlParserInputBufferPtr input, int len) +{ + int ret = -2; + size_t written; + size_t toconv; + int c_in; + int c_out; + xmlBufPtr in; + xmlBufPtr out; + + if ((input == NULL) || (input->encoder == NULL) || + (input->buffer == NULL) || (input->raw == NULL)) + return (-1); + out = input->buffer; + in = input->raw; + + toconv = xmlBufUse(in); + if (toconv == 0) + return (0); + written = xmlBufAvail(out) - 1; /* count '\0' */ + /* + * echo '' | wc -c => 38 + * 45 chars should be sufficient to reach the end of the encoding + * declaration without going too far inside the document content. + * on UTF-16 this means 90bytes, on UCS4 this means 180 + * The actual value depending on guessed encoding is passed as @len + * if provided + */ + if (len >= 0) { + if (toconv > (unsigned int) len) + toconv = len; + } else { + if (toconv > 180) + toconv = 180; + } + if (toconv * 2 >= written) { + xmlBufGrow(out, toconv * 2); + written = xmlBufAvail(out) - 1; + } + if (written > 360) + written = 360; + + c_in = toconv; + c_out = written; + if (input->encoder->input != NULL) { + ret = input->encoder->input(xmlBufEnd(out), &c_out, + xmlBufContent(in), &c_in); + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + } +#ifdef LIBXML_ICONV_ENABLED + else if (input->encoder->iconv_in != NULL) { + ret = xmlIconvWrapper(input->encoder->iconv_in, xmlBufEnd(out), + &c_out, xmlBufContent(in), &c_in); + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + if (ret == -1) + ret = -3; + } +#endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + else if (input->encoder->uconv_in != NULL) { + ret = xmlUconvWrapper(input->encoder->uconv_in, 1, xmlBufEnd(out), + &c_out, xmlBufContent(in), &c_in); + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + if (ret == -1) + ret = -3; + } +#endif /* LIBXML_ICU_ENABLED */ + switch (ret) { + case 0: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "converted %d bytes to %d bytes of input\n", + c_in, c_out); +#endif + break; + case -1: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "converted %d bytes to %d bytes of input, %d left\n", + c_in, c_out, (int)xmlBufUse(in)); +#endif + break; + case -3: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "converted %d bytes to %d bytes of input, %d left\n", + c_in, c_out, (int)xmlBufUse(in)); +#endif + break; + case -2: { + char buf[50]; + const xmlChar *content = xmlBufContent(in); + + snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X", + content[0], content[1], + content[2], content[3]); + buf[49] = 0; + xmlEncodingErr(XML_I18N_CONV_FAILED, + "input conversion failed due to input error, bytes %s\n", + buf); + } + } + /* + * Ignore when input buffer is not on a boundary + */ + if (ret == -3) ret = 0; + if (ret == -1) ret = 0; + return(ret); +} + +/** + * xmlCharEncInput: + * @input: a parser input buffer + * @flush: try to flush all the raw buffer + * + * Generic front-end for the encoding handler on parser input + * + * Returns the number of byte written if success, or + * -1 general error + * -2 if the transcoding fails (for *in is not valid utf8 string or + * the result of transformation can't fit into the encoding we want), or + */ +int +xmlCharEncInput(xmlParserInputBufferPtr input, int flush) +{ + int ret = -2; + size_t written; + size_t toconv; + int c_in; + int c_out; + xmlBufPtr in; + xmlBufPtr out; + + if ((input == NULL) || (input->encoder == NULL) || + (input->buffer == NULL) || (input->raw == NULL)) + return (-1); + out = input->buffer; + in = input->raw; + + toconv = xmlBufUse(in); + if (toconv == 0) + return (0); + if ((toconv > 64 * 1024) && (flush == 0)) + toconv = 64 * 1024; + written = xmlBufAvail(out); + if (written > 0) + written--; /* count '\0' */ + if (toconv * 2 >= written) { + xmlBufGrow(out, toconv * 2); + written = xmlBufAvail(out); + if (written > 0) + written--; /* count '\0' */ + } + if ((written > 128 * 1024) && (flush == 0)) + written = 128 * 1024; + + c_in = toconv; + c_out = written; + if (input->encoder->input != NULL) { + ret = input->encoder->input(xmlBufEnd(out), &c_out, + xmlBufContent(in), &c_in); + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + } +#ifdef LIBXML_ICONV_ENABLED + else if (input->encoder->iconv_in != NULL) { + ret = xmlIconvWrapper(input->encoder->iconv_in, xmlBufEnd(out), + &c_out, xmlBufContent(in), &c_in); + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + if (ret == -1) + ret = -3; + } +#endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + else if (input->encoder->uconv_in != NULL) { + ret = xmlUconvWrapper(input->encoder->uconv_in, 1, xmlBufEnd(out), + &c_out, xmlBufContent(in), &c_in); + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + if (ret == -1) + ret = -3; + } +#endif /* LIBXML_ICU_ENABLED */ + switch (ret) { + case 0: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "converted %d bytes to %d bytes of input\n", + c_in, c_out); +#endif + break; + case -1: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "converted %d bytes to %d bytes of input, %d left\n", + c_in, c_out, (int)xmlBufUse(in)); +#endif + break; + case -3: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "converted %d bytes to %d bytes of input, %d left\n", + c_in, c_out, (int)xmlBufUse(in)); +#endif + break; + case -2: { + char buf[50]; + const xmlChar *content = xmlBufContent(in); + + snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X", + content[0], content[1], + content[2], content[3]); + buf[49] = 0; + xmlEncodingErr(XML_I18N_CONV_FAILED, + "input conversion failed due to input error, bytes %s\n", + buf); + } + } + /* + * Ignore when input buffer is not on a boundary + */ + if (ret == -3) + ret = 0; + return (c_out? c_out : ret); +} + +/** * xmlCharEncInFunc: * @handler: char encoding transformation data structure * @out: an xmlBuffer for the output. * @in: an xmlBuffer for the input - * + * * Generic front-end for the encoding handler input function - * - * Returns the number of byte written if success, or + * + * Returns the number of byte written if success, or * -1 general error * -2 if the transcoding fails (for *in is not valid utf8 string or * the result of transformation can't fit into the encoding we want), or @@ -1854,7 +2308,7 @@ toconv = in->use; if (toconv == 0) return (0); - written = out->size - out->use; + written = out->size - out->use -1; /* count '\0' */ if (toconv * 2 >= written) { xmlBufferGrow(out, out->size + toconv * 2); written = out->size - out->use - 1; @@ -1877,6 +2331,17 @@ ret = -3; } #endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + else if (handler->uconv_in != NULL) { + ret = xmlUconvWrapper(handler->uconv_in, 1, &out->content[out->use], + &written, in->content, &toconv); + xmlBufferShrink(in, toconv); + out->use += written; + out->content[out->use] = 0; + if (ret == -1) + ret = -3; + } +#endif /* LIBXML_ICU_ENABLED */ switch (ret) { case 0: #ifdef DEBUG_ENCODING @@ -1902,7 +2367,7 @@ case -2: { char buf[50]; - snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X", + snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X", in->content[0], in->content[1], in->content[2], in->content[3]); buf[49] = 0; @@ -1919,20 +2384,251 @@ return (written? written : ret); } +#ifdef LIBXML_OUTPUT_ENABLED +/** + * xmlCharEncOutput: + * @output: a parser output buffer + * @init: is this an initialization call without data + * + * Generic front-end for the encoding handler on parser output + * a first call with @init == 1 has to be made first to initiate the + * output in case of non-stateless encoding needing to initiate their + * state or the output (like the BOM in UTF16). + * In case of UTF8 sequence conversion errors for the given encoder, + * the content will be automatically remapped to a CharRef sequence. + * + * Returns the number of byte written if success, or + * -1 general error + * -2 if the transcoding fails (for *in is not valid utf8 string or + * the result of transformation can't fit into the encoding we want), or + */ +int +xmlCharEncOutput(xmlOutputBufferPtr output, int init) +{ + int ret = -2; + size_t written; + size_t writtentot = 0; + size_t toconv; + int c_in; + int c_out; + xmlBufPtr in; + xmlBufPtr out; + int charref_len = 0; + + if ((output == NULL) || (output->encoder == NULL) || + (output->buffer == NULL) || (output->conv == NULL)) + return (-1); + out = output->conv; + in = output->buffer; + +retry: + + written = xmlBufAvail(out); + if (written > 0) + written--; /* count '\0' */ + + /* + * First specific handling of the initialization call + */ + if (init) { + c_in = 0; + c_out = written; + if (output->encoder->output != NULL) { + ret = output->encoder->output(xmlBufEnd(out), &c_out, + NULL, &c_in); + if (ret > 0) /* Gennady: check return value */ + xmlBufAddLen(out, c_out); + } +#ifdef LIBXML_ICONV_ENABLED + else if (output->encoder->iconv_out != NULL) { + ret = xmlIconvWrapper(output->encoder->iconv_out, xmlBufEnd(out), + &c_out, NULL, &c_in); + xmlBufAddLen(out, c_out); + } +#endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + else if (output->encoder->uconv_out != NULL) { + ret = xmlUconvWrapper(output->encoder->uconv_out, 0, xmlBufEnd(out), + &c_out, NULL, &c_in); + xmlBufAddLen(out, c_out); + } +#endif /* LIBXML_ICU_ENABLED */ +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "initialized encoder\n"); +#endif + return(0); + } + + /* + * Conversion itself. + */ + toconv = xmlBufUse(in); + if (toconv == 0) + return (0); + if (toconv > 64 * 1024) + toconv = 64 * 1024; + if (toconv * 4 >= written) { + xmlBufGrow(out, toconv * 4); + written = xmlBufAvail(out) - 1; + } + if (written > 256 * 1024) + written = 256 * 1024; + + c_in = toconv; + c_out = written; + if (output->encoder->output != NULL) { + ret = output->encoder->output(xmlBufEnd(out), &c_out, + xmlBufContent(in), &c_in); + if (c_out > 0) { + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + writtentot += c_out; + } + } +#ifdef LIBXML_ICONV_ENABLED + else if (output->encoder->iconv_out != NULL) { + ret = xmlIconvWrapper(output->encoder->iconv_out, xmlBufEnd(out), + &c_out, xmlBufContent(in), &c_in); + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + writtentot += c_out; + if (ret == -1) { + if (c_out > 0) { + /* + * Can be a limitation of iconv + */ + charref_len = 0; + goto retry; + } + ret = -3; + } + } +#endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + else if (output->encoder->uconv_out != NULL) { + ret = xmlUconvWrapper(output->encoder->uconv_out, 0, xmlBufEnd(out), + &c_out, xmlBufContent(in), &c_in); + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + writtentot += c_out; + if (ret == -1) { + if (c_out > 0) { + /* + * Can be a limitation of uconv + */ + charref_len = 0; + goto retry; + } + ret = -3; + } + } +#endif /* LIBXML_ICU_ENABLED */ + else { + xmlEncodingErr(XML_I18N_NO_OUTPUT, + "xmlCharEncOutFunc: no output function !\n", NULL); + return(-1); + } + + if (ret >= 0) output += ret; + + /* + * Attempt to handle error cases + */ + switch (ret) { + case 0: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "converted %d bytes to %d bytes of output\n", + c_in, c_out); +#endif + break; + case -1: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "output conversion failed by lack of space\n"); +#endif + break; + case -3: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext,"converted %d bytes to %d bytes of output %d left\n", + c_in, c_out, (int) xmlBufUse(in)); +#endif + break; + case -2: { + int len = (int) xmlBufUse(in); + xmlChar *content = xmlBufContent(in); + int cur; + + cur = xmlGetUTF8Char(content, &len); + if ((charref_len != 0) && (c_out < charref_len)) { + /* + * We attempted to insert a character reference and failed. + * Undo what was written and skip the remaining charref. + */ + xmlBufErase(out, c_out); + writtentot -= c_out; + xmlBufShrink(in, charref_len - c_out); + charref_len = 0; + + ret = -1; + break; + } else if (cur > 0) { + xmlChar charref[20]; + +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "handling output conversion error\n"); + xmlGenericError(xmlGenericErrorContext, + "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n", + content[0], content[1], + content[2], content[3]); +#endif + /* + * Removes the UTF8 sequence, and replace it by a charref + * and continue the transcoding phase, hoping the error + * did not mangle the encoder state. + */ + charref_len = snprintf((char *) &charref[0], sizeof(charref), + "&#%d;", cur); + xmlBufShrink(in, len); + xmlBufAddHead(in, charref, -1); + + goto retry; + } else { + char buf[50]; + + snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X", + content[0], content[1], + content[2], content[3]); + buf[49] = 0; + xmlEncodingErr(XML_I18N_CONV_FAILED, + "output conversion failed due to conv error, bytes %s\n", + buf); + if (xmlBufGetAllocationScheme(in) != XML_BUFFER_ALLOC_IMMUTABLE) + content[0] = ' '; + } + break; + } + } + return(ret); +} +#endif + /** * xmlCharEncOutFunc: * @handler: char enconding transformation data structure * @out: an xmlBuffer for the output. * @in: an xmlBuffer for the input - * + * * Generic front-end for the encoding handler output function - * a first call with @in == NULL has to be made firs to initiate the + * a first call with @in == NULL has to be made firs to initiate the * output in case of non-stateless encoding needing to initiate their * state or the output (like the BOM in UTF16). * In case of UTF8 sequence conversion errors for the given encoder, * the content will be automatically remapped to a CharRef sequence. - * - * Returns the number of byte written if success, or + * + * Returns the number of byte written if success, or * -1 general error * -2 if the transcoding fails (for *in is not valid utf8 string or * the result of transformation can't fit into the encoding we want), or @@ -1945,12 +2641,13 @@ int writtentot = 0; int toconv; int output = 0; + int charref_len = 0; if (handler == NULL) return(-1); if (out == NULL) return(-1); retry: - + written = out->size - out->use; if (written > 0) @@ -1977,6 +2674,15 @@ out->content[out->use] = 0; } #endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + else if (handler->uconv_out != NULL) { + ret = xmlUconvWrapper(handler->uconv_out, 0, + &out->content[out->use], + &written, NULL, &toconv); + out->use += written; + out->content[out->use] = 0; + } +#endif /* LIBXML_ICU_ENABLED */ #ifdef DEBUG_ENCODING xmlGenericError(xmlGenericErrorContext, "initialized encoder\n"); @@ -1990,16 +2696,18 @@ toconv = in->use; if (toconv == 0) return(0); - if (toconv * 2 >= written) { - xmlBufferGrow(out, toconv * 2); + if (toconv * 4 >= written) { + xmlBufferGrow(out, toconv * 4); written = out->size - out->use - 1; } if (handler->output != NULL) { ret = handler->output(&out->content[out->use], &written, in->content, &toconv); - xmlBufferShrink(in, toconv); - out->use += written; - writtentot += written; + if (written > 0) { + xmlBufferShrink(in, toconv); + out->use += written; + writtentot += written; + } out->content[out->use] = 0; } #ifdef LIBXML_ICONV_ENABLED @@ -2015,12 +2723,34 @@ /* * Can be a limitation of iconv */ + charref_len = 0; goto retry; } ret = -3; } } #endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + else if (handler->uconv_out != NULL) { + ret = xmlUconvWrapper(handler->uconv_out, 0, + &out->content[out->use], + &written, in->content, &toconv); + xmlBufferShrink(in, toconv); + out->use += written; + writtentot += written; + out->content[out->use] = 0; + if (ret == -1) { + if (written > 0) { + /* + * Can be a limitation of iconv + */ + charref_len = 0; + goto retry; + } + ret = -3; + } + } +#endif /* LIBXML_ICU_ENABLED */ else { xmlEncodingErr(XML_I18N_NO_OUTPUT, "xmlCharEncOutFunc: no output function !\n", NULL); @@ -2058,7 +2788,19 @@ int cur; cur = xmlGetUTF8Char(utf, &len); - if (cur > 0) { + if ((charref_len != 0) && (written < charref_len)) { + /* + * We attempted to insert a character reference and failed. + * Undo what was written and skip the remaining charref. + */ + out->use -= written; + writtentot -= written; + xmlBufferShrink(in, charref_len - written); + charref_len = 0; + + ret = -1; + break; + } else if (cur > 0) { xmlChar charref[20]; #ifdef DEBUG_ENCODING @@ -2074,7 +2816,8 @@ * and continue the transcoding phase, hoping the error * did not mangle the encoder state. */ - snprintf((char *) &charref[0], sizeof(charref), "&#%d;", cur); + charref_len = snprintf((char *) &charref[0], sizeof(charref), + "&#%d;", cur); xmlBufferShrink(in, len); xmlBufferAddHead(in, charref, -1); @@ -2082,7 +2825,7 @@ } else { char buf[50]; - snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X", + snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X", in->content[0], in->content[1], in->content[2], in->content[3]); buf[49] = 0; @@ -2101,7 +2844,7 @@ /** * xmlCharEncCloseFunc: * @handler: char enconding transformation data structure - * + * * Generic front-end for encoding handler close function * * Returns 0 if success, or -1 in case of error @@ -2109,17 +2852,27 @@ int xmlCharEncCloseFunc(xmlCharEncodingHandler *handler) { int ret = 0; + int tofree = 0; + int i, handler_in_list = 0; + if (handler == NULL) return(-1); if (handler->name == NULL) return(-1); + if (handlers != NULL) { + for (i = 0;i < nbCharEncodingHandler; i++) { + if (handler == handlers[i]) { + handler_in_list = 1; + break; + } + } + } #ifdef LIBXML_ICONV_ENABLED /* * Iconv handlers can be used only once, free the whole block. * and the associated icon resources. */ - if ((handler->iconv_out != NULL) || (handler->iconv_in != NULL)) { - if (handler->name != NULL) - xmlFree(handler->name); - handler->name = NULL; + if ((handler_in_list == 0) && + ((handler->iconv_out != NULL) || (handler->iconv_in != NULL))) { + tofree = 1; if (handler->iconv_out != NULL) { if (iconv_close(handler->iconv_out)) ret = -1; @@ -2130,9 +2883,29 @@ ret = -1; handler->iconv_in = NULL; } - xmlFree(handler); } #endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + if ((handler_in_list == 0) && + ((handler->uconv_out != NULL) || (handler->uconv_in != NULL))) { + tofree = 1; + if (handler->uconv_out != NULL) { + closeIcuConverter(handler->uconv_out); + handler->uconv_out = NULL; + } + if (handler->uconv_in != NULL) { + closeIcuConverter(handler->uconv_in); + handler->uconv_in = NULL; + } + } +#endif + if (tofree) { + /* free up only dynamic handlers iconv/uconv */ + if (handler->name != NULL) + xmlFree(handler->name); + handler->name = NULL; + xmlFree(handler); + } #ifdef DEBUG_ENCODING if (ret) xmlGenericError(xmlGenericErrorContext, @@ -2162,7 +2935,7 @@ long xmlByteConsumed(xmlParserCtxtPtr ctxt) { xmlParserInputPtr in; - + if (ctxt == NULL) return(-1); in = ctxt->input; if (in == NULL) return(-1); @@ -2208,6 +2981,23 @@ cur += toconv; } while (ret == -2); #endif +#ifdef LIBXML_ICU_ENABLED + } else if (handler->uconv_out != NULL) { + do { + toconv = in->end - cur; + written = 32000; + ret = xmlUconvWrapper(handler->uconv_out, 0, &convbuf[0], + &written, cur, &toconv); + if (ret < 0) { + if (written > 0) + ret = -2; + else + return(-1); + } + unused += written; + cur += toconv; + } while (ret == -2); +#endif } else { /* could not find a converter */ return(-1); @@ -2220,7 +3010,7 @@ return(in->consumed + (in->cur - in->base)); } -#ifndef LIBXML_ICONV_ENABLED +#if !defined(LIBXML_ICONV_ENABLED) && !defined(LIBXML_ICU_ENABLED) #ifdef LIBXML_ISO8859X_ENABLED /** @@ -2246,6 +3036,7 @@ const unsigned char* outstart = out; const unsigned char* inend; const unsigned char* instart = in; + const unsigned char* processed = in; if ((out == NULL) || (outlen == NULL) || (inlen == NULL) || (xlattable == NULL)) @@ -2262,81 +3053,82 @@ while (in < inend) { unsigned char d = *in++; if (d < 0x80) { - *out++ = d; + *out++ = d; } else if (d < 0xC0) { /* trailing byte in leading position */ *outlen = out - outstart; - *inlen = in - instart - 1; + *inlen = processed - instart; return(-2); } else if (d < 0xE0) { unsigned char c; if (!(in < inend)) { /* trailing byte not in input buffer */ *outlen = out - outstart; - *inlen = in - instart - 1; - return(-2); + *inlen = processed - instart; + return(-3); } c = *in++; if ((c & 0xC0) != 0x80) { /* not a trailing byte */ *outlen = out - outstart; - *inlen = in - instart - 2; + *inlen = processed - instart; return(-2); } - c = c & 0x3F; + c = c & 0x3F; d = d & 0x1F; d = xlattable [48 + c + xlattable [d] * 64]; if (d == 0) { /* not in character set */ *outlen = out - outstart; - *inlen = in - instart - 2; + *inlen = processed - instart; return(-2); } - *out++ = d; + *out++ = d; } else if (d < 0xF0) { unsigned char c1; unsigned char c2; if (!(in < inend - 1)) { /* trailing bytes not in input buffer */ *outlen = out - outstart; - *inlen = in - instart - 1; - return(-2); + *inlen = processed - instart; + return(-3); } c1 = *in++; if ((c1 & 0xC0) != 0x80) { /* not a trailing byte (c1) */ *outlen = out - outstart; - *inlen = in - instart - 2; + *inlen = processed - instart; return(-2); } c2 = *in++; if ((c2 & 0xC0) != 0x80) { /* not a trailing byte (c2) */ *outlen = out - outstart; - *inlen = in - instart - 2; + *inlen = processed - instart; return(-2); } - c1 = c1 & 0x3F; - c2 = c2 & 0x3F; + c1 = c1 & 0x3F; + c2 = c2 & 0x3F; d = d & 0x0F; - d = xlattable [48 + c2 + xlattable [48 + c1 + - xlattable [32 + d] * 64] * 64]; + d = xlattable [48 + c2 + xlattable [48 + c1 + + xlattable [32 + d] * 64] * 64]; if (d == 0) { /* not in character set */ *outlen = out - outstart; - *inlen = in - instart - 3; + *inlen = processed - instart; return(-2); } - *out++ = d; + *out++ = d; } else { /* cannot transcode >= U+010000 */ *outlen = out - outstart; - *inlen = in - instart - 1; + *inlen = processed - instart; return(-2); } + processed = in; } *outlen = out - outstart; - *inlen = in - instart; + *inlen = processed - instart; return(*outlen); } @@ -2370,16 +3162,16 @@ outend = out + *outlen; inend = in + *inlen; instop = inend; - c = *in; - while (in < inend && out < outend - 1) { - if (c >= 0x80) { - c = unicodetable [c - 0x80]; + + while ((in < inend) && (out < outend - 2)) { + if (*in >= 0x80) { + c = unicodetable [*in - 0x80]; if (c == 0) { /* undefined code point */ *outlen = out - outstart; *inlen = in - instart; return (-1); - } + } if (c < 0x800) { *out++ = ((c >> 6) & 0x1F) | 0xC0; *out++ = (c & 0x3F) | 0x80; @@ -2387,48 +3179,47 @@ *out++ = ((c >> 12) & 0x0F) | 0xE0; *out++ = ((c >> 6) & 0x3F) | 0x80; *out++ = (c & 0x3F) | 0x80; - } + } ++in; - c = *in; } - if (instop - in > outend - out) instop = in + (outend - out); - while (c < 0x80 && in < instop) { - *out++ = c; - ++in; - c = *in; + if (instop - in > outend - out) instop = in + (outend - out); + while ((*in < 0x80) && (in < instop)) { + *out++ = *in++; } - } - if (in < inend && out < outend && c < 0x80) { - *out++ = c; - ++in; + } + if ((in < inend) && (out < outend) && (*in < 0x80)) { + *out++ = *in++; + } + if ((in < inend) && (out < outend) && (*in < 0x80)) { + *out++ = *in++; } *outlen = out - outstart; *inlen = in - instart; return (*outlen); } - + /************************************************************************ * Lookup tables for ISO-8859-2..ISO-8859-16 transcoding * ************************************************************************/ static unsigned short const xmlunicodetable_ISO8859_2 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7, - 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, - 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, - 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, - 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, - 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, - 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, - 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, - 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, - 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, - 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, - 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7, + 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, + 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, + 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, + 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, + 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, + 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, + 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, + 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, + 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, + 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, + 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, }; static unsigned char const xmltranscodetable_ISO8859_2 [48 + 6 * 64] = { @@ -2462,22 +3253,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_3 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0x0000, 0x0124, 0x00a7, - 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0x0000, 0x017b, - 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7, - 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0x0000, 0x017c, - 0x00c0, 0x00c1, 0x00c2, 0x0000, 0x00c4, 0x010a, 0x0108, 0x00c7, - 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, - 0x0000, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7, - 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df, - 0x00e0, 0x00e1, 0x00e2, 0x0000, 0x00e4, 0x010b, 0x0109, 0x00e7, - 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, - 0x0000, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7, - 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0x0000, 0x0124, 0x00a7, + 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0x0000, 0x017b, + 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7, + 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0x0000, 0x017c, + 0x00c0, 0x00c1, 0x00c2, 0x0000, 0x00c4, 0x010a, 0x0108, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x0000, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7, + 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x0000, 0x00e4, 0x010b, 0x0109, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x0000, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7, + 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9, }; static unsigned char const xmltranscodetable_ISO8859_3 [48 + 7 * 64] = { @@ -2515,22 +3306,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_4 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7, - 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af, - 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7, - 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b, - 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, - 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a, - 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7, - 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df, - 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, - 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, - 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7, - 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7, + 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af, + 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7, + 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b, + 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, + 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a, + 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df, + 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, + 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, + 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9, }; static unsigned char const xmltranscodetable_ISO8859_4 [48 + 6 * 64] = { @@ -2564,22 +3355,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_5 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, - 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, - 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, - 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, - 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, - 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, - 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, - 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, - 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, - 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, - 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, - 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, + 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, + 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, + 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, + 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, + 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, + 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, + 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f, }; static unsigned char const xmltranscodetable_ISO8859_5 [48 + 6 * 64] = { @@ -2613,22 +3404,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_6 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0000, 0x0000, 0x0000, 0x00a4, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x060c, 0x00ad, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x061b, 0x0000, 0x0000, 0x0000, 0x061f, - 0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, - 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, - 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, - 0x0638, 0x0639, 0x063a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, - 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, - 0x0650, 0x0651, 0x0652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0000, 0x0000, 0x0000, 0x00a4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x060c, 0x00ad, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x061b, 0x0000, 0x0000, 0x0000, 0x061f, + 0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, + 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, + 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, + 0x0638, 0x0639, 0x063a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, + 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, + 0x0650, 0x0651, 0x0652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, }; static unsigned char const xmltranscodetable_ISO8859_6 [48 + 5 * 64] = { @@ -2658,22 +3449,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_7 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x2018, 0x2019, 0x00a3, 0x0000, 0x0000, 0x00a6, 0x00a7, - 0x00a8, 0x00a9, 0x0000, 0x00ab, 0x00ac, 0x00ad, 0x0000, 0x2015, - 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7, - 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, - 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, - 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, - 0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, - 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, - 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, - 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, - 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, - 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x0000, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x2018, 0x2019, 0x00a3, 0x0000, 0x0000, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x0000, 0x00ab, 0x00ac, 0x00ad, 0x0000, 0x2015, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7, + 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, + 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, + 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, + 0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, + 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, + 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, + 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, + 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, + 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x0000, }; static unsigned char const xmltranscodetable_ISO8859_7 [48 + 7 * 64] = { @@ -2711,22 +3502,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_8 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0000, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, - 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, - 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, - 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2017, - 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, - 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, - 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, - 0x05e8, 0x05e9, 0x05ea, 0x0000, 0x0000, 0x200e, 0x200f, 0x0000, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0000, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2017, + 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, + 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, + 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, + 0x05e8, 0x05e9, 0x05ea, 0x0000, 0x0000, 0x200e, 0x200f, 0x0000, }; static unsigned char const xmltranscodetable_ISO8859_8 [48 + 7 * 64] = { @@ -2764,22 +3555,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_9 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, - 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, - 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, - 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, - 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, - 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, - 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, - 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, - 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, - 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, - 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, - 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, }; static unsigned char const xmltranscodetable_ISO8859_9 [48 + 5 * 64] = { @@ -2809,22 +3600,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_10 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7, - 0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a, - 0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7, - 0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b, - 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, - 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf, - 0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168, - 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, - 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, - 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef, - 0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169, - 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7, + 0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a, + 0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7, + 0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b, + 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, + 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168, + 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, + 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169, + 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138, }; static unsigned char const xmltranscodetable_ISO8859_10 [48 + 7 * 64] = { @@ -2862,22 +3653,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_11 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, - 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, - 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, - 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, - 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, - 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, - 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, - 0x0e38, 0x0e39, 0x0e3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e3f, - 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, - 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f, - 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, - 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, + 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, + 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, + 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, + 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, + 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, + 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, + 0x0e38, 0x0e39, 0x0e3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e3f, + 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, + 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f, + 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, + 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0x0000, 0x0000, 0x0000, 0x0000, }; static unsigned char const xmltranscodetable_ISO8859_11 [48 + 6 * 64] = { @@ -2911,22 +3702,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_13 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7, - 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6, - 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7, - 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6, - 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112, - 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b, - 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, - 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df, - 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113, - 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c, - 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, - 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7, + 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7, + 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6, + 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112, + 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b, + 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, + 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df, + 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113, + 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c, + 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, + 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019, }; static unsigned char const xmltranscodetable_ISO8859_13 [48 + 7 * 64] = { @@ -2964,22 +3755,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_14 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7, - 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178, - 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56, - 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61, - 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, - 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, - 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a, - 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df, - 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, - 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, - 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b, - 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7, + 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178, + 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56, + 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff, }; static unsigned char const xmltranscodetable_ISO8859_14 [48 + 10 * 64] = { @@ -3029,22 +3820,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_15 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7, - 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, - 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7, - 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf, - 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, - 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, - 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, - 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, - 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, - 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, - 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, - 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7, + 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7, + 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, }; static unsigned char const xmltranscodetable_ISO8859_15 [48 + 6 * 64] = { @@ -3078,22 +3869,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_16 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x201e, 0x0160, 0x00a7, - 0x0161, 0x00a9, 0x0218, 0x00ab, 0x0179, 0x00ad, 0x017a, 0x017b, - 0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7, - 0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c, - 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7, - 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, - 0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a, - 0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df, - 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7, - 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, - 0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b, - 0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x201e, 0x0160, 0x00a7, + 0x0161, 0x00a9, 0x0218, 0x00ab, 0x0179, 0x00ad, 0x017a, 0x017b, + 0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7, + 0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c, + 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a, + 0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b, + 0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff, }; static unsigned char const xmltranscodetable_ISO8859_16 [48 + 9 * 64] = { @@ -3292,4 +4083,3 @@ #define bottom_encoding #include "elfgcchack.h" - diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/encoding.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/encoding.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/encoding.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/encoding.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -27,6 +27,9 @@ #ifdef LIBXML_ICONV_ENABLED #include #endif +#ifdef LIBXML_ICU_ENABLED +#include +#endif #ifdef __cplusplus extern "C" { #endif @@ -125,6 +128,13 @@ * Block defining the handlers for non UTF-8 encodings. * If iconv is supported, there are two extra fields. */ +#ifdef LIBXML_ICU_ENABLED +struct _uconv_t { + UConverter *uconv; /* for conversion between an encoding and UTF-16 */ + UConverter *utf8; /* for conversion between UTF-8 and UTF-16 */ +}; +typedef struct _uconv_t uconv_t; +#endif typedef struct _xmlCharEncodingHandler xmlCharEncodingHandler; typedef xmlCharEncodingHandler *xmlCharEncodingHandlerPtr; @@ -136,6 +146,10 @@ iconv_t iconv_in; iconv_t iconv_out; #endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + uconv_t *uconv_in; + uconv_t *uconv_out; +#endif /* LIBXML_ICU_ENABLED */ }; #ifdef __cplusplus @@ -149,32 +163,32 @@ /* * Interfaces for encoding handlers. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlInitCharEncodingHandlers (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCleanupCharEncodingHandlers (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRegisterCharEncodingHandler (xmlCharEncodingHandlerPtr handler); XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL xmlGetCharEncodingHandler (xmlCharEncoding enc); XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL xmlFindCharEncodingHandler (const char *name); XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL - xmlNewCharEncodingHandler (const char *name, - xmlCharEncodingInputFunc input, - xmlCharEncodingOutputFunc output); + xmlNewCharEncodingHandler (const char *name, + xmlCharEncodingInputFunc input, + xmlCharEncodingOutputFunc output); /* * Interfaces for encoding names and aliases. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlAddEncodingAlias (const char *name, const char *alias); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlDelEncodingAlias (const char *alias); XMLPUBFUN const char * XMLCALL xmlGetEncodingAlias (const char *alias); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCleanupEncodingAliases (void); XMLPUBFUN xmlCharEncoding XMLCALL xmlParseCharEncoding (const char *name); @@ -188,12 +202,12 @@ xmlDetectCharEncoding (const unsigned char *in, int len); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCharEncOutFunc (xmlCharEncodingHandler *handler, xmlBufferPtr out, xmlBufferPtr in); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCharEncInFunc (xmlCharEncodingHandler *handler, xmlBufferPtr out, xmlBufferPtr in); @@ -201,20 +215,20 @@ xmlCharEncFirstLine (xmlCharEncodingHandler *handler, xmlBufferPtr out, xmlBufferPtr in); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCharEncCloseFunc (xmlCharEncodingHandler *handler); /* * Export a few useful functions */ #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL UTF8Toisolat1 (unsigned char *out, int *outlen, const unsigned char *in, int *inlen); #endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL isolat1ToUTF8 (unsigned char *out, int *outlen, const unsigned char *in, diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/entities.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/entities.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/entities.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/entities.c 2015-12-23 07:08:27.000000000 +0000 @@ -22,41 +22,43 @@ #include #include +#include "save.h" + /* * The XML predefined entities. */ static xmlEntity xmlEntityLt = { NULL, XML_ENTITY_DECL, BAD_CAST "lt", - NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, BAD_CAST "<", BAD_CAST "<", 1, XML_INTERNAL_PREDEFINED_ENTITY, NULL, NULL, NULL, NULL, 0, 1 }; static xmlEntity xmlEntityGt = { NULL, XML_ENTITY_DECL, BAD_CAST "gt", - NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, BAD_CAST ">", BAD_CAST ">", 1, XML_INTERNAL_PREDEFINED_ENTITY, NULL, NULL, NULL, NULL, 0, 1 }; static xmlEntity xmlEntityAmp = { NULL, XML_ENTITY_DECL, BAD_CAST "amp", - NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, BAD_CAST "&", BAD_CAST "&", 1, XML_INTERNAL_PREDEFINED_ENTITY, NULL, NULL, NULL, NULL, 0, 1 }; static xmlEntity xmlEntityQuot = { NULL, XML_ENTITY_DECL, BAD_CAST "quot", - NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, BAD_CAST "\"", BAD_CAST "\"", 1, XML_INTERNAL_PREDEFINED_ENTITY, NULL, NULL, NULL, NULL, 0, 1 }; static xmlEntity xmlEntityApos = { NULL, XML_ENTITY_DECL, BAD_CAST "apos", - NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, BAD_CAST "'", BAD_CAST "'", 1, XML_INTERNAL_PREDEFINED_ENTITY, NULL, NULL, NULL, NULL, 0, 1 @@ -139,45 +141,19 @@ } /* - * xmlAddEntity : register a new entity for an entities table. + * xmlCreateEntity: + * + * internal routine doing the entity node strutures allocations */ static xmlEntityPtr -xmlAddEntity(xmlDtdPtr dtd, const xmlChar *name, int type, - const xmlChar *ExternalID, const xmlChar *SystemID, - const xmlChar *content) { - xmlDictPtr dict = NULL; - xmlEntitiesTablePtr table = NULL; +xmlCreateEntity(xmlDictPtr dict, const xmlChar *name, int type, + const xmlChar *ExternalID, const xmlChar *SystemID, + const xmlChar *content) { xmlEntityPtr ret; - if (name == NULL) - return(NULL); - if (dtd == NULL) - return(NULL); - if (dtd->doc != NULL) - dict = dtd->doc->dict; - - switch (type) { - case XML_INTERNAL_GENERAL_ENTITY: - case XML_EXTERNAL_GENERAL_PARSED_ENTITY: - case XML_EXTERNAL_GENERAL_UNPARSED_ENTITY: - if (dtd->entities == NULL) - dtd->entities = xmlHashCreateDict(0, dict); - table = dtd->entities; - break; - case XML_INTERNAL_PARAMETER_ENTITY: - case XML_EXTERNAL_PARAMETER_ENTITY: - if (dtd->pentities == NULL) - dtd->pentities = xmlHashCreateDict(0, dict); - table = dtd->pentities; - break; - case XML_INTERNAL_PREDEFINED_ENTITY: - return(NULL); - } - if (table == NULL) - return(NULL); ret = (xmlEntityPtr) xmlMalloc(sizeof(xmlEntity)); if (ret == NULL) { - xmlEntitiesErrMemory("xmlAddEntity:: malloc failed"); + xmlEntitiesErrMemory("xmlCreateEntity: malloc failed"); return(NULL); } memset(ret, 0, sizeof(xmlEntity)); @@ -216,6 +192,50 @@ the defining entity */ ret->orig = NULL; ret->owner = 0; + + return(ret); +} + +/* + * xmlAddEntity : register a new entity for an entities table. + */ +static xmlEntityPtr +xmlAddEntity(xmlDtdPtr dtd, const xmlChar *name, int type, + const xmlChar *ExternalID, const xmlChar *SystemID, + const xmlChar *content) { + xmlDictPtr dict = NULL; + xmlEntitiesTablePtr table = NULL; + xmlEntityPtr ret; + + if (name == NULL) + return(NULL); + if (dtd == NULL) + return(NULL); + if (dtd->doc != NULL) + dict = dtd->doc->dict; + + switch (type) { + case XML_INTERNAL_GENERAL_ENTITY: + case XML_EXTERNAL_GENERAL_PARSED_ENTITY: + case XML_EXTERNAL_GENERAL_UNPARSED_ENTITY: + if (dtd->entities == NULL) + dtd->entities = xmlHashCreateDict(0, dict); + table = dtd->entities; + break; + case XML_INTERNAL_PARAMETER_ENTITY: + case XML_EXTERNAL_PARAMETER_ENTITY: + if (dtd->pentities == NULL) + dtd->pentities = xmlHashCreateDict(0, dict); + table = dtd->pentities; + break; + case XML_INTERNAL_PREDEFINED_ENTITY: + return(NULL); + } + if (table == NULL) + return(NULL); + ret = xmlCreateEntity(dict, name, type, ExternalID, SystemID, content); + if (ret == NULL) + return(NULL); ret->doc = dtd->doc; if (xmlHashAddEntry(table, name, ret)) { @@ -363,6 +383,44 @@ } /** + * xmlNewEntity: + * @doc: the document + * @name: the entity name + * @type: the entity type XML_xxx_yyy_ENTITY + * @ExternalID: the entity external ID if available + * @SystemID: the entity system ID if available + * @content: the entity content + * + * Create a new entity, this differs from xmlAddDocEntity() that if + * the document is NULL or has no internal subset defined, then an + * unlinked entity structure will be returned, it is then the responsability + * of the caller to link it to the document later or free it when not needed + * anymore. + * + * Returns a pointer to the entity or NULL in case of error + */ +xmlEntityPtr +xmlNewEntity(xmlDocPtr doc, const xmlChar *name, int type, + const xmlChar *ExternalID, const xmlChar *SystemID, + const xmlChar *content) { + xmlEntityPtr ret; + xmlDictPtr dict; + + if ((doc != NULL) && (doc->intSubset != NULL)) { + return(xmlAddDocEntity(doc, name, type, ExternalID, SystemID, content)); + } + if (doc != NULL) + dict = doc->dict; + else + dict = NULL; + ret = xmlCreateEntity(dict, name, type, ExternalID, SystemID, content); + if (ret == NULL) + return(NULL); + ret->doc = doc; + return(ret); +} + +/** * xmlGetEntityFromTable: * @table: an entity table * @name: the entity name @@ -370,7 +428,7 @@ * * Do an entity lookup in the table. * returns the corresponding parameter entity, if found. - * + * * Returns A pointer to the entity structure or NULL if not found. */ static xmlEntityPtr @@ -385,7 +443,7 @@ * * Do an entity lookup in the internal and external subsets and * returns the corresponding parameter entity, if found. - * + * * Returns A pointer to the entity structure or NULL if not found. */ xmlEntityPtr @@ -416,7 +474,7 @@ * Do an entity lookup in the DTD entity hash table and * returns the corresponding entity, if found. * Note: the first argument is the document node, not the DTD node. - * + * * Returns A pointer to the entity structure or NULL if not found. */ xmlEntityPtr @@ -440,11 +498,11 @@ * Do an entity lookup in the document entity hash table and * returns the corresponding entity, otherwise a lookup is done * in the predefined entities too. - * + * * Returns A pointer to the entity structure or NULL if not found. */ xmlEntityPtr -xmlGetDocEntity(xmlDocPtr doc, const xmlChar *name) { +xmlGetDocEntity(const xmlDoc *doc, const xmlChar *name) { xmlEntityPtr cur; xmlEntitiesTablePtr table; @@ -472,20 +530,20 @@ * Macro used to grow the current buffer. */ #define growBufferReentrant() { \ - buffer_size *= 2; \ - buffer = (xmlChar *) \ - xmlRealloc(buffer, buffer_size * sizeof(xmlChar)); \ - if (buffer == NULL) { \ - xmlEntitiesErrMemory("xmlEncodeEntitiesReentrant: realloc failed");\ - return(NULL); \ - } \ + xmlChar *tmp; \ + size_t new_size = buffer_size * 2; \ + if (new_size < buffer_size) goto mem_error; \ + tmp = (xmlChar *) xmlRealloc(buffer, new_size); \ + if (tmp == NULL) goto mem_error; \ + buffer = tmp; \ + buffer_size = new_size; \ } - /** - * xmlEncodeEntitiesReentrant: + * xmlEncodeEntitiesInternal: * @doc: the document containing the string * @input: A string to convert to XML. + * @attr: are we handling an atrbute value * * Do a global encoding of a string, replacing the predefined entities * and non ASCII values with their entities and CharRef counterparts. @@ -494,12 +552,12 @@ * * Returns A newly allocated string with the substitution done. */ -xmlChar * -xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) { +static xmlChar * +xmlEncodeEntitiesInternal(xmlDocPtr doc, const xmlChar *input, int attr) { const xmlChar *cur = input; xmlChar *buffer = NULL; xmlChar *out = NULL; - int buffer_size = 0; + size_t buffer_size = 0; int html = 0; if (input == NULL) return(NULL); @@ -512,14 +570,14 @@ buffer_size = 1000; buffer = (xmlChar *) xmlMalloc(buffer_size * sizeof(xmlChar)); if (buffer == NULL) { - xmlEntitiesErrMemory("xmlEncodeEntitiesReentrant: malloc failed"); + xmlEntitiesErrMemory("xmlEncodeEntities: malloc failed"); return(NULL); } out = buffer; while (*cur != '\0') { - if (out - buffer > buffer_size - 100) { - int indx = out - buffer; + size_t indx = out - buffer; + if (indx + 100 > buffer_size) { growBufferReentrant(); out = &buffer[indx]; @@ -529,6 +587,27 @@ * By default one have to encode at least '<', '>', '"' and '&' ! */ if (*cur == '<') { + const xmlChar *end; + + /* + * Special handling of server side include in HTML attributes + */ + if (html && attr && + (cur[1] == '!') && (cur[2] == '-') && (cur[3] == '-') && + ((end = xmlStrstr(cur, BAD_CAST "-->")) != NULL)) { + while (cur != end) { + *out++ = *cur++; + indx = out - buffer; + if (indx + 100 > buffer_size) { + growBufferReentrant(); + out = &buffer[indx]; + } + } + *out++ = *cur++; + *out++ = *cur++; + *out++ = *cur++; + continue; + } *out++ = '&'; *out++ = 'l'; *out++ = 't'; @@ -539,6 +618,23 @@ *out++ = 't'; *out++ = ';'; } else if (*cur == '&') { + /* + * Special handling of &{...} construct from HTML 4, see + * http://www.w3.org/TR/html401/appendix/notes.html#h-B.7.1 + */ + if (html && attr && (cur[1] == '{') && + (strchr((const char *) cur, '}'))) { + while (*cur != '}') { + *out++ = *cur++; + indx = out - buffer; + if (indx + 100 > buffer_size) { + growBufferReentrant(); + out = &buffer[indx]; + } + } + *out++ = *cur++; + continue; + } *out++ = '&'; *out++ = 'a'; *out++ = 'm'; @@ -553,7 +649,7 @@ } else if (*cur >= 0x80) { if (((doc != NULL) && (doc->encoding != NULL)) || (html)) { /* - * Bjrn Reese provided the patch + * Bjørn Reese provided the patch xmlChar xc; xc = (*cur & 0x3F) << 6; if (cur[1] != 0) { @@ -571,7 +667,7 @@ if (*cur < 0xC0) { xmlEntitiesErr(XML_CHECK_NOT_UTF8, - "xmlEncodeEntitiesReentrant : input not UTF-8"); + "xmlEncodeEntities: input not UTF-8"); if (doc != NULL) doc->encoding = xmlStrdup(BAD_CAST "ISO-8859-1"); snprintf(buf, sizeof(buf), "&#%d;", *cur); @@ -604,7 +700,7 @@ } if ((l == 1) || (!IS_CHAR(val))) { xmlEntitiesErr(XML_ERR_INVALID_CHAR, - "xmlEncodeEntitiesReentrant : char out of range\n"); + "xmlEncodeEntities: char out of range\n"); if (doc != NULL) doc->encoding = xmlStrdup(BAD_CAST "ISO-8859-1"); snprintf(buf, sizeof(buf), "&#%d;", *cur); @@ -634,8 +730,46 @@ } cur++; } - *out++ = 0; + *out = 0; return(buffer); + +mem_error: + xmlEntitiesErrMemory("xmlEncodeEntities: realloc failed"); + xmlFree(buffer); + return(NULL); +} + +/** + * xmlEncodeAttributeEntities: + * @doc: the document containing the string + * @input: A string to convert to XML. + * + * Do a global encoding of a string, replacing the predefined entities + * and non ASCII values with their entities and CharRef counterparts for + * attribute values. + * + * Returns A newly allocated string with the substitution done. + */ +xmlChar * +xmlEncodeAttributeEntities(xmlDocPtr doc, const xmlChar *input) { + return xmlEncodeEntitiesInternal(doc, input, 1); +} + +/** + * xmlEncodeEntitiesReentrant: + * @doc: the document containing the string + * @input: A string to convert to XML. + * + * Do a global encoding of a string, replacing the predefined entities + * and non ASCII values with their entities and CharRef counterparts. + * Contrary to xmlEncodeEntities, this routine is reentrant, and result + * must be deallocated. + * + * Returns A newly allocated string with the substitution done. + */ +xmlChar * +xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) { + return xmlEncodeEntitiesInternal(doc, input, 0); } /** @@ -649,11 +783,11 @@ * Returns A newly allocated string with the substitution done. */ xmlChar * -xmlEncodeSpecialChars(xmlDocPtr doc ATTRIBUTE_UNUSED, const xmlChar *input) { +xmlEncodeSpecialChars(const xmlDoc *doc ATTRIBUTE_UNUSED, const xmlChar *input) { const xmlChar *cur = input; xmlChar *buffer = NULL; xmlChar *out = NULL; - int buffer_size = 0; + size_t buffer_size = 0; if (input == NULL) return(NULL); /* @@ -668,8 +802,8 @@ out = buffer; while (*cur != '\0') { - if (out - buffer > buffer_size - 10) { - int indx = out - buffer; + size_t indx = out - buffer; + if (indx + 10 > buffer_size) { growBufferReentrant(); out = &buffer[indx]; @@ -716,8 +850,13 @@ } cur++; } - *out++ = 0; + *out = 0; return(buffer); + +mem_error: + xmlEntitiesErrMemory("xmlEncodeSpecialChars: realloc failed"); + xmlFree(buffer); + return(NULL); } /** @@ -764,7 +903,7 @@ * @ent: An entity * * Build a copy of an entity - * + * * Returns the new xmlEntitiesPtr or NULL in case of error. */ static xmlEntityPtr @@ -800,7 +939,7 @@ * @table: An entity table * * Build a copy of an entity table. - * + * * Returns the new xmlEntitiesTablePtr or NULL in case of error. */ xmlEntitiesTablePtr @@ -949,7 +1088,7 @@ xmlDumpEntityDeclScan(xmlEntityPtr ent, xmlBufferPtr buf) { xmlDumpEntityDecl(buf, ent); } - + /** * xmlDumpEntitiesTable: * @buf: An XML buffer. diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/entities.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/entities.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/entities.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/entities.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -57,6 +57,9 @@ const xmlChar *URI; /* the full URI as computed */ int owner; /* does the entity own the childrens */ int checked; /* was the entity content checked */ + /* this is also used to count entities + * references done from that entity + * and if it contains '<' */ }; /* @@ -72,9 +75,17 @@ */ #ifdef LIBXML_LEGACY_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlInitializePredefinedEntities (void); #endif /* LIBXML_LEGACY_ENABLED */ + +XMLPUBFUN xmlEntityPtr XMLCALL + xmlNewEntity (xmlDocPtr doc, + const xmlChar *name, + int type, + const xmlChar *ExternalID, + const xmlChar *SystemID, + const xmlChar *content); XMLPUBFUN xmlEntityPtr XMLCALL xmlAddDocEntity (xmlDocPtr doc, const xmlChar *name, @@ -82,53 +93,53 @@ const xmlChar *ExternalID, const xmlChar *SystemID, const xmlChar *content); -XMLPUBFUN xmlEntityPtr XMLCALL +XMLPUBFUN xmlEntityPtr XMLCALL xmlAddDtdEntity (xmlDocPtr doc, const xmlChar *name, int type, const xmlChar *ExternalID, const xmlChar *SystemID, const xmlChar *content); -XMLPUBFUN xmlEntityPtr XMLCALL +XMLPUBFUN xmlEntityPtr XMLCALL xmlGetPredefinedEntity (const xmlChar *name); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlGetDocEntity (xmlDocPtr doc, +XMLPUBFUN xmlEntityPtr XMLCALL + xmlGetDocEntity (const xmlDoc *doc, const xmlChar *name); -XMLPUBFUN xmlEntityPtr XMLCALL +XMLPUBFUN xmlEntityPtr XMLCALL xmlGetDtdEntity (xmlDocPtr doc, const xmlChar *name); -XMLPUBFUN xmlEntityPtr XMLCALL +XMLPUBFUN xmlEntityPtr XMLCALL xmlGetParameterEntity (xmlDocPtr doc, const xmlChar *name); #ifdef LIBXML_LEGACY_ENABLED -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlEncodeEntities (xmlDocPtr doc, const xmlChar *input); #endif /* LIBXML_LEGACY_ENABLED */ -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input); -XMLPUBFUN xmlChar * XMLCALL - xmlEncodeSpecialChars (xmlDocPtr doc, +XMLPUBFUN xmlChar * XMLCALL + xmlEncodeSpecialChars (const xmlDoc *doc, const xmlChar *input); -XMLPUBFUN xmlEntitiesTablePtr XMLCALL +XMLPUBFUN xmlEntitiesTablePtr XMLCALL xmlCreateEntitiesTable (void); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlEntitiesTablePtr XMLCALL +XMLPUBFUN xmlEntitiesTablePtr XMLCALL xmlCopyEntitiesTable (xmlEntitiesTablePtr table); #endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeEntitiesTable (xmlEntitiesTablePtr table); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDumpEntitiesTable (xmlBufferPtr buf, xmlEntitiesTablePtr table); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDumpEntityDecl (xmlBufferPtr buf, xmlEntityPtr ent); #endif /* LIBXML_OUTPUT_ENABLED */ #ifdef LIBXML_LEGACY_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCleanupPredefinedEntities(void); #endif /* LIBXML_LEGACY_ENABLED */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/error.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/error.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/error.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/error.c 2015-12-23 07:08:27.000000000 +0000 @@ -31,9 +31,9 @@ \ size = 150; \ \ - while (1) { \ + while (size < 64000) { \ va_start(ap, msg); \ - chars = vsnprintf(str, size, msg, ap); \ + chars = vsnprintf(str, size, msg, ap); \ va_end(ap); \ if ((chars > -1) && (chars < size)) { \ if (prev_size == chars) { \ @@ -54,9 +54,9 @@ } /************************************************************************ - * * - * Handling of out of context errors * - * * + * * + * Handling of out of context errors * + * * ************************************************************************/ /** @@ -64,7 +64,7 @@ * @ctx: an error context * @msg: the message to display/transmit * @...: extra parameters for the message display - * + * * Default handler for out of context error messages. */ void XMLCDECL @@ -82,7 +82,7 @@ /** * initGenericErrorDefaultFunc: * @handler: the handler - * + * * Set or reset (if NULL) the default handler for generic errors * to the builtin error function. */ @@ -132,20 +132,20 @@ */ void xmlSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler) { - xmlGenericErrorContext = ctx; + xmlStructuredErrorContext = ctx; xmlStructuredError = handler; } /************************************************************************ - * * - * Handling of parsing errors * - * * + * * + * Handling of parsing errors * + * * ************************************************************************/ /** * xmlParserPrintFileInfo: * @input: an xmlParserInputPtr input - * + * * Displays the associated file and line informations for the current input */ @@ -165,19 +165,21 @@ /** * xmlParserPrintFileContext: * @input: an xmlParserInputPtr input - * + * * Displays current context within the input content for error tracking */ static void -xmlParserPrintFileContextInternal(xmlParserInputPtr input , +xmlParserPrintFileContextInternal(xmlParserInputPtr input , xmlGenericErrorFunc channel, void *data ) { const xmlChar *cur, *base; unsigned int n, col; /* GCC warns if signed, because compared with sizeof() */ xmlChar content[81]; /* space for 80 chars + line terminator */ xmlChar *ctnt; - if (input == NULL) return; + if ((input == NULL) || (input->cur == NULL) || + (*input->cur == 0)) return; + cur = input->cur; base = input->base; /* skip backwards over any end-of-lines */ @@ -186,8 +188,8 @@ } n = 0; /* search backwards for beginning-of-line (to max buff size) */ - while ((n++ < (sizeof(content)-1)) && (cur > base) && - (*(cur) != '\n') && (*(cur) != '\r')) + while ((n++ < (sizeof(content)-1)) && (cur > base) && + (*(cur) != '\n') && (*(cur) != '\r')) cur--; if ((*(cur) == '\n') || (*(cur) == '\r')) cur++; /* calculate the error position in terms of the current position */ @@ -196,8 +198,8 @@ n = 0; ctnt = content; /* copy selected text to our buffer */ - while ((*cur != 0) && (*(cur) != '\n') && - (*(cur) != '\r') && (n < sizeof(content)-1)) { + while ((*cur != 0) && (*(cur) != '\n') && + (*(cur) != '\r') && (n < sizeof(content)-1)) { *ctnt++ = *cur++; n++; } @@ -221,7 +223,7 @@ /** * xmlParserPrintFileContext: * @input: an xmlParserInputPtr input - * + * * Displays current context within the input content for error tracking */ void @@ -292,7 +294,10 @@ } else { if (file != NULL) channel(data, "%s:%d: ", file, line); - else if ((line != 0) && (domain == XML_FROM_PARSER)) + else if ((line != 0) && + ((domain == XML_FROM_PARSER) || (domain == XML_FROM_SCHEMASV)|| + (domain == XML_FROM_SCHEMASP)||(domain == XML_FROM_DTD) || + (domain == XML_FROM_RELAXNGP)||(domain == XML_FROM_RELAXNGV))) channel(data, "Entity: line %d: ", line); } if (name != NULL) { @@ -360,6 +365,15 @@ case XML_FROM_I18N: channel(data, "encoding "); break; + case XML_FROM_SCHEMATRONV: + channel(data, "schematron "); + break; + case XML_FROM_BUFFER: + channel(data, "internal buffer "); + break; + case XML_FROM_URI: + channel(data, "URI "); + break; default: break; } @@ -429,7 +443,7 @@ * @str2: extra string info * @str3: extra string info * @int1: extra int info - * @col: column number of the error or 0 if N/A + * @col: column number of the error or 0 if N/A * @msg: the message to display/transmit * @...: extra parameters for the message display * @@ -452,6 +466,8 @@ xmlErrorPtr to = &xmlLastError; xmlNodePtr baseptr = NULL; + if (code == XML_ERR_OK) + return; if ((xmlGetWarningsDefaultValue == 0) && (level == XML_ERR_WARNING)) return; if ((domain == XML_FROM_PARSER) || (domain == XML_FROM_HTML) || @@ -459,8 +475,11 @@ (domain == XML_FROM_IO) || (domain == XML_FROM_VALID)) { ctxt = (xmlParserCtxtPtr) ctx; if ((schannel == NULL) && (ctxt != NULL) && (ctxt->sax != NULL) && - (ctxt->sax->initialized == XML_SAX2_MAGIC)) + (ctxt->sax->initialized == XML_SAX2_MAGIC) && + (ctxt->sax->serror != NULL)) { schannel = ctxt->sax->serror; + data = ctxt->userData; + } } /* * Check if structured error handler set @@ -471,18 +490,8 @@ * if user has defined handler, change data ptr to user's choice */ if (schannel != NULL) - data = xmlGenericErrorContext; + data = xmlStructuredErrorContext; } - if ((domain == XML_FROM_VALID) && - ((channel == xmlParserValidityError) || - (channel == xmlParserValidityWarning))) { - ctxt = (xmlParserCtxtPtr) ctx; - if ((schannel == NULL) && (ctxt != NULL) && (ctxt->sax != NULL) && - (ctxt->sax->initialized == XML_SAX2_MAGIC)) - schannel = ctxt->sax->serror; - } - if (code == XML_ERR_OK) - return; /* * Formatting the message */ @@ -526,6 +535,8 @@ if ((node != NULL) && (node->type == XML_ELEMENT_NODE)) line = node->line; + if ((line == 0) || (line == 65535)) + line = xmlGetLineNo(node); } /* @@ -573,7 +584,6 @@ if ((to->file == NULL) && (node != NULL) && (node->doc != NULL)) { to->file = (char *) xmlStrdup(node->doc->URL); } - file = to->file; } to->line = line; if (str1 != NULL) @@ -590,27 +600,28 @@ if (to != &xmlLastError) xmlCopyError(to,&xmlLastError); + if (schannel != NULL) { + schannel(data, to); + return; + } + /* * Find the callback channel if channel param is NULL */ - if ((ctxt != NULL) && (channel == NULL) && (xmlStructuredError == NULL) && (ctxt->sax != NULL)) { + if ((ctxt != NULL) && (channel == NULL) && + (xmlStructuredError == NULL) && (ctxt->sax != NULL)) { if (level == XML_ERR_WARNING) channel = ctxt->sax->warning; else channel = ctxt->sax->error; data = ctxt->userData; } else if (channel == NULL) { - if (xmlStructuredError != NULL) - schannel = xmlStructuredError; - else - channel = xmlGenericError; - if (!data) { - data = xmlGenericErrorContext; - } - } - if (schannel != NULL) { - schannel(data, to); - return; + channel = xmlGenericError; + if (ctxt != NULL) { + data = ctxt; + } else { + data = xmlGenericErrorContext; + } } if (channel == NULL) return; @@ -662,7 +673,7 @@ * @ctx: an XML parser context * @msg: the message to display/transmit * @...: extra parameters for the message display - * + * * Display and format an error messages, gives file, line, position and * extra parameters. */ @@ -705,7 +716,7 @@ * @ctx: an XML parser context * @msg: the message to display/transmit * @...: extra parameters for the message display - * + * * Display and format a warning messages, gives file, line, position and * extra parameters. */ @@ -726,7 +737,7 @@ } xmlParserPrintFileInfo(input); } - + xmlGenericError(xmlGenericErrorContext, "warning: "); XML_GET_VAR_STR(msg, str); xmlGenericError(xmlGenericErrorContext, "%s", str); @@ -744,9 +755,9 @@ } /************************************************************************ - * * - * Handling of validation errors * - * * + * * + * Handling of validation errors * + * * ************************************************************************/ /** @@ -754,7 +765,7 @@ * @ctx: an XML parser context * @msg: the message to display/transmit * @...: extra parameters for the message display - * + * * Display and format an validity error messages, gives file, * line, position and extra parameters. */ @@ -772,7 +783,7 @@ input = ctxt->input; if ((input->filename == NULL) && (ctxt->inputNr > 1)) input = ctxt->inputTab[ctxt->inputNr - 2]; - + if (had_info == 0) { xmlParserPrintFileInfo(input); } @@ -798,7 +809,7 @@ * @ctx: an XML parser context * @msg: the message to display/transmit * @...: extra parameters for the message display - * + * * Display and format a validity warning messages, gives file, line, * position and extra parameters. */ @@ -817,7 +828,7 @@ xmlParserPrintFileInfo(input); } - + xmlGenericError(xmlGenericErrorContext, "validity warning: "); XML_GET_VAR_STR(msg, str); xmlGenericError(xmlGenericErrorContext, "%s", str); @@ -927,6 +938,7 @@ if (ctxt == NULL) return; + ctxt->errNo = XML_ERR_OK; if (ctxt->lastError.code == XML_ERR_OK) return; xmlResetError(&ctxt->lastError); diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/globals.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/globals.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/globals.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/globals.c 2015-12-23 07:08:27.000000000 +0000 @@ -46,7 +46,8 @@ */ void xmlInitGlobals(void) { - xmlThrDefMutex = xmlNewMutex(); + if (xmlThrDefMutex == NULL) + xmlThrDefMutex = xmlNewMutex(); } /** @@ -60,12 +61,13 @@ xmlFreeMutex(xmlThrDefMutex); xmlThrDefMutex = NULL; } + __xmlGlobalInitMutexDestroy(); } /************************************************************************ - * * + * * * All the user accessible global variables of the library * - * * + * * ************************************************************************/ /* @@ -147,6 +149,7 @@ #undef xmlGenericError #undef xmlStructuredError #undef xmlGenericErrorContext +#undef xmlStructuredErrorContext #undef xmlGetWarningsDefaultValue #undef xmlIndentTreeOutput #undef xmlTreeIndentString @@ -243,7 +246,7 @@ * xmlLineNumbersDefaultValue: * * Global setting, indicate that the parser should store the line number - * in the content field of elements in the DOM tree. + * in the content field of elements in the DOM tree. * Disabled by default since this may not be safe for old classes of * applicaton. */ @@ -313,6 +316,13 @@ */ void *xmlGenericErrorContext = NULL; static void *xmlGenericErrorContextThrDef = NULL; +/** + * xmlStructuredErrorContext: + * + * Global setting passed to structured error callbacks + */ +void *xmlStructuredErrorContext = NULL; +static void *xmlStructuredErrorContextThrDef = NULL; xmlError xmlLastError; /* @@ -499,7 +509,7 @@ #if defined(LIBXML_DOCB_ENABLED) && defined(LIBXML_LEGACY_ENABLED) && defined(LIBXML_SAX1_ENABLED) initdocbDefaultSAXHandler(&gs->docbDefaultSAXHandler); #endif -#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_LEGACY_ENABLED) +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_LEGACY_ENABLED) && defined(LIBXML_SAX1_ENABLED) inithtmlDefaultSAXHandler(&gs->htmlDefaultSAXHandler); #endif @@ -513,7 +523,7 @@ gs->xmlDefaultSAXLocator.getSystemId = xmlSAX2GetSystemId; gs->xmlDefaultSAXLocator.getLineNumber = xmlSAX2GetLineNumber; gs->xmlDefaultSAXLocator.getColumnNumber = xmlSAX2GetColumnNumber; - gs->xmlDoValidityCheckingDefaultValue = + gs->xmlDoValidityCheckingDefaultValue = xmlDoValidityCheckingDefaultValueThrDef; #if defined(DEBUG_MEMORY_LOCATION) | defined(DEBUG_MEMORY) gs->xmlFree = (xmlFreeFunc) xmlMemFree; @@ -538,12 +548,13 @@ gs->xmlParserVersion = LIBXML_VERSION_STRING; gs->xmlPedanticParserDefaultValue = xmlPedanticParserDefaultValueThrDef; gs->xmlSaveNoEmptyTags = xmlSaveNoEmptyTagsThrDef; - gs->xmlSubstituteEntitiesDefaultValue = + gs->xmlSubstituteEntitiesDefaultValue = xmlSubstituteEntitiesDefaultValueThrDef; gs->xmlGenericError = xmlGenericErrorThrDef; gs->xmlStructuredError = xmlStructuredErrorThrDef; gs->xmlGenericErrorContext = xmlGenericErrorContextThrDef; + gs->xmlStructuredErrorContext = xmlStructuredErrorContextThrDef; gs->xmlRegisterNodeDefaultValue = xmlRegisterNodeDefaultValueThrDef; gs->xmlDeregisterNodeDefaultValue = xmlDeregisterNodeDefaultValueThrDef; @@ -572,7 +583,7 @@ void xmlThrDefSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler) { xmlMutexLock(xmlThrDefMutex); - xmlGenericErrorContextThrDef = ctx; + xmlStructuredErrorContextThrDef = ctx; xmlStructuredErrorThrDef = handler; xmlMutexUnlock(xmlThrDefMutex); } @@ -589,7 +600,7 @@ xmlRegisterNodeDefault(xmlRegisterNodeFunc func) { xmlRegisterNodeFunc old = xmlRegisterNodeDefaultValue; - + __xmlRegisterCallbacks = 1; xmlRegisterNodeDefaultValue = func; return(old); @@ -599,10 +610,10 @@ xmlThrDefRegisterNodeDefault(xmlRegisterNodeFunc func) { xmlRegisterNodeFunc old; - + xmlMutexLock(xmlThrDefMutex); old = xmlRegisterNodeDefaultValueThrDef; - + __xmlRegisterCallbacks = 1; xmlRegisterNodeDefaultValueThrDef = func; xmlMutexUnlock(xmlThrDefMutex); @@ -622,7 +633,7 @@ xmlDeregisterNodeDefault(xmlDeregisterNodeFunc func) { xmlDeregisterNodeFunc old = xmlDeregisterNodeDefaultValue; - + __xmlRegisterCallbacks = 1; xmlDeregisterNodeDefaultValue = func; return(old); @@ -635,7 +646,7 @@ xmlMutexLock(xmlThrDefMutex); old = xmlDeregisterNodeDefaultValueThrDef; - + __xmlRegisterCallbacks = 1; xmlDeregisterNodeDefaultValueThrDef = func; xmlMutexUnlock(xmlThrDefMutex); @@ -647,7 +658,7 @@ xmlThrDefParserInputBufferCreateFilenameDefault(xmlParserInputBufferCreateFilenameFunc func) { xmlParserInputBufferCreateFilenameFunc old; - + xmlMutexLock(xmlThrDefMutex); old = xmlParserInputBufferCreateFilenameValueThrDef; if (old == NULL) { @@ -664,7 +675,7 @@ xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func) { xmlOutputBufferCreateFilenameFunc old; - + xmlMutexLock(xmlThrDefMutex); old = xmlOutputBufferCreateFilenameValueThrDef; #ifdef LIBXML_OUTPUT_ENABLED @@ -721,7 +732,7 @@ if (IS_MAIN_THREAD) return (&xmlMalloc); else - return (&xmlGetGlobalState()->xmlMalloc); + return (&xmlGetGlobalState()->xmlMalloc); } #undef xmlMallocAtomic @@ -875,6 +886,15 @@ return (&xmlGetGlobalState()->xmlGenericErrorContext); } +#undef xmlStructuredErrorContext +void * * +__xmlStructuredErrorContext(void) { + if (IS_MAIN_THREAD) + return (&xmlStructuredErrorContext); + else + return (&xmlGetGlobalState()->xmlStructuredErrorContext); +} + #undef xmlGetWarningsDefaultValue int * __xmlGetWarningsDefaultValue(void) { @@ -909,7 +929,7 @@ return ret; } -#undef xmlTreeIndentString +#undef xmlTreeIndentString const char * * __xmlTreeIndentString(void) { if (IS_MAIN_THREAD) diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/globals.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/globals.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/globals.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/globals.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -28,8 +28,36 @@ XMLPUBFUN void XMLCALL xmlInitGlobals(void); XMLPUBFUN void XMLCALL xmlCleanupGlobals(void); -typedef xmlParserInputBufferPtr (*xmlParserInputBufferCreateFilenameFunc) (const char *URI, xmlCharEncoding enc); -typedef xmlOutputBufferPtr (*xmlOutputBufferCreateFilenameFunc) (const char *URI, xmlCharEncodingHandlerPtr encoder, int compression); +/** + * xmlParserInputBufferCreateFilenameFunc: + * @URI: the URI to read from + * @enc: the requested source encoding + * + * Signature for the function doing the lookup for a suitable input method + * corresponding to an URI. + * + * Returns the new xmlParserInputBufferPtr in case of success or NULL if no + * method was found. + */ +typedef xmlParserInputBufferPtr (*xmlParserInputBufferCreateFilenameFunc) (const char *URI, + xmlCharEncoding enc); + + +/** + * xmlOutputBufferCreateFilenameFunc: + * @URI: the URI to write to + * @enc: the requested target encoding + * + * Signature for the function doing the lookup for a suitable output method + * corresponding to an URI. + * + * Returns the new xmlOutputBufferPtr in case of success or NULL if no + * method was found. + */ +typedef xmlOutputBufferPtr (*xmlOutputBufferCreateFilenameFunc) (const char *URI, + xmlCharEncodingHandlerPtr encoder, + int compression); + XMLPUBFUN xmlParserInputBufferCreateFilenameFunc XMLCALL xmlParserInputBufferCreateFilenameDefault (xmlParserInputBufferCreateFilenameFunc func); XMLPUBFUN xmlOutputBufferCreateFilenameFunc @@ -52,6 +80,7 @@ #undef xmlGenericError #undef xmlStructuredError #undef xmlGenericErrorContext +#undef xmlStructuredErrorContext #undef xmlGetWarningsDefaultValue #undef xmlIndentTreeOutput #undef xmlTreeIndentString @@ -73,12 +102,24 @@ #undef xmlParserInputBufferCreateFilenameValue #undef xmlOutputBufferCreateFilenameValue +/** + * xmlRegisterNodeFunc: + * @node: the current node + * + * Signature for the registration callback of a created node + */ typedef void (*xmlRegisterNodeFunc) (xmlNodePtr node); +/** + * xmlDeregisterNodeFunc: + * @node: the current node + * + * Signature for the deregistration callback of a discarded node + */ typedef void (*xmlDeregisterNodeFunc) (xmlNodePtr node); typedef struct _xmlGlobalState xmlGlobalState; typedef xmlGlobalState *xmlGlobalStatePtr; -struct _xmlGlobalState +struct _xmlGlobalState { const char *xmlParserVersion; @@ -114,14 +155,16 @@ int xmlIndentTreeOutput; const char *xmlTreeIndentString; - xmlRegisterNodeFunc xmlRegisterNodeDefaultValue; - xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue; + xmlRegisterNodeFunc xmlRegisterNodeDefaultValue; + xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue; xmlMallocFunc xmlMallocAtomic; xmlError xmlLastError; xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue; xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue; + + void *xmlStructuredErrorContext; }; #ifdef __cplusplus @@ -143,10 +186,11 @@ XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlDeregisterNodeDefault(xmlDeregisterNodeFunc func); XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func); -XMLPUBFUN xmlOutputBufferCreateFilenameFunc XMLCALL +XMLPUBFUN xmlOutputBufferCreateFilenameFunc XMLCALL xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func); -XMLPUBFUN xmlParserInputBufferCreateFilenameFunc XMLCALL - xmlThrDefParserInputBufferCreateFilenameDefault(xmlParserInputBufferCreateFilenameFunc func); +XMLPUBFUN xmlParserInputBufferCreateFilenameFunc XMLCALL + xmlThrDefParserInputBufferCreateFilenameDefault( + xmlParserInputBufferCreateFilenameFunc func); /** DOC_DISABLE */ /* @@ -258,7 +302,8 @@ #else XMLPUBVAR xmlBufferAllocationScheme xmlBufferAllocScheme; #endif -XMLPUBFUN xmlBufferAllocationScheme XMLCALL xmlThrDefBufferAllocScheme(xmlBufferAllocationScheme v); +XMLPUBFUN xmlBufferAllocationScheme XMLCALL + xmlThrDefBufferAllocScheme(xmlBufferAllocationScheme v); XMLPUBFUN int * XMLCALL __xmlDefaultBufferSize(void); #ifdef LIBXML_THREAD_ENABLED @@ -318,6 +363,14 @@ XMLPUBVAR void * xmlGenericErrorContext; #endif +XMLPUBFUN void * * XMLCALL __xmlStructuredErrorContext(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlStructuredErrorContext \ +(*(__xmlStructuredErrorContext())) +#else +XMLPUBVAR void * xmlStructuredErrorContext; +#endif + XMLPUBFUN int * XMLCALL __xmlGetWarningsDefaultValue(void); #ifdef LIBXML_THREAD_ENABLED #define xmlGetWarningsDefaultValue \ @@ -432,7 +485,8 @@ XMLPUBVAR xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue; #endif -XMLPUBFUN xmlParserInputBufferCreateFilenameFunc * XMLCALL __xmlParserInputBufferCreateFilenameValue(void); +XMLPUBFUN xmlParserInputBufferCreateFilenameFunc * XMLCALL \ + __xmlParserInputBufferCreateFilenameValue(void); #ifdef LIBXML_THREAD_ENABLED #define xmlParserInputBufferCreateFilenameValue \ (*(__xmlParserInputBufferCreateFilenameValue())) diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/hash.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/hash.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/hash.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/hash.c 2015-12-23 07:08:27.000000000 +0000 @@ -3,7 +3,7 @@ * * Reference: Your favorite introductory book on algorithms * - * Copyright (C) 2000 Bjorn Reese and Daniel Veillard. + * Copyright (C) 2000,2012 Bjorn Reese and Daniel Veillard. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -21,6 +21,22 @@ #include "libxml.h" #include +#ifdef HAVE_STDLIB_H +#include +#endif +#ifdef HAVE_TIME_H +#include +#endif + +/* + * Following http://www.ocert.org/advisories/ocert-2011-003.html + * it seems that having hash randomization might be a good idea + * when using XML with untrusted data + */ +#if defined(HAVE_RAND) && defined(HAVE_SRAND) && defined(HAVE_TIME) +#define HASH_RANDOMIZATION +#endif + #include #include #include @@ -53,6 +69,9 @@ int size; int nbElems; xmlDictPtr dict; +#ifdef HASH_RANDOMIZATION + int random_seed; +#endif }; /* @@ -64,18 +83,23 @@ const xmlChar *name2, const xmlChar *name3) { unsigned long value = 0L; char ch; - + +#ifdef HASH_RANDOMIZATION + value = table->random_seed; +#endif if (name != NULL) { value += 30 * (*name); while ((ch = *name++) != 0) { value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch); } } + value = value ^ ((value << 5) + (value >> 3)); if (name2 != NULL) { while ((ch = *name2++) != 0) { value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch); } } + value = value ^ ((value << 5) + (value >> 3)); if (name3 != NULL) { while ((ch = *name3++) != 0) { value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch); @@ -91,7 +115,10 @@ const xmlChar *prefix3, const xmlChar *name3) { unsigned long value = 0L; char ch; - + +#ifdef HASH_RANDOMIZATION + value = table->random_seed; +#endif if (prefix != NULL) value += 30 * (*prefix); else @@ -108,6 +135,7 @@ value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch); } } + value = value ^ ((value << 5) + (value >> 3)); if (prefix2 != NULL) { while ((ch = *prefix2++) != 0) { value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch); @@ -119,6 +147,7 @@ value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch); } } + value = value ^ ((value << 5) + (value >> 3)); if (prefix3 != NULL) { while ((ch = *prefix3++) != 0) { value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch); @@ -144,10 +173,10 @@ xmlHashTablePtr xmlHashCreate(int size) { xmlHashTablePtr table; - + if (size <= 0) size = 256; - + table = xmlMalloc(sizeof(xmlHashTable)); if (table) { table->dict = NULL; @@ -155,8 +184,11 @@ table->nbElems = 0; table->table = xmlMalloc(size * sizeof(xmlHashEntry)); if (table->table) { - memset(table->table, 0, size * sizeof(xmlHashEntry)); - return(table); + memset(table->table, 0, size * sizeof(xmlHashEntry)); +#ifdef HASH_RANDOMIZATION + table->random_seed = __xmlRandom(); +#endif + return(table); } xmlFree(table); } @@ -202,7 +234,7 @@ #ifdef DEBUG_GROW unsigned long nbElem = 0; #endif - + if (table == NULL) return(-1); if (size < 8) @@ -214,7 +246,7 @@ oldtable = table->table; if (oldtable == NULL) return(-1); - + table->table = xmlMalloc(size * sizeof(xmlHashEntry)); if (table->table == NULL) { table->table = oldtable; @@ -224,13 +256,13 @@ table->size = size; /* If the two loops are merged, there would be situations where - a new entry needs to allocated and data copied into it from + a new entry needs to allocated and data copied into it from the main table. So instead, we run through the array twice, first copying all the elements in the main array (where we can't get conflicts) and then the rest, so we only free (and don't allocate) */ for (i = 0; i < oldsize; i++) { - if (oldtable[i].valid == 0) + if (oldtable[i].valid == 0) continue; key = xmlHashComputeKey(table, oldtable[i].name, oldtable[i].name2, oldtable[i].name3); @@ -254,8 +286,8 @@ table->table[key].next = NULL; xmlFree(iter); } else { - iter->next = table->table[key].next; - table->table[key].next = iter; + iter->next = table->table[key].next; + table->table[key].next = iter; } #ifdef DEBUG_GROW @@ -320,7 +352,6 @@ inside_table = 0; iter = next; } - inside_table = 0; } xmlFree(table->table); } @@ -572,7 +603,7 @@ entry->valid = 1; - if (insert != NULL) + if (insert != NULL) insert->next = entry; table->nbElems++; @@ -721,7 +752,7 @@ * Returns the a pointer to the userdata */ void * -xmlHashLookup3(xmlHashTablePtr table, const xmlChar *name, +xmlHashLookup3(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, const xmlChar *name3) { unsigned long key; xmlHashEntryPtr entry; @@ -794,14 +825,14 @@ void *data; } stubData; -static void -stubHashScannerFull (void *payload, void *data, const xmlChar *name, +static void +stubHashScannerFull (void *payload, void *data, const xmlChar *name, const xmlChar *name2 ATTRIBUTE_UNUSED, const xmlChar *name3 ATTRIBUTE_UNUSED) { stubData *stubdata = (stubData *) data; stubdata->hashscanner (payload, stubdata->data, (xmlChar *) name); -} - +} + /** * xmlHashScan: * @table: the hash table @@ -814,7 +845,7 @@ xmlHashScan(xmlHashTablePtr table, xmlHashScanner f, void *data) { stubData stubdata; stubdata.data = data; - stubdata.hashscanner = f; + stubdata.hashscanner = f; xmlHashScanFull (table, stubHashScannerFull, &stubdata); } @@ -828,7 +859,7 @@ */ void xmlHashScanFull(xmlHashTablePtr table, xmlHashScannerFull f, void *data) { - int i; + int i, nb; xmlHashEntryPtr iter; xmlHashEntryPtr next; @@ -839,15 +870,26 @@ if (table->table) { for(i = 0; i < table->size; i++) { - if (table->table[i].valid == 0) + if (table->table[i].valid == 0) continue; iter = &(table->table[i]); while (iter) { next = iter->next; + nb = table->nbElems; if ((f != NULL) && (iter->payload != NULL)) f(iter->payload, data, iter->name, iter->name2, iter->name3); - iter = next; + if (nb != table->nbElems) { + /* table was modified by the callback, be careful */ + if (iter == &(table->table[i])) { + if (table->table[i].valid == 0) + iter = NULL; + if (table->table[i].next != next) + iter = &(table->table[i]); + } else + iter = next; + } else + iter = next; } } } @@ -867,7 +909,7 @@ * the comparison is considered to match. */ void -xmlHashScan3(xmlHashTablePtr table, const xmlChar *name, +xmlHashScan3(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, const xmlChar *name3, xmlHashScanner f, void *data) { xmlHashScanFull3 (table, name, name2, name3, @@ -888,7 +930,7 @@ * the comparison is considered to match. */ void -xmlHashScanFull3(xmlHashTablePtr table, const xmlChar *name, +xmlHashScanFull3(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, const xmlChar *name3, xmlHashScannerFull f, void *data) { int i; @@ -942,6 +984,9 @@ return(NULL); ret = xmlHashCreate(table->size); + if (ret == NULL) + return(NULL); + if (table->table) { for(i = 0; i < table->size; i++) { if (table->table[i].valid == 0) diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/hash.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/hash.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/hash.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/hash.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -1,7 +1,7 @@ /* * Summary: Chained hash tables - * Description: This module implements the hash table support used in - * various places in the library. + * Description: This module implements the hash table support used in + * various places in the library. * * Copy: See Copyright for the status of this software. * @@ -108,40 +108,40 @@ XMLPUBFUN xmlHashTablePtr XMLCALL xmlHashCreateDict(int size, xmlDictPtr dict); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlHashFree (xmlHashTablePtr table, xmlHashDeallocator f); /* * Add a new entry to the hash table. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashAddEntry (xmlHashTablePtr table, const xmlChar *name, void *userdata); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashUpdateEntry(xmlHashTablePtr table, const xmlChar *name, void *userdata, xmlHashDeallocator f); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashAddEntry2(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, void *userdata); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashUpdateEntry2(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, void *userdata, xmlHashDeallocator f); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashAddEntry3(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, const xmlChar *name3, void *userdata); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashUpdateEntry3(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, @@ -152,13 +152,13 @@ /* * Remove an entry from the hash table. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name, xmlHashDeallocator f); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, xmlHashDeallocator f); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, const xmlChar *name3, xmlHashDeallocator f); @@ -166,29 +166,29 @@ /* * Retrieve the userdata. */ -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlHashLookup (xmlHashTablePtr table, const xmlChar *name); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlHashLookup2 (xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlHashLookup3 (xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, const xmlChar *name3); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlHashQLookup (xmlHashTablePtr table, const xmlChar *name, const xmlChar *prefix); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlHashQLookup2 (xmlHashTablePtr table, const xmlChar *name, const xmlChar *prefix, const xmlChar *name2, const xmlChar *prefix2); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlHashQLookup3 (xmlHashTablePtr table, const xmlChar *name, const xmlChar *prefix, @@ -200,27 +200,27 @@ /* * Helpers. */ -XMLPUBFUN xmlHashTablePtr XMLCALL +XMLPUBFUN xmlHashTablePtr XMLCALL xmlHashCopy (xmlHashTablePtr table, xmlHashCopier f); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashSize (xmlHashTablePtr table); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlHashScan (xmlHashTablePtr table, xmlHashScanner f, void *data); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlHashScan3 (xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, const xmlChar *name3, xmlHashScanner f, void *data); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlHashScanFull (xmlHashTablePtr table, xmlHashScannerFull f, void *data); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlHashScanFull3(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/HTMLparser.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/HTMLparser.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/HTMLparser.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/HTMLparser.c 2015-12-23 07:08:27.000000000 +0000 @@ -44,6 +44,9 @@ #include #include +#include "buf.h" +#include "enc.h" + #define HTML_MAX_NAMELEN 1000 #define HTML_PARSER_BIG_BUFFER_SIZE 1000 #define HTML_PARSER_BUFFER_SIZE 100 @@ -59,7 +62,7 @@ /************************************************************************ * * - * Some factorized error routines * + * Some factorized error routines * * * ************************************************************************/ @@ -147,7 +150,7 @@ /************************************************************************ * * - * Parser stacks related functions and macros * + * Parser stacks related functions and macros * * * ************************************************************************/ @@ -163,6 +166,10 @@ static int htmlnamePush(htmlParserCtxtPtr ctxt, const xmlChar * value) { + if ((ctxt->html < 3) && (xmlStrEqual(value, BAD_CAST "head"))) + ctxt->html = 3; + if ((ctxt->html < 10) && (xmlStrEqual(value, BAD_CAST "body"))) + ctxt->html = 10; if (ctxt->nameNr >= ctxt->nameMax) { ctxt->nameMax *= 2; ctxt->nameTab = (const xmlChar * *) @@ -205,6 +212,59 @@ return (ret); } +/** + * htmlNodeInfoPush: + * @ctxt: an HTML parser context + * @value: the node info + * + * Pushes a new element name on top of the node info stack + * + * Returns 0 in case of error, the index in the stack otherwise + */ +static int +htmlNodeInfoPush(htmlParserCtxtPtr ctxt, htmlParserNodeInfo *value) +{ + if (ctxt->nodeInfoNr >= ctxt->nodeInfoMax) { + if (ctxt->nodeInfoMax == 0) + ctxt->nodeInfoMax = 5; + ctxt->nodeInfoMax *= 2; + ctxt->nodeInfoTab = (htmlParserNodeInfo *) + xmlRealloc((htmlParserNodeInfo *)ctxt->nodeInfoTab, + ctxt->nodeInfoMax * + sizeof(ctxt->nodeInfoTab[0])); + if (ctxt->nodeInfoTab == NULL) { + htmlErrMemory(ctxt, NULL); + return (0); + } + } + ctxt->nodeInfoTab[ctxt->nodeInfoNr] = *value; + ctxt->nodeInfo = &ctxt->nodeInfoTab[ctxt->nodeInfoNr]; + return (ctxt->nodeInfoNr++); +} + +/** + * htmlNodeInfoPop: + * @ctxt: an HTML parser context + * + * Pops the top element name from the node info stack + * + * Returns 0 in case of error, the pointer to NodeInfo otherwise + */ +static htmlParserNodeInfo * +htmlNodeInfoPop(htmlParserCtxtPtr ctxt) +{ + if (ctxt->nodeInfoNr <= 0) + return (NULL); + ctxt->nodeInfoNr--; + if (ctxt->nodeInfoNr < 0) + return (NULL); + if (ctxt->nodeInfoNr > 0) + ctxt->nodeInfo = &ctxt->nodeInfoTab[ctxt->nodeInfoNr - 1]; + else + ctxt->nodeInfo = NULL; + return &ctxt->nodeInfoTab[ctxt->nodeInfoNr]; +} + /* * Macros for accessing the content. Those should be used only by the parser, * and not exported. @@ -263,8 +323,6 @@ #define NEXT xmlNextChar(ctxt) #define RAW (ctxt->token ? -1 : (*ctxt->input->cur)) -#define NXT(val) ctxt->input->cur[(val)] -#define CUR_PTR ctxt->input->cur #define NEXTL(l) do { \ @@ -273,7 +331,7 @@ } else ctxt->input->col++; \ ctxt->token = 0; ctxt->input->cur += l; ctxt->nbChars++; \ } while (0) - + /************ \ if (*ctxt->input->cur == '%') xmlParserHandlePEReference(ctxt); \ @@ -288,6 +346,58 @@ else i += xmlCopyChar(l,&b[i],v) /** + * htmlFindEncoding: + * @the HTML parser context + * + * Ty to find and encoding in the current data available in the input + * buffer this is needed to try to switch to the proper encoding when + * one face a character error. + * That's an heuristic, since it's operating outside of parsing it could + * try to use a meta which had been commented out, that's the reason it + * should only be used in case of error, not as a default. + * + * Returns an encoding string or NULL if not found, the string need to + * be freed + */ +static xmlChar * +htmlFindEncoding(xmlParserCtxtPtr ctxt) { + const xmlChar *start, *cur, *end; + + if ((ctxt == NULL) || (ctxt->input == NULL) || + (ctxt->input->encoding != NULL) || (ctxt->input->buf == NULL) || + (ctxt->input->buf->encoder != NULL)) + return(NULL); + if ((ctxt->input->cur == NULL) || (ctxt->input->end == NULL)) + return(NULL); + + start = ctxt->input->cur; + end = ctxt->input->end; + /* we also expect the input buffer to be zero terminated */ + if (*end != 0) + return(NULL); + + cur = xmlStrcasestr(start, BAD_CAST "HTTP-EQUIV"); + if (cur == NULL) + return(NULL); + cur = xmlStrcasestr(cur, BAD_CAST "CONTENT"); + if (cur == NULL) + return(NULL); + cur = xmlStrcasestr(cur, BAD_CAST "CHARSET="); + if (cur == NULL) + return(NULL); + cur += 8; + start = cur; + while (((*cur >= 'A') && (*cur <= 'Z')) || + ((*cur >= 'a') && (*cur <= 'z')) || + ((*cur >= '0') && (*cur <= '9')) || + (*cur == '-') || (*cur == '_') || (*cur == ':') || (*cur == '/')) + cur++; + if (cur == start) + return(NULL); + return(xmlStrndup(start, cur - start)); +} + +/** * htmlCurrentChar: * @ctxt: the HTML parser context * @len: pointer to the length of the char read @@ -309,7 +419,7 @@ if (ctxt->token != 0) { *len = 0; return(ctxt->token); - } + } if (ctxt->charset == XML_CHAR_ENCODING_UTF8) { /* * We are supposed to handle UTF8, check it's valid @@ -318,7 +428,7 @@ * UCS-4 range (hex.) UTF-8 octet sequence (binary) * 0000 0000-0000 007F 0xxxxxxx * 0000 0080-0000 07FF 110xxxxx 10xxxxxx - * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx + * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx * * Check for the 0x110000 limit too */ @@ -328,19 +438,25 @@ c = *cur; if (c & 0x80) { - if (cur[1] == 0) + if (cur[1] == 0) { xmlParserInputGrow(ctxt->input, INPUT_CHUNK); + cur = ctxt->input->cur; + } if ((cur[1] & 0xc0) != 0x80) goto encoding_error; if ((c & 0xe0) == 0xe0) { - if (cur[2] == 0) + if (cur[2] == 0) { xmlParserInputGrow(ctxt->input, INPUT_CHUNK); + cur = ctxt->input->cur; + } if ((cur[2] & 0xc0) != 0x80) goto encoding_error; if ((c & 0xf0) == 0xf0) { - if (cur[3] == 0) + if (cur[3] == 0) { xmlParserInputGrow(ctxt->input, INPUT_CHUNK); + cur = ctxt->input->cur; + } if (((c & 0xf8) != 0xf0) || ((cur[3] & 0xc0) != 0x80)) goto encoding_error; @@ -366,9 +482,16 @@ if (!IS_CHAR(val)) { htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR, "Char 0x%X out of allowed range\n", val); - } + } return(val); } else { + if ((*ctxt->input->cur == 0) && + (ctxt->input->cur < ctxt->input->end)) { + htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR, + "Char 0x%X out of allowed range\n", 0); + *len = 1; + return(' '); + } /* 1-byte code */ *len = 1; return((int) *ctxt->input->cur); @@ -386,8 +509,28 @@ /* * Humm this is bad, do an automatic flow conversion */ - xmlSwitchEncoding(ctxt, XML_CHAR_ENCODING_8859_1); - ctxt->charset = XML_CHAR_ENCODING_UTF8; + { + xmlChar * guess; + xmlCharEncodingHandlerPtr handler; + + guess = htmlFindEncoding(ctxt); + if (guess == NULL) { + xmlSwitchEncoding(ctxt, XML_CHAR_ENCODING_8859_1); + } else { + if (ctxt->input->encoding != NULL) + xmlFree((xmlChar *) ctxt->input->encoding); + ctxt->input->encoding = guess; + handler = xmlFindCharEncodingHandler((const char *) guess); + if (handler != NULL) { + xmlSwitchToEncoding(ctxt, handler); + } else { + htmlParseErr(ctxt, XML_ERR_INVALID_ENCODING, + "Unsupported encoding %s", guess, NULL); + } + } + ctxt->charset = XML_CHAR_ENCODING_UTF8; + } + return(xmlCurrentChar(ctxt, len)); encoding_error: @@ -401,15 +544,19 @@ { char buffer[150]; - snprintf(buffer, 149, "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n", - ctxt->input->cur[0], ctxt->input->cur[1], - ctxt->input->cur[2], ctxt->input->cur[3]); + if (ctxt->input->end - ctxt->input->cur >= 4) { + snprintf(buffer, 149, "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n", + ctxt->input->cur[0], ctxt->input->cur[1], + ctxt->input->cur[2], ctxt->input->cur[3]); + } else { + snprintf(buffer, 149, "Bytes: 0x%02X\n", ctxt->input->cur[0]); + } htmlParseErr(ctxt, XML_ERR_INVALID_ENCODING, "Input is not proper UTF-8, indicate encoding !\n", BAD_CAST buffer, NULL); } - ctxt->charset = XML_CHAR_ENCODING_8859_1; + ctxt->charset = XML_CHAR_ENCODING_8859_1; *len = 1; return((int) *ctxt->input->cur); } @@ -449,7 +596,7 @@ /************************************************************************ * * - * The list of HTML elements and their properties * + * The list of HTML elements and their properties * * * ************************************************************************/ @@ -472,11 +619,11 @@ #define NB_FONTSTYLE 8 #define PHRASE "em", "strong", "dfn", "code", "samp", "kbd", "var", "cite", "abbr", "acronym" #define NB_PHRASE 10 -#define SPECIAL "a", "img", "applet", "object", "font", "basefont", "br", "script", "map", "q", "sub", "sup", "span", "bdo", "iframe" -#define NB_SPECIAL 15 -#define INLINE PCDATA FONTSTYLE PHRASE SPECIAL FORMCTRL +#define SPECIAL "a", "img", "applet", "embed", "object", "font", "basefont", "br", "script", "map", "q", "sub", "sup", "span", "bdo", "iframe" +#define NB_SPECIAL 16 +#define INLINE FONTSTYLE, PHRASE, SPECIAL, FORMCTRL #define NB_INLINE NB_PCDATA + NB_FONTSTYLE + NB_PHRASE + NB_SPECIAL + NB_FORMCTRL -#define BLOCK HEADING, LIST "pre", "p", "dl", "div", "center", "noscript", "noframes", "blockquote", "form", "isindex", "hr", "table", "fieldset", "address" +#define BLOCK HEADING, LIST, "pre", "p", "dl", "div", "center", "noscript", "noframes", "blockquote", "form", "isindex", "hr", "table", "fieldset", "address" #define NB_BLOCK NB_HEADING + NB_LIST + 14 #define FORMCTRL "input", "select", "textarea", "label", "button" #define NB_FORMCTRL 5 @@ -572,6 +719,7 @@ static const char* const html_content[] = { "head", "body", "frameset", NULL } ; static const char* const iframe_attrs[] = { COREATTRS, "longdesc", "name", "src", "frameborder", "marginwidth", "marginheight", "scrolling", "align", "height", "width", NULL } ; static const char* const img_attrs[] = { ATTRS, "longdesc", "name", "height", "width", "usemap", "ismap", NULL } ; +static const char* const embed_attrs[] = { COREATTRS, "align", "alt", "border", "code", "codebase", "frameborder", "height", "hidden", "hspace", "name", "palette", "pluginspace", "pluginurl", "src", "type", "units", "vspace", "width", NULL } ; static const char* const input_attrs[] = { ATTRS, "type", "name", "value", "checked", "disabled", "readonly", "size", "maxlength", "src", "alt", "usemap", "ismap", "tabindex", "accesskey", "onfocus", "onblur", "onselect", "onchange", "accept", NULL } ; static const char* const prompt_attrs[] = { COREATTRS, I18N, "prompt", NULL } ; static const char* const label_attrs[] = { ATTRS, "for", "accesskey", "onfocus", "onblur", NULL } ; @@ -582,7 +730,7 @@ static const char* const name_attr[] = { "name", NULL } ; static const char* const action_attr[] = { "action", NULL } ; static const char* const blockli_elt[] = { BLOCK, "li", NULL } ; -static const char* const meta_attrs[] = { I18N, "http-equiv", "name", "scheme", NULL } ; +static const char* const meta_attrs[] = { I18N, "http-equiv", "name", "scheme", "charset", NULL } ; static const char* const content_attr[] = { "content", NULL } ; static const char* const type_attr[] = { "type", NULL } ; static const char* const noframes_content[] = { "body", FLOW MODIFIER, NULL } ; @@ -601,7 +749,7 @@ static const char* const select_content[] = { "optgroup", "option", NULL } ; static const char* const select_attrs[] = { ATTRS, "name", "size", "multiple", "disabled", "tabindex", "onfocus", "onblur", "onchange", NULL } ; static const char* const style_attrs[] = { I18N, "media", "title", NULL } ; -static const char* const table_attrs[] = { ATTRS "summary", "width", "border", "frame", "rules", "cellspacing", "cellpadding", "datapagesize", NULL } ; +static const char* const table_attrs[] = { ATTRS, "summary", "width", "border", "frame", "rules", "cellspacing", "cellpadding", "datapagesize", NULL } ; static const char* const table_depr[] = { "align", "bgcolor", NULL } ; static const char* const table_contents[] = { "caption", "col", "colgroup", "thead", "tfoot", "tbody", "tr", NULL} ; static const char* const tr_elt[] = { "tr", NULL } ; @@ -698,7 +846,7 @@ DECL html_flow, NULL, DECL html_attrs, DECL align_attr, NULL }, { "dl", 0, 0, 0, 0, 0, 0, 0, "definition list ", - DECL dl_contents , "dd" , html_attrs, DECL compact_attr, NULL + DECL dl_contents , "dd" , DECL html_attrs, DECL compact_attr, NULL }, { "dt", 0, 1, 0, 0, 0, 0, 0, "definition term ", DECL html_inline, NULL, DECL html_attrs, NULL, NULL @@ -706,6 +854,9 @@ { "em", 0, 3, 0, 0, 0, 0, 1, "emphasis", DECL html_inline, NULL, DECL html_attrs, NULL, NULL }, +{ "embed", 0, 1, 0, 0, 1, 1, 1, "generic embedded object ", + EMPTY, NULL, DECL embed_attrs, NULL, NULL +}, { "fieldset", 0, 0, 0, 0, 0, 0, 0, "form control group ", DECL fieldset_contents , NULL, DECL html_attrs, NULL, NULL }, @@ -755,7 +906,7 @@ DECL html_flow, NULL, NULL, DECL iframe_attrs, NULL }, { "img", 0, 2, 2, 1, 0, 0, 1, "embedded image ", - EMPTY, NULL, DECL img_attrs, DECL align_attr, src_alt_attrs + EMPTY, NULL, DECL img_attrs, DECL align_attr, DECL src_alt_attrs }, { "input", 0, 2, 2, 1, 0, 0, 1, "form control ", EMPTY, NULL, DECL input_attrs , DECL align_attr, NULL @@ -782,7 +933,7 @@ EMPTY, NULL, DECL link_attrs, DECL target_attr, NULL }, { "map", 0, 0, 0, 0, 0, 0, 2, "client-side image map ", - DECL map_contents , NULL, DECL html_attrs , NULL, name_attr + DECL map_contents , NULL, DECL html_attrs , NULL, DECL name_attr }, { "menu", 0, 0, 0, 0, 1, 1, 0, "menu list ", DECL blockli_elt , NULL, NULL, DECL compact_attrs, NULL @@ -803,7 +954,7 @@ DECL li_elt , "li" , DECL html_attrs, DECL ol_attrs, NULL }, { "optgroup", 0, 0, 0, 0, 0, 0, 0, "option group ", - option_elt , "option", DECL optgroup_attrs, NULL, DECL label_attr + DECL option_elt , "option", DECL optgroup_attrs, NULL, DECL label_attr }, { "option", 0, 1, 0, 0, 0, 0, 0, "selectable choice " , DECL html_pcdata, NULL, DECL option_attrs, NULL, NULL @@ -812,7 +963,7 @@ DECL html_inline, NULL, DECL html_attrs, DECL align_attr, NULL }, { "param", 0, 2, 2, 1, 0, 0, 0, "named property value ", - EMPTY, NULL, DECL param_attrs, NULL, name_attr + EMPTY, NULL, DECL param_attrs, NULL, DECL name_attr }, { "pre", 0, 0, 0, 0, 0, 0, 0, "preformatted text ", DECL pre_content, NULL, DECL html_attrs, DECL width_attr, NULL @@ -930,18 +1081,18 @@ "listing", "xmp", NULL, "ol", "p", "head", "ul", NULL, "menu", "p", "head", "ul", NULL, -"p", "p", "head", "h1", "h2", "h3", "h4", "h5", "h6", NULL, +"p", "p", "head", "h1", "h2", "h3", "h4", "h5", "h6", FONTSTYLE, NULL, "div", "p", "head", NULL, -"noscript", "p", "head", NULL, +"noscript", "p", NULL, "center", "font", "b", "i", "p", "head", NULL, -"a", "a", NULL, +"a", "a", "head", NULL, "caption", "p", NULL, "colgroup", "caption", "colgroup", "col", "p", NULL, "col", "caption", "col", "p", NULL, "table", "p", "head", "h1", "h2", "h3", "h4", "h5", "h6", "pre", "listing", "xmp", "a", NULL, "th", "th", "td", "p", "span", "font", "a", "b", "i", "u", NULL, -"td", "th", "td", "p", "span", "font", "a", "b", "i", "u", NULL, +"td", "th", "td", "p", "span", "font", "a", "b", "i", "u", NULL, "tr", "th", "td", "tr", "caption", "col", "colgroup", "p", NULL, "thead", "caption", "col", "colgroup", NULL, "tfoot", "th", "td", "tr", "caption", "col", "colgroup", "thead", @@ -952,6 +1103,43 @@ "option", "option", NULL, "fieldset", "legend", "p", "head", "h1", "h2", "h3", "h4", "h5", "h6", "pre", "listing", "xmp", "a", NULL, +/* most tags in in FONTSTYLE, PHRASE and SPECIAL should close */ +"tt", "head", NULL, +"i", "head", NULL, +"b", "head", NULL, +"u", "head", NULL, +"s", "head", NULL, +"strike", "head", NULL, +"big", "head", NULL, +"small", "head", NULL, + +"em", "head", NULL, +"strong", "head", NULL, +"dfn", "head", NULL, +"code", "head", NULL, +"samp", "head", NULL, +"kbd", "head", NULL, +"var", "head", NULL, +"cite", "head", NULL, +"abbr", "head", NULL, +"acronym", "head", NULL, + +/* "a" */ +"img", "head", NULL, +/* "applet" */ +/* "embed" */ +/* "object" */ +"font", "head", NULL, +/* "basefont" */ +"br", "head", NULL, +/* "script" */ +"map", "head", NULL, +"q", "head", NULL, +"sub", "head", NULL, +"sup", "head", NULL, +"span", "head", NULL, +"bdo", "head", NULL, +"iframe", "head", NULL, NULL }; @@ -989,7 +1177,7 @@ "onfocus", "onblur", "onsubmit", - "onrest", + "onreset", "onchange", "onselect" }; @@ -1000,7 +1188,7 @@ * elements the parser can decide how to handle extra endtags. * Endtags are only allowed to close elements with lower or equal * priority. - */ + */ typedef struct { const char *name; @@ -1027,7 +1215,7 @@ /************************************************************************ * * - * functions to handle HTML specific data * + * functions to handle HTML specific data * * * ************************************************************************/ @@ -1077,7 +1265,7 @@ /** * htmlGetEndPriority: * @name: The name of the element to look up the priority for. - * + * * Return value: The "endtag" priority. **/ static int @@ -1156,7 +1344,7 @@ * A missplaced endtag can only close elements with lower * or equal priority, so if we find an element with higher * priority before we find an element with - * matching name, we just ignore this endtag + * matching name, we just ignore this endtag */ if (htmlGetEndPriority(ctxt->nameTab[i]) > priority) return; @@ -1207,7 +1395,7 @@ * called when a new tag has been detected and generates the * appropriates closes if possible/needed. * If newtag is NULL this mean we are at the end of the resource - * and we should check + * and we should check */ static void htmlAutoClose(htmlParserCtxtPtr ctxt, const xmlChar * newtag) @@ -1295,6 +1483,10 @@ */ static void htmlCheckImplied(htmlParserCtxtPtr ctxt, const xmlChar *newtag) { + int i; + + if (ctxt->options & HTML_PARSE_NOIMPLIED) + return; if (!htmlOmittedDefaultValue) return; if (xmlStrEqual(newtag, BAD_CAST"html")) @@ -1306,24 +1498,31 @@ } if ((xmlStrEqual(newtag, BAD_CAST"body")) || (xmlStrEqual(newtag, BAD_CAST"head"))) return; - if ((ctxt->nameNr <= 1) && + if ((ctxt->nameNr <= 1) && ((xmlStrEqual(newtag, BAD_CAST"script")) || (xmlStrEqual(newtag, BAD_CAST"style")) || (xmlStrEqual(newtag, BAD_CAST"meta")) || (xmlStrEqual(newtag, BAD_CAST"link")) || (xmlStrEqual(newtag, BAD_CAST"title")) || (xmlStrEqual(newtag, BAD_CAST"base")))) { - /* - * dropped OBJECT ... i you put it first BODY will be - * assumed ! - */ - htmlnamePush(ctxt, BAD_CAST"head"); - if ((ctxt->sax != NULL) && (ctxt->sax->startElement != NULL)) - ctxt->sax->startElement(ctxt->userData, BAD_CAST"head", NULL); + if (ctxt->html >= 3) { + /* we already saw or generated an before */ + return; + } + /* + * dropped OBJECT ... i you put it first BODY will be + * assumed ! + */ + htmlnamePush(ctxt, BAD_CAST"head"); + if ((ctxt->sax != NULL) && (ctxt->sax->startElement != NULL)) + ctxt->sax->startElement(ctxt->userData, BAD_CAST"head", NULL); } else if ((!xmlStrEqual(newtag, BAD_CAST"noframes")) && (!xmlStrEqual(newtag, BAD_CAST"frame")) && (!xmlStrEqual(newtag, BAD_CAST"frameset"))) { - int i; + if (ctxt->html >= 10) { + /* we already saw or generated a before */ + return; + } for (i = 0;i < ctxt->nameNr;i++) { if (xmlStrEqual(ctxt->nameTab[i], BAD_CAST"body")) { return; @@ -1332,7 +1531,7 @@ return; } } - + htmlnamePush(ctxt, BAD_CAST"body"); if ((ctxt->sax != NULL) && (ctxt->sax->startElement != NULL)) ctxt->sax->startElement(ctxt->userData, BAD_CAST"body", NULL); @@ -1394,12 +1593,12 @@ unsigned int i; if (name == NULL) - return(0); + return(0); /* * all script attributes start with 'on' */ if ((name[0] != 'o') || (name[1] != 'n')) - return(0); + return(0); for (i = 0; i < sizeof(htmlScriptAttributes)/sizeof(htmlScriptAttributes[0]); i++) { @@ -1411,7 +1610,7 @@ /************************************************************************ * * - * The list of HTML predefined entities * + * The list of HTML predefined entities * * * ************************************************************************/ @@ -1825,7 +2024,7 @@ if (inend - in < trailing) { break; - } + } for ( ; trailing; trailing--) { if ((in >= inend) || (((d= *in++) & 0xC0) != 0x80)) @@ -1842,6 +2041,8 @@ } else { int len; const htmlEntityDesc * ent; + const char *cp; + char nbuf[16]; /* * Try to lookup a predefined HTML entity for it @@ -1849,16 +2050,16 @@ ent = htmlEntityValueLookup(c); if (ent == NULL) { - /* no chance for this in Ascii */ - *outlen = out - outstart; - *inlen = processed - instart; - return(-2); + snprintf(nbuf, sizeof(nbuf), "#%u", c); + cp = nbuf; } - len = strlen(ent->name); + else + cp = ent->name; + len = strlen(cp); if (out + 2 + len >= outend) break; *out++ = '&'; - memcpy(out, ent->name, len); + memcpy(out, cp, len); out += len; *out++ = ';'; } @@ -2013,7 +2214,7 @@ * * ************************************************************************/ /* - * all tags allowing pc data from the html 4.01 loose dtd + * all tags allowing pc data from the html 4.01 loose dtd * NOTE: it might be more apropriate to integrate this information * into the html40ElementTable array but I don't want to risk any * binary incomptibility @@ -2073,7 +2274,7 @@ if (lastChild == NULL) { if ((ctxt->node->type != XML_ELEMENT_NODE) && (ctxt->node->content != NULL)) return(0); - /* keep ws in constructs like ... ... + /* keep ws in constructs like ... ... for all tags "b" allowing PCDATA */ for ( i = 0; i < sizeof(allowPCData)/sizeof(allowPCData[0]); i++ ) { if ( xmlStrEqual(ctxt->name, BAD_CAST allowPCData[i]) ) { @@ -2083,7 +2284,7 @@ } else if (xmlNodeIsText(lastChild)) { return(0); } else { - /* keep ws in constructs like

    xy z

    + /* keep ws in constructs like

    xy z

    for all tags "p" allowing PCDATA */ for ( i = 0; i < sizeof(allowPCData)/sizeof(allowPCData[0]); i++ ) { if ( xmlStrEqual(lastChild->name, BAD_CAST allowPCData[i]) ) { @@ -2123,7 +2324,7 @@ cur->intSubset = NULL; cur->doc = cur; cur->name = NULL; - cur->children = NULL; + cur->children = NULL; cur->extSubset = NULL; cur->oldNs = NULL; cur->encoding = NULL; @@ -2133,6 +2334,7 @@ cur->refs = NULL; cur->_private = NULL; cur->charset = XML_CHAR_ENCODING_UTF8; + cur->properties = XML_DOC_HTML | XML_DOC_USERBUILT; if ((ExternalID != NULL) || (URI != NULL)) xmlCreateIntSubset(cur, BAD_CAST "html", ExternalID, URI); @@ -2190,21 +2392,54 @@ xmlChar loc[HTML_PARSER_BUFFER_SIZE]; if (!IS_ASCII_LETTER(CUR) && (CUR != '_') && - (CUR != ':')) return(NULL); + (CUR != ':') && (CUR != '.')) return(NULL); while ((i < HTML_PARSER_BUFFER_SIZE) && ((IS_ASCII_LETTER(CUR)) || (IS_ASCII_DIGIT(CUR)) || - (CUR == ':') || (CUR == '-') || (CUR == '_'))) { + (CUR == ':') || (CUR == '-') || (CUR == '_') || + (CUR == '.'))) { if ((CUR >= 'A') && (CUR <= 'Z')) loc[i] = CUR + 0x20; else loc[i] = CUR; i++; - + NEXT; } - + + return(xmlDictLookup(ctxt->dict, loc, i)); +} + + +/** + * htmlParseHTMLName_nonInvasive: + * @ctxt: an HTML parser context + * + * parse an HTML tag or attribute name, note that we convert it to lowercase + * since HTML names are not case-sensitive, this doesn't consume the data + * from the stream, it's a look-ahead + * + * Returns the Tag Name parsed or NULL + */ + +static const xmlChar * +htmlParseHTMLName_nonInvasive(htmlParserCtxtPtr ctxt) { + int i = 0; + xmlChar loc[HTML_PARSER_BUFFER_SIZE]; + + if (!IS_ASCII_LETTER(NXT(1)) && (NXT(1) != '_') && + (NXT(1) != ':')) return(NULL); + + while ((i < HTML_PARSER_BUFFER_SIZE) && + ((IS_ASCII_LETTER(NXT(1+i))) || (IS_ASCII_DIGIT(NXT(1+i))) || + (NXT(1+i) == ':') || (NXT(1+i) == '-') || (NXT(1+i) == '_'))) { + if ((NXT(1+i) >= 'A') && (NXT(1+i) <= 'Z')) loc[i] = NXT(1+i) + 0x20; + else loc[i] = NXT(1+i); + i++; + } + return(xmlDictLookup(ctxt->dict, loc, i)); } + /** * htmlParseName: * @ctxt: an HTML parser context @@ -2268,7 +2503,7 @@ while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */ ((IS_LETTER(c)) || (IS_DIGIT(c)) || (c == '.') || (c == '-') || - (c == '_') || (c == ':') || + (c == '_') || (c == ':') || (IS_COMBINING(c)) || (IS_EXTENDER(c)))) { if (count++ > 100) { @@ -2287,7 +2522,7 @@ * htmlParseHTMLAttribute: * @ctxt: an HTML parser context * @stop: a char stop value - * + * * parse an HTML attribute value till the stop (quote), if * stop is 0 then it stops at the first space * @@ -2332,13 +2567,13 @@ { *out++ =((c >> 6) & 0x1F) | 0xC0; bits= 0; } else if (c < 0x10000) { *out++ =((c >> 12) & 0x0F) | 0xE0; bits= 6; } - else + else { *out++ =((c >> 18) & 0x07) | 0xF0; bits= 12; } - + for ( ; bits >= 0; bits-= 6) { *out++ = ((c >> bits) & 0x3F) | 0x80; } - + if (out - buffer > buffer_size - 100) { int indx = out - buffer; @@ -2384,9 +2619,9 @@ { *out++ =((c >> 6) & 0x1F) | 0xC0; bits= 0; } else if (c < 0x10000) { *out++ =((c >> 12) & 0x0F) | 0xE0; bits= 6; } - else + else { *out++ =((c >> 18) & 0x07) | 0xF0; bits= 12; } - + for ( ; bits >= 0; bits-= 6) { *out++ = ((c >> bits) & 0x3F) | 0x80; } @@ -2409,16 +2644,16 @@ { *out++ =((c >> 6) & 0x1F) | 0xC0; bits= 0; } else if (c < 0x10000) { *out++ =((c >> 12) & 0x0F) | 0xE0; bits= 6; } - else + else { *out++ =((c >> 18) & 0x07) | 0xF0; bits= 12; } - + for ( ; bits >= 0; bits-= 6) { *out++ = ((c >> bits) & 0x3F) | 0x80; } NEXT; } } - *out++ = 0; + *out = 0; return(buffer); } @@ -2479,7 +2714,7 @@ * parse a value for an attribute * Note: the parser won't do substitution of entities here, this * will be handled later in xmlStringGetNodeList, unless it was - * asked for ctxt->replaceEntities != 0 + * asked for ctxt->replaceEntities != 0 * * Returns the AttValue parsed or NULL. */ @@ -2520,7 +2755,7 @@ /** * htmlParseSystemLiteral: * @ctxt: an HTML parser context - * + * * parse an HTML Literal * * [11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'") @@ -2561,7 +2796,7 @@ htmlParseErr(ctxt, XML_ERR_LITERAL_NOT_STARTED, " or ' expected\n", NULL, NULL); } - + return(ret); } @@ -2610,7 +2845,7 @@ htmlParseErr(ctxt, XML_ERR_LITERAL_NOT_STARTED, "PubidLiteral \" or ' expected\n", NULL, NULL); } - + return(ret); } @@ -2644,23 +2879,7 @@ SHRINK; cur = CUR_CHAR(l); while (IS_CHAR_CH(cur)) { - if ((cur == '<') && (NXT(1) == '!') && (NXT(2) == '-') && - (NXT(3) == '-')) { - if ((nbchar != 0) && (ctxt->sax != NULL) && (!ctxt->disableSAX)) { - if (ctxt->sax->cdataBlock!= NULL) { - /* - * Insert as CDATA, which is the same as HTML_PRESERVE_NODE - */ - ctxt->sax->cdataBlock(ctxt->userData, buf, nbchar); - } else if (ctxt->sax->characters != NULL) { - ctxt->sax->characters(ctxt->userData, buf, nbchar); - } - } - nbchar = 0; - htmlParseComment(ctxt); - cur = CUR_CHAR(l); - continue; - } else if ((cur == '<') && (NXT(1) == '/')) { + if ((cur == '<') && (NXT(1) == '/')) { /* * One should break here, the specification is clear: * Authors should therefore escape "recovery) { - if (xmlStrncasecmp(ctxt->name, ctxt->input->cur+2, - xmlStrlen(ctxt->name)) == 0) + if (xmlStrncasecmp(ctxt->name, ctxt->input->cur+2, + xmlStrlen(ctxt->name)) == 0) { break; /* while */ } else { @@ -2684,7 +2903,7 @@ } } else { if (((NXT(2) >= 'A') && (NXT(2) <= 'Z')) || - ((NXT(2) >= 'a') && (NXT(2) <= 'z'))) + ((NXT(2) >= 'a') && (NXT(2) <= 'z'))) { break; /* while */ } @@ -2708,9 +2927,11 @@ } if ((!(IS_CHAR_CH(cur))) && (!((cur == 0) && (ctxt->progressive)))) { - htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR, - "Invalid char in CDATA 0x%X\n", cur); - NEXT; + htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR, + "Invalid char in CDATA 0x%X\n", cur); + if (ctxt->input->cur < ctxt->input->end) { + NEXT; + } } if ((nbchar != 0) && (ctxt->sax != NULL) && (!ctxt->disableSAX)) { @@ -2727,8 +2948,9 @@ /** - * htmlParseCharData: + * htmlParseCharDataInternal: * @ctxt: an HTML parser context + * @readahead: optional read ahead character in ascii range * * parse a CharData section. * if we are within a CDATA section ']]>' marks an end of section. @@ -2737,26 +2959,40 @@ */ static void -htmlParseCharData(htmlParserCtxtPtr ctxt) { - xmlChar buf[HTML_PARSER_BIG_BUFFER_SIZE + 5]; +htmlParseCharDataInternal(htmlParserCtxtPtr ctxt, int readahead) { + xmlChar buf[HTML_PARSER_BIG_BUFFER_SIZE + 6]; int nbchar = 0; int cur, l; + int chunk = 0; + + if (readahead) + buf[nbchar++] = readahead; SHRINK; cur = CUR_CHAR(l); while (((cur != '<') || (ctxt->token == '<')) && - ((cur != '&') || (ctxt->token == '&')) && - (IS_CHAR(cur))) { - COPY_BUF(l,buf,nbchar,cur); + ((cur != '&') || (ctxt->token == '&')) && + (cur != 0)) { + if (!(IS_CHAR(cur))) { + htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR, + "Invalid char in CDATA 0x%X\n", cur); + } else { + COPY_BUF(l,buf,nbchar,cur); + } if (nbchar >= HTML_PARSER_BIG_BUFFER_SIZE) { /* * Ok the segment is to be consumed as chars. */ if ((ctxt->sax != NULL) && (!ctxt->disableSAX)) { if (areBlanks(ctxt, buf, nbchar)) { - if (ctxt->sax->ignorableWhitespace != NULL) - ctxt->sax->ignorableWhitespace(ctxt->userData, - buf, nbchar); + if (ctxt->keepBlanks) { + if (ctxt->sax->characters != NULL) + ctxt->sax->characters(ctxt->userData, buf, nbchar); + } else { + if (ctxt->sax->ignorableWhitespace != NULL) + ctxt->sax->ignorableWhitespace(ctxt->userData, + buf, nbchar); + } } else { htmlCheckParagraph(ctxt); if (ctxt->sax->characters != NULL) @@ -2766,6 +3002,12 @@ nbchar = 0; } NEXTL(l); + chunk++; + if (chunk > HTML_PARSER_BUFFER_SIZE) { + chunk = 0; + SHRINK; + GROW; + } cur = CUR_CHAR(l); if (cur == 0) { SHRINK; @@ -2781,8 +3023,14 @@ */ if ((ctxt->sax != NULL) && (!ctxt->disableSAX)) { if (areBlanks(ctxt, buf, nbchar)) { - if (ctxt->sax->ignorableWhitespace != NULL) - ctxt->sax->ignorableWhitespace(ctxt->userData, buf, nbchar); + if (ctxt->keepBlanks) { + if (ctxt->sax->characters != NULL) + ctxt->sax->characters(ctxt->userData, buf, nbchar); + } else { + if (ctxt->sax->ignorableWhitespace != NULL) + ctxt->sax->ignorableWhitespace(ctxt->userData, + buf, nbchar); + } } else { htmlCheckParagraph(ctxt); if (ctxt->sax->characters != NULL) @@ -2799,6 +3047,21 @@ } /** + * htmlParseCharData: + * @ctxt: an HTML parser context + * + * parse a CharData section. + * if we are within a CDATA section ']]>' marks an end of section. + * + * [14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*) + */ + +static void +htmlParseCharData(htmlParserCtxtPtr ctxt) { + htmlParseCharDataInternal(ctxt, 0); +} + +/** * htmlParseExternalID: * @ctxt: an HTML parser context * @publicID: a xmlChar** receiving PubidLiteral @@ -2960,7 +3223,7 @@ } xmlFree(buf); } else { - htmlParseErr(ctxt, XML_ERR_PI_NOT_STARTED, + htmlParseErr(ctxt, XML_ERR_PI_NOT_STARTED, "PI is not started correctly", NULL, NULL); } ctxt->instate = state; @@ -3001,12 +3264,17 @@ ctxt->instate = state; return; } + len = 0; + buf[len] = 0; q = CUR_CHAR(ql); + if (!IS_CHAR(q)) + goto unfinished; NEXTL(ql); r = CUR_CHAR(rl); + if (!IS_CHAR(r)) + goto unfinished; NEXTL(rl); cur = CUR_CHAR(l); - len = 0; while (IS_CHAR(cur) && ((cur != '>') || (r != '-') || (q != '-'))) { @@ -3037,18 +3305,20 @@ } } buf[len] = 0; - if (!IS_CHAR(cur)) { - htmlParseErr(ctxt, XML_ERR_COMMENT_NOT_FINISHED, - "Comment not terminated \n */ - base += 2; - } - } - if (incomment) { - if (base + 3 > len) - return(-1); - if ((buf[base] == '-') && (buf[base + 1] == '-') && - (buf[base + 2] == '>')) { - incomment = 0; - base += 2; - } - continue; - } + if (third) + len -= 2; + else if (next) + len--; + for (; base < len; base++) { + if ((!incomment) && (base + 4 < len) && (!iscomment)) { + if ((buf[base] == '<') && (buf[base + 1] == '!') && + (buf[base + 2] == '-') && (buf[base + 3] == '-')) { + incomment = 1; + /* do not increment past */ + base += 2; + } + } + if (ignoreattrval) { + if (buf[base] == '"' || buf[base] == '\'') { + if (invalue) { + if (buf[base] == valdellim) { + invalue = 0; + continue; + } + } else { + valdellim = buf[base]; + invalue = 1; + continue; + } + } else if (invalue) { + continue; + } + } + if (incomment) { + if (base + 3 > len) + return (-1); + if ((buf[base] == '-') && (buf[base + 1] == '-') && + (buf[base + 2] == '>')) { + incomment = 0; + base += 2; + } + continue; + } if (buf[base] == first) { - if (third != 0) { - if ((buf[base + 1] != next) || - (buf[base + 2] != third)) continue; - } else if (next != 0) { - if (buf[base + 1] != next) continue; - } - ctxt->checkIndex = 0; + if (third != 0) { + if ((buf[base + 1] != next) || (buf[base + 2] != third)) + continue; + } else if (next != 0) { + if (buf[base + 1] != next) + continue; + } + ctxt->checkIndex = 0; #ifdef DEBUG_PUSH - if (next == 0) - xmlGenericError(xmlGenericErrorContext, - "HPP: lookup '%c' found at %d\n", - first, base); - else if (third == 0) - xmlGenericError(xmlGenericErrorContext, - "HPP: lookup '%c%c' found at %d\n", - first, next, base); - else - xmlGenericError(xmlGenericErrorContext, - "HPP: lookup '%c%c%c' found at %d\n", - first, next, third, base); + if (next == 0) + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c' found at %d\n", + first, base); + else if (third == 0) + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c%c' found at %d\n", + first, next, base); + else + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c%c%c' found at %d\n", + first, next, third, base); #endif - return(base - (in->cur - in->base)); - } + return (base - (in->cur - in->base)); + } } - ctxt->checkIndex = base; + if ((!incomment) && (!invalue)) + ctxt->checkIndex = base; #ifdef DEBUG_PUSH if (next == 0) - xmlGenericError(xmlGenericErrorContext, - "HPP: lookup '%c' failed\n", first); + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c' failed\n", first); else if (third == 0) - xmlGenericError(xmlGenericErrorContext, - "HPP: lookup '%c%c' failed\n", first, next); - else - xmlGenericError(xmlGenericErrorContext, - "HPP: lookup '%c%c%c' failed\n", first, next, third); + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c%c' failed\n", first, next); + else + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c%c%c' failed\n", first, next, + third); #endif - return(-1); + return (-1); +} + +/** + * htmlParseLookupChars: + * @ctxt: an HTML parser context + * @stop: Array of chars, which stop the lookup. + * @stopLen: Length of stop-Array + * + * Try to find if any char of the stop-Array is available in the input + * stream. + * This function has a side effect of (possibly) incrementing ctxt->checkIndex + * to avoid rescanning sequences of bytes, it DOES change the state of the + * parser, do not use liberally. + * + * Returns the index to the current parsing point if a stopChar + * is available, -1 otherwise. + */ +static int +htmlParseLookupChars(htmlParserCtxtPtr ctxt, const xmlChar * stop, + int stopLen) +{ + int base, len; + htmlParserInputPtr in; + const xmlChar *buf; + int incomment = 0; + int i; + + in = ctxt->input; + if (in == NULL) + return (-1); + + base = in->cur - in->base; + if (base < 0) + return (-1); + + if (ctxt->checkIndex > base) + base = ctxt->checkIndex; + + if (in->buf == NULL) { + buf = in->base; + len = in->length; + } else { + buf = xmlBufContent(in->buf->buffer); + len = xmlBufUse(in->buf->buffer); + } + + for (; base < len; base++) { + if (!incomment && (base + 4 < len)) { + if ((buf[base] == '<') && (buf[base + 1] == '!') && + (buf[base + 2] == '-') && (buf[base + 3] == '-')) { + incomment = 1; + /* do not increment past */ + base += 2; + } + } + if (incomment) { + if (base + 3 > len) + return (-1); + if ((buf[base] == '-') && (buf[base + 1] == '-') && + (buf[base + 2] == '>')) { + incomment = 0; + base += 2; + } + continue; + } + for (i = 0; i < stopLen; ++i) { + if (buf[base] == stop[i]) { + ctxt->checkIndex = 0; + return (base - (in->cur - in->base)); + } + } + } + ctxt->checkIndex = base; + return (-1); } /** @@ -4517,6 +5280,8 @@ int avail = 0; xmlChar cur, next; + htmlParserNodeInfo node_info; + #ifdef DEBUG_PUSH switch (ctxt->instate) { case XML_PARSER_EOF: @@ -4577,10 +5342,10 @@ if (in->buf == NULL) avail = in->length - (in->cur - in->base); else - avail = in->buf->buffer->use - (in->cur - in->base); + avail = xmlBufUse(in->buf->buffer) - (in->cur - in->base); if ((avail == 0) && (terminate)) { htmlAutoCloseOnEnd(ctxt); - if ((ctxt->nameNr == 0) && (ctxt->instate != XML_PARSER_EOF)) { + if ((ctxt->nameNr == 0) && (ctxt->instate != XML_PARSER_EOF)) { /* * SAX: end of the document processing. */ @@ -4613,7 +5378,7 @@ if (in->buf == NULL) avail = in->length - (in->cur - in->base); else - avail = in->buf->buffer->use - (in->cur - in->base); + avail = xmlBufUse(in->buf->buffer) - (in->cur - in->base); } if ((ctxt->sax) && (ctxt->sax->setDocumentLocator)) ctxt->sax->setDocumentLocator(ctxt->userData, @@ -4630,7 +5395,7 @@ (UPP(6) == 'Y') && (UPP(7) == 'P') && (UPP(8) == 'E')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4655,15 +5420,28 @@ if (in->buf == NULL) avail = in->length - (in->cur - in->base); else - avail = in->buf->buffer->use - (in->cur - in->base); - if (avail < 2) + avail = xmlBufUse(in->buf->buffer) - (in->cur - in->base); + /* + * no chars in buffer + */ + if (avail < 1) goto done; + /* + * not enouth chars in buffer + */ + if (avail < 2) { + if (!terminate) + goto done; + else + next = ' '; + } else { + next = in->cur[1]; + } cur = in->cur[0]; - next = in->cur[1]; if ((cur == '<') && (next == '!') && (in->cur[2] == '-') && (in->cur[3] == '-')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '-', '-', '>', 1) < 0)) + (htmlParseLookupSequence(ctxt, '-', '-', '>', 1, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4673,7 +5451,7 @@ ctxt->instate = XML_PARSER_MISC; } else if ((cur == '<') && (next == '?')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4687,7 +5465,7 @@ (UPP(6) == 'Y') && (UPP(7) == 'P') && (UPP(8) == 'E')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4715,15 +5493,15 @@ if (in->buf == NULL) avail = in->length - (in->cur - in->base); else - avail = in->buf->buffer->use - (in->cur - in->base); - if (avail < 2) + avail = xmlBufUse(in->buf->buffer) - (in->cur - in->base); + if (avail < 2) goto done; cur = in->cur[0]; next = in->cur[1]; if ((cur == '<') && (next == '!') && (in->cur[2] == '-') && (in->cur[3] == '-')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '-', '-', '>', 1) < 0)) + (htmlParseLookupSequence(ctxt, '-', '-', '>', 1, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4733,7 +5511,7 @@ ctxt->instate = XML_PARSER_PROLOG; } else if ((cur == '<') && (next == '?')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4756,7 +5534,7 @@ if (in->buf == NULL) avail = in->length - (in->cur - in->base); else - avail = in->buf->buffer->use - (in->cur - in->base); + avail = xmlBufUse(in->buf->buffer) - (in->cur - in->base); if (avail < 1) goto done; cur = in->cur[0]; @@ -4770,7 +5548,7 @@ if ((cur == '<') && (next == '!') && (in->cur[2] == '-') && (in->cur[3] == '-')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '-', '-', '>', 1) < 0)) + (htmlParseLookupSequence(ctxt, '-', '-', '>', 1, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4780,7 +5558,7 @@ ctxt->instate = XML_PARSER_EPILOG; } else if ((cur == '<') && (next == '?')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4809,8 +5587,22 @@ int failed; const htmlElemDesc * info; - if (avail < 2) + /* + * no chars in buffer + */ + if (avail < 1) goto done; + /* + * not enouth chars in buffer + */ + if (avail < 2) { + if (!terminate) + goto done; + else + next = ' '; + } else { + next = in->cur[1]; + } cur = in->cur[0]; if (cur != '<') { ctxt->instate = XML_PARSER_CONTENT; @@ -4820,7 +5612,7 @@ #endif break; } - if (in->cur[1] == '/') { + if (next == '/') { ctxt->instate = XML_PARSER_END_TAG; ctxt->checkIndex = 0; #ifdef DEBUG_PUSH @@ -4830,12 +5622,20 @@ break; } if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; + /* Capture start position */ + if (ctxt->record_info) { + node_info.begin_pos = ctxt->input->consumed + + (CUR_PTR - ctxt->input->base); + node_info.begin_line = ctxt->input->line; + } + + failed = htmlParseStartTag(ctxt); name = ctxt->name; - if (failed || + if ((failed == -1) || (name == NULL)) { if (CUR == '>') NEXT; @@ -4877,10 +5677,13 @@ /* * end of parsing of this node. */ - if (xmlStrEqual(name, ctxt->name)) { + if (xmlStrEqual(name, ctxt->name)) { nodePop(ctxt); htmlnamePop(ctxt); - } + } + + if (ctxt->record_info) + htmlNodeInfoPush(ctxt, &node_info); ctxt->instate = XML_PARSER_CONTENT; #ifdef DEBUG_PUSH @@ -4898,6 +5701,10 @@ ctxt->sax->endElement(ctxt->userData, name); htmlnamePop(ctxt); } + + if (ctxt->record_info) + htmlNodeInfoPush(ctxt, &node_info); + ctxt->instate = XML_PARSER_CONTENT; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4925,14 +5732,20 @@ if ((cur != '<') && (cur != '&')) { if (ctxt->sax != NULL) { if (IS_BLANK_CH(cur)) { - if (ctxt->sax->ignorableWhitespace != NULL) - ctxt->sax->ignorableWhitespace( - ctxt->userData, &cur, 1); + if (ctxt->keepBlanks) { + if (ctxt->sax->characters != NULL) + ctxt->sax->characters( + ctxt->userData, &in->cur[0], 1); + } else { + if (ctxt->sax->ignorableWhitespace != NULL) + ctxt->sax->ignorableWhitespace( + ctxt->userData, &in->cur[0], 1); + } } else { htmlCheckParagraph(ctxt); if (ctxt->sax->characters != NULL) ctxt->sax->characters( - ctxt->userData, &cur, 1); + ctxt->userData, &in->cur[0], 1); } } ctxt->token = 0; @@ -4955,7 +5768,7 @@ int idx; xmlChar val; - idx = htmlParseLookupSequence(ctxt, '<', '/', 0, 0); + idx = htmlParseLookupSequence(ctxt, '<', '/', 0, 0, 0); if (idx < 0) goto done; val = in->cur[idx + 2]; @@ -4982,7 +5795,7 @@ (UPP(6) == 'Y') && (UPP(7) == 'P') && (UPP(8) == 'E')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; htmlParseErr(ctxt, XML_HTML_STRUCURE_ERROR, "Misplaced DOCTYPE declaration\n", @@ -4992,7 +5805,7 @@ (in->cur[2] == '-') && (in->cur[3] == '-')) { if ((!terminate) && (htmlParseLookupSequence( - ctxt, '-', '-', '>', 1) < 0)) + ctxt, '-', '-', '>', 1, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -5002,7 +5815,7 @@ ctxt->instate = XML_PARSER_CONTENT; } else if ((cur == '<') && (next == '?')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -5030,7 +5843,8 @@ break; } else if (cur == '&') { if ((!terminate) && - (htmlParseLookupSequence(ctxt, ';', 0, 0, 0) < 0)) + (htmlParseLookupChars(ctxt, + BAD_CAST "; >/", 4) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -5046,7 +5860,7 @@ * data detection. */ if ((!terminate) && - (htmlParseLookupSequence(ctxt, '<', 0, 0, 0) < 0)) + (htmlParseLookupChars(ctxt, BAD_CAST "<&", 2) < 0)) goto done; ctxt->checkIndex = 0; #ifdef DEBUG_PUSH @@ -5072,7 +5886,7 @@ if (avail < 2) goto done; if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; htmlParseEndTag(ctxt); if (ctxt->nameNr == 0) { @@ -5199,10 +6013,10 @@ } } -done: +done: if ((avail == 0) && (terminate)) { htmlAutoCloseOnEnd(ctxt); - if ((ctxt->nameNr == 0) && (ctxt->instate != XML_PARSER_EOF)) { + if ((ctxt->nameNr == 0) && (ctxt->instate != XML_PARSER_EOF)) { /* * SAX: end of the document processing. */ @@ -5211,14 +6025,14 @@ ctxt->sax->endDocument(ctxt->userData); } } - if ((ctxt->myDoc != NULL) && + if ((!(ctxt->options & HTML_PARSE_NODEFDTD)) && (ctxt->myDoc != NULL) && ((terminate) || (ctxt->instate == XML_PARSER_EOF) || (ctxt->instate == XML_PARSER_EPILOG))) { xmlDtdPtr dtd; dtd = xmlGetIntSubset(ctxt->myDoc); if (dtd == NULL) - ctxt->myDoc->intSubset = - xmlCreateIntSubset(ctxt->myDoc, BAD_CAST "html", + ctxt->myDoc->intSubset = + xmlCreateIntSubset(ctxt->myDoc, BAD_CAST "html", BAD_CAST "-//W3C//DTD HTML 4.0 Transitional//EN", BAD_CAST "http://www.w3.org/TR/REC-html40/loose.dtd"); } @@ -5249,20 +6063,17 @@ } if ((size > 0) && (chunk != NULL) && (ctxt->input != NULL) && (ctxt->input->buf != NULL) && (ctxt->instate != XML_PARSER_EOF)) { - int base = ctxt->input->base - ctxt->input->buf->buffer->content; - int cur = ctxt->input->cur - ctxt->input->base; + size_t base = xmlBufGetInputBase(ctxt->input->buf->buffer, ctxt->input); + size_t cur = ctxt->input->cur - ctxt->input->base; int res; - - res = xmlParserInputBufferPush(ctxt->input->buf, size, chunk); + + res = xmlParserInputBufferPush(ctxt->input->buf, size, chunk); if (res < 0) { ctxt->errNo = XML_PARSER_EOF; ctxt->disableSAX = 1; return (XML_PARSER_EOF); } - ctxt->input->base = ctxt->input->buf->buffer->content + base; - ctxt->input->cur = ctxt->input->base + cur; - ctxt->input->end = - &ctxt->input->buf->buffer->content[ctxt->input->buf->buffer->use]; + xmlBufSetInputBaseCur(ctxt->input->buf->buffer, ctxt->input, base, cur); #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, "HPP: pushed %d\n", size); #endif @@ -5277,13 +6088,16 @@ if ((in->encoder != NULL) && (in->buffer != NULL) && (in->raw != NULL)) { int nbchars; - - nbchars = xmlCharEncInFunc(in->encoder, in->buffer, in->raw); + size_t base = xmlBufGetInputBase(in->buffer, ctxt->input); + size_t current = ctxt->input->cur - ctxt->input->base; + + nbchars = xmlCharEncInput(in, terminate); if (nbchars < 0) { htmlParseErr(ctxt, XML_ERR_INVALID_ENCODING, "encoder error\n", NULL, NULL); return(XML_ERR_INVALID_ENCODING); } + xmlBufSetInputBaseCur(in->buffer, ctxt->input, base, current); } } } @@ -5294,14 +6108,14 @@ (ctxt->instate != XML_PARSER_MISC)) { ctxt->errNo = XML_ERR_DOCUMENT_END; ctxt->wellFormed = 0; - } + } if (ctxt->instate != XML_PARSER_EOF) { if ((ctxt->sax) && (ctxt->sax->endDocument != NULL)) ctxt->sax->endDocument(ctxt->userData); } ctxt->instate = XML_PARSER_EOF; } - return((xmlParserErrors) ctxt->errNo); + return((xmlParserErrors) ctxt->errNo); } /************************************************************************ @@ -5326,7 +6140,7 @@ * Returns the new parser context or NULL */ htmlParserCtxtPtr -htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax, void *user_data, +htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax, void *user_data, const char *chunk, int size, const char *filename, xmlCharEncoding enc) { htmlParserCtxtPtr ctxt; @@ -5357,7 +6171,7 @@ memcpy(ctxt->sax, sax, sizeof(htmlSAXHandler)); if (user_data != NULL) ctxt->userData = user_data; - } + } if (filename == NULL) { ctxt->directory = NULL; } else { @@ -5377,24 +6191,18 @@ inputStream->filename = (char *) xmlCanonicPath((const xmlChar *) filename); inputStream->buf = buf; - inputStream->base = inputStream->buf->buffer->content; - inputStream->cur = inputStream->buf->buffer->content; - inputStream->end = - &inputStream->buf->buffer->content[inputStream->buf->buffer->use]; + xmlBufResetInput(buf->buffer, inputStream); inputPush(ctxt, inputStream); if ((size > 0) && (chunk != NULL) && (ctxt->input != NULL) && - (ctxt->input->buf != NULL)) { - int base = ctxt->input->base - ctxt->input->buf->buffer->content; - int cur = ctxt->input->cur - ctxt->input->base; - - xmlParserInputBufferPush(ctxt->input->buf, size, chunk); - - ctxt->input->base = ctxt->input->buf->buffer->content + base; - ctxt->input->cur = ctxt->input->base + cur; - ctxt->input->end = - &ctxt->input->buf->buffer->content[ctxt->input->buf->buffer->use]; + (ctxt->input->buf != NULL)) { + size_t base = xmlBufGetInputBase(ctxt->input->buf->buffer, ctxt->input); + size_t cur = ctxt->input->cur - ctxt->input->base; + + xmlParserInputBufferPush(ctxt->input->buf, size, chunk); + + xmlBufSetInputBaseCur(ctxt->input->buf->buffer, ctxt->input, base, cur); #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, "HPP: pushed %d\n", size); #endif @@ -5410,12 +6218,12 @@ * @cur: a pointer to an array of xmlChar * @encoding: a free form C string describing the HTML document encoding, or NULL * @sax: the SAX handler block - * @userData: if using SAX, this pointer will be provided on callbacks. + * @userData: if using SAX, this pointer will be provided on callbacks. * * Parse an HTML in-memory document. If sax is not NULL, use the SAX callbacks * to handle parse events. If sax is NULL, fallback to the default DOM * behavior and return a tree. - * + * * Returns the resulting document tree unless SAX is NULL or the document is * not well formed. */ @@ -5432,7 +6240,7 @@ ctxt = htmlCreateDocParserCtxt(cur, encoding); if (ctxt == NULL) return(NULL); - if (sax != NULL) { + if (sax != NULL) { if (ctxt->sax != NULL) xmlFree (ctxt->sax); ctxt->sax = sax; ctxt->userData = userData; @@ -5445,7 +6253,7 @@ ctxt->userData = NULL; } htmlFreeParserCtxt(ctxt); - + return(ret); } @@ -5455,7 +6263,7 @@ * @encoding: a free form C string describing the HTML document encoding, or NULL * * parse an HTML in-memory document and build a tree. - * + * * Returns the resulting document tree */ @@ -5470,7 +6278,7 @@ * @filename: the filename * @encoding: a free form C string describing the HTML document encoding, or NULL * - * Create a parser context for a file content. + * Create a parser context for a file content. * Automatic support for ZLIB/Compress compressed document is provided * by default if found at compile-time. * @@ -5502,7 +6310,7 @@ xmlFreeParserCtxt(ctxt); return(NULL); } - + inputStream = xmlLoadExternalEntity(canonicFilename, NULL, ctxt); xmlFree(canonicFilename); if (inputStream == NULL) { @@ -5514,15 +6322,19 @@ /* set encoding */ if (encoding) { - content = xmlMallocAtomic (xmlStrlen(content_line) + strlen(encoding) + 1); - if (content) { - strcpy ((char *)content, (char *)content_line); - strcat ((char *)content, (char *)encoding); - htmlCheckEncoding (ctxt, content); - xmlFree (content); + size_t l = strlen(encoding); + + if (l < 1000) { + content = xmlMallocAtomic (xmlStrlen(content_line) + l + 1); + if (content) { + strcpy ((char *)content, (char *)content_line); + strcat ((char *)content, (char *)encoding); + htmlCheckEncoding (ctxt, content); + xmlFree (content); + } } } - + return(ctxt); } @@ -5531,7 +6343,7 @@ * @filename: the filename * @encoding: a free form C string describing the HTML document encoding, or NULL * @sax: the SAX handler block - * @userData: if using SAX, this pointer will be provided on callbacks. + * @userData: if using SAX, this pointer will be provided on callbacks. * * parse an HTML file and build a tree. Automatic support for ZLIB/Compress * compressed document is provided by default if found at compile-time. @@ -5543,7 +6355,7 @@ */ htmlDocPtr -htmlSAXParseFile(const char *filename, const char *encoding, htmlSAXHandlerPtr sax, +htmlSAXParseFile(const char *filename, const char *encoding, htmlSAXHandlerPtr sax, void *userData) { htmlDocPtr ret; htmlParserCtxtPtr ctxt; @@ -5567,7 +6379,7 @@ ctxt->userData = NULL; } htmlFreeParserCtxt(ctxt); - + return(ret); } @@ -5589,7 +6401,7 @@ /** * htmlHandleOmittedElem: - * @val: int 0 or 1 + * @val: int 0 or 1 * * Set and return the previous value for handling HTML omitted tags. * @@ -5729,7 +6541,7 @@ * current scope */ #define DICT_FREE(str) \ - if ((str) && ((!dict) || \ + if ((str) && ((!dict) || \ (xmlDictOwns(dict, (const xmlChar *)(str)) == 0))) \ xmlFree((char *)(str)); @@ -5744,7 +6556,7 @@ { xmlParserInputPtr input; xmlDictPtr dict; - + if (ctxt == NULL) return; @@ -5796,6 +6608,7 @@ ctxt->wellFormed = 1; ctxt->nsWellFormed = 1; + ctxt->disableSAX = 0; ctxt->valid = 1; ctxt->vctxt.userData = ctxt; ctxt->vctxt.error = xmlParserValidityError; @@ -5806,7 +6619,7 @@ ctxt->inSubset = 0; ctxt->errNo = XML_ERR_OK; ctxt->depth = 0; - ctxt->charset = XML_CHAR_ENCODING_UTF8; + ctxt->charset = XML_CHAR_ENCODING_NONE; ctxt->catalogs = NULL; xmlInitNodeInfoSeq(&ctxt->node_seq); @@ -5871,6 +6684,22 @@ ctxt->options |= HTML_PARSE_COMPACT; options -= HTML_PARSE_COMPACT; } + if (options & XML_PARSE_HUGE) { + ctxt->options |= XML_PARSE_HUGE; + options -= XML_PARSE_HUGE; + } + if (options & HTML_PARSE_NODEFDTD) { + ctxt->options |= HTML_PARSE_NODEFDTD; + options -= HTML_PARSE_NODEFDTD; + } + if (options & HTML_PARSE_IGNORE_ENC) { + ctxt->options |= HTML_PARSE_IGNORE_ENC; + options -= HTML_PARSE_IGNORE_ENC; + } + if (options & HTML_PARSE_NOIMPLIED) { + ctxt->options |= HTML_PARSE_NOIMPLIED; + options -= HTML_PARSE_NOIMPLIED; + } ctxt->dictNames = 0; return (options); } @@ -5884,7 +6713,7 @@ * @reuse: keep the context for reuse * * Common front-end for the htmlRead functions - * + * * Returns the resulting document tree or NULL */ static htmlDocPtr @@ -5892,15 +6721,19 @@ int options, int reuse) { htmlDocPtr ret; - + htmlCtxtUseOptions(ctxt, options); ctxt->html = 1; if (encoding != NULL) { xmlCharEncodingHandlerPtr hdlr; hdlr = xmlFindCharEncodingHandler(encoding); - if (hdlr != NULL) + if (hdlr != NULL) { xmlSwitchToEncoding(ctxt, hdlr); + if (ctxt->input->encoding != NULL) + xmlFree((xmlChar *) ctxt->input->encoding); + ctxt->input->encoding = xmlStrdup((xmlChar *)encoding); + } } if ((URL != NULL) && (ctxt->input != NULL) && (ctxt->input->filename == NULL)) @@ -5926,7 +6759,7 @@ * @options: a combination of htmlParserOption(s) * * parse an XML in-memory document and build a tree. - * + * * Returns the resulting document tree */ htmlDocPtr @@ -5951,7 +6784,7 @@ * @options: a combination of htmlParserOption(s) * * parse an XML file from the filesystem or the network. - * + * * Returns the resulting document tree */ htmlDocPtr @@ -5975,7 +6808,7 @@ * @options: a combination of htmlParserOption(s) * * parse an XML in-memory document and build a tree. - * + * * Returns the resulting document tree */ htmlDocPtr @@ -6001,7 +6834,7 @@ * @options: a combination of htmlParserOption(s) * * parse an XML from a file descriptor and build a tree. - * + * * Returns the resulting document tree */ htmlDocPtr @@ -6013,6 +6846,7 @@ if (fd < 0) return (NULL); + xmlInitParser(); xmlInitParser(); input = xmlParserInputBufferCreateFd(fd, XML_CHAR_ENCODING_NONE); @@ -6043,7 +6877,7 @@ * @options: a combination of htmlParserOption(s) * * parse an HTML document from I/O functions and source and build a tree. - * + * * Returns the resulting document tree */ htmlDocPtr @@ -6060,8 +6894,11 @@ input = xmlParserInputBufferCreateIO(ioread, ioclose, ioctx, XML_CHAR_ENCODING_NONE); - if (input == NULL) + if (input == NULL) { + if (ioclose != NULL) + ioclose(ioctx); return (NULL); + } ctxt = htmlNewParserCtxt(); if (ctxt == NULL) { xmlFreeParserInputBuffer(input); @@ -6087,7 +6924,7 @@ * * parse an XML in-memory document and build a tree. * This reuses the existing @ctxt parser context - * + * * Returns the resulting document tree */ htmlDocPtr @@ -6100,6 +6937,7 @@ return (NULL); if (ctxt == NULL) return (NULL); + xmlInitParser(); htmlCtxtReset(ctxt); @@ -6120,7 +6958,7 @@ * * parse an XML file from the filesystem or the network. * This reuses the existing @ctxt parser context - * + * * Returns the resulting document tree */ htmlDocPtr @@ -6133,6 +6971,7 @@ return (NULL); if (ctxt == NULL) return (NULL); + xmlInitParser(); htmlCtxtReset(ctxt); @@ -6155,7 +6994,7 @@ * * parse an XML in-memory document and build a tree. * This reuses the existing @ctxt parser context - * + * * Returns the resulting document tree */ htmlDocPtr @@ -6169,6 +7008,7 @@ return (NULL); if (buffer == NULL) return (NULL); + xmlInitParser(); htmlCtxtReset(ctxt); @@ -6197,7 +7037,7 @@ * * parse an XML from a file descriptor and build a tree. * This reuses the existing @ctxt parser context - * + * * Returns the resulting document tree */ htmlDocPtr @@ -6211,6 +7051,7 @@ return (NULL); if (ctxt == NULL) return (NULL); + xmlInitParser(); htmlCtxtReset(ctxt); @@ -6239,7 +7080,7 @@ * * parse an HTML document from I/O functions and source and build a tree. * This reuses the existing @ctxt parser context - * + * * Returns the resulting document tree */ htmlDocPtr @@ -6255,13 +7096,17 @@ return (NULL); if (ctxt == NULL) return (NULL); + xmlInitParser(); htmlCtxtReset(ctxt); input = xmlParserInputBufferCreateIO(ioread, ioclose, ioctx, XML_CHAR_ENCODING_NONE); - if (input == NULL) + if (input == NULL) { + if (ioclose != NULL) + ioclose(ioctx); return (NULL); + } stream = xmlNewIOInputStream(ctxt, input, XML_CHAR_ENCODING_NONE); if (stream == NULL) { xmlFreeParserInputBuffer(input); diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/HTMLparser.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/HTMLparser.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/HTMLparser.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/HTMLparser.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -83,87 +83,87 @@ /* * There is only few public functions. */ -XMLPUBFUN const htmlElemDesc * XMLCALL +XMLPUBFUN const htmlElemDesc * XMLCALL htmlTagLookup (const xmlChar *tag); -XMLPUBFUN const htmlEntityDesc * XMLCALL +XMLPUBFUN const htmlEntityDesc * XMLCALL htmlEntityLookup(const xmlChar *name); -XMLPUBFUN const htmlEntityDesc * XMLCALL +XMLPUBFUN const htmlEntityDesc * XMLCALL htmlEntityValueLookup(unsigned int value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlIsAutoClosed(htmlDocPtr doc, htmlNodePtr elem); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlAutoCloseTag(htmlDocPtr doc, const xmlChar *name, htmlNodePtr elem); -XMLPUBFUN const htmlEntityDesc * XMLCALL +XMLPUBFUN const htmlEntityDesc * XMLCALL htmlParseEntityRef(htmlParserCtxtPtr ctxt, const xmlChar **str); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlParseCharRef(htmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL htmlParseElement(htmlParserCtxtPtr ctxt); -XMLPUBFUN htmlParserCtxtPtr XMLCALL +XMLPUBFUN htmlParserCtxtPtr XMLCALL htmlNewParserCtxt(void); -XMLPUBFUN htmlParserCtxtPtr XMLCALL +XMLPUBFUN htmlParserCtxtPtr XMLCALL htmlCreateMemoryParserCtxt(const char *buffer, int size); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlParseDocument(htmlParserCtxtPtr ctxt); -XMLPUBFUN htmlDocPtr XMLCALL +XMLPUBFUN htmlDocPtr XMLCALL htmlSAXParseDoc (xmlChar *cur, const char *encoding, htmlSAXHandlerPtr sax, void *userData); -XMLPUBFUN htmlDocPtr XMLCALL +XMLPUBFUN htmlDocPtr XMLCALL htmlParseDoc (xmlChar *cur, const char *encoding); -XMLPUBFUN htmlDocPtr XMLCALL +XMLPUBFUN htmlDocPtr XMLCALL htmlSAXParseFile(const char *filename, const char *encoding, htmlSAXHandlerPtr sax, void *userData); -XMLPUBFUN htmlDocPtr XMLCALL +XMLPUBFUN htmlDocPtr XMLCALL htmlParseFile (const char *filename, const char *encoding); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL UTF8ToHtml (unsigned char *out, int *outlen, const unsigned char *in, int *inlen); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlEncodeEntities(unsigned char *out, int *outlen, const unsigned char *in, int *inlen, int quoteChar); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlIsScriptAttribute(const xmlChar *name); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlHandleOmittedElem(int val); #ifdef LIBXML_PUSH_ENABLED /** * Interfaces for the Push mode. */ -XMLPUBFUN htmlParserCtxtPtr XMLCALL +XMLPUBFUN htmlParserCtxtPtr XMLCALL htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax, void *user_data, const char *chunk, int size, const char *filename, xmlCharEncoding enc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlParseChunk (htmlParserCtxtPtr ctxt, const char *chunk, int size, int terminate); #endif /* LIBXML_PUSH_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL htmlFreeParserCtxt (htmlParserCtxtPtr ctxt); /* @@ -177,12 +177,15 @@ */ typedef enum { HTML_PARSE_RECOVER = 1<<0, /* Relaxed parsing */ + HTML_PARSE_NODEFDTD = 1<<2, /* do not default a doctype if not found */ HTML_PARSE_NOERROR = 1<<5, /* suppress error reports */ HTML_PARSE_NOWARNING= 1<<6, /* suppress warning reports */ HTML_PARSE_PEDANTIC = 1<<7, /* pedantic error reporting */ HTML_PARSE_NOBLANKS = 1<<8, /* remove blank nodes */ HTML_PARSE_NONET = 1<<11,/* Forbid network access */ - HTML_PARSE_COMPACT = 1<<16 /* compact small text nodes */ + HTML_PARSE_NOIMPLIED= 1<<13,/* Do not add implied html/body... elements */ + HTML_PARSE_COMPACT = 1<<16,/* compact small text nodes */ + HTML_PARSE_IGNORE_ENC=1<<21 /* ignore internal document encoding hint */ } htmlParserOption; XMLPUBFUN void XMLCALL diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/HTMLtree.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/HTMLtree.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/HTMLtree.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/HTMLtree.c 2015-12-23 07:08:27.000000000 +0000 @@ -30,16 +30,18 @@ #include #include +#include "buf.h" + /************************************************************************ * * - * Getting/Setting encoding meta tags * + * Getting/Setting encoding meta tags * * * ************************************************************************/ /** * htmlGetMetaEncoding: * @doc: the document - * + * * Encoding definition lookup in the Meta tags * * Returns the current encoding as flagged in the HTML source @@ -126,17 +128,17 @@ found_content: encoding = xmlStrstr(content, BAD_CAST"charset="); - if (encoding == NULL) + if (encoding == NULL) encoding = xmlStrstr(content, BAD_CAST"Charset="); - if (encoding == NULL) + if (encoding == NULL) encoding = xmlStrstr(content, BAD_CAST"CHARSET="); if (encoding != NULL) { encoding += 8; } else { encoding = xmlStrstr(content, BAD_CAST"charset ="); - if (encoding == NULL) + if (encoding == NULL) encoding = xmlStrstr(content, BAD_CAST"Charset ="); - if (encoding == NULL) + if (encoding == NULL) encoding = xmlStrstr(content, BAD_CAST"CHARSET ="); if (encoding != NULL) encoding += 9; @@ -151,7 +153,7 @@ * htmlSetMetaEncoding: * @doc: the document * @encoding: the encoding string - * + * * Sets the current encoding in the Meta tags * NOTE: this will not change the document content encoding, just * the META flag associated. @@ -160,14 +162,19 @@ */ int htmlSetMetaEncoding(htmlDocPtr doc, const xmlChar *encoding) { - htmlNodePtr cur, meta; - const xmlChar *content; + htmlNodePtr cur, meta = NULL, head = NULL; + const xmlChar *content = NULL; char newcontent[100]; + newcontent[0] = 0; if (doc == NULL) return(-1); + /* html isn't a real encoding it's just libxml2 way to get entities */ + if (!xmlStrcasecmp(encoding, BAD_CAST "html")) + return(-1); + if (encoding != NULL) { snprintf(newcontent, sizeof(newcontent), "text/html; charset=%s", (char *)encoding); @@ -201,39 +208,24 @@ if ((cur->type == XML_ELEMENT_NODE) && (cur->name != NULL)) { if (xmlStrcasecmp(cur->name, BAD_CAST"head") == 0) break; - if (xmlStrcasecmp(cur->name, BAD_CAST"meta") == 0) + if (xmlStrcasecmp(cur->name, BAD_CAST"meta") == 0) { + head = cur->parent; goto found_meta; + } } cur = cur->next; } if (cur == NULL) return(-1); found_head: - if (cur->children == NULL) { - if (encoding == NULL) - return(0); - meta = xmlNewDocNode(doc, NULL, BAD_CAST"meta", NULL); - xmlAddChild(cur, meta); - xmlNewProp(meta, BAD_CAST"http-equiv", BAD_CAST"Content-Type"); - xmlNewProp(meta, BAD_CAST"content", BAD_CAST newcontent); - return(0); - } + head = cur; + if (cur->children == NULL) + goto create; cur = cur->children; found_meta: - if (encoding != NULL) { - /* - * Create a new Meta element with the right attributes - */ - - meta = xmlNewDocNode(doc, NULL, BAD_CAST"meta", NULL); - xmlAddPrevSibling(cur, meta); - xmlNewProp(meta, BAD_CAST"http-equiv", BAD_CAST"Content-Type"); - xmlNewProp(meta, BAD_CAST"content", BAD_CAST newcontent); - } - /* - * Search and destroy all the remaining the meta elements carrying + * Search and update all the remaining the meta elements carrying * encoding informations */ while (cur != NULL) { @@ -253,11 +245,11 @@ if ((!xmlStrcasecmp(attr->name, BAD_CAST"http-equiv")) && (!xmlStrcasecmp(value, BAD_CAST"Content-Type"))) http = 1; - else + else { - if ((value != NULL) && - (!xmlStrcasecmp(attr->name, BAD_CAST"content"))) - content = value; + if ((value != NULL) && + (!xmlStrcasecmp(attr->name, BAD_CAST"content"))) + content = value; } if ((http != 0) && (content != NULL)) break; @@ -266,16 +258,41 @@ } if ((http != 0) && (content != NULL)) { meta = cur; - cur = cur->next; - xmlUnlinkNode(meta); - xmlFreeNode(meta); - continue; + break; } } } cur = cur->next; } +create: + if (meta == NULL) { + if ((encoding != NULL) && (head != NULL)) { + /* + * Create a new Meta element with the right attributes + */ + + meta = xmlNewDocNode(doc, NULL, BAD_CAST"meta", NULL); + if (head->children == NULL) + xmlAddChild(head, meta); + else + xmlAddPrevSibling(head->children, meta); + xmlNewProp(meta, BAD_CAST"http-equiv", BAD_CAST"Content-Type"); + xmlNewProp(meta, BAD_CAST"content", BAD_CAST newcontent); + } + } else { + /* remove the meta tag if NULL is passed */ + if (encoding == NULL) { + xmlUnlinkNode(meta); + xmlFreeNode(meta); + } + /* change the document only if there is a real encoding change */ + else if (xmlStrcasestr(content, encoding) == NULL) { + xmlSetProp(meta, BAD_CAST"content", BAD_CAST newcontent); + } + } + + return(0); } @@ -299,7 +316,7 @@ * @name: the name of the attribute to check * * Determine if a given attribute is a boolean attribute. - * + * * returns: false if the attribute is not boolean, true otherwise. */ int @@ -316,9 +333,14 @@ } #ifdef LIBXML_OUTPUT_ENABLED +/* + * private routine exported from xmlIO.c + */ +xmlOutputBufferPtr +xmlAllocOutputBufferInternal(xmlCharEncodingHandlerPtr encoder); /************************************************************************ * * - * Output error handlers * + * Output error handlers * * * ************************************************************************/ /** @@ -367,17 +389,13 @@ /************************************************************************ * * - * Dumping HTML tree content to a simple buffer * + * Dumping HTML tree content to a simple buffer * * * ************************************************************************/ -static int -htmlNodeDumpFormat(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, - int format); - /** - * htmlNodeDumpFormat: - * @buf: the HTML buffer output + * htmlBufNodeDumpFormat: + * @buf: the xmlBufPtr output * @doc: the document * @cur: the current node * @format: should formatting spaces been added @@ -386,10 +404,10 @@ * * Returns the number of byte written or -1 in case of error */ -static int -htmlNodeDumpFormat(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, +static size_t +htmlBufNodeDumpFormat(xmlBufPtr buf, xmlDocPtr doc, xmlNodePtr cur, int format) { - unsigned int use; + size_t use; int ret; xmlOutputBufferPtr outbuf; @@ -412,10 +430,10 @@ outbuf->context = NULL; outbuf->written = 0; - use = buf->use; + use = xmlBufUse(buf); htmlNodeDumpFormatOutput(outbuf, doc, cur, NULL, format); xmlFree(outbuf); - ret = buf->use - use; + ret = xmlBufUse(buf) - use; return (ret); } @@ -432,9 +450,24 @@ */ int htmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur) { + xmlBufPtr buffer; + size_t ret; + + if ((buf == NULL) || (cur == NULL)) + return(-1); + xmlInitParser(); + buffer = xmlBufFromBuffer(buf); + if (buffer == NULL) + return(-1); + + ret = htmlBufNodeDumpFormat(buffer, doc, cur, 1); - return(htmlNodeDumpFormat(buf, doc, cur, 1)); + xmlBufBackToBuffer(buffer); + + if (ret > INT_MAX) + return(-1); + return((int) ret); } /** @@ -467,7 +500,7 @@ if (enc != XML_CHAR_ENCODING_UTF8) { handler = xmlFindCharEncodingHandler(encoding); if (handler == NULL) - return(-1); + htmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, encoding); } } @@ -479,7 +512,7 @@ if (handler == NULL) handler = xmlFindCharEncodingHandler("ascii"); - /* + /* * save the content to a temp buffer. */ buf = xmlOutputBufferCreateFile(out, handler); @@ -548,11 +581,9 @@ } handler = xmlFindCharEncodingHandler(encoding); - if (handler == NULL) { - *mem = NULL; - *size = 0; - return; - } + if (handler == NULL) + htmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, encoding); + } else { handler = xmlFindCharEncodingHandler(encoding); } @@ -566,22 +597,22 @@ if (handler == NULL) handler = xmlFindCharEncodingHandler("ascii"); - buf = xmlAllocOutputBuffer(handler); + buf = xmlAllocOutputBufferInternal(handler); if (buf == NULL) { *mem = NULL; *size = 0; return; } - htmlDocContentDumpFormatOutput(buf, cur, NULL, format); + htmlDocContentDumpFormatOutput(buf, cur, NULL, format); xmlOutputBufferFlush(buf); if (buf->conv != NULL) { - *size = buf->conv->use; - *mem = xmlStrndup(buf->conv->content, *size); + *size = xmlBufUse(buf->conv); + *mem = xmlStrndup(xmlBufContent(buf->conv), *size); } else { - *size = buf->buffer->use; - *mem = xmlStrndup(buf->buffer->content, *size); + *size = xmlBufUse(buf->buffer); + *mem = xmlStrndup(xmlBufContent(buf->buffer), *size); } (void)xmlOutputBufferClose(buf); } @@ -603,7 +634,7 @@ /************************************************************************ * * - * Dumping HTML tree content to an I/O output buffer * + * Dumping HTML tree content to an I/O output buffer * * * ************************************************************************/ @@ -614,7 +645,7 @@ * @buf: the HTML buffer output * @doc: the document * @encoding: the encoding string - * + * * TODO: check whether encoding is needed * * Dump the HTML document DTD, if any. @@ -632,14 +663,15 @@ xmlOutputBufferWriteString(buf, (const char *)cur->name); if (cur->ExternalID != NULL) { xmlOutputBufferWriteString(buf, " PUBLIC "); - xmlBufferWriteQuotedString(buf->buffer, cur->ExternalID); + xmlBufWriteQuotedString(buf->buffer, cur->ExternalID); if (cur->SystemID != NULL) { xmlOutputBufferWriteString(buf, " "); - xmlBufferWriteQuotedString(buf->buffer, cur->SystemID); - } - } else if (cur->SystemID != NULL) { + xmlBufWriteQuotedString(buf->buffer, cur->SystemID); + } + } else if (cur->SystemID != NULL && + xmlStrcmp(cur->SystemID, BAD_CAST "about:legacy-compat")) { xmlOutputBufferWriteString(buf, " SYSTEM "); - xmlBufferWriteQuotedString(buf->buffer, cur->SystemID); + xmlBufWriteQuotedString(buf->buffer, cur->SystemID); } xmlOutputBufferWriteString(buf, ">\n"); } @@ -659,9 +691,10 @@ xmlChar *value; /* - * TODO: The html output method should not escape a & character - * occurring in an attribute value immediately followed by - * a { character (see Section B.7.1 of the HTML 4.0 Recommendation). + * The html output method should not escape a & character + * occurring in an attribute value immediately followed by + * a { character (see Section B.7.1 of the HTML 4.0 Recommendation). + * This is implemented in xmlEncodeEntitiesReentrant */ if (cur == NULL) { @@ -684,20 +717,51 @@ (!xmlStrcasecmp(cur->name, BAD_CAST "src")) || ((!xmlStrcasecmp(cur->name, BAD_CAST "name")) && (!xmlStrcasecmp(cur->parent->name, BAD_CAST "a"))))) { - xmlChar *escaped; xmlChar *tmp = value; + /* xmlURIEscapeStr() escapes '"' so it can be safely used. */ + xmlBufCCat(buf->buffer, "\""); while (IS_BLANK_CH(*tmp)) tmp++; - escaped = xmlURIEscapeStr(tmp, BAD_CAST"@/:=?;#%&,+"); - if (escaped != NULL) { - xmlBufferWriteQuotedString(buf->buffer, escaped); - xmlFree(escaped); - } else { - xmlBufferWriteQuotedString(buf->buffer, value); + /* URI Escape everything, except server side includes. */ + for ( ; ; ) { + xmlChar *escaped; + xmlChar endChar; + xmlChar *end = NULL; + xmlChar *start = (xmlChar *)xmlStrstr(tmp, BAD_CAST ""); + if (end != NULL) { + *start = '\0'; + } + } + + /* Escape the whole string, or until start (set to '\0'). */ + escaped = xmlURIEscapeStr(tmp, BAD_CAST"@/:=?;#%&,+"); + if (escaped != NULL) { + xmlBufCat(buf->buffer, escaped); + xmlFree(escaped); + } else { + xmlBufCat(buf->buffer, tmp); + } + + if (end == NULL) { /* Everything has been written. */ + break; + } + + /* Do not escape anything within server side includes. */ + *start = '<'; /* Restore the first character of "") */ + endChar = *end; + *end = '\0'; + xmlBufCat(buf->buffer, start); + *end = endChar; + tmp = end; } + + xmlBufCCat(buf->buffer, "\""); } else { - xmlBufferWriteQuotedString(buf->buffer, value); + xmlBufWriteQuotedString(buf->buffer, value); } xmlFree(value); } else { @@ -780,6 +844,10 @@ htmlDocContentDumpOutput(buf, (xmlDocPtr) cur, encoding); return; } + if (cur->type == XML_ATTRIBUTE_NODE) { + htmlAttrDumpOutput(buf, doc, (xmlAttrPtr) cur, encoding); + return; + } if (cur->type == HTML_TEXT_NODE) { if (cur->content != NULL) { if (((cur->name == (const xmlChar *)xmlStringText) || @@ -1043,7 +1111,7 @@ handler = xmlFindCharEncodingHandler(encoding); if (handler == NULL) - return(-1); + htmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, encoding); } else { handler = xmlFindCharEncodingHandler(encoding); } @@ -1083,7 +1151,7 @@ if ((cur == NULL) || (filename == NULL)) return(-1); - + xmlInitParser(); encoding = (const char *) htmlGetMetaEncoding(cur); @@ -1102,7 +1170,7 @@ handler = xmlFindCharEncodingHandler(encoding); if (handler == NULL) - return(-1); + htmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, encoding); } } @@ -1114,7 +1182,7 @@ if (handler == NULL) handler = xmlFindCharEncodingHandler("ascii"); - /* + /* * save the content to a temp buffer. */ buf = xmlOutputBufferCreateFilename(filename, handler, cur->compression); @@ -1134,7 +1202,7 @@ * @encoding: the document encoding * * Dump an HTML document to a file using a given encoding. - * + * * returns: the number of byte written or -1 in case of failure. */ int @@ -1146,7 +1214,7 @@ if ((cur == NULL) || (filename == NULL)) return(-1); - + xmlInitParser(); if (encoding != NULL) { @@ -1163,9 +1231,9 @@ handler = xmlFindCharEncodingHandler(encoding); if (handler == NULL) - return(-1); - htmlSetMetaEncoding(cur, (const xmlChar *) encoding); + htmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, encoding); } + htmlSetMetaEncoding(cur, (const xmlChar *) encoding); } else { htmlSetMetaEncoding(cur, (const xmlChar *) "UTF-8"); } @@ -1178,7 +1246,7 @@ if (handler == NULL) handler = xmlFindCharEncodingHandler("ascii"); - /* + /* * save the content to a temp buffer. */ buf = xmlOutputBufferCreateFilename(filename, handler, 0); @@ -1198,7 +1266,7 @@ * * Dump an HTML document to a file using a given encoding * and formatting returns/spaces are added. - * + * * returns: the number of byte written or -1 in case of failure. */ int diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/HTMLtree.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/HTMLtree.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/HTMLtree.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/HTMLtree.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -62,78 +62,78 @@ XMLPUBFUN htmlDocPtr XMLCALL htmlNewDoc (const xmlChar *URI, const xmlChar *ExternalID); -XMLPUBFUN htmlDocPtr XMLCALL +XMLPUBFUN htmlDocPtr XMLCALL htmlNewDocNoDtD (const xmlChar *URI, const xmlChar *ExternalID); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL htmlGetMetaEncoding (htmlDocPtr doc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlSetMetaEncoding (htmlDocPtr doc, const xmlChar *encoding); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL htmlDocDumpMemory (xmlDocPtr cur, xmlChar **mem, int *size); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL htmlDocDumpMemoryFormat (xmlDocPtr cur, xmlChar **mem, int *size, int format); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlDocDump (FILE *f, xmlDocPtr cur); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlSaveFile (const char *filename, xmlDocPtr cur); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlNodeDump (xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL htmlNodeDumpFile (FILE *out, xmlDocPtr doc, xmlNodePtr cur); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlNodeDumpFileFormat (FILE *out, xmlDocPtr doc, xmlNodePtr cur, const char *encoding, int format); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlSaveFileEnc (const char *filename, xmlDocPtr cur, const char *encoding); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlSaveFileFormat (const char *filename, xmlDocPtr cur, const char *encoding, int format); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, const char *encoding, int format); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL htmlDocContentDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr cur, const char *encoding); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL htmlDocContentDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr cur, const char *encoding, int format); -XMLPUBFUN void XMLCALL - htmlNodeDumpOutput (xmlOutputBufferPtr buf, +XMLPUBFUN void XMLCALL + htmlNodeDumpOutput (xmlOutputBufferPtr buf, xmlDocPtr doc, - xmlNodePtr cur, + xmlNodePtr cur, const char *encoding); #endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlIsBooleanAttr (const xmlChar *name); diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/legacy.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/legacy.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/legacy.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/legacy.c 2015-12-23 07:08:27.000000000 +0000 @@ -393,7 +393,7 @@ * @end: an end marker xmlChar, 0 if none * @end2: an end marker xmlChar, 0 if none * @end3: an end marker xmlChar, 0 if none - * + * * This function is deprecated, we now always process entities content * through xmlStringDecodeEntities * @@ -456,7 +456,7 @@ /** * xmlNamespaceParseQName: * @ctxt: an XML parser context - * @prefix: a xmlChar ** + * @prefix: a xmlChar ** * * TODO: this seems not in use anymore, the namespace handling is done on * top of the SAX interfaces, i.e. not on raw input. @@ -603,7 +603,7 @@ /** * xmlParserHandleReference: * @ctxt: the parser context - * + * * TODO: Remove, now deprecated ... the test is done directly in the * content parsing * routines. @@ -615,7 +615,7 @@ * [ WFC: Entity Declared ] * the Name given in the entity reference must match that in an entity * declaration, except that well-formed documents need not declare any - * of the following entities: amp, lt, gt, apos, quot. + * of the following entities: amp, lt, gt, apos, quot. * * [ WFC: Parsed Entity ] * An entity reference must not contain the name of an unparsed entity @@ -624,7 +624,7 @@ * '&#x' [0-9a-fA-F]+ ';' * * A PEReference may have been detected in the current input stream - * the handling is done accordingly to + * the handling is done accordingly to * http://www.w3.org/TR/REC-xml#entproc */ void @@ -693,7 +693,7 @@ /** * xmlUpgradeOldNs: * @doc: a document pointer - * + * * Upgrade old style Namespaces (PI) and move them to the root of the document. * DEPRECATED */ @@ -719,7 +719,7 @@ * * People must migrate their code to xmlEncodeEntitiesReentrant ! * This routine will issue a warning when encountered. - * + * * Returns NULL */ const xmlChar * @@ -740,7 +740,7 @@ /************************************************************************ * * - * Old set of SAXv1 functions * + * Old set of SAXv1 functions * * * ************************************************************************/ static int deprecated_v1_msg = 0; @@ -961,8 +961,8 @@ /** * entityDecl: * @ctx: the user data (XML parser context) - * @name: the entity name - * @type: the entity type + * @name: the entity name + * @type: the entity type * @publicId: The public ID of the entity * @systemId: The system ID of the entity * @content: the entity value (without processing). @@ -983,8 +983,8 @@ * attributeDecl: * @ctx: the user data (XML parser context) * @elem: the name of the element - * @fullname: the attribute name - * @type: the attribute type + * @fullname: the attribute name + * @type: the attribute type * @def: the type of default value * @defaultValue: the attribute default value * @tree: the tree of enumerated value set @@ -1005,8 +1005,8 @@ /** * elementDecl: * @ctx: the user data (XML parser context) - * @name: the element name - * @type: the element type + * @name: the element name + * @type: the element type * @content: the element value tree * * An element definition has been parsed @@ -1151,7 +1151,7 @@ endElement(void *ctx, const xmlChar * name ATTRIBUTE_UNUSED) { DEPRECATED("endElement") - xmlSAX2EndElement(ctx, name); + xmlSAX2EndElement(ctx, name); } /** @@ -1159,7 +1159,7 @@ * @ctx: the user data (XML parser context) * @name: The entity name * - * called when an entity reference is detected. + * called when an entity reference is detected. * DEPRECATED: use xmlSAX2Reference() */ void diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/libxml.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/libxml.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/libxml.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/libxml.h 2015-12-23 07:08:27.000000000 +0000 @@ -20,7 +20,20 @@ #if defined(macintosh) #include "config-mac.h" +#elif defined(_WIN32_WCE) +/* + * Windows CE compatibility definitions and functions + * This is needed to compile libxml2 for Windows CE. + * At least I tested it with WinCE 5.0 for Emulator and WinCE 4.2/SH4 target + */ +#include +#include #else +/* + * Currently supported platforms use either autoconf or + * copy to config.h own "preset" configuration file. + * As result ifdef HAVE_CONFIG_H is omited here. + */ #include "config.h" #include #endif @@ -64,6 +77,23 @@ void __htmlParseContent(void *ctx); #endif +/* + * internal global initialization critical section routines. + */ +void __xmlGlobalInitMutexLock(void); +void __xmlGlobalInitMutexUnlock(void); +void __xmlGlobalInitMutexDestroy(void); + +int __xmlInitializeDict(void); + +#if defined(HAVE_RAND) && defined(HAVE_SRAND) && defined(HAVE_TIME) +/* + * internal thread safe random function + */ +int __xmlRandom(void); +#endif + +int xmlNop(void); #ifdef IN_LIBXML #ifdef __GNUC__ @@ -76,4 +106,7 @@ #endif #endif #endif +#if !defined(PIC) && !defined(NOLIBTOOL) +# define LIBXML_STATIC +#endif #endif /* ! __XML_LIBXML_H__ */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/list.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/list.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/list.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/list.c 2015-12-23 07:08:27.000000000 +0000 @@ -94,15 +94,15 @@ * * Returns the link containing the data or NULL */ -static xmlLinkPtr -xmlListLowerSearch(xmlListPtr l, void *data) +static xmlLinkPtr +xmlListLowerSearch(xmlListPtr l, void *data) { xmlLinkPtr lk; if (l == NULL) return(NULL); for(lk = l->sentinel->next;lk != l->sentinel && l->linkCompare(lk->data, data) <0 ;lk = lk->next); - return lk; + return lk; } /** @@ -114,15 +114,15 @@ * * Returns the link containing the data or NULL */ -static xmlLinkPtr -xmlListHigherSearch(xmlListPtr l, void *data) +static xmlLinkPtr +xmlListHigherSearch(xmlListPtr l, void *data) { xmlLinkPtr lk; if (l == NULL) return(NULL); for(lk = l->sentinel->prev;lk != l->sentinel && l->linkCompare(lk->data, data) >0 ;lk = lk->prev); - return lk; + return lk; } /** @@ -134,8 +134,8 @@ * * Returns the link containing the data or NULL */ -static xmlLinkPtr -xmlListLinkSearch(xmlListPtr l, void *data) +static xmlLinkPtr +xmlListLinkSearch(xmlListPtr l, void *data) { xmlLinkPtr lk; if (l == NULL) @@ -159,8 +159,8 @@ * * Returns the link containing the data or NULL */ -static xmlLinkPtr -xmlListLinkReverseSearch(xmlListPtr l, void *data) +static xmlLinkPtr +xmlListLinkReverseSearch(xmlListPtr l, void *data) { xmlLinkPtr lk; if (l == NULL) @@ -189,16 +189,16 @@ { xmlListPtr l; if (NULL == (l = (xmlListPtr )xmlMalloc( sizeof(xmlList)))) { - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "Cannot initialize memory for list"); return (NULL); } /* Initialize the list to NULL */ memset(l, 0, sizeof(xmlList)); - + /* Add the sentinel */ if (NULL ==(l->sentinel = (xmlLinkPtr )xmlMalloc(sizeof(xmlLink)))) { - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "Cannot initialize memory for sentinel"); xmlFree(l); return (NULL); @@ -206,7 +206,7 @@ l->sentinel->next = l->sentinel; l->sentinel->prev = l->sentinel; l->sentinel->data = NULL; - + /* If there is a link deallocator, use it */ if (deallocator != NULL) l->linkDeallocator = deallocator; @@ -217,7 +217,7 @@ l->linkCompare = xmlLinkCompare; return l; } - + /** * xmlListSearch: * @l: a list @@ -228,7 +228,7 @@ * Returns the value associated to @data or NULL in case of error */ void * -xmlListSearch(xmlListPtr l, void *data) +xmlListSearch(xmlListPtr l, void *data) { xmlLinkPtr lk; if (l == NULL) @@ -249,7 +249,7 @@ * Returns the value associated to @data or NULL in case of error */ void * -xmlListReverseSearch(xmlListPtr l, void *data) +xmlListReverseSearch(xmlListPtr l, void *data) { xmlLinkPtr lk; if (l == NULL) @@ -270,7 +270,7 @@ * Returns 0 in case of success, 1 in case of failure */ int -xmlListInsert(xmlListPtr l, void *data) +xmlListInsert(xmlListPtr l, void *data) { xmlLinkPtr lkPlace, lkNew; @@ -280,7 +280,7 @@ /* Add the new link */ lkNew = (xmlLinkPtr) xmlMalloc(sizeof(xmlLink)); if (lkNew == NULL) { - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "Cannot initialize memory for new link"); return (1); } @@ -302,7 +302,7 @@ * * Returns 0 in case of success, 1 in case of failure */ -int xmlListAppend(xmlListPtr l, void *data) +int xmlListAppend(xmlListPtr l, void *data) { xmlLinkPtr lkPlace, lkNew; @@ -312,16 +312,16 @@ /* Add the new link */ lkNew = (xmlLinkPtr) xmlMalloc(sizeof(xmlLink)); if (lkNew == NULL) { - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "Cannot initialize memory for new link"); - return (0); + return (1); } lkNew->data = data; lkNew->next = lkPlace->next; (lkPlace->next)->prev = lkNew; lkPlace->next = lkNew; lkNew->prev = lkPlace; - return 1; + return 0; } /** @@ -353,7 +353,7 @@ xmlListRemoveFirst(xmlListPtr l, void *data) { xmlLinkPtr lk; - + if (l == NULL) return(0); /*Find the first instance of this data */ @@ -378,7 +378,7 @@ xmlListRemoveLast(xmlListPtr l, void *data) { xmlLinkPtr lk; - + if (l == NULL) return(0); /*Find the last instance of this data */ @@ -403,7 +403,7 @@ xmlListRemoveAll(xmlListPtr l, void *data) { int count=0; - + if (l == NULL) return(0); @@ -422,7 +422,7 @@ xmlListClear(xmlListPtr l) { xmlLinkPtr lk; - + if (l == NULL) return; lk = l->sentinel->next; @@ -458,14 +458,14 @@ * * Returns the first element in the list, or NULL */ -xmlLinkPtr +xmlLinkPtr xmlListFront(xmlListPtr l) { if (l == NULL) return(NULL); return (l->sentinel->next); } - + /** * xmlListEnd: * @l: a list @@ -474,14 +474,14 @@ * * Returns the last element in the list, or NULL */ -xmlLinkPtr +xmlLinkPtr xmlListEnd(xmlListPtr l) { if (l == NULL) return(NULL); return (l->sentinel->prev); } - + /** * xmlListSize: * @l: a list @@ -539,7 +539,7 @@ * Returns 1 if successful, 0 otherwise */ int -xmlListPushFront(xmlListPtr l, void *data) +xmlListPushFront(xmlListPtr l, void *data) { xmlLinkPtr lkPlace, lkNew; @@ -549,7 +549,7 @@ /* Add the new link */ lkNew = (xmlLinkPtr) xmlMalloc(sizeof(xmlLink)); if (lkNew == NULL) { - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "Cannot initialize memory for new link"); return (0); } @@ -571,7 +571,7 @@ * Returns 1 if successful, 0 otherwise */ int -xmlListPushBack(xmlListPtr l, void *data) +xmlListPushBack(xmlListPtr l, void *data) { xmlLinkPtr lkPlace, lkNew; @@ -580,7 +580,7 @@ lkPlace = l->sentinel->prev; /* Add the new link */ if (NULL ==(lkNew = (xmlLinkPtr )xmlMalloc(sizeof(xmlLink)))) { - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "Cannot initialize memory for new link"); return (0); } @@ -643,7 +643,7 @@ xmlListSort(xmlListPtr l) { xmlListPtr lTemp; - + if (l == NULL) return; if(xmlListEmpty(l)) @@ -725,10 +725,10 @@ * @old: the list * * Duplicate the list - * + * * Returns a new copy of the list or NULL in case of error */ -xmlListPtr +xmlListPtr xmlListDup(const xmlListPtr old) { xmlListPtr cur; @@ -754,7 +754,7 @@ * @old: the old list * * Move all the element from the old list in the new list - * + * * Returns 0 in case of success 1 in case of error */ int @@ -771,7 +771,7 @@ return (1); } } - return (0); + return (0); } /* xmlListUnique() */ /* xmlListSwap */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/list.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/list.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/list.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/list.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -1,6 +1,6 @@ /* * Summary: lists interfaces - * Description: this module implement the list support used in + * Description: this module implement the list support used in * various place in the library. * * Copy: See Copyright for the status of this software. @@ -55,76 +55,76 @@ XMLPUBFUN xmlListPtr XMLCALL xmlListCreate (xmlListDeallocator deallocator, xmlListDataCompare compare); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListDelete (xmlListPtr l); /* Basic Operators */ -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlListSearch (xmlListPtr l, void *data); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlListReverseSearch (xmlListPtr l, void *data); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListInsert (xmlListPtr l, void *data) ; -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListAppend (xmlListPtr l, void *data) ; -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListRemoveFirst (xmlListPtr l, void *data); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListRemoveLast (xmlListPtr l, void *data); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListRemoveAll (xmlListPtr l, void *data); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListClear (xmlListPtr l); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListEmpty (xmlListPtr l); -XMLPUBFUN xmlLinkPtr XMLCALL +XMLPUBFUN xmlLinkPtr XMLCALL xmlListFront (xmlListPtr l); -XMLPUBFUN xmlLinkPtr XMLCALL +XMLPUBFUN xmlLinkPtr XMLCALL xmlListEnd (xmlListPtr l); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListSize (xmlListPtr l); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListPopFront (xmlListPtr l); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListPopBack (xmlListPtr l); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListPushFront (xmlListPtr l, void *data); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListPushBack (xmlListPtr l, void *data); /* Advanced Operators */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListReverse (xmlListPtr l); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListSort (xmlListPtr l); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListWalk (xmlListPtr l, xmlListWalker walker, const void *user); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListReverseWalk (xmlListPtr l, xmlListWalker walker, const void *user); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListMerge (xmlListPtr l1, xmlListPtr l2); -XMLPUBFUN xmlListPtr XMLCALL +XMLPUBFUN xmlListPtr XMLCALL xmlListDup (const xmlListPtr old); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListCopy (xmlListPtr cur, const xmlListPtr old); /* Link operators */ -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlLinkGetData (xmlLinkPtr lk); /* xmlListUnique() */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/nanoftp.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/nanoftp.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/nanoftp.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/nanoftp.c 2015-12-23 07:08:27.000000000 +0000 @@ -41,7 +41,7 @@ #include #endif #ifdef HAVE_FCNTL_H -#include +#include #endif #ifdef HAVE_ERRNO_H #include @@ -77,8 +77,10 @@ #endif -#ifdef __MINGW32__ +#if defined(__MINGW32__) || defined(_WIN32_WCE) +#ifndef _WINSOCKAPI_ #define _WINSOCKAPI_ +#endif #include #include #undef XML_SOCKLEN_T @@ -89,10 +91,9 @@ * A couple portability macros */ #ifndef _WINSOCKAPI_ -#ifndef __BEOS__ +#if !defined(__BEOS__) || defined(__HAIKU__) #define closesocket(s) close(s) #endif -#define SOCKET int #endif #ifdef __BEOS__ @@ -102,8 +103,10 @@ #endif #ifdef _AIX +#ifdef HAVE_BROKEN_SS_FAMILY #define ss_family __ss_family #endif +#endif #ifndef XML_SOCKLEN_T #define XML_SOCKLEN_T unsigned int @@ -185,7 +188,7 @@ xmlNanoFTPInit(void) { const char *env; #ifdef _WINSOCKAPI_ - WSADATA wsaData; + WSADATA wsaData; #endif if (initialized) @@ -302,15 +305,15 @@ /* * Clear any existing data from the context */ - if (ctxt->protocol != NULL) { + if (ctxt->protocol != NULL) { xmlFree(ctxt->protocol); ctxt->protocol = NULL; } - if (ctxt->hostname != NULL) { + if (ctxt->hostname != NULL) { xmlFree(ctxt->hostname); ctxt->hostname = NULL; } - if (ctxt->path != NULL) { + if (ctxt->path != NULL) { xmlFree(ctxt->path); ctxt->path = NULL; } @@ -324,7 +327,7 @@ xmlFreeURI(uri); return; } - + ctxt->protocol = xmlMemStrdup(uri->scheme); ctxt->hostname = xmlMemStrdup(uri->server); if (uri->path != NULL) @@ -355,7 +358,7 @@ * @URL: The URL used to update the context * * Update an FTP context by parsing the URL and finding - * new path it indicates. If there is an error in the + * new path it indicates. If there is an error in the * protocol, hostname, port or other information, the * error is raised. It indicates a new connection has to * be established. @@ -400,7 +403,7 @@ ctxt->path = NULL; } - if (uri->path == NULL) + if (uri->path == NULL) ctxt->path = xmlMemStrdup("/"); else ctxt->path = xmlMemStrdup(uri->path); @@ -424,7 +427,7 @@ xmlNanoFTPScanProxy(const char *URL) { xmlURIPtr uri; - if (proxy != NULL) { + if (proxy != NULL) { xmlFree(proxy); proxy = NULL; } @@ -448,7 +451,7 @@ xmlFreeURI(uri); return; } - + proxy = xmlMemStrdup(uri->server); if (uri->port != 0) proxyPort = uri->port; @@ -482,7 +485,7 @@ ret->returnValue = 0; ret->controlBufIndex = 0; ret->controlBufUsed = 0; - ret->controlFd = -1; + ret->controlFd = INVALID_SOCKET; unescaped = xmlURIUnescapeString(URL, 0, NULL); if (unescaped != NULL) { @@ -509,8 +512,8 @@ if (ctxt->protocol != NULL) xmlFree(ctxt->protocol); if (ctxt->path != NULL) xmlFree(ctxt->path); ctxt->passive = 1; - if (ctxt->controlFd >= 0) closesocket(ctxt->controlFd); - ctxt->controlFd = -1; + if (ctxt->controlFd != INVALID_SOCKET) closesocket(ctxt->controlFd); + ctxt->controlFd = INVALID_SOCKET; ctxt->controlBufIndex = -1; ctxt->controlBufUsed = -1; xmlFree(ctxt); @@ -520,7 +523,7 @@ * xmlNanoFTPParseResponse: * @buf: the buffer containing the response * @len: the buffer length - * + * * Parsing of the server answer, we just extract the code. * * returns 0 for errors @@ -532,22 +535,22 @@ int val = 0; if (len < 3) return(-1); - if ((*buf >= '0') && (*buf <= '9')) + if ((*buf >= '0') && (*buf <= '9')) val = val * 10 + (*buf - '0'); else return(0); buf++; - if ((*buf >= '0') && (*buf <= '9')) + if ((*buf >= '0') && (*buf <= '9')) val = val * 10 + (*buf - '0'); else return(0); buf++; - if ((*buf >= '0') && (*buf <= '9')) + if ((*buf >= '0') && (*buf <= '9')) val = val * 10 + (*buf - '0'); else return(0); buf++; - if (*buf == '-') + if (*buf == '-') return(-val); return(val); } @@ -565,7 +568,7 @@ int len; int size; - if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1); + if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1); if ((ctxt->controlBufIndex < 0) || (ctxt->controlBufIndex > FTP_BUF_SIZE)) { #ifdef DEBUG_FTP @@ -617,8 +620,8 @@ if ((len = recv(ctxt->controlFd, &ctxt->controlBuf[ctxt->controlBufIndex], size, 0)) < 0) { __xmlIOErr(XML_FROM_FTP, 0, "recv failed"); - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } #ifdef DEBUG_FTP @@ -646,7 +649,7 @@ int len; int res = -1, cur = -1; - if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1); + if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1); get_more: /* @@ -735,7 +738,7 @@ fd_set rfd; struct timeval tv; - if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1); + if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1); tv.tv_sec = 0; tv.tv_usec = 0; FD_ZERO(&rfd); @@ -746,7 +749,7 @@ case -1: __xmlIOErr(XML_FROM_FTP, 0, "select"); return(-1); - + } return(xmlNanoFTPReadResponse(ctx)); @@ -772,7 +775,7 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); return(res); @@ -800,7 +803,7 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); return(res); @@ -824,14 +827,14 @@ char buf[200]; int len, res; - if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1); + if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1); snprintf(buf, sizeof(buf), "QUIT\r\n"); len = strlen(buf); #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); /* Just to be consistent, even though we know it can't have a % in it */ #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); return(res); @@ -905,6 +908,8 @@ return (-1); } if (tmp->ai_addrlen > sizeof(ctxt->ftpAddr)) { + if (result) + freeaddrinfo (result); __xmlIOErr(XML_FROM_FTP, 0, "gethostbyname address mismatch"); return (-1); } @@ -925,9 +930,9 @@ #endif { if (proxy) - hp = gethostbyname (proxy); + hp = gethostbyname (GETHOSTBYNAME_ARG_CAST proxy); else - hp = gethostbyname (ctxt->hostname); + hp = gethostbyname (GETHOSTBYNAME_ARG_CAST ctxt->hostname); if (hp == NULL) { __xmlIOErr(XML_FROM_FTP, 0, "gethostbyname failed"); return (-1); @@ -944,12 +949,13 @@ ((struct sockaddr_in *)&ctxt->ftpAddr)->sin_family = AF_INET; memcpy (&((struct sockaddr_in *)&ctxt->ftpAddr)->sin_addr, hp->h_addr_list[0], hp->h_length); - ((struct sockaddr_in *)&ctxt->ftpAddr)->sin_port = (u_short)htons ((unsigned short)port); + ((struct sockaddr_in *)&ctxt->ftpAddr)->sin_port = + (unsigned short)htons ((unsigned short)port); ctxt->controlFd = socket (AF_INET, SOCK_STREAM, 0); addrlen = sizeof (struct sockaddr_in); } - if (ctxt->controlFd < 0) { + if (ctxt->controlFd == INVALID_SOCKET) { __xmlIOErr(XML_FROM_FTP, 0, "socket failed"); return(-1); } @@ -960,8 +966,8 @@ if (connect(ctxt->controlFd, (struct sockaddr *) &ctxt->ftpAddr, addrlen) < 0) { __xmlIOErr(XML_FROM_FTP, 0, "Failed to create a connection"); - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } @@ -970,8 +976,8 @@ */ res = xmlNanoFTPGetResponse(ctxt); if (res != 2) { - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } @@ -1024,11 +1030,11 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); closesocket(ctxt->controlFd); - ctxt->controlFd = -1; + ctxt->controlFd = INVALID_SOCKET; return(res); } res = xmlNanoFTPGetResponse(ctxt); @@ -1046,17 +1052,17 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); closesocket(ctxt->controlFd); - ctxt->controlFd = -1; + ctxt->controlFd = INVALID_SOCKET; return(res); } res = xmlNanoFTPGetResponse(ctxt); if (res > 3) { closesocket(ctxt->controlFd); - ctxt->controlFd = -1; + ctxt->controlFd = INVALID_SOCKET; return(-1); } break; @@ -1067,7 +1073,7 @@ case -1: default: closesocket(ctxt->controlFd); - ctxt->controlFd = -1; + ctxt->controlFd = INVALID_SOCKET; return(-1); } } @@ -1087,11 +1093,11 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(res); } res = xmlNanoFTPGetResponse(ctxt); @@ -1099,10 +1105,10 @@ /* we assume it worked :-\ 1 is error for SITE command */ proxyType = 1; break; - } + } if (proxyType == 1) { - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } case 2: @@ -1118,11 +1124,11 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(res); } res = xmlNanoFTPGetResponse(ctxt); @@ -1130,7 +1136,7 @@ /* we assume it worked :-\ */ proxyType = 2; return(0); - } + } if (ctxt->passwd == NULL) snprintf(buf, sizeof(buf), "PASS anonymous@\r\n"); else @@ -1140,11 +1146,11 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(res); } res = xmlNanoFTPGetResponse(ctxt); @@ -1154,8 +1160,8 @@ return(0); } if (proxyType == 2) { - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } case 3: @@ -1164,8 +1170,8 @@ * send the code or at least the sequence in use. */ default: - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } } @@ -1174,8 +1180,8 @@ */ res = xmlNanoFTPSendUser(ctxt); if (res < 0) { - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } res = xmlNanoFTPGetResponse(ctxt); @@ -1189,14 +1195,14 @@ case 5: case -1: default: - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } res = xmlNanoFTPSendPasswd(ctxt); if (res < 0) { - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } res = xmlNanoFTPGetResponse(ctxt); @@ -1211,8 +1217,8 @@ case 5: case -1: default: - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } @@ -1235,12 +1241,18 @@ int res; xmlNanoFTPInit(); - if (server == NULL) + if (server == NULL) return(NULL); if (port <= 0) return(NULL); ctxt = (xmlNanoFTPCtxtPtr) xmlNanoFTPNewCtxt(NULL); + if (ctxt == NULL) + return(NULL); ctxt->hostname = xmlMemStrdup(server); + if (ctxt->hostname == NULL) { + xmlNanoFTPFreeCtxt(ctxt); + return(NULL); + } if (port != 0) ctxt->port = port; res = xmlNanoFTPConnect(ctxt); @@ -1268,7 +1280,7 @@ int len; int res; - if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1); + if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1); if (directory == NULL) return 0; /* @@ -1284,7 +1296,7 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); return(res); @@ -1317,8 +1329,8 @@ int len; int res; - if ((ctxt == NULL) || (ctxt->controlFd < 0) || (file == NULL)) return(-1); - if (file == NULL) return (0); + if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET) || + (file == NULL)) return(-1); /* * Expected response code for DELE: @@ -1328,14 +1340,14 @@ * 450, 550 * 500, 501, 502, 421, 530 */ - + snprintf(buf, sizeof(buf), "DELE %s\r\n", file); buf[sizeof(buf) - 1] = 0; len = strlen(buf); #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); return(res); @@ -1360,7 +1372,7 @@ * Returns -1 incase of error, 0 otherwise */ -int +SOCKET xmlNanoFTPGetConnection(void *ctx) { xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx; char buf[200], *cur; @@ -1375,7 +1387,7 @@ #endif XML_SOCKLEN_T dataAddrLen; - if (ctxt == NULL) return(-1); + if (ctxt == NULL) return INVALID_SOCKET; memset (&dataAddr, 0, sizeof(dataAddr)); #ifdef SUPPORT_IP6 @@ -1391,9 +1403,9 @@ dataAddrLen = sizeof (struct sockaddr_in); } - if (ctxt->dataFd < 0) { + if (ctxt->dataFd == INVALID_SOCKET) { __xmlIOErr(XML_FROM_FTP, 0, "socket failed"); - return (-1); + return INVALID_SOCKET; } if (ctxt->passive) { @@ -1407,36 +1419,36 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return(res); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } res = xmlNanoFTPReadResponse(ctx); if (res != 2) { if (res == 5) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return(-1); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } else { /* * retry with an active connection */ - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; ctxt->passive = 0; } } - cur = &ctxt->controlBuf[ctxt->controlBufAnswer]; + cur = &ctxt->controlBuf[ctxt->controlBufAnswer]; while (((*cur < '0') || (*cur > '9')) && *cur != '\0') cur++; #ifdef SUPPORT_IP6 if ((ctxt->ftpAddr).ss_family == AF_INET6) { if (sscanf (cur, "%u", &temp[0]) != 1) { __xmlIOErr(XML_FROM_FTP, XML_FTP_EPSV_ANSWER, "Invalid answer to EPSV\n"); - if (ctxt->dataFd != -1) { - closesocket (ctxt->dataFd); ctxt->dataFd = -1; + if (ctxt->dataFd != INVALID_SOCKET) { + closesocket (ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; } - return (-1); + return INVALID_SOCKET; } memcpy (&((struct sockaddr_in6 *)&dataAddr)->sin6_addr, &((struct sockaddr_in6 *)&ctxt->ftpAddr)->sin6_addr, sizeof(struct in6_addr)); ((struct sockaddr_in6 *)&dataAddr)->sin6_port = htons (temp[0]); @@ -1448,10 +1460,10 @@ &temp[3], &temp[4], &temp[5]) != 6) { __xmlIOErr(XML_FROM_FTP, XML_FTP_PASV_ANSWER, "Invalid answer to PASV\n"); - if (ctxt->dataFd != -1) { - closesocket (ctxt->dataFd); ctxt->dataFd = -1; + if (ctxt->dataFd != INVALID_SOCKET) { + closesocket (ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; } - return (-1); + return INVALID_SOCKET; } for (i=0; i<6; i++) ad[i] = (unsigned char) (temp[i] & 0xff); memcpy (&((struct sockaddr_in *)&dataAddr)->sin_addr, &ad[0], 4); @@ -1460,8 +1472,8 @@ if (connect(ctxt->dataFd, (struct sockaddr *) &dataAddr, dataAddrLen) < 0) { __xmlIOErr(XML_FROM_FTP, 0, "Failed to create a data connection"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return (-1); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } } else { getsockname(ctxt->dataFd, (struct sockaddr *) &dataAddr, &dataAddrLen); @@ -1474,15 +1486,15 @@ if (bind(ctxt->dataFd, (struct sockaddr *) &dataAddr, dataAddrLen) < 0) { __xmlIOErr(XML_FROM_FTP, 0, "bind failed"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return (-1); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } getsockname(ctxt->dataFd, (struct sockaddr *) &dataAddr, &dataAddrLen); if (listen(ctxt->dataFd, 1) < 0) { __xmlIOErr(XML_FROM_FTP, 0, "listen failed"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return (-1); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } #ifdef SUPPORT_IP6 if ((ctxt->ftpAddr).ss_family == AF_INET6) { @@ -1508,20 +1520,20 @@ xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return(res); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } res = xmlNanoFTPGetResponse(ctxt); if (res != 2) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return(-1); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } } return(ctxt->dataFd); - + } /** @@ -1540,9 +1552,9 @@ fd_set rfd, efd; struct timeval tv; - if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1); + if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; tv.tv_sec = 15; tv.tv_usec = 0; FD_ZERO(&rfd); @@ -1554,7 +1566,7 @@ #ifdef DEBUG_FTP perror("select"); #endif - closesocket(ctxt->controlFd); ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; return(-1); } if (res == 0) { @@ -1562,11 +1574,11 @@ xmlGenericError(xmlGenericErrorContext, "xmlNanoFTPCloseConnection: timeout\n"); #endif - closesocket(ctxt->controlFd); ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; } else { res = xmlNanoFTPGetResponse(ctxt); if (res != 2) { - closesocket(ctxt->controlFd); ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; return(-1); } } @@ -1579,7 +1591,7 @@ * @callback: the user callback * @userData: the user callback data * - * Parse at most one entry from the listing. + * Parse at most one entry from the listing. * * Returns -1 incase of error, the length of data parsed otherwise */ @@ -1616,7 +1628,7 @@ if (*cur == 0) return(0); i = 0; while (*cur != ' ') { - if (i < 10) + if (i < 10) attrib[i++] = *cur; cur++; if (*cur == 0) return(0); @@ -1630,7 +1642,7 @@ if (*cur == 0) return(0); i = 0; while (*cur != ' ') { - if (i < 10) + if (i < 10) owner[i++] = *cur; cur++; if (*cur == 0) return(0); @@ -1640,7 +1652,7 @@ if (*cur == 0) return(0); i = 0; while (*cur != ' ') { - if (i < 10) + if (i < 10) group[i++] = *cur; cur++; if (*cur == 0) return(0); @@ -1727,7 +1739,7 @@ if (xmlNanoFTPCwd(ctxt, ctxt->path) < 1) return(-1); ctxt->dataFd = xmlNanoFTPGetConnection(ctxt); - if (ctxt->dataFd == -1) + if (ctxt->dataFd == INVALID_SOCKET) return(-1); snprintf(buf, sizeof(buf), "LIST -L\r\n"); } else { @@ -1736,7 +1748,7 @@ return(-1); } ctxt->dataFd = xmlNanoFTPGetConnection(ctxt); - if (ctxt->dataFd == -1) + if (ctxt->dataFd == INVALID_SOCKET) return(-1); snprintf(buf, sizeof(buf), "LIST -L %s\r\n", filename); } @@ -1745,15 +1757,15 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; return(res); } res = xmlNanoFTPReadResponse(ctxt); if (res != 1) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; return(-res); } @@ -1769,18 +1781,18 @@ #ifdef DEBUG_FTP perror("select"); #endif - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; return(-1); } if (res == 0) { res = xmlNanoFTPCheckResponse(ctxt); if (res < 0) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + ctxt->dataFd = INVALID_SOCKET; return(-1); } if (res == 2) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; return(0); } @@ -1789,8 +1801,8 @@ if ((len = recv(ctxt->dataFd, &buf[indx], sizeof(buf) - (indx + 1), 0)) < 0) { __xmlIOErr(XML_FROM_FTP, 0, "recv"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + ctxt->dataFd = INVALID_SOCKET; return(-1); } #ifdef DEBUG_FTP @@ -1822,34 +1834,34 @@ */ -int +SOCKET xmlNanoFTPGetSocket(void *ctx, const char *filename) { xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx; char buf[300]; int res, len; if (ctx == NULL) - return(-1); + return INVALID_SOCKET; if ((filename == NULL) && (ctxt->path == NULL)) - return(-1); + return INVALID_SOCKET; ctxt->dataFd = xmlNanoFTPGetConnection(ctxt); - if (ctxt->dataFd == -1) - return(-1); + if (ctxt->dataFd == INVALID_SOCKET) + return INVALID_SOCKET; snprintf(buf, sizeof(buf), "TYPE I\r\n"); len = strlen(buf); #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return(res); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } res = xmlNanoFTPReadResponse(ctxt); if (res != 2) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return(-res); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } if (filename == NULL) snprintf(buf, sizeof(buf), "RETR %s\r\n", ctxt->path); @@ -1860,16 +1872,16 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return(res); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } res = xmlNanoFTPReadResponse(ctxt); if (res != 1) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return(-res); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } return(ctxt->dataFd); } @@ -1901,7 +1913,7 @@ return(-1); if (callback == NULL) return(-1); - if (xmlNanoFTPGetSocket(ctxt, filename) < 0) + if (xmlNanoFTPGetSocket(ctxt, filename) == INVALID_SOCKET) return(-1); do { @@ -1914,18 +1926,18 @@ #ifdef DEBUG_FTP perror("select"); #endif - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; return(-1); } if (res == 0) { res = xmlNanoFTPCheckResponse(ctxt); if (res < 0) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + ctxt->dataFd = INVALID_SOCKET; return(-1); } if (res == 2) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; return(0); } @@ -1934,7 +1946,7 @@ if ((len = recv(ctxt->dataFd, buf, sizeof(buf), 0)) < 0) { __xmlIOErr(XML_FROM_FTP, 0, "recv failed"); callback(userData, buf, len); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; return(-1); } callback(userData, buf, len); @@ -1960,7 +1972,7 @@ xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx; if (ctx == NULL) return(-1); - if (ctxt->dataFd < 0) return(0); + if (ctxt->dataFd == INVALID_SOCKET) return(0); if (dest == NULL) return(-1); if (len <= 0) return(0); @@ -1982,13 +1994,13 @@ * * Start to fetch the given ftp:// resource * - * Returns an FTP context, or NULL + * Returns an FTP context, or NULL */ void* xmlNanoFTPOpen(const char *URL) { xmlNanoFTPCtxtPtr ctxt; - int sock; + SOCKET sock; xmlNanoFTPInit(); if (URL == NULL) return(NULL); @@ -2001,7 +2013,7 @@ return(NULL); } sock = xmlNanoFTPGetSocket(ctxt, ctxt->path); - if (sock < 0) { + if (sock == INVALID_SOCKET) { xmlNanoFTPFreeCtxt(ctxt); return(NULL); } @@ -2024,14 +2036,14 @@ if (ctxt == NULL) return(-1); - if (ctxt->dataFd >= 0) { + if (ctxt->dataFd != INVALID_SOCKET) { closesocket(ctxt->dataFd); - ctxt->dataFd = -1; + ctxt->dataFd = INVALID_SOCKET; } - if (ctxt->controlFd >= 0) { + if (ctxt->controlFd != INVALID_SOCKET) { xmlNanoFTPQuit(ctxt); closesocket(ctxt->controlFd); - ctxt->controlFd = -1; + ctxt->controlFd = INVALID_SOCKET; } xmlNanoFTPFreeCtxt(ctxt); return(0); @@ -2039,9 +2051,9 @@ #ifdef STANDALONE /************************************************************************ - * * - * Basic test in Standalone mode * - * * + * * + * Basic test in Standalone mode * + * * ************************************************************************/ static void ftpList(void *userData, const char *filename, const char* attrib, @@ -2056,7 +2068,7 @@ if (len <= 0) { fclose((FILE*)userData); return; - } + } fwrite(data, len, 1, (FILE*)userData); } @@ -2088,7 +2100,7 @@ if (xmlNanoFTPGet(ctxt, ftpData, (void *) output, tstfile) < 0) xmlGenericError(xmlGenericErrorContext, "Failed to get file\n"); - + } xmlNanoFTPClose(ctxt); xmlMemoryDump(); diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/nanoftp.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/nanoftp.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/nanoftp.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/nanoftp.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -7,7 +7,7 @@ * * Author: Daniel Veillard */ - + #ifndef __NANO_FTP_H__ #define __NANO_FTP_H__ @@ -15,12 +15,32 @@ #ifdef LIBXML_FTP_ENABLED +/* Needed for portability to Windows 64 bits */ +#if defined(__MINGW32__) || defined(_WIN32_WCE) +#include +#else +/** + * SOCKET: + * + * macro used to provide portability of code to windows sockets + */ +#define SOCKET int +/** + * INVALID_SOCKET: + * + * macro used to provide portability of code to windows sockets + * the value to be used when the socket is not valid + */ +#undef INVALID_SOCKET +#define INVALID_SOCKET (-1) +#endif + #ifdef __cplusplus extern "C" { #endif /** - * ftpListCallback: + * ftpListCallback: * @userData: user provided data for the callback * @filename: the file name (including "->" when links are shown) * @attrib: the attribute string @@ -44,7 +64,7 @@ const char *month, int day, int hour, int minute); /** - * ftpDataCallback: + * ftpDataCallback: * @userData: the user provided context * @data: the data received * @len: its size in bytes @@ -60,78 +80,78 @@ */ XMLPUBFUN void XMLCALL xmlNanoFTPInit (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNanoFTPCleanup (void); /* * Creating/freeing contexts. */ -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlNanoFTPNewCtxt (const char *URL); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNanoFTPFreeCtxt (void * ctx); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlNanoFTPConnectTo (const char *server, int port); /* * Opening/closing session connections. */ -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlNanoFTPOpen (const char *URL); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPConnect (void *ctx); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPClose (void *ctx); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPQuit (void *ctx); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNanoFTPScanProxy (const char *URL); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNanoFTPProxy (const char *host, int port, const char *user, const char *passwd, int type); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPUpdateURL (void *ctx, const char *URL); /* * Rather internal commands. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPGetResponse (void *ctx); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPCheckResponse (void *ctx); /* * CD/DIR/GET handlers. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPCwd (void *ctx, const char *directory); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPDele (void *ctx, const char *file); -XMLPUBFUN int XMLCALL +XMLPUBFUN SOCKET XMLCALL xmlNanoFTPGetConnection (void *ctx); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPCloseConnection(void *ctx); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPList (void *ctx, ftpListCallback callback, void *userData, const char *filename); -XMLPUBFUN int XMLCALL +XMLPUBFUN SOCKET XMLCALL xmlNanoFTPGetSocket (void *ctx, const char *filename); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPGet (void *ctx, ftpDataCallback callback, void *userData, const char *filename); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPRead (void *ctx, void *dest, int len); diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/nanohttp.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/nanohttp.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/nanohttp.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/nanohttp.c 2015-12-23 07:08:27.000000000 +0000 @@ -10,7 +10,7 @@ * * daniel@veillard.com */ - + #define NEED_SOCKETS #define IN_LIBXML #include "libxml.h" @@ -46,7 +46,7 @@ #include #endif #ifdef HAVE_FCNTL_H -#include +#include #endif #ifdef HAVE_ERRNO_H #include @@ -54,15 +54,16 @@ #ifdef HAVE_SYS_TIME_H #include #endif +#ifndef HAVE_POLL_H #ifdef HAVE_SYS_SELECT_H #include #endif +#else +#include +#endif #ifdef HAVE_STRINGS_H #include #endif -#ifdef SUPPORT_IP6 -#include -#endif #ifdef HAVE_ZLIB_H #include #endif @@ -71,19 +72,18 @@ #ifdef VMS #include #define XML_SOCKLEN_T unsigned int -#define SOCKET int #endif - -#ifdef __MINGW32__ +#if defined(__MINGW32__) || defined(_WIN32_WCE) +#ifndef _WINSOCKAPI_ #define _WINSOCKAPI_ +#endif #include #include #undef XML_SOCKLEN_T #define XML_SOCKLEN_T unsigned int #endif - #include #include #include @@ -96,10 +96,11 @@ * A couple portability macros */ #ifndef _WINSOCKAPI_ -#ifndef __BEOS__ +#if !defined(__BEOS__) || defined(__HAIKU__) #define closesocket(s) close(s) #endif #define SOCKET int +#define INVALID_SOCKET (-1) #endif #ifdef __BEOS__ @@ -111,9 +112,6 @@ #ifndef XML_SOCKLEN_T #define XML_SOCKLEN_T unsigned int #endif -#ifndef SOCKET -#define SOCKET int -#endif #ifdef STANDALONE #define DEBUG_HTTP @@ -147,6 +145,7 @@ int inlen; /* len of the input buffer */ int last; /* return code for last operation */ int returnValue; /* the protocol return value */ + int version; /* the protocol version */ int ContentLength; /* specified content length from HTTP header */ char *contentType; /* the MIME type for the input */ char *location; /* the new URL in case of redirect */ @@ -192,10 +191,10 @@ #ifdef SUPPORT_IP6 static int have_ipv6(void) { - int s; + SOCKET s; s = socket (AF_INET6, SOCK_STREAM, 0); - if (s != -1) { + if (s != INVALID_SOCKET) { close (s); return (1); } @@ -214,7 +213,7 @@ xmlNanoHTTPInit(void) { const char *env; #ifdef _WINSOCKAPI_ - WSADATA wsaData; + WSADATA wsaData; #endif if (initialized) @@ -277,22 +276,24 @@ static void xmlNanoHTTPScanURL(xmlNanoHTTPCtxtPtr ctxt, const char *URL) { xmlURIPtr uri; + int len; + /* * Clear any existing data from the context */ - if (ctxt->protocol != NULL) { + if (ctxt->protocol != NULL) { xmlFree(ctxt->protocol); ctxt->protocol = NULL; } - if (ctxt->hostname != NULL) { + if (ctxt->hostname != NULL) { xmlFree(ctxt->hostname); ctxt->hostname = NULL; } - if (ctxt->path != NULL) { + if (ctxt->path != NULL) { xmlFree(ctxt->path); ctxt->path = NULL; } - if (ctxt->query != NULL) { + if (ctxt->query != NULL) { xmlFree(ctxt->query); ctxt->query = NULL; } @@ -306,9 +307,17 @@ xmlFreeURI(uri); return; } - + ctxt->protocol = xmlMemStrdup(uri->scheme); - ctxt->hostname = xmlMemStrdup(uri->server); + /* special case of IPv6 addresses, the [] need to be removed */ + if ((uri->server != NULL) && (*uri->server == '[')) { + len = strlen(uri->server); + if ((len > 2) && (uri->server[len - 1] == ']')) { + ctxt->hostname = (char *) xmlCharStrndup(uri->server + 1, len -2); + } else + ctxt->hostname = xmlMemStrdup(uri->server); + } else + ctxt->hostname = xmlMemStrdup(uri->server); if (uri->path != NULL) ctxt->path = xmlMemStrdup(uri->path); else @@ -335,7 +344,7 @@ xmlNanoHTTPScanProxy(const char *URL) { xmlURIPtr uri; - if (proxy != NULL) { + if (proxy != NULL) { xmlFree(proxy); proxy = NULL; } @@ -359,7 +368,7 @@ xmlFreeURI(uri); return; } - + proxy = xmlMemStrdup(uri->server); if (uri->port != 0) proxyPort = uri->port; @@ -389,7 +398,7 @@ memset(ret, 0, sizeof(xmlNanoHTTPCtxt)); ret->port = 80; ret->returnValue = 0; - ret->fd = -1; + ret->fd = INVALID_SOCKET; ret->ContentLength = -1; xmlNanoHTTPScanURL(ret, URL); @@ -426,8 +435,8 @@ #endif ctxt->state = XML_NANO_HTTP_NONE; - if (ctxt->fd >= 0) closesocket(ctxt->fd); - ctxt->fd = -1; + if (ctxt->fd != INVALID_SOCKET) closesocket(ctxt->fd); + ctxt->fd = INVALID_SOCKET; xmlFree(ctxt); } @@ -440,51 +449,64 @@ */ static int -xmlNanoHTTPSend(xmlNanoHTTPCtxtPtr ctxt, const char * xmt_ptr, int outlen) { - - int total_sent = 0; +xmlNanoHTTPSend(xmlNanoHTTPCtxtPtr ctxt, const char *xmt_ptr, int outlen) +{ + int total_sent = 0; +#ifdef HAVE_POLL_H + struct pollfd p; +#else + struct timeval tv; + fd_set wfd; +#endif - if ( (ctxt->state & XML_NANO_HTTP_WRITE) && (xmt_ptr != NULL ) ) { + if ((ctxt->state & XML_NANO_HTTP_WRITE) && (xmt_ptr != NULL)) { while (total_sent < outlen) { - int nsent = send(ctxt->fd, xmt_ptr + total_sent, - outlen - total_sent, 0); - if (nsent>0) + int nsent = send(ctxt->fd, SEND_ARG2_CAST (xmt_ptr + total_sent), + outlen - total_sent, 0); + + if (nsent > 0) total_sent += nsent; - else if ( ( nsent == -1 ) && + else if ((nsent == -1) && #if defined(EAGAIN) && EAGAIN != EWOULDBLOCK - ( socket_errno( ) != EAGAIN ) && + (socket_errno() != EAGAIN) && #endif - ( socket_errno( ) != EWOULDBLOCK ) ) { - __xmlIOErr(XML_FROM_HTTP, 0, "send failed\n"); - if ( total_sent == 0 ) - total_sent = -1; - break; - } - else { - /* - ** No data sent - ** Since non-blocking sockets are used, wait for - ** socket to be writable or default timeout prior - ** to retrying. - */ - - struct timeval tv; - fd_set wfd; - - tv.tv_sec = timeout; - tv.tv_usec = 0; - FD_ZERO( &wfd ); + (socket_errno() != EWOULDBLOCK)) { + __xmlIOErr(XML_FROM_HTTP, 0, "send failed\n"); + if (total_sent == 0) + total_sent = -1; + break; + } else { + /* + * No data sent + * Since non-blocking sockets are used, wait for + * socket to be writable or default timeout prior + * to retrying. + */ +#ifndef HAVE_POLL_H +#ifndef _WINSOCKAPI_ + if (ctxt->fd > FD_SETSIZE) + return -1; +#endif + + tv.tv_sec = timeout; + tv.tv_usec = 0; + FD_ZERO(&wfd); #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4018) #endif - FD_SET( ctxt->fd, &wfd ); + FD_SET(ctxt->fd, &wfd); #ifdef _MSC_VER #pragma warning(pop) #endif - (void)select( ctxt->fd + 1, NULL, &wfd, NULL, &tv ); - } - } + (void) select(ctxt->fd + 1, NULL, &wfd, NULL, &tv); +#else + p.fd = ctxt->fd; + p.events = POLLOUT; + (void) poll(&p, 1, timeout * 1000); +#endif /* !HAVE_POLL_H */ + } + } } return total_sent; @@ -501,96 +523,119 @@ */ static int -xmlNanoHTTPRecv(xmlNanoHTTPCtxtPtr ctxt) { +xmlNanoHTTPRecv(xmlNanoHTTPCtxtPtr ctxt) +{ +#ifdef HAVE_POLL_H + struct pollfd p; +#else fd_set rfd; struct timeval tv; +#endif while (ctxt->state & XML_NANO_HTTP_READ) { - if (ctxt->in == NULL) { - ctxt->in = (char *) xmlMallocAtomic(65000 * sizeof(char)); - if (ctxt->in == NULL) { - xmlHTTPErrMemory("allocating input"); - ctxt->last = -1; - return(-1); - } - ctxt->inlen = 65000; - ctxt->inptr = ctxt->content = ctxt->inrptr = ctxt->in; - } - if (ctxt->inrptr > ctxt->in + XML_NANO_HTTP_CHUNK) { - int delta = ctxt->inrptr - ctxt->in; - int len = ctxt->inptr - ctxt->inrptr; - - memmove(ctxt->in, ctxt->inrptr, len); - ctxt->inrptr -= delta; - ctxt->content -= delta; - ctxt->inptr -= delta; - } + if (ctxt->in == NULL) { + ctxt->in = (char *) xmlMallocAtomic(65000 * sizeof(char)); + if (ctxt->in == NULL) { + xmlHTTPErrMemory("allocating input"); + ctxt->last = -1; + return (-1); + } + ctxt->inlen = 65000; + ctxt->inptr = ctxt->content = ctxt->inrptr = ctxt->in; + } + if (ctxt->inrptr > ctxt->in + XML_NANO_HTTP_CHUNK) { + int delta = ctxt->inrptr - ctxt->in; + int len = ctxt->inptr - ctxt->inrptr; + + memmove(ctxt->in, ctxt->inrptr, len); + ctxt->inrptr -= delta; + ctxt->content -= delta; + ctxt->inptr -= delta; + } if ((ctxt->in + ctxt->inlen) < (ctxt->inptr + XML_NANO_HTTP_CHUNK)) { - int d_inptr = ctxt->inptr - ctxt->in; - int d_content = ctxt->content - ctxt->in; - int d_inrptr = ctxt->inrptr - ctxt->in; - char * tmp_ptr = ctxt->in; + int d_inptr = ctxt->inptr - ctxt->in; + int d_content = ctxt->content - ctxt->in; + int d_inrptr = ctxt->inrptr - ctxt->in; + char *tmp_ptr = ctxt->in; - ctxt->inlen *= 2; + ctxt->inlen *= 2; ctxt->in = (char *) xmlRealloc(tmp_ptr, ctxt->inlen); - if (ctxt->in == NULL) { - xmlHTTPErrMemory("allocating input buffer"); - xmlFree( tmp_ptr ); - ctxt->last = -1; - return(-1); - } + if (ctxt->in == NULL) { + xmlHTTPErrMemory("allocating input buffer"); + xmlFree(tmp_ptr); + ctxt->last = -1; + return (-1); + } ctxt->inptr = ctxt->in + d_inptr; ctxt->content = ctxt->in + d_content; ctxt->inrptr = ctxt->in + d_inrptr; - } - ctxt->last = recv(ctxt->fd, ctxt->inptr, XML_NANO_HTTP_CHUNK, 0); - if (ctxt->last > 0) { - ctxt->inptr += ctxt->last; - return(ctxt->last); - } - if (ctxt->last == 0) { - return(0); - } - if (ctxt->last == -1) { - switch (socket_errno()) { - case EINPROGRESS: - case EWOULDBLOCK: + } + ctxt->last = recv(ctxt->fd, ctxt->inptr, XML_NANO_HTTP_CHUNK, 0); + if (ctxt->last > 0) { + ctxt->inptr += ctxt->last; + return (ctxt->last); + } + if (ctxt->last == 0) { + return (0); + } + if (ctxt->last == -1) { + switch (socket_errno()) { + case EINPROGRESS: + case EWOULDBLOCK: #if defined(EAGAIN) && EAGAIN != EWOULDBLOCK - case EAGAIN: + case EAGAIN: #endif - break; + break; - case ECONNRESET: - case ESHUTDOWN: - return ( 0 ); + case ECONNRESET: + case ESHUTDOWN: + return (0); + + default: + __xmlIOErr(XML_FROM_HTTP, 0, "recv failed\n"); + return (-1); + } + } +#ifdef HAVE_POLL_H + p.fd = ctxt->fd; + p.events = POLLIN; + if ((poll(&p, 1, timeout * 1000) < 1) +#if defined(EINTR) + && (errno != EINTR) +#endif + ) + return (0); +#else /* !HAVE_POLL_H */ +#ifndef _WINSOCKAPI_ + if (ctxt->fd > FD_SETSIZE) + return 0; +#endif - default: - __xmlIOErr(XML_FROM_HTTP, 0, "recv failed\n"); - return(-1); - } - } + tv.tv_sec = timeout; + tv.tv_usec = 0; + FD_ZERO(&rfd); - tv.tv_sec = timeout; - tv.tv_usec = 0; - FD_ZERO(&rfd); #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4018) #endif - FD_SET(ctxt->fd, &rfd); + + FD_SET(ctxt->fd, &rfd); + #ifdef _MSC_VER #pragma warning(pop) #endif - - if ( (select(ctxt->fd+1, &rfd, NULL, NULL, &tv)<1) + + if ((select(ctxt->fd + 1, &rfd, NULL, NULL, &tv) < 1) #if defined(EINTR) - && (errno != EINTR) + && (errno != EINTR) #endif - ) - return(0); + ) + return (0); +#endif /* !HAVE_POLL_H */ } - return(0); + return (0); } /** @@ -609,7 +654,7 @@ char buf[4096]; char *bp = buf; int rc; - + while (bp - buf < 4095) { if (ctxt->inrptr == ctxt->inptr) { if ( (rc = xmlNanoHTTPRecv(ctxt)) == 0) { @@ -687,6 +732,7 @@ } if ((*cur != 0) && (*cur != ' ') && (*cur != '\t')) return; ctxt->returnValue = ret; + ctxt->version = version; } else if (!xmlStrncasecmp(BAD_CAST line, BAD_CAST"Content-Type:", 13)) { const xmlChar *charset, *last, *mime; cur += 13; @@ -745,9 +791,9 @@ xmlFree(ctxt->location); if (*cur == '/') { xmlChar *tmp_http = xmlStrdup(BAD_CAST "http://"); - xmlChar *tmp_loc = + xmlChar *tmp_loc = xmlStrcat(tmp_http, (const xmlChar *) ctxt->hostname); - ctxt->location = + ctxt->location = (char *) xmlStrcat (tmp_loc, (const xmlChar *) cur); } else { ctxt->location = xmlMemStrdup(cur); @@ -801,90 +847,99 @@ * Returns -1 in case of failure, the file descriptor number otherwise */ -static int +static SOCKET xmlNanoHTTPConnectAttempt(struct sockaddr *addr) { +#ifndef HAVE_POLL_H fd_set wfd; #ifdef _WINSOCKAPI_ fd_set xfd; #endif struct timeval tv; +#else /* !HAVE_POLL_H */ + struct pollfd p; +#endif /* !HAVE_POLL_H */ int status; + int addrlen; + SOCKET s; - + #ifdef SUPPORT_IP6 if (addr->sa_family == AF_INET6) { - s = socket (PF_INET6, SOCK_STREAM, IPPROTO_TCP); - addrlen = sizeof (struct sockaddr_in6); - } - else + s = socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP); + addrlen = sizeof(struct sockaddr_in6); + } else #endif { - s = socket (PF_INET, SOCK_STREAM, IPPROTO_TCP); - addrlen = sizeof (struct sockaddr_in); + s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); + addrlen = sizeof(struct sockaddr_in); } - if (s==-1) { + if (s == INVALID_SOCKET) { #ifdef DEBUG_HTTP - perror("socket"); + perror("socket"); #endif - __xmlIOErr(XML_FROM_HTTP, 0, "socket failed\n"); - return(-1); + __xmlIOErr(XML_FROM_HTTP, 0, "socket failed\n"); + return INVALID_SOCKET; } - #ifdef _WINSOCKAPI_ { - u_long one = 1; + u_long one = 1; - status = ioctlsocket(s, FIONBIO, &one) == SOCKET_ERROR ? -1 : 0; + status = ioctlsocket(s, FIONBIO, &one) == SOCKET_ERROR ? -1 : 0; } #else /* _WINSOCKAPI_ */ #if defined(VMS) { - int enable = 1; - status = ioctl(s, FIONBIO, &enable); + int enable = 1; + + status = ioctl(s, FIONBIO, &enable); } #else /* VMS */ -#if defined(__BEOS__) - { - bool noblock = true; - status = setsockopt(s, SOL_SOCKET, SO_NONBLOCK, &noblock, sizeof(noblock)); - } +#if defined(__BEOS__) && !defined(__HAIKU__) + { + bool noblock = true; + + status = + setsockopt(s, SOL_SOCKET, SO_NONBLOCK, &noblock, + sizeof(noblock)); + } #else /* __BEOS__ */ if ((status = fcntl(s, F_GETFL, 0)) != -1) { #ifdef O_NONBLOCK - status |= O_NONBLOCK; + status |= O_NONBLOCK; #else /* O_NONBLOCK */ #ifdef F_NDELAY - status |= F_NDELAY; + status |= F_NDELAY; #endif /* F_NDELAY */ #endif /* !O_NONBLOCK */ - status = fcntl(s, F_SETFL, status); + status = fcntl(s, F_SETFL, status); } if (status < 0) { #ifdef DEBUG_HTTP - perror("nonblocking"); + perror("nonblocking"); #endif - __xmlIOErr(XML_FROM_HTTP, 0, "error setting non-blocking IO\n"); - closesocket(s); - return(-1); + __xmlIOErr(XML_FROM_HTTP, 0, "error setting non-blocking IO\n"); + closesocket(s); + return INVALID_SOCKET; } #endif /* !__BEOS__ */ #endif /* !VMS */ #endif /* !_WINSOCKAPI_ */ - if (connect (s, addr, addrlen) == -1) { - switch (socket_errno()) { - case EINPROGRESS: - case EWOULDBLOCK: - break; - default: - __xmlIOErr(XML_FROM_HTTP, 0, "error connecting to HTTP server"); - closesocket(s); - return(-1); - } - } - + if (connect(s, addr, addrlen) == -1) { + switch (socket_errno()) { + case EINPROGRESS: + case EWOULDBLOCK: + break; + default: + __xmlIOErr(XML_FROM_HTTP, 0, + "error connecting to HTTP server"); + closesocket(s); + return INVALID_SOCKET; + } + } +#ifndef HAVE_POLL_H tv.tv_sec = timeout; tv.tv_usec = 0; @@ -892,63 +947,83 @@ #pragma warning(push) #pragma warning(disable: 4018) #endif +#ifndef _WINSOCKAPI_ + if (s > FD_SETSIZE) + return INVALID_SOCKET; +#endif FD_ZERO(&wfd); FD_SET(s, &wfd); -#ifdef _WINSOCKAPI_ +#ifdef _WINSOCKAPI_ FD_ZERO(&xfd); FD_SET(s, &xfd); - - switch(select(s+1, NULL, &wfd, &xfd, &tv)) + + switch (select(s + 1, NULL, &wfd, &xfd, &tv)) #else - switch(select(s+1, NULL, &wfd, NULL, &tv)) + switch (select(s + 1, NULL, &wfd, NULL, &tv)) #endif #ifdef _MSC_VER #pragma warning(pop) #endif + +#else /* !HAVE_POLL_H */ + p.fd = s; + p.events = POLLOUT; + switch (poll(&p, 1, timeout * 1000)) +#endif /* !HAVE_POLL_H */ + { - case 0: - /* Time out */ - __xmlIOErr(XML_FROM_HTTP, 0, "Connect attempt timed out"); - closesocket(s); - return(-1); - case -1: - /* Ermm.. ?? */ - __xmlIOErr(XML_FROM_HTTP, 0, "Connect failed"); - closesocket(s); - return(-1); + case 0: + /* Time out */ + __xmlIOErr(XML_FROM_HTTP, 0, "Connect attempt timed out"); + closesocket(s); + return INVALID_SOCKET; + case -1: + /* Ermm.. ?? */ + __xmlIOErr(XML_FROM_HTTP, 0, "Connect failed"); + closesocket(s); + return INVALID_SOCKET; } - if ( FD_ISSET(s, &wfd) +#ifndef HAVE_POLL_H + if (FD_ISSET(s, &wfd) #ifdef _WINSOCKAPI_ - || FD_ISSET(s, &xfd) + || FD_ISSET(s, &xfd) #endif - ) { - XML_SOCKLEN_T len; - len = sizeof(status); + ) +#else /* !HAVE_POLL_H */ + if (p.revents == POLLOUT) +#endif /* !HAVE_POLL_H */ + { + XML_SOCKLEN_T len; + + len = sizeof(status); #ifdef SO_ERROR - if (getsockopt(s, SOL_SOCKET, SO_ERROR, (char*)&status, &len) < 0 ) { - /* Solaris error code */ - __xmlIOErr(XML_FROM_HTTP, 0, "getsockopt failed\n"); - return (-1); - } -#endif - if ( status ) { - __xmlIOErr(XML_FROM_HTTP, 0, "Error connecting to remote host"); - closesocket(s); - errno = status; - return (-1); - } + if (getsockopt(s, SOL_SOCKET, SO_ERROR, (char *) &status, &len) < + 0) { + /* Solaris error code */ + __xmlIOErr(XML_FROM_HTTP, 0, "getsockopt failed\n"); + closesocket(s); + return INVALID_SOCKET; + } +#endif + if (status) { + __xmlIOErr(XML_FROM_HTTP, 0, + "Error connecting to remote host"); + closesocket(s); + errno = status; + return INVALID_SOCKET; + } } else { - /* pbm */ - __xmlIOErr(XML_FROM_HTTP, 0, "select failed\n"); - closesocket(s); - return (-1); + /* pbm */ + __xmlIOErr(XML_FROM_HTTP, 0, "select failed\n"); + closesocket(s); + return INVALID_SOCKET; } - - return(s); + + return (s); } - + /** * xmlNanoHTTPConnectHost: * @host: the host name @@ -960,7 +1035,7 @@ * Returns -1 in case of failure, the file descriptor number otherwise */ -static int +static SOCKET xmlNanoHTTPConnectHost(const char *host, int port) { struct hostent *h; @@ -973,7 +1048,7 @@ struct sockaddr_in6 sockin6; #endif int i; - int s; + SOCKET s; memset (&sockin, 0, sizeof(sockin)); #ifdef SUPPORT_IP6 @@ -1004,7 +1079,7 @@ status = getaddrinfo (host, NULL, &hints, &result); if (status) { __xmlIOErr(XML_FROM_HTTP, 0, "getaddrinfo failed\n"); - return (-1); + return INVALID_SOCKET; } for (res = result; res; res = res->ai_next) { @@ -1012,7 +1087,7 @@ if (res->ai_addrlen > sizeof(sockin)) { __xmlIOErr(XML_FROM_HTTP, 0, "address size mismatch\n"); freeaddrinfo (result); - return (-1); + return INVALID_SOCKET; } memcpy (&sockin, res->ai_addr, res->ai_addrlen); sockin.sin_port = htons (port); @@ -1022,7 +1097,7 @@ if (res->ai_addrlen > sizeof(sockin6)) { __xmlIOErr(XML_FROM_HTTP, 0, "address size mismatch\n"); freeaddrinfo (result); - return (-1); + return INVALID_SOCKET; } memcpy (&sockin6, res->ai_addr, res->ai_addrlen); sockin6.sin6_port = htons (port); @@ -1032,7 +1107,7 @@ continue; /* for */ s = xmlNanoHTTPConnectAttempt (addr); - if (s != -1) { + if (s != INVALID_SOCKET) { freeaddrinfo (result); return (s); } @@ -1047,7 +1122,7 @@ #endif #if !defined(HAVE_GETADDRINFO) || !defined(_WIN32) { - h = gethostbyname (host); + h = gethostbyname (GETHOSTBYNAME_ARG_CAST host); if (h == NULL) { /* @@ -1073,10 +1148,12 @@ "Non-recoverable errors: FORMERR, REFUSED, or NOTIMP."; break; +#ifdef NO_ADDRESS case NO_ADDRESS: h_err_txt = "Valid name, no data record of requested type."; break; +#endif default: h_err_txt = "No error text defined."; @@ -1086,7 +1163,7 @@ #else __xmlIOErr(XML_FROM_HTTP, 0, "Failed to resolve host"); #endif - return (-1); + return INVALID_SOCKET; } for (i = 0; h->h_addr_list[i]; i++) { @@ -1094,19 +1171,19 @@ /* A records (IPv4) */ if ((unsigned int) h->h_length > sizeof(ia)) { __xmlIOErr(XML_FROM_HTTP, 0, "address size mismatch\n"); - return (-1); + return INVALID_SOCKET; } memcpy (&ia, h->h_addr_list[i], h->h_length); sockin.sin_family = h->h_addrtype; sockin.sin_addr = ia; - sockin.sin_port = (u_short)htons ((unsigned short)port); + sockin.sin_port = (unsigned short)htons ((unsigned short)port); addr = (struct sockaddr *) &sockin; #ifdef SUPPORT_IP6 } else if (have_ipv6 () && (h->h_addrtype == AF_INET6)) { /* AAAA records (IPv6) */ if ((unsigned int) h->h_length > sizeof(ia6)) { __xmlIOErr(XML_FROM_HTTP, 0, "address size mismatch\n"); - return (-1); + return INVALID_SOCKET; } memcpy (&ia6, h->h_addr_list[i], h->h_length); sockin6.sin6_family = h->h_addrtype; @@ -1118,7 +1195,7 @@ break; /* for */ s = xmlNanoHTTPConnectAttempt (addr); - if (s != -1) + if (s != INVALID_SOCKET) return (s); } } @@ -1129,7 +1206,7 @@ "xmlNanoHTTPConnectHost: unable to connect to '%s'.\n", host); #endif - return (-1); + return INVALID_SOCKET; } @@ -1201,19 +1278,22 @@ #ifdef HAVE_ZLIB_H if (ctxt->usesGzip == 1) { if (ctxt->strm == NULL) return(0); - + ctxt->strm->next_out = dest; ctxt->strm->avail_out = len; + ctxt->strm->avail_in = ctxt->inptr - ctxt->inrptr; - do { - orig_avail_in = ctxt->strm->avail_in = ctxt->inptr - ctxt->inrptr - bytes_read; + while (ctxt->strm->avail_out > 0 && + (ctxt->strm->avail_in > 0 || xmlNanoHTTPRecv(ctxt) > 0)) { + orig_avail_in = ctxt->strm->avail_in = + ctxt->inptr - ctxt->inrptr - bytes_read; ctxt->strm->next_in = BAD_CAST (ctxt->inrptr + bytes_read); z_ret = inflate(ctxt->strm, Z_NO_FLUSH); bytes_read += orig_avail_in - ctxt->strm->avail_in; if (z_ret != Z_OK) break; - } while (ctxt->strm->avail_out > 0 && xmlNanoHTTPRecv(ctxt) > 0); + } ctxt->inrptr += bytes_read; return(len - ctxt->strm->avail_out); @@ -1270,30 +1350,30 @@ const char *headers, int ilen ) { xmlNanoHTTPCtxtPtr ctxt; char *bp, *p; - int blen, ret; - int head; + int blen; + SOCKET ret; int nbRedirects = 0; char *redirURL = NULL; #ifdef DEBUG_HTTP int xmt_bytes; #endif - + if (URL == NULL) return(NULL); if (method == NULL) method = "GET"; xmlNanoHTTPInit(); retry: - if (redirURL == NULL) + if (redirURL == NULL) { ctxt = xmlNanoHTTPNewCtxt(URL); - else { + if (ctxt == NULL) + return(NULL); + } else { ctxt = xmlNanoHTTPNewCtxt(redirURL); + if (ctxt == NULL) + return(NULL); ctxt->location = xmlMemStrdup(redirURL); } - if ( ctxt == NULL ) { - return ( NULL ); - } - if ((ctxt->protocol == NULL) || (strcmp(ctxt->protocol, "http"))) { __xmlIOErr(XML_FROM_HTTP, XML_HTTP_URL_SYNTAX, "Not a valid HTTP URI"); xmlNanoHTTPFreeCtxt(ctxt); @@ -1315,7 +1395,7 @@ blen = strlen(ctxt->hostname); ret = xmlNanoHTTPConnectHost(ctxt->hostname, ctxt->port); } - if (ret < 0) { + if (ret == INVALID_SOCKET) { xmlNanoHTTPFreeCtxt(ctxt); if (redirURL != NULL) xmlFree(redirURL); return(NULL); @@ -1330,13 +1410,23 @@ if (headers != NULL) blen += strlen(headers) + 2; if (contentType && *contentType) + /* reserve for string plus 'Content-Type: \r\n" */ blen += strlen(*contentType) + 16; if (ctxt->query != NULL) + /* 1 for '?' */ blen += strlen(ctxt->query) + 1; blen += strlen(method) + strlen(ctxt->path) + 24; #ifdef HAVE_ZLIB_H + /* reserve for possible 'Accept-Encoding: gzip' string */ blen += 23; #endif + if (ctxt->port != 80) { + /* reserve space for ':xxxxx', incl. potential proxy */ + if (proxy) + blen += 12; + else + blen += 6; + } bp = (char*)xmlMallocAtomic(blen); if ( bp == NULL ) { xmlNanoHTTPFreeCtxt( ctxt ); @@ -1348,13 +1438,13 @@ if (proxy) { if (ctxt->port != 80) { - p += snprintf( p, blen - (p - bp), "%s http://%s:%d%s", + p += snprintf( p, blen - (p - bp), "%s http://%s:%d%s", method, ctxt->hostname, - ctxt->port, ctxt->path ); + ctxt->port, ctxt->path ); } - else + else p += snprintf( p, blen - (p - bp), "%s http://%s%s", method, - ctxt->hostname, ctxt->path); + ctxt->hostname, ctxt->path); } else p += snprintf( p, blen - (p - bp), "%s %s", method, ctxt->path); @@ -1362,14 +1452,19 @@ if (ctxt->query != NULL) p += snprintf( p, blen - (p - bp), "?%s", ctxt->query); - p += snprintf( p, blen - (p - bp), " HTTP/1.0\r\nHost: %s\r\n", + if (ctxt->port == 80) { + p += snprintf( p, blen - (p - bp), " HTTP/1.0\r\nHost: %s\r\n", ctxt->hostname); + } else { + p += snprintf( p, blen - (p - bp), " HTTP/1.0\r\nHost: %s:%d\r\n", + ctxt->hostname, ctxt->port); + } #ifdef HAVE_ZLIB_H p += snprintf(p, blen - (p - bp), "Accept-Encoding: gzip\r\n"); #endif - if (contentType != NULL && *contentType) + if (contentType != NULL && *contentType) p += snprintf(p, blen - (p - bp), "Content-Type: %s\r\n", *contentType); if (headers != NULL) @@ -1408,7 +1503,7 @@ if ( xmt_bytes != ilen ) xmlGenericError( xmlGenericErrorContext, - "xmlNanoHTTPMethodRedir: Only %d of %d %s %s\n", + "xmlNanoHTTPMethodRedir: Only %d of %d %s %s\n", xmt_bytes, ilen, "bytes of HTTP content sent to host", ctxt->hostname ); @@ -1418,11 +1513,9 @@ } ctxt->state = XML_NANO_HTTP_READ; - head = 1; while ((p = xmlNanoHTTPReadLine(ctxt)) != NULL) { - if (head && (*p == 0)) { - head = 0; + if (*p == 0) { ctxt->content = ctxt->inrptr; xmlFree(p); break; @@ -1532,12 +1625,13 @@ char *buf = NULL; int fd; int len; - + int ret = 0; + if (filename == NULL) return(-1); ctxt = xmlNanoHTTPOpen(URL, contentType); if (ctxt == NULL) return(-1); - if (!strcmp(filename, "-")) + if (!strcmp(filename, "-")) fd = 0; else { fd = open(filename, O_CREAT | O_WRONLY, 00644); @@ -1553,12 +1647,14 @@ xmlNanoHTTPFetchContent( ctxt, &buf, &len ); if ( len > 0 ) { - write(fd, buf, len); + if (write(fd, buf, len) == -1) { + ret = -1; + } } xmlNanoHTTPClose(ctxt); close(fd); - return(0); + return(ret); } #ifdef LIBXML_OUTPUT_ENABLED @@ -1577,13 +1673,14 @@ char *buf = NULL; int fd; int len; - + int ret = 0; + if ((ctxt == NULL) || (filename == NULL)) return(-1); - if (!strcmp(filename, "-")) + if (!strcmp(filename, "-")) fd = 0; else { - fd = open(filename, O_CREAT | O_WRONLY); + fd = open(filename, O_CREAT | O_WRONLY, 0666); if (fd < 0) { xmlNanoHTTPClose(ctxt); return(-1); @@ -1592,12 +1689,14 @@ xmlNanoHTTPFetchContent( ctxt, &buf, &len ); if ( len > 0 ) { - write(fd, buf, len); + if (write(fd, buf, len) == -1) { + ret = -1; + } } xmlNanoHTTPClose(ctxt); close(fd); - return(0); + return(ret); } #endif /* LIBXML_OUTPUT_ENABLED */ @@ -1707,7 +1806,7 @@ * Check if all the content was read * * Returns 0 if all the content was read and available, returns - * -1 if received content length was less than specified or an error + * -1 if received content length was less than specified or an error * occurred. */ static int @@ -1761,7 +1860,7 @@ char *contentType = NULL; if (argv[1] != NULL) { - if (argv[2] != NULL) + if (argv[2] != NULL) xmlNanoHTTPFetch(argv[1], argv[2], &contentType); else xmlNanoHTTPFetch(argv[1], "-", &contentType); diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/nanohttp.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/nanohttp.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/nanohttp.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/nanohttp.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -7,7 +7,7 @@ * * Author: Daniel Veillard */ - + #ifndef __NANO_HTTP_H__ #define __NANO_HTTP_H__ @@ -20,22 +20,22 @@ #endif XMLPUBFUN void XMLCALL xmlNanoHTTPInit (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNanoHTTPCleanup (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNanoHTTPScanProxy (const char *URL); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoHTTPFetch (const char *URL, const char *filename, char **contentType); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlNanoHTTPMethod (const char *URL, const char *method, const char *input, char **contentType, const char *headers, int ilen); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlNanoHTTPMethodRedir (const char *URL, const char *method, const char *input, @@ -43,16 +43,16 @@ char **redir, const char *headers, int ilen); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlNanoHTTPOpen (const char *URL, char **contentType); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlNanoHTTPOpenRedir (const char *URL, char **contentType, char **redir); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoHTTPReturnCode (void *ctx); -XMLPUBFUN const char * XMLCALL +XMLPUBFUN const char * XMLCALL xmlNanoHTTPAuthHeader (void *ctx); XMLPUBFUN const char * XMLCALL xmlNanoHTTPRedir (void *ctx); @@ -62,16 +62,16 @@ xmlNanoHTTPEncoding (void *ctx); XMLPUBFUN const char * XMLCALL xmlNanoHTTPMimeType (void *ctx); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoHTTPRead (void *ctx, void *dest, int len); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoHTTPSave (void *ctxt, const char *filename); #endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNanoHTTPClose (void *ctx); #ifdef __cplusplus } diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/parser.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/parser.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/parser.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/parser.c 2015-12-23 07:08:27.000000000 +0000 @@ -17,7 +17,7 @@ * parserInternals.c to reduce this file size. * As much as possible the functions are associated with their relative * production in the XML specification. A few productions defining the - * different ranges of character are actually implanted either in + * different ranges of character are actually implanted either in * parserInternals.h or parserInternals.c * The DOM tree build is realized from the default SAX callbacks in * the module SAX.c. @@ -40,6 +40,7 @@ #endif #include +#include #include #include #include @@ -79,36 +80,193 @@ #ifdef HAVE_ZLIB_H #include #endif +#ifdef HAVE_LZMA_H +#include +#endif + +#include "buf.h" +#include "enc.h" + +static void +xmlFatalErr(xmlParserCtxtPtr ctxt, xmlParserErrors error, const char *info); + +static xmlParserCtxtPtr +xmlCreateEntityParserCtxtInternal(const xmlChar *URL, const xmlChar *ID, + const xmlChar *base, xmlParserCtxtPtr pctx); + +static void xmlHaltParser(xmlParserCtxtPtr ctxt); + +/************************************************************************ + * * + * Arbitrary limits set in the parser. See XML_PARSE_HUGE * + * * + ************************************************************************/ + +#define XML_PARSER_BIG_ENTITY 1000 +#define XML_PARSER_LOT_ENTITY 5000 + +/* + * XML_PARSER_NON_LINEAR is the threshold where the ratio of parsed entity + * replacement over the size in byte of the input indicates that you have + * and eponential behaviour. A value of 10 correspond to at least 3 entity + * replacement per byte of input. + */ +#define XML_PARSER_NON_LINEAR 10 + +/* + * xmlParserEntityCheck + * + * Function to check non-linear entity expansion behaviour + * This is here to detect and stop exponential linear entity expansion + * This is not a limitation of the parser but a safety + * boundary feature. It can be disabled with the XML_PARSE_HUGE + * parser option. + */ +static int +xmlParserEntityCheck(xmlParserCtxtPtr ctxt, size_t size, + xmlEntityPtr ent, size_t replacement) +{ + size_t consumed = 0; + + if ((ctxt == NULL) || (ctxt->options & XML_PARSE_HUGE)) + return (0); + if (ctxt->lastError.code == XML_ERR_ENTITY_LOOP) + return (1); + + /* + * This may look absurd but is needed to detect + * entities problems + */ + if ((ent != NULL) && (ent->etype != XML_INTERNAL_PREDEFINED_ENTITY) && + (ent->content != NULL) && (ent->checked == 0)) { + unsigned long oldnbent = ctxt->nbentities; + xmlChar *rep; + + ent->checked = 1; + + rep = xmlStringDecodeEntities(ctxt, ent->content, + XML_SUBSTITUTE_REF, 0, 0, 0); + + ent->checked = (ctxt->nbentities - oldnbent + 1) * 2; + if (rep != NULL) { + if (xmlStrchr(rep, '<')) + ent->checked |= 1; + xmlFree(rep); + rep = NULL; + } + } + if (replacement != 0) { + if (replacement < XML_MAX_TEXT_LENGTH) + return(0); + + /* + * If the volume of entity copy reaches 10 times the + * amount of parsed data and over the large text threshold + * then that's very likely to be an abuse. + */ + if (ctxt->input != NULL) { + consumed = ctxt->input->consumed + + (ctxt->input->cur - ctxt->input->base); + } + consumed += ctxt->sizeentities; + + if (replacement < XML_PARSER_NON_LINEAR * consumed) + return(0); + } else if (size != 0) { + /* + * Do the check based on the replacement size of the entity + */ + if (size < XML_PARSER_BIG_ENTITY) + return(0); + + /* + * A limit on the amount of text data reasonably used + */ + if (ctxt->input != NULL) { + consumed = ctxt->input->consumed + + (ctxt->input->cur - ctxt->input->base); + } + consumed += ctxt->sizeentities; + + if ((size < XML_PARSER_NON_LINEAR * consumed) && + (ctxt->nbentities * 3 < XML_PARSER_NON_LINEAR * consumed)) + return (0); + } else if (ent != NULL) { + /* + * use the number of parsed entities in the replacement + */ + size = ent->checked / 2; + + /* + * The amount of data parsed counting entities size only once + */ + if (ctxt->input != NULL) { + consumed = ctxt->input->consumed + + (ctxt->input->cur - ctxt->input->base); + } + consumed += ctxt->sizeentities; + + /* + * Check the density of entities for the amount of data + * knowing an entity reference will take at least 3 bytes + */ + if (size * 3 < consumed * XML_PARSER_NON_LINEAR) + return (0); + } else { + /* + * strange we got no data for checking + */ + if (((ctxt->lastError.code != XML_ERR_UNDECLARED_ENTITY) && + (ctxt->lastError.code != XML_WAR_UNDECLARED_ENTITY)) || + (ctxt->nbentities <= 10000)) + return (0); + } + xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL); + return (1); +} /** * xmlParserMaxDepth: * - * arbitrary depth limit for the XML documents that we allow to - * process. This is not a limitation of the parser but a safety - * boundary feature. + * arbitrary depth limit for the XML documents that we allow to + * process. This is not a limitation of the parser but a safety + * boundary feature. It can be disabled with the XML_PARSE_HUGE + * parser option. */ -unsigned int xmlParserMaxDepth = 1024; +unsigned int xmlParserMaxDepth = 256; -#define SAX2 1 + +#define SAX2 1 #define XML_PARSER_BIG_BUFFER_SIZE 300 #define XML_PARSER_BUFFER_SIZE 100 - #define SAX_COMPAT_MODE BAD_CAST "SAX compatibility mode document" +/** + * XML_PARSER_CHUNK_SIZE + * + * When calling GROW that's the minimal amount of data + * the parser expected to have received. It is not a hard + * limit but an optimization when reading strings like Names + * It is not strictly needed as long as inputs available characters + * are followed by 0, which should be provided by the I/O level + */ +#define XML_PARSER_CHUNK_SIZE 100 + /* * List of XML prefixed PI allowed by W3C specs */ static const char *xmlW3CPIs[] = { "xml-stylesheet", + "xml-model", NULL }; /* DEPR void xmlParserHandleReference(xmlParserCtxtPtr ctxt); */ -xmlEntityPtr xmlParseStringPEReference(xmlParserCtxtPtr ctxt, - const xmlChar **str); +static xmlEntityPtr xmlParseStringPEReference(xmlParserCtxtPtr ctxt, + const xmlChar **str); static xmlParserErrors xmlParseExternalEntityPrivate(xmlDocPtr doc, xmlParserCtxtPtr oldctxt, @@ -116,6 +274,9 @@ void *user_data, int depth, const xmlChar *URL, const xmlChar *ID, xmlNodePtr *list); +static int +xmlCtxtUseOptionsInternal(xmlParserCtxtPtr ctxt, int options, + const char *encoding); #ifdef LIBXML_LEGACY_ENABLED static void xmlAddEntityReference(xmlEntityPtr ent, xmlNodePtr firstNode, @@ -126,9 +287,12 @@ xmlParseBalancedChunkMemoryInternal(xmlParserCtxtPtr oldctxt, const xmlChar *string, void *user_data, xmlNodePtr *lst); +static int +xmlLoadEntityContent(xmlParserCtxtPtr ctxt, xmlEntityPtr entity); + /************************************************************************ * * - * Some factorized error routines * + * Some factorized error routines * * * ************************************************************************/ @@ -149,14 +313,15 @@ return; if (ctxt != NULL) ctxt->errNo = XML_ERR_ATTRIBUTE_REDEFINED; + if (prefix == NULL) __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, - ctxt->errNo, XML_ERR_FATAL, NULL, 0, + XML_ERR_ATTRIBUTE_REDEFINED, XML_ERR_FATAL, NULL, 0, (const char *) localname, NULL, NULL, 0, 0, "Attribute %s redefined\n", localname); else __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, - ctxt->errNo, XML_ERR_FATAL, NULL, 0, + XML_ERR_ATTRIBUTE_REDEFINED, XML_ERR_FATAL, NULL, 0, (const char *) prefix, (const char *) localname, NULL, 0, 0, "Attribute %s:%s redefined\n", prefix, localname); @@ -179,193 +344,201 @@ xmlFatalErr(xmlParserCtxtPtr ctxt, xmlParserErrors error, const char *info) { const char *errmsg; + char errstr[129] = ""; if ((ctxt != NULL) && (ctxt->disableSAX != 0) && (ctxt->instate == XML_PARSER_EOF)) return; switch (error) { case XML_ERR_INVALID_HEX_CHARREF: - errmsg = "CharRef: invalid hexadecimal value\n"; + errmsg = "CharRef: invalid hexadecimal value"; break; case XML_ERR_INVALID_DEC_CHARREF: - errmsg = "CharRef: invalid decimal value\n"; + errmsg = "CharRef: invalid decimal value"; break; case XML_ERR_INVALID_CHARREF: - errmsg = "CharRef: invalid value\n"; + errmsg = "CharRef: invalid value"; break; case XML_ERR_INTERNAL_ERROR: errmsg = "internal error"; break; case XML_ERR_PEREF_AT_EOF: - errmsg = "PEReference at end of document\n"; + errmsg = "PEReference at end of document"; break; case XML_ERR_PEREF_IN_PROLOG: - errmsg = "PEReference in prolog\n"; + errmsg = "PEReference in prolog"; break; case XML_ERR_PEREF_IN_EPILOG: - errmsg = "PEReference in epilog\n"; + errmsg = "PEReference in epilog"; break; case XML_ERR_PEREF_NO_NAME: - errmsg = "PEReference: no name\n"; + errmsg = "PEReference: no name"; break; case XML_ERR_PEREF_SEMICOL_MISSING: - errmsg = "PEReference: expecting ';'\n"; + errmsg = "PEReference: expecting ';'"; break; case XML_ERR_ENTITY_LOOP: - errmsg = "Detected an entity reference loop\n"; + errmsg = "Detected an entity reference loop"; break; case XML_ERR_ENTITY_NOT_STARTED: - errmsg = "EntityValue: \" or ' expected\n"; + errmsg = "EntityValue: \" or ' expected"; break; case XML_ERR_ENTITY_PE_INTERNAL: - errmsg = "PEReferences forbidden in internal subset\n"; + errmsg = "PEReferences forbidden in internal subset"; break; case XML_ERR_ENTITY_NOT_FINISHED: - errmsg = "EntityValue: \" or ' expected\n"; + errmsg = "EntityValue: \" or ' expected"; break; case XML_ERR_ATTRIBUTE_NOT_STARTED: - errmsg = "AttValue: \" or ' expected\n"; + errmsg = "AttValue: \" or ' expected"; break; case XML_ERR_LT_IN_ATTRIBUTE: - errmsg = "Unescaped '<' not allowed in attributes values\n"; + errmsg = "Unescaped '<' not allowed in attributes values"; break; case XML_ERR_LITERAL_NOT_STARTED: - errmsg = "SystemLiteral \" or ' expected\n"; + errmsg = "SystemLiteral \" or ' expected"; break; case XML_ERR_LITERAL_NOT_FINISHED: - errmsg = "Unfinished System or Public ID \" or ' expected\n"; + errmsg = "Unfinished System or Public ID \" or ' expected"; break; case XML_ERR_MISPLACED_CDATA_END: - errmsg = "Sequence ']]>' not allowed in content\n"; + errmsg = "Sequence ']]>' not allowed in content"; break; case XML_ERR_URI_REQUIRED: - errmsg = "SYSTEM or PUBLIC, the URI is missing\n"; + errmsg = "SYSTEM or PUBLIC, the URI is missing"; break; case XML_ERR_PUBID_REQUIRED: - errmsg = "PUBLIC, the Public Identifier is missing\n"; + errmsg = "PUBLIC, the Public Identifier is missing"; break; case XML_ERR_HYPHEN_IN_COMMENT: - errmsg = "Comment must not contain '--' (double-hyphen)\n"; + errmsg = "Comment must not contain '--' (double-hyphen)"; break; case XML_ERR_PI_NOT_STARTED: - errmsg = "xmlParsePI : no target name\n"; + errmsg = "xmlParsePI : no target name"; break; case XML_ERR_RESERVED_XML_NAME: - errmsg = "Invalid PI name\n"; + errmsg = "Invalid PI name"; break; case XML_ERR_NOTATION_NOT_STARTED: - errmsg = "NOTATION: Name expected here\n"; + errmsg = "NOTATION: Name expected here"; break; case XML_ERR_NOTATION_NOT_FINISHED: - errmsg = "'>' required to close NOTATION declaration\n"; + errmsg = "'>' required to close NOTATION declaration"; break; case XML_ERR_VALUE_REQUIRED: - errmsg = "Entity value required\n"; + errmsg = "Entity value required"; break; case XML_ERR_URI_FRAGMENT: errmsg = "Fragment not allowed"; break; case XML_ERR_ATTLIST_NOT_STARTED: - errmsg = "'(' required to start ATTLIST enumeration\n"; + errmsg = "'(' required to start ATTLIST enumeration"; break; case XML_ERR_NMTOKEN_REQUIRED: - errmsg = "NmToken expected in ATTLIST enumeration\n"; + errmsg = "NmToken expected in ATTLIST enumeration"; break; case XML_ERR_ATTLIST_NOT_FINISHED: - errmsg = "')' required to finish ATTLIST enumeration\n"; + errmsg = "')' required to finish ATTLIST enumeration"; break; case XML_ERR_MIXED_NOT_STARTED: - errmsg = "MixedContentDecl : '|' or ')*' expected\n"; + errmsg = "MixedContentDecl : '|' or ')*' expected"; break; case XML_ERR_PCDATA_REQUIRED: - errmsg = "MixedContentDecl : '#PCDATA' expected\n"; + errmsg = "MixedContentDecl : '#PCDATA' expected"; break; case XML_ERR_ELEMCONTENT_NOT_STARTED: - errmsg = "ContentDecl : Name or '(' expected\n"; + errmsg = "ContentDecl : Name or '(' expected"; break; case XML_ERR_ELEMCONTENT_NOT_FINISHED: - errmsg = "ContentDecl : ',' '|' or ')' expected\n"; + errmsg = "ContentDecl : ',' '|' or ')' expected"; break; case XML_ERR_PEREF_IN_INT_SUBSET: errmsg = - "PEReference: forbidden within markup decl in internal subset\n"; + "PEReference: forbidden within markup decl in internal subset"; break; case XML_ERR_GT_REQUIRED: - errmsg = "expected '>'\n"; + errmsg = "expected '>'"; break; case XML_ERR_CONDSEC_INVALID: - errmsg = "XML conditional section '[' expected\n"; + errmsg = "XML conditional section '[' expected"; break; case XML_ERR_EXT_SUBSET_NOT_FINISHED: - errmsg = "Content error in the external subset\n"; + errmsg = "Content error in the external subset"; break; case XML_ERR_CONDSEC_INVALID_KEYWORD: errmsg = - "conditional section INCLUDE or IGNORE keyword expected\n"; + "conditional section INCLUDE or IGNORE keyword expected"; break; case XML_ERR_CONDSEC_NOT_FINISHED: - errmsg = "XML conditional section not closed\n"; + errmsg = "XML conditional section not closed"; break; case XML_ERR_XMLDECL_NOT_STARTED: - errmsg = "Text declaration '' expected\n"; + errmsg = "parsing XML declaration: '?>' expected"; break; case XML_ERR_EXT_ENTITY_STANDALONE: - errmsg = "external parsed entities cannot be standalone\n"; + errmsg = "external parsed entities cannot be standalone"; break; case XML_ERR_ENTITYREF_SEMICOL_MISSING: - errmsg = "EntityRef: expecting ';'\n"; + errmsg = "EntityRef: expecting ';'"; break; case XML_ERR_DOCTYPE_NOT_FINISHED: - errmsg = "DOCTYPE improperly terminated\n"; + errmsg = "DOCTYPE improperly terminated"; break; case XML_ERR_LTSLASH_REQUIRED: - errmsg = "EndTag: 'errNo = error; __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, error, - XML_ERR_FATAL, NULL, 0, info, NULL, NULL, 0, 0, errmsg, + XML_ERR_FATAL, NULL, 0, info, NULL, NULL, 0, 0, &errstr[0], info); if (ctxt != NULL) { ctxt->wellFormed = 0; @@ -392,7 +565,7 @@ if (ctxt != NULL) ctxt->errNo = error; __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, error, - XML_ERR_FATAL, NULL, 0, NULL, NULL, NULL, 0, 0, msg); + XML_ERR_FATAL, NULL, 0, NULL, NULL, NULL, 0, 0, "%s", msg); if (ctxt != NULL) { ctxt->wellFormed = 0; if (ctxt->recovery == 0) @@ -415,20 +588,28 @@ const char *msg, const xmlChar *str1, const xmlChar *str2) { xmlStructuredErrorFunc schannel = NULL; - + if ((ctxt != NULL) && (ctxt->disableSAX != 0) && (ctxt->instate == XML_PARSER_EOF)) return; if ((ctxt != NULL) && (ctxt->sax != NULL) && (ctxt->sax->initialized == XML_SAX2_MAGIC)) schannel = ctxt->sax->serror; - __xmlRaiseError(schannel, + if (ctxt != NULL) { + __xmlRaiseError(schannel, (ctxt->sax) ? ctxt->sax->warning : NULL, ctxt->userData, ctxt, NULL, XML_FROM_PARSER, error, XML_ERR_WARNING, NULL, 0, (const char *) str1, (const char *) str2, NULL, 0, 0, msg, (const char *) str1, (const char *) str2); + } else { + __xmlRaiseError(schannel, NULL, NULL, + ctxt, NULL, XML_FROM_PARSER, error, + XML_ERR_WARNING, NULL, 0, + (const char *) str1, (const char *) str2, NULL, 0, 0, + msg, (const char *) str1, (const char *) str2); + } } /** @@ -442,7 +623,7 @@ */ static void xmlValidityError(xmlParserCtxtPtr ctxt, xmlParserErrors error, - const char *msg, const xmlChar *str1) + const char *msg, const xmlChar *str1, const xmlChar *str2) { xmlStructuredErrorFunc schannel = NULL; @@ -454,14 +635,20 @@ if ((ctxt->sax != NULL) && (ctxt->sax->initialized == XML_SAX2_MAGIC)) schannel = ctxt->sax->serror; } - __xmlRaiseError(schannel, + if (ctxt != NULL) { + __xmlRaiseError(schannel, ctxt->vctxt.error, ctxt->vctxt.userData, ctxt, NULL, XML_FROM_DTD, error, XML_ERR_ERROR, NULL, 0, (const char *) str1, - NULL, NULL, 0, 0, - msg, (const char *) str1); - if (ctxt != NULL) { + (const char *) str2, NULL, 0, 0, + msg, (const char *) str1, (const char *) str2); ctxt->valid = 0; + } else { + __xmlRaiseError(schannel, NULL, NULL, + ctxt, NULL, XML_FROM_DTD, error, + XML_ERR_ERROR, NULL, 0, (const char *) str1, + (const char *) str2, NULL, 0, 0, + msg, (const char *) str1, (const char *) str2); } } @@ -506,7 +693,7 @@ */ static void xmlFatalErrMsgStrIntStr(xmlParserCtxtPtr ctxt, xmlParserErrors error, - const char *msg, const xmlChar *str1, int val, + const char *msg, const xmlChar *str1, int val, const xmlChar *str2) { if ((ctxt != NULL) && (ctxt->disableSAX != 0) && @@ -607,9 +794,34 @@ ctxt->nsWellFormed = 0; } +/** + * xmlNsWarn + * @ctxt: an XML parser context + * @error: the error number + * @msg: the message + * @info1: extra information string + * @info2: extra information string + * + * Handle a namespace warning error + */ +static void +xmlNsWarn(xmlParserCtxtPtr ctxt, xmlParserErrors error, + const char *msg, + const xmlChar * info1, const xmlChar * info2, + const xmlChar * info3) +{ + if ((ctxt != NULL) && (ctxt->disableSAX != 0) && + (ctxt->instate == XML_PARSER_EOF)) + return; + __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_NAMESPACE, error, + XML_ERR_WARNING, NULL, 0, (const char *) info1, + (const char *) info2, (const char *) info3, 0, 0, msg, + info1, info2, info3); +} + /************************************************************************ * * - * Library wide options * + * Library wide options * * * ************************************************************************/ @@ -806,13 +1018,25 @@ return(1); #else return(0); -#endif +#endif case XML_WITH_ZLIB: #ifdef LIBXML_ZLIB_ENABLED return(1); #else return(0); #endif + case XML_WITH_LZMA: +#ifdef LIBXML_LZMA_ENABLED + return(1); +#else + return(0); +#endif + case XML_WITH_ICU: +#ifdef LIBXML_ICU_ENABLED + return(1); +#else + return(0); +#endif default: break; } @@ -821,7 +1045,7 @@ /************************************************************************ * * - * SAX2 defaulted attributes handling * + * SAX2 defaulted attributes handling * * * ************************************************************************/ @@ -845,8 +1069,8 @@ ctxt->str_xml = xmlDictLookup(ctxt->dict, BAD_CAST "xml", 3); ctxt->str_xmlns = xmlDictLookup(ctxt->dict, BAD_CAST "xmlns", 5); ctxt->str_xml_ns = xmlDictLookup(ctxt->dict, XML_XML_NAMESPACE, 36); - if ((ctxt->str_xml==NULL) || (ctxt->str_xmlns==NULL) || - (ctxt->str_xml_ns == NULL)) { + if ((ctxt->str_xml==NULL) || (ctxt->str_xmlns==NULL) || + (ctxt->str_xml_ns == NULL)) { xmlErrMemory(ctxt, NULL); } } @@ -856,10 +1080,108 @@ struct _xmlDefAttrs { int nbAttrs; /* number of defaulted attributes on that element */ int maxAttrs; /* the size of the array */ - const xmlChar *values[4]; /* array of localname/prefix/values */ + const xmlChar *values[5]; /* array of localname/prefix/values/external */ }; /** + * xmlAttrNormalizeSpace: + * @src: the source string + * @dst: the target string + * + * Normalize the space in non CDATA attribute values: + * If the attribute type is not CDATA, then the XML processor MUST further + * process the normalized attribute value by discarding any leading and + * trailing space (#x20) characters, and by replacing sequences of space + * (#x20) characters by a single space (#x20) character. + * Note that the size of dst need to be at least src, and if one doesn't need + * to preserve dst (and it doesn't come from a dictionary or read-only) then + * passing src as dst is just fine. + * + * Returns a pointer to the normalized value (dst) or NULL if no conversion + * is needed. + */ +static xmlChar * +xmlAttrNormalizeSpace(const xmlChar *src, xmlChar *dst) +{ + if ((src == NULL) || (dst == NULL)) + return(NULL); + + while (*src == 0x20) src++; + while (*src != 0) { + if (*src == 0x20) { + while (*src == 0x20) src++; + if (*src != 0) + *dst++ = 0x20; + } else { + *dst++ = *src++; + } + } + *dst = 0; + if (dst == src) + return(NULL); + return(dst); +} + +/** + * xmlAttrNormalizeSpace2: + * @src: the source string + * + * Normalize the space in non CDATA attribute values, a slightly more complex + * front end to avoid allocation problems when running on attribute values + * coming from the input. + * + * Returns a pointer to the normalized value (dst) or NULL if no conversion + * is needed. + */ +static const xmlChar * +xmlAttrNormalizeSpace2(xmlParserCtxtPtr ctxt, xmlChar *src, int *len) +{ + int i; + int remove_head = 0; + int need_realloc = 0; + const xmlChar *cur; + + if ((ctxt == NULL) || (src == NULL) || (len == NULL)) + return(NULL); + i = *len; + if (i <= 0) + return(NULL); + + cur = src; + while (*cur == 0x20) { + cur++; + remove_head++; + } + while (*cur != 0) { + if (*cur == 0x20) { + cur++; + if ((*cur == 0x20) || (*cur == 0)) { + need_realloc = 1; + break; + } + } else + cur++; + } + if (need_realloc) { + xmlChar *ret; + + ret = xmlStrndup(src + remove_head, i - remove_head + 1); + if (ret == NULL) { + xmlErrMemory(ctxt, NULL); + return(NULL); + } + xmlAttrNormalizeSpace(ret, ret); + *len = (int) strlen((const char *)ret); + return(ret); + } else if (remove_head) { + *len -= remove_head; + memmove(src, src + remove_head, 1 + *len); + return(src); + } + return(NULL); +} + +/** * xmlAddDefAttrs: * @ctxt: an XML parser context * @fullname: the element fullname @@ -878,6 +1200,14 @@ const xmlChar *name; const xmlChar *prefix; + /* + * Allows to detect attribute redefinitions + */ + if (ctxt->attsSpecial != NULL) { + if (xmlHashLookup2(ctxt->attsSpecial, fullname, fullattr) != NULL) + return; + } + if (ctxt->attsDefault == NULL) { ctxt->attsDefault = xmlHashCreateDict(10, ctxt->dict); if (ctxt->attsDefault == NULL) @@ -903,22 +1233,30 @@ defaults = xmlHashLookup2(ctxt->attsDefault, name, prefix); if (defaults == NULL) { defaults = (xmlDefAttrsPtr) xmlMalloc(sizeof(xmlDefAttrs) + - (4 * 4) * sizeof(const xmlChar *)); + (4 * 5) * sizeof(const xmlChar *)); if (defaults == NULL) goto mem_error; defaults->nbAttrs = 0; defaults->maxAttrs = 4; - xmlHashUpdateEntry2(ctxt->attsDefault, name, prefix, defaults, NULL); + if (xmlHashUpdateEntry2(ctxt->attsDefault, name, prefix, + defaults, NULL) < 0) { + xmlFree(defaults); + goto mem_error; + } } else if (defaults->nbAttrs >= defaults->maxAttrs) { xmlDefAttrsPtr temp; temp = (xmlDefAttrsPtr) xmlRealloc(defaults, sizeof(xmlDefAttrs) + - (2 * defaults->maxAttrs * 4) * sizeof(const xmlChar *)); + (2 * defaults->maxAttrs * 5) * sizeof(const xmlChar *)); if (temp == NULL) goto mem_error; defaults = temp; defaults->maxAttrs *= 2; - xmlHashUpdateEntry2(ctxt->attsDefault, name, prefix, defaults, NULL); + if (xmlHashUpdateEntry2(ctxt->attsDefault, name, prefix, + defaults, NULL) < 0) { + xmlFree(defaults); + goto mem_error; + } } /* @@ -934,13 +1272,17 @@ prefix = xmlDictLookup(ctxt->dict, fullattr, len); } - defaults->values[4 * defaults->nbAttrs] = name; - defaults->values[4 * defaults->nbAttrs + 1] = prefix; + defaults->values[5 * defaults->nbAttrs] = name; + defaults->values[5 * defaults->nbAttrs + 1] = prefix; /* intern the string and precompute the end */ len = xmlStrlen(value); value = xmlDictLookup(ctxt->dict, value, len); - defaults->values[4 * defaults->nbAttrs + 2] = value; - defaults->values[4 * defaults->nbAttrs + 3] = value + len; + defaults->values[5 * defaults->nbAttrs + 2] = value; + defaults->values[5 * defaults->nbAttrs + 3] = value + len; + if (ctxt->external) + defaults->values[5 * defaults->nbAttrs + 4] = BAD_CAST "external"; + else + defaults->values[5 * defaults->nbAttrs + 4] = NULL; defaults->nbAttrs++; return; @@ -957,7 +1299,7 @@ * @fullattr: the attribute fullname * @type: the attribute type * - * Register that this attribute is not CDATA + * Register this attribute type */ static void xmlAddSpecialAttr(xmlParserCtxtPtr ctxt, @@ -971,6 +1313,9 @@ goto mem_error; } + if (xmlHashLookup2(ctxt->attsSpecial, fullname, fullattr) != NULL) + return; + xmlHashAddEntry2(ctxt->attsSpecial, fullname, fullattr, (void *) (long) type); return; @@ -981,6 +1326,45 @@ } /** + * xmlCleanSpecialAttrCallback: + * + * Removes CDATA attributes from the special attribute table + */ +static void +xmlCleanSpecialAttrCallback(void *payload, void *data, + const xmlChar *fullname, const xmlChar *fullattr, + const xmlChar *unused ATTRIBUTE_UNUSED) { + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) data; + + if (((long) payload) == XML_ATTRIBUTE_CDATA) { + xmlHashRemoveEntry2(ctxt->attsSpecial, fullname, fullattr, NULL); + } +} + +/** + * xmlCleanSpecialAttr: + * @ctxt: an XML parser context + * + * Trim the list of attributes defined to remove all those of type + * CDATA as they are not special. This call should be done when finishing + * to parse the DTD and before starting to parse the document root. + */ +static void +xmlCleanSpecialAttr(xmlParserCtxtPtr ctxt) +{ + if (ctxt->attsSpecial == NULL) + return; + + xmlHashScanFull(ctxt->attsSpecial, xmlCleanSpecialAttrCallback, ctxt); + + if (xmlHashSize(ctxt->attsSpecial) == 0) { + xmlHashFree(ctxt->attsSpecial, NULL); + ctxt->attsSpecial = NULL; + } + return; +} + +/** * xmlCheckLanguageID: * @lang: pointer to the string value * @@ -996,70 +1380,192 @@ * [37] UserCode ::= ('x' | 'X') '-' ([a-z] | [A-Z])+ * [38] Subcode ::= ([a-z] | [A-Z])+ * + * The current REC reference the sucessors of RFC 1766, currently 5646 + * + * http://www.rfc-editor.org/rfc/rfc5646.txt + * langtag = language + * ["-" script] + * ["-" region] + * *("-" variant) + * *("-" extension) + * ["-" privateuse] + * language = 2*3ALPHA ; shortest ISO 639 code + * ["-" extlang] ; sometimes followed by + * ; extended language subtags + * / 4ALPHA ; or reserved for future use + * / 5*8ALPHA ; or registered language subtag + * + * extlang = 3ALPHA ; selected ISO 639 codes + * *2("-" 3ALPHA) ; permanently reserved + * + * script = 4ALPHA ; ISO 15924 code + * + * region = 2ALPHA ; ISO 3166-1 code + * / 3DIGIT ; UN M.49 code + * + * variant = 5*8alphanum ; registered variants + * / (DIGIT 3alphanum) + * + * extension = singleton 1*("-" (2*8alphanum)) + * + * ; Single alphanumerics + * ; "x" reserved for private use + * singleton = DIGIT ; 0 - 9 + * / %x41-57 ; A - W + * / %x59-5A ; Y - Z + * / %x61-77 ; a - w + * / %x79-7A ; y - z + * + * it sounds right to still allow Irregular i-xxx IANA and user codes too + * The parser below doesn't try to cope with extension or privateuse + * that could be added but that's not interoperable anyway + * * Returns 1 if correct 0 otherwise **/ int xmlCheckLanguageID(const xmlChar * lang) { - const xmlChar *cur = lang; + const xmlChar *cur = lang, *nxt; if (cur == NULL) return (0); if (((cur[0] == 'i') && (cur[1] == '-')) || - ((cur[0] == 'I') && (cur[1] == '-'))) { - /* - * IANA code - */ - cur += 2; - while (((cur[0] >= 'A') && (cur[0] <= 'Z')) || /* non input consuming */ - ((cur[0] >= 'a') && (cur[0] <= 'z'))) - cur++; - } else if (((cur[0] == 'x') && (cur[1] == '-')) || - ((cur[0] == 'X') && (cur[1] == '-'))) { + ((cur[0] == 'I') && (cur[1] == '-')) || + ((cur[0] == 'x') && (cur[1] == '-')) || + ((cur[0] == 'X') && (cur[1] == '-'))) { /* - * User code + * Still allow IANA code and user code which were coming + * from the previous version of the XML-1.0 specification + * it's deprecated but we should not fail */ cur += 2; - while (((cur[0] >= 'A') && (cur[0] <= 'Z')) || /* non input consuming */ + while (((cur[0] >= 'A') && (cur[0] <= 'Z')) || ((cur[0] >= 'a') && (cur[0] <= 'z'))) cur++; - } else if (((cur[0] >= 'A') && (cur[0] <= 'Z')) || - ((cur[0] >= 'a') && (cur[0] <= 'z'))) { + return(cur[0] == 0); + } + nxt = cur; + while (((nxt[0] >= 'A') && (nxt[0] <= 'Z')) || + ((nxt[0] >= 'a') && (nxt[0] <= 'z'))) + nxt++; + if (nxt - cur >= 4) { /* - * ISO639 + * Reserved */ - cur++; - if (((cur[0] >= 'A') && (cur[0] <= 'Z')) || - ((cur[0] >= 'a') && (cur[0] <= 'z'))) - cur++; - else - return (0); - } else - return (0); - while (cur[0] != 0) { /* non input consuming */ - if (cur[0] != '-') - return (0); - cur++; - if (((cur[0] >= 'A') && (cur[0] <= 'Z')) || - ((cur[0] >= 'a') && (cur[0] <= 'z'))) - cur++; - else - return (0); - while (((cur[0] >= 'A') && (cur[0] <= 'Z')) || /* non input consuming */ - ((cur[0] >= 'a') && (cur[0] <= 'z'))) - cur++; + if ((nxt - cur > 8) || (nxt[0] != 0)) + return(0); + return(1); } + if (nxt - cur < 2) + return(0); + /* we got an ISO 639 code */ + if (nxt[0] == 0) + return(1); + if (nxt[0] != '-') + return(0); + + nxt++; + cur = nxt; + /* now we can have extlang or script or region or variant */ + if ((nxt[0] >= '0') && (nxt[0] <= '9')) + goto region_m49; + + while (((nxt[0] >= 'A') && (nxt[0] <= 'Z')) || + ((nxt[0] >= 'a') && (nxt[0] <= 'z'))) + nxt++; + if (nxt - cur == 4) + goto script; + if (nxt - cur == 2) + goto region; + if ((nxt - cur >= 5) && (nxt - cur <= 8)) + goto variant; + if (nxt - cur != 3) + return(0); + /* we parsed an extlang */ + if (nxt[0] == 0) + return(1); + if (nxt[0] != '-') + return(0); + + nxt++; + cur = nxt; + /* now we can have script or region or variant */ + if ((nxt[0] >= '0') && (nxt[0] <= '9')) + goto region_m49; + + while (((nxt[0] >= 'A') && (nxt[0] <= 'Z')) || + ((nxt[0] >= 'a') && (nxt[0] <= 'z'))) + nxt++; + if (nxt - cur == 2) + goto region; + if ((nxt - cur >= 5) && (nxt - cur <= 8)) + goto variant; + if (nxt - cur != 4) + return(0); + /* we parsed a script */ +script: + if (nxt[0] == 0) + return(1); + if (nxt[0] != '-') + return(0); + + nxt++; + cur = nxt; + /* now we can have region or variant */ + if ((nxt[0] >= '0') && (nxt[0] <= '9')) + goto region_m49; + + while (((nxt[0] >= 'A') && (nxt[0] <= 'Z')) || + ((nxt[0] >= 'a') && (nxt[0] <= 'z'))) + nxt++; + + if ((nxt - cur >= 5) && (nxt - cur <= 8)) + goto variant; + if (nxt - cur != 2) + return(0); + /* we parsed a region */ +region: + if (nxt[0] == 0) + return(1); + if (nxt[0] != '-') + return(0); + + nxt++; + cur = nxt; + /* now we can just have a variant */ + while (((nxt[0] >= 'A') && (nxt[0] <= 'Z')) || + ((nxt[0] >= 'a') && (nxt[0] <= 'z'))) + nxt++; + + if ((nxt - cur < 5) || (nxt - cur > 8)) + return(0); + + /* we parsed a variant */ +variant: + if (nxt[0] == 0) + return(1); + if (nxt[0] != '-') + return(0); + /* extensions and private use subtags not checked */ return (1); + +region_m49: + if (((nxt[1] >= '0') && (nxt[1] <= '9')) && + ((nxt[2] >= '0') && (nxt[2] <= '9'))) { + nxt += 3; + goto region; + } + return(0); } /************************************************************************ * * - * Parser stacks related functions and macros * + * Parser stacks related functions and macros * * * ************************************************************************/ -xmlEntityPtr xmlParseStringEntityRef(xmlParserCtxtPtr ctxt, - const xmlChar ** str); +static xmlEntityPtr xmlParseStringEntityRef(xmlParserCtxtPtr ctxt, + const xmlChar ** str); #ifdef SAX2 /** @@ -1078,7 +1584,7 @@ { if (ctxt->options & XML_PARSE_NSCLEAN) { int i; - for (i = 0;i < ctxt->nsNr;i += 2) { + for (i = ctxt->nsNr - 2;i >= 0;i -= 2) { if (ctxt->nsTab[i] == prefix) { /* in scope */ if (ctxt->nsTab[i + 1] == URL) @@ -1099,15 +1605,16 @@ return (-1); } } else if (ctxt->nsNr >= ctxt->nsMax) { + const xmlChar ** tmp; ctxt->nsMax *= 2; - ctxt->nsTab = (const xmlChar **) - xmlRealloc((char *) ctxt->nsTab, - ctxt->nsMax * sizeof(ctxt->nsTab[0])); - if (ctxt->nsTab == NULL) { + tmp = (const xmlChar **) xmlRealloc((char *) ctxt->nsTab, + ctxt->nsMax * sizeof(ctxt->nsTab[0])); + if (tmp == NULL) { xmlErrMemory(ctxt, NULL); ctxt->nsMax /= 2; return (-1); } + ctxt->nsTab = tmp; } ctxt->nsTab[ctxt->nsNr++] = prefix; ctxt->nsTab[ctxt->nsNr++] = URL; @@ -1134,7 +1641,7 @@ } if (ctxt->nsNr <= 0) return (0); - + for (i = 0;i < nr;i++) { ctxt->nsNr--; ctxt->nsTab[ctxt->nsNr] = NULL; @@ -1184,13 +1691,13 @@ * * Pushes a new parser input on top of the input stack * - * Returns 0 in case of error, the index in the stack otherwise + * Returns -1 in case of error, the index in the stack otherwise */ int inputPush(xmlParserCtxtPtr ctxt, xmlParserInputPtr value) { if ((ctxt == NULL) || (value == NULL)) - return(0); + return(-1); if (ctxt->inputNr >= ctxt->inputMax) { ctxt->inputMax *= 2; ctxt->inputTab = @@ -1199,7 +1706,10 @@ sizeof(ctxt->inputTab[0])); if (ctxt->inputTab == NULL) { xmlErrMemory(ctxt, NULL); - return (0); + xmlFreeInputStream(value); + ctxt->inputMax /= 2; + value = NULL; + return (-1); } } ctxt->inputTab[ctxt->inputNr] = value; @@ -1239,7 +1749,7 @@ * * Pushes a new element node on top of the node stack * - * Returns 0 in case of error, the index in the stack otherwise + * Returns -1 in case of error, the index in the stack otherwise */ int nodePush(xmlParserCtxtPtr ctxt, xmlNodePtr value) @@ -1253,22 +1763,24 @@ sizeof(ctxt->nodeTab[0])); if (tmp == NULL) { xmlErrMemory(ctxt, NULL); - return (0); + return (-1); } ctxt->nodeTab = tmp; ctxt->nodeMax *= 2; } - if (((unsigned int) ctxt->nodeNr) > xmlParserMaxDepth) { + if ((((unsigned int) ctxt->nodeNr) > xmlParserMaxDepth) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErrMsgInt(ctxt, XML_ERR_INTERNAL_ERROR, - "Excessive depth in document: change xmlParserMaxDepth = %d\n", + "Excessive depth in document: %d use XML_PARSE_HUGE option\n", xmlParserMaxDepth); - ctxt->instate = XML_PARSER_EOF; - return(0); + xmlHaltParser(ctxt); + return(-1); } ctxt->nodeTab[ctxt->nodeNr] = value; ctxt->node = value; return (ctxt->nodeNr++); } + /** * nodePop: * @ctxt: an XML parser context @@ -1384,15 +1896,14 @@ if (ctxt->nameNr >= ctxt->nameMax) { const xmlChar * *tmp; - ctxt->nameMax *= 2; tmp = (const xmlChar * *) xmlRealloc((xmlChar * *)ctxt->nameTab, - ctxt->nameMax * + ctxt->nameMax * 2 * sizeof(ctxt->nameTab[0])); if (tmp == NULL) { - ctxt->nameMax /= 2; goto mem_error; } ctxt->nameTab = tmp; + ctxt->nameMax *= 2; } ctxt->nameTab[ctxt->nameNr] = value; ctxt->name = value; @@ -1428,13 +1939,17 @@ static int spacePush(xmlParserCtxtPtr ctxt, int val) { if (ctxt->spaceNr >= ctxt->spaceMax) { + int *tmp; + ctxt->spaceMax *= 2; - ctxt->spaceTab = (int *) xmlRealloc(ctxt->spaceTab, - ctxt->spaceMax * sizeof(ctxt->spaceTab[0])); - if (ctxt->spaceTab == NULL) { + tmp = (int *) xmlRealloc(ctxt->spaceTab, + ctxt->spaceMax * sizeof(ctxt->spaceTab[0])); + if (tmp == NULL) { xmlErrMemory(ctxt, NULL); - return(0); + ctxt->spaceMax /=2; + return(-1); } + ctxt->spaceTab = tmp; } ctxt->spaceTab[ctxt->spaceNr] = val; ctxt->space = &ctxt->spaceTab[ctxt->spaceNr]; @@ -1474,7 +1989,7 @@ * to compare on ASCII based substring. * SKIP(n) Skip n xmlChar, and must also be used only to skip ASCII defined * strings without newlines within the parser. - * NEXT1(l) Skip 1 xmlChar, and must also be used only to skip 1 non-newline ASCII + * NEXT1(l) Skip 1 xmlChar, and must also be used only to skip 1 non-newline ASCII * defined char within the parser. * Clean macros, not dependent of an ASCII context, expect UTF-8 encoding * @@ -1523,10 +2038,10 @@ #define SKIPL(val) do { \ int skipl; \ for(skipl=0; skiplinput->cur) == '\n') { \ + if (*(ctxt->input->cur) == '\n') { \ ctxt->input->line++; ctxt->input->col = 1; \ - } else ctxt->input->col++; \ - ctxt->nbChars++; \ + } else ctxt->input->col++; \ + ctxt->nbChars++; \ ctxt->input->cur++; \ } \ if (*ctxt->input->cur == '%') xmlParserHandlePEReference(ctxt); \ @@ -1552,8 +2067,25 @@ xmlGROW (ctxt); static void xmlGROW (xmlParserCtxtPtr ctxt) { + unsigned long curEnd = ctxt->input->end - ctxt->input->cur; + unsigned long curBase = ctxt->input->cur - ctxt->input->base; + + if (((curEnd > (unsigned long) XML_MAX_LOOKUP_LIMIT) || + (curBase > (unsigned long) XML_MAX_LOOKUP_LIMIT)) && + ((ctxt->input->buf) && (ctxt->input->buf->readcallback != (xmlInputReadCallback) xmlNop)) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_INTERNAL_ERROR, "Huge input lookup"); + xmlHaltParser(ctxt); + return; + } xmlParserInputGrow(ctxt->input, INPUT_CHUNK); - if ((*ctxt->input->cur == 0) && + if ((ctxt->input->cur > ctxt->input->end) || + (ctxt->input->cur < ctxt->input->base)) { + xmlHaltParser(ctxt); + xmlFatalErr(ctxt, XML_ERR_INTERNAL_ERROR, "cur index out of bound"); + return; + } + if ((ctxt->input->cur != NULL) && (*ctxt->input->cur == 0) && (xmlParserInputGrow(ctxt->input, INPUT_CHUNK) <= 0)) xmlPopInput(ctxt); } @@ -1612,6 +2144,8 @@ while (IS_BLANK_CH(*cur)) { if (*cur == '\n') { ctxt->input->line++; ctxt->input->col = 1; + } else { + ctxt->input->col++; } cur++; res++; @@ -1626,7 +2160,8 @@ int cur; do { cur = CUR; - while (IS_BLANK_CH(cur)) { /* CHECKED tstblanks.xml */ + while ((IS_BLANK_CH(cur) && /* CHECKED tstblanks.xml */ + (ctxt->instate != XML_PARSER_EOF))) { NEXT; cur = CUR; res++; @@ -1640,7 +2175,8 @@ * Need to handle support of entities branching here */ if (*ctxt->input->cur == '%') xmlParserHandlePEReference(ctxt); - } while (IS_BLANK(cur)); /* CHECKED tstblanks.xml */ + } while ((IS_BLANK(cur)) && /* CHECKED tstblanks.xml */ + (ctxt->instate != XML_PARSER_EOF)); } return(res); } @@ -1680,10 +2216,12 @@ * * xmlPushInput: switch to a new input stream which is stacked on top * of the previous one(s). + * Returns -1 in case of error or the index in the input stack */ -void +int xmlPushInput(xmlParserCtxtPtr ctxt, xmlParserInputPtr input) { - if (input == NULL) return; + int ret; + if (input == NULL) return(-1); if (xmlParserDebugEntities) { if ((ctxt->input != NULL) && (ctxt->input->filename)) @@ -1693,8 +2231,11 @@ xmlGenericError(xmlGenericErrorContext, "Pushing input %d : %.30s\n", ctxt->inputNr+1, input->cur); } - inputPush(ctxt, input); + ret = inputPush(ctxt, input); + if (ctxt->instate == XML_PARSER_EOF) + return(-1); GROW; + return(ret); } /** @@ -1708,7 +2249,7 @@ * * [ WFC: Legal Character ] * Characters referred to using character references must match the - * production for Char. + * production for Char. * * Returns the value parsed (as an int), 0 in case of error */ @@ -1729,8 +2270,10 @@ if (count++ > 20) { count = 0; GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(0); } - if ((RAW >= '0') && (RAW <= '9')) + if ((RAW >= '0') && (RAW <= '9')) val = val * 16 + (CUR - '0'); else if ((RAW >= 'a') && (RAW <= 'f') && (count < 20)) val = val * 16 + (CUR - 'a') + 10; @@ -1760,8 +2303,10 @@ if (count++ > 20) { count = 0; GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(0); } - if ((RAW >= '0') && (RAW <= '9')) + if ((RAW >= '0') && (RAW <= '9')) val = val * 10 + (CUR - '0'); else { xmlFatalErr(ctxt, XML_ERR_INVALID_DEC_CHARREF, NULL); @@ -1787,7 +2332,7 @@ /* * [ WFC: Legal Character ] * Characters referred to using character references must match the - * production for Char. + * production for Char. */ if ((IS_CHAR(val) && (outofrange == 0))) { return(val); @@ -1812,7 +2357,7 @@ * * [ WFC: Legal Character ] * Characters referred to using character references must match the - * production for Char. + * production for Char. * * Returns the value parsed (as an int), 0 in case of error, str will be * updated to the current value of the index @@ -1831,7 +2376,7 @@ ptr += 3; cur = *ptr; while (cur != ';') { /* Non input consuming loop */ - if ((cur >= '0') && (cur <= '9')) + if ((cur >= '0') && (cur <= '9')) val = val * 16 + (cur - '0'); else if ((cur >= 'a') && (cur <= 'f')) val = val * 16 + (cur - 'a') + 10; @@ -1854,7 +2399,7 @@ ptr += 2; cur = *ptr; while (cur != ';') { /* Non input consuming loops */ - if ((cur >= '0') && (cur <= '9')) + if ((cur >= '0') && (cur <= '9')) val = val * 10 + (cur - '0'); else { xmlFatalErr(ctxt, XML_ERR_INVALID_DEC_CHARREF, NULL); @@ -1878,7 +2423,7 @@ /* * [ WFC: Legal Character ] * Characters referred to using character references must match the - * production for Char. + * production for Char. */ if ((IS_CHAR(val) && (outofrange == 0))) { return(val); @@ -1900,9 +2445,9 @@ * * Returns the new input stream or NULL */ - + static void deallocblankswrapper (xmlChar *str) {xmlFree(str);} - + static xmlParserInputPtr xmlNewBlanksWrapperInputStream(xmlParserCtxtPtr ctxt, xmlEntityPtr entity) { xmlParserInputPtr input; @@ -1924,7 +2469,8 @@ buffer = xmlMallocAtomic(length); if (buffer == NULL) { xmlErrMemory(ctxt, NULL); - return(NULL); + xmlFree(input); + return(NULL); } buffer [0] = ' '; buffer [1] = '%'; @@ -1943,12 +2489,12 @@ /** * xmlParserHandlePEReference: * @ctxt: the parser context - * + * * [69] PEReference ::= '%' Name ';' * * [ WFC: No Recursion ] * A parsed entity must not contain a recursive - * reference to itself, either directly or indirectly. + * reference to itself, either directly or indirectly. * * [ WFC: Entity Declared ] * In a document without any DTD, a document with only an internal DTD @@ -1966,9 +2512,9 @@ * NOTE: misleading but this is handled. * * A PEReference may have been detected in the current input stream - * the handling is done accordingly to + * the handling is done accordingly to * http://www.w3.org/TR/REC-xml#entproc - * i.e. + * i.e. * - Included in literal in entity values * - Included as Parameter Entity reference within DTDs */ @@ -2045,8 +2591,10 @@ NEXT; if ((ctxt->sax != NULL) && (ctxt->sax->getParameterEntity != NULL)) entity = ctxt->sax->getParameterEntity(ctxt->userData, name); + if (ctxt->instate == XML_PARSER_EOF) + return; if (entity == NULL) { - + /* * [ WFC: Entity Declared ] * In a document without any DTD, a document with only an @@ -2071,16 +2619,18 @@ if ((ctxt->validate) && (ctxt->vctxt.error != NULL)) { xmlValidityError(ctxt, XML_WAR_UNDECLARED_ENTITY, "PEReference: %%%s; not found\n", - name); - } else + name, NULL); + } else xmlWarningMsg(ctxt, XML_WAR_UNDECLARED_ENTITY, "PEReference: %%%s; not found\n", name, NULL); ctxt->valid = 0; } + xmlParserEntityCheck(ctxt, 0, NULL, 0); } else if (ctxt->input->free != deallocblankswrapper) { input = xmlNewBlanksWrapperInputStream(ctxt, entity); - xmlPushInput(ctxt, input); + if (xmlPushInput(ctxt, input) < 0) + return; } else { if ((entity->etype == XML_INTERNAL_PARAMETER_ENTITY) || (entity->etype == XML_EXTERNAL_PARAMETER_ENTITY)) { @@ -2088,14 +2638,32 @@ xmlCharEncoding enc; /* + * Note: external parameter entities will not be loaded, it + * is not required for a non-validating parser, unless the + * option of validating, or substituting entities were + * given. Doing so is far more secure as the parser will + * only process data coming from the document entity by + * default. + */ + if ((entity->etype == XML_EXTERNAL_PARAMETER_ENTITY) && + ((ctxt->options & XML_PARSE_NOENT) == 0) && + ((ctxt->options & XML_PARSE_DTDVALID) == 0) && + ((ctxt->options & XML_PARSE_DTDLOAD) == 0) && + ((ctxt->options & XML_PARSE_DTDATTR) == 0) && + (ctxt->replaceEntities == 0) && + (ctxt->validate == 0)) + return; + + /* * handle the extra spaces added before and after * c.f. http://www.w3.org/TR/REC-xml#as-PE * this is done independently. */ input = xmlNewEntityInputStream(ctxt, entity); - xmlPushInput(ctxt, input); + if (xmlPushInput(ctxt, input) < 0) + return; - /* + /* * Get the 4 first bytes and decode the charset * if enc != XML_CHAR_ENCODING_NONE * plug some encoding conversion routines. @@ -2105,6 +2673,8 @@ * the amount of data in the buffer. */ GROW + if (ctxt->instate == XML_PARSER_EOF) + return; if ((ctxt->input->end - ctxt->input->cur)>=4) { start[0] = RAW; start[1] = NXT(1); @@ -2135,14 +2705,17 @@ /* * Macro used to grow the current buffer. + * buffer##_size is expected to be a size_t + * mem_error: is expected to handle memory allocation failures */ -#define growBuffer(buffer) { \ +#define growBuffer(buffer, n) { \ xmlChar *tmp; \ - buffer##_size *= 2; \ - tmp = (xmlChar *) \ - xmlRealloc(buffer, buffer##_size * sizeof(xmlChar)); \ + size_t new_size = buffer##_size * 2 + n; \ + if (new_size < buffer##_size) goto mem_error; \ + tmp = (xmlChar *) xmlRealloc(buffer, new_size); \ if (tmp == NULL) goto mem_error; \ buffer = tmp; \ + buffer##_size = new_size; \ } /** @@ -2154,7 +2727,7 @@ * @end: an end marker xmlChar, 0 if none * @end2: an end marker xmlChar, 0 if none * @end3: an end marker xmlChar, 0 if none - * + * * Takes a entity string content and process to do the adequate substitutions. * * [67] Reference ::= EntityRef | CharRef @@ -2168,19 +2741,22 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len, int what, xmlChar end, xmlChar end2, xmlChar end3) { xmlChar *buffer = NULL; - int buffer_size = 0; + size_t buffer_size = 0; + size_t nbchars = 0; xmlChar *current = NULL; + xmlChar *rep = NULL; const xmlChar *last; xmlEntityPtr ent; int c,l; - int nbchars = 0; if ((ctxt == NULL) || (str == NULL) || (len < 0)) return(NULL); last = str + len; - if (ctxt->depth > 40) { + if (((ctxt->depth > 40) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) || + (ctxt->depth > 1024)) { xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL); return(NULL); } @@ -2189,7 +2765,7 @@ * allocate a translation buffer. */ buffer_size = XML_PARSER_BIG_BUFFER_SIZE; - buffer = (xmlChar *) xmlMallocAtomic(buffer_size * sizeof(xmlChar)); + buffer = (xmlChar *) xmlMallocAtomic(buffer_size); if (buffer == NULL) goto mem_error; /* @@ -2209,8 +2785,8 @@ if (val != 0) { COPY_BUF(0,buffer,nbchars,val); } - if (nbchars > buffer_size - XML_PARSER_BUFFER_SIZE) { - growBuffer(buffer); + if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) { + growBuffer(buffer, XML_PARSER_BUFFER_SIZE); } } else if ((c == '&') && (what & XML_SUBSTITUTE_REF)) { if (xmlParserDebugEntities) @@ -2218,42 +2794,53 @@ "String decoding Entity Reference: %.30s\n", str); ent = xmlParseStringEntityRef(ctxt, &str); + if ((ctxt->lastError.code == XML_ERR_ENTITY_LOOP) || + (ctxt->lastError.code == XML_ERR_INTERNAL_ERROR)) + goto int_error; + xmlParserEntityCheck(ctxt, 0, ent, 0); + if (ent != NULL) + ctxt->nbentities += ent->checked / 2; if ((ent != NULL) && (ent->etype == XML_INTERNAL_PREDEFINED_ENTITY)) { if (ent->content != NULL) { COPY_BUF(0,buffer,nbchars,ent->content[0]); - if (nbchars > buffer_size - XML_PARSER_BUFFER_SIZE) { - growBuffer(buffer); + if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) { + growBuffer(buffer, XML_PARSER_BUFFER_SIZE); } } else { xmlFatalErrMsg(ctxt, XML_ERR_INTERNAL_ERROR, "predefined entity has no content\n"); } } else if ((ent != NULL) && (ent->content != NULL)) { - xmlChar *rep; - ctxt->depth++; rep = xmlStringDecodeEntities(ctxt, ent->content, what, 0, 0, 0); ctxt->depth--; + + if ((ctxt->lastError.code == XML_ERR_ENTITY_LOOP) || + (ctxt->lastError.code == XML_ERR_INTERNAL_ERROR)) + goto int_error; + if (rep != NULL) { current = rep; while (*current != 0) { /* non input consuming loop */ buffer[nbchars++] = *current++; - if (nbchars > - buffer_size - XML_PARSER_BUFFER_SIZE) { - growBuffer(buffer); + if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) { + if (xmlParserEntityCheck(ctxt, nbchars, ent, 0)) + goto int_error; + growBuffer(buffer, XML_PARSER_BUFFER_SIZE); } } xmlFree(rep); + rep = NULL; } } else if (ent != NULL) { int i = xmlStrlen(ent->name); const xmlChar *cur = ent->name; buffer[nbchars++] = '&'; - if (nbchars > buffer_size - i - XML_PARSER_BUFFER_SIZE) { - growBuffer(buffer); + if (nbchars + i + XML_PARSER_BUFFER_SIZE > buffer_size) { + growBuffer(buffer, i + XML_PARSER_BUFFER_SIZE); } for (;i > 0;i--) buffer[nbchars++] = *cur++; @@ -2264,9 +2851,15 @@ xmlGenericError(xmlGenericErrorContext, "String decoding PE Reference: %.30s\n", str); ent = xmlParseStringPEReference(ctxt, &str); + if (ctxt->lastError.code == XML_ERR_ENTITY_LOOP) + goto int_error; + xmlParserEntityCheck(ctxt, 0, ent, 0); + if (ent != NULL) + ctxt->nbentities += ent->checked / 2; if (ent != NULL) { - xmlChar *rep; - + if (ent->content == NULL) { + xmlLoadEntityContent(ctxt, ent); + } ctxt->depth++; rep = xmlStringDecodeEntities(ctxt, ent->content, what, 0, 0, 0); @@ -2275,19 +2868,21 @@ current = rep; while (*current != 0) { /* non input consuming loop */ buffer[nbchars++] = *current++; - if (nbchars > - buffer_size - XML_PARSER_BUFFER_SIZE) { - growBuffer(buffer); + if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) { + if (xmlParserEntityCheck(ctxt, nbchars, ent, 0)) + goto int_error; + growBuffer(buffer, XML_PARSER_BUFFER_SIZE); } } xmlFree(rep); + rep = NULL; } } } else { COPY_BUF(l,buffer,nbchars,c); str += l; - if (nbchars > buffer_size - XML_PARSER_BUFFER_SIZE) { - growBuffer(buffer); + if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) { + growBuffer(buffer, XML_PARSER_BUFFER_SIZE); } } if (str < last) @@ -2295,11 +2890,16 @@ else c = 0; } - buffer[nbchars++] = 0; + buffer[nbchars] = 0; return(buffer); mem_error: xmlErrMemory(ctxt, NULL); +int_error: + if (rep != NULL) + xmlFree(rep); + if (buffer != NULL) + xmlFree(buffer); return(NULL); } @@ -2311,7 +2911,7 @@ * @end: an end marker xmlChar, 0 if none * @end2: an end marker xmlChar, 0 if none * @end3: an end marker xmlChar, 0 if none - * + * * Takes a entity string content and process to do the adequate substitutions. * * [67] Reference ::= EntityRef | CharRef @@ -2414,7 +3014,7 @@ * xmlSplitQName: * @ctxt: an XML parser context * @name: an XML parser context - * @prefix: a xmlChar ** + * @prefix: a xmlChar ** * * parse an UTF8 encoded XML qualified name string * @@ -2465,7 +3065,7 @@ * for the processing speed. */ max = len * 2; - + buffer = (xmlChar *) xmlMallocAtomic(max * sizeof(xmlChar)); if (buffer == NULL) { xmlErrMemory(ctxt, NULL); @@ -2480,7 +3080,7 @@ tmp = (xmlChar *) xmlRealloc(buffer, max * sizeof(xmlChar)); if (tmp == NULL) { - xmlFree(tmp); + xmlFree(buffer); xmlErrMemory(ctxt, NULL); return(NULL); } @@ -2491,7 +3091,7 @@ } buffer[len] = 0; } - + if ((c == ':') && (*cur == 0)) { if (buffer != NULL) xmlFree(buffer); @@ -2544,7 +3144,7 @@ * for the processing speed. */ max = len * 2; - + buffer = (xmlChar *) xmlMallocAtomic(max * sizeof(xmlChar)); if (buffer == NULL) { xmlErrMemory(ctxt, NULL); @@ -2570,7 +3170,7 @@ } buffer[len] = 0; } - + if (buffer == NULL) ret = xmlStrndup(buf, len); else { @@ -2588,10 +3188,221 @@ * * ************************************************************************/ -static const xmlChar * xmlParseNameComplex(xmlParserCtxtPtr ctxt); +/************************************************************************ + * * + * Routines to parse Name, NCName and NmToken * + * * + ************************************************************************/ +#ifdef DEBUG +static unsigned long nbParseName = 0; +static unsigned long nbParseNmToken = 0; +static unsigned long nbParseNCName = 0; +static unsigned long nbParseNCNameComplex = 0; +static unsigned long nbParseNameComplex = 0; +static unsigned long nbParseStringName = 0; +#endif + +/* + * The two following functions are related to the change of accepted + * characters for Name and NmToken in the Revision 5 of XML-1.0 + * They correspond to the modified production [4] and the new production [4a] + * changes in that revision. Also note that the macros used for the + * productions Letter, Digit, CombiningChar and Extender are not needed + * anymore. + * We still keep compatibility to pre-revision5 parsing semantic if the + * new XML_PARSE_OLD10 option is given to the parser. + */ +static int +xmlIsNameStartChar(xmlParserCtxtPtr ctxt, int c) { + if ((ctxt->options & XML_PARSE_OLD10) == 0) { + /* + * Use the new checks of production [4] [4a] amd [5] of the + * Update 5 of XML-1.0 + */ + if ((c != ' ') && (c != '>') && (c != '/') && /* accelerators */ + (((c >= 'a') && (c <= 'z')) || + ((c >= 'A') && (c <= 'Z')) || + (c == '_') || (c == ':') || + ((c >= 0xC0) && (c <= 0xD6)) || + ((c >= 0xD8) && (c <= 0xF6)) || + ((c >= 0xF8) && (c <= 0x2FF)) || + ((c >= 0x370) && (c <= 0x37D)) || + ((c >= 0x37F) && (c <= 0x1FFF)) || + ((c >= 0x200C) && (c <= 0x200D)) || + ((c >= 0x2070) && (c <= 0x218F)) || + ((c >= 0x2C00) && (c <= 0x2FEF)) || + ((c >= 0x3001) && (c <= 0xD7FF)) || + ((c >= 0xF900) && (c <= 0xFDCF)) || + ((c >= 0xFDF0) && (c <= 0xFFFD)) || + ((c >= 0x10000) && (c <= 0xEFFFF)))) + return(1); + } else { + if (IS_LETTER(c) || (c == '_') || (c == ':')) + return(1); + } + return(0); +} + +static int +xmlIsNameChar(xmlParserCtxtPtr ctxt, int c) { + if ((ctxt->options & XML_PARSE_OLD10) == 0) { + /* + * Use the new checks of production [4] [4a] amd [5] of the + * Update 5 of XML-1.0 + */ + if ((c != ' ') && (c != '>') && (c != '/') && /* accelerators */ + (((c >= 'a') && (c <= 'z')) || + ((c >= 'A') && (c <= 'Z')) || + ((c >= '0') && (c <= '9')) || /* !start */ + (c == '_') || (c == ':') || + (c == '-') || (c == '.') || (c == 0xB7) || /* !start */ + ((c >= 0xC0) && (c <= 0xD6)) || + ((c >= 0xD8) && (c <= 0xF6)) || + ((c >= 0xF8) && (c <= 0x2FF)) || + ((c >= 0x300) && (c <= 0x36F)) || /* !start */ + ((c >= 0x370) && (c <= 0x37D)) || + ((c >= 0x37F) && (c <= 0x1FFF)) || + ((c >= 0x200C) && (c <= 0x200D)) || + ((c >= 0x203F) && (c <= 0x2040)) || /* !start */ + ((c >= 0x2070) && (c <= 0x218F)) || + ((c >= 0x2C00) && (c <= 0x2FEF)) || + ((c >= 0x3001) && (c <= 0xD7FF)) || + ((c >= 0xF900) && (c <= 0xFDCF)) || + ((c >= 0xFDF0) && (c <= 0xFFFD)) || + ((c >= 0x10000) && (c <= 0xEFFFF)))) + return(1); + } else { + if ((IS_LETTER(c)) || (IS_DIGIT(c)) || + (c == '.') || (c == '-') || + (c == '_') || (c == ':') || + (IS_COMBINING(c)) || + (IS_EXTENDER(c))) + return(1); + } + return(0); +} + static xmlChar * xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *len, int *alloc, int normalize); +static const xmlChar * +xmlParseNameComplex(xmlParserCtxtPtr ctxt) { + int len = 0, l; + int c; + int count = 0; + +#ifdef DEBUG + nbParseNameComplex++; +#endif + + /* + * Handler for more complex cases + */ + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + c = CUR_CHAR(l); + if ((ctxt->options & XML_PARSE_OLD10) == 0) { + /* + * Use the new checks of production [4] [4a] amd [5] of the + * Update 5 of XML-1.0 + */ + if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */ + (!(((c >= 'a') && (c <= 'z')) || + ((c >= 'A') && (c <= 'Z')) || + (c == '_') || (c == ':') || + ((c >= 0xC0) && (c <= 0xD6)) || + ((c >= 0xD8) && (c <= 0xF6)) || + ((c >= 0xF8) && (c <= 0x2FF)) || + ((c >= 0x370) && (c <= 0x37D)) || + ((c >= 0x37F) && (c <= 0x1FFF)) || + ((c >= 0x200C) && (c <= 0x200D)) || + ((c >= 0x2070) && (c <= 0x218F)) || + ((c >= 0x2C00) && (c <= 0x2FEF)) || + ((c >= 0x3001) && (c <= 0xD7FF)) || + ((c >= 0xF900) && (c <= 0xFDCF)) || + ((c >= 0xFDF0) && (c <= 0xFFFD)) || + ((c >= 0x10000) && (c <= 0xEFFFF))))) { + return(NULL); + } + len += l; + NEXTL(l); + c = CUR_CHAR(l); + while ((c != ' ') && (c != '>') && (c != '/') && /* accelerators */ + (((c >= 'a') && (c <= 'z')) || + ((c >= 'A') && (c <= 'Z')) || + ((c >= '0') && (c <= '9')) || /* !start */ + (c == '_') || (c == ':') || + (c == '-') || (c == '.') || (c == 0xB7) || /* !start */ + ((c >= 0xC0) && (c <= 0xD6)) || + ((c >= 0xD8) && (c <= 0xF6)) || + ((c >= 0xF8) && (c <= 0x2FF)) || + ((c >= 0x300) && (c <= 0x36F)) || /* !start */ + ((c >= 0x370) && (c <= 0x37D)) || + ((c >= 0x37F) && (c <= 0x1FFF)) || + ((c >= 0x200C) && (c <= 0x200D)) || + ((c >= 0x203F) && (c <= 0x2040)) || /* !start */ + ((c >= 0x2070) && (c <= 0x218F)) || + ((c >= 0x2C00) && (c <= 0x2FEF)) || + ((c >= 0x3001) && (c <= 0xD7FF)) || + ((c >= 0xF900) && (c <= 0xFDCF)) || + ((c >= 0xFDF0) && (c <= 0xFFFD)) || + ((c >= 0x10000) && (c <= 0xEFFFF)) + )) { + if (count++ > XML_PARSER_CHUNK_SIZE) { + count = 0; + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + } + len += l; + NEXTL(l); + c = CUR_CHAR(l); + } + } else { + if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */ + (!IS_LETTER(c) && (c != '_') && + (c != ':'))) { + return(NULL); + } + len += l; + NEXTL(l); + c = CUR_CHAR(l); + + while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */ + ((IS_LETTER(c)) || (IS_DIGIT(c)) || + (c == '.') || (c == '-') || + (c == '_') || (c == ':') || + (IS_COMBINING(c)) || + (IS_EXTENDER(c)))) { + if (count++ > XML_PARSER_CHUNK_SIZE) { + count = 0; + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + } + len += l; + NEXTL(l); + c = CUR_CHAR(l); + if (c == 0) { + count = 0; + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + c = CUR_CHAR(l); + } + } + } + if ((len > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "Name"); + return(NULL); + } + if ((*ctxt->input->cur == '\n') && (ctxt->input->cur[-1] == '\r')) + return(xmlDictLookup(ctxt->dict, ctxt->input->cur - (len + 1), len)); + return(xmlDictLookup(ctxt->dict, ctxt->input->cur - len, len)); +} + /** * xmlParseName: * @ctxt: an XML parser context @@ -2616,6 +3427,10 @@ GROW; +#ifdef DEBUG + nbParseName++; +#endif + /* * Accelerator for simple ASCII names */ @@ -2632,6 +3447,11 @@ in++; if ((*in > 0) && (*in < 0x80)) { count = in - ctxt->input->cur; + if ((count > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "Name"); + return(NULL); + } ret = xmlDictLookup(ctxt->dict, ctxt->input->cur, count); ctxt->input->cur = in; ctxt->nbChars += count; @@ -2641,9 +3461,136 @@ return(ret); } } + /* accelerator for special cases */ return(xmlParseNameComplex(ctxt)); } +static const xmlChar * +xmlParseNCNameComplex(xmlParserCtxtPtr ctxt) { + int len = 0, l; + int c; + int count = 0; + const xmlChar *end; /* needed because CUR_CHAR() can move cur on \r\n */ + +#ifdef DEBUG + nbParseNCNameComplex++; +#endif + + /* + * Handler for more complex cases + */ + GROW; + end = ctxt->input->cur; + c = CUR_CHAR(l); + if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */ + (!xmlIsNameStartChar(ctxt, c) || (c == ':'))) { + return(NULL); + } + + while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */ + (xmlIsNameChar(ctxt, c) && (c != ':'))) { + if (count++ > XML_PARSER_CHUNK_SIZE) { + if ((len > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName"); + return(NULL); + } + count = 0; + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + } + len += l; + NEXTL(l); + end = ctxt->input->cur; + c = CUR_CHAR(l); + if (c == 0) { + count = 0; + /* + * when shrinking to extend the buffer we really need to preserve + * the part of the name we already parsed. Hence rolling back + * by current lenght. + */ + ctxt->input->cur -= l; + GROW; + ctxt->input->cur += l; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + end = ctxt->input->cur; + c = CUR_CHAR(l); + } + } + if ((len > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName"); + return(NULL); + } + return(xmlDictLookup(ctxt->dict, end - len, len)); +} + +/** + * xmlParseNCName: + * @ctxt: an XML parser context + * @len: length of the string parsed + * + * parse an XML name. + * + * [4NS] NCNameChar ::= Letter | Digit | '.' | '-' | '_' | + * CombiningChar | Extender + * + * [5NS] NCName ::= (Letter | '_') (NCNameChar)* + * + * Returns the Name parsed or NULL + */ + +static const xmlChar * +xmlParseNCName(xmlParserCtxtPtr ctxt) { + const xmlChar *in, *e; + const xmlChar *ret; + int count = 0; + +#ifdef DEBUG + nbParseNCName++; +#endif + + /* + * Accelerator for simple ASCII names + */ + in = ctxt->input->cur; + e = ctxt->input->end; + if ((((*in >= 0x61) && (*in <= 0x7A)) || + ((*in >= 0x41) && (*in <= 0x5A)) || + (*in == '_')) && (in < e)) { + in++; + while ((((*in >= 0x61) && (*in <= 0x7A)) || + ((*in >= 0x41) && (*in <= 0x5A)) || + ((*in >= 0x30) && (*in <= 0x39)) || + (*in == '_') || (*in == '-') || + (*in == '.')) && (in < e)) + in++; + if (in >= e) + goto complex; + if ((*in > 0) && (*in < 0x80)) { + count = in - ctxt->input->cur; + if ((count > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName"); + return(NULL); + } + ret = xmlDictLookup(ctxt->dict, ctxt->input->cur, count); + ctxt->input->cur = in; + ctxt->nbChars += count; + ctxt->input->col += count; + if (ret == NULL) { + xmlErrMemory(ctxt, NULL); + } + return(ret); + } + } +complex: + return(xmlParseNCNameComplex(ctxt)); +} + /** * xmlParseNameAndCompare: * @ctxt: an XML parser context @@ -2662,15 +3609,17 @@ const xmlChar *ret; GROW; - + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + in = ctxt->input->cur; while (*in != 0 && *in == *cmp) { - ++in; + ++in; ++cmp; ctxt->input->col++; } if (*cmp == 0 && (*in == '>' || IS_BLANK_CH (*in))) { - /* success */ + /* success */ ctxt->input->cur = in; return (const xmlChar*) 1; } @@ -2683,42 +3632,6 @@ return ret; } -static const xmlChar * -xmlParseNameComplex(xmlParserCtxtPtr ctxt) { - int len = 0, l; - int c; - int count = 0; - - /* - * Handler for more complex cases - */ - GROW; - c = CUR_CHAR(l); - if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */ - (!IS_LETTER(c) && (c != '_') && - (c != ':'))) { - return(NULL); - } - - while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */ - ((IS_LETTER(c)) || (IS_DIGIT(c)) || - (c == '.') || (c == '-') || - (c == '_') || (c == ':') || - (IS_COMBINING(c)) || - (IS_EXTENDER(c)))) { - if (count++ > 100) { - count = 0; - GROW; - } - len += l; - NEXTL(l); - c = CUR_CHAR(l); - } - if ((*ctxt->input->cur == '\n') && (ctxt->input->cur[-1] == '\r')) - return(xmlDictLookup(ctxt->dict, ctxt->input->cur - (len + 1), len)); - return(xmlDictLookup(ctxt->dict, ctxt->input->cur - len, len)); -} - /** * xmlParseStringName: * @ctxt: an XML parser context @@ -2733,7 +3646,7 @@ * * [6] Names ::= Name (#x20 Name)* * - * Returns the Name parsed or NULL. The @str pointer + * Returns the Name parsed or NULL. The @str pointer * is updated to the current location in the string. */ @@ -2744,17 +3657,19 @@ int len = 0, l; int c; +#ifdef DEBUG + nbParseStringName++; +#endif + c = CUR_SCHAR(cur, l); - if (!IS_LETTER(c) && (c != '_') && - (c != ':')) { + if (!xmlIsNameStartChar(ctxt, c)) { return(NULL); } - while ((IS_LETTER(c)) || (IS_DIGIT(c)) || /* test bigentname.xml */ - (c == '.') || (c == '-') || - (c == '_') || (c == ':') || - (IS_COMBINING(c)) || - (IS_EXTENDER(c))) { + COPY_BUF(l,buf,len,c); + cur += l; + c = CUR_SCHAR(cur, l); + while (xmlIsNameChar(ctxt, c)) { COPY_BUF(l,buf,len,c); cur += l; c = CUR_SCHAR(cur, l); @@ -2765,21 +3680,23 @@ */ xmlChar *buffer; int max = len * 2; - + buffer = (xmlChar *) xmlMallocAtomic(max * sizeof(xmlChar)); if (buffer == NULL) { xmlErrMemory(ctxt, NULL); return(NULL); } memcpy(buffer, buf, len); - while ((IS_LETTER(c)) || (IS_DIGIT(c)) || - /* test bigentname.xml */ - (c == '.') || (c == '-') || - (c == '_') || (c == ':') || - (IS_COMBINING(c)) || - (IS_EXTENDER(c))) { + while (xmlIsNameChar(ctxt, c)) { if (len + 10 > max) { xmlChar *tmp; + + if ((len > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName"); + xmlFree(buffer); + return(NULL); + } max *= 2; tmp = (xmlChar *) xmlRealloc(buffer, max * sizeof(xmlChar)); @@ -2799,6 +3716,11 @@ return(buffer); } } + if ((len > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName"); + return(NULL); + } *str = cur; return(xmlStrndup(buf, len)); } @@ -2806,7 +3728,7 @@ /** * xmlParseNmtoken: * @ctxt: an XML parser context - * + * * parse an XML Nmtoken. * * [7] Nmtoken ::= (NameChar)+ @@ -2823,21 +3745,30 @@ int c; int count = 0; +#ifdef DEBUG + nbParseNmToken++; +#endif + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); c = CUR_CHAR(l); - while ((IS_LETTER(c)) || (IS_DIGIT(c)) || /* test bigtoken.xml */ - (c == '.') || (c == '-') || - (c == '_') || (c == ':') || - (IS_COMBINING(c)) || - (IS_EXTENDER(c))) { - if (count++ > 100) { + while (xmlIsNameChar(ctxt, c)) { + if (count++ > XML_PARSER_CHUNK_SIZE) { count = 0; GROW; } COPY_BUF(l,buf,len,c); NEXTL(l); c = CUR_CHAR(l); + if (c == 0) { + count = 0; + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + c = CUR_CHAR(l); + } if (len >= XML_MAX_NAMELEN) { /* * Okay someone managed to make a huge token, so he's ready to pay @@ -2845,25 +3776,31 @@ */ xmlChar *buffer; int max = len * 2; - + buffer = (xmlChar *) xmlMallocAtomic(max * sizeof(xmlChar)); if (buffer == NULL) { xmlErrMemory(ctxt, NULL); return(NULL); } memcpy(buffer, buf, len); - while ((IS_LETTER(c)) || (IS_DIGIT(c)) || /* test bigtoken.xml */ - (c == '.') || (c == '-') || - (c == '_') || (c == ':') || - (IS_COMBINING(c)) || - (IS_EXTENDER(c))) { - if (count++ > 100) { + while (xmlIsNameChar(ctxt, c)) { + if (count++ > XML_PARSER_CHUNK_SIZE) { count = 0; GROW; + if (ctxt->instate == XML_PARSER_EOF) { + xmlFree(buffer); + return(NULL); + } } if (len + 10 > max) { xmlChar *tmp; + if ((max > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NmToken"); + xmlFree(buffer); + return(NULL); + } max *= 2; tmp = (xmlChar *) xmlRealloc(buffer, max * sizeof(xmlChar)); @@ -2884,6 +3821,11 @@ } if (len == 0) return(NULL); + if ((len > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NmToken"); + return(NULL); + } return(xmlStrndup(buf, len)); } @@ -2930,6 +3872,10 @@ ctxt->instate = XML_PARSER_ENTITY_VALUE; input = ctxt->input; GROW; + if (ctxt->instate == XML_PARSER_EOF) { + xmlFree(buf); + return(NULL); + } NEXT; c = CUR_CHAR(l); /* @@ -2937,12 +3883,12 @@ * When a parameter entity reference appears in a literal entity * value, ... a single or double quote character in the replacement * text is always treated as a normal data character and will not - * terminate the literal. + * terminate the literal. * In practice it means we stop the loop only when back at parsing * the initial entity and the quote is found */ - while ((IS_CHAR(c)) && ((c != stop) || /* checked */ - (ctxt->input != input))) { + while (((IS_CHAR(c)) && ((c != stop) || /* checked */ + (ctxt->input != input))) && (ctxt->instate != XML_PARSER_EOF)) { if (len + 5 >= size) { xmlChar *tmp; @@ -2971,6 +3917,10 @@ } } buf[len] = 0; + if (ctxt->instate == XML_PARSER_EOF) { + xmlFree(buf); + return(NULL); + } /* * Raise problem w.r.t. '&' and '%' being used in non-entities @@ -3018,12 +3968,12 @@ */ ret = xmlStringDecodeEntities(ctxt, buf, XML_SUBSTITUTE_PEREF, 0, 0, 0); - if (orig != NULL) + if (orig != NULL) *orig = buf; else xmlFree(buf); } - + return(ret); } @@ -3043,8 +3993,9 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) { xmlChar limit = 0; xmlChar *buf = NULL; - int len = 0; - int buf_size = 0; + xmlChar *rep = NULL; + size_t len = 0; + size_t buf_size = 0; int c, l, in_space = 0; xmlChar *current = NULL; xmlEntityPtr ent; @@ -3061,20 +4012,31 @@ xmlFatalErr(ctxt, XML_ERR_ATTRIBUTE_NOT_STARTED, NULL); return(NULL); } - + /* * allocate a translation buffer. */ buf_size = XML_PARSER_BUFFER_SIZE; - buf = (xmlChar *) xmlMallocAtomic(buf_size * sizeof(xmlChar)); + buf = (xmlChar *) xmlMallocAtomic(buf_size); if (buf == NULL) goto mem_error; /* * OK loop until we reach one of the ending char or a size limit. */ c = CUR_CHAR(l); - while ((NXT(0) != limit) && /* checked */ - (c != '<')) { + while (((NXT(0) != limit) && /* checked */ + (IS_CHAR(c)) && (c != '<')) && + (ctxt->instate != XML_PARSER_EOF)) { + /* + * Impose a reasonable limit on attribute size, unless XML_PARSE_HUGE + * special option is given + */ + if ((len > XML_MAX_TEXT_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, + "AttValue length too long\n"); + goto mem_error; + } if (c == 0) break; if (c == '&') { in_space = 0; @@ -3083,8 +4045,8 @@ if (val == '&') { if (ctxt->replaceEntities) { - if (len > buf_size - 10) { - growBuffer(buf); + if (len + 10 > buf_size) { + growBuffer(buf, 10); } buf[len++] = '&'; } else { @@ -3092,8 +4054,8 @@ * The reparsing will be done in xmlStringGetNodeList() * called by the attribute() function in SAX.c */ - if (len > buf_size - 10) { - growBuffer(buf); + if (len + 10 > buf_size) { + growBuffer(buf, 10); } buf[len++] = '&'; buf[len++] = '#'; @@ -3101,18 +4063,21 @@ buf[len++] = '8'; buf[len++] = ';'; } - } else { - if (len > buf_size - 10) { - growBuffer(buf); + } else if (val != 0) { + if (len + 10 > buf_size) { + growBuffer(buf, 10); } len += xmlCopyChar(0, &buf[len], val); } } else { ent = xmlParseEntityRef(ctxt); + ctxt->nbentities++; + if (ent != NULL) + ctxt->nbentities += ent->owner; if ((ent != NULL) && (ent->etype == XML_INTERNAL_PREDEFINED_ENTITY)) { - if (len > buf_size - 10) { - growBuffer(buf); + if (len + 10 > buf_size) { + growBuffer(buf, 10); } if ((ctxt->replaceEntities == 0) && (ent->content[0] == '&')) { @@ -3124,10 +4089,8 @@ } else { buf[len++] = ent->content[0]; } - } else if ((ent != NULL) && + } else if ((ent != NULL) && (ctxt->replaceEntities != 0)) { - xmlChar *rep; - if (ent->etype != XML_INTERNAL_PREDEFINED_ENTITY) { rep = xmlStringDecodeEntities(ctxt, ent->content, XML_SUBSTITUTE_REF, @@ -3135,16 +4098,22 @@ if (rep != NULL) { current = rep; while (*current != 0) { /* non input consuming */ - buf[len++] = *current++; - if (len > buf_size - 10) { - growBuffer(buf); + if ((*current == 0xD) || (*current == 0xA) || + (*current == 0x9)) { + buf[len++] = 0x20; + current++; + } else + buf[len++] = *current++; + if (len + 10 > buf_size) { + growBuffer(buf, 10); } } xmlFree(rep); + rep = NULL; } } else { - if (len > buf_size - 10) { - growBuffer(buf); + if (len + 10 > buf_size) { + growBuffer(buf, 10); } if (ent->content != NULL) buf[len++] = ent->content[0]; @@ -3158,20 +4127,27 @@ * entities problems */ if ((ent->etype != XML_INTERNAL_PREDEFINED_ENTITY) && - (ent->content != NULL)) { - xmlChar *rep; + (ent->content != NULL) && (ent->checked == 0)) { + unsigned long oldnbent = ctxt->nbentities; + rep = xmlStringDecodeEntities(ctxt, ent->content, - XML_SUBSTITUTE_REF, 0, 0, 0); - if (rep != NULL) + XML_SUBSTITUTE_REF, 0, 0, 0); + + ent->checked = (ctxt->nbentities - oldnbent + 1) * 2; + if (rep != NULL) { + if (xmlStrchr(rep, '<')) + ent->checked |= 1; xmlFree(rep); + rep = NULL; + } } /* * Just output the reference */ buf[len++] = '&'; - if (len > buf_size - i - 10) { - growBuffer(buf); + while (len + i + 10 > buf_size) { + growBuffer(buf, i + 10); } for (;i > 0;i--) buf[len++] = *cur++; @@ -3183,8 +4159,8 @@ if ((len != 0) || (!normalize)) { if ((!normalize) || (!in_space)) { COPY_BUF(l,buf,len,0x20); - if (len > buf_size - 10) { - growBuffer(buf); + while (len + 10 > buf_size) { + growBuffer(buf, 10); } } in_space = 1; @@ -3192,8 +4168,8 @@ } else { in_space = 0; COPY_BUF(l,buf,len,c); - if (len > buf_size - 10) { - growBuffer(buf); + if (len + 10 > buf_size) { + growBuffer(buf, 10); } } NEXTL(l); @@ -3201,22 +4177,46 @@ GROW; c = CUR_CHAR(l); } + if (ctxt->instate == XML_PARSER_EOF) + goto error; + if ((in_space) && (normalize)) { - while (buf[len - 1] == 0x20) len--; + while ((len > 0) && (buf[len - 1] == 0x20)) len--; } buf[len] = 0; if (RAW == '<') { xmlFatalErr(ctxt, XML_ERR_LT_IN_ATTRIBUTE, NULL); } else if (RAW != limit) { - xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, - "AttValue: ' expected\n"); + if ((c != 0) && (!IS_CHAR(c))) { + xmlFatalErrMsg(ctxt, XML_ERR_INVALID_CHAR, + "invalid character in attribute value\n"); + } else { + xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, + "AttValue: ' expected\n"); + } } else NEXT; - if (attlen != NULL) *attlen = len; + + /* + * There we potentially risk an overflow, don't allow attribute value of + * length more than INT_MAX it is a very reasonnable assumption ! + */ + if (len >= INT_MAX) { + xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, + "AttValue length too long\n"); + goto mem_error; + } + + if (attlen != NULL) *attlen = (int) len; return(buf); mem_error: xmlErrMemory(ctxt, NULL); +error: + if (buf != NULL) + xmlFree(buf); + if (rep != NULL) + xmlFree(rep); return(NULL); } @@ -3233,20 +4233,20 @@ * * 3.3.3 Attribute-Value Normalization: * Before the value of an attribute is passed to the application or - * checked for validity, the XML processor must normalize it as follows: + * checked for validity, the XML processor must normalize it as follows: * - a character reference is processed by appending the referenced * character to the attribute value * - an entity reference is processed by recursively processing the - * replacement text of the entity + * replacement text of the entity * - a whitespace character (#x20, #xD, #xA, #x9) is processed by * appending #x20 to the normalized value, except that only a single * #x20 is appended for a "#xD#xA" sequence that is part of an external - * parsed entity or the literal entity value of an internal parsed entity - * - other characters are processed by appending them to the normalized value + * parsed entity or the literal entity value of an internal parsed entity + * - other characters are processed by appending them to the normalized value * If the declared value is not CDATA, then the XML processor must further * process the normalized attribute value by discarding any leading and * trailing space (#x20) characters, and by replacing sequences of space - * (#x20) characters by a single space (#x20) character. + * (#x20) characters by a single space (#x20) character. * All attributes for which no declaration has been read should be treated * by a non-validating parser as if declared CDATA. * @@ -3263,7 +4263,7 @@ /** * xmlParseSystemLiteral: * @ctxt: an XML parser context - * + * * parse an XML Literal * * [11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'") @@ -3292,7 +4292,7 @@ xmlFatalErr(ctxt, XML_ERR_LITERAL_NOT_STARTED, NULL); return(NULL); } - + buf = (xmlChar *) xmlMallocAtomic(size * sizeof(xmlChar)); if (buf == NULL) { xmlErrMemory(ctxt, NULL); @@ -3304,6 +4304,13 @@ if (len + 5 >= size) { xmlChar *tmp; + if ((size > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "SystemLiteral"); + xmlFree(buf); + ctxt->instate = (xmlParserInputState) state; + return(NULL); + } size *= 2; tmp = (xmlChar *) xmlRealloc(buf, size * sizeof(xmlChar)); if (tmp == NULL) { @@ -3318,6 +4325,10 @@ if (count > 50) { GROW; count = 0; + if (ctxt->instate == XML_PARSER_EOF) { + xmlFree(buf); + return(NULL); + } } COPY_BUF(l,buf,len,cur); NEXTL(l); @@ -3381,6 +4392,12 @@ if (len + 1 >= size) { xmlChar *tmp; + if ((size > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "Public ID"); + xmlFree(buf); + return(NULL); + } size *= 2; tmp = (xmlChar *) xmlRealloc(buf, size * sizeof(xmlChar)); if (tmp == NULL) { @@ -3395,6 +4412,10 @@ if (count > 50) { GROW; count = 0; + if (ctxt->instate == XML_PARSER_EOF) { + xmlFree(buf); + return(NULL); + } } NEXT; cur = CUR; @@ -3414,7 +4435,7 @@ return(buf); } -void xmlParseCharDataComplex(xmlParserCtxtPtr ctxt, int cdata); +static void xmlParseCharDataComplex(xmlParserCtxtPtr ctxt, int cdata); /* * used for the test in the inner loop of the char data testing @@ -3465,7 +4486,7 @@ * The right angle bracket (>) may be represented using the string ">", * and must, for compatibility, be escaped using ">" or a character * reference when it appears in the string "]]>" in content, when that - * string is not marking the end of a CDATA section. + * string is not marking the end of a CDATA section. * * [14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*) */ @@ -3488,7 +4509,7 @@ in = ctxt->input->cur; do { get_more_space: - while (*in == 0x20) in++; + while (*in == 0x20) { in++; ctxt->input->col++; } if (*in == 0xA) { do { ctxt->input->line++; ctxt->input->col = 1; @@ -3578,6 +4599,9 @@ line = ctxt->input->line; col = ctxt->input->col; } + /* something really bad happened in the SAX callback */ + if (ctxt->instate != XML_PARSER_CONTENT) + return; } ctxt->input->cur = in; if (*in == 0xD) { @@ -3598,6 +4622,8 @@ } SHRINK; GROW; + if (ctxt->instate == XML_PARSER_EOF) + return; in = ctxt->input->cur; } while (((*in >= 0x20) && (*in <= 0x7F)) || (*in == 0x09)); nbchar = 0; @@ -3616,7 +4642,7 @@ * of xmlParseCharData() when the parsing requires handling * of non-ASCII characters. */ -void +static void xmlParseCharDataComplex(xmlParserCtxtPtr ctxt, int cdata) { xmlChar buf[XML_PARSER_BIG_BUFFER_SIZE + 5]; int nbchar = 0; @@ -3627,7 +4653,7 @@ GROW; cur = CUR_CHAR(l); while ((cur != '<') && /* checked */ - (cur != '&') && + (cur != '&') && (IS_CHAR(cur))) /* test also done in xmlCurrentChar() */ { if ((cur == ']') && (NXT(1) == ']') && (NXT(2) == '>')) { @@ -3658,11 +4684,16 @@ } } nbchar = 0; + /* something really bad happened in the SAX callback */ + if (ctxt->instate != XML_PARSER_CONTENT) + return; } count++; if (count > 50) { GROW; count = 0; + if (ctxt->instate == XML_PARSER_EOF) + return; } NEXTL(l); cur = CUR_CHAR(l); @@ -3755,7 +4786,7 @@ } } else { /* - * We handle [83] so we return immediately, if + * We handle [83] so we return immediately, if * "S SystemLiteral" is not detected. From a purely parsing * point of view that's a nice mess. */ @@ -3764,7 +4795,7 @@ ptr = CUR_PTR; if (!IS_BLANK_CH(*ptr)) return(NULL); - + while (IS_BLANK_CH(*ptr)) ptr++; /* TODO: dangerous, fix ! */ if ((*ptr != '\'') && (*ptr != '"')) return(NULL); } @@ -3792,12 +4823,15 @@ * [15] Comment ::= '' */ static void -xmlParseCommentComplex(xmlParserCtxtPtr ctxt, xmlChar *buf, int len, int size) { +xmlParseCommentComplex(xmlParserCtxtPtr ctxt, xmlChar *buf, + size_t len, size_t size) { int q, ql; int r, rl; int cur, l; - xmlParserInputPtr input = ctxt->input; - int count = 0; + size_t count = 0; + int inputid; + + inputid = ctxt->input->id; if (buf == NULL) { len = 0; @@ -3808,13 +4842,28 @@ return; } } + GROW; /* Assure there's enough input data */ q = CUR_CHAR(ql); if (q == 0) goto not_terminated; + if (!IS_CHAR(q)) { + xmlFatalErrMsgInt(ctxt, XML_ERR_INVALID_CHAR, + "xmlParseComment: invalid xmlChar value %d\n", + q); + xmlFree (buf); + return; + } NEXTL(ql); r = CUR_CHAR(rl); if (r == 0) goto not_terminated; + if (!IS_CHAR(r)) { + xmlFatalErrMsgInt(ctxt, XML_ERR_INVALID_CHAR, + "xmlParseComment: invalid xmlChar value %d\n", + q); + xmlFree (buf); + return; + } NEXTL(rl); cur = CUR_CHAR(l); if (cur == 0) @@ -3825,16 +4874,26 @@ if ((r == '-') && (q == '-')) { xmlFatalErr(ctxt, XML_ERR_HYPHEN_IN_COMMENT, NULL); } + if ((len > XML_MAX_TEXT_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErrMsgStr(ctxt, XML_ERR_COMMENT_NOT_FINISHED, + "Comment too big found", NULL); + xmlFree (buf); + return; + } if (len + 5 >= size) { xmlChar *new_buf; - size *= 2; - new_buf = (xmlChar *) xmlRealloc(buf, size * sizeof(xmlChar)); + size_t new_size; + + new_size = size * 2; + new_buf = (xmlChar *) xmlRealloc(buf, new_size); if (new_buf == NULL) { xmlFree (buf); xmlErrMemory(ctxt, NULL); return; } buf = new_buf; + size = new_size; } COPY_BUF(ql,buf,len,q); q = r; @@ -3846,6 +4905,10 @@ if (count > 50) { GROW; count = 0; + if (ctxt->instate == XML_PARSER_EOF) { + xmlFree(buf); + return; + } } NEXTL(l); cur = CUR_CHAR(l); @@ -3856,12 +4919,15 @@ } } buf[len] = 0; - if (!IS_CHAR(cur)) { + if (cur == 0) { xmlFatalErrMsgStr(ctxt, XML_ERR_COMMENT_NOT_FINISHED, "Comment not terminated \n next; */ @@ -9246,14 +9827,14 @@ } else { /* This is for attributes only. */ clone = clone->parent; - parentClone = clone->parent; + parentClone = clone->parent; /* * Process parent-element --> children. */ cur = cur->parent; - goto into_content; + goto into_content; } - } + } goto exit; internal_error: @@ -9274,7 +9855,7 @@ nsMap->pool = nsMap->first; nsMap->first = NULL; } - } else + } else xmlDOMWrapNsMapFree(nsMap); } /* @@ -9314,7 +9895,7 @@ if ((attr == NULL) || (destDoc == NULL)) return (-1); - + attr->doc = destDoc; if (attr->ns != NULL) { xmlNsPtr ns = NULL; @@ -9341,13 +9922,13 @@ ns = xmlDOMWrapNSNormDeclareNsForced(destDoc, destParent, attr->ns->href, attr->ns->prefix, 1); } - } + } if (ns == NULL) goto internal_error; attr->ns = ns; - } - - XML_TREE_ADOPT_STR(attr->name); + } + + XML_TREE_ADOPT_STR(attr->name); attr->atype = 0; attr->psvi = NULL; /* @@ -9356,13 +9937,15 @@ if (attr->children == NULL) return (0); cur = attr->children; + if ((cur != NULL) && (cur->type == XML_NAMESPACE_DECL)) + goto internal_error; while (cur != NULL) { cur->doc = destDoc; switch (cur->type) { case XML_TEXT_NODE: case XML_CDATA_SECTION_NODE: XML_TREE_ADOPT_STR_2(cur->content) - break; + break; case XML_ENTITY_REF_NODE: /* * Remove reference to the entitity-node. @@ -9380,7 +9963,7 @@ cur->content = ent->content; cur->children = (xmlNodePtr) ent; cur->last = (xmlNodePtr) ent; - } + } } break; default: @@ -9417,9 +10000,9 @@ * References of out-of scope ns-decls are remapped to point to @destDoc: * 1) If @destParent is given, then nsDef entries on element-nodes are used * 2) If *no* @destParent is given, then @destDoc->oldNs entries are used -* This is the case when you have an unliked node and just want to move it -* to the context of -* +* This is the case when you have an unlinked node and just want to move it +* to the context of +* * If @destParent is given, it ensures that the tree is namespace * wellformed by creating additional ns-decls where needed. * Note that, since prefixes of already existent ns-decls can be @@ -9436,16 +10019,17 @@ xmlDOMWrapAdoptNode(xmlDOMWrapCtxtPtr ctxt, xmlDocPtr sourceDoc, xmlNodePtr node, - xmlDocPtr destDoc, + xmlDocPtr destDoc, xmlNodePtr destParent, int options) { - if ((node == NULL) || (destDoc == NULL) || + if ((node == NULL) || (node->type == XML_NAMESPACE_DECL) || + (destDoc == NULL) || ((destParent != NULL) && (destParent->doc != destDoc))) return(-1); /* * Check node->doc sanity. - */ + */ if ((node->doc != NULL) && (sourceDoc != NULL) && (node->doc != sourceDoc)) { /* @@ -9458,7 +10042,7 @@ if (sourceDoc == destDoc) return (-1); switch (node->type) { - case XML_ELEMENT_NODE: + case XML_ELEMENT_NODE: case XML_ATTRIBUTE_NODE: case XML_TEXT_NODE: case XML_CDATA_SECTION_NODE: @@ -9484,7 +10068,7 @@ } else if (node->type == XML_ATTRIBUTE_NODE) { return (xmlDOMWrapAdoptAttr(ctxt, sourceDoc, (xmlAttrPtr) node, destDoc, destParent, options)); - } else { + } else { xmlNodePtr cur = node; int adoptStr = 1; @@ -9496,7 +10080,7 @@ (sourceDoc->dict == destDoc->dict)) adoptStr = 0; switch (node->type) { - case XML_TEXT_NODE: + case XML_TEXT_NODE: case XML_CDATA_SECTION_NODE: XML_TREE_ADOPT_STR_2(node->content) break; @@ -9529,7 +10113,7 @@ default: break; } - } + } return (0); } diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/tree.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/tree.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/tree.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/tree.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -13,6 +13,7 @@ #define __XML_TREE_H__ #include +#include #include #include @@ -71,15 +72,19 @@ */ typedef enum { - XML_BUFFER_ALLOC_DOUBLEIT, - XML_BUFFER_ALLOC_EXACT, - XML_BUFFER_ALLOC_IMMUTABLE + XML_BUFFER_ALLOC_DOUBLEIT, /* double each time one need to grow */ + XML_BUFFER_ALLOC_EXACT, /* grow only to the minimal size */ + XML_BUFFER_ALLOC_IMMUTABLE, /* immutable buffer */ + XML_BUFFER_ALLOC_IO, /* special allocation scheme used for I/O */ + XML_BUFFER_ALLOC_HYBRID, /* exact up to a threshold, and doubleit thereafter */ + XML_BUFFER_ALLOC_BOUNDED /* limit the upper size of the buffer */ } xmlBufferAllocationScheme; /** * xmlBuffer: * - * A buffer structure. + * A buffer structure, this old construct is limited to 2GB and + * is being deprecated, use API with xmlBuf instead */ typedef struct _xmlBuffer xmlBuffer; typedef xmlBuffer *xmlBufferPtr; @@ -88,9 +93,45 @@ unsigned int use; /* The buffer size used */ unsigned int size; /* The buffer size */ xmlBufferAllocationScheme alloc; /* The realloc method */ + xmlChar *contentIO; /* in IO mode we may have a different base */ }; /** + * xmlBuf: + * + * A buffer structure, new one, the actual structure internals are not public + */ + +typedef struct _xmlBuf xmlBuf; + +/** + * xmlBufPtr: + * + * A pointer to a buffer structure, the actual structure internals are not + * public + */ + +typedef xmlBuf *xmlBufPtr; + +/* + * A few public routines for xmlBuf. As those are expected to be used + * mostly internally the bulk of the routines are internal in buf.h + */ +XMLPUBFUN xmlChar* XMLCALL xmlBufContent (const xmlBuf* buf); +XMLPUBFUN xmlChar* XMLCALL xmlBufEnd (xmlBufPtr buf); +XMLPUBFUN size_t XMLCALL xmlBufUse (const xmlBufPtr buf); +XMLPUBFUN size_t XMLCALL xmlBufShrink (xmlBufPtr buf, size_t len); + +/* + * LIBXML2_NEW_BUFFER: + * + * Macro used to express that the API use the new buffers for + * xmlParserInputBuffer and xmlOutputBuffer. The change was + * introduced in 2.9.0. + */ +#define LIBXML2_NEW_BUFFER + +/** * XML_XML_NAMESPACE: * * This is the namespace for the special xml: prefix predefined in the @@ -477,11 +518,28 @@ /** * XML_GET_LINE: * - * Macro to extract the line number of an element node. + * Macro to extract the line number of an element node. */ #define XML_GET_LINE(n) \ (xmlGetLineNo(n)) +/** + * xmlDocProperty + * + * Set of properties of the document as found by the parser + * Some of them are linked to similary named xmlParserOption + */ +typedef enum { + XML_DOC_WELLFORMED = 1<<0, /* document is XML well formed */ + XML_DOC_NSVALID = 1<<1, /* document is Namespace valid */ + XML_DOC_OLD10 = 1<<2, /* parsed with old XML-1.0 parser */ + XML_DOC_DTDVALID = 1<<3, /* DTD validation was successful */ + XML_DOC_XINCLUDE = 1<<4, /* XInclude substitution was done */ + XML_DOC_USERBUILT = 1<<5, /* Document was built using the API + and not by parsing an instance */ + XML_DOC_INTERNAL = 1<<6, /* built for internal processing */ + XML_DOC_HTML = 1<<7 /* parsed or built HTML document */ +} xmlDocProperties; /** * xmlDoc: @@ -503,7 +561,12 @@ /* End of common part */ int compression;/* level of zlib compression */ - int standalone; /* standalone document (no external refs) */ + int standalone; /* standalone document (no external refs) + 1 if standalone="yes" + 0 if standalone="no" + -1 if there is no XML declaration + -2 if there is an XML declaration, but no + standalone attribute was specified */ struct _xmlDtd *intSubset; /* the document internal subset */ struct _xmlDtd *extSubset; /* the document external subset */ struct _xmlNs *oldNs; /* Global namespace, the old way */ @@ -516,6 +579,10 @@ actually an xmlCharEncoding */ struct _xmlDict *dict; /* dict used to allocate names or NULL */ void *psvi; /* for type/PSVI informations */ + int parseFlags; /* set of xmlParserOption used to parse the + document */ + int properties; /* set of xmlDocProperties for this document + set at the end of parsing */ }; @@ -525,9 +592,9 @@ /** * xmlDOMWrapAcquireNsFunction: * @ctxt: a DOM wrapper context - * @node: the context node (element or attribute) + * @node: the context node (element or attribute) * @nsName: the requested namespace name - * @nsPrefix: the requested namespace prefix + * @nsPrefix: the requested namespace prefix * * A function called to acquire namespaces (xmlNs) from the wrapper. * @@ -574,7 +641,7 @@ /** * xmlRootNode: * - * Macro for compatibility naming layer with libxml1. Maps + * Macro for compatibility naming layer with libxml1. Maps * to "children". */ #ifndef xmlRootNode @@ -588,436 +655,450 @@ /* * Some helper functions */ -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || \ + defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || \ + defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || \ + defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || \ + defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED) XMLPUBFUN int XMLCALL xmlValidateNCName (const xmlChar *value, int space); #endif #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateQName (const xmlChar *value, int space); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateName (const xmlChar *value, int space); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateNMToken (const xmlChar *value, int space); #endif -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlBuildQName (const xmlChar *ncname, const xmlChar *prefix, xmlChar *memory, int len); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlSplitQName2 (const xmlChar *name, xmlChar **prefix); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlSplitQName3 (const xmlChar *name, int *len); /* - * Handling Buffers. + * Handling Buffers, the old ones see @xmlBuf for the new ones. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme); -XMLPUBFUN xmlBufferAllocationScheme XMLCALL +XMLPUBFUN xmlBufferAllocationScheme XMLCALL xmlGetBufferAllocationScheme(void); -XMLPUBFUN xmlBufferPtr XMLCALL +XMLPUBFUN xmlBufferPtr XMLCALL xmlBufferCreate (void); -XMLPUBFUN xmlBufferPtr XMLCALL +XMLPUBFUN xmlBufferPtr XMLCALL xmlBufferCreateSize (size_t size); -XMLPUBFUN xmlBufferPtr XMLCALL +XMLPUBFUN xmlBufferPtr XMLCALL xmlBufferCreateStatic (void *mem, size_t size); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlBufferResize (xmlBufferPtr buf, unsigned int size); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlBufferFree (xmlBufferPtr buf); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlBufferDump (FILE *file, xmlBufferPtr buf); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlBufferAdd (xmlBufferPtr buf, const xmlChar *str, int len); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlBufferAddHead (xmlBufferPtr buf, const xmlChar *str, int len); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlBufferCat (xmlBufferPtr buf, const xmlChar *str); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlBufferCCat (xmlBufferPtr buf, const char *str); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlBufferShrink (xmlBufferPtr buf, unsigned int len); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlBufferGrow (xmlBufferPtr buf, unsigned int len); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlBufferEmpty (xmlBufferPtr buf); -XMLPUBFUN const xmlChar* XMLCALL - xmlBufferContent (const xmlBufferPtr buf); -XMLPUBFUN void XMLCALL +XMLPUBFUN const xmlChar* XMLCALL + xmlBufferContent (const xmlBuffer *buf); +XMLPUBFUN xmlChar* XMLCALL + xmlBufferDetach (xmlBufferPtr buf); +XMLPUBFUN void XMLCALL xmlBufferSetAllocationScheme(xmlBufferPtr buf, xmlBufferAllocationScheme scheme); -XMLPUBFUN int XMLCALL - xmlBufferLength (const xmlBufferPtr buf); +XMLPUBFUN int XMLCALL + xmlBufferLength (const xmlBuffer *buf); /* * Creating/freeing new structures. */ -XMLPUBFUN xmlDtdPtr XMLCALL +XMLPUBFUN xmlDtdPtr XMLCALL xmlCreateIntSubset (xmlDocPtr doc, const xmlChar *name, const xmlChar *ExternalID, const xmlChar *SystemID); -XMLPUBFUN xmlDtdPtr XMLCALL +XMLPUBFUN xmlDtdPtr XMLCALL xmlNewDtd (xmlDocPtr doc, const xmlChar *name, const xmlChar *ExternalID, const xmlChar *SystemID); -XMLPUBFUN xmlDtdPtr XMLCALL - xmlGetIntSubset (xmlDocPtr doc); -XMLPUBFUN void XMLCALL +XMLPUBFUN xmlDtdPtr XMLCALL + xmlGetIntSubset (const xmlDoc *doc); +XMLPUBFUN void XMLCALL xmlFreeDtd (xmlDtdPtr cur); #ifdef LIBXML_LEGACY_ENABLED -XMLPUBFUN xmlNsPtr XMLCALL +XMLPUBFUN xmlNsPtr XMLCALL xmlNewGlobalNs (xmlDocPtr doc, const xmlChar *href, const xmlChar *prefix); #endif /* LIBXML_LEGACY_ENABLED */ -XMLPUBFUN xmlNsPtr XMLCALL +XMLPUBFUN xmlNsPtr XMLCALL xmlNewNs (xmlNodePtr node, const xmlChar *href, const xmlChar *prefix); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeNs (xmlNsPtr cur); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeNsList (xmlNsPtr cur); -XMLPUBFUN xmlDocPtr XMLCALL +XMLPUBFUN xmlDocPtr XMLCALL xmlNewDoc (const xmlChar *version); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeDoc (xmlDocPtr cur); -XMLPUBFUN xmlAttrPtr XMLCALL +XMLPUBFUN xmlAttrPtr XMLCALL xmlNewDocProp (xmlDocPtr doc, const xmlChar *name, const xmlChar *value); #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlAttrPtr XMLCALL +XMLPUBFUN xmlAttrPtr XMLCALL xmlNewProp (xmlNodePtr node, const xmlChar *name, const xmlChar *value); #endif -XMLPUBFUN xmlAttrPtr XMLCALL +XMLPUBFUN xmlAttrPtr XMLCALL xmlNewNsProp (xmlNodePtr node, xmlNsPtr ns, const xmlChar *name, const xmlChar *value); -XMLPUBFUN xmlAttrPtr XMLCALL +XMLPUBFUN xmlAttrPtr XMLCALL xmlNewNsPropEatName (xmlNodePtr node, xmlNsPtr ns, xmlChar *name, const xmlChar *value); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreePropList (xmlAttrPtr cur); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeProp (xmlAttrPtr cur); -XMLPUBFUN xmlAttrPtr XMLCALL +XMLPUBFUN xmlAttrPtr XMLCALL xmlCopyProp (xmlNodePtr target, xmlAttrPtr cur); -XMLPUBFUN xmlAttrPtr XMLCALL +XMLPUBFUN xmlAttrPtr XMLCALL xmlCopyPropList (xmlNodePtr target, xmlAttrPtr cur); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlDtdPtr XMLCALL +XMLPUBFUN xmlDtdPtr XMLCALL xmlCopyDtd (xmlDtdPtr dtd); #endif /* LIBXML_TREE_ENABLED */ #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlDocPtr XMLCALL +XMLPUBFUN xmlDocPtr XMLCALL xmlCopyDoc (xmlDocPtr doc, int recursive); #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */ /* * Creating new nodes. */ -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocNode (xmlDocPtr doc, xmlNsPtr ns, const xmlChar *name, const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocNodeEatName (xmlDocPtr doc, xmlNsPtr ns, xmlChar *name, const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewNode (xmlNsPtr ns, const xmlChar *name); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewNodeEatName (xmlNsPtr ns, xmlChar *name); #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewChild (xmlNodePtr parent, xmlNsPtr ns, const xmlChar *name, const xmlChar *content); #endif -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocText (xmlDocPtr doc, +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewDocText (const xmlDoc *doc, const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewText (const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocPI (xmlDocPtr doc, const xmlChar *name, const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewPI (const xmlChar *name, const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocTextLen (xmlDocPtr doc, const xmlChar *content, int len); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewTextLen (const xmlChar *content, int len); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocComment (xmlDocPtr doc, const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewComment (const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewCDataBlock (xmlDocPtr doc, const xmlChar *content, int len); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewCharRef (xmlDocPtr doc, const xmlChar *name); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewReference (xmlDocPtr doc, +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewReference (const xmlDoc *doc, const xmlChar *name); -XMLPUBFUN xmlNodePtr XMLCALL - xmlCopyNode (const xmlNodePtr node, +XMLPUBFUN xmlNodePtr XMLCALL + xmlCopyNode (xmlNodePtr node, int recursive); -XMLPUBFUN xmlNodePtr XMLCALL - xmlDocCopyNode (const xmlNodePtr node, +XMLPUBFUN xmlNodePtr XMLCALL + xmlDocCopyNode (xmlNodePtr node, xmlDocPtr doc, int recursive); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlDocCopyNodeList (xmlDocPtr doc, - const xmlNodePtr node); -XMLPUBFUN xmlNodePtr XMLCALL - xmlCopyNodeList (const xmlNodePtr node); + xmlNodePtr node); +XMLPUBFUN xmlNodePtr XMLCALL + xmlCopyNodeList (xmlNodePtr node); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewTextChild (xmlNodePtr parent, xmlNsPtr ns, const xmlChar *name, const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocRawNode (xmlDocPtr doc, xmlNsPtr ns, const xmlChar *name, const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocFragment (xmlDocPtr doc); #endif /* LIBXML_TREE_ENABLED */ /* * Navigating. */ -XMLPUBFUN long XMLCALL - xmlGetLineNo (xmlNodePtr node); +XMLPUBFUN long XMLCALL + xmlGetLineNo (const xmlNode *node); #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) -XMLPUBFUN xmlChar * XMLCALL - xmlGetNodePath (xmlNodePtr node); +XMLPUBFUN xmlChar * XMLCALL + xmlGetNodePath (const xmlNode *node); #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) */ -XMLPUBFUN xmlNodePtr XMLCALL - xmlDocGetRootElement (xmlDocPtr doc); -XMLPUBFUN xmlNodePtr XMLCALL - xmlGetLastChild (xmlNodePtr parent); -XMLPUBFUN int XMLCALL - xmlNodeIsText (xmlNodePtr node); -XMLPUBFUN int XMLCALL - xmlIsBlankNode (xmlNodePtr node); +XMLPUBFUN xmlNodePtr XMLCALL + xmlDocGetRootElement (const xmlDoc *doc); +XMLPUBFUN xmlNodePtr XMLCALL + xmlGetLastChild (const xmlNode *parent); +XMLPUBFUN int XMLCALL + xmlNodeIsText (const xmlNode *node); +XMLPUBFUN int XMLCALL + xmlIsBlankNode (const xmlNode *node); /* * Changing the structure. */ #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlDocSetRootElement (xmlDocPtr doc, xmlNodePtr root); #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */ #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeSetName (xmlNodePtr cur, const xmlChar *name); #endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlAddChild (xmlNodePtr parent, xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlAddChildList (xmlNodePtr parent, xmlNodePtr cur); #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlReplaceNode (xmlNodePtr old, xmlNodePtr cur); #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */ #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ - defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlNodePtr XMLCALL + defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) +XMLPUBFUN xmlNodePtr XMLCALL xmlAddPrevSibling (xmlNodePtr cur, xmlNodePtr elem); #endif /* LIBXML_TREE_ENABLED || LIBXML_HTML_ENABLED || LIBXML_SCHEMAS_ENABLED */ -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlAddSibling (xmlNodePtr cur, xmlNodePtr elem); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlAddNextSibling (xmlNodePtr cur, xmlNodePtr elem); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlUnlinkNode (xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlTextMerge (xmlNodePtr first, xmlNodePtr second); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextConcat (xmlNodePtr node, const xmlChar *content, int len); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeNodeList (xmlNodePtr cur); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeNode (xmlNodePtr cur); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSetTreeDoc (xmlNodePtr tree, xmlDocPtr doc); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSetListDoc (xmlNodePtr list, xmlDocPtr doc); /* * Namespaces. */ -XMLPUBFUN xmlNsPtr XMLCALL +XMLPUBFUN xmlNsPtr XMLCALL xmlSearchNs (xmlDocPtr doc, xmlNodePtr node, const xmlChar *nameSpace); -XMLPUBFUN xmlNsPtr XMLCALL +XMLPUBFUN xmlNsPtr XMLCALL xmlSearchNsByHref (xmlDocPtr doc, xmlNodePtr node, const xmlChar *href); -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlNsPtr * XMLCALL - xmlGetNsList (xmlDocPtr doc, - xmlNodePtr node); +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || \ + defined(LIBXML_SCHEMAS_ENABLED) +XMLPUBFUN xmlNsPtr * XMLCALL + xmlGetNsList (const xmlDoc *doc, + const xmlNode *node); #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSetNs (xmlNodePtr node, xmlNsPtr ns); -XMLPUBFUN xmlNsPtr XMLCALL +XMLPUBFUN xmlNsPtr XMLCALL xmlCopyNamespace (xmlNsPtr cur); -XMLPUBFUN xmlNsPtr XMLCALL +XMLPUBFUN xmlNsPtr XMLCALL xmlCopyNamespaceList (xmlNsPtr cur); /* * Changing the content. */ -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) -XMLPUBFUN xmlAttrPtr XMLCALL +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || \ + defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) +XMLPUBFUN xmlAttrPtr XMLCALL xmlSetProp (xmlNodePtr node, const xmlChar *name, const xmlChar *value); -XMLPUBFUN xmlAttrPtr XMLCALL +XMLPUBFUN xmlAttrPtr XMLCALL xmlSetNsProp (xmlNodePtr node, xmlNsPtr ns, const xmlChar *name, const xmlChar *value); -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */ -XMLPUBFUN xmlChar * XMLCALL - xmlGetNoNsProp (xmlNodePtr node, +#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || \ + defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */ +XMLPUBFUN xmlChar * XMLCALL + xmlGetNoNsProp (const xmlNode *node, const xmlChar *name); -XMLPUBFUN xmlChar * XMLCALL - xmlGetProp (xmlNodePtr node, +XMLPUBFUN xmlChar * XMLCALL + xmlGetProp (const xmlNode *node, const xmlChar *name); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlHasProp (xmlNodePtr node, +XMLPUBFUN xmlAttrPtr XMLCALL + xmlHasProp (const xmlNode *node, const xmlChar *name); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlHasNsProp (xmlNodePtr node, +XMLPUBFUN xmlAttrPtr XMLCALL + xmlHasNsProp (const xmlNode *node, const xmlChar *name, const xmlChar *nameSpace); -XMLPUBFUN xmlChar * XMLCALL - xmlGetNsProp (xmlNodePtr node, +XMLPUBFUN xmlChar * XMLCALL + xmlGetNsProp (const xmlNode *node, const xmlChar *name, const xmlChar *nameSpace); -XMLPUBFUN xmlNodePtr XMLCALL - xmlStringGetNodeList (xmlDocPtr doc, +XMLPUBFUN xmlNodePtr XMLCALL + xmlStringGetNodeList (const xmlDoc *doc, const xmlChar *value); -XMLPUBFUN xmlNodePtr XMLCALL - xmlStringLenGetNodeList (xmlDocPtr doc, +XMLPUBFUN xmlNodePtr XMLCALL + xmlStringLenGetNodeList (const xmlDoc *doc, const xmlChar *value, int len); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlNodeListGetString (xmlDocPtr doc, - xmlNodePtr list, + const xmlNode *list, int inLine); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlChar * XMLCALL - xmlNodeListGetRawString (xmlDocPtr doc, - xmlNodePtr list, +XMLPUBFUN xmlChar * XMLCALL + xmlNodeListGetRawString (const xmlDoc *doc, + const xmlNode *list, int inLine); #endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeSetContent (xmlNodePtr cur, const xmlChar *content); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeSetContentLen (xmlNodePtr cur, const xmlChar *content, int len); #endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeAddContent (xmlNodePtr cur, const xmlChar *content); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeAddContentLen (xmlNodePtr cur, const xmlChar *content, int len); -XMLPUBFUN xmlChar * XMLCALL - xmlNodeGetContent (xmlNodePtr cur); +XMLPUBFUN xmlChar * XMLCALL + xmlNodeGetContent (const xmlNode *cur); + XMLPUBFUN int XMLCALL xmlNodeBufGetContent (xmlBufferPtr buffer, - xmlNodePtr cur); -XMLPUBFUN xmlChar * XMLCALL - xmlNodeGetLang (xmlNodePtr cur); -XMLPUBFUN int XMLCALL - xmlNodeGetSpacePreserve (xmlNodePtr cur); + const xmlNode *cur); +XMLPUBFUN int XMLCALL + xmlBufGetNodeContent (xmlBufPtr buf, + const xmlNode *cur); + +XMLPUBFUN xmlChar * XMLCALL + xmlNodeGetLang (const xmlNode *cur); +XMLPUBFUN int XMLCALL + xmlNodeGetSpacePreserve (const xmlNode *cur); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeSetLang (xmlNodePtr cur, const xmlChar *lang); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeSetSpacePreserve (xmlNodePtr cur, int val); #endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN xmlChar * XMLCALL - xmlNodeGetBase (xmlDocPtr doc, - xmlNodePtr cur); +XMLPUBFUN xmlChar * XMLCALL + xmlNodeGetBase (const xmlDoc *doc, + const xmlNode *cur); #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeSetBase (xmlNodePtr cur, const xmlChar *uri); #endif @@ -1025,14 +1106,14 @@ /* * Removing content. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRemoveProp (xmlAttrPtr cur); #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlUnsetNsProp (xmlNodePtr node, xmlNsPtr ns, const xmlChar *name); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlUnsetProp (xmlNodePtr node, const xmlChar *name); #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */ @@ -1040,13 +1121,13 @@ /* * Internal, don't use. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlBufferWriteCHAR (xmlBufferPtr buf, const xmlChar *string); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlBufferWriteChar (xmlBufferPtr buf, const char *string); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlBufferWriteQuotedString(xmlBufferPtr buf, const xmlChar *string); @@ -1061,7 +1142,7 @@ /* * Namespace handling. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlReconciliateNs (xmlDocPtr doc, xmlNodePtr tree); #endif @@ -1070,61 +1151,67 @@ /* * Saving. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDocDumpFormatMemory (xmlDocPtr cur, xmlChar **mem, int *size, int format); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDocDumpMemory (xmlDocPtr cur, xmlChar **mem, int *size); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDocDumpMemoryEnc (xmlDocPtr out_doc, xmlChar **doc_txt_ptr, int * doc_txt_len, const char *txt_encoding); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc, xmlChar **doc_txt_ptr, int * doc_txt_len, const char *txt_encoding, int format); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlDocFormatDump (FILE *f, xmlDocPtr cur, int format); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlDocDump (FILE *f, xmlDocPtr cur); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlElemDump (FILE *f, xmlDocPtr doc, xmlNodePtr cur); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSaveFile (const char *filename, xmlDocPtr cur); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSaveFormatFile (const char *filename, xmlDocPtr cur, int format); -XMLPUBFUN int XMLCALL +XMLPUBFUN size_t XMLCALL + xmlBufNodeDump (xmlBufPtr buf, + xmlDocPtr doc, + xmlNodePtr cur, + int level, + int format); +XMLPUBFUN int XMLCALL xmlNodeDump (xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level, int format); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSaveFileTo (xmlOutputBufferPtr buf, xmlDocPtr cur, const char *encoding); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSaveFormatFileTo (xmlOutputBufferPtr buf, xmlDocPtr cur, const char *encoding, int format); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeDumpOutput (xmlOutputBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, @@ -1132,13 +1219,13 @@ int format, const char *encoding); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSaveFormatFileEnc (const char *filename, xmlDocPtr cur, const char *encoding, int format); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSaveFileEnc (const char *filename, xmlDocPtr cur, const char *encoding); @@ -1147,21 +1234,21 @@ /* * XHTML */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlIsXHTML (const xmlChar *systemID, const xmlChar *publicID); /* * Compression. */ -XMLPUBFUN int XMLCALL - xmlGetDocCompressMode (xmlDocPtr doc); -XMLPUBFUN void XMLCALL +XMLPUBFUN int XMLCALL + xmlGetDocCompressMode (const xmlDoc *doc); +XMLPUBFUN void XMLCALL xmlSetDocCompressMode (xmlDocPtr doc, int mode); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlGetCompressMode (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSetCompressMode (int mode); /* @@ -1179,7 +1266,7 @@ xmlDOMWrapAdoptNode (xmlDOMWrapCtxtPtr ctxt, xmlDocPtr sourceDoc, xmlNodePtr node, - xmlDocPtr destDoc, + xmlDocPtr destDoc, xmlNodePtr destParent, int options); XMLPUBFUN int XMLCALL @@ -1197,6 +1284,22 @@ int deep, int options); +#ifdef LIBXML_TREE_ENABLED +/* + * 5 interfaces from DOM ElementTraversal, but different in entities + * traversal. + */ +XMLPUBFUN unsigned long XMLCALL + xmlChildElementCount (xmlNodePtr parent); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNextElementSibling (xmlNodePtr node); +XMLPUBFUN xmlNodePtr XMLCALL + xmlFirstElementChild (xmlNodePtr parent); +XMLPUBFUN xmlNodePtr XMLCALL + xmlLastElementChild (xmlNodePtr parent); +XMLPUBFUN xmlNodePtr XMLCALL + xmlPreviousElementSibling (xmlNodePtr node); +#endif #ifdef __cplusplus } #endif diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/trionan.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/trionan.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/trionan.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/trionan.c 2015-12-23 07:08:27.000000000 +0000 @@ -0,0 +1,71 @@ +/* Replacement 'trionan.c', using Gnulib functions. */ + +#include "config.h" +#include + +/* Copied from gnulib/tests/infinity.h. */ + +/* Infinityd () returns a 'double' +Infinity. */ + +/* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0. */ +#if defined _MSC_VER +static double +Infinityd () +{ + static double zero = 0.0; + return 1.0 / zero; +} +#else +# define Infinityd() (1.0 / 0.0) +#endif + +/* Copied from gnulib/tests/nan.h. */ + +/* NaNd () returns a 'double' not-a-number. */ + +/* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler choke + on the expression 0.0 / 0.0. */ +#if defined __DECC || defined _MSC_VER +static double +NaNd () +{ + static double zero = 0.0; + return zero / zero; +} +#else +# define NaNd() (0.0 / 0.0) +#endif + +/* Copied from gnulib/tests/minus-zero.h. */ + +/* minus_zerod represents the value -0.0. */ + +/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. + ICC 10.0 has a bug when optimizing the expression -zero. + The expression -DBL_MIN * DBL_MIN does not work when cross-compiling + to PowerPC on Mac OS X 10.5. */ +#if defined __hpux || defined __sgi || defined __ICC +static double +compute_minus_zerod (void) +{ + return -DBL_MIN * DBL_MIN; +} +# define minus_zerod compute_minus_zerod () +#else +static double minus_zerod = -0.0; +#endif + +#undef INFINITY +#undef NAN + +#define INFINITY Infinityd() +#define NAN NaNd() + +#define trio_pinf() INFINITY +#define trio_ninf() -INFINITY +#define trio_nan() NAN +#define trio_nzero() minus_zerod + +#define trio_isnan(x) isnan(x) +#define trio_isinf(x) isinf(x) +#define trio_signbit(x) signbit(x) diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/uri.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/uri.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/uri.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/uri.c 2015-12-23 07:08:27.000000000 +0000 @@ -1,7 +1,7 @@ /** - * uri.c: set of generic URI related routines + * uri.c: set of generic URI related routines * - * Reference: RFCs 2396, 2732 and 2373 + * Reference: RFCs 3986, 2732 and 2373 * * See Copyright for the status of this software. * @@ -18,14 +18,41 @@ #include #include -/************************************************************************ - * * - * Macros to differentiate various character type * - * directly extracted from RFC 2396 * - * * - ************************************************************************/ +/** + * MAX_URI_LENGTH: + * + * The definition of the URI regexp in the above RFC has no size limit + * In practice they are usually relativey short except for the + * data URI scheme as defined in RFC 2397. Even for data URI the usual + * maximum size before hitting random practical limits is around 64 KB + * and 4KB is usually a maximum admitted limit for proper operations. + * The value below is more a security limit than anything else and + * really should never be hit by 'normal' operations + * Set to 1 MByte in 2012, this is only enforced on output + */ +#define MAX_URI_LENGTH 1024 * 1024 + +static void +xmlURIErrMemory(const char *extra) +{ + if (extra) + __xmlRaiseError(NULL, NULL, NULL, + NULL, NULL, XML_FROM_URI, + XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0, + extra, NULL, NULL, 0, 0, + "Memory allocation failed : %s\n", extra); + else + __xmlRaiseError(NULL, NULL, NULL, + NULL, NULL, XML_FROM_URI, + XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0, + NULL, NULL, NULL, 0, 0, + "Memory allocation failed\n"); +} + +static void xmlCleanURI(xmlURIPtr uri); /* + * Old rule from 2396 used in legacy handling code * alpha = lowalpha | upalpha */ #define IS_ALPHA(x) (IS_LOWALPHA(x) || IS_UPALPHA(x)) @@ -61,31 +88,30 @@ #define IS_ALPHANUM(x) (IS_ALPHA(x) || IS_DIGIT(x)) /* - * hex = digit | "A" | "B" | "C" | "D" | "E" | "F" | - * "a" | "b" | "c" | "d" | "e" | "f" - */ - -#define IS_HEX(x) ((IS_DIGIT(x)) || (((x) >= 'a') && ((x) <= 'f')) || \ - (((x) >= 'A') && ((x) <= 'F'))) - -/* * mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")" */ -#define IS_MARK(x) (((x) == '-') || ((x) == '_') || ((x) == '.') || \ - ((x) == '!') || ((x) == '~') || ((x) == '*') || ((x) == '\'') || \ +#define IS_MARK(x) (((x) == '-') || ((x) == '_') || ((x) == '.') || \ + ((x) == '!') || ((x) == '~') || ((x) == '*') || ((x) == '\'') || \ ((x) == '(') || ((x) == ')')) +/* + * unwise = "{" | "}" | "|" | "\" | "^" | "`" + */ +#define IS_UNWISE(p) \ + (((*(p) == '{')) || ((*(p) == '}')) || ((*(p) == '|')) || \ + ((*(p) == '\\')) || ((*(p) == '^')) || ((*(p) == '[')) || \ + ((*(p) == ']')) || ((*(p) == '`'))) /* * reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," | - * "[" | "]" + * "[" | "]" */ -#define IS_RESERVED(x) (((x) == ';') || ((x) == '/') || ((x) == '?') || \ - ((x) == ':') || ((x) == '@') || ((x) == '&') || ((x) == '=') || \ - ((x) == '+') || ((x) == '$') || ((x) == ',') || ((x) == '[') || \ - ((x) == ']')) +#define IS_RESERVED(x) (((x) == ';') || ((x) == '/') || ((x) == '?') || \ + ((x) == ':') || ((x) == '@') || ((x) == '&') || ((x) == '=') || \ + ((x) == '+') || ((x) == '$') || ((x) == ',') || ((x) == '[') || \ + ((x) == ']')) /* * unreserved = alphanum | mark @@ -94,1741 +120,1740 @@ #define IS_UNRESERVED(x) (IS_ALPHANUM(x) || IS_MARK(x)) /* - * escaped = "%" hex hex + * Skip to next pointer char, handle escaped sequences */ -#define IS_ESCAPED(p) ((*(p) == '%') && (IS_HEX((p)[1])) && \ - (IS_HEX((p)[2]))) +#define NEXT(p) ((*p == '%')? p += 3 : p++) /* - * uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" | - * "&" | "=" | "+" | "$" | "," + * Productions from the spec. + * + * authority = server | reg_name + * reg_name = 1*( unreserved | escaped | "$" | "," | + * ";" | ":" | "@" | "&" | "=" | "+" ) + * + * path = [ abs_path | opaque_part ] */ -#define IS_URIC_NO_SLASH(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) ||\ - ((*(p) == ';')) || ((*(p) == '?')) || ((*(p) == ':')) ||\ - ((*(p) == '@')) || ((*(p) == '&')) || ((*(p) == '=')) ||\ - ((*(p) == '+')) || ((*(p) == '$')) || ((*(p) == ','))) + +#define STRNDUP(s, n) (char *) xmlStrndup((const xmlChar *)(s), (n)) + +/************************************************************************ + * * + * RFC 3986 parser * + * * + ************************************************************************/ + +#define ISA_DIGIT(p) ((*(p) >= '0') && (*(p) <= '9')) +#define ISA_ALPHA(p) (((*(p) >= 'a') && (*(p) <= 'z')) || \ + ((*(p) >= 'A') && (*(p) <= 'Z'))) +#define ISA_HEXDIG(p) \ + (ISA_DIGIT(p) || ((*(p) >= 'a') && (*(p) <= 'f')) || \ + ((*(p) >= 'A') && (*(p) <= 'F'))) /* - * pchar = unreserved | escaped | ":" | "@" | "&" | "=" | "+" | "$" | "," + * sub-delims = "!" / "$" / "&" / "'" / "(" / ")" + * / "*" / "+" / "," / ";" / "=" */ -#define IS_PCHAR(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) || \ - ((*(p) == ':')) || ((*(p) == '@')) || ((*(p) == '&')) ||\ - ((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) ||\ - ((*(p) == ','))) +#define ISA_SUB_DELIM(p) \ + (((*(p) == '!')) || ((*(p) == '$')) || ((*(p) == '&')) || \ + ((*(p) == '(')) || ((*(p) == ')')) || ((*(p) == '*')) || \ + ((*(p) == '+')) || ((*(p) == ',')) || ((*(p) == ';')) || \ + ((*(p) == '=')) || ((*(p) == '\''))) /* - * rel_segment = 1*( unreserved | escaped | - * ";" | "@" | "&" | "=" | "+" | "$" | "," ) + * gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@" */ - -#define IS_SEGMENT(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) || \ - ((*(p) == ';')) || ((*(p) == '@')) || ((*(p) == '&')) || \ - ((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) || \ - ((*(p) == ','))) +#define ISA_GEN_DELIM(p) \ + (((*(p) == ':')) || ((*(p) == '/')) || ((*(p) == '?')) || \ + ((*(p) == '#')) || ((*(p) == '[')) || ((*(p) == ']')) || \ + ((*(p) == '@'))) /* - * scheme = alpha *( alpha | digit | "+" | "-" | "." ) + * reserved = gen-delims / sub-delims */ - -#define IS_SCHEME(x) ((IS_ALPHA(x)) || (IS_DIGIT(x)) || \ - ((x) == '+') || ((x) == '-') || ((x) == '.')) +#define ISA_RESERVED(p) (ISA_GEN_DELIM(p) || (ISA_SUB_DELIM(p))) /* - * reg_name = 1*( unreserved | escaped | "$" | "," | - * ";" | ":" | "@" | "&" | "=" | "+" ) + * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" */ - -#define IS_REG_NAME(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) || \ - ((*(p) == '$')) || ((*(p) == ',')) || ((*(p) == ';')) || \ - ((*(p) == ':')) || ((*(p) == '@')) || ((*(p) == '&')) || \ - ((*(p) == '=')) || ((*(p) == '+'))) +#define ISA_UNRESERVED(p) \ + ((ISA_ALPHA(p)) || (ISA_DIGIT(p)) || ((*(p) == '-')) || \ + ((*(p) == '.')) || ((*(p) == '_')) || ((*(p) == '~'))) /* - * userinfo = *( unreserved | escaped | ";" | ":" | "&" | "=" | - * "+" | "$" | "," ) + * pct-encoded = "%" HEXDIG HEXDIG */ -#define IS_USERINFO(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) || \ - ((*(p) == ';')) || ((*(p) == ':')) || ((*(p) == '&')) || \ - ((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) || \ - ((*(p) == ','))) +#define ISA_PCT_ENCODED(p) \ + ((*(p) == '%') && (ISA_HEXDIG(p + 1)) && (ISA_HEXDIG(p + 2))) /* - * uric = reserved | unreserved | escaped + * pchar = unreserved / pct-encoded / sub-delims / ":" / "@" */ +#define ISA_PCHAR(p) \ + (ISA_UNRESERVED(p) || ISA_PCT_ENCODED(p) || ISA_SUB_DELIM(p) || \ + ((*(p) == ':')) || ((*(p) == '@'))) -#define IS_URIC(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) || \ - (IS_RESERVED(*(p)))) +/** + * xmlParse3986Scheme: + * @uri: pointer to an URI structure + * @str: pointer to the string to analyze + * + * Parse an URI scheme + * + * ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) + * + * Returns 0 or the error code + */ +static int +xmlParse3986Scheme(xmlURIPtr uri, const char **str) { + const char *cur; -/* -* unwise = "{" | "}" | "|" | "\" | "^" | "`" -*/ + if (str == NULL) + return(-1); -#define IS_UNWISE(p) \ - (((*(p) == '{')) || ((*(p) == '}')) || ((*(p) == '|')) || \ - ((*(p) == '\\')) || ((*(p) == '^')) || ((*(p) == '[')) || \ - ((*(p) == ']')) || ((*(p) == '`'))) + cur = *str; + if (!ISA_ALPHA(cur)) + return(2); + cur++; + while (ISA_ALPHA(cur) || ISA_DIGIT(cur) || + (*cur == '+') || (*cur == '-') || (*cur == '.')) cur++; + if (uri != NULL) { + if (uri->scheme != NULL) xmlFree(uri->scheme); + uri->scheme = STRNDUP(*str, cur - *str); + } + *str = cur; + return(0); +} -/* - * Skip to next pointer char, handle escaped sequences +/** + * xmlParse3986Fragment: + * @uri: pointer to an URI structure + * @str: pointer to the string to analyze + * + * Parse the query part of an URI + * + * fragment = *( pchar / "/" / "?" ) + * NOTE: the strict syntax as defined by 3986 does not allow '[' and ']' + * in the fragment identifier but this is used very broadly for + * xpointer scheme selection, so we are allowing it here to not break + * for example all the DocBook processing chains. + * + * Returns 0 or the error code */ +static int +xmlParse3986Fragment(xmlURIPtr uri, const char **str) +{ + const char *cur; -#define NEXT(p) ((*p == '%')? p += 3 : p++) + if (str == NULL) + return (-1); -/* - * Productions from the spec. + cur = *str; + + while ((ISA_PCHAR(cur)) || (*cur == '/') || (*cur == '?') || + (*cur == '[') || (*cur == ']') || + ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) + NEXT(cur); + if (uri != NULL) { + if (uri->fragment != NULL) + xmlFree(uri->fragment); + if (uri->cleanup & 2) + uri->fragment = STRNDUP(*str, cur - *str); + else + uri->fragment = xmlURIUnescapeString(*str, cur - *str, NULL); + } + *str = cur; + return (0); +} + +/** + * xmlParse3986Query: + * @uri: pointer to an URI structure + * @str: pointer to the string to analyze * - * authority = server | reg_name - * reg_name = 1*( unreserved | escaped | "$" | "," | - * ";" | ":" | "@" | "&" | "=" | "+" ) + * Parse the query part of an URI * - * path = [ abs_path | opaque_part ] + * query = *uric + * + * Returns 0 or the error code */ +static int +xmlParse3986Query(xmlURIPtr uri, const char **str) +{ + const char *cur; -#define STRNDUP(s, n) (char *) xmlStrndup((const xmlChar *)(s), (n)) + if (str == NULL) + return (-1); -/************************************************************************ - * * - * Generic URI structure functions * - * * - ************************************************************************/ + cur = *str; + + while ((ISA_PCHAR(cur)) || (*cur == '/') || (*cur == '?') || + ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) + NEXT(cur); + if (uri != NULL) { + if (uri->query != NULL) + xmlFree(uri->query); + if (uri->cleanup & 2) + uri->query = STRNDUP(*str, cur - *str); + else + uri->query = xmlURIUnescapeString(*str, cur - *str, NULL); + + /* Save the raw bytes of the query as well. + * See: http://mail.gnome.org/archives/xml/2007-April/thread.html#00114 + */ + if (uri->query_raw != NULL) + xmlFree (uri->query_raw); + uri->query_raw = STRNDUP (*str, cur - *str); + } + *str = cur; + return (0); +} /** - * xmlCreateURI: + * xmlParse3986Port: + * @uri: pointer to an URI structure + * @str: the string to analyze * - * Simply creates an empty xmlURI + * Parse a port part and fills in the appropriate fields + * of the @uri structure * - * Returns the new structure or NULL in case of error + * port = *DIGIT + * + * Returns 0 or the error code */ -xmlURIPtr -xmlCreateURI(void) { - xmlURIPtr ret; +static int +xmlParse3986Port(xmlURIPtr uri, const char **str) +{ + const char *cur = *str; - ret = (xmlURIPtr) xmlMalloc(sizeof(xmlURI)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlCreateURI: out of memory\n"); - return(NULL); + if (ISA_DIGIT(cur)) { + if (uri != NULL) + uri->port = 0; + while (ISA_DIGIT(cur)) { + if (uri != NULL) + uri->port = uri->port * 10 + (*cur - '0'); + cur++; + } + *str = cur; + return(0); } - memset(ret, 0, sizeof(xmlURI)); - return(ret); + return(1); } /** - * xmlSaveUri: - * @uri: pointer to an xmlURI + * xmlParse3986Userinfo: + * @uri: pointer to an URI structure + * @str: the string to analyze * - * Save the URI as an escaped string + * Parse an user informations part and fills in the appropriate fields + * of the @uri structure * - * Returns a new string (to be deallocated by caller) + * userinfo = *( unreserved / pct-encoded / sub-delims / ":" ) + * + * Returns 0 or the error code */ -xmlChar * -xmlSaveUri(xmlURIPtr uri) { - xmlChar *ret = NULL; - const char *p; - int len; - int max; +static int +xmlParse3986Userinfo(xmlURIPtr uri, const char **str) +{ + const char *cur; - if (uri == NULL) return(NULL); + cur = *str; + while (ISA_UNRESERVED(cur) || ISA_PCT_ENCODED(cur) || + ISA_SUB_DELIM(cur) || (*cur == ':')) + NEXT(cur); + if (*cur == '@') { + if (uri != NULL) { + if (uri->user != NULL) xmlFree(uri->user); + if (uri->cleanup & 2) + uri->user = STRNDUP(*str, cur - *str); + else + uri->user = xmlURIUnescapeString(*str, cur - *str, NULL); + } + *str = cur; + return(0); + } + return(1); +} +/** + * xmlParse3986DecOctet: + * @str: the string to analyze + * + * dec-octet = DIGIT ; 0-9 + * / %x31-39 DIGIT ; 10-99 + * / "1" 2DIGIT ; 100-199 + * / "2" %x30-34 DIGIT ; 200-249 + * / "25" %x30-35 ; 250-255 + * + * Skip a dec-octet. + * + * Returns 0 if found and skipped, 1 otherwise + */ +static int +xmlParse3986DecOctet(const char **str) { + const char *cur = *str; - max = 80; - ret = (xmlChar *) xmlMallocAtomic((max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - len = 0; + if (!(ISA_DIGIT(cur))) + return(1); + if (!ISA_DIGIT(cur+1)) + cur++; + else if ((*cur != '0') && (ISA_DIGIT(cur + 1)) && (!ISA_DIGIT(cur+2))) + cur += 2; + else if ((*cur == '1') && (ISA_DIGIT(cur + 1)) && (ISA_DIGIT(cur + 2))) + cur += 3; + else if ((*cur == '2') && (*(cur + 1) >= '0') && + (*(cur + 1) <= '4') && (ISA_DIGIT(cur + 2))) + cur += 3; + else if ((*cur == '2') && (*(cur + 1) == '5') && + (*(cur + 2) >= '0') && (*(cur + 1) <= '5')) + cur += 3; + else + return(1); + *str = cur; + return(0); +} +/** + * xmlParse3986Host: + * @uri: pointer to an URI structure + * @str: the string to analyze + * + * Parse an host part and fills in the appropriate fields + * of the @uri structure + * + * host = IP-literal / IPv4address / reg-name + * IP-literal = "[" ( IPv6address / IPvFuture ) "]" + * IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet + * reg-name = *( unreserved / pct-encoded / sub-delims ) + * + * Returns 0 or the error code + */ +static int +xmlParse3986Host(xmlURIPtr uri, const char **str) +{ + const char *cur = *str; + const char *host; - if (uri->scheme != NULL) { - p = uri->scheme; - while (*p != 0) { - if (len >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = *p++; - } - if (len >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = ':'; + host = cur; + /* + * IPv6 and future adressing scheme are enclosed between brackets + */ + if (*cur == '[') { + cur++; + while ((*cur != ']') && (*cur != 0)) + cur++; + if (*cur != ']') + return(1); + cur++; + goto found; } - if (uri->opaque != NULL) { - p = uri->opaque; - while (*p != 0) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - if (IS_RESERVED(*(p)) || IS_UNRESERVED(*(p))) - ret[len++] = *p++; - else { - int val = *(unsigned char *)p++; - int hi = val / 0x10, lo = val % 0x10; - ret[len++] = '%'; - ret[len++] = hi + (hi > 9? 'A'-10 : '0'); - ret[len++] = lo + (lo > 9? 'A'-10 : '0'); - } - } - } else { - if (uri->server != NULL) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = '/'; - ret[len++] = '/'; - if (uri->user != NULL) { - p = uri->user; - while (*p != 0) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - if ((IS_UNRESERVED(*(p))) || - ((*(p) == ';')) || ((*(p) == ':')) || - ((*(p) == '&')) || ((*(p) == '=')) || - ((*(p) == '+')) || ((*(p) == '$')) || - ((*(p) == ','))) - ret[len++] = *p++; - else { - int val = *(unsigned char *)p++; - int hi = val / 0x10, lo = val % 0x10; - ret[len++] = '%'; - ret[len++] = hi + (hi > 9? 'A'-10 : '0'); - ret[len++] = lo + (lo > 9? 'A'-10 : '0'); - } - } - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = '@'; - } - p = uri->server; - while (*p != 0) { - if (len >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = *p++; - } - if (uri->port > 0) { - if (len + 10 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - len += snprintf((char *) &ret[len], max - len, ":%d", uri->port); - } - } else if (uri->authority != NULL) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = '/'; - ret[len++] = '/'; - p = uri->authority; - while (*p != 0) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - if ((IS_UNRESERVED(*(p))) || - ((*(p) == '$')) || ((*(p) == ',')) || ((*(p) == ';')) || - ((*(p) == ':')) || ((*(p) == '@')) || ((*(p) == '&')) || - ((*(p) == '=')) || ((*(p) == '+'))) - ret[len++] = *p++; - else { - int val = *(unsigned char *)p++; - int hi = val / 0x10, lo = val % 0x10; - ret[len++] = '%'; - ret[len++] = hi + (hi > 9? 'A'-10 : '0'); - ret[len++] = lo + (lo > 9? 'A'-10 : '0'); - } - } - } else if (uri->scheme != NULL) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = '/'; - ret[len++] = '/'; - } - if (uri->path != NULL) { - p = uri->path; - while (*p != 0) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - if ((IS_UNRESERVED(*(p))) || ((*(p) == '/')) || - ((*(p) == ';')) || ((*(p) == '@')) || ((*(p) == '&')) || - ((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) || - ((*(p) == ','))) - ret[len++] = *p++; - else { - int val = *(unsigned char *)p++; - int hi = val / 0x10, lo = val % 0x10; - ret[len++] = '%'; - ret[len++] = hi + (hi > 9? 'A'-10 : '0'); - ret[len++] = lo + (lo > 9? 'A'-10 : '0'); - } - } - } - if (uri->query != NULL) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = '?'; - p = uri->query; - while (*p != 0) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) - ret[len++] = *p++; - else { - int val = *(unsigned char *)p++; - int hi = val / 0x10, lo = val % 0x10; - ret[len++] = '%'; - ret[len++] = hi + (hi > 9? 'A'-10 : '0'); - ret[len++] = lo + (lo > 9? 'A'-10 : '0'); - } - } - } - } - if (uri->fragment != NULL) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = '#'; - p = uri->fragment; - while (*p != 0) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) - ret[len++] = *p++; - else { - int val = *(unsigned char *)p++; - int hi = val / 0x10, lo = val % 0x10; - ret[len++] = '%'; - ret[len++] = hi + (hi > 9? 'A'-10 : '0'); - ret[len++] = lo + (lo > 9? 'A'-10 : '0'); - } - } + /* + * try to parse an IPv4 + */ + if (ISA_DIGIT(cur)) { + if (xmlParse3986DecOctet(&cur) != 0) + goto not_ipv4; + if (*cur != '.') + goto not_ipv4; + cur++; + if (xmlParse3986DecOctet(&cur) != 0) + goto not_ipv4; + if (*cur != '.') + goto not_ipv4; + if (xmlParse3986DecOctet(&cur) != 0) + goto not_ipv4; + if (*cur != '.') + goto not_ipv4; + if (xmlParse3986DecOctet(&cur) != 0) + goto not_ipv4; + goto found; +not_ipv4: + cur = *str; } - if (len >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } + /* + * then this should be a hostname which can be empty + */ + while (ISA_UNRESERVED(cur) || ISA_PCT_ENCODED(cur) || ISA_SUB_DELIM(cur)) + NEXT(cur); +found: + if (uri != NULL) { + if (uri->authority != NULL) xmlFree(uri->authority); + uri->authority = NULL; + if (uri->server != NULL) xmlFree(uri->server); + if (cur != host) { + if (uri->cleanup & 2) + uri->server = STRNDUP(host, cur - host); + else + uri->server = xmlURIUnescapeString(host, cur - host, NULL); + } else + uri->server = NULL; } - ret[len++] = 0; - return(ret); + *str = cur; + return(0); } /** - * xmlPrintURI: - * @stream: a FILE* for the output - * @uri: pointer to an xmlURI + * xmlParse3986Authority: + * @uri: pointer to an URI structure + * @str: the string to analyze * - * Prints the URI in the stream @stream. + * Parse an authority part and fills in the appropriate fields + * of the @uri structure + * + * authority = [ userinfo "@" ] host [ ":" port ] + * + * Returns 0 or the error code */ -void -xmlPrintURI(FILE *stream, xmlURIPtr uri) { - xmlChar *out; +static int +xmlParse3986Authority(xmlURIPtr uri, const char **str) +{ + const char *cur; + int ret; - out = xmlSaveUri(uri); - if (out != NULL) { - fprintf(stream, "%s", (char *) out); - xmlFree(out); + cur = *str; + /* + * try to parse an userinfo and check for the trailing @ + */ + ret = xmlParse3986Userinfo(uri, &cur); + if ((ret != 0) || (*cur != '@')) + cur = *str; + else + cur++; + ret = xmlParse3986Host(uri, &cur); + if (ret != 0) return(ret); + if (*cur == ':') { + cur++; + ret = xmlParse3986Port(uri, &cur); + if (ret != 0) return(ret); } + *str = cur; + return(0); } /** - * xmlCleanURI: - * @uri: pointer to an xmlURI + * xmlParse3986Segment: + * @str: the string to analyze + * @forbid: an optional forbidden character + * @empty: allow an empty segment * - * Make sure the xmlURI struct is free of content + * Parse a segment and fills in the appropriate fields + * of the @uri structure + * + * segment = *pchar + * segment-nz = 1*pchar + * segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" ) + * ; non-zero-length segment without any colon ":" + * + * Returns 0 or the error code */ -static void -xmlCleanURI(xmlURIPtr uri) { - if (uri == NULL) return; +static int +xmlParse3986Segment(const char **str, char forbid, int empty) +{ + const char *cur; - if (uri->scheme != NULL) xmlFree(uri->scheme); - uri->scheme = NULL; - if (uri->server != NULL) xmlFree(uri->server); - uri->server = NULL; - if (uri->user != NULL) xmlFree(uri->user); - uri->user = NULL; - if (uri->path != NULL) xmlFree(uri->path); - uri->path = NULL; - if (uri->fragment != NULL) xmlFree(uri->fragment); - uri->fragment = NULL; - if (uri->opaque != NULL) xmlFree(uri->opaque); - uri->opaque = NULL; - if (uri->authority != NULL) xmlFree(uri->authority); - uri->authority = NULL; - if (uri->query != NULL) xmlFree(uri->query); - uri->query = NULL; + cur = *str; + if (!ISA_PCHAR(cur)) { + if (empty) + return(0); + return(1); + } + while (ISA_PCHAR(cur) && (*cur != forbid)) + NEXT(cur); + *str = cur; + return (0); } /** - * xmlFreeURI: - * @uri: pointer to an xmlURI + * xmlParse3986PathAbEmpty: + * @uri: pointer to an URI structure + * @str: the string to analyze * - * Free up the xmlURI struct + * Parse an path absolute or empty and fills in the appropriate fields + * of the @uri structure + * + * path-abempty = *( "/" segment ) + * + * Returns 0 or the error code */ -void -xmlFreeURI(xmlURIPtr uri) { - if (uri == NULL) return; +static int +xmlParse3986PathAbEmpty(xmlURIPtr uri, const char **str) +{ + const char *cur; + int ret; - if (uri->scheme != NULL) xmlFree(uri->scheme); - if (uri->server != NULL) xmlFree(uri->server); - if (uri->user != NULL) xmlFree(uri->user); - if (uri->path != NULL) xmlFree(uri->path); - if (uri->fragment != NULL) xmlFree(uri->fragment); - if (uri->opaque != NULL) xmlFree(uri->opaque); - if (uri->authority != NULL) xmlFree(uri->authority); - if (uri->query != NULL) xmlFree(uri->query); - xmlFree(uri); -} + cur = *str; -/************************************************************************ - * * - * Helper functions * - * * - ************************************************************************/ + while (*cur == '/') { + cur++; + ret = xmlParse3986Segment(&cur, 0, 1); + if (ret != 0) return(ret); + } + if (uri != NULL) { + if (uri->path != NULL) xmlFree(uri->path); + if (*str != cur) { + if (uri->cleanup & 2) + uri->path = STRNDUP(*str, cur - *str); + else + uri->path = xmlURIUnescapeString(*str, cur - *str, NULL); + } else { + uri->path = NULL; + } + } + *str = cur; + return (0); +} /** - * xmlNormalizeURIPath: - * @path: pointer to the path string + * xmlParse3986PathAbsolute: + * @uri: pointer to an URI structure + * @str: the string to analyze * - * Applies the 5 normalization steps to a path string--that is, RFC 2396 - * Section 5.2, steps 6.c through 6.g. + * Parse an path absolute and fills in the appropriate fields + * of the @uri structure * - * Normalization occurs directly on the string, no new allocation is done + * path-absolute = "/" [ segment-nz *( "/" segment ) ] * - * Returns 0 or an error code + * Returns 0 or the error code */ -int -xmlNormalizeURIPath(char *path) { - char *cur, *out; - - if (path == NULL) - return(-1); - - /* Skip all initial "/" chars. We want to get to the beginning of the - * first non-empty segment. - */ - cur = path; - while (cur[0] == '/') - ++cur; - if (cur[0] == '\0') - return(0); - - /* Keep everything we've seen so far. */ - out = cur; - - /* - * Analyze each segment in sequence for cases (c) and (d). - */ - while (cur[0] != '\0') { - /* - * c) All occurrences of "./", where "." is a complete path segment, - * are removed from the buffer string. - */ - if ((cur[0] == '.') && (cur[1] == '/')) { - cur += 2; - /* '//' normalization should be done at this point too */ - while (cur[0] == '/') - cur++; - continue; - } +static int +xmlParse3986PathAbsolute(xmlURIPtr uri, const char **str) +{ + const char *cur; + int ret; - /* - * d) If the buffer string ends with "." as a complete path segment, - * that "." is removed. - */ - if ((cur[0] == '.') && (cur[1] == '\0')) - break; + cur = *str; - /* Otherwise keep the segment. */ - while (cur[0] != '/') { - if (cur[0] == '\0') - goto done_cd; - (out++)[0] = (cur++)[0]; - } - /* nomalize // */ - while ((cur[0] == '/') && (cur[1] == '/')) + if (*cur != '/') + return(1); + cur++; + ret = xmlParse3986Segment(&cur, 0, 0); + if (ret == 0) { + while (*cur == '/') { cur++; - - (out++)[0] = (cur++)[0]; + ret = xmlParse3986Segment(&cur, 0, 1); + if (ret != 0) return(ret); + } } - done_cd: - out[0] = '\0'; - - /* Reset to the beginning of the first segment for the next sequence. */ - cur = path; - while (cur[0] == '/') - ++cur; - if (cur[0] == '\0') - return(0); - - /* - * Analyze each segment in sequence for cases (e) and (f). - * - * e) All occurrences of "/../", where is a - * complete path segment not equal to "..", are removed from the - * buffer string. Removal of these path segments is performed - * iteratively, removing the leftmost matching pattern on each - * iteration, until no matching pattern remains. - * - * f) If the buffer string ends with "/..", where - * is a complete path segment not equal to "..", that - * "/.." is removed. - * - * To satisfy the "iterative" clause in (e), we need to collapse the - * string every time we find something that needs to be removed. Thus, - * we don't need to keep two pointers into the string: we only need a - * "current position" pointer. - */ - while (1) { - char *segp, *tmp; - - /* At the beginning of each iteration of this loop, "cur" points to - * the first character of the segment we want to examine. - */ + if (uri != NULL) { + if (uri->path != NULL) xmlFree(uri->path); + if (cur != *str) { + if (uri->cleanup & 2) + uri->path = STRNDUP(*str, cur - *str); + else + uri->path = xmlURIUnescapeString(*str, cur - *str, NULL); + } else { + uri->path = NULL; + } + } + *str = cur; + return (0); +} - /* Find the end of the current segment. */ - segp = cur; - while ((segp[0] != '/') && (segp[0] != '\0')) - ++segp; +/** + * xmlParse3986PathRootless: + * @uri: pointer to an URI structure + * @str: the string to analyze + * + * Parse an path without root and fills in the appropriate fields + * of the @uri structure + * + * path-rootless = segment-nz *( "/" segment ) + * + * Returns 0 or the error code + */ +static int +xmlParse3986PathRootless(xmlURIPtr uri, const char **str) +{ + const char *cur; + int ret; - /* If this is the last segment, we're done (we need at least two - * segments to meet the criteria for the (e) and (f) cases). - */ - if (segp[0] == '\0') - break; + cur = *str; - /* If the first segment is "..", or if the next segment _isn't_ "..", - * keep this segment and try the next one. - */ - ++segp; - if (((cur[0] == '.') && (cur[1] == '.') && (segp == cur+3)) - || ((segp[0] != '.') || (segp[1] != '.') - || ((segp[2] != '/') && (segp[2] != '\0')))) { - cur = segp; - continue; + ret = xmlParse3986Segment(&cur, 0, 0); + if (ret != 0) return(ret); + while (*cur == '/') { + cur++; + ret = xmlParse3986Segment(&cur, 0, 1); + if (ret != 0) return(ret); + } + if (uri != NULL) { + if (uri->path != NULL) xmlFree(uri->path); + if (cur != *str) { + if (uri->cleanup & 2) + uri->path = STRNDUP(*str, cur - *str); + else + uri->path = xmlURIUnescapeString(*str, cur - *str, NULL); + } else { + uri->path = NULL; } + } + *str = cur; + return (0); +} - /* If we get here, remove this segment and the next one and back up - * to the previous segment (if there is one), to implement the - * "iteratively" clause. It's pretty much impossible to back up - * while maintaining two pointers into the buffer, so just compact - * the whole buffer now. - */ - - /* If this is the end of the buffer, we're done. */ - if (segp[2] == '\0') { - cur[0] = '\0'; - break; - } - /* Valgrind complained, strcpy(cur, segp + 3); */ - /* string will overlap, do not use strcpy */ - tmp = cur; - segp += 3; - while ((*tmp++ = *segp++) != 0); +/** + * xmlParse3986PathNoScheme: + * @uri: pointer to an URI structure + * @str: the string to analyze + * + * Parse an path which is not a scheme and fills in the appropriate fields + * of the @uri structure + * + * path-noscheme = segment-nz-nc *( "/" segment ) + * + * Returns 0 or the error code + */ +static int +xmlParse3986PathNoScheme(xmlURIPtr uri, const char **str) +{ + const char *cur; + int ret; - /* If there are no previous segments, then keep going from here. */ - segp = cur; - while ((segp > path) && ((--segp)[0] == '/')) - ; - if (segp == path) - continue; + cur = *str; - /* "segp" is pointing to the end of a previous segment; find it's - * start. We need to back up to the previous segment and start - * over with that to handle things like "foo/bar/../..". If we - * don't do this, then on the first pass we'll remove the "bar/..", - * but be pointing at the second ".." so we won't realize we can also - * remove the "foo/..". - */ - cur = segp; - while ((cur > path) && (cur[-1] != '/')) - --cur; + ret = xmlParse3986Segment(&cur, ':', 0); + if (ret != 0) return(ret); + while (*cur == '/') { + cur++; + ret = xmlParse3986Segment(&cur, 0, 1); + if (ret != 0) return(ret); } - out[0] = '\0'; - - /* - * g) If the resulting buffer string still begins with one or more - * complete path segments of "..", then the reference is - * considered to be in error. Implementations may handle this - * error by retaining these components in the resolved path (i.e., - * treating them as part of the final URI), by removing them from - * the resolved path (i.e., discarding relative levels above the - * root), or by avoiding traversal of the reference. - * - * We discard them from the final path. - */ - if (path[0] == '/') { - cur = path; - while ((cur[0] == '/') && (cur[1] == '.') && (cur[2] == '.') - && ((cur[3] == '/') || (cur[3] == '\0'))) - cur += 3; - - if (cur != path) { - out = path; - while (cur[0] != '\0') - (out++)[0] = (cur++)[0]; - out[0] = 0; - } + if (uri != NULL) { + if (uri->path != NULL) xmlFree(uri->path); + if (cur != *str) { + if (uri->cleanup & 2) + uri->path = STRNDUP(*str, cur - *str); + else + uri->path = xmlURIUnescapeString(*str, cur - *str, NULL); + } else { + uri->path = NULL; + } } - - return(0); -} - -static int is_hex(char c) { - if (((c >= '0') && (c <= '9')) || - ((c >= 'a') && (c <= 'f')) || - ((c >= 'A') && (c <= 'F'))) - return(1); - return(0); + *str = cur; + return (0); } /** - * xmlURIUnescapeString: - * @str: the string to unescape - * @len: the length in bytes to unescape (or <= 0 to indicate full string) - * @target: optional destination buffer + * xmlParse3986HierPart: + * @uri: pointer to an URI structure + * @str: the string to analyze * - * Unescaping routine, does not do validity checks ! - * Output is direct unsigned char translation of %XX values (no encoding) + * Parse an hierarchical part and fills in the appropriate fields + * of the @uri structure + * + * hier-part = "//" authority path-abempty + * / path-absolute + * / path-rootless + * / path-empty * - * Returns an copy of the string, but unescaped + * Returns 0 or the error code */ -char * -xmlURIUnescapeString(const char *str, int len, char *target) { - char *ret, *out; - const char *in; +static int +xmlParse3986HierPart(xmlURIPtr uri, const char **str) +{ + const char *cur; + int ret; - if (str == NULL) - return(NULL); - if (len <= 0) len = strlen(str); - if (len < 0) return(NULL); + cur = *str; - if (target == NULL) { - ret = (char *) xmlMallocAtomic(len + 1); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlURIUnescapeString: out of memory\n"); - return(NULL); - } - } else - ret = target; - in = str; - out = ret; - while(len > 0) { - if ((len > 2) && (*in == '%') && (is_hex(in[1])) && (is_hex(in[2]))) { - in++; - if ((*in >= '0') && (*in <= '9')) - *out = (*in - '0'); - else if ((*in >= 'a') && (*in <= 'f')) - *out = (*in - 'a') + 10; - else if ((*in >= 'A') && (*in <= 'F')) - *out = (*in - 'A') + 10; - in++; - if ((*in >= '0') && (*in <= '9')) - *out = *out * 16 + (*in - '0'); - else if ((*in >= 'a') && (*in <= 'f')) - *out = *out * 16 + (*in - 'a') + 10; - else if ((*in >= 'A') && (*in <= 'F')) - *out = *out * 16 + (*in - 'A') + 10; - in++; - len -= 3; - out++; - } else { - *out++ = *in++; - len--; + if ((*cur == '/') && (*(cur + 1) == '/')) { + cur += 2; + ret = xmlParse3986Authority(uri, &cur); + if (ret != 0) return(ret); + if (uri->server == NULL) + uri->port = -1; + ret = xmlParse3986PathAbEmpty(uri, &cur); + if (ret != 0) return(ret); + *str = cur; + return(0); + } else if (*cur == '/') { + ret = xmlParse3986PathAbsolute(uri, &cur); + if (ret != 0) return(ret); + } else if (ISA_PCHAR(cur)) { + ret = xmlParse3986PathRootless(uri, &cur); + if (ret != 0) return(ret); + } else { + /* path-empty is effectively empty */ + if (uri != NULL) { + if (uri->path != NULL) xmlFree(uri->path); + uri->path = NULL; } } - *out = 0; - return(ret); + *str = cur; + return (0); } /** - * xmlURIEscapeStr: - * @str: string to escape - * @list: exception list string of chars not to escape + * xmlParse3986RelativeRef: + * @uri: pointer to an URI structure + * @str: the string to analyze * - * This routine escapes a string to hex, ignoring reserved characters (a-z) - * and the characters in the exception list. + * Parse an URI string and fills in the appropriate fields + * of the @uri structure * - * Returns a new escaped string or NULL in case of error. + * relative-ref = relative-part [ "?" query ] [ "#" fragment ] + * relative-part = "//" authority path-abempty + * / path-absolute + * / path-noscheme + * / path-empty + * + * Returns 0 or the error code */ -xmlChar * -xmlURIEscapeStr(const xmlChar *str, const xmlChar *list) { - xmlChar *ret, ch; - const xmlChar *in; +static int +xmlParse3986RelativeRef(xmlURIPtr uri, const char *str) { + int ret; - unsigned int len, out; + if ((*str == '/') && (*(str + 1) == '/')) { + str += 2; + ret = xmlParse3986Authority(uri, &str); + if (ret != 0) return(ret); + ret = xmlParse3986PathAbEmpty(uri, &str); + if (ret != 0) return(ret); + } else if (*str == '/') { + ret = xmlParse3986PathAbsolute(uri, &str); + if (ret != 0) return(ret); + } else if (ISA_PCHAR(str)) { + ret = xmlParse3986PathNoScheme(uri, &str); + if (ret != 0) return(ret); + } else { + /* path-empty is effectively empty */ + if (uri != NULL) { + if (uri->path != NULL) xmlFree(uri->path); + uri->path = NULL; + } + } - if (str == NULL) - return(NULL); - if (str[0] == 0) - return(xmlStrdup(str)); - len = xmlStrlen(str); - if (!(len > 0)) return(NULL); + if (*str == '?') { + str++; + ret = xmlParse3986Query(uri, &str); + if (ret != 0) return(ret); + } + if (*str == '#') { + str++; + ret = xmlParse3986Fragment(uri, &str); + if (ret != 0) return(ret); + } + if (*str != 0) { + xmlCleanURI(uri); + return(1); + } + return(0); +} - len += 20; - ret = (xmlChar *) xmlMallocAtomic(len); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlURIEscapeStr: out of memory\n"); - return(NULL); + +/** + * xmlParse3986URI: + * @uri: pointer to an URI structure + * @str: the string to analyze + * + * Parse an URI string and fills in the appropriate fields + * of the @uri structure + * + * scheme ":" hier-part [ "?" query ] [ "#" fragment ] + * + * Returns 0 or the error code + */ +static int +xmlParse3986URI(xmlURIPtr uri, const char *str) { + int ret; + + ret = xmlParse3986Scheme(uri, &str); + if (ret != 0) return(ret); + if (*str != ':') { + return(1); } - in = (const xmlChar *) str; - out = 0; - while(*in != 0) { - if (len - out <= 3) { - len += 20; - ret = (xmlChar *) xmlRealloc(ret, len); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlURIEscapeStr: out of memory\n"); - return(NULL); - } - } + str++; + ret = xmlParse3986HierPart(uri, &str); + if (ret != 0) return(ret); + if (*str == '?') { + str++; + ret = xmlParse3986Query(uri, &str); + if (ret != 0) return(ret); + } + if (*str == '#') { + str++; + ret = xmlParse3986Fragment(uri, &str); + if (ret != 0) return(ret); + } + if (*str != 0) { + xmlCleanURI(uri); + return(1); + } + return(0); +} - ch = *in; +/** + * xmlParse3986URIReference: + * @uri: pointer to an URI structure + * @str: the string to analyze + * + * Parse an URI reference string and fills in the appropriate fields + * of the @uri structure + * + * URI-reference = URI / relative-ref + * + * Returns 0 or the error code + */ +static int +xmlParse3986URIReference(xmlURIPtr uri, const char *str) { + int ret; - if ((ch != '@') && (!IS_UNRESERVED(ch)) && (!xmlStrchr(list, ch))) { - unsigned char val; - ret[out++] = '%'; - val = ch >> 4; - if (val <= 9) - ret[out++] = '0' + val; - else - ret[out++] = 'A' + val - 0xA; - val = ch & 0xF; - if (val <= 9) - ret[out++] = '0' + val; - else - ret[out++] = 'A' + val - 0xA; - in++; - } else { - ret[out++] = *in++; - } + if (str == NULL) + return(-1); + xmlCleanURI(uri); + /* + * Try first to parse absolute refs, then fallback to relative if + * it fails. + */ + ret = xmlParse3986URI(uri, str); + if (ret != 0) { + xmlCleanURI(uri); + ret = xmlParse3986RelativeRef(uri, str); + if (ret != 0) { + xmlCleanURI(uri); + return(ret); + } } - ret[out] = 0; - return(ret); + return(0); } /** - * xmlURIEscape: - * @str: the string of the URI to escape + * xmlParseURI: + * @str: the URI string to analyze * - * Escaping routine, does not do validity checks ! - * It will try to escape the chars needing this, but this is heuristic - * based it's impossible to be sure. + * Parse an URI based on RFC 3986 * - * Returns an copy of the string, but escaped + * URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ] * - * 25 May 2001 - * Uses xmlParseURI and xmlURIEscapeStr to try to escape correctly - * according to RFC2396. - * - Carl Douglas + * Returns a newly built xmlURIPtr or NULL in case of error */ -xmlChar * -xmlURIEscape(const xmlChar * str) -{ - xmlChar *ret, *segment = NULL; +xmlURIPtr +xmlParseURI(const char *str) { xmlURIPtr uri; - int ret2; - -#define NULLCHK(p) if(!p) { \ - xmlGenericError(xmlGenericErrorContext, \ - "xmlURIEscape: out of memory\n"); \ - return NULL; } + int ret; if (str == NULL) - return (NULL); - + return(NULL); uri = xmlCreateURI(); if (uri != NULL) { - /* - * Allow escaping errors in the unescaped form - */ - uri->cleanup = 1; - ret2 = xmlParseURIReference(uri, (const char *)str); - if (ret2) { - xmlFreeURI(uri); - return (NULL); - } + ret = xmlParse3986URIReference(uri, str); + if (ret) { + xmlFreeURI(uri); + return(NULL); + } } + return(uri); +} - if (!uri) - return NULL; +/** + * xmlParseURIReference: + * @uri: pointer to an URI structure + * @str: the string to analyze + * + * Parse an URI reference string based on RFC 3986 and fills in the + * appropriate fields of the @uri structure + * + * URI-reference = URI / relative-ref + * + * Returns 0 or the error code + */ +int +xmlParseURIReference(xmlURIPtr uri, const char *str) { + return(xmlParse3986URIReference(uri, str)); +} - ret = NULL; +/** + * xmlParseURIRaw: + * @str: the URI string to analyze + * @raw: if 1 unescaping of URI pieces are disabled + * + * Parse an URI but allows to keep intact the original fragments. + * + * URI-reference = URI / relative-ref + * + * Returns a newly built xmlURIPtr or NULL in case of error + */ +xmlURIPtr +xmlParseURIRaw(const char *str, int raw) { + xmlURIPtr uri; + int ret; - if (uri->scheme) { - segment = xmlURIEscapeStr(BAD_CAST uri->scheme, BAD_CAST "+-."); - NULLCHK(segment) - ret = xmlStrcat(ret, segment); - ret = xmlStrcat(ret, BAD_CAST ":"); - xmlFree(segment); - } - - if (uri->authority) { - segment = - xmlURIEscapeStr(BAD_CAST uri->authority, BAD_CAST "/?;:@"); - NULLCHK(segment) - ret = xmlStrcat(ret, BAD_CAST "//"); - ret = xmlStrcat(ret, segment); - xmlFree(segment); - } - - if (uri->user) { - segment = xmlURIEscapeStr(BAD_CAST uri->user, BAD_CAST ";:&=+$,"); - NULLCHK(segment) - ret = xmlStrcat(ret,BAD_CAST "//"); - ret = xmlStrcat(ret, segment); - ret = xmlStrcat(ret, BAD_CAST "@"); - xmlFree(segment); - } - - if (uri->server) { - segment = xmlURIEscapeStr(BAD_CAST uri->server, BAD_CAST "/?;:@"); - NULLCHK(segment) - if (uri->user == NULL) - ret = xmlStrcat(ret, BAD_CAST "//"); - ret = xmlStrcat(ret, segment); - xmlFree(segment); + if (str == NULL) + return(NULL); + uri = xmlCreateURI(); + if (uri != NULL) { + if (raw) { + uri->cleanup |= 2; + } + ret = xmlParseURIReference(uri, str); + if (ret) { + xmlFreeURI(uri); + return(NULL); + } } + return(uri); +} - if (uri->port) { - xmlChar port[10]; +/************************************************************************ + * * + * Generic URI structure functions * + * * + ************************************************************************/ - snprintf((char *) port, 10, "%d", uri->port); - ret = xmlStrcat(ret, BAD_CAST ":"); - ret = xmlStrcat(ret, port); - } +/** + * xmlCreateURI: + * + * Simply creates an empty xmlURI + * + * Returns the new structure or NULL in case of error + */ +xmlURIPtr +xmlCreateURI(void) { + xmlURIPtr ret; - if (uri->path) { - segment = - xmlURIEscapeStr(BAD_CAST uri->path, BAD_CAST ":@&=+$,/?;"); - NULLCHK(segment) - ret = xmlStrcat(ret, segment); - xmlFree(segment); + ret = (xmlURIPtr) xmlMalloc(sizeof(xmlURI)); + if (ret == NULL) { + xmlURIErrMemory("creating URI structure\n"); + return(NULL); } + memset(ret, 0, sizeof(xmlURI)); + return(ret); +} - if (uri->query) { - segment = - xmlURIEscapeStr(BAD_CAST uri->query, BAD_CAST ";/?:@&=+,$"); - NULLCHK(segment) - ret = xmlStrcat(ret, BAD_CAST "?"); - ret = xmlStrcat(ret, segment); - xmlFree(segment); - } +/** + * xmlSaveUriRealloc: + * + * Function to handle properly a reallocation when saving an URI + * Also imposes some limit on the length of an URI string output + */ +static xmlChar * +xmlSaveUriRealloc(xmlChar *ret, int *max) { + xmlChar *temp; + int tmp; - if (uri->opaque) { - segment = xmlURIEscapeStr(BAD_CAST uri->opaque, BAD_CAST ""); - NULLCHK(segment) - ret = xmlStrcat(ret, segment); - xmlFree(segment); + if (*max > MAX_URI_LENGTH) { + xmlURIErrMemory("reaching arbitrary MAX_URI_LENGTH limit\n"); + return(NULL); } - - if (uri->fragment) { - segment = xmlURIEscapeStr(BAD_CAST uri->fragment, BAD_CAST "#"); - NULLCHK(segment) - ret = xmlStrcat(ret, BAD_CAST "#"); - ret = xmlStrcat(ret, segment); - xmlFree(segment); + tmp = *max * 2; + temp = (xmlChar *) xmlRealloc(ret, (tmp + 1)); + if (temp == NULL) { + xmlURIErrMemory("saving URI\n"); + return(NULL); } - - xmlFreeURI(uri); -#undef NULLCHK - - return (ret); + *max = tmp; + return(temp); } -/************************************************************************ - * * - * Escaped URI parsing * - * * - ************************************************************************/ - /** - * xmlParseURIFragment: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze + * xmlSaveUri: + * @uri: pointer to an xmlURI * - * Parse an URI fragment string and fills in the appropriate fields - * of the @uri structure. - * - * fragment = *uric + * Save the URI as an escaped string * - * Returns 0 or the error code + * Returns a new string (to be deallocated by caller) */ -static int -xmlParseURIFragment(xmlURIPtr uri, const char **str) -{ - const char *cur; - - if (str == NULL) - return (-1); +xmlChar * +xmlSaveUri(xmlURIPtr uri) { + xmlChar *ret = NULL; + xmlChar *temp; + const char *p; + int len; + int max; - cur = *str; + if (uri == NULL) return(NULL); - while (IS_URIC(cur) || IS_UNWISE(cur)) - NEXT(cur); - if (uri != NULL) { - if (uri->fragment != NULL) - xmlFree(uri->fragment); - if (uri->cleanup & 2) - uri->fragment = STRNDUP(*str, cur - *str); - else - uri->fragment = xmlURIUnescapeString(*str, cur - *str, NULL); + + max = 80; + ret = (xmlChar *) xmlMallocAtomic((max + 1) * sizeof(xmlChar)); + if (ret == NULL) { + xmlURIErrMemory("saving URI\n"); + return(NULL); + } + len = 0; + + if (uri->scheme != NULL) { + p = uri->scheme; + while (*p != 0) { + if (len >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = *p++; + } + if (len >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = ':'; + } + if (uri->opaque != NULL) { + p = uri->opaque; + while (*p != 0) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + if (IS_RESERVED(*(p)) || IS_UNRESERVED(*(p))) + ret[len++] = *p++; + else { + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; + ret[len++] = '%'; + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); + } + } + } else { + if ((uri->server != NULL) || (uri->port == -1)) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = '/'; + ret[len++] = '/'; + if (uri->user != NULL) { + p = uri->user; + while (*p != 0) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + if ((IS_UNRESERVED(*(p))) || + ((*(p) == ';')) || ((*(p) == ':')) || + ((*(p) == '&')) || ((*(p) == '=')) || + ((*(p) == '+')) || ((*(p) == '$')) || + ((*(p) == ','))) + ret[len++] = *p++; + else { + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; + ret[len++] = '%'; + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); + } + } + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = '@'; + } + if (uri->server != NULL) { + p = uri->server; + while (*p != 0) { + if (len >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = *p++; + } + if (uri->port > 0) { + if (len + 10 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + len += snprintf((char *) &ret[len], max - len, ":%d", uri->port); + } + } + } else if (uri->authority != NULL) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = '/'; + ret[len++] = '/'; + p = uri->authority; + while (*p != 0) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + if ((IS_UNRESERVED(*(p))) || + ((*(p) == '$')) || ((*(p) == ',')) || ((*(p) == ';')) || + ((*(p) == ':')) || ((*(p) == '@')) || ((*(p) == '&')) || + ((*(p) == '=')) || ((*(p) == '+'))) + ret[len++] = *p++; + else { + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; + ret[len++] = '%'; + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); + } + } + } else if (uri->scheme != NULL) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + } + if (uri->path != NULL) { + p = uri->path; + /* + * the colon in file:///d: should not be escaped or + * Windows accesses fail later. + */ + if ((uri->scheme != NULL) && + (p[0] == '/') && + (((p[1] >= 'a') && (p[1] <= 'z')) || + ((p[1] >= 'A') && (p[1] <= 'Z'))) && + (p[2] == ':') && + (xmlStrEqual(BAD_CAST uri->scheme, BAD_CAST "file"))) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = *p++; + ret[len++] = *p++; + ret[len++] = *p++; + } + while (*p != 0) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + if ((IS_UNRESERVED(*(p))) || ((*(p) == '/')) || + ((*(p) == ';')) || ((*(p) == '@')) || ((*(p) == '&')) || + ((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) || + ((*(p) == ','))) + ret[len++] = *p++; + else { + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; + ret[len++] = '%'; + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); + } + } + } + if (uri->query_raw != NULL) { + if (len + 1 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = '?'; + p = uri->query_raw; + while (*p != 0) { + if (len + 1 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = *p++; + } + } else if (uri->query != NULL) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = '?'; + p = uri->query; + while (*p != 0) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) + ret[len++] = *p++; + else { + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; + ret[len++] = '%'; + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); + } + } + } + } + if (uri->fragment != NULL) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = '#'; + p = uri->fragment; + while (*p != 0) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) + ret[len++] = *p++; + else { + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; + ret[len++] = '%'; + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); + } + } + } + if (len >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; } - *str = cur; - return (0); + ret[len] = 0; + return(ret); + +mem_error: + xmlFree(ret); + return(NULL); } /** - * xmlParseURIQuery: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze - * - * Parse the query part of an URI - * - * query = *uric + * xmlPrintURI: + * @stream: a FILE* for the output + * @uri: pointer to an xmlURI * - * Returns 0 or the error code + * Prints the URI in the stream @stream. */ -static int -xmlParseURIQuery(xmlURIPtr uri, const char **str) -{ - const char *cur; - - if (str == NULL) - return (-1); - - cur = *str; +void +xmlPrintURI(FILE *stream, xmlURIPtr uri) { + xmlChar *out; - while ((IS_URIC(cur)) || - ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) - NEXT(cur); - if (uri != NULL) { - if (uri->query != NULL) - xmlFree(uri->query); - if (uri->cleanup & 2) - uri->query = STRNDUP(*str, cur - *str); - else - uri->query = xmlURIUnescapeString(*str, cur - *str, NULL); + out = xmlSaveUri(uri); + if (out != NULL) { + fprintf(stream, "%s", (char *) out); + xmlFree(out); } - *str = cur; - return (0); } /** - * xmlParseURIScheme: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze - * - * Parse an URI scheme - * - * scheme = alpha *( alpha | digit | "+" | "-" | "." ) + * xmlCleanURI: + * @uri: pointer to an xmlURI * - * Returns 0 or the error code + * Make sure the xmlURI struct is free of content */ -static int -xmlParseURIScheme(xmlURIPtr uri, const char **str) { - const char *cur; +static void +xmlCleanURI(xmlURIPtr uri) { + if (uri == NULL) return; - if (str == NULL) - return(-1); - - cur = *str; - if (!IS_ALPHA(*cur)) - return(2); - cur++; - while (IS_SCHEME(*cur)) cur++; - if (uri != NULL) { - if (uri->scheme != NULL) xmlFree(uri->scheme); - uri->scheme = STRNDUP(*str, cur - *str); - } - *str = cur; - return(0); + if (uri->scheme != NULL) xmlFree(uri->scheme); + uri->scheme = NULL; + if (uri->server != NULL) xmlFree(uri->server); + uri->server = NULL; + if (uri->user != NULL) xmlFree(uri->user); + uri->user = NULL; + if (uri->path != NULL) xmlFree(uri->path); + uri->path = NULL; + if (uri->fragment != NULL) xmlFree(uri->fragment); + uri->fragment = NULL; + if (uri->opaque != NULL) xmlFree(uri->opaque); + uri->opaque = NULL; + if (uri->authority != NULL) xmlFree(uri->authority); + uri->authority = NULL; + if (uri->query != NULL) xmlFree(uri->query); + uri->query = NULL; + if (uri->query_raw != NULL) xmlFree(uri->query_raw); + uri->query_raw = NULL; } /** - * xmlParseURIOpaquePart: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze - * - * Parse an URI opaque part - * - * opaque_part = uric_no_slash *uric + * xmlFreeURI: + * @uri: pointer to an xmlURI * - * Returns 0 or the error code + * Free up the xmlURI struct */ -static int -xmlParseURIOpaquePart(xmlURIPtr uri, const char **str) -{ - const char *cur; - - if (str == NULL) - return (-1); +void +xmlFreeURI(xmlURIPtr uri) { + if (uri == NULL) return; - cur = *str; - if (!((IS_URIC_NO_SLASH(cur)) || - ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur))))) { - return (3); - } - NEXT(cur); - while ((IS_URIC(cur)) || - ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) - NEXT(cur); - if (uri != NULL) { - if (uri->opaque != NULL) - xmlFree(uri->opaque); - if (uri->cleanup & 2) - uri->opaque = STRNDUP(*str, cur - *str); - else - uri->opaque = xmlURIUnescapeString(*str, cur - *str, NULL); - } - *str = cur; - return (0); + if (uri->scheme != NULL) xmlFree(uri->scheme); + if (uri->server != NULL) xmlFree(uri->server); + if (uri->user != NULL) xmlFree(uri->user); + if (uri->path != NULL) xmlFree(uri->path); + if (uri->fragment != NULL) xmlFree(uri->fragment); + if (uri->opaque != NULL) xmlFree(uri->opaque); + if (uri->authority != NULL) xmlFree(uri->authority); + if (uri->query != NULL) xmlFree(uri->query); + if (uri->query_raw != NULL) xmlFree(uri->query_raw); + xmlFree(uri); } +/************************************************************************ + * * + * Helper functions * + * * + ************************************************************************/ + /** - * xmlParseURIServer: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze + * xmlNormalizeURIPath: + * @path: pointer to the path string + * + * Applies the 5 normalization steps to a path string--that is, RFC 2396 + * Section 5.2, steps 6.c through 6.g. * - * Parse a server subpart of an URI, it's a finer grain analysis - * of the authority part. - * - * server = [ [ userinfo "@" ] hostport ] - * userinfo = *( unreserved | escaped | - * ";" | ":" | "&" | "=" | "+" | "$" | "," ) - * hostport = host [ ":" port ] - * host = hostname | IPv4address | IPv6reference - * hostname = *( domainlabel "." ) toplabel [ "." ] - * domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum - * toplabel = alpha | alpha *( alphanum | "-" ) alphanum - * IPv6reference = "[" IPv6address "]" - * IPv6address = hexpart [ ":" IPv4address ] - * IPv4address = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit - * hexpart = hexseq | hexseq "::" [ hexseq ]| "::" [ hexseq ] - * hexseq = hex4 *( ":" hex4) - * hex4 = 1*4hexdig - * port = *digit + * Normalization occurs directly on the string, no new allocation is done * - * Returns 0 or the error code + * Returns 0 or an error code */ -static int -xmlParseURIServer(xmlURIPtr uri, const char **str) { - const char *cur; - const char *host, *tmp; - const int IPV4max = 4; - const int IPV6max = 8; - int oct; +int +xmlNormalizeURIPath(char *path) { + char *cur, *out; - if (str == NULL) + if (path == NULL) return(-1); - - cur = *str; - /* - * is there a userinfo ? - */ - while (IS_USERINFO(cur)) NEXT(cur); - if (*cur == '@') { - if (uri != NULL) { - if (uri->user != NULL) xmlFree(uri->user); - if (uri->cleanup & 2) - uri->path = STRNDUP(*str, cur - *str); - else - uri->user = xmlURIUnescapeString(*str, cur - *str, NULL); - } - cur++; - } else { - if (uri != NULL) { - if (uri->user != NULL) xmlFree(uri->user); - uri->user = NULL; - } - cur = *str; - } - /* - * This can be empty in the case where there is no server + /* Skip all initial "/" chars. We want to get to the beginning of the + * first non-empty segment. */ - host = cur; - if (*cur == '/') { - if (uri != NULL) { - if (uri->authority != NULL) xmlFree(uri->authority); - uri->authority = NULL; - if (uri->server != NULL) xmlFree(uri->server); - uri->server = NULL; - uri->port = 0; - } - return(0); - } + cur = path; + while (cur[0] == '/') + ++cur; + if (cur[0] == '\0') + return(0); + + /* Keep everything we've seen so far. */ + out = cur; + /* - * host part of hostport can denote an IPV4 address, an IPV6 address - * or an unresolved name. Check the IP first, its easier to detect - * errors if wrong one. - * An IPV6 address must start with a '[' and end with a ']'. + * Analyze each segment in sequence for cases (c) and (d). */ - if (*cur == '[') { - int compress=0; - cur++; - for (oct = 0; oct < IPV6max; ++oct) { - if (*cur == ':') { - if (compress) - return(3); /* multiple compression attempted */ - if (!oct) { /* initial char is compression */ - if (*++cur != ':') - return(3); - } - compress = 1; /* set compression-encountered flag */ - cur++; /* skip over the second ':' */ - continue; - } - while(IS_HEX(*cur)) cur++; - if (oct == (IPV6max-1)) - continue; - if (*cur != ':') - break; - cur++; - } - if ((!compress) && (oct != IPV6max)) - return(3); - if (*cur != ']') - return(3); - if (uri != NULL) { - if (uri->server != NULL) xmlFree(uri->server); - uri->server = (char *)xmlStrndup((xmlChar *)host+1, - (cur-host)-1); - } - cur++; - } else { + while (cur[0] != '\0') { /* - * Not IPV6, maybe IPV4 + * c) All occurrences of "./", where "." is a complete path segment, + * are removed from the buffer string. */ - for (oct = 0; oct < IPV4max; ++oct) { - if (*cur == '.') - return(3); /* e.g. http://.xml/ or http://18.29..30/ */ - while(IS_DIGIT(*cur)) cur++; - if (oct == (IPV4max-1)) - continue; - if (*cur != '.') - break; - cur++; - } - } - if ((host[0] != '[') && (oct < IPV4max || (*cur == '.' && cur++) || - IS_ALPHA(*cur))) { - /* maybe host_name */ - if (!IS_ALPHANUM(*cur)) - return(4); /* e.g. http://xml.$oft */ - do { - do ++cur; while (IS_ALPHANUM(*cur)); - if (*cur == '-') { - --cur; - if (*cur == '.') - return(5); /* e.g. http://xml.-soft */ - ++cur; - continue; - } - if (*cur == '.') { - --cur; - if (*cur == '-') - return(6); /* e.g. http://xml-.soft */ - if (*cur == '.') - return(7); /* e.g. http://xml..soft */ - ++cur; - continue; - } - break; - } while (1); - tmp = cur; - if (tmp[-1] == '.') - --tmp; /* e.g. http://xml.$Oft/ */ - do --tmp; while (tmp >= host && IS_ALPHANUM(*tmp)); - if ((++tmp == host || tmp[-1] == '.') && !IS_ALPHA(*tmp)) - return(8); /* e.g. http://xmlsOft.0rg/ */ - } - if (uri != NULL) { - if (uri->authority != NULL) xmlFree(uri->authority); - uri->authority = NULL; - if (host[0] != '[') { /* it's not an IPV6 addr */ - if (uri->server != NULL) xmlFree(uri->server); - if (uri->cleanup & 2) - uri->server = STRNDUP(host, cur - host); - else - uri->server = xmlURIUnescapeString(host, cur - host, NULL); - } - } - /* - * finish by checking for a port presence. - */ - if (*cur == ':') { - cur++; - if (IS_DIGIT(*cur)) { - if (uri != NULL) - uri->port = 0; - while (IS_DIGIT(*cur)) { - if (uri != NULL) - uri->port = uri->port * 10 + (*cur - '0'); + if ((cur[0] == '.') && (cur[1] == '/')) { + cur += 2; + /* '//' normalization should be done at this point too */ + while (cur[0] == '/') cur++; - } + continue; } - } - *str = cur; - return(0); -} -/** - * xmlParseURIRelSegment: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze - * - * Parse an URI relative segment - * - * rel_segment = 1*( unreserved | escaped | ";" | "@" | "&" | "=" | - * "+" | "$" | "," ) - * - * Returns 0 or the error code - */ -static int -xmlParseURIRelSegment(xmlURIPtr uri, const char **str) -{ - const char *cur; + /* + * d) If the buffer string ends with "." as a complete path segment, + * that "." is removed. + */ + if ((cur[0] == '.') && (cur[1] == '\0')) + break; - if (str == NULL) - return (-1); + /* Otherwise keep the segment. */ + while (cur[0] != '/') { + if (cur[0] == '\0') + goto done_cd; + (out++)[0] = (cur++)[0]; + } + /* nomalize // */ + while ((cur[0] == '/') && (cur[1] == '/')) + cur++; - cur = *str; - if (!((IS_SEGMENT(cur)) || - ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur))))) { - return (3); - } - NEXT(cur); - while ((IS_SEGMENT(cur)) || - ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) - NEXT(cur); - if (uri != NULL) { - if (uri->path != NULL) - xmlFree(uri->path); - if (uri->cleanup & 2) - uri->path = STRNDUP(*str, cur - *str); - else - uri->path = xmlURIUnescapeString(*str, cur - *str, NULL); + (out++)[0] = (cur++)[0]; } - *str = cur; - return (0); -} + done_cd: + out[0] = '\0'; -/** - * xmlParseURIPathSegments: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze - * @slash: should we add a leading slash - * - * Parse an URI set of path segments - * - * path_segments = segment *( "/" segment ) - * segment = *pchar *( ";" param ) - * param = *pchar - * - * Returns 0 or the error code - */ -static int -xmlParseURIPathSegments(xmlURIPtr uri, const char **str, int slash) -{ - const char *cur; + /* Reset to the beginning of the first segment for the next sequence. */ + cur = path; + while (cur[0] == '/') + ++cur; + if (cur[0] == '\0') + return(0); - if (str == NULL) - return (-1); + /* + * Analyze each segment in sequence for cases (e) and (f). + * + * e) All occurrences of "/../", where is a + * complete path segment not equal to "..", are removed from the + * buffer string. Removal of these path segments is performed + * iteratively, removing the leftmost matching pattern on each + * iteration, until no matching pattern remains. + * + * f) If the buffer string ends with "/..", where + * is a complete path segment not equal to "..", that + * "/.." is removed. + * + * To satisfy the "iterative" clause in (e), we need to collapse the + * string every time we find something that needs to be removed. Thus, + * we don't need to keep two pointers into the string: we only need a + * "current position" pointer. + */ + while (1) { + char *segp, *tmp; - cur = *str; + /* At the beginning of each iteration of this loop, "cur" points to + * the first character of the segment we want to examine. + */ - do { - while ((IS_PCHAR(cur)) || - ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) - NEXT(cur); - while (*cur == ';') { - cur++; - while ((IS_PCHAR(cur)) || - ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) - NEXT(cur); - } - if (*cur != '/') - break; - cur++; - } while (1); - if (uri != NULL) { - int len, len2 = 0; - char *path; + /* Find the end of the current segment. */ + segp = cur; + while ((segp[0] != '/') && (segp[0] != '\0')) + ++segp; - /* - * Concat the set of path segments to the current path + /* If this is the last segment, we're done (we need at least two + * segments to meet the criteria for the (e) and (f) cases). */ - len = cur - *str; - if (slash) - len++; - - if (uri->path != NULL) { - len2 = strlen(uri->path); - len += len2; - } - path = (char *) xmlMallocAtomic(len + 1); - if (path == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlParseURIPathSegments: out of memory\n"); - *str = cur; - return (-1); + if (segp[0] == '\0') + break; + + /* If the first segment is "..", or if the next segment _isn't_ "..", + * keep this segment and try the next one. + */ + ++segp; + if (((cur[0] == '.') && (cur[1] == '.') && (segp == cur+3)) + || ((segp[0] != '.') || (segp[1] != '.') + || ((segp[2] != '/') && (segp[2] != '\0')))) { + cur = segp; + continue; } - if (uri->path != NULL) - memcpy(path, uri->path, len2); - if (slash) { - path[len2] = '/'; - len2++; + + /* If we get here, remove this segment and the next one and back up + * to the previous segment (if there is one), to implement the + * "iteratively" clause. It's pretty much impossible to back up + * while maintaining two pointers into the buffer, so just compact + * the whole buffer now. + */ + + /* If this is the end of the buffer, we're done. */ + if (segp[2] == '\0') { + cur[0] = '\0'; + break; } - path[len2] = 0; - if (cur - *str > 0) { - if (uri->cleanup & 2) { - memcpy(&path[len2], *str, cur - *str); - path[len2 + (cur - *str)] = 0; - } else - xmlURIUnescapeString(*str, cur - *str, &path[len2]); - } - if (uri->path != NULL) - xmlFree(uri->path); - uri->path = path; - } - *str = cur; - return (0); -} + /* Valgrind complained, strcpy(cur, segp + 3); */ + /* string will overlap, do not use strcpy */ + tmp = cur; + segp += 3; + while ((*tmp++ = *segp++) != 0) + ; -/** - * xmlParseURIAuthority: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze - * - * Parse the authority part of an URI. - * - * authority = server | reg_name - * server = [ [ userinfo "@" ] hostport ] - * reg_name = 1*( unreserved | escaped | "$" | "," | ";" | ":" | - * "@" | "&" | "=" | "+" ) - * - * Note : this is completely ambiguous since reg_name is allowed to - * use the full set of chars in use by server: - * - * 3.2.1. Registry-based Naming Authority - * - * The structure of a registry-based naming authority is specific - * to the URI scheme, but constrained to the allowed characters - * for an authority component. - * - * Returns 0 or the error code - */ -static int -xmlParseURIAuthority(xmlURIPtr uri, const char **str) { - const char *cur; - int ret; + /* If there are no previous segments, then keep going from here. */ + segp = cur; + while ((segp > path) && ((--segp)[0] == '/')) + ; + if (segp == path) + continue; - if (str == NULL) - return(-1); - - cur = *str; + /* "segp" is pointing to the end of a previous segment; find it's + * start. We need to back up to the previous segment and start + * over with that to handle things like "foo/bar/../..". If we + * don't do this, then on the first pass we'll remove the "bar/..", + * but be pointing at the second ".." so we won't realize we can also + * remove the "foo/..". + */ + cur = segp; + while ((cur > path) && (cur[-1] != '/')) + --cur; + } + out[0] = '\0'; /* - * try first to parse it as a server string. + * g) If the resulting buffer string still begins with one or more + * complete path segments of "..", then the reference is + * considered to be in error. Implementations may handle this + * error by retaining these components in the resolved path (i.e., + * treating them as part of the final URI), by removing them from + * the resolved path (i.e., discarding relative levels above the + * root), or by avoiding traversal of the reference. + * + * We discard them from the final path. */ - ret = xmlParseURIServer(uri, str); - if ((ret == 0) && (*str != NULL) && - ((**str == 0) || (**str == '/') || (**str == '?'))) - return(0); - *str = cur; + if (path[0] == '/') { + cur = path; + while ((cur[0] == '/') && (cur[1] == '.') && (cur[2] == '.') + && ((cur[3] == '/') || (cur[3] == '\0'))) + cur += 3; - /* - * failed, fallback to reg_name - */ - if (!IS_REG_NAME(cur)) { - return(5); - } - NEXT(cur); - while (IS_REG_NAME(cur)) NEXT(cur); - if (uri != NULL) { - if (uri->server != NULL) xmlFree(uri->server); - uri->server = NULL; - if (uri->user != NULL) xmlFree(uri->user); - uri->user = NULL; - if (uri->authority != NULL) xmlFree(uri->authority); - if (uri->cleanup & 2) - uri->authority = STRNDUP(*str, cur - *str); - else - uri->authority = xmlURIUnescapeString(*str, cur - *str, NULL); + if (cur != path) { + out = path; + while (cur[0] != '\0') + (out++)[0] = (cur++)[0]; + out[0] = 0; + } } - *str = cur; - return(0); -} - -/** - * xmlParseURIHierPart: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze - * - * Parse an URI hierarchical part - * - * hier_part = ( net_path | abs_path ) [ "?" query ] - * abs_path = "/" path_segments - * net_path = "//" authority [ abs_path ] - * - * Returns 0 or the error code - */ -static int -xmlParseURIHierPart(xmlURIPtr uri, const char **str) { - int ret; - const char *cur; - - if (str == NULL) - return(-1); - - cur = *str; - if ((cur[0] == '/') && (cur[1] == '/')) { - cur += 2; - ret = xmlParseURIAuthority(uri, &cur); - if (ret != 0) - return(ret); - if (cur[0] == '/') { - cur++; - ret = xmlParseURIPathSegments(uri, &cur, 1); - } - } else if (cur[0] == '/') { - cur++; - ret = xmlParseURIPathSegments(uri, &cur, 1); - } else { - return(4); - } - if (ret != 0) - return(ret); - if (*cur == '?') { - cur++; - ret = xmlParseURIQuery(uri, &cur); - if (ret != 0) - return(ret); - } - *str = cur; return(0); } -/** - * xmlParseAbsoluteURI: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze - * - * Parse an URI reference string and fills in the appropriate fields - * of the @uri structure - * - * absoluteURI = scheme ":" ( hier_part | opaque_part ) - * - * Returns 0 or the error code - */ -static int -xmlParseAbsoluteURI(xmlURIPtr uri, const char **str) { - int ret; - const char *cur; - - if (str == NULL) - return(-1); - - cur = *str; - - ret = xmlParseURIScheme(uri, str); - if (ret != 0) return(ret); - if (**str != ':') { - *str = cur; +static int is_hex(char c) { + if (((c >= '0') && (c <= '9')) || + ((c >= 'a') && (c <= 'f')) || + ((c >= 'A') && (c <= 'F'))) return(1); - } - (*str)++; - if (**str == '/') - return(xmlParseURIHierPart(uri, str)); - return(xmlParseURIOpaquePart(uri, str)); + return(0); } /** - * xmlParseRelativeURI: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze + * xmlURIUnescapeString: + * @str: the string to unescape + * @len: the length in bytes to unescape (or <= 0 to indicate full string) + * @target: optional destination buffer * - * Parse an relative URI string and fills in the appropriate fields - * of the @uri structure - * - * relativeURI = ( net_path | abs_path | rel_path ) [ "?" query ] - * abs_path = "/" path_segments - * net_path = "//" authority [ abs_path ] - * rel_path = rel_segment [ abs_path ] + * Unescaping routine, but does not check that the string is an URI. The + * output is a direct unsigned char translation of %XX values (no encoding) + * Note that the length of the result can only be smaller or same size as + * the input string. * - * Returns 0 or the error code + * Returns a copy of the string, but unescaped, will return NULL only in case + * of error */ -static int -xmlParseRelativeURI(xmlURIPtr uri, const char **str) { - int ret = 0; - const char *cur; +char * +xmlURIUnescapeString(const char *str, int len, char *target) { + char *ret, *out; + const char *in; if (str == NULL) - return(-1); - - cur = *str; - if ((cur[0] == '/') && (cur[1] == '/')) { - cur += 2; - ret = xmlParseURIAuthority(uri, &cur); - if (ret != 0) - return(ret); - if (cur[0] == '/') { - cur++; - ret = xmlParseURIPathSegments(uri, &cur, 1); + return(NULL); + if (len <= 0) len = strlen(str); + if (len < 0) return(NULL); + + if (target == NULL) { + ret = (char *) xmlMallocAtomic(len + 1); + if (ret == NULL) { + xmlURIErrMemory("unescaping URI value\n"); + return(NULL); } - } else if (cur[0] == '/') { - cur++; - ret = xmlParseURIPathSegments(uri, &cur, 1); - } else if (cur[0] != '#' && cur[0] != '?') { - ret = xmlParseURIRelSegment(uri, &cur); - if (ret != 0) - return(ret); - if (cur[0] == '/') { - cur++; - ret = xmlParseURIPathSegments(uri, &cur, 1); + } else + ret = target; + in = str; + out = ret; + while(len > 0) { + if ((len > 2) && (*in == '%') && (is_hex(in[1])) && (is_hex(in[2]))) { + in++; + if ((*in >= '0') && (*in <= '9')) + *out = (*in - '0'); + else if ((*in >= 'a') && (*in <= 'f')) + *out = (*in - 'a') + 10; + else if ((*in >= 'A') && (*in <= 'F')) + *out = (*in - 'A') + 10; + in++; + if ((*in >= '0') && (*in <= '9')) + *out = *out * 16 + (*in - '0'); + else if ((*in >= 'a') && (*in <= 'f')) + *out = *out * 16 + (*in - 'a') + 10; + else if ((*in >= 'A') && (*in <= 'F')) + *out = *out * 16 + (*in - 'A') + 10; + in++; + len -= 3; + out++; + } else { + *out++ = *in++; + len--; } } - if (ret != 0) - return(ret); - if (*cur == '?') { - cur++; - ret = xmlParseURIQuery(uri, &cur); - if (ret != 0) - return(ret); - } - *str = cur; + *out = 0; return(ret); } /** - * xmlParseURIReference: - * @uri: pointer to an URI structure - * @str: the string to analyze + * xmlURIEscapeStr: + * @str: string to escape + * @list: exception list string of chars not to escape * - * Parse an URI reference string and fills in the appropriate fields - * of the @uri structure - * - * URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ] + * This routine escapes a string to hex, ignoring reserved characters (a-z) + * and the characters in the exception list. * - * Returns 0 or the error code + * Returns a new escaped string or NULL in case of error. */ -int -xmlParseURIReference(xmlURIPtr uri, const char *str) { - int ret; - const char *tmp = str; +xmlChar * +xmlURIEscapeStr(const xmlChar *str, const xmlChar *list) { + xmlChar *ret, ch; + xmlChar *temp; + const xmlChar *in; + int len, out; if (str == NULL) - return(-1); - xmlCleanURI(uri); + return(NULL); + if (str[0] == 0) + return(xmlStrdup(str)); + len = xmlStrlen(str); + if (!(len > 0)) return(NULL); - /* - * Try first to parse absolute refs, then fallback to relative if - * it fails. - */ - ret = xmlParseAbsoluteURI(uri, &str); - if (ret != 0) { - xmlCleanURI(uri); - str = tmp; - ret = xmlParseRelativeURI(uri, &str); - } - if (ret != 0) { - xmlCleanURI(uri); - return(ret); + len += 20; + ret = (xmlChar *) xmlMallocAtomic(len); + if (ret == NULL) { + xmlURIErrMemory("escaping URI value\n"); + return(NULL); } + in = (const xmlChar *) str; + out = 0; + while(*in != 0) { + if (len - out <= 3) { + temp = xmlSaveUriRealloc(ret, &len); + if (temp == NULL) { + xmlURIErrMemory("escaping URI value\n"); + xmlFree(ret); + return(NULL); + } + ret = temp; + } + + ch = *in; + + if ((ch != '@') && (!IS_UNRESERVED(ch)) && (!xmlStrchr(list, ch))) { + unsigned char val; + ret[out++] = '%'; + val = ch >> 4; + if (val <= 9) + ret[out++] = '0' + val; + else + ret[out++] = 'A' + val - 0xA; + val = ch & 0xF; + if (val <= 9) + ret[out++] = '0' + val; + else + ret[out++] = 'A' + val - 0xA; + in++; + } else { + ret[out++] = *in++; + } - if (*str == '#') { - str++; - ret = xmlParseURIFragment(uri, &str); - if (ret != 0) return(ret); - } - if (*str != 0) { - xmlCleanURI(uri); - return(1); } - return(0); + ret[out] = 0; + return(ret); } /** - * xmlParseURI: - * @str: the URI string to analyze + * xmlURIEscape: + * @str: the string of the URI to escape * - * Parse an URI - * - * URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ] + * Escaping routine, does not do validity checks ! + * It will try to escape the chars needing this, but this is heuristic + * based it's impossible to be sure. * - * Returns a newly built xmlURIPtr or NULL in case of error + * Returns an copy of the string, but escaped + * + * 25 May 2001 + * Uses xmlParseURI and xmlURIEscapeStr to try to escape correctly + * according to RFC2396. + * - Carl Douglas */ -xmlURIPtr -xmlParseURI(const char *str) { +xmlChar * +xmlURIEscape(const xmlChar * str) +{ + xmlChar *ret, *segment = NULL; xmlURIPtr uri; - int ret; + int ret2; + +#define NULLCHK(p) if(!p) { \ + xmlURIErrMemory("escaping URI value\n"); \ + xmlFreeURI(uri); \ + return NULL; } \ if (str == NULL) - return(NULL); + return (NULL); + uri = xmlCreateURI(); if (uri != NULL) { - ret = xmlParseURIReference(uri, str); - if (ret) { - xmlFreeURI(uri); - return(NULL); - } + /* + * Allow escaping errors in the unescaped form + */ + uri->cleanup = 1; + ret2 = xmlParseURIReference(uri, (const char *)str); + if (ret2) { + xmlFreeURI(uri); + return (NULL); + } } - return(uri); -} -/** - * xmlParseURIRaw: - * @str: the URI string to analyze - * @raw: if 1 unescaping of URI pieces are disabled - * - * Parse an URI but allows to keep intact the original fragments. - * - * URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ] - * - * Returns a newly built xmlURIPtr or NULL in case of error - */ -xmlURIPtr -xmlParseURIRaw(const char *str, int raw) { - xmlURIPtr uri; - int ret; + if (!uri) + return NULL; - if (str == NULL) - return(NULL); - uri = xmlCreateURI(); - if (uri != NULL) { - if (raw) { - uri->cleanup |= 2; - } - ret = xmlParseURIReference(uri, str); - if (ret) { - xmlFreeURI(uri); - return(NULL); - } + ret = NULL; + + if (uri->scheme) { + segment = xmlURIEscapeStr(BAD_CAST uri->scheme, BAD_CAST "+-."); + NULLCHK(segment) + ret = xmlStrcat(ret, segment); + ret = xmlStrcat(ret, BAD_CAST ":"); + xmlFree(segment); } - return(uri); + + if (uri->authority) { + segment = + xmlURIEscapeStr(BAD_CAST uri->authority, BAD_CAST "/?;:@"); + NULLCHK(segment) + ret = xmlStrcat(ret, BAD_CAST "//"); + ret = xmlStrcat(ret, segment); + xmlFree(segment); + } + + if (uri->user) { + segment = xmlURIEscapeStr(BAD_CAST uri->user, BAD_CAST ";:&=+$,"); + NULLCHK(segment) + ret = xmlStrcat(ret,BAD_CAST "//"); + ret = xmlStrcat(ret, segment); + ret = xmlStrcat(ret, BAD_CAST "@"); + xmlFree(segment); + } + + if (uri->server) { + segment = xmlURIEscapeStr(BAD_CAST uri->server, BAD_CAST "/?;:@"); + NULLCHK(segment) + if (uri->user == NULL) + ret = xmlStrcat(ret, BAD_CAST "//"); + ret = xmlStrcat(ret, segment); + xmlFree(segment); + } + + if (uri->port) { + xmlChar port[10]; + + snprintf((char *) port, 10, "%d", uri->port); + ret = xmlStrcat(ret, BAD_CAST ":"); + ret = xmlStrcat(ret, port); + } + + if (uri->path) { + segment = + xmlURIEscapeStr(BAD_CAST uri->path, BAD_CAST ":@&=+$,/?;"); + NULLCHK(segment) + ret = xmlStrcat(ret, segment); + xmlFree(segment); + } + + if (uri->query_raw) { + ret = xmlStrcat(ret, BAD_CAST "?"); + ret = xmlStrcat(ret, BAD_CAST uri->query_raw); + } + else if (uri->query) { + segment = + xmlURIEscapeStr(BAD_CAST uri->query, BAD_CAST ";/?:@&=+,$"); + NULLCHK(segment) + ret = xmlStrcat(ret, BAD_CAST "?"); + ret = xmlStrcat(ret, segment); + xmlFree(segment); + } + + if (uri->opaque) { + segment = xmlURIEscapeStr(BAD_CAST uri->opaque, BAD_CAST ""); + NULLCHK(segment) + ret = xmlStrcat(ret, segment); + xmlFree(segment); + } + + if (uri->fragment) { + segment = xmlURIEscapeStr(BAD_CAST uri->fragment, BAD_CAST "#"); + NULLCHK(segment) + ret = xmlStrcat(ret, BAD_CAST "#"); + ret = xmlStrcat(ret, segment); + xmlFree(segment); + } + + xmlFreeURI(uri); +#undef NULLCHK + + return (ret); } /************************************************************************ @@ -1844,7 +1869,7 @@ * * Computes he final URI of the reference done by checking that * the given URI is valid, and building the final URI using the - * base URI. This is processed according to section 5.2 of the + * base URI. This is processed according to section 5.2 of the * RFC 2396 * * 5.2. Resolving Relative References to Absolute Form @@ -1868,7 +1893,7 @@ * as a reference to "." rather than as a synonym for the current * URI. Should we do that here? */ - if (URI == NULL) + if (URI == NULL) ret = -1; else { if (*URI) { @@ -1939,12 +1964,16 @@ res->server = xmlMemStrdup(bas->server); if (bas->user != NULL) res->user = xmlMemStrdup(bas->user); - res->port = bas->port; + res->port = bas->port; } if (bas->path != NULL) res->path = xmlMemStrdup(bas->path); - if (ref->query != NULL) + if (ref->query_raw != NULL) + res->query_raw = xmlMemStrdup (ref->query_raw); + else if (ref->query != NULL) res->query = xmlMemStrdup(ref->query); + else if (bas->query_raw != NULL) + res->query_raw = xmlMemStrdup(bas->query_raw); else if (bas->query != NULL) res->query = xmlMemStrdup(bas->query); if (ref->fragment != NULL) @@ -1964,8 +1993,10 @@ } if (bas->scheme != NULL) res->scheme = xmlMemStrdup(bas->scheme); - - if (ref->query != NULL) + + if (ref->query_raw != NULL) + res->query_raw = xmlMemStrdup(ref->query_raw); + else if (ref->query != NULL) res->query = xmlMemStrdup(ref->query); if (ref->fragment != NULL) res->fragment = xmlMemStrdup(ref->fragment); @@ -1984,7 +2015,7 @@ res->server = xmlMemStrdup(ref->server); if (ref->user != NULL) res->user = xmlMemStrdup(ref->user); - res->port = ref->port; + res->port = ref->port; } if (ref->path != NULL) res->path = xmlMemStrdup(ref->path); @@ -1996,7 +2027,7 @@ res->server = xmlMemStrdup(bas->server); if (bas->user != NULL) res->user = xmlMemStrdup(bas->user); - res->port = bas->port; + res->port = bas->port; } /* @@ -2024,8 +2055,7 @@ len += strlen(bas->path); res->path = (char *) xmlMallocAtomic(len); if (res->path == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlBuildURI: out of memory\n"); + xmlURIErrMemory("resolving URI against base\n"); goto done; } res->path[0] = 0; @@ -2209,7 +2239,8 @@ uptr = (xmlChar *) ref->path; if (*uptr == '/') uptr++; - val = xmlStrdup(uptr); + /* exception characters from xmlSaveUri */ + val = xmlURIEscapeStr(uptr, BAD_CAST "/;&=+$,"); } goto done; } @@ -2270,10 +2301,11 @@ } len = xmlStrlen (uptr) + 1; } - + if (nbslash == 0) { if (uptr != NULL) - val = xmlStrdup (uptr); + /* exception characters from xmlSaveUri */ + val = xmlURIEscapeStr(uptr, BAD_CAST "/;&=+$,"); goto done; } @@ -2284,8 +2316,7 @@ */ val = (xmlChar *) xmlMalloc (len + 3 * nbslash); if (val == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlBuildRelativeURI: out of memory\n"); + xmlURIErrMemory("building relative URI\n"); goto done; } vptr = val; @@ -2313,6 +2344,12 @@ vptr[len - 1] = 0; } + /* escape the freshly-built path */ + vptr = val; + /* exception characters from xmlSaveUri */ + val = xmlURIEscapeStr(vptr, BAD_CAST "/;&=+$,"); + xmlFree(vptr); + done: /* * Free the working variables @@ -2331,14 +2368,14 @@ * xmlCanonicPath: * @path: the resource locator in a filesystem notation * - * Constructs a canonic path from the specified path. + * Constructs a canonic path from the specified path. * - * Returns a new canonic path, or a duplicate of the path parameter if the + * Returns a new canonic path, or a duplicate of the path parameter if the * construction fails. The caller is responsible for freeing the memory occupied - * by the returned string. If there is insufficient memory available, or the + * by the returned string. If there is insufficient memory available, or the * argument is NULL, the function returns NULL. */ -#define IS_WINDOWS_PATH(p) \ +#define IS_WINDOWS_PATH(p) \ ((p != NULL) && \ (((p[0] >= 'a') && (p[0] <= 'z')) || \ ((p[0] >= 'A') && (p[0] <= 'Z'))) && \ @@ -2346,7 +2383,11 @@ xmlChar * xmlCanonicPath(const xmlChar *path) { -#if defined(_WIN32) && !defined(__CYGWIN__) +/* + * For Windows implementations, additional work needs to be done to + * replace backslashes in pathnames with "forward slashes" + */ +#if defined(_WIN32) && !defined(__CYGWIN__) int len = 0; int i = 0; xmlChar *p = NULL; @@ -2357,11 +2398,30 @@ if (path == NULL) return(NULL); + +#if defined(_WIN32) + /* + * We must not change the backslashes to slashes if the the path + * starts with \\?\ + * Those paths can be up to 32k characters long. + * Was added specifically for OpenOffice, those paths can't be converted + * to URIs anyway. + */ + if ((path[0] == '\\') && (path[1] == '\\') && (path[2] == '?') && + (path[3] == '\\') ) + return xmlStrdup((const xmlChar *) path); +#endif + + /* sanitize filename starting with // so it can be used as URI */ + if ((path[0] == '/') && (path[1] == '/') && (path[2] != '/')) + path++; + if ((uri = xmlParseURI((const char *) path)) != NULL) { xmlFreeURI(uri); return xmlStrdup(path); } + /* Check if this is an "absolute uri" */ absuri = xmlStrstr(path, BAD_CAST "://"); if (absuri != NULL) { int l, j; @@ -2370,47 +2430,55 @@ /* * this looks like an URI where some parts have not been - * escaped leading to a parsing problem check that the first + * escaped leading to a parsing problem. Check that the first * part matches a protocol. */ l = absuri - path; + /* Bypass if first part (part before the '://') is > 20 chars */ if ((l <= 0) || (l > 20)) goto path_processing; + /* Bypass if any non-alpha characters are present in first part */ for (j = 0;j < l;j++) { c = path[j]; if (!(((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z')))) goto path_processing; } + /* Escape all except the characters specified in the supplied path */ escURI = xmlURIEscapeStr(path, BAD_CAST ":/?_.#&;="); if (escURI != NULL) { + /* Try parsing the escaped path */ uri = xmlParseURI((const char *) escURI); + /* If successful, return the escaped string */ if (uri != NULL) { xmlFreeURI(uri); return escURI; } - xmlFreeURI(uri); } } path_processing: -#if defined(_WIN32) && !defined(__CYGWIN__) +/* For Windows implementations, replace backslashes with 'forward slashes' */ +#if defined(_WIN32) && !defined(__CYGWIN__) /* - * This really need to be cleaned up by someone with a Windows box + * Create a URI structure */ uri = xmlCreateURI(); - if (uri == NULL) { + if (uri == NULL) { /* Guard against 'out of memory' */ return(NULL); } len = xmlStrlen(path); if ((len > 2) && IS_WINDOWS_PATH(path)) { + /* make the scheme 'file' */ uri->scheme = xmlStrdup(BAD_CAST "file"); + /* allocate space for leading '/' + path + string terminator */ uri->path = xmlMallocAtomic(len + 2); if (uri->path == NULL) { - xmlFreeURI(uri); + xmlFreeURI(uri); /* Guard agains 'out of memory' */ return(NULL); } + /* Put in leading '/' plus path */ uri->path[0] = '/'; p = uri->path + 1; strncpy(p, path, len + 1); @@ -2422,18 +2490,15 @@ } p = uri->path; } + /* Now change all occurences of '\' to '/' */ while (*p != '\0') { if (*p == '\\') *p = '/'; p++; } - if (uri->path == NULL) { - xmlFreeURI(uri); - return(NULL); - } if (uri->scheme == NULL) { - ret = xmlStrdup((const xmlChar *) path); + ret = xmlStrdup((const xmlChar *) uri->path); } else { ret = xmlSaveUri(uri); } @@ -2451,7 +2516,7 @@ * * Constructs an URI expressing the existing path * - * Returns a new URI, or a duplicate of the path parameter if the + * Returns a new URI, or a duplicate of the path parameter if the * construction fails. The caller is responsible for freeing the memory * occupied by the returned string. If there is insufficient memory available, * or the argument is NULL, the function returns NULL. @@ -2473,6 +2538,24 @@ cal = xmlCanonicPath(path); if (cal == NULL) return(NULL); +#if defined(_WIN32) && !defined(__CYGWIN__) + /* xmlCanonicPath can return an URI on Windows (is that the intended behaviour?) + If 'cal' is a valid URI allready then we are done here, as continuing would make + it invalid. */ + if ((uri = xmlParseURI((const char *) cal)) != NULL) { + xmlFreeURI(uri); + return cal; + } + /* 'cal' can contain a relative path with backslashes. If that is processed + by xmlSaveURI, they will be escaped and the external entity loader machinery + will fail. So convert them to slashes. Misuse 'ret' for walking. */ + ret = cal; + while (*ret != '\0') { + if (*ret == '\\') + *ret = '/'; + ret++; + } +#endif memset(&temp, 0, sizeof(temp)); temp.path = (char *) cal; ret = xmlSaveUri(&temp); diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/uri.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/uri.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/uri.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/uri.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -23,6 +23,10 @@ * * A parsed URI reference. This is a struct containing the various fields * as described in RFC 2396 but separated for further processing. + * + * Note: query is a deprecated field which is incorrectly unescaped. + * query_raw takes precedence over query if the former is set. + * See: http://mail.gnome.org/archives/xml/2007-April/thread.html#00127 */ typedef struct _xmlURI xmlURI; typedef xmlURI *xmlURIPtr; @@ -34,9 +38,10 @@ char *user; /* the user part */ int port; /* the port number */ char *path; /* the path string */ - char *query; /* the query string */ + char *query; /* the query string (deprecated - use with caution) */ char *fragment; /* the fragment identifier */ int cleanup; /* parsing potentially unclean URI */ + char *query_raw; /* the query string (as it appears in the URI) */ }; /* @@ -44,43 +49,43 @@ * xmlChar * xmlNodeGetBase (xmlDocPtr doc, * xmlNodePtr cur); */ -XMLPUBFUN xmlURIPtr XMLCALL +XMLPUBFUN xmlURIPtr XMLCALL xmlCreateURI (void); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlBuildURI (const xmlChar *URI, - const xmlChar *base); -XMLPUBFUN xmlChar * XMLCALL + const xmlChar *base); +XMLPUBFUN xmlChar * XMLCALL xmlBuildRelativeURI (const xmlChar *URI, - const xmlChar *base); -XMLPUBFUN xmlURIPtr XMLCALL + const xmlChar *base); +XMLPUBFUN xmlURIPtr XMLCALL xmlParseURI (const char *str); -XMLPUBFUN xmlURIPtr XMLCALL +XMLPUBFUN xmlURIPtr XMLCALL xmlParseURIRaw (const char *str, int raw); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlParseURIReference (xmlURIPtr uri, const char *str); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlSaveUri (xmlURIPtr uri); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlPrintURI (FILE *stream, xmlURIPtr uri); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlURIEscapeStr (const xmlChar *str, - const xmlChar *list); -XMLPUBFUN char * XMLCALL + const xmlChar *list); +XMLPUBFUN char * XMLCALL xmlURIUnescapeString (const char *str, int len, char *target); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNormalizeURIPath (char *path); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlURIEscape (const xmlChar *str); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeURI (xmlURIPtr uri); -XMLPUBFUN xmlChar* XMLCALL +XMLPUBFUN xmlChar* XMLCALL xmlCanonicPath (const xmlChar *path); -XMLPUBFUN xmlChar* XMLCALL +XMLPUBFUN xmlChar* XMLCALL xmlPathToURI (const xmlChar *path); #ifdef __cplusplus diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/valid.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/valid.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/valid.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/valid.c 2015-12-23 07:08:27.000000000 +0000 @@ -31,11 +31,16 @@ /* #define DEBUG_VALID_ALGO */ /* #define DEBUG_REGEXP_ALGO */ -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); +#ifdef LIBXML_VALID_ENABLED +static int +xmlValidateAttributeValueInternal(xmlDocPtr doc, xmlAttributeType type, + const xmlChar *value); +#endif /************************************************************************ * * * Error handling routines * @@ -117,7 +122,7 @@ __xmlRaiseError(NULL, channel, data, pctxt, NULL, XML_FROM_VALID, error, XML_ERR_ERROR, NULL, 0, NULL, NULL, NULL, 0, 0, - msg); + "%s", msg); } #if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) @@ -296,7 +301,7 @@ if (elemDecl->contModel == NULL) xmlValidBuildContentModel(ctxt, elemDecl); if (elemDecl->contModel != NULL) { - ctxt->vstateTab[ctxt->vstateNr].exec = + ctxt->vstateTab[ctxt->vstateNr].exec = xmlRegNewExecCtxt(elemDecl->contModel, NULL, NULL); } else { ctxt->vstateTab[ctxt->vstateNr].exec = NULL; @@ -618,7 +623,7 @@ #define DEBUG_VALID_STATE(n,c) xmlValidStateDebug(ctxt); #define DEBUG_VALID_MSG(m) \ xmlGenericError(xmlGenericErrorContext, "%s\n", m); - + #else #define DEBUG_VALID_STATE(n,c) #define DEBUG_VALID_MSG(m) @@ -632,8 +637,6 @@ else if ((doc->intSubset == NULL) && \ (doc->extSubset == NULL)) return(0) -xmlAttributePtr xmlScanAttributeDecl(xmlDtdPtr dtd, const xmlChar *elem); - #ifdef LIBXML_REGEXP_ENABLED /************************************************************************ @@ -673,7 +676,7 @@ xmlAutomataStatePtr oldstate = ctxt->state; xmlChar fn[50]; xmlChar *fullname; - + fullname = xmlBuildQName(content->name, content->prefix, fn, 50); if (fullname == NULL) { xmlVErrMemory(ctxt, "Building content model"); @@ -698,9 +701,9 @@ break; case XML_ELEMENT_CONTENT_MULT: ctxt->state = xmlAutomataNewEpsilon(ctxt->am, - ctxt->state, NULL); + ctxt->state, NULL); xmlAutomataNewTransition(ctxt->am, - ctxt->state, ctxt->state, fullname, NULL); + ctxt->state, ctxt->state, fullname, NULL); break; } if ((fullname != fn) && (fullname != content->name)) @@ -749,7 +752,7 @@ xmlElementContentOccur ocur; ocur = content->ocur; - if ((ocur == XML_ELEMENT_CONTENT_PLUS) || + if ((ocur == XML_ELEMENT_CONTENT_PLUS) || (ocur == XML_ELEMENT_CONTENT_MULT)) { ctxt->state = xmlAutomataNewEpsilon(ctxt->am, ctxt->state, NULL); @@ -941,7 +944,7 @@ } break; default: - xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, + xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, "Internal: ELEMENT content corrupted invalid type\n", NULL); return(NULL); @@ -998,7 +1001,7 @@ * @cur: An element content pointer. * * Build a copy of an element content description. - * + * * Returns the new xmlElementContentPtr or NULL in case of error. */ xmlElementContentPtr @@ -1025,7 +1028,7 @@ else ret->name = xmlStrdup(cur->name); } - + if (cur->prefix != NULL) { if (dict) ret->prefix = xmlDictLookup(dict, cur->prefix, -1); @@ -1055,7 +1058,7 @@ else tmp->name = xmlStrdup(cur->name); } - + if (cur->prefix != NULL) { if (dict) tmp->prefix = xmlDictLookup(dict, cur->prefix, -1); @@ -1079,7 +1082,7 @@ * * Build a copy of an element content description. * Deprecated, use xmlCopyDocElementContent instead - * + * * Returns the new xmlElementContentPtr or NULL in case of error. */ xmlElementContentPtr @@ -1111,7 +1114,7 @@ case XML_ELEMENT_CONTENT_OR: break; default: - xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, + xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, "Internal: ELEMENT content corrupted invalid type\n", NULL); return; @@ -1197,7 +1200,7 @@ xmlDumpElementContent(buf, content->c2, 0); break; default: - xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, + xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, "Internal: ELEMENT content corrupted invalid type\n", NULL); } @@ -1394,7 +1397,7 @@ switch (type) { case XML_ELEMENT_TYPE_EMPTY: if (content != NULL) { - xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, + xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, "xmlAddElementDecl: content != NULL for EMPTY\n", NULL); return(NULL); @@ -1402,7 +1405,7 @@ break; case XML_ELEMENT_TYPE_ANY: if (content != NULL) { - xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, + xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, "xmlAddElementDecl: content != NULL for ANY\n", NULL); return(NULL); @@ -1410,7 +1413,7 @@ break; case XML_ELEMENT_TYPE_MIXED: if (content == NULL) { - xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, + xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, "xmlAddElementDecl: content == NULL for MIXED\n", NULL); return(NULL); @@ -1418,14 +1421,14 @@ break; case XML_ELEMENT_TYPE_ELEMENT: if (content == NULL) { - xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, + xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, "xmlAddElementDecl: content == NULL for ELEMENT\n", NULL); return(NULL); } break; default: - xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, + xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, "Internal: ELEMENT decl corrupted invalid type\n", NULL); return(NULL); @@ -1605,7 +1608,7 @@ * @elem: An element * * Build a copy of an element. - * + * * Returns the new xmlElementPtr or NULL in case of error. */ static xmlElementPtr @@ -1639,7 +1642,7 @@ * @table: An element table * * Build a copy of an element table. - * + * * Returns the new xmlElementTablePtr or NULL in case of error. */ xmlElementTablePtr @@ -1704,7 +1707,7 @@ xmlBufferWriteChar(buf, ">\n"); break; default: - xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, + xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, "Internal: ELEMENT struct corrupted invalid type\n", NULL); } @@ -1795,6 +1798,7 @@ if (cur == NULL) return(NULL); ret = xmlCreateEnumeration((xmlChar *) cur->name); + if (ret == NULL) return(NULL); if (cur->next != NULL) ret->next = xmlCopyEnumeration(cur->next); else ret->next = NULL; @@ -1815,7 +1819,7 @@ xmlDumpEnumeration(xmlBufferPtr buf, xmlEnumerationPtr cur) { if ((buf == NULL) || (cur == NULL)) return; - + xmlBufferWriteCHAR(buf, cur->name); if (cur->next == NULL) xmlBufferWriteChar(buf, ")"); @@ -1828,53 +1832,6 @@ #ifdef LIBXML_VALID_ENABLED /** - * xmlScanAttributeDeclCallback: - * @attr: the attribute decl - * @list: the list to update - * - * Callback called by xmlScanAttributeDecl when a new attribute - * has to be entered in the list. - */ -static void -xmlScanAttributeDeclCallback(xmlAttributePtr attr, xmlAttributePtr *list, - const xmlChar* name ATTRIBUTE_UNUSED) { - attr->nexth = *list; - *list = attr; -} - -/** - * xmlScanAttributeDecl: - * @dtd: pointer to the DTD - * @elem: the element name - * - * When inserting a new element scan the DtD for existing attributes - * for that element and initialize the Attribute chain - * - * Returns the pointer to the first attribute decl in the chain, - * possibly NULL. - */ -xmlAttributePtr -xmlScanAttributeDecl(xmlDtdPtr dtd, const xmlChar *elem) { - xmlAttributePtr ret = NULL; - xmlAttributeTablePtr table; - - if (dtd == NULL) { - return(NULL); - } - if (elem == NULL) { - return(NULL); - } - table = (xmlAttributeTablePtr) dtd->attributes; - if (table == NULL) - return(NULL); - - /* WRONG !!! */ - xmlHashScan3(table, NULL, NULL, elem, - (xmlHashScanner) xmlScanAttributeDeclCallback, &ret); - return(ret); -} - -/** * xmlScanIDAttributeDecl: * @ctxt: the validation context * @elem: the element name @@ -2017,14 +1974,14 @@ case XML_ATTRIBUTE_NOTATION: break; default: - xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, + xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, "Internal: ATTRIBUTE struct corrupted invalid type\n", NULL); xmlFreeEnumeration(tree); return(NULL); } - if ((defaultValue != NULL) && - (!xmlValidateAttributeValue(type, defaultValue))) { + if ((defaultValue != NULL) && + (!xmlValidateAttributeValueInternal(dtd->doc, type, defaultValue))) { xmlErrValidNode(ctxt, (xmlNodePtr) dtd, XML_DTD_ATTRIBUTE_DEFAULT, "Attribute %s of %s: invalid default value\n", elem, name, defaultValue); @@ -2042,8 +1999,10 @@ (dtd->doc->intSubset != NULL) && (dtd->doc->intSubset->attributes != NULL)) { ret = xmlHashLookup3(dtd->doc->intSubset->attributes, name, ns, elem); - if (ret != NULL) + if (ret != NULL) { + xmlFreeEnumeration(tree); return(NULL); + } } /* @@ -2057,6 +2016,7 @@ if (table == NULL) { xmlVErrMemory(ctxt, "xmlAddAttributeDecl: Table creation failed!\n"); + xmlFreeEnumeration(tree); return(NULL); } @@ -2064,6 +2024,7 @@ ret = (xmlAttributePtr) xmlMalloc(sizeof(xmlAttribute)); if (ret == NULL) { xmlVErrMemory(ctxt, "malloc failed"); + xmlFreeEnumeration(tree); return(NULL); } memset(ret, 0, sizeof(xmlAttribute)); @@ -2193,7 +2154,7 @@ * @attr: An attribute * * Build a copy of an attribute. - * + * * Returns the new xmlAttributePtr or NULL in case of error. */ static xmlAttributePtr @@ -2226,7 +2187,7 @@ * @table: An attribute table * * Build a copy of an attribute table. - * + * * Returns the new xmlAttributeTablePtr or NULL in case of error. */ xmlAttributeTablePtr @@ -2291,7 +2252,7 @@ xmlDumpEnumeration(buf, attr->tree); break; default: - xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, + xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, "Internal: ATTRIBUTE struct corrupted invalid type\n", NULL); } @@ -2308,7 +2269,7 @@ xmlBufferWriteChar(buf, " #FIXED"); break; default: - xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, + xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, "Internal: ATTRIBUTE struct corrupted invalid def\n", NULL); } @@ -2438,7 +2399,7 @@ */ if (xmlHashAddEntry(table, name, ret)) { #ifdef LIBXML_VALID_ENABLED - xmlErrValid(NULL, XML_DTD_NOTATION_REDEFINED, + xmlErrValid(NULL, XML_DTD_NOTATION_REDEFINED, "xmlAddNotationDecl: %s already defined\n", (const char *) name); #endif /* LIBXML_VALID_ENABLED */ @@ -2465,7 +2426,7 @@ * @nota: A notation * * Build a copy of a notation. - * + * * Returns the new xmlNotationPtr or NULL in case of error. */ static xmlNotationPtr @@ -2497,7 +2458,7 @@ * @table: A notation table * * Build a copy of a notation table. - * + * * Returns the new xmlNotationTablePtr or NULL in case of error. */ xmlNotationTablePtr @@ -2575,7 +2536,7 @@ * current scope */ #define DICT_FREE(str) \ - if ((str) && ((!dict) || \ + if ((str) && ((!dict) || \ (xmlDictOwns(dict, (const xmlChar *)(str)) == 0))) \ xmlFree((char *)(str)); @@ -2613,7 +2574,7 @@ * * Returns NULL if not, otherwise the new xmlIDPtr */ -xmlIDPtr +xmlIDPtr xmlAddID(xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value, xmlAttrPtr attr) { xmlIDPtr ret; @@ -2673,10 +2634,9 @@ /* * The id is already defined in this DTD. */ - if ((ctxt != NULL) && (ctxt->error != NULL)) { + if (ctxt != NULL) { xmlErrValidNode(ctxt, attr->parent, XML_DTD_ID_REDEFINED, - "ID %s already defined\n", - value, NULL, NULL); + "ID %s already defined\n", value, NULL, NULL); } #endif /* LIBXML_VALID_ENABLED */ xmlFreeID(ret); @@ -2719,14 +2679,15 @@ (!strcmp((char *) attr->ns->prefix, "xml"))) return(1); if (doc == NULL) return(0); - if ((doc->intSubset == NULL) && (doc->extSubset == NULL)) { + if ((doc->intSubset == NULL) && (doc->extSubset == NULL) && + (doc->type != XML_HTML_DOCUMENT_NODE)) { return(0); } else if (doc->type == XML_HTML_DOCUMENT_NODE) { if ((xmlStrEqual(BAD_CAST "id", attr->name)) || ((xmlStrEqual(BAD_CAST "name", attr->name)) && - ((elem == NULL) || (!xmlStrEqual(elem->name, BAD_CAST "input"))))) + ((elem == NULL) || (xmlStrEqual(elem->name, BAD_CAST "a"))))) return(1); - return(0); + return(0); } else if (elem == NULL) { return(0); } else { @@ -2779,23 +2740,24 @@ if (doc == NULL) return(-1); if (attr == NULL) return(-1); + table = (xmlIDTablePtr) doc->ids; - if (table == NULL) + if (table == NULL) return(-1); - if (attr == NULL) - return(-1); ID = xmlNodeListGetString(doc, attr->children, 1); if (ID == NULL) - return(-1); + return(-1); + id = xmlHashLookup(table, ID); if (id == NULL || id->attr != attr) { - xmlFree(ID); - return(-1); + xmlFree(ID); + return(-1); } + xmlHashRemoveEntry(table, ID, (xmlHashDeallocator) xmlFreeID); xmlFree(ID); - attr->atype = 0; + attr->atype = 0; return(0); } @@ -2808,7 +2770,7 @@ * * Returns NULL if not found, otherwise the xmlAttrPtr defining the ID */ -xmlAttrPtr +xmlAttrPtr xmlGetID(xmlDocPtr doc, const xmlChar *ID) { xmlIDTablePtr table; xmlIDPtr id; @@ -2822,7 +2784,7 @@ } table = (xmlIDTablePtr) doc->ids; - if (table == NULL) + if (table == NULL) return(NULL); id = xmlHashLookup(table, ID); @@ -2843,7 +2805,7 @@ * Refs * * * ************************************************************************/ -typedef struct xmlRemoveMemo_t +typedef struct xmlRemoveMemo_t { xmlListPtr l; xmlAttrPtr ap; @@ -2851,7 +2813,7 @@ typedef xmlRemoveMemo *xmlRemoveMemoPtr; -typedef struct xmlValidateMemo_t +typedef struct xmlValidateMemo_t { xmlValidCtxtPtr ctxt; const xmlChar *name; @@ -2934,7 +2896,7 @@ * * Returns NULL if not, otherwise the new xmlRefPtr */ -xmlRefPtr +xmlRefPtr xmlAddRef(xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value, xmlAttrPtr attr) { xmlRefPtr ret; @@ -2998,19 +2960,32 @@ xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, "xmlAddRef: Reference list creation failed!\n", NULL); - return(NULL); + goto failed; } if (xmlHashAddEntry(table, value, ref_list) < 0) { xmlListDelete(ref_list); xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, "xmlAddRef: Reference list insertion failed!\n", NULL); - return(NULL); + goto failed; } } -/* xmlListInsert(ref_list, ret); */ - xmlListAppend(ref_list, ret); + if (xmlListAppend(ref_list, ret) != 0) { + xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, + "xmlAddRef: Reference list insertion failed!\n", + NULL); + goto failed; + } return(ret); +failed: + if (ret != NULL) { + if (ret->value != NULL) + xmlFree((char *)ret->value); + if (ret->name != NULL) + xmlFree((char *)ret->name); + xmlFree(ret); + } + return(NULL); } /** @@ -3049,7 +3024,7 @@ return(0); } else if (doc->type == XML_HTML_DOCUMENT_NODE) { /* TODO @@@ */ - return(0); + return(0); } else { xmlAttributePtr attrDecl; @@ -3085,21 +3060,21 @@ if (doc == NULL) return(-1); if (attr == NULL) return(-1); + table = (xmlRefTablePtr) doc->refs; - if (table == NULL) + if (table == NULL) return(-1); - if (attr == NULL) - return(-1); ID = xmlNodeListGetString(doc, attr->children, 1); if (ID == NULL) return(-1); - ref_list = xmlHashLookup(table, ID); + ref_list = xmlHashLookup(table, ID); if(ref_list == NULL) { xmlFree(ID); return (-1); } + /* At this point, ref_list refers to a list of references which * have the same key as the supplied attr. Our list of references * is ordered by reference address and we don't have that information @@ -3112,7 +3087,7 @@ */ target.l = ref_list; target.ap = attr; - + /* Remove the supplied attr from our list */ xmlListWalk(ref_list, xmlWalkRemoveRef, &target); @@ -3129,11 +3104,11 @@ * @doc: pointer to the document * @ID: the ID value * - * Find the set of references for the supplied ID. + * Find the set of references for the supplied ID. * * Returns NULL if not found, otherwise node set for the ID. */ -xmlListPtr +xmlListPtr xmlGetRefs(xmlDocPtr doc, const xmlChar *ID) { xmlRefTablePtr table; @@ -3146,7 +3121,7 @@ } table = (xmlRefTablePtr) doc->refs; - if (table == NULL) + if (table == NULL) return(NULL); return (xmlHashLookup(table, ID)); @@ -3211,7 +3186,7 @@ if (dtd->doc != NULL) dict = dtd->doc->dict; - if (!create) + if (!create) return(NULL); /* * Create the Element table if needed. @@ -3377,7 +3352,8 @@ xmlValidateNotationUse(xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *notationName) { xmlNotationPtr notaDecl; - if ((doc == NULL) || (doc->intSubset == NULL)) return(-1); + if ((doc == NULL) || (doc->intSubset == NULL) || + (notationName == NULL)) return(-1); notaDecl = xmlGetDtdNotationDesc(doc->intSubset, notationName); if ((notaDecl == NULL) && (doc->extSubset != NULL)) @@ -3432,8 +3408,78 @@ } #ifdef LIBXML_VALID_ENABLED + +static int +xmlIsDocNameStartChar(xmlDocPtr doc, int c) { + if ((doc == NULL) || (doc->properties & XML_DOC_OLD10) == 0) { + /* + * Use the new checks of production [4] [4a] amd [5] of the + * Update 5 of XML-1.0 + */ + if (((c >= 'a') && (c <= 'z')) || + ((c >= 'A') && (c <= 'Z')) || + (c == '_') || (c == ':') || + ((c >= 0xC0) && (c <= 0xD6)) || + ((c >= 0xD8) && (c <= 0xF6)) || + ((c >= 0xF8) && (c <= 0x2FF)) || + ((c >= 0x370) && (c <= 0x37D)) || + ((c >= 0x37F) && (c <= 0x1FFF)) || + ((c >= 0x200C) && (c <= 0x200D)) || + ((c >= 0x2070) && (c <= 0x218F)) || + ((c >= 0x2C00) && (c <= 0x2FEF)) || + ((c >= 0x3001) && (c <= 0xD7FF)) || + ((c >= 0xF900) && (c <= 0xFDCF)) || + ((c >= 0xFDF0) && (c <= 0xFFFD)) || + ((c >= 0x10000) && (c <= 0xEFFFF))) + return(1); + } else { + if (IS_LETTER(c) || (c == '_') || (c == ':')) + return(1); + } + return(0); +} + +static int +xmlIsDocNameChar(xmlDocPtr doc, int c) { + if ((doc == NULL) || (doc->properties & XML_DOC_OLD10) == 0) { + /* + * Use the new checks of production [4] [4a] amd [5] of the + * Update 5 of XML-1.0 + */ + if (((c >= 'a') && (c <= 'z')) || + ((c >= 'A') && (c <= 'Z')) || + ((c >= '0') && (c <= '9')) || /* !start */ + (c == '_') || (c == ':') || + (c == '-') || (c == '.') || (c == 0xB7) || /* !start */ + ((c >= 0xC0) && (c <= 0xD6)) || + ((c >= 0xD8) && (c <= 0xF6)) || + ((c >= 0xF8) && (c <= 0x2FF)) || + ((c >= 0x300) && (c <= 0x36F)) || /* !start */ + ((c >= 0x370) && (c <= 0x37D)) || + ((c >= 0x37F) && (c <= 0x1FFF)) || + ((c >= 0x200C) && (c <= 0x200D)) || + ((c >= 0x203F) && (c <= 0x2040)) || /* !start */ + ((c >= 0x2070) && (c <= 0x218F)) || + ((c >= 0x2C00) && (c <= 0x2FEF)) || + ((c >= 0x3001) && (c <= 0xD7FF)) || + ((c >= 0xF900) && (c <= 0xFDCF)) || + ((c >= 0xFDF0) && (c <= 0xFFFD)) || + ((c >= 0x10000) && (c <= 0xEFFFF))) + return(1); + } else { + if ((IS_LETTER(c)) || (IS_DIGIT(c)) || + (c == '.') || (c == '-') || + (c == '_') || (c == ':') || + (IS_COMBINING(c)) || + (IS_EXTENDER(c))) + return(1); + } + return(0); +} + /** * xmlValidateNameValue: + * @doc: pointer to the document or NULL * @value: an Name value * * Validate that the given value match Name production @@ -3441,8 +3487,8 @@ * returns 1 if valid or 0 otherwise */ -int -xmlValidateNameValue(const xmlChar *value) { +static int +xmlValidateNameValueInternal(xmlDocPtr doc, const xmlChar *value) { const xmlChar *cur; int val, len; @@ -3450,18 +3496,12 @@ cur = value; val = xmlStringCurrentChar(NULL, cur, &len); cur += len; - if (!IS_LETTER(val) && (val != '_') && - (val != ':')) { + if (!xmlIsDocNameStartChar(doc, val)) return(0); - } val = xmlStringCurrentChar(NULL, cur, &len); cur += len; - while ((IS_LETTER(val)) || (IS_DIGIT(val)) || - (val == '.') || (val == '-') || - (val == '_') || (val == ':') || - (IS_COMBINING(val)) || - (IS_EXTENDER(val))) { + while (xmlIsDocNameChar(doc, val)) { val = xmlStringCurrentChar(NULL, cur, &len); cur += len; } @@ -3472,7 +3512,22 @@ } /** - * xmlValidateNamesValue: + * xmlValidateNameValue: + * @value: an Name value + * + * Validate that the given value match Name production + * + * returns 1 if valid or 0 otherwise + */ + +int +xmlValidateNameValue(const xmlChar *value) { + return(xmlValidateNameValueInternal(NULL, value)); +} + +/** + * xmlValidateNamesValueInternal: + * @doc: pointer to the document or NULL * @value: an Names value * * Validate that the given value match Names production @@ -3480,8 +3535,8 @@ * returns 1 if valid or 0 otherwise */ -int -xmlValidateNamesValue(const xmlChar *value) { +static int +xmlValidateNamesValueInternal(xmlDocPtr doc, const xmlChar *value) { const xmlChar *cur; int val, len; @@ -3489,19 +3544,13 @@ cur = value; val = xmlStringCurrentChar(NULL, cur, &len); cur += len; - - if (!IS_LETTER(val) && (val != '_') && - (val != ':')) { + + if (!xmlIsDocNameStartChar(doc, val)) return(0); - } val = xmlStringCurrentChar(NULL, cur, &len); cur += len; - while ((IS_LETTER(val)) || (IS_DIGIT(val)) || - (val == '.') || (val == '-') || - (val == '_') || (val == ':') || - (IS_COMBINING(val)) || - (IS_EXTENDER(val))) { + while (xmlIsDocNameChar(doc, val)) { val = xmlStringCurrentChar(NULL, cur, &len); cur += len; } @@ -3513,18 +3562,13 @@ cur += len; } - if (!IS_LETTER(val) && (val != '_') && - (val != ':')) { + if (!xmlIsDocNameStartChar(doc, val)) return(0); - } + val = xmlStringCurrentChar(NULL, cur, &len); cur += len; - while ((IS_LETTER(val)) || (IS_DIGIT(val)) || - (val == '.') || (val == '-') || - (val == '_') || (val == ':') || - (IS_COMBINING(val)) || - (IS_EXTENDER(val))) { + while (xmlIsDocNameChar(doc, val)) { val = xmlStringCurrentChar(NULL, cur, &len); cur += len; } @@ -3536,18 +3580,33 @@ } /** - * xmlValidateNmtokenValue: + * xmlValidateNamesValue: + * @value: an Names value + * + * Validate that the given value match Names production + * + * returns 1 if valid or 0 otherwise + */ + +int +xmlValidateNamesValue(const xmlChar *value) { + return(xmlValidateNamesValueInternal(NULL, value)); +} + +/** + * xmlValidateNmtokenValueInternal: + * @doc: pointer to the document or NULL * @value: an Nmtoken value * * Validate that the given value match Nmtoken production * * [ VC: Name Token ] - * + * * returns 1 if valid or 0 otherwise */ -int -xmlValidateNmtokenValue(const xmlChar *value) { +static int +xmlValidateNmtokenValueInternal(xmlDocPtr doc, const xmlChar *value) { const xmlChar *cur; int val, len; @@ -3555,19 +3614,13 @@ cur = value; val = xmlStringCurrentChar(NULL, cur, &len); cur += len; - - if (!IS_LETTER(val) && !IS_DIGIT(val) && - (val != '.') && (val != '-') && - (val != '_') && (val != ':') && - (!IS_COMBINING(val)) && - (!IS_EXTENDER(val))) + + if (!xmlIsDocNameChar(doc, val)) return(0); - while ((IS_LETTER(val)) || (IS_DIGIT(val)) || - (val == '.') || (val == '-') || - (val == '_') || (val == ':') || - (IS_COMBINING(val)) || - (IS_EXTENDER(val))) { + val = xmlStringCurrentChar(NULL, cur, &len); + cur += len; + while (xmlIsDocNameChar(doc, val)) { val = xmlStringCurrentChar(NULL, cur, &len); cur += len; } @@ -3578,18 +3631,35 @@ } /** - * xmlValidateNmtokensValue: + * xmlValidateNmtokenValue: + * @value: an Nmtoken value + * + * Validate that the given value match Nmtoken production + * + * [ VC: Name Token ] + * + * returns 1 if valid or 0 otherwise + */ + +int +xmlValidateNmtokenValue(const xmlChar *value) { + return(xmlValidateNmtokenValueInternal(NULL, value)); +} + +/** + * xmlValidateNmtokensValueInternal: + * @doc: pointer to the document or NULL * @value: an Nmtokens value * * Validate that the given value match Nmtokens production * * [ VC: Name Token ] - * + * * returns 1 if valid or 0 otherwise */ -int -xmlValidateNmtokensValue(const xmlChar *value) { +static int +xmlValidateNmtokensValueInternal(xmlDocPtr doc, const xmlChar *value) { const xmlChar *cur; int val, len; @@ -3597,24 +3667,16 @@ cur = value; val = xmlStringCurrentChar(NULL, cur, &len); cur += len; - + while (IS_BLANK(val)) { val = xmlStringCurrentChar(NULL, cur, &len); cur += len; } - if (!IS_LETTER(val) && !IS_DIGIT(val) && - (val != '.') && (val != '-') && - (val != '_') && (val != ':') && - (!IS_COMBINING(val)) && - (!IS_EXTENDER(val))) + if (!xmlIsDocNameChar(doc, val)) return(0); - while ((IS_LETTER(val)) || (IS_DIGIT(val)) || - (val == '.') || (val == '-') || - (val == '_') || (val == ':') || - (IS_COMBINING(val)) || - (IS_EXTENDER(val))) { + while (xmlIsDocNameChar(doc, val)) { val = xmlStringCurrentChar(NULL, cur, &len); cur += len; } @@ -3627,18 +3689,13 @@ } if (val == 0) return(1); - if (!IS_LETTER(val) && !IS_DIGIT(val) && - (val != '.') && (val != '-') && - (val != '_') && (val != ':') && - (!IS_COMBINING(val)) && - (!IS_EXTENDER(val))) + if (!xmlIsDocNameChar(doc, val)) return(0); - while ((IS_LETTER(val)) || (IS_DIGIT(val)) || - (val == '.') || (val == '-') || - (val == '_') || (val == ':') || - (IS_COMBINING(val)) || - (IS_EXTENDER(val))) { + val = xmlStringCurrentChar(NULL, cur, &len); + cur += len; + + while (xmlIsDocNameChar(doc, val)) { val = xmlStringCurrentChar(NULL, cur, &len); cur += len; } @@ -3650,6 +3707,22 @@ } /** + * xmlValidateNmtokensValue: + * @value: an Nmtokens value + * + * Validate that the given value match Nmtokens production + * + * [ VC: Name Token ] + * + * returns 1 if valid or 0 otherwise + */ + +int +xmlValidateNmtokensValue(const xmlChar *value) { + return(xmlValidateNmtokensValueInternal(NULL, value)); +} + +/** * xmlValidateNotationDecl: * @ctxt: the validation context * @doc: a document instance @@ -3673,6 +3746,40 @@ } /** + * xmlValidateAttributeValueInternal: + * @doc: the document + * @type: an attribute type + * @value: an attribute value + * + * Validate that the given attribute value match the proper production + * + * returns 1 if valid or 0 otherwise + */ + +static int +xmlValidateAttributeValueInternal(xmlDocPtr doc, xmlAttributeType type, + const xmlChar *value) { + switch (type) { + case XML_ATTRIBUTE_ENTITIES: + case XML_ATTRIBUTE_IDREFS: + return(xmlValidateNamesValueInternal(doc, value)); + case XML_ATTRIBUTE_ENTITY: + case XML_ATTRIBUTE_IDREF: + case XML_ATTRIBUTE_ID: + case XML_ATTRIBUTE_NOTATION: + return(xmlValidateNameValueInternal(doc, value)); + case XML_ATTRIBUTE_NMTOKENS: + case XML_ATTRIBUTE_ENUMERATION: + return(xmlValidateNmtokensValueInternal(doc, value)); + case XML_ATTRIBUTE_NMTOKEN: + return(xmlValidateNmtokenValueInternal(doc, value)); + case XML_ATTRIBUTE_CDATA: + break; + } + return(1); +} + +/** * xmlValidateAttributeValue: * @type: an attribute type * @value: an attribute value @@ -3692,31 +3799,13 @@ * * [ VC: Name Token ] * Values of type NMTOKEN must match the Nmtoken production; values - * of type NMTOKENS must match Nmtokens. + * of type NMTOKENS must match Nmtokens. * * returns 1 if valid or 0 otherwise */ - int xmlValidateAttributeValue(xmlAttributeType type, const xmlChar *value) { - switch (type) { - case XML_ATTRIBUTE_ENTITIES: - case XML_ATTRIBUTE_IDREFS: - return(xmlValidateNamesValue(value)); - case XML_ATTRIBUTE_ENTITY: - case XML_ATTRIBUTE_IDREF: - case XML_ATTRIBUTE_ID: - case XML_ATTRIBUTE_NOTATION: - return(xmlValidateNameValue(value)); - case XML_ATTRIBUTE_NMTOKENS: - case XML_ATTRIBUTE_ENUMERATION: - return(xmlValidateNmtokensValue(value)); - case XML_ATTRIBUTE_NMTOKEN: - return(xmlValidateNmtokenValue(value)); - case XML_ATTRIBUTE_CDATA: - break; - } - return(1); + return(xmlValidateAttributeValueInternal(NULL, type, value)); } /** @@ -3769,7 +3858,7 @@ if ((ent == NULL) && (doc->standalone == 1)) { doc->standalone = 0; ent = xmlGetDocEntity(doc, value); - } + } if (ent == NULL) { xmlErrValidNode(ctxt, (xmlNodePtr) doc, XML_DTD_UNKNOWN_ENTITY, @@ -3880,7 +3969,7 @@ if ((elem->ns != NULL) && (elem->ns->prefix != NULL)) { xmlChar fn[50]; xmlChar *fullname; - + fullname = xmlBuildQName(elem->name, elem->ns->prefix, fn, 50); if (fullname == NULL) return(NULL); @@ -3965,13 +4054,10 @@ if ((elem->ns != NULL) && (elem->ns->prefix != NULL)) { xmlChar fn[50]; xmlChar *fullname; - + fullname = xmlBuildQName(elem->name, elem->ns->prefix, fn, 50); if (fullname == NULL) return(NULL); - attrDecl = xmlGetDtdAttrDesc(doc->intSubset, fullname, name); - if ((attrDecl == NULL) && (doc->extSubset != NULL)) - attrDecl = xmlGetDtdAttrDesc(doc->extSubset, fullname, name); if ((fullname != fn) && (fullname != elem->name)) xmlFree(fullname); } @@ -4034,11 +4120,12 @@ int val; CHECK_DTD; if(attr == NULL) return(1); - + /* Attribute Default Legal */ /* Enumeration */ if (attr->defaultValue != NULL) { - val = xmlValidateAttributeValue(attr->atype, attr->defaultValue); + val = xmlValidateAttributeValueInternal(doc, attr->atype, + attr->defaultValue); if (val == 0) { xmlErrValidNode(ctxt, (xmlNodePtr) attr, XML_DTD_ATTRIBUTE_DEFAULT, "Syntax of default value for attribute %s of %s is not valid\n", @@ -4081,7 +4168,7 @@ } } if (nbId > 1) { - + xmlErrValidNodeNr(ctxt, (xmlNodePtr) attr, XML_DTD_ID_SUBSET, "Element %s has %d ID attribute defined in the internal subset : %s\n", attr->elem, nbId, attr->name); @@ -4144,7 +4231,7 @@ xmlElementPtr tst; CHECK_DTD; - + if (elem == NULL) return(1); #if 0 @@ -4169,15 +4256,15 @@ while (next != NULL) { if (next->type == XML_ELEMENT_CONTENT_ELEMENT) { if ((xmlStrEqual(next->name, name)) && - (xmlStrEqual(next->prefix, cur->prefix))) { - if (cur->prefix == NULL) { + (xmlStrEqual(next->prefix, cur->c1->prefix))) { + if (cur->c1->prefix == NULL) { xmlErrValidNode(ctxt, (xmlNodePtr) elem, XML_DTD_CONTENT_ERROR, "Definition of %s has duplicate references of %s\n", elem->name, name, NULL); } else { xmlErrValidNode(ctxt, (xmlNodePtr) elem, XML_DTD_CONTENT_ERROR, "Definition of %s has duplicate references of %s:%s\n", - elem->name, cur->prefix, name); + elem->name, cur->c1->prefix, name); } ret = 0; } @@ -4186,15 +4273,15 @@ if (next->c1 == NULL) break; if (next->c1->type != XML_ELEMENT_CONTENT_ELEMENT) break; if ((xmlStrEqual(next->c1->name, name)) && - (xmlStrEqual(next->c1->prefix, cur->prefix))) { - if (cur->prefix == NULL) { + (xmlStrEqual(next->c1->prefix, cur->c1->prefix))) { + if (cur->c1->prefix == NULL) { xmlErrValidNode(ctxt, (xmlNodePtr) elem, XML_DTD_CONTENT_ERROR, "Definition of %s has duplicate references to %s\n", elem->name, name, NULL); } else { xmlErrValidNode(ctxt, (xmlNodePtr) elem, XML_DTD_CONTENT_ERROR, "Definition of %s has duplicate references to %s:%s\n", - elem->name, cur->prefix, name); + elem->name, cur->c1->prefix, name); } ret = 0; } @@ -4261,7 +4348,7 @@ int xmlValidateOneAttribute(xmlValidCtxtPtr ctxt, xmlDocPtr doc, - xmlNodePtr elem, xmlAttrPtr attr, const xmlChar *value) + xmlNodePtr elem, xmlAttrPtr attr, const xmlChar *value) { xmlAttributePtr attrDecl = NULL; int val; @@ -4274,7 +4361,7 @@ if ((elem->ns != NULL) && (elem->ns->prefix != NULL)) { xmlChar fn[50]; xmlChar *fullname; - + fullname = xmlBuildQName(elem->name, elem->ns->prefix, fn, 50); if (fullname == NULL) return(0); @@ -4319,7 +4406,7 @@ } attr->atype = attrDecl->atype; - val = xmlValidateAttributeValue(attrDecl->atype, value); + val = xmlValidateAttributeValueInternal(doc, attrDecl->atype, value); if (val == 0) { xmlErrValidNode(ctxt, elem, XML_DTD_ATTRIBUTE_VALUE, "Syntax of value for attribute %s of %s is not valid\n", @@ -4358,7 +4445,7 @@ nota = xmlGetDtdNotationDesc(doc->intSubset, value); if (nota == NULL) nota = xmlGetDtdNotationDesc(doc->extSubset, value); - + if (nota == NULL) { xmlErrValidNode(ctxt, elem, XML_DTD_UNKNOWN_NOTATION, "Value \"%s\" for attribute %s of %s is not a declared Notation\n", @@ -4451,7 +4538,7 @@ if (prefix != NULL) { xmlChar fn[50]; xmlChar *fullname; - + fullname = xmlBuildQName(elem->name, prefix, fn, 50); if (fullname == NULL) { xmlVErrMemory(ctxt, "Validating namespace"); @@ -4504,7 +4591,7 @@ return(0); } - val = xmlValidateAttributeValue(attrDecl->atype, value); + val = xmlValidateAttributeValueInternal(doc, attrDecl->atype, value); if (val == 0) { if (ns->prefix != NULL) { xmlErrValidNode(ctxt, elem, XML_DTD_INVALID_DEFAULT, @@ -4555,7 +4642,7 @@ nota = xmlGetDtdNotationDesc(doc->intSubset, value); if (nota == NULL) nota = xmlGetDtdNotationDesc(doc->extSubset, value); - + if (nota == NULL) { if (ns->prefix != NULL) { xmlErrValidNode(ctxt, elem, XML_DTD_UNKNOWN_NOTATION, @@ -4691,7 +4778,7 @@ NODE = xmlValidateSkipIgnorable(NODE); if ((NODE == NULL) && (CONT == NULL)) return(1); - if ((NODE == NULL) && + if ((NODE == NULL) && ((CONT->ocur == XML_ELEMENT_CONTENT_MULT) || (CONT->ocur == XML_ELEMENT_CONTENT_OPT))) { return(1); @@ -5150,7 +5237,7 @@ xmlElementContentPtr cont; const xmlChar *name; - if (elemDecl == NULL) + if ((elemDecl == NULL) || (parent == NULL) || (ctxt == NULL)) return(-1); cont = elemDecl->content; name = elemDecl->name; @@ -5200,7 +5287,7 @@ if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) { xmlChar fn[50]; xmlChar *fullname; - + fullname = xmlBuildQName(cur->name, cur->ns->prefix, fn, 50); if (fullname == NULL) { @@ -5314,7 +5401,7 @@ last = tmp; } if (cur->type == XML_CDATA_SECTION_NODE) { - /* + /* * E59 spaces in CDATA does not match the * nonterminal S */ @@ -5431,7 +5518,8 @@ int ret = 1; xmlNodePtr cur, child; - if ((ctxt == NULL) || (doc == NULL) || (elem == NULL)) + if ((ctxt == NULL) || (doc == NULL) || (elem == NULL) || + (elem->type != XML_ELEMENT_NODE)) return(0); child = elem->children; @@ -5512,7 +5600,7 @@ } else if ((cont->type != XML_ELEMENT_CONTENT_OR) || (cont->c1 == NULL) || (cont->c1->type != XML_ELEMENT_CONTENT_PCDATA)){ - xmlErrValid(NULL, XML_DTD_MIXED_CORRUPT, + xmlErrValid(NULL, XML_DTD_MIXED_CORRUPT, "Internal: MIXED struct corrupted\n", NULL); break; @@ -5536,7 +5624,7 @@ } else if ((cont->type != XML_ELEMENT_CONTENT_OR) || (cont->c1 == NULL) || (cont->c1->type != XML_ELEMENT_CONTENT_PCDATA)){ - xmlErrValid(ctxt, XML_DTD_MIXED_CORRUPT, + xmlErrValid(ctxt, XML_DTD_MIXED_CORRUPT, "Internal: MIXED struct corrupted\n", NULL); break; @@ -5565,7 +5653,7 @@ xmlElementPtr elemDecl = NULL; const xmlChar *prefix = NULL; - if ((ctxt == NULL) || (doc == NULL) || + if ((ctxt == NULL) || (doc == NULL) || (elem == NULL) || (elem->name == NULL)) return(NULL); if (extsubset != NULL) @@ -5709,7 +5797,7 @@ * xmlValidatePushCData: * @ctxt: the validation context * @data: some character data read - * @len: the lenght of the data + * @len: the length of the data * * check the CData parsed for validation in the current stack * @@ -5931,7 +6019,7 @@ return(0); /* - * If vstateNr is not zero that means continuous validation is + * If vstateNr is not zero that means continuous validation is * activated, do not try to check the content model at that level. */ if (ctxt->vstateNr == 0) { @@ -5974,7 +6062,7 @@ if ((child->ns != NULL) && (child->ns->prefix != NULL)) { xmlChar fn[50]; xmlChar *fullname; - + fullname = xmlBuildQName(child->name, child->ns->prefix, fn, 50); if (fullname == NULL) @@ -5992,7 +6080,7 @@ } else if ((cont->type != XML_ELEMENT_CONTENT_OR) || (cont->c1 == NULL) || (cont->c1->type != XML_ELEMENT_CONTENT_PCDATA)){ - xmlErrValid(NULL, XML_DTD_MIXED_CORRUPT, + xmlErrValid(NULL, XML_DTD_MIXED_CORRUPT, "Internal: MIXED struct corrupted\n", NULL); break; @@ -6015,7 +6103,7 @@ } else if ((cont->type != XML_ELEMENT_CONTENT_OR) || (cont->c1 == NULL) || (cont->c1->type != XML_ELEMENT_CONTENT_PCDATA)) { - xmlErrValid(ctxt, XML_DTD_MIXED_CORRUPT, + xmlErrValid(ctxt, XML_DTD_MIXED_CORRUPT, "Internal: MIXED struct corrupted\n", NULL); break; @@ -6095,7 +6183,7 @@ } } else { xmlAttrPtr attrib; - + attrib = elem->properties; while (attrib != NULL) { if (xmlStrEqual(attrib->name, attr->name)) { @@ -6110,18 +6198,18 @@ * allow to define the URI instead of the prefix :-( */ if (nameSpace == NULL) { - if (qualified < 0) + if (qualified < 0) qualified = 0; } else if (!xmlStrEqual(nameSpace->prefix, attr->prefix)) { - if (qualified < 1) + if (qualified < 1) qualified = 1; } else goto found; } else { /* * We should allow applications to define namespaces - * for their application even if the DTD doesn't + * for their application even if the DTD doesn't * carry one, otherwise, basically we would always * break. */ @@ -6194,7 +6282,7 @@ } } } -found: +found: attr = attr->nexth; } return(ret); @@ -6241,7 +6329,7 @@ if ((root->ns != NULL) && (root->ns->prefix != NULL)) { xmlChar fn[50]; xmlChar *fullname; - + fullname = xmlBuildQName(root->name, root->ns->prefix, fn, 50); if (fullname == NULL) { xmlVErrMemory(ctxt, NULL); @@ -6252,7 +6340,7 @@ xmlFree(fullname); if (ret == 1) goto name_ok; - } + } if ((xmlStrEqual(doc->intSubset->name, BAD_CAST "HTML")) && (xmlStrEqual(root->name, BAD_CAST "html"))) goto name_ok; @@ -6273,7 +6361,7 @@ * @doc: a document instance * @elem: an element instance * - * Try to validate the subtree under an element + * Try to validate the subtree under an element * * returns 1 if valid or 0 otherwise */ @@ -6293,7 +6381,8 @@ * they don't really mean anything validation wise. */ if ((elem->type == XML_XINCLUDE_START) || - (elem->type == XML_XINCLUDE_END)) + (elem->type == XML_XINCLUDE_END) || + (elem->type == XML_NAMESPACE_DECL)) return(1); CHECK_DTD; @@ -6452,7 +6541,7 @@ memo.name = name; xmlListWalk(ref_list, xmlWalkValidateList, &memo); - + } /** @@ -6464,7 +6553,7 @@ * incremental validation steps have been completed * * basically it does the following checks described by the XML Rec - * + * * Check all the IDREF/IDREFS attributes definition for validity * * returns 1 if valid or 0 otherwise @@ -6473,15 +6562,20 @@ int xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt, xmlDocPtr doc) { xmlRefTablePtr table; + unsigned int save; if (ctxt == NULL) return(0); if (doc == NULL) { - xmlErrValid(ctxt, XML_DTD_NO_DOC, + xmlErrValid(ctxt, XML_DTD_NO_DOC, "xmlValidateDocumentFinal: doc == NULL\n", NULL); return(0); } + /* trick to get correct line id report */ + save = ctxt->finishDtd; + ctxt->finishDtd = 0; + /* * Check all the NOTATION/NOTATIONS attributes */ @@ -6495,6 +6589,8 @@ ctxt->doc = doc; ctxt->valid = 1; xmlHashScan(table, (xmlHashScanner) xmlValidateCheckRefCallback, ctxt); + + ctxt->finishDtd = save; return(ctxt->valid); } @@ -6589,7 +6685,7 @@ case XML_ATTRIBUTE_ENTITIES: case XML_ATTRIBUTE_NOTATION: if (cur->defaultValue != NULL) { - + ret = xmlValidateAttributeValue2(ctxt, ctxt->doc, cur->name, cur->atype, cur->defaultValue); if ((ret == 0) && (ctxt->valid == 1)) @@ -6646,9 +6742,9 @@ * subsets have been parsed * * basically it does the following checks described by the XML Rec - * - check that ENTITY and ENTITIES type attributes default or + * - check that ENTITY and ENTITIES type attributes default or * possible values matches one of the defined entities. - * - check that NOTATION type attributes default or + * - check that NOTATION type attributes default or * possible values matches one of the defined notations. * * returns 1 if valid or 0 if invalid and -1 if not well-formed @@ -6660,7 +6756,7 @@ xmlAttributeTablePtr table; xmlEntitiesTablePtr entities; - if (doc == NULL) return(0); + if ((doc == NULL) || (ctxt == NULL)) return(0); if ((doc->intSubset == NULL) && (doc->extSubset == NULL)) return(0); ctxt->doc = doc; @@ -6719,7 +6815,7 @@ xmlChar *sysID; if (doc->intSubset->SystemID != NULL) { sysID = xmlBuildURI(doc->intSubset->SystemID, - doc->URL); + doc->URL); if (sysID == NULL) { xmlErrValid(ctxt, XML_DTD_LOAD_ERROR, "Could not build URI for external subset \"%s\"\n", @@ -6792,17 +6888,17 @@ if (*len >= max) return(*len); switch (ctree->type) { - case XML_ELEMENT_CONTENT_PCDATA: + case XML_ELEMENT_CONTENT_PCDATA: for (i = 0; i < *len;i++) if (xmlStrEqual(BAD_CAST "#PCDATA", names[i])) return(*len); names[(*len)++] = BAD_CAST "#PCDATA"; break; - case XML_ELEMENT_CONTENT_ELEMENT: + case XML_ELEMENT_CONTENT_ELEMENT: for (i = 0; i < *len;i++) if (xmlStrEqual(ctree->name, names[i])) return(*len); names[(*len)++] = ctree->name; break; - case XML_ELEMENT_CONTENT_SEQ: + case XML_ELEMENT_CONTENT_SEQ: xmlValidGetPotentialChildren(ctree->c1, names, len, max); xmlValidGetPotentialChildren(ctree->c2, names, len, max); break; @@ -6811,7 +6907,7 @@ xmlValidGetPotentialChildren(ctree->c2, names, len, max); break; } - + return(*len); } @@ -6853,19 +6949,19 @@ int max) { xmlValidCtxt vctxt; int nb_valid_elements = 0; - const xmlChar *elements[256]; + const xmlChar *elements[256]={0}; int nb_elements = 0, i; const xmlChar *name; - + xmlNode *ref_node; xmlNode *parent; xmlNode *test_node; - + xmlNode *prev_next; xmlNode *next_prev; xmlNode *parent_childs; xmlNode *parent_last; - + xmlElement *element_desc; if (prev == NULL && next == NULL) @@ -6890,7 +6986,7 @@ element_desc = xmlGetDtdElementDesc(parent->doc->extSubset, parent->name); if (element_desc == NULL) return(-1); - + /* * Do a backup of the current tree structure */ @@ -6901,16 +6997,19 @@ /* * Creates a dummy node and insert it into the tree - */ + */ test_node = xmlNewDocNode (ref_node->doc, NULL, BAD_CAST "", NULL); + if (test_node == NULL) + return(-1); + test_node->parent = parent; test_node->prev = prev; test_node->next = next; name = test_node->name; - + if (prev) prev->next = test_node; else parent->children = test_node; - + if (next) next->prev = test_node; else parent->last = test_node; @@ -6920,7 +7019,7 @@ */ nb_elements = xmlValidGetPotentialChildren(element_desc->content, elements, &nb_elements, 256); - + for (i = 0;i < nb_elements;i++) { test_node->name = elements[i]; if (xmlValidateOneElement(&vctxt, parent->doc, parent)) { diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/valid.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/valid.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/valid.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/valid.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -41,7 +41,7 @@ */ typedef void (XMLCDECL *xmlValidityErrorFunc) (void *ctx, const char *msg, - ...); + ...) LIBXML_ATTR_FORMAT(2,3); /** * xmlValidityWarningFunc: @@ -56,7 +56,7 @@ */ typedef void (XMLCDECL *xmlValidityWarningFunc) (void *ctx, const char *msg, - ...); + ...) LIBXML_ATTR_FORMAT(2,3); #ifdef IN_LIBXML /** @@ -150,55 +150,55 @@ typedef xmlRefTable *xmlRefTablePtr; /* Notation */ -XMLPUBFUN xmlNotationPtr XMLCALL +XMLPUBFUN xmlNotationPtr XMLCALL xmlAddNotationDecl (xmlValidCtxtPtr ctxt, xmlDtdPtr dtd, const xmlChar *name, const xmlChar *PublicID, const xmlChar *SystemID); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlNotationTablePtr XMLCALL +XMLPUBFUN xmlNotationTablePtr XMLCALL xmlCopyNotationTable (xmlNotationTablePtr table); #endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeNotationTable (xmlNotationTablePtr table); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDumpNotationDecl (xmlBufferPtr buf, xmlNotationPtr nota); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDumpNotationTable (xmlBufferPtr buf, xmlNotationTablePtr table); #endif /* LIBXML_OUTPUT_ENABLED */ /* Element Content */ /* the non Doc version are being deprecated */ -XMLPUBFUN xmlElementContentPtr XMLCALL +XMLPUBFUN xmlElementContentPtr XMLCALL xmlNewElementContent (const xmlChar *name, xmlElementContentType type); -XMLPUBFUN xmlElementContentPtr XMLCALL +XMLPUBFUN xmlElementContentPtr XMLCALL xmlCopyElementContent (xmlElementContentPtr content); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeElementContent (xmlElementContentPtr cur); /* the new versions with doc argument */ -XMLPUBFUN xmlElementContentPtr XMLCALL +XMLPUBFUN xmlElementContentPtr XMLCALL xmlNewDocElementContent (xmlDocPtr doc, const xmlChar *name, xmlElementContentType type); -XMLPUBFUN xmlElementContentPtr XMLCALL +XMLPUBFUN xmlElementContentPtr XMLCALL xmlCopyDocElementContent(xmlDocPtr doc, xmlElementContentPtr content); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeDocElementContent(xmlDocPtr doc, xmlElementContentPtr cur); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSnprintfElementContent(char *buf, int size, xmlElementContentPtr content, int englob); #ifdef LIBXML_OUTPUT_ENABLED /* DEPRECATED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSprintfElementContent(char *buf, xmlElementContentPtr content, int englob); @@ -206,39 +206,39 @@ /* DEPRECATED */ /* Element */ -XMLPUBFUN xmlElementPtr XMLCALL +XMLPUBFUN xmlElementPtr XMLCALL xmlAddElementDecl (xmlValidCtxtPtr ctxt, xmlDtdPtr dtd, const xmlChar *name, xmlElementTypeVal type, xmlElementContentPtr content); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlElementTablePtr XMLCALL +XMLPUBFUN xmlElementTablePtr XMLCALL xmlCopyElementTable (xmlElementTablePtr table); #endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeElementTable (xmlElementTablePtr table); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDumpElementTable (xmlBufferPtr buf, xmlElementTablePtr table); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDumpElementDecl (xmlBufferPtr buf, xmlElementPtr elem); #endif /* LIBXML_OUTPUT_ENABLED */ /* Enumeration */ -XMLPUBFUN xmlEnumerationPtr XMLCALL +XMLPUBFUN xmlEnumerationPtr XMLCALL xmlCreateEnumeration (const xmlChar *name); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeEnumeration (xmlEnumerationPtr cur); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlEnumerationPtr XMLCALL +XMLPUBFUN xmlEnumerationPtr XMLCALL xmlCopyEnumeration (xmlEnumerationPtr cur); #endif /* LIBXML_TREE_ENABLED */ /* Attribute */ -XMLPUBFUN xmlAttributePtr XMLCALL +XMLPUBFUN xmlAttributePtr XMLCALL xmlAddAttributeDecl (xmlValidCtxtPtr ctxt, xmlDtdPtr dtd, const xmlChar *elem, @@ -249,55 +249,55 @@ const xmlChar *defaultValue, xmlEnumerationPtr tree); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlAttributeTablePtr XMLCALL +XMLPUBFUN xmlAttributeTablePtr XMLCALL xmlCopyAttributeTable (xmlAttributeTablePtr table); #endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeAttributeTable (xmlAttributeTablePtr table); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDumpAttributeTable (xmlBufferPtr buf, xmlAttributeTablePtr table); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDumpAttributeDecl (xmlBufferPtr buf, xmlAttributePtr attr); #endif /* LIBXML_OUTPUT_ENABLED */ /* IDs */ -XMLPUBFUN xmlIDPtr XMLCALL +XMLPUBFUN xmlIDPtr XMLCALL xmlAddID (xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value, xmlAttrPtr attr); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeIDTable (xmlIDTablePtr table); -XMLPUBFUN xmlAttrPtr XMLCALL +XMLPUBFUN xmlAttrPtr XMLCALL xmlGetID (xmlDocPtr doc, const xmlChar *ID); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlIsID (xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr); -XMLPUBFUN int XMLCALL - xmlRemoveID (xmlDocPtr doc, +XMLPUBFUN int XMLCALL + xmlRemoveID (xmlDocPtr doc, xmlAttrPtr attr); /* IDREFs */ -XMLPUBFUN xmlRefPtr XMLCALL +XMLPUBFUN xmlRefPtr XMLCALL xmlAddRef (xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value, xmlAttrPtr attr); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeRefTable (xmlRefTablePtr table); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlIsRef (xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr); -XMLPUBFUN int XMLCALL - xmlRemoveRef (xmlDocPtr doc, +XMLPUBFUN int XMLCALL + xmlRemoveRef (xmlDocPtr doc, xmlAttrPtr attr); -XMLPUBFUN xmlListPtr XMLCALL +XMLPUBFUN xmlListPtr XMLCALL xmlGetRefs (xmlDocPtr doc, const xmlChar *ID); @@ -306,146 +306,146 @@ */ #ifdef LIBXML_VALID_ENABLED /* Allocate/Release Validation Contexts */ -XMLPUBFUN xmlValidCtxtPtr XMLCALL +XMLPUBFUN xmlValidCtxtPtr XMLCALL xmlNewValidCtxt(void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeValidCtxt(xmlValidCtxtPtr); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateRoot (xmlValidCtxtPtr ctxt, xmlDocPtr doc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateElementDecl (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlElementPtr elem); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlValidNormalizeAttributeValue(xmlDocPtr doc, xmlNodePtr elem, const xmlChar *name, const xmlChar *value); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem, const xmlChar *name, const xmlChar *value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlAttributePtr attr); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateAttributeValue(xmlAttributeType type, const xmlChar *value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateNotationDecl (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNotationPtr nota); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateDtd (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlDtdPtr dtd); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateDtdFinal (xmlValidCtxtPtr ctxt, xmlDocPtr doc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateDocument (xmlValidCtxtPtr ctxt, xmlDocPtr doc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateElement (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateOneElement (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateOneAttribute (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr, const xmlChar *value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateOneNamespace (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem, const xmlChar *prefix, xmlNsPtr ns, const xmlChar *value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt, xmlDocPtr doc); #endif /* LIBXML_VALID_ENABLED */ #if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateNotationUse (xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *notationName); #endif /* LIBXML_VALID_ENABLED or LIBXML_SCHEMAS_ENABLED */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlIsMixedElement (xmlDocPtr doc, const xmlChar *name); -XMLPUBFUN xmlAttributePtr XMLCALL +XMLPUBFUN xmlAttributePtr XMLCALL xmlGetDtdAttrDesc (xmlDtdPtr dtd, const xmlChar *elem, const xmlChar *name); -XMLPUBFUN xmlAttributePtr XMLCALL +XMLPUBFUN xmlAttributePtr XMLCALL xmlGetDtdQAttrDesc (xmlDtdPtr dtd, const xmlChar *elem, const xmlChar *name, const xmlChar *prefix); -XMLPUBFUN xmlNotationPtr XMLCALL +XMLPUBFUN xmlNotationPtr XMLCALL xmlGetDtdNotationDesc (xmlDtdPtr dtd, const xmlChar *name); -XMLPUBFUN xmlElementPtr XMLCALL +XMLPUBFUN xmlElementPtr XMLCALL xmlGetDtdQElementDesc (xmlDtdPtr dtd, const xmlChar *name, const xmlChar *prefix); -XMLPUBFUN xmlElementPtr XMLCALL +XMLPUBFUN xmlElementPtr XMLCALL xmlGetDtdElementDesc (xmlDtdPtr dtd, const xmlChar *name); #ifdef LIBXML_VALID_ENABLED -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidGetPotentialChildren(xmlElementContent *ctree, const xmlChar **names, int *len, int max); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidGetValidElements(xmlNode *prev, xmlNode *next, const xmlChar **names, int max); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateNameValue (const xmlChar *value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateNamesValue (const xmlChar *value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateNmtokenValue (const xmlChar *value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateNmtokensValue(const xmlChar *value); #ifdef LIBXML_REGEXP_ENABLED /* * Validation based on the regexp support */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidBuildContentModel(xmlValidCtxtPtr ctxt, xmlElementPtr elem); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidatePushElement (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem, const xmlChar *qname); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidatePushCData (xmlValidCtxtPtr ctxt, const xmlChar *data, int len); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidatePopElement (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem, diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xinclude.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xinclude.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xinclude.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xinclude.c 2015-12-23 07:08:27.000000000 +0000 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -26,6 +27,7 @@ #ifdef LIBXML_XINCLUDE_ENABLED #include +#include "buf.h" #define XINCLUDE_MAX_DEPTH 40 @@ -92,7 +94,7 @@ /************************************************************************ * * - * XInclude error handler * + * XInclude error handler * * * ************************************************************************/ @@ -412,14 +414,13 @@ * xmlXIncludeParseFile: * @ctxt: the XInclude context * @URL: the URL or file path - * + * * parse a document for XInclude */ static xmlDocPtr xmlXIncludeParseFile(xmlXIncludeCtxtPtr ctxt, const char *URL) { xmlDocPtr ret; xmlParserCtxtPtr pctxt; - char *directory = NULL; xmlParserInputPtr inputStream; xmlInitParser(); @@ -434,20 +435,20 @@ * pass in the application data to the parser context. */ pctxt->_private = ctxt->_private; - + /* * try to ensure that new documents included are actually * built with the same dictionary as the including document. */ - if ((ctxt->doc != NULL) && (ctxt->doc->dict != NULL) && - (pctxt->dict != NULL)) { - xmlDictFree(pctxt->dict); + if ((ctxt->doc != NULL) && (ctxt->doc->dict != NULL)) { + if (pctxt->dict != NULL) + xmlDictFree(pctxt->dict); pctxt->dict = ctxt->doc->dict; xmlDictReference(pctxt->dict); } xmlCtxtUseOptions(pctxt, ctxt->parseFlags | XML_PARSE_DTDLOAD); - + inputStream = xmlLoadExternalEntity(URL, NULL, pctxt); if (inputStream == NULL) { xmlFreeParserCtxt(pctxt); @@ -456,10 +457,8 @@ inputPush(pctxt, inputStream); - if ((pctxt->directory == NULL) && (directory == NULL)) - directory = xmlParserGetDirectory(URL); - if ((pctxt->directory == NULL) && (directory != NULL)) - pctxt->directory = (char *) xmlStrdup((xmlChar *) directory); + if (pctxt->directory == NULL) + pctxt->directory = xmlParserGetDirectory(URL); pctxt->loadsubset |= XML_DETECT_IDS; @@ -475,7 +474,7 @@ pctxt->myDoc = NULL; } xmlFreeParserCtxt(pctxt); - + return(ret); } @@ -483,7 +482,7 @@ * xmlXIncludeAddNode: * @ctxt: the XInclude context * @cur: the new node - * + * * Add a new node to process to an XInclude context */ static int @@ -514,11 +513,10 @@ href = xmlXIncludeGetProp(ctxt, cur, XINCLUDE_HREF); if (href == NULL) { href = xmlStrdup(BAD_CAST ""); /* @@@@ href is now optional */ - if (href == NULL) + if (href == NULL) return(-1); - local = 1; } - if (href[0] == '#') + if ((href[0] == '#') || (href[0] == 0)) local = 1; parse = xmlXIncludeGetProp(ctxt, cur, XINCLUDE_PARSE); if (parse != NULL) { @@ -617,6 +615,19 @@ } /* + * If local and xml then we need a fragment + */ + if ((local == 1) && (xml == 1) && + ((fragment == NULL) || (fragment[0] == 0))) { + xmlXIncludeErr(ctxt, cur, XML_XINCLUDE_RECURSION, + "detected a local recursion with no xpointer in %s\n", + URL); + if (fragment != NULL) + xmlFree(fragment); + return(-1); + } + + /* * Check the URL against the stack for recursions */ if ((!local) && (xml == 1)) { @@ -646,7 +657,7 @@ * @ctxt: the XInclude context * @doc: the new document * @url: the associated URL - * + * * The XInclude recursive nature is handled at this point. */ static void @@ -673,6 +684,10 @@ newctxt = xmlXIncludeNewContext(doc); if (newctxt != NULL) { /* + * Copy the private user data + */ + newctxt->_private = ctxt->_private; + /* * Copy the existing document set */ newctxt->incMax = ctxt->incMax; @@ -736,7 +751,7 @@ * @ctxt: the XInclude context * @txt: the new text node * @url: the associated URL - * + * * Add a new txtument to the list */ static void @@ -785,13 +800,17 @@ * * ************************************************************************/ +static xmlNodePtr +xmlXIncludeCopyNodeList(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target, + xmlDocPtr source, xmlNodePtr elem); + /** * xmlXIncludeCopyNode: * @ctxt: the XInclude context * @target: the document target * @source: the document source * @elem: the element - * + * * Make a copy of the node while preserving the XInclude semantic * of the Infoset copy */ @@ -805,7 +824,10 @@ return(NULL); if (elem->type == XML_DTD_NODE) return(NULL); - result = xmlDocCopyNode(elem, target, 1); + if (elem->type == XML_DOCUMENT_NODE) + result = xmlXIncludeCopyNodeList(ctxt, target, source, elem->children); + else + result = xmlDocCopyNode(elem, target, 1); return(result); } @@ -815,7 +837,7 @@ * @target: the document target * @source: the document source * @elem: the element list - * + * * Make a copy of the node list while preserving the XInclude semantic * of the Infoset copy */ @@ -854,11 +876,11 @@ static xmlNodePtr xmlXIncludeGetNthChild(xmlNodePtr cur, int no) { int i; - if (cur == NULL) - return(cur); + if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) + return(NULL); cur = cur->children; for (i = 0;i <= no;cur = cur->next) { - if (cur == NULL) + if (cur == NULL) return(cur); if ((cur->type == XML_ELEMENT_NODE) || (cur->type == XML_DOCUMENT_NODE) || @@ -902,11 +924,13 @@ return(NULL); start = (xmlNodePtr) range->user; - if (start == NULL) + if ((start == NULL) || (start->type == XML_NAMESPACE_DECL)) return(NULL); end = range->user2; if (end == NULL) return(xmlDocCopyNode(start, target, 1)); + if (end->type == XML_NAMESPACE_DECL) + return(NULL); cur = start; index1 = range->index; @@ -954,7 +978,6 @@ if ((cur == start) && (index1 > 1)) { content += (index1 - 1); len -= (index1 - 1); - index1 = 0; } else { len = index2; } @@ -966,7 +989,7 @@ /* prune and return full set */ if (level == lastLevel) xmlAddNextSibling(last, tmp); - else + else xmlAddChild(last, tmp); return(list); } else { /* ending node not a text node */ @@ -1185,6 +1208,7 @@ } break; } +#ifdef LIBXML_XPTR_ENABLED case XPATH_LOCATIONSET: { xmlLocationSetPtr set = (xmlLocationSetPtr) obj->user; if (set == NULL) @@ -1204,7 +1228,6 @@ } break; } -#ifdef LIBXML_XPTR_ENABLED case XPATH_RANGE: return(xmlXIncludeCopyRange(ctxt, target, source, obj)); #endif @@ -1270,7 +1293,7 @@ if (prev != NULL) { if (ent->etype != prev->etype) goto error; - + if ((ent->SystemID != NULL) && (prev->SystemID != NULL)) { if (!xmlStrEqual(ent->SystemID, prev->SystemID)) goto error; @@ -1370,7 +1393,7 @@ * @ctxt: the XInclude context * @url: the associated URL * @nr: the xinclude node number - * + * * Load the document, and store the result in the XInclude context * * Returns 0 in case of success, -1 in case of failure @@ -1394,7 +1417,7 @@ */ uri = xmlParseURI((const char *)url); if (uri == NULL) { - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_HREF_URI, "invalid value URI %s\n", url); return(-1); @@ -1412,7 +1435,7 @@ xmlFreeURI(uri); if (URL == NULL) { if (ctxt->incTab != NULL) - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_HREF_URI, "invalid value URI %s\n", url); else @@ -1531,7 +1554,7 @@ ctxt->incTab[nr]->inc = xmlXIncludeCopyNodeList(ctxt, ctxt->doc, doc, doc->children); } - } + } #ifdef LIBXML_XPTR_ENABLED else { /* @@ -1549,7 +1572,7 @@ xptrctxt = xmlXPtrNewContext(doc, NULL, NULL); } if (xptrctxt == NULL) { - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_XPTR_FAILED, "could not create XPointer context\n", NULL); xmlFree(URL); @@ -1575,7 +1598,7 @@ case XPATH_POINT: case XPATH_USERS: case XPATH_XSLT_TREE: - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_XPTR_RESULT, "XPointer is not a range: #%s\n", fragment); @@ -1602,6 +1625,7 @@ if (set->nodeTab[i] == NULL) continue; switch (set->nodeTab[i]->type) { + case XML_ELEMENT_NODE: case XML_TEXT_NODE: case XML_CDATA_SECTION_NODE: case XML_ENTITY_REF_NODE: @@ -1614,28 +1638,16 @@ case XML_DOCB_DOCUMENT_NODE: #endif continue; - case XML_ELEMENT_NODE: { - xmlChar *nodeBase; - xmlNodePtr el = set->nodeTab[i]; - - nodeBase = xmlNodeGetBase(el->doc, el); - if (nodeBase != NULL) { - if (!xmlStrEqual(nodeBase, el->doc->URL)) - xmlNodeSetBase(el, nodeBase); - xmlFree(nodeBase); - } - continue; - } case XML_ATTRIBUTE_NODE: - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_XPTR_RESULT, "XPointer selects an attribute: #%s\n", fragment); set->nodeTab[i] = NULL; continue; case XML_NAMESPACE_DECL: - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_XPTR_RESULT, "XPointer selects a namespace: #%s\n", fragment); @@ -1650,7 +1662,7 @@ case XML_ENTITY_DECL: case XML_XINCLUDE_START: case XML_XINCLUDE_END: - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_XPTR_RESULT, "XPointer selects unexpected nodes: #%s\n", fragment); @@ -1676,7 +1688,9 @@ /* * Do the xml:base fixup if needed */ - if ((doc != NULL) && (URL != NULL) && (xmlStrchr(URL, (xmlChar) '/'))) { + if ((doc != NULL) && (URL != NULL) && + (!(ctxt->parseFlags & XML_PARSE_NOBASEFIX)) && + (!(doc->parseFlags & XML_PARSE_NOBASEFIX))) { xmlNodePtr node; xmlChar *base; xmlChar *curBase; @@ -1694,7 +1708,7 @@ */ curBase = xmlBuildRelativeURI(URL, ctxt->base); if (curBase == NULL) { /* Error return */ - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_HREF_URI, "trying to build relative URI from %s\n", URL); } else { @@ -1735,7 +1749,7 @@ xmlChar *relBase; relBase = xmlBuildURI(xmlBase, base); if (relBase == NULL) { /* error */ - xmlXIncludeErr(ctxt, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_HREF_URI, "trying to rebuild base from %s\n", @@ -1772,7 +1786,7 @@ * @ctxt: the XInclude context * @url: the associated URL * @nr: the xinclude node number - * + * * Load the content, and store the result in the XInclude context * * Returns 0 in case of success, -1 in case of failure @@ -1786,6 +1800,9 @@ int i; xmlChar *encoding = NULL; xmlCharEncoding enc = (xmlCharEncoding) 0; + xmlParserCtxtPtr pctxt; + xmlParserInputPtr inputStream; + int xinclude_multibyte_fallback_used = 0; /* * Check the URL and remove any fragment identifier @@ -1816,7 +1833,7 @@ * directly through ctxt->doc. */ if (URL[0] == 0) { - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_TEXT_DOCUMENT, "text serialization of document not available\n", NULL); xmlFree(URL); @@ -1860,40 +1877,65 @@ /* * Load it. */ - buf = xmlParserInputBufferCreateFilename((const char *)URL, enc); + pctxt = xmlNewParserCtxt(); + inputStream = xmlLoadExternalEntity((const char*)URL, NULL, pctxt); + if(inputStream == NULL) { + xmlFreeParserCtxt(pctxt); + xmlFree(URL); + return(-1); + } + buf = inputStream->buf; if (buf == NULL) { + xmlFreeInputStream (inputStream); + xmlFreeParserCtxt(pctxt); xmlFree(URL); return(-1); } + if (buf->encoder) + xmlCharEncCloseFunc(buf->encoder); + buf->encoder = xmlGetCharEncodingHandler(enc); node = xmlNewText(NULL); /* * Scan all chars from the resource and add the to the node */ +xinclude_multibyte_fallback: while (xmlParserInputBufferRead(buf, 128) > 0) { int len; const xmlChar *content; - content = xmlBufferContent(buf->buffer); - len = xmlBufferLength(buf->buffer); + content = xmlBufContent(buf->buffer); + len = xmlBufLength(buf->buffer); for (i = 0;i < len;) { int cur; int l; cur = xmlStringCurrentChar(NULL, &content[i], &l); if (!IS_CHAR(cur)) { - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, - XML_XINCLUDE_INVALID_CHAR, - "%s contains invalid char\n", URL); + /* Handle splitted multibyte char at buffer boundary */ + if (((len - i) < 4) && (!xinclude_multibyte_fallback_used)) { + xinclude_multibyte_fallback_used = 1; + xmlBufShrink(buf->buffer, i); + goto xinclude_multibyte_fallback; + } else { + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + XML_XINCLUDE_INVALID_CHAR, + "%s contains invalid char\n", URL); + xmlFreeParserInputBuffer(buf); + xmlFree(URL); + return(-1); + } } else { + xinclude_multibyte_fallback_used = 0; xmlNodeAddContentLen(node, &content[i], l); } i += l; } - xmlBufferShrink(buf->buffer, len); + xmlBufShrink(buf->buffer, len); } - xmlFreeParserInputBuffer(buf); + xmlFreeParserCtxt(pctxt); xmlXIncludeAddTxt(ctxt, node, URL); + xmlFreeInputStream(inputStream); loaded: /* @@ -1909,7 +1951,7 @@ * @ctxt: the XInclude context * @fallback: the fallback node * @nr: the xinclude node number - * + * * Load the content of the fallback node, and store the result * in the XInclude context * @@ -1919,8 +1961,9 @@ xmlXIncludeLoadFallback(xmlXIncludeCtxtPtr ctxt, xmlNodePtr fallback, int nr) { xmlXIncludeCtxtPtr newctxt; int ret = 0; - - if ((fallback == NULL) || (ctxt == NULL)) + + if ((fallback == NULL) || (fallback->type == XML_NAMESPACE_DECL) || + (ctxt == NULL)) return(-1); if (fallback->children != NULL) { /* @@ -1930,6 +1973,7 @@ newctxt = xmlXIncludeNewContext(ctxt->doc); if (newctxt == NULL) return (-1); + newctxt->_private = ctxt->_private; newctxt->base = xmlStrdup(ctxt->base); /* Inherit the base from the existing context */ xmlXIncludeSetFlags(newctxt, ctxt->parseFlags); ret = xmlXIncludeDoProcess(newctxt, ctxt->doc, fallback->children); @@ -2004,7 +2048,7 @@ href = xmlXIncludeGetProp(ctxt, cur, XINCLUDE_HREF); if (href == NULL) { href = xmlStrdup(BAD_CAST ""); /* @@@@ href is now optional */ - if (href == NULL) + if (href == NULL) return(-1); } parse = xmlXIncludeGetProp(ctxt, cur, XINCLUDE_PARSE); @@ -2049,7 +2093,7 @@ xmlFree(eschref); } if (URI == NULL) { - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_HREF_URI, "failed build URL\n", NULL); if (parse != NULL) xmlFree(parse); @@ -2082,7 +2126,7 @@ * Restore the original base before checking for fallback */ ctxt->base = oldBase; - + if (ret < 0) { xmlNodePtr children; @@ -2100,14 +2144,14 @@ ((xmlStrEqual(children->ns->href, XINCLUDE_NS)) || (xmlStrEqual(children->ns->href, XINCLUDE_OLD_NS)))) { ret = xmlXIncludeLoadFallback(ctxt, children, nr); - if (ret == 0) + if (ret == 0) break; } children = children->next; } } if (ret < 0) { - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_NO_FALLBACK, "could not load %s, and no fallback was found\n", URI); @@ -2145,7 +2189,7 @@ if ((nr < 0) || (nr >= ctxt->incNr)) return(-1); cur = ctxt->incTab[nr]->ref; - if (cur == NULL) + if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) return(-1); /* @@ -2176,7 +2220,7 @@ tmp = tmp->next; } if (nb_elem > 1) { - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_MULTIPLE_ROOT, "XInclude error: would result in multiple root nodes\n", NULL); @@ -2223,7 +2267,7 @@ } } - + return(0); } @@ -2320,7 +2364,7 @@ int ret = 0; int i, start; - if ((doc == NULL) || (tree == NULL)) + if ((doc == NULL) || (tree == NULL) || (tree->type == XML_NAMESPACE_DECL)) return(-1); if (ctxt == NULL) return(-1); @@ -2415,7 +2459,43 @@ ctxt->parseFlags = flags; return(0); } - + +/** + * xmlXIncludeProcessTreeFlagsData: + * @tree: an XML node + * @flags: a set of xmlParserOption used for parsing XML includes + * @data: application data that will be passed to the parser context + * in the _private field of the parser context(s) + * + * Implement the XInclude substitution on the XML node @tree + * + * Returns 0 if no substitution were done, -1 if some processing failed + * or the number of substitutions done. + */ + +int +xmlXIncludeProcessTreeFlagsData(xmlNodePtr tree, int flags, void *data) { + xmlXIncludeCtxtPtr ctxt; + int ret = 0; + + if ((tree == NULL) || (tree->type == XML_NAMESPACE_DECL) || + (tree->doc == NULL)) + return(-1); + + ctxt = xmlXIncludeNewContext(tree->doc); + if (ctxt == NULL) + return(-1); + ctxt->_private = data; + ctxt->base = xmlStrdup((xmlChar *)tree->doc->URL); + xmlXIncludeSetFlags(ctxt, flags); + ret = xmlXIncludeDoProcess(ctxt, tree->doc, tree); + if ((ret >= 0) && (ctxt->nbErrors > 0)) + ret = -1; + + xmlXIncludeFreeContext(ctxt); + return(ret); +} + /** * xmlXIncludeProcessFlagsData: * @doc: an XML document @@ -2430,27 +2510,14 @@ */ int xmlXIncludeProcessFlagsData(xmlDocPtr doc, int flags, void *data) { - xmlXIncludeCtxtPtr ctxt; xmlNodePtr tree; - int ret = 0; if (doc == NULL) return(-1); tree = xmlDocGetRootElement(doc); if (tree == NULL) return(-1); - ctxt = xmlXIncludeNewContext(doc); - if (ctxt == NULL) - return(-1); - ctxt->_private = data; - ctxt->base = xmlStrdup((xmlChar *)doc->URL); - xmlXIncludeSetFlags(ctxt, flags); - ret = xmlXIncludeDoProcess(ctxt, doc, tree); - if ((ret >= 0) && (ctxt->nbErrors > 0)) - ret = -1; - - xmlXIncludeFreeContext(ctxt); - return(ret); + return(xmlXIncludeProcessTreeFlagsData(tree, flags, data)); } /** @@ -2497,7 +2564,8 @@ xmlXIncludeCtxtPtr ctxt; int ret = 0; - if ((tree == NULL) || (tree->doc == NULL)) + if ((tree == NULL) || (tree->type == XML_NAMESPACE_DECL) || + (tree->doc == NULL)) return(-1); ctxt = xmlXIncludeNewContext(tree->doc); if (ctxt == NULL) @@ -2541,7 +2609,8 @@ xmlXIncludeProcessNode(xmlXIncludeCtxtPtr ctxt, xmlNodePtr node) { int ret = 0; - if ((node == NULL) || (node->doc == NULL) || (ctxt == NULL)) + if ((node == NULL) || (node->type == XML_NAMESPACE_DECL) || + (node->doc == NULL) || (ctxt == NULL)) return(-1); ret = xmlXIncludeDoProcess(ctxt, node->doc, node); if ((ret >= 0) && (ctxt->nbErrors > 0)) diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xinclude.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xinclude.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xinclude.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xinclude.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -89,18 +89,22 @@ /* * standalone processing */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXIncludeProcess (xmlDocPtr doc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXIncludeProcessFlags (xmlDocPtr doc, int flags); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXIncludeProcessFlagsData(xmlDocPtr doc, int flags, void *data); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL + xmlXIncludeProcessTreeFlagsData(xmlNodePtr tree, + int flags, + void *data); +XMLPUBFUN int XMLCALL xmlXIncludeProcessTree (xmlNodePtr tree); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXIncludeProcessTreeFlags(xmlNodePtr tree, int flags); /* diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xlink.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xlink.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xlink.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xlink.c 2015-12-23 07:08:27.000000000 +0000 @@ -47,7 +47,7 @@ * Default setting and related functions * * * ****************************************************************/ - + static xlinkHandlerPtr xlinkDefaultHandler = NULL; static xlinkNodeDetectFunc xlinkDefaultDetect = NULL; @@ -93,7 +93,7 @@ * * Set the default xlink detection routine */ -void +void xlinkSetDefaultDetect (xlinkNodeDetectFunc func) { xlinkDefaultDetect = func; } @@ -104,7 +104,7 @@ * * ****************************************************************/ - + /** * xlinkIsLink: * @doc: the document containing the node @@ -119,7 +119,7 @@ * Returns the xlinkType of the node (XLINK_TYPE_NONE if there is no * link detected. */ -xlinkType +xlinkType xlinkIsLink (xmlDocPtr doc, xmlNodePtr node) { xmlChar *type = NULL, *role = NULL; xlinkType ret = XLINK_TYPE_NONE; @@ -150,14 +150,14 @@ if (type != NULL) { if (xmlStrEqual(type, BAD_CAST "simple")) { ret = XLINK_TYPE_SIMPLE; - } if (xmlStrEqual(type, BAD_CAST "extended")) { + } else if (xmlStrEqual(type, BAD_CAST "extended")) { role = xmlGetNsProp(node, BAD_CAST "role", XLINK_NAMESPACE); if (role != NULL) { xmlNsPtr xlink; xlink = xmlSearchNs(doc, node, XLINK_NAMESPACE); if (xlink == NULL) { /* Humm, fallback method */ - if (xmlStrEqual(role, BAD_CAST"xlink:external-linkset")) + if (xmlStrEqual(role, BAD_CAST"xlink:external-linkset")) ret = XLINK_TYPE_EXTENDED_SET; } else { xmlChar buf[200]; diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xlink.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xlink.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xlink.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xlink.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -57,7 +57,7 @@ * xlinkNodeDetectFunc: * @ctx: user data pointer * @node: the node to check - * + * * This is the prototype for the link detection routine. * It calls the default link detection callbacks upon link detection. */ @@ -157,26 +157,26 @@ /* * The default detection routine, can be overridden, they call the default - * detection callbacks. + * detection callbacks. */ -XMLPUBFUN xlinkNodeDetectFunc XMLCALL +XMLPUBFUN xlinkNodeDetectFunc XMLCALL xlinkGetDefaultDetect (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xlinkSetDefaultDetect (xlinkNodeDetectFunc func); /* * Routines to set/get the default handlers. */ -XMLPUBFUN xlinkHandlerPtr XMLCALL +XMLPUBFUN xlinkHandlerPtr XMLCALL xlinkGetDefaultHandler (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xlinkSetDefaultHandler (xlinkHandlerPtr handler); /* * Link detection module itself. */ -XMLPUBFUN xlinkType XMLCALL +XMLPUBFUN xlinkType XMLCALL xlinkIsLink (xmlDocPtr doc, xmlNodePtr node); diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlautomata.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlautomata.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlautomata.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlautomata.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -40,25 +40,25 @@ /* * Building API */ -XMLPUBFUN xmlAutomataPtr XMLCALL +XMLPUBFUN xmlAutomataPtr XMLCALL xmlNewAutomata (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeAutomata (xmlAutomataPtr am); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataGetInitState (xmlAutomataPtr am); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlAutomataSetFinalState (xmlAutomataPtr am, xmlAutomataStatePtr state); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewState (xmlAutomataPtr am); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewTransition (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to, const xmlChar *token, void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewTransition2 (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to, @@ -73,7 +73,7 @@ const xmlChar *token2, void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewCountTrans (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to, @@ -81,7 +81,7 @@ int min, int max, void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewCountTrans2 (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to, @@ -90,7 +90,7 @@ int min, int max, void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewOnceTrans (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to, @@ -99,46 +99,46 @@ int max, void *data); XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewOnceTrans2 (xmlAutomataPtr am, + xmlAutomataNewOnceTrans2 (xmlAutomataPtr am, xmlAutomataStatePtr from, - xmlAutomataStatePtr to, + xmlAutomataStatePtr to, const xmlChar *token, const xmlChar *token2, - int min, - int max, + int min, + int max, void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewAllTrans (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to, int lax); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewEpsilon (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewCountedTrans (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to, int counter); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewCounterTrans (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to, int counter); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlAutomataNewCounter (xmlAutomataPtr am, int min, int max); -XMLPUBFUN xmlRegexpPtr XMLCALL +XMLPUBFUN xmlRegexpPtr XMLCALL xmlAutomataCompile (xmlAutomataPtr am); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlAutomataIsDeterminist (xmlAutomataPtr am); #ifdef __cplusplus } -#endif +#endif #endif /* LIBXML_AUTOMATA_ENABLED */ #endif /* LIBXML_REGEXP_ENABLED */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlerror.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlerror.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlerror.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlerror.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -61,7 +61,10 @@ XML_FROM_CHECK, /* The error checking module */ XML_FROM_WRITER, /* The xmlwriter module */ XML_FROM_MODULE, /* The dynamically loaded module module*/ - XML_FROM_I18N /* The module handling character conversion */ + XML_FROM_I18N, /* The module handling character conversion */ + XML_FROM_SCHEMATRONV,/* The Schematron validator module */ + XML_FROM_BUFFER, /* The buffers module */ + XML_FROM_URI /* The URI module */ } xmlErrorDomain; /** @@ -83,7 +86,7 @@ char *str2; /* extra string information */ char *str3; /* extra string information */ int int1; /* extra number information */ - int int2; /* column number of the error or 0 if N/A (todo: rename this field when we would break ABI) */ + int int2; /* error column # or 0 if N/A (todo: rename field when we would brk ABI) */ void *ctxt; /* the parser context if available */ void *node; /* the node in the tree */ }; @@ -202,11 +205,16 @@ XML_ERR_NOTATION_PROCESSING, /* 105 */ XML_WAR_NS_COLUMN, /* 106 */ XML_WAR_ENTITY_REDEFINED, /* 107 */ + XML_ERR_UNKNOWN_VERSION, /* 108 */ + XML_ERR_VERSION_MISMATCH, /* 109 */ + XML_ERR_NAME_TOO_LONG, /* 110 */ + XML_ERR_USER_STOP, /* 111 */ XML_NS_ERR_XML_NAMESPACE = 200, XML_NS_ERR_UNDEFINED_NAMESPACE, /* 201 */ XML_NS_ERR_QNAME, /* 202 */ XML_NS_ERR_ATTRIBUTE_REDEFINED, /* 203 */ XML_NS_ERR_EMPTY, /* 204 */ + XML_NS_ERR_COLON, /* 205 */ XML_DTD_ATTRIBUTE_DEFAULT = 500, XML_DTD_ATTRIBUTE_REDEFINED, /* 501 */ XML_DTD_ATTRIBUTE_VALUE, /* 502 */ @@ -248,6 +256,7 @@ XML_DTD_STANDALONE_DEFAULTED, /* 538 */ XML_DTD_XMLID_VALUE, /* 539 */ XML_DTD_XMLID_TYPE, /* 540 */ + XML_DTD_DUP_TOKEN, /* 541 */ XML_HTML_STRUCURE_ERROR = 800, XML_HTML_UNKNOWN_TAG, /* 801 */ XML_RNGP_ANYNAME_ATTR_ANCESTOR = 1000, @@ -398,6 +407,7 @@ XML_TREE_INVALID_HEX = 1300, XML_TREE_INVALID_DEC, /* 1301 */ XML_TREE_UNTERMINATED_ENTITY, /* 1302 */ + XML_TREE_NOT_UTF8, /* 1303 */ XML_SAVE_NOT_UTF8 = 1400, XML_SAVE_CHAR_INVALID, /* 1401 */ XML_SAVE_NO_DOCTYPE, /* 1402 */ @@ -639,7 +649,7 @@ XML_SCHEMAV_CVC_ELT_4_3, /* 1852 */ XML_SCHEMAV_CVC_ELT_5_1_1, /* 1853 */ XML_SCHEMAV_CVC_ELT_5_1_2, /* 1854 */ - XML_SCHEMAV_CVC_ELT_5_2_1, /* 1855 */ + XML_SCHEMAV_CVC_ELT_5_2_1, /* 1855 */ XML_SCHEMAV_CVC_ELT_5_2_2_1, /* 1856 */ XML_SCHEMAV_CVC_ELT_5_2_2_2_1, /* 1857 */ XML_SCHEMAV_CVC_ELT_5_2_2_2_2, /* 1858 */ @@ -664,7 +674,7 @@ XML_SCHEMAV_CVC_IDC, /* 1877 */ XML_SCHEMAV_CVC_WILDCARD, /* 1878 */ XML_SCHEMAV_MISC, /* 1879 */ - XML_XPTR_UNKNOWN_SCHEME = 1900, + XML_XPTR_UNKNOWN_SCHEME = 1900, XML_XPTR_CHILDSEQ_START, /* 1901 */ XML_XPTR_EVAL_FAILED, /* 1902 */ XML_XPTR_EXTRA_OBJECTS, /* 1903 */ @@ -685,15 +695,15 @@ XML_SCHEMAP_SRC_SIMPLE_TYPE_2, /* 3001 */ XML_SCHEMAP_SRC_SIMPLE_TYPE_3, /* 3002 */ XML_SCHEMAP_SRC_SIMPLE_TYPE_4, /* 3003 */ - XML_SCHEMAP_SRC_RESOLVE, /* 3004 */ + XML_SCHEMAP_SRC_RESOLVE, /* 3004 */ XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE, /* 3005 */ XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE, /* 3006 */ XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES, /* 3007 */ XML_SCHEMAP_ST_PROPS_CORRECT_1, /* 3008 */ XML_SCHEMAP_ST_PROPS_CORRECT_2, /* 3009 */ - XML_SCHEMAP_ST_PROPS_CORRECT_3, /* 3010 */ + XML_SCHEMAP_ST_PROPS_CORRECT_3, /* 3010 */ XML_SCHEMAP_COS_ST_RESTRICTS_1_1, /* 3011 */ - XML_SCHEMAP_COS_ST_RESTRICTS_1_2, /* 3012 */ + XML_SCHEMAP_COS_ST_RESTRICTS_1_2, /* 3012 */ XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1, /* 3013 */ XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2, /* 3014 */ XML_SCHEMAP_COS_ST_RESTRICTS_2_1, /* 3015 */ @@ -712,7 +722,7 @@ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3, /* 3028 */ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4, /* 3029 */ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5, /* 3030 */ - XML_SCHEMAP_COS_ST_DERIVED_OK_2_1, /* 3031 */ + XML_SCHEMAP_COS_ST_DERIVED_OK_2_1, /* 3031 */ XML_SCHEMAP_COS_ST_DERIVED_OK_2_2, /* 3032 */ XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, /* 3033 */ XML_SCHEMAP_S4S_ELEM_MISSING, /* 3034 */ @@ -731,14 +741,14 @@ XML_SCHEMAP_E_PROPS_CORRECT_4, /* 3047 */ XML_SCHEMAP_E_PROPS_CORRECT_5, /* 3048 */ XML_SCHEMAP_E_PROPS_CORRECT_6, /* 3049 */ - XML_SCHEMAP_SRC_INCLUDE, /* 3050 */ + XML_SCHEMAP_SRC_INCLUDE, /* 3050 */ XML_SCHEMAP_SRC_ATTRIBUTE_1, /* 3051 */ XML_SCHEMAP_SRC_ATTRIBUTE_2, /* 3052 */ XML_SCHEMAP_SRC_ATTRIBUTE_3_1, /* 3053 */ XML_SCHEMAP_SRC_ATTRIBUTE_3_2, /* 3054 */ XML_SCHEMAP_SRC_ATTRIBUTE_4, /* 3055 */ XML_SCHEMAP_NO_XMLNS, /* 3056 */ - XML_SCHEMAP_NO_XSI, /* 3057 */ + XML_SCHEMAP_NO_XSI, /* 3057 */ XML_SCHEMAP_COS_VALID_DEFAULT_1, /* 3058 */ XML_SCHEMAP_COS_VALID_DEFAULT_2_1, /* 3059 */ XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1, /* 3060 */ @@ -773,6 +783,8 @@ XML_SCHEMAP_AU_PROPS_CORRECT, /* 3088 */ XML_SCHEMAP_A_PROPS_CORRECT_3, /* 3089 */ XML_SCHEMAP_COS_ALL_LIMITED, /* 3090 */ + XML_SCHEMATRONV_ASSERT = 4000, /* 4000 */ + XML_SCHEMATRONV_REPORT, XML_MODULE_OPEN = 4900, /* 4900 */ XML_MODULE_CLOSE, /* 4901 */ XML_CHECK_FOUND_ELEMENT = 5000, @@ -817,11 +829,8 @@ XML_I18N_NO_HANDLER, /* 6001 */ XML_I18N_EXCESS_HANDLER, /* 6002 */ XML_I18N_CONV_FAILED, /* 6003 */ - XML_I18N_NO_OUTPUT /* 6004 */ -#if 0 - XML_CHECK_, /* 5033 */ - XML_CHECK_X /* 503 */ -#endif + XML_I18N_NO_OUTPUT, /* 6004 */ + XML_BUF_OVERFLOW = 7000 } xmlParserErrors; /** @@ -835,7 +844,7 @@ */ typedef void (XMLCDECL *xmlGenericErrorFunc) (void *ctx, const char *msg, - ...); + ...) LIBXML_ATTR_FORMAT(2,3); /** * xmlStructuredErrorFunc: * @userData: user provided data for the error callback @@ -850,38 +859,38 @@ * Use the following function to reset the two global variables * xmlGenericError and xmlGenericErrorContext. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSetGenericErrorFunc (void *ctx, xmlGenericErrorFunc handler); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL initGenericErrorDefaultFunc (xmlGenericErrorFunc *handler); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSetStructuredErrorFunc (void *ctx, xmlStructuredErrorFunc handler); /* * Default message routines used by SAX and Valid context for error * and warning reporting. */ -XMLPUBFUN void XMLCDECL +XMLPUBFUN void XMLCDECL xmlParserError (void *ctx, const char *msg, - ...); -XMLPUBFUN void XMLCDECL + ...) LIBXML_ATTR_FORMAT(2,3); +XMLPUBFUN void XMLCDECL xmlParserWarning (void *ctx, const char *msg, - ...); -XMLPUBFUN void XMLCDECL + ...) LIBXML_ATTR_FORMAT(2,3); +XMLPUBFUN void XMLCDECL xmlParserValidityError (void *ctx, const char *msg, - ...); -XMLPUBFUN void XMLCDECL + ...) LIBXML_ATTR_FORMAT(2,3); +XMLPUBFUN void XMLCDECL xmlParserValidityWarning (void *ctx, const char *msg, - ...); -XMLPUBFUN void XMLCALL + ...) LIBXML_ATTR_FORMAT(2,3); +XMLPUBFUN void XMLCALL xmlParserPrintFileInfo (xmlParserInputPtr input); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlParserPrintFileContext (xmlParserInputPtr input); /* @@ -899,19 +908,19 @@ xmlResetError (xmlErrorPtr err); XMLPUBFUN int XMLCALL xmlCopyError (xmlErrorPtr from, - xmlErrorPtr to); + xmlErrorPtr to); #ifdef IN_LIBXML /* * Internal callback reporting routine */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL __xmlRaiseError (xmlStructuredErrorFunc schannel, - xmlGenericErrorFunc channel, - void *data, + xmlGenericErrorFunc channel, + void *data, void *ctx, - void *node, - int domain, + void *node, + int domain, int code, xmlErrorLevel level, const char *file, @@ -922,10 +931,10 @@ int int1, int col, const char *msg, - ...); -XMLPUBFUN void XMLCALL + ...) LIBXML_ATTR_FORMAT(16,17); +XMLPUBFUN void XMLCALL __xmlSimpleError (int domain, - int code, + int code, xmlNodePtr node, const char *msg, const char *extra); diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlexports.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlexports.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlexports.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlexports.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -43,7 +43,7 @@ /** * XMLCDECL: * - * Macro which declares the calling convention for exported functions that + * Macro which declares the calling convention for exported functions that * use '...'. */ #define XMLCDECL @@ -108,9 +108,14 @@ #undef XMLPUBVAR #undef XMLCALL #undef XMLCDECL + /* + * if defined(IN_LIBXML) this raises problems on mingw with msys + * _imp__xmlFree listed as missing. Try to workaround the problem + * by also making that declaration when compiling client code. + */ #if defined(IN_LIBXML) && !defined(LIBXML_STATIC) #define XMLPUBFUN __declspec(dllexport) - #define XMLPUBVAR __declspec(dllexport) + #define XMLPUBVAR __declspec(dllexport) extern #else #define XMLPUBFUN #if !defined(LIBXML_STATIC) diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlIO.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlIO.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlIO.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlIO.c 2015-12-23 07:08:27.000000000 +0000 @@ -35,11 +35,18 @@ #ifdef HAVE_ZLIB_H #include #endif +#ifdef HAVE_LZMA_H +#include +#endif -#ifdef WIN32 +#if defined(WIN32) || defined(_WIN32) #include #endif +#if defined(_WIN32_WCE) +#include /* for CP_UTF8 */ +#endif + /* Figure a portable way to know if a file is a directory. */ #ifndef HAVE_STAT # ifdef HAVE__STAT @@ -89,6 +96,9 @@ #endif #include +#include "buf.h" +#include "enc.h" + /* #define VERBOSE_FAILURE */ /* #define DEBUG_EXTERNAL_ENTITIES */ /* #define DEBUG_INPUT */ @@ -131,11 +141,14 @@ static xmlOutputCallback xmlOutputCallbackTable[MAX_OUTPUT_CALLBACK]; static int xmlOutputCallbackNr = 0; static int xmlOutputCallbackInitialized = 0; + +xmlOutputBufferPtr +xmlAllocOutputBufferInternal(xmlCharEncodingHandlerPtr encoder); #endif /* LIBXML_OUTPUT_ENABLED */ /************************************************************************ * * - * Tree memory error handler * + * Tree memory error handler * * * ************************************************************************/ @@ -418,7 +431,7 @@ idx = 0; if (code >= XML_IO_UNKNOWN) idx = code - XML_IO_UNKNOWN; if (idx >= (sizeof(IOerr) / sizeof(IOerr[0]))) idx = 0; - + __xmlSimpleError(domain, code, NULL, IOerr[idx], extra); } @@ -470,12 +483,12 @@ XML_IO_LOAD_ERROR, level, NULL, 0, filename, NULL, NULL, 0, 0, msg, filename); - + } /************************************************************************ * * - * Tree memory error handler * + * Tree memory error handler * * * ************************************************************************/ /** @@ -497,7 +510,7 @@ * xmlCleanupInputCallbacks: * * clears the entire input callback table. this includes the - * compiled-in I/O. + * compiled-in I/O. */ void xmlCleanupInputCallbacks(void) @@ -522,7 +535,7 @@ * xmlPopInputCallbacks: * * Clear the top input callback from the input stack. this includes the - * compiled-in I/O. + * compiled-in I/O. * * Returns the number of input callback registered or -1 in case of error. */ @@ -534,7 +547,7 @@ if (xmlInputCallbackNr <= 0) return(-1); - + xmlInputCallbackNr--; xmlInputCallbackTable[xmlInputCallbackNr].matchcallback = NULL; xmlInputCallbackTable[xmlInputCallbackNr].opencallback = NULL; @@ -549,7 +562,7 @@ * xmlCleanupOutputCallbacks: * * clears the entire output callback table. this includes the - * compiled-in I/O callbacks. + * compiled-in I/O callbacks. */ void xmlCleanupOutputCallbacks(void) @@ -606,6 +619,34 @@ return fd; } +#ifdef HAVE_ZLIB_H +static gzFile +xmlWrapGzOpenUtf8(const char *path, const char *mode) +{ + gzFile fd; + wchar_t *wPath; + + fd = gzopen (path, mode); + if (fd) + return fd; + + wPath = __xmlIOWin32UTF8ToWChar(path); + if(wPath) + { + int d, m = (strstr(mode, "r") ? O_RDONLY : O_RDWR); +#ifdef _O_BINARY + m |= (strstr(mode, "b") ? _O_BINARY : 0); +#endif + d = _wopen(wPath, m); + if (d >= 0) + fd = gzdopen(d, mode); + xmlFree(wPath); + } + + return fd; +} +#endif + /** * xmlWrapStatUtf8: * @path: the path in utf-8 encoding @@ -672,7 +713,10 @@ static xmlWrapStatFunc xmlWrapStat = xmlWrapStatNative; typedef FILE* (* xmlWrapOpenFunc)(const char *f,int mode); static xmlWrapOpenFunc xmlWrapOpen = xmlWrapOpenNative; - +#ifdef HAVE_ZLIB_H +typedef gzFile (* xmlWrapGzOpenFunc) (const char *f, const char *mode); +static xmlWrapGzOpenFunc xmlWrapGzOpen = gzopen; +#endif /** * xmlInitPlatformSpecificIo: * @@ -692,9 +736,15 @@ if(GetVersionEx(&osvi) && (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT)) { xmlWrapStat = xmlWrapStatUtf8; xmlWrapOpen = xmlWrapOpenUtf8; +#ifdef HAVE_ZLIB_H + xmlWrapGzOpen = xmlWrapGzOpenUtf8; +#endif } else { xmlWrapStat = xmlWrapStatNative; xmlWrapOpen = xmlWrapOpenNative; +#ifdef HAVE_ZLIB_H + xmlWrapGzOpen = gzopen; +#endif } xmlPlatformIoInitialized = 1; @@ -721,13 +771,21 @@ xmlCheckFilename (const char *path) { #ifdef HAVE_STAT - struct stat stat_buffer; + struct stat stat_buffer; #endif - if (path == NULL) - return(0); + if (path == NULL) + return(0); #ifdef HAVE_STAT #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) + /* + * On Windows stat and wstat do not work with long pathname, + * which start with '\\?\' + */ + if ((path[0] == '\\') && (path[1] == '\\') && (path[2] == '?') && + (path[3] == '\\') ) + return 1; + if (xmlWrapStat(path, &stat_buffer) == -1) return 0; #else @@ -742,7 +800,14 @@ return 1; } -static int +/** + * xmlNop: + * + * No Operation function, does nothing, no input + * + * Returns zero + */ +int xmlNop(void) { return(0); } @@ -829,7 +894,7 @@ */ static void * xmlFileOpen_real (const char *filename) { - const char *path = NULL; + const char *path = filename; FILE *fd; if (filename == NULL) @@ -840,23 +905,27 @@ return((void *) fd); } - if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "file://localhost/", 17)) + if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "file://localhost/", 17)) { #if defined (_WIN32) || defined (__DJGPP__) && !defined(__CYGWIN__) path = &filename[17]; #else path = &filename[16]; #endif - else if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "file:///", 8)) { + } else if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "file:///", 8)) { #if defined (_WIN32) || defined (__DJGPP__) && !defined(__CYGWIN__) path = &filename[8]; #else path = &filename[7]; #endif - } else - path = filename; + } else if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "file:/", 6)) { + /* lots of generators seems to lazy to read RFC 1738 */ +#if defined (_WIN32) || defined (__DJGPP__) && !defined(__CYGWIN__) + path = &filename[6]; +#else + path = &filename[5]; +#endif + } - if (path == NULL) - return(NULL); if (!xmlCheckFilename(path)) return(NULL); @@ -883,13 +952,15 @@ char *unescaped; void *retval; - unescaped = xmlURIUnescapeString(filename, 0, NULL); - if (unescaped != NULL) { - retval = xmlFileOpen_real(unescaped); - xmlFree(unescaped); - } else { - retval = xmlFileOpen_real(filename); + retval = xmlFileOpen_real(filename); + if (retval == NULL) { + unescaped = xmlURIUnescapeString(filename, 0, NULL); + if (unescaped != NULL) { + retval = xmlFileOpen_real(unescaped); + xmlFree(unescaped); + } } + return retval; } @@ -925,7 +996,7 @@ #else path = &filename[7]; #endif - } else + } else path = filename; if (path == NULL) @@ -934,7 +1005,7 @@ #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) fd = xmlWrapOpen(path, 1); #else - fd = fopen(path, "wb"); + fd = fopen(path, "wb"); #endif /* WIN32 */ if (fd == NULL) xmlIOErr(0, path); @@ -955,7 +1026,7 @@ int xmlFileRead (void * context, char * buffer, int len) { int ret; - if ((context == NULL) || (buffer == NULL)) + if ((context == NULL) || (buffer == NULL)) return(-1); ret = fread(&buffer[0], 1, len, (FILE *) context); if (ret < 0) xmlIOErr(0, "fread()"); @@ -977,7 +1048,7 @@ xmlFileWrite (void * context, const char * buffer, int len) { int items; - if ((context == NULL) || (buffer == NULL)) + if ((context == NULL) || (buffer == NULL)) return(-1); items = fwrite(&buffer[0], len, 1, (FILE *) context); if ((items == 0) && (ferror((FILE *) context))) { @@ -1092,7 +1163,12 @@ gzFile fd; if (!strcmp(filename, "-")) { - fd = gzdopen(dup(0), "rb"); + int duped_fd = dup(fileno(stdin)); + fd = gzdopen(duped_fd, "rb"); + if (fd == Z_NULL && duped_fd >= 0) { + close(duped_fd); /* gzdOpen() does not close on failure */ + } + return((void *) fd); } @@ -1108,7 +1184,7 @@ #else path = &filename[7]; #endif - } else + } else path = filename; if (path == NULL) @@ -1116,7 +1192,11 @@ if (!xmlCheckFilename(path)) return(NULL); +#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) + fd = xmlWrapGzOpen(path, "rb"); +#else fd = gzopen(path, "rb"); +#endif return((void *) fd); } @@ -1162,7 +1242,12 @@ snprintf(mode, sizeof(mode), "wb%d", compression); if (!strcmp(filename, "-")) { - fd = gzdopen(dup(1), mode); + int duped_fd = dup(fileno(stdout)); + fd = gzdopen(duped_fd, "rb"); + if (fd == Z_NULL && duped_fd >= 0) { + close(duped_fd); /* gzdOpen() does not close on failure */ + } + return((void *) fd); } @@ -1178,13 +1263,17 @@ #else path = &filename[7]; #endif - } else + } else path = filename; if (path == NULL) return(NULL); +#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) + fd = xmlWrapGzOpen(path, mode); +#else fd = gzopen(path, mode); +#endif return((void *) fd); } #endif /* LIBXML_OUTPUT_ENABLED */ @@ -1245,6 +1334,125 @@ } #endif /* HAVE_ZLIB_H */ +#ifdef LIBXML_LZMA_ENABLED +/************************************************************************ + * * + * I/O for compressed file accesses * + * * + ************************************************************************/ +#include "xzlib.h" +/** + * xmlXzfileMatch: + * @filename: the URI for matching + * + * input from compressed file test + * + * Returns 1 if matches, 0 otherwise + */ +static int +xmlXzfileMatch (const char *filename ATTRIBUTE_UNUSED) { + return(1); +} + +/** + * xmlXzFileOpen_real: + * @filename: the URI for matching + * + * input from compressed file open + * if @filename is " " then the standard input is used + * + * Returns an I/O context or NULL in case of error + */ +static void * +xmlXzfileOpen_real (const char *filename) { + const char *path = NULL; + xzFile fd; + + if (!strcmp(filename, "-")) { + fd = __libxml2_xzdopen(dup(fileno(stdin)), "rb"); + return((void *) fd); + } + + if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "file://localhost/", 17)) { + path = &filename[16]; + } else if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "file:///", 8)) { + path = &filename[7]; + } else if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "file:/", 6)) { + /* lots of generators seems to lazy to read RFC 1738 */ + path = &filename[5]; + } else + path = filename; + + if (path == NULL) + return(NULL); + if (!xmlCheckFilename(path)) + return(NULL); + + fd = __libxml2_xzopen(path, "rb"); + return((void *) fd); +} + +/** + * xmlXzfileOpen: + * @filename: the URI for matching + * + * Wrapper around xmlXzfileOpen_real that try it with an unescaped + * version of @filename, if this fails fallback to @filename + * + * Returns a handler or NULL in case or failure + */ +static void * +xmlXzfileOpen (const char *filename) { + char *unescaped; + void *retval; + + retval = xmlXzfileOpen_real(filename); + if (retval == NULL) { + unescaped = xmlURIUnescapeString(filename, 0, NULL); + if (unescaped != NULL) { + retval = xmlXzfileOpen_real(unescaped); + } + xmlFree(unescaped); + } + + return retval; +} + +/** + * xmlXzfileRead: + * @context: the I/O context + * @buffer: where to drop data + * @len: number of bytes to write + * + * Read @len bytes to @buffer from the compressed I/O channel. + * + * Returns the number of bytes written + */ +static int +xmlXzfileRead (void * context, char * buffer, int len) { + int ret; + + ret = __libxml2_xzread((xzFile) context, &buffer[0], len); + if (ret < 0) xmlIOErr(0, "xzread()"); + return(ret); +} + +/** + * xmlXzfileClose: + * @context: the I/O context + * + * Close a compressed I/O channel + */ +static int +xmlXzfileClose (void * context) { + int ret; + + ret = (__libxml2_xzclose((xzFile) context) == LZMA_OK ) ? 0 : -1; + if (ret < 0) xmlIOErr(0, "xzclose()"); + return(ret); +} +#endif /* LIBXML_LZMA_ENABLED */ + #ifdef LIBXML_HTTP_ENABLED /************************************************************************ * * @@ -1306,7 +1514,7 @@ /* ** This is plagiarized from putLong in gzio.c (zlib source) where - ** the number "4" is hardcoded. If zlib is ever patched to + ** the number "4" is hardcoded. If zlib is ever patched to ** support 64 bit file sizes, this code would need to be patched ** as well. */ @@ -1358,7 +1566,7 @@ * * Create a memory buffer to hold the compressed XML document. The * compressed document in memory will end up being identical to what - * would be created if gzopen/gzwrite/gzclose were being used to + * would be created if gzopen/gzwrite/gzclose were being used to * write the document to disk. The code for the header/trailer data to * the compression is plagiarized from the zlib source files. */ @@ -1407,7 +1615,7 @@ buff->crc = crc32( 0L, NULL, 0 ); hdr_lgth = snprintf( (char *)buff->zbuff, buff->size, "%c%c%c%c%c%c%c%c%c%c", - GZ_MAGIC1, GZ_MAGIC2, Z_DEFLATED, + GZ_MAGIC1, GZ_MAGIC2, Z_DEFLATED, 0, 0, 0, 0, 0, 0, LXML_ZLIB_OS_CODE ); buff->zctrl.next_out = buff->zbuff + hdr_lgth; buff->zctrl.avail_out = buff->size - hdr_lgth; @@ -1445,11 +1653,11 @@ new_size = buff->size + ext_amt; #ifdef DEBUG_HTTP - if ( cur_used > new_size ) + if ( cur_used > new_size ) xmlGenericError( xmlGenericErrorContext, "xmlZMemBuffExtend: %s\n%s %d bytes.\n", "Buffer overwrite detected during compressed memory", - "buffer extension. Overflowed by", + "buffer extension. Overflowed by", (cur_used - new_size ) ); #endif @@ -1587,7 +1795,7 @@ "Error flushing zlib buffers. Error code", z_err ); xmlIOErr(XML_IO_WRITE, (const char *) msg); } - + return ( zlgth ); } #endif /* LIBXML_OUTPUT_ENABLED */ @@ -1707,7 +1915,7 @@ { /* Any character conversions should have been done before this */ - ctxt->doc_buff = xmlAllocOutputBuffer(NULL); + ctxt->doc_buff = xmlAllocOutputBufferInternal(NULL); } if (ctxt->doc_buff == NULL) { @@ -1718,7 +1926,7 @@ return (ctxt); } #endif /* LIBXML_OUTPUT_ENABLED */ - + #ifdef LIBXML_OUTPUT_ENABLED /** * xmlIOHTTPDfltOpenW @@ -1746,7 +1954,7 @@ * * Returns the number of bytes written */ -int +int xmlIOHTTPRead(void * context, char * buffer, int len) { if ((buffer == NULL) || (len < 0)) return(-1); return(xmlNanoHTTPRead(context, &buffer[0], len)); @@ -1766,7 +1974,7 @@ */ static int -xmlIOHTTPWrite( void * context, const char * buffer, int len ) { +xmlIOHTTPWrite( void * context, const char * buffer, int len ) { xmlIOHTTPWriteCtxtPtr ctxt = context; @@ -1778,7 +1986,7 @@ /* Use gzwrite or fwrite as previously setup in the open call */ #ifdef HAVE_ZLIB_H - if ( ctxt->compression > 0 ) + if ( ctxt->compression > 0 ) len = xmlZMemBuffAppend( ctxt->doc_buff, buffer, len ); else @@ -1853,8 +2061,8 @@ /* Pull the data out of the memory output buffer */ xmlOutputBufferPtr dctxt = ctxt->doc_buff; - http_content = (char *)dctxt->buffer->content; - content_lgth = dctxt->buffer->use; + http_content = (char *) xmlBufContent(dctxt->buffer); + content_lgth = xmlBufUse(dctxt->buffer); } if ( http_content == NULL ) { @@ -1869,7 +2077,7 @@ else { http_ctxt = xmlNanoHTTPMethod( ctxt->uri, http_mthd, http_content, - &content_type, content_encoding, + &content_type, content_encoding, content_lgth ); if ( http_ctxt != NULL ) { @@ -1888,7 +2096,7 @@ /* ** Since either content or reply may be gzipped, - ** dump them to separate files instead of the + ** dump them to separate files instead of the ** standard error context. */ @@ -2025,7 +2233,7 @@ * * Returns the number of bytes written */ -int +int xmlIOFTPRead(void * context, char * buffer, int len) { if ((buffer == NULL) || (len < 0)) return(-1); return(xmlNanoFTPRead(context, &buffer[0], len)); @@ -2088,7 +2296,7 @@ xmlRegisterOutputCallbacks(xmlOutputMatchCallback matchFunc, xmlOutputOpenCallback openFunc, xmlOutputWriteCallback writeFunc, xmlOutputCloseCallback closeFunc) { - if (xmlOutputCallbackNr >= MAX_INPUT_CALLBACK) { + if (xmlOutputCallbackNr >= MAX_OUTPUT_CALLBACK) { return(-1); } xmlOutputCallbackTable[xmlOutputCallbackNr].matchcallback = matchFunc; @@ -2120,6 +2328,10 @@ xmlRegisterInputCallbacks(xmlGzfileMatch, xmlGzfileOpen, xmlGzfileRead, xmlGzfileClose); #endif /* HAVE_ZLIB_H */ +#ifdef LIBXML_LZMA_ENABLED + xmlRegisterInputCallbacks(xmlXzfileMatch, xmlXzfileOpen, + xmlXzfileRead, xmlXzfileClose); +#endif /* LIBXML_LZMA_ENABLED */ #ifdef LIBXML_HTTP_ENABLED xmlRegisterInputCallbacks(xmlIOHTTPMatch, xmlIOHTTPOpen, @@ -2217,15 +2429,15 @@ return(NULL); } memset(ret, 0, (size_t) sizeof(xmlParserInputBuffer)); - ret->buffer = xmlBufferCreateSize(2 * xmlDefaultBufferSize); + ret->buffer = xmlBufCreateSize(2 * xmlDefaultBufferSize); if (ret->buffer == NULL) { xmlFree(ret); return(NULL); } - ret->buffer->alloc = XML_BUFFER_ALLOC_DOUBLEIT; + xmlBufSetAllocationScheme(ret->buffer, XML_BUFFER_ALLOC_DOUBLEIT); ret->encoder = xmlGetCharEncodingHandler(enc); if (ret->encoder != NULL) - ret->raw = xmlBufferCreateSize(2 * xmlDefaultBufferSize); + ret->raw = xmlBufCreateSize(2 * xmlDefaultBufferSize); else ret->raw = NULL; ret->readcallback = NULL; @@ -2256,19 +2468,28 @@ return(NULL); } memset(ret, 0, (size_t) sizeof(xmlOutputBuffer)); - ret->buffer = xmlBufferCreate(); + ret->buffer = xmlBufCreate(); if (ret->buffer == NULL) { xmlFree(ret); return(NULL); } - ret->buffer->alloc = XML_BUFFER_ALLOC_DOUBLEIT; + + /* try to avoid a performance problem with Windows realloc() */ + if (xmlBufGetAllocationScheme(ret->buffer) == XML_BUFFER_ALLOC_EXACT) + xmlBufSetAllocationScheme(ret->buffer, XML_BUFFER_ALLOC_DOUBLEIT); + ret->encoder = encoder; if (encoder != NULL) { - ret->conv = xmlBufferCreateSize(4000); + ret->conv = xmlBufCreateSize(4000); + if (ret->conv == NULL) { + xmlFree(ret); + return(NULL); + } + /* * This call is designed to initiate the encoder state */ - xmlCharEncOutFunc(encoder, ret->conv, NULL); + xmlCharEncOutput(ret, 1); } else ret->conv = NULL; ret->writecallback = NULL; @@ -2278,6 +2499,59 @@ return(ret); } + +/** + * xmlAllocOutputBufferInternal: + * @encoder: the encoding converter or NULL + * + * Create a buffered parser output + * + * Returns the new parser output or NULL + */ +xmlOutputBufferPtr +xmlAllocOutputBufferInternal(xmlCharEncodingHandlerPtr encoder) { + xmlOutputBufferPtr ret; + + ret = (xmlOutputBufferPtr) xmlMalloc(sizeof(xmlOutputBuffer)); + if (ret == NULL) { + xmlIOErrMemory("creating output buffer"); + return(NULL); + } + memset(ret, 0, (size_t) sizeof(xmlOutputBuffer)); + ret->buffer = xmlBufCreate(); + if (ret->buffer == NULL) { + xmlFree(ret); + return(NULL); + } + + + /* + * For conversion buffers we use the special IO handling + */ + xmlBufSetAllocationScheme(ret->buffer, XML_BUFFER_ALLOC_IO); + + ret->encoder = encoder; + if (encoder != NULL) { + ret->conv = xmlBufCreateSize(4000); + if (ret->conv == NULL) { + xmlFree(ret); + return(NULL); + } + + /* + * This call is designed to initiate the encoder state + */ + xmlCharEncOutput(ret, 1); + } else + ret->conv = NULL; + ret->writecallback = NULL; + ret->closecallback = NULL; + ret->context = NULL; + ret->written = 0; + + return(ret); +} + #endif /* LIBXML_OUTPUT_ENABLED */ /** @@ -2291,7 +2565,7 @@ if (in == NULL) return; if (in->raw) { - xmlBufferFree(in->raw); + xmlBufFree(in->raw); in->raw = NULL; } if (in->encoder != NULL) { @@ -2301,7 +2575,7 @@ in->closecallback(in->context); } if (in->buffer != NULL) { - xmlBufferFree(in->buffer); + xmlBufFree(in->buffer); in->buffer = NULL; } @@ -2333,14 +2607,14 @@ } written = out->written; if (out->conv) { - xmlBufferFree(out->conv); + xmlBufFree(out->conv); out->conv = NULL; } if (out->encoder != NULL) { xmlCharEncCloseFunc(out->encoder); } if (out->buffer != NULL) { - xmlBufferFree(out->buffer); + xmlBufFree(out->buffer); out->buffer = NULL; } @@ -2392,6 +2666,9 @@ #ifdef HAVE_ZLIB_H if ((xmlInputCallbackTable[i].opencallback == xmlGzfileOpen) && (strcmp(URI, "-") != 0)) { +#if defined(ZLIB_VERNUM) && ZLIB_VERNUM >= 0x1230 + ret->compressed = !gzdirect(context); +#else if (((z_stream *)context)->avail_in > 4) { char *cptr, buff4[4]; cptr = (char *) ((z_stream *)context)->next_in; @@ -2403,6 +2680,13 @@ gzrewind(context); } } +#endif + } +#endif +#ifdef LIBXML_LZMA_ENABLED + if ((xmlInputCallbackTable[i].opencallback == xmlXzfileOpen) && + (strcmp(URI, "-") != 0)) { + ret->compressed = __libxml2_xzcompressed(context); } #endif } @@ -2478,7 +2762,7 @@ if ((compression > 0) && (compression <= 9) && (is_file_uri == 1)) { context = xmlGzfileOpenW(unescaped, compression); if (context != NULL) { - ret = xmlAllocOutputBuffer(encoder); + ret = xmlAllocOutputBufferInternal(encoder); if (ret != NULL) { ret->context = context; ret->writecallback = xmlGzfileWrite; @@ -2515,7 +2799,7 @@ if ((compression > 0) && (compression <= 9) && (is_file_uri == 1)) { context = xmlGzfileOpenW(URI, compression); if (context != NULL) { - ret = xmlAllocOutputBuffer(encoder); + ret = xmlAllocOutputBufferInternal(encoder); if (ret != NULL) { ret->context = context; ret->writecallback = xmlGzfileWrite; @@ -2548,7 +2832,7 @@ /* * Allocate the Output buffer front-end. */ - ret = xmlAllocOutputBuffer(encoder); + ret = xmlAllocOutputBufferInternal(encoder); if (ret != NULL) { ret->context = context; ret->writecallback = xmlOutputCallbackTable[i].writecallback; @@ -2585,7 +2869,7 @@ /** * xmlParserInputBufferCreateFile: - * @file: a FILE* + * @file: a FILE* * @enc: the charset encoding if known * * Create a buffered parser input for the progressive parsing of a FILE * @@ -2615,7 +2899,7 @@ #ifdef LIBXML_OUTPUT_ENABLED /** * xmlOutputBufferCreateFile: - * @file: a FILE* + * @file: a FILE* * @encoder: the encoding converter or NULL * * Create a buffered output for the progressive saving to a FILE * @@ -2632,7 +2916,7 @@ if (file == NULL) return(NULL); - ret = xmlAllocOutputBuffer(encoder); + ret = xmlAllocOutputBufferInternal(encoder); if (ret != NULL) { ret->context = file; ret->writecallback = xmlFileWrite; @@ -2666,6 +2950,39 @@ return(ret); } +/** + * xmlOutputBufferGetContent: + * @out: an xmlOutputBufferPtr + * + * Gives a pointer to the data currently held in the output buffer + * + * Returns a pointer to the data or NULL in case of error + */ +const xmlChar * +xmlOutputBufferGetContent(xmlOutputBufferPtr out) { + if ((out == NULL) || (out->buffer == NULL)) + return(NULL); + + return(xmlBufContent(out->buffer)); +} + +/** + * xmlOutputBufferGetSize: + * @out: an xmlOutputBufferPtr + * + * Gives the length of the data currently held in the output buffer + * + * Returns 0 in case or error or no data is held, the size otherwise + */ +size_t +xmlOutputBufferGetSize(xmlOutputBufferPtr out) { + if ((out == NULL) || (out->buffer == NULL)) + return(0); + + return(xmlBufUse(out->buffer)); +} + + #endif /* LIBXML_OUTPUT_ENABLED */ /** @@ -2718,7 +3035,7 @@ ret->context = (void *) mem; ret->readcallback = (xmlInputReadCallback) xmlNop; ret->closecallback = NULL; - errcode = xmlBufferAdd(ret->buffer, (const xmlChar *) mem, size); + errcode = xmlBufAdd(ret->buffer, (const xmlChar *) mem, size); if (errcode != 0) { xmlFree(ret); return(NULL); @@ -2755,14 +3072,14 @@ return(NULL); } memset(ret, 0, (size_t) sizeof(xmlParserInputBuffer)); - ret->buffer = xmlBufferCreateStatic((void *)mem, (size_t) size); + ret->buffer = xmlBufCreateStatic((void *)mem, (size_t) size); if (ret->buffer == NULL) { xmlFree(ret); return(NULL); } ret->encoder = xmlGetCharEncodingHandler(enc); if (ret->encoder != NULL) - ret->raw = xmlBufferCreateSize(2 * xmlDefaultBufferSize); + ret->raw = xmlBufCreateSize(2 * xmlDefaultBufferSize); else ret->raw = NULL; ret->compressed = -1; @@ -2779,7 +3096,7 @@ * @fd: a file descriptor number * @encoder: the encoding converter or NULL * - * Create a buffered output for the progressive saving + * Create a buffered output for the progressive saving * to a file descriptor * * Returns the new parser output or NULL @@ -2790,7 +3107,7 @@ if (fd < 0) return(NULL); - ret = xmlAllocOutputBuffer(encoder); + ret = xmlAllocOutputBufferInternal(encoder); if (ret != NULL) { ret->context = (void *) (long) fd; ret->writecallback = xmlFdWrite; @@ -2851,7 +3168,7 @@ if (iowrite == NULL) return(NULL); - ret = xmlAllocOutputBuffer(encoder); + ret = xmlAllocOutputBufferInternal(encoder); if (ret != NULL) { ret->context = (void *) ioctx; ret->writecallback = iowrite; @@ -2931,33 +3248,33 @@ * Store the data in the incoming raw buffer */ if (in->raw == NULL) { - in->raw = xmlBufferCreate(); + in->raw = xmlBufCreate(); } - ret = xmlBufferAdd(in->raw, (const xmlChar *) buf, len); + ret = xmlBufAdd(in->raw, (const xmlChar *) buf, len); if (ret != 0) return(-1); /* * convert as much as possible to the parser reading buffer. */ - use = in->raw->use; - nbchars = xmlCharEncInFunc(in->encoder, in->buffer, in->raw); + use = xmlBufUse(in->raw); + nbchars = xmlCharEncInput(in, 1); if (nbchars < 0) { xmlIOErr(XML_IO_ENCODER, NULL); in->error = XML_IO_ENCODER; return(-1); } - in->rawconsumed += (use - in->raw->use); + in->rawconsumed += (use - xmlBufUse(in->raw)); } else { nbchars = len; - ret = xmlBufferAdd(in->buffer, (xmlChar *) buf, nbchars); + ret = xmlBufAdd(in->buffer, (xmlChar *) buf, nbchars); if (ret != 0) return(-1); } #ifdef DEBUG_INPUT xmlGenericError(xmlGenericErrorContext, "I/O: pushed %d chars, buffer %d/%d\n", - nbchars, in->buffer->use, in->buffer->size); + nbchars, xmlBufUse(in->buffer), xmlBufLength(in->buffer)); #endif return(nbchars); } @@ -2995,29 +3312,23 @@ char *buffer = NULL; int res = 0; int nbchars = 0; - int buffree; - unsigned int needSize; if ((in == NULL) || (in->error)) return(-1); if ((len <= MINLEN) && (len != 4)) len = MINLEN; - buffree = in->buffer->size - in->buffer->use; - if (buffree <= 0) { + if (xmlBufAvail(in->buffer) <= 0) { xmlIOErr(XML_IO_BUFFER_FULL, NULL); in->error = XML_IO_BUFFER_FULL; return(-1); } - needSize = in->buffer->use + len + 1; - if (needSize > in->buffer->size){ - if (!xmlBufferResize(in->buffer, needSize)){ - xmlIOErrMemory("growing input buffer"); - in->error = XML_ERR_NO_MEMORY; - return(-1); - } + if (xmlBufGrow(in->buffer, len + 1) < 0) { + xmlIOErrMemory("growing input buffer"); + in->error = XML_ERR_NO_MEMORY; + return(-1); } - buffer = (char *)&in->buffer->content[in->buffer->use]; + buffer = (char *)xmlBufEnd(in->buffer); /* * Call the read method for this I/O type. @@ -3034,6 +3345,17 @@ if (res < 0) { return(-1); } + + /* + * try to establish compressed status of input if not done already + */ + if (in->compressed == -1) { +#ifdef LIBXML_LZMA_ENABLED + if (in->readcallback == xmlXzfileRead) + in->compressed = __libxml2_xzcompressed(in->context); +#endif + } + len = res; if (in->encoder != NULL) { unsigned int use; @@ -3042,32 +3364,31 @@ * Store the data in the incoming raw buffer */ if (in->raw == NULL) { - in->raw = xmlBufferCreate(); + in->raw = xmlBufCreate(); } - res = xmlBufferAdd(in->raw, (const xmlChar *) buffer, len); + res = xmlBufAdd(in->raw, (const xmlChar *) buffer, len); if (res != 0) return(-1); /* * convert as much as possible to the parser reading buffer. */ - use = in->raw->use; - nbchars = xmlCharEncInFunc(in->encoder, in->buffer, in->raw); + use = xmlBufUse(in->raw); + nbchars = xmlCharEncInput(in, 1); if (nbchars < 0) { xmlIOErr(XML_IO_ENCODER, NULL); in->error = XML_IO_ENCODER; return(-1); } - in->rawconsumed += (use - in->raw->use); + in->rawconsumed += (use - xmlBufUse(in->raw)); } else { nbchars = len; - in->buffer->use += nbchars; - buffer[nbchars] = 0; + xmlBufAddLen(in->buffer, nbchars); } #ifdef DEBUG_INPUT xmlGenericError(xmlGenericErrorContext, - "I/O: read %d chars, buffer %d/%d\n", - nbchars, in->buffer->use, in->buffer->size); + "I/O: read %d chars, buffer %d\n", + nbchars, xmlBufUse(in->buffer)); #endif return(nbchars); } @@ -3089,8 +3410,7 @@ if ((in == NULL) || (in->error)) return(-1); if (in->readcallback != NULL) return(xmlParserInputBufferGrow(in, len)); - else if ((in->buffer != NULL) && - (in->buffer->alloc == XML_BUFFER_ALLOC_IMMUTABLE)) + else if (xmlBufGetAllocationScheme(in->buffer) == XML_BUFFER_ALLOC_IMMUTABLE) return(0); else return(-1); @@ -3135,30 +3455,30 @@ * Store the data in the incoming raw buffer */ if (out->conv == NULL) { - out->conv = xmlBufferCreate(); + out->conv = xmlBufCreate(); } - ret = xmlBufferAdd(out->buffer, (const xmlChar *) buf, chunk); + ret = xmlBufAdd(out->buffer, (const xmlChar *) buf, chunk); if (ret != 0) return(-1); - if ((out->buffer->use < MINLEN) && (chunk == len)) + if ((xmlBufUse(out->buffer) < MINLEN) && (chunk == len)) goto done; /* * convert as much as possible to the parser reading buffer. */ - ret = xmlCharEncOutFunc(out->encoder, out->conv, out->buffer); + ret = xmlCharEncOutput(out, 0); if ((ret < 0) && (ret != -3)) { xmlIOErr(XML_IO_ENCODER, NULL); out->error = XML_IO_ENCODER; return(-1); } - nbchars = out->conv->use; + nbchars = xmlBufUse(out->conv); } else { - ret = xmlBufferAdd(out->buffer, (const xmlChar *) buf, chunk); + ret = xmlBufAdd(out->buffer, (const xmlChar *) buf, chunk); if (ret != 0) return(-1); - nbchars = out->buffer->use; + nbchars = xmlBufUse(out->buffer); } buf += chunk; len -= chunk; @@ -3171,15 +3491,15 @@ * second write the stuff to the I/O channel */ if (out->encoder != NULL) { - ret = out->writecallback(out->context, - (const char *)out->conv->content, nbchars); + ret = out->writecallback(out->context, + (const char *)xmlBufContent(out->conv), nbchars); if (ret >= 0) - xmlBufferShrink(out->conv, ret); + xmlBufShrink(out->conv, ret); } else { - ret = out->writecallback(out->context, - (const char *)out->buffer->content, nbchars); + ret = out->writecallback(out->context, + (const char *)xmlBufContent(out->buffer), nbchars); if (ret >= 0) - xmlBufferShrink(out->buffer, ret); + xmlBufShrink(out->buffer, ret); } if (ret < 0) { xmlIOErr(XML_IO_WRITE, NULL); @@ -3221,9 +3541,9 @@ const unsigned char* inend; inend = in + (*inlen); - + while ((in < inend) && (out < outend)) { - if (*in == '<') { + if (*in == '<') { if (outend - out < 4) break; *out++ = '&'; *out++ = 'l'; @@ -3253,7 +3573,7 @@ *out++ = (unsigned char) *in; } ++in; - } + } *outlen = out - outstart; *inlen = in - base; return(0); @@ -3287,7 +3607,8 @@ if ((out == NULL) || (out->error) || (str == NULL) || (out->buffer == NULL) || - (out->buffer->alloc == XML_BUFFER_ALLOC_IMMUTABLE)) return(-1); + (xmlBufGetAllocationScheme(out->buffer) == XML_BUFFER_ALLOC_IMMUTABLE)) + return(-1); len = strlen((const char *)str); if (len < 0) return(0); if (out->error) return(-1); @@ -3300,7 +3621,18 @@ * how many bytes to consume and how many bytes to store. */ cons = len; - chunk = (out->buffer->size - out->buffer->use) - 1; + chunk = xmlBufAvail(out->buffer) - 1; + + /* + * make sure we have enough room to save first, if this is + * not the case force a flush, but make sure we stay in the loop + */ + if (chunk < 40) { + if (xmlBufGrow(out->buffer, 100) < 0) + return(-1); + oldwritten = -1; + continue; + } /* * first handle encoding stuff. @@ -3310,36 +3642,33 @@ * Store the data in the incoming raw buffer */ if (out->conv == NULL) { - out->conv = xmlBufferCreate(); + out->conv = xmlBufCreate(); } - ret = escaping(out->buffer->content + out->buffer->use , + ret = escaping(xmlBufEnd(out->buffer) , &chunk, str, &cons); if ((ret < 0) || (chunk == 0)) /* chunk==0 => nothing done */ return(-1); - out->buffer->use += chunk; - out->buffer->content[out->buffer->use] = 0; + xmlBufAddLen(out->buffer, chunk); - if ((out->buffer->use < MINLEN) && (cons == len)) + if ((xmlBufUse(out->buffer) < MINLEN) && (cons == len)) goto done; /* * convert as much as possible to the output buffer. */ - ret = xmlCharEncOutFunc(out->encoder, out->conv, out->buffer); + ret = xmlCharEncOutput(out, 0); if ((ret < 0) && (ret != -3)) { xmlIOErr(XML_IO_ENCODER, NULL); out->error = XML_IO_ENCODER; return(-1); } - nbchars = out->conv->use; + nbchars = xmlBufUse(out->conv); } else { - ret = escaping(out->buffer->content + out->buffer->use , - &chunk, str, &cons); + ret = escaping(xmlBufEnd(out->buffer), &chunk, str, &cons); if ((ret < 0) || (chunk == 0)) /* chunk==0 => nothing done */ return(-1); - out->buffer->use += chunk; - out->buffer->content[out->buffer->use] = 0; - nbchars = out->buffer->use; + xmlBufAddLen(out->buffer, chunk); + nbchars = xmlBufUse(out->buffer); } str += cons; len -= cons; @@ -3352,15 +3681,15 @@ * second write the stuff to the I/O channel */ if (out->encoder != NULL) { - ret = out->writecallback(out->context, - (const char *)out->conv->content, nbchars); + ret = out->writecallback(out->context, + (const char *)xmlBufContent(out->conv), nbchars); if (ret >= 0) - xmlBufferShrink(out->conv, ret); + xmlBufShrink(out->conv, ret); } else { - ret = out->writecallback(out->context, - (const char *)out->buffer->content, nbchars); + ret = out->writecallback(out->context, + (const char *)xmlBufContent(out->buffer), nbchars); if (ret >= 0) - xmlBufferShrink(out->buffer, ret); + xmlBufShrink(out->buffer, ret); } if (ret < 0) { xmlIOErr(XML_IO_WRITE, NULL); @@ -3368,8 +3697,8 @@ return(ret); } out->written += ret; - } else if (out->buffer->size - out->buffer->use < MINLEN) { - xmlBufferResize(out->buffer, out->buffer->size + MINLEN); + } else if (xmlBufAvail(out->buffer) < MINLEN) { + xmlBufGrow(out->buffer, MINLEN); } written += nbchars; } while ((len > 0) && (oldwritten != written)); @@ -3398,7 +3727,7 @@ int xmlOutputBufferWriteString(xmlOutputBufferPtr out, const char *str) { int len; - + if ((out == NULL) || (out->error)) return(-1); if (str == NULL) return(-1); @@ -3427,14 +3756,16 @@ */ if ((out->conv != NULL) && (out->encoder != NULL)) { /* - * convert as much as possible to the parser reading buffer. + * convert as much as possible to the parser output buffer. */ - nbchars = xmlCharEncOutFunc(out->encoder, out->conv, out->buffer); - if (nbchars < 0) { - xmlIOErr(XML_IO_ENCODER, NULL); - out->error = XML_IO_ENCODER; - return(-1); - } + do { + nbchars = xmlCharEncOutput(out, 0); + if (nbchars < 0) { + xmlIOErr(XML_IO_ENCODER, NULL); + out->error = XML_IO_ENCODER; + return(-1); + } + } while (nbchars); } /* @@ -3443,14 +3774,16 @@ if ((out->conv != NULL) && (out->encoder != NULL) && (out->writecallback != NULL)) { ret = out->writecallback(out->context, - (const char *)out->conv->content, out->conv->use); + (const char *)xmlBufContent(out->conv), + xmlBufUse(out->conv)); if (ret >= 0) - xmlBufferShrink(out->conv, ret); + xmlBufShrink(out->conv, ret); } else if (out->writecallback != NULL) { ret = out->writecallback(out->context, - (const char *)out->buffer->content, out->buffer->use); + (const char *)xmlBufContent(out->buffer), + xmlBufUse(out->buffer)); if (ret >= 0) - xmlBufferShrink(out->buffer, ret); + xmlBufShrink(out->buffer, ret); } if (ret < 0) { xmlIOErr(XML_IO_FLUSH, NULL); @@ -3480,7 +3813,6 @@ char *ret = NULL; char dir[1024]; char *cur; - char sep = '/'; #ifdef _WIN32_WCE /* easy way by now ... wince does not have dirs! */ return NULL; @@ -3490,18 +3822,21 @@ xmlRegisterDefaultInputCallbacks(); if (filename == NULL) return(NULL); + #if defined(WIN32) && !defined(__CYGWIN__) - sep = '\\'; +# define IS_XMLPGD_SEP(ch) ((ch=='/')||(ch=='\\')) +#else +# define IS_XMLPGD_SEP(ch) (ch=='/') #endif strncpy(dir, filename, 1023); dir[1023] = 0; cur = &dir[strlen(dir)]; while (cur > dir) { - if (*cur == sep) break; + if (IS_XMLPGD_SEP(*cur)) break; cur --; } - if (*cur == sep) { + if (IS_XMLPGD_SEP(*cur)) { if (cur == dir) dir[1] = 0; else *cur = 0; ret = xmlMemStrdup(dir); @@ -3512,6 +3847,7 @@ } } return(ret); +#undef IS_XMLPGD_SEP } /**************************************************************** @@ -3612,9 +3948,9 @@ #else path = &URL[7]; #endif - } else + } else path = URL; - + return xmlCheckFilename(path); } @@ -3632,7 +3968,7 @@ * * Returns a new allocated URL, or NULL. */ -xmlChar * +static xmlChar * xmlResolveResourceFromCatalog(const char *URL, const char *ID, xmlParserCtxtPtr ctxt) { xmlChar *resource = NULL; @@ -3802,9 +4138,9 @@ } /************************************************************************ - * * - * Disabling Network access * - * * + * * + * Disabling Network access * + * * ************************************************************************/ /** diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlIO.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlIO.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlIO.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlIO.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -26,7 +26,7 @@ * xmlInputMatchCallback: * @filename: the filename or URI * - * Callback used in the I/O Input API to detect if the current handler + * Callback used in the I/O Input API to detect if the current handler * can provide input fonctionnalities for this resource. * * Returns 1 if yes and 0 if another Input module should be used @@ -72,7 +72,7 @@ * xmlOutputMatchCallback: * @filename: the filename or URI * - * Callback used in the I/O Output API to detect if the current handler + * Callback used in the I/O Output API to detect if the current handler * can provide output fonctionnalities for this resource. * * Returns 1 if yes and 0 if another Output module should be used @@ -126,11 +126,11 @@ void* context; xmlInputReadCallback readcallback; xmlInputCloseCallback closecallback; - + xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ - - xmlBufferPtr buffer; /* Local buffer encoded in UTF-8 */ - xmlBufferPtr raw; /* if encoder != NULL buffer for raw input */ + + xmlBufPtr buffer; /* Local buffer encoded in UTF-8 */ + xmlBufPtr raw; /* if encoder != NULL buffer for raw input */ int compressed; /* -1=unknown, 0=not compressed, 1=compressed */ int error; unsigned long rawconsumed;/* amount consumed from raw */ @@ -142,11 +142,11 @@ void* context; xmlOutputWriteCallback writecallback; xmlOutputCloseCallback closecallback; - + xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ - - xmlBufferPtr buffer; /* Local buffer encoded in UTF-8 or ISOLatin */ - xmlBufferPtr conv; /* if encoder != NULL buffer for output */ + + xmlBufPtr buffer; /* Local buffer encoded in UTF-8 or ISOLatin */ + xmlBufPtr conv; /* if encoder != NULL buffer for output */ int written; /* total number of byte written */ int error; }; @@ -155,13 +155,13 @@ /* * Interfaces for input */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCleanupInputCallbacks (void); XMLPUBFUN int XMLCALL xmlPopInputCallbacks (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRegisterDefaultInputCallbacks (void); XMLPUBFUN xmlParserInputBufferPtr XMLCALL xmlAllocParserInputBuffer (xmlCharEncoding enc); @@ -186,22 +186,22 @@ xmlInputCloseCallback ioclose, void *ioctx, xmlCharEncoding enc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlParserInputBufferRead (xmlParserInputBufferPtr in, int len); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlParserInputBufferGrow (xmlParserInputBufferPtr in, int len); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlParserInputBufferPush (xmlParserInputBufferPtr in, int len, const char *buf); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeParserInputBuffer (xmlParserInputBufferPtr in); -XMLPUBFUN char * XMLCALL +XMLPUBFUN char * XMLCALL xmlParserGetDirectory (const char *filename); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRegisterInputCallbacks (xmlInputMatchCallback matchFunc, xmlInputOpenCallback openFunc, xmlInputReadCallback readFunc, @@ -209,15 +209,15 @@ xmlParserInputBufferPtr __xmlParserInputBufferCreateFilename(const char *URI, - xmlCharEncoding enc); + xmlCharEncoding enc); #ifdef LIBXML_OUTPUT_ENABLED /* * Interfaces for output */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCleanupOutputCallbacks (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRegisterDefaultOutputCallbacks(void); XMLPUBFUN xmlOutputBufferPtr XMLCALL xmlAllocOutputBuffer (xmlCharEncodingHandlerPtr encoder); @@ -245,24 +245,30 @@ void *ioctx, xmlCharEncodingHandlerPtr encoder); -XMLPUBFUN int XMLCALL +/* Couple of APIs to get the output without digging into the buffers */ +XMLPUBFUN const xmlChar * XMLCALL + xmlOutputBufferGetContent (xmlOutputBufferPtr out); +XMLPUBFUN size_t XMLCALL + xmlOutputBufferGetSize (xmlOutputBufferPtr out); + +XMLPUBFUN int XMLCALL xmlOutputBufferWrite (xmlOutputBufferPtr out, int len, const char *buf); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlOutputBufferWriteString (xmlOutputBufferPtr out, const char *str); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlOutputBufferWriteEscape (xmlOutputBufferPtr out, const xmlChar *str, xmlCharEncodingOutputFunc escaping); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlOutputBufferFlush (xmlOutputBufferPtr out); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlOutputBufferClose (xmlOutputBufferPtr out); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRegisterOutputCallbacks (xmlOutputMatchCallback matchFunc, xmlOutputOpenCallback openFunc, xmlOutputWriteCallback writeFunc, @@ -275,10 +281,10 @@ #ifdef LIBXML_HTTP_ENABLED /* This function only exists if HTTP support built into the library */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRegisterHTTPPostCallbacks (void ); #endif /* LIBXML_HTTP_ENABLED */ - + #endif /* LIBXML_OUTPUT_ENABLED */ XMLPUBFUN xmlParserInputPtr XMLCALL @@ -288,69 +294,69 @@ /* * A predefined entity loader disabling network accesses */ -XMLPUBFUN xmlParserInputPtr XMLCALL +XMLPUBFUN xmlParserInputPtr XMLCALL xmlNoNetExternalEntityLoader (const char *URL, const char *ID, xmlParserCtxtPtr ctxt); -/* - * xmlNormalizeWindowsPath is obsolete, don't use it. +/* + * xmlNormalizeWindowsPath is obsolete, don't use it. * Check xmlCanonicPath in uri.h for a better alternative. */ -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlNormalizeWindowsPath (const xmlChar *path); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCheckFilename (const char *path); /** - * Default 'file://' protocol callbacks + * Default 'file://' protocol callbacks */ -XMLPUBFUN int XMLCALL - xmlFileMatch (const char *filename); -XMLPUBFUN void * XMLCALL - xmlFileOpen (const char *filename); -XMLPUBFUN int XMLCALL - xmlFileRead (void * context, - char * buffer, +XMLPUBFUN int XMLCALL + xmlFileMatch (const char *filename); +XMLPUBFUN void * XMLCALL + xmlFileOpen (const char *filename); +XMLPUBFUN int XMLCALL + xmlFileRead (void * context, + char * buffer, int len); -XMLPUBFUN int XMLCALL - xmlFileClose (void * context); +XMLPUBFUN int XMLCALL + xmlFileClose (void * context); /** - * Default 'http://' protocol callbacks + * Default 'http://' protocol callbacks */ #ifdef LIBXML_HTTP_ENABLED -XMLPUBFUN int XMLCALL - xmlIOHTTPMatch (const char *filename); -XMLPUBFUN void * XMLCALL - xmlIOHTTPOpen (const char *filename); +XMLPUBFUN int XMLCALL + xmlIOHTTPMatch (const char *filename); +XMLPUBFUN void * XMLCALL + xmlIOHTTPOpen (const char *filename); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlIOHTTPOpenW (const char * post_uri, int compression ); #endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN int XMLCALL - xmlIOHTTPRead (void * context, - char * buffer, +XMLPUBFUN int XMLCALL + xmlIOHTTPRead (void * context, + char * buffer, int len); -XMLPUBFUN int XMLCALL - xmlIOHTTPClose (void * context); +XMLPUBFUN int XMLCALL + xmlIOHTTPClose (void * context); #endif /* LIBXML_HTTP_ENABLED */ /** - * Default 'ftp://' protocol callbacks + * Default 'ftp://' protocol callbacks */ -#ifdef LIBXML_FTP_ENABLED -XMLPUBFUN int XMLCALL - xmlIOFTPMatch (const char *filename); -XMLPUBFUN void * XMLCALL - xmlIOFTPOpen (const char *filename); -XMLPUBFUN int XMLCALL - xmlIOFTPRead (void * context, - char * buffer, +#ifdef LIBXML_FTP_ENABLED +XMLPUBFUN int XMLCALL + xmlIOFTPMatch (const char *filename); +XMLPUBFUN void * XMLCALL + xmlIOFTPOpen (const char *filename); +XMLPUBFUN int XMLCALL + xmlIOFTPRead (void * context, + char * buffer, int len); -XMLPUBFUN int XMLCALL - xmlIOFTPClose (void * context); +XMLPUBFUN int XMLCALL + xmlIOFTPClose (void * context); #endif /* LIBXML_FTP_ENABLED */ #ifdef __cplusplus diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlmemory.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlmemory.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlmemory.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlmemory.c 2015-12-23 07:08:27.000000000 +0000 @@ -34,7 +34,7 @@ /** * MEM_LIST: * - * keep track of all allocated blocks for error reporting + * keep track of all allocated blocks for error reporting * Always build the memory list ! */ #ifdef DEBUG_MEMORY_LOCATION @@ -58,7 +58,7 @@ /************************************************************************ * * - * Macros, variables and associated types * + * Macros, variables and associated types * * * ************************************************************************/ @@ -162,7 +162,7 @@ { MEMHDR *p; void *ret; - + if (!xmlMemInitialized) xmlInitMemory(); #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, @@ -170,7 +170,7 @@ #endif TEST_POINT - + p = (MEMHDR *) malloc(RESERVE_SIZE+size); if (!p) { @@ -178,7 +178,7 @@ "xmlMallocLoc : Out of free space\n"); xmlMemoryDump(); return(NULL); - } + } p->mh_tag = MEMTAG; p->mh_size = size; p->mh_type = MALLOC_TYPE; @@ -193,19 +193,20 @@ debugmem_list_add(p); #endif xmlMutexUnlock(xmlMemMutex); - + #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "Malloc(%d) Ok\n",size); #endif - + if (xmlMemStopAtBlock == p->mh_number) xmlMallocBreakpoint(); ret = HDR_2_CLIENT(p); if (xmlMemTraceBlockAt == ret) { xmlGenericError(xmlGenericErrorContext, - "%p : Malloc(%d) Ok\n", xmlMemTraceBlockAt, size); + "%p : Malloc(%lu) Ok\n", xmlMemTraceBlockAt, + (long unsigned)size); xmlMallocBreakpoint(); } @@ -230,7 +231,7 @@ { MEMHDR *p; void *ret; - + if (!xmlMemInitialized) xmlInitMemory(); #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, @@ -238,7 +239,7 @@ #endif TEST_POINT - + p = (MEMHDR *) malloc(RESERVE_SIZE+size); if (!p) { @@ -246,7 +247,7 @@ "xmlMallocLoc : Out of free space\n"); xmlMemoryDump(); return(NULL); - } + } p->mh_tag = MEMTAG; p->mh_size = size; p->mh_type = MALLOC_ATOMIC_TYPE; @@ -266,14 +267,15 @@ xmlGenericError(xmlGenericErrorContext, "Malloc(%d) Ok\n",size); #endif - + if (xmlMemStopAtBlock == p->mh_number) xmlMallocBreakpoint(); ret = HDR_2_CLIENT(p); if (xmlMemTraceBlockAt == ret) { xmlGenericError(xmlGenericErrorContext, - "%p : Malloc(%d) Ok\n", xmlMemTraceBlockAt, size); + "%p : Malloc(%lu) Ok\n", xmlMemTraceBlockAt, + (long unsigned)size); xmlMallocBreakpoint(); } @@ -311,7 +313,7 @@ void * xmlReallocLoc(void *ptr,size_t size, const char * file, int line) { - MEMHDR *p; + MEMHDR *p, *tmp; unsigned long number; #ifdef DEBUG_MEMORY size_t oldsize; @@ -341,15 +343,18 @@ debugmem_list_delete(p); #endif xmlMutexUnlock(xmlMemMutex); - - p = (MEMHDR *) realloc(p,RESERVE_SIZE+size); - if (!p) { + + tmp = (MEMHDR *) realloc(p,RESERVE_SIZE+size); + if (!tmp) { + free(p); goto error; } + p = tmp; if (xmlMemTraceBlockAt == ptr) { xmlGenericError(xmlGenericErrorContext, - "%p : Realloced(%d -> %d) Ok\n", - xmlMemTraceBlockAt, p->mh_size, size); + "%p : Realloced(%lu -> %lu) Ok\n", + xmlMemTraceBlockAt, (long unsigned)p->mh_size, + (long unsigned)size); xmlMallocBreakpoint(); } p->mh_tag = MEMTAG; @@ -374,8 +379,8 @@ "Realloced(%d to %d) Ok\n", oldsize, size); #endif return(HDR_2_CLIENT(p)); - -error: + +error: return(NULL); } @@ -409,6 +414,9 @@ size_t size; #endif + if (ptr == NULL) + return; + if (ptr == (void *) -1) { xmlGenericError(xmlGenericErrorContext, "trying to free pointer from freed area\n"); @@ -452,10 +460,10 @@ xmlGenericError(xmlGenericErrorContext, "Freed(%d) Ok\n", size); #endif - + return; - -error: + +error: xmlGenericError(xmlGenericErrorContext, "xmlMemFree(%lX) error\n", (unsigned long) ptr); xmlMallocBreakpoint(); @@ -501,16 +509,13 @@ debugmem_list_add(p); #endif xmlMutexUnlock(xmlMemMutex); - + s = (char *) HDR_2_CLIENT(p); - + if (xmlMemStopAtBlock == p->mh_number) xmlMallocBreakpoint(); - if (s != NULL) - strcpy(s,str); - else - goto error; - + strcpy(s,str); + TEST_POINT if (xmlMemTraceBlockAt == s) { @@ -549,7 +554,12 @@ int xmlMemUsed(void) { - return(debugMemSize); + int res; + + xmlMutexLock(xmlMemMutex); + res = debugMemSize; + xmlMutexUnlock(xmlMemMutex); + return(res); } /** @@ -562,7 +572,12 @@ int xmlMemBlocks(void) { - return(debugMemBlocks); + int res; + + xmlMutexLock(xmlMemMutex); + res = debugMemBlocks; + xmlMutexUnlock(xmlMemMutex); + return(res); } #ifdef MEM_LIST @@ -577,13 +592,15 @@ static void xmlMemContentShow(FILE *fp, MEMHDR *p) { - int i,j,k,len = p->mh_size; - const char *buf = (const char *) HDR_2_CLIENT(p); + int i,j,k,len; + const char *buf; if (p == NULL) { fprintf(fp, " NULL"); return; } + len = p->mh_size; + buf = (const char *) HDR_2_CLIENT(p); for (i = 0;i < len;i++) { if (buf[i] == 0) break; @@ -614,7 +631,7 @@ } else if ((i == 0) && (buf[i] == 0)) { fprintf(fp," null"); } else { - if (buf[i] == 0) fprintf(fp," \"%.25s\"", buf); + if (buf[i] == 0) fprintf(fp," \"%.25s\"", buf); else { fprintf(fp," ["); for (j = 0;j < i;j++) @@ -626,6 +643,79 @@ #endif /** + * xmlMemDisplayLast: + * @fp: a FILE descriptor used as the output file, if NULL, the result is + * written to the file .memorylist + * @nbBytes: the amount of memory to dump + * + * the last nbBytes of memory allocated and not freed, useful for dumping + * the memory left allocated between two places at runtime. + */ + +void +xmlMemDisplayLast(FILE *fp, long nbBytes) +{ +#ifdef MEM_LIST + MEMHDR *p; + unsigned idx; + int nb = 0; +#endif + FILE *old_fp = fp; + + if (nbBytes <= 0) + return; + + if (fp == NULL) { + fp = fopen(".memorylist", "w"); + if (fp == NULL) + return; + } + +#ifdef MEM_LIST + fprintf(fp," Last %li MEMORY ALLOCATED : %lu, MAX was %lu\n", + nbBytes, debugMemSize, debugMaxMemSize); + fprintf(fp,"BLOCK NUMBER SIZE TYPE\n"); + idx = 0; + xmlMutexLock(xmlMemMutex); + p = memlist; + while ((p) && (nbBytes > 0)) { + fprintf(fp,"%-5u %6lu %6lu ",idx++,p->mh_number, + (unsigned long)p->mh_size); + switch (p->mh_type) { + case STRDUP_TYPE:fprintf(fp,"strdup() in ");break; + case MALLOC_TYPE:fprintf(fp,"malloc() in ");break; + case REALLOC_TYPE:fprintf(fp,"realloc() in ");break; + case MALLOC_ATOMIC_TYPE:fprintf(fp,"atomicmalloc() in ");break; + case REALLOC_ATOMIC_TYPE:fprintf(fp,"atomicrealloc() in ");break; + default: + fprintf(fp,"Unknown memory block, may be corrupted"); + xmlMutexUnlock(xmlMemMutex); + if (old_fp == NULL) + fclose(fp); + return; + } + if (p->mh_file != NULL) fprintf(fp,"%s(%u)", p->mh_file, p->mh_line); + if (p->mh_tag != MEMTAG) + fprintf(fp," INVALID"); + nb++; + if (nb < 100) + xmlMemContentShow(fp, p); + else + fprintf(fp," skip"); + + fprintf(fp,"\n"); + nbBytes -= (unsigned long)p->mh_size; + p = p->mh_next; + } + xmlMutexUnlock(xmlMemMutex); +#else + fprintf(fp,"Memory list not compiled (MEM_LIST not defined !)\n"); +#endif + if (old_fp == NULL) + fclose(fp); +} + +/** * xmlMemDisplay: * @fp: a FILE descriptor used as the output file, if NULL, the result is * written to the file .memorylist @@ -662,7 +752,7 @@ fprintf(fp," %s\n\n", buf); #endif - + fprintf(fp," MEMORY ALLOCATED : %lu, MAX was %lu\n", debugMemSize, debugMaxMemSize); fprintf(fp,"BLOCK NUMBER SIZE TYPE\n"); @@ -739,7 +829,7 @@ * * internal error function. */ - + static void debugmem_tag_error(void *p) { xmlGenericError(xmlGenericErrorContext, @@ -799,7 +889,7 @@ } } xmlMutexUnlock(xmlMemMutex); -#endif /* MEM_LIST */ +#endif /* MEM_LIST */ } /** @@ -846,11 +936,11 @@ { #ifdef HAVE_STDLIB_H char *breakpoint; -#endif +#endif #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "xmlInitMemory()\n"); -#endif +#endif /* This is really not good code (see Bug 130419). Suggestions for improvement will be welcome! @@ -864,18 +954,18 @@ if (breakpoint != NULL) { sscanf(breakpoint, "%ud", &xmlMemStopAtBlock); } -#endif +#endif #ifdef HAVE_STDLIB_H breakpoint = getenv("XML_MEM_TRACE"); if (breakpoint != NULL) { sscanf(breakpoint, "%p", &xmlMemTraceBlockAt); } -#endif - +#endif + #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "xmlInitMemory() Ok\n"); -#endif +#endif return(0); } @@ -890,7 +980,7 @@ #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "xmlCleanupMemory()\n"); -#endif +#endif if (xmlMemInitialized == 0) return; @@ -900,7 +990,7 @@ #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "xmlCleanupMemory() Ok\n"); -#endif +#endif } /** @@ -924,7 +1014,7 @@ #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "xmlMemSetup()\n"); -#endif +#endif if (freeFunc == NULL) return(-1); if (mallocFunc == NULL) @@ -941,7 +1031,7 @@ #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "xmlMemSetup() Ok\n"); -#endif +#endif return(0); } @@ -991,7 +1081,7 @@ #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "xmlGcMemSetup()\n"); -#endif +#endif if (freeFunc == NULL) return(-1); if (mallocFunc == NULL) @@ -1010,7 +1100,7 @@ #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "xmlGcMemSetup() Ok\n"); -#endif +#endif return(0); } diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlmemory.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlmemory.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlmemory.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlmemory.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -20,7 +20,7 @@ * * DEBUG_MEMORY replaces the allocator with a collect and debug * shell to the libc allocator. - * DEBUG_MEMORY should only be activated when debugging + * DEBUG_MEMORY should only be activated when debugging * libxml i.e. if libxml has been configured with --with-debug-mem too. */ /* #define DEBUG_MEMORY_FREED */ @@ -35,7 +35,7 @@ /** * DEBUG_MEMORY_LOCATION: * - * DEBUG_MEMORY_LOCATION should be activated only when debugging + * DEBUG_MEMORY_LOCATION should be activated only when debugging * libxml i.e. if libxml has been configured with --with-debug-mem too. */ #ifdef DEBUG_MEMORY_LOCATION @@ -63,7 +63,7 @@ * * Returns a pointer to the newly allocated block or NULL in case of error. */ -typedef void *(XMLCALL *xmlMallocFunc)(size_t size); +typedef void *(LIBXML_ATTR_ALLOC_SIZE(1) XMLCALL *xmlMallocFunc)(size_t size); /** * xmlReallocFunc: @@ -88,11 +88,11 @@ /* * The 4 interfaces used for all memory handling within libxml. -LIBXML_DLL_IMPORT extern xmlFreeFunc xmlFree; -LIBXML_DLL_IMPORT extern xmlMallocFunc xmlMalloc; -LIBXML_DLL_IMPORT extern xmlMallocFunc xmlMallocAtomic; -LIBXML_DLL_IMPORT extern xmlReallocFunc xmlRealloc; -LIBXML_DLL_IMPORT extern xmlStrdupFunc xmlMemStrdup; +LIBXML_DLL_IMPORT xmlFreeFunc xmlFree; +LIBXML_DLL_IMPORT xmlMallocFunc xmlMalloc; +LIBXML_DLL_IMPORT xmlMallocFunc xmlMallocAtomic; +LIBXML_DLL_IMPORT xmlReallocFunc xmlRealloc; +LIBXML_DLL_IMPORT xmlStrdupFunc xmlMemStrdup; */ /* @@ -105,18 +105,18 @@ xmlMallocFunc mallocFunc, xmlReallocFunc reallocFunc, xmlStrdupFunc strdupFunc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlMemGet (xmlFreeFunc *freeFunc, xmlMallocFunc *mallocFunc, xmlReallocFunc *reallocFunc, xmlStrdupFunc *strdupFunc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlGcMemSetup (xmlFreeFunc freeFunc, xmlMallocFunc mallocFunc, xmlMallocFunc mallocAtomicFunc, xmlReallocFunc reallocFunc, xmlStrdupFunc strdupFunc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlGcMemGet (xmlFreeFunc *freeFunc, xmlMallocFunc *mallocFunc, xmlMallocFunc *mallocAtomicFunc, @@ -126,42 +126,44 @@ /* * Initialization of the memory layer. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlInitMemory (void); -/* +/* * Cleanup of the memory layer. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCleanupMemory (void); /* * These are specific to the XML debug memory wrapper. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlMemUsed (void); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlMemBlocks (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlMemDisplay (FILE *fp); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL + xmlMemDisplayLast(FILE *fp, long nbBytes); +XMLPUBFUN void XMLCALL xmlMemShow (FILE *fp, int nr); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlMemoryDump (void); -XMLPUBFUN void * XMLCALL - xmlMemMalloc (size_t size); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL + xmlMemMalloc (size_t size) LIBXML_ATTR_ALLOC_SIZE(1); +XMLPUBFUN void * XMLCALL xmlMemRealloc (void *ptr,size_t size); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlMemFree (void *ptr); -XMLPUBFUN char * XMLCALL +XMLPUBFUN char * XMLCALL xmlMemoryStrdup (const char *str); -XMLPUBFUN void * XMLCALL - xmlMallocLoc (size_t size, const char *file, int line); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL + xmlMallocLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1); +XMLPUBFUN void * XMLCALL xmlReallocLoc (void *ptr, size_t size, const char *file, int line); -XMLPUBFUN void * XMLCALL - xmlMallocAtomicLoc (size_t size, const char *file, int line); -XMLPUBFUN char * XMLCALL +XMLPUBFUN void * XMLCALL + xmlMallocAtomicLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1); +XMLPUBFUN char * XMLCALL xmlMemStrdupLoc (const char *str, const char *file, int line); diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlmodule.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlmodule.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlmodule.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlmodule.c 2015-12-23 07:08:27.000000000 +0000 @@ -30,7 +30,7 @@ /************************************************************************ * * - * module memory error handler * + * module memory error handler * * * ************************************************************************/ @@ -61,6 +61,10 @@ * @options: a set of xmlModuleOption * * Opens a module/shared library given its name or path + * NOTE: that due to portability issues, behaviour can only be + * guaranteed with @name using ASCII. We canot guarantee that + * an UTF-8 string would work, which is why name is a const char * + * and not a const xmlChar * . * TODO: options are not yet implemented. * * Returns a handle for the module or NULL in case of error @@ -99,6 +103,10 @@ * @symbol: the resulting symbol address * * Lookup for a symbol address in the given module + * NOTE: that due to portability issues, behaviour can only be + * guaranteed with @name using ASCII. We canot guarantee that + * an UTF-8 string would work, which is why name is a const char * + * and not a const xmlChar * . * * Returns 0 if the symbol was found, or -1 in case of error */ @@ -106,8 +114,8 @@ xmlModuleSymbol(xmlModulePtr module, const char *name, void **symbol) { int rc = -1; - - if ((NULL == module) || (symbol == NULL)) { + + if ((NULL == module) || (symbol == NULL) || (name == NULL)) { __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_MODULE, XML_MODULE_OPEN, XML_ERR_FATAL, NULL, 0, 0, NULL, NULL, 0, 0, "null parameter\n"); @@ -190,7 +198,7 @@ return (0); } -#ifdef HAVE_DLOPEN +#if defined(HAVE_DLOPEN) && !defined(_WIN32) #ifdef HAVE_DLFCN_H #include #endif @@ -300,7 +308,7 @@ static void * xmlModulePlatformOpen(const char *name) { - return LoadLibrary(name); + return LoadLibraryA(name); } /* @@ -326,7 +334,14 @@ static int xmlModulePlatformSymbol(void *handle, const char *name, void **symbol) { +#ifdef _WIN32_WCE + /* + * GetProcAddressA seems only available on WinCE + */ + *symbol = GetProcAddressA(handle, name); +#else *symbol = GetProcAddress(handle, name); +#endif return (NULL == *symbol) ? -1 : 0; } diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlmodule.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlmodule.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlmodule.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlmodule.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -50,7 +50,7 @@ #ifdef __cplusplus } -#endif +#endif #endif /* LIBXML_MODULES_ENABLED */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlreader.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlreader.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlreader.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlreader.c 2015-12-23 07:08:27.000000000 +0000 @@ -1,7 +1,7 @@ /* * xmlreader.c: implements the xmlTextReader streaming node API * - * NOTE: + * NOTE: * XmlTextReader.Normalization Property won't be supported, since * it makes the parser non compliant to the XML recommendation * @@ -44,6 +44,33 @@ #include #endif +#include "buf.h" + +#define MAX_ERR_MSG_SIZE 64000 + +/* + * The following VA_COPY was coded following an example in + * the Samba project. It may not be sufficient for some + * esoteric implementations of va_list but (hopefully) will + * be sufficient for libxml2. + */ +#ifndef VA_COPY + #ifdef HAVE_VA_COPY + #define VA_COPY(dest, src) va_copy(dest, src) + #else + #ifdef HAVE___VA_COPY + #define VA_COPY(dest,src) __va_copy(dest, src) + #else + #ifndef VA_LIST_IS_ARRAY + #define VA_COPY(dest,src) (dest) = (src) + #else + #include + #define VA_COPY(dest,src) memcpy((char *)(dest),(char *)(src),sizeof(va_list)) + #endif + #endif + #endif +#endif + /* #define DEBUG_CALLBACKS */ /* #define DEBUG_READER */ @@ -52,7 +79,7 @@ * * macro to flag unimplemented blocks */ -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); @@ -107,14 +134,14 @@ endElementNsSAX2Func endElementNs; /* idem */ charactersSAXFunc characters; cdataBlockSAXFunc cdataBlock; - unsigned int base; /* base of the segment in the input */ - unsigned int cur; /* current position in the input */ + unsigned int base; /* base of the segment in the input */ + unsigned int cur; /* current position in the input */ xmlNodePtr node; /* current node */ xmlNodePtr curnode;/* current attribute node */ int depth; /* depth of the current node */ xmlNodePtr faketext;/* fake xmlNs chld */ int preserve;/* preserve the resulting document */ - xmlBufferPtr buffer; /* used to return const xmlChar * */ + xmlBufPtr buffer; /* used to return const xmlChar * */ xmlDictPtr dict; /* the context dictionnary */ /* entity stack when traversing entities content */ @@ -131,6 +158,7 @@ /* Handling of RelaxNG validation */ xmlRelaxNGPtr rngSchemas; /* The Relax NG schemas */ xmlRelaxNGValidCtxtPtr rngValidCtxt;/* The Relax NG validation context */ + int rngPreserveCtxt; /* 1 if the context was provided by the user */ int rngValidErrors;/* The number of errors detected */ xmlNodePtr rngFullNode; /* the node if RNG not progressive */ /* Handling of Schemas validation */ @@ -186,7 +214,7 @@ * current scope */ #define DICT_FREE(str) \ - if ((str) && ((!dict) || \ + if ((str) && ((!dict) || \ (xmlDictOwns(dict, (const xmlChar *)(str)) == 0))) \ xmlFree((char *)(str)); @@ -231,11 +259,9 @@ if (doc == NULL) return(-1); if (attr == NULL) return(-1); table = (xmlIDTablePtr) doc->ids; - if (table == NULL) + if (table == NULL) return(-1); - if (attr == NULL) - return(-1); ID = xmlNodeListGetString(doc, attr->children, 1); if (ID == NULL) return(-1); @@ -260,7 +286,10 @@ xmlTextReaderFreeProp(xmlTextReaderPtr reader, xmlAttrPtr cur) { xmlDictPtr dict; - dict = reader->ctxt->dict; + if ((reader != NULL) && (reader->ctxt != NULL)) + dict = reader->ctxt->dict; + else + dict = NULL; if (cur == NULL) return; if ((__xmlRegisterCallbacks) && (xmlDeregisterNodeDefaultValue)) @@ -297,7 +326,7 @@ static void xmlTextReaderFreePropList(xmlTextReaderPtr reader, xmlAttrPtr cur) { xmlAttrPtr next; - if (cur == NULL) return; + while (cur != NULL) { next = cur->next; xmlTextReaderFreeProp(reader, cur); @@ -318,7 +347,10 @@ xmlNodePtr next; xmlDictPtr dict; - dict = reader->ctxt->dict; + if ((reader != NULL) && (reader->ctxt != NULL)) + dict = reader->ctxt->dict; + else + dict = NULL; if (cur == NULL) return; if (cur->type == XML_NAMESPACE_DECL) { xmlFreeNsList((xmlNsPtr) cur); @@ -395,7 +427,10 @@ xmlTextReaderFreeNode(xmlTextReaderPtr reader, xmlNodePtr cur) { xmlDictPtr dict; - dict = reader->ctxt->dict; + if ((reader != NULL) && (reader->ctxt != NULL)) + dict = reader->ctxt->dict; + else + dict = NULL; if (cur->type == XML_DTD_NODE) { xmlFreeDtd((xmlDtdPtr) cur); return; @@ -787,9 +822,10 @@ */ static int xmlTextReaderPushData(xmlTextReaderPtr reader) { - xmlBufferPtr inbuf; + xmlBufPtr inbuf; int val, s; xmlTextReaderState oldstate; + int alloc; if ((reader->input == NULL) || (reader->input->buffer == NULL)) return(-1); @@ -797,17 +833,18 @@ oldstate = reader->state; reader->state = XML_TEXTREADER_NONE; inbuf = reader->input->buffer; + alloc = xmlBufGetAllocationScheme(inbuf); while (reader->state == XML_TEXTREADER_NONE) { - if (inbuf->use < reader->cur + CHUNK_SIZE) { + if (xmlBufUse(inbuf) < reader->cur + CHUNK_SIZE) { /* * Refill the buffer unless we are at the end of the stream */ if (reader->mode != XML_TEXTREADER_MODE_EOF) { val = xmlParserInputBufferRead(reader->input, 4096); if ((val == 0) && - (inbuf->alloc == XML_BUFFER_ALLOC_IMMUTABLE)) { - if (inbuf->use == reader->cur) { + (alloc == XML_BUFFER_ALLOC_IMMUTABLE)) { + if (xmlBufUse(inbuf) == reader->cur) { reader->mode = XML_TEXTREADER_MODE_EOF; reader->state = oldstate; } @@ -823,28 +860,30 @@ break; } - } else + } else break; } /* * parse by block of CHUNK_SIZE bytes, various tests show that * it's the best tradeoff at least on a 1.2GH Duron */ - if (inbuf->use >= reader->cur + CHUNK_SIZE) { + if (xmlBufUse(inbuf) >= reader->cur + CHUNK_SIZE) { val = xmlParseChunk(reader->ctxt, - (const char *) &inbuf->content[reader->cur], - CHUNK_SIZE, 0); + (const char *) xmlBufContent(inbuf) + reader->cur, + CHUNK_SIZE, 0); reader->cur += CHUNK_SIZE; - if ((val != 0) || (reader->ctxt->wellFormed == 0)) - return(-1); + if (val != 0) + reader->ctxt->wellFormed = 0; + if (reader->ctxt->wellFormed == 0) + break; } else { - s = inbuf->use - reader->cur; + s = xmlBufUse(inbuf) - reader->cur; val = xmlParseChunk(reader->ctxt, - (const char *) &inbuf->content[reader->cur], - s, 0); + (const char *) xmlBufContent(inbuf) + reader->cur, + s, 0); reader->cur += s; - if ((val != 0) || (reader->ctxt->wellFormed == 0)) - return(-1); + if (val != 0) + reader->ctxt->wellFormed = 0; break; } } @@ -853,10 +892,10 @@ * Discard the consumed input when needed and possible */ if (reader->mode == XML_TEXTREADER_MODE_INTERACTIVE) { - if (inbuf->alloc != XML_BUFFER_ALLOC_IMMUTABLE) { + if (alloc != XML_BUFFER_ALLOC_IMMUTABLE) { if ((reader->cur >= 4096) && - (inbuf->use - reader->cur <= CHUNK_SIZE)) { - val = xmlBufferShrink(inbuf, reader->cur); + (xmlBufUse(inbuf) - reader->cur <= CHUNK_SIZE)) { + val = xmlBufShrink(inbuf, reader->cur); if (val >= 0) { reader->cur -= val; } @@ -869,18 +908,27 @@ * parser. */ else if (reader->mode == XML_TEXTREADER_MODE_EOF) { - if (reader->mode != XML_TEXTREADER_DONE) { - s = inbuf->use - reader->cur; + if (reader->state != XML_TEXTREADER_DONE) { + s = xmlBufUse(inbuf) - reader->cur; val = xmlParseChunk(reader->ctxt, - (const char *) &inbuf->content[reader->cur], - s, 1); - reader->cur = inbuf->use; - reader->mode = XML_TEXTREADER_DONE; - if ((val != 0) || (reader->ctxt->wellFormed == 0)) - return(-1); + (const char *) xmlBufContent(inbuf) + reader->cur, + s, 1); + reader->cur = xmlBufUse(inbuf); + reader->state = XML_TEXTREADER_DONE; + if (val != 0) { + if (reader->ctxt->wellFormed) + reader->ctxt->wellFormed = 0; + else + return(-1); + } } } reader->state = oldstate; + if (reader->ctxt->wellFormed == 0) { + reader->mode = XML_TEXTREADER_MODE_EOF; + return(-1); + } + return(0); } @@ -949,7 +997,7 @@ * xmlTextReaderValidateCData: * @reader: the xmlTextReaderPtr used * @data: pointer to the CData - * @len: lenght of the CData block in bytes. + * @len: length of the CData block in bytes. * * Push some CData for validation */ @@ -1012,7 +1060,7 @@ int ret; if (reader->rngFullNode != NULL) { - if (node == reader->rngFullNode) + if (node == reader->rngFullNode) reader->rngFullNode = NULL; return; } @@ -1047,7 +1095,7 @@ */ if ((node->children == NULL) && (ctxt->sax != NULL) && (ctxt->sax->getEntity != NULL)) { - node->children = (xmlNodePtr) + node->children = (xmlNodePtr) ctxt->sax->getEntity(ctxt, node->name); } @@ -1169,8 +1217,10 @@ if (reader->mode == XML_TEXTREADER_MODE_EOF) return(1); val = xmlTextReaderPushData(reader); - if (val < 0) + if (val < 0){ + reader->mode = XML_TEXTREADER_MODE_ERROR; return(-1); + } } while(reader->mode != XML_TEXTREADER_MODE_EOF); return(1); } @@ -1191,6 +1241,9 @@ xmlBufferPtr buffer; xmlChar *ret; + if ((node == NULL) || (node->type == XML_NAMESPACE_DECL)) + return(NULL); + buffer = xmlBufferCreate(); if (buffer == NULL) return NULL; @@ -1235,7 +1288,7 @@ xmlTextReaderState oldstate = XML_TEXTREADER_START; xmlNodePtr oldnode = NULL; - + if (reader == NULL) return(-1); reader->curnode = NULL; @@ -1243,8 +1296,6 @@ return(xmlTextReaderReadTree(reader)); if (reader->ctxt == NULL) return(-1); - if (reader->ctxt->wellFormed != 1) - return(-1); #ifdef DEBUG_READER fprintf(stderr, "\nREAD "); @@ -1257,17 +1308,23 @@ */ do { val = xmlTextReaderPushData(reader); - if (val < 0) + if (val < 0){ + reader->mode = XML_TEXTREADER_MODE_ERROR; + reader->state = XML_TEXTREADER_ERROR; return(-1); + } } while ((reader->ctxt->node == NULL) && ((reader->mode != XML_TEXTREADER_MODE_EOF) && - (reader->mode != XML_TEXTREADER_DONE))); + (reader->state != XML_TEXTREADER_DONE))); if (reader->ctxt->node == NULL) { if (reader->ctxt->myDoc != NULL) { reader->node = reader->ctxt->myDoc->children; } - if (reader->node == NULL) + if (reader->node == NULL){ + reader->mode = XML_TEXTREADER_MODE_ERROR; + reader->state = XML_TEXTREADER_ERROR; return(-1); + } reader->state = XML_TEXTREADER_ELEMENT; } else { if (reader->ctxt->myDoc != NULL) { @@ -1287,7 +1344,7 @@ get_next_node: if (reader->node == NULL) { - if (reader->mode == XML_TEXTREADER_DONE) + if (reader->mode == XML_TEXTREADER_MODE_EOF) return(0); else return(-1); @@ -1314,8 +1371,11 @@ (reader->ctxt->node == reader->node->parent)) && (reader->ctxt->instate != XML_PARSER_EOF)) { val = xmlTextReaderPushData(reader); - if (val < 0) + if (val < 0){ + reader->mode = XML_TEXTREADER_MODE_ERROR; + reader->state = XML_TEXTREADER_ERROR; return(-1); + } if (reader->node == NULL) goto node_end; } @@ -1362,8 +1422,7 @@ #endif (reader->entNr == 0) && (reader->node->prev != NULL) && - (reader->node->prev->type != XML_DTD_NODE) && - (reader->entNr == 0)) { + (reader->node->prev->type != XML_DTD_NODE)) { xmlNodePtr tmp = reader->node->prev; if ((tmp->extra & NODE_IS_PRESERVED) == 0) { xmlUnlinkNode(tmp); @@ -1381,7 +1440,7 @@ goto node_found; } #ifdef LIBXML_REGEXP_ENABLED - if ((reader->validate) && (reader->node->type == XML_ELEMENT_NODE)) + if ((reader->validate != XML_TEXTREADER_NOT_VALIDATE) && (reader->node->type == XML_ELEMENT_NODE)) xmlTextReaderValidatePop(reader); #endif /* LIBXML_REGEXP_ENABLED */ if ((reader->preserves > 0) && @@ -1394,9 +1453,9 @@ (reader->node->type == XML_DOCB_DOCUMENT_NODE) || #endif (reader->node->type == XML_HTML_DOCUMENT_NODE)) { - if (reader->mode != XML_TEXTREADER_DONE) { + if (reader->mode != XML_TEXTREADER_MODE_EOF) { val = xmlParseChunk(reader->ctxt, "", 0, 1); - reader->mode = XML_TEXTREADER_DONE; + reader->state = XML_TEXTREADER_DONE; if (val != 0) return(-1); } @@ -1406,14 +1465,13 @@ /* * Cleanup of the old node */ - if ((reader->preserves == 0) && + if ((oldnode != NULL) && (reader->preserves == 0) && #ifdef LIBXML_XINCLUDE_ENABLED (reader->in_xinclude == 0) && #endif (reader->entNr == 0) && (oldnode->type != XML_DTD_NODE) && - ((oldnode->extra & NODE_IS_PRESERVED) == 0) && - (reader->entNr == 0)) { + ((oldnode->extra & NODE_IS_PRESERVED) == 0)) { xmlUnlinkNode(oldnode); xmlTextReaderFreeNode(reader, oldnode); } @@ -1459,7 +1517,7 @@ (xmlStrEqual(reader->node->ns->href, XINCLUDE_OLD_NS)))) { if (reader->xincctxt == NULL) { reader->xincctxt = xmlXIncludeNewContext(reader->ctxt->myDoc); - xmlXIncludeSetFlags(reader->xincctxt, + xmlXIncludeSetFlags(reader->xincctxt, reader->parserFlags & (~XML_PARSE_NOXINCNODE)); } /* @@ -1472,7 +1530,7 @@ if ((reader->node != NULL) && (reader->node->type == XML_XINCLUDE_START)) { reader->in_xinclude++; goto get_next_node; - } + } if ((reader->node != NULL) && (reader->node->type == XML_XINCLUDE_END)) { reader->in_xinclude--; goto get_next_node; @@ -1490,7 +1548,7 @@ */ if ((reader->node->children == NULL) && (reader->ctxt->sax != NULL) && (reader->ctxt->sax->getEntity != NULL)) { - reader->node->children = (xmlNodePtr) + reader->node->children = (xmlNodePtr) reader->ctxt->sax->getEntity(reader->ctxt, reader->node->name); } @@ -1515,10 +1573,10 @@ goto get_next_node; } #ifdef LIBXML_REGEXP_ENABLED - if ((reader->validate) && (reader->node != NULL)) { + if ((reader->validate != XML_TEXTREADER_NOT_VALIDATE) && (reader->node != NULL)) { xmlNodePtr node = reader->node; - if ((node->type == XML_ELEMENT_NODE) && + if ((node->type == XML_ELEMENT_NODE) && ((reader->state != XML_TEXTREADER_END) && (reader->state != XML_TEXTREADER_BACKTRACK))) { xmlTextReaderValidatePush(reader); @@ -1543,14 +1601,14 @@ #endif /* LIBXML_PATTERN_ENABLED */ #ifdef LIBXML_SCHEMAS_ENABLED if ((reader->validate == XML_TEXTREADER_VALIDATE_XSD) && - (reader->xsdValidErrors == 0) && + (reader->xsdValidErrors == 0) && (reader->xsdValidCtxt != NULL)) { reader->xsdValidErrors = !xmlSchemaIsValid(reader->xsdValidCtxt); } #endif /* LIBXML_PATTERN_ENABLED */ return(1); node_end: - reader->mode = XML_TEXTREADER_DONE; + reader->state = XML_TEXTREADER_DONE; return(0); } @@ -1634,7 +1692,7 @@ * Reads the contents of the current node, including child nodes and markup. * * Returns a string containing the XML content, or NULL if the current node - * is neither an element nor attribute, or has no child nodes. The + * is neither an element nor attribute, or has no child nodes. The * string must be deallocated by the caller. */ xmlChar * @@ -1679,9 +1737,9 @@ * * Reads the contents of the current node, including child nodes and markup. * - * Returns a string containing the XML content, or NULL if the current node - * is neither an element nor attribute, or has no child nodes. The - * string must be deallocated by the caller. + * Returns a string containing the node and any XML content, or NULL if the + * current node cannot be serialized. The string must be deallocated + * by the caller. */ xmlChar * xmlTextReaderReadOuterXml(xmlTextReaderPtr reader ATTRIBUTE_UNUSED) @@ -1696,7 +1754,11 @@ if (xmlTextReaderExpand(reader) == NULL) { return NULL; } - node = xmlDocCopyNode(node, doc, 1); + if (node->type == XML_DTD_NODE) { + node = (xmlNodePtr) xmlCopyDtd((xmlDtdPtr) node); + } else { + node = xmlDocCopyNode(node, doc, 1); + } buff = xmlBufferCreate(); if (xmlNodeDump(buff, doc, node, 0, 0) == -1) { xmlFreeNode(node); @@ -1741,6 +1803,7 @@ if (xmlTextReaderDoExpand(reader) != -1) { return xmlTextReaderCollectSiblings(node->children); } + break; case XML_ATTRIBUTE_NODE: TODO break; @@ -1838,17 +1901,22 @@ } if (reader->state != XML_TEXTREADER_BACKTRACK) { - if (reader->node->children != 0) { - reader->node = reader->node->children; - reader->depth++; + /* Here removed traversal to child, because we want to skip the subtree, + replace with traversal to sibling to skip subtree */ + if (reader->node->next != 0) { + /* Move to sibling if present,skipping sub-tree */ + reader->node = reader->node->next; reader->state = XML_TEXTREADER_START; return(1); } + /* if reader->node->next is NULL mean no subtree for current node, + so need to move to sibling of parent node if present */ if ((reader->node->type == XML_ELEMENT_NODE) || (reader->node->type == XML_ATTRIBUTE_NODE)) { reader->state = XML_TEXTREADER_BACKTRACK; - return(1); + /* This will move to parent if present */ + xmlTextReaderRead(reader); } } @@ -1867,7 +1935,8 @@ reader->node = reader->node->parent; reader->depth--; reader->state = XML_TEXTREADER_BACKTRACK; - return(1); + /* Repeat process to move to sibling of parent node if present */ + xmlTextReaderNextTree(reader); } reader->state = XML_TEXTREADER_END; @@ -2015,16 +2084,19 @@ ret->entMax = 0; ret->entNr = 0; ret->input = input; - ret->buffer = xmlBufferCreateSize(100); + ret->buffer = xmlBufCreateSize(100); if (ret->buffer == NULL) { xmlFree(ret); xmlGenericError(xmlGenericErrorContext, "xmlNewTextReader : malloc failed\n"); return(NULL); } + /* no operation on a reader should require a huge buffer */ + xmlBufSetAllocationScheme(ret->buffer, + XML_BUFFER_ALLOC_BOUNDED); ret->sax = (xmlSAXHandler *) xmlMalloc(sizeof(xmlSAXHandler)); if (ret->sax == NULL) { - xmlBufferFree(ret->buffer); + xmlBufFree(ret->buffer); xmlFree(ret); xmlGenericError(xmlGenericErrorContext, "xmlNewTextReader : malloc failed\n"); @@ -2057,12 +2129,13 @@ ret->mode = XML_TEXTREADER_MODE_INITIAL; ret->node = NULL; ret->curnode = NULL; - if (ret->input->buffer->use < 4) { + if (xmlBufUse(ret->input->buffer) < 4) { xmlParserInputBufferRead(input, 4); } - if (ret->input->buffer->use >= 4) { + if (xmlBufUse(ret->input->buffer) >= 4) { ret->ctxt = xmlCreatePushParserCtxt(ret->sax, NULL, - (const char *) ret->input->buffer->content, 4, URI); + (const char *) xmlBufContent(ret->input->buffer), + 4, URI); ret->base = 0; ret->cur = 4; } else { @@ -2070,11 +2143,11 @@ ret->base = 0; ret->cur = 0; } - + if (ret->ctxt == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlNewTextReader : malloc failed\n"); - xmlBufferFree(ret->buffer); + xmlBufFree(ret->buffer); xmlFree(ret->sax); xmlFree(ret); return(NULL); @@ -2147,7 +2220,8 @@ reader->rngSchemas = NULL; } if (reader->rngValidCtxt != NULL) { - xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); + if (! reader->rngPreserveCtxt) + xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); reader->rngValidCtxt = NULL; } if (reader->xsdPlug != NULL) { @@ -2178,6 +2252,9 @@ xmlFree(reader->patternTab); } #endif + if (reader->faketext != NULL) { + xmlFreeNode(reader->faketext); + } if (reader->ctxt != NULL) { if (reader->dict == reader->ctxt->dict) reader->dict = NULL; @@ -2199,11 +2276,8 @@ xmlFree(reader->sax); if ((reader->input != NULL) && (reader->allocs & XML_TEXTREADER_INPUT)) xmlFreeParserInputBuffer(reader->input); - if (reader->faketext != NULL) { - xmlFreeNode(reader->faketext); - } if (reader->buffer != NULL) - xmlBufferFree(reader->buffer); + xmlBufFree(reader->buffer); if (reader->entTab != NULL) xmlFree(reader->entTab); if (reader->dict != NULL) @@ -2272,7 +2346,7 @@ if (reader->curnode != NULL) return(NULL); /* TODO: handle the xmlDecl */ - if (reader->node->type != XML_ELEMENT_NODE) + if (reader->node->type != XML_ELEMENT_NODE) return(NULL); ns = reader->node->nsDef; @@ -2402,7 +2476,7 @@ } ns = reader->node->nsDef; while (ns != NULL) { - if ((prefix == NULL && ns->prefix == NULL) || + if ((prefix == NULL && ns->prefix == NULL) || ((ns->prefix != NULL) && (xmlStrEqual(ns->prefix, localName)))) { return xmlStrdup(ns->href); } @@ -2514,7 +2588,7 @@ if (reader->node == NULL) return(-1); /* TODO: handle the xmlDecl */ - if (reader->node->type != XML_ELEMENT_NODE) + if (reader->node->type != XML_ELEMENT_NODE) return(-1); reader->curnode = NULL; @@ -2601,7 +2675,7 @@ } return(0); } - + /* * Namespace default decl */ @@ -2678,7 +2752,7 @@ } ns = reader->node->nsDef; while (ns != NULL) { - if ((prefix == NULL && ns->prefix == NULL) || + if ((prefix == NULL && ns->prefix == NULL) || ((ns->prefix != NULL) && (xmlStrEqual(ns->prefix, localName)))) { reader->curnode = (xmlNodePtr) ns; return(1); @@ -2824,7 +2898,7 @@ xmlNsPtr ns = (xmlNsPtr) reader->curnode; if (reader->faketext == NULL) { - reader->faketext = xmlNewDocText(reader->node->doc, + reader->faketext = xmlNewDocText(reader->node->doc, ns->href); } else { if ((reader->faketext->content != NULL) && @@ -2862,7 +2936,7 @@ doc = reader->ctxt->myDoc; if (doc == NULL) return(NULL); - + if (doc->encoding == NULL) return(NULL); else @@ -2894,7 +2968,7 @@ return(-1); if (reader->node == NULL) return(0); - + if (reader->curnode != NULL) node = reader->curnode; else @@ -2925,14 +2999,14 @@ * * Get the node type of the current node * Reference: - * http://dotgnu.org/pnetlib-doc/System/Xml/XmlNodeType.html + * http://www.gnu.org/software/dotgnu/pnetlib-doc/System/Xml/XmlNodeType.html * * Returns the xmlNodeType of the current node or -1 in case of error */ int xmlTextReaderNodeType(xmlTextReaderPtr reader) { xmlNodePtr node; - + if (reader == NULL) return(-1); if (reader->node == NULL) @@ -3028,7 +3102,8 @@ * * The local name of the node. * - * Returns the local name or NULL if not available + * Returns the local name or NULL if not available, + * if non NULL it need to be freed by the caller. */ xmlChar * xmlTextReaderLocalName(xmlTextReaderPtr reader) { @@ -3089,7 +3164,8 @@ * * The qualified name of the node, equal to Prefix :LocalName. * - * Returns the local name or NULL if not available + * Returns the local name or NULL if not available, + * if non NULL it need to be freed by the caller. */ xmlChar * xmlTextReaderName(xmlTextReaderPtr reader) { @@ -3108,7 +3184,7 @@ if ((node->ns == NULL) || (node->ns->prefix == NULL)) return(xmlStrdup(node->name)); - + ret = xmlStrdup(node->ns->prefix); ret = xmlStrcat(ret, BAD_CAST ":"); ret = xmlStrcat(ret, node->name); @@ -3232,7 +3308,8 @@ * * A shorthand reference to the namespace associated with the node. * - * Returns the prefix or NULL if not available + * Returns the prefix or NULL if not available, + * if non NULL it need to be freed by the caller. */ xmlChar * xmlTextReaderPrefix(xmlTextReaderPtr reader) { @@ -3295,7 +3372,8 @@ * * The URI defining the namespace associated with the node. * - * Returns the namespace URI or NULL if not available + * Returns the namespace URI or NULL if not available, + * if non NULL it need to be freed by the caller. */ xmlChar * xmlTextReaderNamespaceUri(xmlTextReaderPtr reader) { @@ -3350,7 +3428,8 @@ * * The base URI of the node. * - * Returns the base URI or NULL if not available + * Returns the base URI or NULL if not available, + * if non NULL it need to be freed by the caller. */ xmlChar * xmlTextReaderBaseUri(xmlTextReaderPtr reader) { @@ -3540,22 +3619,35 @@ return(((xmlNsPtr) node)->href); case XML_ATTRIBUTE_NODE:{ xmlAttrPtr attr = (xmlAttrPtr) node; + const xmlChar *ret; if ((attr->children != NULL) && (attr->children->type == XML_TEXT_NODE) && (attr->children->next == NULL)) return(attr->children->content); else { - if (reader->buffer == NULL) - reader->buffer = xmlBufferCreateSize(100); if (reader->buffer == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlTextReaderSetup : malloc failed\n"); - return (NULL); + reader->buffer = xmlBufCreateSize(100); + if (reader->buffer == NULL) { + xmlGenericError(xmlGenericErrorContext, + "xmlTextReaderSetup : malloc failed\n"); + return (NULL); + } + xmlBufSetAllocationScheme(reader->buffer, + XML_BUFFER_ALLOC_BOUNDED); + } else + xmlBufEmpty(reader->buffer); + xmlBufGetNodeContent(reader->buffer, node); + ret = xmlBufContent(reader->buffer); + if (ret == NULL) { + /* error on the buffer best to reallocate */ + xmlBufFree(reader->buffer); + reader->buffer = xmlBufCreateSize(100); + xmlBufSetAllocationScheme(reader->buffer, + XML_BUFFER_ALLOC_BOUNDED); + ret = BAD_CAST ""; } - reader->buffer->use = 0; - xmlNodeBufGetContent(reader->buffer, node); - return(reader->buffer->content); + return(ret); } break; } @@ -3608,7 +3700,8 @@ * * The xml:lang scope within which the node resides. * - * Returns the xml:lang value or NULL if none exists. + * Returns the xml:lang value or NULL if none exists., + * if non NULL it need to be freed by the caller. */ xmlChar * xmlTextReaderXmlLang(xmlTextReaderPtr reader) { @@ -3833,7 +3926,7 @@ xmlTextReaderCurrentNode(xmlTextReaderPtr reader) { if (reader == NULL) return(NULL); - + if (reader->curnode != NULL) return(reader->curnode); return(reader->node); @@ -3855,7 +3948,7 @@ if (reader == NULL) return(NULL); - + if (reader->curnode != NULL) cur = reader->curnode; else @@ -3868,7 +3961,7 @@ cur->extra |= NODE_IS_SPRESERVED; } reader->preserves++; - + parent = cur->parent;; while (parent != NULL) { if (parent->type == XML_ELEMENT_NODE) @@ -3884,7 +3977,7 @@ * @reader: the xmlTextReaderPtr used * @pattern: an XPath subset pattern * @namespaces: the prefix definitions, array of [URI, prefix] or NULL - * + * * This tells the XML Reader to preserve all nodes matched by the * pattern. The caller must also use xmlTextReaderCurrentDoc() to * keep an handle on the resulting document once parsing has finished @@ -3899,7 +3992,7 @@ if ((reader == NULL) || (pattern == NULL)) return(-1); - + comp = xmlPatterncompile(pattern, reader->dict, 0, namespaces); if (comp == NULL) return(-1); @@ -3936,7 +4029,7 @@ * @reader: the xmlTextReaderPtr used * * Hacking interface allowing to get the xmlDocPtr correponding to the - * current document being accessed by the xmlTextReader. + * current document being accessed by the xmlTextReader. * NOTE: as a result of this call, the reader will not destroy the * associated XML document and calling xmlFreeDoc() on the result * is needed once the reader parsing has finished. @@ -3949,75 +4042,82 @@ return(NULL); if (reader->doc != NULL) return(reader->doc); - if ((reader == NULL) || (reader->ctxt == NULL) || - (reader->ctxt->myDoc == NULL)) + if ((reader->ctxt == NULL) || (reader->ctxt->myDoc == NULL)) return(NULL); - + reader->preserve = 1; return(reader->ctxt->myDoc); } #ifdef LIBXML_SCHEMAS_ENABLED +static char *xmlTextReaderBuildMessage(const char *msg, va_list ap); -static char * -xmlTextReaderBuildMessage(const char *msg, va_list ap); - -static void XMLCDECL +static void XMLCDECL xmlTextReaderValidityError(void *ctxt, const char *msg, ...); -static void XMLCDECL +static void XMLCDECL xmlTextReaderValidityWarning(void *ctxt, const char *msg, ...); -static void XMLCDECL xmlTextReaderValidityErrorRelay(void *ctx, const char *msg, ...) +static void XMLCDECL +xmlTextReaderValidityErrorRelay(void *ctx, const char *msg, ...) { - xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx; - char * str; - va_list ap; - - va_start(ap,msg); - str = xmlTextReaderBuildMessage(msg,ap); - if (!reader->errorFunc) { - xmlTextReaderValidityError(ctx, "%s", str); - } else { - reader->errorFunc(reader->errorFuncArg, str, XML_PARSER_SEVERITY_VALIDITY_ERROR, NULL /* locator */); - } - if (str != NULL) - xmlFree(str); - va_end(ap); + xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx; + + char *str; + + va_list ap; + + va_start(ap, msg); + str = xmlTextReaderBuildMessage(msg, ap); + if (!reader->errorFunc) { + xmlTextReaderValidityError(ctx, "%s", str); + } else { + reader->errorFunc(reader->errorFuncArg, str, + XML_PARSER_SEVERITY_VALIDITY_ERROR, + NULL /* locator */ ); + } + if (str != NULL) + xmlFree(str); + va_end(ap); } -static void XMLCDECL xmlTextReaderValidityWarningRelay(void *ctx, const char *msg, ...) +static void XMLCDECL +xmlTextReaderValidityWarningRelay(void *ctx, const char *msg, ...) { - xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx; - char * str; - va_list ap; + xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx; - va_start(ap,msg); - str = xmlTextReaderBuildMessage(msg,ap); - if (!reader->errorFunc) { - xmlTextReaderValidityWarning(ctx, "%s", str); - } else { - reader->errorFunc(reader->errorFuncArg, str, XML_PARSER_SEVERITY_VALIDITY_WARNING, NULL /* locator */); - } - if (str != NULL) - xmlFree(str); - va_end(ap); + char *str; + + va_list ap; + + va_start(ap, msg); + str = xmlTextReaderBuildMessage(msg, ap); + if (!reader->errorFunc) { + xmlTextReaderValidityWarning(ctx, "%s", str); + } else { + reader->errorFunc(reader->errorFuncArg, str, + XML_PARSER_SEVERITY_VALIDITY_WARNING, + NULL /* locator */ ); + } + if (str != NULL) + xmlFree(str); + va_end(ap); } -static void -xmlTextReaderStructuredError(void *ctxt, xmlErrorPtr error); +static void + xmlTextReaderStructuredError(void *ctxt, xmlErrorPtr error); -static void xmlTextReaderValidityStructuredRelay(void * userData, xmlErrorPtr error) +static void +xmlTextReaderValidityStructuredRelay(void *userData, xmlErrorPtr error) { - xmlTextReaderPtr reader = (xmlTextReaderPtr) userData; + xmlTextReaderPtr reader = (xmlTextReaderPtr) userData; - if (reader->sErrorFunc) { - reader->sErrorFunc(reader->errorFuncArg, error); - } else { - xmlTextReaderStructuredError(reader, error); - } + if (reader->sErrorFunc) { + reader->sErrorFunc(reader->errorFuncArg, error); + } else { + xmlTextReaderStructuredError(reader, error); + } } - /** * xmlTextReaderRelaxNGSetSchema: * @reader: the xmlTextReaderPtr used @@ -4042,9 +4142,11 @@ reader->rngSchemas = NULL; } if (reader->rngValidCtxt != NULL) { - xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); + if (! reader->rngPreserveCtxt) + xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); reader->rngValidCtxt = NULL; } + reader->rngPreserveCtxt = 0; return(0); } if (reader->mode != XML_TEXTREADER_MODE_INITIAL) @@ -4054,9 +4156,11 @@ reader->rngSchemas = NULL; } if (reader->rngValidCtxt != NULL) { - xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); + if (! reader->rngPreserveCtxt) + xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); reader->rngValidCtxt = NULL; } + reader->rngPreserveCtxt = 0; reader->rngValidCtxt = xmlRelaxNGNewValidCtxt(schema); if (reader->rngValidCtxt == NULL) return(-1); @@ -4067,7 +4171,7 @@ reader); } if (reader->sErrorFunc != NULL) { - xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, xmlTextReaderValidityStructuredRelay, reader); } @@ -4078,6 +4182,60 @@ } /** + * xmlTextReaderLocator: + * @ctx: the xmlTextReaderPtr used + * @file: returned file information + * @line: returned line information + * + * Internal locator function for the readers + * + * Returns 0 in case the Schema validation could be (des)activated and + * -1 in case of error. + */ +static int +xmlTextReaderLocator(void *ctx, const char **file, unsigned long *line) { + xmlTextReaderPtr reader; + + if ((ctx == NULL) || ((file == NULL) && (line == NULL))) + return(-1); + + if (file != NULL) + *file = NULL; + if (line != NULL) + *line = 0; + + reader = (xmlTextReaderPtr) ctx; + if ((reader->ctxt != NULL) && (reader->ctxt->input != NULL)) { + if (file != NULL) + *file = reader->ctxt->input->filename; + if (line != NULL) + *line = reader->ctxt->input->line; + return(0); + } + if (reader->node != NULL) { + long res; + int ret = 0; + + if (line != NULL) { + res = xmlGetLineNo(reader->node); + if (res > 0) + *line = (unsigned long) res; + else + ret = -1; + } + if (file != NULL) { + xmlDocPtr doc = reader->node->doc; + if ((doc != NULL) && (doc->URL != NULL)) + *file = (const char *) doc->URL; + else + ret = -1; + } + return(ret); + } + return(-1); +} + +/** * xmlTextReaderSetSchema: * @reader: the xmlTextReaderPtr used * @schema: a precompiled Schema schema @@ -4103,15 +4261,15 @@ if (reader->xsdValidCtxt != NULL) { if (! reader->xsdPreserveCtxt) xmlSchemaFreeValidCtxt(reader->xsdValidCtxt); - reader->xsdValidCtxt = NULL; + reader->xsdValidCtxt = NULL; } reader->xsdPreserveCtxt = 0; if (reader->xsdSchemas != NULL) { xmlSchemaFree(reader->xsdSchemas); reader->xsdSchemas = NULL; - } + } return(0); - } + } if (reader->mode != XML_TEXTREADER_MODE_INITIAL) return(-1); if (reader->xsdPlug != NULL) { @@ -4120,7 +4278,7 @@ } if (reader->xsdValidCtxt != NULL) { if (! reader->xsdPreserveCtxt) - xmlSchemaFreeValidCtxt(reader->xsdValidCtxt); + xmlSchemaFreeValidCtxt(reader->xsdValidCtxt); reader->xsdValidCtxt = NULL; } reader->xsdPreserveCtxt = 0; @@ -4144,6 +4302,10 @@ reader->xsdValidCtxt = NULL; return(-1); } + xmlSchemaValidateSetLocator(reader->xsdValidCtxt, + xmlTextReaderLocator, + (void *) reader); + if (reader->errorFunc != NULL) { xmlSchemaSetValidErrors(reader->xsdValidCtxt, xmlTextReaderValidityErrorRelay, @@ -4161,67 +4323,91 @@ } /** - * xmlTextReaderRelaxNGValidate: + * xmlTextReaderRelaxNGValidateInternal: * @reader: the xmlTextReaderPtr used * @rng: the path to a RelaxNG schema or NULL + * @ctxt: the RelaxNG schema validation context or NULL + * @options: options (not yet used) * * Use RelaxNG to validate the document as it is processed. * Activation is only possible before the first Read(). - * if @rng is NULL, then RelaxNG validation is desactivated. + * If both @rng and @ctxt are NULL, then RelaxNG validation is deactivated. * - * Returns 0 in case the RelaxNG validation could be (des)activated and - * -1 in case of error. + * Returns 0 in case the RelaxNG validation could be (de)activated and + * -1 in case of error. */ -int -xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader, const char *rng) { - xmlRelaxNGParserCtxtPtr ctxt; - +static int +xmlTextReaderRelaxNGValidateInternal(xmlTextReaderPtr reader, + const char *rng, + xmlRelaxNGValidCtxtPtr ctxt, + int options ATTRIBUTE_UNUSED) +{ if (reader == NULL) - return(-1); - - if (rng == NULL) { - if (reader->rngValidCtxt != NULL) { + return(-1); + + if ((rng != NULL) && (ctxt != NULL)) + return (-1); + + if (((rng != NULL) || (ctxt != NULL)) && + ((reader->mode != XML_TEXTREADER_MODE_INITIAL) || + (reader->ctxt == NULL))) + return(-1); + + /* Cleanup previous validation stuff. */ + if (reader->rngValidCtxt != NULL) { + if ( !reader->rngPreserveCtxt) xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); - reader->rngValidCtxt = NULL; - } - if (reader->rngSchemas != NULL) { - xmlRelaxNGFree(reader->rngSchemas); - reader->rngSchemas = NULL; - } - return(0); + reader->rngValidCtxt = NULL; } - if (reader->mode != XML_TEXTREADER_MODE_INITIAL) - return(-1); + reader->rngPreserveCtxt = 0; if (reader->rngSchemas != NULL) { xmlRelaxNGFree(reader->rngSchemas); reader->rngSchemas = NULL; } - if (reader->rngValidCtxt != NULL) { - xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); - reader->rngValidCtxt = NULL; - } - ctxt = xmlRelaxNGNewParserCtxt(rng); - if (reader->errorFunc != NULL) { - xmlRelaxNGSetParserErrors(ctxt, - xmlTextReaderValidityErrorRelay, - xmlTextReaderValidityWarningRelay, - reader); + + if ((rng == NULL) && (ctxt == NULL)) { + /* We just want to deactivate the validation, so get out. */ + return(0); } + + + if (rng != NULL) { + xmlRelaxNGParserCtxtPtr pctxt; + /* Parse the schema and create validation environment. */ + + pctxt = xmlRelaxNGNewParserCtxt(rng); + if (reader->errorFunc != NULL) { + xmlRelaxNGSetParserErrors(pctxt, + xmlTextReaderValidityErrorRelay, + xmlTextReaderValidityWarningRelay, + reader); + } if (reader->sErrorFunc != NULL) { - xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, - xmlTextReaderValidityStructuredRelay, - reader); - } - reader->rngSchemas = xmlRelaxNGParse(ctxt); - xmlRelaxNGFreeParserCtxt(ctxt); - if (reader->rngSchemas == NULL) - return(-1); - reader->rngValidCtxt = xmlRelaxNGNewValidCtxt(reader->rngSchemas); - if (reader->rngValidCtxt == NULL) { - xmlRelaxNGFree(reader->rngSchemas); - reader->rngSchemas = NULL; - return(-1); + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, + xmlTextReaderValidityStructuredRelay, + reader); + } + reader->rngSchemas = xmlRelaxNGParse(pctxt); + xmlRelaxNGFreeParserCtxt(pctxt); + if (reader->rngSchemas == NULL) + return(-1); + reader->rngValidCtxt = xmlRelaxNGNewValidCtxt(reader->rngSchemas); + if (reader->rngValidCtxt == NULL) { + xmlRelaxNGFree(reader->rngSchemas); + reader->rngSchemas = NULL; + return(-1); + } + } else { + /* Use the given validation context. */ + reader->rngValidCtxt = ctxt; + reader->rngPreserveCtxt = 1; } + /* + * Redirect the validation context's error channels to use + * the reader channels. + * TODO: In case the user provides the validation context we + * could make this redirection optional. + */ if (reader->errorFunc != NULL) { xmlRelaxNGSetValidErrors(reader->rngValidCtxt, xmlTextReaderValidityErrorRelay, @@ -4229,7 +4415,7 @@ reader); } if (reader->sErrorFunc != NULL) { - xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, xmlTextReaderValidityStructuredRelay, reader); } @@ -4258,7 +4444,7 @@ const char *xsd, xmlSchemaValidCtxtPtr ctxt, int options ATTRIBUTE_UNUSED) -{ +{ if (reader == NULL) return(-1); @@ -4269,7 +4455,7 @@ ((reader->mode != XML_TEXTREADER_MODE_INITIAL) || (reader->ctxt == NULL))) return(-1); - + /* Cleanup previous validation stuff. */ if (reader->xsdPlug != NULL) { xmlSchemaSAXUnplug(reader->xsdPlug); @@ -4277,20 +4463,20 @@ } if (reader->xsdValidCtxt != NULL) { if (! reader->xsdPreserveCtxt) - xmlSchemaFreeValidCtxt(reader->xsdValidCtxt); + xmlSchemaFreeValidCtxt(reader->xsdValidCtxt); reader->xsdValidCtxt = NULL; } reader->xsdPreserveCtxt = 0; if (reader->xsdSchemas != NULL) { xmlSchemaFree(reader->xsdSchemas); reader->xsdSchemas = NULL; - } + } if ((xsd == NULL) && (ctxt == NULL)) { /* We just want to deactivate the validation, so get out. */ return(0); - } - + } + if (xsd != NULL) { xmlSchemaParserCtxtPtr pctxt; /* Parse the schema and create validation environment. */ @@ -4322,18 +4508,21 @@ return(-1); } } else { - /* Use the given validation context. */ + /* Use the given validation context. */ reader->xsdValidCtxt = ctxt; reader->xsdPreserveCtxt = 1; reader->xsdPlug = xmlSchemaSAXPlug(reader->xsdValidCtxt, &(reader->ctxt->sax), &(reader->ctxt->userData)); - if (reader->xsdPlug == NULL) { + if (reader->xsdPlug == NULL) { reader->xsdValidCtxt = NULL; reader->xsdPreserveCtxt = 0; return(-1); } } + xmlSchemaValidateSetLocator(reader->xsdValidCtxt, + xmlTextReaderLocator, + (void *) reader); /* * Redirect the validation context's error channels to use * the reader channels. @@ -4347,7 +4536,7 @@ reader); } if (reader->sErrorFunc != NULL) { - xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, + xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, xmlTextReaderValidityStructuredRelay, reader); } @@ -4394,6 +4583,46 @@ { return(xmlTextReaderSchemaValidateInternal(reader, xsd, NULL, 0)); } + +/** + * xmlTextReaderRelaxNGValidateCtxt: + * @reader: the xmlTextReaderPtr used + * @ctxt: the RelaxNG schema validation context or NULL + * @options: options (not used yet) + * + * Use RelaxNG schema context to validate the document as it is processed. + * Activation is only possible before the first Read(). + * If @ctxt is NULL, then RelaxNG schema validation is deactivated. + * + * Returns 0 in case the schemas validation could be (de)activated and + * -1 in case of error. + */ +int +xmlTextReaderRelaxNGValidateCtxt(xmlTextReaderPtr reader, + xmlRelaxNGValidCtxtPtr ctxt, + int options) +{ + return(xmlTextReaderRelaxNGValidateInternal(reader, NULL, ctxt, options)); +} + +/** + * xmlTextReaderRelaxNGValidate: + * @reader: the xmlTextReaderPtr used + * @rng: the path to a RelaxNG schema or NULL + * + * Use RelaxNG schema to validate the document as it is processed. + * Activation is only possible before the first Read(). + * If @rng is NULL, then RelaxNG schema validation is deactivated. + * + * Returns 0 in case the schemas validation could be (de)activated and + * -1 in case of error. + */ +int +xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader, const char *rng) +{ + return(xmlTextReaderRelaxNGValidateInternal(reader, rng, NULL, 0)); +} + #endif /** @@ -4418,7 +4647,7 @@ node = reader->curnode; else node = reader->node; - + if (XML_NAMESPACE_DECL == node->type) return(1); else @@ -4442,10 +4671,10 @@ if (reader->doc != NULL) doc = reader->doc; else if (reader->ctxt != NULL) - doc = reader->ctxt->myDoc; + doc = reader->ctxt->myDoc; if (doc == NULL) return(NULL); - + if (doc->version == NULL) return(NULL); else @@ -4486,30 +4715,32 @@ /* helper to build a xmlMalloc'ed string from a format and va_list */ static char * xmlTextReaderBuildMessage(const char *msg, va_list ap) { - int size; + int size = 0; int chars; char *larger; - char *str; - - str = (char *) xmlMallocAtomic(150); - if (str == NULL) { - xmlGenericError(xmlGenericErrorContext, "xmlMalloc failed !\n"); - return NULL; - } - - size = 150; + char *str = NULL; + va_list aq; while (1) { - chars = vsnprintf(str, size, msg, ap); - if ((chars > -1) && (chars < size)) + VA_COPY(aq, ap); + chars = vsnprintf(str, size, msg, aq); + va_end(aq); + if (chars < 0) { + xmlGenericError(xmlGenericErrorContext, "vsnprintf failed !\n"); + if (str) + xmlFree(str); + return NULL; + } + if ((chars < size) || (size == MAX_ERR_MSG_SIZE)) break; - if (chars > -1) - size += chars + 1; - else - size += 100; + if (chars < MAX_ERR_MSG_SIZE) + size = chars + 1; + else + size = MAX_ERR_MSG_SIZE; if ((larger = (char *) xmlRealloc(str, size)) == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlRealloc failed !\n"); - xmlFree(str); + if (str) + xmlFree(str); return NULL; } str = larger; @@ -4545,7 +4776,7 @@ input = ctx->inputTab[ctx->inputNr - 2]; if (input != NULL) { ret = input->line; - } + } else { ret = -1; } @@ -4560,7 +4791,8 @@ * * Obtain the base URI for the given locator. * - * Returns the base URI or NULL in case of error. + * Returns the base URI or NULL in case of error, + * if non NULL it need to be freed by the caller. */ xmlChar * xmlTextReaderLocatorBaseURI(xmlTextReaderLocatorPtr locator) { @@ -4581,7 +4813,7 @@ input = ctx->inputTab[ctx->inputNr - 2]; if (input != NULL) { ret = xmlStrdup(BAD_CAST input->filename); - } + } else { ret = NULL; } @@ -4591,87 +4823,95 @@ } static void -xmlTextReaderGenericError(void *ctxt, xmlParserSeverities severity, char *str) { - xmlParserCtxtPtr ctx = (xmlParserCtxtPtr)ctxt; - xmlTextReaderPtr reader = (xmlTextReaderPtr)ctx->_private; +xmlTextReaderGenericError(void *ctxt, xmlParserSeverities severity, + char *str) +{ + xmlParserCtxtPtr ctx = (xmlParserCtxtPtr) ctxt; + + xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx->_private; if (str != NULL) { - if (reader->errorFunc) - reader->errorFunc(reader->errorFuncArg, - str, - severity, - (xmlTextReaderLocatorPtr)ctx); - xmlFree(str); + if (reader->errorFunc) + reader->errorFunc(reader->errorFuncArg, str, severity, + (xmlTextReaderLocatorPtr) ctx); + xmlFree(str); } } -static void -xmlTextReaderStructuredError(void *ctxt, xmlErrorPtr error) { - xmlParserCtxtPtr ctx = (xmlParserCtxtPtr) ctxt; - xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx->_private; +static void +xmlTextReaderStructuredError(void *ctxt, xmlErrorPtr error) +{ + xmlParserCtxtPtr ctx = (xmlParserCtxtPtr) ctxt; + + xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx->_private; - if (error && reader->sErrorFunc) { - reader->sErrorFunc(reader->errorFuncArg, - (xmlErrorPtr) error); - } + if (error && reader->sErrorFunc) { + reader->sErrorFunc(reader->errorFuncArg, (xmlErrorPtr) error); + } } -static void XMLCDECL -xmlTextReaderError(void *ctxt, const char *msg, ...) { +static void XMLCDECL +xmlTextReaderError(void *ctxt, const char *msg, ...) +{ va_list ap; - va_start(ap,msg); + va_start(ap, msg); xmlTextReaderGenericError(ctxt, XML_PARSER_SEVERITY_ERROR, - xmlTextReaderBuildMessage(msg,ap)); + xmlTextReaderBuildMessage(msg, ap)); va_end(ap); } -static void XMLCDECL -xmlTextReaderWarning(void *ctxt, const char *msg, ...) { +static void XMLCDECL +xmlTextReaderWarning(void *ctxt, const char *msg, ...) +{ va_list ap; - va_start(ap,msg); + va_start(ap, msg); xmlTextReaderGenericError(ctxt, XML_PARSER_SEVERITY_WARNING, - xmlTextReaderBuildMessage(msg,ap)); + xmlTextReaderBuildMessage(msg, ap)); va_end(ap); } -static void XMLCDECL -xmlTextReaderValidityError(void *ctxt, const char *msg, ...) { +static void XMLCDECL +xmlTextReaderValidityError(void *ctxt, const char *msg, ...) +{ va_list ap; + int len = xmlStrlen((const xmlChar *) msg); if ((len > 1) && (msg[len - 2] != ':')) { - /* - * some callbacks only report locator information: - * skip them (mimicking behaviour in error.c) - */ - va_start(ap,msg); - xmlTextReaderGenericError(ctxt, - XML_PARSER_SEVERITY_VALIDITY_ERROR, - xmlTextReaderBuildMessage(msg,ap)); - va_end(ap); + /* + * some callbacks only report locator information: + * skip them (mimicking behaviour in error.c) + */ + va_start(ap, msg); + xmlTextReaderGenericError(ctxt, + XML_PARSER_SEVERITY_VALIDITY_ERROR, + xmlTextReaderBuildMessage(msg, ap)); + va_end(ap); } } -static void XMLCDECL -xmlTextReaderValidityWarning(void *ctxt, const char *msg, ...) { +static void XMLCDECL +xmlTextReaderValidityWarning(void *ctxt, const char *msg, ...) +{ va_list ap; + int len = xmlStrlen((const xmlChar *) msg); if ((len != 0) && (msg[len - 1] != ':')) { - /* - * some callbacks only report locator information: - * skip them (mimicking behaviour in error.c) - */ - va_start(ap,msg); - xmlTextReaderGenericError(ctxt, - XML_PARSER_SEVERITY_VALIDITY_WARNING, - xmlTextReaderBuildMessage(msg,ap)); - va_end(ap); + /* + * some callbacks only report locator information: + * skip them (mimicking behaviour in error.c) + */ + va_start(ap, msg); + xmlTextReaderGenericError(ctxt, + XML_PARSER_SEVERITY_VALIDITY_WARNING, + xmlTextReaderBuildMessage(msg, ap)); + va_end(ap); } } @@ -4686,53 +4926,58 @@ * If @f is NULL, the default error and warning handlers are restored. */ void -xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader, - xmlTextReaderErrorFunc f, - void *arg) { +xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader, + xmlTextReaderErrorFunc f, void *arg) +{ if (f != NULL) { - reader->ctxt->sax->error = xmlTextReaderError; - reader->ctxt->sax->serror = NULL; - reader->ctxt->vctxt.error = xmlTextReaderValidityError; - reader->ctxt->sax->warning = xmlTextReaderWarning; - reader->ctxt->vctxt.warning = xmlTextReaderValidityWarning; - reader->errorFunc = f; - reader->sErrorFunc = NULL; - reader->errorFuncArg = arg; + reader->ctxt->sax->error = xmlTextReaderError; + reader->ctxt->sax->serror = NULL; + reader->ctxt->vctxt.error = xmlTextReaderValidityError; + reader->ctxt->sax->warning = xmlTextReaderWarning; + reader->ctxt->vctxt.warning = xmlTextReaderValidityWarning; + reader->errorFunc = f; + reader->sErrorFunc = NULL; + reader->errorFuncArg = arg; #ifdef LIBXML_SCHEMAS_ENABLED - if (reader->rngValidCtxt) { - xmlRelaxNGSetValidErrors(reader->rngValidCtxt, - xmlTextReaderValidityErrorRelay, - xmlTextReaderValidityWarningRelay, - reader); - xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, reader); - } - if (reader->xsdValidCtxt) { - xmlSchemaSetValidErrors(reader->xsdValidCtxt, - xmlTextReaderValidityErrorRelay, - xmlTextReaderValidityWarningRelay, - reader); - xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, reader); - } + if (reader->rngValidCtxt) { + xmlRelaxNGSetValidErrors(reader->rngValidCtxt, + xmlTextReaderValidityErrorRelay, + xmlTextReaderValidityWarningRelay, + reader); + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, + reader); + } + if (reader->xsdValidCtxt) { + xmlSchemaSetValidErrors(reader->xsdValidCtxt, + xmlTextReaderValidityErrorRelay, + xmlTextReaderValidityWarningRelay, + reader); + xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, + reader); + } #endif - } - else { - /* restore defaults */ - reader->ctxt->sax->error = xmlParserError; - reader->ctxt->vctxt.error = xmlParserValidityError; - reader->ctxt->sax->warning = xmlParserWarning; - reader->ctxt->vctxt.warning = xmlParserValidityWarning; - reader->errorFunc = NULL; - reader->sErrorFunc = NULL; - reader->errorFuncArg = NULL; + } else { + /* restore defaults */ + reader->ctxt->sax->error = xmlParserError; + reader->ctxt->vctxt.error = xmlParserValidityError; + reader->ctxt->sax->warning = xmlParserWarning; + reader->ctxt->vctxt.warning = xmlParserValidityWarning; + reader->errorFunc = NULL; + reader->sErrorFunc = NULL; + reader->errorFuncArg = NULL; #ifdef LIBXML_SCHEMAS_ENABLED - if (reader->rngValidCtxt) { - xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, reader); - xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, reader); - } - if (reader->xsdValidCtxt) { - xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, reader); - xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, reader); - } + if (reader->rngValidCtxt) { + xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, + reader); + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, + reader); + } + if (reader->xsdValidCtxt) { + xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, + reader); + xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, + reader); + } #endif } } @@ -4748,54 +4993,59 @@ * If @f is NULL, the default error and warning handlers are restored. */ void -xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader, - xmlStructuredErrorFunc f, - void *arg) { - if (f != NULL) { - reader->ctxt->sax->error = NULL; - reader->ctxt->sax->serror = xmlTextReaderStructuredError; - reader->ctxt->vctxt.error = xmlTextReaderValidityError; - reader->ctxt->sax->warning = xmlTextReaderWarning; - reader->ctxt->vctxt.warning = xmlTextReaderValidityWarning; - reader->sErrorFunc = f; - reader->errorFunc = NULL; - reader->errorFuncArg = arg; +xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader, + xmlStructuredErrorFunc f, void *arg) +{ + if (f != NULL) { + reader->ctxt->sax->error = NULL; + reader->ctxt->sax->serror = xmlTextReaderStructuredError; + reader->ctxt->vctxt.error = xmlTextReaderValidityError; + reader->ctxt->sax->warning = xmlTextReaderWarning; + reader->ctxt->vctxt.warning = xmlTextReaderValidityWarning; + reader->sErrorFunc = f; + reader->errorFunc = NULL; + reader->errorFuncArg = arg; #ifdef LIBXML_SCHEMAS_ENABLED - if (reader->rngValidCtxt) { - xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, reader); - xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, - xmlTextReaderValidityStructuredRelay, - reader); - } - if (reader->xsdValidCtxt) { - xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, reader); - xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, - xmlTextReaderValidityStructuredRelay, - reader); - } + if (reader->rngValidCtxt) { + xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, + reader); + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, + xmlTextReaderValidityStructuredRelay, + reader); + } + if (reader->xsdValidCtxt) { + xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, + reader); + xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, + xmlTextReaderValidityStructuredRelay, + reader); + } #endif - } - else { - /* restore defaults */ - reader->ctxt->sax->error = xmlParserError; - reader->ctxt->sax->serror = NULL; - reader->ctxt->vctxt.error = xmlParserValidityError; - reader->ctxt->sax->warning = xmlParserWarning; - reader->ctxt->vctxt.warning = xmlParserValidityWarning; - reader->errorFunc = NULL; - reader->sErrorFunc = NULL; - reader->errorFuncArg = NULL; + } else { + /* restore defaults */ + reader->ctxt->sax->error = xmlParserError; + reader->ctxt->sax->serror = NULL; + reader->ctxt->vctxt.error = xmlParserValidityError; + reader->ctxt->sax->warning = xmlParserWarning; + reader->ctxt->vctxt.warning = xmlParserValidityWarning; + reader->errorFunc = NULL; + reader->sErrorFunc = NULL; + reader->errorFuncArg = NULL; #ifdef LIBXML_SCHEMAS_ENABLED - if (reader->rngValidCtxt) { - xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, reader); - xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, reader); - } - if (reader->xsdValidCtxt) { - xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, reader); - xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, reader); - } + if (reader->rngValidCtxt) { + xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, + reader); + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, + reader); + } + if (reader->xsdValidCtxt) { + xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, + reader); + xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, + reader); + } #endif - } + } } /** @@ -4807,17 +5057,19 @@ * Returns the flag value 1 if valid, 0 if no, and -1 in case of error */ int -xmlTextReaderIsValid(xmlTextReaderPtr reader) { - if (reader == NULL) return(-1); +xmlTextReaderIsValid(xmlTextReaderPtr reader) +{ + if (reader == NULL) + return (-1); #ifdef LIBXML_SCHEMAS_ENABLED if (reader->validate == XML_TEXTREADER_VALIDATE_RNG) - return(reader->rngValidErrors == 0); + return (reader->rngValidErrors == 0); if (reader->validate == XML_TEXTREADER_VALIDATE_XSD) - return(reader->xsdValidErrors == 0); + return (reader->xsdValidErrors == 0); #endif if ((reader->ctxt != NULL) && (reader->ctxt->validate == 1)) - return(reader->ctxt->valid); - return(0); + return (reader->ctxt->valid); + return (0); } /** @@ -4829,14 +5081,14 @@ * Retrieve the error callback function and user argument. */ void -xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader, - xmlTextReaderErrorFunc *f, - void **arg) { - if (f != NULL) *f = reader->errorFunc; - if (arg != NULL) *arg = reader->errorFuncArg; +xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader, + xmlTextReaderErrorFunc * f, void **arg) +{ + if (f != NULL) + *f = reader->errorFunc; + if (arg != NULL) + *arg = reader->errorFuncArg; } - - /************************************************************************ * * * New set (2.6.0) of simpler and more flexible APIs * @@ -4846,22 +5098,26 @@ /** * xmlTextReaderSetup: * @reader: an XML reader + * @input: xmlParserInputBufferPtr used to feed the reader, will + * be destroyed with it. * @URL: the base URL to use for the document * @encoding: the document encoding, or NULL * @options: a combination of xmlParserOption - * @reuse: keep the context for reuse * * Setup an XML reader with new options - * + * * Returns 0 in case of success and -1 in case of error. */ -static int +int xmlTextReaderSetup(xmlTextReaderPtr reader, xmlParserInputBufferPtr input, const char *URL, const char *encoding, int options) { - if (reader == NULL) + if (reader == NULL) { + if (input != NULL) + xmlFreeParserInputBuffer(input); return (-1); + } /* * we force the generation of compact text nodes on the reader @@ -4884,12 +5140,15 @@ reader->allocs |= XML_TEXTREADER_INPUT; } if (reader->buffer == NULL) - reader->buffer = xmlBufferCreateSize(100); + reader->buffer = xmlBufCreateSize(100); if (reader->buffer == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlTextReaderSetup : malloc failed\n"); return (-1); } + /* no operation on a reader should require a huge buffer */ + xmlBufSetAllocationScheme(reader->buffer, + XML_BUFFER_ALLOC_BOUNDED); if (reader->sax == NULL) reader->sax = (xmlSAXHandler *) xmlMalloc(sizeof(xmlSAXHandler)); if (reader->sax == NULL) { @@ -4925,13 +5184,14 @@ reader->node = NULL; reader->curnode = NULL; if (input != NULL) { - if (reader->input->buffer->use < 4) { + if (xmlBufUse(reader->input->buffer) < 4) { xmlParserInputBufferRead(input, 4); } if (reader->ctxt == NULL) { - if (reader->input->buffer->use >= 4) { + if (xmlBufUse(reader->input->buffer) >= 4) { reader->ctxt = xmlCreatePushParserCtxt(reader->sax, NULL, - (const char *) reader->input->buffer->content, 4, URL); + (const char *) xmlBufContent(reader->input->buffer), + 4, URL); reader->base = 0; reader->cur = 4; } else { @@ -4960,10 +5220,7 @@ inputStream->filename = (char *) xmlCanonicPath((const xmlChar *) URL); inputStream->buf = buf; - inputStream->base = inputStream->buf->buffer->content; - inputStream->cur = inputStream->buf->buffer->content; - inputStream->end = - &inputStream->buf->buffer->content[inputStream->buf->buffer->use]; + xmlBufResetInput(buf->buffer, inputStream); inputPush(reader->ctxt, inputStream); reader->cur = 0; @@ -5064,14 +5321,14 @@ return(-1); return(xmlByteConsumed(reader->ctxt)); } - + /** * xmlReaderWalker: * @doc: a preparsed document * * Create an xmltextReader for a preparsed document. - * + * * Returns the new reader or NULL in case of error. */ xmlTextReaderPtr @@ -5112,7 +5369,7 @@ * * Create an xmltextReader for an XML in-memory document. * The parsing flags @options are a combination of xmlParserOption. - * + * * Returns the new reader or NULL in case of error. */ xmlTextReaderPtr @@ -5137,7 +5394,7 @@ * * parse an XML file from the filesystem or the network. * The parsing flags @options are a combination of xmlParserOption. - * + * * Returns the new reader or NULL in case of error. */ xmlTextReaderPtr @@ -5162,7 +5419,7 @@ * * Create an xmltextReader for an XML in-memory document. * The parsing flags @options are a combination of xmlParserOption. - * + * * Returns the new reader or NULL in case of error. */ xmlTextReaderPtr @@ -5198,7 +5455,7 @@ * The parsing flags @options are a combination of xmlParserOption. * NOTE that the file descriptor will not be closed when the * reader is closed or reset. - * + * * Returns the new reader or NULL in case of error. */ xmlTextReaderPtr @@ -5235,7 +5492,7 @@ * * Create an xmltextReader for an XML document from I/O functions and source. * The parsing flags @options are a combination of xmlParserOption. - * + * * Returns the new reader or NULL in case of error. */ xmlTextReaderPtr @@ -5251,8 +5508,11 @@ input = xmlParserInputBufferCreateIO(ioread, ioclose, ioctx, XML_CHAR_ENCODING_NONE); - if (input == NULL) + if (input == NULL) { + if (ioclose != NULL) + ioclose(ioctx); return (NULL); + } reader = xmlNewTextReader(input, URL); if (reader == NULL) { xmlFreeParserInputBuffer(input); @@ -5270,7 +5530,7 @@ * * Setup an xmltextReader to parse a preparsed XML document. * This reuses the existing @reader xmlTextReader. - * + * * Returns 0 in case of success and -1 in case of error */ int @@ -5318,7 +5578,7 @@ * Setup an xmltextReader to parse an XML in-memory document. * The parsing flags @options are a combination of xmlParserOption. * This reuses the existing @reader xmlTextReader. - * + * * Returns 0 in case of success and -1 in case of error */ int @@ -5348,7 +5608,7 @@ * parse an XML file from the filesystem or the network. * The parsing flags @options are a combination of xmlParserOption. * This reuses the existing @reader xmlTextReader. - * + * * Returns 0 in case of success and -1 in case of error */ int @@ -5382,7 +5642,7 @@ * Setup an xmltextReader to parse an XML in-memory document. * The parsing flags @options are a combination of xmlParserOption. * This reuses the existing @reader xmlTextReader. - * + * * Returns 0 in case of success and -1 in case of error */ int @@ -5417,7 +5677,7 @@ * reader is closed or reset. * The parsing flags @options are a combination of xmlParserOption. * This reuses the existing @reader xmlTextReader. - * + * * Returns 0 in case of success and -1 in case of error */ int @@ -5452,7 +5712,7 @@ * and source. * The parsing flags @options are a combination of xmlParserOption. * This reuses the existing @reader xmlTextReader. - * + * * Returns 0 in case of success and -1 in case of error */ int @@ -5469,16 +5729,21 @@ input = xmlParserInputBufferCreateIO(ioread, ioclose, ioctx, XML_CHAR_ENCODING_NONE); - if (input == NULL) + if (input == NULL) { + if (ioclose != NULL) + ioclose(ioctx); return (-1); + } return (xmlTextReaderSetup(reader, input, URL, encoding, options)); } + /************************************************************************ * * * Utilities * * * ************************************************************************/ #ifdef NOT_USED_YET + /** * xmlBase64Decode: * @in: the input buffer @@ -5494,22 +5759,34 @@ */ static int xmlBase64Decode(const unsigned char *in, unsigned long *inlen, - unsigned char *to, unsigned long *tolen) { - unsigned long incur; /* current index in in[] */ - unsigned long inblk; /* last block index in in[] */ - unsigned long outcur; /* current index in out[] */ - unsigned long inmax; /* size of in[] */ - unsigned long outmax; /* size of out[] */ - unsigned char cur; /* the current value read from in[] */ - unsigned char intmp[4], outtmp[4]; /* temporary buffers for the convert */ - int nbintmp; /* number of byte in intmp[] */ - int is_ignore; /* cur should be ignored */ - int is_end = 0; /* the end of the base64 was found */ + unsigned char *to, unsigned long *tolen) +{ + unsigned long incur; /* current index in in[] */ + + unsigned long inblk; /* last block index in in[] */ + + unsigned long outcur; /* current index in out[] */ + + unsigned long inmax; /* size of in[] */ + + unsigned long outmax; /* size of out[] */ + + unsigned char cur; /* the current value read from in[] */ + + unsigned char intmp[4], outtmp[4]; /* temporary buffers for the convert */ + + int nbintmp; /* number of byte in intmp[] */ + + int is_ignore; /* cur should be ignored */ + + int is_end = 0; /* the end of the base64 was found */ + int retval = 1; + int i; if ((in == NULL) || (inlen == NULL) || (to == NULL) || (tolen == NULL)) - return(-1); + return (-1); incur = 0; inblk = 0; @@ -5535,16 +5812,17 @@ cur = 63; else if (cur == '.') cur = 0; - else if (cur == '=') /*no op , end of the base64 stream */ + else if (cur == '=') /*no op , end of the base64 stream */ is_end = 1; else { is_ignore = 1; - if (nbintmp == 0) - inblk = incur; - } + if (nbintmp == 0) + inblk = incur; + } if (!is_ignore) { int nbouttmp = 3; + int is_break = 0; if (is_end) { @@ -5558,30 +5836,30 @@ is_break = 1; } intmp[nbintmp++] = cur; - /* - * if intmp is full, push the 4byte sequence as a 3 byte - * sequence out - */ + /* + * if intmp is full, push the 4byte sequence as a 3 byte + * sequence out + */ if (nbintmp == 4) { nbintmp = 0; outtmp[0] = (intmp[0] << 2) | ((intmp[1] & 0x30) >> 4); outtmp[1] = ((intmp[1] & 0x0F) << 4) | ((intmp[2] & 0x3C) >> 2); outtmp[2] = ((intmp[2] & 0x03) << 6) | (intmp[3] & 0x3F); - if (outcur + 3 >= outmax) { - retval = 2; - break; - } + if (outcur + 3 >= outmax) { + retval = 2; + break; + } for (i = 0; i < nbouttmp; i++) - to[outcur++] = outtmp[i]; - inblk = incur; + to[outcur++] = outtmp[i]; + inblk = incur; } if (is_break) { - retval = 0; + retval = 0; break; - } + } } } @@ -5594,14 +5872,23 @@ * Test routine for the xmlBase64Decode function */ #if 0 -int main(int argc, char **argv) { +int +main(int argc, char **argv) +{ char *input = " VW4 gcGV0 \n aXQgdGVzdCAuCg== "; + char output[100]; + char output2[100]; + char output3[100]; + unsigned long inlen = strlen(input); + unsigned long outlen = 100; + int ret; + unsigned long cons, tmp, tmp2, prod; /* @@ -5610,25 +5897,28 @@ ret = xmlBase64Decode(input, &inlen, output, &outlen); output[outlen] = 0; - printf("ret: %d, inlen: %ld , outlen: %ld, output: '%s'\n", ret, inlen, outlen, output); - + printf("ret: %d, inlen: %ld , outlen: %ld, output: '%s'\n", ret, inlen, + outlen, output)indent: Standard input:179: Error:Unmatched #endif +; + /* * output chunking */ cons = 0; prod = 0; while (cons < inlen) { - tmp = 5; - tmp2 = inlen - cons; + tmp = 5; + tmp2 = inlen - cons; - printf("%ld %ld\n", cons, prod); - ret = xmlBase64Decode(&input[cons], &tmp2, &output2[prod], &tmp); - cons += tmp2; - prod += tmp; - printf("%ld %ld\n", cons, prod); + printf("%ld %ld\n", cons, prod); + ret = xmlBase64Decode(&input[cons], &tmp2, &output2[prod], &tmp); + cons += tmp2; + prod += tmp; + printf("%ld %ld\n", cons, prod); } output2[outlen] = 0; - printf("ret: %d, cons: %ld , prod: %ld, output: '%s'\n", ret, cons, prod, output2); + printf("ret: %d, cons: %ld , prod: %ld, output: '%s'\n", ret, cons, + prod, output2); /* * input chunking @@ -5636,20 +5926,21 @@ cons = 0; prod = 0; while (cons < inlen) { - tmp = 100 - prod; - tmp2 = inlen - cons; - if (tmp2 > 5) - tmp2 = 5; - - printf("%ld %ld\n", cons, prod); - ret = xmlBase64Decode(&input[cons], &tmp2, &output3[prod], &tmp); - cons += tmp2; - prod += tmp; - printf("%ld %ld\n", cons, prod); + tmp = 100 - prod; + tmp2 = inlen - cons; + if (tmp2 > 5) + tmp2 = 5; + + printf("%ld %ld\n", cons, prod); + ret = xmlBase64Decode(&input[cons], &tmp2, &output3[prod], &tmp); + cons += tmp2; + prod += tmp; + printf("%ld %ld\n", cons, prod); } output3[outlen] = 0; - printf("ret: %d, cons: %ld , prod: %ld, output: '%s'\n", ret, cons, prod, output3); - return(0); + printf("ret: %d, cons: %ld , prod: %ld, output: '%s'\n", ret, cons, + prod, output3); + return (0); } #endif diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlreader.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlreader.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlreader.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlreader.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -18,13 +18,26 @@ #include #endif -#ifdef LIBXML_READER_ENABLED - #ifdef __cplusplus extern "C" { #endif /** + * xmlParserSeverities: + * + * How severe an error callback is when the per-reader error callback API + * is used. + */ +typedef enum { + XML_PARSER_SEVERITY_VALIDITY_WARNING = 1, + XML_PARSER_SEVERITY_VALIDITY_ERROR = 2, + XML_PARSER_SEVERITY_WARNING = 3, + XML_PARSER_SEVERITY_ERROR = 4 +} xmlParserSeverities; + +#ifdef LIBXML_READER_ENABLED + +/** * xmlTextReaderMode: * * Internal state values for the reader. @@ -42,7 +55,7 @@ * xmlParserProperties: * * Some common options to use with xmlTextReaderSetParserProp, but it - * is better to use xmlParserOption and the xmlReaderNewxxx and + * is better to use xmlParserOption and the xmlReaderNewxxx and * xmlReaderForxxx APIs now. */ typedef enum { @@ -53,19 +66,6 @@ } xmlParserProperties; /** - * xmlParserSeverities: - * - * How severe an error callback is when the per-reader error callback API - * is used. - */ -typedef enum { - XML_PARSER_SEVERITY_VALIDITY_WARNING = 1, - XML_PARSER_SEVERITY_VALIDITY_ERROR = 2, - XML_PARSER_SEVERITY_WARNING = 3, - XML_PARSER_SEVERITY_ERROR = 4 -} xmlParserSeverities; - -/** * xmlReaderTypes: * * Predefined constants for the different types of nodes. @@ -111,128 +111,134 @@ XMLPUBFUN xmlTextReaderPtr XMLCALL xmlNewTextReader (xmlParserInputBufferPtr input, const char *URI); -XMLPUBFUN xmlTextReaderPtr XMLCALL +XMLPUBFUN xmlTextReaderPtr XMLCALL xmlNewTextReaderFilename(const char *URI); -XMLPUBFUN void XMLCALL + +XMLPUBFUN void XMLCALL xmlFreeTextReader (xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderSetup(xmlTextReaderPtr reader, + xmlParserInputBufferPtr input, const char *URL, + const char *encoding, int options); + /* * Iterators */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderRead (xmlTextReaderPtr reader); #ifdef LIBXML_WRITER_ENABLED -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderReadInnerXml (xmlTextReaderPtr reader); - -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderReadOuterXml (xmlTextReaderPtr reader); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderReadInnerXml(xmlTextReaderPtr reader); + +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderReadOuterXml(xmlTextReaderPtr reader); #endif -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderReadString (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderReadAttributeValue (xmlTextReaderPtr reader); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderReadString (xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader); /* * Attributes of the node */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderAttributeCount(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderDepth (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderHasAttributes(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderHasValue(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderIsDefault (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderNodeType (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderQuoteChar (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderReadState (xmlTextReaderPtr reader); XMLPUBFUN int XMLCALL xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstBaseUri (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstLocalName (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstName (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstPrefix (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstXmlLang (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstString (xmlTextReaderPtr reader, - const xmlChar *str); -XMLPUBFUN const xmlChar * XMLCALL + const xmlChar *str); +XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstValue (xmlTextReaderPtr reader); /* * use the Const version of the routine for * better performance and simpler code */ -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderBaseUri (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderLocalName (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderName (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderNamespaceUri(xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderPrefix (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderXmlLang (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderValue (xmlTextReaderPtr reader); /* * Methods of the XmlTextReader */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderClose (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderGetAttributeNo (xmlTextReaderPtr reader, int no); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderGetAttribute (xmlTextReaderPtr reader, const xmlChar *name); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderGetAttributeNs (xmlTextReaderPtr reader, const xmlChar *localName, const xmlChar *namespaceURI); -XMLPUBFUN xmlParserInputBufferPtr XMLCALL +XMLPUBFUN xmlParserInputBufferPtr XMLCALL xmlTextReaderGetRemainder (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderLookupNamespace(xmlTextReaderPtr reader, const xmlChar *prefix); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader, int no); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader, const xmlChar *name); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader, const xmlChar *localName, const xmlChar *namespaceURI); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderMoveToElement (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderNormalization (xmlTextReaderPtr reader); XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstEncoding (xmlTextReaderPtr reader); @@ -240,14 +246,14 @@ /* * Extensions */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderSetParserProp (xmlTextReaderPtr reader, int prop, int value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderGetParserProp (xmlTextReaderPtr reader, int prop); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlTextReaderCurrentNode (xmlTextReaderPtr reader); XMLPUBFUN int XMLCALL @@ -256,41 +262,46 @@ XMLPUBFUN int XMLCALL xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlTextReaderPreserve (xmlTextReaderPtr reader); #ifdef LIBXML_PATTERN_ENABLED -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderPreservePattern(xmlTextReaderPtr reader, - const xmlChar *pattern, + const xmlChar *pattern, const xmlChar **namespaces); #endif /* LIBXML_PATTERN_ENABLED */ -XMLPUBFUN xmlDocPtr XMLCALL +XMLPUBFUN xmlDocPtr XMLCALL xmlTextReaderCurrentDoc (xmlTextReaderPtr reader); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlTextReaderExpand (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderNext (xmlTextReaderPtr reader); XMLPUBFUN int XMLCALL xmlTextReaderNextSibling (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderIsValid (xmlTextReaderPtr reader); #ifdef LIBXML_SCHEMAS_ENABLED -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader, const char *rng); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL + xmlTextReaderRelaxNGValidateCtxt(xmlTextReaderPtr reader, + xmlRelaxNGValidCtxtPtr ctxt, + int options); + +XMLPUBFUN int XMLCALL xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader, xmlRelaxNGPtr schema); XMLPUBFUN int XMLCALL xmlTextReaderSchemaValidate (xmlTextReaderPtr reader, - const char *xsd); + const char *xsd); XMLPUBFUN int XMLCALL xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader, xmlSchemaValidCtxtPtr ctxt, int options); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderSetSchema (xmlTextReaderPtr reader, - xmlSchemaPtr schema); + xmlSchemaPtr schema); #endif XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader); @@ -376,33 +387,42 @@ * Error handling extensions */ typedef void * xmlTextReaderLocatorPtr; -typedef void (XMLCALL *xmlTextReaderErrorFunc) (void *arg, - const char *msg, - xmlParserSeverities severity, - xmlTextReaderLocatorPtr locator); -XMLPUBFUN int XMLCALL - xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator); -/*int xmlTextReaderLocatorLinePosition(xmlTextReaderLocatorPtr locator);*/ -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator); -XMLPUBFUN void XMLCALL - xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader, - xmlTextReaderErrorFunc f, - void *arg); + +/** + * xmlTextReaderErrorFunc: + * @arg: the user argument + * @msg: the message + * @severity: the severity of the error + * @locator: a locator indicating where the error occured + * + * Signature of an error callback from a reader parser + */ +typedef void (XMLCALL *xmlTextReaderErrorFunc)(void *arg, + const char *msg, + xmlParserSeverities severity, + xmlTextReaderLocatorPtr locator); +XMLPUBFUN int XMLCALL + xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator); +XMLPUBFUN void XMLCALL + xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader, + xmlTextReaderErrorFunc f, + void *arg); XMLPUBFUN void XMLCALL - xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader, - xmlStructuredErrorFunc f, - void *arg); -XMLPUBFUN void XMLCALL - xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader, - xmlTextReaderErrorFunc *f, - void **arg); + xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader, + xmlStructuredErrorFunc f, + void *arg); +XMLPUBFUN void XMLCALL + xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader, + xmlTextReaderErrorFunc *f, + void **arg); + +#endif /* LIBXML_READER_ENABLED */ #ifdef __cplusplus } #endif -#endif /* LIBXML_READER_ENABLED */ - #endif /* __XML_XMLREADER_H__ */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlregexp.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlregexp.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlregexp.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlregexp.c 2015-12-23 07:08:27.000000000 +0000 @@ -1,7 +1,7 @@ /* * regexp.c: generic and extensible Regular Expression engine * - * Basically designed with the purpose of compiling regexps for + * Basically designed with the purpose of compiling regexps for * the variety of validation/shemas mechanisms now available in * XML related specifications these include: * - XML-1.0 DTD validation @@ -44,6 +44,9 @@ #define MAX_PUSH 10000000 +#ifdef ERROR +#undef ERROR +#endif #define ERROR(str) \ ctxt->error = XML_REGEXP_COMPILE_ERROR; \ xmlRegexpErrCompile(ctxt, str); @@ -54,21 +57,26 @@ #define CUR_SCHAR(s, l) xmlStringCurrentChar(NULL, s, &l) #define NEXTL(l) ctxt->cur += l; #define XML_REG_STRING_SEPARATOR '|' +/* + * Need PREV to check on a '-' within a Character Group. May only be used + * when it's guaranteed that cur is not at the beginning of ctxt->string! + */ +#define PREV (ctxt->cur[-1]) /** * TODO: * * macro to flag unimplemented blocks */ -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); /************************************************************************ - * * - * Datatypes and structures * - * * + * * + * Datatypes and structures * + * * ************************************************************************/ /* @@ -145,7 +153,8 @@ XML_REGEXP_START_STATE = 1, XML_REGEXP_FINAL_STATE, XML_REGEXP_TRANS_STATE, - XML_REGEXP_SINK_STATE + XML_REGEXP_SINK_STATE, + XML_REGEXP_UNREACH_STATE } xmlRegStateType; typedef enum { @@ -183,6 +192,7 @@ int neg; int codepoint; xmlRegStatePtr start; + xmlRegStatePtr start0; xmlRegStatePtr stop; int maxRanges; int nbRanges; @@ -212,6 +222,7 @@ struct _xmlAutomataState { xmlRegStateType type; xmlRegMarkedType mark; + xmlRegMarkedType markd; xmlRegMarkedType reached; int no; int maxTrans; @@ -226,6 +237,8 @@ typedef struct _xmlAutomata xmlRegParserCtxt; typedef xmlRegParserCtxt *xmlRegParserCtxtPtr; +#define AM_AUTOMATA_RNG 1 + struct _xmlAutomata { xmlChar *string; xmlChar *cur; @@ -253,6 +266,7 @@ int determinist; int negs; + int flags; }; struct _xmlRegexp { @@ -264,6 +278,7 @@ int nbCounters; xmlRegCounter *counters; int determinist; + int flags; /* * That's the compact form for determinists automatas */ @@ -346,9 +361,11 @@ static int xmlRegCheckCharacterRange(xmlRegAtomType type, int codepoint, int neg, int start, int end, const xmlChar *blockName); +void xmlAutomataSetFlags(xmlAutomataPtr am, int flags); + /************************************************************************ * * - * Regexp memory error handler * + * Regexp memory error handler * * * ************************************************************************/ /** @@ -395,9 +412,9 @@ } /************************************************************************ - * * - * Allocation/Deallocation * - * * + * * + * Allocation/Deallocation * + * * ************************************************************************/ static int xmlFAComputesDeterminism(xmlRegParserCtxtPtr ctxt); @@ -427,6 +444,7 @@ ret->nbCounters = ctxt->nbCounters; ret->counters = ctxt->counters; ret->determinist = ctxt->determinist; + ret->flags = ctxt->flags; if (ret->determinist == -1) { xmlRegexpIsDeterminist(ret); } @@ -727,11 +745,41 @@ } /** + * xmlRegCopyRange: + * @range: the regexp range + * + * Copy a regexp range + * + * Returns the new copy or NULL in case of error. + */ +static xmlRegRangePtr +xmlRegCopyRange(xmlRegParserCtxtPtr ctxt, xmlRegRangePtr range) { + xmlRegRangePtr ret; + + if (range == NULL) + return(NULL); + + ret = xmlRegNewRange(ctxt, range->neg, range->type, range->start, + range->end); + if (ret == NULL) + return(NULL); + if (range->blockName != NULL) { + ret->blockName = xmlStrdup(range->blockName); + if (ret->blockName == NULL) { + xmlRegexpErrMemory(ctxt, "allocating range"); + xmlRegFreeRange(ret); + return(NULL); + } + } + return(ret); +} + +/** * xmlRegNewAtom: * @ctxt: the regexp parser context * @type: the type of atom * - * Allocate a new regexp range + * Allocate a new atom * * Returns the new atom or NULL in case of error */ @@ -778,6 +826,52 @@ xmlFree(atom); } +/** + * xmlRegCopyAtom: + * @ctxt: the regexp parser context + * @atom: the oiginal atom + * + * Allocate a new regexp range + * + * Returns the new atom or NULL in case of error + */ +static xmlRegAtomPtr +xmlRegCopyAtom(xmlRegParserCtxtPtr ctxt, xmlRegAtomPtr atom) { + xmlRegAtomPtr ret; + + ret = (xmlRegAtomPtr) xmlMalloc(sizeof(xmlRegAtom)); + if (ret == NULL) { + xmlRegexpErrMemory(ctxt, "copying atom"); + return(NULL); + } + memset(ret, 0, sizeof(xmlRegAtom)); + ret->type = atom->type; + ret->quant = atom->quant; + ret->min = atom->min; + ret->max = atom->max; + if (atom->nbRanges > 0) { + int i; + + ret->ranges = (xmlRegRangePtr *) xmlMalloc(sizeof(xmlRegRangePtr) * + atom->nbRanges); + if (ret->ranges == NULL) { + xmlRegexpErrMemory(ctxt, "copying atom"); + goto error; + } + for (i = 0;i < atom->nbRanges;i++) { + ret->ranges[i] = xmlRegCopyRange(ctxt, atom->ranges[i]); + if (ret->ranges[i] == NULL) + goto error; + ret->nbRanges = i + 1; + } + } + return(ret); + +error: + xmlRegFreeAtom(ret); + return(NULL); +} + static xmlRegStatePtr xmlRegNewState(xmlRegParserCtxtPtr ctxt) { xmlRegStatePtr ret; @@ -841,9 +935,9 @@ } /************************************************************************ - * * - * Display of Data structures * - * * + * * + * Display of Data structures * + * * ************************************************************************/ static void @@ -1050,7 +1144,7 @@ fprintf(output, "char %c ", trans->atom->codepoint); fprintf(output, "atom %d, to %d\n", trans->atom->no, trans->to); } - + static void xmlRegPrintState(FILE *output, xmlRegStatePtr state) { int i; @@ -1064,7 +1158,7 @@ fprintf(output, "START "); if (state->type == XML_REGEXP_FINAL_STATE) fprintf(output, "FINAL "); - + fprintf(output, "%d, %d transitions:\n", state->no, state->nbTrans); for (i = 0;i < state->nbTrans; i++) { xmlRegPrintTrans(output, &(state->trans[i])); @@ -1114,12 +1208,12 @@ #endif /************************************************************************ - * * + * * * Finite Automata structures manipulations * - * * + * * ************************************************************************/ -static void +static void xmlRegAtomAddRange(xmlRegParserCtxtPtr ctxt, xmlRegAtomPtr atom, int neg, xmlRegAtomType type, int start, int end, xmlChar *blockName) { @@ -1159,7 +1253,7 @@ return; range->blockName = blockName; atom->ranges[atom->nbRanges++] = range; - + } static int @@ -1190,7 +1284,7 @@ return(ctxt->nbCounters++); } -static int +static int xmlRegAtomPush(xmlRegParserCtxtPtr ctxt, xmlRegAtomPtr atom) { if (atom == NULL) { ERROR("atom push: atom is NULL"); @@ -1222,7 +1316,7 @@ return(0); } -static void +static void xmlRegStateAddTransTo(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr target, int from) { if (target->maxTransTo == 0) { @@ -1250,7 +1344,7 @@ target->nbTransTo++; } -static void +static void xmlRegStateAddTrans(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr state, xmlRegAtomPtr atom, xmlRegStatePtr target, int counter, int count) { @@ -1316,7 +1410,7 @@ printf("counted %d\n", counter); else if (atom == NULL) printf("epsilon transition\n"); - else if (atom != NULL) + else if (atom != NULL) xmlRegPrintAtom(stdout, atom); #endif @@ -1449,6 +1543,8 @@ static int xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from, xmlRegStatePtr to, xmlRegAtomPtr atom) { + xmlRegStatePtr end; + if (atom == NULL) { ERROR("genrate transition: atom == NULL"); return(-1); @@ -1468,7 +1564,7 @@ */ xmlFAGenerateEpsilonTransition(ctxt, atom->stop, to); #ifdef DV - } else if ((to == NULL) && (atom->quant != XML_REGEXP_QUANT_RANGE) && + } else if ((to == NULL) && (atom->quant != XML_REGEXP_QUANT_RANGE) && (atom->quant != XML_REGEXP_QUANT_ONCE)) { to = xmlRegNewState(ctxt); xmlRegStatePush(ctxt, to); @@ -1482,10 +1578,15 @@ /* * transition done to the state after end of atom. * 1. set transition from atom start to new state - * 2. set transition from atom end to this state. + * 2. set transition from atom end to this state. */ - xmlFAGenerateEpsilonTransition(ctxt, atom->start, 0); - xmlFAGenerateEpsilonTransition(ctxt, atom->stop, ctxt->state); + if (to == NULL) { + xmlFAGenerateEpsilonTransition(ctxt, atom->start, 0); + xmlFAGenerateEpsilonTransition(ctxt, atom->stop, + ctxt->state); + } else { + xmlFAGenerateEpsilonTransition(ctxt, atom->start, to); + } break; case XML_REGEXP_QUANT_MULT: atom->quant = XML_REGEXP_QUANT_ONCE; @@ -1498,58 +1599,89 @@ break; case XML_REGEXP_QUANT_RANGE: { int counter; - xmlRegStatePtr newstate; + xmlRegStatePtr inter, newstate; /* - * This one is nasty: - * 1/ if range has minOccurs == 0, create a new state - * and create epsilon transitions from atom->start - * to atom->stop, as well as atom->start to the new - * state - * 2/ register a new counter - * 3/ register an epsilon transition associated to - * this counter going from atom->stop to atom->start - * 4/ create a new state - * 5/ generate a counted transition from atom->stop to - * that state + * create the final state now if needed */ - if (atom->min == 0) { - xmlFAGenerateEpsilonTransition(ctxt, atom->start, - atom->stop); + if (to != NULL) { + newstate = to; + } else { newstate = xmlRegNewState(ctxt); xmlRegStatePush(ctxt, newstate); - ctxt->state = newstate; + } + + /* + * The principle here is to use counted transition + * to avoid explosion in the number of states in the + * graph. This is clearly more complex but should not + * be exploitable at runtime. + */ + if ((atom->min == 0) && (atom->start0 == NULL)) { + xmlRegAtomPtr copy; + /* + * duplicate a transition based on atom to count next + * occurences after 1. We cannot loop to atom->start + * directly because we need an epsilon transition to + * newstate. + */ + /* ???? For some reason it seems we never reach that + case, I suppose this got optimized out before when + building the automata */ + copy = xmlRegCopyAtom(ctxt, atom); + if (copy == NULL) + return(-1); + copy->quant = XML_REGEXP_QUANT_ONCE; + copy->min = 0; + copy->max = 0; + + if (xmlFAGenerateTransitions(ctxt, atom->start, NULL, copy) + < 0) + return(-1); + inter = ctxt->state; + counter = xmlRegGetCounter(ctxt); + ctxt->counters[counter].min = atom->min - 1; + ctxt->counters[counter].max = atom->max - 1; + /* count the number of times we see it again */ + xmlFAGenerateCountedEpsilonTransition(ctxt, inter, + atom->stop, counter); + /* allow a way out based on the count */ + xmlFAGenerateCountedTransition(ctxt, inter, + newstate, counter); + /* and also allow a direct exit for 0 */ xmlFAGenerateEpsilonTransition(ctxt, atom->start, - newstate); + newstate); + } else { + /* + * either we need the atom at least once or there + * is an atom->start0 allowing to easilly plug the + * epsilon transition. + */ + counter = xmlRegGetCounter(ctxt); + ctxt->counters[counter].min = atom->min - 1; + ctxt->counters[counter].max = atom->max - 1; + /* count the number of times we see it again */ + xmlFAGenerateCountedEpsilonTransition(ctxt, atom->stop, + atom->start, counter); + /* allow a way out based on the count */ + xmlFAGenerateCountedTransition(ctxt, atom->stop, + newstate, counter); + /* and if needed allow a direct exit for 0 */ + if (atom->min == 0) + xmlFAGenerateEpsilonTransition(ctxt, atom->start0, + newstate); + } - counter = xmlRegGetCounter(ctxt); - ctxt->counters[counter].min = atom->min - 1; - ctxt->counters[counter].max = atom->max - 1; atom->min = 0; atom->max = 0; atom->quant = XML_REGEXP_QUANT_ONCE; - if (to != NULL) { - newstate = to; - } else { - newstate = xmlRegNewState(ctxt); - xmlRegStatePush(ctxt, newstate); - } ctxt->state = newstate; - xmlFAGenerateCountedTransition(ctxt, atom->stop, - newstate, counter); - - /* - * first check count and if OK jump forward; - * if checking fail increment count and jump back - */ - xmlFAGenerateCountedEpsilonTransition(ctxt, atom->stop, - atom->start, counter); } default: break; } return(0); - } + } if ((atom->min == 0) && (atom->max == 0) && (atom->quant == XML_REGEXP_QUANT_RANGE)) { /* @@ -1576,11 +1708,30 @@ return(-1); } } + end = to; + if ((atom->quant == XML_REGEXP_QUANT_MULT) || + (atom->quant == XML_REGEXP_QUANT_PLUS)) { + /* + * Do not pollute the target state by adding transitions from + * it as it is likely to be the shared target of multiple branches. + * So isolate with an epsilon transition. + */ + xmlRegStatePtr tmp; + + tmp = xmlRegNewState(ctxt); + if (tmp != NULL) + xmlRegStatePush(ctxt, tmp); + else { + return(-1); + } + xmlFAGenerateEpsilonTransition(ctxt, tmp, to); + to = tmp; + } if (xmlRegAtomPush(ctxt, atom) < 0) { return(-1); } xmlRegStateAddTrans(ctxt, from, atom, to, -1, -1); - ctxt->state = to; + ctxt->state = end; switch (atom->quant) { case XML_REGEXP_QUANT_OPT: atom->quant = XML_REGEXP_QUANT_ONCE; @@ -1595,6 +1746,13 @@ atom->quant = XML_REGEXP_QUANT_ONCE; xmlRegStateAddTrans(ctxt, to, atom, to, -1, -1); break; + case XML_REGEXP_QUANT_RANGE: +#if DV_test + if (atom->min == 0) { + xmlFAGenerateEpsilonTransition(ctxt, from, to); + } +#endif + break; default: break; } @@ -1605,7 +1763,7 @@ * xmlFAReduceEpsilonTransitions: * @ctxt: a regexp parser context * @fromnr: the from state - * @tonr: the to state + * @tonr: the to state * @counter: should that transition be associated to a counted * */ @@ -1649,7 +1807,7 @@ int newto = to->trans[transnr].to; xmlRegStateAddTrans(ctxt, from, NULL, - ctxt->states[newto], + ctxt->states[newto], -1, to->trans[transnr].count); } else { #ifdef DEBUG_REGEXP_GRAPH @@ -1671,11 +1829,11 @@ int newto = to->trans[transnr].to; if (to->trans[transnr].counter >= 0) { - xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom, - ctxt->states[newto], + xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom, + ctxt->states[newto], to->trans[transnr].counter, -1); } else { - xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom, + xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom, ctxt->states[newto], counter, -1); } } @@ -1687,7 +1845,7 @@ * xmlFAEliminateSimpleEpsilonTransitions: * @ctxt: a regexp parser context * - * Eliminating general epsilon transitions can get costly in the general + * Eliminating general epsilon transitions can get costly in the general * algorithm due to the large amount of generated new transitions and * associated comparisons. However for simple epsilon transition used just * to separate building blocks when generating the automata this can be @@ -1709,6 +1867,8 @@ continue; if (state->nbTrans != 1) continue; + if (state->type == XML_REGEXP_UNREACH_STATE) + continue; /* is the only transition out a basic transition */ if ((state->trans[0].atom == NULL) && (state->trans[0].to >= 0) && @@ -1721,48 +1881,37 @@ #ifdef DEBUG_REGEXP_GRAPH printf("Found simple epsilon trans from start %d to %d\n", statenr, newto); -#endif +#endif } else { #ifdef DEBUG_REGEXP_GRAPH printf("Found simple epsilon trans from %d to %d\n", statenr, newto); -#endif +#endif for (i = 0;i < state->nbTransTo;i++) { tmp = ctxt->states[state->transTo[i]]; for (j = 0;j < tmp->nbTrans;j++) { if (tmp->trans[j].to == statenr) { - tmp->trans[j].to = newto; -#ifdef DEBUG_REGEXP_GRAPH - printf("Changed transition %d on %d to go to %d\n", - j, tmp->no, newto); -#endif - xmlRegStateAddTransTo(ctxt, ctxt->states[newto], - tmp->no); - } - } - } -#if 0 - for (i = 0;i < ctxt->nbStates;i++) { - tmp = ctxt->states[i]; - for (j = 0;j < tmp->nbTrans;j++) { - if (tmp->trans[j].to == statenr) { - tmp->trans[j].to = newto; #ifdef DEBUG_REGEXP_GRAPH printf("Changed transition %d on %d to go to %d\n", j, tmp->no, newto); -#endif +#endif + tmp->trans[j].to = -1; + xmlRegStateAddTrans(ctxt, tmp, tmp->trans[j].atom, + ctxt->states[newto], + tmp->trans[j].counter, + tmp->trans[j].count); } } } -#endif if (state->type == XML_REGEXP_FINAL_STATE) ctxt->states[newto]->type = XML_REGEXP_FINAL_STATE; /* eliminate the transition completely */ state->nbTrans = 0; + state->type = XML_REGEXP_UNREACH_STATE; } - + } } } @@ -1779,16 +1928,33 @@ if (ctxt->states == NULL) return; + /* + * Eliminate simple epsilon transition and the associated unreachable + * states. + */ xmlFAEliminateSimpleEpsilonTransitions(ctxt); + for (statenr = 0;statenr < ctxt->nbStates;statenr++) { + state = ctxt->states[statenr]; + if ((state != NULL) && (state->type == XML_REGEXP_UNREACH_STATE)) { +#ifdef DEBUG_REGEXP_GRAPH + printf("Removed unreachable state %d\n", statenr); +#endif + xmlRegFreeState(state); + ctxt->states[statenr] = NULL; + } + } has_epsilon = 0; /* - * build the completed transitions bypassing the epsilons + * Build the completed transitions bypassing the epsilons * Use a marking algorithm to avoid loops - * mark sink states too. + * Mark sink states too. + * Process from the latests states backward to the start when + * there is long cascading epsilon chains this minimize the + * recursions and transition compares when adding the new ones */ - for (statenr = 0;statenr < ctxt->nbStates;statenr++) { + for (statenr = ctxt->nbStates - 1;statenr >= 0;statenr--) { state = ctxt->states[statenr]; if (state == NULL) continue; @@ -1812,8 +1978,9 @@ printf("Found epsilon trans %d from %d to %d\n", transnr, statenr, newto); #endif - state->mark = XML_REGEXP_MARK_START; has_epsilon = 1; + state->trans[transnr].to = -2; + state->mark = XML_REGEXP_MARK_START; xmlFAReduceEpsilonTransitions(ctxt, statenr, newto, state->trans[transnr].counter); state->mark = XML_REGEXP_MARK_NORMAL; @@ -1932,12 +2099,13 @@ (range2->type == XML_REGEXP_EPSILON)) { return(0); } else if (range1->type == range2->type) { - if ((range1->type != XML_REGEXP_CHARVAL) || - (range1->end < range2->start) || - (range2->end < range1->start)) - ret = 1; - else + if (range1->type != XML_REGEXP_CHARVAL) + ret = 1; + else if ((range1->end < range2->start) || + (range2->end < range1->start)) ret = 0; + else + ret = 1; } else if (range1->type == XML_REGEXP_CHARVAL) { int codepoint; int neg = 0; @@ -1945,7 +2113,7 @@ /* * just check all codepoints in the range for acceptance, * this is usually way cheaper since done only once at - * compilation than testing over and over at runtime or + * compilation than testing over and over at runtime or * pushing too many states when evaluating. */ if (((range1->neg == 0) && (range2->neg != 0)) || @@ -2064,7 +2232,7 @@ if (((range1->neg == 0) && (range2->neg != 0)) || ((range1->neg != 0) && (range2->neg == 0))) ret = !ret; - return(1); + return(ret); } /** @@ -2272,6 +2440,7 @@ * xmlFAEqualAtoms: * @atom1: an atom * @atom2: an atom + * @deep: if not set only compare string pointers * * Compares two atoms to check whether they are the same exactly * this is used to remove equivalent transitions @@ -2279,7 +2448,7 @@ * Returns 1 if same and 0 otherwise */ static int -xmlFAEqualAtoms(xmlRegAtomPtr atom1, xmlRegAtomPtr atom2) { +xmlFAEqualAtoms(xmlRegAtomPtr atom1, xmlRegAtomPtr atom2, int deep) { int ret = 0; if (atom1 == atom2) @@ -2294,8 +2463,11 @@ ret = 0; break; case XML_REGEXP_STRING: - ret = xmlStrEqual((xmlChar *)atom1->valuep, - (xmlChar *)atom2->valuep); + if (!deep) + ret = (atom1->valuep == atom2->valuep); + else + ret = xmlStrEqual((xmlChar *)atom1->valuep, + (xmlChar *)atom2->valuep); break; case XML_REGEXP_CHARVAL: ret = (atom1->codepoint == atom2->codepoint); @@ -2313,6 +2485,7 @@ * xmlFACompareAtoms: * @atom1: an atom * @atom2: an atom + * @deep: if not set only compare string pointers * * Compares two atoms to check whether they intersect in some ways, * this is used by xmlFAComputesDeterminism and xmlFARecurseDeterminism only @@ -2320,7 +2493,7 @@ * Returns 1 if yes and 0 otherwise */ static int -xmlFACompareAtoms(xmlRegAtomPtr atom1, xmlRegAtomPtr atom2) { +xmlFACompareAtoms(xmlRegAtomPtr atom1, xmlRegAtomPtr atom2, int deep) { int ret = 1; if (atom1 == atom2) @@ -2346,8 +2519,11 @@ } switch (atom1->type) { case XML_REGEXP_STRING: - ret = xmlRegStrEqualWildcard((xmlChar *)atom1->valuep, - (xmlChar *)atom2->valuep); + if (!deep) + ret = (atom1->valuep != atom2->valuep); + else + ret = xmlRegStrEqualWildcard((xmlChar *)atom1->valuep, + (xmlChar *)atom2->valuep); break; case XML_REGEXP_EPSILON: goto not_determinist; @@ -2410,9 +2586,16 @@ int res; int transnr, nbTrans; xmlRegTransPtr t1; + int deep = 1; if (state == NULL) return(ret); + if (state->markd == XML_REGEXP_MARK_VISITED) + return(ret); + + if (ctxt->flags & AM_AUTOMATA_RNG) + deep = 0; + /* * don't recurse on transitions potentially added in the course of * the elimination. @@ -2424,10 +2607,12 @@ * check transitions conflicting with the one looked at */ if (t1->atom == NULL) { - if (t1->to == -1) + if (t1->to < 0) continue; + state->markd = XML_REGEXP_MARK_VISITED; res = xmlFARecurseDeterminism(ctxt, ctxt->states[t1->to], to, atom); + state->markd = 0; if (res == 0) { ret = 0; /* t1->nd = 1; */ @@ -2436,7 +2621,7 @@ } if (t1->to != to) continue; - if (xmlFACompareAtoms(t1->atom, atom)) { + if (xmlFACompareAtoms(t1->atom, atom, deep)) { ret = 0; /* mark the transition as non-deterministic */ t1->nd = 1; @@ -2460,6 +2645,7 @@ xmlRegTransPtr t1, t2, last; int i; int ret = 1; + int deep = 1; #ifdef DEBUG_REGEXP_GRAPH printf("xmlFAComputesDeterminism\n"); @@ -2468,6 +2654,9 @@ if (ctxt->determinist != -1) return(ctxt->determinist); + if (ctxt->flags & AM_AUTOMATA_RNG) + deep = 0; + /* * First cleanup the automata removing cancelled transitions */ @@ -2495,7 +2684,13 @@ continue; if (t2->atom != NULL) { if (t1->to == t2->to) { - if (xmlFAEqualAtoms(t1->atom, t2->atom)) + /* + * Here we use deep because we want to keep the + * transitions which indicate a conflict + */ + if (xmlFAEqualAtoms(t1->atom, t2->atom, deep) && + (t1->counter == t2->counter) && + (t1->count == t2->count)) t2->to = -1; /* eliminated */ } } @@ -2530,8 +2725,11 @@ if (t2->to == -1) /* eliminated */ continue; if (t2->atom != NULL) { - /* not determinist ! */ - if (xmlFACompareAtoms(t1->atom, t2->atom)) { + /* + * But here we don't use deep because we want to + * find transitions which indicate a conflict + */ + if (xmlFACompareAtoms(t1->atom, t2->atom, 1)) { ret = 0; /* mark the transitions as non-deterministic ones */ t1->nd = 1; @@ -2583,9 +2781,9 @@ } /************************************************************************ - * * + * * * Routines to check input against transition atoms * - * * + * * ************************************************************************/ static int @@ -2614,7 +2812,7 @@ case XML_REGEXP_NOTINITNAME: neg = !neg; case XML_REGEXP_INITNAME: - ret = (IS_LETTER(codepoint) || + ret = (IS_LETTER(codepoint) || (codepoint == '_') || (codepoint == ':')); break; case XML_REGEXP_NOTNAMECHAR: @@ -2862,9 +3060,9 @@ } /************************************************************************ - * * + * * * Saving and restoring state of an execution context * - * * + * * ************************************************************************/ #ifdef DEBUG_REGEXP_EXEC @@ -2875,7 +3073,8 @@ int i; printf(": "); for (i = 0;(i < 3) && (i < exec->inputStackNr);i++) - printf("%s ", exec->inputStack[exec->inputStackNr - (i + 1)]); + printf("%s ", (const char *) + exec->inputStack[exec->inputStackNr - (i + 1)].value); } else { printf(": %s", &(exec->inputString[exec->index])); } @@ -2963,8 +3162,10 @@ exec->status = -6; return; } - memcpy(exec->counts, exec->rollbacks[exec->nbRollbacks].counts, + if (exec->counts) { + memcpy(exec->counts, exec->rollbacks[exec->nbRollbacks].counts, exec->comp->nbCounters * sizeof(int)); + } } #ifdef DEBUG_REGEXP_EXEC @@ -2974,9 +3175,9 @@ } /************************************************************************ - * * + * * * Verifier, running an input against a compiled regexp * - * * + * * ************************************************************************/ static int @@ -3008,9 +3209,10 @@ memset(exec->counts, 0, comp->nbCounters * sizeof(int)); } else exec->counts = NULL; - while ((exec->status == 0) && + while ((exec->status == 0) && (exec->state != NULL) && ((exec->inputString[exec->index] != 0) || - (exec->state->type != XML_REGEXP_FINAL_STATE))) { + ((exec->state != NULL) && + (exec->state->type != XML_REGEXP_FINAL_STATE)))) { xmlRegTransPtr trans; xmlRegAtomPtr atom; @@ -3081,12 +3283,22 @@ * this is a multiple input sequence * If there is a counter associated increment it now. * before potentially saving and rollback + * do not increment if the counter is already over the + * maximum limit in which case get to next transition */ if (trans->counter >= 0) { - if (exec->counts == NULL) { + xmlRegCounterPtr counter; + + if ((exec->counts == NULL) || + (exec->comp == NULL) || + (exec->comp->counters == NULL)) { exec->status = -1; goto error; } + counter = &exec->comp->counters[trans->counter]; + if (exec->counts[trans->counter] >= counter->max) + continue; /* for loop on transitions */ + #ifdef DEBUG_REGEXP_EXEC printf("Increasing count %d\n", trans->counter); #endif @@ -3182,10 +3394,18 @@ xmlFARegExecSave(exec); } if (trans->counter >= 0) { - if (exec->counts == NULL) { - exec->status = -1; + xmlRegCounterPtr counter; + + /* make sure we don't go over the counter maximum value */ + if ((exec->counts == NULL) || + (exec->comp == NULL) || + (exec->comp->counters == NULL)) { + exec->status = -1; goto error; } + counter = &exec->comp->counters[trans->counter]; + if (exec->counts[trans->counter] >= counter->max) + continue; /* for loop on transitions */ #ifdef DEBUG_REGEXP_EXEC printf("Increasing count %d\n", trans->counter); #endif @@ -3243,6 +3463,8 @@ } xmlFree(exec->rollbacks); } + if (exec->state == NULL) + return(-1); if (exec->counts != NULL) xmlFree(exec->counts); if (exec->status == 0) @@ -3256,9 +3478,9 @@ } /************************************************************************ - * * + * * * Progressive interface to the verifier one atom at a time * - * * + * * ************************************************************************/ #ifdef DEBUG_ERR static void testerr(xmlRegExecCtxtPtr exec); @@ -3375,7 +3597,7 @@ #endif if (exec->inputStackMax == 0) { exec->inputStackMax = 4; - exec->inputStack = (xmlRegInputTokenPtr) + exec->inputStack = (xmlRegInputTokenPtr) xmlMalloc(exec->inputStackMax * sizeof(xmlRegInputToken)); if (exec->inputStack == NULL) { xmlRegexpErrMemory(NULL, "pushing input string"); @@ -3404,11 +3626,11 @@ /** * xmlRegStrEqualWildcard: - * @expStr: the string to be evaluated + * @expStr: the string to be evaluated * @valStr: the validation string * * Checks if both strings are equal or have the same content. "*" - * can be used as a wildcard in @valStr; "|" is used as a seperator of + * can be used as a wildcard in @valStr; "|" is used as a seperator of * substrings in both @expStr and @valStr. * * Returns 1 if the comparison is satisfied and the number of substrings @@ -3474,7 +3696,7 @@ if ((comp == NULL) || (comp->compact == NULL) || (comp->stringMap == NULL)) return(-1); - + if (value == NULL) { /* * are we at a final state ? @@ -3495,9 +3717,9 @@ for (i = 0;i < comp->nbstrings;i++) { target = comp->compact[state * (comp->nbstrings + 1) + i + 1]; if ((target > 0) && (target <= comp->nbstates)) { - target--; /* to avoid 0 */ + target--; /* to avoid 0 */ if (xmlRegStrEqualWildcard(comp->stringMap[i], value)) { - exec->index = target; + exec->index = target; if ((exec->callback != NULL) && (comp->transdata != NULL)) { exec->callback(exec->data, value, comp->transdata[state * comp->nbstrings + i], data); @@ -3631,7 +3853,7 @@ continue; counter = &exec->comp->counters[t->counter]; count = exec->counts[t->counter]; - if ((count < counter->max) && + if ((count < counter->max) && (t->atom != NULL) && (xmlStrEqual(value, t->atom->valuep))) { ret = 0; @@ -3871,7 +4093,7 @@ */ exec->determinist = 0; xmlFARegExecRollBack(exec); - if (exec->status == 0) { + if ((exec->inputStack != NULL ) && (exec->status == 0)) { value = exec->inputStack[exec->index].value; data = exec->inputStack[exec->index].data; #ifdef DEBUG_PUSH @@ -3989,7 +4211,7 @@ int maxval; int nb = 0; - if ((exec == NULL) || (nbval == NULL) || (nbneg == NULL) || + if ((exec == NULL) || (nbval == NULL) || (nbneg == NULL) || (values == NULL) || (*nbval <= 0)) return(-1); @@ -4086,7 +4308,7 @@ (*nbval)++; } } else { - if ((exec->comp->states[trans->to] != NULL) && + if ((exec->comp != NULL) && (exec->comp->states[trans->to] != NULL) && (exec->comp->states[trans->to]->type != XML_REGEXP_SINK_STATE)) { if (atom->neg) @@ -4095,7 +4317,7 @@ values[nb++] = (xmlChar *) atom->valuep; (*nbval)++; } - } + } } for (transno = 0; (transno < state->nbTrans) && (nb < maxval); @@ -4122,7 +4344,7 @@ values[nb++] = (xmlChar *) atom->valuep; (*nbneg)++; } - } + } } } return(0); @@ -4353,10 +4575,10 @@ } #endif /************************************************************************ - * * + * * * Parser for the Schemas Datatype Regular Expressions * * http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#regexs * - * * + * * ************************************************************************/ /** @@ -4385,7 +4607,7 @@ * * [27] charProp ::= IsCategory | IsBlock * [28] IsCategory ::= Letters | Marks | Numbers | Punctuation | - * Separators | Symbols | Others + * Separators | Symbols | Others * [29] Letters ::= 'L' [ultmo]? * [30] Marks ::= 'M' [nce]? * [31] Numbers ::= 'N' [dlo]? @@ -4400,7 +4622,7 @@ int cur; xmlRegAtomType type = (xmlRegAtomType) 0; xmlChar *blockName = NULL; - + cur = CUR; if (cur == 'L') { NEXT; @@ -4572,15 +4794,15 @@ NEXT; start = ctxt->cur; cur = CUR; - if (((cur >= 'a') && (cur <= 'z')) || - ((cur >= 'A') && (cur <= 'Z')) || - ((cur >= '0') && (cur <= '9')) || + if (((cur >= 'a') && (cur <= 'z')) || + ((cur >= 'A') && (cur <= 'Z')) || + ((cur >= '0') && (cur <= '9')) || (cur == 0x2D)) { NEXT; cur = CUR; - while (((cur >= 'a') && (cur <= 'z')) || - ((cur >= 'A') && (cur <= 'Z')) || - ((cur >= '0') && (cur <= '9')) || + while (((cur >= 'a') && (cur <= 'z')) || + ((cur >= 'A') && (cur <= 'Z')) || + ((cur >= '0') && (cur <= '9')) || (cur == 0x2D)) { NEXT; cur = CUR; @@ -4606,7 +4828,7 @@ * xmlFAParseCharClassEsc: * @ctxt: a regexp parser context * - * [23] charClassEsc ::= ( SingleCharEsc | MultiCharEsc | catEsc | complEsc ) + * [23] charClassEsc ::= ( SingleCharEsc | MultiCharEsc | catEsc | complEsc ) * [24] SingleCharEsc ::= '\' [nrt\|.?*+(){}#x2D#x5B#x5D#x5E] * [25] catEsc ::= '\p{' charProp '}' * [26] complEsc ::= '\P{' charProp '}' @@ -4682,6 +4904,17 @@ } } } else if (ctxt->atom->type == XML_REGEXP_RANGES) { + switch (cur) { + case 'n': + cur = '\n'; + break; + case 'r': + cur = '\r'; + break; + case 't': + cur = '\t'; + break; + } xmlRegAtomAddRange(ctxt, ctxt->atom, ctxt->neg, XML_REGEXP_CHARVAL, cur, cur, NULL); } @@ -4692,34 +4925,34 @@ xmlRegAtomType type = XML_REGEXP_ANYSPACE; switch (cur) { - case 's': + case 's': type = XML_REGEXP_ANYSPACE; break; - case 'S': + case 'S': type = XML_REGEXP_NOTSPACE; break; - case 'i': + case 'i': type = XML_REGEXP_INITNAME; break; - case 'I': + case 'I': type = XML_REGEXP_NOTINITNAME; break; - case 'c': + case 'c': type = XML_REGEXP_NAMECHAR; break; - case 'C': + case 'C': type = XML_REGEXP_NOTNAMECHAR; break; - case 'd': + case 'd': type = XML_REGEXP_DECIMAL; break; - case 'D': + case 'D': type = XML_REGEXP_NOTDECIMAL; break; - case 'w': + case 'w': type = XML_REGEXP_REALCHAR; break; - case 'W': + case 'W': type = XML_REGEXP_NOTREALCHAR; break; } @@ -4730,72 +4963,16 @@ xmlRegAtomAddRange(ctxt, ctxt->atom, ctxt->neg, type, 0, 0, NULL); } - } -} - -/** - * xmlFAParseCharRef: - * @ctxt: a regexp parser context - * - * [19] XmlCharRef ::= ( '&#' [0-9]+ ';' ) | (' &#x' [0-9a-fA-F]+ ';' ) - */ -static int -xmlFAParseCharRef(xmlRegParserCtxtPtr ctxt) { - int ret = 0, cur; - - if ((CUR != '&') || (NXT(1) != '#')) - return(-1); - NEXT; - NEXT; - cur = CUR; - if (cur == 'x') { - NEXT; - cur = CUR; - if (((cur >= '0') && (cur <= '9')) || - ((cur >= 'a') && (cur <= 'f')) || - ((cur >= 'A') && (cur <= 'F'))) { - while (((cur >= '0') && (cur <= '9')) || - ((cur >= 'a') && (cur <= 'f')) || - ((cur >= 'A') && (cur <= 'F'))) { - if ((cur >= '0') && (cur <= '9')) - ret = ret * 16 + cur - '0'; - else if ((cur >= 'a') && (cur <= 'f')) - ret = ret * 16 + 10 + (cur - 'a'); - else - ret = ret * 16 + 10 + (cur - 'A'); - NEXT; - cur = CUR; - } - } else { - ERROR("Char ref: expecting [0-9A-F]"); - return(-1); - } - } else { - if ((cur >= '0') && (cur <= '9')) { - while ((cur >= '0') && (cur <= '9')) { - ret = ret * 10 + cur - '0'; - NEXT; - cur = CUR; - } - } else { - ERROR("Char ref: expecting [0-9]"); - return(-1); - } - } - if (cur != ';') { - ERROR("Char ref: expecting ';'"); - return(-1); } else { - NEXT; + ERROR("Wrong escape sequence, misuse of character '\\'"); } - return(ret); } /** * xmlFAParseCharRange: * @ctxt: a regexp parser context * - * [17] charRange ::= seRange | XmlCharRef | XmlCharIncDash + * [17] charRange ::= seRange | XmlCharRef | XmlCharIncDash * [18] seRange ::= charOrEsc '-' charOrEsc * [20] charOrEsc ::= XmlChar | SingleCharEsc * [21] XmlChar ::= [^\#x2D#x5B#x5D] @@ -4812,12 +4989,6 @@ return; } - if ((CUR == '&') && (NXT(1) == '#')) { - end = start = xmlFAParseCharRef(ctxt); - xmlRegAtomAddRange(ctxt, ctxt->atom, ctxt->neg, - XML_REGEXP_CHARVAL, start, end, NULL); - return; - } cur = CUR; if (cur == '\\') { NEXT; @@ -4842,10 +5013,15 @@ ERROR("Expecting a char range"); return; } - NEXTL(len); - if (start == '-') { + /* + * Since we are "inside" a range, we can assume ctxt->cur is past + * the start of ctxt->string, and PREV should be safe + */ + if ((start == '-') && (NXT(1) != ']') && (PREV != '[') && (PREV != '^')) { + NEXTL(len); return; } + NEXTL(len); cur = CUR; if ((cur != '-') || (NXT(1) == ']')) { xmlRegAtomAddRange(ctxt, ctxt->atom, ctxt->neg, @@ -4896,7 +5072,7 @@ static void xmlFAParsePosCharGroup(xmlRegParserCtxtPtr ctxt) { do { - if ((CUR == '\\') || (CUR == '.')) { + if (CUR == '\\') { xmlFAParseCharClassEsc(ctxt); } else { xmlFAParseCharRange(ctxt); @@ -4911,7 +5087,7 @@ * * [13] charGroup ::= posCharGroup | negCharGroup | charClassSub * [15] negCharGroup ::= '^' posCharGroup - * [16] charClassSub ::= ( posCharGroup | negCharGroup ) '-' charClassExpr + * [16] charClassSub ::= ( posCharGroup | negCharGroup ) '-' charClassExpr * [12] charClassExpr ::= '[' charGroup ']' */ static void @@ -5085,9 +5261,15 @@ } else if (CUR == ')') { return(0); } else if (CUR == '(') { - xmlRegStatePtr start, oldend; + xmlRegStatePtr start, oldend, start0; NEXT; + /* + * this extra Epsilon transition is needed if we count with 0 allowed + * unfortunately this can't be known at that point + */ + xmlFAGenerateEpsilonTransition(ctxt, ctxt->state, NULL); + start0 = ctxt->state; xmlFAGenerateEpsilonTransition(ctxt, ctxt->state, NULL); start = ctxt->state; oldend = ctxt->end; @@ -5103,6 +5285,7 @@ if (ctxt->atom == NULL) return(-1); ctxt->atom->start = start; + ctxt->atom->start0 = start0; ctxt->atom->stop = ctxt->state; ctxt->end = oldend; return(1); @@ -5152,7 +5335,7 @@ previous = ctxt->state; ret = xmlFAParsePiece(ctxt); if (ret != 0) { - if (xmlFAGenerateTransitions(ctxt, previous, + if (xmlFAGenerateTransitions(ctxt, previous, (CUR=='|' || CUR==')') ? to : NULL, ctxt->atom) < 0) return(-1); previous = ctxt->state; @@ -5161,7 +5344,7 @@ while ((ret != 0) && (ctxt->error == 0)) { ret = xmlFAParsePiece(ctxt); if (ret != 0) { - if (xmlFAGenerateTransitions(ctxt, previous, + if (xmlFAGenerateTransitions(ctxt, previous, (CUR=='|' || CUR==')') ? to : NULL, ctxt->atom) < 0) return(-1); previous = ctxt->state; @@ -5199,6 +5382,10 @@ end = ctxt->state; while ((CUR == '|') && (ctxt->error == 0)) { NEXT; + if (CUR == 0) { + ERROR("expecting a branch after |") + return; + } ctxt->state = start; ctxt->end = NULL; xmlFAParseBranch(ctxt, end); @@ -5210,9 +5397,9 @@ } /************************************************************************ - * * - * The basic API * - * * + * * + * The basic API * + * * ************************************************************************/ /** @@ -5281,6 +5468,10 @@ if (CUR != 0) { ERROR("xmlFAParseRegExp: extra characters"); } + if (ctxt->error != 0) { + xmlRegFreeParserCtxt(ctxt); + return(NULL); + } ctxt->end = ctxt->state; ctxt->start->type = XML_REGEXP_START_STATE; ctxt->end->type = XML_REGEXP_FINAL_STATE; @@ -5345,10 +5536,12 @@ am->nbStates = comp->nbStates; am->states = comp->states; am->determinist = -1; + am->flags = comp->flags; ret = xmlFAComputesDeterminism(am); am->atoms = NULL; am->states = NULL; xmlFreeAutomata(am); + comp->determinist = ret; return(ret); } @@ -5393,9 +5586,9 @@ #ifdef LIBXML_AUTOMATA_ENABLED /************************************************************************ - * * - * The Automata interface * - * * + * * + * The Automata interface * + * * ************************************************************************/ /** @@ -5426,6 +5619,7 @@ xmlFreeAutomata(ctxt); return(NULL); } + ctxt->flags = 0; return(ctxt); } @@ -5444,6 +5638,20 @@ } /** + * xmlAutomataSetFlags: + * @am: an automata + * @flags: a set of internal flags + * + * Set some flags on the automata + */ +void +xmlAutomataSetFlags(xmlAutomataPtr am, int flags) { + if (am == NULL) + return; + am->flags |= flags; +} + +/** * xmlAutomataGetInitState: * @am: an automata * @@ -5501,8 +5709,6 @@ if (atom == NULL) return(NULL); atom->data = data; - if (atom == NULL) - return(NULL); atom->valuep = xmlStrdup(token); if (xmlFAGenerateTransitions(am, from, to, atom) < 0) { @@ -5651,7 +5857,7 @@ * * If @to is NULL, this creates first a new target state in the automata * and then adds a transition from the @from state to the target state - * activated by a succession of input of value @token and @token2 and + * activated by a succession of input of value @token and @token2 and * whose number is between @min and @max * * Returns the target state or NULL in case of error @@ -5805,8 +6011,8 @@ * * If @to is NULL, this creates first a new target state in the automata * and then adds a transition from the @from state to the target state - * activated by a succession of input of value @token and @token2 and whose - * number is between @min and @max, moreover that transition can only be + * activated by a succession of input of value @token and @token2 and whose + * number is between @min and @max, moreover that transition can only be * crossed once. * * Returns the target state or NULL in case of error @@ -5848,7 +6054,7 @@ str[lenn + lenp + 1] = 0; atom->valuep = str; - } + } atom->data = data; atom->quant = XML_REGEXP_QUANT_ONCEONLY; atom->min = min; @@ -5871,7 +6077,7 @@ return(to); } - + /** * xmlAutomataNewOnceTrans: @@ -5940,7 +6146,7 @@ */ xmlAutomataStatePtr xmlAutomataNewState(xmlAutomataPtr am) { - xmlAutomataStatePtr to; + xmlAutomataStatePtr to; if (am == NULL) return(NULL); @@ -6007,7 +6213,7 @@ * * Returns the counter number or -1 in case of error */ -int +int xmlAutomataNewCounter(xmlAutomataPtr am, int min, int max) { int ret; @@ -6079,7 +6285,7 @@ * * Returns the compiled regexp or NULL in case of error */ -xmlRegexpPtr +xmlRegexpPtr xmlAutomataCompile(xmlAutomataPtr am) { xmlRegexpPtr ret; @@ -6099,7 +6305,7 @@ * * Returns 1 if true, 0 if not, and -1 in case of error */ -int +int xmlAutomataIsDeterminist(xmlAutomataPtr am) { int ret; @@ -6129,6 +6335,7 @@ int size; int nbElems; int nb_nodes; + int maxNodes; const char *expr; const char *cur; int nb_cons; @@ -6151,13 +6358,14 @@ if (maxNodes <= 4096) maxNodes = 4096; - + ret = (xmlExpCtxtPtr) xmlMalloc(sizeof(xmlExpCtxt)); if (ret == NULL) return(NULL); memset(ret, 0, sizeof(xmlExpCtxt)); ret->size = size; ret->nbElems = 0; + ret->maxNodes = maxNodes; ret->table = xmlMalloc(size * sizeof(xmlExpNodePtr)); if (ret->table == NULL) { xmlFree(ret); @@ -6204,7 +6412,7 @@ /* #define DEBUG_DERIV */ /* - * TODO: + * TODO: * - Wildcards * - public API for creation * @@ -6272,7 +6480,7 @@ xmlExpHashNameComputeKey(const xmlChar *name) { unsigned short value = 0L; char ch; - + if (name != NULL) { value += 30 * (*name); while ((ch = *name++) != 0) { @@ -6291,7 +6499,7 @@ xmlExpNodePtr right) { unsigned long value; unsigned short ret; - + switch (type) { case XML_EXP_SEQ: value = left->key; @@ -6432,7 +6640,7 @@ left->exp_left->ref++; tmp = xmlExpHashGetEntry(ctxt, XML_EXP_OR, left->exp_left, tmp, NULL, 0, 0); - + xmlExpFree(ctxt, left); return(tmp); } @@ -6489,7 +6697,7 @@ return(right); } kbase = xmlExpHashComputeKey(type, left, right); - } else + } else return(NULL); key = kbase % ctxt->size; @@ -6630,7 +6838,7 @@ * xmlExpNewAtom: * @ctxt: the expression context * @name: the atom name - * @len: the atom name lenght in byte (or -1); + * @len: the atom name length in byte (or -1); * * Get the atom associated to this name from that context * @@ -6730,7 +6938,7 @@ ************************************************************************/ static int -xmlExpGetLanguageInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, +xmlExpGetLanguageInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, const xmlChar**list, int len, int nb) { int tmp, tmp2; tail: @@ -6743,7 +6951,7 @@ return(0); if (nb >= len) return(-2); - list[nb++] = exp->exp_str; + list[nb] = exp->exp_str; return(1); case XML_EXP_COUNT: exp = exp->exp_left; @@ -6767,7 +6975,7 @@ * @ctxt: the expression context * @exp: the expression * @langList: where to store the tokens - * @len: the allocated lenght of @list + * @len: the allocated length of @list * * Find all the strings used in @exp and store them in @list * @@ -6775,7 +6983,7 @@ * -2 if there is more than @len strings */ int -xmlExpGetLanguage(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, +xmlExpGetLanguage(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, const xmlChar**langList, int len) { if ((ctxt == NULL) || (exp == NULL) || (langList == NULL) || (len <= 0)) return(-1); @@ -6783,7 +6991,7 @@ } static int -xmlExpGetStartInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, +xmlExpGetStartInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, const xmlChar**list, int len, int nb) { int tmp, tmp2; tail: @@ -6798,7 +7006,7 @@ return(0); if (nb >= len) return(-2); - list[nb++] = exp->exp_str; + list[nb] = exp->exp_str; return(1); case XML_EXP_COUNT: exp = exp->exp_left; @@ -6833,7 +7041,7 @@ * @ctxt: the expression context * @exp: the expression * @tokList: where to store the tokens - * @len: the allocated lenght of @list + * @len: the allocated length of @list * * Find all the strings that appears at the start of the languages * accepted by @exp and store them in @list. E.g. for (a, b) | c @@ -6843,7 +7051,7 @@ * -2 if there is more than @len strings */ int -xmlExpGetStart(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, +xmlExpGetStart(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, const xmlChar**tokList, int len) { if ((ctxt == NULL) || (exp == NULL) || (tokList == NULL) || (len <= 0)) return(-1); @@ -7540,7 +7748,7 @@ xmlFree((xmlChar **) tab); return(ret); } - + /** * xmlExpExpDerive: * @ctxt: the expressions context @@ -7592,7 +7800,7 @@ int xmlExpSubsume(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub) { xmlExpNodePtr tmp; - + if ((exp == NULL) || (ctxt == NULL) || (sub == NULL)) return(-1); @@ -7636,7 +7844,7 @@ /************************************************************************ * * - * Parsing expression * + * Parsing expression * * * ************************************************************************/ @@ -7740,7 +7948,7 @@ ret = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, ret, NULL, NULL, 0, -1); SKIP_BLANKS - } + } return(ret); } @@ -7862,7 +8070,7 @@ break; case XML_EXP_COUNT: { char rep[40]; - + c = expr->exp_left; if ((c->type == XML_EXP_SEQ) || (c->type == XML_EXP_OR)) xmlExpDumpInt(buf, c, 1); diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlregexp.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlregexp.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlregexp.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlregexp.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -38,7 +38,7 @@ #ifdef __cplusplus } -#endif +#endif #include #include #ifdef __cplusplus @@ -51,16 +51,22 @@ XMLPUBFUN xmlRegexpPtr XMLCALL xmlRegexpCompile (const xmlChar *regexp); XMLPUBFUN void XMLCALL xmlRegFreeRegexp(xmlRegexpPtr regexp); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRegexpExec (xmlRegexpPtr comp, const xmlChar *value); -XMLPUBFUN void XMLCALL - xmlRegexpPrint (FILE *output, +XMLPUBFUN void XMLCALL + xmlRegexpPrint (FILE *output, xmlRegexpPtr regexp); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRegexpIsDeterminist(xmlRegexpPtr comp); -/* +/** + * xmlRegExecCallbacks: + * @exec: the regular expression context + * @token: the current token string + * @transdata: transition data + * @inputdata: input data + * * Callback function when doing a transition in the automata */ typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxtPtr exec, @@ -71,17 +77,17 @@ /* * The progressive API */ -XMLPUBFUN xmlRegExecCtxtPtr XMLCALL - xmlRegNewExecCtxt (xmlRegexpPtr comp, +XMLPUBFUN xmlRegExecCtxtPtr XMLCALL + xmlRegNewExecCtxt (xmlRegexpPtr comp, xmlRegExecCallbacks callback, void *data); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRegFreeExecCtxt (xmlRegExecCtxtPtr exec); -XMLPUBFUN int XMLCALL - xmlRegExecPushString(xmlRegExecCtxtPtr exec, +XMLPUBFUN int XMLCALL + xmlRegExecPushString(xmlRegExecCtxtPtr exec, const xmlChar *value, void *data); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRegExecPushString2(xmlRegExecCtxtPtr exec, const xmlChar *value, const xmlChar *value2, @@ -89,15 +95,15 @@ XMLPUBFUN int XMLCALL xmlRegExecNextValues(xmlRegExecCtxtPtr exec, - int *nbval, - int *nbneg, + int *nbval, + int *nbneg, xmlChar **values, int *terminal); XMLPUBFUN int XMLCALL xmlRegExecErrInfo (xmlRegExecCtxtPtr exec, - const xmlChar **string, + const xmlChar **string, int *nbval, - int *nbneg, + int *nbneg, xmlChar **values, int *terminal); #ifdef LIBXML_EXPR_ENABLED @@ -135,7 +141,7 @@ } xmlExpNodeType; /* - * 2 core expressions shared by all for the empty language set + * 2 core expressions shared by all for the empty language set * and for the set with just the empty token */ XMLPUBVAR xmlExpNodePtr forbiddenExp; @@ -209,7 +215,7 @@ #endif /* LIBXML_EXPR_ENABLED */ #ifdef __cplusplus } -#endif +#endif #endif /* LIBXML_REGEXP_ENABLED */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlsave.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlsave.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlsave.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlsave.c 2015-12-23 07:08:27.000000000 +0000 @@ -19,6 +19,10 @@ #include +#include "buf.h" +#include "enc.h" +#include "save.h" + /************************************************************************ * * * XHTML detection * @@ -66,7 +70,7 @@ #ifdef LIBXML_OUTPUT_ENABLED -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); @@ -92,7 +96,7 @@ /************************************************************************ * * - * Output error handlers * + * Output error handlers * * * ************************************************************************/ /** @@ -210,9 +214,9 @@ int val; inend = in + (*inlen); - + while ((in < inend) && (out < outend)) { - if (*in == '<') { + if (*in == '<') { if (outend - out < 4) break; *out++ = '&'; *out++ = 'l'; @@ -248,7 +252,7 @@ /* * We assume we have UTF-8 input. */ - if (outend - out < 10) break; + if (outend - out < 11) break; if (*in < 0xC0) { xmlSaveErr(XML_SAVE_NOT_UTF8, NULL, NULL); @@ -408,13 +412,15 @@ ret->options = options; if (options & XML_SAVE_FORMAT) ret->format = 1; + else if (options & XML_SAVE_WSNONSIG) + ret->format = 2; return(ret); } /************************************************************************ * * - * Dumping XML tree content to a simple buffer * + * Dumping XML tree content to a simple buffer * * * ************************************************************************/ /** @@ -434,14 +440,14 @@ while (children != NULL) { switch (children->type) { case XML_TEXT_NODE: - xmlAttrSerializeTxtContent(buf->buffer, attr->doc, - attr, children->content); + xmlBufAttrSerializeTxtContent(buf->buffer, attr->doc, + attr, children->content); break; case XML_ENTITY_REF_NODE: - xmlBufferAdd(buf->buffer, BAD_CAST "&", 1); - xmlBufferAdd(buf->buffer, children->name, + xmlBufAdd(buf->buffer, BAD_CAST "&", 1); + xmlBufAdd(buf->buffer, children->name, xmlStrlen(children->name)); - xmlBufferAdd(buf->buffer, BAD_CAST ";", 1); + xmlBufAdd(buf->buffer, BAD_CAST ";", 1); break; default: /* should not happen unless we have a badly built tree */ @@ -451,12 +457,136 @@ } } +/** + * xmlBufDumpNotationTable: + * @buf: an xmlBufPtr output + * @table: A notation table + * + * This will dump the content of the notation table as an XML DTD definition + */ +void +xmlBufDumpNotationTable(xmlBufPtr buf, xmlNotationTablePtr table) { + xmlBufferPtr buffer; + + buffer = xmlBufferCreate(); + if (buffer == NULL) { + /* + * TODO set the error in buf + */ + return; + } + xmlDumpNotationTable(buffer, table); + xmlBufMergeBuffer(buf, buffer); +} + +/** + * xmlBufDumpElementDecl: + * @buf: an xmlBufPtr output + * @elem: An element table + * + * This will dump the content of the element declaration as an XML + * DTD definition + */ +void +xmlBufDumpElementDecl(xmlBufPtr buf, xmlElementPtr elem) { + xmlBufferPtr buffer; + + buffer = xmlBufferCreate(); + if (buffer == NULL) { + /* + * TODO set the error in buf + */ + return; + } + xmlDumpElementDecl(buffer, elem); + xmlBufMergeBuffer(buf, buffer); +} + +/** + * xmlBufDumpAttributeDecl: + * @buf: an xmlBufPtr output + * @attr: An attribute declaration + * + * This will dump the content of the attribute declaration as an XML + * DTD definition + */ +void +xmlBufDumpAttributeDecl(xmlBufPtr buf, xmlAttributePtr attr) { + xmlBufferPtr buffer; + + buffer = xmlBufferCreate(); + if (buffer == NULL) { + /* + * TODO set the error in buf + */ + return; + } + xmlDumpAttributeDecl(buffer, attr); + xmlBufMergeBuffer(buf, buffer); +} + +/** + * xmlBufDumpEntityDecl: + * @buf: an xmlBufPtr output + * @ent: An entity table + * + * This will dump the content of the entity table as an XML DTD definition + */ +void +xmlBufDumpEntityDecl(xmlBufPtr buf, xmlEntityPtr ent) { + xmlBufferPtr buffer; + + buffer = xmlBufferCreate(); + if (buffer == NULL) { + /* + * TODO set the error in buf + */ + return; + } + xmlDumpEntityDecl(buffer, ent); + xmlBufMergeBuffer(buf, buffer); +} + /************************************************************************ * * - * Dumping XML tree content to an I/O output buffer * + * Dumping XML tree content to an I/O output buffer * * * ************************************************************************/ +static int xmlSaveSwitchEncoding(xmlSaveCtxtPtr ctxt, const char *encoding) { + xmlOutputBufferPtr buf = ctxt->buf; + + if ((encoding != NULL) && (buf->encoder == NULL) && (buf->conv == NULL)) { + buf->encoder = xmlFindCharEncodingHandler((const char *)encoding); + if (buf->encoder == NULL) { + xmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, + (const char *)encoding); + return(-1); + } + buf->conv = xmlBufCreate(); + if (buf->conv == NULL) { + xmlCharEncCloseFunc(buf->encoder); + xmlSaveErrMemory("creating encoding buffer"); + return(-1); + } + /* + * initialize the state, e.g. if outputting a BOM + */ + xmlCharEncOutput(buf, 1); + } + return(0); +} + +static int xmlSaveClearEncoding(xmlSaveCtxtPtr ctxt) { + xmlOutputBufferPtr buf = ctxt->buf; + xmlOutputBufferFlush(buf); + xmlCharEncCloseFunc(buf->encoder); + xmlBufFree(buf->conv); + buf->encoder = NULL; + buf->conv = NULL; + return(0); +} + #ifdef LIBXML_HTML_ENABLED static void xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur); @@ -467,28 +597,86 @@ static int xmlDocContentDumpOutput(xmlSaveCtxtPtr ctxt, xmlDocPtr cur); /** + * xmlOutputBufferWriteWSNonSig: + * @ctxt: The save context + * @extra: Number of extra indents to apply to ctxt->level + * + * Write out formatting for non-significant whitespace output. + */ +static void +xmlOutputBufferWriteWSNonSig(xmlSaveCtxtPtr ctxt, int extra) +{ + int i; + if ((ctxt == NULL) || (ctxt->buf == NULL)) + return; + xmlOutputBufferWrite(ctxt->buf, 1, "\n"); + for (i = 0; i < (ctxt->level + extra); i += ctxt->indent_nr) { + xmlOutputBufferWrite(ctxt->buf, ctxt->indent_size * + ((ctxt->level + extra - i) > ctxt->indent_nr ? + ctxt->indent_nr : (ctxt->level + extra - i)), + ctxt->indent); + } +} + +/** * xmlNsDumpOutput: * @buf: the XML buffer output * @cur: a namespace + * @ctxt: the output save context. Optional. * * Dump a local Namespace definition. * Should be called in the context of attributes dumps. + * If @ctxt is supplied, @buf should be its buffer. */ static void -xmlNsDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur) { +xmlNsDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur, xmlSaveCtxtPtr ctxt) { if ((cur == NULL) || (buf == NULL)) return; if ((cur->type == XML_LOCAL_NAMESPACE) && (cur->href != NULL)) { if (xmlStrEqual(cur->prefix, BAD_CAST "xml")) return; + if (ctxt != NULL && ctxt->format == 2) + xmlOutputBufferWriteWSNonSig(ctxt, 2); + else + xmlOutputBufferWrite(buf, 1, " "); + /* Within the context of an element attributes */ if (cur->prefix != NULL) { - xmlOutputBufferWrite(buf, 7, " xmlns:"); + xmlOutputBufferWrite(buf, 6, "xmlns:"); xmlOutputBufferWriteString(buf, (const char *)cur->prefix); } else - xmlOutputBufferWrite(buf, 6, " xmlns"); + xmlOutputBufferWrite(buf, 5, "xmlns"); xmlOutputBufferWrite(buf, 1, "="); - xmlBufferWriteQuotedString(buf->buffer, cur->href); + xmlBufWriteQuotedString(buf->buffer, cur->href); + } +} + +/** + * xmlNsDumpOutputCtxt + * @ctxt: the save context + * @cur: a namespace + * + * Dump a local Namespace definition to a save context. + * Should be called in the context of attribute dumps. + */ +static void +xmlNsDumpOutputCtxt(xmlSaveCtxtPtr ctxt, xmlNsPtr cur) { + xmlNsDumpOutput(ctxt->buf, cur, ctxt); +} + +/** + * xmlNsListDumpOutputCtxt + * @ctxt: the save context + * @cur: the first namespace + * + * Dump a list of local namespace definitions to a save context. + * Should be called in the context of attribute dumps. + */ +static void +xmlNsListDumpOutputCtxt(xmlSaveCtxtPtr ctxt, xmlNsPtr cur) { + while (cur != NULL) { + xmlNsDumpOutput(ctxt->buf, cur, ctxt); + cur = cur->next; } } @@ -503,7 +691,7 @@ void xmlNsListDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur) { while (cur != NULL) { - xmlNsDumpOutput(buf, cur); + xmlNsDumpOutput(buf, cur, NULL); cur = cur->next; } } @@ -512,7 +700,7 @@ * xmlDtdDumpOutput: * @buf: the XML buffer output * @dtd: the pointer to the DTD - * + * * Dump the XML document DTD, if any. */ static void @@ -529,12 +717,12 @@ xmlOutputBufferWriteString(buf, (const char *)dtd->name); if (dtd->ExternalID != NULL) { xmlOutputBufferWrite(buf, 8, " PUBLIC "); - xmlBufferWriteQuotedString(buf->buffer, dtd->ExternalID); + xmlBufWriteQuotedString(buf->buffer, dtd->ExternalID); xmlOutputBufferWrite(buf, 1, " "); - xmlBufferWriteQuotedString(buf->buffer, dtd->SystemID); + xmlBufWriteQuotedString(buf->buffer, dtd->SystemID); } else if (dtd->SystemID != NULL) { xmlOutputBufferWrite(buf, 8, " SYSTEM "); - xmlBufferWriteQuotedString(buf->buffer, dtd->SystemID); + xmlBufWriteQuotedString(buf->buffer, dtd->SystemID); } if ((dtd->entities == NULL) && (dtd->elements == NULL) && (dtd->attributes == NULL) && (dtd->notations == NULL) && @@ -549,7 +737,8 @@ */ if ((dtd->notations != NULL) && ((dtd->doc == NULL) || (dtd->doc->intSubset == dtd))) { - xmlDumpNotationTable(buf->buffer, (xmlNotationTablePtr) dtd->notations); + xmlBufDumpNotationTable(buf->buffer, + (xmlNotationTablePtr) dtd->notations); } format = ctxt->format; level = ctxt->level; @@ -578,7 +767,10 @@ if (cur == NULL) return; buf = ctxt->buf; if (buf == NULL) return; - xmlOutputBufferWrite(buf, 1, " "); + if (ctxt->format == 2) + xmlOutputBufferWriteWSNonSig(ctxt, 2); + else + xmlOutputBufferWrite(buf, 1, " "); if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) { xmlOutputBufferWriteString(buf, (const char *)cur->ns->prefix); xmlOutputBufferWrite(buf, 1, ":"); @@ -622,20 +814,82 @@ if (cur == NULL) return; buf = ctxt->buf; while (cur != NULL) { - if ((ctxt->format) && (xmlIndentTreeOutput) && - (cur->type == XML_ELEMENT_NODE)) + if ((ctxt->format == 1) && (xmlIndentTreeOutput) && + ((cur->type == XML_ELEMENT_NODE) || + (cur->type == XML_COMMENT_NODE) || + (cur->type == XML_PI_NODE))) xmlOutputBufferWrite(buf, ctxt->indent_size * - (ctxt->level > ctxt->indent_nr ? + (ctxt->level > ctxt->indent_nr ? ctxt->indent_nr : ctxt->level), ctxt->indent); xmlNodeDumpOutputInternal(ctxt, cur); - if (ctxt->format) { + if (ctxt->format == 1) { xmlOutputBufferWrite(buf, 1, "\n"); } cur = cur->next; } } +#ifdef LIBXML_HTML_ENABLED +/** + * xmlNodeDumpOutputInternal: + * @cur: the current node + * + * Dump an HTML node, recursive behaviour, children are printed too. + */ +static int +htmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { + const xmlChar *oldenc = NULL; + const xmlChar *oldctxtenc = ctxt->encoding; + const xmlChar *encoding = ctxt->encoding; + xmlOutputBufferPtr buf = ctxt->buf; + int switched_encoding = 0; + xmlDocPtr doc; + + xmlInitParser(); + + doc = cur->doc; + if (doc != NULL) { + oldenc = doc->encoding; + if (ctxt->encoding != NULL) { + doc->encoding = BAD_CAST ctxt->encoding; + } else if (doc->encoding != NULL) { + encoding = doc->encoding; + } + } + + if ((encoding != NULL) && (doc != NULL)) + htmlSetMetaEncoding(doc, (const xmlChar *) encoding); + if ((encoding == NULL) && (doc != NULL)) + encoding = htmlGetMetaEncoding(doc); + if (encoding == NULL) + encoding = BAD_CAST "HTML"; + if ((encoding != NULL) && (oldctxtenc == NULL) && + (buf->encoder == NULL) && (buf->conv == NULL)) { + if (xmlSaveSwitchEncoding(ctxt, (const char*) encoding) < 0) { + doc->encoding = oldenc; + return(-1); + } + switched_encoding = 1; + } + if (ctxt->options & XML_SAVE_FORMAT) + htmlNodeDumpFormatOutput(buf, doc, cur, + (const char *)encoding, 1); + else + htmlNodeDumpFormatOutput(buf, doc, cur, + (const char *)encoding, 0); + /* + * Restore the state of the saving context at the end of the document + */ + if ((switched_encoding) && (oldctxtenc == NULL)) { + xmlSaveClearEncoding(ctxt); + } + if (doc != NULL) + doc->encoding = oldenc; + return(0); +} +#endif + /** * xmlNodeDumpOutputInternal: * @cur: the current node @@ -660,6 +914,19 @@ xmlDocContentDumpOutput(ctxt, (xmlDocPtr) cur); return; } +#ifdef LIBXML_HTML_ENABLED + if (ctxt->options & XML_SAVE_XHTML) { + xhtmlNodeDumpOutput(ctxt, cur); + return; + } + if (((cur->type != XML_NAMESPACE_DECL) && (cur->doc != NULL) && + (cur->doc->type == XML_HTML_DOCUMENT_NODE) && + ((ctxt->options & XML_SAVE_AS_XML) == 0)) || + (ctxt->options & XML_SAVE_AS_HTML)) { + htmlNodeDumpOutputInternal(ctxt, cur); + return; + } +#endif if (cur->type == XML_DTD_NODE) { xmlDtdDumpOutput(ctxt, (xmlDtdPtr) cur); return; @@ -669,15 +936,15 @@ return; } if (cur->type == XML_ELEMENT_DECL) { - xmlDumpElementDecl(buf->buffer, (xmlElementPtr) cur); + xmlBufDumpElementDecl(buf->buffer, (xmlElementPtr) cur); return; } if (cur->type == XML_ATTRIBUTE_DECL) { - xmlDumpAttributeDecl(buf->buffer, (xmlAttributePtr) cur); + xmlBufDumpAttributeDecl(buf->buffer, (xmlAttributePtr) cur); return; } if (cur->type == XML_ENTITY_DECL) { - xmlDumpEntityDecl(buf->buffer, (xmlEntityPtr) cur); + xmlBufDumpEntityDecl(buf->buffer, (xmlEntityPtr) cur); return; } if (cur->type == XML_TEXT_NODE) { @@ -699,13 +966,18 @@ xmlOutputBufferWrite(buf, 2, "name); if (cur->content != NULL) { - xmlOutputBufferWrite(buf, 1, " "); + if (ctxt->format == 2) + xmlOutputBufferWriteWSNonSig(ctxt, 0); + else + xmlOutputBufferWrite(buf, 1, " "); xmlOutputBufferWriteString(buf, (const char *)cur->content); } xmlOutputBufferWrite(buf, 2, "?>"); } else { xmlOutputBufferWrite(buf, 2, "name); + if (ctxt->format == 2) + xmlOutputBufferWriteWSNonSig(ctxt, 0); xmlOutputBufferWrite(buf, 2, "?>"); } return; @@ -725,8 +997,8 @@ return; } if (cur->type == XML_CDATA_SECTION_NODE) { - if (cur->content == NULL) { - xmlOutputBufferWrite(buf, 12, ""); + if (cur->content == NULL || *cur->content == '\0') { + xmlOutputBufferWrite(buf, 12, ""); } else { start = end = cur->content; while (*end != '\0') { @@ -753,7 +1025,7 @@ return; } if (cur->type == XML_NAMESPACE_DECL) { - xmlNsDumpOutput(buf, (xmlNsPtr) cur); + xmlNsDumpOutputCtxt(ctxt, (xmlNsPtr) cur); return; } @@ -778,28 +1050,32 @@ xmlOutputBufferWriteString(buf, (const char *)cur->name); if (cur->nsDef) - xmlNsListDumpOutput(buf, cur->nsDef); + xmlNsListDumpOutputCtxt(ctxt, cur->nsDef); if (cur->properties != NULL) xmlAttrListDumpOutput(ctxt, cur->properties); if (((cur->type == XML_ELEMENT_NODE) || (cur->content == NULL)) && (cur->children == NULL) && ((ctxt->options & XML_SAVE_NO_EMPTY) == 0)) { + if (ctxt->format == 2) + xmlOutputBufferWriteWSNonSig(ctxt, 0); xmlOutputBufferWrite(buf, 2, "/>"); ctxt->format = format; return; } + if (ctxt->format == 2) + xmlOutputBufferWriteWSNonSig(ctxt, 1); xmlOutputBufferWrite(buf, 1, ">"); if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) { xmlOutputBufferWriteEscape(buf, cur->content, ctxt->escape); } if (cur->children != NULL) { - if (ctxt->format) xmlOutputBufferWrite(buf, 1, "\n"); + if (ctxt->format == 1) xmlOutputBufferWrite(buf, 1, "\n"); if (ctxt->level >= 0) ctxt->level++; xmlNodeListDumpOutput(ctxt, cur->children); if (ctxt->level > 0) ctxt->level--; - if ((xmlIndentTreeOutput) && (ctxt->format)) + if ((xmlIndentTreeOutput) && (ctxt->format == 1)) xmlOutputBufferWrite(buf, ctxt->indent_size * - (ctxt->level > ctxt->indent_nr ? + (ctxt->level > ctxt->indent_nr ? ctxt->indent_nr : ctxt->level), ctxt->indent); } @@ -810,6 +1086,8 @@ } xmlOutputBufferWriteString(buf, (const char *)cur->name); + if (ctxt->format == 2) + xmlOutputBufferWriteWSNonSig(ctxt, 0); xmlOutputBufferWrite(buf, 1, ">"); ctxt->format = format; } @@ -832,11 +1110,15 @@ xmlCharEncodingOutputFunc oldescape = ctxt->escape; xmlCharEncodingOutputFunc oldescapeAttr = ctxt->escapeAttr; xmlOutputBufferPtr buf = ctxt->buf; - xmlCharEncodingHandlerPtr handler = NULL; xmlCharEncoding enc; + int switched_encoding = 0; xmlInitParser(); + if ((cur->type != XML_HTML_DOCUMENT_NODE) && + (cur->type != XML_DOCUMENT_NODE)) + return(-1); + if (ctxt->encoding != NULL) { cur->encoding = BAD_CAST ctxt->encoding; } else if (cur->encoding != NULL) { @@ -846,110 +1128,125 @@ xmlGetCharEncodingName((xmlCharEncoding) cur->charset); } - enc = xmlParseCharEncoding((const char*) encoding); - if ((encoding != NULL) && (oldctxtenc == NULL) && - (buf->encoder == NULL) && (buf->conv == NULL) && - ((ctxt->options & XML_SAVE_NO_DECL) == 0)) { - if ((enc != XML_CHAR_ENCODING_UTF8) && - (enc != XML_CHAR_ENCODING_NONE) && - (enc != XML_CHAR_ENCODING_ASCII)) { - /* - * we need to switch to this encoding but just for this document - * since we output the XMLDecl the conversion must be done to not - * generate not well formed documents. - */ - buf->encoder = xmlFindCharEncodingHandler((const char *)encoding); - if (buf->encoder == NULL) { - xmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, - (const char *)encoding); + if (((cur->type == XML_HTML_DOCUMENT_NODE) && + ((ctxt->options & XML_SAVE_AS_XML) == 0) && + ((ctxt->options & XML_SAVE_XHTML) == 0)) || + (ctxt->options & XML_SAVE_AS_HTML)) { +#ifdef LIBXML_HTML_ENABLED + if (encoding != NULL) + htmlSetMetaEncoding(cur, (const xmlChar *) encoding); + if (encoding == NULL) + encoding = htmlGetMetaEncoding(cur); + if (encoding == NULL) + encoding = BAD_CAST "HTML"; + if ((encoding != NULL) && (oldctxtenc == NULL) && + (buf->encoder == NULL) && (buf->conv == NULL)) { + if (xmlSaveSwitchEncoding(ctxt, (const char*) encoding) < 0) { + cur->encoding = oldenc; return(-1); } - buf->conv = xmlBufferCreate(); - if (buf->conv == NULL) { - xmlCharEncCloseFunc(buf->encoder); - xmlSaveErrMemory("creating encoding buffer"); - return(-1); + } + if (ctxt->options & XML_SAVE_FORMAT) + htmlDocContentDumpFormatOutput(buf, cur, + (const char *)encoding, 1); + else + htmlDocContentDumpFormatOutput(buf, cur, + (const char *)encoding, 0); + if (ctxt->encoding != NULL) + cur->encoding = oldenc; + return(0); +#else + return(-1); +#endif + } else if ((cur->type == XML_DOCUMENT_NODE) || + (ctxt->options & XML_SAVE_AS_XML) || + (ctxt->options & XML_SAVE_XHTML)) { + enc = xmlParseCharEncoding((const char*) encoding); + if ((encoding != NULL) && (oldctxtenc == NULL) && + (buf->encoder == NULL) && (buf->conv == NULL) && + ((ctxt->options & XML_SAVE_NO_DECL) == 0)) { + if ((enc != XML_CHAR_ENCODING_UTF8) && + (enc != XML_CHAR_ENCODING_NONE) && + (enc != XML_CHAR_ENCODING_ASCII)) { + /* + * we need to switch to this encoding but just for this + * document since we output the XMLDecl the conversion + * must be done to not generate not well formed documents. + */ + if (xmlSaveSwitchEncoding(ctxt, (const char*) encoding) < 0) { + cur->encoding = oldenc; + return(-1); + } + switched_encoding = 1; } - /* - * initialize the state, e.g. if outputting a BOM - */ - xmlCharEncOutFunc(buf->encoder, buf->conv, NULL); + if (ctxt->escape == xmlEscapeEntities) + ctxt->escape = NULL; + if (ctxt->escapeAttr == xmlEscapeEntities) + ctxt->escapeAttr = NULL; } - if (ctxt->escape == xmlEscapeEntities) - ctxt->escape = NULL; - if (ctxt->escapeAttr == xmlEscapeEntities) - ctxt->escapeAttr = NULL; - } - /* - * Save the XML declaration - */ - if ((ctxt->options & XML_SAVE_NO_DECL) == 0) { - xmlOutputBufferWrite(buf, 14, "version != NULL) - xmlBufferWriteQuotedString(buf->buffer, cur->version); - else - xmlOutputBufferWrite(buf, 5, "\"1.0\""); - if (encoding != NULL) { - xmlOutputBufferWrite(buf, 10, " encoding="); - xmlBufferWriteQuotedString(buf->buffer, (xmlChar *) encoding); - } - switch (cur->standalone) { - case 0: - xmlOutputBufferWrite(buf, 16, " standalone=\"no\""); - break; - case 1: - xmlOutputBufferWrite(buf, 17, " standalone=\"yes\""); - break; + /* + * Save the XML declaration + */ + if ((ctxt->options & XML_SAVE_NO_DECL) == 0) { + xmlOutputBufferWrite(buf, 14, "version != NULL) + xmlBufWriteQuotedString(buf->buffer, cur->version); + else + xmlOutputBufferWrite(buf, 5, "\"1.0\""); + if (encoding != NULL) { + xmlOutputBufferWrite(buf, 10, " encoding="); + xmlBufWriteQuotedString(buf->buffer, (xmlChar *) encoding); + } + switch (cur->standalone) { + case 0: + xmlOutputBufferWrite(buf, 16, " standalone=\"no\""); + break; + case 1: + xmlOutputBufferWrite(buf, 17, " standalone=\"yes\""); + break; + } + xmlOutputBufferWrite(buf, 3, "?>\n"); } - xmlOutputBufferWrite(buf, 3, "?>\n"); - } #ifdef LIBXML_HTML_ENABLED - if ((ctxt->options & XML_SAVE_NO_XHTML) == 0) { - dtd = xmlGetIntSubset(cur); - if (dtd != NULL) { - is_xhtml = xmlIsXHTML(dtd->SystemID, dtd->ExternalID); - if (is_xhtml < 0) is_xhtml = 0; + if (ctxt->options & XML_SAVE_XHTML) + is_xhtml = 1; + if ((ctxt->options & XML_SAVE_NO_XHTML) == 0) { + dtd = xmlGetIntSubset(cur); + if (dtd != NULL) { + is_xhtml = xmlIsXHTML(dtd->SystemID, dtd->ExternalID); + if (is_xhtml < 0) is_xhtml = 0; + } } - } #endif - if (cur->children != NULL) { - xmlNodePtr child = cur->children; + if (cur->children != NULL) { + xmlNodePtr child = cur->children; - while (child != NULL) { - ctxt->level = 0; + while (child != NULL) { + ctxt->level = 0; #ifdef LIBXML_HTML_ENABLED - if (is_xhtml) - xhtmlNodeDumpOutput(ctxt, child); - else + if (is_xhtml) + xhtmlNodeDumpOutput(ctxt, child); + else #endif - xmlNodeDumpOutputInternal(ctxt, child); - xmlOutputBufferWrite(buf, 1, "\n"); - child = child->next; + xmlNodeDumpOutputInternal(ctxt, child); + xmlOutputBufferWrite(buf, 1, "\n"); + child = child->next; + } } } - if (ctxt->encoding != NULL) - cur->encoding = oldenc; - + /* * Restore the state of the saving context at the end of the document */ - if ((encoding != NULL) && (oldctxtenc == NULL) && - ((ctxt->options & XML_SAVE_NO_DECL) == 0)) { - if ((enc != XML_CHAR_ENCODING_UTF8) && - (enc != XML_CHAR_ENCODING_NONE) && - (enc != XML_CHAR_ENCODING_ASCII)) { - xmlOutputBufferFlush(buf); - xmlCharEncCloseFunc(buf->encoder); - xmlBufferFree(buf->conv); - buf->encoder = NULL; - buf->conv = NULL; - } + if ((switched_encoding) && (oldctxtenc == NULL)) { + xmlSaveClearEncoding(ctxt); ctxt->escape = oldescape; ctxt->escapeAttr = oldescapeAttr; } + cur->encoding = oldenc; return(0); } @@ -1058,7 +1355,7 @@ if ((cur->ns != NULL) && (xmlStrEqual(cur->name, BAD_CAST "lang")) && (xmlStrEqual(cur->ns->prefix, BAD_CAST "xml"))) xml_lang = cur; - else if ((cur->ns == NULL) && + else if ((cur->ns == NULL) && ((cur->children == NULL) || (cur->children->content == NULL) || (cur->children->content[0] == 0)) && @@ -1098,7 +1395,7 @@ xmlOutputBufferWrite(buf, 11, " xml:lang=\""); xmlAttrSerializeContent(buf, lang); xmlOutputBufferWrite(buf, 1, "\""); - } else + } else if ((xml_lang != NULL) && (lang == NULL)) { xmlOutputBufferWrite(buf, 7, " lang=\""); xmlAttrSerializeContent(buf, xml_lang); @@ -1126,14 +1423,14 @@ if (cur == NULL) return; buf = ctxt->buf; while (cur != NULL) { - if ((ctxt->format) && (xmlIndentTreeOutput) && + if ((ctxt->format == 1) && (xmlIndentTreeOutput) && (cur->type == XML_ELEMENT_NODE)) xmlOutputBufferWrite(buf, ctxt->indent_size * - (ctxt->level > ctxt->indent_nr ? + (ctxt->level > ctxt->indent_nr ? ctxt->indent_nr : ctxt->level), ctxt->indent); xhtmlNodeDumpOutput(ctxt, cur); - if (ctxt->format) { + if (ctxt->format == 1) { xmlOutputBufferWrite(buf, 1, "\n"); } cur = cur->next; @@ -1168,6 +1465,10 @@ return; if (cur->type == XML_XINCLUDE_END) return; + if (cur->type == XML_NAMESPACE_DECL) { + xmlNsDumpOutputCtxt(ctxt, (xmlNsPtr) cur); + return; + } if (cur->type == XML_DTD_NODE) { xmlDtdDumpOutput(ctxt, (xmlDtdPtr) cur); return; @@ -1178,15 +1479,15 @@ } buf = ctxt->buf; if (cur->type == XML_ELEMENT_DECL) { - xmlDumpElementDecl(buf->buffer, (xmlElementPtr) cur); + xmlBufDumpElementDecl(buf->buffer, (xmlElementPtr) cur); return; } if (cur->type == XML_ATTRIBUTE_DECL) { - xmlDumpAttributeDecl(buf->buffer, (xmlAttributePtr) cur); + xmlBufDumpAttributeDecl(buf->buffer, (xmlAttributePtr) cur); return; } if (cur->type == XML_ENTITY_DECL) { - xmlDumpEntityDecl(buf->buffer, (xmlEntityPtr) cur); + xmlBufDumpEntityDecl(buf->buffer, (xmlEntityPtr) cur); return; } if (cur->type == XML_TEXT_NODE) { @@ -1235,30 +1536,38 @@ return; } if (cur->type == XML_CDATA_SECTION_NODE) { - start = end = cur->content; - while (*end != '\0') { - if (*end == ']' && *(end + 1) == ']' && *(end + 2) == '>') { - end = end + 2; + if (cur->content == NULL || *cur->content == '\0') { + xmlOutputBufferWrite(buf, 12, ""); + } else { + start = end = cur->content; + while (*end != '\0') { + if (*end == ']' && *(end + 1) == ']' && *(end + 2) == '>') { + end = end + 2; + xmlOutputBufferWrite(buf, 9, ""); + start = end; + } + end++; + } + if (start != end) { xmlOutputBufferWrite(buf, 9, ""); - start = end; } - end++; - } - if (start != end) { - xmlOutputBufferWrite(buf, 9, ""); } return; } + if (cur->type == XML_ATTRIBUTE_NODE) { + xmlAttrDumpOutput(ctxt, (xmlAttrPtr) cur); + return; + } format = ctxt->format; if (format == 1) { tmp = cur->children; while (tmp != NULL) { - if ((tmp->type == XML_TEXT_NODE) || + if ((tmp->type == XML_TEXT_NODE) || (tmp->type == XML_ENTITY_REF_NODE)) { format = 0; break; @@ -1274,7 +1583,7 @@ xmlOutputBufferWriteString(buf, (const char *)cur->name); if (cur->nsDef) - xmlNsListDumpOutput(buf, cur->nsDef); + xmlNsListDumpOutputCtxt(ctxt, cur->nsDef); if ((xmlStrEqual(cur->name, BAD_CAST "html") && (cur->ns == NULL) && (cur->nsDef == NULL))) { /* @@ -1286,10 +1595,10 @@ if (cur->properties != NULL) xhtmlAttrListDumpOutput(ctxt, cur->properties); - if ((cur->type == XML_ELEMENT_NODE) && - (cur->parent != NULL) && - (cur->parent->parent == (xmlNodePtr) cur->doc) && - xmlStrEqual(cur->name, BAD_CAST"head") && + if ((cur->type == XML_ELEMENT_NODE) && + (cur->parent != NULL) && + (cur->parent->parent == (xmlNodePtr) cur->doc) && + xmlStrEqual(cur->name, BAD_CAST"head") && xmlStrEqual(cur->parent->name, BAD_CAST"html")) { tmp = cur->children; @@ -1322,11 +1631,11 @@ } else { if (addmeta == 1) { xmlOutputBufferWrite(buf, 1, ">"); - if (ctxt->format) { + if (ctxt->format == 1) { xmlOutputBufferWrite(buf, 1, "\n"); if (xmlIndentTreeOutput) xmlOutputBufferWrite(buf, ctxt->indent_size * - (ctxt->level + 1 > ctxt->indent_nr ? + (ctxt->level + 1 > ctxt->indent_nr ? ctxt->indent_nr : ctxt->level + 1), ctxt->indent); } xmlOutputBufferWriteString(buf, @@ -1337,7 +1646,7 @@ xmlOutputBufferWrite(buf, 5, "UTF-8"); } xmlOutputBufferWrite(buf, 4, "\" />"); - if (ctxt->format) + if (ctxt->format == 1) xmlOutputBufferWrite(buf, 1, "\n"); } else { xmlOutputBufferWrite(buf, 1, ">"); @@ -1357,11 +1666,11 @@ } xmlOutputBufferWrite(buf, 1, ">"); if (addmeta == 1) { - if (ctxt->format) { + if (ctxt->format == 1) { xmlOutputBufferWrite(buf, 1, "\n"); if (xmlIndentTreeOutput) xmlOutputBufferWrite(buf, ctxt->indent_size * - (ctxt->level + 1 > ctxt->indent_nr ? + (ctxt->level + 1 > ctxt->indent_nr ? ctxt->indent_nr : ctxt->level + 1), ctxt->indent); } xmlOutputBufferWriteString(buf, @@ -1451,16 +1760,16 @@ if (cur->children != NULL) { int indent = ctxt->format; - - if (format) xmlOutputBufferWrite(buf, 1, "\n"); + + if (format == 1) xmlOutputBufferWrite(buf, 1, "\n"); if (ctxt->level >= 0) ctxt->level++; ctxt->format = format; xhtmlNodeListDumpOutput(ctxt, cur->children); if (ctxt->level > 0) ctxt->level--; ctxt->format = indent; - if ((xmlIndentTreeOutput) && (format)) + if ((xmlIndentTreeOutput) && (format == 1)) xmlOutputBufferWrite(buf, ctxt->indent_size * - (ctxt->level > ctxt->indent_nr ? + (ctxt->level > ctxt->indent_nr ? ctxt->indent_nr : ctxt->level), ctxt->indent); } @@ -1726,18 +2035,19 @@ * Public entry points based on buffers * * * ************************************************************************/ + /** - * xmlAttrSerializeTxtContent: - * @buf: the XML buffer output + * xmlBufAttrSerializeTxtContent: + * @buf: and xmlBufPtr output * @doc: the document * @attr: the attribute node * @string: the text content * - * Serialize text attribute values to an xml simple buffer + * Serialize text attribute values to an xmlBufPtr */ void -xmlAttrSerializeTxtContent(xmlBufferPtr buf, xmlDocPtr doc, - xmlAttrPtr attr, const xmlChar * string) +xmlBufAttrSerializeTxtContent(xmlBufPtr buf, xmlDocPtr doc, + xmlAttrPtr attr, const xmlChar * string) { xmlChar *base, *cur; @@ -1747,44 +2057,44 @@ while (*cur != 0) { if (*cur == '\n') { if (base != cur) - xmlBufferAdd(buf, base, cur - base); - xmlBufferAdd(buf, BAD_CAST " ", 5); + xmlBufAdd(buf, base, cur - base); + xmlBufAdd(buf, BAD_CAST " ", 5); cur++; base = cur; } else if (*cur == '\r') { if (base != cur) - xmlBufferAdd(buf, base, cur - base); - xmlBufferAdd(buf, BAD_CAST " ", 5); + xmlBufAdd(buf, base, cur - base); + xmlBufAdd(buf, BAD_CAST " ", 5); cur++; base = cur; } else if (*cur == '\t') { if (base != cur) - xmlBufferAdd(buf, base, cur - base); - xmlBufferAdd(buf, BAD_CAST " ", 4); + xmlBufAdd(buf, base, cur - base); + xmlBufAdd(buf, BAD_CAST " ", 4); cur++; base = cur; } else if (*cur == '"') { if (base != cur) - xmlBufferAdd(buf, base, cur - base); - xmlBufferAdd(buf, BAD_CAST """, 6); + xmlBufAdd(buf, base, cur - base); + xmlBufAdd(buf, BAD_CAST """, 6); cur++; base = cur; } else if (*cur == '<') { if (base != cur) - xmlBufferAdd(buf, base, cur - base); - xmlBufferAdd(buf, BAD_CAST "<", 4); + xmlBufAdd(buf, base, cur - base); + xmlBufAdd(buf, BAD_CAST "<", 4); cur++; base = cur; } else if (*cur == '>') { if (base != cur) - xmlBufferAdd(buf, base, cur - base); - xmlBufferAdd(buf, BAD_CAST ">", 4); + xmlBufAdd(buf, base, cur - base); + xmlBufAdd(buf, BAD_CAST ">", 4); cur++; base = cur; } else if (*cur == '&') { if (base != cur) - xmlBufferAdd(buf, base, cur - base); - xmlBufferAdd(buf, BAD_CAST "&", 5); + xmlBufAdd(buf, base, cur - base); + xmlBufAdd(buf, BAD_CAST "&", 5); cur++; base = cur; } else if ((*cur >= 0x80) && ((doc == NULL) || @@ -1792,17 +2102,17 @@ /* * We assume we have UTF-8 content. */ - unsigned char tmp[10]; + unsigned char tmp[12]; int val = 0, l = 1; if (base != cur) - xmlBufferAdd(buf, base, cur - base); + xmlBufAdd(buf, base, cur - base); if (*cur < 0xC0) { xmlSaveErr(XML_SAVE_NOT_UTF8, (xmlNodePtr) attr, NULL); if (doc != NULL) doc->encoding = xmlStrdup(BAD_CAST "ISO-8859-1"); xmlSerializeHexCharRef(tmp, *cur); - xmlBufferAdd(buf, (xmlChar *) tmp, -1); + xmlBufAdd(buf, (xmlChar *) tmp, -1); cur++; base = cur; continue; @@ -1832,9 +2142,9 @@ xmlSaveErr(XML_SAVE_CHAR_INVALID, (xmlNodePtr) attr, NULL); if (doc != NULL) doc->encoding = xmlStrdup(BAD_CAST "ISO-8859-1"); - + xmlSerializeHexCharRef(tmp, *cur); - xmlBufferAdd(buf, (xmlChar *) tmp, -1); + xmlBufAdd(buf, (xmlChar *) tmp, -1); cur++; base = cur; continue; @@ -1844,7 +2154,7 @@ * as a char ref */ xmlSerializeHexCharRef(tmp, val); - xmlBufferAdd(buf, (xmlChar *) tmp, -1); + xmlBufAdd(buf, (xmlChar *) tmp, -1); cur += l; base = cur; } else { @@ -1852,7 +2162,31 @@ } } if (base != cur) - xmlBufferAdd(buf, base, cur - base); + xmlBufAdd(buf, base, cur - base); +} + +/** + * xmlAttrSerializeTxtContent: + * @buf: the XML buffer output + * @doc: the document + * @attr: the attribute node + * @string: the text content + * + * Serialize text attribute values to an xml simple buffer + */ +void +xmlAttrSerializeTxtContent(xmlBufferPtr buf, xmlDocPtr doc, + xmlAttrPtr attr, const xmlChar * string) +{ + xmlBufPtr buffer; + + if ((buf == NULL) || (string == NULL)) + return; + buffer = xmlBufFromBuffer(buf); + if (buffer == NULL) + return; + xmlBufAttrSerializeTxtContent(buffer, doc, attr, string); + xmlBufBackToBuffer(buffer); } /** @@ -1866,6 +2200,8 @@ * Dump an XML node, recursive behaviour,children are printed too. * Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 * or xmlKeepBlanksDefault(0) was called + * Since this is using xmlBuffer structures it is limited to 2GB and somehow + * deprecated, use xmlBufNodeDump() instead. * * Returns the number of bytes written to the buffer or -1 in case of error */ @@ -1873,9 +2209,45 @@ xmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level, int format) { - unsigned int use; + xmlBufPtr buffer; + int ret; + + if ((buf == NULL) || (cur == NULL)) + return(-1); + buffer = xmlBufFromBuffer(buf); + if (buffer == NULL) + return(-1); + ret = xmlBufNodeDump(buffer, doc, cur, level, format); + xmlBufBackToBuffer(buffer); + if (ret > INT_MAX) + return(-1); + return((int) ret); +} + +/** + * xmlBufNodeDump: + * @buf: the XML buffer output + * @doc: the document + * @cur: the current node + * @level: the imbrication level for indenting + * @format: is formatting allowed + * + * Dump an XML node, recursive behaviour,children are printed too. + * Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 + * or xmlKeepBlanksDefault(0) was called + * + * Returns the number of bytes written to the buffer, in case of error 0 + * is returned or @buf stores the error + */ + +size_t +xmlBufNodeDump(xmlBufPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level, + int format) +{ + size_t use; int ret; xmlOutputBufferPtr outbuf; + int oldalloc; xmlInitParser(); @@ -1906,10 +2278,13 @@ outbuf->context = NULL; outbuf->written = 0; - use = buf->use; + use = xmlBufUse(buf); + oldalloc = xmlBufGetAllocationScheme(buf); + xmlBufSetAllocationScheme(buf, XML_BUFFER_ALLOC_DOUBLEIT); xmlNodeDumpOutput(outbuf, doc, cur, level, format, NULL); + xmlBufSetAllocationScheme(buf, oldalloc); xmlFree(outbuf); - ret = buf->use - use; + ret = xmlBufUse(buf) - use; return (ret); } @@ -1996,9 +2371,10 @@ ctxt.doc = doc; ctxt.buf = buf; ctxt.level = level; - ctxt.format = format; + ctxt.format = format ? 1 : 0; ctxt.encoding = (const xmlChar *) encoding; xmlSaveCtxtInit(&ctxt); + ctxt.options |= XML_SAVE_AS_XML; #ifdef LIBXML_HTML_ENABLED dtd = xmlGetIntSubset(doc); @@ -2081,17 +2457,18 @@ ctxt.doc = out_doc; ctxt.buf = out_buff; ctxt.level = 0; - ctxt.format = format; + ctxt.format = format ? 1 : 0; ctxt.encoding = (const xmlChar *) txt_encoding; xmlSaveCtxtInit(&ctxt); + ctxt.options |= XML_SAVE_AS_XML; xmlDocContentDumpOutput(&ctxt, out_doc); xmlOutputBufferFlush(out_buff); if (out_buff->conv != NULL) { - *doc_txt_len = out_buff->conv->use; - *doc_txt_ptr = xmlStrndup(out_buff->conv->content, *doc_txt_len); + *doc_txt_len = xmlBufUse(out_buff->conv); + *doc_txt_ptr = xmlStrndup(xmlBufContent(out_buff->conv), *doc_txt_len); } else { - *doc_txt_len = out_buff->buffer->use; - *doc_txt_ptr = xmlStrndup(out_buff->buffer->content, *doc_txt_len); + *doc_txt_len = xmlBufUse(out_buff->buffer); + *doc_txt_ptr = xmlStrndup(xmlBufContent(out_buff->buffer),*doc_txt_len); } (void)xmlOutputBufferClose(out_buff); @@ -2186,21 +2563,23 @@ encoding = (const char *) cur->encoding; if (encoding != NULL) { - handler = xmlFindCharEncodingHandler(encoding); - if (handler == NULL) { - xmlFree((char *) cur->encoding); - cur->encoding = NULL; - } + handler = xmlFindCharEncodingHandler(encoding); + if (handler == NULL) { + xmlFree((char *) cur->encoding); + cur->encoding = NULL; + encoding = NULL; } + } buf = xmlOutputBufferCreateFile(f, handler); if (buf == NULL) return(-1); memset(&ctxt, 0, sizeof(ctxt)); ctxt.doc = cur; ctxt.buf = buf; ctxt.level = 0; - ctxt.format = format; + ctxt.format = format ? 1 : 0; ctxt.encoding = (const xmlChar *) encoding; xmlSaveCtxtInit(&ctxt); + ctxt.options |= XML_SAVE_AS_XML; xmlDocContentDumpOutput(&ctxt, cur); ret = xmlOutputBufferClose(buf); @@ -2250,6 +2629,7 @@ ctxt.format = 0; ctxt.encoding = (const xmlChar *) encoding; xmlSaveCtxtInit(&ctxt); + ctxt.options |= XML_SAVE_AS_XML; xmlDocContentDumpOutput(&ctxt, cur); ret = xmlOutputBufferClose(buf); return(ret); @@ -2286,9 +2666,10 @@ ctxt.doc = cur; ctxt.buf = buf; ctxt.level = 0; - ctxt.format = format; + ctxt.format = format ? 1 : 0; ctxt.encoding = (const xmlChar *) encoding; xmlSaveCtxtInit(&ctxt); + ctxt.options |= XML_SAVE_AS_XML; xmlDocContentDumpOutput(&ctxt, cur); ret = xmlOutputBufferClose(buf); return (ret); @@ -2331,7 +2712,7 @@ #ifdef HAVE_ZLIB_H if (cur->compression < 0) cur->compression = xmlGetCompressMode(); #endif - /* + /* * save the content to a temp buffer. */ buf = xmlOutputBufferCreateFilename(filename, handler, cur->compression); @@ -2340,9 +2721,10 @@ ctxt.doc = cur; ctxt.buf = buf; ctxt.level = 0; - ctxt.format = format; + ctxt.format = format ? 1 : 0; ctxt.encoding = (const xmlChar *) encoding; xmlSaveCtxtInit(&ctxt); + ctxt.options |= XML_SAVE_AS_XML; xmlDocContentDumpOutput(&ctxt, cur); diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlsave.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlsave.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlsave.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlsave.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -30,7 +30,11 @@ XML_SAVE_FORMAT = 1<<0, /* format save output */ XML_SAVE_NO_DECL = 1<<1, /* drop the xml declaration */ XML_SAVE_NO_EMPTY = 1<<2, /* no empty tags */ - XML_SAVE_NO_XHTML = 1<<3 /* disable XHTML1 specific rules */ + XML_SAVE_NO_XHTML = 1<<3, /* disable XHTML1 specific rules */ + XML_SAVE_XHTML = 1<<4, /* force XHTML1 specific rules */ + XML_SAVE_AS_XML = 1<<5, /* force XML serialization on HTML doc */ + XML_SAVE_AS_HTML = 1<<6, /* force HTML serialization on XML doc */ + XML_SAVE_WSNONSIG = 1<<7 /* format with non-significant whitespace */ } xmlSaveOption; diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlschemas.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlschemas.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlschemas.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlschemas.c 2015-12-23 07:08:27.000000000 +0000 @@ -90,7 +90,7 @@ #ifndef DEBUG_IDC_NODE_TABLE #define DEBUG_IDC_NODE_TABLE #endif -#endif +#endif /* #define ENABLE_PARTICLE_RESTRICTION 1 */ @@ -107,7 +107,7 @@ #endif #define UNBOUNDED (1 << 30) -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); @@ -374,7 +374,7 @@ #define XML_SCHEMA_SCHEMA_REDEFINE 3 /** - * xmlSchemaSchemaRelation: + * xmlSchemaSchemaRelation: * * Used to create a graph of schema relationships. */ @@ -402,12 +402,12 @@ int parsed; int imported; int preserveDoc; - xmlSchemaItemListPtr globals; /* Global components. */ + xmlSchemaItemListPtr globals; /* Global components. */ xmlSchemaItemListPtr locals; /* Local components. */ }; /** - * xmlSchemaImport: + * xmlSchemaImport: * (extends xmlSchemaBucket) * * Reflects a schema. Holds some information @@ -422,9 +422,9 @@ const xmlChar *schemaLocation; /* The URI of the schema document. */ /* For chameleon includes, @origTargetNamespace will be NULL */ const xmlChar *origTargetNamespace; - /* + /* * For chameleon includes, @targetNamespace will be the - * targetNamespace of the including schema. + * targetNamespace of the including schema. */ const xmlChar *targetNamespace; xmlDocPtr doc; /* The schema node-tree. */ @@ -457,7 +457,7 @@ int parsed; int imported; int preserveDoc; - xmlSchemaItemListPtr globals; /* Global components. */ + xmlSchemaItemListPtr globals; /* Global components. */ xmlSchemaItemListPtr locals; /* Local components. */ /* The owning main or import schema bucket. */ @@ -517,7 +517,7 @@ xmlSchemaTypeType type; xmlSchemaAnnotPtr annot; xmlSchemaAttributeUsePtr next; /* The next attr. use. */ - /* + /* * The attr. decl. OR a QName-ref. to an attr. decl. OR * a QName-ref. to an attribute group definition. */ @@ -573,7 +573,7 @@ xmlDictPtr dict; xmlSchemaItemListPtr buckets; /* List of schema buckets. */ /* xmlSchemaItemListPtr relations; */ /* List of schema relations. */ - xmlSchemaBucketPtr bucket; /* The current schema bucket */ + xmlSchemaBucketPtr bucket; /* The current schema bucket */ xmlSchemaItemListPtr pending; /* All Components of all schemas that need to be fixed. */ xmlHashTablePtr substGroups; @@ -629,7 +629,7 @@ xmlSchemaBucketPtr redefined; /* The schema to be redefined. */ xmlSchemaRedefPtr redef; /* Used for redefinitions. */ - int redefCounter; /* Used for redefinitions. */ + int redefCounter; /* Used for redefinitions. */ xmlSchemaItemListPtr attrProhibs; }; @@ -783,7 +783,7 @@ xmlNodePtr node; xmlSchemaPSVIIDCKeyPtr *keys; int nodeLine; - int nodeQNameID; + int nodeQNameID; }; @@ -879,7 +879,7 @@ struct _xmlSchemaNodeInfo { int nodeType; xmlNodePtr node; - int nodeLine; + int nodeLine; const xmlChar *localName; const xmlChar *nsName; const xmlChar *value; @@ -901,7 +901,7 @@ const xmlChar **nsBindings; /* Namespace bindings on this element */ int nbNsBindings; - int sizeNsBindings; + int sizeNsBindings; int hasKeyrefs; int appliedXPath; /* Indicates that an XPath has been applied. */ @@ -938,7 +938,7 @@ struct _xmlSchemaAttrInfo { int nodeType; xmlNodePtr node; - int nodeLine; + int nodeLine; const xmlChar *localName; const xmlChar *nsName; const xmlChar *value; @@ -975,6 +975,7 @@ xmlSAXHandlerPtr sax; xmlParserCtxtPtr parserCtxt; void *user_data; /* TODO: What is this for? */ + char *filename; int err; int nberrors; @@ -1028,6 +1029,10 @@ int hasKeyrefs; int createIDCNodeTables; int psviExposeIDCNodeTables; + + /* Locator for error reporting in streaming mode */ + xmlSchemaValidityLocatorFunc locFunc; + void *locCtxt; }; /** @@ -1043,9 +1048,9 @@ }; /************************************************************************ - * * - * Some predeclarations * - * * + * * + * Some predeclarations * + * * ************************************************************************/ static int xmlSchemaParseInclude(xmlSchemaParserCtxtPtr ctxt, @@ -1098,7 +1103,7 @@ /************************************************************************ * * - * Helper functions * + * Helper functions * * * ************************************************************************/ @@ -1172,7 +1177,7 @@ if (WXS_IS_COMPLEX(WXS_TYPE_CAST item)) return(BAD_CAST "complex type definition"); else - return(BAD_CAST "simple type definition"); + return(BAD_CAST "simple type definition"); default: return(xmlSchemaItemTypeToStr(item->type)); } @@ -1300,11 +1305,11 @@ *buf = xmlStrcat(*buf, localName); } else { *buf = xmlStrcat(*buf, BAD_CAST "(NULL)"); - } + } return ((const xmlChar *) *buf); } -static const xmlChar* +static const xmlChar* xmlSchemaFormatQNameNs(xmlChar **buf, xmlNsPtr ns, const xmlChar *localName) { if (ns != NULL) @@ -1466,7 +1471,7 @@ * @retValue: the returned value * @ws: the whitespace type of the value * - * Get a the cononical representation of the value. + * Get a the canonical representation of the value. * The caller has to free the returned retValue. * * Returns 0 if the value could be built and -1 in case of @@ -1480,16 +1485,16 @@ int list; xmlSchemaValType valType; const xmlChar *value, *value2 = NULL; - + if ((retValue == NULL) || (val == NULL)) return (-1); list = xmlSchemaValueGetNext(val) ? 1 : 0; *retValue = NULL; do { - value = NULL; - valType = xmlSchemaGetValType(val); - switch (valType) { + value = NULL; + valType = xmlSchemaGetValType(val); + switch (valType) { case XML_SCHEMAS_STRING: case XML_SCHEMAS_NORMSTRING: case XML_SCHEMAS_ANYSIMPLETYPE: @@ -1502,7 +1507,7 @@ if (value2 != NULL) value = value2; } - break; + break; default: if (xmlSchemaGetCanonValue(val, &value2) == -1) { if (value2 != NULL) @@ -1540,29 +1545,29 @@ * @buf: the string buffer * @itemDes: the designation of the item * @itemName: the name of the item - * @item: the item as an object + * @item: the item as an object * @itemNode: the node of the item * @local: the local name * @parsing: if the function is used during the parse * * Returns a representation of the given item used - * for error reports. + * for error reports. * - * The following order is used to build the resulting + * The following order is used to build the resulting * designation if the arguments are not NULL: * 1a. If itemDes not NULL -> itemDes * 1b. If (itemDes not NULL) and (itemName not NULL) * -> itemDes + itemName * 2. If the preceding was NULL and (item not NULL) -> item * 3. If the preceding was NULL and (itemNode not NULL) -> itemNode - * + * * If the itemNode is an attribute node, the name of the attribute * will be appended to the result. * * Returns the formatted string and sets @buf to the resulting value. - */ -static xmlChar* -xmlSchemaFormatItemForReport(xmlChar **buf, + */ +static xmlChar* +xmlSchemaFormatItemForReport(xmlChar **buf, const xmlChar *itemDes, xmlSchemaBasicItemPtr item, xmlNodePtr itemNode) @@ -1574,9 +1579,9 @@ xmlFree(*buf); *buf = NULL; } - + if (itemDes != NULL) { - *buf = xmlStrdup(itemDes); + *buf = xmlStrdup(itemDes); } else if (item != NULL) { switch (item->type) { case XML_SCHEMA_TYPE_BASIC: { @@ -1634,7 +1639,7 @@ break; case XML_SCHEMA_TYPE_ATTRIBUTE_USE: { xmlSchemaAttributeUsePtr ause; - + ause = WXS_ATTR_USE_CAST item; *buf = xmlStrdup(BAD_CAST "attribute use "); if (WXS_ATTRUSE_DECL(ause) != NULL) { @@ -1650,7 +1655,7 @@ break; case XML_SCHEMA_TYPE_ATTRIBUTE: { xmlSchemaAttributePtr attr; - + attr = (xmlSchemaAttributePtr) item; *buf = xmlStrdup(BAD_CAST "attribute decl."); *buf = xmlStrcat(*buf, BAD_CAST " '"); @@ -1666,7 +1671,7 @@ case XML_SCHEMA_TYPE_ELEMENT: { xmlSchemaElementPtr elem; - elem = (xmlSchemaElementPtr) item; + elem = (xmlSchemaElementPtr) item; *buf = xmlStrdup(BAD_CAST "element decl."); *buf = xmlStrcat(*buf, BAD_CAST " '"); *buf = xmlStrcat(*buf, xmlSchemaFormatQName(&str, @@ -1676,7 +1681,7 @@ break; case XML_SCHEMA_TYPE_IDC_UNIQUE: case XML_SCHEMA_TYPE_IDC_KEY: - case XML_SCHEMA_TYPE_IDC_KEYREF: + case XML_SCHEMA_TYPE_IDC_KEYREF: if (item->type == XML_SCHEMA_TYPE_IDC_UNIQUE) *buf = xmlStrdup(BAD_CAST "unique '"); else if (item->type == XML_SCHEMA_TYPE_IDC_KEY) @@ -1732,7 +1737,7 @@ default: named = 0; } - } else + } else named = 0; if ((named == 0) && (itemNode != NULL)) { @@ -1740,7 +1745,7 @@ if (itemNode->type == XML_ATTRIBUTE_NODE) elem = itemNode->parent; - else + else elem = itemNode; *buf = xmlStrdup(BAD_CAST "Element '"); if (elem->ns != NULL) { @@ -1750,7 +1755,7 @@ } else *buf = xmlStrcat(*buf, elem->name); *buf = xmlStrcat(*buf, BAD_CAST "'"); - + } if ((itemNode != NULL) && (itemNode->type == XML_ATTRIBUTE_NODE)) { *buf = xmlStrcat(*buf, BAD_CAST ", attribute '"); @@ -1763,7 +1768,7 @@ *buf = xmlStrcat(*buf, BAD_CAST "'"); } FREE_AND_NULL(str) - + return (*buf); } @@ -1786,13 +1791,13 @@ int res, found = 0; if (*buf != NULL) - xmlFree(*buf); + xmlFree(*buf); *buf = NULL; do { /* * Use the whitespace type of the base type. - */ + */ ws = xmlSchemaGetWhiteSpaceFacetValue(type->baseType); for (facet = type->facets; facet != NULL; facet = facet->next) { if (facet->type != XML_SCHEMA_FACET_ENUMERATION) @@ -1836,7 +1841,7 @@ /************************************************************************ * * - * Error functions * + * Error functions * * * ************************************************************************/ @@ -1881,7 +1886,7 @@ * @msg: the error message * @str1: extra data * @str2: extra data - * + * * Handle a parser error */ static void @@ -1914,7 +1919,7 @@ * @msg: the error message * @str1: extra data * @str2: extra data - * + * * Handle a parser error */ static void @@ -1933,7 +1938,7 @@ * xmlSchemaPErrExt: * @ctxt: the parsing context * @node: the context node - * @error: the error code + * @error: the error code * @strData1: extra data * @strData2: extra data * @strData3: extra data @@ -1943,13 +1948,13 @@ * @str3: extra parameter for the message display * @str4: extra parameter for the message display * @str5: extra parameter for the message display - * + * * Handle a parser error */ static void xmlSchemaPErrExt(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node, int error, - const xmlChar * strData1, const xmlChar * strData2, - const xmlChar * strData3, const char *msg, const xmlChar * str1, + const xmlChar * strData1, const xmlChar * strData2, + const xmlChar * strData3, const char *msg, const xmlChar * str1, const xmlChar * str2, const xmlChar * str3, const xmlChar * str4, const xmlChar * str5) { @@ -1967,14 +1972,14 @@ } __xmlRaiseError(schannel, channel, data, ctxt, node, XML_FROM_SCHEMASP, error, XML_ERR_ERROR, NULL, 0, - (const char *) strData1, (const char *) strData2, - (const char *) strData3, 0, 0, msg, str1, str2, + (const char *) strData1, (const char *) strData2, + (const char *) strData3, 0, 0, msg, str1, str2, str3, str4, str5); } /************************************************************************ * * - * Allround error functions * + * Allround error functions * * * ************************************************************************/ @@ -2016,7 +2021,7 @@ * @str1: extra data * @str2: extra data * @str3: extra data - * + * * Handle a validation error */ static void @@ -2028,16 +2033,17 @@ { xmlStructuredErrorFunc schannel = NULL; xmlGenericErrorFunc channel = NULL; - void *data = NULL; - + void *data = NULL; + if (ctxt != NULL) { if (ctxt->type == XML_SCHEMA_CTXT_VALIDATOR) { xmlSchemaValidCtxtPtr vctxt = (xmlSchemaValidCtxtPtr) ctxt; const char *file = NULL; + int col = 0; if (errorLevel != XML_ERR_WARNING) { vctxt->nberrors++; vctxt->err = error; - channel = vctxt->error; + channel = vctxt->error; } else { channel = vctxt->warning; } @@ -2062,6 +2068,7 @@ (vctxt->parserCtxt->input != NULL)) { file = vctxt->parserCtxt->input->filename; line = vctxt->parserCtxt->input->line; + col = vctxt->parserCtxt->input->col; } } else { /* @@ -2077,19 +2084,33 @@ else if ((vctxt->parserCtxt != NULL) && (vctxt->parserCtxt->input != NULL)) file = vctxt->parserCtxt->input->filename; - } + } + if (vctxt->locFunc != NULL) { + if ((file == NULL) || (line == 0)) { + unsigned long l; + const char *f; + vctxt->locFunc(vctxt->locCtxt, &f, &l); + if (file == NULL) + file = f; + if (line == 0) + line = (int) l; + } + } + if ((file == NULL) && (vctxt->filename != NULL)) + file = vctxt->filename; + __xmlRaiseError(schannel, channel, data, ctxt, node, XML_FROM_SCHEMASV, error, errorLevel, file, line, (const char *) str1, (const char *) str2, - (const char *) str3, 0, 0, msg, str1, str2, str3, str4); + (const char *) str3, 0, col, msg, str1, str2, str3, str4); } else if (ctxt->type == XML_SCHEMA_CTXT_PARSER) { xmlSchemaParserCtxtPtr pctxt = (xmlSchemaParserCtxtPtr) ctxt; if (errorLevel != XML_ERR_WARNING) { pctxt->nberrors++; pctxt->err = error; - channel = pctxt->error; + channel = pctxt->error; } else { channel = pctxt->warning; } @@ -2115,11 +2136,11 @@ * @str1: extra data * @str2: extra data * @str3: extra data - * + * * Handle a validation error */ static void -xmlSchemaErr3(xmlSchemaAbstractCtxtPtr actxt, +xmlSchemaErr3(xmlSchemaAbstractCtxtPtr actxt, int error, xmlNodePtr node, const char *msg, const xmlChar *str1, const xmlChar *str2, const xmlChar *str3) { @@ -2128,7 +2149,7 @@ } static void -xmlSchemaErr4(xmlSchemaAbstractCtxtPtr actxt, +xmlSchemaErr4(xmlSchemaAbstractCtxtPtr actxt, int error, xmlNodePtr node, const char *msg, const xmlChar *str1, const xmlChar *str2, const xmlChar *str3, const xmlChar *str4) @@ -2157,7 +2178,7 @@ (node->type != XML_ELEMENT_NODE) && (node->type != XML_ATTRIBUTE_NODE)) { - /* + /* * Don't try to format other nodes than element and * attribute nodes. * Play save and return an empty string. @@ -2171,7 +2192,7 @@ */ if (node->type == XML_ATTRIBUTE_NODE) { xmlNodePtr elem = node->parent; - + *msg = xmlStrdup(BAD_CAST "Element '"); if (elem->ns != NULL) *msg = xmlStrcat(*msg, xmlSchemaFormatQName(&str, @@ -2181,7 +2202,7 @@ NULL, elem->name)); FREE_AND_NULL(str); *msg = xmlStrcat(*msg, BAD_CAST "', "); - *msg = xmlStrcat(*msg, BAD_CAST "attribute '"); + *msg = xmlStrcat(*msg, BAD_CAST "attribute '"); } else { *msg = xmlStrdup(BAD_CAST "Element '"); } @@ -2197,7 +2218,7 @@ xmlSchemaValidCtxtPtr vctxt = (xmlSchemaValidCtxtPtr) actxt; /* * Work on node infos. - */ + */ if (vctxt->inode->nodeType == XML_ATTRIBUTE_NODE) { xmlSchemaNodeInfoPtr ielem = vctxt->elemInfos[vctxt->depth]; @@ -2207,7 +2228,7 @@ ielem->nsName, ielem->localName)); FREE_AND_NULL(str); *msg = xmlStrcat(*msg, BAD_CAST "', "); - *msg = xmlStrcat(*msg, BAD_CAST "attribute '"); + *msg = xmlStrcat(*msg, BAD_CAST "attribute '"); } else { *msg = xmlStrdup(BAD_CAST "Element '"); } @@ -2216,7 +2237,7 @@ FREE_AND_NULL(str); *msg = xmlStrcat(*msg, BAD_CAST "': "); } else if (actxt->type == XML_SCHEMA_CTXT_PARSER) { - /* + /* * Hmm, no node while parsing? * Return an empty string, in case NULL will break something. */ @@ -2254,7 +2275,7 @@ return; msg = xmlStrdup(BAD_CAST "Internal error: "); msg = xmlStrcat(msg, BAD_CAST funcName); - msg = xmlStrcat(msg, BAD_CAST ", "); + msg = xmlStrcat(msg, BAD_CAST ", "); msg = xmlStrcat(msg, BAD_CAST message); msg = xmlStrcat(msg, BAD_CAST ".\n"); @@ -2262,7 +2283,7 @@ xmlSchemaErr(actxt, XML_SCHEMAV_INTERNAL, NULL, (const char *) msg, str1, str2); - else if (actxt->type == XML_SCHEMA_CTXT_PARSER) + else if (actxt->type == XML_SCHEMA_CTXT_PARSER) xmlSchemaErr(actxt, XML_SCHEMAP_INTERNAL, NULL, (const char *) msg, str1, str2); @@ -2309,7 +2330,7 @@ } else xmlSchemaFormatNodeForError(&msg, actxt, node); msg = xmlStrcat(msg, (const xmlChar *) message); - msg = xmlStrcat(msg, BAD_CAST ".\n"); + msg = xmlStrcat(msg, BAD_CAST ".\n"); xmlSchemaErr4(actxt, error, node, (const char *) msg, str1, str2, str3, str4); FREE_AND_NULL(msg) @@ -2325,7 +2346,7 @@ const xmlChar *str2) { xmlSchemaCustomErr4(actxt, error, node, item, - message, str1, str2, NULL, NULL); + message, str1, str2, NULL, NULL); } @@ -2344,8 +2365,8 @@ xmlSchemaFormatNodeForError(&msg, actxt, node); msg = xmlStrcat(msg, (const xmlChar *) message); - msg = xmlStrcat(msg, BAD_CAST ".\n"); - + msg = xmlStrcat(msg, BAD_CAST ".\n"); + /* URGENT TODO: Set the error code to something sane. */ xmlSchemaErr4Line(actxt, XML_ERR_WARNING, error, node, 0, (const char *) msg, str1, str2, str3, NULL); @@ -2365,15 +2386,15 @@ const xmlChar *str2) { xmlChar *msg = NULL, *qname = NULL; - - msg = xmlStrdup(BAD_CAST "Element '%s': "); + + msg = xmlStrdup(BAD_CAST "Element '%s': "); msg = xmlStrcat(msg, (const xmlChar *) message); msg = xmlStrcat(msg, BAD_CAST ".\n"); xmlSchemaErr4Line(ACTXT_CAST vctxt, XML_ERR_ERROR, error, NULL, idcNode->nodeLine, (const char *) msg, xmlSchemaFormatQName(&qname, vctxt->nodeQNames->items[idcNode->nodeQNameID +1], - vctxt->nodeQNames->items[idcNode->nodeQNameID]), + vctxt->nodeQNames->items[idcNode->nodeQNameID]), str1, str2, NULL); FREE_AND_NULL(qname); FREE_AND_NULL(msg); @@ -2456,7 +2477,7 @@ if (type->builtInType != 0) { msg = xmlStrcat(msg, BAD_CAST "xs:"); msg = xmlStrcat(msg, type->name); - } else + } else msg = xmlStrcat(msg, xmlSchemaFormatQName(&str, type->targetNamespace, type->name)); @@ -2494,12 +2515,12 @@ xmlNodePtr node) { xmlChar *msg = NULL, *str = NULL; - + xmlSchemaFormatNodeForError(&msg, actxt, node); msg = xmlStrcat(msg, BAD_CAST "The attribute '%s' is not allowed.\n"); xmlSchemaErr(actxt, error, node, (const char *) msg, xmlSchemaFormatErrorNodeQName(&str, (xmlSchemaNodeInfoPtr) ni, node), - NULL); + NULL); FREE_AND_NULL(str) FREE_AND_NULL(msg) } @@ -2518,7 +2539,7 @@ xmlChar *localName, *nsName; const xmlChar *cur, *end; int i; - + xmlSchemaFormatNodeForError(&msg, actxt, node); msg = xmlStrcat(msg, (const xmlChar *) message); msg = xmlStrcat(msg, BAD_CAST "."); @@ -2533,7 +2554,7 @@ } else str = xmlStrdup(BAD_CAST " Expected is ( "); nsName = NULL; - + for (i = 0; i < nbval + nbneg; i++) { cur = values[i]; if (cur == NULL) @@ -2547,7 +2568,7 @@ * Get the local name. */ localName = NULL; - + end = cur; if (*end == '*') { localName = xmlStrdup(BAD_CAST "*"); @@ -2556,8 +2577,8 @@ while ((*end != 0) && (*end != '|')) end++; localName = xmlStrncat(localName, BAD_CAST cur, end - cur); - } - if (*end != 0) { + } + if (*end != 0) { end++; /* * Skip "*|*" if they come with negated expressions, since @@ -2573,12 +2594,12 @@ } else { while (*end != 0) end++; - + if (i >= nbval) nsName = xmlStrdup(BAD_CAST "{##other:"); else nsName = xmlStrdup(BAD_CAST "{"); - + nsName = xmlStrncat(nsName, BAD_CAST cur, end - cur); nsName = xmlStrcat(nsName, BAD_CAST "}"); } @@ -2588,13 +2609,13 @@ FREE_AND_NULL(localName); continue; } - } + } str = xmlStrcat(str, BAD_CAST localName); FREE_AND_NULL(localName); - + if (i < nbval + nbneg -1) str = xmlStrcat(str, BAD_CAST ", "); - } + } str = xmlStrcat(str, BAD_CAST " ).\n"); msg = xmlStrcat(msg, BAD_CAST str); FREE_AND_NULL(str) @@ -2626,8 +2647,8 @@ /* * If enumerations are validated, one must not expect the * facet to be given. - */ - } else + */ + } else facetType = facet->type; msg = xmlStrcat(msg, BAD_CAST "["); msg = xmlStrcat(msg, BAD_CAST "facet '"); @@ -2655,31 +2676,31 @@ snprintf(actLen, 24, "%lu", length); if (facetType == XML_SCHEMA_FACET_LENGTH) - msg = xmlStrcat(msg, - BAD_CAST "this differs from the allowed length of '%s'.\n"); + msg = xmlStrcat(msg, + BAD_CAST "this differs from the allowed length of '%s'.\n"); else if (facetType == XML_SCHEMA_FACET_MAXLENGTH) - msg = xmlStrcat(msg, + msg = xmlStrcat(msg, BAD_CAST "this exceeds the allowed maximum length of '%s'.\n"); else if (facetType == XML_SCHEMA_FACET_MINLENGTH) - msg = xmlStrcat(msg, + msg = xmlStrcat(msg, BAD_CAST "this underruns the allowed minimum length of '%s'.\n"); - + if (nodeType == XML_ATTRIBUTE_NODE) xmlSchemaErr3(actxt, error, node, (const char *) msg, value, (const xmlChar *) actLen, (const xmlChar *) len); - else + else xmlSchemaErr(actxt, error, node, (const char *) msg, (const xmlChar *) actLen, (const xmlChar *) len); - + } else if (facetType == XML_SCHEMA_FACET_ENUMERATION) { msg = xmlStrcat(msg, BAD_CAST "The value '%s' is not an element " "of the set {%s}.\n"); - xmlSchemaErr(actxt, error, node, (const char *) msg, value, + xmlSchemaErr(actxt, error, node, (const char *) msg, value, xmlSchemaFormatFacetEnumSet(actxt, &str, type)); } else if (facetType == XML_SCHEMA_FACET_PATTERN) { msg = xmlStrcat(msg, BAD_CAST "The value '%s' is not accepted " "by the pattern '%s'.\n"); - xmlSchemaErr(actxt, error, node, (const char *) msg, value, + xmlSchemaErr(actxt, error, node, (const char *) msg, value, facet->value); } else if (facetType == XML_SCHEMA_FACET_MININCLUSIVE) { msg = xmlStrcat(msg, BAD_CAST "The value '%s' is less than the " @@ -2711,10 +2732,10 @@ "digits than are allowed ('%s').\n"); xmlSchemaErr(actxt, error, node, (const char*) msg, value, facet->value); - } else if (nodeType == XML_ATTRIBUTE_NODE) { + } else if (nodeType == XML_ATTRIBUTE_NODE) { msg = xmlStrcat(msg, BAD_CAST "The value '%s' is not facet-valid.\n"); - xmlSchemaErr(actxt, error, node, (const char *) msg, value, NULL); - } else { + xmlSchemaErr(actxt, error, node, (const char *) msg, value, NULL); + } else { msg = xmlStrcat(msg, BAD_CAST "The value is not facet-valid.\n"); xmlSchemaErr(actxt, error, node, (const char *) msg, NULL, NULL); } @@ -2722,7 +2743,7 @@ msg = xmlStrcat(msg, (const xmlChar *) message); msg = xmlStrcat(msg, BAD_CAST ".\n"); xmlSchemaErr(actxt, error, node, (const char *) msg, str1, str2); - } + } FREE_AND_NULL(str) xmlFree(msg); } @@ -2967,9 +2988,9 @@ const xmlChar *str3,const xmlChar *str4) { xmlChar *str = NULL, *msg = NULL; - + xmlSchemaFormatItemForReport(&msg, NULL, ownerItem, NULL); - msg = xmlStrcat(msg, BAD_CAST ", "); + msg = xmlStrcat(msg, BAD_CAST ", "); msg = xmlStrcat(msg, BAD_CAST xmlSchemaFormatItemForReport(&str, NULL, WXS_BASIC_CAST attruse, NULL)); @@ -2977,7 +2998,7 @@ msg = xmlStrcat(msg, BAD_CAST ": "); msg = xmlStrcat(msg, (const xmlChar *) message); msg = xmlStrcat(msg, BAD_CAST ".\n"); - xmlSchemaErr4(ACTXT_CAST ctxt, error, node, + xmlSchemaErr4(ACTXT_CAST ctxt, error, node, (const char *) msg, str1, str2, str3, str4); xmlFree(msg); } @@ -3071,7 +3092,7 @@ * @error: the error code * @type: the type specifier * @ownerDes: the designation of the owner - * @ownerItem: the schema object if existent + * @ownerItem: the schema object if existent * @node: the validated node * @value: the validated value * @@ -3079,7 +3100,7 @@ * TODO: Should this report the value of an element as well? */ static void -xmlSchemaPSimpleTypeErr(xmlSchemaParserCtxtPtr ctxt, +xmlSchemaPSimpleTypeErr(xmlSchemaParserCtxtPtr ctxt, xmlParserErrors error, xmlSchemaBasicItemPtr ownerItem ATTRIBUTE_UNUSED, xmlNodePtr node, @@ -3091,37 +3112,37 @@ const xmlChar *str2) { xmlChar *msg = NULL; - + xmlSchemaFormatNodeForError(&msg, ACTXT_CAST ctxt, node); if (message == NULL) { /* * Use default messages. - */ + */ if (type != NULL) { if (node->type == XML_ATTRIBUTE_NODE) msg = xmlStrcat(msg, BAD_CAST "'%s' is not a valid value of "); else msg = xmlStrcat(msg, BAD_CAST "The character content is not a " - "valid value of "); + "valid value of "); if (! xmlSchemaIsGlobalItem(type)) msg = xmlStrcat(msg, BAD_CAST "the local "); else msg = xmlStrcat(msg, BAD_CAST "the "); - + if (WXS_IS_ATOMIC(type)) msg = xmlStrcat(msg, BAD_CAST "atomic type"); else if (WXS_IS_LIST(type)) msg = xmlStrcat(msg, BAD_CAST "list type"); else if (WXS_IS_UNION(type)) msg = xmlStrcat(msg, BAD_CAST "union type"); - + if (xmlSchemaIsGlobalItem(type)) { xmlChar *str = NULL; msg = xmlStrcat(msg, BAD_CAST " '"); if (type->builtInType != 0) { msg = xmlStrcat(msg, BAD_CAST "xs:"); msg = xmlStrcat(msg, type->name); - } else + } else msg = xmlStrcat(msg, xmlSchemaFormatQName(&str, type->targetNamespace, type->name)); @@ -3134,7 +3155,7 @@ else msg = xmlStrcat(msg, BAD_CAST "The character content is not " "valid."); - } + } if (expected) { msg = xmlStrcat(msg, BAD_CAST " Expected is '"); msg = xmlStrcat(msg, BAD_CAST expected); @@ -3151,7 +3172,7 @@ xmlSchemaPErrExt(ctxt, node, error, NULL, NULL, NULL, (const char*) msg, str1, str2, NULL, NULL, NULL); } - /* Cleanup. */ + /* Cleanup. */ FREE_AND_NULL(msg) } @@ -3199,25 +3220,25 @@ } /************************************************************************ - * * - * Streamable error functions * - * * + * * + * Streamable error functions * + * * ************************************************************************/ /************************************************************************ - * * - * Validation helper functions * - * * + * * + * Validation helper functions * + * * ************************************************************************/ /************************************************************************ - * * - * Allocation functions * - * * + * * + * Allocation functions * + * * ************************************************************************/ /** @@ -3372,7 +3393,7 @@ static int xmlSchemaItemListInsert(xmlSchemaItemListPtr list, void *item, int idx) -{ +{ if (list->items == NULL) { list->items = (void **) xmlMalloc( 20 * sizeof(void *)); @@ -3412,7 +3433,7 @@ int initialSize, void *item, int idx) -{ +{ if (list->items == NULL) { if (initialSize <= 0) initialSize = 1; @@ -3467,7 +3488,7 @@ list->sizeItems = 0; } else if (list->nbItems -1 == idx) { list->nbItems--; - } else { + } else { for (i = idx; i < list->nbItems -1; i++) list->items[i] = list->items[i+1]; list->nbItems--; @@ -3502,19 +3523,19 @@ } if (bucket->locals != NULL) { xmlSchemaComponentListFree(bucket->locals); - xmlSchemaItemListFree(bucket->locals); + xmlSchemaItemListFree(bucket->locals); } if (bucket->relations != NULL) { xmlSchemaSchemaRelationPtr prev, cur = bucket->relations; do { - prev = cur; + prev = cur; cur = cur->next; xmlFree(prev); } while (cur != NULL); } if ((! bucket->preserveDoc) && (bucket->doc != NULL)) { xmlFreeDoc(bucket->doc); - } + } if (bucket->type == XML_SCHEMA_SCHEMA_IMPORT) { if (WXS_IMPBUCKET(bucket)->schema != NULL) xmlSchemaFree(WXS_IMPBUCKET(bucket)->schema); @@ -3559,7 +3580,7 @@ xmlFree(ret); return(NULL); } - /* + /* * The following will assure that only the first bucket is marked as * XML_SCHEMA_SCHEMA_MAIN and it points to the *main* schema. * For each following import buckets an xmlSchema will be created. @@ -3573,7 +3594,7 @@ xmlSchemaBucketFree(ret); return(NULL); } - /* Force the type to be XML_SCHEMA_SCHEMA_MAIN. */ + /* Force the type to be XML_SCHEMA_SCHEMA_MAIN. */ ret->type = XML_SCHEMA_SCHEMA_MAIN; /* Point to the *main* schema. */ WXS_CONSTRUCTOR(pctxt)->mainBucket = ret; @@ -3583,12 +3604,12 @@ */ mainSchema->targetNamespace = targetNamespace; } else { - if (type == XML_SCHEMA_SCHEMA_MAIN) { + if (type == XML_SCHEMA_SCHEMA_MAIN) { PERROR_INT("xmlSchemaBucketCreate", "main bucket but it's not the first one"); xmlSchemaBucketFree(ret); return(NULL); - } else if (type == XML_SCHEMA_SCHEMA_IMPORT) { + } else if (type == XML_SCHEMA_SCHEMA_IMPORT) { /* * Create a schema for imports and assign the * targetNamespace. @@ -3600,7 +3621,7 @@ } WXS_IMPBUCKET(ret)->schema->targetNamespace = targetNamespace; } - } + } if (WXS_IS_BUCKET_IMPMAIN(type)) { int res; /* @@ -3643,11 +3664,11 @@ if (mainSchema->includes == NULL) { xmlSchemaBucketFree(ret); return(NULL); - } + } } xmlSchemaItemListAdd(mainSchema->includes, ret); } - /* + /* * Add to list of all buckets; this is used for lookup * during schema construction time only. */ @@ -4015,7 +4036,7 @@ for (i = 0; i < list->nbItems; i++) { item = items[i]; if (item == NULL) - continue; + continue; switch (item->type) { case XML_SCHEMA_TYPE_SIMPLE: case XML_SCHEMA_TYPE_COMPLEX: @@ -4122,7 +4143,7 @@ xmlSchemaItemListPtr list = (xmlSchemaItemListPtr) schema->includes; int i; for (i = 0; i < list->nbItems; i++) { - xmlSchemaBucketFree((xmlSchemaBucketPtr) list->items[i]); + xmlSchemaBucketFree((xmlSchemaBucketPtr) list->items[i]); } xmlSchemaItemListFree(list); } @@ -4135,9 +4156,9 @@ } /************************************************************************ - * * - * Debug functions * - * * + * * + * Debug functions * + * * ************************************************************************/ #ifdef LIBXML_OUTPUT_ENABLED @@ -4274,7 +4295,7 @@ for (i = 0;((i < depth) && (i < 25));i++) shift[2 * i] = shift[2 * i + 1] = ' '; shift[2 * i] = shift[2 * i + 1] = 0; - fprintf(output, shift); + fprintf(output, "%s", shift); if (particle->children == NULL) { fprintf(output, "MISSING particle term\n"); return; @@ -4330,7 +4351,7 @@ /** * xmlSchemaAttrUsesDump: * @uses: attribute uses list - * @output: the file output + * @output: the file output * * Dumps a list of attribute use components. */ @@ -4347,7 +4368,7 @@ if ((uses == NULL) || (uses->nbItems == 0)) return; - fprintf(output, " attributes:\n"); + fprintf(output, " attributes:\n"); for (i = 0; i < uses->nbItems; i++) { use = uses->items[i]; if (use->type == XML_SCHEMA_EXTRA_ATTR_USE_PROHIB) { @@ -4533,7 +4554,7 @@ return; do { fprintf(output, "IDC: BINDING '%s' (%d)\n", - xmlSchemaGetComponentQName(&str, + xmlSchemaGetComponentQName(&str, bind->definition), bind->nbNodes); FREE_AND_NULL(str) for (i = 0; i < bind->nbNodes; i++) { @@ -4587,7 +4608,7 @@ /************************************************************************ * * - * Utilities * + * Utilities * * * ************************************************************************/ @@ -4634,7 +4655,7 @@ xmlAttrPtr prop; if ((node == NULL) || (name == NULL)) - return(NULL); + return(NULL); prop = node->properties; while (prop != NULL) { if ((prop->ns != NULL) && @@ -4692,9 +4713,9 @@ } /************************************************************************ - * * - * Parsing functions * - * * + * * + * Parsing functions * + * * ************************************************************************/ #define WXS_FIND_GLOBAL_ITEM(slot) \ @@ -4729,12 +4750,12 @@ const xmlChar * nsName) { xmlSchemaElementPtr ret = NULL; - + if ((name == NULL) || (schema == NULL)) return(NULL); if (schema != NULL) { WXS_FIND_GLOBAL_ITEM(elemDecl) - } + } exit: #ifdef DEBUG if (ret == NULL) { @@ -4765,9 +4786,9 @@ xmlSchemaTypePtr ret = NULL; if (name == NULL) - return (NULL); + return (NULL); /* First try the built-in types. */ - if ((nsName != NULL) && xmlStrEqual(nsName, xmlSchemaNs)) { + if ((nsName != NULL) && xmlStrEqual(nsName, xmlSchemaNs)) { ret = xmlSchemaGetPredefinedType(name, nsName); if (ret != NULL) goto exit; @@ -4780,7 +4801,7 @@ } if (schema != NULL) { WXS_FIND_GLOBAL_ITEM(typeDecl) - } + } exit: #ifdef DEBUG @@ -4891,7 +4912,7 @@ WXS_FIND_GLOBAL_ITEM(groupDecl) } exit: - + #ifdef DEBUG if (ret == NULL) { if (nsName == NULL) @@ -4966,9 +4987,9 @@ } /************************************************************************ - * * - * Parsing functions * - * * + * * + * Parsing functions * + * * ************************************************************************/ #define IS_BLANK_NODE(n) \ @@ -5000,7 +5021,7 @@ str++; len--; } - + return (1); } @@ -5061,7 +5082,7 @@ default: /* Should not be hit. */ return(NULL); - } + } } } subschemas: @@ -5209,7 +5230,7 @@ * resolve references to the redefined components and to check constraints. */ static xmlSchemaRedefPtr -xmlSchemaAddRedef(xmlSchemaParserCtxtPtr pctxt, +xmlSchemaAddRedef(xmlSchemaParserCtxtPtr pctxt, xmlSchemaBucketPtr targetBucket, void *item, const xmlChar *refName, @@ -5272,7 +5293,7 @@ ret->type = XML_SCHEMA_TYPE_ATTRIBUTEGROUP; ret->name = name; ret->targetNamespace = nsName; - ret->node = node; + ret->node = node; /* TODO: Remove the flag. */ ret->flags |= XML_SCHEMAS_ATTRGROUP_GLOBAL; @@ -5282,7 +5303,7 @@ if (pctxt->redef == NULL) { xmlFree(ret); return(NULL); - } + } pctxt->redefCounter = 0; } WXS_ADD_GLOBAL(pctxt, ret); @@ -5371,13 +5392,13 @@ if (ctxt->redef == NULL) { xmlFree(ret); return(NULL); - } + } ctxt->redefCounter = 0; } WXS_ADD_GLOBAL(ctxt, ret); } else WXS_ADD_LOCAL(ctxt, ret); - WXS_ADD_PENDING(ctxt, ret); + WXS_ADD_PENDING(ctxt, ret); return (ret); } @@ -5509,7 +5530,7 @@ ret->children = NULL; WXS_ADD_LOCAL(ctxt, ret); - /* + /* * Note that addition to pending components will be done locally * to the specific parsing function, since the most particles * need not to be fixed up (i.e. the reference to be resolved). @@ -5558,7 +5579,7 @@ if (ctxt->redef == NULL) { xmlFree(ret); return(NULL); - } + } ctxt->redefCounter = 0; } WXS_ADD_GLOBAL(ctxt, ret); @@ -5595,7 +5616,7 @@ const xmlChar *name, const xmlChar *nsName, int category, xmlNodePtr node) { - xmlSchemaIDCPtr ret = NULL; + xmlSchemaIDCPtr ret = NULL; if ((ctxt == NULL) || (schema == NULL) || (name == NULL)) return (NULL); @@ -5611,8 +5632,8 @@ ret->targetNamespace = nsName; ret->name = name; ret->type = category; - ret->node = node; - + ret->node = node; + WXS_ADD_GLOBAL(ctxt, ret); /* * Only keyrefs need to be fixup up. @@ -5648,7 +5669,7 @@ } memset(ret, 0, sizeof(xmlSchemaWildcard)); ret->type = type; - ret->node = node; + ret->node = node; WXS_ADD_LOCAL(ctxt, ret); return (ret); } @@ -5704,7 +5725,7 @@ static xmlSchemaSubstGroupPtr xmlSchemaSubstGroupGet(xmlSchemaParserCtxtPtr pctxt, xmlSchemaElementPtr head) -{ +{ if (WXS_SUBST_GROUPS(pctxt) == NULL) return(NULL); return(xmlHashLookup2(WXS_SUBST_GROUPS(pctxt), @@ -5743,9 +5764,9 @@ } /************************************************************************ - * * + * * * Utilities for parsing * - * * + * * ************************************************************************/ /** @@ -5939,7 +5960,7 @@ xmlFree((xmlChar *) value); value = strip; } - res = xmlAddID(NULL, attr->doc, value, attr); + res = xmlAddID(NULL, attr->doc, value, attr); if (res == NULL) { ret = XML_SCHEMAP_S4S_ATTR_INVALID_VALUE; xmlSchemaPSimpleTypeErr(ctxt, @@ -6120,7 +6141,7 @@ value = xmlNodeGetContent(node); /* * 3.2.2.1 Lexical representation - * An instance of a datatype that is defined as boolean + * An instance of a datatype that is defined as `boolean` * can have the following legal literals {true, false, 1, 0}. */ if (xmlStrEqual(BAD_CAST value, BAD_CAST "true")) @@ -6168,7 +6189,7 @@ return (def); /* * 3.2.2.1 Lexical representation - * An instance of a datatype that is defined as boolean + * An instance of a datatype that is defined as `boolean` * can have the following legal literals {true, false, 1, 0}. */ if (xmlStrEqual(val, BAD_CAST "true")) @@ -6191,9 +6212,9 @@ } /************************************************************************ - * * + * * * Shema extraction from an Infoset * - * * + * * ************************************************************************/ static xmlSchemaTypePtr xmlSchemaParseSimpleType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, @@ -6288,7 +6309,7 @@ ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2; else ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1; - xmlSchemaPSimpleTypeErr(pctxt, + xmlSchemaPSimpleTypeErr(pctxt, ret, ownerItem, (xmlNodePtr) attr, type, NULL, value, NULL, NULL, NULL); } @@ -6352,7 +6373,7 @@ * number otherwise and -1 in case of an internal or API error. */ static int -xmlSchemaPValAttr(xmlSchemaParserCtxtPtr ctxt, +xmlSchemaPValAttr(xmlSchemaParserCtxtPtr ctxt, xmlSchemaBasicItemPtr ownerItem, xmlNodePtr ownerElem, const char *name, @@ -6442,7 +6463,7 @@ * @type: the hosting type where the attributes will be anchored * * Parses attribute uses and attribute declarations and - * attribute group references. + * attribute group references. */ static int xmlSchemaParseLocalAttributes(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, @@ -6797,7 +6818,7 @@ tmp->next = NULL; if (wildc->nsSet == NULL) wildc->nsSet = tmp; - else + else if (lastNs != NULL) lastNs->next = tmp; lastNs = tmp; } @@ -7085,7 +7106,7 @@ int parentType) { const xmlChar *attrValue, *name = NULL, *ns = NULL; - xmlSchemaAttributeUsePtr use = NULL; + xmlSchemaAttributeUsePtr use = NULL; xmlNodePtr child = NULL; xmlAttrPtr attr; const xmlChar *tmpNs = NULL, *tmpName = NULL, *defValue = NULL; @@ -7139,7 +7160,7 @@ /* * Evaluate the target namespace */ - hasForm = 1; + hasForm = 1; attrValue = xmlSchemaGetNodeContent(pctxt, (xmlNodePtr) attr); if (xmlStrEqual(attrValue, BAD_CAST "qualified")) { @@ -7210,7 +7231,7 @@ attr_next: attr = attr->next; - } + } /* * 3.2.3 : 2 * If default and use are both present, use must have @@ -7236,7 +7257,7 @@ /* TODO: move XML_SCHEMAS_QUALIF_ATTR to the parser. */ if ((! hasForm) && (schema->flags & XML_SCHEMAS_QUALIF_ATTR)) - ns = pctxt->targetNamespace; + ns = pctxt->targetNamespace; /* * 3.2.6 Schema Component Constraint: xsi: Not Allowed * TODO: Move this to the component layer. @@ -7293,7 +7314,7 @@ use->attrDecl = attrDecl; /* * Value constraint. - */ + */ if (defValue != NULL) { attrDecl->defValue = defValue; if (defValueType == WXS_ATTR_DEF_VAL_FIXED) @@ -7333,14 +7354,14 @@ if (defValueType == WXS_ATTR_DEF_VAL_FIXED) use->flags |= XML_SCHEMA_ATTR_USE_FIXED; } - + check_children: /* * And now for the children... */ child = node->children; if (occurs == XML_SCHEMAS_ATTR_USE_PROHIBITED) { - xmlSchemaAttributeUseProhibPtr prohib; + xmlSchemaAttributeUseProhibPtr prohib; if (IS_SCHEMA(child, "annotation")) { xmlSchemaParseAnnotation(pctxt, child, 0); @@ -7355,7 +7376,7 @@ /* * Check for pointlessness of attribute prohibitions. */ - if (parentType == XML_SCHEMA_TYPE_ATTRIBUTEGROUP) { + if (parentType == XML_SCHEMA_TYPE_ATTRIBUTEGROUP) { xmlSchemaCustomWarning(ACTXT_CAST pctxt, XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH, node, NULL, @@ -7373,7 +7394,7 @@ return(NULL); } if (! isRef) { - tmpName = name; + tmpName = name; tmpNs = ns; } /* @@ -7381,7 +7402,7 @@ */ if (uses) { int i; - + for (i = 0; i < uses->nbItems; i++) { use = uses->items[i]; if ((use->type == XML_SCHEMA_EXTRA_ATTR_USE_PROHIB) && @@ -7389,16 +7410,16 @@ (tmpNs == (WXS_ATTR_PROHIB_CAST use)->targetNamespace)) { xmlChar *str = NULL; - + xmlSchemaCustomWarning(ACTXT_CAST pctxt, XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH, node, NULL, "Skipping duplicate attribute use prohibition '%s'", xmlSchemaFormatQName(&str, tmpNs, tmpName), NULL, NULL); - FREE_AND_NULL(str) + FREE_AND_NULL(str) return(NULL); - } + } } } /* @@ -7417,7 +7438,7 @@ WXS_ADD_PENDING(pctxt, prohib); } return(WXS_BASIC_CAST prohib); - } else { + } else { if (IS_SCHEMA(child, "annotation")) { /* * TODO: Should this go into the attr decl? @@ -7464,7 +7485,7 @@ NULL, node, child, NULL, "(annotation?, simpleType?)"); } - } + } return (WXS_BASIC_CAST use); } @@ -7486,7 +7507,7 @@ * 3.2.3 Constraints on XML Representations of Attribute Declarations */ if ((pctxt == NULL) || (schema == NULL) || (node == NULL)) - return (NULL); + return (NULL); /* * 3.2.3 : 3.1 * One of ref or name must be present, but not both @@ -7532,7 +7553,7 @@ if (ret == NULL) return (NULL); ret->flags |= XML_SCHEMAS_ATTR_GLOBAL; - + /* * Check for illegal attributes. */ @@ -7546,7 +7567,7 @@ (!xmlStrEqual(attr->name, BAD_CAST "type"))) { xmlSchemaPIllegalAttrErr(pctxt, - XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, NULL, attr); + XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, NULL, attr); } } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) { xmlSchemaPIllegalAttrErr(pctxt, @@ -7556,7 +7577,7 @@ } xmlSchemaPValAttrQName(pctxt, schema, NULL, node, "type", &ret->typeNs, &ret->typeName); - + xmlSchemaPValAttrID(pctxt, node, BAD_CAST "id"); /* * Attribute "fixed". @@ -7641,12 +7662,12 @@ XML_SCHEMAP_S4S_ATTR_MISSING, NULL, node, "ref", NULL); return (NULL); - } + } xmlSchemaPValAttrNodeQName(pctxt, schema, NULL, attr, &refNs, &ref); if (xmlSchemaCheckReference(pctxt, schema, node, attr, refNs) != 0) return(NULL); - + /* * Check for illegal attributes. */ @@ -7698,13 +7719,13 @@ /* * SPEC src-redefine: * (7.1) "If it has an among its contents - * the actual value of whose ref [attribute] is the same - * as the actual value of its own name attribute plus + * the `actual value` of whose ref [attribute] is the same + * as the `actual value` of its own name attribute plus * target namespace, then it must have exactly one such group." */ if (pctxt->redefCounter != 0) { xmlChar *str = NULL; - + xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_SRC_REDEFINE, node, NULL, "The redefining attribute group definition " @@ -7738,7 +7759,7 @@ ret->node = node; /* Add to pending items, to be able to resolve the reference. */ WXS_ADD_PENDING(pctxt, ret); - } + } return (ret); } @@ -7785,7 +7806,7 @@ ret = xmlSchemaAddAttributeGroupDefinition(pctxt, schema, name, pctxt->targetNamespace, node); if (ret == NULL) - return (NULL); + return (NULL); /* * Check for illegal attributes. */ @@ -8185,7 +8206,7 @@ * Returns the parsed identity-constraint definition. */ static xmlSchemaIDCSelectPtr -xmlSchemaParseIDCSelectorAndField(xmlSchemaParserCtxtPtr ctxt, +xmlSchemaParseIDCSelectorAndField(xmlSchemaParserCtxtPtr ctxt, xmlSchemaIDCPtr idc, xmlNodePtr node, int isField) @@ -8227,7 +8248,7 @@ */ attr = xmlSchemaGetPropNode(node, "xpath"); if (attr == NULL) { - xmlSchemaPMissingAttrErr(ctxt, + xmlSchemaPMissingAttrErr(ctxt, XML_SCHEMAP_S4S_ATTR_MISSING, NULL, node, "name", NULL); @@ -8848,7 +8869,7 @@ type->flags |= XML_SCHEMAS_TYPE_VARIETY_UNION; /* * SPEC (Base type) (2) "If the or alternative is chosen, - * then the simple ur-type definition." + * then the `simple ur-type definition`." */ type->baseType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYSIMPLETYPE); /* @@ -9016,7 +9037,7 @@ type->flags |= XML_SCHEMAS_TYPE_VARIETY_LIST; /* * SPEC (Base type) (2) "If the or alternative is chosen, - * then the simple ur-type definition." + * then the `simple ur-type definition`." */ type->baseType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYSIMPLETYPE); /* @@ -9161,9 +9182,9 @@ } /* * TargetNamespace: - * SPEC "The actual value of the targetNamespace [attribute] + * SPEC "The `actual value` of the targetNamespace [attribute] * of the ancestor element information item if present, - * otherwise absent. + * otherwise `absent`. */ if (topLevel == 0) { #ifdef ENABLE_NAMED_LOCALS @@ -9195,7 +9216,7 @@ if (attr->ns == NULL) { if (!xmlStrEqual(attr->name, BAD_CAST "id")) { xmlSchemaPIllegalAttrErr(ctxt, - XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, NULL, attr); + XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, NULL, attr); } } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) { xmlSchemaPIllegalAttrErr(ctxt, @@ -9266,9 +9287,9 @@ * And now for the children... */ oldCtxtType = ctxt->ctxtType; - + ctxt->ctxtType = type; - + child = node->children; if (IS_SCHEMA(child, "annotation")) { type->annot = xmlSchemaParseAnnotation(ctxt, child, 1); @@ -9278,10 +9299,10 @@ xmlSchemaPContentErr(ctxt, XML_SCHEMAP_S4S_ELEM_MISSING, NULL, node, child, NULL, "(annotation?, (restriction | list | union))"); - } else if (IS_SCHEMA(child, "restriction")) { + } else if (IS_SCHEMA(child, "restriction")) { xmlSchemaParseRestriction(ctxt, schema, child, - XML_SCHEMA_TYPE_SIMPLE); - hasRestriction = 1; + XML_SCHEMA_TYPE_SIMPLE); + hasRestriction = 1; child = child->next; } else if (IS_SCHEMA(child, "list")) { xmlSchemaParseList(ctxt, schema, child); @@ -9298,8 +9319,8 @@ /* * REDEFINE: SPEC src-redefine (5) * "Within the [children], each must have a - * among its [children] ... the actual value of whose - * base [attribute] must be the same as the actual value of its own + * among its [children] ... the `actual value` of whose + * base [attribute] must be the same as the `actual value` of its own * name attribute plus target namespace;" */ if (topLevel && ctxt->isRedefine && (! hasRestriction)) { @@ -9307,7 +9328,7 @@ NULL, node, "This is a redefinition, thus the " " must have a child", NULL); } - + ctxt->ctxtType = oldCtxtType; return (type); } @@ -9373,13 +9394,13 @@ xmlSchemaPValAttrID(ctxt, node, BAD_CAST "id"); item = xmlSchemaAddParticle(ctxt, node, min, max); if (item == NULL) - return (NULL); + return (NULL); /* * Create a qname-reference and set as the term; it will be substituted * for the model group after the reference has been resolved. */ item->children = (xmlSchemaTreeItemPtr) - xmlSchemaNewQNameRef(ctxt, XML_SCHEMA_TYPE_GROUP, ref, refNs); + xmlSchemaNewQNameRef(ctxt, XML_SCHEMA_TYPE_GROUP, ref, refNs); xmlSchemaPCheckParticleCorrect_2(ctxt, item, node, min, max); /* * And now for the children... @@ -9419,7 +9440,7 @@ * Note that the contraint src-redefine (6.2) can't be applied until * references have been resolved. So we will do this at the * component fixup level. - * + * * *WARNING* this interface is highly subject to change * * Returns -1 in case of error, 0 if the declaration is improper and @@ -9493,7 +9514,7 @@ child = child->next; } - + if (child != NULL) { xmlSchemaPContentErr(ctxt, @@ -9631,7 +9652,7 @@ attr = xmlSchemaGetPropNode(node, "version"); if (attr != NULL) { res = xmlSchemaPValAttrNode(ctxt, NULL, NULL, attr, - xmlSchemaGetBuiltInType(XML_SCHEMAS_TOKEN), &val); + xmlSchemaGetBuiltInType(XML_SCHEMAS_TOKEN), &val); HFAILURE; } */ @@ -9691,7 +9712,7 @@ } attr = xmlSchemaGetPropNode(node, "blockDefault"); if (attr != NULL) { - val = xmlSchemaGetNodeContent(ctxt, (xmlNodePtr) attr); + val = xmlSchemaGetNodeContent(ctxt, (xmlNodePtr) attr); res = xmlSchemaPValAttrBlockFinal(val, &(schema->flags), -1, XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION, XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION, @@ -9752,14 +9773,14 @@ HFAILURE; HSTOP(ctxt); if (tmpOldErrs != ctxt->nberrors) - goto exit; + goto exit; } else if (IS_SCHEMA(child, "include")) { tmpOldErrs = ctxt->nberrors; res = xmlSchemaParseInclude(ctxt, schema, child); HFAILURE; HSTOP(ctxt); if (tmpOldErrs != ctxt->nberrors) - goto exit; + goto exit; } else if (IS_SCHEMA(child, "redefine")) { tmpOldErrs = ctxt->nberrors; res = xmlSchemaParseRedefine(ctxt, schema, child); @@ -9884,7 +9905,7 @@ xmlFree(con); } -static xmlSchemaConstructionCtxtPtr +static xmlSchemaConstructionCtxtPtr xmlSchemaConstructionCtxtCreate(xmlDictPtr dict) { xmlSchemaConstructionCtxtPtr ret; @@ -9954,10 +9975,10 @@ xmlSchemaParserCtxtPtr ret; ret = xmlSchemaParserCtxtCreate(); - if (ret == NULL) + if (ret == NULL) return (NULL); ret->dict = dict; - xmlDictReference(dict); + xmlDictReference(dict); if (URL != NULL) ret->URL = xmlDictLookup(dict, (const xmlChar *) URL, -1); return (ret); @@ -10082,8 +10103,8 @@ xmlNodePtr node; int ret, oldErrs; xmlSchemaBucketPtr oldbucket = pctxt->constructor->bucket; - - /* + + /* * Save old values; reset the *main* schema. * URGENT TODO: This is not good; move the per-document information * to the parser. Get rid of passing the main schema to the @@ -10093,9 +10114,9 @@ oldDoc = schema->doc; if (schema->flags != 0) xmlSchemaClearSchemaDefaults(schema); - schema->doc = bucket->doc; + schema->doc = bucket->doc; pctxt->schema = schema; - /* + /* * Keep the current target namespace on the parser *not* on the * main schema. */ @@ -10108,7 +10129,7 @@ * We are parsing the schema for schemas! */ pctxt->isS4S = 1; - } + } /* Mark it as parsed, even if parsing fails. */ bucket->parsed++; /* Compile the schema doc. */ @@ -10132,7 +10153,7 @@ ret = pctxt->err; goto exit; } - + exit: WXS_CONSTRUCTOR(pctxt)->bucket = oldbucket; /* Restore schema values. */ @@ -10165,7 +10186,7 @@ PERROR_INT("xmlSchemaParseNewDoc", "no constructor"); return(-1); - } + } /* Create and init the temporary parser context. */ newpctxt = xmlSchemaNewParserCtxtUseDict( (const char *) bucket->schemaLocation, pctxt->dict); @@ -10173,7 +10194,7 @@ return(-1); newpctxt->constructor = pctxt->constructor; /* - * TODO: Can we avoid that the parser knows about the main schema? + * TODO: Can we avoid that the parser knows about the main schema? * It would be better if he knows about the current schema bucket * only. */ @@ -10183,16 +10204,16 @@ xmlSchemaSetParserStructuredErrors(newpctxt, pctxt->serror, pctxt->errCtxt); newpctxt->counter = pctxt->counter; - + res = xmlSchemaParseNewDocWithContext(newpctxt, schema, bucket); - + /* Channel back errors and cleanup the temporary parser context. */ if (res != 0) pctxt->err = res; pctxt->nberrors += newpctxt->nberrors; pctxt->counter = newpctxt->counter; - newpctxt->constructor = NULL; + newpctxt->constructor = NULL; /* Free the parser context. */ xmlSchemaFreeParserCtxt(newpctxt); return(res); @@ -10217,11 +10238,11 @@ static const xmlChar * xmlSchemaBuildAbsoluteURI(xmlDictPtr dict, const xmlChar* location, xmlNodePtr ctxtNode) -{ +{ /* * Build an absolue location URI. */ - if (location != NULL) { + if (location != NULL) { if (ctxtNode == NULL) return(location); else { @@ -10244,7 +10265,7 @@ } return(NULL); } - + /** @@ -10267,8 +10288,8 @@ const char *schemaBuffer, int schemaBufferLen, xmlNodePtr invokingNode, - const xmlChar *sourceTargetNamespace, - const xmlChar *importNamespace, + const xmlChar *sourceTargetNamespace, + const xmlChar *importNamespace, xmlSchemaBucketPtr *bucket) { const xmlChar *targetNamespace = NULL; @@ -10279,7 +10300,7 @@ if (bucket != NULL) *bucket = NULL; - + switch (type) { case XML_SCHEMA_SCHEMA_IMPORT: case XML_SCHEMA_SCHEMA_MAIN: @@ -10291,23 +10312,23 @@ case XML_SCHEMA_SCHEMA_REDEFINE: err = XML_SCHEMAP_SRC_REDEFINE; break; - } - + } + /* Special handling for the main schema: * skip the location and relation logic and just parse the doc. * We need just a bucket to be returned in this case. - */ + */ if ((type == XML_SCHEMA_SCHEMA_MAIN) || (! WXS_HAS_BUCKETS(pctxt))) - goto doc_load; + goto doc_load; - /* Note that we expect the location to be an absulute URI. */ + /* Note that we expect the location to be an absulute URI. */ if (schemaLocation != NULL) { bkt = xmlSchemaGetSchemaBucket(pctxt, schemaLocation); if ((bkt != NULL) && (pctxt->constructor->bucket == bkt)) { /* Report self-imports/inclusions/redefinitions. */ - + xmlSchemaCustomErr(ACTXT_CAST pctxt, err, invokingNode, NULL, "The schema must not import/include/redefine itself", @@ -10320,7 +10341,7 @@ */ relation = xmlSchemaSchemaRelationCreate(); if (relation == NULL) - return(-1); + return(-1); xmlSchemaSchemaRelationAddChild(pctxt->constructor->bucket, relation); relation->type = type; @@ -10329,7 +10350,7 @@ * Save the namespace import information. */ if (WXS_IS_BUCKET_IMPMAIN(type)) { - relation->importNamespace = importNamespace; + relation->importNamespace = importNamespace; if (schemaLocation == NULL) { /* * No location; this is just an import of the namespace. @@ -10342,32 +10363,48 @@ } /* Did we already fetch the doc? */ - if (bkt != NULL) { - /* TODO: The following nasty cases will produce an error. */ + if (bkt != NULL) { if ((WXS_IS_BUCKET_IMPMAIN(type)) && (! bkt->imported)) { - /* We included/redefined and then try to import a schema. */ - xmlSchemaCustomErr(ACTXT_CAST pctxt, err, - invokingNode, NULL, - "The schema document '%s' cannot be imported, since " - "it was already included or redefined", - schemaLocation, NULL); - goto exit; + /* + * We included/redefined and then try to import a schema, + * but the new location provided for import was different. + */ + if (schemaLocation == NULL) + schemaLocation = BAD_CAST "in_memory_buffer"; + if (!xmlStrEqual(schemaLocation, + bkt->schemaLocation)) { + xmlSchemaCustomErr(ACTXT_CAST pctxt, err, + invokingNode, NULL, + "The schema document '%s' cannot be imported, since " + "it was already included or redefined", + schemaLocation, NULL); + goto exit; + } } else if ((! WXS_IS_BUCKET_IMPMAIN(type)) && (bkt->imported)) { - /* We imported and then try to include/redefine a schema. */ - xmlSchemaCustomErr(ACTXT_CAST pctxt, err, - invokingNode, NULL, - "The schema document '%s' cannot be included or " - "redefined, since it was already imported", - schemaLocation, NULL); - goto exit; - } + /* + * We imported and then try to include/redefine a schema, + * but the new location provided for the include/redefine + * was different. + */ + if (schemaLocation == NULL) + schemaLocation = BAD_CAST "in_memory_buffer"; + if (!xmlStrEqual(schemaLocation, + bkt->schemaLocation)) { + xmlSchemaCustomErr(ACTXT_CAST pctxt, err, + invokingNode, NULL, + "The schema document '%s' cannot be included or " + "redefined, since it was already imported", + schemaLocation, NULL); + goto exit; + } + } } - + if (WXS_IS_BUCKET_IMPMAIN(type)) { /* * Given that the schemaLocation [attribute] is only a hint, it is open * to applications to ignore all but the first for a given - * namespace, regardless of the actual value of schemaLocation, but + * namespace, regardless of the `actual value` of schemaLocation, but * such a strategy risks missing useful information when new * schemaLocations are offered. * @@ -10383,7 +10420,7 @@ * 5 Attempt to resolve the namespace name to locate such a resource. * * NOTE: (3) and (5) are not supported. - */ + */ if (bkt != NULL) { relation->bucket = bkt; goto exit; @@ -10391,7 +10428,7 @@ bkt = xmlSchemaGetSchemaBucketByTNS(pctxt, importNamespace, 1); - if (bkt != NULL) { + if (bkt != NULL) { relation->bucket = bkt; if (bkt->schemaLocation == NULL) { /* First given location of the schema; load the doc. */ @@ -10404,6 +10441,9 @@ * URGENT TODO: We should report a warning here. * res = XML_SCHEMAP_SRC_IMPORT; */ + if (schemaLocation == NULL) + schemaLocation = BAD_CAST "in_memory_buffer"; + xmlSchemaCustomWarning(ACTXT_CAST pctxt, XML_SCHEMAP_WARN_SKIP_SCHEMA, invokingNode, NULL, @@ -10414,19 +10454,19 @@ } goto exit; } - } - /* + } + /* * No bucket + first location: load the doc and create a * bucket. */ } else { /* and */ if (bkt != NULL) { - + if ((bkt->origTargetNamespace == NULL) && (bkt->targetNamespace != sourceTargetNamespace)) { xmlSchemaBucketPtr chamel; - + /* * Chameleon include/redefine: skip loading only if it was * aleady build for the targetNamespace of the including @@ -10451,7 +10491,7 @@ relation->bucket = chamel; goto exit; } - /* + /* * We need to parse the chameleon again for a different * targetNamespace. * CHAMELEON TODO: Optimize this by only parsing the @@ -10462,7 +10502,7 @@ } else { relation->bucket = bkt; goto exit; - } + } } } if ((bkt != NULL) && (bkt->doc != NULL)) { @@ -10484,7 +10524,8 @@ if (schemaDoc->URL != NULL) schemaLocation = xmlDictLookup(pctxt->dict, schemaDoc->URL, -1); - + else + schemaLocation = BAD_CAST "in_memory_buffer"; } else if ((schemaLocation != NULL) || (schemaBuffer != NULL)) { xmlParserCtxtPtr parserCtxt; @@ -10511,9 +10552,9 @@ /* Parse from memory buffer. */ doc = xmlCtxtReadMemory(parserCtxt, schemaBuffer, schemaBufferLen, NULL, NULL, SCHEMAS_PARSE_OPTIONS); - schemaLocation = xmlStrdup(BAD_CAST "in_memory_buffer"); + schemaLocation = BAD_CAST "in_memory_buffer"; if (doc != NULL) - doc->URL = schemaLocation; + doc->URL = xmlStrdup(schemaLocation); } /* * For : @@ -10547,7 +10588,7 @@ xmlSchemaCustomErr(ACTXT_CAST pctxt, res, invokingNode, NULL, "Failed to parse the XML resource '%s'", - schemaLocation, NULL); + schemaLocation, NULL); } } xmlFreeParserCtxt(parserCtxt); @@ -10567,11 +10608,11 @@ if (doc != NULL) { xmlNodePtr docElem = NULL; - located = 1; + located = 1; docElem = xmlDocGetRootElement(doc); if (docElem == NULL) { xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_NOROOT, - invokingNode, NULL, + invokingNode, NULL, "The document '%s' has no document element", schemaLocation, NULL); goto exit_error; @@ -10590,14 +10631,14 @@ schemaLocation, NULL); goto exit_error; } - /* + /* * Note that we don't apply a type check for the * targetNamespace value here. */ targetNamespace = xmlSchemaGetProp(pctxt, docElem, "targetNamespace"); } - + /* after_doc_loading: */ if ((bkt == NULL) && located) { /* Only create a bucket if the schema was located. */ @@ -10624,14 +10665,14 @@ if (relation != NULL) relation->bucket = bkt; } - + exit: /* * Return the bucket explicitely; this is needed for the * main schema. */ if (bucket != NULL) - *bucket = bkt; + *bucket = bkt; return (0); exit_error: @@ -10647,7 +10688,7 @@ xmlFreeDoc(doc); if (bkt != NULL) bkt->doc = NULL; - } + } return (-1); } @@ -10716,7 +10757,7 @@ XML_SCHEMAP_S4S_ATTR_INVALID_VALUE, NULL, node, xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYURI), - NULL, namespaceName, NULL, NULL, NULL); + NULL, schemaLocation, NULL, NULL, NULL); return (pctxt->err); } /* @@ -10747,8 +10788,8 @@ thisTargetNamespace = WXS_BUCKET(pctxt)->origTargetNamespace; if (namespaceName != NULL) { /* - * 1.1 If the namespace [attribute] is present, then its actual value - * must not match the actual value of the enclosing 's + * 1.1 If the namespace [attribute] is present, then its `actual value` + * must not match the `actual value` of the enclosing 's * targetNamespace [attribute]. */ if (xmlStrEqual(thisTargetNamespace, namespaceName)) { @@ -10802,11 +10843,11 @@ "Failed to locate a schema at location '%s'. " "Skipping the import", schemaLocation, NULL, NULL); } - - if ((bucket != NULL) && CAN_PARSE_SCHEMA(bucket)) { + + if ((bucket != NULL) && CAN_PARSE_SCHEMA(bucket)) { ret = xmlSchemaParseNewDoc(pctxt, schema, bucket); } - + return (ret); } @@ -10888,7 +10929,7 @@ XML_SCHEMAP_SRC_REDEFINE, NULL, node, "The schema document '%s' cannot redefine itself.", - *schemaLocation); + *schemaLocation); } else { xmlSchemaPCustomErr(pctxt, XML_SCHEMAP_SRC_INCLUDE, @@ -10898,7 +10939,7 @@ } goto exit_error; } - + return(0); exit_error: return(pctxt->err); @@ -10928,19 +10969,19 @@ res = xmlSchemaParseIncludeOrRedefineAttrs(pctxt, schema, node, (xmlChar **) (&schemaLocation), type); if (res != 0) - return(res); + return(res); /* * Load and add the schema document. */ res = xmlSchemaAddSchemaDoc(pctxt, type, schemaLocation, NULL, NULL, 0, node, pctxt->targetNamespace, NULL, &bucket); if (res != 0) - return(res); + return(res); /* * If we get no schema bucket back, then this means that the schema * document could not be located or was broken XML or was not * a schema document. - */ + */ if ((bucket == NULL) || (bucket->doc == NULL)) { if (type == XML_SCHEMA_SCHEMA_INCLUDE) { /* @@ -10949,7 +10990,7 @@ * for inclusions, since the that was the feedback from the * schema people. I.e. the following spec piece will *not* be * satisfied: - * SPEC src-include: "It is not an error for the actual value of the + * SPEC src-include: "It is not an error for the `actual value` of the * schemaLocation [attribute] to fail to resolve it all, in which * case no corresponding inclusion is performed. * So do we need a warning report here?" @@ -10966,7 +11007,7 @@ * * SPEC src-redefine (1) * "If there are any element information items among the [children] - * other than then the actual value of the + * other than then the `actual value` of the * schemaLocation [attribute] must successfully resolve." * TODO: Ask the WG if a the location has always to resolve * here as well! @@ -10982,13 +11023,13 @@ * Check targetNamespace sanity before parsing the new schema. * TODO: Note that we won't check further content if the * targetNamespace was bad. - */ - if (bucket->origTargetNamespace != NULL) { + */ + if (bucket->origTargetNamespace != NULL) { /* * SPEC src-include (2.1) - * "SII has a targetNamespace [attribute], and its actual - * value is identical to the actual value of the targetNamespace - * [attribute] of SII (which must have such an [attribute])." + * "SII has a targetNamespace [attribute], and its `actual + * value` is identical to the `actual value` of the targetNamespace + * [attribute] of SII' (which must have such an [attribute])." */ if (pctxt->targetNamespace == NULL) { xmlSchemaCustomErr(ACTXT_CAST pctxt, @@ -11012,28 +11053,29 @@ pctxt->targetNamespace); goto exit_error; } - } else if (pctxt->targetNamespace != NULL) { + } else if (pctxt->targetNamespace != NULL) { /* * Chameleons: the original target namespace will * differ from the resulting namespace. */ isChameleon = 1; if (bucket->parsed && - (bucket->targetNamespace != pctxt->targetNamespace)) { - /* - * This is a sanity check, I dunno yet if this can happen. - */ - PERROR_INT("xmlSchemaParseIncludeOrRedefine", - "trying to use an already parsed schema for a " - "different targetNamespace"); - return(-1); + bucket->origTargetNamespace != NULL) { + xmlSchemaCustomErr(ACTXT_CAST pctxt, + XML_SCHEMAP_SRC_INCLUDE, + node, NULL, + "The target namespace of the included/redefined schema " + "'%s' has to be absent or the same as the " + "including/redefining schema's target namespace", + schemaLocation, NULL); + goto exit_error; } bucket->targetNamespace = pctxt->targetNamespace; } - } + } /* * Parse the schema. - */ + */ if (bucket && (!bucket->parsed) && (bucket->doc != NULL)) { if (isChameleon) { /* TODO: Get rid of this flag on the schema itself. */ @@ -11050,8 +11092,8 @@ /* * And now for the children... */ - child = node->children; - if (type == XML_SCHEMA_SCHEMA_REDEFINE) { + child = node->children; + if (type == XML_SCHEMA_SCHEMA_REDEFINE) { /* * Parse (simpleType | complexType | group | attributeGroup))* */ @@ -11074,7 +11116,7 @@ } else if (IS_SCHEMA(child, "complexType")) { xmlSchemaParseComplexType(pctxt, schema, child, 1); /* hasRedefinitions = 1; */ - } else if (IS_SCHEMA(child, "group")) { + } else if (IS_SCHEMA(child, "group")) { /* hasRedefinitions = 1; */ xmlSchemaParseModelGroupDefinition(pctxt, schema, child); @@ -11094,7 +11136,7 @@ */ child = child->next; } - } + } if (child != NULL) { res = XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED; if (type == XML_SCHEMA_SCHEMA_REDEFINE) { @@ -11105,8 +11147,8 @@ xmlSchemaPContentErr(pctxt, res, NULL, node, child, NULL, "(annotation?)"); - } - } + } + } return(res); exit_error: @@ -11156,7 +11198,7 @@ * Redefinition Constraints and Semantics (src-redefine) * (6.1), (6.1.1), (6.1.2) * - * Schema Component Constraint: + * Schema Component Constraint: * All Group Limited (cos-all-limited) (2) * TODO: Actually this should go to component-level checks, * but is done here due to performance. Move it to an other layer @@ -11335,8 +11377,8 @@ /* * SPEC src-redefine: * (6.1) "If it has a among its contents at - * some level the actual value of whose ref - * [attribute] is the same as the actual value of + * some level the `actual value` of whose ref + * [attribute] is the same as the `actual value` of * its own name attribute plus target namespace, then * all of the following must be true:" * (6.1.1) "It must have exactly one such group." @@ -11361,9 +11403,9 @@ xmlChar *str = NULL; /* * SPEC src-redefine: - * (6.1.2) "The actual value of both that + * (6.1.2) "The `actual value` of both that * group's minOccurs and maxOccurs [attribute] - * must be 1 (or absent). + * must be 1 (or `absent`). */ xmlSchemaCustomErr(ACTXT_CAST ctxt, XML_SCHEMAP_SRC_REDEFINE, child, NULL, @@ -11380,7 +11422,7 @@ } ctxt->redef->reference = WXS_BASIC_CAST part; ctxt->redefCounter++; - } + } } } else if (IS_SCHEMA(child, "any")) { part = (xmlSchemaTreeItemPtr) @@ -11417,7 +11459,7 @@ WXS_ADD_PENDING(ctxt, item); } if (withParticle) - return ((xmlSchemaTreeItemPtr) particle); + return ((xmlSchemaTreeItemPtr) particle); else return ((xmlSchemaTreeItemPtr) item); } @@ -11469,7 +11511,7 @@ */ xmlSchemaPValAttrID(ctxt, node, BAD_CAST "id"); /* - * Attribute + * Attribute */ /* * Extract the base type. The "base" attribute is mandatory if inside @@ -11477,8 +11519,8 @@ * * SPEC (1.2) "...otherwise ( has no " * among its [children]), the simple type definition which is - * the {content type} of the type definition resolved to by - * the actual value of the base [attribute]" + * the {content type} of the type definition `resolved` to by + * the `actual value` of the base [attribute]" */ if (xmlSchemaPValAttrQName(ctxt, schema, NULL, node, "base", &(type->baseNs), &(type->base)) == 0) @@ -11501,8 +11543,8 @@ /* * REDEFINE: SPEC src-redefine (5) * "Within the [children], each must have a - * among its [children] ... the actual value of - * whose base [attribute] must be the same as the actual value + * among its [children] ... the `actual value` of + * whose base [attribute] must be the same as the `actual value` * of its own name attribute plus target namespace;" */ xmlSchemaPCustomErrExt(ctxt, XML_SCHEMAP_SRC_REDEFINE, @@ -11518,7 +11560,7 @@ type->base = NULL; type->baseNs = NULL; } - } + } } /* * And now for the children... @@ -11585,7 +11627,7 @@ /* * Model group reference . */ - } else if (IS_SCHEMA(child, "group")) { + } else if (IS_SCHEMA(child, "group")) { type->subtypes = (xmlSchemaTypePtr) xmlSchemaParseModelGroupDefRef(ctxt, schema, child); /* @@ -11923,13 +11965,13 @@ xmlSchemaPContentErr(ctxt, XML_SCHEMAP_S4S_ELEM_MISSING, NULL, node, NULL, NULL, - "(annotation?, (restriction | extension))"); + "(annotation?, (restriction | extension))"); } if (child == NULL) { xmlSchemaPContentErr(ctxt, XML_SCHEMAP_S4S_ELEM_MISSING, NULL, node, NULL, NULL, - "(annotation?, (restriction | extension))"); + "(annotation?, (restriction | extension))"); } if (IS_SCHEMA(child, "restriction")) { xmlSchemaParseRestriction(ctxt, schema, child, @@ -12086,7 +12128,7 @@ } else if (xmlSchemaPValAttrNode(ctxt, NULL, attr, xmlSchemaGetBuiltInType(XML_SCHEMAS_NCNAME), &name) != 0) { return (NULL); - } + } } if (topLevel == 0) { @@ -12175,7 +12217,7 @@ NULL, (xmlNodePtr) attr, NULL, "(#all | List of (extension | restriction))", attrValue, NULL, NULL, NULL); - } else + } else final = 1; } else if (xmlStrEqual(attr->name, BAD_CAST "block")) { /* @@ -12193,7 +12235,7 @@ NULL, (xmlNodePtr) attr, NULL, "(#all | List of (extension | restriction)) ", attrValue, NULL, NULL, NULL); - } else + } else block = 1; } else { xmlSchemaPIllegalAttrErr(ctxt, @@ -12204,7 +12246,7 @@ XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, NULL, attr); } } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) { - xmlSchemaPIllegalAttrErr(ctxt, + xmlSchemaPIllegalAttrErr(ctxt, XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, NULL, attr); } attr = attr->next; @@ -12263,7 +12305,7 @@ * SPEC * "...the third alternative (neither nor * ) is chosen. This case is understood as shorthand - * for complex content restricting the ur-type definition, and the + * for complex content restricting the `ur-type definition`, and the * details of the mappings should be modified as necessary. */ type->baseType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYTYPE); @@ -12332,15 +12374,15 @@ } /************************************************************************ - * * - * Validating using Schemas * - * * + * * + * Validating using Schemas * + * * ************************************************************************/ /************************************************************************ - * * - * Reading/Writing Schemas * - * * + * * + * Reading/Writing Schemas * + * * ************************************************************************/ #if 0 /* Will be enabled if it is clear what options are needed. */ @@ -12440,7 +12482,7 @@ return(NULL); ret->buffer = buffer; ret->size = size; - ret->dict = xmlDictCreate(); + ret->dict = xmlDictCreate(); return (ret); } @@ -12483,7 +12525,7 @@ if (ctxt == NULL) return; if (ctxt->doc != NULL && !ctxt->preserve) - xmlFreeDoc(ctxt->doc); + xmlFreeDoc(ctxt->doc); if (ctxt->vctxt != NULL) { xmlSchemaFreeValidCtxt(ctxt->vctxt); } @@ -12504,7 +12546,12 @@ * * ************************************************************************/ -static void +/** + * xmlSchemaBuildContentModelForSubstGroup: + * + * Returns 1 if nillable, 0 otherwise + */ +static int xmlSchemaBuildContentModelForSubstGroup(xmlSchemaParserCtxtPtr pctxt, xmlSchemaParticlePtr particle, int counter, xmlAutomataStatePtr end) { @@ -12512,6 +12559,7 @@ xmlSchemaElementPtr elemDecl, member; xmlSchemaSubstGroupPtr substGroup; int i; + int ret = 0; elemDecl = (xmlSchemaElementPtr) particle->children; /* @@ -12527,7 +12575,7 @@ "Internal error: xmlSchemaBuildContentModelForSubstGroup, " "declaration is marked having a subst. group but none " "available.\n", elemDecl->name, NULL); - return; + return(0); } if (counter >= 0) { /* @@ -12565,7 +12613,7 @@ * was incorrectly used instead of xmlAutomataNewTransition2() * (seems like a copy&paste bug from the XML_SCHEMA_TYPE_ALL * section in xmlSchemaBuildAContentModel() ). - * TODO: Check if xmlAutomataNewOnceTrans2() was instead + * TODO: Check if xmlAutomataNewOnceTrans2() was instead * intended for the above "counter" section originally. I.e., * check xs:all with subst-groups. * @@ -12574,7 +12622,7 @@ * 1, 1, member); */ tmp = xmlAutomataNewTransition2(pctxt->am, start, NULL, - member->name, member->targetNamespace, member); + member->name, member->targetNamespace, member); xmlAutomataNewEpsilon(pctxt->am, tmp, end); } } else { @@ -12607,21 +12655,31 @@ xmlAutomataNewCountedTrans(pctxt->am, hop, start, counter); xmlAutomataNewCounterTrans(pctxt->am, hop, end, counter); } - if (particle->minOccurs == 0) + if (particle->minOccurs == 0) { xmlAutomataNewEpsilon(pctxt->am, start, end); + ret = 1; + } pctxt->state = end; + return(ret); } -static void +/** + * xmlSchemaBuildContentModelForElement: + * + * Returns 1 if nillable, 0 otherwise + */ +static int xmlSchemaBuildContentModelForElement(xmlSchemaParserCtxtPtr ctxt, xmlSchemaParticlePtr particle) { + int ret = 0; + if (((xmlSchemaElementPtr) particle->children)->flags & XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD) { /* * Substitution groups. */ - xmlSchemaBuildContentModelForSubstGroup(ctxt, particle, -1, NULL); + ret = xmlSchemaBuildContentModelForSubstGroup(ctxt, particle, -1, NULL); } else { xmlSchemaElementPtr elemDecl; xmlAutomataStatePtr start; @@ -12629,7 +12687,7 @@ elemDecl = (xmlSchemaElementPtr) particle->children; if (elemDecl->flags & XML_SCHEMAS_ELEM_ABSTRACT) - return; + return(0); if (particle->maxOccurs == 1) { start = ctxt->state; ctxt->state = xmlAutomataNewTransition2(ctxt->am, start, NULL, @@ -12637,11 +12695,11 @@ } else if ((particle->maxOccurs >= UNBOUNDED) && (particle->minOccurs < 2)) { /* Special case. */ - start = ctxt->state; + start = ctxt->state; ctxt->state = xmlAutomataNewTransition2(ctxt->am, start, NULL, - elemDecl->name, elemDecl->targetNamespace, elemDecl); + elemDecl->name, elemDecl->targetNamespace, elemDecl); ctxt->state = xmlAutomataNewTransition2(ctxt->am, ctxt->state, ctxt->state, - elemDecl->name, elemDecl->targetNamespace, elemDecl); + elemDecl->name, elemDecl->targetNamespace, elemDecl); } else { int counter; int maxOccurs = particle->maxOccurs == UNBOUNDED ? @@ -12657,9 +12715,12 @@ ctxt->state = xmlAutomataNewCounterTrans(ctxt->am, ctxt->state, NULL, counter); } - if (particle->minOccurs == 0) + if (particle->minOccurs == 0) { xmlAutomataNewEpsilon(ctxt->am, start, ctxt->state); + ret = 1; + } } + return(ret); } /** @@ -12670,21 +12731,24 @@ * * Create the automaton for the {content type} of a complex type. * + * Returns 1 if the content is nillable, 0 otherwise */ -static void +static int xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr pctxt, xmlSchemaParticlePtr particle) { + int ret = 0, tmp2; + if (particle == NULL) { - PERROR_INT("xmlSchemaBuildAContentModel", "particle is NULL"); - return; + PERROR_INT("xmlSchemaBuildAContentModel", "particle is NULL"); + return(1); } if (particle->children == NULL) { /* * Just return in this case. A missing "term" of the particle * might arise due to an invalid "term" component. */ - return; + return(1); } switch (particle->children->type) { @@ -12736,7 +12800,8 @@ int counter; xmlAutomataStatePtr hop; int maxOccurs = - particle->maxOccurs == UNBOUNDED ? UNBOUNDED : particle->maxOccurs - 1; + particle->maxOccurs == UNBOUNDED ? UNBOUNDED : + particle->maxOccurs - 1; int minOccurs = particle->minOccurs < 1 ? 0 : particle->minOccurs - 1; @@ -12771,243 +12836,282 @@ } if (particle->minOccurs == 0) { xmlAutomataNewEpsilon(pctxt->am, start, end); + ret = 1; } pctxt->state = end; break; } case XML_SCHEMA_TYPE_ELEMENT: - xmlSchemaBuildContentModelForElement(pctxt, particle); + ret = xmlSchemaBuildContentModelForElement(pctxt, particle); break; case XML_SCHEMA_TYPE_SEQUENCE:{ - xmlSchemaTreeItemPtr sub; + xmlSchemaTreeItemPtr sub; - /* - * If max and min occurances are default (1) then - * simply iterate over the particles of the . - */ - if ((particle->minOccurs == 1) && (particle->maxOccurs == 1)) { - sub = particle->children->children; - while (sub != NULL) { - xmlSchemaBuildAContentModel(pctxt, - (xmlSchemaParticlePtr) sub); - sub = sub->next; - } - } else { - xmlAutomataStatePtr oldstate = pctxt->state; + ret = 1; + /* + * If max and min occurances are default (1) then + * simply iterate over the particles of the . + */ + if ((particle->minOccurs == 1) && (particle->maxOccurs == 1)) { + sub = particle->children->children; - if (particle->maxOccurs >= UNBOUNDED) { - if (particle->minOccurs > 1) { - xmlAutomataStatePtr tmp; - int counter; - - pctxt->state = xmlAutomataNewEpsilon(pctxt->am, - oldstate, NULL); - oldstate = pctxt->state; - - counter = xmlAutomataNewCounter(pctxt->am, - particle->minOccurs - 1, UNBOUNDED); - - sub = particle->children->children; - while (sub != NULL) { - xmlSchemaBuildAContentModel(pctxt, - (xmlSchemaParticlePtr) sub); - sub = sub->next; - } - tmp = pctxt->state; - xmlAutomataNewCountedTrans(pctxt->am, tmp, - oldstate, counter); - pctxt->state = - xmlAutomataNewCounterTrans(pctxt->am, tmp, - NULL, counter); - - } else { - pctxt->state = xmlAutomataNewEpsilon(pctxt->am, - oldstate, NULL); - oldstate = pctxt->state; - - sub = particle->children->children; - while (sub != NULL) { - xmlSchemaBuildAContentModel(pctxt, - (xmlSchemaParticlePtr) sub); - sub = sub->next; - } - xmlAutomataNewEpsilon(pctxt->am, pctxt->state, - oldstate); - /* - * epsilon needed to block previous trans from - * being allowed to enter back from another - * construct - */ - pctxt->state = xmlAutomataNewEpsilon(pctxt->am, - pctxt->state, NULL); - if (particle->minOccurs == 0) { - xmlAutomataNewEpsilon(pctxt->am, - oldstate, pctxt->state); - } - } - } else if ((particle->maxOccurs > 1) - || (particle->minOccurs > 1)) { + while (sub != NULL) { + tmp2 = xmlSchemaBuildAContentModel(pctxt, + (xmlSchemaParticlePtr) sub); + if (tmp2 != 1) ret = 0; + sub = sub->next; + } + } else { + xmlAutomataStatePtr oldstate = pctxt->state; + + if (particle->maxOccurs >= UNBOUNDED) { + if (particle->minOccurs > 1) { xmlAutomataStatePtr tmp; int counter; pctxt->state = xmlAutomataNewEpsilon(pctxt->am, - oldstate, NULL); + oldstate, NULL); oldstate = pctxt->state; counter = xmlAutomataNewCounter(pctxt->am, - particle->minOccurs - 1, - particle->maxOccurs - 1); + particle->minOccurs - 1, UNBOUNDED); sub = particle->children->children; while (sub != NULL) { - xmlSchemaBuildAContentModel(pctxt, - (xmlSchemaParticlePtr) sub); + tmp2 = xmlSchemaBuildAContentModel(pctxt, + (xmlSchemaParticlePtr) sub); + if (tmp2 != 1) ret = 0; sub = sub->next; } tmp = pctxt->state; - xmlAutomataNewCountedTrans(pctxt->am, - tmp, oldstate, counter); + xmlAutomataNewCountedTrans(pctxt->am, tmp, + oldstate, counter); pctxt->state = - xmlAutomataNewCounterTrans(pctxt->am, tmp, NULL, - counter); - if (particle->minOccurs == 0) { + xmlAutomataNewCounterTrans(pctxt->am, tmp, + NULL, counter); + if (ret == 1) xmlAutomataNewEpsilon(pctxt->am, - oldstate, pctxt->state); - } + oldstate, pctxt->state); + } else { + pctxt->state = xmlAutomataNewEpsilon(pctxt->am, + oldstate, NULL); + oldstate = pctxt->state; + sub = particle->children->children; while (sub != NULL) { - xmlSchemaBuildAContentModel(pctxt, - (xmlSchemaParticlePtr) sub); + tmp2 = xmlSchemaBuildAContentModel(pctxt, + (xmlSchemaParticlePtr) sub); + if (tmp2 != 1) ret = 0; sub = sub->next; } + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, + oldstate); + /* + * epsilon needed to block previous trans from + * being allowed to enter back from another + * construct + */ + pctxt->state = xmlAutomataNewEpsilon(pctxt->am, + pctxt->state, NULL); if (particle->minOccurs == 0) { - xmlAutomataNewEpsilon(pctxt->am, oldstate, - pctxt->state); + xmlAutomataNewEpsilon(pctxt->am, + oldstate, pctxt->state); + ret = 1; } } - } - break; - } - case XML_SCHEMA_TYPE_CHOICE:{ - xmlSchemaTreeItemPtr sub; - xmlAutomataStatePtr start, end; + } else if ((particle->maxOccurs > 1) + || (particle->minOccurs > 1)) { + xmlAutomataStatePtr tmp; + int counter; - start = pctxt->state; - end = xmlAutomataNewState(pctxt->am); + pctxt->state = xmlAutomataNewEpsilon(pctxt->am, + oldstate, NULL); + oldstate = pctxt->state; + + counter = xmlAutomataNewCounter(pctxt->am, + particle->minOccurs - 1, + particle->maxOccurs - 1); - /* - * iterate over the subtypes and remerge the end with an - * epsilon transition - */ - if (particle->maxOccurs == 1) { - sub = particle->children->children; + sub = particle->children->children; while (sub != NULL) { - pctxt->state = start; - xmlSchemaBuildAContentModel(pctxt, - (xmlSchemaParticlePtr) sub); - xmlAutomataNewEpsilon(pctxt->am, pctxt->state, end); + tmp2 = xmlSchemaBuildAContentModel(pctxt, + (xmlSchemaParticlePtr) sub); + if (tmp2 != 1) ret = 0; sub = sub->next; } + tmp = pctxt->state; + xmlAutomataNewCountedTrans(pctxt->am, + tmp, oldstate, counter); + pctxt->state = + xmlAutomataNewCounterTrans(pctxt->am, tmp, NULL, + counter); + if ((particle->minOccurs == 0) || (ret == 1)) { + xmlAutomataNewEpsilon(pctxt->am, + oldstate, pctxt->state); + ret = 1; + } } else { - int counter; - xmlAutomataStatePtr hop, base; - int maxOccurs = particle->maxOccurs == UNBOUNDED ? - UNBOUNDED : particle->maxOccurs - 1; - int minOccurs = - particle->minOccurs < 1 ? 0 : particle->minOccurs - 1; - - /* - * use a counter to keep track of the number of transtions - * which went through the choice. - */ - counter = - xmlAutomataNewCounter(pctxt->am, minOccurs, maxOccurs); - hop = xmlAutomataNewState(pctxt->am); - base = xmlAutomataNewState(pctxt->am); - - sub = particle->children->children; + sub = particle->children->children; while (sub != NULL) { - pctxt->state = base; - xmlSchemaBuildAContentModel(pctxt, - (xmlSchemaParticlePtr) sub); - xmlAutomataNewEpsilon(pctxt->am, pctxt->state, hop); + tmp2 = xmlSchemaBuildAContentModel(pctxt, + (xmlSchemaParticlePtr) sub); + if (tmp2 != 1) ret = 0; sub = sub->next; } - xmlAutomataNewEpsilon(pctxt->am, start, base); - xmlAutomataNewCountedTrans(pctxt->am, hop, base, counter); - xmlAutomataNewCounterTrans(pctxt->am, hop, end, counter); - } - if (particle->minOccurs == 0) { - xmlAutomataNewEpsilon(pctxt->am, start, end); + + /* + * epsilon needed to block previous trans from + * being allowed to enter back from another + * construct + */ + pctxt->state = xmlAutomataNewEpsilon(pctxt->am, + pctxt->state, NULL); + + if (particle->minOccurs == 0) { + xmlAutomataNewEpsilon(pctxt->am, oldstate, + pctxt->state); + ret = 1; + } } - pctxt->state = end; - break; } - case XML_SCHEMA_TYPE_ALL:{ - xmlAutomataStatePtr start; - xmlSchemaParticlePtr sub; - xmlSchemaElementPtr elemDecl; - int lax; - - sub = (xmlSchemaParticlePtr) particle->children->children; - if (sub == NULL) - break; - start = pctxt->state; + break; + } + case XML_SCHEMA_TYPE_CHOICE:{ + xmlSchemaTreeItemPtr sub; + xmlAutomataStatePtr start, end; + + ret = 0; + start = pctxt->state; + end = xmlAutomataNewState(pctxt->am); + + /* + * iterate over the subtypes and remerge the end with an + * epsilon transition + */ + if (particle->maxOccurs == 1) { + sub = particle->children->children; while (sub != NULL) { pctxt->state = start; + tmp2 = xmlSchemaBuildAContentModel(pctxt, + (xmlSchemaParticlePtr) sub); + if (tmp2 == 1) ret = 1; + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, end); + sub = sub->next; + } + } else { + int counter; + xmlAutomataStatePtr hop, base; + int maxOccurs = particle->maxOccurs == UNBOUNDED ? + UNBOUNDED : particle->maxOccurs - 1; + int minOccurs = + particle->minOccurs < 1 ? 0 : particle->minOccurs - 1; - elemDecl = (xmlSchemaElementPtr) sub->children; - if (elemDecl == NULL) { - PERROR_INT("xmlSchemaBuildAContentModel", - " particle has no term"); - return; - }; - /* - * NOTE: The {max occurs} of all the particles in the - * {particles} of the group must be 0 or 1; this is - * already ensured during the parse of the content of - * . - */ - if (elemDecl->flags & XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD) { - int counter; + /* + * use a counter to keep track of the number of transtions + * which went through the choice. + */ + counter = + xmlAutomataNewCounter(pctxt->am, minOccurs, maxOccurs); + hop = xmlAutomataNewState(pctxt->am); + base = xmlAutomataNewState(pctxt->am); - /* - * This is an abstract group, we need to share - * the same counter for all the element transitions - * derived from the group - */ - counter = xmlAutomataNewCounter(pctxt->am, - sub->minOccurs, sub->maxOccurs); - xmlSchemaBuildContentModelForSubstGroup(pctxt, - sub, counter, pctxt->state); - } else { - if ((sub->minOccurs == 1) && - (sub->maxOccurs == 1)) { - xmlAutomataNewOnceTrans2(pctxt->am, pctxt->state, - pctxt->state, - elemDecl->name, - elemDecl->targetNamespace, - 1, 1, elemDecl); - } else if ((sub->minOccurs == 0) && - (sub->maxOccurs == 1)) { - - xmlAutomataNewCountTrans2(pctxt->am, pctxt->state, - pctxt->state, - elemDecl->name, - elemDecl->targetNamespace, - 0, - 1, - elemDecl); - } - } - sub = (xmlSchemaParticlePtr) sub->next; + sub = particle->children->children; + while (sub != NULL) { + pctxt->state = base; + tmp2 = xmlSchemaBuildAContentModel(pctxt, + (xmlSchemaParticlePtr) sub); + if (tmp2 == 1) ret = 1; + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, hop); + sub = sub->next; } - lax = particle->minOccurs == 0; - pctxt->state = - xmlAutomataNewAllTrans(pctxt->am, pctxt->state, NULL, lax); + xmlAutomataNewEpsilon(pctxt->am, start, base); + xmlAutomataNewCountedTrans(pctxt->am, hop, base, counter); + xmlAutomataNewCounterTrans(pctxt->am, hop, end, counter); + if (ret == 1) + xmlAutomataNewEpsilon(pctxt->am, base, end); + } + if (particle->minOccurs == 0) { + xmlAutomataNewEpsilon(pctxt->am, start, end); + ret = 1; + } + pctxt->state = end; + break; + } + case XML_SCHEMA_TYPE_ALL:{ + xmlAutomataStatePtr start, tmp; + xmlSchemaParticlePtr sub; + xmlSchemaElementPtr elemDecl; + + ret = 1; + + sub = (xmlSchemaParticlePtr) particle->children->children; + if (sub == NULL) break; + + ret = 0; + + start = pctxt->state; + tmp = xmlAutomataNewState(pctxt->am); + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, tmp); + pctxt->state = tmp; + while (sub != NULL) { + pctxt->state = tmp; + + elemDecl = (xmlSchemaElementPtr) sub->children; + if (elemDecl == NULL) { + PERROR_INT("xmlSchemaBuildAContentModel", + " particle has no term"); + return(ret); + }; + /* + * NOTE: The {max occurs} of all the particles in the + * {particles} of the group must be 0 or 1; this is + * already ensured during the parse of the content of + * . + */ + if (elemDecl->flags & XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD) { + int counter; + + /* + * This is an abstract group, we need to share + * the same counter for all the element transitions + * derived from the group + */ + counter = xmlAutomataNewCounter(pctxt->am, + sub->minOccurs, sub->maxOccurs); + xmlSchemaBuildContentModelForSubstGroup(pctxt, + sub, counter, pctxt->state); + } else { + if ((sub->minOccurs == 1) && + (sub->maxOccurs == 1)) { + xmlAutomataNewOnceTrans2(pctxt->am, pctxt->state, + pctxt->state, + elemDecl->name, + elemDecl->targetNamespace, + 1, 1, elemDecl); + } else if ((sub->minOccurs == 0) && + (sub->maxOccurs == 1)) { + + xmlAutomataNewCountTrans2(pctxt->am, pctxt->state, + pctxt->state, + elemDecl->name, + elemDecl->targetNamespace, + 0, + 1, + elemDecl); + } + } + sub = (xmlSchemaParticlePtr) sub->next; } + pctxt->state = + xmlAutomataNewAllTrans(pctxt->am, pctxt->state, NULL, 0); + if (particle->minOccurs == 0) { + xmlAutomataNewEpsilon(pctxt->am, start, pctxt->state); + ret = 1; + } + break; + } case XML_SCHEMA_TYPE_GROUP: /* * If we hit a model group definition, then this means that @@ -13016,14 +13120,16 @@ * TODO: But the group should be substituted and not occur at * all in the content model at this point. Fix this. */ + ret = 1; break; default: xmlSchemaInternalErr2(ACTXT_CAST pctxt, "xmlSchemaBuildAContentModel", "found unexpected term of type '%s' in content model", WXS_ITEM_TYPE_NAME(particle->children), NULL); - return; + return(ret); } + return(ret); } /** @@ -13107,8 +13213,8 @@ if ((elemDecl->subtypes == NULL) && (elemDecl->namedType != NULL)) { xmlSchemaTypePtr type; - /* (type definition) ... otherwise the type definition resolved - * to by the actual value of the type [attribute] ... + /* (type definition) ... otherwise the type definition `resolved` + * to by the `actual value` of the type [attribute] ... */ type = xmlSchemaGetType(ctxt->schema, elemDecl->namedType, elemDecl->namedTypeNs); @@ -13146,7 +13252,7 @@ /* * The type definitions is set to: * SPEC "...the {type definition} of the element - * declaration resolved to by the actual value + * declaration `resolved` to by the `actual value` * of the substitutionGroup [attribute], if present" */ if (elemDecl->subtypes == NULL) @@ -13184,8 +13290,8 @@ /* * SPEC (1) "If the alternative is chosen, then [Definition:] - * define the explicit members as the type definitions resolved - * to by the items in the actual value of the memberTypes [attribute], + * define the explicit members as the type definitions `resolved` + * to by the items in the `actual value` of the memberTypes [attribute], * if any, followed by the type definitions corresponding to the * s among the [children] of , if any." */ @@ -13298,7 +13404,6 @@ return (0); } -#endif static xmlSchemaTypePtr xmlSchemaQueryBuiltInType(xmlSchemaTypePtr type) @@ -13311,6 +13416,7 @@ return(type); return(xmlSchemaQueryBuiltInType(type->subtypes)); } +#endif /** * xmlSchemaGetPrimitiveType: @@ -13480,7 +13586,7 @@ return (0); } /* - * 3 If both O1 and O2 are sets of (namespace names or absent), + * 3 If both O1 and O2 are sets of (namespace names or `absent`), * then the union of those sets must be the value. */ if ((completeWild->nsSet != NULL) && (curWild->nsSet != NULL)) { @@ -13514,7 +13620,7 @@ } /* * 4 If the two are negations of different values (namespace names - * or absent), then a pair of not and absent must be the value. + * or `absent`), then a pair of not and `absent` must be the value. */ if ((completeWild->negNsSet != NULL) && (curWild->negNsSet != NULL) && @@ -13556,7 +13662,7 @@ if (nsFound && absentFound) { /* * 5.1 If the set S includes both the negated namespace - * name and absent, then any must be the value. + * name and `absent`, then any must be the value. */ completeWild->any = 1; if (completeWild->nsSet != NULL) { @@ -13570,7 +13676,7 @@ } else if (nsFound && (!absentFound)) { /* * 5.2 If the set S includes the negated namespace name - * but not absent, then a pair of not and absent must + * but not `absent`, then a pair of not and `absent` must * be the value. */ if (completeWild->nsSet != NULL) { @@ -13585,7 +13691,7 @@ completeWild->negNsSet->value = NULL; } else if ((!nsFound) && absentFound) { /* - * 5.3 If the set S includes absent but not the negated + * 5.3 If the set S includes `absent` but not the negated * namespace name, then the union is not expressible. */ xmlSchemaPErr(ctxt, completeWild->node, @@ -13596,7 +13702,7 @@ } else if ((!nsFound) && (!absentFound)) { /* * 5.4 If the set S does not include either the negated namespace - * name or absent, then whichever of O1 or O2 is a pair of not + * name or `absent`, then whichever of O1 or O2 is a pair of not * and a namespace name must be the value. */ if (completeWild->negNsSet == NULL) { @@ -13630,7 +13736,7 @@ while (cur != NULL) { if (cur->value == NULL) { /* - * 6.1 If the set S includes absent, then any must be the + * 6.1 If the set S includes `absent`, then any must be the * value. */ completeWild->any = 1; @@ -13648,8 +13754,8 @@ } if (completeWild->negNsSet == NULL) { /* - * 6.2 If the set S does not include absent, then a pair of not - * and absent must be the value. + * 6.2 If the set S does not include `absent`, then a pair of not + * and `absent` must be the value. */ if (completeWild->nsSet != NULL) { xmlSchemaFreeWildcardNsSet(completeWild->nsSet); @@ -13732,9 +13838,9 @@ } /* * 3 If either O1 or O2 is a pair of not and a value (a namespace - * name or absent) and the other is a set of (namespace names or - * absent), then that set, minus the negated value if it was in - * the set, minus absent if it was in the set, must be the value. + * name or `absent`) and the other is a set of (namespace names or + * `absent`), then that set, minus the negated value if it was in + * the set, minus `absent` if it was in the set, must be the value. */ if (((completeWild->negNsSet != NULL) && (curWild->nsSet != NULL)) || ((curWild->negNsSet != NULL) && (completeWild->nsSet != NULL))) { @@ -13783,7 +13889,7 @@ return(0); } /* - * 4 If both O1 and O2 are sets of (namespace names or absent), + * 4 If both O1 and O2 are sets of (namespace names or `absent`), * then the intersection of those sets must be the value. */ if ((completeWild->nsSet != NULL) && (curWild->nsSet != NULL)) { @@ -13833,7 +13939,7 @@ } /* * 6 If the one is a negation of a namespace name and the other - * is a negation of absent, then the one which is the negation + * is a negation of `absent`, then the one which is the negation * of a namespace name must be the value. */ if ((completeWild->negNsSet != NULL) && (curWild->negNsSet != NULL) && @@ -13865,15 +13971,15 @@ if (super->any) return (0); /* - * 2.1 sub must be a pair of not and a namespace name or absent. + * 2.1 sub must be a pair of not and a namespace name or `absent`. * 2.2 super must be a pair of not and the same value. */ if ((sub->negNsSet != NULL) && (super->negNsSet != NULL) && - (sub->negNsSet->value == sub->negNsSet->value)) + (sub->negNsSet->value == super->negNsSet->value)) return (0); /* - * 3.1 sub must be a set whose members are either namespace names or absent. + * 3.1 sub must be a set whose members are either namespace names or `absent`. */ if (sub->nsSet != NULL) { /* @@ -13904,7 +14010,7 @@ xmlSchemaWildcardNsPtr cur; /* * 3.2.2 super must be a pair of not and a namespace name or - * absent and that value must not be in sub's set. + * `absent` and that value must not be in sub's set. */ cur = sub->nsSet; while (cur != NULL) { @@ -13929,7 +14035,7 @@ if (val != 0) *val = NULL; - if (attruse->defValue != NULL) { + if (attruse->defValue != NULL) { *value = attruse->defValue; if (val != NULL) *val = attruse->defVal; @@ -14009,12 +14115,12 @@ xmlSchemaItemListPtr baseUses, xmlSchemaWildcardPtr wild, xmlSchemaWildcardPtr baseWild) -{ +{ xmlSchemaAttributeUsePtr cur = NULL, bcur; int i, j, found; /* err = 0; */ const xmlChar *bEffValue; int effFixed; - + if (uses != NULL) { for (i = 0; i < uses->nbItems; i++) { cur = uses->items[i]; @@ -14022,7 +14128,7 @@ if (baseUses == NULL) goto not_found; for (j = 0; j < baseUses->nbItems; j++) { - bcur = baseUses->items[j]; + bcur = baseUses->items[j]; if ((WXS_ATTRUSE_DECL_NAME(cur) == WXS_ATTRUSE_DECL_NAME(bcur)) && (WXS_ATTRUSE_DECL_TNS(cur) == @@ -14035,7 +14141,7 @@ * namespace}, then all of the following must be true:" */ found = 1; - + if ((cur->occurs == XML_SCHEMAS_ATTR_USE_OPTIONAL) && (bcur->occurs == XML_SCHEMAS_ATTR_USE_REQUIRED)) { @@ -14061,12 +14167,12 @@ WXS_ATTRUSE_TYPEDEF(bcur), 0) != 0) { xmlChar *strA = NULL, *strB = NULL, *strC = NULL; - + /* * SPEC (2.1.2) "R's {attribute declaration}'s * {type definition} must be validly derived from * B's {type definition} given the empty set as - * defined in Type Derivation OK (Simple) (3.14.6)." + * defined in Type Derivation OK (Simple) ($3.14.6)." */ xmlSchemaPAttrUseErr4(pctxt, XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2, @@ -14098,17 +14204,17 @@ /* * 2.1.3 ... one of the following must be true * - * 2.1.3.1 B's effective value constraint is - * absent or default. + * 2.1.3.1 B's `effective value constraint` is + * `absent` or default. */ if ((bEffValue != NULL) && (effFixed == 1)) { const xmlChar *rEffValue = NULL; - + xmlSchemaGetEffectiveValueConstraint(bcur, &effFixed, &rEffValue, NULL); /* - * 2.1.3.2 R's effective value constraint is + * 2.1.3.2 R's `effective value constraint` is * fixed with the same string as B's. * MAYBE TODO: Compare the computed values. * Hmm, it says "same string" so @@ -14118,7 +14224,7 @@ (! WXS_ARE_DEFAULT_STR_EQUAL(rEffValue, bEffValue))) { xmlChar *str = NULL; - + xmlSchemaPAttrUseErr4(pctxt, XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3, WXS_ITEM_NODE(item), item, cur, @@ -14137,21 +14243,21 @@ break; } } -not_found: +not_found: if (!found) { /* * (2.2) "otherwise the {base type definition} must have an * {attribute wildcard} and the {target namespace} of the - * R's {attribute declaration} must be valid with respect + * R's {attribute declaration} must be `valid` with respect * to that wildcard, as defined in Wildcard allows Namespace - * Name (3.10.4)." + * Name ($3.10.4)." */ if ((baseWild == NULL) || (xmlSchemaCheckCVCWildcardNamespace(baseWild, (WXS_ATTRUSE_DECL(cur))->targetNamespace) != 0)) { xmlChar *str = NULL; - + xmlSchemaPAttrUseErr4(pctxt, XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2, WXS_ITEM_NODE(item), item, cur, @@ -14167,7 +14273,7 @@ } } /* - * SPEC derivation-ok-restriction (3): + * SPEC derivation-ok-restriction (3): * (3) "For each attribute use in the {attribute uses} of the {base type * definition} whose {required} is true, there must be an attribute * use with an {attribute declaration} with the same {name} and @@ -14182,7 +14288,7 @@ found = 0; if (uses != NULL) { for (i = 0; i < uses->nbItems; i++) { - cur = uses->items[i]; + cur = uses->items[i]; if ((WXS_ATTRUSE_DECL_NAME(cur) == WXS_ATTRUSE_DECL_NAME(bcur)) && (WXS_ATTRUSE_DECL_TNS(cur) == @@ -14194,7 +14300,7 @@ } if (!found) { xmlChar *strA = NULL, *strB = NULL; - + xmlSchemaCustomErr4(ACTXT_CAST pctxt, XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3, NULL, item, @@ -14216,19 +14322,19 @@ /* * (4) "If there is an {attribute wildcard}, all of the * following must be true:" - */ + */ if (baseWild == NULL) { xmlChar *str = NULL; /* * (4.1) "The {base type definition} must also have one." - */ + */ xmlSchemaCustomErr4(ACTXT_CAST pctxt, XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1, NULL, item, "The %s has an attribute wildcard, " "but the %s %s '%s' does not have one", - WXS_ITEM_TYPE_NAME(item), + WXS_ITEM_TYPE_NAME(item), WXS_ACTION_STR(action), WXS_ITEM_TYPE_NAME(baseItem), xmlSchemaGetComponentQName(&str, baseItem)); @@ -14242,7 +14348,7 @@ * (4.2) "The complex type definition's {attribute wildcard}'s * {namespace constraint} must be a subset of the {base type * definition}'s {attribute wildcard}'s {namespace constraint}, - * as defined by Wildcard Subset (3.10.6)." + * as defined by Wildcard Subset ($3.10.6)." */ xmlSchemaCustomErr4(ACTXT_CAST pctxt, XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2, @@ -14256,8 +14362,8 @@ FREE_AND_NULL(str); return(pctxt->err); } - /* 4.3 Unless the {base type definition} is the ur-type - * definition, the complex type definition's {attribute + /* 4.3 Unless the {base type definition} is the `ur-type + * definition`, the complex type definition's {attribute * wildcard}'s {process contents} must be identical to or * stronger than the {base type definition}'s {attribute * wildcard}'s {process contents}, where strict is stronger @@ -14308,7 +14414,7 @@ xmlSchemaTypePtr type) { xmlSchemaTypePtr baseType = NULL; - xmlSchemaAttributeUsePtr use; + xmlSchemaAttributeUsePtr use; xmlSchemaItemListPtr uses, baseUses, prohibs = NULL; if (type->baseType == NULL) { @@ -14316,7 +14422,7 @@ "no base type"); return (-1); } - baseType = type->baseType; + baseType = type->baseType; if (WXS_IS_TYPE_NOT_FIXED(baseType)) if (xmlSchemaTypeFixup(baseType, ACTXT_CAST pctxt) == -1) return(-1); @@ -14328,7 +14434,7 @@ * wildcard, i.e. intersect multiple wildcards. * Move attribute prohibitions into a separate list. */ - if (uses != NULL) { + if (uses != NULL) { if (WXS_IS_RESTRICTION(type)) { /* * This one will transfer all attr. prohibitions @@ -14362,7 +14468,7 @@ if (WXS_IS_RESTRICTION(type)) { int usesCount; - xmlSchemaAttributeUsePtr tmp; + xmlSchemaAttributeUsePtr tmp; if (uses != NULL) usesCount = uses->nbItems; @@ -14412,15 +14518,15 @@ } } else { /* Extension. */ - for (i = 0; i < baseUses->nbItems; i++) { - use = baseUses->items[i]; + for (i = 0; i < baseUses->nbItems; i++) { + use = baseUses->items[i]; if (uses == NULL) { type->attrUses = xmlSchemaItemListCreate(); if (type->attrUses == NULL) goto exit_failure; uses = type->attrUses; } - xmlSchemaItemListAddSize(uses, baseUses->nbItems, use); + xmlSchemaItemListAddSize(uses, baseUses->nbItems, use); } } } @@ -14440,10 +14546,10 @@ /* * Compute the complete wildcard. */ - if (WXS_IS_EXTENSION(type)) { + if (WXS_IS_EXTENSION(type)) { if (baseType->attributeWildcard != NULL) { /* - * (3.2.2.1) "If the base wildcard is non-absent, then + * (3.2.2.1) "If the `base wildcard` is non-`absent`, then * the appropriate case among the following:" */ if (type->attributeWildcard != NULL) { @@ -14451,26 +14557,26 @@ * Union the complete wildcard with the base wildcard. * SPEC {attribute wildcard} * (3.2.2.1.2) "otherwise a wildcard whose {process contents} - * and {annotation} are those of the complete wildcard, + * and {annotation} are those of the `complete wildcard`, * and whose {namespace constraint} is the intensional union - * of the {namespace constraint} of the complete wildcard - * and of the base wildcard, as defined in Attribute - * Wildcard Union (3.10.6)." + * of the {namespace constraint} of the `complete wildcard` + * and of the `base wildcard`, as defined in Attribute + * Wildcard Union ($3.10.6)." */ if (xmlSchemaUnionWildcards(pctxt, type->attributeWildcard, baseType->attributeWildcard) == -1) - goto exit_failure; + goto exit_failure; } else { /* - * (3.2.2.1.1) "If the complete wildcard is absent, - * then the base wildcard." + * (3.2.2.1.1) "If the `complete wildcard` is `absent`, + * then the `base wildcard`." */ type->attributeWildcard = baseType->attributeWildcard; - } + } } else { /* - * (3.2.2.2) "otherwise (the base wildcard is absent) the - * complete wildcard" + * (3.2.2.2) "otherwise (the `base wildcard` is `absent`) the + * `complete wildcard`" * NOOP */ } @@ -14478,11 +14584,11 @@ /* * SPEC {attribute wildcard} * (3.1) "If the alternative is chosen, then the - * complete wildcard;" + * `complete wildcard`;" * NOOP */ } - + return (0); exit_failure: @@ -14586,6 +14692,7 @@ } } +#if 0 /** * xmlSchemaGetParticleTotalRangeMax: * @particle: the particle @@ -14645,6 +14752,7 @@ return (particle->maxOccurs * sum); } } +#endif /** * xmlSchemaIsParticleEmptiable: @@ -14725,12 +14833,12 @@ /* 2.2 */ if (type->baseType == baseType) { /* - * 2.2.1 D's base type definition is B. + * 2.2.1 D's `base type definition` is B. */ return (0); } /* - * 2.2.2 D's base type definition is not the ur-type definition + * 2.2.2 D's `base type definition` is not the `ur-type definition` * and is validly derived from B given the subset, as defined by this * constraint. */ @@ -14740,8 +14848,8 @@ return (0); } /* - * 2.2.3 D's {variety} is list or union and B is the simple ur-type - * definition. + * 2.2.3 D's {variety} is list or union and B is the `simple ur-type + * definition`. */ if (WXS_IS_ANY_SIMPLE_TYPE(baseType) && (WXS_IS_LIST(type) || WXS_IS_UNION(type))) { @@ -14857,10 +14965,10 @@ xmlSchemaCheckUnionTypeDefCircularRecur(xmlSchemaParserCtxtPtr pctxt, xmlSchemaTypePtr ctxType, xmlSchemaTypeLinkPtr members) -{ +{ xmlSchemaTypeLinkPtr member; xmlSchemaTypePtr memberType; - + member = members; while (member != NULL) { memberType = member->type; @@ -14961,7 +15069,7 @@ } return; } - } + } /* * The ball of letters below means, that if we have a particle * which has a QName-helper component as its {term}, we want @@ -15004,7 +15112,7 @@ * particle's {term}. */ WXS_TYPE_PARTICLE_TERM(typeDef) = WXS_MODELGROUPDEF_MODEL(groupDef); - + if (WXS_MODELGROUPDEF_MODEL(groupDef)->type == XML_SCHEMA_TYPE_ALL) { /* * SPEC cos-all-limited (1.2) @@ -15053,14 +15161,14 @@ * NOTE: This is somehow redundant, since we actually built a simple type * to have all the needed information; this acts as an self test. */ - /* Base type: If the datatype has been derived by restriction - * then the Simple Type Definition component from which it is derived, - * otherwise the Simple Type Definition for anySimpleType (4.1.6). + /* Base type: If the datatype has been `derived` by `restriction` + * then the Simple Type Definition component from which it is `derived`, + * otherwise the Simple Type Definition for anySimpleType ($4.1.6). */ if (baseType == NULL) { /* * TODO: Think about: "modulo the impact of Missing - * Sub-components (5.3)." + * Sub-components ($5.3)." */ xmlSchemaPCustomErr(ctxt, XML_SCHEMAP_ST_PROPS_CORRECT_1, @@ -15078,13 +15186,14 @@ FREE_AND_NULL(str) return (XML_SCHEMAP_ST_PROPS_CORRECT_1); } - if ( (WXS_IS_LIST(type) || WXS_IS_UNION(type)) && - (WXS_IS_RESTRICTION(type) == 0) && - (! WXS_IS_ANY_SIMPLE_TYPE(baseType))) { + if ((WXS_IS_LIST(type) || WXS_IS_UNION(type)) && + (WXS_IS_RESTRICTION(type) == 0) && + ((! WXS_IS_ANY_SIMPLE_TYPE(baseType)) && + (baseType->type != XML_SCHEMA_TYPE_SIMPLE))) { xmlSchemaPCustomErr(ctxt, XML_SCHEMAP_ST_PROPS_CORRECT_1, WXS_BASIC_CAST type, NULL, - "A type, derived by list or union, must have" + "A type, derived by list or union, must have " "the simple ur-type definition as base type, not '%s'", xmlSchemaGetComponentQName(&str, baseType)); FREE_AND_NULL(str) @@ -15119,10 +15228,10 @@ } /* - * 2 All simple type definitions must be derived ultimately from the simple - * ur-type definition (so circular definitions are disallowed). That is, it - * must be possible to reach a built-in primitive datatype or the simple - * ur-type definition by repeatedly following the {base type definition}. + * 2 All simple type definitions must be derived ultimately from the `simple + * ur-type definition` (so circular definitions are disallowed). That is, it + * must be possible to reach a built-in primitive datatype or the `simple + * ur-type definition` by repeatedly following the {base type definition}. * * NOTE: this is done in xmlSchemaCheckTypeDefCircular(). */ @@ -15306,10 +15415,10 @@ } /* * MAYBE TODO: (Hmm, not really) Datatypes states: - * A list datatype can be derived from an atomic datatype - * whose lexical space allows space (such as string or anyURI)or - * a union datatype any of whose {member type definitions}'s - * lexical space allows space. + * A `list` datatype can be `derived` from an `atomic` datatype + * whose `lexical space` allows space (such as string or anyURI)or + * a `union` datatype any of whose {member type definitions}'s + * `lexical space` allows space. */ } else { /* @@ -15346,7 +15455,7 @@ /* * 2.3.2.3 The {item type definition} must be validly derived * from the {base type definition}'s {item type definition} given - * the empty set, as defined in Type Derivation OK (Simple) (3.14.6). + * the empty set, as defined in Type Derivation OK (Simple) ($3.14.6). */ { xmlSchemaTypePtr baseItemType; @@ -15393,7 +15502,7 @@ case XML_SCHEMA_FACET_WHITESPACE: /* * TODO: 2.5.1.2 List datatypes - * The value of whiteSpace is fixed to the value collapse. + * The value of `whiteSpace` is fixed to the value collapse. */ case XML_SCHEMA_FACET_PATTERN: case XML_SCHEMA_FACET_ENUMERATION: @@ -15446,8 +15555,8 @@ member = member->next; } /* - * 3.3.1 If the {base type definition} is the simple ur-type - * definition + * 3.3.1 If the {base type definition} is the `simple ur-type + * definition` */ if (type->baseType->builtInType == XML_SCHEMAS_ANYSIMPLETYPE) { /* @@ -15509,7 +15618,7 @@ * 3.3.2.3 The {member type definitions}, in order, must be validly * derived from the corresponding type definitions in the {base * type definition}'s {member type definitions} given the empty set, - * as defined in Type Derivation OK (Simple) (3.14.6). + * as defined in Type Derivation OK (Simple) ($3.14.6). */ { xmlSchemaTypeLinkPtr baseMember; @@ -15557,7 +15666,8 @@ return (XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3); } member = member->next; - baseMember = baseMember->next; + if (baseMember != NULL) + baseMember = baseMember->next; } } } @@ -15601,7 +15711,7 @@ * @ctxt: the schema parser context * @type: the simple type definition * - * Checks crc-simple-type constraints. + * Checks crc-simple-type constraints. * * Returns 0 if the constraints are satisfied, * if not a positive error code and -1 on internal @@ -15615,8 +15725,8 @@ /* * src-simple-type.1 The corresponding simple type definition, if any, * must satisfy the conditions set out in Constraints on Simple Type - * Definition Schema Components (3.14.6). - */ + * Definition Schema Components ($3.14.6). + */ if (WXS_IS_RESTRICTION(type)) { /* * src-simple-type.2 "If the alternative is chosen, @@ -15625,7 +15735,7 @@ * NOTE: This is checked in the parse function of . */ /* - * + * */ } else if (WXS_IS_LIST(type)) { /* src-simple-type.3 "If the alternative is chosen, either it must have @@ -15634,8 +15744,8 @@ * * NOTE: This is checked in the parse function of . */ - } else if (WXS_IS_UNION(type)) { - /* + } else if (WXS_IS_UNION(type)) { + /* * src-simple-type.4 is checked in xmlSchemaCheckUnionTypeDefCircular(). */ } @@ -15713,8 +15823,8 @@ * SPEC (2.1) "its {content type} must be a simple type definition * or mixed." * SPEC (2.2.2) "If the {content type} is mixed, then the {content - * type}'s particle must be emptiable as defined by - * Particle Emptiable (3.9.6)." + * type}'s particle must be `emptiable` as defined by + * Particle Emptiable ($3.9.6)." */ if ((! WXS_HAS_SIMPLE_CONTENT(type)) && ((! WXS_HAS_MIXED_CONTENT(type)) || (! WXS_EMPTIABLE(type)))) { @@ -15730,14 +15840,14 @@ } /* * 1 If the type definition is a simple type definition, then the string - * must be valid with respect to that definition as defined by String - * Valid (3.14.4). + * must be `valid` with respect to that definition as defined by String + * Valid ($3.14.4). * * AND * * 2.2.1 If the {content type} is a simple type definition, then the - * string must be valid with respect to that simple type definition - * as defined by String Valid (3.14.4). + * string must be `valid` with respect to that simple type definition + * as defined by String Valid ($3.14.4). */ if (WXS_IS_SIMPLE(type)) ret = xmlSchemaVCheckCVCSimpleType(ACTXT_CAST pctxt, node, @@ -15778,8 +15888,8 @@ * * SPEC (1) "The values of the properties of a complex type definition must * be as described in the property tableau in The Complex Type Definition - * Schema Component (3.4.1), modulo the impact of Missing - * Sub-components (5.3)." + * Schema Component ($3.4.1), modulo the impact of Missing + * Sub-components ($5.3)." */ if ((type->baseType != NULL) && (WXS_IS_SIMPLE(type->baseType)) && @@ -15790,15 +15900,15 @@ */ xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_SRC_CT_1, - NULL, WXS_BASIC_CAST type, + NULL, WXS_BASIC_CAST type, "If the base type is a simple type, the derivation method must be " "'extension'", NULL, NULL); return (XML_SCHEMAP_SRC_CT_1); } /* - * SPEC (3) "Circular definitions are disallowed, except for the ur-type - * definition. That is, it must be possible to reach the ur-type - * definition by repeatedly following the {base type definition}." + * SPEC (3) "Circular definitions are disallowed, except for the `ur-type + * definition`. That is, it must be possible to reach the `ur-type + * definition` by repeatedly following the {base type definition}." * * NOTE (3) is done in xmlSchemaCheckTypeDefCircular(). */ @@ -15807,7 +15917,7 @@ * - attribute uses need to be already inherited (apply attr. prohibitions) * - attribute group references need to be expanded already * - simple types need to be typefixed already - */ + */ if (type->attrUses && (((xmlSchemaItemListPtr) type->attrUses)->nbItems > 1)) { @@ -15817,8 +15927,8 @@ for (i = uses->nbItems -1; i >= 0; i--) { use = uses->items[i]; - - /* + + /* * SPEC ct-props-correct * (4) "Two distinct attribute declarations in the * {attribute uses} must not have identical {name}s and @@ -15859,10 +15969,10 @@ if (WXS_ATTRUSE_TYPEDEF(use) != NULL) { if (xmlSchemaIsDerivedFromBuiltInType( WXS_ATTRUSE_TYPEDEF(use), XML_SCHEMAS_ID)) - { + { if (hasId) { xmlChar *str = NULL; - + xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_AG_PROPS_CORRECT, NULL, WXS_BASIC_CAST type, @@ -15876,7 +15986,7 @@ if (xmlSchemaItemListRemove(uses, i) == -1) goto exit_failure; } - + hasId = 1; } } @@ -15950,8 +16060,8 @@ if (type->baseType == baseType) return (0); /* - * SPEC (2.3.1) "D's {base type definition} must not be the ur-type - * definition." + * SPEC (2.3.1) "D's {base type definition} must not be the `ur-type + * definition`." */ if (WXS_IS_ANYTYPE(type->baseType)) return (1); @@ -15968,7 +16078,7 @@ /* * SPEC (2.3.2.2) "If D's {base type definition} is simple, then it * must be validly derived from B given the subset as defined in Type - * Derivation OK (Simple) (3.14.6). + * Derivation OK (Simple) ($3.14.6). */ return (xmlSchemaCheckCOSSTDerivedOK(actxt, type->baseType, baseType, set)); @@ -16029,7 +16139,7 @@ * SPEC (1) "If the {base type definition} is a complex type definition, * then all of the following must be true:" */ - if (WXS_IS_COMPLEX(base)) { + if (WXS_IS_COMPLEX(base)) { /* * SPEC (1.1) "The {final} of the {base type definition} must not * contain extension." @@ -16042,7 +16152,7 @@ "contains 'extension'", NULL); return (XML_SCHEMAP_COS_CT_EXTENDS_1_1); } - + /* * ATTENTION: The constrains (1.2) and (1.3) are not applied, * since they are automatically satisfied through the @@ -16086,11 +16196,11 @@ } if (! found) { xmlChar *str = NULL; - + xmlSchemaCustomErr(ACTXT_CAST ctxt, XML_SCHEMAP_COS_CT_EXTENDS_1_2, NULL, WXS_BASIC_CAST type, - /* + /* * TODO: The report does not indicate that also the * type needs to be the same. */ @@ -16108,9 +16218,9 @@ * definition must also have one, and the base type definition's * {attribute wildcard}'s {namespace constraint} must be a subset * of the complex type definition's {attribute wildcard}'s {namespace - * constraint}, as defined by Wildcard Subset (3.10.6)." + * constraint}, as defined by Wildcard Subset ($3.10.6)." */ - + /* * MAYBE TODO: Enable if ever needed. But this will be needed only * if created the type via a schema construction API. @@ -16118,7 +16228,7 @@ if (base->attributeWildcard != NULL) { if (type->attributeWilcard == NULL) { xmlChar *str = NULL; - + xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_COS_CT_EXTENDS_1_3, NULL, type, @@ -16131,7 +16241,7 @@ base->attributeWildcard, type->attributeWildcard)) { xmlChar *str = NULL; - + xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_COS_CT_EXTENDS_1_3, NULL, type, @@ -16205,9 +16315,9 @@ } /* * URGENT TODO SPEC (1.4.3.2.2.2) "The particle of the - * complex type definition must be a valid extension + * complex type definition must be a `valid extension` * of the {base type definition}'s particle, as defined - * in Particle Valid (Extension) (3.9.6)." + * in Particle Valid (Extension) ($3.9.6)." * * NOTE that we won't check "Particle Valid (Extension)", * since it is ensured by the derivation process in @@ -16285,7 +16395,7 @@ */ base = type->baseType; if (! WXS_IS_COMPLEX(base)) { - xmlSchemaCustomErr(ACTXT_CAST ctxt, + xmlSchemaCustomErr(ACTXT_CAST ctxt, XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1, type->node, WXS_BASIC_CAST type, "The base type must be a complex type", NULL, NULL); @@ -16296,7 +16406,7 @@ * SPEC (1) "The {base type definition} must be a complex type * definition whose {final} does not contain restriction." */ - xmlSchemaCustomErr(ACTXT_CAST ctxt, + xmlSchemaCustomErr(ACTXT_CAST ctxt, XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1, type->node, WXS_BASIC_CAST type, "The 'final' of the base type definition " @@ -16324,7 +16434,7 @@ if (base->builtInType == XML_SCHEMAS_ANYTYPE) { /* * SPEC (5.1) "The {base type definition} must be the - * ur-type definition." + * `ur-type definition`." * PASS */ } else if ((type->contentType == XML_SCHEMA_CONTENT_SIMPLE) || @@ -16343,11 +16453,11 @@ * SPEC (5.2.2.1) "The {content type} of the {base type * definition} must be a simple type definition from which * the {content type} is validly derived given the empty - * set as defined in Type Derivation OK (Simple) (3.14.6)." + * set as defined in Type Derivation OK (Simple) ($3.14.6)." * * ATTENTION TODO: This seems not needed if the type implicitely * derived from the base type. - * + * */ err = xmlSchemaCheckCOSSTDerivedOK(ACTXT_CAST ctxt, type->contentTypeDef, base->contentTypeDef, 0); @@ -16374,8 +16484,8 @@ (xmlSchemaParticlePtr) base->subtypes))) { /* * SPEC (5.2.2.2) "The {base type definition} must be mixed - * and have a particle which is emptiable as defined in - * Particle Emptiable (3.9.6)." + * and have a particle which is `emptiable` as defined in + * Particle Emptiable ($3.9.6)." * PASS */ } else { @@ -16404,7 +16514,7 @@ /* * SPEC (5.3.2.2) "The {content type} of the {base type * definition} must be elementOnly or mixed and have a particle - * which is emptiable as defined in Particle Emptiable (3.9.6)." + * which is `emptiable` as defined in Particle Emptiable ($3.9.6)." * PASS */ } else { @@ -16421,7 +16531,7 @@ /* * SPEC (5.4.1.1) "The {content type} of the complex type definition * itself must be element-only" - */ + */ if (WXS_HAS_MIXED_CONTENT(type) && (! WXS_HAS_MIXED_CONTENT(base))) { /* * SPEC (5.4.1.2) "The {content type} of the complex type @@ -16437,9 +16547,9 @@ } /* * SPEC (5.4.2) "The particle of the complex type definition itself - * must be a valid restriction of the particle of the {content + * must be a `valid restriction` of the particle of the {content * type} of the {base type definition} as defined in Particle Valid - * (Restriction) (3.9.6). + * (Restriction) ($3.9.6). * * URGENT TODO: (5.4.2) */ @@ -16508,7 +16618,7 @@ if (! WXS_HAS_SIMPLE_CONTENT(type)) { /* * 1 If the alternative is chosen, the type definition - * resolved to by the actual value of the base [attribute] + * `resolved` to by the `actual value` of the base [attribute] * must be a complex type definition; */ if (! WXS_IS_COMPLEX(base)) { @@ -16528,7 +16638,7 @@ * SPEC * 2 If the alternative is chosen, all of the * following must be true: - * 2.1 The type definition resolved to by the actual value of the + * 2.1 The type definition `resolved` to by the `actual value` of the * base [attribute] must be one of the following: */ if (WXS_IS_SIMPLE(base)) { @@ -16578,11 +16688,11 @@ if (! xmlSchemaIsParticleEmptiable( (xmlSchemaParticlePtr) base->subtypes)) { ret = XML_SCHEMAP_SRC_CT_1; - } else + } else /* * Attention: at this point the child is in * ->contentTypeDef (put there during parsing). - */ + */ if (type->contentTypeDef == NULL) { xmlChar *str = NULL; /* @@ -16634,14 +16744,14 @@ /* * SPEC (3) "The corresponding complex type definition component must * satisfy the conditions set out in Constraints on Complex Type - * Definition Schema Components (3.4.6);" + * Definition Schema Components ($3.4.6);" * NOTE (3) will be done in xmlSchemaTypeFixup(). */ /* * SPEC (4) If clause 2.2.1 or clause 2.2.2 in the correspondence specification * above for {attribute wildcard} is satisfied, the intensional * intersection must be expressible, as defined in Attribute Wildcard - * Intersection (3.10.6). + * Intersection ($3.10.6). * NOTE (4) is done in xmlSchemaFixupTypeAttributeUses(). */ return (ret); @@ -16712,7 +16822,7 @@ return (1); /* * SPEC (2) "R's occurrence range is a valid restriction of B's - * occurrence range as defined by Occurrence Range OK (3.9.6)." + * occurrence range as defined by Occurrence Range OK ($3.9.6)." */ if (xmlSchemaCheckParticleRangeOK(r->minOccurs, r->maxOccurs, b->minOccurs, b->maxOccurs) != 0) @@ -16804,19 +16914,19 @@ { /* TODO:Error codes (rcase-NSCompat). */ /* - * SPEC "For an element declaration particle to be a valid restriction + * SPEC "For an element declaration particle to be a `valid restriction` * of a wildcard particle all of the following must be true:" * - * SPEC (1) "The element declaration's {target namespace} is valid + * SPEC (1) "The element declaration's {target namespace} is `valid` * with respect to the wildcard's {namespace constraint} as defined by - * Wildcard allows Namespace Name (3.10.4)." + * Wildcard allows Namespace Name ($3.10.4)." */ if (xmlSchemaCheckCVCWildcardNamespace((xmlSchemaWildcardPtr) b->children, ((xmlSchemaElementPtr) r->children)->targetNamespace) != 0) return (1); /* * SPEC (2) "R's occurrence range is a valid restriction of B's - * occurrence range as defined by Occurrence Range OK (3.9.6)." + * occurrence range as defined by Occurrence Range OK ($3.9.6)." */ if (xmlSchemaCheckParticleRangeOK(r->minOccurs, r->maxOccurs, b->minOccurs, b->maxOccurs) != 0) @@ -16876,21 +16986,21 @@ /* TODO: Error codes (rcase-NSSubset). */ /* * SPEC (1) "R's occurrence range is a valid restriction of B's - * occurrence range as defined by Occurrence Range OK (3.9.6)." + * occurrence range as defined by Occurrence Range OK ($3.9.6)." */ if (xmlSchemaCheckParticleRangeOK(r->minOccurs, r->maxOccurs, b->minOccurs, b->maxOccurs)) return (1); /* * SPEC (2) "R's {namespace constraint} must be an intensional subset - * of B's {namespace constraint} as defined by Wildcard Subset (3.10.6)." + * of B's {namespace constraint} as defined by Wildcard Subset ($3.10.6)." */ if (xmlSchemaCheckCOSNSSubset((xmlSchemaWildcardPtr) r->children, (xmlSchemaWildcardPtr) b->children)) return (1); /* - * SPEC (3) "Unless B is the content model wildcard of the ur-type - * definition, R's {process contents} must be identical to or stronger + * SPEC (3) "Unless B is the content model wildcard of the `ur-type + * definition`, R's {process contents} must be identical to or stronger * than B's {process contents}, where strict is stronger than lax is * stronger than skip." */ @@ -16940,6 +17050,7 @@ return (0); } +#if 0 /** * xmlSchemaCheckRCaseNSRecurseCheckCardinality: * @ctxt: the schema parser context @@ -16967,12 +17078,12 @@ if ((r->children == NULL) || (r->children->children == NULL)) return (-1); /* - * SPEC "For a group particle to be a valid restriction of a + * SPEC "For a group particle to be a `valid restriction` of a * wildcard particle..." * - * SPEC (1) "Every member of the {particles} of the group is a valid - * restriction of the wildcard as defined by - * Particle Valid (Restriction) (3.9.6)." + * SPEC (1) "Every member of the {particles} of the group is a `valid + * restriction` of the wildcard as defined by + * Particle Valid (Restriction) ($3.9.6)." */ part = (xmlSchemaParticlePtr) r->children->children; do { @@ -16983,7 +17094,7 @@ /* * SPEC (2) "The effective total range of the group [...] is a * valid restriction of B's occurrence range as defined by - * Occurrence Range OK (3.9.6)." + * Occurrence Range OK ($3.9.6)." */ if (xmlSchemaCheckParticleRangeOK( xmlSchemaGetParticleTotalRangeMin(r), @@ -16992,6 +17103,7 @@ return (1); return (0); } +#endif /** * xmlSchemaCheckRCaseRecurse: @@ -17022,11 +17134,11 @@ (r->children->type != b->children->type)) return (-1); /* - * SPEC "For an all or sequence group particle to be a valid - * restriction of another group particle with the same {compositor}..." + * SPEC "For an all or sequence group particle to be a `valid + * restriction` of another group particle with the same {compositor}..." * * SPEC (1) "R's occurrence range is a valid restriction of B's - * occurrence range as defined by Occurrence Range OK (3.9.6)." + * occurrence range as defined by Occurrence Range OK ($3.9.6)." */ if (xmlSchemaCheckParticleRangeOK(r->minOccurs, r->maxOccurs, b->minOccurs, b->maxOccurs)) @@ -17123,7 +17235,7 @@ /* * SPEC st-restrict-facets 1: - * "The {variety} of R is the same as that of B." + * "The {variety} of R is the same as that of B." */ /* * SPEC st-restrict-facets 2: @@ -17277,7 +17389,7 @@ flength = bflength; if (flength) { if (! fminlen) - flength = bflength; + fminlen = bfminlen; if (fminlen) { /* (1.1) length >= minLength */ res = xmlSchemaCompareValues(flength->val, fminlen->val); @@ -17595,7 +17707,7 @@ * The whitespace must be stronger. */ if (facet->whitespace < bfacet->whitespace) { - FACET_RESTR_ERR(flength, + FACET_RESTR_ERR(facet, "The 'whitespace' value has to be equal to " "or stronger than the 'whitespace' value of " "the base type") @@ -17650,7 +17762,7 @@ xmlSchemaTypeLinkPtr link, lastLink, prevLink, subLink, newLink; /* * The actual value is then formed by replacing any union type - * definition in the explicit members with the members of their + * definition in the `explicit members` with the members of their * {member type definitions}, in order. * * TODO: There's a bug entry at @@ -17696,7 +17808,7 @@ static void xmlSchemaTypeFixupOptimFacets(xmlSchemaTypePtr type) -{ +{ int has = 0, needVal = 0, normVal = 0; has = (type->baseType->flags & XML_SCHEMAS_TYPE_HAS_FACETS) ? 1 : 0; @@ -17708,7 +17820,7 @@ } if (type->facets != NULL) { xmlSchemaFacetPtr fac; - + for (fac = type->facets; fac != NULL; fac = fac->next) { switch (fac->type) { case XML_SCHEMA_FACET_WHITESPACE: @@ -17726,7 +17838,7 @@ has = 1; break; } - } + } } if (normVal) type->flags |= XML_SCHEMAS_TYPE_NORMVALUENEEDED; @@ -17743,24 +17855,24 @@ if ((prim->builtInType != XML_SCHEMAS_ANYSIMPLETYPE) && (prim->builtInType != XML_SCHEMAS_STRING)) { type->flags |= XML_SCHEMAS_TYPE_FACETSNEEDVALUE; - } - } + } + } } static int xmlSchemaTypeFixupWhitespace(xmlSchemaTypePtr type) { - - + + /* * Evaluate the whitespace-facet value. - */ + */ if (WXS_IS_LIST(type)) { type->flags |= XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE; return (0); } else if (WXS_IS_UNION(type)) return (0); - + if (type->facetSet != NULL) { xmlSchemaFacetLinkPtr lin; @@ -17784,23 +17896,23 @@ } } /* - * For all atomic datatypes other than string (and types derived - * by restriction from it) the value of whiteSpace is fixed to + * For all `atomic` datatypes other than string (and types `derived` + * by `restriction` from it) the value of whiteSpace is fixed to * collapse */ { xmlSchemaTypePtr anc; - for (anc = type->baseType; anc != NULL && + for (anc = type->baseType; anc != NULL && anc->builtInType != XML_SCHEMAS_ANYTYPE; anc = anc->baseType) { if (anc->type == XML_SCHEMA_TYPE_BASIC) { - if (anc->builtInType == XML_SCHEMAS_NORMSTRING) { + if (anc->builtInType == XML_SCHEMAS_NORMSTRING) { type->flags |= XML_SCHEMAS_TYPE_WHITESPACE_REPLACE; } else if ((anc->builtInType == XML_SCHEMAS_STRING) || - (anc->builtInType == XML_SCHEMAS_ANYSIMPLETYPE)) { + (anc->builtInType == XML_SCHEMAS_ANYSIMPLETYPE)) { type->flags |= XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE; } else @@ -17837,7 +17949,7 @@ } else if (WXS_IS_UNION(type)) { /* * Corresponds to ... - */ + */ if (type->memberTypes == NULL) { /* * This one is really needed, so get out. @@ -17845,8 +17957,8 @@ PERROR_INT("xmlSchemaFixupSimpleTypeStageOne", "union type has no member-types assigned"); return(-1); - } - } else { + } + } else { /* * Corresponds to ... */ @@ -17961,7 +18073,7 @@ } if (WXS_IS_TYPE_NOT_FIXED(type->baseType)) xmlSchemaTypeFixup(type->baseType, ACTXT_CAST pctxt); - /* + /* * If a member type of a union is a union itself, we need to substitute * that member type for its member types. * NOTE that this might change in WXS 1.1; i.e. we will keep the union @@ -17969,12 +18081,12 @@ */ if ((type->memberTypes != NULL) && (xmlSchemaFinishMemberTypeDefinitionsProperty(pctxt, type) == -1)) - return(-1); + return(-1); /* - * SPEC src-simple-type 1 + * SPEC src-simple-type 1 * "The corresponding simple type definition, if any, must satisfy * the conditions set out in Constraints on Simple Type Definition - * Schema Components (3.14.6)." + * Schema Components ($3.14.6)." */ /* * Schema Component Constraint: Simple Type Definition Properties Correct @@ -17982,7 +18094,7 @@ */ res = xmlSchemaCheckSTPropsCorrect(pctxt, type); HFAILURE HERROR - /* + /* * Schema Component Constraint: Derivation Valid (Restriction, Simple) * (cos-st-restricts) */ @@ -18015,7 +18127,7 @@ */ res = xmlSchemaTypeFixupWhitespace(type); HFAILURE HERROR - xmlSchemaTypeFixupOptimFacets(type); + xmlSchemaTypeFixupOptimFacets(type); exit_error: #ifdef DEBUG_TYPE @@ -18046,7 +18158,7 @@ PERROR_INT("xmlSchemaFixupComplexType", "missing baseType"); goto exit_failure; - } + } /* * Fixup the base type. */ @@ -18058,12 +18170,12 @@ * TODO: Generate a warning! */ return(0); - } + } /* * This basically checks if the base type can be derived. */ res = xmlSchemaCheckSRCCT(pctxt, type); - HFAILURE HERROR + HFAILURE HERROR /* * Fixup the content type. */ @@ -18137,7 +18249,7 @@ type->facets = NULL; content->facetSet = type->facetSet; type->facetSet = NULL; - + type->contentTypeDef = content; if (WXS_IS_TYPE_NOT_FIXED(contentBase)) xmlSchemaTypeFixup(contentBase, ACTXT_CAST pctxt); @@ -18146,10 +18258,10 @@ * for circularity here. */ res = xmlSchemaFixupSimpleTypeStageOne(pctxt, content); - HFAILURE HERROR + HFAILURE HERROR res = xmlSchemaFixupSimpleTypeStageTwo(pctxt, content); - HFAILURE HERROR - + HFAILURE HERROR + } else if ((WXS_IS_COMPLEX(baseType)) && (baseType->contentType == XML_SCHEMA_CONTENT_MIXED) && (WXS_IS_RESTRICTION(type))) { @@ -18234,7 +18346,7 @@ ( ((xmlSchemaTreeItemPtr) particle->children)->children == NULL))) { if (type->flags & XML_SCHEMAS_TYPE_MIXED) { /* - * SPEC (2.1.4) "If the effective mixed is true, then + * SPEC (2.1.4) "If the `effective mixed` is true, then * a particle whose properties are as follows:..." * * Empty sequence model group with @@ -18259,7 +18371,7 @@ XML_SCHEMA_TYPE_SEQUENCE, type->node); if (particle->children == NULL) goto exit_failure; - + type->subtypes = (xmlSchemaTypePtr) particle; } dummySequence = 1; @@ -18296,7 +18408,7 @@ if (type->contentType == XML_SCHEMA_CONTENT_EMPTY) { /* * SPEC (3.2.1) - * "If the effective content is empty, then the + * "If the `effective content` is empty, then the * {content type} of the [...] base ..." */ type->contentType = baseType->contentType; @@ -18394,8 +18506,8 @@ particle->children->children = (xmlSchemaTreeItemPtr) xmlSchemaAddParticle(pctxt, type->node, - ((xmlSchemaParticlePtr) type->subtypes)->minOccurs, - ((xmlSchemaParticlePtr) type->subtypes)->maxOccurs); + ((xmlSchemaParticlePtr) baseType->subtypes)->minOccurs, + ((xmlSchemaParticlePtr) baseType->subtypes)->maxOccurs); if (particle->children->children == NULL) goto exit_failure; particle = (xmlSchemaParticlePtr) @@ -18403,7 +18515,7 @@ particle->children = ((xmlSchemaParticlePtr) baseType->subtypes)->children; /* - * SPEC "followed by the effective content." + * SPEC "followed by the `effective content`." */ particle->next = effectiveContent; /* @@ -18547,12 +18659,12 @@ /* 4.3.5.5 Constraints on enumeration Schema Components * Schema Component Constraint: enumeration valid restriction - * It is an error if any member of {value} is not in the - * value space of {base type definition}. + * It is an `error` if any member of {value} is not in the + * `value space` of {base type definition}. * * minInclusive, maxInclusive, minExclusive, maxExclusive: - * The value must be in the - * value space of the base type. + * The value `must` be in the + * `value space` of the `base type`. */ /* * This function is intended to deliver a compiled value @@ -18572,11 +18684,11 @@ } } else base = typeDecl; - + if (! ctxtGiven) { /* * A context is needed if called from RelaxNG. - */ + */ pctxt = xmlSchemaNewParserCtxt("*"); if (pctxt == NULL) return (-1); @@ -18587,17 +18699,17 @@ * facet->node is just the node holding the facet * definition, *not* the attribute holding the *value* * of the facet. - */ + */ ret = xmlSchemaVCheckCVCSimpleType( ACTXT_CAST pctxt, facet->node, base, facet->value, &(facet->val), 1, 1, 0); if (ret != 0) { if (ret < 0) { /* No error message for RelaxNG. */ - if (ctxtGiven) { + if (ctxtGiven) { xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_INTERNAL, facet->node, NULL, - "Internal error: xmlSchemaCheckFacet, " + "Internal error: xmlSchemaCheckFacet, " "failed to validate the value '%s' of the " "facet '%s' against the base type", facet->value, xmlSchemaFacetTypeToString(facet->type)); @@ -18672,17 +18784,17 @@ /* error code */ xmlSchemaCustomErr4(ACTXT_CAST pctxt, ret, facet->node, WXS_BASIC_CAST typeDecl, - "The value '%s' of the facet '%s' is not a valid '%s'", + "The value '%s' of the facet '%s' is not a valid '%s'", facet->value, xmlSchemaFacetTypeToString(facet->type), - (facet->type != XML_SCHEMA_FACET_TOTALDIGITS) ? + (facet->type != XML_SCHEMA_FACET_TOTALDIGITS) ? BAD_CAST "nonNegativeInteger" : BAD_CAST "positiveInteger", NULL); } } break; - + case XML_SCHEMA_FACET_WHITESPACE:{ if (xmlStrEqual(facet->value, BAD_CAST "preserve")) { facet->whitespace = XML_SCHEMAS_FACET_PRESERVE; @@ -18895,7 +19007,7 @@ { particle = WXS_PTC_CAST particle->next; continue; - } + } if (WXS_MODELGROUPDEF_MODEL(WXS_PARTICLE_TERM(particle)) == NULL) { /* * TODO: Remove the particle. @@ -18945,7 +19057,7 @@ if (gr == ctxtGr) return(ref); if (gr->flags & XML_SCHEMAS_ATTRGROUP_MARKED) - continue; + continue; /* * Mark as visited to avoid infinite recursion on * circular references not yet examined. @@ -18955,12 +19067,12 @@ { gr->flags |= XML_SCHEMAS_ATTRGROUP_MARKED; circ = xmlSchemaCheckAttrGroupCircularRecur(ctxtGr, - (xmlSchemaItemListPtr) gr->attrUses); + (xmlSchemaItemListPtr) gr->attrUses); gr->flags ^= XML_SCHEMAS_ATTRGROUP_MARKED; if (circ != NULL) return (circ); } - + } } return (NULL); @@ -18987,9 +19099,9 @@ * not be an with ref [attribute] which resolves * to the component corresponding to this . Indirect * circularity is also ruled out. That is, when QName resolution - * (Schema Document) (3.15.3) is applied to a QName arising from + * (Schema Document) ($3.15.3) is applied to a `QName` arising from * any s with a ref [attribute] among the [children], - * it must not be the case that a QName is encountered at any depth + * it must not be the case that a `QName` is encountered at any depth * which resolves to the component corresponding to this . */ if (attrGr->attrUses == NULL) @@ -18998,9 +19110,9 @@ return(0); else { xmlSchemaQNameRefPtr circ; - + circ = xmlSchemaCheckAttrGroupCircularRecur(attrGr, - (xmlSchemaItemListPtr) attrGr->attrUses); + (xmlSchemaItemListPtr) attrGr->attrUses); if (circ != NULL) { xmlChar *str = NULL; /* @@ -19032,7 +19144,7 @@ * xmlSchemaExpandAttributeGroupRefs: * @pctxt: the parser context * @node: the node of the component holding the attribute uses - * @completeWild: the intersected wildcard to be returned + * @completeWild: the intersected wildcard to be returned * @list: the attribute uses * * Substitutes contained attribute group references @@ -19061,7 +19173,7 @@ for (i = 0; i < list->nbItems; i++) { use = list->items[i]; - if (use->type == XML_SCHEMA_EXTRA_ATTR_USE_PROHIB) { + if (use->type == XML_SCHEMA_EXTRA_ATTR_USE_PROHIB) { if (prohibs == NULL) { PERROR_INT("xmlSchemaExpandAttributeGroupRefs", "unexpected attr prohibition found"); @@ -19076,7 +19188,7 @@ /* * Note that duplicate prohibitions were already * handled at parsing time. - */ + */ /* * Add to list of prohibitions. */ @@ -19129,7 +19241,7 @@ *completeWild = tmpWild; created = 1; } - + if (xmlSchemaIntersectWildcards(pctxt, *completeWild, gr->attributeWildcard) == -1) return(-1); @@ -19139,7 +19251,8 @@ * Just remove the reference if the referenced group does not * contain any attribute uses. */ - if (gr->attrUses == NULL) { + sublist = ((xmlSchemaItemListPtr) gr->attrUses); + if ((sublist == NULL) || sublist->nbItems == 0) { if (xmlSchemaItemListRemove(list, i) == -1) return(-1); i--; @@ -19148,18 +19261,15 @@ /* * Add the attribute uses. */ - sublist = ((xmlSchemaItemListPtr) gr->attrUses); - if (sublist->nbItems != 0) { - list->items[i] = sublist->items[0]; - if (sublist->nbItems != 1) { - for (j = 1; j < sublist->nbItems; j++) { - i++; - if (xmlSchemaItemListInsert(list, - sublist->items[j], i) == -1) - return(-1); - } + list->items[i] = sublist->items[0]; + if (sublist->nbItems != 1) { + for (j = 1; j < sublist->nbItems; j++) { + i++; + if (xmlSchemaItemListInsert(list, + sublist->items[j], i) == -1) + return(-1); } - } + } } } @@ -19205,7 +19315,7 @@ /** * xmlSchemaAttributeGroupExpandRefs: * @pctxt: the parser context - * @attrGr: the attribute group definition + * @attrGr: the attribute group definition * * Computation of: * {attribute uses} property @@ -19217,7 +19327,7 @@ static int xmlSchemaAttributeGroupExpandRefs(xmlSchemaParserCtxtPtr pctxt, xmlSchemaAttributeGroupPtr attrGr) -{ +{ if ((attrGr->attrUses == NULL) || (attrGr->flags & XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED)) return(0); @@ -19225,33 +19335,33 @@ attrGr->flags |= XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED; if (xmlSchemaExpandAttributeGroupRefs(pctxt, WXS_BASIC_CAST attrGr, &(attrGr->attributeWildcard), attrGr->attrUses, NULL) == -1) - return(-1); + return(-1); return(0); } /** * xmlSchemaAttributeGroupExpandRefs: * @pctxt: the parser context - * @attrGr: the attribute group definition + * @attrGr: the attribute group definition * * Substitutes contained attribute group references * for their attribute uses. Wilcards are intersected. - * + * * Schema Component Constraint: - * Attribute Group Definition Properties Correct (ag-props-correct) + * Attribute Group Definition Properties Correct (ag-props-correct) */ static int xmlSchemaCheckAGPropsCorrect(xmlSchemaParserCtxtPtr pctxt, xmlSchemaAttributeGroupPtr attrGr) -{ +{ /* * SPEC ag-props-correct * (1) "The values of the properties of an attribute group definition * must be as described in the property tableau in The Attribute - * Group Definition Schema Component (3.6.1), modulo the impact of - * Missing Sub-components (5.3);" + * Group Definition Schema Component ($3.6.1), modulo the impact of + * Missing Sub-components ($5.3);" */ - + if ((attrGr->attrUses != NULL) && (WXS_LIST_CAST attrGr->attrUses)->nbItems > 1) { @@ -19260,7 +19370,7 @@ int i, j, hasId = 0; for (i = uses->nbItems -1; i >= 0; i--) { - use = uses->items[i]; + use = uses->items[i]; /* * SPEC ag-props-correct * (2) "Two distinct members of the {attribute uses} must not have @@ -19276,7 +19386,7 @@ WXS_ATTRUSE_DECL_TNS(tmp))) { xmlChar *str = NULL; - + xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_AG_PROPS_CORRECT, attrGr->node, WXS_BASIC_CAST attrGr, @@ -19300,13 +19410,13 @@ * are derived from ID." * TODO: Does 'derived' include member-types of unions? */ - if (WXS_ATTRUSE_TYPEDEF(use) != NULL) { + if (WXS_ATTRUSE_TYPEDEF(use) != NULL) { if (xmlSchemaIsDerivedFromBuiltInType( WXS_ATTRUSE_TYPEDEF(use), XML_SCHEMAS_ID)) - { + { if (hasId) { xmlChar *str = NULL; - + xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_AG_PROPS_CORRECT, attrGr->node, WXS_BASIC_CAST attrGr, @@ -19319,7 +19429,7 @@ FREE_AND_NULL(str); if (xmlSchemaItemListRemove(uses, i) == -1) return(-1); - } + } hasId = 1; } } @@ -19383,10 +19493,10 @@ * SPEC a-props-correct (1) * "The values of the properties of an attribute declaration must * be as described in the property tableau in The Attribute - * Declaration Schema Component (3.2.1), modulo the impact of - * Missing Sub-components (5.3)." + * Declaration Schema Component ($3.2.1), modulo the impact of + * Missing Sub-components ($5.3)." */ - + if (WXS_ATTR_TYPEDEF(attr) == NULL) return(0); @@ -19412,9 +19522,9 @@ /* * SPEC a-props-correct (2) * "if there is a {value constraint}, the canonical lexical - * representation of its value must be valid with respect - * to the {type definition} as defined in String Valid (3.14.4)." - * TODO: Don't care about the *cononical* stuff here, this requirement + * representation of its value must be `valid` with respect + * to the {type definition} as defined in String Valid ($3.14.4)." + * TODO: Don't care about the *canonical* stuff here, this requirement * will be removed in WXS 1.1 anyway. */ ret = xmlSchemaVCheckCVCSimpleType(ACTXT_CAST pctxt, @@ -19435,7 +19545,7 @@ return(pctxt->err); } } - + return(0); } @@ -19481,15 +19591,15 @@ /* * SPEC (1) "The values of the properties of an element declaration * must be as described in the property tableau in The Element - * Declaration Schema Component (3.3.1), modulo the impact of Missing - * Sub-components (5.3)." + * Declaration Schema Component ($3.3.1), modulo the impact of Missing + * Sub-components ($5.3)." */ if (WXS_SUBST_HEAD(elemDecl) != NULL) { xmlSchemaElementPtr head = WXS_SUBST_HEAD(elemDecl), circ; xmlSchemaCheckElementDeclComponent(head, pctxt); /* - * SPEC (3) "If there is a non-absent {substitution group + * SPEC (3) "If there is a non-`absent` {substitution group * affiliation}, then {scope} must be global." */ if ((elemDecl->flags & XML_SCHEMAS_ELEM_GLOBAL) == 0) { @@ -19533,9 +19643,9 @@ * of the element declaration must be validly derived from the {type * definition} of the {substitution group affiliation}, given the value * of the {substitution group exclusions} of the {substitution group - * affiliation}, as defined in Type Derivation OK (Complex) (3.4.6) + * affiliation}, as defined in Type Derivation OK (Complex) ($3.4.6) * (if the {type definition} is complex) or as defined in - * Type Derivation OK (Simple) (3.14.6) (if the {type definition} is + * Type Derivation OK (Simple) ($3.14.6) (if the {type definition} is * simple)." * * NOTE: {substitution group exclusions} means the values of the @@ -19599,9 +19709,9 @@ /* * SPEC (2) "If there is a {value constraint}, the canonical lexical - * representation of its value must be valid with respect to the + * representation of its value must be `valid` with respect to the * {type definition} as defined in Element Default Valid (Immediate) - * (3.3.6)." + * ($3.3.6)." */ if (typeDef == NULL) { xmlSchemaPErr(pctxt, elemDecl->node, @@ -19669,7 +19779,7 @@ /* * SPEC (2) "It is validly substitutable for HEAD subject to HEAD's * {disallowed substitutions} as the blocking constraint, as defined in - * Substitution Group OK (Transitive) (3.3.6)." + * Substitution Group OK (Transitive) ($3.3.6)." */ for (head = WXS_SUBST_HEAD(elemDecl); head != NULL; head = WXS_SUBST_HEAD(head)) { @@ -19761,12 +19871,12 @@ * @ctxtParticle: the first particle of the context component * @searchParticle: the element declaration particle to be analysed * - * Schema Component Constraint: Element Declarations Consistent + * Schema Component Constraint: Element Declarations Consistent */ static int xmlSchemaCheckElementDeclConsistent(xmlSchemaParserCtxtPtr pctxt, xmlSchemaBasicItemPtr ctxtComponent, - xmlSchemaParticlePtr ctxtParticle, + xmlSchemaParticlePtr ctxtParticle, xmlSchemaParticlePtr searchParticle, xmlSchemaParticlePtr curParticle, int search) @@ -19775,7 +19885,7 @@ int ret = 0; xmlSchemaParticlePtr cur = curParticle; - if (curParticle == NULL) { + if (curParticle == NULL) { return(0); } if (WXS_PARTICLE_TERM(curParticle) == NULL) { @@ -19784,7 +19894,7 @@ * might arise due to an invalid "term" component. */ return(0); - } + } while (cur != NULL) { switch (WXS_PARTICLE_TERM(cur)->type) { case XML_SCHEMA_TYPE_ANY: @@ -19794,7 +19904,7 @@ ret = xmlSchemaCheckElementDeclConsistent(pctxt, ctxtComponent, ctxtParticle, cur, ctxtParticle, 1); if (ret != 0) - return(ret); + return(ret); } else { xmlSchemaElementPtr elem = WXS_ELEM_CAST(WXS_PARTICLE_TERM(cur)); @@ -19802,7 +19912,7 @@ * SPEC Element Declarations Consistent: * "If the {particles} contains, either directly, * indirectly (that is, within the {particles} of a - * contained model group, recursively) or implicitly + * contained model group, recursively) or `implicitly` * two or more element declaration particles with * the same {name} and {target namespace}, then * all their type definitions must be the same @@ -19814,7 +19924,7 @@ WXS_PARTICLE_TERM_AS_ELEM(searchParticle)->targetNamespace)) { xmlChar *strA = NULL, *strB = NULL; - + xmlSchemaCustomErr(ACTXT_CAST pctxt, /* TODO: error code */ XML_SCHEMAP_COS_NONAMBIG, @@ -19831,16 +19941,16 @@ FREE_AND_NULL(strB); return(XML_SCHEMAP_COS_NONAMBIG); } - } + } break; - case XML_SCHEMA_TYPE_SEQUENCE: { + case XML_SCHEMA_TYPE_SEQUENCE: { break; } case XML_SCHEMA_TYPE_CHOICE:{ /* xmlSchemaTreeItemPtr sub; - - sub = WXS_PARTICLE_TERM(particle)->children; (xmlSchemaParticlePtr) + + sub = WXS_PARTICLE_TERM(particle)->children; (xmlSchemaParticlePtr) while (sub != NULL) { ret = xmlSchemaCheckElementDeclConsistent(pctxt, ctxtComponent, ctxtParticle, ctxtElem); @@ -19877,7 +19987,7 @@ * @name: the name of the attribute * * Validates the value constraints of an element declaration. - * Adds substitution group members. + * Adds substitution group members. */ static void xmlSchemaCheckElementDeclComponent(xmlSchemaElementPtr elemDecl, @@ -19892,7 +20002,7 @@ /* * Adds substitution group members. */ - xmlSchemaCheckElemSubstGroup(ctxt, elemDecl); + xmlSchemaCheckElemSubstGroup(ctxt, elemDecl); } } @@ -19922,7 +20032,7 @@ XML_SCHEMA_EXTRA_QNAMEREF)) { goto next_particle; - } + } ref = WXS_QNAME_CAST WXS_PARTICLE_TERM(particle); /* * Resolve the reference. @@ -19938,7 +20048,7 @@ ref->targetNamespace, ref->itemType, NULL); /* TODO: remove the particle. */ goto next_particle; - } + } if (refItem->type == XML_SCHEMA_TYPE_GROUP) { if (WXS_MODELGROUPDEF_MODEL(refItem) == NULL) /* TODO: remove the particle. */ @@ -19988,9 +20098,9 @@ static int xmlSchemaAreValuesEqual(xmlSchemaValPtr x, - xmlSchemaValPtr y) -{ - xmlSchemaTypePtr tx, ty, ptx, pty; + xmlSchemaValPtr y) +{ + xmlSchemaTypePtr tx, ty, ptx, pty; int ret; while (x != NULL) { @@ -20000,12 +20110,12 @@ ptx = xmlSchemaGetPrimitiveType(tx); pty = xmlSchemaGetPrimitiveType(ty); /* - * (1) if a datatype T' is derived by restriction from an - * atomic datatype T then the value space of T' is a subset of - * the value space of T. */ + * (1) if a datatype T' is `derived` by `restriction` from an + * atomic datatype T then the `value space` of T' is a subset of + * the `value space` of T. */ /* - * (2) if datatypes T' and T'' are derived by restriction - * from a common atomic ancestor T then the value spaces of T' + * (2) if datatypes T' and T'' are `derived` by `restriction` + * from a common atomic ancestor T then the `value space`s of T' * and T'' may overlap. */ if (ptx != pty) @@ -20036,7 +20146,7 @@ if (x != NULL) { y = xmlSchemaValueGetNext(y); if (y == NULL) - return (0); + return (0); } else if (xmlSchemaValueGetNext(y) != NULL) return (0); else @@ -20073,7 +20183,7 @@ ref->name, ref->targetNamespace); if (ause->attrDecl == NULL) { xmlSchemaPResCompAttrErr(ctxt, - XML_SCHEMAP_SRC_RESOLVE, + XML_SCHEMAP_SRC_RESOLVE, WXS_BASIC_CAST ause, ause->node, "ref", ref->name, ref->targetNamespace, XML_SCHEMA_TYPE_ATTRIBUTE, NULL); @@ -20086,11 +20196,11 @@ /** * xmlSchemaCheckAttrUsePropsCorrect: * @ctxt: a parser context - * @use: an attribute use + * @use: an attribute use * * Schema Component Constraint: * Attribute Use Correct (au-props-correct) - * + * */ static int xmlSchemaCheckAttrUsePropsCorrect(xmlSchemaParserCtxtPtr ctxt, @@ -20100,16 +20210,16 @@ return(-1); if ((use->defValue == NULL) || (WXS_ATTRUSE_DECL(use) == NULL) || ((WXS_ATTRUSE_DECL(use))->type != XML_SCHEMA_TYPE_ATTRIBUTE)) - return(0); + return(0); /* * SPEC au-props-correct (1) * "The values of the properties of an attribute use must be as * described in the property tableau in The Attribute Use Schema - * Component (3.5.1), modulo the impact of Missing - * Sub-components (5.3)." + * Component ($3.5.1), modulo the impact of Missing + * Sub-components ($5.3)." */ - + if (((WXS_ATTRUSE_DECL(use))->defValue != NULL) && ((WXS_ATTRUSE_DECL(use))->flags & XML_SCHEMAS_ATTR_FIXED) && ((use->flags & XML_SCHEMA_ATTR_USE_FIXED) == 0)) @@ -20129,7 +20239,7 @@ if ((use->defVal != NULL) && (WXS_ATTRUSE_TYPEDEF(use) != NULL)) { int ret; /* - * TODO: The spec seems to be missing a check of the + * TODO: The spec seems to be missing a check of the * value constraint of the attribute use. We will do it here. */ /* @@ -20146,7 +20256,7 @@ NULL, NULL); return(ctxt->err); } - + ret = xmlSchemaVCheckCVCSimpleType(ACTXT_CAST ctxt, use->node, WXS_ATTRUSE_TYPEDEF(use), use->defValue, &(use->defVal), @@ -20197,7 +20307,7 @@ /** * xmlSchemaResolveAttrTypeReferences: * @item: an attribute declaration - * @ctxt: a parser context + * @ctxt: a parser context * * Resolves the referenced type definition component. */ @@ -20208,8 +20318,8 @@ /* * The simple type definition corresponding to the element * information item in the [children], if present, otherwise the simple - * type definition resolved to by the actual value of the type - * [attribute], if present, otherwise the simple ur-type definition. + * type definition `resolved` to by the `actual value` of the type + * [attribute], if present, otherwise the `simple ur-type definition`. */ if (item->flags & XML_SCHEMAS_ATTR_INTERNAL_RESOLVED) return(0); @@ -20288,7 +20398,7 @@ ((xmlSchemaIDCPtr) idc->ref->item)->nbFields) { xmlChar *str = NULL; xmlSchemaIDCPtr refer; - + refer = (xmlSchemaIDCPtr) idc->ref->item; /* * SPEC c-props-correct(2) @@ -20347,7 +20457,7 @@ int wasRedefined; if (redef == NULL) - return(0); + return(0); do { item = redef->item; @@ -20362,7 +20472,7 @@ * d schema. Currenlty we latter approach is used. * SUPPLEMENT: It seems that the WG moves towards the latter * approach, so we are doing it right. - * + * */ prev = xmlSchemaFindRedefCompInGraph( redef->targetBucket, item->type, @@ -20373,11 +20483,11 @@ /* * SPEC src-redefine: - * (6.2.1) "The actual value of its own name attribute plus - * target namespace must successfully resolve to a model + * (6.2.1) "The `actual value` of its own name attribute plus + * target namespace must successfully `resolve` to a model * group definition in I." - * (7.2.1) "The actual value of its own name attribute plus - * target namespace must successfully resolve to an attribute + * (7.2.1) "The `actual value` of its own name attribute plus + * target namespace must successfully `resolve` to an attribute * group definition in I." * @@ -20394,7 +20504,7 @@ /* * TODO: error code. * Probably XML_SCHEMAP_SRC_RESOLVE, if this is using the - * reference kind. + * reference kind. */ XML_SCHEMAP_SRC_REDEFINE, node, NULL, "The %s '%s' to be redefined could not be found in " @@ -20402,7 +20512,7 @@ WXS_ITEM_TYPE_NAME(item), xmlSchemaFormatQName(&str, redef->refTargetNs, redef->refName)); - FREE_AND_NULL(str); + FREE_AND_NULL(str); err = pctxt->err; redef = redef->next; continue; @@ -20428,7 +20538,7 @@ * base type of the redefining type. * TODO: How */ - ((xmlSchemaTypePtr) item)->baseType = + ((xmlSchemaTypePtr) item)->baseType = (xmlSchemaTypePtr) prev; break; case XML_SCHEMA_TYPE_GROUP: @@ -20483,7 +20593,7 @@ default: PERROR_INT("xmlSchemaResolveRedefReferences", "Unexpected redefined component type"); - return(-1); + return(-1); } if (wasRedefined) { xmlChar *str = NULL; @@ -20493,7 +20603,7 @@ node = WXS_ITEM_NODE(redef->reference); else node = WXS_ITEM_NODE(redef->item); - + xmlSchemaCustomErr(ACTXT_CAST pctxt, /* TODO: error code. */ XML_SCHEMAP_SRC_REDEFINE, @@ -20502,12 +20612,12 @@ "redefinition of the same component is not supported", xmlSchemaGetComponentDesignation(&str, prev), NULL); - FREE_AND_NULL(str) + FREE_AND_NULL(str) err = pctxt->err; redef = redef->next; continue; } - redef = redef->next; + redef = redef->next; } while (redef != NULL); return(err); @@ -20521,7 +20631,7 @@ xmlSchemaBasicItemPtr item; if (redef == NULL) - return(0); + return(0); do { if (redef->target == NULL) { @@ -20529,7 +20639,7 @@ continue; } item = redef->item; - + switch (item->type) { case XML_SCHEMA_TYPE_SIMPLE: case XML_SCHEMA_TYPE_COMPLEX: @@ -20538,7 +20648,7 @@ * type to be 'absent', we'll NULL it. */ (WXS_TYPE_CAST redef->target)->name = NULL; - + /* * TODO: Seems like there's nothing more to do. The normal * inheritance mechanism is used. But not 100% sure. @@ -20550,10 +20660,10 @@ * SPEC src-redefine: * (6.2.2) "The {model group} of the model group definition * which corresponds to it per XML Representation of Model - * Group Definition Schema Components (3.7.2) must be a - * valid restriction of the {model group} of that model + * Group Definition Schema Components ($3.7.2) must be a + * `valid restriction` of the {model group} of that model * group definition in I, as defined in Particle Valid - * (Restriction) (3.9.6)." + * (Restriction) ($3.9.6)." */ break; case XML_SCHEMA_TYPE_ATTRIBUTEGROUP: @@ -20562,11 +20672,11 @@ * (7.2.2) "The {attribute uses} and {attribute wildcard} of * the attribute group definition which corresponds to it * per XML Representation of Attribute Group Definition Schema - * Components (3.6.2) must be valid restrictions of the + * Components ($3.6.2) must be `valid restrictions` of the * {attribute uses} and {attribute wildcard} of that attribute * group definition in I, as defined in clause 2, clause 3 and * clause 4 of Derivation Valid (Restriction, Complex) - * (3.4.6) (where references to the base type definition are + * ($3.4.6) (where references to the base type definition are * understood as references to the attribute group definition * in I)." */ @@ -20587,7 +20697,7 @@ } while (redef != NULL); return(0); } - + static int xmlSchemaAddComponents(xmlSchemaParserCtxtPtr pctxt, @@ -20621,8 +20731,8 @@ return(-1); if (bucket->flags & XML_SCHEMA_BUCKET_COMPS_ADDED) return(0); - bucket->flags |= XML_SCHEMA_BUCKET_COMPS_ADDED; - + bucket->flags |= XML_SCHEMA_BUCKET_COMPS_ADDED; + for (i = 0; i < bucket->globals->nbItems; i++) { item = bucket->globals->items[i]; table = NULL; @@ -20663,12 +20773,12 @@ case XML_SCHEMA_TYPE_NOTATION: name = ((xmlSchemaNotationPtr) item)->name; WXS_GET_GLOBAL_HASH(bucket, notaDecl) - break; + break; default: PERROR_INT("xmlSchemaAddComponents", "Unexpected global component type"); - continue; - } + continue; + } if (*table == NULL) { *table = xmlHashCreateDict(10, pctxt->dict); if (*table == NULL) { @@ -20676,11 +20786,11 @@ "failed to create a component hash table"); return(-1); } - } + } err = xmlHashAddEntry(*table, name, item); - if (err != 0) { + if (err != 0) { xmlChar *str = NULL; - + xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_REDEFINED_TYPE, WXS_ITEM_NODE(item), @@ -20688,7 +20798,7 @@ "A global %s '%s' does already exist", WXS_ITEM_TYPE_NAME(item), xmlSchemaGetComponentQName(&str, item)); - FREE_AND_NULL(str); + FREE_AND_NULL(str); } } /* @@ -20722,34 +20832,34 @@ if ((con->pending == NULL) || (con->pending->nbItems == 0)) - return(0); + return(0); /* * Since xmlSchemaFixupComplexType() will create new particles * (local components), and those particle components need a bucket * on the constructor, we'll assure here that the constructor has * a bucket. - * TODO: Think about storing locals _only_ on the main bucket. - */ + * TODO: Think about storing locals _only_ on the main bucket. + */ if (con->bucket == NULL) - con->bucket = rootBucket; + con->bucket = rootBucket; /* TODO: * SPEC (src-redefine): * (6.2) "If it has no such self-reference, then all of the * following must be true:" - + * (6.2.2) The {model group} of the model group definition which * corresponds to it per XML Representation of Model Group - * Definition Schema Components (3.7.2) must be a valid - * restriction of the {model group} of that model group definition - * in I, as defined in Particle Valid (Restriction) (3.9.6)." + * Definition Schema Components ($3.7.2) must be a `valid + * restriction` of the {model group} of that model group definition + * in I, as defined in Particle Valid (Restriction) ($3.9.6)." */ xmlSchemaCheckSRCRedefineFirst(pctxt); /* * Add global components to the schemata's hash tables. - */ + */ xmlSchemaAddComponents(pctxt, rootBucket); pctxt->ctxtType = NULL; @@ -20759,7 +20869,7 @@ * Now that we have parsed *all* the schema document(s) and converted * them to schema components, we can resolve references, apply component * constraints, create the FSA from the content model, etc. - */ + */ /* * Resolve references of.. * @@ -20780,7 +20890,7 @@ * 6. IDC key-references: * - the referenced IDC 'key' or 'unique' definition * 7. Attribute prohibitions which had a "ref" attribute. - */ + */ for (i = 0; i < nbItems; i++) { item = items[i]; switch (item->type) { @@ -20806,7 +20916,7 @@ FIXHFAILURE; break; case XML_SCHEMA_EXTRA_QNAMEREF: - if ((WXS_QNAME_CAST item)->itemType == + if ((WXS_QNAME_CAST item)->itemType == XML_SCHEMA_TYPE_ATTRIBUTEGROUP) { xmlSchemaResolveAttrGroupReferences( @@ -20843,11 +20953,11 @@ } if (pctxt->nberrors != 0) goto exit_error; - + /* * Now that all references are resolved we * can check for circularity of... - * 1. the base axis of type definitions + * 1. the base axis of type definitions * 2. nested model group definitions * 3. nested attribute group definitions * TODO: check for circual substitution groups. @@ -20882,7 +20992,7 @@ break; default: break; - } + } } if (pctxt->nberrors != 0) goto exit_error; @@ -20898,7 +21008,7 @@ item = items[i]; switch (item->type) { case XML_SCHEMA_TYPE_SEQUENCE: - case XML_SCHEMA_TYPE_CHOICE: + case XML_SCHEMA_TYPE_CHOICE: xmlSchemaModelGroupToModelGroupDefFixup(pctxt, WXS_MODEL_GROUP_CAST item); break; @@ -20929,7 +21039,7 @@ } if (pctxt->nberrors != 0) goto exit_error; - /* + /* * First compute the variety of simple types. This is needed as * a seperate step, since otherwise we won't be able to detect * circular union types in all cases. @@ -20959,7 +21069,7 @@ switch (item->type) { case XML_SCHEMA_TYPE_SIMPLE: if (((xmlSchemaTypePtr) item)->memberTypes != NULL) { - xmlSchemaCheckUnionTypeDefCircular(pctxt, + xmlSchemaCheckUnionTypeDefCircular(pctxt, (xmlSchemaTypePtr) item); FIXHFAILURE; } @@ -20970,7 +21080,7 @@ } if (pctxt->nberrors != 0) goto exit_error; - + /* * Do the complete type fixup for simple types. */ @@ -20998,10 +21108,10 @@ for (i = 0; i < nbItems; i++) { item = items[i]; switch (item->type) { - case XML_SCHEMA_TYPE_ATTRIBUTE: + case XML_SCHEMA_TYPE_ATTRIBUTE: xmlSchemaCheckAttrPropsCorrect(pctxt, WXS_ATTR_CAST item); FIXHFAILURE; - break; + break; default: break; } @@ -21010,7 +21120,7 @@ goto exit_error; /* * Apply constraints for attribute uses. - */ + */ for (i = 0; i < nbItems; i++) { item = items[i]; switch (item->type) { @@ -21057,7 +21167,7 @@ if (pctxt->nberrors != 0) goto exit_error; - /* + /* * Complex types are builded and checked. */ for (i = 0; i < nbItems; i++) { @@ -21081,8 +21191,8 @@ * will create particles and model groups in some cases. */ items = (xmlSchemaTreeItemPtr *) con->pending->items; - nbItems = con->pending->nbItems; - + nbItems = con->pending->nbItems; + /* * Apply some constraints for element declarations. */ @@ -21091,7 +21201,7 @@ switch (item->type) { case XML_SCHEMA_TYPE_ELEMENT: elemDecl = (xmlSchemaElementPtr) item; - + if ((elemDecl->flags & XML_SCHEMAS_ELEM_INTERNAL_CHECKED) == 0) { xmlSchemaCheckElementDeclComponent( @@ -21121,7 +21231,7 @@ } if (pctxt->nberrors != 0) goto exit_error; - + /* * Finally we can build the automaton from the content model of * complex types. @@ -21142,10 +21252,10 @@ goto exit_error; /* * URGENT TODO: cos-element-consistent - */ - goto exit; + */ + goto exit; -exit_error: +exit_error: ret = pctxt->err; goto exit; @@ -21159,12 +21269,12 @@ * if not cleared here. */ con->bucket = oldbucket; - con->pending->nbItems = 0; + con->pending->nbItems = 0; if (con->substGroups != NULL) { xmlHashFree(con->substGroups, (xmlHashDeallocator) xmlSchemaSubstGroupFree); con->substGroups = NULL; - } + } if (con->redefs != NULL) { xmlSchemaRedefListFree(con->redefs); con->redefs = NULL; @@ -21227,11 +21337,11 @@ if (res == -1) goto exit_failure; if (res != 0) - goto exit; + goto exit; if (bucket == NULL) { /* TODO: Error code, actually we failed to *locate* the schema. */ - if (ctxt->URL) + if (ctxt->URL) xmlSchemaCustomErr(ACTXT_CAST ctxt, XML_SCHEMAP_FAILED_LOAD, NULL, NULL, "Failed to locate the main schema resource at '%s'", @@ -21242,16 +21352,16 @@ "Failed to locate the main schema resource", NULL, NULL); goto exit; - } + } /* Then do the parsing for good. */ if (xmlSchemaParseNewDocWithContext(ctxt, mainSchema, bucket) == -1) goto exit_failure; if (ctxt->nberrors != 0) goto exit; - + mainSchema->doc = bucket->doc; mainSchema->preserve = ctxt->preserve; - + ctxt->schema = mainSchema; if (xmlSchemaFixupComponents(ctxt, WXS_CONSTRUCTOR(ctxt)->mainBucket) == -1) @@ -21261,8 +21371,8 @@ * TODO: This is not nice, since we cannot distinguish from the * result if there was an internal error or not. */ -exit: - if (ctxt->nberrors != 0) { +exit: + if (ctxt->nberrors != 0) { if (mainSchema) { xmlSchemaFree(mainSchema); mainSchema = NULL; @@ -21276,7 +21386,7 @@ ctxt->schema = NULL; return(mainSchema); exit_failure: - /* + /* * Quite verbose, but should catch internal errors, which were * not communitated. */ @@ -21290,7 +21400,7 @@ ctxt->ownsConstructor = 0; } PERROR_INT2("xmlSchemaParse", - "An internal error occured"); + "An internal error occured"); ctxt->schema = NULL; return(NULL); } @@ -21427,8 +21537,8 @@ return(XML_SCHEMA_WHITESPACE_REPLACE); else { /* - * For all atomic datatypes other than string (and types derived - * by restriction from it) the value of whiteSpace is fixed to + * For all `atomic` datatypes other than string (and types `derived` + * by `restriction` from it) the value of whiteSpace is fixed to * collapse * Note that this includes built-in list datatypes. */ @@ -21453,16 +21563,16 @@ } /************************************************************************ - * * - * Simple type validation * - * * + * * + * Simple type validation * + * * ************************************************************************/ /************************************************************************ - * * - * DOM Validation code * - * * + * * + * DOM Validation code * + * * ************************************************************************/ /** @@ -21515,11 +21625,11 @@ * XML_SCHEMA_SCHEMA_MAIN if it is the first schema document. */ ret = xmlSchemaAddSchemaDoc(pctxt, XML_SCHEMA_SCHEMA_IMPORT, - location, NULL, NULL, 0, node, NULL, nsName, + location, NULL, NULL, 0, node, NULL, nsName, &bucket); if (ret != 0) - return(ret); - if (bucket == NULL) { + return(ret); + if (bucket == NULL) { /* * Generate a warning that the document could not be located. */ @@ -21549,17 +21659,17 @@ pctxt->nberrors = 0; pctxt->err = 0; pctxt->doc = bucket->doc; - - ret = xmlSchemaParseNewDocWithContext(pctxt, schema, bucket); + + ret = xmlSchemaParseNewDocWithContext(pctxt, schema, bucket); if (ret == -1) { pctxt->doc = NULL; goto exit_failure; } /* Paranoid error channelling. */ if ((ret == 0) && (pctxt->nberrors != 0)) - ret = pctxt->err; - if (pctxt->nberrors == 0) { - /* + ret = pctxt->err; + if (pctxt->nberrors == 0) { + /* * Only bother to fixup pending components, if there was * no error yet. * For every XSI acquired schema (and its sub-schemata) we will @@ -21575,7 +21685,7 @@ vctxt->err = ret; vctxt->nberrors += pctxt->nberrors; } else { - /* Add to validation error sum. */ + /* Add to validation error sum. */ vctxt->nberrors += pctxt->nberrors; } pctxt->doc = NULL; @@ -21586,7 +21696,7 @@ } static xmlSchemaAttrInfoPtr -xmlSchemaGetMetaAttrInfo(xmlSchemaValidCtxtPtr vctxt, +xmlSchemaGetMetaAttrInfo(xmlSchemaValidCtxtPtr vctxt, int metaType) { if (vctxt->nbAttrInfos == 0) @@ -21676,7 +21786,7 @@ /* * If using @schemaLocation then tuples are expected. * I.e. the namespace name *and* the document's URI. - */ + */ xmlSchemaCustomWarning(ACTXT_CAST vctxt, XML_SCHEMAV_MISC, iattr->node, NULL, "The value must consist of tuples: the target namespace " @@ -21705,7 +21815,7 @@ if (vctxt->sax != NULL) { int i, j; xmlSchemaNodeInfoPtr inode; - + for (i = vctxt->depth; i >= 0; i--) { if (vctxt->elemInfos[i]->nbNsBindings != 0) { inode = vctxt->elemInfos[i]; @@ -21719,16 +21829,16 @@ * Note that the namespace bindings are already * in a string dict. */ - return (inode->nsBindings[j+1]); + return (inode->nsBindings[j+1]); } } } } return (NULL); -#ifdef LIBXML_WRITER_ENABLED +#ifdef LIBXML_READER_ENABLED } else if (vctxt->reader != NULL) { xmlChar *nsName; - + nsName = xmlTextReaderLookupNamespace(vctxt->reader, prefix); if (nsName != NULL) { const xmlChar *ret; @@ -21760,7 +21870,7 @@ * This one works on the schema of the validation context. */ static int -xmlSchemaValidateNotation(xmlSchemaValidCtxtPtr vctxt, +xmlSchemaValidateNotation(xmlSchemaValidCtxtPtr vctxt, xmlSchemaPtr schema, xmlNodePtr node, const xmlChar *value, @@ -21785,7 +21895,7 @@ if (prefix != NULL) { const xmlChar *nsName = NULL; - if (vctxt != NULL) + if (vctxt != NULL) nsName = xmlSchemaLookupNamespace(vctxt, BAD_CAST prefix); else if (node != NULL) { xmlNsPtr ns = xmlSearchNs(node->doc, node, prefix); @@ -21802,9 +21912,9 @@ return (1); } if (xmlSchemaGetNotation(schema, localName, nsName) != NULL) { - if (valNeeded && (val != NULL)) { - (*val) = xmlSchemaNewNOTATIONValue(BAD_CAST localName, - BAD_CAST xmlStrdup(nsName)); + if ((valNeeded) && (val != NULL)) { + (*val) = xmlSchemaNewNOTATIONValue(xmlStrdup(localName), + xmlStrdup(nsName)); if (*val == NULL) ret = -1; } @@ -21856,9 +21966,9 @@ } /************************************************************************ - * * + * * * Validation of identity-constraints (IDC) * - * * + * * ************************************************************************/ /** @@ -21900,6 +22010,20 @@ } /** + * xmlSchemaAugmentImportedIDC: + * @imported: the imported schema + * + * Creates an augmented IDC definition for the imported schema. + */ +static void +xmlSchemaAugmentImportedIDC(xmlSchemaImportPtr imported, xmlSchemaValidCtxtPtr vctxt) { + if (imported->schema->idcDef != NULL) { + xmlHashScan(imported->schema->idcDef , + (xmlHashScanner) xmlSchemaAugmentIDC, vctxt); + } +} + +/** * xmlSchemaIDCNewBinding: * @idcDef: the IDC definition of this binding * @@ -22123,7 +22247,7 @@ if (bind->nodeTable != NULL) xmlFree(bind->nodeTable); if (bind->dupls != NULL) - xmlSchemaItemListFree(bind->dupls); + xmlSchemaItemListFree(bind->dupls); xmlFree(bind); } @@ -22158,12 +22282,12 @@ while (matcher != NULL) { next = matcher->next; - if (matcher->keySeqs != NULL) { + if (matcher->keySeqs != NULL) { int i; for (i = 0; i < matcher->sizeKeySeqs; i++) if (matcher->keySeqs[i] != NULL) xmlFree(matcher->keySeqs[i]); - xmlFree(matcher->keySeqs); + xmlFree(matcher->keySeqs); } if (matcher->targets != NULL) { if (matcher->idcType == XML_SCHEMA_TYPE_IDC_KEYREF) { @@ -22203,7 +22327,7 @@ while (matcher != NULL) { next = matcher->next; - if (matcher->keySeqs != NULL) { + if (matcher->keySeqs != NULL) { int i; /* * Don't free the array, but only the content. @@ -22232,7 +22356,7 @@ } xmlSchemaItemListFree(matcher->targets); matcher->targets = NULL; - } + } matcher->next = NULL; /* * Cache the matcher. @@ -22274,7 +22398,7 @@ sto = vctxt->xpathStatePool; vctxt->xpathStatePool = sto->next; sto->next = NULL; - } else { + } else { /* * Create a new state object. */ @@ -22285,10 +22409,10 @@ return (-1); } memset(sto, 0, sizeof(xmlSchemaIDCStateObj)); - } + } /* - * Add to global list. - */ + * Add to global list. + */ if (vctxt->xpathStates != NULL) sto->next = vctxt->xpathStates; vctxt->xpathStates = sto; @@ -22308,13 +22432,13 @@ VERROR_INT("xmlSchemaIDCAddStateObject", "failed to create an XPath validation context"); return (-1); - } + } sto->type = type; sto->depth = vctxt->depth; sto->matcher = matcher; sto->sel = sel; sto->nbHistory = 0; - + #ifdef DEBUG_IDC xmlGenericError(xmlGenericErrorContext, "IDC: STO push '%s'\n", sto->sel->xpath); @@ -22338,7 +22462,7 @@ { xmlSchemaIDCStateObjPtr sto, head = NULL, first; int res, resolved = 0, depth = vctxt->depth; - + if (vctxt->xpathStates == NULL) return (0); @@ -22347,8 +22471,8 @@ #ifdef DEBUG_IDC { xmlChar *str = NULL; - xmlGenericError(xmlGenericErrorContext, - "IDC: EVAL on %s, depth %d, type %d\n", + xmlGenericError(xmlGenericErrorContext, + "IDC: EVAL on %s, depth %d, type %d\n", xmlSchemaFormatQName(&str, vctxt->inode->nsName, vctxt->inode->localName), depth, nodeType); FREE_AND_NULL(str) @@ -22362,10 +22486,10 @@ while (sto != head) { #ifdef DEBUG_IDC if (sto->type == XPATH_STATE_OBJ_TYPE_IDC_SELECTOR) - xmlGenericError(xmlGenericErrorContext, "IDC: ['%s'] selector '%s'\n", + xmlGenericError(xmlGenericErrorContext, "IDC: ['%s'] selector '%s'\n", sto->matcher->aidc->def->name, sto->sel->xpath); else - xmlGenericError(xmlGenericErrorContext, "IDC: ['%s'] field '%s'\n", + xmlGenericError(xmlGenericErrorContext, "IDC: ['%s'] field '%s'\n", sto->matcher->aidc->def->name, sto->sel->xpath); #endif if (nodeType == XML_ELEMENT_NODE) @@ -22395,7 +22519,7 @@ if (sto->history == NULL) { sto->history = (int *) xmlMalloc(5 * sizeof(int)); if (sto->history == NULL) { - xmlSchemaVErrMemory(NULL, + xmlSchemaVErrMemory(NULL, "allocating the state object history", NULL); return(-1); } @@ -22405,11 +22529,11 @@ sto->history = (int *) xmlRealloc(sto->history, sto->sizeHistory * sizeof(int)); if (sto->history == NULL) { - xmlSchemaVErrMemory(NULL, + xmlSchemaVErrMemory(NULL, "re-allocating the state object history", NULL); return(-1); } - } + } sto->history[sto->nbHistory++] = depth; #ifdef DEBUG_IDC @@ -22478,7 +22602,7 @@ *buf = xmlStrdup(BAD_CAST "["); for (i = 0; i < count; i++) { *buf = xmlStrcat(*buf, BAD_CAST "'"); - res = xmlSchemaGetCanonValueWhtspExt(seq[i]->val, + res = xmlSchemaGetCanonValueWhtspExt(seq[i]->val, xmlSchemaGetWhiteSpaceFacetValue(seq[i]->type), &value); if (res == 0) @@ -22536,7 +22660,7 @@ * * Processes and pops the history items of the IDC state objects. * IDC key-sequences are validated/created on IDC bindings. - * + * * Returns 0 on success and -1 on internal errors. */ static int @@ -22555,13 +22679,13 @@ #ifdef DEBUG_IDC { xmlChar *str = NULL; - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "IDC: BACK on %s, depth %d\n", xmlSchemaFormatQName(&str, vctxt->inode->nsName, vctxt->inode->localName), vctxt->depth); FREE_AND_NULL(str) } -#endif +#endif /* * Evaluate the state objects. */ @@ -22587,14 +22711,14 @@ if (matchDepth != depth) { sto = sto->next; continue; - } + } if (sto->type == XPATH_STATE_OBJ_TYPE_IDC_FIELD) { /* * NOTE: According to * http://www.w3.org/Bugs/Public/show_bug.cgi?id=2198 * ... the simple-content of complex types is also allowed. */ - + if (WXS_IS_COMPLEX(type)) { if (WXS_HAS_SIMPLE_CONTENT(type)) { /* @@ -22609,17 +22733,17 @@ } } else simpleType = NULL; - } else + } else simpleType = type; if (simpleType == NULL) { xmlChar *str = NULL; - + /* * Not qualified if the field resolves to a node of non * simple type. - */ + */ xmlSchemaCustomErr(ACTXT_CAST vctxt, - XML_SCHEMAV_CVC_IDC, NULL, + XML_SCHEMAV_CVC_IDC, NULL, WXS_BASIC_CAST sto->matcher->aidc->def, "The XPath '%s' of a field of %s does evaluate to a node of " "non-simple type", @@ -22629,7 +22753,7 @@ sto->nbHistory--; goto deregister_check; } - + if ((key == NULL) && (vctxt->inode->val == NULL)) { /* * Failed to provide the normalized value; maybe @@ -22645,13 +22769,13 @@ xmlSchemaIDCMatcherPtr matcher = sto->matcher; xmlSchemaPSVIIDCKeyPtr *keySeq; int pos, idx; - + /* * The key will be anchored on the matcher's list of * key-sequences. The position in this list is determined * by the target node's depth relative to the matcher's * depth of creation (i.e. the depth of the scope element). - * + * * Element Depth Pos List-entries * 0 NULL * 1 NULL @@ -22662,23 +22786,23 @@ * The size of the list is only dependant on the depth of * the tree. * An entry will be NULLed in selector_leave, i.e. when - * we hit the target's - */ + * we hit the target's + */ pos = sto->depth - matcher->depth; idx = sto->sel->index; - + /* * Create/grow the array of key-sequences. */ if (matcher->keySeqs == NULL) { - if (pos > 9) + if (pos > 9) matcher->sizeKeySeqs = pos * 2; else matcher->sizeKeySeqs = 10; - matcher->keySeqs = (xmlSchemaPSVIIDCKeyPtr **) + matcher->keySeqs = (xmlSchemaPSVIIDCKeyPtr **) xmlMalloc(matcher->sizeKeySeqs * - sizeof(xmlSchemaPSVIIDCKeyPtr *)); - if (matcher->keySeqs == NULL) { + sizeof(xmlSchemaPSVIIDCKeyPtr *)); + if (matcher->keySeqs == NULL) { xmlSchemaVErrMemory(NULL, "allocating an array of key-sequences", NULL); @@ -22687,9 +22811,9 @@ memset(matcher->keySeqs, 0, matcher->sizeKeySeqs * sizeof(xmlSchemaPSVIIDCKeyPtr *)); - } else if (pos >= matcher->sizeKeySeqs) { + } else if (pos >= matcher->sizeKeySeqs) { int i = matcher->sizeKeySeqs; - + matcher->sizeKeySeqs *= 2; matcher->keySeqs = (xmlSchemaPSVIIDCKeyPtr **) xmlRealloc(matcher->keySeqs, @@ -22705,29 +22829,29 @@ * The array needs to be NULLed. * TODO: Use memset? */ - for (; i < matcher->sizeKeySeqs; i++) - matcher->keySeqs[i] = NULL; + for (; i < matcher->sizeKeySeqs; i++) + matcher->keySeqs[i] = NULL; } - + /* * Get/create the key-sequence. */ - keySeq = matcher->keySeqs[pos]; - if (keySeq == NULL) { + keySeq = matcher->keySeqs[pos]; + if (keySeq == NULL) { goto create_sequence; } else if (keySeq[idx] != NULL) { xmlChar *str = NULL; /* * cvc-identity-constraint: - * 3 For each node in the target node set all + * 3 For each node in the `target node set` all * of the {fields}, with that node as the context * node, evaluate to either an empty node-set or * a node-set with exactly one member, which must * have a simple type. - * + * * The key was already set; report an error. */ - xmlSchemaCustomErr(ACTXT_CAST vctxt, + xmlSchemaCustomErr(ACTXT_CAST vctxt, XML_SCHEMAV_CVC_IDC, NULL, WXS_BASIC_CAST matcher->aidc->def, "The XPath '%s' of a field of %s evaluates to a " @@ -22738,27 +22862,27 @@ sto->nbHistory--; goto deregister_check; } else - goto create_key; - + goto create_key; + create_sequence: /* * Create a key-sequence. */ keySeq = (xmlSchemaPSVIIDCKeyPtr *) xmlMalloc( - matcher->aidc->def->nbFields * + matcher->aidc->def->nbFields * sizeof(xmlSchemaPSVIIDCKeyPtr)); if (keySeq == NULL) { - xmlSchemaVErrMemory(NULL, + xmlSchemaVErrMemory(NULL, "allocating an IDC key-sequence", NULL); - return(-1); - } - memset(keySeq, 0, matcher->aidc->def->nbFields * + return(-1); + } + memset(keySeq, 0, matcher->aidc->def->nbFields * sizeof(xmlSchemaPSVIIDCKeyPtr)); matcher->keySeqs[pos] = keySeq; create_key: /* * Create a key once per node only. - */ + */ if (key == NULL) { key = (xmlSchemaPSVIIDCKeyPtr) xmlMalloc( sizeof(xmlSchemaPSVIIDCKey)); @@ -22767,7 +22891,7 @@ "allocating a IDC key", NULL); xmlFree(keySeq); matcher->keySeqs[pos] = NULL; - return(-1); + return(-1); } /* * Consume the compiled value. @@ -22783,10 +22907,10 @@ return (-1); } } - keySeq[idx] = key; + keySeq[idx] = key; } } else if (sto->type == XPATH_STATE_OBJ_TYPE_IDC_SELECTOR) { - + xmlSchemaPSVIIDCKeyPtr **keySeq = NULL; /* xmlSchemaPSVIIDCBindingPtr bind; */ xmlSchemaPSVIIDCNodePtr ntItem; @@ -22797,22 +22921,22 @@ /* * Here we have the following scenario: * An IDC 'selector' state object resolved to a target node, - * during the time this target node was in the - * ancestor-or-self axis, the 'field' state object(s) looked - * out for matching nodes to create a key-sequence for this + * during the time this target node was in the + * ancestor-or-self axis, the 'field' state object(s) looked + * out for matching nodes to create a key-sequence for this * target node. Now we are back to this target node and need - * to put the key-sequence, together with the target node - * itself, into the node-table of the corresponding IDC + * to put the key-sequence, together with the target node + * itself, into the node-table of the corresponding IDC * binding. */ matcher = sto->matcher; idc = matcher->aidc->def; nbKeys = idc->nbFields; - pos = depth - matcher->depth; + pos = depth - matcher->depth; /* * Check if the matcher has any key-sequences at all, plus * if it has a key-sequence for the current target node. - */ + */ if ((matcher->keySeqs == NULL) || (matcher->sizeKeySeqs <= pos)) { if (idc->type == XML_SCHEMA_TYPE_IDC_KEY) @@ -22820,15 +22944,15 @@ else goto selector_leave; } - - keySeq = &(matcher->keySeqs[pos]); + + keySeq = &(matcher->keySeqs[pos]); if (*keySeq == NULL) { if (idc->type == XML_SCHEMA_TYPE_IDC_KEY) goto selector_key_error; else goto selector_leave; } - + for (i = 0; i < nbKeys; i++) { if ((*keySeq)[i] == NULL) { /* @@ -22839,18 +22963,18 @@ * All fields of a "key" IDC must resolve. */ goto selector_key_error; - } + } goto selector_leave; } } /* * All fields did resolve. */ - + /* * 4.1 If the {identity-constraint category} is unique(/key), - * then no two members of the qualified node set have - * key-sequences whose members are pairwise equal, as + * then no two members of the `qualified node set` have + * `key-sequences` whose members are pairwise equal, as * defined by Equal in [XML Schemas: Datatypes]. * * Get the IDC binding from the matcher and check for @@ -22860,10 +22984,10 @@ bind = xmlSchemaIDCAcquireBinding(vctxt, matcher); #endif targets = xmlSchemaIDCAcquireTargetList(vctxt, matcher); - if ((idc->type != XML_SCHEMA_TYPE_IDC_KEYREF) && + if ((idc->type != XML_SCHEMA_TYPE_IDC_KEYREF) && (targets->nbItems != 0)) { xmlSchemaPSVIIDCKeyPtr ckey, bkey, *bkeySeq; - + i = 0; res = 0; /* @@ -22874,7 +22998,7 @@ ((xmlSchemaPSVIIDCNodePtr) targets->items[i])->keys; for (j = 0; j < nbKeys; j++) { ckey = (*keySeq)[j]; - bkey = bkeySeq[j]; + bkey = bkeySeq[j]; res = xmlSchemaAreValuesEqual(ckey->val, bkey->val); if (res == -1) { return (-1); @@ -22896,10 +23020,10 @@ } while (i < targets->nbItems); if (i != targets->nbItems) { xmlChar *str = NULL, *strB = NULL; - /* + /* * TODO: Try to report the key-sequence. */ - xmlSchemaCustomErr(ACTXT_CAST vctxt, + xmlSchemaCustomErr(ACTXT_CAST vctxt, XML_SCHEMAV_CVC_IDC, NULL, WXS_BASIC_CAST idc, "Duplicate key-sequence %s in %s", @@ -22917,15 +23041,15 @@ ntItem = (xmlSchemaPSVIIDCNodePtr) xmlMalloc( sizeof(xmlSchemaPSVIIDCNode)); if (ntItem == NULL) { - xmlSchemaVErrMemory(NULL, + xmlSchemaVErrMemory(NULL, "allocating an IDC node-table item", NULL); xmlFree(*keySeq); *keySeq = NULL; return(-1); - } + } memset(ntItem, 0, sizeof(xmlSchemaPSVIIDCNode)); - - /* + + /* * Store the node-table item in a global list. */ if (idc->type != XML_SCHEMA_TYPE_IDC_KEYREF) { @@ -22947,7 +23071,7 @@ xmlFree(ntItem); xmlFree(*keySeq); *keySeq = NULL; - return (-1); + return (-1); } } /* @@ -22959,11 +23083,11 @@ ntItem->keys = *keySeq; *keySeq = NULL; #if 0 - if (xmlSchemaIDCAppendNodeTableItem(bind, ntItem) == -1) { + if (xmlSchemaIDCAppendNodeTableItem(bind, ntItem) == -1) #endif if (xmlSchemaItemListAdd(targets, ntItem) == -1) { if (idc->type == XML_SCHEMA_TYPE_IDC_KEYREF) { - /* + /* * Free the item, since keyref items won't be * put on a global list. */ @@ -22972,18 +23096,18 @@ } return (-1); } - + goto selector_leave; selector_key_error: { xmlChar *str = NULL; /* - * 4.2.1 (KEY) The target node set and the - * qualified node set are equal, that is, every - * member of the target node set is also a member - * of the qualified node set and vice versa. + * 4.2.1 (KEY) The `target node set` and the + * `qualified node set` are equal, that is, every + * member of the `target node set` is also a member + * of the `qualified node set` and vice versa. */ - xmlSchemaCustomErr(ACTXT_CAST vctxt, + xmlSchemaCustomErr(ACTXT_CAST vctxt, XML_SCHEMAV_CVC_IDC, NULL, WXS_BASIC_CAST idc, "Not all fields of %s evaluate to a node", @@ -22999,7 +23123,7 @@ *keySeq = NULL; } } /* if selector */ - + sto->nbHistory--; deregister_check: @@ -23050,15 +23174,15 @@ xmlSchemaIDCMatcherPtr matcher, last = NULL; xmlSchemaIDCPtr idc, refIdc; xmlSchemaIDCAugPtr aidc; - + idc = (xmlSchemaIDCPtr) elemDecl->idcs; if (idc == NULL) return (0); - + #ifdef DEBUG_IDC { xmlChar *str = NULL; - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "IDC: REGISTER on %s, depth %d\n", (char *) xmlSchemaFormatQName(&str, vctxt->inode->nsName, vctxt->inode->localName), vctxt->depth); @@ -23099,7 +23223,7 @@ "Could not find an augmented IDC item for an IDC " "definition"); return (-1); - } + } if ((aidc->keyrefDepth == -1) || (vctxt->depth < aidc->keyrefDepth)) aidc->keyrefDepth = vctxt->depth; @@ -23130,10 +23254,10 @@ vctxt->idcMatcherCache = matcher->nextCached; matcher->nextCached = NULL; } else { - matcher = (xmlSchemaIDCMatcherPtr) + matcher = (xmlSchemaIDCMatcherPtr) xmlMalloc(sizeof(xmlSchemaIDCMatcher)); if (matcher == NULL) { - xmlSchemaVErrMemory(vctxt, + xmlSchemaVErrMemory(vctxt, "allocating an IDC matcher", NULL); return (-1); } @@ -23146,16 +23270,16 @@ last = matcher; matcher->type = IDC_MATCHER; - matcher->depth = vctxt->depth; + matcher->depth = vctxt->depth; matcher->aidc = aidc; matcher->idcType = aidc->def->type; -#ifdef DEBUG_IDC +#ifdef DEBUG_IDC xmlGenericError(xmlGenericErrorContext, "IDC: register matcher\n"); -#endif +#endif /* - * Init the automaton state object. + * Init the automaton state object. */ - if (xmlSchemaIDCAddStateObject(vctxt, matcher, + if (xmlSchemaIDCAddStateObject(vctxt, matcher, idc->selector, XPATH_STATE_OBJ_TYPE_IDC_SELECTOR) == -1) return (-1); @@ -23172,7 +23296,7 @@ int res, i, j, k, nbTargets, nbFields, nbDupls, nbNodeTable; xmlSchemaPSVIIDCKeyPtr *keys, *ntkeys; xmlSchemaPSVIIDCNodePtr *targets, *dupls; - + xmlSchemaIDCMatcherPtr matcher = ielem->idcMatchers; /* vctxt->createIDCNodeTables */ while (matcher != NULL) { @@ -23206,7 +23330,7 @@ nbDupls = bind->dupls->nbItems; } else { dupls = NULL; - nbDupls = 0; + nbDupls = 0; } if (bind->nodeTable != NULL) { nbNodeTable = bind->nbNodes; @@ -23219,29 +23343,29 @@ * Transfer all IDC target-nodes to the IDC node-table. */ bind->nodeTable = - (xmlSchemaPSVIIDCNodePtr *) matcher->targets->items; + (xmlSchemaPSVIIDCNodePtr *) matcher->targets->items; bind->sizeNodes = matcher->targets->sizeItems; bind->nbNodes = matcher->targets->nbItems; matcher->targets->items = NULL; matcher->targets->sizeItems = 0; - matcher->targets->nbItems = 0; + matcher->targets->nbItems = 0; } else { /* * Compare the key-sequences and add to the IDC node-table. */ nbTargets = matcher->targets->nbItems; - targets = (xmlSchemaPSVIIDCNodePtr *) matcher->targets->items; + targets = (xmlSchemaPSVIIDCNodePtr *) matcher->targets->items; nbFields = matcher->aidc->def->nbFields; i = 0; do { keys = targets[i]->keys; - if (nbDupls) { + if (nbDupls) { /* * Search in already found duplicates first. */ j = 0; - do { + do { if (nbFields == 1) { res = xmlSchemaAreValuesEqual(keys[0]->val, dupls[j]->keys[0]->val); @@ -23276,11 +23400,11 @@ } } j++; - } while (j < nbDupls); + } while (j < nbDupls); } if (nbNodeTable) { j = 0; - do { + do { if (nbFields == 1) { res = xmlSchemaAreValuesEqual(keys[0]->val, bind->nodeTable[j]->keys[0]->val); @@ -23307,7 +23431,7 @@ goto next_node_table_entry; } } - } + } /* * Add the duplicate to the list of duplicates. */ @@ -23315,7 +23439,7 @@ bind->dupls = xmlSchemaItemListCreate(); if (bind->dupls == NULL) goto internal_error; - } + } if (xmlSchemaItemListAdd(bind->dupls, bind->nodeTable[j]) == -1) goto internal_error; /* @@ -23350,12 +23474,12 @@ } /** - * xmlSchemaBubbleIDCNodeTables: + * xmlSchemaBubbleIDCNodeTables: * @depth: the current tree depth * - * Merges IDC bindings of an element at @depth into the corresponding IDC - * bindings of its parent element. If a duplicate note-table entry is found, - * both, the parent node-table entry and child entry are discarded from the + * Merges IDC bindings of an element at @depth into the corresponding IDC + * bindings of its parent element. If a duplicate note-table entry is found, + * both, the parent node-table entry and child entry are discarded from the * node-table of the parent. * * Returns 0 if OK and -1 on internal errors. @@ -23369,19 +23493,19 @@ xmlSchemaIDCAugPtr aidc; int i, j, k, ret = 0, nbFields, oldNum, oldDupls; - bind = vctxt->inode->idcTable; + bind = vctxt->inode->idcTable; if (bind == NULL) { /* Fine, no table, no bubbles. */ return (0); } - + parTable = &(vctxt->elemInfos[vctxt->depth -1]->idcTable); /* * Walk all bindings; create new or add to existing bindings. * Remove duplicate key-sequences. */ while (bind != NULL) { - + if ((bind->nbNodes == 0) && WXS_ILIST_IS_EMPTY(bind->dupls)) goto next_binding; /* @@ -23391,7 +23515,7 @@ aidc = vctxt->aidcs; do { if (aidc->def == bind->definition) { - if ((aidc->keyrefDepth == -1) || + if ((aidc->keyrefDepth == -1) || (aidc->keyrefDepth >= vctxt->depth)) { goto next_binding; } @@ -23407,7 +23531,7 @@ * Search a matching parent binding for the * IDC definition. */ - while (parBind != NULL) { + while (parBind != NULL) { if (parBind->definition == bind->definition) break; parBind = parBind->next; @@ -23415,7 +23539,7 @@ if (parBind != NULL) { /* - * Compare every node-table entry of the child node, + * Compare every node-table entry of the child node, * i.e. the key-sequence within, ... */ oldNum = parBind->nbNodes; /* Skip newly added items. */ @@ -23425,12 +23549,12 @@ dupls = (xmlSchemaPSVIIDCNodePtr *) parBind->dupls->items; } else { dupls = NULL; - oldDupls = 0; + oldDupls = 0; } - + parNodes = parBind->nodeTable; nbFields = bind->definition->nbFields; - + for (i = 0; i < bind->nbNodes; i++) { node = bind->nodeTable[i]; if (node == NULL) @@ -23440,7 +23564,7 @@ * evaluated to be a duplicate key-sequence. */ if (oldDupls) { - j = 0; + j = 0; while (j < oldDupls) { if (nbFields == 1) { ret = xmlSchemaAreValuesEqual( @@ -23473,12 +23597,12 @@ /* Duplicate found. Skip this entry. */ continue; } - } + } /* * ... and with every key-sequence of the parent node. */ if (oldNum) { - j = 0; + j = 0; while (j < oldNum) { parNode = parNodes[j]; if (nbFields == 1) { @@ -23491,7 +23615,7 @@ j++; continue; } - } else { + } else { for (k = 0; k < nbFields; k++) { ret = xmlSchemaAreValuesEqual( node->keys[k]->val, @@ -23512,20 +23636,20 @@ * Handle duplicates. Move the duplicate in * the parent's node-table to the list of * duplicates. - */ + */ oldNum--; parBind->nbNodes--; /* * Move last old item to pos of duplicate. */ parNodes[j] = parNodes[oldNum]; - + if (parBind->nbNodes != oldNum) { /* - * If new items exist, move last new item to + * If new items exist, move last new item to * last of old items. */ - parNodes[oldNum] = + parNodes[oldNum] = parNodes[parBind->nbNodes]; } if (parBind->dupls == NULL) { @@ -23533,31 +23657,31 @@ if (parBind->dupls == NULL) goto internal_error; } - xmlSchemaItemListAdd(parBind->dupls, parNode); + xmlSchemaItemListAdd(parBind->dupls, parNode); } else { /* - * Add the node-table entry (node and key-sequence) of + * Add the node-table entry (node and key-sequence) of * the child node to the node table of the parent node. */ - if (parBind->nodeTable == NULL) { - parBind->nodeTable = (xmlSchemaPSVIIDCNodePtr *) + if (parBind->nodeTable == NULL) { + parBind->nodeTable = (xmlSchemaPSVIIDCNodePtr *) xmlMalloc(10 * sizeof(xmlSchemaPSVIIDCNodePtr)); if (parBind->nodeTable == NULL) { - xmlSchemaVErrMemory(NULL, + xmlSchemaVErrMemory(NULL, "allocating IDC list of node-table items", NULL); goto internal_error; } parBind->sizeNodes = 1; } else if (parBind->nbNodes >= parBind->sizeNodes) { parBind->sizeNodes *= 2; - parBind->nodeTable = (xmlSchemaPSVIIDCNodePtr *) - xmlRealloc(parBind->nodeTable, parBind->sizeNodes * + parBind->nodeTable = (xmlSchemaPSVIIDCNodePtr *) + xmlRealloc(parBind->nodeTable, parBind->sizeNodes * sizeof(xmlSchemaPSVIIDCNodePtr)); if (parBind->nodeTable == NULL) { - xmlSchemaVErrMemory(NULL, + xmlSchemaVErrMemory(NULL, "re-allocating IDC list of node-table items", NULL); goto internal_error; - } + } } parNodes = parBind->nodeTable; /* @@ -23567,9 +23691,9 @@ parNodes[parBind->nbNodes++] = node; } - } - - } + } + + } } else { /* * No binding for the IDC was found: create a new one and @@ -23578,7 +23702,7 @@ parBind = xmlSchemaIDCNewBinding(bind->definition); if (parBind == NULL) goto internal_error; - + /* * TODO: Hmm, how to optimize the initial number of * allocated entries? @@ -23604,11 +23728,11 @@ /* * Copy the entries. */ - parBind->nodeTable = (xmlSchemaPSVIIDCNodePtr *) + parBind->nodeTable = (xmlSchemaPSVIIDCNodePtr *) xmlMalloc(bind->nbNodes * sizeof(xmlSchemaPSVIIDCNodePtr)); if (parBind->nodeTable == NULL) { - xmlSchemaVErrMemory(NULL, + xmlSchemaVErrMemory(NULL, "allocating an array of IDC node-table " "items", NULL); xmlSchemaIDCFreeBinding(parBind); @@ -23627,15 +23751,17 @@ if (parBind->dupls != NULL) xmlSchemaItemListFree(parBind->dupls); parBind->dupls = bind->dupls; - bind->dupls = NULL; + bind->dupls = NULL; } - if (*parTable == NULL) - *parTable = parBind; - else { - parBind->next = *parTable; - *parTable = parBind; - } - } + if (parTable != NULL) { + if (*parTable == NULL) + *parTable = parBind; + else { + parBind->next = *parTable; + *parTable = parBind; + } + } + } next_binding: bind = bind->next; @@ -23658,7 +23784,7 @@ { xmlSchemaIDCMatcherPtr matcher; xmlSchemaPSVIIDCBindingPtr bind; - + matcher = vctxt->inode->idcMatchers; /* * Find a keyref. @@ -23679,7 +23805,7 @@ */ bind = vctxt->inode->idcTable; while (bind != NULL) { - if ((xmlSchemaIDCPtr) matcher->aidc->def->ref->item == + if ((xmlSchemaIDCPtr) matcher->aidc->def->ref->item == bind->definition) break; bind = bind->next; @@ -23748,7 +23874,7 @@ } } } - + if (res == 0) { xmlChar *str = NULL, *strB = NULL; xmlSchemaKeyrefErr(vctxt, @@ -23770,9 +23896,9 @@ } /************************************************************************ - * * - * XML Reader validation code * - * * + * * + * XML Reader validation code * + * * ************************************************************************/ static xmlSchemaAttrInfoPtr @@ -23832,7 +23958,7 @@ xmlNodePtr attrNode, int nodeLine, const xmlChar *localName, - const xmlChar *nsName, + const xmlChar *nsName, int ownedNames, xmlChar *value, int ownedValue) @@ -23858,7 +23984,7 @@ if (nsName != NULL) { if (xmlStrEqual(localName, BAD_CAST "nil")) { if (xmlStrEqual(attr->nsName, xmlSchemaInstanceNs)) { - attr->metaType = XML_SCHEMA_ATTR_INFO_META_XSI_NIL; + attr->metaType = XML_SCHEMA_ATTR_INFO_META_XSI_NIL; } } else if (xmlStrEqual(localName, BAD_CAST "type")) { if (xmlStrEqual(attr->nsName, xmlSchemaInstanceNs)) { @@ -24060,6 +24186,7 @@ else goto pattern_and_enum; } + /* * Whitespace handling is only of importance for string-based * types. @@ -24070,16 +24197,15 @@ ws = xmlSchemaGetWhiteSpaceFacetValue(type); } else ws = XML_SCHEMA_WHITESPACE_COLLAPSE; + /* * If the value was not computed (for string or * anySimpleType based types), then use the provided * type. */ - if (val == NULL) - valType = valType; - else + if (val != NULL) valType = xmlSchemaGetValType(val); - + ret = 0; for (facetLink = type->facetSet; facetLink != NULL; facetLink = facetLink->next) { @@ -24128,11 +24254,11 @@ ret = 0; for (facetLink = type->facetSet; facetLink != NULL; facetLink = facetLink->next) { - + switch (facetLink->facet->type) { case XML_SCHEMA_FACET_LENGTH: case XML_SCHEMA_FACET_MINLENGTH: - case XML_SCHEMA_FACET_MAXLENGTH: + case XML_SCHEMA_FACET_MAXLENGTH: ret = xmlSchemaValidateListSimpleTypeFacet(facetLink->facet, value, length, NULL); break; @@ -24144,7 +24270,7 @@ "validating against a list type facet"); return (-1); } else if (ret > 0) { - if (fireErrors) + if (fireErrors) xmlSchemaFacetErr(actxt, ret, node, value, length, type, facetLink->facet, NULL, NULL, NULL); else @@ -24221,7 +24347,7 @@ if (facetLink->facet->type != XML_SCHEMA_FACET_PATTERN) continue; found = 1; - /* + /* * NOTE that for patterns, @value needs to be the * normalized vaule. */ @@ -24233,7 +24359,7 @@ "validating against a pattern facet"); return (-1); } else { - /* + /* * Save the last non-validating facet. */ facet = facetLink->facet; @@ -24256,12 +24382,12 @@ return (error); } - + static xmlChar * xmlSchemaNormalizeValue(xmlSchemaTypePtr type, const xmlChar *value) { - switch (xmlSchemaGetWhiteSpaceFacetValue(type)) { + switch (xmlSchemaGetWhiteSpaceFacetValue(type)) { case XML_SCHEMA_WHITESPACE_COLLAPSE: return (xmlSchemaCollapseString(value)); case XML_SCHEMA_WHITESPACE_REPLACE: @@ -24280,7 +24406,7 @@ int ret; const xmlChar *nsName; xmlChar *local, *prefix = NULL; - + ret = xmlValidateQName(value, 1); if (ret != 0) { if (ret == -1) { @@ -24303,7 +24429,7 @@ * - is there a default namespace? */ nsName = xmlSchemaLookupNamespace(vctxt, prefix); - + if (prefix != NULL) { xmlFree(prefix); /* @@ -24360,7 +24486,7 @@ value = normValue; \ isNormalized = 1; \ } - + if ((retVal != NULL) && (*retVal != NULL)) { xmlSchemaFreeValue(*retVal); *retVal = NULL; @@ -24375,14 +24501,14 @@ */ /* * 2.1 If The definition is ENTITY or is validly derived from ENTITY given - * the empty set, as defined in Type Derivation OK (Simple) (3.14.6), then - * the string must be a declared entity name. + * the empty set, as defined in Type Derivation OK (Simple) ($3.14.6), then + * the string must be a `declared entity name`. */ /* * 2.2 If The definition is ENTITIES or is validly derived from ENTITIES - * given the empty set, as defined in Type Derivation OK (Simple) (3.14.6), - * then every whitespace-delimited substring of the string must be a declared - * entity name. + * given the empty set, as defined in Type Derivation OK (Simple) ($3.14.6), + * then every whitespace-delimited substring of the string must be a `declared + * entity name`. */ /* * 2.3 otherwise no further condition applies. @@ -24394,8 +24520,8 @@ if (WXS_IS_ANY_SIMPLE_TYPE(type) || WXS_IS_ATOMIC(type)) { xmlSchemaTypePtr biType; /* The built-in type. */ /* - * SPEC (1.2.1) "if {variety} is atomic then the string must match - * a literal in the lexical space of {base type definition}" + * SPEC (1.2.1) "if {variety} is `atomic` then the string must `match` + * a literal in the `lexical space` of {base type definition}" */ /* * Whitespace-normalize. @@ -24421,9 +24547,9 @@ * NOTATIONs need to be processed here, since they need * to lookup in the hashtable of NOTATION declarations of the schema. */ - if (actxt->type == XML_SCHEMA_CTXT_VALIDATOR) { - switch (biType->builtInType) { - case XML_SCHEMAS_NOTATION: + if (actxt->type == XML_SCHEMA_CTXT_VALIDATOR) { + switch (biType->builtInType) { + case XML_SCHEMAS_NOTATION: ret = xmlSchemaValidateNotation( (xmlSchemaValidCtxtPtr) actxt, ((xmlSchemaValidCtxtPtr) actxt)->schema, @@ -24437,14 +24563,14 @@ /* ws = xmlSchemaGetWhiteSpaceFacetValue(type); */ if (valNeeded) ret = xmlSchemaValPredefTypeNodeNoNorm(biType, - value, &val, NULL); + value, &val, node); else ret = xmlSchemaValPredefTypeNodeNoNorm(biType, - value, NULL, NULL); + value, NULL, node); break; } - } else if (actxt->type == XML_SCHEMA_CTXT_PARSER) { - switch (biType->builtInType) { + } else if (actxt->type == XML_SCHEMA_CTXT_PARSER) { + switch (biType->builtInType) { case XML_SCHEMAS_NOTATION: ret = xmlSchemaValidateNotation(NULL, ((xmlSchemaParserCtxtPtr) actxt)->schema, node, @@ -24459,7 +24585,7 @@ ret = xmlSchemaValPredefTypeNodeNoNorm(biType, value, NULL, node); break; - } + } } else { /* * Validation via a public API is not implemented yet. @@ -24476,7 +24602,7 @@ if (WXS_IS_LIST(type)) ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2; else - ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1; + ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1; } if ((ret == 0) && (type->flags & XML_SCHEMAS_TYPE_HAS_FACETS)) { /* @@ -24491,10 +24617,10 @@ "validating facets of atomic simple type"); goto internal_error; } - if (WXS_IS_LIST(type)) + if (WXS_IS_LIST(type)) ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2; else - ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1; + ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1; } } if (fireErrors && (ret > 0)) @@ -24506,9 +24632,9 @@ xmlChar *tmpValue = NULL; unsigned long len = 0; xmlSchemaValPtr prevVal = NULL, curVal = NULL; - /* 1.2.2 if {variety} is list then the string must be a sequence - * of white space separated tokens, each of which matches a literal - * in the lexical space of {item type definition} + /* 1.2.2 if {variety} is `list` then the string must be a sequence + * of white space separated tokens, each of which `match`es a literal + * in the `lexical space` of {item type definition} */ /* * Note that XML_SCHEMAS_TYPE_NORMVALUENEEDED will be set if @@ -24519,7 +24645,7 @@ * VAL TODO: Optimize validation of empty values. * VAL TODO: We do not have computed values for lists. */ - itemType = WXS_LIST_ITEMTYPE(type); + itemType = WXS_LIST_ITEMTYPE(type); cur = value; do { while (IS_BLANK_CH(*cur)) @@ -24558,7 +24684,7 @@ } ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2; break; - } + } cur = end; } while (*cur != 0); FREE_AND_NULL(tmpValue); @@ -24579,7 +24705,7 @@ } } if (fireErrors && (ret > 0)) { - /* + /* * Report the normalized value. */ normalize = 1; @@ -24589,10 +24715,10 @@ } else if (WXS_IS_UNION(type)) { xmlSchemaTypeLinkPtr memberLink; /* - * TODO: For all datatypes derived by union whiteSpace does - * not apply directly; however, the normalization behavior of union + * TODO: For all datatypes `derived` by `union` whiteSpace does + * not apply directly; however, the normalization behavior of `union` * types is controlled by the value of whiteSpace on that one of the - * memberTypes against which the union is successfully validated. + * `memberTypes` against which the `union` is successfully validated. * * This means that the value is normalized by the first validating * member type, then the facets of the union type are applied. This @@ -24600,8 +24726,8 @@ */ /* - * 1.2.3 if {variety} is union then the string must match a - * literal in the lexical space of at least one member of + * 1.2.3 if {variety} is `union` then the string must `match` a + * literal in the `lexical space` of at least one member of * {member type definitions} */ memberLink = xmlSchemaGetUnionSimpleTypeMemberTypes(type); @@ -24609,7 +24735,7 @@ AERROR_INT("xmlSchemaVCheckCVCSimpleType", "union simple type has no member types"); goto internal_error; - } + } /* * Always normalize union type values, since we currently * cannot store the whitespace information with the value @@ -24617,7 +24743,7 @@ * not possible. */ while (memberLink != NULL) { - if (valNeeded) + if (valNeeded) ret = xmlSchemaVCheckCVCSimpleType(actxt, node, memberLink->type, value, &val, 0, 1, 0); else @@ -24640,9 +24766,9 @@ */ if ((ret == 0) && (type->flags & XML_SCHEMAS_TYPE_HAS_FACETS)) { /* - * The normalization behavior of union types is controlled by - * the value of whiteSpace on that one of the memberTypes - * against which the union is successfully validated. + * The normalization behavior of `union` types is controlled by + * the value of whiteSpace on that one of the `memberTypes` + * against which the `union` is successfully validated. */ NORMALIZE(memberLink->type); ret = xmlSchemaValidateFacets(actxt, node, type, @@ -24654,7 +24780,7 @@ "validating facets of union simple type"); goto internal_error; } - ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3; + ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3; } } if (fireErrors && (ret > 0)) @@ -24802,14 +24928,14 @@ /* * SPEC cvc-elt (3.3.4) : (4.3) (Type Derivation OK) - * "The local type definition must be validly + * "The `local type definition` must be validly * derived from the {type definition} given the union of * the {disallowed substitutions} and the {type definition}'s * {prohibited substitutions}, as defined in - * Type Derivation OK (Complex) (3.4.6) + * Type Derivation OK (Complex) ($3.4.6) * (if it is a complex type definition), * or given {disallowed substitutions} as defined in Type - * Derivation OK (Simple) (3.14.6) (if it is a simple type + * Derivation OK (Simple) ($3.14.6) (if it is a simple type * definition)." * * {disallowed substitutions}: the "block" on the element decl. @@ -24892,9 +25018,9 @@ return (vctxt->err); } if (actualType == NULL) { - VERROR(XML_SCHEMAV_CVC_TYPE_1, NULL, - "The type definition is absent"); - return (XML_SCHEMAV_CVC_TYPE_1); + VERROR(XML_SCHEMAV_CVC_TYPE_1, NULL, + "The type definition is absent"); + return (XML_SCHEMAV_CVC_TYPE_1); } if (vctxt->nbAttrInfos != 0) { int ret; @@ -24984,9 +25110,9 @@ * No actual type definition. */ if (actualType == NULL) { - VERROR(XML_SCHEMAV_CVC_TYPE_1, NULL, - "The type definition is absent"); - return (XML_SCHEMAV_CVC_TYPE_1); + VERROR(XML_SCHEMAV_CVC_TYPE_1, NULL, + "The type definition is absent"); + return (XML_SCHEMAV_CVC_TYPE_1); } /* * Remember the actual type definition. @@ -25069,19 +25195,19 @@ static int xmlSchemaVAttributesComplex(xmlSchemaValidCtxtPtr vctxt) { - xmlSchemaTypePtr type = vctxt->inode->typeDef; + xmlSchemaTypePtr type = vctxt->inode->typeDef; xmlSchemaItemListPtr attrUseList; xmlSchemaAttributeUsePtr attrUse = NULL; xmlSchemaAttributePtr attrDecl = NULL; - xmlSchemaAttrInfoPtr iattr, tmpiattr; + xmlSchemaAttrInfoPtr iattr, tmpiattr; int i, j, found, nbAttrs, nbUses; int xpathRes = 0, res, wildIDs = 0, fixed; xmlNodePtr defAttrOwnerElem = NULL; /* * SPEC (cvc-attribute) - * (1) "The declaration must not be absent (see Missing - * Sub-components (5.3) for how this can fail to be + * (1) "The declaration must not be `absent` (see Missing + * Sub-components ($5.3) for how this can fail to be * the case)." * (2) "Its {type definition} must not be absent." * @@ -25131,15 +25257,15 @@ * use with an {attribute declaration} whose {name} matches * the attribute information item's [local name] and whose * {target namespace} is identical to the attribute information - * item's [namespace name] (where an absent {target namespace} + * item's [namespace name] (where an `absent` {target namespace} * is taken to be identical to a [namespace name] with no value), - * then the attribute information must be valid with respect + * then the attribute information must be `valid` with respect * to that attribute use as per Attribute Locally Valid (Use) - * (3.5.4). In this case the {attribute declaration} of that - * attribute use is the context-determined declaration for the + * ($3.5.4). In this case the {attribute declaration} of that + * attribute use is the `context-determined declaration` for the * attribute information item with respect to Schema-Validity - * Assessment (Attribute) (3.2.4) and - * Assessment Outcome (Attribute) (3.2.5). + * Assessment (Attribute) ($3.2.4) and + * Assessment Outcome (Attribute) ($3.2.5). */ iattr->state = XML_SCHEMAS_ATTR_ASSESSED; iattr->use = attrUse; @@ -25173,7 +25299,7 @@ } tmpiattr->state = XML_SCHEMAS_ATTR_ERR_MISSING; tmpiattr->use = attrUse; - tmpiattr->decl = attrDecl; + tmpiattr->decl = attrDecl; } else if ((attrUse->occurs == XML_SCHEMAS_ATTR_USE_OPTIONAL) && ((attrUse->defValue != NULL) || (attrDecl->defValue != NULL))) { @@ -25198,7 +25324,6 @@ if (vctxt->nbAttrInfos == 0) return (0); - nbUses = vctxt->nbAttrInfos; /* * Validate against the wildcard. */ @@ -25217,13 +25342,13 @@ continue; /* * SPEC (cvc-complex-type) - * (3.2.2) "The attribute information item must be valid with - * respect to it as defined in Item Valid (Wildcard) (3.10.4)." + * (3.2.2) "The attribute information item must be `valid` with + * respect to it as defined in Item Valid (Wildcard) ($3.10.4)." * * SPEC Item Valid (Wildcard) (cvc-wildcard) - * "... its [namespace name] must be valid with respect to + * "... its [namespace name] must be `valid` with respect to * the wildcard constraint, as defined in Wildcard allows - * Namespace Name (3.10.4)." + * Namespace Name ($3.10.4)." */ if (xmlSchemaCheckCVCWildcardNamespace(type->attributeWildcard, iattr->nsName) == 0) { @@ -25259,11 +25384,11 @@ * SPEC (cvc-complex-type) * (5) "Let [Definition:] the wild IDs be the set of * all attribute information item to which clause 3.2 - * applied and whose validation resulted in a - * context-determined declaration of mustFind or no - * context-determined declaration at all, and whose + * applied and whose `validation` resulted in a + * `context-determined declaration` of mustFind or no + * `context-determined declaration` at all, and whose * [local name] and [namespace name] resolve (as - * defined by QName resolution (Instance) (3.15.4)) to + * defined by QName resolution (Instance) ($3.15.4)) to * an attribute declaration whose {type definition} is * or is derived from ID. Then all of the following * must be true:" @@ -25273,7 +25398,7 @@ iattr->typeDef, XML_SCHEMAS_ID)) { /* * SPEC (5.1) "There must be no more than one - * item in wild IDs." + * item in `wild IDs`." */ if (wildIDs != 0) { /* VAL TODO */ @@ -25284,21 +25409,23 @@ wildIDs++; /* * SPEC (cvc-complex-type) - * (5.2) "If wild IDs is non-empty, there must not + * (5.2) "If `wild IDs` is non-empty, there must not * be any attribute uses among the {attribute uses} * whose {attribute declaration}'s {type definition} * is or is derived from ID." */ - for (j = 0; j < attrUseList->nbItems; j++) { - if (xmlSchemaIsDerivedFromBuiltInType( - WXS_ATTRUSE_TYPEDEF(attrUseList->items[j]), - XML_SCHEMAS_ID)) { - /* URGENT VAL TODO: implement */ - iattr->state = XML_SCHEMAS_ATTR_ERR_WILD_AND_USE_ID; - TODO - break; - } - } + if (attrUseList != NULL) { + for (j = 0; j < attrUseList->nbItems; j++) { + if (xmlSchemaIsDerivedFromBuiltInType( + WXS_ATTRUSE_TYPEDEF(attrUseList->items[j]), + XML_SCHEMAS_ID)) { + /* URGENT VAL TODO: implement */ + iattr->state = XML_SCHEMAS_ATTR_ERR_WILD_AND_USE_ID; + TODO + break; + } + } + } } } else if (type->attributeWildcard->processContents == XML_SCHEMAS_ANY_LAX) { @@ -25401,7 +25528,7 @@ * VAL TODO: Should we use the *normalized* value? This currently * uses the *initial* value. */ - + if (defAttrOwnerElem) { xmlChar *normValue; const xmlChar *value; @@ -25419,7 +25546,7 @@ if (xmlNewProp(defAttrOwnerElem, iattr->localName, value) == NULL) { VERROR_INT("xmlSchemaVAttributesComplex", - "callling xmlNewProp()"); + "calling xmlNewProp()"); if (normValue != NULL) xmlFree(normValue); goto internal_error; @@ -25492,9 +25619,9 @@ fixed = 0; /* * SPEC (cvc-attribute) - * (3) "The item's normalized value must be locally valid - * with respect to that {type definition} as per - * String Valid (3.14.4)." + * (3) "The item's `normalized value` must be locally `valid` + * with respect to that {type definition} as per + * String Valid ($3.14.4)." * * VAL TODO: Do we already have the * "normalized attribute value" here? @@ -25514,7 +25641,7 @@ iattr->node, iattr->typeDef, iattr->value, NULL, 1, 0, 0); } - + if (res != 0) { if (res == -1) { VERROR_INT("xmlSchemaVAttributesComplex", @@ -25529,12 +25656,12 @@ goto eval_idcs; } - if (fixed) { + if (fixed) { /* * SPEC Attribute Locally Valid (Use) (cvc-au) - * "For an attribute information item to bevalid + * "For an attribute information item to be `valid` * with respect to an attribute use its *normalized* - * value must match the *canonical* lexical + * value must match the *canonical* lexical * representation of the attribute use's {value * constraint}value, if it is present and fixed." * @@ -25543,7 +25670,7 @@ */ /* * SPEC Attribute Locally Valid (cvc-attribute) - * (4) "The item's *actual* value must match the *value* of + * (4) "The item's *actual* value must match the *value* of * the {value constraint}, if it is present and fixed." */ if (iattr->val == NULL) { @@ -25635,8 +25762,8 @@ xmlSchemaCustomErr(ACTXT_CAST vctxt, XML_SCHEMAV_CVC_AU, NULL, NULL, "The value '%s' does not match the fixed " - "value constraint '%s'", - iattr->value, iattr->vcValue); + "value constraint '%s'", + iattr->value, iattr->vcValue); break; case XML_SCHEMAS_ATTR_ERR_WILD_STRICT_NO_DECL: VERROR(XML_SCHEMAV_CVC_WILDCARD, NULL, @@ -25698,7 +25825,7 @@ xmlSchemaElementPtr decl = NULL; decl = xmlSchemaGetElem(vctxt->schema, - vctxt->inode->localName, vctxt->inode->nsName); + vctxt->inode->localName, vctxt->inode->nsName); if (decl != NULL) { vctxt->inode->decl = decl; return (0); @@ -25756,16 +25883,16 @@ xmlSchemaCheckCOSValidDefault(xmlSchemaValidCtxtPtr vctxt, const xmlChar *value, xmlSchemaValPtr *val) -{ +{ int ret = 0; xmlSchemaNodeInfoPtr inode = vctxt->inode; /* * cos-valid-default: * Schema Component Constraint: Element Default Valid (Immediate) - * For a string to be a valid default with respect to a type + * For a string to be a valid default with respect to a type * definition the appropriate case among the following must be true: - */ + */ if WXS_IS_COMPLEX(inode->typeDef) { /* * Complex type. @@ -25773,8 +25900,8 @@ * SPEC (2.1) "its {content type} must be a simple type definition * or mixed." * SPEC (2.2.2) "If the {content type} is mixed, then the {content - * type}'s particle must be emptiable as defined by - * Particle Emptiable (3.9.6)." + * type}'s particle must be `emptiable` as defined by + * Particle Emptiable ($3.9.6)." */ if ((! WXS_HAS_SIMPLE_CONTENT(inode->typeDef)) && ((! WXS_HAS_MIXED_CONTENT(inode->typeDef)) || @@ -25787,18 +25914,18 @@ "or mixed content and a particle emptiable"); return(ret); } - } + } /* - * 1 If the type definition is a simple type definition, then the string - * must be valid with respect to that definition as defined by String - * Valid (3.14.4). + * 1 If the type definition is a simple type definition, then the string + * must be `valid` with respect to that definition as defined by String + * Valid ($3.14.4). * * AND * - * 2.2.1 If the {content type} is a simple type definition, then the - * string must be valid with respect to that simple type definition - * as defined by String Valid (3.14.4). - */ + * 2.2.1 If the {content type} is a simple type definition, then the + * string must be `valid` with respect to that simple type definition + * as defined by String Valid ($3.14.4). + */ if (WXS_IS_SIMPLE(inode->typeDef)) { ret = xmlSchemaVCheckCVCSimpleType(ACTXT_CAST vctxt, @@ -25812,7 +25939,7 @@ if (ret < 0) { VERROR_INT("xmlSchemaCheckCOSValidDefault", "calling xmlSchemaVCheckCVCSimpleType()"); - } + } return (ret); } @@ -25846,13 +25973,13 @@ static int xmlSchemaValidatorPushElem(xmlSchemaValidCtxtPtr vctxt) -{ +{ vctxt->inode = xmlSchemaGetFreshElemInfo(vctxt); if (vctxt->inode == NULL) { VERROR_INT("xmlSchemaValidatorPushElem", "calling xmlSchemaGetFreshElemInfo()"); return (-1); - } + } vctxt->nbAttrInfos = 0; return (0); } @@ -25875,7 +26002,7 @@ -/* +/* * Process END of element. */ static int @@ -25894,7 +26021,7 @@ */ vctxt->skipDepth = vctxt->depth -1; goto end_elem; - } + } if ((inode->typeDef == NULL) || (inode->flags & XML_SCHEMA_NODE_INFO_ERR_BAD_TYPE)) { /* @@ -25914,8 +26041,8 @@ * Workaround for "anyType". */ if (inode->typeDef->builtInType == XML_SCHEMAS_ANYTYPE) - goto character_content; - + goto character_content; + if ((inode->flags & XML_SCHEMA_ELEM_INFO_ERR_BAD_CONTENT) == 0) { xmlChar *values[10]; int terminal, nbval = 10, nbneg; @@ -25936,16 +26063,30 @@ #ifdef DEBUG_AUTOMATA xmlGenericError(xmlGenericErrorContext, "AUTOMATON create on '%s'\n", inode->localName); -#endif +#endif + } + + /* + * Do not check further content if the node has been nilled + */ + if (INODE_NILLED(inode)) { + ret = 0; +#ifdef DEBUG_AUTOMATA + xmlGenericError(xmlGenericErrorContext, + "AUTOMATON succeeded on nilled '%s'\n", + inode->localName); +#endif + goto skip_nilled; } + /* * Get hold of the still expected content, since a further * call to xmlRegExecPushString() will loose this information. - */ + */ xmlRegExecNextValues(inode->regexCtxt, &nbval, &nbneg, &values[0], &terminal); ret = xmlRegExecPushString(inode->regexCtxt, NULL, NULL); - if (ret <= 0) { + if ((ret<0) || ((ret==0) && (!INODE_NILLED(inode)))) { /* * Still missing something. */ @@ -25975,6 +26116,9 @@ } } + +skip_nilled: + if (inode->typeDef->contentType == XML_SCHEMA_CONTENT_ELEMENTS) goto end_elem; @@ -25991,14 +26135,14 @@ /* * Speedup if no declaration exists. */ - if (WXS_IS_SIMPLE(inode->typeDef)) { + if (WXS_IS_SIMPLE(inode->typeDef)) { ret = xmlSchemaVCheckINodeDataType(vctxt, inode, inode->typeDef, inode->value); } else if (WXS_HAS_SIMPLE_CONTENT(inode->typeDef)) { ret = xmlSchemaVCheckINodeDataType(vctxt, inode, inode->typeDef->contentTypeDef, inode->value); - } + } if (ret < 0) { VERROR_INT("xmlSchemaValidatorPopElem", "calling xmlSchemaVCheckCVCSimpleType()"); @@ -26007,26 +26151,26 @@ goto end_elem; } /* - * cvc-elt (3.3.4) : 5 + * cvc-elt (3.3.4) : 5 * The appropriate case among the following must be true: */ /* - * cvc-elt (3.3.4) : 5.1 - * If the declaration has a {value constraint}, - * the item has neither element nor character [children] and + * cvc-elt (3.3.4) : 5.1 + * If the declaration has a {value constraint}, + * the item has neither element nor character [children] and * clause 3.2 has not applied, then all of the following must be true: */ if ((inode->decl->value != NULL) && - (inode->flags & XML_SCHEMA_ELEM_INFO_EMPTY) && + (inode->flags & XML_SCHEMA_ELEM_INFO_EMPTY) && (! INODE_NILLED(inode))) { /* - * cvc-elt (3.3.4) : 5.1.1 - * If the actual type definition is a local type definition + * cvc-elt (3.3.4) : 5.1.1 + * If the `actual type definition` is a `local type definition` * then the canonical lexical representation of the {value constraint} - * value must be a valid default for the actual type definition as - * defined in Element Default Valid (Immediate) (3.3.6). + * value must be a valid default for the `actual type definition` as + * defined in Element Default Valid (Immediate) ($3.3.6). */ - /* + /* * NOTE: 'local' above means types acquired by xsi:type. * NOTE: Although the *canonical* value is stated, it is not * relevant if canonical or not. Additionally XML Schema 1.1 @@ -26049,22 +26193,22 @@ * (see following). */ goto default_psvi; - } + } /* - * cvc-elt (3.3.4) : 5.1.2 - * The element information item with the canonical lexical - * representation of the {value constraint} value used as its - * normalized value must be valid with respect to the - * actual type definition as defined by Element Locally Valid (Type) - * (3.3.4). - */ + * cvc-elt (3.3.4) : 5.1.2 + * The element information item with the canonical lexical + * representation of the {value constraint} value used as its + * `normalized value` must be `valid` with respect to the + * `actual type definition` as defined by Element Locally Valid (Type) + * ($3.3.4). + */ if (WXS_IS_SIMPLE(inode->typeDef)) { ret = xmlSchemaVCheckINodeDataType(vctxt, inode, inode->typeDef, inode->decl->value); } else if (WXS_HAS_SIMPLE_CONTENT(inode->typeDef)) { ret = xmlSchemaVCheckINodeDataType(vctxt, inode, inode->typeDef->contentTypeDef, - inode->decl->value); + inode->decl->value); } if (ret != 0) { if (ret < 0) { @@ -26085,7 +26229,7 @@ xmlChar *normValue; /* * VAL TODO: Normalize the value. - */ + */ normValue = xmlSchemaNormalizeValue(inode->typeDef, inode->decl->value); if (normValue != NULL) { @@ -26098,42 +26242,42 @@ "calling xmlNewText()"); goto internal_error; } else - xmlAddChild(inode->node, textChild); + xmlAddChild(inode->node, textChild); } - - } else if (! INODE_NILLED(inode)) { + + } else if (! INODE_NILLED(inode)) { /* - * 5.2.1 The element information item must be valid with respect - * to the actual type definition as defined by Element Locally - * Valid (Type) (3.3.4). - */ + * 5.2.1 The element information item must be `valid` with respect + * to the `actual type definition` as defined by Element Locally + * Valid (Type) ($3.3.4). + */ if (WXS_IS_SIMPLE(inode->typeDef)) { /* * SPEC (cvc-type) (3.1) * "If the type definition is a simple type definition, ..." * (3.1.3) "If clause 3.2 of Element Locally Valid - * (Element) (3.3.4) did not apply, then the normalized value - * must be valid with respect to the type definition as defined - * by String Valid (3.14.4). - */ + * (Element) ($3.3.4) did not apply, then the `normalized value` + * must be `valid` with respect to the type definition as defined + * by String Valid ($3.14.4). + */ ret = xmlSchemaVCheckINodeDataType(vctxt, inode, inode->typeDef, inode->value); } else if (WXS_HAS_SIMPLE_CONTENT(inode->typeDef)) { /* * SPEC (cvc-type) (3.2) "If the type definition is a complex type * definition, then the element information item must be - * valid with respect to the type definition as per - * Element Locally Valid (Complex Type) (3.4.4);" + * `valid` with respect to the type definition as per + * Element Locally Valid (Complex Type) ($3.4.4);" * * SPEC (cvc-complex-type) (2.2) - * "If the {content type} is a simple type definition, ... - * the normalized value of the element information item is - * valid with respect to that simple type definition as - * defined by String Valid (3.14.4)." + * "If the {content type} is a simple type definition, ... + * the `normalized value` of the element information item is + * `valid` with respect to that simple type definition as + * defined by String Valid ($3.14.4)." */ ret = xmlSchemaVCheckINodeDataType(vctxt, inode, inode->typeDef->contentTypeDef, inode->value); - } + } if (ret != 0) { if (ret < 0) { VERROR_INT("xmlSchemaValidatorPopElem", @@ -26143,7 +26287,7 @@ goto end_elem; } /* - * 5.2.2 If there is a fixed {value constraint} and clause 3.2 has + * 5.2.2 If there is a fixed {value constraint} and clause 3.2 has * not applied, all of the following must be true: */ if ((inode->decl->value != NULL) && @@ -26154,7 +26298,7 @@ * done on computed values. */ /* - * 5.2.2.1 The element information item must have no element + * 5.2.2.1 The element information item must have no element * information item [children]. */ if (inode->flags & @@ -26166,28 +26310,28 @@ goto end_elem; } else { /* - * 5.2.2.2 The appropriate case among the following must + * 5.2.2.2 The appropriate case among the following must * be true: - */ + */ if (WXS_HAS_MIXED_CONTENT(inode->typeDef)) { /* - * 5.2.2.2.1 If the {content type} of the actual type - * definition is mixed, then the *initial value* of the - * item must match the canonical lexical representation + * 5.2.2.2.1 If the {content type} of the `actual type + * definition` is mixed, then the *initial value* of the + * item must match the canonical lexical representation * of the {value constraint} value. * - * ... the *initial value* of an element information - * item is the string composed of, in order, the - * [character code] of each character information item in + * ... the *initial value* of an element information + * item is the string composed of, in order, the + * [character code] of each character information item in * the [children] of that element information item. - */ + */ if (! xmlStrEqual(inode->value, inode->decl->value)){ - /* + /* * VAL TODO: Report invalid & expected values as well. * VAL TODO: Implement the canonical stuff. */ ret = XML_SCHEMAV_CVC_ELT_5_2_2_2_1; - xmlSchemaCustomErr(ACTXT_CAST vctxt, + xmlSchemaCustomErr(ACTXT_CAST vctxt, ret, NULL, NULL, "The initial value '%s' does not match the fixed " "value constraint '%s'", @@ -26196,9 +26340,9 @@ } } else if (WXS_HAS_SIMPLE_CONTENT(inode->typeDef)) { /* - * 5.2.2.2.2 If the {content type} of the actual type - * definition is a simple type definition, then the - * *actual value* of the item must match the canonical + * 5.2.2.2.2 If the {content type} of the `actual type + * definition` is a simple type definition, then the + * *actual value* of the item must match the canonical * lexical representation of the {value constraint} value. */ /* @@ -26213,16 +26357,16 @@ xmlSchemaCustomErr(ACTXT_CAST vctxt, ret, NULL, NULL, "The actual value '%s' does not match the fixed " - "value constraint '%s'", + "value constraint '%s'", inode->value, inode->decl->value); goto end_elem; - } + } } - } + } } } - + end_elem: if (vctxt->depth < 0) { /* TODO: raise error? */ @@ -26232,15 +26376,15 @@ vctxt->skipDepth = -1; /* * Evaluate the history of XPath state objects. - */ + */ if (inode->appliedXPath && (xmlSchemaXPathProcessHistory(vctxt, vctxt->depth) == -1)) goto internal_error; /* * MAYBE TODO: - * SPEC (6) "The element information item must be valid with + * SPEC (6) "The element information item must be `valid` with * respect to each of the {identity-constraint definitions} as per - * Identity-constraint Satisfied (3.11.4)." + * Identity-constraint Satisfied ($3.11.4)." */ /* * PSVI TODO: If we expose IDC node-tables via PSVI then the tables @@ -26248,7 +26392,7 @@ * We will currently build IDC node-tables and bubble them only if * keyrefs do exist. */ - + /* * Add the current IDC target-nodes to the IDC node-tables. */ @@ -26282,7 +26426,7 @@ */ if (xmlSchemaBubbleIDCNodeTables(vctxt) == -1) goto internal_error; - } + } } /* * Clear the current ielem. @@ -26315,11 +26459,11 @@ aidc = aidc->next; } while (aidc != NULL); } - vctxt->depth--; + vctxt->depth--; vctxt->inode = vctxt->elemInfos[vctxt->depth]; /* - * VAL TODO: 7 If the element information item is the validation root, it must be - * valid per Validation Root Valid (ID/IDREF) (3.3.4). + * VAL TODO: 7 If the element information item is the `validation root`, it must be + * `valid` per Validation Root Valid (ID/IDREF) ($3.3.4). */ return (ret); @@ -26400,11 +26544,11 @@ * Fallback to "anyType". * * SPEC (cvc-assess-elt) - * "If the item cannot be strictly assessed, [...] + * "If the item cannot be `strictly assessed`, [...] * an element information item's schema validity may be laxly - * assessed if its context-determined declaration is not - * skip by validating with respect to the ur-type - * definition as per Element Locally Valid (Type) (3.3.4)." + * assessed if its `context-determined declaration` is not + * skip by `validating` with respect to the `ur-type + * definition` as per Element Locally Valid (Type) ($3.3.4)." */ vctxt->inode->typeDef = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYTYPE); @@ -26476,9 +26620,9 @@ * SPEC (2.4) "If the {content type} is element-only or mixed, * then the sequence of the element information item's * element information item [children], if any, taken in - * order, is valid with respect to the {content type}'s + * order, is `valid` with respect to the {content type}'s * particle, as defined in Element Sequence Locally Valid - * (Particle) (3.9.4)." + * (Particle) ($3.9.4)." */ ret = xmlRegExecPushString2(regexCtxt, vctxt->inode->localName, @@ -26575,7 +26719,7 @@ if (consumed != NULL) *consumed = 0; if (INODE_NILLED(vctxt->inode)) { - /* + /* * SPEC cvc-elt (3.3.4 - 3.2.1) * "The element information item must have no character or * element information item [children]." @@ -26591,7 +26735,7 @@ * information item [children]." */ if (vctxt->inode->typeDef->contentType == - XML_SCHEMA_CONTENT_EMPTY) { + XML_SCHEMA_CONTENT_EMPTY) { VERROR(XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1, NULL, "Character content is not allowed, " "because the content type is empty"); @@ -26602,12 +26746,12 @@ XML_SCHEMA_CONTENT_ELEMENTS) { if ((nodeType != XML_TEXT_NODE) || (! xmlSchemaIsBlank((xmlChar *) value, len))) { - /* - * SPEC cvc-complex-type (2.3) - * "If the {content type} is element-only, then the - * element information item has no character information - * item [children] other than those whose [character - * code] is defined as a white space in [XML 1.0 (Second + /* + * SPEC cvc-complex-type (2.3) + * "If the {content type} is element-only, then the + * element information item has no character information + * item [children] other than those whose [character + * code] is defined as a white space in [XML 1.0 (Second * Edition)]." */ VERROR(XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3, NULL, @@ -26617,7 +26761,7 @@ } return (0); } - + if ((value == NULL) || (value[0] == 0)) return (0); /* @@ -26629,7 +26773,7 @@ ((vctxt->inode->decl == NULL) || (vctxt->inode->decl->value == NULL))) return (0); - + if (vctxt->inode->value == NULL) { /* * Set the value. @@ -26672,7 +26816,7 @@ len = xmlStrlen(value); /* * Concat the value. - */ + */ if (vctxt->inode->flags & XML_SCHEMA_NODE_INFO_FLAG_OWNED_VALUES) { vctxt->inode->value = BAD_CAST xmlStrncat( (xmlChar *) vctxt->inode->value, value, len); @@ -26681,7 +26825,7 @@ BAD_CAST xmlStrncatNew(vctxt->inode->value, value, len); vctxt->inode->flags |= XML_SCHEMA_NODE_INFO_FLAG_OWNED_VALUES; } - } + } return (0); } @@ -26698,7 +26842,7 @@ goto internal_error; } if (vctxt->xsiAssemble) { - /* + /* * We will stop validation if there was an error during * dynamic schema construction. * Note that we simply set @skipDepth to 0, this could @@ -26715,6 +26859,11 @@ vctxt->skipDepth = 0; return(ret); } + /* + * Augment the IDC definitions for the main schema and all imported ones + * NOTE: main schema is the first in the imported list + */ + xmlHashScan(vctxt->schema->schemasImports,(xmlHashScanner)xmlSchemaAugmentImportedIDC, vctxt); } if (vctxt->depth > 0) { /* @@ -26808,15 +26957,15 @@ if (vctxt->inode->typeDef == NULL) { vctxt->inode->flags |= XML_SCHEMA_NODE_INFO_ERR_BAD_TYPE; ret = XML_SCHEMAV_CVC_TYPE_1; - VERROR(ret, NULL, - "The type definition is absent"); + VERROR(ret, NULL, + "The type definition is absent"); goto exit; - } + } if (vctxt->inode->typeDef->flags & XML_SCHEMAS_TYPE_ABSTRACT) { vctxt->inode->flags |= XML_SCHEMA_NODE_INFO_ERR_BAD_TYPE; ret = XML_SCHEMAV_CVC_TYPE_2; - VERROR(ret, NULL, - "The type definition is abstract"); + VERROR(ret, NULL, + "The type definition is abstract"); goto exit; } /* @@ -26897,7 +27046,7 @@ nodeType = xmlTextReaderNodeType(vctxt->reader); if (nodeType == XML_ELEMENT_NODE) { - + vctxt->depth++; if (xmlSchemaValidatorPushElem(vctxt) == -1) { VERROR_INT("xmlSchemaVReaderWalk", @@ -27063,17 +27212,17 @@ #endif /************************************************************************ - * * - * SAX validation handlers * - * * + * * + * SAX validation handlers * + * * ************************************************************************/ /* * Process text content. */ static void -xmlSchemaSAXHandleText(void *ctx, - const xmlChar * ch, +xmlSchemaSAXHandleText(void *ctx, + const xmlChar * ch, int len) { xmlSchemaValidCtxtPtr vctxt = (xmlSchemaValidCtxtPtr) ctx; @@ -27097,10 +27246,10 @@ * Process CDATA content. */ static void -xmlSchemaSAXHandleCDataSection(void *ctx, - const xmlChar * ch, +xmlSchemaSAXHandleCDataSection(void *ctx, + const xmlChar * ch, int len) -{ +{ xmlSchemaValidCtxtPtr vctxt = (xmlSchemaValidCtxtPtr) ctx; if (vctxt->depth < 0) @@ -27134,20 +27283,20 @@ static void xmlSchemaSAXHandleStartElementNs(void *ctx, - const xmlChar * localname, - const xmlChar * prefix ATTRIBUTE_UNUSED, - const xmlChar * URI, - int nb_namespaces, - const xmlChar ** namespaces, - int nb_attributes, - int nb_defaulted ATTRIBUTE_UNUSED, + const xmlChar * localname, + const xmlChar * prefix ATTRIBUTE_UNUSED, + const xmlChar * URI, + int nb_namespaces, + const xmlChar ** namespaces, + int nb_attributes, + int nb_defaulted ATTRIBUTE_UNUSED, const xmlChar ** attributes) -{ +{ xmlSchemaValidCtxtPtr vctxt = (xmlSchemaValidCtxtPtr) ctx; int ret; xmlSchemaNodeInfoPtr ielem; int i, j; - + /* * SAX VAL TODO: What to do with nb_defaulted? */ @@ -27175,16 +27324,16 @@ ielem->flags |= XML_SCHEMA_ELEM_INFO_EMPTY; /* * Register namespaces on the elem info. - */ + */ if (nb_namespaces != 0) { /* * Although the parser builds its own namespace list, * we have no access to it, so we'll use an own one. */ - for (i = 0, j = 0; i < nb_namespaces; i++, j += 2) { + for (i = 0, j = 0; i < nb_namespaces; i++, j += 2) { /* * Store prefix and namespace name. - */ + */ if (ielem->nsBindings == NULL) { ielem->nsBindings = (const xmlChar **) xmlMalloc(10 * @@ -27220,7 +27369,7 @@ } else ielem->nsBindings[ielem->nbNsBindings * 2 + 1] = namespaces[j+1]; - ielem->nbNsBindings++; + ielem->nbNsBindings++; } } /* @@ -27234,7 +27383,7 @@ for (j = 0, i = 0; i < nb_attributes; i++, j += 5) { /* * Duplicate the value. - */ + */ value = xmlStrndup(attributes[j+3], attributes[j+4] - attributes[j+3]); /* @@ -27261,7 +27410,7 @@ goto internal_error; } goto exit; - } + } exit: return; @@ -27316,9 +27465,9 @@ } /************************************************************************ - * * - * Validation interfaces * - * * + * * + * Validation interfaces * + * * ************************************************************************/ /** @@ -27348,8 +27497,28 @@ } /** + * xmlSchemaValidateSetFilename: + * @vctxt: the schema validation context + * @filename: the file name + * + * Workaround to provide file error reporting information when this is + * not provided by current APIs + */ +void +xmlSchemaValidateSetFilename(xmlSchemaValidCtxtPtr vctxt, const char *filename) { + if (vctxt == NULL) + return; + if (vctxt->filename != NULL) + xmlFree(vctxt->filename); + if (filename != NULL) + vctxt->filename = (char *) xmlStrdup((const xmlChar *) filename); + else + vctxt->filename = NULL; +} + +/** * xmlSchemaClearValidCtxt: - * @ctxt: the schema validation context + * @vctxt: the schema validation context * * Free the resources associated to the schema validation context; * leaves some fields alive intended for reuse of the context. @@ -27371,7 +27540,7 @@ #ifdef LIBXML_READER_ENABLED vctxt->reader = NULL; #endif - vctxt->hasKeyrefs = 0; + vctxt->hasKeyrefs = 0; if (vctxt->value != NULL) { xmlSchemaFreeValue(vctxt->value); @@ -27441,7 +27610,7 @@ break; xmlSchemaClearElemInfo(vctxt, ei); } - } + } xmlSchemaItemListClear(vctxt->nodeQNames); /* Recreate the dict. */ xmlDictFree(vctxt->dict); @@ -27450,6 +27619,11 @@ * where the user provides the dict? */ vctxt->dict = xmlDictCreate(); + + if (vctxt->filename != NULL) { + xmlFree(vctxt->filename); + vctxt->filename = NULL; + } } /** @@ -27535,6 +27709,8 @@ xmlSchemaItemListFree(ctxt->nodeQNames); if (ctxt->dict != NULL) xmlDictFree(ctxt->dict); + if (ctxt->filename != NULL) + xmlFree(ctxt->filename); xmlFree(ctxt); } @@ -27543,7 +27719,7 @@ * @ctxt: the schema validation context * * Check if any error was detected during validation. - * + * * Returns 1 if valid so far, 0 if errors were detected, and -1 in case * of internal error. */ @@ -27602,7 +27778,7 @@ /** * xmlSchemaGetValidErrors: - * @ctxt: a XML-Schema validation context + * @ctxt: a XML-Schema validation context * @err: the error function result * @warn: the warning function result * @ctx: the functions context result @@ -27663,7 +27839,7 @@ /** * xmlSchemaValidCtxtGetOptions: - * @ctxt: a schema validation context + * @ctxt: a schema validation context * * Get the validation context options. * @@ -27689,7 +27865,10 @@ const xmlChar *nsName; /* DOC VAL TODO: Move this to the start function. */ - valRoot = xmlDocGetRootElement(vctxt->doc); + if (vctxt->validationRoot != NULL) + valRoot = vctxt->validationRoot; + else + valRoot = xmlDocGetRootElement(vctxt->doc); if (valRoot == NULL) { /* VAL TODO: Error code? */ VERROR(1, NULL, "The document has no document element"); @@ -27731,7 +27910,7 @@ nsName = NULL; ret = xmlSchemaValidatorPushAttribute(vctxt, (xmlNodePtr) attr, - /* + /* * Note that we give it the line number of the * parent element. */ @@ -27787,7 +27966,7 @@ (node->type == XML_ENTITY_REF_NODE)) { /* * DOC VAL TODO: What to do with entities? - */ + */ VERROR_INT("xmlSchemaVDocWalk", "there is at least one entity reference in the node-tree " "currently being validated. Processing of entities with " @@ -27847,7 +28026,7 @@ xmlSchemaPreRun(xmlSchemaValidCtxtPtr vctxt) { /* * Some initialization. - */ + */ vctxt->err = 0; vctxt->nberrors = 0; vctxt->depth = -1; @@ -27864,9 +28043,9 @@ */ if (vctxt->schema == NULL) { xmlSchemaParserCtxtPtr pctxt; - + vctxt->xsiAssemble = 1; - /* + /* * If not schema was given then we will create a schema * dynamically using XSI schema locations. * @@ -27882,8 +28061,8 @@ */ vctxt->schema = xmlSchemaNewSchema(pctxt); if (vctxt->schema == NULL) - return (-1); - /* + return (-1); + /* * Create the schema construction context. */ pctxt->constructor = xmlSchemaConstructionCtxtCreate(pctxt->dict); @@ -27894,14 +28073,13 @@ * Take ownership of the constructor to be able to free it. */ pctxt->ownsConstructor = 1; - } + } /* - * Augment the IDC definitions. + * Augment the IDC definitions for the main schema and all imported ones + * NOTE: main schema if the first in the imported list */ - if (vctxt->schema->idcDef != NULL) { - xmlHashScan(vctxt->schema->idcDef, - (xmlHashScanner) xmlSchemaAugmentIDC, vctxt); - } + xmlHashScan(vctxt->schema->schemasImports,(xmlHashScanner)xmlSchemaAugmentImportedIDC, vctxt); + return(0); } @@ -28011,9 +28189,9 @@ /************************************************************************ - * * - * Function and data for SAX streaming API * - * * + * * + * Function and data for SAX streaming API * + * * ************************************************************************/ typedef struct _xmlSchemaSplitSAXData xmlSchemaSplitSAXData; typedef xmlSchemaSplitSAXData *xmlSchemaSplitSAXDataPtr; @@ -28089,8 +28267,8 @@ { xmlSchemaSAXPlugPtr ctxt = (xmlSchemaSAXPlugPtr) ctx; if ((ctxt != NULL) && (ctxt->user_sax != NULL) && - (ctxt->user_sax->internalSubset != NULL)) - ctxt->user_sax->internalSubset(ctxt->user_data, name, ExternalID, + (ctxt->user_sax->externalSubset != NULL)) + ctxt->user_sax->externalSubset(ctxt->user_data, name, ExternalID, SystemID); } @@ -28296,8 +28474,8 @@ if (ctxt == NULL) return; if ((ctxt->user_sax != NULL) && - (ctxt->user_sax->ignorableWhitespace != NULL)) - ctxt->user_sax->ignorableWhitespace(ctxt->user_data, value, len); + (ctxt->user_sax->cdataBlock != NULL)) + ctxt->user_sax->cdataBlock(ctxt->user_data, value, len); if (ctxt->ctxt != NULL) xmlSchemaSAXHandleCDataSection(ctxt->ctxt, value, len); } @@ -28316,10 +28494,10 @@ } static void -startElementNsSplit(void *ctx, const xmlChar * localname, - const xmlChar * prefix, const xmlChar * URI, - int nb_namespaces, const xmlChar ** namespaces, - int nb_attributes, int nb_defaulted, +startElementNsSplit(void *ctx, const xmlChar * localname, + const xmlChar * prefix, const xmlChar * URI, + int nb_namespaces, const xmlChar ** namespaces, + int nb_attributes, int nb_defaulted, const xmlChar ** attributes) { xmlSchemaSAXPlugPtr ctxt = (xmlSchemaSAXPlugPtr) ctx; if (ctxt == NULL) @@ -28338,7 +28516,7 @@ } static void -endElementNsSplit(void *ctx, const xmlChar * localname, +endElementNsSplit(void *ctx, const xmlChar * localname, const xmlChar * prefix, const xmlChar * URI) { xmlSchemaSAXPlugPtr ctxt = (xmlSchemaSAXPlugPtr) ctx; if (ctxt == NULL) @@ -28379,7 +28557,7 @@ old_sax = *sax; if ((old_sax != NULL) && (old_sax->initialized != XML_SAX2_MAGIC)) return(NULL); - if ((old_sax != NULL) && + if ((old_sax != NULL) && (old_sax->startElementNs == NULL) && (old_sax->endElementNs == NULL) && ((old_sax->startElement != NULL) || (old_sax->endElement != NULL))) return(NULL); @@ -28397,7 +28575,7 @@ ret->ctxt = ctxt; ret->user_sax_ptr = sax; ret->user_sax = old_sax; - if (old_sax == NULL) { + if (old_sax == NULL) { /* * go direct, no need for the split block and functions. */ @@ -28418,7 +28596,7 @@ } else { /* * for each callback unused by Schemas initialize it to the Split - * routine only if non NULL in the user block, this can speed up + * routine only if non NULL in the user block, this can speed up * things at the SAX level. */ if (old_sax->internalSubset != NULL) @@ -28530,6 +28708,63 @@ } /** + * xmlSchemaValidateSetLocator: + * @vctxt: a schema validation context + * @f: the locator function pointer + * @ctxt: the locator context + * + * Allows to set a locator function to the validation context, + * which will be used to provide file and line information since + * those are not provided as part of the SAX validation flow + * Setting @f to NULL disable the locator. + */ + +void +xmlSchemaValidateSetLocator(xmlSchemaValidCtxtPtr vctxt, + xmlSchemaValidityLocatorFunc f, + void *ctxt) +{ + if (vctxt == NULL) return; + vctxt->locFunc = f; + vctxt->locCtxt = ctxt; +} + +/** + * xmlSchemaValidateStreamLocator: + * @ctx: the xmlTextReaderPtr used + * @file: returned file information + * @line: returned line information + * + * Internal locator function for the readers + * + * Returns 0 in case the Schema validation could be (des)activated and + * -1 in case of error. + */ +static int +xmlSchemaValidateStreamLocator(void *ctx, const char **file, + unsigned long *line) { + xmlParserCtxtPtr ctxt; + + if ((ctx == NULL) || ((file == NULL) && (line == NULL))) + return(-1); + + if (file != NULL) + *file = NULL; + if (line != NULL) + *line = 0; + + ctxt = (xmlParserCtxtPtr) ctx; + if (ctxt->input != NULL) { + if (file != NULL) + *file = ctxt->input->filename; + if (line != NULL) + *line = ctxt->input->line; + return(0); + } + return(-1); +} + +/** * xmlSchemaValidateStream: * @ctxt: a schema validation context * @input: the input to use for reading the data @@ -28571,7 +28806,8 @@ if (options) xmlCtxtUseOptions(pctxt, options); #endif - pctxt->linenumbers = 1; + pctxt->linenumbers = 1; + xmlSchemaValidateSetLocator(ctxt, xmlSchemaValidateStreamLocator, pctxt); inputStream = xmlNewIOInputStream(pctxt, input, enc);; if (inputStream == NULL) { @@ -28600,7 +28836,7 @@ ret = ctxt->parserCtxt->errNo; if (ret == 0) ret = 1; - } + } done: ctxt->parserCtxt = NULL; @@ -28639,16 +28875,33 @@ if ((ctxt == NULL) || (filename == NULL)) return (-1); - + input = xmlParserInputBufferCreateFilename(filename, XML_CHAR_ENCODING_NONE); if (input == NULL) return (-1); ret = xmlSchemaValidateStream(ctxt, input, XML_CHAR_ENCODING_NONE, - NULL, NULL); + NULL, NULL); return (ret); } +/** + * xmlSchemaValidCtxtGetParserCtxt: + * @ctxt: a schema validation context + * + * allow access to the parser context of the schema validation context + * + * Returns the parser context of the schema validation context or NULL + * in case of error. + */ +xmlParserCtxtPtr +xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxtPtr ctxt) +{ + if (ctxt == NULL) + return(NULL); + return (ctxt->parserCtxt); +} + #define bottom_xmlschemas #include "elfgcchack.h" #endif /* LIBXML_SCHEMAS_ENABLED */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlschemas.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlschemas.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlschemas.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlschemas.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -56,7 +56,7 @@ /* * ATTENTION: Change xmlSchemaSetValidOptions's check -* for invalid values, if adding to the validation +* for invalid values, if adding to the validation * options below. */ /** @@ -85,30 +85,65 @@ typedef xmlSchema *xmlSchemaPtr; /** - * A schemas validation context + * xmlSchemaValidityErrorFunc: + * @ctx: the validation context + * @msg: the message + * @...: extra arguments + * + * Signature of an error callback from an XSD validation + */ +typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) + (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); + +/** + * xmlSchemaValidityWarningFunc: + * @ctx: the validation context + * @msg: the message + * @...: extra arguments + * + * Signature of a warning callback from an XSD validation */ -typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...); -typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...); +typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) + (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); +/** + * A schemas validation context + */ typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt; typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr; typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt; typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr; +/** + * xmlSchemaValidityLocatorFunc: + * @ctx: user provided context + * @file: returned file information + * @line: returned line information + * + * A schemas validation locator, a callback called by the validator. + * This is used when file or node informations are not available + * to find out what file and line number are affected + * + * Returns: 0 in case of success and -1 in case of error + */ + +typedef int (XMLCDECL *xmlSchemaValidityLocatorFunc) (void *ctx, + const char **file, unsigned long *line); + /* * Interfaces for parsing. */ -XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL +XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL xmlSchemaNewParserCtxt (const char *URL); -XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL +XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL xmlSchemaNewMemParserCtxt (const char *buffer, int size); XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL xmlSchemaNewDocParserCtxt (xmlDocPtr doc); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSchemaFreeParserCtxt (xmlSchemaParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSchemaSetParserErrors (xmlSchemaParserCtxtPtr ctxt, xmlSchemaValidityErrorFunc err, xmlSchemaValidityWarningFunc warn, @@ -125,19 +160,19 @@ XMLPUBFUN int XMLCALL xmlSchemaIsValid (xmlSchemaValidCtxtPtr ctxt); -XMLPUBFUN xmlSchemaPtr XMLCALL +XMLPUBFUN xmlSchemaPtr XMLCALL xmlSchemaParse (xmlSchemaParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSchemaFree (xmlSchemaPtr schema); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSchemaDump (FILE *output, xmlSchemaPtr schema); #endif /* LIBXML_OUTPUT_ENABLED */ /* * Interfaces for validating */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSchemaSetValidErrors (xmlSchemaValidCtxtPtr ctxt, xmlSchemaValidityErrorFunc err, xmlSchemaValidityWarningFunc warn, @@ -154,14 +189,17 @@ XMLPUBFUN int XMLCALL xmlSchemaSetValidOptions (xmlSchemaValidCtxtPtr ctxt, int options); +XMLPUBFUN void XMLCALL + xmlSchemaValidateSetFilename(xmlSchemaValidCtxtPtr vctxt, + const char *filename); XMLPUBFUN int XMLCALL xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt); -XMLPUBFUN xmlSchemaValidCtxtPtr XMLCALL +XMLPUBFUN xmlSchemaValidCtxtPtr XMLCALL xmlSchemaNewValidCtxt (xmlSchemaPtr schema); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSchemaFreeValidCtxt (xmlSchemaValidCtxtPtr ctxt); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSchemaValidateDoc (xmlSchemaValidCtxtPtr ctxt, xmlDocPtr instance); XMLPUBFUN int XMLCALL @@ -178,8 +216,11 @@ const char * filename, int options); +XMLPUBFUN xmlParserCtxtPtr XMLCALL + xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxtPtr ctxt); + /* - * Interface to insert Schemas SAX velidation in a SAX stream + * Interface to insert Schemas SAX validation in a SAX stream */ typedef struct _xmlSchemaSAXPlug xmlSchemaSAXPlugStruct; typedef xmlSchemaSAXPlugStruct *xmlSchemaSAXPlugPtr; @@ -190,6 +231,13 @@ void **user_data); XMLPUBFUN int XMLCALL xmlSchemaSAXUnplug (xmlSchemaSAXPlugPtr plug); + + +XMLPUBFUN void XMLCALL + xmlSchemaValidateSetLocator (xmlSchemaValidCtxtPtr vctxt, + xmlSchemaValidityLocatorFunc f, + void *ctxt); + #ifdef __cplusplus } #endif diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlschemastypes.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlschemastypes.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlschemastypes.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlschemastypes.c 2015-12-23 07:08:27.000000000 +0000 @@ -40,7 +40,7 @@ extern double xmlXPathNINF; #endif -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); @@ -75,7 +75,7 @@ typedef xmlSchemaValDuration *xmlSchemaValDurationPtr; struct _xmlSchemaValDuration { long mon; /* mon stores years also */ - long day; + long day; double sec; /* sec stores min and hour also */ }; @@ -189,7 +189,7 @@ /************************************************************************ * * - * Datatype error handlers * + * Datatype error handlers * * * ************************************************************************/ /** @@ -206,7 +206,7 @@ /************************************************************************ * * - * Base types support * + * Base types support * * * ************************************************************************/ @@ -242,6 +242,10 @@ } ret->type = XML_SCHEMA_FACET_MINLENGTH; ret->val = xmlSchemaNewValue(XML_SCHEMAS_NNINTEGER); + if (ret->val == NULL) { + xmlFree(ret); + return(NULL); + } ret->val->value.decimal.lo = value; return (ret); } @@ -254,7 +258,7 @@ * Initialize one primitive built-in type */ static xmlSchemaTypePtr -xmlSchemaInitBasicType(const char *name, xmlSchemaValType type, +xmlSchemaInitBasicType(const char *name, xmlSchemaValType type, xmlSchemaTypePtr baseType) { xmlSchemaTypePtr ret; @@ -267,31 +271,31 @@ ret->name = (const xmlChar *)name; ret->targetNamespace = XML_SCHEMAS_NAMESPACE_NAME; ret->type = XML_SCHEMA_TYPE_BASIC; - ret->baseType = baseType; + ret->baseType = baseType; ret->contentType = XML_SCHEMA_CONTENT_BASIC; /* * Primitive types. */ - switch (type) { - case XML_SCHEMAS_STRING: - case XML_SCHEMAS_DECIMAL: - case XML_SCHEMAS_DATE: - case XML_SCHEMAS_DATETIME: - case XML_SCHEMAS_TIME: - case XML_SCHEMAS_GYEAR: - case XML_SCHEMAS_GYEARMONTH: - case XML_SCHEMAS_GMONTH: - case XML_SCHEMAS_GMONTHDAY: - case XML_SCHEMAS_GDAY: - case XML_SCHEMAS_DURATION: - case XML_SCHEMAS_FLOAT: - case XML_SCHEMAS_DOUBLE: - case XML_SCHEMAS_BOOLEAN: - case XML_SCHEMAS_ANYURI: - case XML_SCHEMAS_HEXBINARY: - case XML_SCHEMAS_BASE64BINARY: - case XML_SCHEMAS_QNAME: - case XML_SCHEMAS_NOTATION: + switch (type) { + case XML_SCHEMAS_STRING: + case XML_SCHEMAS_DECIMAL: + case XML_SCHEMAS_DATE: + case XML_SCHEMAS_DATETIME: + case XML_SCHEMAS_TIME: + case XML_SCHEMAS_GYEAR: + case XML_SCHEMAS_GYEARMONTH: + case XML_SCHEMAS_GMONTH: + case XML_SCHEMAS_GMONTHDAY: + case XML_SCHEMAS_GDAY: + case XML_SCHEMAS_DURATION: + case XML_SCHEMAS_FLOAT: + case XML_SCHEMAS_DOUBLE: + case XML_SCHEMAS_BOOLEAN: + case XML_SCHEMAS_ANYURI: + case XML_SCHEMAS_HEXBINARY: + case XML_SCHEMAS_BASE64BINARY: + case XML_SCHEMAS_QNAME: + case XML_SCHEMAS_NOTATION: ret->flags |= XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE; break; default: @@ -309,7 +313,7 @@ case XML_SCHEMAS_ENTITIES: ret->flags |= XML_SCHEMAS_TYPE_VARIETY_LIST; ret->facets = xmlSchemaNewMinLengthFacet(1); - ret->flags |= XML_SCHEMAS_TYPE_HAS_FACETS; + ret->flags |= XML_SCHEMAS_TYPE_HAS_FACETS; break; default: ret->flags |= XML_SCHEMAS_TYPE_VARIETY_ATOMIC; @@ -390,19 +394,19 @@ return; xmlSchemaTypesBank = xmlHashCreate(40); - + /* * 3.4.7 Built-in Complex Type Definition */ xmlSchemaTypeAnyTypeDef = xmlSchemaInitBasicType("anyType", - XML_SCHEMAS_ANYTYPE, + XML_SCHEMAS_ANYTYPE, NULL); xmlSchemaTypeAnyTypeDef->baseType = xmlSchemaTypeAnyTypeDef; xmlSchemaTypeAnyTypeDef->contentType = XML_SCHEMA_CONTENT_MIXED; /* * Init the content type. */ - xmlSchemaTypeAnyTypeDef->contentType = XML_SCHEMA_CONTENT_MIXED; + xmlSchemaTypeAnyTypeDef->contentType = XML_SCHEMA_CONTENT_MIXED; { xmlSchemaParticlePtr particle; xmlSchemaModelGroupPtr sequence; @@ -420,7 +424,7 @@ return; } memset(sequence, 0, sizeof(xmlSchemaModelGroup)); - sequence->type = XML_SCHEMA_TYPE_SEQUENCE; + sequence->type = XML_SCHEMA_TYPE_SEQUENCE; particle->children = (xmlSchemaTreeItemPtr) sequence; /* Second particle. */ particle = xmlSchemaAddParticle(); @@ -437,9 +441,9 @@ } memset(wild, 0, sizeof(xmlSchemaWildcard)); wild->type = XML_SCHEMA_TYPE_ANY; - wild->any = 1; - wild->processContents = XML_SCHEMAS_ANY_LAX; - particle->children = (xmlSchemaTreeItemPtr) wild; + wild->any = 1; + wild->processContents = XML_SCHEMAS_ANY_LAX; + particle->children = (xmlSchemaTreeItemPtr) wild; /* * Create the attribute wildcard. */ @@ -451,10 +455,10 @@ } memset(wild, 0, sizeof(xmlSchemaWildcard)); wild->any = 1; - wild->processContents = XML_SCHEMAS_ANY_LAX; + wild->processContents = XML_SCHEMAS_ANY_LAX; xmlSchemaTypeAnyTypeDef->attributeWildcard = wild; } - xmlSchemaTypeAnySimpleTypeDef = xmlSchemaInitBasicType("anySimpleType", + xmlSchemaTypeAnySimpleTypeDef = xmlSchemaInitBasicType("anySimpleType", XML_SCHEMAS_ANYSIMPLETYPE, xmlSchemaTypeAnyTypeDef); /* @@ -513,7 +517,7 @@ xmlSchemaTypeAnySimpleTypeDef); xmlSchemaTypeNotationDef = xmlSchemaInitBasicType("NOTATION", XML_SCHEMAS_NOTATION, - xmlSchemaTypeAnySimpleTypeDef); + xmlSchemaTypeAnySimpleTypeDef); xmlSchemaTypeQNameDef = xmlSchemaInitBasicType("QName", XML_SCHEMAS_QNAME, xmlSchemaTypeAnySimpleTypeDef); @@ -583,7 +587,7 @@ xmlSchemaTypeNCNameDef); xmlSchemaTypeIdrefDef = xmlSchemaInitBasicType("IDREF", XML_SCHEMAS_IDREF, - xmlSchemaTypeNCNameDef); + xmlSchemaTypeNCNameDef); xmlSchemaTypeEntityDef = xmlSchemaInitBasicType("ENTITY", XML_SCHEMAS_ENTITY, xmlSchemaTypeNCNameDef); @@ -615,7 +619,7 @@ * * Cleanup the default XML Schemas type library */ -void +void xmlSchemaCleanupTypes(void) { if (xmlSchemaTypesInitialized == 0) return; @@ -629,13 +633,13 @@ /* Content type. */ particle = (xmlSchemaParticlePtr) xmlSchemaTypeAnyTypeDef->subtypes; /* Wildcard. */ - xmlSchemaFreeWildcard((xmlSchemaWildcardPtr) + xmlSchemaFreeWildcard((xmlSchemaWildcardPtr) particle->children->children->children); xmlFree((xmlSchemaParticlePtr) particle->children->children); /* Sequence model group. */ xmlFree((xmlSchemaModelGroupPtr) particle->children); xmlFree((xmlSchemaParticlePtr) particle); - xmlSchemaTypeAnyTypeDef->subtypes = NULL; + xmlSchemaTypeAnyTypeDef->subtypes = NULL; } xmlHashFree(xmlSchemaTypesBank, (xmlHashDeallocator) xmlSchemaFreeType); xmlSchemaTypesInitialized = 0; @@ -665,12 +669,12 @@ (facetType == XML_SCHEMA_FACET_WHITESPACE)) return (1); else - return (0); + return (0); case XML_SCHEMAS_STRING: case XML_SCHEMAS_NOTATION: case XML_SCHEMAS_QNAME: - case XML_SCHEMAS_ANYURI: - case XML_SCHEMAS_BASE64BINARY: + case XML_SCHEMAS_ANYURI: + case XML_SCHEMAS_BASE64BINARY: case XML_SCHEMAS_HEXBINARY: if ((facetType == XML_SCHEMA_FACET_LENGTH) || (facetType == XML_SCHEMA_FACET_MINLENGTH) || @@ -693,12 +697,12 @@ (facetType == XML_SCHEMA_FACET_MINEXCLUSIVE)) return (1); else - return (0); + return (0); case XML_SCHEMAS_TIME: - case XML_SCHEMAS_GDAY: + case XML_SCHEMAS_GDAY: case XML_SCHEMAS_GMONTH: - case XML_SCHEMAS_GMONTHDAY: - case XML_SCHEMAS_GYEAR: + case XML_SCHEMAS_GMONTHDAY: + case XML_SCHEMAS_GYEAR: case XML_SCHEMAS_GYEARMONTH: case XML_SCHEMAS_DATE: case XML_SCHEMAS_DATETIME: @@ -714,7 +718,7 @@ (facetType == XML_SCHEMA_FACET_MINEXCLUSIVE)) return (1); else - return (0); + return (0); default: break; } @@ -736,7 +740,7 @@ if (xmlSchemaTypesInitialized == 0) xmlSchemaInitTypes(); switch (type) { - + case XML_SCHEMAS_ANYSIMPLETYPE: return (xmlSchemaTypeAnySimpleTypeDef); case XML_SCHEMAS_STRING: @@ -752,7 +756,7 @@ case XML_SCHEMAS_GMONTH: return (xmlSchemaTypeGMonthDef); case XML_SCHEMAS_GMONTHDAY: - return (xmlSchemaTypeGMonthDayDef); + return (xmlSchemaTypeGMonthDayDef); case XML_SCHEMAS_GYEAR: return (xmlSchemaTypeGYearDef); case XML_SCHEMAS_GYEARMONTH: @@ -828,7 +832,7 @@ case XML_SCHEMAS_BASE64BINARY: return (xmlSchemaTypeBase64BinaryDef); case XML_SCHEMAS_ANYTYPE: - return (xmlSchemaTypeAnyTypeDef); + return (xmlSchemaTypeAnyTypeDef); default: return (NULL); } @@ -880,7 +884,7 @@ */ const xmlChar * xmlSchemaValueGetAsString(xmlSchemaValPtr val) -{ +{ if (val == NULL) return (NULL); switch (val->type) { @@ -913,7 +917,7 @@ */ int xmlSchemaValueGetAsBoolean(xmlSchemaValPtr val) -{ +{ if ((val == NULL) || (val->type != XML_SCHEMAS_BOOLEAN)) return (0); return (val->value.b); @@ -924,8 +928,8 @@ * @type: the value type * @value: the value * - * Allocate a new simple type value. The type can be - * of XML_SCHEMAS_STRING. + * Allocate a new simple type value. The type can be + * of XML_SCHEMAS_STRING. * WARNING: This one is intended to be expanded for other * string based types. We need this for anySimpleType as well. * The given value is consumed and freed with the struct. @@ -1007,11 +1011,11 @@ * * Cleanup the default XML Schemas type library */ -void +void xmlSchemaFreeValue(xmlSchemaValPtr value) { xmlSchemaValPtr prev; - while (value != NULL) { + while (value != NULL) { switch (value->type) { case XML_SCHEMAS_STRING: case XML_SCHEMAS_NORMSTRING: @@ -1025,7 +1029,7 @@ case XML_SCHEMAS_IDREF: case XML_SCHEMAS_IDREFS: case XML_SCHEMAS_ENTITY: - case XML_SCHEMAS_ENTITIES: + case XML_SCHEMAS_ENTITIES: case XML_SCHEMAS_ANYURI: case XML_SCHEMAS_ANYSIMPLETYPE: if (value->value.str != NULL) @@ -1052,7 +1056,7 @@ prev = value; value = value->next; xmlFree(prev); - } + } } /** @@ -1088,9 +1092,9 @@ if ((type == NULL) || (type->type != XML_SCHEMA_TYPE_BASIC)) return (NULL); switch (type->builtInType) { - case XML_SCHEMAS_NMTOKENS: + case XML_SCHEMAS_NMTOKENS: return (xmlSchemaTypeNmtokenDef ); - case XML_SCHEMAS_IDREFS: + case XML_SCHEMAS_IDREFS: return (xmlSchemaTypeIdrefDef); case XML_SCHEMAS_ENTITIES: return (xmlSchemaTypeEntityDef); @@ -1342,13 +1346,13 @@ */ static int _xmlSchemaParseTime (xmlSchemaValDatePtr dt, const xmlChar **str) { - const xmlChar *cur = *str; + const xmlChar *cur = *str; int ret = 0; int value = 0; PARSE_2_DIGITS(value, cur, ret); if (ret != 0) - return ret; + return ret; if (*cur != ':') return 1; if (!VALID_HOUR(value)) @@ -1614,7 +1618,7 @@ const xmlChar *rewnd = cur; cur++; - ret = _xmlSchemaParseGDay(&(dt->value.date), &cur); + ret = _xmlSchemaParseGDay(&(dt->value.date), &cur); if ((ret == 0) && ((*cur == 0) || (*cur != ':'))) { /* @@ -1852,7 +1856,7 @@ } cur++; if (collapse) - while IS_WSP_BLANK_CH(*cur) cur++; + while IS_WSP_BLANK_CH(*cur) cur++; } if (isneg) { @@ -1908,13 +1912,13 @@ */ xmlChar * xmlSchemaWhiteSpaceReplace(const xmlChar *value) { - const xmlChar *cur = value; - xmlChar *ret = NULL, *mcur; + const xmlChar *cur = value; + xmlChar *ret = NULL, *mcur; - if (value == NULL) + if (value == NULL) return(NULL); - - while ((*cur != 0) && + + while ((*cur != 0) && (((*cur) != 0xd) && ((*cur) != 0x9) && ((*cur) != 0xa))) { cur++; } @@ -1927,7 +1931,7 @@ if ( ((*mcur) == 0xd) || ((*mcur) == 0x9) || ((*mcur) == 0xa) ) *mcur = ' '; mcur++; - } while (*mcur != 0); + } while (*mcur != 0); return(ret); } @@ -2063,7 +2067,7 @@ * Parse an unsigned long into 3 fields. * * Returns the number of significant digits in the number or - * -1 if overflow of the capacity + * -1 if overflow of the capacity and -2 if it's not a number. */ static int xmlSchemaParseUInt(const xmlChar **str, unsigned long *llo, @@ -2072,6 +2076,9 @@ const xmlChar *tmp, *cur = *str; int ret = 0, i = 0; + if (!((*cur >= '0') && (*cur <= '9'))) + return(-2); + while (*cur == '0') { /* ignore leading zeroes */ cur++; } @@ -2145,7 +2152,7 @@ if ((flags == 0) && (value != NULL)) { if ((type->builtInType != XML_SCHEMAS_STRING) && - (type->builtInType != XML_SCHEMAS_ANYTYPE) && + (type->builtInType != XML_SCHEMAS_ANYTYPE) && (type->builtInType != XML_SCHEMAS_ANYSIMPLETYPE)) { if (type->builtInType == XML_SCHEMAS_NORMSTRING) norm = xmlSchemaWhiteSpaceReplace(value); @@ -2157,7 +2164,7 @@ } switch (type->builtInType) { - case XML_SCHEMAS_UNKNOWN: + case XML_SCHEMAS_UNKNOWN: goto error; case XML_SCHEMAS_ANYTYPE: case XML_SCHEMAS_ANYSIMPLETYPE: @@ -2168,10 +2175,10 @@ *val = v; } else { goto error; - } + } } goto return0; - case XML_SCHEMAS_STRING: + case XML_SCHEMAS_STRING: if (! normOnTheFly) { const xmlChar *cur = value; @@ -2250,7 +2257,7 @@ const xmlChar *cur = value; unsigned int len, neg, integ, hasLeadingZeroes; xmlChar cval[25]; - xmlChar *cptr = cval; + xmlChar *cptr = cval; if ((cur == NULL) || (*cur == 0)) goto return1; @@ -2324,10 +2331,10 @@ v = xmlSchemaNewValue(XML_SCHEMAS_DECIMAL); if (v != NULL) { /* - * Now evaluate the significant digits of the number - */ + * Now evaluate the significant digits of the number + */ if (len != 0) { - + if (integ != ~0u) { /* * Get rid of trailing zeroes in the @@ -2342,9 +2349,9 @@ * Terminate the (preparsed) string. */ if (len != 0) { - *cptr = 0; + *cptr = 0; cptr = cval; - + xmlSchemaParseUInt((const xmlChar **)&cptr, &v->value.decimal.lo, &v->value.decimal.mi, @@ -2386,9 +2393,11 @@ normOnTheFly); break; case XML_SCHEMAS_FLOAT: - case XML_SCHEMAS_DOUBLE:{ + case XML_SCHEMAS_DOUBLE: { const xmlChar *cur = value; int neg = 0; + int digits_before = 0; + int digits_after = 0; if (normOnTheFly) while IS_WSP_BLANK_CH(*cur) cur++; @@ -2461,12 +2470,17 @@ goto return1; while ((*cur >= '0') && (*cur <= '9')) { cur++; + digits_before++; } if (*cur == '.') { cur++; - while ((*cur >= '0') && (*cur <= '9')) + while ((*cur >= '0') && (*cur <= '9')) { cur++; + digits_after++; + } } + if ((digits_before == 0) && (digits_after == 0)) + goto return1; if ((*cur == 'e') || (*cur == 'E')) { cur++; if ((*cur == '-') || (*cur == '+')) @@ -2594,8 +2608,8 @@ } else { cur++; } - } - } + } + } if (val != NULL) { v = xmlSchemaNewValue(XML_SCHEMAS_TOKEN); if (v != NULL) { @@ -2608,7 +2622,7 @@ goto return0; } case XML_SCHEMAS_LANGUAGE: - if (normOnTheFly) { + if (normOnTheFly) { norm = xmlSchemaCollapseString(value); if (norm != NULL) value = norm; @@ -2893,15 +2907,26 @@ } goto done; } - case XML_SCHEMAS_ANYURI:{ + case XML_SCHEMAS_ANYURI:{ if (*value != 0) { xmlURIPtr uri; - if (normOnTheFly) { + xmlChar *tmpval, *cur; + if (normOnTheFly) { norm = xmlSchemaCollapseString(value); if (norm != NULL) value = norm; } - uri = xmlParseURI((const char *) value); + tmpval = xmlStrdup(value); + for (cur = tmpval; *cur; ++cur) { + if (*cur < 32 || *cur >= 127 || *cur == ' ' || + *cur == '<' || *cur == '>' || *cur == '"' || + *cur == '{' || *cur == '}' || *cur == '|' || + *cur == '\\' || *cur == '^' || *cur == '`' || + *cur == '\'') + *cur = '_'; + } + uri = xmlParseURI((const char *) tmpval); + xmlFree(tmpval); if (uri == NULL) goto return1; xmlFreeURI(uri); @@ -2975,12 +3000,12 @@ } case XML_SCHEMAS_BASE64BINARY:{ /* ISSUE: - * + * * Ignore all stray characters? (yes, currently) * Worry about long lines? (no, currently) - * + * * rfc2045.txt: - * + * * "The encoded output stream must be represented in lines of * no more than 76 characters each. All line breaks or other * characters not found in Table 1 must be ignored by decoding @@ -3116,7 +3141,7 @@ } else if (*cur == '+') cur++; ret = xmlSchemaParseUInt(&cur, &lo, &mi, &hi); - if (ret == -1) + if (ret < 0) goto return1; if (normOnTheFly) while IS_WSP_BLANK_CH(*cur) cur++; @@ -3161,7 +3186,7 @@ case XML_SCHEMAS_BYTE: case XML_SCHEMAS_SHORT: case XML_SCHEMAS_INT:{ - const xmlChar *cur = value; + const xmlChar *cur = value; unsigned long lo, mi, hi; int sign = 0; @@ -3391,7 +3416,7 @@ /* * First test: If x is -ve and not zero */ - if ((x->value.decimal.sign) && + if ((x->value.decimal.sign) && ((x->value.decimal.lo != 0) || (x->value.decimal.mi != 0) || (x->value.decimal.hi != 0))) { @@ -3548,8 +3573,8 @@ /* seconds */ sec = x->value.dur.sec - y->value.dur.sec; - carry = (long)sec / SECS_PER_DAY; - sec -= (double)(carry * SECS_PER_DAY); + carry = (long)(sec / SECS_PER_DAY); + sec -= ((double)carry) * SECS_PER_DAY; /* days */ day = x->value.dur.day - y->value.dur.day + carry; @@ -3632,7 +3657,7 @@ xmlSchemaValPtr ret = xmlSchemaNewValue(v->type); if (ret == NULL) return NULL; - + memcpy(ret, v, sizeof(xmlSchemaVal)); ret->next = NULL; return ret; @@ -3678,7 +3703,7 @@ if (val->value.str != NULL) cur->value.str = xmlStrdup(BAD_CAST val->value.str); break; - case XML_SCHEMAS_QNAME: + case XML_SCHEMAS_QNAME: case XML_SCHEMAS_NOTATION: cur = xmlSchemaDupVal(val); if (val->value.qname.name != NULL) @@ -3820,16 +3845,17 @@ if (tyr == 0) tyr--; /* - * Coverity detected an overrun in daysInMonth + * Coverity detected an overrun in daysInMonth * of size 12 at position 12 with index variable "((r)->mon - 1)" */ - if (tmon < 0) - tmon = 0; + if (tmon < 1) + tmon = 1; if (tmon > 12) tmon = 12; tempdays += MAX_DAYINMONTH(tyr, tmon); carry = -1; - } else if (tempdays > (long) MAX_DAYINMONTH(r->year, r->mon)) { + } else if (VALID_YEAR(r->year) && VALID_MONTH(r->mon) && + tempdays > (long) MAX_DAYINMONTH(r->year, r->mon)) { tempdays = tempdays - MAX_DAYINMONTH(r->year, r->mon); carry = 1; } else @@ -3845,7 +3871,7 @@ r->year++; } } - + r->day = tempdays; /* @@ -3910,7 +3936,7 @@ * _xmlSchemaDateCastYMToDays: * @dt: an #xmlSchemaValPtr * - * Convert mon and year of @dt to total number of days. Take the + * Convert mon and year of @dt to total number of days. Take the * number of years since (or before) 1 AD and add the number of leap * years. This is a function because negative * years must be handled a little differently and there is no zero year. @@ -4090,7 +4116,7 @@ ret = -1; else if (sec > 0.0) ret = 1; - + } xmlSchemaFreeValue(p1); xmlSchemaFreeValue(q1); @@ -4231,7 +4257,7 @@ int invert) { int tmp; - + while ((*x != 0) && (*y != 0)) { if (IS_WSP_REPLACE_CH(*y)) { if (! IS_WSP_SPACE_CH(*x)) { @@ -4246,7 +4272,7 @@ else return(1); } - } + } } else { tmp = *x - *y; if (tmp < 0) { @@ -4300,7 +4326,7 @@ { int tmp; - /* + /* * Skip leading blank chars of the collapsed string. */ while IS_WSP_BLANK_CH(*y) @@ -4389,12 +4415,12 @@ { int tmp; - /* + /* * Skip leading blank chars of the collapsed string. */ while IS_WSP_BLANK_CH(*y) y++; - + while ((*x != 0) && (*y != 0)) { if IS_WSP_BLANK_CH(*y) { if (! IS_WSP_BLANK_CH(*x)) { @@ -4414,8 +4440,8 @@ } } x++; - y++; - /* + y++; + /* * Skip contiguous blank chars of the collapsed string. */ while IS_WSP_BLANK_CH(*y) @@ -4449,7 +4475,7 @@ return(-1); else return(1); - } + } if (*y != 0) { /* * Skip trailing blank chars of the collapsed string. @@ -4482,27 +4508,27 @@ const xmlChar *y) { int tmp; - + while ((*x != 0) && (*y != 0)) { if IS_WSP_BLANK_CH(*y) { if (! IS_WSP_BLANK_CH(*x)) { if ((*x - 0x20) < 0) - return(-1); + return(-1); else return(1); - } + } } else { if IS_WSP_BLANK_CH(*x) { if ((0x20 - *y) < 0) - return(-1); + return(-1); else return(1); } tmp = *x - *y; if (tmp < 0) - return(-1); + return(-1); if (tmp > 0) - return(1); + return(1); } x++; y++; @@ -4528,7 +4554,7 @@ xmlSchemaCompareNormStrings(const xmlChar *x, const xmlChar *y) { int tmp; - + while (IS_BLANK_CH(*x)) x++; while (IS_BLANK_CH(*y)) y++; while ((*x != 0) && (*y != 0)) { @@ -4721,13 +4747,13 @@ (ytype == XML_SCHEMAS_GYEARMONTH)) return (xmlSchemaCompareDates(x, y)); return (-2); - /* + /* * Note that we will support comparison of string types against * anySimpleType as well. */ case XML_SCHEMAS_ANYSIMPLETYPE: case XML_SCHEMAS_STRING: - case XML_SCHEMAS_NORMSTRING: + case XML_SCHEMAS_NORMSTRING: case XML_SCHEMAS_TOKEN: case XML_SCHEMAS_LANGUAGE: case XML_SCHEMAS_NMTOKEN: @@ -4751,10 +4777,10 @@ /* * TODO: Compare those against QName. */ - if (ytype == XML_SCHEMAS_QNAME) { + if (ytype == XML_SCHEMAS_QNAME) { TODO if (y == NULL) - return(-2); + return(-2); return (-2); } if ((ytype == XML_SCHEMAS_ANYSIMPLETYPE) || @@ -4776,7 +4802,7 @@ /* TODO: What about x < y or x > y. */ if (xmlStrEqual(xv, yv)) return (0); - else + else return (2); } else if (yws == XML_SCHEMA_WHITESPACE_REPLACE) return (xmlSchemaComparePreserveReplaceStrings(xv, yv, 0)); @@ -4802,7 +4828,7 @@ return (xmlSchemaCompareNormStrings(xv, yv)); } else return (-2); - + } return (-2); } @@ -4873,7 +4899,7 @@ else return(-1); } - return (-2); + return (-2); case XML_SCHEMAS_IDREFS: case XML_SCHEMAS_ENTITIES: case XML_SCHEMAS_NMTOKENS: @@ -4908,7 +4934,7 @@ if (y->type == XML_SCHEMAS_STRING) yws = XML_SCHEMA_WHITESPACE_PRESERVE; - else if (x->type == XML_SCHEMAS_NORMSTRING) + else if (y->type == XML_SCHEMAS_NORMSTRING) yws = XML_SCHEMA_WHITESPACE_REPLACE; else yws = XML_SCHEMA_WHITESPACE_COLLAPSE; @@ -5061,7 +5087,7 @@ if (expectedLen != NULL) *expectedLen = facet->val->value.decimal.lo; return (XML_SCHEMAV_CVC_LENGTH_VALID); - } + } } else if (facet->type == XML_SCHEMA_FACET_MINLENGTH) { if (actualLen < facet->val->value.decimal.lo) { if (expectedLen != NULL) @@ -5075,12 +5101,12 @@ return (XML_SCHEMAV_CVC_MAXLENGTH_VALID); } } else - /* - * NOTE: That we can pass NULL as xmlSchemaValPtr to + /* + * NOTE: That we can pass NULL as xmlSchemaValPtr to * xmlSchemaValidateFacet, since the remaining facet types - * are: XML_SCHEMA_FACET_PATTERN, XML_SCHEMA_FACET_ENUMERATION. + * are: XML_SCHEMA_FACET_PATTERN, XML_SCHEMA_FACET_ENUMERATION. */ - return(xmlSchemaValidateFacet(NULL, facet, value, NULL)); + return(xmlSchemaValidateFacet(NULL, facet, value, NULL)); return (0); } @@ -5093,7 +5119,7 @@ * @ws: the whitespace type of the value * @length: the actual length of the value * - * Checka a value against a "length", "minLength" and "maxLength" + * Checka a value against a "length", "minLength" and "maxLength" * facet; sets @length to the computed length of @value. * * Returns 0 if the value is valid, a positive error code @@ -5101,11 +5127,11 @@ */ static int xmlSchemaValidateLengthFacetInternal(xmlSchemaFacetPtr facet, - xmlSchemaTypeType valType, + xmlSchemaValType valType, const xmlChar *value, - xmlSchemaValPtr val, + xmlSchemaValPtr val, unsigned long *length, - xmlSchemaWhitespaceValueType ws) + xmlSchemaWhitespaceValueType ws) { unsigned int len = 0; @@ -5116,7 +5142,7 @@ (facet->type != XML_SCHEMA_FACET_MAXLENGTH) && (facet->type != XML_SCHEMA_FACET_MINLENGTH)) return (-1); - + /* * TODO: length, maxLength and minLength must be of type * nonNegativeInteger only. Check if decimal is used somehow. @@ -5150,7 +5176,7 @@ if (ws == XML_SCHEMA_WHITESPACE_COLLAPSE) len = xmlSchemaNormLen(value); else - /* + /* * Should be OK for "preserve" as well. */ len = xmlUTF8Strlen(value); @@ -5162,7 +5188,7 @@ case XML_SCHEMAS_NMTOKEN: case XML_SCHEMAS_NAME: case XML_SCHEMAS_NCNAME: - case XML_SCHEMAS_ID: + case XML_SCHEMAS_ID: /* * FIXME: What exactly to do with anyURI? */ @@ -5171,11 +5197,11 @@ len = xmlSchemaNormLen(value); break; case XML_SCHEMAS_QNAME: - case XML_SCHEMAS_NOTATION: - /* + case XML_SCHEMAS_NOTATION: + /* * For QName and NOTATION, those facets are * deprecated and should be ignored. - */ + */ return (0); default: TODO @@ -5195,7 +5221,7 @@ if (len > facet->val->value.decimal.lo) return(XML_SCHEMAV_CVC_MAXLENGTH_VALID); } - + return (0); } @@ -5207,18 +5233,18 @@ * @val: the precomputed value * @length: the actual length of the value * - * Checka a value against a "length", "minLength" and "maxLength" + * Checka a value against a "length", "minLength" and "maxLength" * facet; sets @length to the computed length of @value. * * Returns 0 if the value is valid, a positive error code * otherwise and -1 in case of an internal or API error. */ int -xmlSchemaValidateLengthFacet(xmlSchemaTypePtr type, +xmlSchemaValidateLengthFacet(xmlSchemaTypePtr type, xmlSchemaFacetPtr facet, const xmlChar *value, xmlSchemaValPtr val, - unsigned long *length) + unsigned long *length) { if (type == NULL) return(-1); @@ -5228,7 +5254,7 @@ } /** - * xmlSchemaValidateLengthFacetWhtsp: + * xmlSchemaValidateLengthFacetWhtsp: * @facet: the facet to check * @valType: the built-in type * @value: the lexical repr. of the value to be validated @@ -5236,7 +5262,7 @@ * @ws: the whitespace type of the value * @length: the actual length of the value * - * Checka a value against a "length", "minLength" and "maxLength" + * Checka a value against a "length", "minLength" and "maxLength" * facet; sets @length to the computed length of @value. * * Returns 0 if the value is valid, a positive error code @@ -5271,7 +5297,7 @@ static int xmlSchemaValidateFacetInternal(xmlSchemaFacetPtr facet, xmlSchemaWhitespaceValueType fws, - xmlSchemaValType valType, + xmlSchemaValType valType, const xmlChar *value, xmlSchemaValPtr val, xmlSchemaWhitespaceValueType ws) @@ -5283,7 +5309,7 @@ switch (facet->type) { case XML_SCHEMA_FACET_PATTERN: - /* + /* * NOTE that for patterns, the @value needs to be the normalized * value, *not* the lexical initial value or the canonical value. */ @@ -5384,7 +5410,7 @@ else { switch (valType) { case XML_SCHEMAS_STRING: - case XML_SCHEMAS_NORMSTRING: + case XML_SCHEMAS_NORMSTRING: if (ws == XML_SCHEMA_WHITESPACE_UNKNOWN) { /* * This is to ensure API compatibility with the old @@ -5400,13 +5426,13 @@ if (ws == XML_SCHEMA_WHITESPACE_COLLAPSE) len = xmlSchemaNormLen(value); else - /* + /* * Should be OK for "preserve" as well. */ len = xmlUTF8Strlen(value); } break; - case XML_SCHEMAS_IDREF: + case XML_SCHEMAS_IDREF: case XML_SCHEMAS_TOKEN: case XML_SCHEMAS_LANGUAGE: case XML_SCHEMAS_NMTOKEN: @@ -5415,11 +5441,11 @@ case XML_SCHEMAS_ID: case XML_SCHEMAS_ANYURI: if (value != NULL) - len = xmlSchemaNormLen(value); - break; + len = xmlSchemaNormLen(value); + break; default: TODO - } + } } if (facet->type == XML_SCHEMA_FACET_LENGTH) { if (len != facet->val->value.decimal.lo) @@ -5529,7 +5555,7 @@ int xmlSchemaValidateFacetWhtsp(xmlSchemaFacetPtr facet, xmlSchemaWhitespaceValueType fws, - xmlSchemaValType valType, + xmlSchemaValType valType, const xmlChar *value, xmlSchemaValPtr val, xmlSchemaWhitespaceValueType ws) @@ -5590,13 +5616,13 @@ /* * Result is in work, and after_fraction points * just past the fractional part. - * Use scientific notation + * Use scientific notation */ integer_place = DBL_DIG + EXPONENT_DIGITS + 1; fraction_place = DBL_DIG - 1; snprintf(work, sizeof(work),"%*.*e", integer_place, fraction_place, number); - after_fraction = strchr(work + DBL_DIG, 'e'); + after_fraction = strchr(work + DBL_DIG, 'e'); /* Remove fractional trailing zeroes */ ptr = after_fraction; while (*(--ptr) == '0') @@ -5623,12 +5649,12 @@ * @val: the precomputed value * @retValue: the returned value * - * Get a the cononical lexical representation of the value. + * Get the canonical lexical representation of the value. * The caller has to FREE the returned retValue. * * WARNING: Some value types are not supported yet, resulting * in a @retValue of "???". - * + * * TODO: XML Schema 1.0 does not define canonical representations * for: duration, gYearMonth, gYear, gMonthDay, gMonth, gDay, * anyURI, QName, NOTATION. This will be fixed in XML Schema 1.1. @@ -5648,7 +5674,7 @@ if (val->value.str == NULL) *retValue = BAD_CAST xmlStrdup(BAD_CAST ""); else - *retValue = + *retValue = BAD_CAST xmlStrdup((const xmlChar *) val->value.str); break; case XML_SCHEMAS_NORMSTRING: @@ -5665,7 +5691,7 @@ case XML_SCHEMAS_TOKEN: case XML_SCHEMAS_LANGUAGE: case XML_SCHEMAS_NMTOKEN: - case XML_SCHEMAS_NAME: + case XML_SCHEMAS_NAME: case XML_SCHEMAS_NCNAME: case XML_SCHEMAS_ID: case XML_SCHEMAS_IDREF: @@ -5674,10 +5700,10 @@ case XML_SCHEMAS_ANYURI: /* Unclear */ if (val->value.str == NULL) return (-1); - *retValue = + *retValue = BAD_CAST xmlSchemaCollapseString(BAD_CAST val->value.str); if (*retValue == NULL) - *retValue = + *retValue = BAD_CAST xmlStrdup((const xmlChar *) val->value.str); break; case XML_SCHEMAS_QNAME: @@ -5699,7 +5725,7 @@ /* * TODO: Lookout for a more simple implementation. */ - if ((val->value.decimal.total == 1) && + if ((val->value.decimal.total == 1) && (val->value.decimal.lo == 0)) { *retValue = xmlStrdup(BAD_CAST "0.0"); } else { @@ -5733,7 +5759,7 @@ else snprintf(offs, bufsize - (offs - buf), "%lu", dec.lo); - + if (dec.frac != 0) { if (dec.frac != dec.total) { int diff = dec.total - dec.frac; @@ -5746,7 +5772,7 @@ unsigned int i = 0; /* * Insert missing zeroes behind the decimal point. - */ + */ while (*(offs + i) != 0) i++; if (i < dec.total) { @@ -5883,7 +5909,7 @@ snprintf((char *) *retValue, 6, "---%02u", val->value.date.day); } - break; + break; case XML_SCHEMAS_GMONTHDAY: { /* TODO: Unclear in XML Schema 1.0 */ /* TODO: What to do with the timezone? */ @@ -5900,14 +5926,14 @@ /* TODO: What to do with the timezone? */ if (val->value.date.year < 0) snprintf(buf, 35, "-%04ld-%02u", - labs(val->value.date.year), + labs(val->value.date.year), val->value.date.mon); else snprintf(buf, 35, "%04ld-%02u", val->value.date.year, val->value.date.mon); *retValue = BAD_CAST xmlStrdup(BAD_CAST buf); } - break; + break; case XML_SCHEMAS_TIME: { char buf[30]; @@ -5918,8 +5944,8 @@ norm = xmlSchemaDateNormalize(val, 0); if (norm == NULL) return (-1); - /* - * TODO: Check if "%.14g" is portable. + /* + * TODO: Check if "%.14g" is portable. */ snprintf(buf, 30, "%02u:%02u:%02.14gZ", @@ -5935,7 +5961,7 @@ val->value.date.sec); } *retValue = BAD_CAST xmlStrdup(BAD_CAST buf); - } + } break; case XML_SCHEMAS_DATE: { @@ -5963,7 +5989,7 @@ val->value.date.day); } *retValue = BAD_CAST xmlStrdup(BAD_CAST buf); - } + } break; case XML_SCHEMAS_DATETIME: { @@ -6007,8 +6033,8 @@ *retValue = BAD_CAST xmlStrdup(BAD_CAST val->value.base64.str); break; case XML_SCHEMAS_FLOAT: { - char buf[30]; - /* + char buf[30]; + /* * |m| < 16777216, -149 <= e <= 104. * TODO: Handle, NaN, INF, -INF. The format is not * yet conformant. The c type float does not cover @@ -6029,7 +6055,7 @@ snprintf(buf, 40, "%01.14e", val->value.d); *retValue = BAD_CAST xmlStrdup(BAD_CAST buf); } - break; + break; default: *retValue = BAD_CAST xmlStrdup(BAD_CAST "???"); return (1); @@ -6045,7 +6071,7 @@ * @retValue: the returned value * @ws: the whitespace type of the value * - * Get a the cononical representation of the value. + * Get the canonical representation of the value. * The caller has to free the returned @retValue. * * Returns 0 if the value could be built, 1 if the value type is @@ -6088,7 +6114,7 @@ break; default: return (xmlSchemaGetCanonValue(val, retValue)); - } + } return (0); } diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlschemastypes.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlschemastypes.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlschemastypes.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlschemastypes.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -30,23 +30,23 @@ XML_SCHEMA_WHITESPACE_COLLAPSE = 3 } xmlSchemaWhitespaceValueType; -XMLPUBFUN void XMLCALL - xmlSchemaInitTypes (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL + xmlSchemaInitTypes (void); +XMLPUBFUN void XMLCALL xmlSchemaCleanupTypes (void); -XMLPUBFUN xmlSchemaTypePtr XMLCALL +XMLPUBFUN xmlSchemaTypePtr XMLCALL xmlSchemaGetPredefinedType (const xmlChar *name, const xmlChar *ns); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSchemaValidatePredefinedType (xmlSchemaTypePtr type, const xmlChar *value, xmlSchemaValPtr *val); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSchemaValPredefTypeNode (xmlSchemaTypePtr type, const xmlChar *value, xmlSchemaValPtr *val, xmlNodePtr node); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSchemaValidateFacet (xmlSchemaTypePtr base, xmlSchemaFacetPtr facet, const xmlChar *value, @@ -54,25 +54,25 @@ XMLPUBFUN int XMLCALL xmlSchemaValidateFacetWhtsp (xmlSchemaFacetPtr facet, xmlSchemaWhitespaceValueType fws, - xmlSchemaValType valType, + xmlSchemaValType valType, const xmlChar *value, xmlSchemaValPtr val, xmlSchemaWhitespaceValueType ws); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSchemaFreeValue (xmlSchemaValPtr val); -XMLPUBFUN xmlSchemaFacetPtr XMLCALL +XMLPUBFUN xmlSchemaFacetPtr XMLCALL xmlSchemaNewFacet (void); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSchemaCheckFacet (xmlSchemaFacetPtr facet, xmlSchemaTypePtr typeDecl, xmlSchemaParserCtxtPtr ctxt, const xmlChar *name); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSchemaFreeFacet (xmlSchemaFacetPtr facet); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSchemaCompareValues (xmlSchemaValPtr x, xmlSchemaValPtr y); -XMLPUBFUN xmlSchemaTypePtr XMLCALL +XMLPUBFUN xmlSchemaTypePtr XMLCALL xmlSchemaGetBuiltInListSimpleTypeItemType (xmlSchemaTypePtr type); XMLPUBFUN int XMLCALL xmlSchemaValidateListSimpleTypeFacet (xmlSchemaFacetPtr facet, @@ -82,7 +82,7 @@ XMLPUBFUN xmlSchemaTypePtr XMLCALL xmlSchemaGetBuiltInType (xmlSchemaValType type); XMLPUBFUN int XMLCALL - xmlSchemaIsBuiltInTypeFacet (xmlSchemaTypePtr type, + xmlSchemaIsBuiltInTypeFacet (xmlSchemaTypePtr type, int facetType); XMLPUBFUN xmlChar * XMLCALL xmlSchemaCollapseString (const xmlChar *value); @@ -91,7 +91,7 @@ XMLPUBFUN unsigned long XMLCALL xmlSchemaGetFacetValueAsULong (xmlSchemaFacetPtr facet); XMLPUBFUN int XMLCALL - xmlSchemaValidateLengthFacet (xmlSchemaTypePtr type, + xmlSchemaValidateLengthFacet (xmlSchemaTypePtr type, xmlSchemaFacetPtr facet, const xmlChar *value, xmlSchemaValPtr val, @@ -100,19 +100,19 @@ xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacetPtr facet, xmlSchemaValType valType, const xmlChar *value, - xmlSchemaValPtr val, + xmlSchemaValPtr val, unsigned long *length, xmlSchemaWhitespaceValueType ws); XMLPUBFUN int XMLCALL - xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type, + xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type, const xmlChar *value, - xmlSchemaValPtr *val, + xmlSchemaValPtr *val, xmlNodePtr node); XMLPUBFUN int XMLCALL xmlSchemaGetCanonValue (xmlSchemaValPtr val, const xmlChar **retValue); XMLPUBFUN int XMLCALL - xmlSchemaGetCanonValueWhtsp (xmlSchemaValPtr val, + xmlSchemaGetCanonValueWhtsp (xmlSchemaValPtr val, const xmlChar **retValue, xmlSchemaWhitespaceValueType ws); XMLPUBFUN int XMLCALL diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlstring.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlstring.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlstring.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlstring.c 2015-12-23 07:08:27.000000000 +0000 @@ -3,7 +3,7 @@ * * This module provides various utility functions for manipulating * the xmlChar* type. All functions named xmlStr* have been moved here - * from the parser.c file (their original home). + * from the parser.c file (their original home). * * See Copyright for the status of this software. * @@ -40,7 +40,7 @@ xmlChar * xmlStrndup(const xmlChar *cur, int len) { xmlChar *ret; - + if ((cur == NULL) || (len < 0)) return(NULL); ret = (xmlChar *) xmlMallocAtomic((len + 1) * sizeof(xmlChar)); if (ret == NULL) { @@ -85,7 +85,7 @@ xmlCharStrndup(const char *cur, int len) { int i; xmlChar *ret; - + if ((cur == NULL) || (len < 0)) return(NULL); ret = (xmlChar *) xmlMallocAtomic((len + 1) * sizeof(xmlChar)); if (ret == NULL) { @@ -170,7 +170,7 @@ * @name: the localname of the QName * @str: the second xmlChar * * - * Check if a QName is Equal to a given string + * Check if a QName is Equal to a given string * * Returns 1 if they are equal, 0 if they are different */ @@ -340,7 +340,7 @@ const xmlChar * xmlStrstr(const xmlChar *str, const xmlChar *val) { int n; - + if (str == NULL) return(NULL); if (val == NULL) return(NULL); n = xmlStrlen(val); @@ -366,9 +366,9 @@ */ const xmlChar * -xmlStrcasestr(const xmlChar *str, xmlChar *val) { +xmlStrcasestr(const xmlChar *str, const xmlChar *val) { int n; - + if (str == NULL) return(NULL); if (val == NULL) return(NULL); n = xmlStrlen(val); @@ -396,7 +396,7 @@ xmlChar * xmlStrsub(const xmlChar *str, int start, int len) { int i; - + if (str == NULL) return(NULL); if (start < 0) return(NULL); if (len < 0) return(NULL); @@ -519,7 +519,7 @@ const xmlChar *p = add; if (add == NULL) return(cur); - if (cur == NULL) + if (cur == NULL) return(xmlStrdup(add)); while (*p != 0) p++; /* non input consuming */ @@ -537,20 +537,20 @@ * * Returns the number of characters written to @buf or -1 if an error occurs. */ -int XMLCDECL +int XMLCDECL xmlStrPrintf(xmlChar *buf, int len, const xmlChar *msg, ...) { va_list args; int ret; - + if((buf == NULL) || (msg == NULL)) { return(-1); } - + va_start(args, msg); ret = vsnprintf((char *) buf, len, (const char *) msg, args); va_end(args); buf[len - 1] = 0; /* be safe ! */ - + return(ret); } @@ -565,17 +565,17 @@ * * Returns the number of characters written to @buf or -1 if an error occurs. */ -int +int xmlStrVPrintf(xmlChar *buf, int len, const xmlChar *msg, va_list ap) { int ret; - + if((buf == NULL) || (msg == NULL)) { return(-1); } - + ret = vsnprintf((char *) buf, len, (const char *) msg, ap); buf[len - 1] = 0; /* be safe ! */ - + return(ret); } @@ -858,7 +858,7 @@ xmlUTF8Strndup(const xmlChar *utf, int len) { xmlChar *ret; int i; - + if ((utf == NULL) || (len < 0)) return(NULL); i = xmlUTF8Strsize(utf, len); ret = (xmlChar *) xmlMallocAtomic((i + 1) * sizeof(xmlChar)); diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlstring.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlstring.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlstring.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlstring.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -59,7 +59,7 @@ const xmlChar *val); XMLPUBFUN const xmlChar * XMLCALL xmlStrcasestr (const xmlChar *str, - xmlChar *val); + const xmlChar *val); XMLPUBFUN int XMLCALL xmlStrcmp (const xmlChar *str1, const xmlChar *str2); @@ -113,16 +113,16 @@ XMLPUBFUN int XMLCALL xmlUTF8Strsize (const xmlChar *utf, int len); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlUTF8Strndup (const xmlChar *utf, int len); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlUTF8Strpos (const xmlChar *utf, int pos); XMLPUBFUN int XMLCALL xmlUTF8Strloc (const xmlChar *utf, const xmlChar *utfchar); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlUTF8Strsub (const xmlChar *utf, int start, int len); diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlunicode.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlunicode.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlunicode.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlunicode.c 2015-12-23 07:08:27.000000000 +0000 @@ -204,729 +204,729 @@ {"Zp", xmlUCSIsCatZp}, {"Zs", xmlUCSIsCatZs}}; -static const xmlChSRange xmlCS[] = {{0x0, 0x1f}, {0x7f, 0x9f}, - {0xad, 0xad}, {0x600, 0x603}, {0x6dd, 0x6dd}, {0x70f, 0x70f}, - {0x17b4, 0x17b5}, {0x200b, 0x200f}, {0x202a, 0x202e}, {0x2060, 0x2063}, - {0x206a, 0x206f}, {0xd800, 0xd800}, {0xdb7f, 0xdb80}, {0xdbff, 0xdc00}, +static const xmlChSRange xmlCS[] = {{0x0, 0x1f}, {0x7f, 0x9f}, + {0xad, 0xad}, {0x600, 0x603}, {0x6dd, 0x6dd}, {0x70f, 0x70f}, + {0x17b4, 0x17b5}, {0x200b, 0x200f}, {0x202a, 0x202e}, {0x2060, 0x2063}, + {0x206a, 0x206f}, {0xd800, 0xd800}, {0xdb7f, 0xdb80}, {0xdbff, 0xdc00}, {0xdfff, 0xe000}, {0xf8ff, 0xf8ff}, {0xfeff, 0xfeff}, {0xfff9, 0xfffb} }; -static const xmlChLRange xmlCL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001}, - {0xe0020, 0xe007f}, {0xf0000, 0xf0000}, {0xffffd, 0xffffd}, +static const xmlChLRange xmlCL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001}, + {0xe0020, 0xe007f}, {0xf0000, 0xf0000}, {0xffffd, 0xffffd}, {0x100000, 0x100000}, {0x10fffd, 0x10fffd} }; static xmlChRangeGroup xmlCG = {18,7,xmlCS,xmlCL}; -static const xmlChSRange xmlCfS[] = {{0xad, 0xad}, {0x600, 0x603}, - {0x6dd, 0x6dd}, {0x70f, 0x70f}, {0x17b4, 0x17b5}, {0x200b, 0x200f}, - {0x202a, 0x202e}, {0x2060, 0x2063}, {0x206a, 0x206f}, {0xfeff, 0xfeff}, +static const xmlChSRange xmlCfS[] = {{0xad, 0xad}, {0x600, 0x603}, + {0x6dd, 0x6dd}, {0x70f, 0x70f}, {0x17b4, 0x17b5}, {0x200b, 0x200f}, + {0x202a, 0x202e}, {0x2060, 0x2063}, {0x206a, 0x206f}, {0xfeff, 0xfeff}, {0xfff9, 0xfffb} }; -static const xmlChLRange xmlCfL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001}, +static const xmlChLRange xmlCfL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001}, {0xe0020, 0xe007f} }; static xmlChRangeGroup xmlCfG = {11,3,xmlCfS,xmlCfL}; -static const xmlChSRange xmlLS[] = {{0x41, 0x5a}, {0x61, 0x7a}, - {0xaa, 0xaa}, {0xb5, 0xb5}, {0xba, 0xba}, {0xc0, 0xd6}, {0xd8, 0xf6}, - {0xf8, 0x236}, {0x250, 0x2c1}, {0x2c6, 0x2d1}, {0x2e0, 0x2e4}, - {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x386, 0x386}, {0x388, 0x38a}, - {0x38c, 0x38c}, {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3f5}, - {0x3f7, 0x3fb}, {0x400, 0x481}, {0x48a, 0x4ce}, {0x4d0, 0x4f5}, - {0x4f8, 0x4f9}, {0x500, 0x50f}, {0x531, 0x556}, {0x559, 0x559}, - {0x561, 0x587}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, - {0x640, 0x64a}, {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5}, - {0x6e5, 0x6e6}, {0x6ee, 0x6ef}, {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, - {0x710, 0x710}, {0x712, 0x72f}, {0x74d, 0x74f}, {0x780, 0x7a5}, - {0x7b1, 0x7b1}, {0x904, 0x939}, {0x93d, 0x93d}, {0x950, 0x950}, - {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990}, {0x993, 0x9a8}, - {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, {0x9bd, 0x9bd}, - {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a}, - {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33}, - {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e}, - {0xa72, 0xa74}, {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8}, - {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9}, {0xabd, 0xabd}, - {0xad0, 0xad0}, {0xae0, 0xae1}, {0xb05, 0xb0c}, {0xb0f, 0xb10}, - {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb35, 0xb39}, - {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb71, 0xb71}, - {0xb83, 0xb83}, {0xb85, 0xb8a}, {0xb8e, 0xb90}, {0xb92, 0xb95}, - {0xb99, 0xb9a}, {0xb9c, 0xb9c}, {0xb9e, 0xb9f}, {0xba3, 0xba4}, - {0xba8, 0xbaa}, {0xbae, 0xbb5}, {0xbb7, 0xbb9}, {0xc05, 0xc0c}, - {0xc0e, 0xc10}, {0xc12, 0xc28}, {0xc2a, 0xc33}, {0xc35, 0xc39}, - {0xc60, 0xc61}, {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8}, - {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xcbd, 0xcbd}, {0xcde, 0xcde}, - {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10}, {0xd12, 0xd28}, - {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xd85, 0xd96}, {0xd9a, 0xdb1}, - {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, {0xdc0, 0xdc6}, {0xe01, 0xe30}, - {0xe32, 0xe33}, {0xe40, 0xe46}, {0xe81, 0xe82}, {0xe84, 0xe84}, - {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d}, {0xe94, 0xe97}, - {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5}, {0xea7, 0xea7}, - {0xeaa, 0xeab}, {0xead, 0xeb0}, {0xeb2, 0xeb3}, {0xebd, 0xebd}, - {0xec0, 0xec4}, {0xec6, 0xec6}, {0xedc, 0xedd}, {0xf00, 0xf00}, - {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b}, {0x1000, 0x1021}, - {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055}, {0x10a0, 0x10c5}, - {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9}, - {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d}, - {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286}, - {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0}, - {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5}, - {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e}, - {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346}, - {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676}, - {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711}, - {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770}, - {0x1780, 0x17b3}, {0x17d7, 0x17d7}, {0x17dc, 0x17dc}, {0x1820, 0x1877}, - {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974}, - {0x1d00, 0x1d6b}, {0x1e00, 0x1e9b}, {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15}, - {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, - {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, - {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, - {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, - {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x2071, 0x2071}, {0x207f, 0x207f}, - {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210a, 0x2113}, {0x2115, 0x2115}, - {0x2119, 0x211d}, {0x2124, 0x2124}, {0x2126, 0x2126}, {0x2128, 0x2128}, - {0x212a, 0x212d}, {0x212f, 0x2131}, {0x2133, 0x2139}, {0x213d, 0x213f}, - {0x2145, 0x2149}, {0x3005, 0x3006}, {0x3031, 0x3035}, {0x303b, 0x303c}, - {0x3041, 0x3096}, {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff}, - {0x3105, 0x312c}, {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff}, - {0x3400, 0x3400}, {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5}, - {0xa000, 0xa48c}, {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d}, - {0xfa30, 0xfa6a}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb1d}, - {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e}, - {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d}, - {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, {0xfe70, 0xfe74}, - {0xfe76, 0xfefc}, {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xffbe}, +static const xmlChSRange xmlLS[] = {{0x41, 0x5a}, {0x61, 0x7a}, + {0xaa, 0xaa}, {0xb5, 0xb5}, {0xba, 0xba}, {0xc0, 0xd6}, {0xd8, 0xf6}, + {0xf8, 0x236}, {0x250, 0x2c1}, {0x2c6, 0x2d1}, {0x2e0, 0x2e4}, + {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x386, 0x386}, {0x388, 0x38a}, + {0x38c, 0x38c}, {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3f5}, + {0x3f7, 0x3fb}, {0x400, 0x481}, {0x48a, 0x4ce}, {0x4d0, 0x4f5}, + {0x4f8, 0x4f9}, {0x500, 0x50f}, {0x531, 0x556}, {0x559, 0x559}, + {0x561, 0x587}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, + {0x640, 0x64a}, {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5}, + {0x6e5, 0x6e6}, {0x6ee, 0x6ef}, {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, + {0x710, 0x710}, {0x712, 0x72f}, {0x74d, 0x74f}, {0x780, 0x7a5}, + {0x7b1, 0x7b1}, {0x904, 0x939}, {0x93d, 0x93d}, {0x950, 0x950}, + {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990}, {0x993, 0x9a8}, + {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, {0x9bd, 0x9bd}, + {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a}, + {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33}, + {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e}, + {0xa72, 0xa74}, {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8}, + {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9}, {0xabd, 0xabd}, + {0xad0, 0xad0}, {0xae0, 0xae1}, {0xb05, 0xb0c}, {0xb0f, 0xb10}, + {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb35, 0xb39}, + {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb71, 0xb71}, + {0xb83, 0xb83}, {0xb85, 0xb8a}, {0xb8e, 0xb90}, {0xb92, 0xb95}, + {0xb99, 0xb9a}, {0xb9c, 0xb9c}, {0xb9e, 0xb9f}, {0xba3, 0xba4}, + {0xba8, 0xbaa}, {0xbae, 0xbb5}, {0xbb7, 0xbb9}, {0xc05, 0xc0c}, + {0xc0e, 0xc10}, {0xc12, 0xc28}, {0xc2a, 0xc33}, {0xc35, 0xc39}, + {0xc60, 0xc61}, {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8}, + {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xcbd, 0xcbd}, {0xcde, 0xcde}, + {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10}, {0xd12, 0xd28}, + {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xd85, 0xd96}, {0xd9a, 0xdb1}, + {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, {0xdc0, 0xdc6}, {0xe01, 0xe30}, + {0xe32, 0xe33}, {0xe40, 0xe46}, {0xe81, 0xe82}, {0xe84, 0xe84}, + {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d}, {0xe94, 0xe97}, + {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5}, {0xea7, 0xea7}, + {0xeaa, 0xeab}, {0xead, 0xeb0}, {0xeb2, 0xeb3}, {0xebd, 0xebd}, + {0xec0, 0xec4}, {0xec6, 0xec6}, {0xedc, 0xedd}, {0xf00, 0xf00}, + {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b}, {0x1000, 0x1021}, + {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055}, {0x10a0, 0x10c5}, + {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9}, + {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d}, + {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286}, + {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0}, + {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5}, + {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e}, + {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346}, + {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676}, + {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711}, + {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770}, + {0x1780, 0x17b3}, {0x17d7, 0x17d7}, {0x17dc, 0x17dc}, {0x1820, 0x1877}, + {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974}, + {0x1d00, 0x1d6b}, {0x1e00, 0x1e9b}, {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15}, + {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, + {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, + {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, + {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, + {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x2071, 0x2071}, {0x207f, 0x207f}, + {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210a, 0x2113}, {0x2115, 0x2115}, + {0x2119, 0x211d}, {0x2124, 0x2124}, {0x2126, 0x2126}, {0x2128, 0x2128}, + {0x212a, 0x212d}, {0x212f, 0x2131}, {0x2133, 0x2139}, {0x213d, 0x213f}, + {0x2145, 0x2149}, {0x3005, 0x3006}, {0x3031, 0x3035}, {0x303b, 0x303c}, + {0x3041, 0x3096}, {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff}, + {0x3105, 0x312c}, {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff}, + {0x3400, 0x3400}, {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5}, + {0xa000, 0xa48c}, {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d}, + {0xfa30, 0xfa6a}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb1d}, + {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e}, + {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d}, + {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, {0xfe70, 0xfe74}, + {0xfe76, 0xfefc}, {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc} }; -static const xmlChLRange xmlLL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026}, - {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d}, - {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e}, - {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10400, 0x1049d}, - {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835}, - {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f}, - {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f}, - {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, - {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3}, - {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, - {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, - {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550}, - {0x1d552, 0x1d6a3}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da}, - {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, - {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788}, - {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9}, +static const xmlChLRange xmlLL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026}, + {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d}, + {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e}, + {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10400, 0x1049d}, + {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835}, + {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f}, + {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f}, + {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, + {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3}, + {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, + {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, + {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550}, + {0x1d552, 0x1d6a3}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da}, + {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, + {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788}, + {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9}, {0x20000, 0x20000}, {0x2a6d6, 0x2a6d6}, {0x2f800, 0x2fa1d} }; static xmlChRangeGroup xmlLG = {279,50,xmlLS,xmlLL}; -static const xmlChSRange xmlLlS[] = {{0x61, 0x7a}, {0xaa, 0xaa}, - {0xb5, 0xb5}, {0xba, 0xba}, {0xdf, 0xf6}, {0xf8, 0xff}, {0x101, 0x101}, - {0x103, 0x103}, {0x105, 0x105}, {0x107, 0x107}, {0x109, 0x109}, - {0x10b, 0x10b}, {0x10d, 0x10d}, {0x10f, 0x10f}, {0x111, 0x111}, - {0x113, 0x113}, {0x115, 0x115}, {0x117, 0x117}, {0x119, 0x119}, - {0x11b, 0x11b}, {0x11d, 0x11d}, {0x11f, 0x11f}, {0x121, 0x121}, - {0x123, 0x123}, {0x125, 0x125}, {0x127, 0x127}, {0x129, 0x129}, - {0x12b, 0x12b}, {0x12d, 0x12d}, {0x12f, 0x12f}, {0x131, 0x131}, - {0x133, 0x133}, {0x135, 0x135}, {0x137, 0x138}, {0x13a, 0x13a}, - {0x13c, 0x13c}, {0x13e, 0x13e}, {0x140, 0x140}, {0x142, 0x142}, - {0x144, 0x144}, {0x146, 0x146}, {0x148, 0x149}, {0x14b, 0x14b}, - {0x14d, 0x14d}, {0x14f, 0x14f}, {0x151, 0x151}, {0x153, 0x153}, - {0x155, 0x155}, {0x157, 0x157}, {0x159, 0x159}, {0x15b, 0x15b}, - {0x15d, 0x15d}, {0x15f, 0x15f}, {0x161, 0x161}, {0x163, 0x163}, - {0x165, 0x165}, {0x167, 0x167}, {0x169, 0x169}, {0x16b, 0x16b}, - {0x16d, 0x16d}, {0x16f, 0x16f}, {0x171, 0x171}, {0x173, 0x173}, - {0x175, 0x175}, {0x177, 0x177}, {0x17a, 0x17a}, {0x17c, 0x17c}, - {0x17e, 0x180}, {0x183, 0x183}, {0x185, 0x185}, {0x188, 0x188}, - {0x18c, 0x18d}, {0x192, 0x192}, {0x195, 0x195}, {0x199, 0x19b}, - {0x19e, 0x19e}, {0x1a1, 0x1a1}, {0x1a3, 0x1a3}, {0x1a5, 0x1a5}, - {0x1a8, 0x1a8}, {0x1aa, 0x1ab}, {0x1ad, 0x1ad}, {0x1b0, 0x1b0}, - {0x1b4, 0x1b4}, {0x1b6, 0x1b6}, {0x1b9, 0x1ba}, {0x1bd, 0x1bf}, - {0x1c6, 0x1c6}, {0x1c9, 0x1c9}, {0x1cc, 0x1cc}, {0x1ce, 0x1ce}, - {0x1d0, 0x1d0}, {0x1d2, 0x1d2}, {0x1d4, 0x1d4}, {0x1d6, 0x1d6}, - {0x1d8, 0x1d8}, {0x1da, 0x1da}, {0x1dc, 0x1dd}, {0x1df, 0x1df}, - {0x1e1, 0x1e1}, {0x1e3, 0x1e3}, {0x1e5, 0x1e5}, {0x1e7, 0x1e7}, - {0x1e9, 0x1e9}, {0x1eb, 0x1eb}, {0x1ed, 0x1ed}, {0x1ef, 0x1f0}, - {0x1f3, 0x1f3}, {0x1f5, 0x1f5}, {0x1f9, 0x1f9}, {0x1fb, 0x1fb}, - {0x1fd, 0x1fd}, {0x1ff, 0x1ff}, {0x201, 0x201}, {0x203, 0x203}, - {0x205, 0x205}, {0x207, 0x207}, {0x209, 0x209}, {0x20b, 0x20b}, - {0x20d, 0x20d}, {0x20f, 0x20f}, {0x211, 0x211}, {0x213, 0x213}, - {0x215, 0x215}, {0x217, 0x217}, {0x219, 0x219}, {0x21b, 0x21b}, - {0x21d, 0x21d}, {0x21f, 0x21f}, {0x221, 0x221}, {0x223, 0x223}, - {0x225, 0x225}, {0x227, 0x227}, {0x229, 0x229}, {0x22b, 0x22b}, - {0x22d, 0x22d}, {0x22f, 0x22f}, {0x231, 0x231}, {0x233, 0x236}, - {0x250, 0x2af}, {0x390, 0x390}, {0x3ac, 0x3ce}, {0x3d0, 0x3d1}, - {0x3d5, 0x3d7}, {0x3d9, 0x3d9}, {0x3db, 0x3db}, {0x3dd, 0x3dd}, - {0x3df, 0x3df}, {0x3e1, 0x3e1}, {0x3e3, 0x3e3}, {0x3e5, 0x3e5}, - {0x3e7, 0x3e7}, {0x3e9, 0x3e9}, {0x3eb, 0x3eb}, {0x3ed, 0x3ed}, - {0x3ef, 0x3f3}, {0x3f5, 0x3f5}, {0x3f8, 0x3f8}, {0x3fb, 0x3fb}, - {0x430, 0x45f}, {0x461, 0x461}, {0x463, 0x463}, {0x465, 0x465}, - {0x467, 0x467}, {0x469, 0x469}, {0x46b, 0x46b}, {0x46d, 0x46d}, - {0x46f, 0x46f}, {0x471, 0x471}, {0x473, 0x473}, {0x475, 0x475}, - {0x477, 0x477}, {0x479, 0x479}, {0x47b, 0x47b}, {0x47d, 0x47d}, - {0x47f, 0x47f}, {0x481, 0x481}, {0x48b, 0x48b}, {0x48d, 0x48d}, - {0x48f, 0x48f}, {0x491, 0x491}, {0x493, 0x493}, {0x495, 0x495}, - {0x497, 0x497}, {0x499, 0x499}, {0x49b, 0x49b}, {0x49d, 0x49d}, - {0x49f, 0x49f}, {0x4a1, 0x4a1}, {0x4a3, 0x4a3}, {0x4a5, 0x4a5}, - {0x4a7, 0x4a7}, {0x4a9, 0x4a9}, {0x4ab, 0x4ab}, {0x4ad, 0x4ad}, - {0x4af, 0x4af}, {0x4b1, 0x4b1}, {0x4b3, 0x4b3}, {0x4b5, 0x4b5}, - {0x4b7, 0x4b7}, {0x4b9, 0x4b9}, {0x4bb, 0x4bb}, {0x4bd, 0x4bd}, - {0x4bf, 0x4bf}, {0x4c2, 0x4c2}, {0x4c4, 0x4c4}, {0x4c6, 0x4c6}, - {0x4c8, 0x4c8}, {0x4ca, 0x4ca}, {0x4cc, 0x4cc}, {0x4ce, 0x4ce}, - {0x4d1, 0x4d1}, {0x4d3, 0x4d3}, {0x4d5, 0x4d5}, {0x4d7, 0x4d7}, - {0x4d9, 0x4d9}, {0x4db, 0x4db}, {0x4dd, 0x4dd}, {0x4df, 0x4df}, - {0x4e1, 0x4e1}, {0x4e3, 0x4e3}, {0x4e5, 0x4e5}, {0x4e7, 0x4e7}, - {0x4e9, 0x4e9}, {0x4eb, 0x4eb}, {0x4ed, 0x4ed}, {0x4ef, 0x4ef}, - {0x4f1, 0x4f1}, {0x4f3, 0x4f3}, {0x4f5, 0x4f5}, {0x4f9, 0x4f9}, - {0x501, 0x501}, {0x503, 0x503}, {0x505, 0x505}, {0x507, 0x507}, - {0x509, 0x509}, {0x50b, 0x50b}, {0x50d, 0x50d}, {0x50f, 0x50f}, - {0x561, 0x587}, {0x1d00, 0x1d2b}, {0x1d62, 0x1d6b}, {0x1e01, 0x1e01}, - {0x1e03, 0x1e03}, {0x1e05, 0x1e05}, {0x1e07, 0x1e07}, {0x1e09, 0x1e09}, - {0x1e0b, 0x1e0b}, {0x1e0d, 0x1e0d}, {0x1e0f, 0x1e0f}, {0x1e11, 0x1e11}, - {0x1e13, 0x1e13}, {0x1e15, 0x1e15}, {0x1e17, 0x1e17}, {0x1e19, 0x1e19}, - {0x1e1b, 0x1e1b}, {0x1e1d, 0x1e1d}, {0x1e1f, 0x1e1f}, {0x1e21, 0x1e21}, - {0x1e23, 0x1e23}, {0x1e25, 0x1e25}, {0x1e27, 0x1e27}, {0x1e29, 0x1e29}, - {0x1e2b, 0x1e2b}, {0x1e2d, 0x1e2d}, {0x1e2f, 0x1e2f}, {0x1e31, 0x1e31}, - {0x1e33, 0x1e33}, {0x1e35, 0x1e35}, {0x1e37, 0x1e37}, {0x1e39, 0x1e39}, - {0x1e3b, 0x1e3b}, {0x1e3d, 0x1e3d}, {0x1e3f, 0x1e3f}, {0x1e41, 0x1e41}, - {0x1e43, 0x1e43}, {0x1e45, 0x1e45}, {0x1e47, 0x1e47}, {0x1e49, 0x1e49}, - {0x1e4b, 0x1e4b}, {0x1e4d, 0x1e4d}, {0x1e4f, 0x1e4f}, {0x1e51, 0x1e51}, - {0x1e53, 0x1e53}, {0x1e55, 0x1e55}, {0x1e57, 0x1e57}, {0x1e59, 0x1e59}, - {0x1e5b, 0x1e5b}, {0x1e5d, 0x1e5d}, {0x1e5f, 0x1e5f}, {0x1e61, 0x1e61}, - {0x1e63, 0x1e63}, {0x1e65, 0x1e65}, {0x1e67, 0x1e67}, {0x1e69, 0x1e69}, - {0x1e6b, 0x1e6b}, {0x1e6d, 0x1e6d}, {0x1e6f, 0x1e6f}, {0x1e71, 0x1e71}, - {0x1e73, 0x1e73}, {0x1e75, 0x1e75}, {0x1e77, 0x1e77}, {0x1e79, 0x1e79}, - {0x1e7b, 0x1e7b}, {0x1e7d, 0x1e7d}, {0x1e7f, 0x1e7f}, {0x1e81, 0x1e81}, - {0x1e83, 0x1e83}, {0x1e85, 0x1e85}, {0x1e87, 0x1e87}, {0x1e89, 0x1e89}, - {0x1e8b, 0x1e8b}, {0x1e8d, 0x1e8d}, {0x1e8f, 0x1e8f}, {0x1e91, 0x1e91}, - {0x1e93, 0x1e93}, {0x1e95, 0x1e9b}, {0x1ea1, 0x1ea1}, {0x1ea3, 0x1ea3}, - {0x1ea5, 0x1ea5}, {0x1ea7, 0x1ea7}, {0x1ea9, 0x1ea9}, {0x1eab, 0x1eab}, - {0x1ead, 0x1ead}, {0x1eaf, 0x1eaf}, {0x1eb1, 0x1eb1}, {0x1eb3, 0x1eb3}, - {0x1eb5, 0x1eb5}, {0x1eb7, 0x1eb7}, {0x1eb9, 0x1eb9}, {0x1ebb, 0x1ebb}, - {0x1ebd, 0x1ebd}, {0x1ebf, 0x1ebf}, {0x1ec1, 0x1ec1}, {0x1ec3, 0x1ec3}, - {0x1ec5, 0x1ec5}, {0x1ec7, 0x1ec7}, {0x1ec9, 0x1ec9}, {0x1ecb, 0x1ecb}, - {0x1ecd, 0x1ecd}, {0x1ecf, 0x1ecf}, {0x1ed1, 0x1ed1}, {0x1ed3, 0x1ed3}, - {0x1ed5, 0x1ed5}, {0x1ed7, 0x1ed7}, {0x1ed9, 0x1ed9}, {0x1edb, 0x1edb}, - {0x1edd, 0x1edd}, {0x1edf, 0x1edf}, {0x1ee1, 0x1ee1}, {0x1ee3, 0x1ee3}, - {0x1ee5, 0x1ee5}, {0x1ee7, 0x1ee7}, {0x1ee9, 0x1ee9}, {0x1eeb, 0x1eeb}, - {0x1eed, 0x1eed}, {0x1eef, 0x1eef}, {0x1ef1, 0x1ef1}, {0x1ef3, 0x1ef3}, - {0x1ef5, 0x1ef5}, {0x1ef7, 0x1ef7}, {0x1ef9, 0x1ef9}, {0x1f00, 0x1f07}, - {0x1f10, 0x1f15}, {0x1f20, 0x1f27}, {0x1f30, 0x1f37}, {0x1f40, 0x1f45}, - {0x1f50, 0x1f57}, {0x1f60, 0x1f67}, {0x1f70, 0x1f7d}, {0x1f80, 0x1f87}, - {0x1f90, 0x1f97}, {0x1fa0, 0x1fa7}, {0x1fb0, 0x1fb4}, {0x1fb6, 0x1fb7}, - {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fc7}, {0x1fd0, 0x1fd3}, - {0x1fd6, 0x1fd7}, {0x1fe0, 0x1fe7}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ff7}, - {0x2071, 0x2071}, {0x207f, 0x207f}, {0x210a, 0x210a}, {0x210e, 0x210f}, - {0x2113, 0x2113}, {0x212f, 0x212f}, {0x2134, 0x2134}, {0x2139, 0x2139}, - {0x213d, 0x213d}, {0x2146, 0x2149}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, +static const xmlChSRange xmlLlS[] = {{0x61, 0x7a}, {0xaa, 0xaa}, + {0xb5, 0xb5}, {0xba, 0xba}, {0xdf, 0xf6}, {0xf8, 0xff}, {0x101, 0x101}, + {0x103, 0x103}, {0x105, 0x105}, {0x107, 0x107}, {0x109, 0x109}, + {0x10b, 0x10b}, {0x10d, 0x10d}, {0x10f, 0x10f}, {0x111, 0x111}, + {0x113, 0x113}, {0x115, 0x115}, {0x117, 0x117}, {0x119, 0x119}, + {0x11b, 0x11b}, {0x11d, 0x11d}, {0x11f, 0x11f}, {0x121, 0x121}, + {0x123, 0x123}, {0x125, 0x125}, {0x127, 0x127}, {0x129, 0x129}, + {0x12b, 0x12b}, {0x12d, 0x12d}, {0x12f, 0x12f}, {0x131, 0x131}, + {0x133, 0x133}, {0x135, 0x135}, {0x137, 0x138}, {0x13a, 0x13a}, + {0x13c, 0x13c}, {0x13e, 0x13e}, {0x140, 0x140}, {0x142, 0x142}, + {0x144, 0x144}, {0x146, 0x146}, {0x148, 0x149}, {0x14b, 0x14b}, + {0x14d, 0x14d}, {0x14f, 0x14f}, {0x151, 0x151}, {0x153, 0x153}, + {0x155, 0x155}, {0x157, 0x157}, {0x159, 0x159}, {0x15b, 0x15b}, + {0x15d, 0x15d}, {0x15f, 0x15f}, {0x161, 0x161}, {0x163, 0x163}, + {0x165, 0x165}, {0x167, 0x167}, {0x169, 0x169}, {0x16b, 0x16b}, + {0x16d, 0x16d}, {0x16f, 0x16f}, {0x171, 0x171}, {0x173, 0x173}, + {0x175, 0x175}, {0x177, 0x177}, {0x17a, 0x17a}, {0x17c, 0x17c}, + {0x17e, 0x180}, {0x183, 0x183}, {0x185, 0x185}, {0x188, 0x188}, + {0x18c, 0x18d}, {0x192, 0x192}, {0x195, 0x195}, {0x199, 0x19b}, + {0x19e, 0x19e}, {0x1a1, 0x1a1}, {0x1a3, 0x1a3}, {0x1a5, 0x1a5}, + {0x1a8, 0x1a8}, {0x1aa, 0x1ab}, {0x1ad, 0x1ad}, {0x1b0, 0x1b0}, + {0x1b4, 0x1b4}, {0x1b6, 0x1b6}, {0x1b9, 0x1ba}, {0x1bd, 0x1bf}, + {0x1c6, 0x1c6}, {0x1c9, 0x1c9}, {0x1cc, 0x1cc}, {0x1ce, 0x1ce}, + {0x1d0, 0x1d0}, {0x1d2, 0x1d2}, {0x1d4, 0x1d4}, {0x1d6, 0x1d6}, + {0x1d8, 0x1d8}, {0x1da, 0x1da}, {0x1dc, 0x1dd}, {0x1df, 0x1df}, + {0x1e1, 0x1e1}, {0x1e3, 0x1e3}, {0x1e5, 0x1e5}, {0x1e7, 0x1e7}, + {0x1e9, 0x1e9}, {0x1eb, 0x1eb}, {0x1ed, 0x1ed}, {0x1ef, 0x1f0}, + {0x1f3, 0x1f3}, {0x1f5, 0x1f5}, {0x1f9, 0x1f9}, {0x1fb, 0x1fb}, + {0x1fd, 0x1fd}, {0x1ff, 0x1ff}, {0x201, 0x201}, {0x203, 0x203}, + {0x205, 0x205}, {0x207, 0x207}, {0x209, 0x209}, {0x20b, 0x20b}, + {0x20d, 0x20d}, {0x20f, 0x20f}, {0x211, 0x211}, {0x213, 0x213}, + {0x215, 0x215}, {0x217, 0x217}, {0x219, 0x219}, {0x21b, 0x21b}, + {0x21d, 0x21d}, {0x21f, 0x21f}, {0x221, 0x221}, {0x223, 0x223}, + {0x225, 0x225}, {0x227, 0x227}, {0x229, 0x229}, {0x22b, 0x22b}, + {0x22d, 0x22d}, {0x22f, 0x22f}, {0x231, 0x231}, {0x233, 0x236}, + {0x250, 0x2af}, {0x390, 0x390}, {0x3ac, 0x3ce}, {0x3d0, 0x3d1}, + {0x3d5, 0x3d7}, {0x3d9, 0x3d9}, {0x3db, 0x3db}, {0x3dd, 0x3dd}, + {0x3df, 0x3df}, {0x3e1, 0x3e1}, {0x3e3, 0x3e3}, {0x3e5, 0x3e5}, + {0x3e7, 0x3e7}, {0x3e9, 0x3e9}, {0x3eb, 0x3eb}, {0x3ed, 0x3ed}, + {0x3ef, 0x3f3}, {0x3f5, 0x3f5}, {0x3f8, 0x3f8}, {0x3fb, 0x3fb}, + {0x430, 0x45f}, {0x461, 0x461}, {0x463, 0x463}, {0x465, 0x465}, + {0x467, 0x467}, {0x469, 0x469}, {0x46b, 0x46b}, {0x46d, 0x46d}, + {0x46f, 0x46f}, {0x471, 0x471}, {0x473, 0x473}, {0x475, 0x475}, + {0x477, 0x477}, {0x479, 0x479}, {0x47b, 0x47b}, {0x47d, 0x47d}, + {0x47f, 0x47f}, {0x481, 0x481}, {0x48b, 0x48b}, {0x48d, 0x48d}, + {0x48f, 0x48f}, {0x491, 0x491}, {0x493, 0x493}, {0x495, 0x495}, + {0x497, 0x497}, {0x499, 0x499}, {0x49b, 0x49b}, {0x49d, 0x49d}, + {0x49f, 0x49f}, {0x4a1, 0x4a1}, {0x4a3, 0x4a3}, {0x4a5, 0x4a5}, + {0x4a7, 0x4a7}, {0x4a9, 0x4a9}, {0x4ab, 0x4ab}, {0x4ad, 0x4ad}, + {0x4af, 0x4af}, {0x4b1, 0x4b1}, {0x4b3, 0x4b3}, {0x4b5, 0x4b5}, + {0x4b7, 0x4b7}, {0x4b9, 0x4b9}, {0x4bb, 0x4bb}, {0x4bd, 0x4bd}, + {0x4bf, 0x4bf}, {0x4c2, 0x4c2}, {0x4c4, 0x4c4}, {0x4c6, 0x4c6}, + {0x4c8, 0x4c8}, {0x4ca, 0x4ca}, {0x4cc, 0x4cc}, {0x4ce, 0x4ce}, + {0x4d1, 0x4d1}, {0x4d3, 0x4d3}, {0x4d5, 0x4d5}, {0x4d7, 0x4d7}, + {0x4d9, 0x4d9}, {0x4db, 0x4db}, {0x4dd, 0x4dd}, {0x4df, 0x4df}, + {0x4e1, 0x4e1}, {0x4e3, 0x4e3}, {0x4e5, 0x4e5}, {0x4e7, 0x4e7}, + {0x4e9, 0x4e9}, {0x4eb, 0x4eb}, {0x4ed, 0x4ed}, {0x4ef, 0x4ef}, + {0x4f1, 0x4f1}, {0x4f3, 0x4f3}, {0x4f5, 0x4f5}, {0x4f9, 0x4f9}, + {0x501, 0x501}, {0x503, 0x503}, {0x505, 0x505}, {0x507, 0x507}, + {0x509, 0x509}, {0x50b, 0x50b}, {0x50d, 0x50d}, {0x50f, 0x50f}, + {0x561, 0x587}, {0x1d00, 0x1d2b}, {0x1d62, 0x1d6b}, {0x1e01, 0x1e01}, + {0x1e03, 0x1e03}, {0x1e05, 0x1e05}, {0x1e07, 0x1e07}, {0x1e09, 0x1e09}, + {0x1e0b, 0x1e0b}, {0x1e0d, 0x1e0d}, {0x1e0f, 0x1e0f}, {0x1e11, 0x1e11}, + {0x1e13, 0x1e13}, {0x1e15, 0x1e15}, {0x1e17, 0x1e17}, {0x1e19, 0x1e19}, + {0x1e1b, 0x1e1b}, {0x1e1d, 0x1e1d}, {0x1e1f, 0x1e1f}, {0x1e21, 0x1e21}, + {0x1e23, 0x1e23}, {0x1e25, 0x1e25}, {0x1e27, 0x1e27}, {0x1e29, 0x1e29}, + {0x1e2b, 0x1e2b}, {0x1e2d, 0x1e2d}, {0x1e2f, 0x1e2f}, {0x1e31, 0x1e31}, + {0x1e33, 0x1e33}, {0x1e35, 0x1e35}, {0x1e37, 0x1e37}, {0x1e39, 0x1e39}, + {0x1e3b, 0x1e3b}, {0x1e3d, 0x1e3d}, {0x1e3f, 0x1e3f}, {0x1e41, 0x1e41}, + {0x1e43, 0x1e43}, {0x1e45, 0x1e45}, {0x1e47, 0x1e47}, {0x1e49, 0x1e49}, + {0x1e4b, 0x1e4b}, {0x1e4d, 0x1e4d}, {0x1e4f, 0x1e4f}, {0x1e51, 0x1e51}, + {0x1e53, 0x1e53}, {0x1e55, 0x1e55}, {0x1e57, 0x1e57}, {0x1e59, 0x1e59}, + {0x1e5b, 0x1e5b}, {0x1e5d, 0x1e5d}, {0x1e5f, 0x1e5f}, {0x1e61, 0x1e61}, + {0x1e63, 0x1e63}, {0x1e65, 0x1e65}, {0x1e67, 0x1e67}, {0x1e69, 0x1e69}, + {0x1e6b, 0x1e6b}, {0x1e6d, 0x1e6d}, {0x1e6f, 0x1e6f}, {0x1e71, 0x1e71}, + {0x1e73, 0x1e73}, {0x1e75, 0x1e75}, {0x1e77, 0x1e77}, {0x1e79, 0x1e79}, + {0x1e7b, 0x1e7b}, {0x1e7d, 0x1e7d}, {0x1e7f, 0x1e7f}, {0x1e81, 0x1e81}, + {0x1e83, 0x1e83}, {0x1e85, 0x1e85}, {0x1e87, 0x1e87}, {0x1e89, 0x1e89}, + {0x1e8b, 0x1e8b}, {0x1e8d, 0x1e8d}, {0x1e8f, 0x1e8f}, {0x1e91, 0x1e91}, + {0x1e93, 0x1e93}, {0x1e95, 0x1e9b}, {0x1ea1, 0x1ea1}, {0x1ea3, 0x1ea3}, + {0x1ea5, 0x1ea5}, {0x1ea7, 0x1ea7}, {0x1ea9, 0x1ea9}, {0x1eab, 0x1eab}, + {0x1ead, 0x1ead}, {0x1eaf, 0x1eaf}, {0x1eb1, 0x1eb1}, {0x1eb3, 0x1eb3}, + {0x1eb5, 0x1eb5}, {0x1eb7, 0x1eb7}, {0x1eb9, 0x1eb9}, {0x1ebb, 0x1ebb}, + {0x1ebd, 0x1ebd}, {0x1ebf, 0x1ebf}, {0x1ec1, 0x1ec1}, {0x1ec3, 0x1ec3}, + {0x1ec5, 0x1ec5}, {0x1ec7, 0x1ec7}, {0x1ec9, 0x1ec9}, {0x1ecb, 0x1ecb}, + {0x1ecd, 0x1ecd}, {0x1ecf, 0x1ecf}, {0x1ed1, 0x1ed1}, {0x1ed3, 0x1ed3}, + {0x1ed5, 0x1ed5}, {0x1ed7, 0x1ed7}, {0x1ed9, 0x1ed9}, {0x1edb, 0x1edb}, + {0x1edd, 0x1edd}, {0x1edf, 0x1edf}, {0x1ee1, 0x1ee1}, {0x1ee3, 0x1ee3}, + {0x1ee5, 0x1ee5}, {0x1ee7, 0x1ee7}, {0x1ee9, 0x1ee9}, {0x1eeb, 0x1eeb}, + {0x1eed, 0x1eed}, {0x1eef, 0x1eef}, {0x1ef1, 0x1ef1}, {0x1ef3, 0x1ef3}, + {0x1ef5, 0x1ef5}, {0x1ef7, 0x1ef7}, {0x1ef9, 0x1ef9}, {0x1f00, 0x1f07}, + {0x1f10, 0x1f15}, {0x1f20, 0x1f27}, {0x1f30, 0x1f37}, {0x1f40, 0x1f45}, + {0x1f50, 0x1f57}, {0x1f60, 0x1f67}, {0x1f70, 0x1f7d}, {0x1f80, 0x1f87}, + {0x1f90, 0x1f97}, {0x1fa0, 0x1fa7}, {0x1fb0, 0x1fb4}, {0x1fb6, 0x1fb7}, + {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fc7}, {0x1fd0, 0x1fd3}, + {0x1fd6, 0x1fd7}, {0x1fe0, 0x1fe7}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ff7}, + {0x2071, 0x2071}, {0x207f, 0x207f}, {0x210a, 0x210a}, {0x210e, 0x210f}, + {0x2113, 0x2113}, {0x212f, 0x212f}, {0x2134, 0x2134}, {0x2139, 0x2139}, + {0x213d, 0x213d}, {0x2146, 0x2149}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xff41, 0xff5a} }; -static const xmlChLRange xmlLlL[] = {{0x10428, 0x1044f}, {0x1d41a, 0x1d433}, - {0x1d44e, 0x1d454}, {0x1d456, 0x1d467}, {0x1d482, 0x1d49b}, - {0x1d4b6, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3}, - {0x1d4c5, 0x1d4cf}, {0x1d4ea, 0x1d503}, {0x1d51e, 0x1d537}, - {0x1d552, 0x1d56b}, {0x1d586, 0x1d59f}, {0x1d5ba, 0x1d5d3}, - {0x1d5ee, 0x1d607}, {0x1d622, 0x1d63b}, {0x1d656, 0x1d66f}, - {0x1d68a, 0x1d6a3}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6e1}, - {0x1d6fc, 0x1d714}, {0x1d716, 0x1d71b}, {0x1d736, 0x1d74e}, - {0x1d750, 0x1d755}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d78f}, +static const xmlChLRange xmlLlL[] = {{0x10428, 0x1044f}, {0x1d41a, 0x1d433}, + {0x1d44e, 0x1d454}, {0x1d456, 0x1d467}, {0x1d482, 0x1d49b}, + {0x1d4b6, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3}, + {0x1d4c5, 0x1d4cf}, {0x1d4ea, 0x1d503}, {0x1d51e, 0x1d537}, + {0x1d552, 0x1d56b}, {0x1d586, 0x1d59f}, {0x1d5ba, 0x1d5d3}, + {0x1d5ee, 0x1d607}, {0x1d622, 0x1d63b}, {0x1d656, 0x1d66f}, + {0x1d68a, 0x1d6a3}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6e1}, + {0x1d6fc, 0x1d714}, {0x1d716, 0x1d71b}, {0x1d736, 0x1d74e}, + {0x1d750, 0x1d755}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d78f}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9} }; static xmlChRangeGroup xmlLlG = {396,28,xmlLlS,xmlLlL}; -static const xmlChSRange xmlLmS[] = {{0x2b0, 0x2c1}, {0x2c6, 0x2d1}, - {0x2e0, 0x2e4}, {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x559, 0x559}, - {0x640, 0x640}, {0x6e5, 0x6e6}, {0xe46, 0xe46}, {0xec6, 0xec6}, - {0x17d7, 0x17d7}, {0x1843, 0x1843}, {0x1d2c, 0x1d61}, {0x3005, 0x3005}, - {0x3031, 0x3035}, {0x303b, 0x303b}, {0x309d, 0x309e}, {0x30fc, 0x30fe}, +static const xmlChSRange xmlLmS[] = {{0x2b0, 0x2c1}, {0x2c6, 0x2d1}, + {0x2e0, 0x2e4}, {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x559, 0x559}, + {0x640, 0x640}, {0x6e5, 0x6e6}, {0xe46, 0xe46}, {0xec6, 0xec6}, + {0x17d7, 0x17d7}, {0x1843, 0x1843}, {0x1d2c, 0x1d61}, {0x3005, 0x3005}, + {0x3031, 0x3035}, {0x303b, 0x303b}, {0x309d, 0x309e}, {0x30fc, 0x30fe}, {0xff70, 0xff70}, {0xff9e, 0xff9f} }; static xmlChRangeGroup xmlLmG = {20,0,xmlLmS,NULL}; -static const xmlChSRange xmlLoS[] = {{0x1bb, 0x1bb}, {0x1c0, 0x1c3}, - {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, {0x641, 0x64a}, - {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5}, {0x6ee, 0x6ef}, - {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, {0x710, 0x710}, {0x712, 0x72f}, - {0x74d, 0x74f}, {0x780, 0x7a5}, {0x7b1, 0x7b1}, {0x904, 0x939}, - {0x93d, 0x93d}, {0x950, 0x950}, {0x958, 0x961}, {0x985, 0x98c}, - {0x98f, 0x990}, {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, - {0x9b6, 0x9b9}, {0x9bd, 0x9bd}, {0x9dc, 0x9dd}, {0x9df, 0x9e1}, - {0x9f0, 0x9f1}, {0xa05, 0xa0a}, {0xa0f, 0xa10}, {0xa13, 0xa28}, - {0xa2a, 0xa30}, {0xa32, 0xa33}, {0xa35, 0xa36}, {0xa38, 0xa39}, - {0xa59, 0xa5c}, {0xa5e, 0xa5e}, {0xa72, 0xa74}, {0xa85, 0xa8d}, - {0xa8f, 0xa91}, {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, - {0xab5, 0xab9}, {0xabd, 0xabd}, {0xad0, 0xad0}, {0xae0, 0xae1}, - {0xb05, 0xb0c}, {0xb0f, 0xb10}, {0xb13, 0xb28}, {0xb2a, 0xb30}, - {0xb32, 0xb33}, {0xb35, 0xb39}, {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, - {0xb5f, 0xb61}, {0xb71, 0xb71}, {0xb83, 0xb83}, {0xb85, 0xb8a}, - {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c}, - {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5}, - {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28}, - {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c}, - {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, - {0xcbd, 0xcbd}, {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c}, - {0xd0e, 0xd10}, {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61}, - {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, - {0xdc0, 0xdc6}, {0xe01, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45}, - {0xe81, 0xe82}, {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a}, - {0xe8d, 0xe8d}, {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3}, - {0xea5, 0xea5}, {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeb0}, - {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xedc, 0xedd}, - {0xf00, 0xf00}, {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b}, - {0x1000, 0x1021}, {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055}, - {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9}, - {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d}, - {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286}, - {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0}, - {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5}, - {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e}, - {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346}, - {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676}, - {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711}, - {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770}, - {0x1780, 0x17b3}, {0x17dc, 0x17dc}, {0x1820, 0x1842}, {0x1844, 0x1877}, - {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974}, - {0x2135, 0x2138}, {0x3006, 0x3006}, {0x303c, 0x303c}, {0x3041, 0x3096}, - {0x309f, 0x309f}, {0x30a1, 0x30fa}, {0x30ff, 0x30ff}, {0x3105, 0x312c}, - {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff}, {0x3400, 0x3400}, - {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5}, {0xa000, 0xa48c}, - {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d}, {0xfa30, 0xfa6a}, - {0xfb1d, 0xfb1d}, {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, - {0xfb3e, 0xfb3e}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, - {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, - {0xfe70, 0xfe74}, {0xfe76, 0xfefc}, {0xff66, 0xff6f}, {0xff71, 0xff9d}, - {0xffa0, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, +static const xmlChSRange xmlLoS[] = {{0x1bb, 0x1bb}, {0x1c0, 0x1c3}, + {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, {0x641, 0x64a}, + {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5}, {0x6ee, 0x6ef}, + {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, {0x710, 0x710}, {0x712, 0x72f}, + {0x74d, 0x74f}, {0x780, 0x7a5}, {0x7b1, 0x7b1}, {0x904, 0x939}, + {0x93d, 0x93d}, {0x950, 0x950}, {0x958, 0x961}, {0x985, 0x98c}, + {0x98f, 0x990}, {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, + {0x9b6, 0x9b9}, {0x9bd, 0x9bd}, {0x9dc, 0x9dd}, {0x9df, 0x9e1}, + {0x9f0, 0x9f1}, {0xa05, 0xa0a}, {0xa0f, 0xa10}, {0xa13, 0xa28}, + {0xa2a, 0xa30}, {0xa32, 0xa33}, {0xa35, 0xa36}, {0xa38, 0xa39}, + {0xa59, 0xa5c}, {0xa5e, 0xa5e}, {0xa72, 0xa74}, {0xa85, 0xa8d}, + {0xa8f, 0xa91}, {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, + {0xab5, 0xab9}, {0xabd, 0xabd}, {0xad0, 0xad0}, {0xae0, 0xae1}, + {0xb05, 0xb0c}, {0xb0f, 0xb10}, {0xb13, 0xb28}, {0xb2a, 0xb30}, + {0xb32, 0xb33}, {0xb35, 0xb39}, {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, + {0xb5f, 0xb61}, {0xb71, 0xb71}, {0xb83, 0xb83}, {0xb85, 0xb8a}, + {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c}, + {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5}, + {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28}, + {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c}, + {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, + {0xcbd, 0xcbd}, {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c}, + {0xd0e, 0xd10}, {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61}, + {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, + {0xdc0, 0xdc6}, {0xe01, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45}, + {0xe81, 0xe82}, {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a}, + {0xe8d, 0xe8d}, {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3}, + {0xea5, 0xea5}, {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeb0}, + {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xedc, 0xedd}, + {0xf00, 0xf00}, {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b}, + {0x1000, 0x1021}, {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055}, + {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9}, + {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d}, + {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286}, + {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0}, + {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5}, + {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e}, + {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346}, + {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676}, + {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711}, + {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770}, + {0x1780, 0x17b3}, {0x17dc, 0x17dc}, {0x1820, 0x1842}, {0x1844, 0x1877}, + {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974}, + {0x2135, 0x2138}, {0x3006, 0x3006}, {0x303c, 0x303c}, {0x3041, 0x3096}, + {0x309f, 0x309f}, {0x30a1, 0x30fa}, {0x30ff, 0x30ff}, {0x3105, 0x312c}, + {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff}, {0x3400, 0x3400}, + {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5}, {0xa000, 0xa48c}, + {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d}, {0xfa30, 0xfa6a}, + {0xfb1d, 0xfb1d}, {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, + {0xfb3e, 0xfb3e}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, + {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, + {0xfe70, 0xfe74}, {0xfe76, 0xfefc}, {0xff66, 0xff6f}, {0xff71, 0xff9d}, + {0xffa0, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc} }; -static const xmlChLRange xmlLoL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026}, - {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d}, - {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e}, - {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10450, 0x1049d}, - {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835}, - {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f}, +static const xmlChLRange xmlLoL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026}, + {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d}, + {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e}, + {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10450, 0x1049d}, + {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835}, + {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f}, {0x20000, 0x20000}, {0x2a6d6, 0x2a6d6}, {0x2f800, 0x2fa1d} }; static xmlChRangeGroup xmlLoG = {211,20,xmlLoS,xmlLoL}; -static const xmlChSRange xmlLtS[] = {{0x1c5, 0x1c5}, {0x1c8, 0x1c8}, - {0x1cb, 0x1cb}, {0x1f2, 0x1f2}, {0x1f88, 0x1f8f}, {0x1f98, 0x1f9f}, +static const xmlChSRange xmlLtS[] = {{0x1c5, 0x1c5}, {0x1c8, 0x1c8}, + {0x1cb, 0x1cb}, {0x1f2, 0x1f2}, {0x1f88, 0x1f8f}, {0x1f98, 0x1f9f}, {0x1fa8, 0x1faf}, {0x1fbc, 0x1fbc}, {0x1fcc, 0x1fcc}, {0x1ffc, 0x1ffc} }; static xmlChRangeGroup xmlLtG = {10,0,xmlLtS,NULL}; -static const xmlChSRange xmlLuS[] = {{0x41, 0x5a}, {0xc0, 0xd6}, - {0xd8, 0xde}, {0x100, 0x100}, {0x102, 0x102}, {0x104, 0x104}, - {0x106, 0x106}, {0x108, 0x108}, {0x10a, 0x10a}, {0x10c, 0x10c}, - {0x10e, 0x10e}, {0x110, 0x110}, {0x112, 0x112}, {0x114, 0x114}, - {0x116, 0x116}, {0x118, 0x118}, {0x11a, 0x11a}, {0x11c, 0x11c}, - {0x11e, 0x11e}, {0x120, 0x120}, {0x122, 0x122}, {0x124, 0x124}, - {0x126, 0x126}, {0x128, 0x128}, {0x12a, 0x12a}, {0x12c, 0x12c}, - {0x12e, 0x12e}, {0x130, 0x130}, {0x132, 0x132}, {0x134, 0x134}, - {0x136, 0x136}, {0x139, 0x139}, {0x13b, 0x13b}, {0x13d, 0x13d}, - {0x13f, 0x13f}, {0x141, 0x141}, {0x143, 0x143}, {0x145, 0x145}, - {0x147, 0x147}, {0x14a, 0x14a}, {0x14c, 0x14c}, {0x14e, 0x14e}, - {0x150, 0x150}, {0x152, 0x152}, {0x154, 0x154}, {0x156, 0x156}, - {0x158, 0x158}, {0x15a, 0x15a}, {0x15c, 0x15c}, {0x15e, 0x15e}, - {0x160, 0x160}, {0x162, 0x162}, {0x164, 0x164}, {0x166, 0x166}, - {0x168, 0x168}, {0x16a, 0x16a}, {0x16c, 0x16c}, {0x16e, 0x16e}, - {0x170, 0x170}, {0x172, 0x172}, {0x174, 0x174}, {0x176, 0x176}, - {0x178, 0x179}, {0x17b, 0x17b}, {0x17d, 0x17d}, {0x181, 0x182}, - {0x184, 0x184}, {0x186, 0x187}, {0x189, 0x18b}, {0x18e, 0x191}, - {0x193, 0x194}, {0x196, 0x198}, {0x19c, 0x19d}, {0x19f, 0x1a0}, - {0x1a2, 0x1a2}, {0x1a4, 0x1a4}, {0x1a6, 0x1a7}, {0x1a9, 0x1a9}, - {0x1ac, 0x1ac}, {0x1ae, 0x1af}, {0x1b1, 0x1b3}, {0x1b5, 0x1b5}, - {0x1b7, 0x1b8}, {0x1bc, 0x1bc}, {0x1c4, 0x1c4}, {0x1c7, 0x1c7}, - {0x1ca, 0x1ca}, {0x1cd, 0x1cd}, {0x1cf, 0x1cf}, {0x1d1, 0x1d1}, - {0x1d3, 0x1d3}, {0x1d5, 0x1d5}, {0x1d7, 0x1d7}, {0x1d9, 0x1d9}, - {0x1db, 0x1db}, {0x1de, 0x1de}, {0x1e0, 0x1e0}, {0x1e2, 0x1e2}, - {0x1e4, 0x1e4}, {0x1e6, 0x1e6}, {0x1e8, 0x1e8}, {0x1ea, 0x1ea}, - {0x1ec, 0x1ec}, {0x1ee, 0x1ee}, {0x1f1, 0x1f1}, {0x1f4, 0x1f4}, - {0x1f6, 0x1f8}, {0x1fa, 0x1fa}, {0x1fc, 0x1fc}, {0x1fe, 0x1fe}, - {0x200, 0x200}, {0x202, 0x202}, {0x204, 0x204}, {0x206, 0x206}, - {0x208, 0x208}, {0x20a, 0x20a}, {0x20c, 0x20c}, {0x20e, 0x20e}, - {0x210, 0x210}, {0x212, 0x212}, {0x214, 0x214}, {0x216, 0x216}, - {0x218, 0x218}, {0x21a, 0x21a}, {0x21c, 0x21c}, {0x21e, 0x21e}, - {0x220, 0x220}, {0x222, 0x222}, {0x224, 0x224}, {0x226, 0x226}, - {0x228, 0x228}, {0x22a, 0x22a}, {0x22c, 0x22c}, {0x22e, 0x22e}, - {0x230, 0x230}, {0x232, 0x232}, {0x386, 0x386}, {0x388, 0x38a}, - {0x38c, 0x38c}, {0x38e, 0x38f}, {0x391, 0x3a1}, {0x3a3, 0x3ab}, - {0x3d2, 0x3d4}, {0x3d8, 0x3d8}, {0x3da, 0x3da}, {0x3dc, 0x3dc}, - {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3e2}, {0x3e4, 0x3e4}, - {0x3e6, 0x3e6}, {0x3e8, 0x3e8}, {0x3ea, 0x3ea}, {0x3ec, 0x3ec}, - {0x3ee, 0x3ee}, {0x3f4, 0x3f4}, {0x3f7, 0x3f7}, {0x3f9, 0x3fa}, - {0x400, 0x42f}, {0x460, 0x460}, {0x462, 0x462}, {0x464, 0x464}, - {0x466, 0x466}, {0x468, 0x468}, {0x46a, 0x46a}, {0x46c, 0x46c}, - {0x46e, 0x46e}, {0x470, 0x470}, {0x472, 0x472}, {0x474, 0x474}, - {0x476, 0x476}, {0x478, 0x478}, {0x47a, 0x47a}, {0x47c, 0x47c}, - {0x47e, 0x47e}, {0x480, 0x480}, {0x48a, 0x48a}, {0x48c, 0x48c}, - {0x48e, 0x48e}, {0x490, 0x490}, {0x492, 0x492}, {0x494, 0x494}, - {0x496, 0x496}, {0x498, 0x498}, {0x49a, 0x49a}, {0x49c, 0x49c}, - {0x49e, 0x49e}, {0x4a0, 0x4a0}, {0x4a2, 0x4a2}, {0x4a4, 0x4a4}, - {0x4a6, 0x4a6}, {0x4a8, 0x4a8}, {0x4aa, 0x4aa}, {0x4ac, 0x4ac}, - {0x4ae, 0x4ae}, {0x4b0, 0x4b0}, {0x4b2, 0x4b2}, {0x4b4, 0x4b4}, - {0x4b6, 0x4b6}, {0x4b8, 0x4b8}, {0x4ba, 0x4ba}, {0x4bc, 0x4bc}, - {0x4be, 0x4be}, {0x4c0, 0x4c1}, {0x4c3, 0x4c3}, {0x4c5, 0x4c5}, - {0x4c7, 0x4c7}, {0x4c9, 0x4c9}, {0x4cb, 0x4cb}, {0x4cd, 0x4cd}, - {0x4d0, 0x4d0}, {0x4d2, 0x4d2}, {0x4d4, 0x4d4}, {0x4d6, 0x4d6}, - {0x4d8, 0x4d8}, {0x4da, 0x4da}, {0x4dc, 0x4dc}, {0x4de, 0x4de}, - {0x4e0, 0x4e0}, {0x4e2, 0x4e2}, {0x4e4, 0x4e4}, {0x4e6, 0x4e6}, - {0x4e8, 0x4e8}, {0x4ea, 0x4ea}, {0x4ec, 0x4ec}, {0x4ee, 0x4ee}, - {0x4f0, 0x4f0}, {0x4f2, 0x4f2}, {0x4f4, 0x4f4}, {0x4f8, 0x4f8}, - {0x500, 0x500}, {0x502, 0x502}, {0x504, 0x504}, {0x506, 0x506}, - {0x508, 0x508}, {0x50a, 0x50a}, {0x50c, 0x50c}, {0x50e, 0x50e}, - {0x531, 0x556}, {0x10a0, 0x10c5}, {0x1e00, 0x1e00}, {0x1e02, 0x1e02}, - {0x1e04, 0x1e04}, {0x1e06, 0x1e06}, {0x1e08, 0x1e08}, {0x1e0a, 0x1e0a}, - {0x1e0c, 0x1e0c}, {0x1e0e, 0x1e0e}, {0x1e10, 0x1e10}, {0x1e12, 0x1e12}, - {0x1e14, 0x1e14}, {0x1e16, 0x1e16}, {0x1e18, 0x1e18}, {0x1e1a, 0x1e1a}, - {0x1e1c, 0x1e1c}, {0x1e1e, 0x1e1e}, {0x1e20, 0x1e20}, {0x1e22, 0x1e22}, - {0x1e24, 0x1e24}, {0x1e26, 0x1e26}, {0x1e28, 0x1e28}, {0x1e2a, 0x1e2a}, - {0x1e2c, 0x1e2c}, {0x1e2e, 0x1e2e}, {0x1e30, 0x1e30}, {0x1e32, 0x1e32}, - {0x1e34, 0x1e34}, {0x1e36, 0x1e36}, {0x1e38, 0x1e38}, {0x1e3a, 0x1e3a}, - {0x1e3c, 0x1e3c}, {0x1e3e, 0x1e3e}, {0x1e40, 0x1e40}, {0x1e42, 0x1e42}, - {0x1e44, 0x1e44}, {0x1e46, 0x1e46}, {0x1e48, 0x1e48}, {0x1e4a, 0x1e4a}, - {0x1e4c, 0x1e4c}, {0x1e4e, 0x1e4e}, {0x1e50, 0x1e50}, {0x1e52, 0x1e52}, - {0x1e54, 0x1e54}, {0x1e56, 0x1e56}, {0x1e58, 0x1e58}, {0x1e5a, 0x1e5a}, - {0x1e5c, 0x1e5c}, {0x1e5e, 0x1e5e}, {0x1e60, 0x1e60}, {0x1e62, 0x1e62}, - {0x1e64, 0x1e64}, {0x1e66, 0x1e66}, {0x1e68, 0x1e68}, {0x1e6a, 0x1e6a}, - {0x1e6c, 0x1e6c}, {0x1e6e, 0x1e6e}, {0x1e70, 0x1e70}, {0x1e72, 0x1e72}, - {0x1e74, 0x1e74}, {0x1e76, 0x1e76}, {0x1e78, 0x1e78}, {0x1e7a, 0x1e7a}, - {0x1e7c, 0x1e7c}, {0x1e7e, 0x1e7e}, {0x1e80, 0x1e80}, {0x1e82, 0x1e82}, - {0x1e84, 0x1e84}, {0x1e86, 0x1e86}, {0x1e88, 0x1e88}, {0x1e8a, 0x1e8a}, - {0x1e8c, 0x1e8c}, {0x1e8e, 0x1e8e}, {0x1e90, 0x1e90}, {0x1e92, 0x1e92}, - {0x1e94, 0x1e94}, {0x1ea0, 0x1ea0}, {0x1ea2, 0x1ea2}, {0x1ea4, 0x1ea4}, - {0x1ea6, 0x1ea6}, {0x1ea8, 0x1ea8}, {0x1eaa, 0x1eaa}, {0x1eac, 0x1eac}, - {0x1eae, 0x1eae}, {0x1eb0, 0x1eb0}, {0x1eb2, 0x1eb2}, {0x1eb4, 0x1eb4}, - {0x1eb6, 0x1eb6}, {0x1eb8, 0x1eb8}, {0x1eba, 0x1eba}, {0x1ebc, 0x1ebc}, - {0x1ebe, 0x1ebe}, {0x1ec0, 0x1ec0}, {0x1ec2, 0x1ec2}, {0x1ec4, 0x1ec4}, - {0x1ec6, 0x1ec6}, {0x1ec8, 0x1ec8}, {0x1eca, 0x1eca}, {0x1ecc, 0x1ecc}, - {0x1ece, 0x1ece}, {0x1ed0, 0x1ed0}, {0x1ed2, 0x1ed2}, {0x1ed4, 0x1ed4}, - {0x1ed6, 0x1ed6}, {0x1ed8, 0x1ed8}, {0x1eda, 0x1eda}, {0x1edc, 0x1edc}, - {0x1ede, 0x1ede}, {0x1ee0, 0x1ee0}, {0x1ee2, 0x1ee2}, {0x1ee4, 0x1ee4}, - {0x1ee6, 0x1ee6}, {0x1ee8, 0x1ee8}, {0x1eea, 0x1eea}, {0x1eec, 0x1eec}, - {0x1eee, 0x1eee}, {0x1ef0, 0x1ef0}, {0x1ef2, 0x1ef2}, {0x1ef4, 0x1ef4}, - {0x1ef6, 0x1ef6}, {0x1ef8, 0x1ef8}, {0x1f08, 0x1f0f}, {0x1f18, 0x1f1d}, - {0x1f28, 0x1f2f}, {0x1f38, 0x1f3f}, {0x1f48, 0x1f4d}, {0x1f59, 0x1f59}, - {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f5f}, {0x1f68, 0x1f6f}, - {0x1fb8, 0x1fbb}, {0x1fc8, 0x1fcb}, {0x1fd8, 0x1fdb}, {0x1fe8, 0x1fec}, - {0x1ff8, 0x1ffb}, {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210b, 0x210d}, - {0x2110, 0x2112}, {0x2115, 0x2115}, {0x2119, 0x211d}, {0x2124, 0x2124}, - {0x2126, 0x2126}, {0x2128, 0x2128}, {0x212a, 0x212d}, {0x2130, 0x2131}, +static const xmlChSRange xmlLuS[] = {{0x41, 0x5a}, {0xc0, 0xd6}, + {0xd8, 0xde}, {0x100, 0x100}, {0x102, 0x102}, {0x104, 0x104}, + {0x106, 0x106}, {0x108, 0x108}, {0x10a, 0x10a}, {0x10c, 0x10c}, + {0x10e, 0x10e}, {0x110, 0x110}, {0x112, 0x112}, {0x114, 0x114}, + {0x116, 0x116}, {0x118, 0x118}, {0x11a, 0x11a}, {0x11c, 0x11c}, + {0x11e, 0x11e}, {0x120, 0x120}, {0x122, 0x122}, {0x124, 0x124}, + {0x126, 0x126}, {0x128, 0x128}, {0x12a, 0x12a}, {0x12c, 0x12c}, + {0x12e, 0x12e}, {0x130, 0x130}, {0x132, 0x132}, {0x134, 0x134}, + {0x136, 0x136}, {0x139, 0x139}, {0x13b, 0x13b}, {0x13d, 0x13d}, + {0x13f, 0x13f}, {0x141, 0x141}, {0x143, 0x143}, {0x145, 0x145}, + {0x147, 0x147}, {0x14a, 0x14a}, {0x14c, 0x14c}, {0x14e, 0x14e}, + {0x150, 0x150}, {0x152, 0x152}, {0x154, 0x154}, {0x156, 0x156}, + {0x158, 0x158}, {0x15a, 0x15a}, {0x15c, 0x15c}, {0x15e, 0x15e}, + {0x160, 0x160}, {0x162, 0x162}, {0x164, 0x164}, {0x166, 0x166}, + {0x168, 0x168}, {0x16a, 0x16a}, {0x16c, 0x16c}, {0x16e, 0x16e}, + {0x170, 0x170}, {0x172, 0x172}, {0x174, 0x174}, {0x176, 0x176}, + {0x178, 0x179}, {0x17b, 0x17b}, {0x17d, 0x17d}, {0x181, 0x182}, + {0x184, 0x184}, {0x186, 0x187}, {0x189, 0x18b}, {0x18e, 0x191}, + {0x193, 0x194}, {0x196, 0x198}, {0x19c, 0x19d}, {0x19f, 0x1a0}, + {0x1a2, 0x1a2}, {0x1a4, 0x1a4}, {0x1a6, 0x1a7}, {0x1a9, 0x1a9}, + {0x1ac, 0x1ac}, {0x1ae, 0x1af}, {0x1b1, 0x1b3}, {0x1b5, 0x1b5}, + {0x1b7, 0x1b8}, {0x1bc, 0x1bc}, {0x1c4, 0x1c4}, {0x1c7, 0x1c7}, + {0x1ca, 0x1ca}, {0x1cd, 0x1cd}, {0x1cf, 0x1cf}, {0x1d1, 0x1d1}, + {0x1d3, 0x1d3}, {0x1d5, 0x1d5}, {0x1d7, 0x1d7}, {0x1d9, 0x1d9}, + {0x1db, 0x1db}, {0x1de, 0x1de}, {0x1e0, 0x1e0}, {0x1e2, 0x1e2}, + {0x1e4, 0x1e4}, {0x1e6, 0x1e6}, {0x1e8, 0x1e8}, {0x1ea, 0x1ea}, + {0x1ec, 0x1ec}, {0x1ee, 0x1ee}, {0x1f1, 0x1f1}, {0x1f4, 0x1f4}, + {0x1f6, 0x1f8}, {0x1fa, 0x1fa}, {0x1fc, 0x1fc}, {0x1fe, 0x1fe}, + {0x200, 0x200}, {0x202, 0x202}, {0x204, 0x204}, {0x206, 0x206}, + {0x208, 0x208}, {0x20a, 0x20a}, {0x20c, 0x20c}, {0x20e, 0x20e}, + {0x210, 0x210}, {0x212, 0x212}, {0x214, 0x214}, {0x216, 0x216}, + {0x218, 0x218}, {0x21a, 0x21a}, {0x21c, 0x21c}, {0x21e, 0x21e}, + {0x220, 0x220}, {0x222, 0x222}, {0x224, 0x224}, {0x226, 0x226}, + {0x228, 0x228}, {0x22a, 0x22a}, {0x22c, 0x22c}, {0x22e, 0x22e}, + {0x230, 0x230}, {0x232, 0x232}, {0x386, 0x386}, {0x388, 0x38a}, + {0x38c, 0x38c}, {0x38e, 0x38f}, {0x391, 0x3a1}, {0x3a3, 0x3ab}, + {0x3d2, 0x3d4}, {0x3d8, 0x3d8}, {0x3da, 0x3da}, {0x3dc, 0x3dc}, + {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3e2}, {0x3e4, 0x3e4}, + {0x3e6, 0x3e6}, {0x3e8, 0x3e8}, {0x3ea, 0x3ea}, {0x3ec, 0x3ec}, + {0x3ee, 0x3ee}, {0x3f4, 0x3f4}, {0x3f7, 0x3f7}, {0x3f9, 0x3fa}, + {0x400, 0x42f}, {0x460, 0x460}, {0x462, 0x462}, {0x464, 0x464}, + {0x466, 0x466}, {0x468, 0x468}, {0x46a, 0x46a}, {0x46c, 0x46c}, + {0x46e, 0x46e}, {0x470, 0x470}, {0x472, 0x472}, {0x474, 0x474}, + {0x476, 0x476}, {0x478, 0x478}, {0x47a, 0x47a}, {0x47c, 0x47c}, + {0x47e, 0x47e}, {0x480, 0x480}, {0x48a, 0x48a}, {0x48c, 0x48c}, + {0x48e, 0x48e}, {0x490, 0x490}, {0x492, 0x492}, {0x494, 0x494}, + {0x496, 0x496}, {0x498, 0x498}, {0x49a, 0x49a}, {0x49c, 0x49c}, + {0x49e, 0x49e}, {0x4a0, 0x4a0}, {0x4a2, 0x4a2}, {0x4a4, 0x4a4}, + {0x4a6, 0x4a6}, {0x4a8, 0x4a8}, {0x4aa, 0x4aa}, {0x4ac, 0x4ac}, + {0x4ae, 0x4ae}, {0x4b0, 0x4b0}, {0x4b2, 0x4b2}, {0x4b4, 0x4b4}, + {0x4b6, 0x4b6}, {0x4b8, 0x4b8}, {0x4ba, 0x4ba}, {0x4bc, 0x4bc}, + {0x4be, 0x4be}, {0x4c0, 0x4c1}, {0x4c3, 0x4c3}, {0x4c5, 0x4c5}, + {0x4c7, 0x4c7}, {0x4c9, 0x4c9}, {0x4cb, 0x4cb}, {0x4cd, 0x4cd}, + {0x4d0, 0x4d0}, {0x4d2, 0x4d2}, {0x4d4, 0x4d4}, {0x4d6, 0x4d6}, + {0x4d8, 0x4d8}, {0x4da, 0x4da}, {0x4dc, 0x4dc}, {0x4de, 0x4de}, + {0x4e0, 0x4e0}, {0x4e2, 0x4e2}, {0x4e4, 0x4e4}, {0x4e6, 0x4e6}, + {0x4e8, 0x4e8}, {0x4ea, 0x4ea}, {0x4ec, 0x4ec}, {0x4ee, 0x4ee}, + {0x4f0, 0x4f0}, {0x4f2, 0x4f2}, {0x4f4, 0x4f4}, {0x4f8, 0x4f8}, + {0x500, 0x500}, {0x502, 0x502}, {0x504, 0x504}, {0x506, 0x506}, + {0x508, 0x508}, {0x50a, 0x50a}, {0x50c, 0x50c}, {0x50e, 0x50e}, + {0x531, 0x556}, {0x10a0, 0x10c5}, {0x1e00, 0x1e00}, {0x1e02, 0x1e02}, + {0x1e04, 0x1e04}, {0x1e06, 0x1e06}, {0x1e08, 0x1e08}, {0x1e0a, 0x1e0a}, + {0x1e0c, 0x1e0c}, {0x1e0e, 0x1e0e}, {0x1e10, 0x1e10}, {0x1e12, 0x1e12}, + {0x1e14, 0x1e14}, {0x1e16, 0x1e16}, {0x1e18, 0x1e18}, {0x1e1a, 0x1e1a}, + {0x1e1c, 0x1e1c}, {0x1e1e, 0x1e1e}, {0x1e20, 0x1e20}, {0x1e22, 0x1e22}, + {0x1e24, 0x1e24}, {0x1e26, 0x1e26}, {0x1e28, 0x1e28}, {0x1e2a, 0x1e2a}, + {0x1e2c, 0x1e2c}, {0x1e2e, 0x1e2e}, {0x1e30, 0x1e30}, {0x1e32, 0x1e32}, + {0x1e34, 0x1e34}, {0x1e36, 0x1e36}, {0x1e38, 0x1e38}, {0x1e3a, 0x1e3a}, + {0x1e3c, 0x1e3c}, {0x1e3e, 0x1e3e}, {0x1e40, 0x1e40}, {0x1e42, 0x1e42}, + {0x1e44, 0x1e44}, {0x1e46, 0x1e46}, {0x1e48, 0x1e48}, {0x1e4a, 0x1e4a}, + {0x1e4c, 0x1e4c}, {0x1e4e, 0x1e4e}, {0x1e50, 0x1e50}, {0x1e52, 0x1e52}, + {0x1e54, 0x1e54}, {0x1e56, 0x1e56}, {0x1e58, 0x1e58}, {0x1e5a, 0x1e5a}, + {0x1e5c, 0x1e5c}, {0x1e5e, 0x1e5e}, {0x1e60, 0x1e60}, {0x1e62, 0x1e62}, + {0x1e64, 0x1e64}, {0x1e66, 0x1e66}, {0x1e68, 0x1e68}, {0x1e6a, 0x1e6a}, + {0x1e6c, 0x1e6c}, {0x1e6e, 0x1e6e}, {0x1e70, 0x1e70}, {0x1e72, 0x1e72}, + {0x1e74, 0x1e74}, {0x1e76, 0x1e76}, {0x1e78, 0x1e78}, {0x1e7a, 0x1e7a}, + {0x1e7c, 0x1e7c}, {0x1e7e, 0x1e7e}, {0x1e80, 0x1e80}, {0x1e82, 0x1e82}, + {0x1e84, 0x1e84}, {0x1e86, 0x1e86}, {0x1e88, 0x1e88}, {0x1e8a, 0x1e8a}, + {0x1e8c, 0x1e8c}, {0x1e8e, 0x1e8e}, {0x1e90, 0x1e90}, {0x1e92, 0x1e92}, + {0x1e94, 0x1e94}, {0x1ea0, 0x1ea0}, {0x1ea2, 0x1ea2}, {0x1ea4, 0x1ea4}, + {0x1ea6, 0x1ea6}, {0x1ea8, 0x1ea8}, {0x1eaa, 0x1eaa}, {0x1eac, 0x1eac}, + {0x1eae, 0x1eae}, {0x1eb0, 0x1eb0}, {0x1eb2, 0x1eb2}, {0x1eb4, 0x1eb4}, + {0x1eb6, 0x1eb6}, {0x1eb8, 0x1eb8}, {0x1eba, 0x1eba}, {0x1ebc, 0x1ebc}, + {0x1ebe, 0x1ebe}, {0x1ec0, 0x1ec0}, {0x1ec2, 0x1ec2}, {0x1ec4, 0x1ec4}, + {0x1ec6, 0x1ec6}, {0x1ec8, 0x1ec8}, {0x1eca, 0x1eca}, {0x1ecc, 0x1ecc}, + {0x1ece, 0x1ece}, {0x1ed0, 0x1ed0}, {0x1ed2, 0x1ed2}, {0x1ed4, 0x1ed4}, + {0x1ed6, 0x1ed6}, {0x1ed8, 0x1ed8}, {0x1eda, 0x1eda}, {0x1edc, 0x1edc}, + {0x1ede, 0x1ede}, {0x1ee0, 0x1ee0}, {0x1ee2, 0x1ee2}, {0x1ee4, 0x1ee4}, + {0x1ee6, 0x1ee6}, {0x1ee8, 0x1ee8}, {0x1eea, 0x1eea}, {0x1eec, 0x1eec}, + {0x1eee, 0x1eee}, {0x1ef0, 0x1ef0}, {0x1ef2, 0x1ef2}, {0x1ef4, 0x1ef4}, + {0x1ef6, 0x1ef6}, {0x1ef8, 0x1ef8}, {0x1f08, 0x1f0f}, {0x1f18, 0x1f1d}, + {0x1f28, 0x1f2f}, {0x1f38, 0x1f3f}, {0x1f48, 0x1f4d}, {0x1f59, 0x1f59}, + {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f5f}, {0x1f68, 0x1f6f}, + {0x1fb8, 0x1fbb}, {0x1fc8, 0x1fcb}, {0x1fd8, 0x1fdb}, {0x1fe8, 0x1fec}, + {0x1ff8, 0x1ffb}, {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210b, 0x210d}, + {0x2110, 0x2112}, {0x2115, 0x2115}, {0x2119, 0x211d}, {0x2124, 0x2124}, + {0x2126, 0x2126}, {0x2128, 0x2128}, {0x212a, 0x212d}, {0x2130, 0x2131}, {0x2133, 0x2133}, {0x213e, 0x213f}, {0x2145, 0x2145}, {0xff21, 0xff3a} }; -static const xmlChLRange xmlLuL[] = {{0x10400, 0x10427}, {0x1d400, 0x1d419}, - {0x1d434, 0x1d44d}, {0x1d468, 0x1d481}, {0x1d49c, 0x1d49c}, - {0x1d49e, 0x1d49f}, {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, - {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b5}, {0x1d4d0, 0x1d4e9}, - {0x1d504, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, - {0x1d516, 0x1d51c}, {0x1d538, 0x1d539}, {0x1d53b, 0x1d53e}, - {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550}, - {0x1d56c, 0x1d585}, {0x1d5a0, 0x1d5b9}, {0x1d5d4, 0x1d5ed}, - {0x1d608, 0x1d621}, {0x1d63c, 0x1d655}, {0x1d670, 0x1d689}, - {0x1d6a8, 0x1d6c0}, {0x1d6e2, 0x1d6fa}, {0x1d71c, 0x1d734}, +static const xmlChLRange xmlLuL[] = {{0x10400, 0x10427}, {0x1d400, 0x1d419}, + {0x1d434, 0x1d44d}, {0x1d468, 0x1d481}, {0x1d49c, 0x1d49c}, + {0x1d49e, 0x1d49f}, {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, + {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b5}, {0x1d4d0, 0x1d4e9}, + {0x1d504, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, + {0x1d516, 0x1d51c}, {0x1d538, 0x1d539}, {0x1d53b, 0x1d53e}, + {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550}, + {0x1d56c, 0x1d585}, {0x1d5a0, 0x1d5b9}, {0x1d5d4, 0x1d5ed}, + {0x1d608, 0x1d621}, {0x1d63c, 0x1d655}, {0x1d670, 0x1d689}, + {0x1d6a8, 0x1d6c0}, {0x1d6e2, 0x1d6fa}, {0x1d71c, 0x1d734}, {0x1d756, 0x1d76e}, {0x1d790, 0x1d7a8} }; static xmlChRangeGroup xmlLuG = {390,31,xmlLuS,xmlLuL}; -static const xmlChSRange xmlMS[] = {{0x300, 0x357}, {0x35d, 0x36f}, - {0x483, 0x486}, {0x488, 0x489}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, - {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, - {0x610, 0x615}, {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc}, - {0x6de, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711}, - {0x730, 0x74a}, {0x7a6, 0x7b0}, {0x901, 0x903}, {0x93c, 0x93c}, - {0x93e, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x983}, - {0x9bc, 0x9bc}, {0x9be, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd}, - {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa01, 0xa03}, {0xa3c, 0xa3c}, - {0xa3e, 0xa42}, {0xa47, 0xa48}, {0xa4b, 0xa4d}, {0xa70, 0xa71}, - {0xa81, 0xa83}, {0xabc, 0xabc}, {0xabe, 0xac5}, {0xac7, 0xac9}, - {0xacb, 0xacd}, {0xae2, 0xae3}, {0xb01, 0xb03}, {0xb3c, 0xb3c}, - {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d}, {0xb56, 0xb57}, - {0xb82, 0xb82}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, {0xbca, 0xbcd}, - {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44}, {0xc46, 0xc48}, - {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83}, {0xcbc, 0xcbc}, - {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6}, - {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d}, - {0xd57, 0xd57}, {0xd82, 0xd83}, {0xdca, 0xdca}, {0xdcf, 0xdd4}, - {0xdd6, 0xdd6}, {0xdd8, 0xddf}, {0xdf2, 0xdf3}, {0xe31, 0xe31}, - {0xe34, 0xe3a}, {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, - {0xebb, 0xebc}, {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35}, - {0xf37, 0xf37}, {0xf39, 0xf39}, {0xf3e, 0xf3f}, {0xf71, 0xf84}, - {0xf86, 0xf87}, {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6}, - {0x102c, 0x1032}, {0x1036, 0x1039}, {0x1056, 0x1059}, {0x1712, 0x1714}, - {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773}, {0x17b6, 0x17d3}, - {0x17dd, 0x17dd}, {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x192b}, - {0x1930, 0x193b}, {0x20d0, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a}, +static const xmlChSRange xmlMS[] = {{0x300, 0x357}, {0x35d, 0x36f}, + {0x483, 0x486}, {0x488, 0x489}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, + {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, + {0x610, 0x615}, {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc}, + {0x6de, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711}, + {0x730, 0x74a}, {0x7a6, 0x7b0}, {0x901, 0x903}, {0x93c, 0x93c}, + {0x93e, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x983}, + {0x9bc, 0x9bc}, {0x9be, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd}, + {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa01, 0xa03}, {0xa3c, 0xa3c}, + {0xa3e, 0xa42}, {0xa47, 0xa48}, {0xa4b, 0xa4d}, {0xa70, 0xa71}, + {0xa81, 0xa83}, {0xabc, 0xabc}, {0xabe, 0xac5}, {0xac7, 0xac9}, + {0xacb, 0xacd}, {0xae2, 0xae3}, {0xb01, 0xb03}, {0xb3c, 0xb3c}, + {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d}, {0xb56, 0xb57}, + {0xb82, 0xb82}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, {0xbca, 0xbcd}, + {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44}, {0xc46, 0xc48}, + {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83}, {0xcbc, 0xcbc}, + {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6}, + {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d}, + {0xd57, 0xd57}, {0xd82, 0xd83}, {0xdca, 0xdca}, {0xdcf, 0xdd4}, + {0xdd6, 0xdd6}, {0xdd8, 0xddf}, {0xdf2, 0xdf3}, {0xe31, 0xe31}, + {0xe34, 0xe3a}, {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, + {0xebb, 0xebc}, {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35}, + {0xf37, 0xf37}, {0xf39, 0xf39}, {0xf3e, 0xf3f}, {0xf71, 0xf84}, + {0xf86, 0xf87}, {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6}, + {0x102c, 0x1032}, {0x1036, 0x1039}, {0x1056, 0x1059}, {0x1712, 0x1714}, + {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773}, {0x17b6, 0x17d3}, + {0x17dd, 0x17dd}, {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x192b}, + {0x1930, 0x193b}, {0x20d0, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a}, {0xfb1e, 0xfb1e}, {0xfe00, 0xfe0f}, {0xfe20, 0xfe23} }; -static const xmlChLRange xmlML[] = {{0x1d165, 0x1d169}, {0x1d16d, 0x1d172}, - {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, +static const xmlChLRange xmlML[] = {{0x1d165, 0x1d169}, {0x1d16d, 0x1d172}, + {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, {0xe0100, 0xe01ef} }; static xmlChRangeGroup xmlMG = {113,6,xmlMS,xmlML}; -static const xmlChSRange xmlMcS[] = {{0x903, 0x903}, {0x93e, 0x940}, - {0x949, 0x94c}, {0x982, 0x983}, {0x9be, 0x9c0}, {0x9c7, 0x9c8}, - {0x9cb, 0x9cc}, {0x9d7, 0x9d7}, {0xa03, 0xa03}, {0xa3e, 0xa40}, - {0xa83, 0xa83}, {0xabe, 0xac0}, {0xac9, 0xac9}, {0xacb, 0xacc}, - {0xb02, 0xb03}, {0xb3e, 0xb3e}, {0xb40, 0xb40}, {0xb47, 0xb48}, - {0xb4b, 0xb4c}, {0xb57, 0xb57}, {0xbbe, 0xbbf}, {0xbc1, 0xbc2}, - {0xbc6, 0xbc8}, {0xbca, 0xbcc}, {0xbd7, 0xbd7}, {0xc01, 0xc03}, - {0xc41, 0xc44}, {0xc82, 0xc83}, {0xcbe, 0xcbe}, {0xcc0, 0xcc4}, - {0xcc7, 0xcc8}, {0xcca, 0xccb}, {0xcd5, 0xcd6}, {0xd02, 0xd03}, - {0xd3e, 0xd40}, {0xd46, 0xd48}, {0xd4a, 0xd4c}, {0xd57, 0xd57}, - {0xd82, 0xd83}, {0xdcf, 0xdd1}, {0xdd8, 0xddf}, {0xdf2, 0xdf3}, - {0xf3e, 0xf3f}, {0xf7f, 0xf7f}, {0x102c, 0x102c}, {0x1031, 0x1031}, - {0x1038, 0x1038}, {0x1056, 0x1057}, {0x17b6, 0x17b6}, {0x17be, 0x17c5}, - {0x17c7, 0x17c8}, {0x1923, 0x1926}, {0x1929, 0x192b}, {0x1930, 0x1931}, +static const xmlChSRange xmlMcS[] = {{0x903, 0x903}, {0x93e, 0x940}, + {0x949, 0x94c}, {0x982, 0x983}, {0x9be, 0x9c0}, {0x9c7, 0x9c8}, + {0x9cb, 0x9cc}, {0x9d7, 0x9d7}, {0xa03, 0xa03}, {0xa3e, 0xa40}, + {0xa83, 0xa83}, {0xabe, 0xac0}, {0xac9, 0xac9}, {0xacb, 0xacc}, + {0xb02, 0xb03}, {0xb3e, 0xb3e}, {0xb40, 0xb40}, {0xb47, 0xb48}, + {0xb4b, 0xb4c}, {0xb57, 0xb57}, {0xbbe, 0xbbf}, {0xbc1, 0xbc2}, + {0xbc6, 0xbc8}, {0xbca, 0xbcc}, {0xbd7, 0xbd7}, {0xc01, 0xc03}, + {0xc41, 0xc44}, {0xc82, 0xc83}, {0xcbe, 0xcbe}, {0xcc0, 0xcc4}, + {0xcc7, 0xcc8}, {0xcca, 0xccb}, {0xcd5, 0xcd6}, {0xd02, 0xd03}, + {0xd3e, 0xd40}, {0xd46, 0xd48}, {0xd4a, 0xd4c}, {0xd57, 0xd57}, + {0xd82, 0xd83}, {0xdcf, 0xdd1}, {0xdd8, 0xddf}, {0xdf2, 0xdf3}, + {0xf3e, 0xf3f}, {0xf7f, 0xf7f}, {0x102c, 0x102c}, {0x1031, 0x1031}, + {0x1038, 0x1038}, {0x1056, 0x1057}, {0x17b6, 0x17b6}, {0x17be, 0x17c5}, + {0x17c7, 0x17c8}, {0x1923, 0x1926}, {0x1929, 0x192b}, {0x1930, 0x1931}, {0x1933, 0x1938} }; static const xmlChLRange xmlMcL[] = {{0x1d165, 0x1d166}, {0x1d16d, 0x1d172} }; static xmlChRangeGroup xmlMcG = {55,2,xmlMcS,xmlMcL}; -static const xmlChSRange xmlMnS[] = {{0x300, 0x357}, {0x35d, 0x36f}, - {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, {0x5bb, 0x5bd}, - {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, {0x610, 0x615}, - {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6df, 0x6e4}, - {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711}, {0x730, 0x74a}, - {0x7a6, 0x7b0}, {0x901, 0x902}, {0x93c, 0x93c}, {0x941, 0x948}, - {0x94d, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x981}, - {0x9bc, 0x9bc}, {0x9c1, 0x9c4}, {0x9cd, 0x9cd}, {0x9e2, 0x9e3}, - {0xa01, 0xa02}, {0xa3c, 0xa3c}, {0xa41, 0xa42}, {0xa47, 0xa48}, - {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa82}, {0xabc, 0xabc}, - {0xac1, 0xac5}, {0xac7, 0xac8}, {0xacd, 0xacd}, {0xae2, 0xae3}, - {0xb01, 0xb01}, {0xb3c, 0xb3c}, {0xb3f, 0xb3f}, {0xb41, 0xb43}, - {0xb4d, 0xb4d}, {0xb56, 0xb56}, {0xb82, 0xb82}, {0xbc0, 0xbc0}, - {0xbcd, 0xbcd}, {0xc3e, 0xc40}, {0xc46, 0xc48}, {0xc4a, 0xc4d}, - {0xc55, 0xc56}, {0xcbc, 0xcbc}, {0xcbf, 0xcbf}, {0xcc6, 0xcc6}, - {0xccc, 0xccd}, {0xd41, 0xd43}, {0xd4d, 0xd4d}, {0xdca, 0xdca}, - {0xdd2, 0xdd4}, {0xdd6, 0xdd6}, {0xe31, 0xe31}, {0xe34, 0xe3a}, - {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc}, - {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37}, - {0xf39, 0xf39}, {0xf71, 0xf7e}, {0xf80, 0xf84}, {0xf86, 0xf87}, - {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6}, {0x102d, 0x1030}, - {0x1032, 0x1032}, {0x1036, 0x1037}, {0x1039, 0x1039}, {0x1058, 0x1059}, - {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773}, - {0x17b7, 0x17bd}, {0x17c6, 0x17c6}, {0x17c9, 0x17d3}, {0x17dd, 0x17dd}, - {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x1922}, {0x1927, 0x1928}, - {0x1932, 0x1932}, {0x1939, 0x193b}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, - {0x20e5, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a}, {0xfb1e, 0xfb1e}, +static const xmlChSRange xmlMnS[] = {{0x300, 0x357}, {0x35d, 0x36f}, + {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, {0x5bb, 0x5bd}, + {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, {0x610, 0x615}, + {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6df, 0x6e4}, + {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711}, {0x730, 0x74a}, + {0x7a6, 0x7b0}, {0x901, 0x902}, {0x93c, 0x93c}, {0x941, 0x948}, + {0x94d, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x981}, + {0x9bc, 0x9bc}, {0x9c1, 0x9c4}, {0x9cd, 0x9cd}, {0x9e2, 0x9e3}, + {0xa01, 0xa02}, {0xa3c, 0xa3c}, {0xa41, 0xa42}, {0xa47, 0xa48}, + {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa82}, {0xabc, 0xabc}, + {0xac1, 0xac5}, {0xac7, 0xac8}, {0xacd, 0xacd}, {0xae2, 0xae3}, + {0xb01, 0xb01}, {0xb3c, 0xb3c}, {0xb3f, 0xb3f}, {0xb41, 0xb43}, + {0xb4d, 0xb4d}, {0xb56, 0xb56}, {0xb82, 0xb82}, {0xbc0, 0xbc0}, + {0xbcd, 0xbcd}, {0xc3e, 0xc40}, {0xc46, 0xc48}, {0xc4a, 0xc4d}, + {0xc55, 0xc56}, {0xcbc, 0xcbc}, {0xcbf, 0xcbf}, {0xcc6, 0xcc6}, + {0xccc, 0xccd}, {0xd41, 0xd43}, {0xd4d, 0xd4d}, {0xdca, 0xdca}, + {0xdd2, 0xdd4}, {0xdd6, 0xdd6}, {0xe31, 0xe31}, {0xe34, 0xe3a}, + {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc}, + {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37}, + {0xf39, 0xf39}, {0xf71, 0xf7e}, {0xf80, 0xf84}, {0xf86, 0xf87}, + {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6}, {0x102d, 0x1030}, + {0x1032, 0x1032}, {0x1036, 0x1037}, {0x1039, 0x1039}, {0x1058, 0x1059}, + {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773}, + {0x17b7, 0x17bd}, {0x17c6, 0x17c6}, {0x17c9, 0x17d3}, {0x17dd, 0x17dd}, + {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x1922}, {0x1927, 0x1928}, + {0x1932, 0x1932}, {0x1939, 0x193b}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, + {0x20e5, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a}, {0xfb1e, 0xfb1e}, {0xfe00, 0xfe0f}, {0xfe20, 0xfe23} }; -static const xmlChLRange xmlMnL[] = {{0x1d167, 0x1d169}, {0x1d17b, 0x1d182}, +static const xmlChLRange xmlMnL[] = {{0x1d167, 0x1d169}, {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, {0xe0100, 0xe01ef} }; static xmlChRangeGroup xmlMnG = {108,5,xmlMnS,xmlMnL}; -static const xmlChSRange xmlNS[] = {{0x30, 0x39}, {0xb2, 0xb3}, - {0xb9, 0xb9}, {0xbc, 0xbe}, {0x660, 0x669}, {0x6f0, 0x6f9}, - {0x966, 0x96f}, {0x9e6, 0x9ef}, {0x9f4, 0x9f9}, {0xa66, 0xa6f}, - {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbf2}, {0xc66, 0xc6f}, - {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9}, - {0xf20, 0xf33}, {0x1040, 0x1049}, {0x1369, 0x137c}, {0x16ee, 0x16f0}, - {0x17e0, 0x17e9}, {0x17f0, 0x17f9}, {0x1810, 0x1819}, {0x1946, 0x194f}, - {0x2070, 0x2070}, {0x2074, 0x2079}, {0x2080, 0x2089}, {0x2153, 0x2183}, - {0x2460, 0x249b}, {0x24ea, 0x24ff}, {0x2776, 0x2793}, {0x3007, 0x3007}, - {0x3021, 0x3029}, {0x3038, 0x303a}, {0x3192, 0x3195}, {0x3220, 0x3229}, +static const xmlChSRange xmlNS[] = {{0x30, 0x39}, {0xb2, 0xb3}, + {0xb9, 0xb9}, {0xbc, 0xbe}, {0x660, 0x669}, {0x6f0, 0x6f9}, + {0x966, 0x96f}, {0x9e6, 0x9ef}, {0x9f4, 0x9f9}, {0xa66, 0xa6f}, + {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbf2}, {0xc66, 0xc6f}, + {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9}, + {0xf20, 0xf33}, {0x1040, 0x1049}, {0x1369, 0x137c}, {0x16ee, 0x16f0}, + {0x17e0, 0x17e9}, {0x17f0, 0x17f9}, {0x1810, 0x1819}, {0x1946, 0x194f}, + {0x2070, 0x2070}, {0x2074, 0x2079}, {0x2080, 0x2089}, {0x2153, 0x2183}, + {0x2460, 0x249b}, {0x24ea, 0x24ff}, {0x2776, 0x2793}, {0x3007, 0x3007}, + {0x3021, 0x3029}, {0x3038, 0x303a}, {0x3192, 0x3195}, {0x3220, 0x3229}, {0x3251, 0x325f}, {0x3280, 0x3289}, {0x32b1, 0x32bf}, {0xff10, 0xff19} }; -static const xmlChLRange xmlNL[] = {{0x10107, 0x10133}, {0x10320, 0x10323}, +static const xmlChLRange xmlNL[] = {{0x10107, 0x10133}, {0x10320, 0x10323}, {0x1034a, 0x1034a}, {0x104a0, 0x104a9}, {0x1d7ce, 0x1d7ff} }; static xmlChRangeGroup xmlNG = {42,5,xmlNS,xmlNL}; -static const xmlChSRange xmlNdS[] = {{0x30, 0x39}, {0x660, 0x669}, - {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f}, - {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f}, - {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9}, - {0xf20, 0xf29}, {0x1040, 0x1049}, {0x1369, 0x1371}, {0x17e0, 0x17e9}, +static const xmlChSRange xmlNdS[] = {{0x30, 0x39}, {0x660, 0x669}, + {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f}, + {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f}, + {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9}, + {0xf20, 0xf29}, {0x1040, 0x1049}, {0x1369, 0x1371}, {0x17e0, 0x17e9}, {0x1810, 0x1819}, {0x1946, 0x194f}, {0xff10, 0xff19} }; static const xmlChLRange xmlNdL[] = {{0x104a0, 0x104a9}, {0x1d7ce, 0x1d7ff} }; static xmlChRangeGroup xmlNdG = {21,2,xmlNdS,xmlNdL}; -static const xmlChSRange xmlNoS[] = {{0xb2, 0xb3}, {0xb9, 0xb9}, - {0xbc, 0xbe}, {0x9f4, 0x9f9}, {0xbf0, 0xbf2}, {0xf2a, 0xf33}, - {0x1372, 0x137c}, {0x17f0, 0x17f9}, {0x2070, 0x2070}, {0x2074, 0x2079}, - {0x2080, 0x2089}, {0x2153, 0x215f}, {0x2460, 0x249b}, {0x24ea, 0x24ff}, - {0x2776, 0x2793}, {0x3192, 0x3195}, {0x3220, 0x3229}, {0x3251, 0x325f}, +static const xmlChSRange xmlNoS[] = {{0xb2, 0xb3}, {0xb9, 0xb9}, + {0xbc, 0xbe}, {0x9f4, 0x9f9}, {0xbf0, 0xbf2}, {0xf2a, 0xf33}, + {0x1372, 0x137c}, {0x17f0, 0x17f9}, {0x2070, 0x2070}, {0x2074, 0x2079}, + {0x2080, 0x2089}, {0x2153, 0x215f}, {0x2460, 0x249b}, {0x24ea, 0x24ff}, + {0x2776, 0x2793}, {0x3192, 0x3195}, {0x3220, 0x3229}, {0x3251, 0x325f}, {0x3280, 0x3289}, {0x32b1, 0x32bf} }; static const xmlChLRange xmlNoL[] = {{0x10107, 0x10133}, {0x10320, 0x10323} }; static xmlChRangeGroup xmlNoG = {20,2,xmlNoS,xmlNoL}; -static const xmlChSRange xmlPS[] = {{0x21, 0x23}, {0x25, 0x2a}, - {0x2c, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40}, {0x5b, 0x5d}, {0x5f, 0x5f}, - {0x7b, 0x7b}, {0x7d, 0x7d}, {0xa1, 0xa1}, {0xab, 0xab}, {0xb7, 0xb7}, - {0xbb, 0xbb}, {0xbf, 0xbf}, {0x37e, 0x37e}, {0x387, 0x387}, - {0x55a, 0x55f}, {0x589, 0x58a}, {0x5be, 0x5be}, {0x5c0, 0x5c0}, - {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d}, {0x61b, 0x61b}, - {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4}, {0x700, 0x70d}, - {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4}, {0xe4f, 0xe4f}, - {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf3a, 0xf3d}, {0xf85, 0xf85}, - {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e}, - {0x169b, 0x169c}, {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6}, - {0x17d8, 0x17da}, {0x1800, 0x180a}, {0x1944, 0x1945}, {0x2010, 0x2027}, - {0x2030, 0x2043}, {0x2045, 0x2051}, {0x2053, 0x2054}, {0x2057, 0x2057}, - {0x207d, 0x207e}, {0x208d, 0x208e}, {0x2329, 0x232a}, {0x23b4, 0x23b6}, - {0x2768, 0x2775}, {0x27e6, 0x27eb}, {0x2983, 0x2998}, {0x29d8, 0x29db}, - {0x29fc, 0x29fd}, {0x3001, 0x3003}, {0x3008, 0x3011}, {0x3014, 0x301f}, - {0x3030, 0x3030}, {0x303d, 0x303d}, {0x30a0, 0x30a0}, {0x30fb, 0x30fb}, - {0xfd3e, 0xfd3f}, {0xfe30, 0xfe52}, {0xfe54, 0xfe61}, {0xfe63, 0xfe63}, - {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff0a}, - {0xff0c, 0xff0f}, {0xff1a, 0xff1b}, {0xff1f, 0xff20}, {0xff3b, 0xff3d}, +static const xmlChSRange xmlPS[] = {{0x21, 0x23}, {0x25, 0x2a}, + {0x2c, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40}, {0x5b, 0x5d}, {0x5f, 0x5f}, + {0x7b, 0x7b}, {0x7d, 0x7d}, {0xa1, 0xa1}, {0xab, 0xab}, {0xb7, 0xb7}, + {0xbb, 0xbb}, {0xbf, 0xbf}, {0x37e, 0x37e}, {0x387, 0x387}, + {0x55a, 0x55f}, {0x589, 0x58a}, {0x5be, 0x5be}, {0x5c0, 0x5c0}, + {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d}, {0x61b, 0x61b}, + {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4}, {0x700, 0x70d}, + {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4}, {0xe4f, 0xe4f}, + {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf3a, 0xf3d}, {0xf85, 0xf85}, + {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e}, + {0x169b, 0x169c}, {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6}, + {0x17d8, 0x17da}, {0x1800, 0x180a}, {0x1944, 0x1945}, {0x2010, 0x2027}, + {0x2030, 0x2043}, {0x2045, 0x2051}, {0x2053, 0x2054}, {0x2057, 0x2057}, + {0x207d, 0x207e}, {0x208d, 0x208e}, {0x2329, 0x232a}, {0x23b4, 0x23b6}, + {0x2768, 0x2775}, {0x27e6, 0x27eb}, {0x2983, 0x2998}, {0x29d8, 0x29db}, + {0x29fc, 0x29fd}, {0x3001, 0x3003}, {0x3008, 0x3011}, {0x3014, 0x301f}, + {0x3030, 0x3030}, {0x303d, 0x303d}, {0x30a0, 0x30a0}, {0x30fb, 0x30fb}, + {0xfd3e, 0xfd3f}, {0xfe30, 0xfe52}, {0xfe54, 0xfe61}, {0xfe63, 0xfe63}, + {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff0a}, + {0xff0c, 0xff0f}, {0xff1a, 0xff1b}, {0xff1f, 0xff20}, {0xff3b, 0xff3d}, {0xff3f, 0xff3f}, {0xff5b, 0xff5b}, {0xff5d, 0xff5d}, {0xff5f, 0xff65} }; static const xmlChLRange xmlPL[] = {{0x10100, 0x10101}, {0x1039f, 0x1039f} }; static xmlChRangeGroup xmlPG = {84,2,xmlPS,xmlPL}; -static const xmlChSRange xmlPdS[] = {{0x2d, 0x2d}, {0x58a, 0x58a}, - {0x1806, 0x1806}, {0x2010, 0x2015}, {0x301c, 0x301c}, {0x3030, 0x3030}, - {0x30a0, 0x30a0}, {0xfe31, 0xfe32}, {0xfe58, 0xfe58}, {0xfe63, 0xfe63}, +static const xmlChSRange xmlPdS[] = {{0x2d, 0x2d}, {0x58a, 0x58a}, + {0x1806, 0x1806}, {0x2010, 0x2015}, {0x301c, 0x301c}, {0x3030, 0x3030}, + {0x30a0, 0x30a0}, {0xfe31, 0xfe32}, {0xfe58, 0xfe58}, {0xfe63, 0xfe63}, {0xff0d, 0xff0d} }; static xmlChRangeGroup xmlPdG = {11,0,xmlPdS,NULL}; -static const xmlChSRange xmlPeS[] = {{0x29, 0x29}, {0x5d, 0x5d}, - {0x7d, 0x7d}, {0xf3b, 0xf3b}, {0xf3d, 0xf3d}, {0x169c, 0x169c}, - {0x2046, 0x2046}, {0x207e, 0x207e}, {0x208e, 0x208e}, {0x232a, 0x232a}, - {0x23b5, 0x23b5}, {0x2769, 0x2769}, {0x276b, 0x276b}, {0x276d, 0x276d}, - {0x276f, 0x276f}, {0x2771, 0x2771}, {0x2773, 0x2773}, {0x2775, 0x2775}, - {0x27e7, 0x27e7}, {0x27e9, 0x27e9}, {0x27eb, 0x27eb}, {0x2984, 0x2984}, - {0x2986, 0x2986}, {0x2988, 0x2988}, {0x298a, 0x298a}, {0x298c, 0x298c}, - {0x298e, 0x298e}, {0x2990, 0x2990}, {0x2992, 0x2992}, {0x2994, 0x2994}, - {0x2996, 0x2996}, {0x2998, 0x2998}, {0x29d9, 0x29d9}, {0x29db, 0x29db}, - {0x29fd, 0x29fd}, {0x3009, 0x3009}, {0x300b, 0x300b}, {0x300d, 0x300d}, - {0x300f, 0x300f}, {0x3011, 0x3011}, {0x3015, 0x3015}, {0x3017, 0x3017}, - {0x3019, 0x3019}, {0x301b, 0x301b}, {0x301e, 0x301f}, {0xfd3f, 0xfd3f}, - {0xfe36, 0xfe36}, {0xfe38, 0xfe38}, {0xfe3a, 0xfe3a}, {0xfe3c, 0xfe3c}, - {0xfe3e, 0xfe3e}, {0xfe40, 0xfe40}, {0xfe42, 0xfe42}, {0xfe44, 0xfe44}, - {0xfe48, 0xfe48}, {0xfe5a, 0xfe5a}, {0xfe5c, 0xfe5c}, {0xfe5e, 0xfe5e}, - {0xff09, 0xff09}, {0xff3d, 0xff3d}, {0xff5d, 0xff5d}, {0xff60, 0xff60}, +static const xmlChSRange xmlPeS[] = {{0x29, 0x29}, {0x5d, 0x5d}, + {0x7d, 0x7d}, {0xf3b, 0xf3b}, {0xf3d, 0xf3d}, {0x169c, 0x169c}, + {0x2046, 0x2046}, {0x207e, 0x207e}, {0x208e, 0x208e}, {0x232a, 0x232a}, + {0x23b5, 0x23b5}, {0x2769, 0x2769}, {0x276b, 0x276b}, {0x276d, 0x276d}, + {0x276f, 0x276f}, {0x2771, 0x2771}, {0x2773, 0x2773}, {0x2775, 0x2775}, + {0x27e7, 0x27e7}, {0x27e9, 0x27e9}, {0x27eb, 0x27eb}, {0x2984, 0x2984}, + {0x2986, 0x2986}, {0x2988, 0x2988}, {0x298a, 0x298a}, {0x298c, 0x298c}, + {0x298e, 0x298e}, {0x2990, 0x2990}, {0x2992, 0x2992}, {0x2994, 0x2994}, + {0x2996, 0x2996}, {0x2998, 0x2998}, {0x29d9, 0x29d9}, {0x29db, 0x29db}, + {0x29fd, 0x29fd}, {0x3009, 0x3009}, {0x300b, 0x300b}, {0x300d, 0x300d}, + {0x300f, 0x300f}, {0x3011, 0x3011}, {0x3015, 0x3015}, {0x3017, 0x3017}, + {0x3019, 0x3019}, {0x301b, 0x301b}, {0x301e, 0x301f}, {0xfd3f, 0xfd3f}, + {0xfe36, 0xfe36}, {0xfe38, 0xfe38}, {0xfe3a, 0xfe3a}, {0xfe3c, 0xfe3c}, + {0xfe3e, 0xfe3e}, {0xfe40, 0xfe40}, {0xfe42, 0xfe42}, {0xfe44, 0xfe44}, + {0xfe48, 0xfe48}, {0xfe5a, 0xfe5a}, {0xfe5c, 0xfe5c}, {0xfe5e, 0xfe5e}, + {0xff09, 0xff09}, {0xff3d, 0xff3d}, {0xff5d, 0xff5d}, {0xff60, 0xff60}, {0xff63, 0xff63} }; static xmlChRangeGroup xmlPeG = {63,0,xmlPeS,NULL}; -static const xmlChSRange xmlPoS[] = {{0x21, 0x23}, {0x25, 0x27}, - {0x2a, 0x2a}, {0x2c, 0x2c}, {0x2e, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40}, - {0x5c, 0x5c}, {0xa1, 0xa1}, {0xb7, 0xb7}, {0xbf, 0xbf}, {0x37e, 0x37e}, - {0x387, 0x387}, {0x55a, 0x55f}, {0x589, 0x589}, {0x5be, 0x5be}, - {0x5c0, 0x5c0}, {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d}, - {0x61b, 0x61b}, {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4}, - {0x700, 0x70d}, {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4}, - {0xe4f, 0xe4f}, {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf85, 0xf85}, - {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e}, - {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6}, {0x17d8, 0x17da}, - {0x1800, 0x1805}, {0x1807, 0x180a}, {0x1944, 0x1945}, {0x2016, 0x2017}, - {0x2020, 0x2027}, {0x2030, 0x2038}, {0x203b, 0x203e}, {0x2041, 0x2043}, - {0x2047, 0x2051}, {0x2053, 0x2053}, {0x2057, 0x2057}, {0x23b6, 0x23b6}, - {0x3001, 0x3003}, {0x303d, 0x303d}, {0xfe30, 0xfe30}, {0xfe45, 0xfe46}, - {0xfe49, 0xfe4c}, {0xfe50, 0xfe52}, {0xfe54, 0xfe57}, {0xfe5f, 0xfe61}, - {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff07}, - {0xff0a, 0xff0a}, {0xff0c, 0xff0c}, {0xff0e, 0xff0f}, {0xff1a, 0xff1b}, +static const xmlChSRange xmlPoS[] = {{0x21, 0x23}, {0x25, 0x27}, + {0x2a, 0x2a}, {0x2c, 0x2c}, {0x2e, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40}, + {0x5c, 0x5c}, {0xa1, 0xa1}, {0xb7, 0xb7}, {0xbf, 0xbf}, {0x37e, 0x37e}, + {0x387, 0x387}, {0x55a, 0x55f}, {0x589, 0x589}, {0x5be, 0x5be}, + {0x5c0, 0x5c0}, {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d}, + {0x61b, 0x61b}, {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4}, + {0x700, 0x70d}, {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4}, + {0xe4f, 0xe4f}, {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf85, 0xf85}, + {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e}, + {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6}, {0x17d8, 0x17da}, + {0x1800, 0x1805}, {0x1807, 0x180a}, {0x1944, 0x1945}, {0x2016, 0x2017}, + {0x2020, 0x2027}, {0x2030, 0x2038}, {0x203b, 0x203e}, {0x2041, 0x2043}, + {0x2047, 0x2051}, {0x2053, 0x2053}, {0x2057, 0x2057}, {0x23b6, 0x23b6}, + {0x3001, 0x3003}, {0x303d, 0x303d}, {0xfe30, 0xfe30}, {0xfe45, 0xfe46}, + {0xfe49, 0xfe4c}, {0xfe50, 0xfe52}, {0xfe54, 0xfe57}, {0xfe5f, 0xfe61}, + {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff07}, + {0xff0a, 0xff0a}, {0xff0c, 0xff0c}, {0xff0e, 0xff0f}, {0xff1a, 0xff1b}, {0xff1f, 0xff20}, {0xff3c, 0xff3c}, {0xff61, 0xff61}, {0xff64, 0xff64} }; static const xmlChLRange xmlPoL[] = {{0x10100, 0x10101}, {0x1039f, 0x1039f} }; static xmlChRangeGroup xmlPoG = {72,2,xmlPoS,xmlPoL}; -static const xmlChSRange xmlPsS[] = {{0x28, 0x28}, {0x5b, 0x5b}, - {0x7b, 0x7b}, {0xf3a, 0xf3a}, {0xf3c, 0xf3c}, {0x169b, 0x169b}, - {0x201a, 0x201a}, {0x201e, 0x201e}, {0x2045, 0x2045}, {0x207d, 0x207d}, - {0x208d, 0x208d}, {0x2329, 0x2329}, {0x23b4, 0x23b4}, {0x2768, 0x2768}, - {0x276a, 0x276a}, {0x276c, 0x276c}, {0x276e, 0x276e}, {0x2770, 0x2770}, - {0x2772, 0x2772}, {0x2774, 0x2774}, {0x27e6, 0x27e6}, {0x27e8, 0x27e8}, - {0x27ea, 0x27ea}, {0x2983, 0x2983}, {0x2985, 0x2985}, {0x2987, 0x2987}, - {0x2989, 0x2989}, {0x298b, 0x298b}, {0x298d, 0x298d}, {0x298f, 0x298f}, - {0x2991, 0x2991}, {0x2993, 0x2993}, {0x2995, 0x2995}, {0x2997, 0x2997}, - {0x29d8, 0x29d8}, {0x29da, 0x29da}, {0x29fc, 0x29fc}, {0x3008, 0x3008}, - {0x300a, 0x300a}, {0x300c, 0x300c}, {0x300e, 0x300e}, {0x3010, 0x3010}, - {0x3014, 0x3014}, {0x3016, 0x3016}, {0x3018, 0x3018}, {0x301a, 0x301a}, - {0x301d, 0x301d}, {0xfd3e, 0xfd3e}, {0xfe35, 0xfe35}, {0xfe37, 0xfe37}, - {0xfe39, 0xfe39}, {0xfe3b, 0xfe3b}, {0xfe3d, 0xfe3d}, {0xfe3f, 0xfe3f}, - {0xfe41, 0xfe41}, {0xfe43, 0xfe43}, {0xfe47, 0xfe47}, {0xfe59, 0xfe59}, - {0xfe5b, 0xfe5b}, {0xfe5d, 0xfe5d}, {0xff08, 0xff08}, {0xff3b, 0xff3b}, +static const xmlChSRange xmlPsS[] = {{0x28, 0x28}, {0x5b, 0x5b}, + {0x7b, 0x7b}, {0xf3a, 0xf3a}, {0xf3c, 0xf3c}, {0x169b, 0x169b}, + {0x201a, 0x201a}, {0x201e, 0x201e}, {0x2045, 0x2045}, {0x207d, 0x207d}, + {0x208d, 0x208d}, {0x2329, 0x2329}, {0x23b4, 0x23b4}, {0x2768, 0x2768}, + {0x276a, 0x276a}, {0x276c, 0x276c}, {0x276e, 0x276e}, {0x2770, 0x2770}, + {0x2772, 0x2772}, {0x2774, 0x2774}, {0x27e6, 0x27e6}, {0x27e8, 0x27e8}, + {0x27ea, 0x27ea}, {0x2983, 0x2983}, {0x2985, 0x2985}, {0x2987, 0x2987}, + {0x2989, 0x2989}, {0x298b, 0x298b}, {0x298d, 0x298d}, {0x298f, 0x298f}, + {0x2991, 0x2991}, {0x2993, 0x2993}, {0x2995, 0x2995}, {0x2997, 0x2997}, + {0x29d8, 0x29d8}, {0x29da, 0x29da}, {0x29fc, 0x29fc}, {0x3008, 0x3008}, + {0x300a, 0x300a}, {0x300c, 0x300c}, {0x300e, 0x300e}, {0x3010, 0x3010}, + {0x3014, 0x3014}, {0x3016, 0x3016}, {0x3018, 0x3018}, {0x301a, 0x301a}, + {0x301d, 0x301d}, {0xfd3e, 0xfd3e}, {0xfe35, 0xfe35}, {0xfe37, 0xfe37}, + {0xfe39, 0xfe39}, {0xfe3b, 0xfe3b}, {0xfe3d, 0xfe3d}, {0xfe3f, 0xfe3f}, + {0xfe41, 0xfe41}, {0xfe43, 0xfe43}, {0xfe47, 0xfe47}, {0xfe59, 0xfe59}, + {0xfe5b, 0xfe5b}, {0xfe5d, 0xfe5d}, {0xff08, 0xff08}, {0xff3b, 0xff3b}, {0xff5b, 0xff5b}, {0xff5f, 0xff5f}, {0xff62, 0xff62} }; static xmlChRangeGroup xmlPsG = {65,0,xmlPsS,NULL}; -static const xmlChSRange xmlSS[] = {{0x24, 0x24}, {0x2b, 0x2b}, - {0x3c, 0x3e}, {0x5e, 0x5e}, {0x60, 0x60}, {0x7c, 0x7c}, {0x7e, 0x7e}, - {0xa2, 0xa9}, {0xac, 0xac}, {0xae, 0xb1}, {0xb4, 0xb4}, {0xb6, 0xb6}, - {0xb8, 0xb8}, {0xd7, 0xd7}, {0xf7, 0xf7}, {0x2c2, 0x2c5}, - {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375}, - {0x384, 0x385}, {0x3f6, 0x3f6}, {0x482, 0x482}, {0x60e, 0x60f}, - {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9f2, 0x9f3}, {0x9fa, 0x9fa}, - {0xaf1, 0xaf1}, {0xb70, 0xb70}, {0xbf3, 0xbfa}, {0xe3f, 0xe3f}, - {0xf01, 0xf03}, {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34}, - {0xf36, 0xf36}, {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc}, - {0xfcf, 0xfcf}, {0x17db, 0x17db}, {0x1940, 0x1940}, {0x19e0, 0x19ff}, - {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, {0x1fdd, 0x1fdf}, - {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x2044, 0x2044}, {0x2052, 0x2052}, - {0x207a, 0x207c}, {0x208a, 0x208c}, {0x20a0, 0x20b1}, {0x2100, 0x2101}, - {0x2103, 0x2106}, {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118}, - {0x211e, 0x2123}, {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129}, - {0x212e, 0x212e}, {0x2132, 0x2132}, {0x213a, 0x213b}, {0x2140, 0x2144}, - {0x214a, 0x214b}, {0x2190, 0x2328}, {0x232b, 0x23b3}, {0x23b7, 0x23d0}, - {0x2400, 0x2426}, {0x2440, 0x244a}, {0x249c, 0x24e9}, {0x2500, 0x2617}, - {0x2619, 0x267d}, {0x2680, 0x2691}, {0x26a0, 0x26a1}, {0x2701, 0x2704}, - {0x2706, 0x2709}, {0x270c, 0x2727}, {0x2729, 0x274b}, {0x274d, 0x274d}, - {0x274f, 0x2752}, {0x2756, 0x2756}, {0x2758, 0x275e}, {0x2761, 0x2767}, - {0x2794, 0x2794}, {0x2798, 0x27af}, {0x27b1, 0x27be}, {0x27d0, 0x27e5}, - {0x27f0, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2b0d}, - {0x2e80, 0x2e99}, {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, - {0x3004, 0x3004}, {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037}, - {0x303e, 0x303f}, {0x309b, 0x309c}, {0x3190, 0x3191}, {0x3196, 0x319f}, - {0x3200, 0x321e}, {0x322a, 0x3243}, {0x3250, 0x3250}, {0x3260, 0x327d}, - {0x327f, 0x327f}, {0x328a, 0x32b0}, {0x32c0, 0x32fe}, {0x3300, 0x33ff}, - {0x4dc0, 0x4dff}, {0xa490, 0xa4c6}, {0xfb29, 0xfb29}, {0xfdfc, 0xfdfd}, - {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xfe69, 0xfe69}, {0xff04, 0xff04}, - {0xff0b, 0xff0b}, {0xff1c, 0xff1e}, {0xff3e, 0xff3e}, {0xff40, 0xff40}, - {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe0, 0xffe6}, {0xffe8, 0xffee}, +static const xmlChSRange xmlSS[] = {{0x24, 0x24}, {0x2b, 0x2b}, + {0x3c, 0x3e}, {0x5e, 0x5e}, {0x60, 0x60}, {0x7c, 0x7c}, {0x7e, 0x7e}, + {0xa2, 0xa9}, {0xac, 0xac}, {0xae, 0xb1}, {0xb4, 0xb4}, {0xb6, 0xb6}, + {0xb8, 0xb8}, {0xd7, 0xd7}, {0xf7, 0xf7}, {0x2c2, 0x2c5}, + {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375}, + {0x384, 0x385}, {0x3f6, 0x3f6}, {0x482, 0x482}, {0x60e, 0x60f}, + {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9f2, 0x9f3}, {0x9fa, 0x9fa}, + {0xaf1, 0xaf1}, {0xb70, 0xb70}, {0xbf3, 0xbfa}, {0xe3f, 0xe3f}, + {0xf01, 0xf03}, {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34}, + {0xf36, 0xf36}, {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc}, + {0xfcf, 0xfcf}, {0x17db, 0x17db}, {0x1940, 0x1940}, {0x19e0, 0x19ff}, + {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, {0x1fdd, 0x1fdf}, + {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x2044, 0x2044}, {0x2052, 0x2052}, + {0x207a, 0x207c}, {0x208a, 0x208c}, {0x20a0, 0x20b1}, {0x2100, 0x2101}, + {0x2103, 0x2106}, {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118}, + {0x211e, 0x2123}, {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129}, + {0x212e, 0x212e}, {0x2132, 0x2132}, {0x213a, 0x213b}, {0x2140, 0x2144}, + {0x214a, 0x214b}, {0x2190, 0x2328}, {0x232b, 0x23b3}, {0x23b7, 0x23d0}, + {0x2400, 0x2426}, {0x2440, 0x244a}, {0x249c, 0x24e9}, {0x2500, 0x2617}, + {0x2619, 0x267d}, {0x2680, 0x2691}, {0x26a0, 0x26a1}, {0x2701, 0x2704}, + {0x2706, 0x2709}, {0x270c, 0x2727}, {0x2729, 0x274b}, {0x274d, 0x274d}, + {0x274f, 0x2752}, {0x2756, 0x2756}, {0x2758, 0x275e}, {0x2761, 0x2767}, + {0x2794, 0x2794}, {0x2798, 0x27af}, {0x27b1, 0x27be}, {0x27d0, 0x27e5}, + {0x27f0, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2b0d}, + {0x2e80, 0x2e99}, {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, + {0x3004, 0x3004}, {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037}, + {0x303e, 0x303f}, {0x309b, 0x309c}, {0x3190, 0x3191}, {0x3196, 0x319f}, + {0x3200, 0x321e}, {0x322a, 0x3243}, {0x3250, 0x3250}, {0x3260, 0x327d}, + {0x327f, 0x327f}, {0x328a, 0x32b0}, {0x32c0, 0x32fe}, {0x3300, 0x33ff}, + {0x4dc0, 0x4dff}, {0xa490, 0xa4c6}, {0xfb29, 0xfb29}, {0xfdfc, 0xfdfd}, + {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xfe69, 0xfe69}, {0xff04, 0xff04}, + {0xff0b, 0xff0b}, {0xff1c, 0xff1e}, {0xff3e, 0xff3e}, {0xff40, 0xff40}, + {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe0, 0xffe6}, {0xffe8, 0xffee}, {0xfffc, 0xfffd} }; -static const xmlChLRange xmlSL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f}, - {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164}, - {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9}, - {0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356}, {0x1d6c1, 0x1d6c1}, - {0x1d6db, 0x1d6db}, {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715}, - {0x1d735, 0x1d735}, {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f}, +static const xmlChLRange xmlSL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f}, + {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164}, + {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9}, + {0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356}, {0x1d6c1, 0x1d6c1}, + {0x1d6db, 0x1d6db}, {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715}, + {0x1d735, 0x1d735}, {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f}, {0x1d789, 0x1d789}, {0x1d7a9, 0x1d7a9}, {0x1d7c3, 0x1d7c3} }; static xmlChRangeGroup xmlSG = {133,20,xmlSS,xmlSL}; -static const xmlChSRange xmlScS[] = {{0x24, 0x24}, {0xa2, 0xa5}, - {0x9f2, 0x9f3}, {0xaf1, 0xaf1}, {0xbf9, 0xbf9}, {0xe3f, 0xe3f}, - {0x17db, 0x17db}, {0x20a0, 0x20b1}, {0xfdfc, 0xfdfc}, {0xfe69, 0xfe69}, +static const xmlChSRange xmlScS[] = {{0x24, 0x24}, {0xa2, 0xa5}, + {0x9f2, 0x9f3}, {0xaf1, 0xaf1}, {0xbf9, 0xbf9}, {0xe3f, 0xe3f}, + {0x17db, 0x17db}, {0x20a0, 0x20b1}, {0xfdfc, 0xfdfc}, {0xfe69, 0xfe69}, {0xff04, 0xff04}, {0xffe0, 0xffe1}, {0xffe5, 0xffe6} }; static xmlChRangeGroup xmlScG = {13,0,xmlScS,NULL}; -static const xmlChSRange xmlSkS[] = {{0x5e, 0x5e}, {0x60, 0x60}, - {0xa8, 0xa8}, {0xaf, 0xaf}, {0xb4, 0xb4}, {0xb8, 0xb8}, {0x2c2, 0x2c5}, - {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375}, - {0x384, 0x385}, {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, - {0x1fdd, 0x1fdf}, {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x309b, 0x309c}, +static const xmlChSRange xmlSkS[] = {{0x5e, 0x5e}, {0x60, 0x60}, + {0xa8, 0xa8}, {0xaf, 0xaf}, {0xb4, 0xb4}, {0xb8, 0xb8}, {0x2c2, 0x2c5}, + {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375}, + {0x384, 0x385}, {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, + {0x1fdd, 0x1fdf}, {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x309b, 0x309c}, {0xff3e, 0xff3e}, {0xff40, 0xff40}, {0xffe3, 0xffe3} }; static xmlChRangeGroup xmlSkG = {22,0,xmlSkS,NULL}; -static const xmlChSRange xmlSmS[] = {{0x2b, 0x2b}, {0x3c, 0x3e}, - {0x7c, 0x7c}, {0x7e, 0x7e}, {0xac, 0xac}, {0xb1, 0xb1}, {0xd7, 0xd7}, - {0xf7, 0xf7}, {0x3f6, 0x3f6}, {0x2044, 0x2044}, {0x2052, 0x2052}, - {0x207a, 0x207c}, {0x208a, 0x208c}, {0x2140, 0x2144}, {0x214b, 0x214b}, - {0x2190, 0x2194}, {0x219a, 0x219b}, {0x21a0, 0x21a0}, {0x21a3, 0x21a3}, - {0x21a6, 0x21a6}, {0x21ae, 0x21ae}, {0x21ce, 0x21cf}, {0x21d2, 0x21d2}, - {0x21d4, 0x21d4}, {0x21f4, 0x22ff}, {0x2308, 0x230b}, {0x2320, 0x2321}, - {0x237c, 0x237c}, {0x239b, 0x23b3}, {0x25b7, 0x25b7}, {0x25c1, 0x25c1}, - {0x25f8, 0x25ff}, {0x266f, 0x266f}, {0x27d0, 0x27e5}, {0x27f0, 0x27ff}, - {0x2900, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2aff}, - {0xfb29, 0xfb29}, {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xff0b, 0xff0b}, - {0xff1c, 0xff1e}, {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe2, 0xffe2}, +static const xmlChSRange xmlSmS[] = {{0x2b, 0x2b}, {0x3c, 0x3e}, + {0x7c, 0x7c}, {0x7e, 0x7e}, {0xac, 0xac}, {0xb1, 0xb1}, {0xd7, 0xd7}, + {0xf7, 0xf7}, {0x3f6, 0x3f6}, {0x2044, 0x2044}, {0x2052, 0x2052}, + {0x207a, 0x207c}, {0x208a, 0x208c}, {0x2140, 0x2144}, {0x214b, 0x214b}, + {0x2190, 0x2194}, {0x219a, 0x219b}, {0x21a0, 0x21a0}, {0x21a3, 0x21a3}, + {0x21a6, 0x21a6}, {0x21ae, 0x21ae}, {0x21ce, 0x21cf}, {0x21d2, 0x21d2}, + {0x21d4, 0x21d4}, {0x21f4, 0x22ff}, {0x2308, 0x230b}, {0x2320, 0x2321}, + {0x237c, 0x237c}, {0x239b, 0x23b3}, {0x25b7, 0x25b7}, {0x25c1, 0x25c1}, + {0x25f8, 0x25ff}, {0x266f, 0x266f}, {0x27d0, 0x27e5}, {0x27f0, 0x27ff}, + {0x2900, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2aff}, + {0xfb29, 0xfb29}, {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xff0b, 0xff0b}, + {0xff1c, 0xff1e}, {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe2, 0xffe2}, {0xffe9, 0xffec} }; -static const xmlChLRange xmlSmL[] = {{0x1d6c1, 0x1d6c1}, {0x1d6db, 0x1d6db}, - {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715}, {0x1d735, 0x1d735}, - {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f}, {0x1d789, 0x1d789}, +static const xmlChLRange xmlSmL[] = {{0x1d6c1, 0x1d6c1}, {0x1d6db, 0x1d6db}, + {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715}, {0x1d735, 0x1d735}, + {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f}, {0x1d789, 0x1d789}, {0x1d7a9, 0x1d7a9}, {0x1d7c3, 0x1d7c3} }; static xmlChRangeGroup xmlSmG = {48,10,xmlSmS,xmlSmL}; -static const xmlChSRange xmlSoS[] = {{0xa6, 0xa7}, {0xa9, 0xa9}, - {0xae, 0xae}, {0xb0, 0xb0}, {0xb6, 0xb6}, {0x482, 0x482}, - {0x60e, 0x60f}, {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9fa, 0x9fa}, - {0xb70, 0xb70}, {0xbf3, 0xbf8}, {0xbfa, 0xbfa}, {0xf01, 0xf03}, - {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34}, {0xf36, 0xf36}, - {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc}, {0xfcf, 0xfcf}, - {0x1940, 0x1940}, {0x19e0, 0x19ff}, {0x2100, 0x2101}, {0x2103, 0x2106}, - {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118}, {0x211e, 0x2123}, - {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129}, {0x212e, 0x212e}, - {0x2132, 0x2132}, {0x213a, 0x213b}, {0x214a, 0x214a}, {0x2195, 0x2199}, - {0x219c, 0x219f}, {0x21a1, 0x21a2}, {0x21a4, 0x21a5}, {0x21a7, 0x21ad}, - {0x21af, 0x21cd}, {0x21d0, 0x21d1}, {0x21d3, 0x21d3}, {0x21d5, 0x21f3}, - {0x2300, 0x2307}, {0x230c, 0x231f}, {0x2322, 0x2328}, {0x232b, 0x237b}, - {0x237d, 0x239a}, {0x23b7, 0x23d0}, {0x2400, 0x2426}, {0x2440, 0x244a}, - {0x249c, 0x24e9}, {0x2500, 0x25b6}, {0x25b8, 0x25c0}, {0x25c2, 0x25f7}, - {0x2600, 0x2617}, {0x2619, 0x266e}, {0x2670, 0x267d}, {0x2680, 0x2691}, - {0x26a0, 0x26a1}, {0x2701, 0x2704}, {0x2706, 0x2709}, {0x270c, 0x2727}, - {0x2729, 0x274b}, {0x274d, 0x274d}, {0x274f, 0x2752}, {0x2756, 0x2756}, - {0x2758, 0x275e}, {0x2761, 0x2767}, {0x2794, 0x2794}, {0x2798, 0x27af}, - {0x27b1, 0x27be}, {0x2800, 0x28ff}, {0x2b00, 0x2b0d}, {0x2e80, 0x2e99}, - {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, {0x3004, 0x3004}, - {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037}, {0x303e, 0x303f}, - {0x3190, 0x3191}, {0x3196, 0x319f}, {0x3200, 0x321e}, {0x322a, 0x3243}, - {0x3250, 0x3250}, {0x3260, 0x327d}, {0x327f, 0x327f}, {0x328a, 0x32b0}, - {0x32c0, 0x32fe}, {0x3300, 0x33ff}, {0x4dc0, 0x4dff}, {0xa490, 0xa4c6}, - {0xfdfd, 0xfdfd}, {0xffe4, 0xffe4}, {0xffe8, 0xffe8}, {0xffed, 0xffee}, +static const xmlChSRange xmlSoS[] = {{0xa6, 0xa7}, {0xa9, 0xa9}, + {0xae, 0xae}, {0xb0, 0xb0}, {0xb6, 0xb6}, {0x482, 0x482}, + {0x60e, 0x60f}, {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9fa, 0x9fa}, + {0xb70, 0xb70}, {0xbf3, 0xbf8}, {0xbfa, 0xbfa}, {0xf01, 0xf03}, + {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34}, {0xf36, 0xf36}, + {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc}, {0xfcf, 0xfcf}, + {0x1940, 0x1940}, {0x19e0, 0x19ff}, {0x2100, 0x2101}, {0x2103, 0x2106}, + {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118}, {0x211e, 0x2123}, + {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129}, {0x212e, 0x212e}, + {0x2132, 0x2132}, {0x213a, 0x213b}, {0x214a, 0x214a}, {0x2195, 0x2199}, + {0x219c, 0x219f}, {0x21a1, 0x21a2}, {0x21a4, 0x21a5}, {0x21a7, 0x21ad}, + {0x21af, 0x21cd}, {0x21d0, 0x21d1}, {0x21d3, 0x21d3}, {0x21d5, 0x21f3}, + {0x2300, 0x2307}, {0x230c, 0x231f}, {0x2322, 0x2328}, {0x232b, 0x237b}, + {0x237d, 0x239a}, {0x23b7, 0x23d0}, {0x2400, 0x2426}, {0x2440, 0x244a}, + {0x249c, 0x24e9}, {0x2500, 0x25b6}, {0x25b8, 0x25c0}, {0x25c2, 0x25f7}, + {0x2600, 0x2617}, {0x2619, 0x266e}, {0x2670, 0x267d}, {0x2680, 0x2691}, + {0x26a0, 0x26a1}, {0x2701, 0x2704}, {0x2706, 0x2709}, {0x270c, 0x2727}, + {0x2729, 0x274b}, {0x274d, 0x274d}, {0x274f, 0x2752}, {0x2756, 0x2756}, + {0x2758, 0x275e}, {0x2761, 0x2767}, {0x2794, 0x2794}, {0x2798, 0x27af}, + {0x27b1, 0x27be}, {0x2800, 0x28ff}, {0x2b00, 0x2b0d}, {0x2e80, 0x2e99}, + {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, {0x3004, 0x3004}, + {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037}, {0x303e, 0x303f}, + {0x3190, 0x3191}, {0x3196, 0x319f}, {0x3200, 0x321e}, {0x322a, 0x3243}, + {0x3250, 0x3250}, {0x3260, 0x327d}, {0x327f, 0x327f}, {0x328a, 0x32b0}, + {0x32c0, 0x32fe}, {0x3300, 0x33ff}, {0x4dc0, 0x4dff}, {0xa490, 0xa4c6}, + {0xfdfd, 0xfdfd}, {0xffe4, 0xffe4}, {0xffe8, 0xffe8}, {0xffed, 0xffee}, {0xfffc, 0xfffd} }; -static const xmlChLRange xmlSoL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f}, - {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164}, - {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9}, +static const xmlChLRange xmlSoL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f}, + {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164}, + {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9}, {0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356} }; static xmlChRangeGroup xmlSoG = {103,10,xmlSoS,xmlSoL}; -static const xmlChSRange xmlZS[] = {{0x20, 0x20}, {0xa0, 0xa0}, - {0x1680, 0x1680}, {0x180e, 0x180e}, {0x2000, 0x200a}, {0x2028, 0x2029}, +static const xmlChSRange xmlZS[] = {{0x20, 0x20}, {0xa0, 0xa0}, + {0x1680, 0x1680}, {0x180e, 0x180e}, {0x2000, 0x200a}, {0x2028, 0x2029}, {0x202f, 0x202f}, {0x205f, 0x205f}, {0x3000, 0x3000} }; static xmlChRangeGroup xmlZG = {9,0,xmlZS,NULL}; @@ -961,7 +961,7 @@ else low = mid + 1; } - return (NULL); + return (NULL); } /** diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlversion.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlversion.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlversion.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlversion.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -29,28 +29,28 @@ * * the version string like "1.2.3" */ -#define LIBXML_DOTTED_VERSION "2.6.27" +#define LIBXML_DOTTED_VERSION "2.9.3" /** * LIBXML_VERSION: * * the version number: 1.2.3 value is 10203 */ -#define LIBXML_VERSION 20627 +#define LIBXML_VERSION 20903 /** * LIBXML_VERSION_STRING: * * the version number string, 1.2.3 value is "10203" */ -#define LIBXML_VERSION_STRING "20627" +#define LIBXML_VERSION_STRING "20903" /** * LIBXML_VERSION_EXTRA: * * extra version information, used to show a CVS compilation */ -#define LIBXML_VERSION_EXTRA "-CVS2872" +#define LIBXML_VERSION_EXTRA "-GITCVE-2015-8242" /** * LIBXML_TEST_VERSION: @@ -58,7 +58,7 @@ * Macro to check that the libxml version in use is compatible with * the version the software has been compiled against */ -#define LIBXML_TEST_VERSION xmlCheckVersion(20627); +#define LIBXML_TEST_VERSION xmlCheckVersion(20903); #ifndef VMS #if 0 @@ -91,12 +91,22 @@ * Whether the thread support is configured in */ #if 0 -#if defined(_REENTRANT) || defined(__MT__) || (_POSIX_C_SOURCE - 0 >= 199506L) +#if defined(_REENTRANT) || defined(__MT__) || \ + (defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE - 0 >= 199506L)) #define LIBXML_THREAD_ENABLED #endif #endif /** + * LIBXML_THREAD_ALLOC_ENABLED: + * + * Whether the allocation hooks are per-thread + */ +#if 0 +#define LIBXML_THREAD_ALLOC_ENABLED +#endif + +/** * LIBXML_TREE_ENABLED: * * Whether the DOM like tree manipulation API support is configured in @@ -236,7 +246,7 @@ * * Whether XPath is configured in */ -#if 0 +#if 1 #define LIBXML_XPATH_ENABLED #endif @@ -245,7 +255,7 @@ * * Whether XPointer is configured in */ -#if 0 +#if 1 #define LIBXML_XPTR_ENABLED #endif @@ -268,6 +278,15 @@ #endif /** + * LIBXML_ICU_ENABLED: + * + * Whether icu support is available + */ +#if 0 +#define LIBXML_ICU_ENABLED +#endif + +/** * LIBXML_ISO8859X_ENABLED: * * Whether ISO-8859-* support is made available in case iconv is not @@ -382,21 +401,86 @@ #endif /** - * ATTRIBUTE_UNUSED: + * LIBXML_LZMA_ENABLED: * - * Macro used to signal to GCC unused function parameters + * Whether the Lzma support is compiled in */ +#if 0 +#define LIBXML_LZMA_ENABLED +#endif + #ifdef __GNUC__ #ifdef HAVE_ANSIDECL_H #include #endif + +/** + * ATTRIBUTE_UNUSED: + * + * Macro used to signal to GCC unused function parameters + */ + #ifndef ATTRIBUTE_UNUSED -#define ATTRIBUTE_UNUSED __attribute__((unused)) +# if ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 7))) +# define ATTRIBUTE_UNUSED __attribute__((unused)) +# else +# define ATTRIBUTE_UNUSED +# endif #endif + +/** + * LIBXML_ATTR_ALLOC_SIZE: + * + * Macro used to indicate to GCC this is an allocator function + */ + +#ifndef LIBXML_ATTR_ALLOC_SIZE +# if (!defined(__clang__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))) +# define LIBXML_ATTR_ALLOC_SIZE(x) __attribute__((alloc_size(x))) +# else +# define LIBXML_ATTR_ALLOC_SIZE(x) +# endif #else -#define ATTRIBUTE_UNUSED +# define LIBXML_ATTR_ALLOC_SIZE(x) +#endif + +/** + * LIBXML_ATTR_FORMAT: + * + * Macro used to indicate to GCC the parameter are printf like + */ + +#ifndef LIBXML_ATTR_FORMAT +# if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3))) +# define LIBXML_ATTR_FORMAT(fmt,args) __attribute__((__format__(__printf__,fmt,args))) +# else +# define LIBXML_ATTR_FORMAT(fmt,args) +# endif +#else +# define LIBXML_ATTR_FORMAT(fmt,args) #endif +#else /* ! __GNUC__ */ +/** + * ATTRIBUTE_UNUSED: + * + * Macro used to signal to GCC unused function parameters + */ +#define ATTRIBUTE_UNUSED +/** + * LIBXML_ATTR_ALLOC_SIZE: + * + * Macro used to indicate to GCC this is an allocator function + */ +#define LIBXML_ATTR_ALLOC_SIZE(x) +/** + * LIBXML_ATTR_FORMAT: + * + * Macro used to indicate to GCC the parameter are printf like + */ +#define LIBXML_ATTR_FORMAT(fmt,args) +#endif /* __GNUC__ */ + #ifdef __cplusplus } #endif /* __cplusplus */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlwriter.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlwriter.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlwriter.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlwriter.c 2015-12-23 07:08:27.000000000 +0000 @@ -10,7 +10,6 @@ #define IN_LIBXML #include "libxml.h" - #include #include @@ -22,15 +21,18 @@ #include +#include "buf.h" +#include "enc.h" +#include "save.h" + #define B64LINELEN 72 #define B64CRLF "\r\n" /* * The following VA_COPY was coded following an example in * the Samba project. It may not be sufficient for some - * esoteric implementations of va_list (i.e. it may need - * something involving a memcpy) but (hopefully) will be - * sufficient for libxml2. + * esoteric implementations of va_list but (hopefully) will + * be sufficient for libxml2. */ #ifndef VA_COPY #ifdef HAVE_VA_COPY @@ -39,7 +41,12 @@ #ifdef HAVE___VA_COPY #define VA_COPY(dest,src) __va_copy(dest, src) #else - #define VA_COPY(dest,src) (dest) = (src) + #ifndef VA_LIST_IS_ARRAY + #define VA_COPY(dest,src) (dest) = (src) + #else + #include + #define VA_COPY(dest,src) memcpy((char *)(dest),(char *)(src),sizeof(va_list)) + #endif #endif #endif #endif @@ -98,6 +105,7 @@ static void xmlFreeTextWriterStackEntry(xmlLinkPtr lk); static int xmlCmpTextWriterStackEntry(const void *data0, const void *data1); +static int xmlTextWriterOutputNSDecl(xmlTextWriterPtr writer); static void xmlFreeTextWriterNsStackEntry(xmlLinkPtr lk); static int xmlCmpTextWriterNsStackEntry(const void *data0, const void *data1); @@ -129,10 +137,10 @@ if (ctxt != NULL) { __xmlRaiseError(NULL, NULL, NULL, ctxt->ctxt, NULL, XML_FROM_WRITER, error, XML_ERR_FATAL, - NULL, 0, NULL, NULL, NULL, 0, 0, msg); + NULL, 0, NULL, NULL, NULL, 0, 0, "%s", msg); } else { __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_WRITER, error, - XML_ERR_FATAL, NULL, 0, NULL, NULL, NULL, 0, 0, msg); + XML_ERR_FATAL, NULL, 0, NULL, NULL, NULL, 0, 0, "%s", msg); } } @@ -242,8 +250,8 @@ out = xmlOutputBufferCreateFilename(uri, NULL, compression); if (out == NULL) { - xmlWriterErrMsg(NULL, XML_ERR_NO_MEMORY, - "xmlNewTextWriterFilename : out of memory!\n"); + xmlWriterErrMsg(NULL, XML_IO_EIO, + "xmlNewTextWriterFilename : cannot open uri\n"); return NULL; } @@ -370,7 +378,7 @@ ctxt = xmlCreatePushParserCtxt(&saxHandler, NULL, NULL, 0, NULL); if (ctxt == NULL) { xmlWriterErrMsg(NULL, XML_ERR_INTERNAL_ERROR, - "xmlNewTextWriterDoc : error at xmlCreatePushParserCtxt!\n"); + "xmlNewTextWriterDoc : error at xmlCreatePushParserCtxt!\n"); return NULL; } /* @@ -389,8 +397,10 @@ ret = xmlNewTextWriterPushParser(ctxt, compression); if (ret == NULL) { + xmlFreeDoc(ctxt->myDoc); + xmlFreeParserCtxt(ctxt); xmlWriterErrMsg(NULL, XML_ERR_INTERNAL_ERROR, - "xmlNewTextWriterDoc : error at xmlNewTextWriterPushParser!\n"); + "xmlNewTextWriterDoc : error at xmlNewTextWriterPushParser!\n"); return NULL; } @@ -545,8 +555,10 @@ writer->out->encoder = encoder; if (encoder != NULL) { - writer->out->conv = xmlBufferCreateSize(4000); - xmlCharEncOutFunc(encoder, writer->out->conv, NULL); + if (writer->out->conv == NULL) { + writer->out->conv = xmlBufCreateSize(4000); + } + xmlCharEncOutput(writer->out, 1); if ((writer->doc != NULL) && (writer->doc->encoding == NULL)) writer->doc->encoding = xmlStrdup((xmlChar *)writer->out->encoder->name); } else @@ -624,9 +636,10 @@ * xmlTextWriterEndDocument: * @writer: the xmlTextWriterPtr * - * End an xml document. All open elements are closed + * End an xml document. All open elements are closed, and + * the content is flushed to the output. * - * Returns the bytes written (may be 0 because of buffering) or -1 in case of error + * Returns the bytes written or -1 in case of error */ int xmlTextWriterEndDocument(xmlTextWriterPtr writer) @@ -700,6 +713,9 @@ return -1; sum += count; } + + sum += xmlTextWriterFlush(writer); + return sum; } @@ -735,6 +751,11 @@ case XML_TEXTWRITER_NONE: break; case XML_TEXTWRITER_NAME: + /* Output namespace declarations */ + count = xmlTextWriterOutputNSDecl(writer); + if (count < 0) + return -1; + sum += count; count = xmlOutputBufferWriteString(writer->out, ">"); if (count < 0) return -1; @@ -887,8 +908,8 @@ } buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteComment(writer, buf); @@ -966,6 +987,11 @@ sum += count; /* fallthrough */ case XML_TEXTWRITER_NAME: + /* Output namespace declarations */ + count = xmlTextWriterOutputNSDecl(writer); + if (count < 0) + return -1; + sum += count; count = xmlOutputBufferWriteString(writer->out, ">"); if (count < 0) return -1; @@ -1056,17 +1082,31 @@ sum += count; if (namespaceURI != 0) { + xmlTextWriterNsStackEntry *p = (xmlTextWriterNsStackEntry *) + xmlMalloc(sizeof(xmlTextWriterNsStackEntry)); + if (p == 0) { + xmlWriterErrMsg(writer, XML_ERR_NO_MEMORY, + "xmlTextWriterStartElementNS : out of memory!\n"); + return -1; + } + buf = xmlStrdup(BAD_CAST "xmlns"); if (prefix != 0) { buf = xmlStrcat(buf, BAD_CAST ":"); buf = xmlStrcat(buf, prefix); } - count = xmlTextWriterWriteAttribute(writer, buf, namespaceURI); - xmlFree(buf); - if (count < 0) + p->prefix = buf; + p->uri = xmlStrdup(namespaceURI); + if (p->uri == 0) { + xmlWriterErrMsg(writer, XML_ERR_NO_MEMORY, + "xmlTextWriterStartElementNS : out of memory!\n"); + xmlFree(p); return -1; - sum += count; + } + p->elem = xmlListFront(writer->nodes); + + xmlListPushFront(writer->nsstack, p); } return sum; @@ -1092,22 +1132,37 @@ return -1; lk = xmlListFront(writer->nodes); - if (lk == 0) + if (lk == 0) { + xmlListDelete(writer->nsstack); + writer->nsstack = NULL; return -1; + } p = (xmlTextWriterStackEntry *) xmlLinkGetData(lk); - if (p == 0) + if (p == 0) { + xmlListDelete(writer->nsstack); + writer->nsstack = NULL; return -1; + } sum = 0; switch (p->state) { case XML_TEXTWRITER_ATTRIBUTE: count = xmlTextWriterEndAttribute(writer); - if (count < 0) + if (count < 0) { + xmlListDelete(writer->nsstack); + writer->nsstack = NULL; return -1; + } sum += count; /* fallthrough */ case XML_TEXTWRITER_NAME: + /* Output namespace declarations */ + count = xmlTextWriterOutputNSDecl(writer); + if (count < 0) + return -1; + sum += count; + if (writer->indent) /* next element needs indent */ writer->doindent = 1; count = xmlOutputBufferWriteString(writer->out, "/>"); @@ -1185,12 +1240,26 @@ sum += count; /* fallthrough */ case XML_TEXTWRITER_NAME: + /* Output namespace declarations */ + count = xmlTextWriterOutputNSDecl(writer); + if (count < 0) + return -1; + sum += count; + count = xmlOutputBufferWriteString(writer->out, ">"); if (count < 0) return -1; sum += count; + if (writer->indent) + writer->doindent = 0; /* fallthrough */ case XML_TEXTWRITER_TEXT: + if ((writer->indent) && (writer->doindent)) { + count = xmlTextWriterWriteIndent(writer); + sum += count; + writer->doindent = 1; + } else + writer->doindent = 1; count = xmlOutputBufferWriteString(writer->out, "indent) { + count = xmlOutputBufferWriteString(writer->out, "\n"); + sum += count; + } + xmlListPopFront(writer->nodes); return sum; } @@ -1259,8 +1333,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteRaw(writer, buf); @@ -1388,8 +1462,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteString(writer, buf); @@ -1435,8 +1509,8 @@ break; case XML_TEXTWRITER_ATTRIBUTE: buf = NULL; - xmlAttrSerializeTxtContent(writer->out->buffer, writer->doc, - NULL, content); + xmlBufAttrSerializeTxtContent(writer->out->buffer, + writer->doc, NULL, content); break; default: break; @@ -1446,12 +1520,13 @@ if (buf != NULL) { count = xmlTextWriterWriteRaw(writer, buf); - if (count < 0) - return -1; - sum += count; if (buf != content) /* buf was allocated by us, so free it */ xmlFree(buf); + + if (count < 0) + return -1; + sum += count; } return sum; @@ -1596,7 +1671,7 @@ * Write hqx encoded data to an xmlOutputBuffer. * ::todo * - * Returns the bytes written (may be 0 because of buffering) + * Returns the bytes written (may be 0 because of buffering) * or -1 in case of error */ static int @@ -1605,8 +1680,8 @@ { int count; int sum; - static char hex[16] = - {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; + static char hex[16] = + {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; int i; if ((out == NULL) || (data == NULL) || (len < 0)) { @@ -1768,6 +1843,57 @@ if ((writer == NULL) || (name == NULL) || (*name == '\0')) return -1; + /* Handle namespace first in case of error */ + if (namespaceURI != 0) { + xmlTextWriterNsStackEntry nsentry, *curns; + + buf = xmlStrdup(BAD_CAST "xmlns"); + if (prefix != 0) { + buf = xmlStrcat(buf, BAD_CAST ":"); + buf = xmlStrcat(buf, prefix); + } + + nsentry.prefix = buf; + nsentry.uri = (xmlChar *)namespaceURI; + nsentry.elem = xmlListFront(writer->nodes); + + curns = (xmlTextWriterNsStackEntry *)xmlListSearch(writer->nsstack, + (void *)&nsentry); + if ((curns != NULL)) { + xmlFree(buf); + if (xmlStrcmp(curns->uri, namespaceURI) == 0) { + /* Namespace already defined on element skip */ + buf = NULL; + } else { + /* Prefix mismatch so error out */ + return -1; + } + } + + /* Do not add namespace decl to list - it is already there */ + if (buf != NULL) { + p = (xmlTextWriterNsStackEntry *) + xmlMalloc(sizeof(xmlTextWriterNsStackEntry)); + if (p == 0) { + xmlWriterErrMsg(writer, XML_ERR_NO_MEMORY, + "xmlTextWriterStartAttributeNS : out of memory!\n"); + return -1; + } + + p->prefix = buf; + p->uri = xmlStrdup(namespaceURI); + if (p->uri == 0) { + xmlWriterErrMsg(writer, XML_ERR_NO_MEMORY, + "xmlTextWriterStartAttributeNS : out of memory!\n"); + xmlFree(p); + return -1; + } + p->elem = xmlListFront(writer->nodes); + + xmlListPushFront(writer->nsstack, p); + } + } + buf = NULL; if (prefix != 0) { buf = xmlStrdup(prefix); @@ -1782,34 +1908,6 @@ return -1; sum += count; - if (namespaceURI != 0) { - buf = xmlStrdup(BAD_CAST "xmlns"); - if (prefix != 0) { - buf = xmlStrcat(buf, BAD_CAST ":"); - buf = xmlStrcat(buf, prefix); - } - - p = (xmlTextWriterNsStackEntry *) - xmlMalloc(sizeof(xmlTextWriterNsStackEntry)); - if (p == 0) { - xmlWriterErrMsg(writer, XML_ERR_NO_MEMORY, - "xmlTextWriterStartAttributeNS : out of memory!\n"); - return -1; - } - - p->prefix = buf; - p->uri = xmlStrdup(namespaceURI); - if (p->uri == 0) { - xmlWriterErrMsg(writer, XML_ERR_NO_MEMORY, - "xmlTextWriterStartAttributeNS : out of memory!\n"); - xmlFree(p); - return -1; - } - p->elem = xmlListFront(writer->nodes); - - xmlListPushFront(writer->nsstack, p); - } - return sum; } @@ -1828,22 +1926,17 @@ int sum; xmlLinkPtr lk; xmlTextWriterStackEntry *p; - xmlTextWriterNsStackEntry *np; if (writer == NULL) return -1; lk = xmlListFront(writer->nodes); if (lk == 0) { - xmlListDelete(writer->nsstack); - writer->nsstack = NULL; return -1; } p = (xmlTextWriterStackEntry *) xmlLinkGetData(lk); if (p == 0) { - xmlListDelete(writer->nsstack); - writer->nsstack = NULL; return -1; } @@ -1854,45 +1947,11 @@ count = xmlOutputBufferWrite(writer->out, 1, &writer->qchar); if (count < 0) { - xmlListDelete(writer->nsstack); - writer->nsstack = NULL; return -1; } sum += count; - - while (!xmlListEmpty(writer->nsstack)) { - xmlChar *namespaceURI = NULL; - xmlChar *prefix = NULL; - - lk = xmlListFront(writer->nsstack); - np = (xmlTextWriterNsStackEntry *) xmlLinkGetData(lk); - - if (np != 0) { - namespaceURI = xmlStrdup(np->uri); - prefix = xmlStrdup(np->prefix); - } - - xmlListPopFront(writer->nsstack); - - if (np != 0) { - count = - xmlTextWriterWriteAttribute(writer, prefix, - namespaceURI); - xmlFree(namespaceURI); - xmlFree(prefix); - - if (count < 0) { - xmlListDelete(writer->nsstack); - writer->nsstack = NULL; - return -1; - } - sum += count; - } - } break; - default: - xmlListClear(writer->nsstack); return -1; } @@ -1949,8 +2008,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteAttribute(writer, name, buf); @@ -2051,8 +2110,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteAttributeNS(writer, prefix, name, namespaceURI, buf); @@ -2081,38 +2140,24 @@ { int count; int sum; - xmlChar *buf; if ((writer == NULL) || (name == NULL) || (*name == '\0')) return -1; - buf = NULL; - if (prefix != NULL) { - buf = xmlStrdup(prefix); - buf = xmlStrcat(buf, BAD_CAST ":"); - } - buf = xmlStrcat(buf, name); - sum = 0; - count = xmlTextWriterWriteAttribute(writer, buf, content); - xmlFree(buf); + count = xmlTextWriterStartAttributeNS(writer, prefix, name, namespaceURI); + if (count < 0) + return -1; + sum += count; + count = xmlTextWriterWriteString(writer, content); + if (count < 0) + return -1; + sum += count; + count = xmlTextWriterEndAttribute(writer); if (count < 0) return -1; sum += count; - if (namespaceURI != NULL) { - buf = NULL; - buf = xmlStrdup(BAD_CAST "xmlns"); - if (prefix != NULL) { - buf = xmlStrcat(buf, BAD_CAST ":"); - buf = xmlStrcat(buf, prefix); - } - count = xmlTextWriterWriteAttribute(writer, buf, namespaceURI); - xmlFree(buf); - if (count < 0) - return -1; - sum += count; - } return sum; } @@ -2166,8 +2211,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteElement(writer, name, buf); @@ -2197,10 +2242,12 @@ if (count == -1) return -1; sum += count; - count = xmlTextWriterWriteString(writer, content); - if (count == -1) - return -1; - sum += count; + if (content != NULL) { + count = xmlTextWriterWriteString(writer, content); + if (count == -1) + return -1; + sum += count; + } count = xmlTextWriterEndElement(writer); if (count == -1) return -1; @@ -2268,8 +2315,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteElementNS(writer, prefix, name, namespaceURI, buf); @@ -2359,6 +2406,11 @@ sum += count; /* fallthrough */ case XML_TEXTWRITER_NAME: + /* Output namespace declarations */ + count = xmlTextWriterOutputNSDecl(writer); + if (count < 0) + return -1; + sum += count; count = xmlOutputBufferWriteString(writer->out, ">"); if (count < 0) return -1; @@ -2454,8 +2506,8 @@ if (writer->indent) { count = xmlOutputBufferWriteString(writer->out, "\n"); - if (count < 0) - return -1; + if (count < 0) + return -1; sum += count; } @@ -2512,8 +2564,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWritePI(writer, target, buf); @@ -2583,6 +2635,7 @@ if (p != 0) { switch (p->state) { case XML_TEXTWRITER_NONE: + case XML_TEXTWRITER_TEXT: case XML_TEXTWRITER_PI: case XML_TEXTWRITER_PI_TEXT: break; @@ -2593,6 +2646,11 @@ sum += count; /* fallthrough */ case XML_TEXTWRITER_NAME: + /* Output namespace declarations */ + count = xmlTextWriterOutputNSDecl(writer); + if (count < 0) + return -1; + sum += count; count = xmlOutputBufferWriteString(writer->out, ">"); if (count < 0) return -1; @@ -2719,8 +2777,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteCDATA(writer, buf); @@ -3037,8 +3095,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteDTD(writer, name, pubid, sysid, buf); @@ -3275,8 +3333,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteDTDElement(writer, name, buf); @@ -3512,8 +3570,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteDTDAttlist(writer, name, buf); @@ -3774,8 +3832,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteDTDInternalEntity(writer, pe, name, buf); @@ -4249,6 +4307,51 @@ */ /** + * xmlTextWriterOutputNSDecl: + * @writer: the xmlTextWriterPtr + * + * Output the current namespace declarations. + */ +static int +xmlTextWriterOutputNSDecl(xmlTextWriterPtr writer) +{ + xmlLinkPtr lk; + xmlTextWriterNsStackEntry *np; + int count; + int sum; + + sum = 0; + while (!xmlListEmpty(writer->nsstack)) { + xmlChar *namespaceURI = NULL; + xmlChar *prefix = NULL; + + lk = xmlListFront(writer->nsstack); + np = (xmlTextWriterNsStackEntry *) xmlLinkGetData(lk); + + if (np != 0) { + namespaceURI = xmlStrdup(np->uri); + prefix = xmlStrdup(np->prefix); + } + + xmlListPopFront(writer->nsstack); + + if (np != 0) { + count = xmlTextWriterWriteAttribute(writer, prefix, namespaceURI); + xmlFree(namespaceURI); + xmlFree(prefix); + + if (count < 0) { + xmlListDelete(writer->nsstack); + writer->nsstack = NULL; + return -1; + } + sum += count; + } + } + return sum; +} + +/** * xmlFreeTextWriterNsStackEntry: * @lk: the xmlLinkPtr * @@ -4301,8 +4404,8 @@ rc = xmlStrcmp(p0->prefix, p1->prefix); - if (rc == 0) - rc = p0->elem == p1->elem; + if ((rc != 0) || (p0->elem != p1->elem)) + rc = -1; return rc; } @@ -4513,6 +4616,26 @@ } /** + * xmlTextWriterSetQuoteChar: + * @writer: the xmlTextWriterPtr + * @quotechar: the quote character + * + * Set the character used for quoting attributes. + * + * Returns -1 on error or 0 otherwise. + */ +int +xmlTextWriterSetQuoteChar(xmlTextWriterPtr writer, xmlChar quotechar) +{ + if ((writer == NULL) || ((quotechar != '\'') && (quotechar != '"'))) + return -1; + + writer->qchar = quotechar; + + return 0; +} + +/** * xmlTextWriterWriteIndent: * @writer: the xmlTextWriterPtr * @@ -4569,6 +4692,11 @@ sum = 0; switch (p->state) { case XML_TEXTWRITER_NAME: + /* Output namespace declarations */ + count = xmlTextWriterOutputNSDecl(writer); + if (count < 0) + return -1; + sum += count; extra[0] = '>'; p->state = XML_TEXTWRITER_TEXT; break; diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlwriter.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlwriter.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xmlwriter.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xmlwriter.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -1,4 +1,3 @@ - /* * Summary: text writing API for XML * Description: text writing API for XML @@ -69,11 +68,13 @@ XMLPUBFUN int XMLCALL xmlTextWriterEndComment(xmlTextWriterPtr writer); XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatComment(xmlTextWriterPtr writer, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(2,3); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(2,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteComment(xmlTextWriterPtr writer, const xmlChar * @@ -102,12 +103,14 @@ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatElement(xmlTextWriterPtr writer, const xmlChar * name, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(3,4); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer, const xmlChar * name, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(3,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteElement(xmlTextWriterPtr writer, const xmlChar * name, @@ -118,14 +121,16 @@ const xmlChar * prefix, const xmlChar * name, const xmlChar * namespaceURI, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(5,6); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer, const xmlChar * prefix, const xmlChar * name, const xmlChar * namespaceURI, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(5,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteElementNS(xmlTextWriterPtr writer, const xmlChar * @@ -141,10 +146,12 @@ */ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatRaw(xmlTextWriterPtr writer, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(2,3); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatRaw(xmlTextWriterPtr writer, - const char *format, va_list argptr); + const char *format, va_list argptr) + LIBXML_ATTR_FORMAT(2,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteRawLen(xmlTextWriterPtr writer, const xmlChar * content, int len); @@ -154,12 +161,14 @@ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatString(xmlTextWriterPtr writer, const char - *format, ...); + *format, ...) + LIBXML_ATTR_FORMAT(2,3); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatString(xmlTextWriterPtr writer, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(2,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteString(xmlTextWriterPtr writer, const xmlChar * content); @@ -193,12 +202,14 @@ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer, const xmlChar * name, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(3,4); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatAttribute(xmlTextWriterPtr writer, const xmlChar * name, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(3,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteAttribute(xmlTextWriterPtr writer, const xmlChar * name, @@ -209,14 +220,16 @@ const xmlChar * prefix, const xmlChar * name, const xmlChar * namespaceURI, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(5,6); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatAttributeNS(xmlTextWriterPtr writer, const xmlChar * prefix, const xmlChar * name, const xmlChar * namespaceURI, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(5,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteAttributeNS(xmlTextWriterPtr writer, const xmlChar * @@ -242,11 +255,13 @@ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatPI(xmlTextWriterPtr writer, const xmlChar * target, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(3,4); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatPI(xmlTextWriterPtr writer, const xmlChar * target, - const char *format, va_list argptr); + const char *format, va_list argptr) + LIBXML_ATTR_FORMAT(3,0); XMLPUBFUN int XMLCALL xmlTextWriterWritePI(xmlTextWriterPtr writer, const xmlChar * target, @@ -270,10 +285,12 @@ */ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatCDATA(xmlTextWriterPtr writer, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(2,3); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatCDATA(xmlTextWriterPtr writer, - const char *format, va_list argptr); + const char *format, va_list argptr) + LIBXML_ATTR_FORMAT(2,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteCDATA(xmlTextWriterPtr writer, const xmlChar * content); @@ -296,13 +313,15 @@ const xmlChar * name, const xmlChar * pubid, const xmlChar * sysid, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(5,6); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatDTD(xmlTextWriterPtr writer, const xmlChar * name, const xmlChar * pubid, const xmlChar * sysid, - const char *format, va_list argptr); + const char *format, va_list argptr) + LIBXML_ATTR_FORMAT(5,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteDTD(xmlTextWriterPtr writer, const xmlChar * name, @@ -332,12 +351,14 @@ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer, const xmlChar * name, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(3,4); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatDTDElement(xmlTextWriterPtr writer, const xmlChar * name, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(3,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDElement(xmlTextWriterPtr writer, const xmlChar * @@ -360,12 +381,14 @@ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer, const xmlChar * name, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(3,4); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriterPtr writer, const xmlChar * name, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(3,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDAttlist(xmlTextWriterPtr writer, const xmlChar * @@ -389,13 +412,15 @@ xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer, int pe, const xmlChar * name, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(4,5); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriterPtr writer, int pe, const xmlChar * name, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(4,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDInternalEntity(xmlTextWriterPtr writer, int pe, @@ -445,6 +470,10 @@ xmlTextWriterSetIndentString(xmlTextWriterPtr writer, const xmlChar * str); + XMLPUBFUN int XMLCALL + xmlTextWriterSetQuoteChar(xmlTextWriterPtr writer, xmlChar quotechar); + + /* * misc */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xpath.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xpath.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xpath.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xpath.c 2015-12-23 07:08:27.000000000 +0000 @@ -55,15 +55,26 @@ #include #endif +#include "buf.h" + #ifdef LIBXML_PATTERN_ENABLED #define XPATH_STREAMING #endif -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); +/** + * WITH_TIM_SORT: + * + * Use the Timsort algorithm provided in timsort.h to sort + * nodeset as this is a great improvement over the old Shell sort + * used in xmlXPathNodeSetSort() + */ +#define WITH_TIM_SORT + /* * XP_OPTIMIZED_NON_ELEM_COMPARISON: * If defined, this will use xmlXPathCmpNodesExt() instead of @@ -79,7 +90,7 @@ * XP_OPTIMIZED_FILTER_FIRST: * If defined, this will optimize expressions like "key('foo', 'val')[b][1]" * in a way, that it stop evaluation at the first node. -*/ +*/ #define XP_OPTIMIZED_FILTER_FIRST /* @@ -90,266 +101,624 @@ /* #define XP_DEBUG_OBJ_USAGE */ /* - * TODO: - * There are a few spots where some tests are done which depend upon ascii - * data. These should be enhanced for full UTF8 support (see particularly - * any use of the macros IS_ASCII_CHARACTER and IS_ASCII_DIGIT) + * XPATH_MAX_STEPS: + * when compiling an XPath expression we arbitrary limit the maximum + * number of step operation in the compiled expression. 1000000 is + * an insanely large value which should never be reached under normal + * circumstances */ - -#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) - -/************************************************************************ - * * - * Floating point stuff * - * * - ************************************************************************/ - -#ifndef TRIO_REPLACE_STDIO -#define TRIO_PUBLIC static -#endif -#include "trionan.c" +#define XPATH_MAX_STEPS 1000000 /* - * The lack of portability of this section of the libc is annoying ! - */ -double xmlXPathNAN = 0; -double xmlXPathPINF = 1; -double xmlXPathNINF = -1; -static double xmlXPathNZERO = 0; /* not exported from headers */ -static int xmlXPathInitialized = 0; - -/** - * xmlXPathInit: - * - * Initialize the XPath environment - */ -void -xmlXPathInit(void) { - if (xmlXPathInitialized) return; - - xmlXPathPINF = trio_pinf(); - xmlXPathNINF = trio_ninf(); - xmlXPathNAN = trio_nan(); - xmlXPathNZERO = trio_nzero(); - - xmlXPathInitialized = 1; -} - -/** - * xmlXPathIsNaN: - * @val: a double value - * - * Provides a portable isnan() function to detect whether a double - * is a NotaNumber. Based on trio code - * http://sourceforge.net/projects/ctrio/ - * - * Returns 1 if the value is a NaN, 0 otherwise - */ -int -xmlXPathIsNaN(double val) { - return(trio_isnan(val)); -} - -/** - * xmlXPathIsInf: - * @val: a double value - * - * Provides a portable isinf() function to detect whether a double - * is a +Infinite or -Infinite. Based on trio code - * http://sourceforge.net/projects/ctrio/ - * - * Returns 1 vi the value is +Infinite, -1 if -Infinite, 0 otherwise - */ -int -xmlXPathIsInf(double val) { - return(trio_isinf(val)); -} - -#endif /* SCHEMAS or XPATH */ -#ifdef LIBXML_XPATH_ENABLED -/** - * xmlXPathGetSign: - * @val: a double value - * - * Provides a portable function to detect the sign of a double - * Modified from trio code - * http://sourceforge.net/projects/ctrio/ - * - * Returns 1 if the value is Negative, 0 if positive + * XPATH_MAX_STACK_DEPTH: + * when evaluating an XPath expression we arbitrary limit the maximum + * number of object allowed to be pushed on the stack. 1000000 is + * an insanely large value which should never be reached under normal + * circumstances */ -static int -xmlXPathGetSign(double val) { - return(trio_signbit(val)); -} - +#define XPATH_MAX_STACK_DEPTH 1000000 /* - * TODO: when compatibility allows remove all "fake node libxslt" strings - * the test should just be name[0] = ' ' - */ -/* #define DEBUG */ -/* #define DEBUG_STEP */ -/* #define DEBUG_STEP_NTH */ -/* #define DEBUG_EXPR */ -/* #define DEBUG_EVAL_COUNTS */ - -static xmlNs xmlXPathXMLNamespaceStruct = { - NULL, - XML_NAMESPACE_DECL, - XML_XML_NAMESPACE, - BAD_CAST "xml", - NULL -}; -static xmlNsPtr xmlXPathXMLNamespace = &xmlXPathXMLNamespaceStruct; -#ifndef LIBXML_THREAD_ENABLED -/* - * Optimizer is disabled only when threaded apps are detected while - * the library ain't compiled for thread safety. - */ -static int xmlXPathDisableOptimizer = 0; -#endif - -/************************************************************************ - * * - * Error handling routines * - * * - ************************************************************************/ - -/** - * XP_ERRORNULL: - * @X: the error code - * - * Macro to raise an XPath error and return NULL. + * XPATH_MAX_NODESET_LENGTH: + * when evaluating an XPath expression nodesets are created and we + * arbitrary limit the maximum length of those node set. 10000000 is + * an insanely large value which should never be reached under normal + * circumstances, one would first need to construct an in memory tree + * with more than 10 millions nodes. */ -#define XP_ERRORNULL(X) \ - { xmlXPathErr(ctxt, X); return(NULL); } +#define XPATH_MAX_NODESET_LENGTH 10000000 /* - * The array xmlXPathErrorMessages corresponds to the enum xmlXPathError - */ -static const char *xmlXPathErrorMessages[] = { - "Ok\n", - "Number encoding\n", - "Unfinished literal\n", - "Start of literal\n", - "Expected $ for variable reference\n", - "Undefined variable\n", - "Invalid predicate\n", - "Invalid expression\n", - "Missing closing curly brace\n", - "Unregistered function\n", - "Invalid operand\n", - "Invalid type\n", - "Invalid number of arguments\n", - "Invalid context size\n", - "Invalid context position\n", - "Memory allocation error\n", - "Syntax error\n", - "Resource error\n", - "Sub resource error\n", - "Undefined namespace prefix\n", - "Encoding error\n", - "Char out of XML range\n", - "Invalid or incomplete context\n", - "?? Unknown error ??\n" /* Must be last in the list! */ -}; -#define MAXERRNO ((int)(sizeof(xmlXPathErrorMessages) / \ - sizeof(xmlXPathErrorMessages[0])) - 1) -/** - * xmlXPathErrMemory: - * @ctxt: an XPath context - * @extra: extra informations - * - * Handle a redefinition of attribute error + * TODO: + * There are a few spots where some tests are done which depend upon ascii + * data. These should be enhanced for full UTF8 support (see particularly + * any use of the macros IS_ASCII_CHARACTER and IS_ASCII_DIGIT) */ -static void -xmlXPathErrMemory(xmlXPathContextPtr ctxt, const char *extra) -{ - if (ctxt != NULL) { - if (extra) { - xmlChar buf[200]; - - xmlStrPrintf(buf, 200, - BAD_CAST "Memory allocation failed : %s\n", - extra); - ctxt->lastError.message = (char *) xmlStrdup(buf); - } else { - ctxt->lastError.message = (char *) - xmlStrdup(BAD_CAST "Memory allocation failed\n"); - } - ctxt->lastError.domain = XML_FROM_XPATH; - ctxt->lastError.code = XML_ERR_NO_MEMORY; - if (ctxt->error != NULL) - ctxt->error(ctxt->userData, &ctxt->lastError); - } else { - if (extra) - __xmlRaiseError(NULL, NULL, NULL, - NULL, NULL, XML_FROM_XPATH, - XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0, - extra, NULL, NULL, 0, 0, - "Memory allocation failed : %s\n", extra); - else - __xmlRaiseError(NULL, NULL, NULL, - NULL, NULL, XML_FROM_XPATH, - XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0, - NULL, NULL, NULL, 0, 0, - "Memory allocation failed\n"); - } -} +#ifdef XP_OPTIMIZED_NON_ELEM_COMPARISON /** - * xmlXPathPErrMemory: - * @ctxt: an XPath parser context - * @extra: extra informations + * xmlXPathCmpNodesExt: + * @node1: the first node + * @node2: the second node * - * Handle a redefinition of attribute error - */ -static void -xmlXPathPErrMemory(xmlXPathParserContextPtr ctxt, const char *extra) -{ - if (ctxt == NULL) - xmlXPathErrMemory(NULL, extra); - else { - ctxt->error = XPATH_MEMORY_ERROR; - xmlXPathErrMemory(ctxt->context, extra); - } -} - -/** - * xmlXPathErr: - * @ctxt: a XPath parser context - * @error: the error code + * Compare two nodes w.r.t document order. + * This one is optimized for handling of non-element nodes. * - * Handle an XPath error + * Returns -2 in case of error 1 if first point < second point, 0 if + * it's the same node, -1 otherwise */ -void -xmlXPathErr(xmlXPathParserContextPtr ctxt, int error) -{ - if ((error < 0) || (error > MAXERRNO)) - error = MAXERRNO; - if (ctxt == NULL) { - __xmlRaiseError(NULL, NULL, NULL, - NULL, NULL, XML_FROM_XPATH, - error + XML_XPATH_EXPRESSION_OK - XPATH_EXPRESSION_OK, - XML_ERR_ERROR, NULL, 0, - NULL, NULL, NULL, 0, 0, - xmlXPathErrorMessages[error]); - return; - } - ctxt->error = error; - if (ctxt->context == NULL) { - __xmlRaiseError(NULL, NULL, NULL, - NULL, NULL, XML_FROM_XPATH, - error + XML_XPATH_EXPRESSION_OK - XPATH_EXPRESSION_OK, - XML_ERR_ERROR, NULL, 0, - (const char *) ctxt->base, NULL, NULL, - ctxt->cur - ctxt->base, 0, - xmlXPathErrorMessages[error]); - return; - } +static int +xmlXPathCmpNodesExt(xmlNodePtr node1, xmlNodePtr node2) { + int depth1, depth2; + int misc = 0, precedence1 = 0, precedence2 = 0; + xmlNodePtr miscNode1 = NULL, miscNode2 = NULL; + xmlNodePtr cur, root; + long l1, l2; - /* cleanup current last error */ - xmlResetError(&ctxt->context->lastError); + if ((node1 == NULL) || (node2 == NULL)) + return(-2); + + if (node1 == node2) + return(0); + + /* + * a couple of optimizations which will avoid computations in most cases + */ + switch (node1->type) { + case XML_ELEMENT_NODE: + if (node2->type == XML_ELEMENT_NODE) { + if ((0 > (long) node1->content) && /* TODO: Would a != 0 suffice here? */ + (0 > (long) node2->content) && + (node1->doc == node2->doc)) + { + l1 = -((long) node1->content); + l2 = -((long) node2->content); + if (l1 < l2) + return(1); + if (l1 > l2) + return(-1); + } else + goto turtle_comparison; + } + break; + case XML_ATTRIBUTE_NODE: + precedence1 = 1; /* element is owner */ + miscNode1 = node1; + node1 = node1->parent; + misc = 1; + break; + case XML_TEXT_NODE: + case XML_CDATA_SECTION_NODE: + case XML_COMMENT_NODE: + case XML_PI_NODE: { + miscNode1 = node1; + /* + * Find nearest element node. + */ + if (node1->prev != NULL) { + do { + node1 = node1->prev; + if (node1->type == XML_ELEMENT_NODE) { + precedence1 = 3; /* element in prev-sibl axis */ + break; + } + if (node1->prev == NULL) { + precedence1 = 2; /* element is parent */ + /* + * URGENT TODO: Are there any cases, where the + * parent of such a node is not an element node? + */ + node1 = node1->parent; + break; + } + } while (1); + } else { + precedence1 = 2; /* element is parent */ + node1 = node1->parent; + } + if ((node1 == NULL) || (node1->type != XML_ELEMENT_NODE) || + (0 <= (long) node1->content)) { + /* + * Fallback for whatever case. + */ + node1 = miscNode1; + precedence1 = 0; + } else + misc = 1; + } + break; + case XML_NAMESPACE_DECL: + /* + * TODO: why do we return 1 for namespace nodes? + */ + return(1); + default: + break; + } + switch (node2->type) { + case XML_ELEMENT_NODE: + break; + case XML_ATTRIBUTE_NODE: + precedence2 = 1; /* element is owner */ + miscNode2 = node2; + node2 = node2->parent; + misc = 1; + break; + case XML_TEXT_NODE: + case XML_CDATA_SECTION_NODE: + case XML_COMMENT_NODE: + case XML_PI_NODE: { + miscNode2 = node2; + if (node2->prev != NULL) { + do { + node2 = node2->prev; + if (node2->type == XML_ELEMENT_NODE) { + precedence2 = 3; /* element in prev-sibl axis */ + break; + } + if (node2->prev == NULL) { + precedence2 = 2; /* element is parent */ + node2 = node2->parent; + break; + } + } while (1); + } else { + precedence2 = 2; /* element is parent */ + node2 = node2->parent; + } + if ((node2 == NULL) || (node2->type != XML_ELEMENT_NODE) || + (0 <= (long) node2->content)) + { + node2 = miscNode2; + precedence2 = 0; + } else + misc = 1; + } + break; + case XML_NAMESPACE_DECL: + return(1); + default: + break; + } + if (misc) { + if (node1 == node2) { + if (precedence1 == precedence2) { + /* + * The ugly case; but normally there aren't many + * adjacent non-element nodes around. + */ + cur = miscNode2->prev; + while (cur != NULL) { + if (cur == miscNode1) + return(1); + if (cur->type == XML_ELEMENT_NODE) + return(-1); + cur = cur->prev; + } + return (-1); + } else { + /* + * Evaluate based on higher precedence wrt to the element. + * TODO: This assumes attributes are sorted before content. + * Is this 100% correct? + */ + if (precedence1 < precedence2) + return(1); + else + return(-1); + } + } + /* + * Special case: One of the helper-elements is contained by the other. + * + * + * Text-1(precedence1 == 2) + * + * Text-6(precedence2 == 3) + * + */ + if ((precedence2 == 3) && (precedence1 > 1)) { + cur = node1->parent; + while (cur) { + if (cur == node2) + return(1); + cur = cur->parent; + } + } + if ((precedence1 == 3) && (precedence2 > 1)) { + cur = node2->parent; + while (cur) { + if (cur == node1) + return(-1); + cur = cur->parent; + } + } + } + + /* + * Speedup using document order if availble. + */ + if ((node1->type == XML_ELEMENT_NODE) && + (node2->type == XML_ELEMENT_NODE) && + (0 > (long) node1->content) && + (0 > (long) node2->content) && + (node1->doc == node2->doc)) { + + l1 = -((long) node1->content); + l2 = -((long) node2->content); + if (l1 < l2) + return(1); + if (l1 > l2) + return(-1); + } + +turtle_comparison: + + if (node1 == node2->prev) + return(1); + if (node1 == node2->next) + return(-1); + /* + * compute depth to root + */ + for (depth2 = 0, cur = node2; cur->parent != NULL; cur = cur->parent) { + if (cur->parent == node1) + return(1); + depth2++; + } + root = cur; + for (depth1 = 0, cur = node1; cur->parent != NULL; cur = cur->parent) { + if (cur->parent == node2) + return(-1); + depth1++; + } + /* + * Distinct document (or distinct entities :-( ) case. + */ + if (root != cur) { + return(-2); + } + /* + * get the nearest common ancestor. + */ + while (depth1 > depth2) { + depth1--; + node1 = node1->parent; + } + while (depth2 > depth1) { + depth2--; + node2 = node2->parent; + } + while (node1->parent != node2->parent) { + node1 = node1->parent; + node2 = node2->parent; + /* should not happen but just in case ... */ + if ((node1 == NULL) || (node2 == NULL)) + return(-2); + } + /* + * Find who's first. + */ + if (node1 == node2->prev) + return(1); + if (node1 == node2->next) + return(-1); + /* + * Speedup using document order if availble. + */ + if ((node1->type == XML_ELEMENT_NODE) && + (node2->type == XML_ELEMENT_NODE) && + (0 > (long) node1->content) && + (0 > (long) node2->content) && + (node1->doc == node2->doc)) { + + l1 = -((long) node1->content); + l2 = -((long) node2->content); + if (l1 < l2) + return(1); + if (l1 > l2) + return(-1); + } + + for (cur = node1->next;cur != NULL;cur = cur->next) + if (cur == node2) + return(1); + return(-1); /* assume there is no sibling list corruption */ +} +#endif /* XP_OPTIMIZED_NON_ELEM_COMPARISON */ + +/* + * Wrapper for the Timsort argorithm from timsort.h + */ +#ifdef WITH_TIM_SORT +#define SORT_NAME libxml_domnode +#define SORT_TYPE xmlNodePtr +/** + * wrap_cmp: + * @x: a node + * @y: another node + * + * Comparison function for the Timsort implementation + * + * Returns -2 in case of error -1 if first point < second point, 0 if + * it's the same node, +1 otherwise + */ +static +int wrap_cmp( xmlNodePtr x, xmlNodePtr y ); +#ifdef XP_OPTIMIZED_NON_ELEM_COMPARISON + static int wrap_cmp( xmlNodePtr x, xmlNodePtr y ) + { + int res = xmlXPathCmpNodesExt(x, y); + return res == -2 ? res : -res; + } +#else + static int wrap_cmp( xmlNodePtr x, xmlNodePtr y ) + { + int res = xmlXPathCmpNodes(x, y); + return res == -2 ? res : -res; + } +#endif +#define SORT_CMP(x, y) (wrap_cmp(x, y)) +#include "timsort.h" +#endif /* WITH_TIM_SORT */ + +#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) + +/************************************************************************ + * * + * Floating point stuff * + * * + ************************************************************************/ + +#ifndef TRIO_REPLACE_STDIO +#define TRIO_PUBLIC static +#endif +#include "trionan.c" + +/* + * The lack of portability of this section of the libc is annoying ! + */ +double xmlXPathNAN = 0; +double xmlXPathPINF = 1; +double xmlXPathNINF = -1; +static double xmlXPathNZERO = 0; /* not exported from headers */ +static int xmlXPathInitialized = 0; + +/** + * xmlXPathInit: + * + * Initialize the XPath environment + */ +void +xmlXPathInit(void) { + if (xmlXPathInitialized) return; + + xmlXPathPINF = trio_pinf(); + xmlXPathNINF = trio_ninf(); + xmlXPathNAN = trio_nan(); + xmlXPathNZERO = trio_nzero(); + + xmlXPathInitialized = 1; +} + +/** + * xmlXPathIsNaN: + * @val: a double value + * + * Provides a portable isnan() function to detect whether a double + * is a NotaNumber. Based on trio code + * http://sourceforge.net/projects/ctrio/ + * + * Returns 1 if the value is a NaN, 0 otherwise + */ +int +xmlXPathIsNaN(double val) { + return(trio_isnan(val)); +} + +/** + * xmlXPathIsInf: + * @val: a double value + * + * Provides a portable isinf() function to detect whether a double + * is a +Infinite or -Infinite. Based on trio code + * http://sourceforge.net/projects/ctrio/ + * + * Returns 1 vi the value is +Infinite, -1 if -Infinite, 0 otherwise + */ +int +xmlXPathIsInf(double val) { + return(trio_isinf(val)); +} + +#endif /* SCHEMAS or XPATH */ +#ifdef LIBXML_XPATH_ENABLED +/** + * xmlXPathGetSign: + * @val: a double value + * + * Provides a portable function to detect the sign of a double + * Modified from trio code + * http://sourceforge.net/projects/ctrio/ + * + * Returns 1 if the value is Negative, 0 if positive + */ +static int +xmlXPathGetSign(double val) { + return(trio_signbit(val)); +} + + +/* + * TODO: when compatibility allows remove all "fake node libxslt" strings + * the test should just be name[0] = ' ' + */ +#ifdef DEBUG_XPATH_EXPRESSION +#define DEBUG_STEP +#define DEBUG_EXPR +#define DEBUG_EVAL_COUNTS +#endif + +static xmlNs xmlXPathXMLNamespaceStruct = { + NULL, + XML_NAMESPACE_DECL, + XML_XML_NAMESPACE, + BAD_CAST "xml", + NULL, + NULL +}; +static xmlNsPtr xmlXPathXMLNamespace = &xmlXPathXMLNamespaceStruct; +#ifndef LIBXML_THREAD_ENABLED +/* + * Optimizer is disabled only when threaded apps are detected while + * the library ain't compiled for thread safety. + */ +static int xmlXPathDisableOptimizer = 0; +#endif + +/************************************************************************ + * * + * Error handling routines * + * * + ************************************************************************/ + +/** + * XP_ERRORNULL: + * @X: the error code + * + * Macro to raise an XPath error and return NULL. + */ +#define XP_ERRORNULL(X) \ + { xmlXPathErr(ctxt, X); return(NULL); } + +/* + * The array xmlXPathErrorMessages corresponds to the enum xmlXPathError + */ +static const char *xmlXPathErrorMessages[] = { + "Ok\n", + "Number encoding\n", + "Unfinished literal\n", + "Start of literal\n", + "Expected $ for variable reference\n", + "Undefined variable\n", + "Invalid predicate\n", + "Invalid expression\n", + "Missing closing curly brace\n", + "Unregistered function\n", + "Invalid operand\n", + "Invalid type\n", + "Invalid number of arguments\n", + "Invalid context size\n", + "Invalid context position\n", + "Memory allocation error\n", + "Syntax error\n", + "Resource error\n", + "Sub resource error\n", + "Undefined namespace prefix\n", + "Encoding error\n", + "Char out of XML range\n", + "Invalid or incomplete context\n", + "Stack usage error\n", + "Forbidden variable\n", + "?? Unknown error ??\n" /* Must be last in the list! */ +}; +#define MAXERRNO ((int)(sizeof(xmlXPathErrorMessages) / \ + sizeof(xmlXPathErrorMessages[0])) - 1) +/** + * xmlXPathErrMemory: + * @ctxt: an XPath context + * @extra: extra informations + * + * Handle a redefinition of attribute error + */ +static void +xmlXPathErrMemory(xmlXPathContextPtr ctxt, const char *extra) +{ + if (ctxt != NULL) { + if (extra) { + xmlChar buf[200]; + + xmlStrPrintf(buf, 200, + BAD_CAST "Memory allocation failed : %s\n", + extra); + ctxt->lastError.message = (char *) xmlStrdup(buf); + } else { + ctxt->lastError.message = (char *) + xmlStrdup(BAD_CAST "Memory allocation failed\n"); + } + ctxt->lastError.domain = XML_FROM_XPATH; + ctxt->lastError.code = XML_ERR_NO_MEMORY; + if (ctxt->error != NULL) + ctxt->error(ctxt->userData, &ctxt->lastError); + } else { + if (extra) + __xmlRaiseError(NULL, NULL, NULL, + NULL, NULL, XML_FROM_XPATH, + XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0, + extra, NULL, NULL, 0, 0, + "Memory allocation failed : %s\n", extra); + else + __xmlRaiseError(NULL, NULL, NULL, + NULL, NULL, XML_FROM_XPATH, + XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0, + NULL, NULL, NULL, 0, 0, + "Memory allocation failed\n"); + } +} + +/** + * xmlXPathPErrMemory: + * @ctxt: an XPath parser context + * @extra: extra informations + * + * Handle a redefinition of attribute error + */ +static void +xmlXPathPErrMemory(xmlXPathParserContextPtr ctxt, const char *extra) +{ + if (ctxt == NULL) + xmlXPathErrMemory(NULL, extra); + else { + ctxt->error = XPATH_MEMORY_ERROR; + xmlXPathErrMemory(ctxt->context, extra); + } +} + +/** + * xmlXPathErr: + * @ctxt: a XPath parser context + * @error: the error code + * + * Handle an XPath error + */ +void +xmlXPathErr(xmlXPathParserContextPtr ctxt, int error) +{ + if ((error < 0) || (error > MAXERRNO)) + error = MAXERRNO; + if (ctxt == NULL) { + __xmlRaiseError(NULL, NULL, NULL, + NULL, NULL, XML_FROM_XPATH, + error + XML_XPATH_EXPRESSION_OK - XPATH_EXPRESSION_OK, + XML_ERR_ERROR, NULL, 0, + NULL, NULL, NULL, 0, 0, + "%s", xmlXPathErrorMessages[error]); + return; + } + ctxt->error = error; + if (ctxt->context == NULL) { + __xmlRaiseError(NULL, NULL, NULL, + NULL, NULL, XML_FROM_XPATH, + error + XML_XPATH_EXPRESSION_OK - XPATH_EXPRESSION_OK, + XML_ERR_ERROR, NULL, 0, + (const char *) ctxt->base, NULL, NULL, + ctxt->cur - ctxt->base, 0, + "%s", xmlXPathErrorMessages[error]); + return; + } + + /* cleanup current last error */ + xmlResetError(&ctxt->context->lastError); ctxt->context->lastError.domain = XML_FROM_XPATH; ctxt->context->lastError.code = error + XML_XPATH_EXPRESSION_OK - @@ -368,7 +737,7 @@ XML_ERR_ERROR, NULL, 0, (const char *) ctxt->base, NULL, NULL, ctxt->cur - ctxt->base, 0, - xmlXPathErrorMessages[error]); + "%s", xmlXPathErrorMessages[error]); } } @@ -389,9 +758,9 @@ } /************************************************************************ - * * - * Utilities * - * * + * * + * Utilities * + * * ************************************************************************/ /** @@ -411,15 +780,14 @@ * and here, we should make the functions public. */ static int -xmlPointerListAddSize(xmlPointerListPtr list, +xmlPointerListAddSize(xmlPointerListPtr list, void *item, int initialSize) { if (list->items == NULL) { if (initialSize <= 0) initialSize = 1; - list->items = (void **) xmlMalloc( - initialSize * sizeof(void *)); + list->items = (void **) xmlMalloc(initialSize * sizeof(void *)); if (list->items == NULL) { xmlXPathErrMemory(NULL, "xmlPointerListCreate: allocating item\n"); @@ -428,12 +796,17 @@ list->number = 0; list->size = initialSize; } else if (list->size <= list->number) { + if (list->size > 50000000) { + xmlXPathErrMemory(NULL, + "xmlPointerListAddSize: re-allocating item\n"); + return(-1); + } list->size *= 2; list->items = (void **) xmlRealloc(list->items, list->size * sizeof(void *)); if (list->items == NULL) { xmlXPathErrMemory(NULL, - "xmlPointerListCreate: re-allocating item\n"); + "xmlPointerListAddSize: re-allocating item\n"); list->size = 0; return(-1); } @@ -485,9 +858,9 @@ } /************************************************************************ - * * - * Parser Types * - * * + * * + * Parser Types * + * * ************************************************************************/ /* @@ -532,7 +905,7 @@ AXIS_PARENT, AXIS_PRECEDING, AXIS_PRECEDING_SIBLING, - AXIS_SELF + AXIS_SELF } xmlXPathAxisVal; typedef enum { @@ -548,11 +921,9 @@ NODE_TYPE_NODE = 0, NODE_TYPE_COMMENT = XML_COMMENT_NODE, NODE_TYPE_TEXT = XML_TEXT_NODE, - NODE_TYPE_PI = XML_PI_NODE + NODE_TYPE_PI = XML_PI_NODE } xmlXPathTypeVal; -#define XP_REWRITE_DOS_CHILD_ELEM 1 - typedef struct _xmlXPathStepOp xmlXPathStepOp; typedef xmlXPathStepOp *xmlXPathStepOpPtr; struct _xmlXPathStepOp { @@ -566,7 +937,6 @@ void *value5; void *cache; void *cacheURI; - int rewriteType; }; struct _xmlXPathCompExpr { @@ -586,9 +956,9 @@ }; /************************************************************************ - * * - * Forward declarations * - * * + * * + * Forward declarations * + * * ************************************************************************/ static void xmlXPathFreeValueTree(xmlNodeSetPtr obj); @@ -603,9 +973,9 @@ int isPredicate); /************************************************************************ - * * - * Parser Type functions * - * * + * * + * Parser Type functions * + * * ************************************************************************/ /** @@ -721,6 +1091,10 @@ if (comp->nbStep >= comp->maxStep) { xmlXPathStepOp *real; + if (comp->maxStep >= XPATH_MAX_STEPS) { + xmlXPathErrMemory(NULL, "adding step\n"); + return(-1); + } comp->maxStep *= 2; real = (xmlXPathStepOp *) xmlRealloc(comp->steps, comp->maxStep * sizeof(xmlXPathStepOp)); @@ -732,7 +1106,6 @@ comp->steps = real; } comp->last = comp->nbStep; - comp->steps[comp->nbStep].rewriteType = 0; comp->steps[comp->nbStep].ch1 = ch1; comp->steps[comp->nbStep].ch2 = ch2; comp->steps[comp->nbStep].op = op; @@ -795,19 +1168,19 @@ xmlXPathCompExprAdd(ctxt->comp, ctxt->comp->last, -1, \ (op), (val), (val2), (val3), (val4), (val5)) -#define PUSH_LEAVE_EXPR(op, val, val2) \ +#define PUSH_LEAVE_EXPR(op, val, val2) \ xmlXPathCompExprAdd(ctxt->comp, -1, -1, (op), (val), (val2), 0 ,NULL ,NULL) -#define PUSH_UNARY_EXPR(op, ch, val, val2) \ +#define PUSH_UNARY_EXPR(op, ch, val, val2) \ xmlXPathCompExprAdd(ctxt->comp, (ch), -1, (op), (val), (val2), 0 ,NULL ,NULL) -#define PUSH_BINARY_EXPR(op, ch1, ch2, val, val2) \ +#define PUSH_BINARY_EXPR(op, ch1, ch2, val, val2) \ xmlXPathCompExprAdd(ctxt->comp, (ch1), (ch2), (op), \ (val), (val2), 0 ,NULL ,NULL) /************************************************************************ * * - * XPath object cache structures * + * XPath object cache structures * * * ************************************************************************/ @@ -839,8 +1212,8 @@ int dbgCachedLocset; int dbgCachedUsers; int dbgCachedXSLTTree; - int dbgCachedUndefined; - + int dbgCachedUndefined; + int dbgReusedAll; int dbgReusedNodeset; @@ -859,11 +1232,11 @@ /************************************************************************ * * - * Debugging related functions * + * Debugging related functions * * * ************************************************************************/ -#define STRANGE \ +#define STRANGE \ xmlGenericError(xmlGenericErrorContext, \ "Internal error at %s:%d\n", \ __FILE__, __LINE__); @@ -878,15 +1251,15 @@ shift[2 * i] = shift[2 * i + 1] = ' '; shift[2 * i] = shift[2 * i + 1] = 0; if (cur == NULL) { - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "Node is NULL !\n"); return; - + } if ((cur->type == XML_DOCUMENT_NODE) || (cur->type == XML_HTML_DOCUMENT_NODE)) { - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, " /\n"); } else if (cur->type == XML_ATTRIBUTE_NODE) xmlDebugDumpAttr(output, (xmlAttrPtr)cur, depth); @@ -903,10 +1276,10 @@ shift[2 * i] = shift[2 * i + 1] = ' '; shift[2 * i] = shift[2 * i + 1] = 0; if (cur == NULL) { - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "Node is NULL !\n"); return; - + } while (cur != NULL) { @@ -926,16 +1299,16 @@ shift[2 * i] = shift[2 * i + 1] = 0; if (cur == NULL) { - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "NodeSet is NULL !\n"); return; - + } if (cur != NULL) { fprintf(output, "Set contains %d nodes:\n", cur->nodeNr); for (i = 0;i < cur->nodeNr;i++) { - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "%d", i + 1); xmlXPathDebugDumpNode(output, cur->nodeTab[i], depth + 1); } @@ -952,13 +1325,13 @@ shift[2 * i] = shift[2 * i + 1] = 0; if ((cur == NULL) || (cur->nodeNr == 0) || (cur->nodeTab[0] == NULL)) { - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "Value Tree is NULL !\n"); return; - + } - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "%d", i + 1); xmlXPathDebugDumpNodeList(output, cur->nodeTab[0]->children, depth + 1); } @@ -973,14 +1346,14 @@ shift[2 * i] = shift[2 * i + 1] = 0; if (cur == NULL) { - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "LocationSet is NULL !\n"); return; - + } for (i = 0;i < cur->locNr;i++) { - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "%d : ", i + 1); xmlXPathDebugDumpObject(output, cur->locTab[i], depth + 1); } @@ -1007,7 +1380,7 @@ shift[2 * i] = shift[2 * i + 1] = 0; - fprintf(output, shift); + fprintf(output, "%s", shift); if (cur == NULL) { fprintf(output, "Object is empty (NULL)\n"); @@ -1062,7 +1435,7 @@ if ((cur->user2 == NULL) || ((cur->user2 == cur->user) && (cur->index == cur->index2))) { fprintf(output, "Object is a collapsed range :\n"); - fprintf(output, shift); + fprintf(output, "%s", shift); if (cur->index >= 0) fprintf(output, "index %d in ", cur->index); fprintf(output, "node\n"); @@ -1070,14 +1443,14 @@ depth + 1); } else { fprintf(output, "Object is a range :\n"); - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "From "); if (cur->index >= 0) fprintf(output, "index %d in ", cur->index); fprintf(output, "node\n"); xmlXPathDebugDumpNode(output, (xmlNodePtr) cur->user, depth + 1); - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "To "); if (cur->index2 >= 0) fprintf(output, "index %d in ", cur->index2); @@ -1110,7 +1483,7 @@ shift[2 * i] = shift[2 * i + 1] = ' '; shift[2 * i] = shift[2 * i + 1] = 0; - fprintf(output, shift); + fprintf(output, "%s", shift); if (op == NULL) { fprintf(output, "Step is NULL\n"); return; @@ -1297,7 +1670,7 @@ shift[2 * i] = shift[2 * i + 1] = ' '; shift[2 * i] = shift[2 * i + 1] = 0; - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "Compiled Expression : %d elements\n", comp->nbStep); @@ -1332,7 +1705,7 @@ static int xmlXPathDebugObjTotalLocset = 0; static int xmlXPathDebugObjTotalUsers = 0; static int xmlXPathDebugObjTotalXSLTTree = 0; -static int xmlXPathDebugObjTotalAll = 0; +static int xmlXPathDebugObjTotalAll = 0; static int xmlXPathDebugObjMaxUndefined = 0; static int xmlXPathDebugObjMaxNodeset = 0; @@ -1365,7 +1738,7 @@ cache->dbgCachedLocset = 0; cache->dbgCachedUsers = 0; cache->dbgCachedXSLTTree = 0; - cache->dbgCachedUndefined = 0; + cache->dbgCachedUndefined = 0; cache->dbgReusedAll = 0; cache->dbgReusedNodeset = 0; @@ -1379,7 +1752,7 @@ cache->dbgReusedXSLTTree = 0; cache->dbgReusedUndefined = 0; } - } + } xmlXPathDebugObjCounterUndefined = 0; xmlXPathDebugObjCounterNodeset = 0; @@ -1392,7 +1765,7 @@ xmlXPathDebugObjCounterUsers = 0; xmlXPathDebugObjCounterXSLTTree = 0; xmlXPathDebugObjCounterAll = 0; - + xmlXPathDebugObjTotalUndefined = 0; xmlXPathDebugObjTotalNodeset = 0; xmlXPathDebugObjTotalBool = 0; @@ -1403,7 +1776,7 @@ xmlXPathDebugObjTotalLocset = 0; xmlXPathDebugObjTotalUsers = 0; xmlXPathDebugObjTotalXSLTTree = 0; - xmlXPathDebugObjTotalAll = 0; + xmlXPathDebugObjTotalAll = 0; xmlXPathDebugObjMaxUndefined = 0; xmlXPathDebugObjMaxNodeset = 0; @@ -1429,10 +1802,10 @@ if (ctxt->cache != NULL) { xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; - + isCached = 1; - - cache->dbgReusedAll++; + + cache->dbgReusedAll++; switch (objType) { case XPATH_UNDEFINED: cache->dbgReusedUndefined++; @@ -1466,7 +1839,7 @@ break; default: break; - } + } } } @@ -1474,7 +1847,7 @@ case XPATH_UNDEFINED: if (! isCached) xmlXPathDebugObjTotalUndefined++; - xmlXPathDebugObjCounterUndefined++; + xmlXPathDebugObjCounterUndefined++; if (xmlXPathDebugObjCounterUndefined > xmlXPathDebugObjMaxUndefined) xmlXPathDebugObjMaxUndefined = @@ -1483,7 +1856,7 @@ case XPATH_NODESET: if (! isCached) xmlXPathDebugObjTotalNodeset++; - xmlXPathDebugObjCounterNodeset++; + xmlXPathDebugObjCounterNodeset++; if (xmlXPathDebugObjCounterNodeset > xmlXPathDebugObjMaxNodeset) xmlXPathDebugObjMaxNodeset = @@ -1492,7 +1865,7 @@ case XPATH_BOOLEAN: if (! isCached) xmlXPathDebugObjTotalBool++; - xmlXPathDebugObjCounterBool++; + xmlXPathDebugObjCounterBool++; if (xmlXPathDebugObjCounterBool > xmlXPathDebugObjMaxBool) xmlXPathDebugObjMaxBool = @@ -1501,7 +1874,7 @@ case XPATH_NUMBER: if (! isCached) xmlXPathDebugObjTotalNumber++; - xmlXPathDebugObjCounterNumber++; + xmlXPathDebugObjCounterNumber++; if (xmlXPathDebugObjCounterNumber > xmlXPathDebugObjMaxNumber) xmlXPathDebugObjMaxNumber = @@ -1510,7 +1883,7 @@ case XPATH_STRING: if (! isCached) xmlXPathDebugObjTotalString++; - xmlXPathDebugObjCounterString++; + xmlXPathDebugObjCounterString++; if (xmlXPathDebugObjCounterString > xmlXPathDebugObjMaxString) xmlXPathDebugObjMaxString = @@ -1519,7 +1892,7 @@ case XPATH_POINT: if (! isCached) xmlXPathDebugObjTotalPoint++; - xmlXPathDebugObjCounterPoint++; + xmlXPathDebugObjCounterPoint++; if (xmlXPathDebugObjCounterPoint > xmlXPathDebugObjMaxPoint) xmlXPathDebugObjMaxPoint = @@ -1546,7 +1919,7 @@ case XPATH_USERS: if (! isCached) xmlXPathDebugObjTotalUsers++; - xmlXPathDebugObjCounterUsers++; + xmlXPathDebugObjCounterUsers++; if (xmlXPathDebugObjCounterUsers > xmlXPathDebugObjMaxUsers) xmlXPathDebugObjMaxUsers = @@ -1555,7 +1928,7 @@ case XPATH_XSLT_TREE: if (! isCached) xmlXPathDebugObjTotalXSLTTree++; - xmlXPathDebugObjCounterXSLTTree++; + xmlXPathDebugObjCounterXSLTTree++; if (xmlXPathDebugObjCounterXSLTTree > xmlXPathDebugObjMaxXSLTTree) xmlXPathDebugObjMaxXSLTTree = @@ -1584,8 +1957,8 @@ xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; - isCached = 1; - + isCached = 1; + cache->dbgCachedAll++; switch (objType) { case XPATH_UNDEFINED: @@ -1621,7 +1994,7 @@ default: break; } - + } } switch (objType) { @@ -1657,7 +2030,7 @@ break; default: break; - } + } xmlXPathDebugObjCounterAll--; } @@ -1680,7 +2053,7 @@ reqNumber = xmlXPathDebugObjTotalNumber; reqXSLTTree = xmlXPathDebugObjTotalXSLTTree; reqUndefined = xmlXPathDebugObjTotalUndefined; - + printf("# XPath object usage:\n"); if (ctxt != NULL) { @@ -1702,7 +2075,7 @@ reqXSLTTree += reXSLTTree; reUndefined = cache->dbgReusedUndefined; reqUndefined += reUndefined; - + caAll = cache->dbgCachedAll; caBool = cache->dbgCachedBool; caNodeset = cache->dbgCachedNodeset; @@ -1710,7 +2083,7 @@ caNumber = cache->dbgCachedNumber; caXSLTTree = cache->dbgCachedXSLTTree; caUndefined = cache->dbgCachedUndefined; - + if (cache->nodesetObjs) leftObjs -= cache->nodesetObjs->number; if (cache->stringObjs) @@ -1723,8 +2096,8 @@ leftObjs -= cache->miscObjs->number; } } - - printf("# all\n"); + + printf("# all\n"); printf("# total : %d\n", reqAll); printf("# left : %d\n", leftObjs); printf("# created: %d\n", xmlXPathDebugObjTotalAll); @@ -1847,7 +2220,7 @@ if (cache->numberObjs) xmlXPathCacheFreeObjectList(cache->numberObjs); if (cache->miscObjs) - xmlXPathCacheFreeObjectList(cache->miscObjs); + xmlXPathCacheFreeObjectList(cache->miscObjs); xmlFree(cache); } @@ -1856,7 +2229,7 @@ * * @ctxt: the XPath context * @active: enables/disables (creates/frees) the cache - * @value: a value with semantics dependant on @options + * @value: a value with semantics dependant on @options * @options: options (currently only the value 0 is used) * * Creates/frees an object cache on the XPath context. @@ -1883,7 +2256,7 @@ return(-1); if (active) { xmlXPathContextCachePtr cache; - + if (ctxt->cache == NULL) { ctxt->cache = xmlXPathNewCache(); if (ctxt->cache == NULL) @@ -1918,7 +2291,7 @@ */ static xmlXPathObjectPtr xmlXPathCacheWrapNodeSet(xmlXPathContextPtr ctxt, xmlNodeSetPtr val) -{ +{ if ((ctxt != NULL) && (ctxt->cache != NULL)) { xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; @@ -1927,7 +2300,7 @@ (cache->miscObjs->number != 0)) { xmlXPathObjectPtr ret; - + ret = (xmlXPathObjectPtr) cache->miscObjs->items[--cache->miscObjs->number]; ret->type = XPATH_NODESET; @@ -1935,12 +2308,12 @@ #ifdef XP_DEBUG_OBJ_USAGE xmlXPathDebugObjUsageRequested(ctxt, XPATH_NODESET); #endif - return(ret); + return(ret); } } - + return(xmlXPathWrapNodeSet(val)); - + } /** @@ -1955,16 +2328,16 @@ */ static xmlXPathObjectPtr xmlXPathCacheWrapString(xmlXPathContextPtr ctxt, xmlChar *val) -{ +{ if ((ctxt != NULL) && (ctxt->cache != NULL)) { xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; if ((cache->stringObjs != NULL) && (cache->stringObjs->number != 0)) { - + xmlXPathObjectPtr ret; - + ret = (xmlXPathObjectPtr) cache->stringObjs->items[--cache->stringObjs->number]; ret->type = XPATH_STRING; @@ -2013,20 +2386,20 @@ if ((cache->nodesetObjs != NULL) && (cache->nodesetObjs->number != 0)) - { + { xmlXPathObjectPtr ret; /* * Use the nodset-cache. - */ + */ ret = (xmlXPathObjectPtr) cache->nodesetObjs->items[--cache->nodesetObjs->number]; ret->type = XPATH_NODESET; ret->boolval = 0; - if (val) { + if (val) { if ((ret->nodesetval->nodeMax == 0) || (val->type == XML_NAMESPACE_DECL)) { - xmlXPathNodeSetAddUnique(ret->nodesetval, val); + xmlXPathNodeSetAddUnique(ret->nodesetval, val); } else { ret->nodesetval->nodeTab[0] = val; ret->nodesetval->nodeNr = 1; @@ -2050,6 +2423,11 @@ ret->type = XPATH_NODESET; ret->boolval = 0; ret->nodesetval = xmlXPathNodeSetCreate(val); + if (ret->nodesetval == NULL) { + ctxt->lastError.domain = XML_FROM_XPATH; + ctxt->lastError.code = XML_ERR_NO_MEMORY; + return(NULL); + } #ifdef XP_DEBUG_OBJ_USAGE xmlXPathDebugObjUsageRequested(ctxt, XPATH_NODESET); #endif @@ -2071,15 +2449,15 @@ */ static xmlXPathObjectPtr xmlXPathCacheNewCString(xmlXPathContextPtr ctxt, const char *val) -{ +{ if ((ctxt != NULL) && (ctxt->cache)) { xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; if ((cache->stringObjs != NULL) && (cache->stringObjs->number != 0)) - { + { xmlXPathObjectPtr ret; - + ret = (xmlXPathObjectPtr) cache->stringObjs->items[--cache->stringObjs->number]; @@ -2120,15 +2498,15 @@ */ static xmlXPathObjectPtr xmlXPathCacheNewString(xmlXPathContextPtr ctxt, const xmlChar *val) -{ +{ if ((ctxt != NULL) && (ctxt->cache)) { xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; if ((cache->stringObjs != NULL) && (cache->stringObjs->number != 0)) - { + { xmlXPathObjectPtr ret; - + ret = (xmlXPathObjectPtr) cache->stringObjs->items[--cache->stringObjs->number]; ret->type = XPATH_STRING; @@ -2174,15 +2552,15 @@ */ static xmlXPathObjectPtr xmlXPathCacheNewBoolean(xmlXPathContextPtr ctxt, int val) -{ +{ if ((ctxt != NULL) && (ctxt->cache)) { xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; if ((cache->booleanObjs != NULL) && (cache->booleanObjs->number != 0)) - { + { xmlXPathObjectPtr ret; - + ret = (xmlXPathObjectPtr) cache->booleanObjs->items[--cache->booleanObjs->number]; ret->type = XPATH_BOOLEAN; @@ -2228,9 +2606,9 @@ if ((cache->numberObjs != NULL) && (cache->numberObjs->number != 0)) - { + { xmlXPathObjectPtr ret; - + ret = (xmlXPathObjectPtr) cache->numberObjs->items[--cache->numberObjs->number]; ret->type = XPATH_NUMBER; @@ -2272,7 +2650,7 @@ static xmlXPathObjectPtr xmlXPathCacheConvertString(xmlXPathContextPtr ctxt, xmlXPathObjectPtr val) { - xmlChar *res = NULL; + xmlChar *res = NULL; if (val == NULL) return(xmlXPathCacheNewCString(ctxt, "")); @@ -2356,7 +2734,7 @@ static xmlXPathObjectPtr xmlXPathCacheConvertBoolean(xmlXPathContextPtr ctxt, xmlXPathObjectPtr val) { xmlXPathObjectPtr ret; - + if (val == NULL) return(xmlXPathCacheNewBoolean(ctxt, 0)); if (val->type == XPATH_BOOLEAN) @@ -2380,7 +2758,7 @@ static xmlXPathObjectPtr xmlXPathCacheConvertNumber(xmlXPathContextPtr ctxt, xmlXPathObjectPtr val) { xmlXPathObjectPtr ret; - + if (val == NULL) return(xmlXPathCacheNewFloat(ctxt, 0.0)); if (val->type == XPATH_NUMBER) @@ -2392,11 +2770,47 @@ /************************************************************************ * * - * Parser stacks related functions and macros * + * Parser stacks related functions and macros * * * ************************************************************************/ /** + * xmlXPathSetFrame: + * @ctxt: an XPath parser context + * + * Set the callee evaluation frame + * + * Returns the previous frame value to be restored once done + */ +static int +xmlXPathSetFrame(xmlXPathParserContextPtr ctxt) { + int ret; + + if (ctxt == NULL) + return(0); + ret = ctxt->valueFrame; + ctxt->valueFrame = ctxt->valueNr; + return(ret); +} + +/** + * xmlXPathPopFrame: + * @ctxt: an XPath parser context + * @frame: the previous frame value + * + * Remove the callee evaluation frame + */ +static void +xmlXPathPopFrame(xmlXPathParserContextPtr ctxt, int frame) { + if (ctxt == NULL) + return; + if (ctxt->valueNr < ctxt->valueFrame) { + xmlXPatherror(ctxt, __FILE__, __LINE__, XPATH_STACK_ERROR); + } + ctxt->valueFrame = frame; +} + +/** * valuePop: * @ctxt: an XPath evaluation context * @@ -2411,6 +2825,12 @@ if ((ctxt == NULL) || (ctxt->valueNr <= 0)) return (NULL); + + if (ctxt->valueNr <= ctxt->valueFrame) { + xmlXPatherror(ctxt, __FILE__, __LINE__, XPATH_STACK_ERROR); + return (NULL); + } + ctxt->valueNr--; if (ctxt->valueNr > 0) ctxt->value = ctxt->valueTab[ctxt->valueNr - 1]; @@ -2436,11 +2856,17 @@ if (ctxt->valueNr >= ctxt->valueMax) { xmlXPathObjectPtr *tmp; + if (ctxt->valueMax >= XPATH_MAX_STACK_DEPTH) { + xmlXPathErrMemory(NULL, "XPath stack depth limit reached\n"); + ctxt->error = XPATH_MEMORY_ERROR; + return (0); + } tmp = (xmlXPathObjectPtr *) xmlRealloc(ctxt->valueTab, 2 * ctxt->valueMax * sizeof(ctxt->valueTab[0])); if (tmp == NULL) { - xmlGenericError(xmlGenericErrorContext, "realloc failed !\n"); + xmlXPathErrMemory(NULL, "pushing value\n"); + ctxt->error = XPATH_MEMORY_ERROR; return (0); } ctxt->valueMax *= 2; @@ -2631,7 +3057,7 @@ #define NEXTL(l) ctxt->cur += l -#define SKIP_BLANKS \ +#define SKIP_BLANKS \ while (IS_BLANK_CH(*(ctxt->cur))) NEXT #define CURRENT (*ctxt->cur) @@ -2647,9 +3073,10 @@ #define UPPER_DOUBLE 1E9 #define LOWER_DOUBLE 1E-5 +#define LOWER_DOUBLE_EXP 5 #define INTEGER_DIGITS DBL_DIG -#define FRACTION_DIGITS (DBL_DIG + 1) +#define FRACTION_DIGITS (DBL_DIG + 1 + (LOWER_DOUBLE_EXP)) #define EXPONENT_DIGITS (3 + 2) /** @@ -2700,8 +3127,16 @@ *ptr = 0; } } else { - /* 3 is sign, decimal point, and terminating zero */ - char work[DBL_DIG + EXPONENT_DIGITS + 3]; + /* + For the dimension of work, + DBL_DIG is number of significant digits + EXPONENT is only needed for "scientific notation" + 3 is sign, decimal point, and terminating zero + LOWER_DOUBLE_EXP is max number of leading zeroes in fraction + Note that this dimension is slightly (a few characters) + larger than actually necessary. + */ + char work[DBL_DIG + EXPONENT_DIGITS + 3 + LOWER_DOUBLE_EXP]; int integer_place, fraction_place; char *ptr; char *after_fraction; @@ -2724,24 +3159,31 @@ size = snprintf(work, sizeof(work),"%*.*e", integer_place, fraction_place, number); while ((size > 0) && (work[size] != 'e')) size--; - after_fraction = work + size; } else { /* Use regular notation */ - if (absolute_value > 0.0) - integer_place = 1 + (int)log10(absolute_value); - else - integer_place = 0; - fraction_place = (integer_place > 0) - ? DBL_DIG - integer_place - : DBL_DIG; + if (absolute_value > 0.0) { + integer_place = (int)log10(absolute_value); + if (integer_place > 0) + fraction_place = DBL_DIG - integer_place - 1; + else + fraction_place = DBL_DIG - integer_place; + } else { + fraction_place = 1; + } size = snprintf(work, sizeof(work), "%0.*f", fraction_place, number); - after_fraction = work + size; + } + + /* Remove leading spaces sometimes inserted by snprintf */ + while (work[0] == ' ') { + for (ptr = &work[0];(ptr[0] = ptr[1]);ptr++); + size--; } /* Remove fractional trailing zeroes */ + after_fraction = work + size; ptr = after_fraction; while (*(--ptr) == '0') ; @@ -2766,410 +3208,127 @@ * * * Routines to handle NodeSets * * * - ************************************************************************/ - -/** - * xmlXPathOrderDocElems: - * @doc: an input document - * - * Call this routine to speed up XPath computation on static documents. - * This stamps all the element nodes with the document order - * Like for line information, the order is kept in the element->content - * field, the value stored is actually - the node number (starting at -1) - * to be able to differentiate from line numbers. - * - * Returns the number of elements found in the document or -1 in case - * of error. - */ -long -xmlXPathOrderDocElems(xmlDocPtr doc) { - long count = 0; - xmlNodePtr cur; - - if (doc == NULL) - return(-1); - cur = doc->children; - while (cur != NULL) { - if (cur->type == XML_ELEMENT_NODE) { - cur->content = (void *) (-(++count)); - if (cur->children != NULL) { - cur = cur->children; - continue; - } - } - if (cur->next != NULL) { - cur = cur->next; - continue; - } - do { - cur = cur->parent; - if (cur == NULL) - break; - if (cur == (xmlNodePtr) doc) { - cur = NULL; - break; - } - if (cur->next != NULL) { - cur = cur->next; - break; - } - } while (cur != NULL); - } - return(count); -} - -/** - * xmlXPathCmpNodes: - * @node1: the first node - * @node2: the second node - * - * Compare two nodes w.r.t document order - * - * Returns -2 in case of error 1 if first point < second point, 0 if - * it's the same node, -1 otherwise - */ -int -xmlXPathCmpNodes(xmlNodePtr node1, xmlNodePtr node2) { - int depth1, depth2; - int attr1 = 0, attr2 = 0; - xmlNodePtr attrNode1 = NULL, attrNode2 = NULL; - xmlNodePtr cur, root; - - if ((node1 == NULL) || (node2 == NULL)) - return(-2); - /* - * a couple of optimizations which will avoid computations in most cases - */ - if (node1->type == XML_ATTRIBUTE_NODE) { - attr1 = 1; - attrNode1 = node1; - node1 = node1->parent; - } - if (node2->type == XML_ATTRIBUTE_NODE) { - attr2 = 1; - attrNode2 = node2; - node2 = node2->parent; - } - if (node1 == node2) { - if (attr1 == attr2) { - /* not required, but we keep attributes in order */ - if (attr1 != 0) { - cur = attrNode2->prev; - while (cur != NULL) { - if (cur == attrNode1) - return (1); - cur = cur->prev; - } - return (-1); - } - return(0); - } - if (attr2 == 1) - return(1); - return(-1); - } - if ((node1->type == XML_NAMESPACE_DECL) || - (node2->type == XML_NAMESPACE_DECL)) - return(1); - if (node1 == node2->prev) - return(1); - if (node1 == node2->next) - return(-1); - - /* - * Speedup using document order if availble. - */ - if ((node1->type == XML_ELEMENT_NODE) && - (node2->type == XML_ELEMENT_NODE) && - (0 > (long) node1->content) && - (0 > (long) node2->content) && - (node1->doc == node2->doc)) { - long l1, l2; + ************************************************************************/ - l1 = -((long) node1->content); - l2 = -((long) node2->content); - if (l1 < l2) - return(1); - if (l1 > l2) - return(-1); - } +/** + * xmlXPathOrderDocElems: + * @doc: an input document + * + * Call this routine to speed up XPath computation on static documents. + * This stamps all the element nodes with the document order + * Like for line information, the order is kept in the element->content + * field, the value stored is actually - the node number (starting at -1) + * to be able to differentiate from line numbers. + * + * Returns the number of elements found in the document or -1 in case + * of error. + */ +long +xmlXPathOrderDocElems(xmlDocPtr doc) { + long count = 0; + xmlNodePtr cur; - /* - * compute depth to root - */ - for (depth2 = 0, cur = node2;cur->parent != NULL;cur = cur->parent) { - if (cur == node1) - return(1); - depth2++; - } - root = cur; - for (depth1 = 0, cur = node1;cur->parent != NULL;cur = cur->parent) { - if (cur == node2) - return(-1); - depth1++; - } - /* - * Distinct document (or distinct entities :-( ) case. - */ - if (root != cur) { - return(-2); - } - /* - * get the nearest common ancestor. - */ - while (depth1 > depth2) { - depth1--; - node1 = node1->parent; - } - while (depth2 > depth1) { - depth2--; - node2 = node2->parent; - } - while (node1->parent != node2->parent) { - node1 = node1->parent; - node2 = node2->parent; - /* should not happen but just in case ... */ - if ((node1 == NULL) || (node2 == NULL)) - return(-2); - } - /* - * Find who's first. - */ - if (node1 == node2->prev) - return(1); - if (node1 == node2->next) + if (doc == NULL) return(-1); - /* - * Speedup using document order if availble. - */ - if ((node1->type == XML_ELEMENT_NODE) && - (node2->type == XML_ELEMENT_NODE) && - (0 > (long) node1->content) && - (0 > (long) node2->content) && - (node1->doc == node2->doc)) { - long l1, l2; - - l1 = -((long) node1->content); - l2 = -((long) node2->content); - if (l1 < l2) - return(1); - if (l1 > l2) - return(-1); + cur = doc->children; + while (cur != NULL) { + if (cur->type == XML_ELEMENT_NODE) { + cur->content = (void *) (-(++count)); + if (cur->children != NULL) { + cur = cur->children; + continue; + } + } + if (cur->next != NULL) { + cur = cur->next; + continue; + } + do { + cur = cur->parent; + if (cur == NULL) + break; + if (cur == (xmlNodePtr) doc) { + cur = NULL; + break; + } + if (cur->next != NULL) { + cur = cur->next; + break; + } + } while (cur != NULL); } - - for (cur = node1->next;cur != NULL;cur = cur->next) - if (cur == node2) - return(1); - return(-1); /* assume there is no sibling list corruption */ + return(count); } -#ifdef XP_OPTIMIZED_NON_ELEM_COMPARISON /** - * xmlXPathCmpNodesExt: + * xmlXPathCmpNodes: * @node1: the first node * @node2: the second node * - * Compare two nodes w.r.t document order. - * This one is optimized for handling of non-element nodes. + * Compare two nodes w.r.t document order * * Returns -2 in case of error 1 if first point < second point, 0 if * it's the same node, -1 otherwise */ -static int -xmlXPathCmpNodesExt(xmlNodePtr node1, xmlNodePtr node2) { +int +xmlXPathCmpNodes(xmlNodePtr node1, xmlNodePtr node2) { int depth1, depth2; - int misc = 0, precedence1 = 0, precedence2 = 0; - xmlNodePtr miscNode1 = NULL, miscNode2 = NULL; + int attr1 = 0, attr2 = 0; + xmlNodePtr attrNode1 = NULL, attrNode2 = NULL; xmlNodePtr cur, root; - long l1, l2; if ((node1 == NULL) || (node2 == NULL)) return(-2); - - if (node1 == node2) - return(0); - /* * a couple of optimizations which will avoid computations in most cases - */ - switch (node1->type) { - case XML_ELEMENT_NODE: - if (node2->type == XML_ELEMENT_NODE) { - if ((0 > (long) node1->content) && /* TODO: Would a != 0 suffice here? */ - (0 > (long) node2->content) && - (node1->doc == node2->doc)) - { - l1 = -((long) node1->content); - l2 = -((long) node2->content); - if (l1 < l2) - return(1); - if (l1 > l2) - return(-1); - } else - goto turtle_comparison; - } - break; - case XML_ATTRIBUTE_NODE: - precedence1 = 1; /* element is owner */ - miscNode1 = node1; - node1 = node1->parent; - misc = 1; - break; - case XML_TEXT_NODE: - case XML_CDATA_SECTION_NODE: - case XML_COMMENT_NODE: - case XML_PI_NODE: { - miscNode1 = node1; - /* - * Find nearest element node. - */ - if (node1->prev != NULL) { - do { - node1 = node1->prev; - if (node1->type == XML_ELEMENT_NODE) { - precedence1 = 3; /* element in prev-sibl axis */ - break; - } - if (node1->prev == NULL) { - precedence1 = 2; /* element is parent */ - /* - * URGENT TODO: Are there any cases, where the - * parent of such a node is not an element node? - */ - node1 = node1->parent; - break; - } - } while (1); - } else { - precedence1 = 2; /* element is parent */ - node1 = node1->parent; - } - if ((node1 == NULL) || (node1->type != XML_ELEMENT_NODE)) { - /* - * Fallback for whatever case. - */ - node1 = miscNode1; - precedence1 = 0; - } else - misc = 1; - } - break; - case XML_NAMESPACE_DECL: - /* - * TODO: why do we return 1 for namespace nodes? - */ - return(1); - default: - break; - } - switch (node2->type) { - case XML_ELEMENT_NODE: - break; - case XML_ATTRIBUTE_NODE: - precedence2 = 1; /* element is owner */ - miscNode2 = node2; - node2 = node2->parent; - misc = 1; - break; - case XML_TEXT_NODE: - case XML_CDATA_SECTION_NODE: - case XML_COMMENT_NODE: - case XML_PI_NODE: { - miscNode2 = node2; - if (node2->prev != NULL) { - do { - node2 = node2->prev; - if (node2->type == XML_ELEMENT_NODE) { - precedence2 = 3; /* element in prev-sibl axis */ - break; - } - if (node2->prev == NULL) { - precedence2 = 2; /* element is parent */ - node2 = node2->parent; - break; - } - } while (1); - } else { - precedence2 = 2; /* element is parent */ - node2 = node2->parent; - } - if ((node2 == NULL) || (node2->type != XML_ELEMENT_NODE) || - (0 <= (long) node1->content)) - { - node2 = miscNode2; - precedence2 = 0; - } else - misc = 1; - } - break; - case XML_NAMESPACE_DECL: - return(1); - default: - break; + */ + if (node1 == node2) /* trivial case */ + return(0); + if (node1->type == XML_ATTRIBUTE_NODE) { + attr1 = 1; + attrNode1 = node1; + node1 = node1->parent; } - if (misc) { - if (node1 == node2) { - if (precedence1 == precedence2) { - /* - * The ugly case; but normally there aren't many - * adjacent non-element nodes around. - */ - cur = miscNode2->prev; + if (node2->type == XML_ATTRIBUTE_NODE) { + attr2 = 1; + attrNode2 = node2; + node2 = node2->parent; + } + if (node1 == node2) { + if (attr1 == attr2) { + /* not required, but we keep attributes in order */ + if (attr1 != 0) { + cur = attrNode2->prev; while (cur != NULL) { - if (cur == miscNode1) - return(1); - if (cur->type == XML_ELEMENT_NODE) - return(-1); + if (cur == attrNode1) + return (1); cur = cur->prev; } return (-1); - } else { - /* - * Evaluate based on higher precedence wrt to the element. - * TODO: This assumes attributes are sorted before content. - * Is this 100% correct? - */ - if (precedence1 < precedence2) - return(1); - else - return(-1); - } - } - /* - * Special case: One of the helper-elements is contained by the other. - * - * - * Text-1(precedence1 == 2) - * - * Text-6(precedence2 == 3) - * - */ - if ((precedence2 == 3) && (precedence1 > 1)) { - cur = node1->parent; - while (cur) { - if (cur == node2) - return(1); - cur = cur->parent; - } - } - if ((precedence1 == 3) && (precedence2 > 1)) { - cur = node2->parent; - while (cur) { - if (cur == node1) - return(-1); - cur = cur->parent; } + return(0); } - } + if (attr2 == 1) + return(1); + return(-1); + } + if ((node1->type == XML_NAMESPACE_DECL) || + (node2->type == XML_NAMESPACE_DECL)) + return(1); + if (node1 == node2->prev) + return(1); + if (node1 == node2->next) + return(-1); /* * Speedup using document order if availble. */ - if ((node1->type == XML_ELEMENT_NODE) && + if ((node1->type == XML_ELEMENT_NODE) && (node2->type == XML_ELEMENT_NODE) && (0 > (long) node1->content) && (0 > (long) node2->content) && - (node1->doc == node2->doc)) { + (node1->doc == node2->doc)) { + long l1, l2; l1 = -((long) node1->content); l2 = -((long) node2->content); @@ -3179,12 +3338,6 @@ return(-1); } -turtle_comparison: - - if (node1 == node2->prev) - return(1); - if (node1 == node2->next) - return(-1); /* * compute depth to root */ @@ -3237,7 +3390,8 @@ (node2->type == XML_ELEMENT_NODE) && (0 > (long) node1->content) && (0 > (long) node2->content) && - (node1->doc == node2->doc)) { + (node1->doc == node2->doc)) { + long l1, l2; l1 = -((long) node1->content); l2 = -((long) node2->content); @@ -3252,7 +3406,6 @@ return(1); return(-1); /* assume there is no sibling list corruption */ } -#endif /* XP_OPTIMIZED_NON_ELEM_COMPARISON */ /** * xmlXPathNodeSetSort: @@ -3262,13 +3415,19 @@ */ void xmlXPathNodeSetSort(xmlNodeSetPtr set) { +#ifndef WITH_TIM_SORT int i, j, incr, len; xmlNodePtr tmp; +#endif if (set == NULL) return; - /* Use Shell's sort to sort the node-set */ +#ifndef WITH_TIM_SORT + /* + * Use the old Shell's sort implementation to sort the node-set + * Timsort ought to be quite faster + */ len = set->nodeNr; for (incr = len / 2; incr > 0; incr /= 2) { for (i = incr; i < len; i++) { @@ -3291,6 +3450,9 @@ } } } +#else /* WITH_TIM_SORT */ + libxml_domnode_tim_sort(set->nodeTab, set->nodeNr); +#endif /* WITH_TIM_SORT */ } #define XML_NODESET_DEFAULT 10 @@ -3325,9 +3487,9 @@ memset(cur, 0, sizeof(xmlNs)); cur->type = XML_NAMESPACE_DECL; if (ns->href != NULL) - cur->href = xmlStrdup(ns->href); + cur->href = xmlStrdup(ns->href); if (ns->prefix != NULL) - cur->prefix = xmlStrdup(ns->prefix); + cur->prefix = xmlStrdup(ns->prefix); cur->next = (xmlNsPtr) node; return((xmlNodePtr) cur); } @@ -3421,7 +3583,7 @@ return(NULL); } memset(ret->nodeTab, 0 , size * (size_t) sizeof(xmlNodePtr)); - ret->nodeMax = size; + ret->nodeMax = size; return(ret); } @@ -3469,16 +3631,18 @@ * @ns: a the namespace node * * add a new namespace node to an existing NodeSet + * + * Returns 0 in case of success and -1 in case of error */ -void +int xmlXPathNodeSetAddNs(xmlNodeSetPtr cur, xmlNodePtr node, xmlNsPtr ns) { int i; - + if ((cur == NULL) || (ns == NULL) || (node == NULL) || (ns->type != XML_NAMESPACE_DECL) || (node->type != XML_ELEMENT_NODE)) - return; + return(-1); /* @@ with_ns to check whether namespace nodes should be looked at @@ */ /* @@ -3489,7 +3653,7 @@ (cur->nodeTab[i]->type == XML_NAMESPACE_DECL) && (((xmlNsPtr)cur->nodeTab[i])->next == (xmlNsPtr) node) && (xmlStrEqual(ns->prefix, ((xmlNsPtr)cur->nodeTab[i])->prefix))) - return; + return(0); } /* @@ -3500,7 +3664,7 @@ sizeof(xmlNodePtr)); if (cur->nodeTab == NULL) { xmlXPathErrMemory(NULL, "growing nodeset\n"); - return; + return(-1); } memset(cur->nodeTab, 0 , XML_NODESET_DEFAULT * (size_t) sizeof(xmlNodePtr)); @@ -3508,16 +3672,21 @@ } else if (cur->nodeNr == cur->nodeMax) { xmlNodePtr *temp; - cur->nodeMax *= 2; - temp = (xmlNodePtr *) xmlRealloc(cur->nodeTab, cur->nodeMax * + if (cur->nodeMax >= XPATH_MAX_NODESET_LENGTH) { + xmlXPathErrMemory(NULL, "growing nodeset hit limit\n"); + return(-1); + } + temp = (xmlNodePtr *) xmlRealloc(cur->nodeTab, cur->nodeMax * 2 * sizeof(xmlNodePtr)); if (temp == NULL) { xmlXPathErrMemory(NULL, "growing nodeset\n"); - return; + return(-1); } + cur->nodeMax *= 2; cur->nodeTab = temp; } cur->nodeTab[cur->nodeNr++] = xmlXPathNodeSetDupNs(node, ns); + return(0); } /** @@ -3526,24 +3695,21 @@ * @val: a new xmlNodePtr * * add a new xmlNodePtr to an existing NodeSet + * + * Returns 0 in case of success, and -1 in case of error */ -void +int xmlXPathNodeSetAdd(xmlNodeSetPtr cur, xmlNodePtr val) { int i; - if ((cur == NULL) || (val == NULL)) return; - -#if 0 - if ((val->type == XML_ELEMENT_NODE) && (val->name[0] == ' ')) - return; /* an XSLT fake node */ -#endif + if ((cur == NULL) || (val == NULL)) return(-1); /* @@ with_ns to check whether namespace nodes should be looked at @@ */ /* * prevent duplcates */ for (i = 0;i < cur->nodeNr;i++) - if (cur->nodeTab[i] == val) return; + if (cur->nodeTab[i] == val) return(0); /* * grow the nodeTab if needed @@ -3553,7 +3719,7 @@ sizeof(xmlNodePtr)); if (cur->nodeTab == NULL) { xmlXPathErrMemory(NULL, "growing nodeset\n"); - return; + return(-1); } memset(cur->nodeTab, 0 , XML_NODESET_DEFAULT * (size_t) sizeof(xmlNodePtr)); @@ -3561,22 +3727,27 @@ } else if (cur->nodeNr == cur->nodeMax) { xmlNodePtr *temp; - cur->nodeMax *= 2; - temp = (xmlNodePtr *) xmlRealloc(cur->nodeTab, cur->nodeMax * + if (cur->nodeMax >= XPATH_MAX_NODESET_LENGTH) { + xmlXPathErrMemory(NULL, "growing nodeset hit limit\n"); + return(-1); + } + temp = (xmlNodePtr *) xmlRealloc(cur->nodeTab, cur->nodeMax * 2 * sizeof(xmlNodePtr)); if (temp == NULL) { xmlXPathErrMemory(NULL, "growing nodeset\n"); - return; + return(-1); } + cur->nodeMax *= 2; cur->nodeTab = temp; } if (val->type == XML_NAMESPACE_DECL) { xmlNsPtr ns = (xmlNsPtr) val; - cur->nodeTab[cur->nodeNr++] = + cur->nodeTab[cur->nodeNr++] = xmlXPathNodeSetDupNs((xmlNodePtr) ns->next, ns); } else cur->nodeTab[cur->nodeNr++] = val; + return(0); } /** @@ -3586,15 +3757,12 @@ * * add a new xmlNodePtr to an existing NodeSet, optimized version * when we are sure the node is not already in the set. + * + * Returns 0 in case of success and -1 in case of failure */ -void +int xmlXPathNodeSetAddUnique(xmlNodeSetPtr cur, xmlNodePtr val) { - if ((cur == NULL) || (val == NULL)) return; - -#if 0 - if ((val->type == XML_ELEMENT_NODE) && (val->name[0] == ' ')) - return; /* an XSLT fake node */ -#endif + if ((cur == NULL) || (val == NULL)) return(-1); /* @@ with_ns to check whether namespace nodes should be looked at @@ */ /* @@ -3605,7 +3773,7 @@ sizeof(xmlNodePtr)); if (cur->nodeTab == NULL) { xmlXPathErrMemory(NULL, "growing nodeset\n"); - return; + return(-1); } memset(cur->nodeTab, 0 , XML_NODESET_DEFAULT * (size_t) sizeof(xmlNodePtr)); @@ -3613,22 +3781,27 @@ } else if (cur->nodeNr == cur->nodeMax) { xmlNodePtr *temp; - cur->nodeMax *= 2; - temp = (xmlNodePtr *) xmlRealloc(cur->nodeTab, cur->nodeMax * + if (cur->nodeMax >= XPATH_MAX_NODESET_LENGTH) { + xmlXPathErrMemory(NULL, "growing nodeset hit limit\n"); + return(-1); + } + temp = (xmlNodePtr *) xmlRealloc(cur->nodeTab, cur->nodeMax * 2 * sizeof(xmlNodePtr)); if (temp == NULL) { xmlXPathErrMemory(NULL, "growing nodeset\n"); - return; + return(-1); } cur->nodeTab = temp; + cur->nodeMax *= 2; } if (val->type == XML_NAMESPACE_DECL) { xmlNsPtr ns = (xmlNsPtr) val; - cur->nodeTab[cur->nodeNr++] = + cur->nodeTab[cur->nodeNr++] = xmlXPathNodeSetDupNs((xmlNodePtr) ns->next, ns); } else cur->nodeTab[cur->nodeNr++] = val; + return(0); } /** @@ -3649,6 +3822,8 @@ if (val2 == NULL) return(val1); if (val1 == NULL) { val1 = xmlXPathNodeSetCreate(NULL); + if (val1 == NULL) + return (NULL); #if 0 /* * TODO: The optimization won't work in every case, since @@ -3658,7 +3833,7 @@ * If there was a flag on the nodesetval, indicating that * some temporary nodes are in, that would be helpfull. */ - /* + /* * Optimization: Create an equally sized node-set * and memcpy the content. */ @@ -3682,7 +3857,7 @@ initNr = val1->nodeNr; for (i = 0;i < val2->nodeNr;i++) { - n2 = val2->nodeTab[i]; + n2 = val2->nodeTab[i]; /* * check against duplicates */ @@ -3693,7 +3868,7 @@ skip = 1; break; } else if ((n1->type == XML_NAMESPACE_DECL) && - (n2->type == XML_NAMESPACE_DECL)) { + (n2->type == XML_NAMESPACE_DECL)) { if ((((xmlNsPtr) n1)->next == ((xmlNsPtr) n2)->next) && (xmlStrEqual(((xmlNsPtr) n1)->prefix, ((xmlNsPtr) n2)->prefix))) @@ -3722,14 +3897,18 @@ } else if (val1->nodeNr == val1->nodeMax) { xmlNodePtr *temp; - val1->nodeMax *= 2; - temp = (xmlNodePtr *) xmlRealloc(val1->nodeTab, val1->nodeMax * + if (val1->nodeMax >= XPATH_MAX_NODESET_LENGTH) { + xmlXPathErrMemory(NULL, "merging nodeset hit limit\n"); + return(NULL); + } + temp = (xmlNodePtr *) xmlRealloc(val1->nodeTab, val1->nodeMax * 2 * sizeof(xmlNodePtr)); if (temp == NULL) { xmlXPathErrMemory(NULL, "merging nodeset\n"); return(NULL); } val1->nodeTab = temp; + val1->nodeMax *= 2; } if (n2->type == XML_NAMESPACE_DECL) { xmlNsPtr ns = (xmlNsPtr) n2; @@ -3743,66 +3922,6 @@ return(val1); } -#if 0 /* xmlXPathNodeSetMergeUnique() is currently not used anymore */ -/** - * xmlXPathNodeSetMergeUnique: - * @val1: the first NodeSet or NULL - * @val2: the second NodeSet - * - * Merges two nodesets, all nodes from @val2 are added to @val1 - * if @val1 is NULL, a new set is created and copied from @val2 - * - * Returns @val1 once extended or NULL in case of error. - */ -static xmlNodeSetPtr -xmlXPathNodeSetMergeUnique(xmlNodeSetPtr val1, xmlNodeSetPtr val2) { - int i; - - if (val2 == NULL) return(val1); - if (val1 == NULL) { - val1 = xmlXPathNodeSetCreate(NULL); - } - - /* @@ with_ns to check whether namespace nodes should be looked at @@ */ - - for (i = 0;i < val2->nodeNr;i++) { - /* - * grow the nodeTab if needed - */ - if (val1->nodeMax == 0) { - val1->nodeTab = (xmlNodePtr *) xmlMalloc(XML_NODESET_DEFAULT * - sizeof(xmlNodePtr)); - if (val1->nodeTab == NULL) { - xmlXPathErrMemory(NULL, "merging nodeset\n"); - return(NULL); - } - memset(val1->nodeTab, 0 , - XML_NODESET_DEFAULT * (size_t) sizeof(xmlNodePtr)); - val1->nodeMax = XML_NODESET_DEFAULT; - } else if (val1->nodeNr == val1->nodeMax) { - xmlNodePtr *temp; - - val1->nodeMax *= 2; - temp = (xmlNodePtr *) xmlRealloc(val1->nodeTab, val1->nodeMax * - sizeof(xmlNodePtr)); - if (temp == NULL) { - xmlXPathErrMemory(NULL, "merging nodeset\n"); - return(NULL); - } - val1->nodeTab = temp; - } - if (val2->nodeTab[i]->type == XML_NAMESPACE_DECL) { - xmlNsPtr ns = (xmlNsPtr) val2->nodeTab[i]; - - val1->nodeTab[val1->nodeNr++] = - xmlXPathNodeSetDupNs((xmlNodePtr) ns->next, ns); - } else - val1->nodeTab[val1->nodeNr++] = val2->nodeTab[i]; - } - - return(val1); -} -#endif /* xmlXPathNodeSetMergeUnique() is currently not used anymore */ /** * xmlXPathNodeSetMergeAndClear: @@ -3838,9 +3957,11 @@ xmlNodePtr n1, n2; if (set1 == NULL) - set1 = xmlXPathNodeSetCreate(NULL); + set1 = xmlXPathNodeSetCreate(NULL); + if (set1 == NULL) + return (NULL); - initNbSet1 = set1->nodeNr; + initNbSet1 = set1->nodeNr; for (i = 0;i < set2->nodeNr;i++) { n2 = set2->nodeTab[i]; /* @@ -3853,11 +3974,11 @@ */ for (j = 0; j < initNbSet1; j++) { n1 = set1->nodeTab[j]; - if (n1 == n2) { + if (n1 == n2) { goto skip_node; } else if ((n1->type == XML_NAMESPACE_DECL) && (n2->type == XML_NAMESPACE_DECL)) - { + { if ((((xmlNsPtr) n1)->next == ((xmlNsPtr) n2)->next) && (xmlStrEqual(((xmlNsPtr) n1)->prefix, ((xmlNsPtr) n2)->prefix))) @@ -3886,19 +4007,23 @@ set1->nodeMax = XML_NODESET_DEFAULT; } else if (set1->nodeNr >= set1->nodeMax) { xmlNodePtr *temp; - - set1->nodeMax *= 2; + + if (set1->nodeMax >= XPATH_MAX_NODESET_LENGTH) { + xmlXPathErrMemory(NULL, "merging nodeset hit limit\n"); + return(NULL); + } temp = (xmlNodePtr *) xmlRealloc( - set1->nodeTab, set1->nodeMax * sizeof(xmlNodePtr)); + set1->nodeTab, set1->nodeMax * 2 * sizeof(xmlNodePtr)); if (temp == NULL) { xmlXPathErrMemory(NULL, "merging nodeset\n"); return(NULL); } set1->nodeTab = temp; + set1->nodeMax *= 2; } if (n2->type == XML_NAMESPACE_DECL) { xmlNsPtr ns = (xmlNsPtr) n2; - + set1->nodeTab[set1->nodeNr++] = xmlXPathNodeSetDupNs((xmlNodePtr) ns->next, ns); } else @@ -3926,7 +4051,7 @@ static xmlNodeSetPtr xmlXPathNodeSetMergeAndClearNoDupls(xmlNodeSetPtr set1, xmlNodeSetPtr set2, int hasNullEntries) -{ +{ if (set2 == NULL) return(set1); if ((set1 == NULL) && (hasNullEntries == 0)) { @@ -3948,14 +4073,16 @@ if (set1 == NULL) set1 = xmlXPathNodeSetCreate(NULL); - + if (set1 == NULL) + return (NULL); + for (i = 0;i < set2->nodeNr;i++) { n2 = set2->nodeTab[i]; /* * Skip NULLed entries. */ if (n2 == NULL) - continue; + continue; if (set1->nodeMax == 0) { set1->nodeTab = (xmlNodePtr *) xmlMalloc( XML_NODESET_DEFAULT * sizeof(xmlNodePtr)); @@ -3968,15 +4095,19 @@ set1->nodeMax = XML_NODESET_DEFAULT; } else if (set1->nodeNr >= set1->nodeMax) { xmlNodePtr *temp; - - set1->nodeMax *= 2; + + if (set1->nodeMax >= XPATH_MAX_NODESET_LENGTH) { + xmlXPathErrMemory(NULL, "merging nodeset hit limit\n"); + return(NULL); + } temp = (xmlNodePtr *) xmlRealloc( - set1->nodeTab, set1->nodeMax * sizeof(xmlNodePtr)); + set1->nodeTab, set1->nodeMax * 2 * sizeof(xmlNodePtr)); if (temp == NULL) { xmlXPathErrMemory(NULL, "merging nodeset\n"); return(NULL); } set1->nodeTab = temp; + set1->nodeMax *= 2; } set1->nodeTab[set1->nodeNr++] = n2; } @@ -4007,7 +4138,7 @@ if (i >= cur->nodeNr) { /* not found */ #ifdef DEBUG - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "xmlXPathNodeSetDel: Node %s wasn't found in NodeList\n", val->name); #endif @@ -4067,7 +4198,7 @@ /** * xmlXPathNodeSetClear: * @set: the node set to clear - * + * * Clears the list from all temporary XPath objects (e.g. namespace nodes * are feed), but does *not* free the list itself. Sets the length of the * list to 0. @@ -4080,13 +4211,13 @@ else if (hasNsNodes) { int i; xmlNodePtr node; - + for (i = 0; i < set->nodeNr; i++) { node = set->nodeTab[i]; if ((node != NULL) && (node->type == XML_NAMESPACE_DECL)) xmlXPathNodeSetFreeNs((xmlNsPtr) node); - } + } } set->nodeNr = 0; } @@ -4095,7 +4226,7 @@ * xmlXPathNodeSetClearFromPos: * @set: the node set to be cleared * @pos: the start position to clear from - * + * * Clears the list from temporary XPath objects (e.g. namespace nodes * are feed) starting with the entry at @pos, but does *not* free the list * itself. Sets the length of the list to @pos. @@ -4108,13 +4239,13 @@ else if ((hasNsNodes)) { int i; xmlNodePtr node; - + for (i = pos; i < set->nodeNr; i++) { node = set->nodeTab[i]; if ((node != NULL) && (node->type == XML_NAMESPACE_DECL)) xmlXPathNodeSetFreeNs((xmlNsPtr) node); - } + } } set->nodeNr = pos; } @@ -4267,8 +4398,12 @@ ret = xmlXPathNewNodeSet(NULL); else { ret = xmlXPathNewNodeSet(val->nodeTab[0]); - for (i = 1; i < val->nodeNr; ++i) - xmlXPathNodeSetAddUnique(ret->nodesetval, val->nodeTab[i]); + if (ret) { + for (i = 1; i < val->nodeNr; ++i) { + if (xmlXPathNodeSetAddUnique(ret->nodesetval, val->nodeTab[i]) + < 0) break; + } + } } return (ret); @@ -4344,8 +4479,10 @@ for (i = 0; i < l1; i++) { cur = xmlXPathNodeSetItem(nodes1, i); - if (!xmlXPathNodeSetContains(nodes2, cur)) - xmlXPathNodeSetAddUnique(ret, cur); + if (!xmlXPathNodeSetContains(nodes2, cur)) { + if (xmlXPathNodeSetAddUnique(ret, cur) < 0) + break; + } } return(ret); } @@ -4367,6 +4504,8 @@ int i, l1; xmlNodePtr cur; + if (ret == NULL) + return(ret); if (xmlXPathNodeSetIsEmpty(nodes1)) return(ret); if (xmlXPathNodeSetIsEmpty(nodes2)) @@ -4376,8 +4515,10 @@ for (i = 0; i < l1; i++) { cur = xmlXPathNodeSetItem(nodes1, i); - if (xmlXPathNodeSetContains(nodes2, cur)) - xmlXPathNodeSetAddUnique(ret, cur); + if (xmlXPathNodeSetContains(nodes2, cur)) { + if (xmlXPathNodeSetAddUnique(ret, cur) < 0) + break; + } } return(ret); } @@ -4388,7 +4529,7 @@ * * Implements the EXSLT - Sets distinct() function: * node-set set:distinct (node-set) - * + * * Returns a subset of the nodes contained in @nodes, or @nodes if * it is empty */ @@ -4404,6 +4545,8 @@ return(nodes); ret = xmlXPathNodeSetCreate(NULL); + if (ret == NULL) + return(ret); l = xmlXPathNodeSetGetLength(nodes); hash = xmlHashCreate (l); for (i = 0; i < l; i++) { @@ -4411,7 +4554,8 @@ strval = xmlXPathCastNodeToString(cur); if (xmlHashLookup(hash, strval) == NULL) { xmlHashAddEntry(hash, strval, strval); - xmlXPathNodeSetAddUnique(ret, cur); + if (xmlXPathNodeSetAddUnique(ret, cur) < 0) + break; } else { xmlFree(strval); } @@ -4492,6 +4636,8 @@ return(nodes); ret = xmlXPathNodeSetCreate(NULL); + if (ret == NULL) + return(ret); if (xmlXPathNodeSetIsEmpty(nodes) || (!xmlXPathNodeSetContains(nodes, node))) return(ret); @@ -4501,7 +4647,8 @@ cur = xmlXPathNodeSetItem(nodes, i); if (cur == node) break; - xmlXPathNodeSetAddUnique(ret, cur); + if (xmlXPathNodeSetAddUnique(ret, cur) < 0) + break; } return(ret); } @@ -4594,17 +4741,21 @@ return(nodes); ret = xmlXPathNodeSetCreate(NULL); + if (ret == NULL) + return(ret); if (xmlXPathNodeSetIsEmpty(nodes) || (!xmlXPathNodeSetContains(nodes, node))) return(ret); l = xmlXPathNodeSetGetLength(nodes); - for (i = l; i > 0; i--) { + for (i = l - 1; i >= 0; i--) { cur = xmlXPathNodeSetItem(nodes, i); if (cur == node) break; - xmlXPathNodeSetAddUnique(ret, cur); + if (xmlXPathNodeSetAddUnique(ret, cur) < 0) + break; } + xmlXPathNodeSetSort(ret); /* bug 413451 */ return(ret); } @@ -4690,7 +4841,7 @@ * * Returns 0 in case of success, -1 in case of error */ -int +int xmlXPathRegisterFunc(xmlXPathContextPtr ctxt, const xmlChar *name, xmlXPathFunction f) { return(xmlXPathRegisterFuncNS(ctxt, name, NULL, f)); @@ -4784,7 +4935,7 @@ xmlXPathFunctionLookupNS(xmlXPathContextPtr ctxt, const xmlChar *name, const xmlChar *ns_uri) { xmlXPathFunction ret; - + if (ctxt == NULL) return(NULL); if (name == NULL) @@ -4838,7 +4989,7 @@ * * Returns 0 in case of success, -1 in case of error */ -int +int xmlXPathRegisterVariable(xmlXPathContextPtr ctxt, const xmlChar *name, xmlXPathObjectPtr value) { return(xmlXPathRegisterVariableNS(ctxt, name, NULL, value)); @@ -4870,7 +5021,7 @@ if (ctxt->varHash == NULL) return(-1); if (value == NULL) - return(xmlHashRemoveEntry2(ctxt->varHash, name, ns_uri, + return(xmlHashRemoveEntry2(ctxt->varHash, name, ns_uri, (xmlHashDeallocator)xmlXPathFreeObject)); return(xmlHashUpdateEntry2(ctxt->varHash, name, ns_uri, (void *) value, @@ -4926,7 +5077,7 @@ * @ns_uri: the variable namespace URI * * Search in the Variable array of the context for the given - * variable value. + * variable value. * * Returns the a copy of the value or NULL if not found */ @@ -4971,7 +5122,7 @@ /** * xmlXPathRegisterNs: * @ctxt: the XPath context - * @prefix: the namespace prefix + * @prefix: the namespace prefix cannot be NULL or empty string * @ns_uri: the namespace name * * Register a new namespace. If @ns_uri is NULL it unregisters @@ -4986,6 +5137,8 @@ return(-1); if (prefix == NULL) return(-1); + if (prefix[0] == 0) + return(-1); if (ctxt->nsHash == NULL) ctxt->nsHash = xmlHashCreate(10); @@ -5309,7 +5462,7 @@ #endif case XPATH_USERS: ret->user = val->user; - break; + break; case XPATH_UNDEFINED: xmlGenericError(xmlGenericErrorContext, "xmlXPathObjectCopy: unsupported type %d\n", @@ -5338,7 +5491,7 @@ #endif obj->type = XPATH_XSLT_TREE; /* TODO: Just for debugging. */ if (obj->nodesetval != NULL) - xmlXPathFreeValueTree(obj->nodesetval); + xmlXPathFreeValueTree(obj->nodesetval); } else { if (obj->nodesetval != NULL) xmlXPathFreeNodeSet(obj->nodesetval); @@ -5355,7 +5508,7 @@ #ifdef XP_DEBUG_OBJ_USAGE xmlXPathDebugObjUsageReleased(NULL, obj->type); #endif - xmlFree(obj); + xmlFree(obj); } /** @@ -5378,7 +5531,7 @@ return; if ((ctxt == NULL) || (ctxt->cache == NULL)) { xmlXPathFreeObject(obj); - } else { + } else { xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; @@ -5387,7 +5540,7 @@ case XPATH_XSLT_TREE: if (obj->nodesetval != NULL) { if (obj->boolval) { - /* + /* * It looks like the @boolval is used for * evaluation if this an XSLT Result Tree Fragment. * TODO: Check if this assumption is correct. @@ -5434,7 +5587,7 @@ xmlXPtrFreeLocationSet(obj->user); } goto free_obj; -#endif +#endif default: goto free_obj; } @@ -5455,7 +5608,7 @@ if (obj->nodesetval != NULL) { xmlNodeSetPtr tmpset = obj->nodesetval; - + /* * TODO: Due to those nasty ns-nodes, we need to traverse * the list and free the ns-nodes. @@ -5478,7 +5631,7 @@ if ((tmpset->nodeTab[0] != NULL) && (tmpset->nodeTab[0]->type == XML_NAMESPACE_DECL)) xmlXPathNodeSetFreeNs((xmlNsPtr) tmpset->nodeTab[0]); - } + } tmpset->nodeNr = 0; memset(obj, 0, sizeof(xmlXPathObject)); obj->nodesetval = tmpset; @@ -5490,7 +5643,7 @@ free_obj: /* * Cache is full; free the object. - */ + */ if (obj->nodesetval != NULL) xmlXPathFreeNodeSet(obj->nodesetval); #ifdef XP_DEBUG_OBJ_USAGE @@ -5570,7 +5723,10 @@ */ xmlChar * xmlXPathCastNodeToString (xmlNodePtr node) { - return(xmlNodeGetContent(node)); +xmlChar *ret; + if ((ret = xmlNodeGetContent(node)) == NULL) + ret = xmlStrdup((const xmlChar *) ""); + return(ret); } /** @@ -5598,7 +5754,7 @@ * Converts an existing object to its string() equivalent * * Returns the allocated string value of the object, NULL in case of error. - * It's up to the caller to free the string memory with xmlFree(). + * It's up to the caller to free the string memory with xmlFree(). */ xmlChar * xmlXPathCastToString(xmlXPathObjectPtr val) { @@ -5989,7 +6145,7 @@ } #endif - xmlXPathRegisterAllFunctions(ret); + xmlXPathRegisterAllFunctions(ret); return(ret); } @@ -6020,7 +6176,7 @@ ************************************************************************/ #define CHECK_CTXT(ctxt) \ - if (ctxt == NULL) { \ + if (ctxt == NULL) { \ __xmlRaiseError(NULL, NULL, NULL, \ NULL, NULL, XML_FROM_XPATH, \ XML_ERR_INTERNAL_ERROR, XML_ERR_FATAL, \ @@ -6031,7 +6187,7 @@ } \ #define CHECK_CTXT_NEG(ctxt) \ - if (ctxt == NULL) { \ + if (ctxt == NULL) { \ __xmlRaiseError(NULL, NULL, NULL, \ NULL, NULL, XML_FROM_XPATH, \ XML_ERR_INTERNAL_ERROR, XML_ERR_FATAL, \ @@ -6044,7 +6200,7 @@ #define CHECK_CONTEXT(ctxt) \ if ((ctxt == NULL) || (ctxt->doc == NULL) || \ - (ctxt->doc->children == NULL)) { \ + (ctxt->doc->children == NULL)) { \ xmlXPatherror(ctxt, __FILE__, __LINE__, XPATH_INVALID_CTXT); \ return(NULL); \ } @@ -6107,7 +6263,7 @@ memset(ret, 0 , (size_t) sizeof(xmlXPathParserContext)); /* Allocate the value stack */ - ret->valueTab = (xmlXPathObjectPtr *) + ret->valueTab = (xmlXPathObjectPtr *) xmlMalloc(10 * sizeof(xmlXPathObjectPtr)); if (ret->valueTab == NULL) { xmlFree(ret); @@ -6117,6 +6273,7 @@ ret->valueNr = 0; ret->valueMax = 10; ret->value = NULL; + ret->valueFrame = 0; ret->context = ctxt; ret->comp = comp; @@ -6254,7 +6411,7 @@ tmp = tmp->next; continue; } - + do { tmp = tmp->parent; if (tmp == NULL) @@ -6413,7 +6570,7 @@ * If both objects to be compared are node-sets, then the comparison * will be true if and only if there is a node in the first node-set * and a node in the second node-set such that the result of performing - * the comparison on the string-values of the two nodes is true. + * the comparison on the string-values of the two nodes is true. * .... * When neither object to be compared is a node-set and the operator * is <=, <, >= or >, then the objects are compared by converting both @@ -6427,7 +6584,7 @@ * represented by the string; any other string is converted to NaN * * Conclusion all nodes need to be converted first to their string value - * and then the comparison must be done when possible + * and then the comparison must be done when possible */ static int xmlXPathCompareNodeSets(int inf, int strict, @@ -6482,7 +6639,7 @@ } if (xmlXPathIsNaN(values2[j])) continue; - if (inf && strict) + if (inf && strict) ret = (val1 < values2[j]); else if (inf && !strict) ret = (val1 <= values2[j]); @@ -6822,7 +6979,7 @@ case XPATH_STRING: if ((arg2->stringval == NULL) || (arg2->stringval[0] == 0)) ret = 0; - else + else ret = 1; ret = (arg1->boolval == ret); break; @@ -6857,7 +7014,7 @@ case XPATH_NUMBER: /* Hand check NaN and Infinity equalities */ if (xmlXPathIsNaN(arg1->floatval) || - xmlXPathIsNaN(arg2->floatval)) { + xmlXPathIsNaN(arg2->floatval)) { ret = 0; } else if (xmlXPathIsInf(arg1->floatval) == 1) { if (xmlXPathIsInf(arg2->floatval) == 1) @@ -6905,7 +7062,7 @@ case XPATH_BOOLEAN: if ((arg1->stringval == NULL) || (arg1->stringval[0] == 0)) ret = 0; - else + else ret = 1; ret = (arg2->boolval == ret); break; @@ -6918,7 +7075,7 @@ arg1 = valuePop(ctxt); /* Hand check NaN and Infinity equalities */ if (xmlXPathIsNaN(arg1->floatval) || - xmlXPathIsNaN(arg2->floatval)) { + xmlXPathIsNaN(arg2->floatval)) { ret = 0; } else if (xmlXPathIsInf(arg1->floatval) == 1) { if (xmlXPathIsInf(arg2->floatval) == 1) @@ -6984,7 +7141,7 @@ int ret = 0; if ((ctxt == NULL) || (ctxt->context == NULL)) return(0); - arg2 = valuePop(ctxt); + arg2 = valuePop(ctxt); arg1 = valuePop(ctxt); if ((arg1 == NULL) || (arg2 == NULL)) { if (arg1 != NULL) @@ -7030,7 +7187,7 @@ case XPATH_BOOLEAN: if ((arg1->nodesetval == NULL) || (arg1->nodesetval->nodeNr == 0)) ret = 0; - else + else ret = 1; ret = (ret == arg2->boolval); break; @@ -7069,7 +7226,7 @@ int ret = 0; if ((ctxt == NULL) || (ctxt->context == NULL)) return(0); - arg2 = valuePop(ctxt); + arg2 = valuePop(ctxt); arg1 = valuePop(ctxt); if ((arg1 == NULL) || (arg2 == NULL)) { if (arg1 != NULL) @@ -7115,7 +7272,7 @@ case XPATH_BOOLEAN: if ((arg1->nodesetval == NULL) || (arg1->nodesetval->nodeNr == 0)) ret = 0; - else + else ret = 1; ret = (ret != arg2->boolval); break; @@ -7146,7 +7303,7 @@ * @inf: less than (1) or greater than (0) * @strict: is the comparison strict * - * Implement the compare operation on XPath objects: + * Implement the compare operation on XPath objects: * @arg1 < @arg2 (1, 1, ... * @arg1 <= @arg2 (1, 0, ... * @arg1 > @arg2 (0, 1, ... @@ -7170,7 +7327,7 @@ xmlXPathObjectPtr arg1, arg2; if ((ctxt == NULL) || (ctxt->context == NULL)) return(0); - arg2 = valuePop(ctxt); + arg2 = valuePop(ctxt); arg1 = valuePop(ctxt); if ((arg1 == NULL) || (arg2 == NULL)) { if (arg1 != NULL) @@ -7411,7 +7568,7 @@ ctxt->value->floatval = xmlXPathPINF; else if (ctxt->value->floatval < 0) ctxt->value->floatval = xmlXPathNINF; - } else + } else ctxt->value->floatval /= val; } @@ -7619,6 +7776,7 @@ return(NULL); } +#if 0 /** * xmlXPathNextDescendantOrSelfElemParent: * @ctxt: the XPath Parser context @@ -7646,10 +7804,10 @@ #ifdef LIBXML_DOCB_ENABLED case XML_DOCB_DOCUMENT_NODE: #endif - case XML_HTML_DOCUMENT_NODE: + case XML_HTML_DOCUMENT_NODE: return(contextNode); default: - return(NULL); + return(NULL); } return(NULL); } else { @@ -7660,7 +7818,7 @@ case XML_ELEMENT_NODE: /* TODO: OK to have XInclude here? */ case XML_XINCLUDE_START: - case XML_DOCUMENT_FRAG_NODE: + case XML_DOCUMENT_FRAG_NODE: if (cur != start) return(cur); if (cur->children != NULL) { @@ -7668,9 +7826,9 @@ continue; } break; -#ifdef LIBXML_DOCB_ENABLED /* Not sure if we need those here. */ case XML_DOCUMENT_NODE: +#ifdef LIBXML_DOCB_ENABLED case XML_DOCB_DOCUMENT_NODE: #endif case XML_HTML_DOCUMENT_NODE: @@ -7679,13 +7837,13 @@ return(xmlDocGetRootElement((xmlDocPtr) cur)); default: break; - } - + } + next_sibling: if ((cur == NULL) || (cur == contextNode)) - return(NULL); + return(NULL); if (cur->next != NULL) { - cur = cur->next; + cur = cur->next; } else { cur = cur->parent; goto next_sibling; @@ -7693,7 +7851,8 @@ } } return(NULL); -} +} +#endif /** * xmlXPathNextDescendant: @@ -7721,11 +7880,13 @@ return(ctxt->context->node->children); } + if (cur->type == XML_NAMESPACE_DECL) + return(NULL); if (cur->children != NULL) { /* * Do not descend on entities declarations */ - if (cur->children->type != XML_ENTITY_DECL) { + if (cur->children->type != XML_ENTITY_DECL) { cur = cur->children; /* * Skip DTDs @@ -7743,7 +7904,7 @@ (cur->type != XML_DTD_NODE)) return(cur); } - + do { cur = cur->parent; if (cur == NULL) break; @@ -7772,14 +7933,14 @@ xmlNodePtr xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) { if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL); - if (cur == NULL) { - if (ctxt->context->node == NULL) - return(NULL); - if ((ctxt->context->node->type == XML_ATTRIBUTE_NODE) || - (ctxt->context->node->type == XML_NAMESPACE_DECL)) - return(NULL); + if (cur == NULL) return(ctxt->context->node); - } + + if (ctxt->context->node == NULL) + return(NULL); + if ((ctxt->context->node->type == XML_ATTRIBUTE_NODE) || + (ctxt->context->node->type == XML_NAMESPACE_DECL)) + return(NULL); return(xmlXPathNextDescendant(ctxt, cur)); } @@ -7842,7 +8003,7 @@ return(NULL); case XML_NAMESPACE_DECL: { xmlNsPtr ns = (xmlNsPtr) ctxt->context->node; - + if ((ns->next != NULL) && (ns->next->type != XML_NAMESPACE_DECL)) return((xmlNodePtr) ns->next); @@ -7915,7 +8076,7 @@ return(NULL); case XML_NAMESPACE_DECL: { xmlNsPtr ns = (xmlNsPtr) ctxt->context->node; - + if ((ns->next != NULL) && (ns->next->type != XML_NAMESPACE_DECL)) return((xmlNodePtr) ns->next); @@ -7959,7 +8120,7 @@ } case XML_NAMESPACE_DECL: { xmlNsPtr ns = (xmlNsPtr) ctxt->context->node; - + if ((ns->next != NULL) && (ns->next->type != XML_NAMESPACE_DECL)) return((xmlNodePtr) ns->next); @@ -8069,9 +8230,17 @@ xmlNodePtr xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) { if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL); - if (cur != NULL && cur->children != NULL) - return cur->children ; - if (cur == NULL) cur = ctxt->context->node; + if ((cur != NULL) && (cur->type != XML_ATTRIBUTE_NODE) && + (cur->type != XML_NAMESPACE_DECL) && (cur->children != NULL)) + return(cur->children); + + if (cur == NULL) { + cur = ctxt->context->node; + if (cur->type == XML_NAMESPACE_DECL) + return(NULL); + if (cur->type == XML_ATTRIBUTE_NODE) + cur = cur->parent; + } if (cur == NULL) return(NULL) ; /* ERROR */ if (cur->next != NULL) return(cur->next) ; do { @@ -8095,6 +8264,10 @@ static int xmlXPathIsAncestor(xmlNodePtr ancestor, xmlNodePtr node) { if ((ancestor == NULL) || (node == NULL)) return(0); + if (node->type == XML_NAMESPACE_DECL) + return(0); + if (ancestor->type == XML_NAMESPACE_DECL) + return(0); /* nodes need to be in the same document */ if (ancestor->doc != node->doc) return(0); /* avoid searching if ancestor or node is the root node */ @@ -8125,9 +8298,14 @@ xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) { if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL); - if (cur == NULL) + if (cur == NULL) { cur = ctxt->context->node; - if (cur == NULL) + if (cur->type == XML_NAMESPACE_DECL) + return(NULL); + if (cur->type == XML_ATTRIBUTE_NODE) + return(cur->parent); + } + if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) return (NULL); if ((cur->prev != NULL) && (cur->prev->type == XML_DTD_NODE)) cur = cur->prev; @@ -8156,7 +8334,7 @@ * node that are before the context node in document order, excluding any * ancestors and excluding attribute nodes and namespace nodes; the nodes are * ordered in reverse document order - * This is a faster implementation but internal only since it requires a + * This is a faster implementation but internal only since it requires a * state kept in the parser context: ctxt->ancestor. * * Returns the next element following that axis @@ -8170,10 +8348,12 @@ cur = ctxt->context->node; if (cur == NULL) return (NULL); - if (cur->type == XML_NAMESPACE_DECL) - cur = (xmlNodePtr)((xmlNsPtr)cur)->next; + if (cur->type == XML_NAMESPACE_DECL) + return (NULL); ctxt->ancestor = cur->parent; } + if (cur->type == XML_NAMESPACE_DECL) + return(NULL); if ((cur->prev != NULL) && (cur->prev->type == XML_DTD_NODE)) cur = cur->prev; while (cur->prev == NULL) { @@ -8213,7 +8393,7 @@ if (ctxt->context->tmpNsList == NULL && cur != (xmlNodePtr) xmlXPathXMLNamespace) { if (ctxt->context->tmpNsList != NULL) xmlFree(ctxt->context->tmpNsList); - ctxt->context->tmpNsList = + ctxt->context->tmpNsList = xmlGetNsList(ctxt->context->doc, ctxt->context->node); ctxt->context->tmpNsNr = 0; if (ctxt->context->tmpNsList != NULL) { @@ -8361,7 +8541,7 @@ xmlXPathObjectPtr cur; CHECK_ARITY(1); - if ((ctxt->value == NULL) || + if ((ctxt->value == NULL) || ((ctxt->value->type != XPATH_NODESET) && (ctxt->value->type != XPATH_XSLT_TREE))) XP_ERROR(XPATH_INVALID_TYPE); @@ -8381,7 +8561,7 @@ int i = 0; tmp = cur->nodesetval->nodeTab[0]; - if (tmp != NULL) { + if ((tmp != NULL) && (tmp->type != XML_NAMESPACE_DECL)) { tmp = tmp->children; while (tmp != NULL) { tmp = tmp->next; @@ -8414,6 +8594,8 @@ if (ids == NULL) return(NULL); ret = xmlXPathNodeSetCreate(NULL); + if (ret == NULL) + return(ret); while (IS_BLANK_CH(*cur)) cur++; while (*cur != 0) { @@ -8481,6 +8663,11 @@ int i; ret = xmlXPathNodeSetCreate(NULL); + /* + * FIXME -- in an out-of-memory condition this will behave badly. + * The solution is not clear -- we already popped an item from + * ctxt, so the object is in a corrupt state. + */ if (obj->nodesetval != NULL) { for (i = 0; i < obj->nodesetval->nodeNr; i++) { @@ -8499,7 +8686,7 @@ } obj = xmlXPathCacheConvertString(ctxt->context, obj); ret = xmlXPathGetElementsByIds(ctxt->context->doc, obj->stringval); - valuePush(ctxt, xmlXPathCacheWrapNodeSet(ctxt->context, ret)); + valuePush(ctxt, xmlXPathCacheWrapNodeSet(ctxt->context, ret)); xmlXPathReleaseObject(ctxt->context, obj); return; } @@ -8530,7 +8717,7 @@ } CHECK_ARITY(1); - if ((ctxt->value == NULL) || + if ((ctxt->value == NULL) || ((ctxt->value->type != XPATH_NODESET) && (ctxt->value->type != XPATH_XSLT_TREE))) XP_ERROR(XPATH_INVALID_TYPE); @@ -8588,7 +8775,7 @@ nargs = 1; } CHECK_ARITY(1); - if ((ctxt->value == NULL) || + if ((ctxt->value == NULL) || ((ctxt->value->type != XPATH_NODESET) && (ctxt->value->type != XPATH_XSLT_TREE))) XP_ERROR(XPATH_INVALID_TYPE); @@ -8672,7 +8859,7 @@ cur->nodesetval->nodeTab[i]->name)); } else { xmlChar *fullname; - + fullname = xmlBuildQName(cur->nodesetval->nodeTab[i]->name, cur->nodesetval->nodeTab[i]->ns->prefix, NULL, 0); @@ -8707,11 +8894,11 @@ * the node in the node-set that is first in document order. * If the node-set is empty, an empty string is returned. * - A number is converted to a string as follows - * + NaN is converted to the string NaN - * + positive zero is converted to the string 0 - * + negative zero is converted to the string 0 - * + positive infinity is converted to the string Infinity - * + negative infinity is converted to the string -Infinity + * + NaN is converted to the string NaN + * + positive zero is converted to the string 0 + * + negative zero is converted to the string 0 + * + positive infinity is converted to the string Infinity + * + negative infinity is converted to the string -Infinity * + if the number is an integer, the number is represented in * decimal form as a Number with no decimal point and no leading * zeros, preceded by a minus sign (-) if the number is negative @@ -8785,7 +8972,7 @@ CHECK_TYPE(XPATH_STRING); cur = valuePop(ctxt); valuePush(ctxt, xmlXPathCacheNewFloat(ctxt->context, - xmlUTF8Strlen(cur->stringval))); + xmlUTF8Strlen(cur->stringval))); xmlXPathReleaseObject(ctxt->context, cur); } @@ -8924,12 +9111,12 @@ * or equal to the second argument and, if the third argument is specified, * less than the sum of the second and third arguments; the comparisons * and addition used for the above follow the standard IEEE 754 rules. Thus: - * - substring("12345", 1.5, 2.6) returns "234" - * - substring("12345", 0, 3) returns "12" - * - substring("12345", 0 div 0, 3) returns "" - * - substring("12345", 1, 0 div 0) returns "" - * - substring("12345", -42, 1 div 0) returns "12345" - * - substring("12345", -1 div 0, 1 div 0) returns "" + * - substring("12345", 1.5, 2.6) returns "234" + * - substring("12345", 0, 3) returns "12" + * - substring("12345", 0 div 0, 3) returns "" + * - substring("12345", 1, 0 div 0) returns "" + * - substring("12345", -42, 1 div 0) returns "12345" + * - substring("12345", -1 div 0, 1 div 0) returns "" */ void xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs) { @@ -8970,18 +9157,18 @@ */ if (nargs != 3) { le = (double)m; - if (in < 1.0) + if (in < 1.0) in = 1.0; } - /* Need to check for the special cases where either + /* Need to check for the special cases where either * the index is NaN, the length is NaN, or both * arguments are infinity (relying on Inf + -Inf = NaN) */ - if (!xmlXPathIsNaN(in + le) && !xmlXPathIsInf(in)) { + if (!xmlXPathIsInf(in) && !xmlXPathIsNaN(in + le)) { /* * To meet the requirements of the spec, the arguments - * must be converted to integer format before + * must be converted to integer format before * initial index calculations are done * * First we go to integer form, rounding up @@ -9044,26 +9231,26 @@ xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs) { xmlXPathObjectPtr str; xmlXPathObjectPtr find; - xmlBufferPtr target; + xmlBufPtr target; const xmlChar *point; int offset; - + CHECK_ARITY(2); CAST_TO_STRING; find = valuePop(ctxt); CAST_TO_STRING; str = valuePop(ctxt); - - target = xmlBufferCreate(); + + target = xmlBufCreate(); if (target) { point = xmlStrstr(str->stringval, find->stringval); if (point) { offset = (int)(point - str->stringval); - xmlBufferAdd(target, str->stringval, offset); + xmlBufAdd(target, str->stringval, offset); } valuePush(ctxt, xmlXPathCacheNewString(ctxt->context, - xmlBufferContent(target))); - xmlBufferFree(target); + xmlBufContent(target))); + xmlBufFree(target); } xmlXPathReleaseObject(ctxt->context, str); xmlXPathReleaseObject(ctxt->context, find); @@ -9087,27 +9274,27 @@ xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs) { xmlXPathObjectPtr str; xmlXPathObjectPtr find; - xmlBufferPtr target; + xmlBufPtr target; const xmlChar *point; int offset; - + CHECK_ARITY(2); CAST_TO_STRING; find = valuePop(ctxt); CAST_TO_STRING; str = valuePop(ctxt); - - target = xmlBufferCreate(); + + target = xmlBufCreate(); if (target) { point = xmlStrstr(str->stringval, find->stringval); if (point) { offset = (int)(point - str->stringval) + xmlStrlen(find->stringval); - xmlBufferAdd(target, &str->stringval[offset], + xmlBufAdd(target, &str->stringval[offset], xmlStrlen(str->stringval) - offset); } valuePush(ctxt, xmlXPathCacheNewString(ctxt->context, - xmlBufferContent(target))); - xmlBufferFree(target); + xmlBufContent(target))); + xmlBufFree(target); } xmlXPathReleaseObject(ctxt->context, str); xmlXPathReleaseObject(ctxt->context, find); @@ -9131,9 +9318,9 @@ xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs) { xmlXPathObjectPtr obj = NULL; xmlChar *source = NULL; - xmlBufferPtr target; + xmlBufPtr target; xmlChar blank; - + if (ctxt == NULL) return; if (nargs == 0) { /* Use current context node */ @@ -9149,13 +9336,13 @@ obj = valuePop(ctxt); source = obj->stringval; - target = xmlBufferCreate(); + target = xmlBufCreate(); if (target && source) { - + /* Skip leading whitespaces */ while (IS_BLANK_CH(*source)) source++; - + /* Collapse intermediate whitespaces, and skip trailing whitespaces */ blank = 0; while (*source) { @@ -9163,16 +9350,16 @@ blank = 0x20; } else { if (blank) { - xmlBufferAdd(target, &blank, 1); + xmlBufAdd(target, &blank, 1); blank = 0; } - xmlBufferAdd(target, source, 1); + xmlBufAdd(target, source, 1); } source++; } valuePush(ctxt, xmlXPathCacheNewString(ctxt->context, - xmlBufferContent(target))); - xmlBufferFree(target); + xmlBufContent(target))); + xmlBufFree(target); } xmlXPathReleaseObject(ctxt->context, obj); } @@ -9203,7 +9390,7 @@ xmlXPathObjectPtr str; xmlXPathObjectPtr from; xmlXPathObjectPtr to; - xmlBufferPtr target; + xmlBufPtr target; int offset, max; xmlChar ch; const xmlChar *point; @@ -9218,7 +9405,7 @@ CAST_TO_STRING; str = valuePop(ctxt); - target = xmlBufferCreate(); + target = xmlBufCreate(); if (target) { max = xmlUTF8Strlen(to->stringval); for (cptr = str->stringval; (ch=*cptr); ) { @@ -9227,10 +9414,10 @@ if (offset < max) { point = xmlUTF8Strpos(to->stringval, offset); if (point) - xmlBufferAdd(target, point, xmlUTF8Strsize(point, 1)); + xmlBufAdd(target, point, xmlUTF8Strsize(point, 1)); } } else - xmlBufferAdd(target, cptr, xmlUTF8Strsize(cptr, 1)); + xmlBufAdd(target, cptr, xmlUTF8Strsize(cptr, 1)); /* Step to next character in input */ cptr++; @@ -9239,6 +9426,7 @@ if ( (ch & 0xc0) != 0xc0 ) { xmlGenericError(xmlGenericErrorContext, "xmlXPathTranslateFunction: Invalid UTF8 string\n"); + /* not asserting an XPath error is probably better */ break; } /* then skip over remaining bytes for this char */ @@ -9246,6 +9434,7 @@ if ( (*cptr++ & 0xc0) != 0x80 ) { xmlGenericError(xmlGenericErrorContext, "xmlXPathTranslateFunction: Invalid UTF8 string\n"); + /* not asserting an XPath error is probably better */ break; } if (ch & 0x80) /* must have had error encountered */ @@ -9254,8 +9443,8 @@ } } valuePush(ctxt, xmlXPathCacheNewString(ctxt->context, - xmlBufferContent(target))); - xmlBufferFree(target); + xmlBufContent(target))); + xmlBufFree(target); xmlXPathReleaseObject(ctxt->context, str); xmlXPathReleaseObject(ctxt->context, from); xmlXPathReleaseObject(ctxt->context, to); @@ -9430,7 +9619,7 @@ double res = 0.0; CHECK_ARITY(1); - if ((ctxt->value == NULL) || + if ((ctxt->value == NULL) || ((ctxt->value->type != XPATH_NODESET) && (ctxt->value->type != XPATH_XSLT_TREE))) XP_ERROR(XPATH_INVALID_TYPE); @@ -9549,14 +9738,14 @@ if (ctxt->value->floatval < 0) { if (ctxt->value->floatval < f - 0.5) ctxt->value->floatval = f - 1; - else + else ctxt->value->floatval = f; if (ctxt->value->floatval == 0) ctxt->value->floatval = xmlXPathNZERO; } else { if (ctxt->value->floatval < f + 0.5) ctxt->value->floatval = f; - else + else ctxt->value->floatval = f + 1; } } @@ -9607,7 +9796,7 @@ * UCS-4 range (hex.) UTF-8 octet sequence (binary) * 0000 0000-0000 007F 0xxxxxxx * 0000 0080-0000 07FF 110xxxxx 10xxxxxx - * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx + * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx * * Check for the 0x110000 limit too */ @@ -9644,7 +9833,7 @@ } if (!IS_CHAR(val)) { XP_ERROR0(XPATH_INVALID_CHAR_ERROR); - } + } return(val); } else { /* 1-byte code */ @@ -9716,7 +9905,7 @@ /** * xmlXPathParseQName: * @ctxt: the XPath Parser context - * @prefix: a xmlChar ** + * @prefix: a xmlChar ** * * parse an XML qualified name * @@ -9736,7 +9925,7 @@ *prefix = NULL; ret = xmlXPathParseNCName(ctxt); - if (CUR == ':') { + if (ret && CUR == ':') { *prefix = ret; NEXT; ret = xmlXPathParseNCName(ctxt); @@ -9762,7 +9951,7 @@ xmlXPathParseName(xmlXPathParserContextPtr ctxt) { const xmlChar *in; xmlChar *ret; - int count = 0; + size_t count = 0; if ((ctxt == NULL) || (ctxt->cur == NULL)) return(NULL); /* @@ -9781,6 +9970,10 @@ in++; if ((*in > 0) && (*in < 0x80)) { count = in - ctxt->cur; + if (count > XML_MAX_NAME_LENGTH) { + ctxt->cur = in; + XP_ERRORNULL(XPATH_EXPR_ERROR); + } ret = xmlStrndup(ctxt->cur, count); ctxt->cur = in; return(ret); @@ -9810,7 +10003,7 @@ while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */ ((IS_LETTER(c)) || (IS_DIGIT(c)) || (c == '.') || (c == '-') || - (c == '_') || ((qualified) && (c == ':')) || + (c == '_') || ((qualified) && (c == ':')) || (IS_COMBINING(c)) || (IS_EXTENDER(c)))) { COPY_BUF(l,buf,len,c); @@ -9823,7 +10016,10 @@ */ xmlChar *buffer; int max = len * 2; - + + if (len > XML_MAX_NAME_LENGTH) { + XP_ERRORNULL(XPATH_EXPR_ERROR); + } buffer = (xmlChar *) xmlMallocAtomic(max * sizeof(xmlChar)); if (buffer == NULL) { XP_ERRORNULL(XPATH_MEMORY_ERROR); @@ -9831,10 +10027,13 @@ memcpy(buffer, buf, len); while ((IS_LETTER(c)) || (IS_DIGIT(c)) || /* test bigname.xml */ (c == '.') || (c == '-') || - (c == '_') || ((qualified) && (c == ':')) || + (c == '_') || ((qualified) && (c == ':')) || (IS_COMBINING(c)) || (IS_EXTENDER(c))) { if (len + 10 > max) { + if (max > XML_MAX_NAME_LENGTH) { + XP_ERRORNULL(XPATH_EXPR_ERROR); + } max *= 2; buffer = (xmlChar *) xmlRealloc(buffer, max * sizeof(xmlChar)); @@ -9878,7 +10077,7 @@ * [30a] Float ::= Number ('e' Digits?)? * * [30] Number ::= Digits ('.' Digits?)? - * | '.' Digits + * | '.' Digits * [31] Digits ::= [0-9]+ * * Compile a Number in the string @@ -9977,7 +10176,7 @@ * @ctxt: the XPath Parser context * * [30] Number ::= Digits ('.' Digits?)? - * | '.' Digits + * | '.' Digits * [31] Digits ::= [0-9]+ * * Compile a Number, then push it on the stack @@ -9987,7 +10186,6 @@ xmlXPathCompNumber(xmlXPathParserContextPtr ctxt) { double ret = 0.0; - double mult = 1; int ok = 0; int exponent = 0; int is_exponent_negative = 0; @@ -10023,15 +10221,23 @@ } #endif if (CUR == '.') { + int v, frac = 0; + double fraction = 0; + NEXT; if (((CUR < '0') || (CUR > '9')) && (!ok)) { XP_ERROR(XPATH_NUMBER_ERROR); } - while ((CUR >= '0') && (CUR <= '9')) { - mult /= 10; - ret = ret + (CUR - '0') * mult; + while ((CUR >= '0') && (CUR <= '9') && (frac < MAX_FRAC)) { + v = (CUR - '0'); + fraction = fraction * 10 + v; + frac = frac + 1; NEXT; } + fraction /= my_pow10[frac]; + ret = ret + fraction; + while ((CUR >= '0') && (CUR <= '9')) + NEXT; } if ((CUR == 'e') || (CUR == 'E')) { NEXT; @@ -10157,9 +10363,9 @@ * * Early evaluation is possible since: * The variable bindings [...] used to evaluate a subexpression are - * always the same as those used to evaluate the containing expression. + * always the same as those used to evaluate the containing expression. * - * [36] VariableReference ::= '$' QName + * [36] VariableReference ::= '$' QName */ static void xmlXPathCompVariableReference(xmlXPathParserContextPtr ctxt) { @@ -10180,7 +10386,7 @@ name, prefix); SKIP_BLANKS; if ((ctxt->context != NULL) && (ctxt->context->flags & XML_XPATH_NOVAR)) { - XP_ERROR(XPATH_UNDEF_VARIABLE_ERROR); + XP_ERROR(XPATH_FORBID_VARIABLE_ERROR); } } @@ -10218,7 +10424,7 @@ * @ctxt: the XPath Parser context * * [16] FunctionCall ::= FunctionName '(' ( Argument ( ',' Argument)*)? ')' - * [17] Argument ::= Expr + * [17] Argument ::= Expr * * Compile a function call, the evaluation of all arguments are * pushed on the stack @@ -10232,6 +10438,7 @@ name = xmlXPathParseQName(ctxt, &prefix); if (name == NULL) { + xmlFree(prefix); XP_ERROR(XPATH_EXPR_ERROR); } SKIP_BLANKS; @@ -10264,7 +10471,11 @@ int op1 = ctxt->comp->last; ctxt->comp->last = -1; xmlXPathCompileExpr(ctxt, sort); - CHECK_ERROR; + if (ctxt->error != XPATH_EXPRESSION_OK) { + xmlFree(name); + xmlFree(prefix); + return; + } PUSH_BINARY_EXPR(XPATH_OP_ARG, op1, ctxt->comp->last, 0, 0); nbargs++; if (CUR == ')') break; @@ -10285,11 +10496,11 @@ * xmlXPathCompPrimaryExpr: * @ctxt: the XPath Parser context * - * [15] PrimaryExpr ::= VariableReference + * [15] PrimaryExpr ::= VariableReference * | '(' Expr ')' - * | Literal - * | Number - * | FunctionCall + * | Literal + * | Number + * | FunctionCall * * Compile a primary expression. */ @@ -10321,8 +10532,8 @@ * xmlXPathCompFilterExpr: * @ctxt: the XPath Parser context * - * [20] FilterExpr ::= PrimaryExpr - * | FilterExpr Predicate + * [20] FilterExpr ::= PrimaryExpr + * | FilterExpr Predicate * * Compile a filter expression. * Square brackets are used to filter expressions in the same way that @@ -10337,13 +10548,13 @@ xmlXPathCompPrimaryExpr(ctxt); CHECK_ERROR; SKIP_BLANKS; - + while (CUR == '[') { xmlXPathCompPredicate(ctxt, 1); SKIP_BLANKS; } - + } /** @@ -10382,7 +10593,7 @@ while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */ ((IS_LETTER(c)) || (IS_DIGIT(c)) || (c == '.') || (c == '-') || - (c == '_') || (c == ':') || + (c == '_') || (c == ':') || (IS_COMBINING(c)) || (IS_EXTENDER(c)))) { len += l; @@ -10398,10 +10609,10 @@ * xmlXPathCompPathExpr: * @ctxt: the XPath Parser context * - * [19] PathExpr ::= LocationPath - * | FilterExpr - * | FilterExpr '/' RelativeLocationPath - * | FilterExpr '//' RelativeLocationPath + * [19] PathExpr ::= LocationPath + * | FilterExpr + * | FilterExpr '/' RelativeLocationPath + * | FilterExpr '//' RelativeLocationPath * * Compile a path expression. * The / operator and // operators combine an arbitrary expression @@ -10418,8 +10629,8 @@ xmlChar *name = NULL; /* we may have to preparse a name to find out */ SKIP_BLANKS; - if ((CUR == '$') || (CUR == '(') || - (IS_ASCII_DIGIT(CUR)) || + if ((CUR == '$') || (CUR == '(') || + (IS_ASCII_DIGIT(CUR)) || (CUR == '\'') || (CUR == '"') || (CUR == '.' && IS_ASCII_DIGIT(NXT(1)))) { lc = 0; @@ -10459,7 +10670,7 @@ } else if (name != NULL) { int len =xmlStrlen(name); - + while (NXT(len) != 0) { if (NXT(len) == '/') { /* element name */ @@ -10526,7 +10737,7 @@ /* make sure all cases are covered explicitly */ XP_ERROR(XPATH_EXPR_ERROR); } - } + } if (lc) { if (CUR == '/') { @@ -10558,8 +10769,8 @@ * xmlXPathCompUnionExpr: * @ctxt: the XPath Parser context * - * [18] UnionExpr ::= PathExpr - * | UnionExpr '|' PathExpr + * [18] UnionExpr ::= PathExpr + * | UnionExpr '|' PathExpr * * Compile an union expression. */ @@ -10587,8 +10798,8 @@ * xmlXPathCompUnaryExpr: * @ctxt: the XPath Parser context * - * [27] UnaryExpr ::= UnionExpr - * | '-' UnaryExpr + * [27] UnaryExpr ::= UnionExpr + * | '-' UnaryExpr * * Compile an unary expression. */ @@ -10620,10 +10831,10 @@ * xmlXPathCompMultiplicativeExpr: * @ctxt: the XPath Parser context * - * [26] MultiplicativeExpr ::= UnaryExpr - * | MultiplicativeExpr MultiplyOperator UnaryExpr - * | MultiplicativeExpr 'div' UnaryExpr - * | MultiplicativeExpr 'mod' UnaryExpr + * [26] MultiplicativeExpr ::= UnaryExpr + * | MultiplicativeExpr MultiplyOperator UnaryExpr + * | MultiplicativeExpr 'div' UnaryExpr + * | MultiplicativeExpr 'mod' UnaryExpr * [34] MultiplyOperator ::= '*' * * Compile an Additive expression. @@ -10634,7 +10845,7 @@ xmlXPathCompUnaryExpr(ctxt); CHECK_ERROR; SKIP_BLANKS; - while ((CUR == '*') || + while ((CUR == '*') || ((CUR == 'd') && (NXT(1) == 'i') && (NXT(2) == 'v')) || ((CUR == 'm') && (NXT(1) == 'o') && (NXT(2) == 'd'))) { int op = -1; @@ -10662,9 +10873,9 @@ * xmlXPathCompAdditiveExpr: * @ctxt: the XPath Parser context * - * [25] AdditiveExpr ::= MultiplicativeExpr - * | AdditiveExpr '+' MultiplicativeExpr - * | AdditiveExpr '-' MultiplicativeExpr + * [25] AdditiveExpr ::= MultiplicativeExpr + * | AdditiveExpr '+' MultiplicativeExpr + * | AdditiveExpr '-' MultiplicativeExpr * * Compile an Additive expression. */ @@ -10694,11 +10905,11 @@ * xmlXPathCompRelationalExpr: * @ctxt: the XPath Parser context * - * [24] RelationalExpr ::= AdditiveExpr - * | RelationalExpr '<' AdditiveExpr - * | RelationalExpr '>' AdditiveExpr - * | RelationalExpr '<=' AdditiveExpr - * | RelationalExpr '>=' AdditiveExpr + * [24] RelationalExpr ::= AdditiveExpr + * | RelationalExpr '<' AdditiveExpr + * | RelationalExpr '>' AdditiveExpr + * | RelationalExpr '<=' AdditiveExpr + * | RelationalExpr '>=' AdditiveExpr * * A <= B > C is allowed ? Answer from James, yes with * (AdditiveExpr <= AdditiveExpr) > AdditiveExpr @@ -10738,9 +10949,9 @@ * xmlXPathCompEqualityExpr: * @ctxt: the XPath Parser context * - * [23] EqualityExpr ::= RelationalExpr - * | EqualityExpr '=' RelationalExpr - * | EqualityExpr '!=' RelationalExpr + * [23] EqualityExpr ::= RelationalExpr + * | EqualityExpr '=' RelationalExpr + * | EqualityExpr '!=' RelationalExpr * * A != B != C is allowed ? Answer from James, yes with * (RelationalExpr = RelationalExpr) = RelationalExpr @@ -10775,8 +10986,8 @@ * xmlXPathCompAndExpr: * @ctxt: the XPath Parser context * - * [22] AndExpr ::= EqualityExpr - * | AndExpr 'and' EqualityExpr + * [22] AndExpr ::= EqualityExpr + * | AndExpr 'and' EqualityExpr * * Compile an AND expression. * @@ -10801,9 +11012,9 @@ * xmlXPathCompileExpr: * @ctxt: the XPath Parser context * - * [14] Expr ::= OrExpr - * [21] OrExpr ::= AndExpr - * | OrExpr 'or' AndExpr + * [14] Expr ::= OrExpr + * [21] OrExpr ::= AndExpr + * | OrExpr 'or' AndExpr * * Parse and compile an expression */ @@ -10819,7 +11030,6 @@ xmlXPathCompAndExpr(ctxt); CHECK_ERROR; PUSH_BINARY_EXPR(XPATH_OP_OR, op1, ctxt->comp->last, 0, 0); - op1 = ctxt->comp->nbStep; SKIP_BLANKS; } if ((sort) && (ctxt->comp->steps[ctxt->comp->last].op != XPATH_OP_VALUE)) { @@ -10839,7 +11049,7 @@ * @filter: act as a filter * * [8] Predicate ::= '[' PredicateExpr ']' - * [9] PredicateExpr ::= Expr + * [9] PredicateExpr ::= Expr * * Compile a predicate expression */ @@ -10956,7 +11166,7 @@ } *test = NODE_TEST_TYPE; - + SKIP_BLANKS; if (*type == NODE_TYPE_PI) { /* @@ -11092,7 +11302,7 @@ * @ctxt: the XPath Parser context * * [4] Step ::= AxisSpecifier NodeTest Predicate* - * | AbbreviatedStep + * | AbbreviatedStep * * [12] AbbreviatedStep ::= '.' | '..' * @@ -11201,7 +11411,10 @@ } } - CHECK_ERROR; + if (ctxt->error != XPATH_EXPRESSION_OK) { + xmlFree(name); + return; + } name = xmlXPathCompNodeTest(ctxt, &test, &type, &prefix, name); if (test == 0) @@ -11264,10 +11477,10 @@ * xmlXPathCompRelativeLocationPath: * @ctxt: the XPath Parser context * - * [3] RelativeLocationPath ::= Step - * | RelativeLocationPath '/' Step - * | AbbreviatedRelativeLocationPath - * [11] AbbreviatedRelativeLocationPath ::= RelativeLocationPath '//' Step + * [3] RelativeLocationPath ::= Step + * | RelativeLocationPath '/' Step + * | AbbreviatedRelativeLocationPath + * [11] AbbreviatedRelativeLocationPath ::= RelativeLocationPath '//' Step * * Compile a relative location path. */ @@ -11285,6 +11498,7 @@ SKIP_BLANKS; } xmlXPathCompStep(ctxt); + CHECK_ERROR; SKIP_BLANKS; while (CUR == '/') { if ((CUR == '/') && (NXT(1) == '/')) { @@ -11306,12 +11520,12 @@ * xmlXPathCompLocationPath: * @ctxt: the XPath Parser context * - * [1] LocationPath ::= RelativeLocationPath - * | AbsoluteLocationPath + * [1] LocationPath ::= RelativeLocationPath + * | AbsoluteLocationPath * [2] AbsoluteLocationPath ::= '/' RelativeLocationPath? - * | AbbreviatedAbsoluteLocationPath - * [10] AbbreviatedAbsoluteLocationPath ::= - * '//' RelativeLocationPath + * | AbbreviatedAbsoluteLocationPath + * [10] AbbreviatedAbsoluteLocationPath ::= + * '//' RelativeLocationPath * * Compile a location path * @@ -11344,13 +11558,14 @@ (CUR == '@') || (CUR == '*'))) xmlXPathCompRelativeLocationPath(ctxt); } + CHECK_ERROR; } } } /************************************************************************ * * - * XPath precompiled expression evaluation * + * XPath precompiled expression evaluation * * * ************************************************************************/ @@ -11359,12 +11574,11 @@ #ifdef DEBUG_STEP static void -xmlXPathDebugDumpStepAxis(xmlXPathAxisVal axis, - xmlXPathTestVal test, +xmlXPathDebugDumpStepAxis(xmlXPathStepOpPtr op, int nbNodes) { xmlGenericError(xmlGenericErrorContext, "new step : "); - switch (axis) { + switch (op->value) { case AXIS_ANCESTOR: xmlGenericError(xmlGenericErrorContext, "axis 'ancestors' "); break; @@ -11411,14 +11625,14 @@ } xmlGenericError(xmlGenericErrorContext, " context contains %d nodes\n", nbNodes); - switch (test) { + switch (op->value2) { case NODE_TEST_NONE: xmlGenericError(xmlGenericErrorContext, " searching for none !!!\n"); break; case NODE_TEST_TYPE: xmlGenericError(xmlGenericErrorContext, - " searching for type %d\n", type); + " searching for type %d\n", op->value3); break; case NODE_TEST_PI: xmlGenericError(xmlGenericErrorContext, @@ -11431,14 +11645,14 @@ case NODE_TEST_NS: xmlGenericError(xmlGenericErrorContext, " searching for namespace %s\n", - prefix); + op->value5); break; case NODE_TEST_NAME: xmlGenericError(xmlGenericErrorContext, - " searching for name %s\n", name); - if (prefix != NULL) + " searching for name %s\n", op->value5); + if (op->value4) xmlGenericError(xmlGenericErrorContext, - " with namespace %s\n", prefix); + " with namespace %s\n", op->value4); break; } xmlGenericError(xmlGenericErrorContext, "Testing : "); @@ -11467,7 +11681,7 @@ CHECK_ERROR0; if (contextSize <= 0) return(0); - } + } if (op->ch2 != -1) { xmlXPathContextPtr xpctxt = ctxt->context; xmlNodePtr contextNode, oldContextNode; @@ -11511,7 +11725,7 @@ /* * Get the expression of this predicate. */ - exprOp = &ctxt->comp->steps[op->ch2]; + exprOp = &ctxt->comp->steps[op->ch2]; newContextSize = 0; for (i = 0; i < set->nodeNr; i++) { if (set->nodeTab[i] == NULL) @@ -11521,8 +11735,8 @@ xpctxt->node = contextNode; xpctxt->contextSize = contextSize; xpctxt->proximityPosition = ++contextPos; - - /* + + /* * Also set the xpath document in case things like * key() are evaluated in the predicate. */ @@ -11536,16 +11750,23 @@ */ if (contextObj == NULL) contextObj = xmlXPathCacheNewNodeSet(xpctxt, contextNode); - else - xmlXPathNodeSetAddUnique(contextObj->nodesetval, - contextNode); + else { + if (xmlXPathNodeSetAddUnique(contextObj->nodesetval, + contextNode) < 0) { + ctxt->error = XPATH_MEMORY_ERROR; + goto evaluation_exit; + } + } valuePush(ctxt, contextObj); res = xmlXPathCompOpEvalToBoolean(ctxt, exprOp, 1); - if ((ctxt->error != XPATH_EXPRESSION_OK) || (res == -1)) - goto evaluation_error; + if ((ctxt->error != XPATH_EXPRESSION_OK) || (res == -1)) { + xmlXPathNodeSetClear(set, hasNsNodes); + newContextSize = 0; + goto evaluation_exit; + } if (res != 0) { newContextSize++; @@ -11573,18 +11794,13 @@ contextObj = NULL; } } - goto evaluation_exit; - -evaluation_error: - xmlXPathNodeSetClear(set, hasNsNodes); - newContextSize = 0; -evaluation_exit: if (contextObj != NULL) { if (ctxt->value == contextObj) valuePop(ctxt); xmlXPathReleaseObject(xpctxt, contextObj); - } + } +evaluation_exit: if (exprRes != NULL) xmlXPathReleaseObject(ctxt->context, exprRes); /* @@ -11641,6 +11857,7 @@ xmlXPathObjectPtr contextObj = NULL, exprRes = NULL; xmlNodePtr oldContextNode, contextNode = NULL; xmlXPathContextPtr xpctxt = ctxt->context; + int frame; #ifdef LIBXML_XPTR_ENABLED /* @@ -11660,6 +11877,8 @@ */ exprOp = &ctxt->comp->steps[op->ch2]; for (i = 0; i < set->nodeNr; i++) { + xmlXPathObjectPtr tmp; + if (set->nodeTab[i] == NULL) continue; @@ -11667,7 +11886,7 @@ xpctxt->node = contextNode; xpctxt->contextSize = contextSize; xpctxt->proximityPosition = ++contextPos; - + /* * Initialize the new set. * Also set the xpath document in case things like @@ -11683,15 +11902,33 @@ */ if (contextObj == NULL) contextObj = xmlXPathCacheNewNodeSet(xpctxt, contextNode); - else - xmlXPathNodeSetAddUnique(contextObj->nodesetval, - contextNode); + else { + if (xmlXPathNodeSetAddUnique(contextObj->nodesetval, + contextNode) < 0) { + ctxt->error = XPATH_MEMORY_ERROR; + goto evaluation_exit; + } + } + frame = xmlXPathSetFrame(ctxt); valuePush(ctxt, contextObj); res = xmlXPathCompOpEvalToBoolean(ctxt, exprOp, 1); - - if ((ctxt->error != XPATH_EXPRESSION_OK) || (res == -1)) + tmp = valuePop(ctxt); + xmlXPathPopFrame(ctxt, frame); + + if ((ctxt->error != XPATH_EXPRESSION_OK) || (res == -1)) { + while (tmp != contextObj) { + /* + * Free up the result + * then pop off contextObj, which will be freed later + */ + xmlXPathReleaseObject(xpctxt, tmp); + tmp = valuePop(ctxt); + } goto evaluation_error; + } + /* push the result back onto the stack */ + valuePush(ctxt, tmp); if (res) pos++; @@ -11714,9 +11951,9 @@ } xmlXPathNodeSetClear(set, hasNsNodes); set->nodeNr = 1; - set->nodeTab[0] = contextNode; + set->nodeTab[0] = contextNode; goto evaluation_exit; - } + } if (pos == maxPos) { /* * We are done. @@ -11780,7 +12017,7 @@ static int xmlXPathIsPositionalPredicate(xmlXPathParserContextPtr ctxt, - xmlXPathStepOpPtr op, + xmlXPathStepOpPtr op, int *maxPos) { @@ -11789,7 +12026,7 @@ /* * BIG NOTE: This is not intended for XPATH_OP_FILTER yet! */ - + /* * If not -1, then ch1 will point to: * 1) For predicates (XPATH_OP_PREDICATE): @@ -11798,13 +12035,13 @@ * - an inner filter operater OR * - an expression selecting the node set. * E.g. "key('a', 'b')" or "(//foo | //bar)". - */ + */ if ((op->op != XPATH_OP_PREDICATE) && (op->op != XPATH_OP_FILTER)) return(0); if (op->ch2 != -1) { exprOp = &ctxt->comp->steps[op->ch2]; - } else + } else return(0); if ((exprOp != NULL) && @@ -11823,10 +12060,10 @@ * Maybe we could rewrite the AST to ease the optimization. */ *maxPos = (int) ((xmlXPathObjectPtr) exprOp->value4)->floatval; - + if (((xmlXPathObjectPtr) exprOp->value4)->floatval == (float) *maxPos) - { + { return(1); } } @@ -11843,22 +12080,25 @@ #define XP_TEST_HIT \ if (hasAxisRange != 0) { \ if (++pos == maxPos) { \ - addNode(seq, cur); \ - goto axis_range_end; } \ + if (addNode(seq, cur) < 0) \ + ctxt->error = XPATH_MEMORY_ERROR; \ + goto axis_range_end; } \ } else { \ - addNode(seq, cur); \ + if (addNode(seq, cur) < 0) \ + ctxt->error = XPATH_MEMORY_ERROR; \ if (breakOnFirstHit) goto first_hit; } #define XP_TEST_HIT_NS \ if (hasAxisRange != 0) { \ if (++pos == maxPos) { \ hasNsNodes = 1; \ - xmlXPathNodeSetAddNs(seq, xpctxt->node, (xmlNsPtr) cur); \ + if (xmlXPathNodeSetAddNs(seq, xpctxt->node, (xmlNsPtr) cur) < 0) \ + ctxt->error = XPATH_MEMORY_ERROR; \ goto axis_range_end; } \ } else { \ hasNsNodes = 1; \ - xmlXPathNodeSetAddNs(seq, \ - xpctxt->node, (xmlNsPtr) cur); \ + if (xmlXPathNodeSetAddNs(seq, xpctxt->node, (xmlNsPtr) cur) < 0) \ + ctxt->error = XPATH_MEMORY_ERROR; \ if (breakOnFirstHit) goto first_hit; } xmlXPathAxisVal axis = (xmlXPathAxisVal) op->value; @@ -11878,8 +12118,6 @@ xmlNodeSetPtr contextSeq; int contextIdx; xmlNodePtr contextNode; - /* The context node for a compound traversal */ - xmlNodePtr outerContextNode; /* The final resulting node set wrt to all context nodes */ xmlNodeSetPtr outSeq; /* @@ -11887,7 +12125,7 @@ * Used to feed predicate evaluation. */ xmlNodeSetPtr seq; - xmlNodePtr cur; + xmlNodePtr cur; /* First predicate operator */ xmlXPathStepOpPtr predOp; int maxPos; /* The requested position() (when a "[n]" predicate) */ @@ -11895,11 +12133,9 @@ int breakOnFirstHit; xmlXPathTraversalFunction next = NULL; - /* compound axis traversal */ - xmlXPathTraversalFunctionExt outerNext = NULL; - void (*addNode) (xmlNodeSetPtr, xmlNodePtr); + int (*addNode) (xmlNodeSetPtr, xmlNodePtr); xmlXPathNodeSetMergeFunction mergeAndClear; - xmlNodePtr oldContextNode; + xmlNodePtr oldContextNode; xmlXPathContextPtr xpctxt = ctxt->context; @@ -11914,7 +12150,7 @@ xmlXPathReleaseObject(xpctxt, obj); XP_ERROR0(XPATH_UNDEF_PREFIX_ERROR); } - } + } /* * Setup axis. * @@ -11928,7 +12164,6 @@ * avoid a duplicate-aware merge, if the axis to be traversed is e.g. * the descendant-or-self axis. */ - addNode = xmlXPathNodeSetAdd; mergeAndClear = xmlXPathNodeSetMergeAndClear; switch (axis) { case AXIS_ANCESTOR: @@ -11947,13 +12182,6 @@ break; case AXIS_CHILD: last = NULL; - if (op->rewriteType == XP_REWRITE_DOS_CHILD_ELEM) { - /* - * This iterator will give us only nodes which can - * hold element nodes. - */ - outerNext = xmlXPathNextDescendantOrSelfElemParent; - } if (((test == NODE_TEST_NAME) || (test == NODE_TEST_ALL)) && (type == NODE_TYPE_NODE)) { @@ -12008,20 +12236,20 @@ } #ifdef DEBUG_STEP - xmlXPathDebugDumpStepAxis(axis, test, - (obj->nodesetval != NULL) ? obj->nodsetval->nodeNr : 0); + xmlXPathDebugDumpStepAxis(op, + (obj->nodesetval != NULL) ? obj->nodesetval->nodeNr : 0); #endif if (next == NULL) { - xmlXPathReleaseObject(xpctxt, obj); + xmlXPathReleaseObject(xpctxt, obj); return(0); - } + } contextSeq = obj->nodesetval; if ((contextSeq == NULL) || (contextSeq->nodeNr <= 0)) { xmlXPathReleaseObject(xpctxt, obj); valuePush(ctxt, xmlXPathCacheWrapNodeSet(xpctxt, NULL)); return(0); - } + } /* * Predicate optimization --------------------------------------------- * If this step has a last predicate, which contains a position(), @@ -12029,7 +12257,7 @@ * the short-hand form, i.e., "[n]". * * Example - expression "/foo[parent::bar][1]": - * + * * COLLECT 'child' 'name' 'node' foo -- op (we are here) * ROOT -- op->ch1 * PREDICATE -- op->ch2 (predOp) @@ -12062,7 +12290,7 @@ */ predOp = NULL; hasAxisRange = 1; - } + } } } breakOnFirstHit = ((toBool) && (predOp == NULL)) ? 1 : 0; @@ -12071,7 +12299,7 @@ */ /* * 2.3 Node Tests - * - For the attribute axis, the principal node type is attribute. + * - For the attribute axis, the principal node type is attribute. * - For the namespace axis, the principal node type is namespace. * - For other axes, the principal node type is element. * @@ -12083,33 +12311,14 @@ addNode = xmlXPathNodeSetAddUnique; outSeq = NULL; seq = NULL; - outerContextNode = NULL; contextNode = NULL; contextIdx = 0; - while ((contextIdx < contextSeq->nodeNr) || (contextNode != NULL)) { - if (outerNext != NULL) { - /* - * This is a compound traversal. - */ - if (contextNode == NULL) { - /* - * Set the context for the outer traversal. - */ - outerContextNode = contextSeq->nodeTab[contextIdx++]; - contextNode = outerNext(NULL, outerContextNode); - } else - contextNode = outerNext(contextNode, outerContextNode); - if (contextNode == NULL) - continue; - /* - * Set the context for the main traversal. - */ - xpctxt->node = contextNode; - } else - xpctxt->node = contextSeq->nodeTab[contextIdx++]; - + while (((contextIdx < contextSeq->nodeNr) || (contextNode != NULL)) && + (ctxt->error == XPATH_EXPRESSION_OK)) { + xpctxt->node = contextSeq->nodeTab[contextIdx++]; + if (seq == NULL) { seq = xmlXPathNodeSetCreate(NULL); if (seq == NULL) { @@ -12163,6 +12372,7 @@ #ifdef DEBUG_STEP xmlGenericError(xmlGenericErrorContext, " %s", cur->name); #endif + switch (test) { case NODE_TEST_NONE: total = 0; @@ -12181,7 +12391,7 @@ #ifdef LIBXML_DOCB_ENABLED case XML_DOCB_DOCUMENT_NODE: #endif - case XML_ELEMENT_NODE: + case XML_ELEMENT_NODE: case XML_ATTRIBUTE_NODE: case XML_PI_NODE: case XML_COMMENT_NODE: @@ -12194,7 +12404,7 @@ break; } } else if (cur->type == type) { - if (type == XML_NAMESPACE_DECL) + if (cur->type == XML_NAMESPACE_DECL) XP_TEST_HIT_NS else XP_TEST_HIT @@ -12215,7 +12425,14 @@ if (axis == AXIS_ATTRIBUTE) { if (cur->type == XML_ATTRIBUTE_NODE) { - XP_TEST_HIT + if (prefix == NULL) + { + XP_TEST_HIT + } else if ((cur->ns != NULL) && + (xmlStrEqual(URI, cur->ns->href))) + { + XP_TEST_HIT + } } } else if (axis == AXIS_NAMESPACE) { if (cur->type == XML_NAMESPACE_DECL) @@ -12241,6 +12458,16 @@ break; } case NODE_TEST_NAME: + if (axis == AXIS_ATTRIBUTE) { + if (cur->type != XML_ATTRIBUTE_NODE) + break; + } else if (axis == AXIS_NAMESPACE) { + if (cur->type != XML_NAMESPACE_DECL) + break; + } else { + if (cur->type != XML_ELEMENT_NODE) + break; + } switch (cur->type) { case XML_ELEMENT_NODE: if (xmlStrEqual(name, cur->name)) { @@ -12295,11 +12522,11 @@ } break; } /* switch(test) */ - } while (cur != NULL); + } while ((cur != NULL) && (ctxt->error == XPATH_EXPRESSION_OK)); goto apply_predicates; -axis_range_end: /* ----------------------------------------------------- */ +axis_range_end: /* ----------------------------------------------------- */ /* * We have a "/foo[n]", and position() = n was reached. * Note that we can have as well "/foo/::parent::foo[1]", so @@ -12336,13 +12563,16 @@ #endif apply_predicates: /* --------------------------------------------------- */ + if (ctxt->error != XPATH_EXPRESSION_OK) + goto error; + /* * Apply predicates. - */ + */ if ((predOp != NULL) && (seq->nodeNr > 0)) { /* * E.g. when we have a "/foo[some expression][n]". - */ + */ /* * QUESTION TODO: The old predicate evaluation took into * account location-sets. @@ -12351,7 +12581,7 @@ * All what I learned now from the evaluation semantics * does not indicate that a location-set will be processed * here, so this looks OK. - */ + */ /* * Iterate over all predicates, starting with the outermost * predicate. @@ -12367,7 +12597,7 @@ * * For the moment, I'll try to solve this with a recursive * function: xmlXPathCompOpEvalPredicate(). - */ + */ size = seq->nodeNr; if (hasPredicateRange != 0) newSize = xmlXPathCompOpEvalPositionalPredicate(ctxt, @@ -12422,7 +12652,7 @@ } else { outSeq = mergeAndClear(outSeq, seq, 0); } - } + } } error: @@ -12447,10 +12677,11 @@ outSeq = seq; else outSeq = xmlXPathNodeSetCreate(NULL); + /* XXX what if xmlXPathNodeSetCreate returned NULL here? */ } if ((seq != NULL) && (seq != outSeq)) { xmlXPathFreeNodeSet(seq); - } + } /* * Hand over the result. Better to push the set also in * case of errors. @@ -12590,7 +12821,7 @@ return (total); #ifdef XP_OPTIMIZED_FILTER_FIRST case XPATH_OP_FILTER: - total =+ xmlXPathCompOpEvalFilterFirst(ctxt, op, first); + total += xmlXPathCompOpEvalFilterFirst(ctxt, op, first); return (total); #endif default: @@ -12734,9 +12965,9 @@ xmlXPathStepOpPtr op, xmlNodePtr * first) { int total = 0; - xmlXPathCompExprPtr comp; + xmlXPathCompExprPtr comp; xmlXPathObjectPtr res; - xmlXPathObjectPtr obj; + xmlXPathObjectPtr obj; xmlNodeSetPtr oldset; xmlNodePtr oldnode; xmlDocPtr oldDoc; @@ -12751,7 +12982,7 @@ (comp->steps[op->ch1].op == XPATH_OP_SORT) && (comp->steps[op->ch2].op == XPATH_OP_SORT)) { int f = comp->steps[op->ch2].ch1; - + if ((f != -1) && (comp->steps[f].op == XPATH_OP_FUNCTION) && (comp->steps[f].value5 == NULL) && @@ -12760,7 +12991,7 @@ (xmlStrEqual (comp->steps[f].value4, BAD_CAST "last"))) { xmlNodePtr last = NULL; - + total += xmlXPathCompOpEvalLast(ctxt, &comp->steps[op->ch1], @@ -12787,7 +13018,7 @@ return (total); } } - + if (op->ch1 != -1) total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]); CHECK_ERROR0; @@ -12795,7 +13026,7 @@ return (total); if (ctxt->value == NULL) return (total); - + #ifdef LIBXML_XPTR_ENABLED oldnode = ctxt->context->node; /* @@ -12805,7 +13036,7 @@ xmlXPathObjectPtr tmp = NULL; xmlLocationSetPtr newlocset = NULL; xmlLocationSetPtr oldlocset; - + /* * Extract the old locset, and then evaluate the result of the * expression for all the element in the locset. use it to grow @@ -12815,7 +13046,7 @@ obj = valuePop(ctxt); oldlocset = obj->user; ctxt->context->node = NULL; - + if ((oldlocset == NULL) || (oldlocset->locNr == 0)) { ctxt->context->contextSize = 0; ctxt->context->proximityPosition = 0; @@ -12830,7 +13061,7 @@ return (total); } newlocset = xmlXPtrLocationSetCreate(NULL); - + for (i = 0; i < oldlocset->locNr; i++) { /* * Run the evaluation with a node list made of a @@ -12843,9 +13074,11 @@ tmp = xmlXPathCacheNewNodeSet(ctxt->context, ctxt->context->node); } else { - xmlXPathNodeSetAddUnique(tmp->nodesetval, - ctxt->context->node); - } + if (xmlXPathNodeSetAddUnique(tmp->nodesetval, + ctxt->context->node) < 0) { + ctxt->error = XPATH_MEMORY_ERROR; + } + } valuePush(ctxt, tmp); if (op->ch2 != -1) total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]); @@ -12871,14 +13104,14 @@ } if (ctxt->value == tmp) { valuePop(ctxt); - xmlXPathNodeSetClear(tmp->nodesetval, 1); + xmlXPathNodeSetClear(tmp->nodesetval, 1); /* * REVISIT TODO: Don't create a temporary nodeset * for everly iteration. */ /* OLD: xmlXPathFreeObject(res); */ } else - tmp = NULL; + tmp = NULL; ctxt->context->node = NULL; /* * Only put the first node in the result, then leave. @@ -12903,7 +13136,7 @@ return (total); } #endif /* LIBXML_XPTR_ENABLED */ - + /* * Extract the old set, and then evaluate the result of the * expression for all the element in the set. use it to grow @@ -12912,11 +13145,11 @@ CHECK_TYPE0(XPATH_NODESET); obj = valuePop(ctxt); oldset = obj->nodesetval; - + oldnode = ctxt->context->node; oldDoc = ctxt->context->doc; ctxt->context->node = NULL; - + if ((oldset == NULL) || (oldset->nodeNr == 0)) { ctxt->context->contextSize = 0; ctxt->context->proximityPosition = 0; @@ -12940,9 +13173,10 @@ * Initialize the new set. * Also set the xpath document in case things like * key() evaluation are attempted on the predicate - */ + */ newset = xmlXPathNodeSetCreate(NULL); - + /* XXX what if xmlXPathNodeSetCreate returned NULL? */ + for (i = 0; i < oldset->nodeNr; i++) { /* * Run the evaluation with a node list made of @@ -12956,8 +13190,10 @@ tmp = xmlXPathCacheNewNodeSet(ctxt->context, ctxt->context->node); } else { - xmlXPathNodeSetAddUnique(tmp->nodesetval, - ctxt->context->node); + if (xmlXPathNodeSetAddUnique(tmp->nodesetval, + ctxt->context->node) < 0) { + ctxt->error = XPATH_MEMORY_ERROR; + } } valuePush(ctxt, tmp); ctxt->context->contextSize = oldset->nodeNr; @@ -12968,15 +13204,16 @@ xmlXPathFreeNodeSet(newset); xmlXPathFreeObject(obj); return(0); - } + } /* * The result of the evaluation needs to be tested to * decide whether the filter succeeded or not */ res = valuePop(ctxt); if (xmlXPathEvaluatePredicateResult(ctxt, res)) { - xmlXPathNodeSetAdd(newset, oldset->nodeTab[i]); - } + if (xmlXPathNodeSetAdd(newset, oldset->nodeTab[i]) < 0) + ctxt->error = XPATH_MEMORY_ERROR; + } /* * Cleanup */ @@ -13112,7 +13349,7 @@ total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]); CHECK_ERROR0; if (op->value) - equal = xmlXPathEqualValues(ctxt); + equal = xmlXPathEqualValues(ctxt); else equal = xmlXPathNotEqualValues(ctxt); valuePush(ctxt, xmlXPathCacheNewBoolean(ctxt->context, equal)); @@ -13265,8 +13502,9 @@ URI = xmlXPathNsLookup(ctxt->context, op->value5); if (URI == NULL) { xmlGenericError(xmlGenericErrorContext, - "xmlXPathCompOpEval: variable %s bound to undefined prefix %s\n", - op->value4, op->value5); + "xmlXPathCompOpEval: variable %s bound to undefined prefix %s\n", + (char *) op->value4, (char *)op->value5); + ctxt->error = XPATH_UNDEF_PREFIX_ERROR; return (total); } val = xmlXPathVariableLookupNS(ctxt->context, @@ -13283,23 +13521,33 @@ xmlXPathFunction func; const xmlChar *oldFunc, *oldFuncURI; int i; + int frame; - if (op->ch1 != -1) + frame = xmlXPathSetFrame(ctxt); + if (op->ch1 != -1) { total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]); - if (ctxt->valueNr < op->value) { + if (ctxt->error != XPATH_EXPRESSION_OK) { + xmlXPathPopFrame(ctxt, frame); + return (total); + } + } + if (ctxt->valueNr < ctxt->valueFrame + op->value) { xmlGenericError(xmlGenericErrorContext, "xmlXPathCompOpEval: parameter error\n"); ctxt->error = XPATH_INVALID_OPERAND; + xmlXPathPopFrame(ctxt, frame); return (total); } - for (i = 0; i < op->value; i++) + for (i = 0; i < op->value; i++) { if (ctxt->valueTab[(ctxt->valueNr - 1) - i] == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlXPathCompOpEval: parameter error\n"); ctxt->error = XPATH_INVALID_OPERAND; + xmlXPathPopFrame(ctxt, frame); return (total); } + } if (op->cache != NULL) XML_CAST_FPTR(func) = op->cache; else { @@ -13313,8 +13561,10 @@ URI = xmlXPathNsLookup(ctxt->context, op->value5); if (URI == NULL) { xmlGenericError(xmlGenericErrorContext, - "xmlXPathCompOpEval: function %s bound to undefined prefix %s\n", - op->value4, op->value5); + "xmlXPathCompOpEval: function %s bound to undefined prefix %s\n", + (char *)op->value4, (char *)op->value5); + xmlXPathPopFrame(ctxt, frame); + ctxt->error = XPATH_UNDEF_PREFIX_ERROR; return (total); } func = xmlXPathFunctionLookupNS(ctxt->context, @@ -13322,8 +13572,8 @@ } if (func == NULL) { xmlGenericError(xmlGenericErrorContext, - "xmlXPathCompOpEval: function %s not found\n", - op->value4); + "xmlXPathCompOpEval: function %s not found\n", + (char *)op->value4); XP_ERROR0(XPATH_UNKNOWN_FUNC_ERROR); } op->cache = XML_CAST_FPTR(func); @@ -13336,6 +13586,7 @@ func(ctxt, op->value); ctxt->context->function = oldFunc; ctxt->context->functionURI = oldFuncURI; + xmlXPathPopFrame(ctxt, frame); return (total); } case XPATH_OP_ARG: @@ -13343,17 +13594,20 @@ bak = ctxt->context->node; pp = ctxt->context->proximityPosition; cs = ctxt->context->contextSize; - if (op->ch1 != -1) + if (op->ch1 != -1) { total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]); - ctxt->context->contextSize = cs; - ctxt->context->proximityPosition = pp; - ctxt->context->node = bak; - ctxt->context->doc = bakd; - CHECK_ERROR0; + ctxt->context->contextSize = cs; + ctxt->context->proximityPosition = pp; + ctxt->context->node = bak; + ctxt->context->doc = bakd; + CHECK_ERROR0; + } if (op->ch2 != -1) { total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]); - ctxt->context->doc = bakd; - ctxt->context->node = bak; + ctxt->context->contextSize = cs; + ctxt->context->proximityPosition = pp; + ctxt->context->node = bak; + ctxt->context->doc = bakd; CHECK_ERROR0; } return (total); @@ -13521,7 +13775,7 @@ tmp = xmlXPathCacheNewNodeSet(ctxt->context, ctxt->context->node); valuePush(ctxt, tmp); - + if (op->ch2 != -1) total += xmlXPathCompOpEval(ctxt, @@ -13630,7 +13884,7 @@ * nC 2 * * removed the first node in the node-set, then - * the context position of the + * the context position of the */ for (i = 0; i < oldset->nodeNr; i++) { /* @@ -13645,8 +13899,10 @@ tmp = xmlXPathCacheNewNodeSet(ctxt->context, ctxt->context->node); } else { - xmlXPathNodeSetAddUnique(tmp->nodesetval, - ctxt->context->node); + if (xmlXPathNodeSetAddUnique(tmp->nodesetval, + ctxt->context->node) < 0) { + ctxt->error = XPATH_MEMORY_ERROR; + } } valuePush(ctxt, tmp); ctxt->context->contextSize = oldset->nodeNr; @@ -13676,7 +13932,9 @@ */ res = valuePop(ctxt); if (xmlXPathEvaluatePredicateResult(ctxt, res)) { - xmlXPathNodeSetAdd(newset, oldset->nodeTab[i]); + if (xmlXPathNodeSetAdd(newset, oldset->nodeTab[i]) + < 0) + ctxt->error = XPATH_MEMORY_ERROR; } /* @@ -13687,7 +13945,7 @@ } if (ctxt->value == tmp) { valuePop(ctxt); - xmlXPathNodeSetClear(tmp->nodesetval, 1); + xmlXPathNodeSetClear(tmp->nodesetval, 1); /* * Don't free the temporary nodeset * in order to avoid massive recreation inside this @@ -13790,7 +14048,7 @@ res = valuePop(ctxt); if (res->type == XPATH_LOCATIONSET) { - xmlLocationSetPtr rloc = + xmlLocationSetPtr rloc = (xmlLocationSetPtr)res->user; for (j=0; jlocNr; j++) { range = xmlXPtrNewRange( @@ -13892,6 +14150,7 @@ } xmlGenericError(xmlGenericErrorContext, "XPath: unknown precompiled operation %d\n", op->op); + ctxt->error = XPATH_INVALID_OPERAND; return (total); } @@ -13952,7 +14211,7 @@ xmlXPathCompOpEval(ctxt, op); if (ctxt->error != XPATH_EXPRESSION_OK) return(-1); - + resObj = valuePop(ctxt); if (resObj == NULL) return(-1); @@ -13973,7 +14232,7 @@ * to true if the number is equal to the context position * and will be converted to false otherwise;" */ - res = xmlXPathEvaluatePredicateResult(ctxt, resObj); + res = xmlXPathEvaluatePredicateResult(ctxt, resObj); } else { res = xmlXPathCastToBoolean(resObj); } @@ -13996,13 +14255,13 @@ xmlXPathObjectPtr *resultSeq, int toBool) { int max_depth, min_depth; - int from_root; + int from_root; int ret, depth; int eval_all_nodes; xmlNodePtr cur = NULL, limit = NULL; xmlStreamCtxtPtr patstream = NULL; - - int nb_nodes = 0; + + int nb_nodes = 0; if ((ctxt == NULL) || (comp == NULL)) return(-1); @@ -14028,7 +14287,7 @@ if (*resultSeq == NULL) return(-1); } - + /* * handle the special cases of "/" amd "." being matched */ @@ -14038,7 +14297,7 @@ if (toBool) return(1); xmlXPathNodeSetAddUnique((*resultSeq)->nodesetval, - (xmlNodePtr) ctxt->doc); + (xmlNodePtr) ctxt->doc); } else { /* Select "self::node()" */ if (toBool) @@ -14125,13 +14384,17 @@ ret = xmlStreamPushNode(patstream, NULL, NULL, cur->type); else break; - + if (ret < 0) { /* NOP. */ } else if (ret == 1) { if (toBool) goto return_1; - xmlXPathNodeSetAddUnique((*resultSeq)->nodesetval, cur); + if (xmlXPathNodeSetAddUnique((*resultSeq)->nodesetval, cur) + < 0) { + ctxt->lastError.domain = XML_FROM_XPATH; + ctxt->lastError.code = XML_ERR_NO_MEMORY; + } } if ((cur->children == NULL) || (depth >= max_depth)) { ret = xmlStreamPop(patstream); @@ -14147,9 +14410,10 @@ } scan_children: + if (cur->type == XML_NAMESPACE_DECL) break; if ((cur->children != NULL) && (depth < max_depth)) { /* - * Do not descend on entities declarations + * Do not descend on entities declarations */ if (cur->children->type != XML_ENTITY_DECL) { cur = cur->children; @@ -14171,7 +14435,7 @@ (cur->type != XML_DTD_NODE)) goto next_node; } - + do { cur = cur->parent; depth--; @@ -14230,7 +14494,7 @@ if (ctxt->valueTab == NULL) { /* Allocate the value stack */ - ctxt->valueTab = (xmlXPathObjectPtr *) + ctxt->valueTab = (xmlXPathObjectPtr *) xmlMalloc(10 * sizeof(xmlXPathObjectPtr)); if (ctxt->valueTab == NULL) { xmlXPathPErrMemory(ctxt, "creating evaluation context\n"); @@ -14239,6 +14503,7 @@ ctxt->valueNr = 0; ctxt->valueMax = 10; ctxt->value = NULL; + ctxt->valueFrame = 0; } #ifdef XPATH_STREAMING if (ctxt->comp->stream) { @@ -14253,7 +14518,7 @@ if (res != -1) return(res); } else { - xmlXPathObjectPtr resObj = NULL; + xmlXPathObjectPtr resObj = NULL; /* * Evaluation to a sequence. @@ -14266,7 +14531,7 @@ return(0); } if (resObj != NULL) - xmlXPathReleaseObject(ctxt->context, resObj); + xmlXPathReleaseObject(ctxt->context, resObj); } /* * QUESTION TODO: This falls back to normal XPath evaluation @@ -14291,7 +14556,7 @@ /************************************************************************ * * - * Public interfaces * + * Public interfaces * * * ************************************************************************/ @@ -14307,7 +14572,7 @@ * context node in the context node list (as returned by the position * function) and will be converted to false otherwise; if the result * is not a number, then the result will be converted as if by a call - * to the boolean function. + * to the boolean function. * * Returns 1 if predicate is true, 0 otherwise */ @@ -14345,12 +14610,12 @@ * context node in the context node list (as returned by the position * function) and will be converted to false otherwise; if the result * is not a number, then the result will be converted as if by a call - * to the boolean function. + * to the boolean function. * * Returns 1 if predicate is true, 0 otherwise */ int -xmlXPathEvaluatePredicateResult(xmlXPathParserContextPtr ctxt, +xmlXPathEvaluatePredicateResult(xmlXPathParserContextPtr ctxt, xmlXPathObjectPtr res) { if ((ctxt == NULL) || (res == NULL)) return(0); switch (res->type) { @@ -14423,7 +14688,7 @@ tmp = xmlStrchr(str, ':'); if ((tmp != NULL) && ((ctxt == NULL) || (ctxt->nsNr == 0) || (tmp[1] == ':'))) - return(NULL); + return(NULL); if (ctxt != NULL) { dict = ctxt->dict; @@ -14439,7 +14704,7 @@ namespaces[i++] = ns->prefix; } namespaces[i++] = NULL; - namespaces[i++] = NULL; + namespaces[i] = NULL; } } @@ -14447,7 +14712,7 @@ &namespaces[0]); if (namespaces != NULL) { xmlFree((xmlChar **)namespaces); - } + } if ((stream != NULL) && (xmlPatternStreamable(stream) == 1)) { comp = xmlXPathNewCompExpr(); if (comp == NULL) { @@ -14466,57 +14731,64 @@ } #endif /* XPATH_STREAMING */ -static int -xmlXPathCanRewriteDosExpression(xmlChar *expr) -{ - if (expr == NULL) - return(0); - do { - if ((*expr == '/') && (*(++expr) == '/')) - return(1); - } while (*expr++); - return(0); -} static void -xmlXPathRewriteDOSExpression(xmlXPathCompExprPtr comp, xmlXPathStepOpPtr op) +xmlXPathOptimizeExpression(xmlXPathCompExprPtr comp, xmlXPathStepOpPtr op) { /* * Try to rewrite "descendant-or-self::node()/foo" to an optimized * internal representation. */ - if (op->ch1 != -1) { - if ((op->op == XPATH_OP_COLLECT /* 11 */) && - ((xmlXPathAxisVal) op->value == AXIS_CHILD /* 4 */) && - ((xmlXPathTestVal) op->value2 == NODE_TEST_NAME /* 5 */) && - ((xmlXPathTypeVal) op->value3 == NODE_TYPE_NODE /* 0 */)) - { - /* - * This is a "child::foo" - */ - xmlXPathStepOpPtr prevop = &comp->steps[op->ch1]; - if ((prevop->op == XPATH_OP_COLLECT /* 11 */) && - (prevop->ch1 != -1) && - ((xmlXPathAxisVal) prevop->value == - AXIS_DESCENDANT_OR_SELF) && - (prevop->ch2 == -1) && - ((xmlXPathTestVal) prevop->value2 == NODE_TEST_TYPE) && - ((xmlXPathTypeVal) prevop->value3 == NODE_TYPE_NODE) && - (comp->steps[prevop->ch1].op == XPATH_OP_ROOT)) - { - /* - * This is a "/descendant-or-self::node()" without predicates. - * Eliminate it. - */ - op->ch1 = prevop->ch1; - op->rewriteType = XP_REWRITE_DOS_CHILD_ELEM; - } + if ((op->op == XPATH_OP_COLLECT /* 11 */) && + (op->ch1 != -1) && + (op->ch2 == -1 /* no predicate */)) + { + xmlXPathStepOpPtr prevop = &comp->steps[op->ch1]; + + if ((prevop->op == XPATH_OP_COLLECT /* 11 */) && + ((xmlXPathAxisVal) prevop->value == + AXIS_DESCENDANT_OR_SELF) && + (prevop->ch2 == -1) && + ((xmlXPathTestVal) prevop->value2 == NODE_TEST_TYPE) && + ((xmlXPathTypeVal) prevop->value3 == NODE_TYPE_NODE)) + { + /* + * This is a "descendant-or-self::node()" without predicates. + * Try to eliminate it. + */ + + switch ((xmlXPathAxisVal) op->value) { + case AXIS_CHILD: + case AXIS_DESCENDANT: + /* + * Convert "descendant-or-self::node()/child::" or + * "descendant-or-self::node()/descendant::" to + * "descendant::" + */ + op->ch1 = prevop->ch1; + op->value = AXIS_DESCENDANT; + break; + case AXIS_SELF: + case AXIS_DESCENDANT_OR_SELF: + /* + * Convert "descendant-or-self::node()/self::" or + * "descendant-or-self::node()/descendant-or-self::" to + * to "descendant-or-self::" + */ + op->ch1 = prevop->ch1; + op->value = AXIS_DESCENDANT_OR_SELF; + break; + default: + break; + } } - if (op->ch1 != -1) - xmlXPathRewriteDOSExpression(comp, &comp->steps[op->ch1]); } + + /* Recurse */ + if (op->ch1 != -1) + xmlXPathOptimizeExpression(comp, &comp->steps[op->ch1]); if (op->ch2 != -1) - xmlXPathRewriteDOSExpression(comp, &comp->steps[op->ch2]); + xmlXPathOptimizeExpression(comp, &comp->steps[op->ch2]); } /** @@ -14543,6 +14815,8 @@ xmlXPathInit(); pctxt = xmlXPathNewParserContext(str, ctxt); + if (pctxt == NULL) + return NULL; xmlXPathCompileExpr(pctxt, 1); if( pctxt->error != XPATH_EXPRESSION_OK ) @@ -14552,7 +14826,7 @@ } if (*pctxt->cur != 0) { - /* + /* * aleksey: in some cases this line prints *second* error message * (see bug #78858) and probably this should be fixed. * However, we are not sure that all error messages are printed @@ -14571,13 +14845,9 @@ #ifdef DEBUG_EVAL_COUNTS comp->string = xmlStrdup(str); comp->nb = 0; -#endif - if ((comp->expr != NULL) && - (comp->nbStep > 2) && - (comp->last >= 0) && - (xmlXPathCanRewriteDosExpression(comp->expr) == 1)) - { - xmlXPathRewriteDOSExpression(comp, &comp->steps[comp->last]); +#endif + if ((comp->nbStep > 1) && (comp->last >= 0)) { + xmlXPathOptimizeExpression(comp, &comp->steps[comp->last]); } } return(comp); @@ -14616,7 +14886,7 @@ xmlXPathObjectPtr *resObj, int toBool) { - xmlXPathParserContextPtr pctxt; + xmlXPathParserContextPtr pctxt; #ifndef LIBXML_THREAD_ENABLED static int reentance = 0; #endif @@ -14645,15 +14915,15 @@ res = xmlXPathRunEval(pctxt, toBool); if (resObj) { - if (pctxt->value == NULL) { + if (pctxt->value == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlXPathCompiledEval: evaluation failed\n"); - *resObj = NULL; + *resObj = NULL; } else { *resObj = valuePop(pctxt); } } - + /* * Pop all remaining objects from the stack. */ @@ -14664,8 +14934,7 @@ do { tmp = valuePop(pctxt); if (tmp != NULL) { - if (tmp != NULL) - stack++; + stack++; xmlXPathReleaseObject(ctxt, tmp); } } while (tmp != NULL); @@ -14677,11 +14946,11 @@ stack); } } - + if ((pctxt->error != XPATH_EXPRESSION_OK) && (resObj) && (*resObj)) { xmlXPathFreeObject(*resObj); *resObj = NULL; - } + } pctxt->comp = NULL; xmlXPathFreeParserContext(pctxt); #ifndef LIBXML_THREAD_ENABLED @@ -14742,7 +15011,7 @@ #endif if (ctxt == NULL) return; - + #ifdef XPATH_STREAMING comp = xmlXPathTryStreamCompile(ctxt->context, ctxt->base); if (comp != NULL) { @@ -14755,22 +15024,17 @@ #endif { xmlXPathCompileExpr(ctxt, 1); - /* - * In this scenario the expression string will sit in ctxt->base. - */ if ((ctxt->error == XPATH_EXPRESSION_OK) && (ctxt->comp != NULL) && - (ctxt->base != NULL) && - (ctxt->comp->nbStep > 2) && - (ctxt->comp->last >= 0) && - (xmlXPathCanRewriteDosExpression((xmlChar *) ctxt->base) == 1)) + (ctxt->comp->nbStep > 1) && + (ctxt->comp->last >= 0)) { - xmlXPathRewriteDOSExpression(ctxt->comp, + xmlXPathOptimizeExpression(ctxt->comp, &ctxt->comp->steps[ctxt->comp->last]); } } CHECK_ERROR; - xmlXPathRunEval(ctxt, 0); + xmlXPathRunEval(ctxt, 0); } /** @@ -14794,13 +15058,15 @@ xmlXPathInit(); ctxt = xmlXPathNewParserContext(str, ctx); + if (ctxt == NULL) + return NULL; xmlXPathEvalExpr(ctxt); if (ctxt->value == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlXPathEval: evaluation failed\n"); res = NULL; - } else if ((*ctxt->cur != 0) && (ctxt->comp != NULL) + } else if ((*ctxt->cur != 0) && (ctxt->comp != NULL) #ifdef XPATH_STREAMING && (ctxt->comp->stream == NULL) #endif @@ -14834,6 +15100,49 @@ } /** + * xmlXPathSetContextNode: + * @node: the node to to use as the context node + * @ctx: the XPath context + * + * Sets 'node' as the context node. The node must be in the same + * document as that associated with the context. + * + * Returns -1 in case of error or 0 if successful + */ +int +xmlXPathSetContextNode(xmlNodePtr node, xmlXPathContextPtr ctx) { + if ((node == NULL) || (ctx == NULL)) + return(-1); + + if (node->doc == ctx->doc) { + ctx->node = node; + return(0); + } + return(-1); +} + +/** + * xmlXPathNodeEval: + * @node: the node to to use as the context node + * @str: the XPath expression + * @ctx: the XPath context + * + * Evaluate the XPath Location Path in the given context. The node 'node' + * is set as the context node. The context node is not restored. + * + * Returns the xmlXPathObjectPtr resulting from the evaluation or NULL. + * the caller has to free the object. + */ +xmlXPathObjectPtr +xmlXPathNodeEval(xmlNodePtr node, const xmlChar *str, xmlXPathContextPtr ctx) { + if (str == NULL) + return(NULL); + if (xmlXPathSetContextNode(node, ctx) < 0) + return(NULL); + return(xmlXPathEval(str, ctx)); +} + +/** * xmlXPathEvalExpression: * @str: the XPath expression * @ctxt: the XPath context @@ -14854,6 +15163,8 @@ xmlXPathInit(); pctxt = xmlXPathNewParserContext(str, ctxt); + if (pctxt == NULL) + return NULL; xmlXPathEvalExpr(pctxt); if ((*pctxt->cur != 0) || (pctxt->error != XPATH_EXPRESSION_OK)) { @@ -14911,21 +15222,21 @@ * If $escape-reserved is false, the behavior differs in that characters * referred to in [RFC 2396] as reserved characters are not escaped. These * characters are ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ",". - * + * * [RFC 2396] does not define whether escaped URIs should use lower case or * upper case for hexadecimal digits. To ensure that escaped URIs can be * compared using string comparison functions, this function must always use * the upper-case letters A-F. - * + * * Generally, $escape-reserved should be set to true when escaping a string * that is to form a single part of a URI, and to false when escaping an * entire URI or URI reference. - * - * In the case of non-ascii characters, the string is encoded according to + * + * In the case of non-ascii characters, the string is encoded according to * utf-8 and then converted according to RFC 2396. * * Examples - * xf:escape-uri ("gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles#ocean"), true()) + * xf:escape-uri ("gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles#ocean"), true()) * returns "gopher%3A%2F%2Fspinaltap.micro.umn.edu%2F00%2FWeather%2FCalifornia%2FLos%20Angeles%23ocean" * xf:escape-uri ("gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles#ocean"), false()) * returns "gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles%23ocean" @@ -14935,31 +15246,31 @@ xmlXPathEscapeUriFunction(xmlXPathParserContextPtr ctxt, int nargs) { xmlXPathObjectPtr str; int escape_reserved; - xmlBufferPtr target; + xmlBufPtr target; xmlChar *cptr; xmlChar escape[4]; - + CHECK_ARITY(2); - + escape_reserved = xmlXPathPopBoolean(ctxt); - + CAST_TO_STRING; str = valuePop(ctxt); - - target = xmlBufferCreate(); - + + target = xmlBufCreate(); + escape[0] = '%'; escape[3] = 0; - + if (target) { for (cptr = str->stringval; *cptr; cptr++) { if ((*cptr >= 'A' && *cptr <= 'Z') || (*cptr >= 'a' && *cptr <= 'z') || (*cptr >= '0' && *cptr <= '9') || - *cptr == '-' || *cptr == '_' || *cptr == '.' || + *cptr == '-' || *cptr == '_' || *cptr == '.' || *cptr == '!' || *cptr == '~' || *cptr == '*' || *cptr == '\''|| *cptr == '(' || *cptr == ')' || - (*cptr == '%' && + (*cptr == '%' && ((cptr[1] >= 'A' && cptr[1] <= 'F') || (cptr[1] >= 'a' && cptr[1] <= 'f') || (cptr[1] >= '0' && cptr[1] <= '9')) && @@ -14971,7 +15282,7 @@ *cptr == ':' || *cptr == '@' || *cptr == '&' || *cptr == '=' || *cptr == '+' || *cptr == '$' || *cptr == ','))) { - xmlBufferAdd(target, cptr, 1); + xmlBufAdd(target, cptr, 1); } else { if ((*cptr >> 4) < 10) escape[1] = '0' + (*cptr >> 4); @@ -14981,14 +15292,14 @@ escape[2] = '0' + (*cptr & 0xF); else escape[2] = 'A' - 10 + (*cptr & 0xF); - - xmlBufferAdd(target, &escape[0], 3); + + xmlBufAdd(target, &escape[0], 3); } } } valuePush(ctxt, xmlXPathCacheNewString(ctxt->context, - xmlBufferContent(target))); - xmlBufferFree(target); + xmlBufContent(target))); + xmlBufFree(target); xmlXPathReleaseObject(ctxt->context, str); } diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xpath.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xpath.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xpath.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xpath.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -33,7 +33,7 @@ extern "C" { #endif #endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED */ - + #ifdef LIBXML_XPATH_ENABLED typedef struct _xmlXPathContext xmlXPathContext; @@ -68,7 +68,9 @@ XPATH_UNDEF_PREFIX_ERROR, XPATH_ENCODING_ERROR, XPATH_INVALID_CHAR_ERROR, - XPATH_INVALID_CTXT + XPATH_INVALID_CTXT, + XPATH_STACK_ERROR, + XPATH_FORBID_VARIABLE_ERROR } xmlXPathError; /* @@ -271,13 +273,16 @@ * * Expression evaluation occurs with respect to a context. * he context consists of: - * - a node (the context node) - * - a node list (the context node list) - * - a set of variable bindings - * - a function library - * - the set of namespace declarations in scope for the expression + * - a node (the context node) + * - a node list (the context node list) + * - a set of variable bindings + * - a function library + * - the set of namespace declarations in scope for the expression * Following the switch to hash tables, this need to be trimmed up at * the next binary incompatible release. + * The node may be modified when the context is passed to libxml2 + * for an XPath evaluation so you may need to initialize it again + * before the next call. */ struct _xmlXPathContext { @@ -310,7 +315,7 @@ int proximityPosition; /* the proximity position */ /* extra stuff for XPointer */ - int xptr; /* it this an XPointer context */ + int xptr; /* is this an XPointer context? */ xmlNodePtr here; /* for here() */ xmlNodePtr origin; /* for origin() */ @@ -332,7 +337,7 @@ /* temporary namespace lists kept for walking the namespace axis */ xmlNsPtr *tmpNsList; /* Array of namespaces */ - int tmpNsNr; /* number of namespace in scope */ + int tmpNsNr; /* number of namespaces in scope */ /* error reporting mechanism */ void *userData; /* user specific data block */ @@ -340,8 +345,8 @@ xmlError lastError; /* the last error */ xmlNodePtr debugNode; /* the source node XSLT */ - /* dictionnary */ - xmlDictPtr dict; /* dictionnary if any */ + /* dictionary */ + xmlDictPtr dict; /* dictionary if any */ int flags; /* flags to control compilation */ @@ -377,6 +382,8 @@ xmlXPathCompExprPtr comp; /* the precompiled expression */ int xptr; /* it this an XPointer expression */ xmlNodePtr ancestor; /* used for walking preceding axis */ + + int valueFrame; /* used to limit Pop on the stack */ }; /************************************************************************ @@ -414,7 +421,7 @@ * @index is out of range (0 to length-1) */ #define xmlXPathNodeSetItem(ns, index) \ - ((((ns) != NULL) && \ + ((((ns) != NULL) && \ ((index) >= 0) && ((index) < (ns)->nodeNr)) ? \ (ns)->nodeTab[(index)] \ : NULL) @@ -430,64 +437,64 @@ (((ns) == NULL) || ((ns)->nodeNr == 0) || ((ns)->nodeTab == NULL)) -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathFreeObject (xmlXPathObjectPtr obj); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathNodeSetCreate (xmlNodePtr val); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathFreeNodeSetList (xmlXPathObjectPtr obj); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathFreeNodeSet (xmlNodeSetPtr obj); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathObjectCopy (xmlXPathObjectPtr val); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathCmpNodes (xmlNodePtr node1, xmlNodePtr node2); /** * Conversion functions to basic types. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathCastNumberToBoolean (double val); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathCastStringToBoolean (const xmlChar * val); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathCastNodeSetToBoolean(xmlNodeSetPtr ns); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathCastToBoolean (xmlXPathObjectPtr val); -XMLPUBFUN double XMLCALL +XMLPUBFUN double XMLCALL xmlXPathCastBooleanToNumber (int val); -XMLPUBFUN double XMLCALL +XMLPUBFUN double XMLCALL xmlXPathCastStringToNumber (const xmlChar * val); -XMLPUBFUN double XMLCALL +XMLPUBFUN double XMLCALL xmlXPathCastNodeToNumber (xmlNodePtr node); -XMLPUBFUN double XMLCALL +XMLPUBFUN double XMLCALL xmlXPathCastNodeSetToNumber (xmlNodeSetPtr ns); -XMLPUBFUN double XMLCALL +XMLPUBFUN double XMLCALL xmlXPathCastToNumber (xmlXPathObjectPtr val); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlXPathCastBooleanToString (int val); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlXPathCastNumberToString (double val); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlXPathCastNodeToString (xmlNodePtr node); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlXPathCastNodeSetToString (xmlNodeSetPtr ns); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlXPathCastToString (xmlXPathObjectPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathConvertBoolean (xmlXPathObjectPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathConvertNumber (xmlXPathObjectPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathConvertString (xmlXPathObjectPtr val); /** * Context handling. */ -XMLPUBFUN xmlXPathContextPtr XMLCALL +XMLPUBFUN xmlXPathContextPtr XMLCALL xmlXPathNewContext (xmlDocPtr doc); XMLPUBFUN void XMLCALL xmlXPathFreeContext (xmlXPathContextPtr ctxt); @@ -499,36 +506,43 @@ /** * Evaluation functions. */ -XMLPUBFUN long XMLCALL +XMLPUBFUN long XMLCALL xmlXPathOrderDocElems (xmlDocPtr doc); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN int XMLCALL + xmlXPathSetContextNode (xmlNodePtr node, + xmlXPathContextPtr ctx); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathNodeEval (xmlNodePtr node, + const xmlChar *str, + xmlXPathContextPtr ctx); +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathEval (const xmlChar *str, xmlXPathContextPtr ctx); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathEvalExpression (const xmlChar *str, xmlXPathContextPtr ctxt); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathEvalPredicate (xmlXPathContextPtr ctxt, xmlXPathObjectPtr res); /** * Separate compilation/evaluation entry points. */ -XMLPUBFUN xmlXPathCompExprPtr XMLCALL +XMLPUBFUN xmlXPathCompExprPtr XMLCALL xmlXPathCompile (const xmlChar *str); -XMLPUBFUN xmlXPathCompExprPtr XMLCALL +XMLPUBFUN xmlXPathCompExprPtr XMLCALL xmlXPathCtxtCompile (xmlXPathContextPtr ctxt, - const xmlChar *str); -XMLPUBFUN xmlXPathObjectPtr XMLCALL + const xmlChar *str); +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathCompiledEval (xmlXPathCompExprPtr comp, xmlXPathContextPtr ctx); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathCompiledEvalToBoolean(xmlXPathCompExprPtr comp, xmlXPathContextPtr ctxt); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathFreeCompExpr (xmlXPathCompExprPtr comp); #endif /* LIBXML_XPATH_ENABLED */ #if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathInit (void); XMLPUBFUN int XMLCALL xmlXPathIsNaN (double val); diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xpathInternals.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xpathInternals.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xpathInternals.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xpathInternals.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -100,16 +100,16 @@ */ #define xmlXPathGetContextNode(ctxt) ((ctxt)->context->node) -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathPopBoolean (xmlXPathParserContextPtr ctxt); -XMLPUBFUN double XMLCALL - xmlXPathPopNumber (xmlXPathParserContextPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlXPathPopString (xmlXPathParserContextPtr ctxt); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathPopNodeSet (xmlXPathParserContextPtr ctxt); -XMLPUBFUN void * XMLCALL - xmlXPathPopExternal (xmlXPathParserContextPtr ctxt); +XMLPUBFUN double XMLCALL + xmlXPathPopNumber (xmlXPathParserContextPtr ctxt); +XMLPUBFUN xmlChar * XMLCALL + xmlXPathPopString (xmlXPathParserContextPtr ctxt); +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathPopNodeSet (xmlXPathParserContextPtr ctxt); +XMLPUBFUN void * XMLCALL + xmlXPathPopExternal (xmlXPathParserContextPtr ctxt); /** * xmlXPathReturnBoolean: @@ -296,7 +296,9 @@ #define CHECK_ARITY(x) \ if (ctxt == NULL) return; \ if (nargs != (x)) \ - XP_ERROR(XPATH_INVALID_ARITY); + XP_ERROR(XPATH_INVALID_ARITY); \ + if (ctxt->valueNr < ctxt->valueFrame + (x)) \ + XP_ERROR(XPATH_STACK_ERROR); /** * CAST_TO_STRING: @@ -329,7 +331,7 @@ * Variable Lookup forwarding. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathRegisterVariableLookup (xmlXPathContextPtr ctxt, xmlXPathVariableLookupFunc f, void *data); @@ -338,7 +340,7 @@ * Function Lookup forwarding. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathRegisterFuncLookup (xmlXPathContextPtr ctxt, xmlXPathFuncLookupFunc f, void *funcCtxt); @@ -346,7 +348,7 @@ /* * Error reporting. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPatherror (xmlXPathParserContextPtr ctxt, const char *file, int line, @@ -357,11 +359,11 @@ int error); #ifdef LIBXML_DEBUG_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathDebugDumpObject (FILE *output, xmlXPathObjectPtr cur, int depth); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathDebugDumpCompExpr(FILE *output, xmlXPathCompExprPtr comp, int depth); @@ -369,48 +371,48 @@ /** * NodeSet handling. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathNodeSetContains (xmlNodeSetPtr cur, xmlNodePtr val); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathDifference (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathIntersection (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathDistinctSorted (xmlNodeSetPtr nodes); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathDistinct (xmlNodeSetPtr nodes); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathHasSameNodes (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathNodeLeadingSorted (xmlNodeSetPtr nodes, xmlNodePtr node); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathLeadingSorted (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathNodeLeading (xmlNodeSetPtr nodes, xmlNodePtr node); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathLeading (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathNodeTrailingSorted (xmlNodeSetPtr nodes, xmlNodePtr node); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathTrailingSorted (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathNodeTrailing (xmlNodeSetPtr nodes, xmlNodePtr node); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathTrailing (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2); @@ -419,51 +421,51 @@ * Extending a context. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathRegisterNs (xmlXPathContextPtr ctxt, const xmlChar *prefix, const xmlChar *ns_uri); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlXPathNsLookup (xmlXPathContextPtr ctxt, const xmlChar *prefix); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathRegisteredNsCleanup (xmlXPathContextPtr ctxt); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathRegisterFunc (xmlXPathContextPtr ctxt, const xmlChar *name, xmlXPathFunction f); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathRegisterFuncNS (xmlXPathContextPtr ctxt, const xmlChar *name, const xmlChar *ns_uri, xmlXPathFunction f); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathRegisterVariable (xmlXPathContextPtr ctxt, const xmlChar *name, xmlXPathObjectPtr value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathRegisterVariableNS (xmlXPathContextPtr ctxt, const xmlChar *name, const xmlChar *ns_uri, xmlXPathObjectPtr value); -XMLPUBFUN xmlXPathFunction XMLCALL +XMLPUBFUN xmlXPathFunction XMLCALL xmlXPathFunctionLookup (xmlXPathContextPtr ctxt, const xmlChar *name); -XMLPUBFUN xmlXPathFunction XMLCALL +XMLPUBFUN xmlXPathFunction XMLCALL xmlXPathFunctionLookupNS (xmlXPathContextPtr ctxt, const xmlChar *name, const xmlChar *ns_uri); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathRegisteredFuncsCleanup (xmlXPathContextPtr ctxt); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathVariableLookup (xmlXPathContextPtr ctxt, const xmlChar *name); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathVariableLookupNS (xmlXPathContextPtr ctxt, const xmlChar *name, const xmlChar *ns_uri); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt); /** @@ -471,79 +473,79 @@ */ XMLPUBFUN xmlXPathParserContextPtr XMLCALL xmlXPathNewParserContext (const xmlChar *str, - xmlXPathContextPtr ctxt); -XMLPUBFUN void XMLCALL + xmlXPathContextPtr ctxt); +XMLPUBFUN void XMLCALL xmlXPathFreeParserContext (xmlXPathParserContextPtr ctxt); /* TODO: remap to xmlXPathValuePop and Push. */ -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL valuePop (xmlXPathParserContextPtr ctxt); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL valuePush (xmlXPathParserContextPtr ctxt, - xmlXPathObjectPtr value); + xmlXPathObjectPtr value); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathNewString (const xmlChar *val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathNewCString (const char *val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathWrapString (xmlChar *val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathWrapCString (char * val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathNewFloat (double val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathNewBoolean (int val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathNewNodeSet (xmlNodePtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathNewValueTree (xmlNodePtr val); -XMLPUBFUN void XMLCALL +XMLPUBFUN int XMLCALL xmlXPathNodeSetAdd (xmlNodeSetPtr cur, xmlNodePtr val); -XMLPUBFUN void XMLCALL +XMLPUBFUN int XMLCALL xmlXPathNodeSetAddUnique (xmlNodeSetPtr cur, xmlNodePtr val); -XMLPUBFUN void XMLCALL - xmlXPathNodeSetAddNs (xmlNodeSetPtr cur, - xmlNodePtr node, +XMLPUBFUN int XMLCALL + xmlXPathNodeSetAddNs (xmlNodeSetPtr cur, + xmlNodePtr node, xmlNsPtr ns); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathNodeSetSort (xmlNodeSetPtr set); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathRoot (xmlXPathParserContextPtr ctxt); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathEvalExpr (xmlXPathParserContextPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlXPathParseName (xmlXPathParserContextPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlXPathParseNCName (xmlXPathParserContextPtr ctxt); /* * Existing functions. */ -XMLPUBFUN double XMLCALL +XMLPUBFUN double XMLCALL xmlXPathStringEvalNumber (const xmlChar *str); -XMLPUBFUN int XMLCALL - xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt, +XMLPUBFUN int XMLCALL + xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt, xmlXPathObjectPtr res); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathRegisterAllFunctions (xmlXPathContextPtr ctxt); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathNodeSetMerge (xmlNodeSetPtr val1, +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathNodeSetMerge (xmlNodeSetPtr val1, xmlNodeSetPtr val2); -XMLPUBFUN void XMLCALL - xmlXPathNodeSetDel (xmlNodeSetPtr cur, +XMLPUBFUN void XMLCALL + xmlXPathNodeSetDel (xmlNodeSetPtr cur, xmlNodePtr val); -XMLPUBFUN void XMLCALL - xmlXPathNodeSetRemove (xmlNodeSetPtr cur, +XMLPUBFUN void XMLCALL + xmlXPathNodeSetRemove (xmlNodeSetPtr cur, int val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathNewNodeSetList (xmlNodeSetPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathWrapNodeSet (xmlNodeSetPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathWrapExternal (void *val); XMLPUBFUN int XMLCALL xmlXPathEqualValues(xmlXPathParserContextPtr ctxt); @@ -621,7 +623,7 @@ * Really internal functions */ XMLPUBFUN void XMLCALL xmlXPathNodeSetFreeNs(xmlNsPtr ns); - + #ifdef __cplusplus } #endif diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xpointer.c gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xpointer.c --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xpointer.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xpointer.c 2015-12-23 07:08:27.000000000 +0000 @@ -7,7 +7,7 @@ * * Added support for the element() scheme described in: * W3C Proposed Recommendation 13 November 2002 - * http://www.w3.org/TR/2002/PR-xptr-element-20021113/ + * http://www.w3.org/TR/2002/PR-xptr-element-20021113/ * * See Copyright for the status of this software. * @@ -47,19 +47,19 @@ #endif #endif -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); -#define STRANGE \ +#define STRANGE \ xmlGenericError(xmlGenericErrorContext, \ "Internal error at %s:%d\n", \ __FILE__, __LINE__); /************************************************************************ * * - * Some factorized error routines * + * Some factorized error routines * * * ************************************************************************/ @@ -134,7 +134,7 @@ static int xmlXPtrGetArity(xmlNodePtr cur) { int i; - if (cur == NULL) + if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) return(-1); cur = cur->children; for (i = 0;cur != NULL;cur = cur->next) { @@ -157,7 +157,7 @@ static int xmlXPtrGetIndex(xmlNodePtr cur) { int i; - if (cur == NULL) + if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) return(-1); for (i = 1;cur != NULL;cur = cur->prev) { if ((cur->type == XML_ELEMENT_NODE) || @@ -179,11 +179,11 @@ static xmlNodePtr xmlXPtrGetNthChild(xmlNodePtr cur, int no) { int i; - if (cur == NULL) + if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) return(cur); cur = cur->children; for (i = 0;i <= no;cur = cur->next) { - if (cur == NULL) + if (cur == NULL) return(cur); if ((cur->type == XML_ELEMENT_NODE) || (cur->type == XML_DOCUMENT_NODE) || @@ -553,7 +553,7 @@ break; case XPATH_NODESET: /* - * Empty set ... + * Empty set ... */ if (end->nodesetval->nodeNr <= 0) return(NULL); @@ -731,7 +731,7 @@ if (i >= cur->locNr) { #ifdef DEBUG - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "xmlXPtrLocationSetDel: Range wasn't found in RangeList\n"); #endif return; @@ -903,7 +903,7 @@ #define NXT(val) ctxt->cur[(val)] #define CUR_PTR ctxt->cur -#define SKIP_BLANKS \ +#define SKIP_BLANKS \ while (IS_BLANK_CH(*(ctxt->cur))) NEXT #define CURRENT (*ctxt->cur) @@ -945,7 +945,7 @@ * xmlXPtrEvalXPtrPart: * @ctxt: the XPointer Parser context * @name: the preparsed Scheme for the XPtrPart - * + * * XPtrPart ::= 'xpointer' '(' XPtrExpr ')' * | Scheme '(' SchemeSpecificExpr ')' * @@ -953,7 +953,7 @@ * * SchemeSpecificExpr ::= StringWithBalancedParens * - * StringWithBalancedParens ::= + * StringWithBalancedParens ::= * [^()]* ('(' StringWithBalancedParens ')' [^()]*)* * [VC: Parenthesis escaping] * @@ -971,7 +971,7 @@ * * Parse and evaluate an XPtrPart. Basically it generates the unescaped * string and if the scheme is 'xpointer' it will call the XPath interpreter. - * + * * TODO: there is no new scheme registration mechanism */ @@ -1007,21 +1007,14 @@ NEXT; break; } - *cur++ = CUR; } else if (CUR == '(') { level++; - *cur++ = CUR; } else if (CUR == '^') { - NEXT; - if ((CUR == ')') || (CUR == '(') || (CUR == '^')) { - *cur++ = CUR; - } else { - *cur++ = '^'; - *cur++ = CUR; - } - } else { - *cur++ = CUR; + if ((NXT(1) == ')') || (NXT(1) == '(') || (NXT(1) == '^')) { + NEXT; + } } + *cur++ = CUR; NEXT; } *cur = 0; @@ -1104,7 +1097,7 @@ xmlFree(name); XP_ERROR(XPATH_MEMORY_ERROR); } - + xmlXPathRegisterNs(ctxt->context, prefix, URI); CUR_PTR = left; xmlFree(URI); @@ -1152,10 +1145,12 @@ if (name == NULL) XP_ERROR(XPATH_EXPR_ERROR); while (name != NULL) { + ctxt->error = XPATH_EXPRESSION_OK; xmlXPtrEvalXPtrPart(ctxt, name); /* in case of syntax error, break here */ - if (ctxt->error != XPATH_EXPRESSION_OK) + if ((ctxt->error != XPATH_EXPRESSION_OK) && + (ctxt->error != XML_XPTR_UNKNOWN_SCHEME)) return; /* @@ -1234,7 +1229,7 @@ while (CUR == '/') { int child = 0; NEXT; - + while ((CUR >= '0') && (CUR <= '9')) { child = child * 10 + (CUR - '0'); NEXT; @@ -1258,7 +1253,7 @@ xmlXPtrEvalXPointer(xmlXPathParserContextPtr ctxt) { if (ctxt->valueTab == NULL) { /* Allocate the value stack */ - ctxt->valueTab = (xmlXPathObjectPtr *) + ctxt->valueTab = (xmlXPathObjectPtr *) xmlMalloc(10 * sizeof(xmlXPathObjectPtr)); if (ctxt->valueTab == NULL) { xmlXPtrErrMemory("allocating evaluation context"); @@ -1267,6 +1262,7 @@ ctxt->valueNr = 0; ctxt->valueMax = 10; ctxt->value = NULL; + ctxt->valueFrame = 0; } SKIP_BLANKS; if (CUR == '/') { @@ -1299,12 +1295,19 @@ * * ************************************************************************/ +static void xmlXPtrStringRangeFunction(xmlXPathParserContextPtr ctxt, int nargs); +static void xmlXPtrStartPointFunction(xmlXPathParserContextPtr ctxt, int nargs); +static void xmlXPtrEndPointFunction(xmlXPathParserContextPtr ctxt, int nargs); +static void xmlXPtrHereFunction(xmlXPathParserContextPtr ctxt, int nargs); +static void xmlXPtrOriginFunction(xmlXPathParserContextPtr ctxt, int nargs); +static void xmlXPtrRangeInsideFunction(xmlXPathParserContextPtr ctxt, int nargs); +static void xmlXPtrRangeFunction(xmlXPathParserContextPtr ctxt, int nargs); /** @@ -1372,6 +1375,8 @@ return(NULL); ctxt = xmlXPathNewParserContext(str, ctx); + if (ctxt == NULL) + return(NULL); ctxt->xptr = 1; xmlXPtrEvalXPointer(ctxt); @@ -1393,13 +1398,13 @@ /* * Evaluation may push a root nodeset which is unused */ - xmlNodeSetPtr set; + xmlNodeSetPtr set; set = tmp->nodesetval; if ((set->nodeNr != 1) || (set->nodeTab[0] != (xmlNodePtr) ctx->doc)) stack++; } else - stack++; + stack++; } xmlXPathFreeObject(tmp); } @@ -1413,7 +1418,7 @@ xmlXPathFreeObject(res); res = NULL; } - + xmlXPathFreeParserContext(ctxt); return(res); } @@ -1441,11 +1446,13 @@ return(NULL); start = (xmlNodePtr) range->user; - if (start == NULL) + if ((start == NULL) || (start->type == XML_NAMESPACE_DECL)) return(NULL); end = range->user2; if (end == NULL) return(xmlCopyNode(start, 1)); + if (end->type == XML_NAMESPACE_DECL) + return(NULL); cur = start; index1 = range->index; @@ -1475,7 +1482,7 @@ /* prune and return full set */ if (last != NULL) xmlAddNextSibling(last, tmp); - else + else xmlAddChild(parent, tmp); return(list); } else { @@ -1729,16 +1736,16 @@ * @ctxt: the XPointer Parser context * @nargs: the number of args * - * Function implementing here() operation + * Function implementing here() operation * as described in 5.4.3 */ -void +static void xmlXPtrHereFunction(xmlXPathParserContextPtr ctxt, int nargs) { CHECK_ARITY(0); if (ctxt->context->here == NULL) XP_ERROR(XPTR_SYNTAX_ERROR); - + valuePush(ctxt, xmlXPtrNewLocationSetNodes(ctxt->context->here, NULL)); } @@ -1747,16 +1754,16 @@ * @ctxt: the XPointer Parser context * @nargs: the number of args * - * Function implementing origin() operation + * Function implementing origin() operation * as described in 5.4.3 */ -void +static void xmlXPtrOriginFunction(xmlXPathParserContextPtr ctxt, int nargs) { CHECK_ARITY(0); if (ctxt->context->origin == NULL) XP_ERROR(XPTR_SYNTAX_ERROR); - + valuePush(ctxt, xmlXPtrNewLocationSetNodes(ctxt->context->origin, NULL)); } @@ -1765,7 +1772,7 @@ * @ctxt: the XPointer Parser context * @nargs: the number of args * - * Function implementing start-point() operation + * Function implementing start-point() operation * as described in 5.4.3 * ---------------- * location-set start-point(location-set) @@ -1783,7 +1790,7 @@ * ---------------- * */ -void +static void xmlXPtrStartPointFunction(xmlXPathParserContextPtr ctxt, int nargs) { xmlXPathObjectPtr tmp, obj, point; xmlLocationSetPtr newset = NULL; @@ -1802,6 +1809,8 @@ */ tmp = xmlXPtrNewLocationSetNodeSet(obj->nodesetval); xmlXPathFreeObject(obj); + if (tmp == NULL) + XP_ERROR(XPATH_MEMORY_ERROR) obj = tmp; } @@ -1857,7 +1866,7 @@ * @ctxt: the XPointer Parser context * @nargs: the number of args * - * Function implementing end-point() operation + * Function implementing end-point() operation * as described in 5.4.3 * ---------------------------- * location-set end-point(location-set) @@ -1877,7 +1886,7 @@ * syntax error. * ---------------------------- */ -void +static void xmlXPtrEndPointFunction(xmlXPathParserContextPtr ctxt, int nargs) { xmlXPathObjectPtr tmp, obj, point; xmlLocationSetPtr newset = NULL; @@ -1896,10 +1905,16 @@ */ tmp = xmlXPtrNewLocationSetNodeSet(obj->nodesetval); xmlXPathFreeObject(obj); + if (tmp == NULL) + XP_ERROR(XPATH_MEMORY_ERROR) obj = tmp; } newset = xmlXPtrLocationSetCreate(NULL); + if (newset == NULL) { + xmlXPathFreeObject(obj); + XP_ERROR(XPATH_MEMORY_ERROR); + } oldset = (xmlLocationSetPtr) obj->user; if (oldset != NULL) { int i; @@ -1993,7 +2008,7 @@ case XML_NOTATION_NODE: case XML_HTML_DOCUMENT_NODE: { int indx = xmlXPtrGetIndex(node); - + node = node->parent; return(xmlXPtrNewRange(node, indx - 1, node, indx + 1)); @@ -2022,7 +2037,7 @@ * location-set, a range location representing the covering range of * x is added to the result location-set. */ -void +static void xmlXPtrRangeFunction(xmlXPathParserContextPtr ctxt, int nargs) { int i; xmlXPathObjectPtr set; @@ -2044,6 +2059,8 @@ */ tmp = xmlXPtrNewLocationSetNodeSet(set->nodesetval); xmlXPathFreeObject(set); + if (tmp == NULL) + XP_ERROR(XPATH_MEMORY_ERROR) set = tmp; } oldset = (xmlLocationSetPtr) set->user; @@ -2052,6 +2069,10 @@ * The loop is to compute the covering range for each item and add it */ newset = xmlXPtrLocationSetCreate(NULL); + if (newset == NULL) { + xmlXPathFreeObject(set); + XP_ERROR(XPATH_MEMORY_ERROR); + } for (i = 0;i < oldset->locNr;i++) { xmlXPtrLocationSetAdd(newset, xmlXPtrCoveringRange(ctxt, oldset->locTab[i])); @@ -2168,7 +2189,7 @@ * location children of x. * */ -void +static void xmlXPtrRangeInsideFunction(xmlXPathParserContextPtr ctxt, int nargs) { int i; xmlXPathObjectPtr set; @@ -2190,6 +2211,8 @@ */ tmp = xmlXPtrNewLocationSetNodeSet(set->nodesetval); xmlXPathFreeObject(set); + if (tmp == NULL) + XP_ERROR(XPATH_MEMORY_ERROR) set = tmp; } oldset = (xmlLocationSetPtr) set->user; @@ -2198,6 +2221,10 @@ * The loop is to compute the covering range for each item and add it */ newset = xmlXPtrLocationSetCreate(NULL); + if (newset == NULL) { + xmlXPathFreeObject(set); + XP_ERROR(XPATH_MEMORY_ERROR); + } for (i = 0;i < oldset->locNr;i++) { xmlXPtrLocationSetAdd(newset, xmlXPtrInsideRange(ctxt, oldset->locTab[i])); @@ -2240,7 +2267,7 @@ cur = ctxt->cur; newset = xmlXPtrLocationSetCreate(NULL); - + for (i = 0; i < oldset->nodeNr; i++) { ctxt->cur = cur; @@ -2274,7 +2301,7 @@ res = valuePop(ctxt); xmlXPathFreeObject(res); } - + ctxt->context->node = NULL; } @@ -2294,14 +2321,14 @@ * @level: incremented/decremented to show level in tree * * Advance to the next element or text node in document order - * TODO: add a stack for entering/exiting entities + * TODO: add a stack for entering/exiting entities * * Returns -1 in case of failure, 0 otherwise */ xmlNodePtr xmlXPtrAdvanceNode(xmlNodePtr cur, int *level) { next: - if (cur == NULL) + if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) return(NULL); if (cur->children != NULL) { cur = cur->children ; @@ -2359,7 +2386,7 @@ if ((node == NULL) || (indx == NULL)) return(-1); cur = *node; - if (cur == NULL) + if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) return(-1); pos = *indx; @@ -2397,7 +2424,7 @@ return(0); } /* - * We should have a text (or cdata) node ... + * We should have a text (or cdata) node ... */ len = 0; if ((cur->type != XML_ELEMENT_NODE) && @@ -2450,13 +2477,12 @@ if (string == NULL) return(-1); - if (start == NULL) + if ((start == NULL) || (start->type == XML_NAMESPACE_DECL)) return(-1); - if ((end == NULL) || (endindex == NULL)) + if ((end == NULL) || (*end == NULL) || + ((*end)->type == XML_NAMESPACE_DECL) || (endindex == NULL)) return(-1); cur = start; - if (cur == NULL) - return(-1); pos = startindex - 1; stringlen = xmlStrlen(string); @@ -2535,13 +2561,12 @@ if (string == NULL) return(-1); - if ((start == NULL) || (startindex == NULL)) + if ((start == NULL) || (*start == NULL) || + ((*start)->type == XML_NAMESPACE_DECL) || (startindex == NULL)) return(-1); if ((end == NULL) || (endindex == NULL)) return(-1); cur = *start; - if (cur == NULL) - return(-1); pos = *startindex - 1; first = string[0]; @@ -2574,7 +2599,7 @@ /* * An empty string is considered to match before each * character of the string-value and after the final - * character. + * character. */ #ifdef DEBUG_RANGES xmlGenericError(xmlGenericErrorContext, @@ -2615,20 +2640,17 @@ xmlNodePtr cur; int pos, len = 0; - if ((node == NULL) || (indx == NULL)) + if ((node == NULL) || (*node == NULL) || + ((*node)->type == XML_NAMESPACE_DECL) || (indx == NULL)) return(-1); cur = *node; pos = *indx; - if (cur == NULL) - return(-1); - if ((cur->type == XML_ELEMENT_NODE) || (cur->type == XML_DOCUMENT_NODE) || (cur->type == XML_HTML_DOCUMENT_NODE)) { if (pos > 0) { cur = xmlXPtrGetNthChild(cur, pos); - pos = 0; } } while (cur != NULL) { @@ -2727,7 +2749,7 @@ * @nargs: the number of args * * Function implementing the string-range() function - * range as described in 5.4.2 + * range as described in 5.4.2 * * ------------------------------ * [Definition: For each location in the location-set argument, @@ -2757,7 +2779,7 @@ * all be character points. * ------------------------------ */ -void +static void xmlXPtrStringRangeFunction(xmlXPathParserContextPtr ctxt, int nargs) { int i, startindex, endindex = 0, fendindex; xmlNodePtr start, end = 0, fend; @@ -2796,6 +2818,10 @@ set = valuePop(ctxt); newset = xmlXPtrLocationSetCreate(NULL); + if (newset == NULL) { + xmlXPathFreeObject(set); + XP_ERROR(XPATH_MEMORY_ERROR); + } if (set->nodesetval == NULL) { goto error; } @@ -2807,6 +2833,8 @@ */ tmp = xmlXPtrNewLocationSetNodeSet(set->nodesetval); xmlXPathFreeObject(set); + if (tmp == NULL) + XP_ERROR(XPATH_MEMORY_ERROR) set = tmp; } oldset = (xmlLocationSetPtr) set->user; @@ -2891,7 +2919,7 @@ * @ctxt: the XPointer Parser context * * [8] Predicate ::= '[' PredicateExpr ']' - * [9] PredicateExpr ::= Expr + * [9] PredicateExpr ::= Expr * * Evaluate a predicate as in xmlXPathEvalPredicate() but for * a Location Set instead of a node set @@ -2940,7 +2968,7 @@ */ cur = ctxt->cur; newset = xmlXPtrLocationSetCreate(NULL); - + for (i = 0; i < oldset->locNr; i++) { ctxt->cur = cur; @@ -2976,7 +3004,7 @@ res = valuePop(ctxt); xmlXPathFreeObject(res); } - + ctxt->context->node = NULL; } diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xpointer.in.h gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xpointer.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/libxml/xpointer.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/libxml/xpointer.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -7,7 +7,7 @@ * * Added support for the element() scheme described in: * W3C Proposed Recommendation 13 November 2002 - * http://www.w3.org/TR/2002/PR-xptr-element-20021113/ + * http://www.w3.org/TR/2002/PR-xptr-element-20021113/ * * Copy: See Copyright for the status of this software. * @@ -43,68 +43,68 @@ * Handling of location sets. */ -XMLPUBFUN xmlLocationSetPtr XMLCALL +XMLPUBFUN xmlLocationSetPtr XMLCALL xmlXPtrLocationSetCreate (xmlXPathObjectPtr val); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPtrFreeLocationSet (xmlLocationSetPtr obj); -XMLPUBFUN xmlLocationSetPtr XMLCALL +XMLPUBFUN xmlLocationSetPtr XMLCALL xmlXPtrLocationSetMerge (xmlLocationSetPtr val1, xmlLocationSetPtr val2); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewRange (xmlNodePtr start, int startindex, xmlNodePtr end, int endindex); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewRangePoints (xmlXPathObjectPtr start, xmlXPathObjectPtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewRangeNodePoint (xmlNodePtr start, xmlXPathObjectPtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewRangePointNode (xmlXPathObjectPtr start, xmlNodePtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewRangeNodes (xmlNodePtr start, xmlNodePtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewLocationSetNodes (xmlNodePtr start, xmlNodePtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewLocationSetNodeSet(xmlNodeSetPtr set); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewRangeNodeObject (xmlNodePtr start, xmlXPathObjectPtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewCollapsedRange (xmlNodePtr start); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPtrLocationSetAdd (xmlLocationSetPtr cur, xmlXPathObjectPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrWrapLocationSet (xmlLocationSetPtr val); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPtrLocationSetDel (xmlLocationSetPtr cur, xmlXPathObjectPtr val); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPtrLocationSetRemove (xmlLocationSetPtr cur, int val); /* * Functions. */ -XMLPUBFUN xmlXPathContextPtr XMLCALL +XMLPUBFUN xmlXPathContextPtr XMLCALL xmlXPtrNewContext (xmlDocPtr doc, xmlNodePtr here, xmlNodePtr origin); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrEval (const xmlChar *str, xmlXPathContextPtr ctx); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPtrRangeToFunction (xmlXPathParserContextPtr ctxt, - int nargs); -XMLPUBFUN xmlNodePtr XMLCALL + int nargs); +XMLPUBFUN xmlNodePtr XMLCALL xmlXPtrBuildNodeList (xmlXPathObjectPtr obj); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPtrEvalRangePredicate (xmlXPathParserContextPtr ctxt); #ifdef __cplusplus } diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/localename.c gettext-0.19.7/gettext-tools/gnulib-lib/localename.c --- gettext-0.19.6/gettext-tools/gnulib-lib/localename.c 2015-09-11 03:03:55.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/localename.c 2015-12-27 23:08:31.000000000 +0000 @@ -38,7 +38,9 @@ # if defined __APPLE__ && defined __MACH__ # include # endif -# include +# if __GLIBC__ >= 2 && !defined __UCLIBC__ +# include +# endif # if !defined IN_LIBINTL # include "glthread/lock.h" # endif diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/log10.c gettext-0.19.7/gettext-tools/gnulib-lib/log10.c --- gettext-0.19.6/gettext-tools/gnulib-lib/log10.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/log10.c 2015-12-27 23:08:31.000000000 +0000 @@ -0,0 +1,38 @@ +/* Base 10 logarithmic function. + Copyright (C) 2012-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +/* Specification. */ +#include + +double +log10 (double x) +#undef log10 +{ + if (x <= 0.0) + { + /* Work around the OSF/1 5.1 bug. */ + if (x == 0.0) + /* Return -Infinity. */ + return -1.0 / 0.0; + /* Work around the NetBSD 5.1, Solaris 11 2011-11 bug. */ + else /* x < 0.0 */ + /* Return NaN. */ + return 0.0 / 0.0; + } + return log10 (x); +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/Makefile.gnulib gettext-0.19.7/gettext-tools/gnulib-lib/Makefile.gnulib --- gettext-0.19.6/gettext-tools/gnulib-lib/Makefile.gnulib 2015-09-11 03:04:08.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/Makefile.gnulib 2015-12-27 23:08:42.000000000 +0000 @@ -21,7 +21,7 @@ # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. -# Reproduce by: gnulib-tool --import --dir=gettext-tools --local-dir=gnulib-local --lib=libgettextlib --source-base=gnulib-lib --m4-base=gnulib-m4 --doc-base=doc --tests-base=gnulib-tests --aux-dir=../build-aux --with-tests --avoid=hash-tests --avoid=unilbrk/u8-possible-linebreaks-tests --avoid=unilbrk/ulc-width-linebreaks-tests --avoid=unistr/u8-mbtouc-tests --avoid=unistr/u8-mbtouc-unsafe-tests --avoid=uniwidth/width-tests --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gl alloca-opt ansi-c++-opt atexit backupfile basename binary-io bison-i18n byteswap c-ctype c-strcase c-strcasestr c-strstr clean-temp closedir closeout copy-file csharpcomp csharpcomp-script csharpexec csharpexec-script error error-progname execute extensions fd-ostream file-ostream filename findprog fnmatch fopen fstrcmp full-write fwriteerror gcd gcj getline getopt-gnu gettext-h gettext-tools-misc hash html-styled-ostream iconv include_next java javacomp javacomp-script javaexec javaexec-script libunistring-optional localcharset locale localename lock malloc-posix mbrtowc mbsinit memmove memset minmax multiarch obstack open opendir openmp ostream pipe-filter-ii progname propername readdir relocatable-prog relocatable-script setlocale sh-quote sigpipe sigprocmask snippet/arg-nonnull snippet/c++defs snippet/warn-on-use spawn-pipe ssize_t stdbool stddef stdint stdio stdlib stpcpy stpncpy strcspn streq strerror strpbrk strtol strtoul styled-ostream sys_select sys_stat sys_time term-styled-ostream unictype/ctype-space unilbrk/ulc-width-linebreaks uniname/uniname unistd unistr/u16-mbtouc unistr/u8-mbtouc unistr/u8-mbtoucr unistr/u8-uctomb uniwidth/width unlocked-io vasprintf verify wait-process wchar wctype-h write xalloc xconcat-filename xerror xmalloca xsetenv xstriconv xstriconveh xvasprintf +# Reproduce by: gnulib-tool --import --local-dir=gnulib-local --lib=libgettextlib --source-base=gnulib-lib --m4-base=gnulib-m4 --doc-base=doc --tests-base=gnulib-tests --aux-dir=../build-aux --with-tests --avoid=hash-tests --avoid=unilbrk/u8-possible-linebreaks-tests --avoid=unilbrk/ulc-width-linebreaks-tests --avoid=unistr/u8-mbtouc-tests --avoid=unistr/u8-mbtouc-unsafe-tests --avoid=uniwidth/width-tests --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gl alloca-opt ansi-c++-opt atexit backupfile basename binary-io bison-i18n byteswap c-ctype c-strcase c-strcasestr c-strstr clean-temp closedir closeout copy-file csharpcomp csharpcomp-script csharpexec csharpexec-script error error-progname execute extensions fd-ostream file-ostream filename findprog fnmatch fopen fstrcmp full-write fwriteerror gcd gcj getline getopt-gnu gettext-h gettext-tools-misc hash html-styled-ostream iconv include_next java javacomp javacomp-script javaexec javaexec-script libunistring-optional localcharset locale localename lock malloc-posix mbrtowc mbsinit memmove memset minmax multiarch obstack open opendir openmp ostream pipe-filter-ii progname propername readdir relocatable-prog relocatable-script setlocale sh-quote sigpipe sigprocmask snippet/arg-nonnull snippet/c++defs snippet/warn-on-use spawn-pipe ssize_t stdbool stddef stdint stdio stdlib stpcpy stpncpy strcspn streq strerror strpbrk strtol strtoul styled-ostream sys_select sys_stat sys_time term-styled-ostream trim unictype/ctype-space unilbrk/ulc-width-linebreaks uniname/uniname unistd unistr/u16-mbtouc unistr/u8-mbtouc unistr/u8-mbtoucr unistr/u8-uctomb uniwidth/width unlocked-io vasprintf verify wait-process wchar wctype-h write xalloc xconcat-filename xerror xmalloca xsetenv xstriconv xstriconveh xvasprintf MOSTLYCLEANFILES += core *.stackdump @@ -33,12 +33,18 @@ EXTRA_libgettextlib_la_SOURCES = libgettextlib_la_LDFLAGS = $(AM_LDFLAGS) libgettextlib_la_LDFLAGS += -no-undefined +libgettextlib_la_LDFLAGS += $(FABS_LIBM) +libgettextlib_la_LDFLAGS += $(ISNAND_LIBM) +libgettextlib_la_LDFLAGS += $(ISNANF_LIBM) +libgettextlib_la_LDFLAGS += $(ISNANL_LIBM) libgettextlib_la_LDFLAGS += $(LIB_ACL) +libgettextlib_la_LDFLAGS += $(LOG10_LIBM) libgettextlib_la_LDFLAGS += $(LTLIBICONV) libgettextlib_la_LDFLAGS += $(LTLIBINTL) libgettextlib_la_LDFLAGS += $(LTLIBTHREAD) libgettextlib_la_LDFLAGS += $(LTLIBUNISTRING) libgettextlib_la_LDFLAGS += $(OPENMP_CFLAGS) +libgettextlib_la_LDFLAGS += $(POW_LIBM) libgettextlib_la_LDFLAGS += @INTL_MACOSX_LIBS@ ## begin gnulib module absolute-header @@ -1009,6 +1015,69 @@ ## end gnulib module intprops +## begin gnulib module isinf + + +EXTRA_DIST += isinf.c + +EXTRA_libgettextlib_la_SOURCES += isinf.c + +## end gnulib module isinf + +## begin gnulib module isnand + + +EXTRA_DIST += float+.h isnan.c isnand.c + +EXTRA_libgettextlib_la_SOURCES += isnan.c isnand.c + +## end gnulib module isnand + +## begin gnulib module isnand-nolibm + + +EXTRA_DIST += float+.h isnan.c isnand-nolibm.h isnand.c + +EXTRA_libgettextlib_la_SOURCES += isnan.c isnand.c + +## end gnulib module isnand-nolibm + +## begin gnulib module isnanf + + +EXTRA_DIST += float+.h isnan.c isnanf.c + +EXTRA_libgettextlib_la_SOURCES += isnan.c isnanf.c + +## end gnulib module isnanf + +## begin gnulib module isnanf-nolibm + + +EXTRA_DIST += float+.h isnan.c isnanf-nolibm.h isnanf.c + +EXTRA_libgettextlib_la_SOURCES += isnan.c isnanf.c + +## end gnulib module isnanf-nolibm + +## begin gnulib module isnanl + + +EXTRA_DIST += float+.h isnan.c isnanl.c + +EXTRA_libgettextlib_la_SOURCES += isnan.c isnanl.c + +## end gnulib module isnanl + +## begin gnulib module isnanl-nolibm + + +EXTRA_DIST += float+.h isnan.c isnanl-nolibm.h isnanl.c + +EXTRA_libgettextlib_la_SOURCES += isnan.c isnanl.c + +## end gnulib module isnanl-nolibm + ## begin gnulib module iswblank @@ -1254,11 +1323,14 @@ libxml/HTMLtree.c \ libxml/SAX.c \ libxml/SAX2.c \ + libxml/buf.h \ + libxml/buf.c \ libxml/c14n.c \ libxml/catalog.c \ libxml/chvalid.c \ libxml/debugXML.c \ libxml/dict.c \ + libxml/enc.h \ libxml/encoding.c \ libxml/entities.c \ libxml/error.c \ @@ -1272,9 +1344,12 @@ libxml/parserInternals.c \ libxml/pattern.c \ libxml/relaxng.c \ + libxml/save.h \ libxml/schematron.c \ libxml/threads.c \ + libxml/timsort.h \ libxml/tree.c \ + libxml/trionan.c \ libxml/uri.c \ libxml/valid.c \ libxml/xinclude.c \ @@ -1679,9 +1754,9 @@ libgettextlib_la_LDFLAGS += $(LTLIBXML) endif -EXTRA_DIST += libxml/COPYING libxml/DOCBparser.c libxml/DOCBparser.in.h libxml/HTMLparser.c libxml/HTMLparser.in.h libxml/HTMLtree.c libxml/HTMLtree.in.h libxml/SAX.c libxml/SAX.in.h libxml/SAX2.c libxml/SAX2.in.h libxml/c14n.c libxml/c14n.in.h libxml/catalog.c libxml/catalog.in.h libxml/chvalid.c libxml/chvalid.in.h libxml/debugXML.c libxml/debugXML.in.h libxml/dict.c libxml/dict.in.h libxml/elfgcchack.h libxml/encoding.c libxml/encoding.in.h libxml/entities.c libxml/entities.in.h libxml/error.c libxml/globals.c libxml/globals.in.h libxml/hash.c libxml/hash.in.h libxml/legacy.c libxml/libxml.h libxml/list.c libxml/list.in.h libxml/nanoftp.c libxml/nanoftp.in.h libxml/nanohttp.c libxml/nanohttp.in.h libxml/parser.c libxml/parser.in.h libxml/parserInternals.c libxml/parserInternals.in.h libxml/pattern.c libxml/pattern.in.h libxml/relaxng.c libxml/relaxng.in.h libxml/schemasInternals.in.h libxml/schematron.c libxml/schematron.in.h libxml/threads.c libxml/threads.in.h libxml/tree.c libxml/tree.in.h libxml/uri.c libxml/uri.in.h libxml/valid.c libxml/valid.in.h libxml/xinclude.c libxml/xinclude.in.h libxml/xlink.c libxml/xlink.in.h libxml/xmlIO.c libxml/xmlIO.in.h libxml/xmlautomata.in.h libxml/xmlerror.in.h libxml/xmlexports.in.h libxml/xmlmemory.c libxml/xmlmemory.in.h libxml/xmlmodule.c libxml/xmlmodule.in.h libxml/xmlreader.c libxml/xmlreader.in.h libxml/xmlregexp.c libxml/xmlregexp.in.h libxml/xmlsave.c libxml/xmlsave.in.h libxml/xmlschemas.c libxml/xmlschemas.in.h libxml/xmlschemastypes.c libxml/xmlschemastypes.in.h libxml/xmlstring.c libxml/xmlstring.in.h libxml/xmlunicode.c libxml/xmlunicode.in.h libxml/xmlversion.in.h libxml/xmlwriter.c libxml/xmlwriter.in.h libxml/xpath.c libxml/xpath.in.h libxml/xpathInternals.in.h libxml/xpointer.c libxml/xpointer.in.h +EXTRA_DIST += libxml/COPYING libxml/DOCBparser.c libxml/DOCBparser.in.h libxml/HTMLparser.c libxml/HTMLparser.in.h libxml/HTMLtree.c libxml/HTMLtree.in.h libxml/SAX.c libxml/SAX.in.h libxml/SAX2.c libxml/SAX2.in.h libxml/buf.c libxml/buf.h libxml/c14n.c libxml/c14n.in.h libxml/catalog.c libxml/catalog.in.h libxml/chvalid.c libxml/chvalid.in.h libxml/debugXML.c libxml/debugXML.in.h libxml/dict.c libxml/dict.in.h libxml/elfgcchack.h libxml/enc.h libxml/encoding.c libxml/encoding.in.h libxml/entities.c libxml/entities.in.h libxml/error.c libxml/globals.c libxml/globals.in.h libxml/hash.c libxml/hash.in.h libxml/legacy.c libxml/libxml.h libxml/list.c libxml/list.in.h libxml/nanoftp.c libxml/nanoftp.in.h libxml/nanohttp.c libxml/nanohttp.in.h libxml/parser.c libxml/parser.in.h libxml/parserInternals.c libxml/parserInternals.in.h libxml/pattern.c libxml/pattern.in.h libxml/relaxng.c libxml/relaxng.in.h libxml/save.h libxml/schemasInternals.in.h libxml/schematron.c libxml/schematron.in.h libxml/threads.c libxml/threads.in.h libxml/timsort.h libxml/tree.c libxml/tree.in.h libxml/trionan.c libxml/uri.c libxml/uri.in.h libxml/valid.c libxml/valid.in.h libxml/xinclude.c libxml/xinclude.in.h libxml/xlink.c libxml/xlink.in.h libxml/xmlIO.c libxml/xmlIO.in.h libxml/xmlautomata.in.h libxml/xmlerror.in.h libxml/xmlexports.in.h libxml/xmlmemory.c libxml/xmlmemory.in.h libxml/xmlmodule.c libxml/xmlmodule.in.h libxml/xmlreader.c libxml/xmlreader.in.h libxml/xmlregexp.c libxml/xmlregexp.in.h libxml/xmlsave.c libxml/xmlsave.in.h libxml/xmlschemas.c libxml/xmlschemas.in.h libxml/xmlschemastypes.c libxml/xmlschemastypes.in.h libxml/xmlstring.c libxml/xmlstring.in.h libxml/xmlunicode.c libxml/xmlunicode.in.h libxml/xmlversion.in.h libxml/xmlwriter.c libxml/xmlwriter.in.h libxml/xpath.c libxml/xpath.in.h libxml/xpathInternals.in.h libxml/xpointer.c libxml/xpointer.in.h -EXTRA_libgettextlib_la_SOURCES += libxml/DOCBparser.c libxml/HTMLparser.c libxml/HTMLtree.c libxml/SAX.c libxml/SAX2.c libxml/c14n.c libxml/catalog.c libxml/chvalid.c libxml/debugXML.c libxml/dict.c libxml/encoding.c libxml/entities.c libxml/error.c libxml/globals.c libxml/hash.c libxml/legacy.c libxml/list.c libxml/nanoftp.c libxml/nanohttp.c libxml/parser.c libxml/parserInternals.c libxml/pattern.c libxml/relaxng.c libxml/schematron.c libxml/threads.c libxml/tree.c libxml/uri.c libxml/valid.c libxml/xinclude.c libxml/xlink.c libxml/xmlIO.c libxml/xmlmemory.c libxml/xmlmodule.c libxml/xmlreader.c libxml/xmlregexp.c libxml/xmlsave.c libxml/xmlschemas.c libxml/xmlschemastypes.c libxml/xmlstring.c libxml/xmlunicode.c libxml/xmlwriter.c libxml/xpath.c libxml/xpointer.c +EXTRA_libgettextlib_la_SOURCES += libxml/DOCBparser.c libxml/HTMLparser.c libxml/HTMLtree.c libxml/SAX.c libxml/SAX2.c libxml/buf.c libxml/c14n.c libxml/catalog.c libxml/chvalid.c libxml/debugXML.c libxml/dict.c libxml/encoding.c libxml/entities.c libxml/error.c libxml/globals.c libxml/hash.c libxml/legacy.c libxml/list.c libxml/nanoftp.c libxml/nanohttp.c libxml/parser.c libxml/parserInternals.c libxml/pattern.c libxml/relaxng.c libxml/schematron.c libxml/threads.c libxml/tree.c libxml/trionan.c libxml/uri.c libxml/valid.c libxml/xinclude.c libxml/xlink.c libxml/xmlIO.c libxml/xmlmemory.c libxml/xmlmodule.c libxml/xmlreader.c libxml/xmlregexp.c libxml/xmlsave.c libxml/xmlschemas.c libxml/xmlschemastypes.c libxml/xmlstring.c libxml/xmlunicode.c libxml/xmlwriter.c libxml/xpath.c libxml/xpointer.c ## end gnulib module libxml @@ -1820,6 +1895,15 @@ ## end gnulib module lock +## begin gnulib module log10 + + +EXTRA_DIST += log10.c + +EXTRA_libgettextlib_la_SOURCES += log10.c + +## end gnulib module log10 + ## begin gnulib module lstat @@ -1846,6 +1930,290 @@ ## end gnulib module malloca +## begin gnulib module math + +BUILT_SOURCES += math.h +libgettextlib_la_SOURCES += math.c + +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +math.h: math.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ + sed -e 's|@''GUARD_PREFIX''@|GL|g' \ + -e 's|@''INCLUDE_NEXT_AS_FIRST_DIRECTIVE''@|$(INCLUDE_NEXT_AS_FIRST_DIRECTIVE)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ + -e 's|@''NEXT_AS_FIRST_DIRECTIVE_MATH_H''@|$(NEXT_AS_FIRST_DIRECTIVE_MATH_H)|g' \ + -e 's/@''GNULIB_ACOSF''@/$(GNULIB_ACOSF)/g' \ + -e 's/@''GNULIB_ACOSL''@/$(GNULIB_ACOSL)/g' \ + -e 's/@''GNULIB_ASINF''@/$(GNULIB_ASINF)/g' \ + -e 's/@''GNULIB_ASINL''@/$(GNULIB_ASINL)/g' \ + -e 's/@''GNULIB_ATANF''@/$(GNULIB_ATANF)/g' \ + -e 's/@''GNULIB_ATANL''@/$(GNULIB_ATANL)/g' \ + -e 's/@''GNULIB_ATAN2F''@/$(GNULIB_ATAN2F)/g' \ + -e 's/@''GNULIB_CBRT''@/$(GNULIB_CBRT)/g' \ + -e 's/@''GNULIB_CBRTF''@/$(GNULIB_CBRTF)/g' \ + -e 's/@''GNULIB_CBRTL''@/$(GNULIB_CBRTL)/g' \ + -e 's/@''GNULIB_CEIL''@/$(GNULIB_CEIL)/g' \ + -e 's/@''GNULIB_CEILF''@/$(GNULIB_CEILF)/g' \ + -e 's/@''GNULIB_CEILL''@/$(GNULIB_CEILL)/g' \ + -e 's/@''GNULIB_COPYSIGN''@/$(GNULIB_COPYSIGN)/g' \ + -e 's/@''GNULIB_COPYSIGNF''@/$(GNULIB_COPYSIGNF)/g' \ + -e 's/@''GNULIB_COPYSIGNL''@/$(GNULIB_COPYSIGNL)/g' \ + -e 's/@''GNULIB_COSF''@/$(GNULIB_COSF)/g' \ + -e 's/@''GNULIB_COSL''@/$(GNULIB_COSL)/g' \ + -e 's/@''GNULIB_COSHF''@/$(GNULIB_COSHF)/g' \ + -e 's/@''GNULIB_EXPF''@/$(GNULIB_EXPF)/g' \ + -e 's/@''GNULIB_EXPL''@/$(GNULIB_EXPL)/g' \ + -e 's/@''GNULIB_EXP2''@/$(GNULIB_EXP2)/g' \ + -e 's/@''GNULIB_EXP2F''@/$(GNULIB_EXP2F)/g' \ + -e 's/@''GNULIB_EXP2L''@/$(GNULIB_EXP2L)/g' \ + -e 's/@''GNULIB_EXPM1''@/$(GNULIB_EXPM1)/g' \ + -e 's/@''GNULIB_EXPM1F''@/$(GNULIB_EXPM1F)/g' \ + -e 's/@''GNULIB_EXPM1L''@/$(GNULIB_EXPM1L)/g' \ + -e 's/@''GNULIB_FABSF''@/$(GNULIB_FABSF)/g' \ + -e 's/@''GNULIB_FABSL''@/$(GNULIB_FABSL)/g' \ + -e 's/@''GNULIB_FLOOR''@/$(GNULIB_FLOOR)/g' \ + -e 's/@''GNULIB_FLOORF''@/$(GNULIB_FLOORF)/g' \ + -e 's/@''GNULIB_FLOORL''@/$(GNULIB_FLOORL)/g' \ + -e 's/@''GNULIB_FMA''@/$(GNULIB_FMA)/g' \ + -e 's/@''GNULIB_FMAF''@/$(GNULIB_FMAF)/g' \ + -e 's/@''GNULIB_FMAL''@/$(GNULIB_FMAL)/g' \ + -e 's/@''GNULIB_FMOD''@/$(GNULIB_FMOD)/g' \ + -e 's/@''GNULIB_FMODF''@/$(GNULIB_FMODF)/g' \ + -e 's/@''GNULIB_FMODL''@/$(GNULIB_FMODL)/g' \ + -e 's/@''GNULIB_FREXPF''@/$(GNULIB_FREXPF)/g' \ + -e 's/@''GNULIB_FREXP''@/$(GNULIB_FREXP)/g' \ + -e 's/@''GNULIB_FREXPL''@/$(GNULIB_FREXPL)/g' \ + -e 's/@''GNULIB_HYPOT''@/$(GNULIB_HYPOT)/g' \ + -e 's/@''GNULIB_HYPOTF''@/$(GNULIB_HYPOTF)/g' \ + -e 's/@''GNULIB_HYPOTL''@/$(GNULIB_HYPOTL)/g' \ + < $(srcdir)/math.in.h | \ + sed -e 's/@''GNULIB_ILOGB''@/$(GNULIB_ILOGB)/g' \ + -e 's/@''GNULIB_ILOGBF''@/$(GNULIB_ILOGBF)/g' \ + -e 's/@''GNULIB_ILOGBL''@/$(GNULIB_ILOGBL)/g' \ + -e 's/@''GNULIB_ISFINITE''@/$(GNULIB_ISFINITE)/g' \ + -e 's/@''GNULIB_ISINF''@/$(GNULIB_ISINF)/g' \ + -e 's/@''GNULIB_ISNAN''@/$(GNULIB_ISNAN)/g' \ + -e 's/@''GNULIB_ISNANF''@/$(GNULIB_ISNANF)/g' \ + -e 's/@''GNULIB_ISNAND''@/$(GNULIB_ISNAND)/g' \ + -e 's/@''GNULIB_ISNANL''@/$(GNULIB_ISNANL)/g' \ + -e 's/@''GNULIB_LDEXPF''@/$(GNULIB_LDEXPF)/g' \ + -e 's/@''GNULIB_LDEXPL''@/$(GNULIB_LDEXPL)/g' \ + -e 's/@''GNULIB_LOG''@/$(GNULIB_LOG)/g' \ + -e 's/@''GNULIB_LOGF''@/$(GNULIB_LOGF)/g' \ + -e 's/@''GNULIB_LOGL''@/$(GNULIB_LOGL)/g' \ + -e 's/@''GNULIB_LOG10''@/$(GNULIB_LOG10)/g' \ + -e 's/@''GNULIB_LOG10F''@/$(GNULIB_LOG10F)/g' \ + -e 's/@''GNULIB_LOG10L''@/$(GNULIB_LOG10L)/g' \ + -e 's/@''GNULIB_LOG1P''@/$(GNULIB_LOG1P)/g' \ + -e 's/@''GNULIB_LOG1PF''@/$(GNULIB_LOG1PF)/g' \ + -e 's/@''GNULIB_LOG1PL''@/$(GNULIB_LOG1PL)/g' \ + -e 's/@''GNULIB_LOG2''@/$(GNULIB_LOG2)/g' \ + -e 's/@''GNULIB_LOG2F''@/$(GNULIB_LOG2F)/g' \ + -e 's/@''GNULIB_LOG2L''@/$(GNULIB_LOG2L)/g' \ + -e 's/@''GNULIB_LOGB''@/$(GNULIB_LOGB)/g' \ + -e 's/@''GNULIB_LOGBF''@/$(GNULIB_LOGBF)/g' \ + -e 's/@''GNULIB_LOGBL''@/$(GNULIB_LOGBL)/g' \ + -e 's/@''GNULIB_MODF''@/$(GNULIB_MODF)/g' \ + -e 's/@''GNULIB_MODFF''@/$(GNULIB_MODFF)/g' \ + -e 's/@''GNULIB_MODFL''@/$(GNULIB_MODFL)/g' \ + -e 's/@''GNULIB_POWF''@/$(GNULIB_POWF)/g' \ + -e 's/@''GNULIB_REMAINDER''@/$(GNULIB_REMAINDER)/g' \ + -e 's/@''GNULIB_REMAINDERF''@/$(GNULIB_REMAINDERF)/g' \ + -e 's/@''GNULIB_REMAINDERL''@/$(GNULIB_REMAINDERL)/g' \ + -e 's/@''GNULIB_RINT''@/$(GNULIB_RINT)/g' \ + -e 's/@''GNULIB_RINTF''@/$(GNULIB_RINTF)/g' \ + -e 's/@''GNULIB_RINTL''@/$(GNULIB_RINTL)/g' \ + -e 's/@''GNULIB_ROUND''@/$(GNULIB_ROUND)/g' \ + -e 's/@''GNULIB_ROUNDF''@/$(GNULIB_ROUNDF)/g' \ + -e 's/@''GNULIB_ROUNDL''@/$(GNULIB_ROUNDL)/g' \ + -e 's/@''GNULIB_SIGNBIT''@/$(GNULIB_SIGNBIT)/g' \ + -e 's/@''GNULIB_SINF''@/$(GNULIB_SINF)/g' \ + -e 's/@''GNULIB_SINL''@/$(GNULIB_SINL)/g' \ + -e 's/@''GNULIB_SINHF''@/$(GNULIB_SINHF)/g' \ + -e 's/@''GNULIB_SQRTF''@/$(GNULIB_SQRTF)/g' \ + -e 's/@''GNULIB_SQRTL''@/$(GNULIB_SQRTL)/g' \ + -e 's/@''GNULIB_TANF''@/$(GNULIB_TANF)/g' \ + -e 's/@''GNULIB_TANL''@/$(GNULIB_TANL)/g' \ + -e 's/@''GNULIB_TANHF''@/$(GNULIB_TANHF)/g' \ + -e 's/@''GNULIB_TRUNC''@/$(GNULIB_TRUNC)/g' \ + -e 's/@''GNULIB_TRUNCF''@/$(GNULIB_TRUNCF)/g' \ + -e 's/@''GNULIB_TRUNCL''@/$(GNULIB_TRUNCL)/g' \ + | \ + sed -e 's|@''HAVE_ACOSF''@|$(HAVE_ACOSF)|g' \ + -e 's|@''HAVE_ACOSL''@|$(HAVE_ACOSL)|g' \ + -e 's|@''HAVE_ASINF''@|$(HAVE_ASINF)|g' \ + -e 's|@''HAVE_ASINL''@|$(HAVE_ASINL)|g' \ + -e 's|@''HAVE_ATANF''@|$(HAVE_ATANF)|g' \ + -e 's|@''HAVE_ATANL''@|$(HAVE_ATANL)|g' \ + -e 's|@''HAVE_ATAN2F''@|$(HAVE_ATAN2F)|g' \ + -e 's|@''HAVE_CBRT''@|$(HAVE_CBRT)|g' \ + -e 's|@''HAVE_CBRTF''@|$(HAVE_CBRTF)|g' \ + -e 's|@''HAVE_CBRTL''@|$(HAVE_CBRTL)|g' \ + -e 's|@''HAVE_COPYSIGN''@|$(HAVE_COPYSIGN)|g' \ + -e 's|@''HAVE_COPYSIGNL''@|$(HAVE_COPYSIGNL)|g' \ + -e 's|@''HAVE_COSF''@|$(HAVE_COSF)|g' \ + -e 's|@''HAVE_COSL''@|$(HAVE_COSL)|g' \ + -e 's|@''HAVE_COSHF''@|$(HAVE_COSHF)|g' \ + -e 's|@''HAVE_EXPF''@|$(HAVE_EXPF)|g' \ + -e 's|@''HAVE_EXPL''@|$(HAVE_EXPL)|g' \ + -e 's|@''HAVE_EXPM1''@|$(HAVE_EXPM1)|g' \ + -e 's|@''HAVE_EXPM1F''@|$(HAVE_EXPM1F)|g' \ + -e 's|@''HAVE_FABSF''@|$(HAVE_FABSF)|g' \ + -e 's|@''HAVE_FABSL''@|$(HAVE_FABSL)|g' \ + -e 's|@''HAVE_FMA''@|$(HAVE_FMA)|g' \ + -e 's|@''HAVE_FMAF''@|$(HAVE_FMAF)|g' \ + -e 's|@''HAVE_FMAL''@|$(HAVE_FMAL)|g' \ + -e 's|@''HAVE_FMODF''@|$(HAVE_FMODF)|g' \ + -e 's|@''HAVE_FMODL''@|$(HAVE_FMODL)|g' \ + -e 's|@''HAVE_FREXPF''@|$(HAVE_FREXPF)|g' \ + -e 's|@''HAVE_HYPOTF''@|$(HAVE_HYPOTF)|g' \ + -e 's|@''HAVE_HYPOTL''@|$(HAVE_HYPOTL)|g' \ + -e 's|@''HAVE_ILOGB''@|$(HAVE_ILOGB)|g' \ + -e 's|@''HAVE_ILOGBF''@|$(HAVE_ILOGBF)|g' \ + -e 's|@''HAVE_ILOGBL''@|$(HAVE_ILOGBL)|g' \ + -e 's|@''HAVE_ISNANF''@|$(HAVE_ISNANF)|g' \ + -e 's|@''HAVE_ISNAND''@|$(HAVE_ISNAND)|g' \ + -e 's|@''HAVE_ISNANL''@|$(HAVE_ISNANL)|g' \ + -e 's|@''HAVE_LDEXPF''@|$(HAVE_LDEXPF)|g' \ + -e 's|@''HAVE_LOGF''@|$(HAVE_LOGF)|g' \ + -e 's|@''HAVE_LOGL''@|$(HAVE_LOGL)|g' \ + -e 's|@''HAVE_LOG10F''@|$(HAVE_LOG10F)|g' \ + -e 's|@''HAVE_LOG10L''@|$(HAVE_LOG10L)|g' \ + -e 's|@''HAVE_LOG1P''@|$(HAVE_LOG1P)|g' \ + -e 's|@''HAVE_LOG1PF''@|$(HAVE_LOG1PF)|g' \ + -e 's|@''HAVE_LOG1PL''@|$(HAVE_LOG1PL)|g' \ + -e 's|@''HAVE_LOGBF''@|$(HAVE_LOGBF)|g' \ + -e 's|@''HAVE_LOGBL''@|$(HAVE_LOGBL)|g' \ + -e 's|@''HAVE_MODFF''@|$(HAVE_MODFF)|g' \ + -e 's|@''HAVE_MODFL''@|$(HAVE_MODFL)|g' \ + -e 's|@''HAVE_POWF''@|$(HAVE_POWF)|g' \ + -e 's|@''HAVE_REMAINDER''@|$(HAVE_REMAINDER)|g' \ + -e 's|@''HAVE_REMAINDERF''@|$(HAVE_REMAINDERF)|g' \ + -e 's|@''HAVE_RINT''@|$(HAVE_RINT)|g' \ + -e 's|@''HAVE_RINTL''@|$(HAVE_RINTL)|g' \ + -e 's|@''HAVE_SINF''@|$(HAVE_SINF)|g' \ + -e 's|@''HAVE_SINL''@|$(HAVE_SINL)|g' \ + -e 's|@''HAVE_SINHF''@|$(HAVE_SINHF)|g' \ + -e 's|@''HAVE_SQRTF''@|$(HAVE_SQRTF)|g' \ + -e 's|@''HAVE_SQRTL''@|$(HAVE_SQRTL)|g' \ + -e 's|@''HAVE_TANF''@|$(HAVE_TANF)|g' \ + -e 's|@''HAVE_TANL''@|$(HAVE_TANL)|g' \ + -e 's|@''HAVE_TANHF''@|$(HAVE_TANHF)|g' \ + -e 's|@''HAVE_DECL_ACOSL''@|$(HAVE_DECL_ACOSL)|g' \ + -e 's|@''HAVE_DECL_ASINL''@|$(HAVE_DECL_ASINL)|g' \ + -e 's|@''HAVE_DECL_ATANL''@|$(HAVE_DECL_ATANL)|g' \ + -e 's|@''HAVE_DECL_CBRTF''@|$(HAVE_DECL_CBRTF)|g' \ + -e 's|@''HAVE_DECL_CBRTL''@|$(HAVE_DECL_CBRTL)|g' \ + -e 's|@''HAVE_DECL_CEILF''@|$(HAVE_DECL_CEILF)|g' \ + -e 's|@''HAVE_DECL_CEILL''@|$(HAVE_DECL_CEILL)|g' \ + -e 's|@''HAVE_DECL_COPYSIGNF''@|$(HAVE_DECL_COPYSIGNF)|g' \ + -e 's|@''HAVE_DECL_COSL''@|$(HAVE_DECL_COSL)|g' \ + -e 's|@''HAVE_DECL_EXPL''@|$(HAVE_DECL_EXPL)|g' \ + -e 's|@''HAVE_DECL_EXP2''@|$(HAVE_DECL_EXP2)|g' \ + -e 's|@''HAVE_DECL_EXP2F''@|$(HAVE_DECL_EXP2F)|g' \ + -e 's|@''HAVE_DECL_EXP2L''@|$(HAVE_DECL_EXP2L)|g' \ + -e 's|@''HAVE_DECL_EXPM1L''@|$(HAVE_DECL_EXPM1L)|g' \ + -e 's|@''HAVE_DECL_FLOORF''@|$(HAVE_DECL_FLOORF)|g' \ + -e 's|@''HAVE_DECL_FLOORL''@|$(HAVE_DECL_FLOORL)|g' \ + -e 's|@''HAVE_DECL_FREXPL''@|$(HAVE_DECL_FREXPL)|g' \ + -e 's|@''HAVE_DECL_LDEXPL''@|$(HAVE_DECL_LDEXPL)|g' \ + -e 's|@''HAVE_DECL_LOGL''@|$(HAVE_DECL_LOGL)|g' \ + -e 's|@''HAVE_DECL_LOG10L''@|$(HAVE_DECL_LOG10L)|g' \ + -e 's|@''HAVE_DECL_LOG2''@|$(HAVE_DECL_LOG2)|g' \ + -e 's|@''HAVE_DECL_LOG2F''@|$(HAVE_DECL_LOG2F)|g' \ + -e 's|@''HAVE_DECL_LOG2L''@|$(HAVE_DECL_LOG2L)|g' \ + -e 's|@''HAVE_DECL_LOGB''@|$(HAVE_DECL_LOGB)|g' \ + -e 's|@''HAVE_DECL_REMAINDER''@|$(HAVE_DECL_REMAINDER)|g' \ + -e 's|@''HAVE_DECL_REMAINDERL''@|$(HAVE_DECL_REMAINDERL)|g' \ + -e 's|@''HAVE_DECL_RINTF''@|$(HAVE_DECL_RINTF)|g' \ + -e 's|@''HAVE_DECL_ROUND''@|$(HAVE_DECL_ROUND)|g' \ + -e 's|@''HAVE_DECL_ROUNDF''@|$(HAVE_DECL_ROUNDF)|g' \ + -e 's|@''HAVE_DECL_ROUNDL''@|$(HAVE_DECL_ROUNDL)|g' \ + -e 's|@''HAVE_DECL_SINL''@|$(HAVE_DECL_SINL)|g' \ + -e 's|@''HAVE_DECL_SQRTL''@|$(HAVE_DECL_SQRTL)|g' \ + -e 's|@''HAVE_DECL_TANL''@|$(HAVE_DECL_TANL)|g' \ + -e 's|@''HAVE_DECL_TRUNC''@|$(HAVE_DECL_TRUNC)|g' \ + -e 's|@''HAVE_DECL_TRUNCF''@|$(HAVE_DECL_TRUNCF)|g' \ + -e 's|@''HAVE_DECL_TRUNCL''@|$(HAVE_DECL_TRUNCL)|g' \ + | \ + sed -e 's|@''REPLACE_CBRTF''@|$(REPLACE_CBRTF)|g' \ + -e 's|@''REPLACE_CBRTL''@|$(REPLACE_CBRTL)|g' \ + -e 's|@''REPLACE_CEIL''@|$(REPLACE_CEIL)|g' \ + -e 's|@''REPLACE_CEILF''@|$(REPLACE_CEILF)|g' \ + -e 's|@''REPLACE_CEILL''@|$(REPLACE_CEILL)|g' \ + -e 's|@''REPLACE_EXPM1''@|$(REPLACE_EXPM1)|g' \ + -e 's|@''REPLACE_EXPM1F''@|$(REPLACE_EXPM1F)|g' \ + -e 's|@''REPLACE_EXP2''@|$(REPLACE_EXP2)|g' \ + -e 's|@''REPLACE_EXP2L''@|$(REPLACE_EXP2L)|g' \ + -e 's|@''REPLACE_FABSL''@|$(REPLACE_FABSL)|g' \ + -e 's|@''REPLACE_FLOOR''@|$(REPLACE_FLOOR)|g' \ + -e 's|@''REPLACE_FLOORF''@|$(REPLACE_FLOORF)|g' \ + -e 's|@''REPLACE_FLOORL''@|$(REPLACE_FLOORL)|g' \ + -e 's|@''REPLACE_FMA''@|$(REPLACE_FMA)|g' \ + -e 's|@''REPLACE_FMAF''@|$(REPLACE_FMAF)|g' \ + -e 's|@''REPLACE_FMAL''@|$(REPLACE_FMAL)|g' \ + -e 's|@''REPLACE_FMOD''@|$(REPLACE_FMOD)|g' \ + -e 's|@''REPLACE_FMODF''@|$(REPLACE_FMODF)|g' \ + -e 's|@''REPLACE_FMODL''@|$(REPLACE_FMODL)|g' \ + -e 's|@''REPLACE_FREXPF''@|$(REPLACE_FREXPF)|g' \ + -e 's|@''REPLACE_FREXP''@|$(REPLACE_FREXP)|g' \ + -e 's|@''REPLACE_FREXPL''@|$(REPLACE_FREXPL)|g' \ + -e 's|@''REPLACE_HUGE_VAL''@|$(REPLACE_HUGE_VAL)|g' \ + -e 's|@''REPLACE_HYPOT''@|$(REPLACE_HYPOT)|g' \ + -e 's|@''REPLACE_HYPOTF''@|$(REPLACE_HYPOTF)|g' \ + -e 's|@''REPLACE_HYPOTL''@|$(REPLACE_HYPOTL)|g' \ + -e 's|@''REPLACE_ILOGB''@|$(REPLACE_ILOGB)|g' \ + -e 's|@''REPLACE_ILOGBF''@|$(REPLACE_ILOGBF)|g' \ + -e 's|@''REPLACE_ISFINITE''@|$(REPLACE_ISFINITE)|g' \ + -e 's|@''REPLACE_ISINF''@|$(REPLACE_ISINF)|g' \ + -e 's|@''REPLACE_ISNAN''@|$(REPLACE_ISNAN)|g' \ + -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \ + -e 's|@''REPLACE_LDEXPL''@|$(REPLACE_LDEXPL)|g' \ + -e 's|@''REPLACE_LOG''@|$(REPLACE_LOG)|g' \ + -e 's|@''REPLACE_LOGF''@|$(REPLACE_LOGF)|g' \ + -e 's|@''REPLACE_LOGL''@|$(REPLACE_LOGL)|g' \ + -e 's|@''REPLACE_LOG10''@|$(REPLACE_LOG10)|g' \ + -e 's|@''REPLACE_LOG10F''@|$(REPLACE_LOG10F)|g' \ + -e 's|@''REPLACE_LOG10L''@|$(REPLACE_LOG10L)|g' \ + -e 's|@''REPLACE_LOG1P''@|$(REPLACE_LOG1P)|g' \ + -e 's|@''REPLACE_LOG1PF''@|$(REPLACE_LOG1PF)|g' \ + -e 's|@''REPLACE_LOG1PL''@|$(REPLACE_LOG1PL)|g' \ + -e 's|@''REPLACE_LOG2''@|$(REPLACE_LOG2)|g' \ + -e 's|@''REPLACE_LOG2F''@|$(REPLACE_LOG2F)|g' \ + -e 's|@''REPLACE_LOG2L''@|$(REPLACE_LOG2L)|g' \ + -e 's|@''REPLACE_LOGB''@|$(REPLACE_LOGB)|g' \ + -e 's|@''REPLACE_LOGBF''@|$(REPLACE_LOGBF)|g' \ + -e 's|@''REPLACE_LOGBL''@|$(REPLACE_LOGBL)|g' \ + -e 's|@''REPLACE_MODF''@|$(REPLACE_MODF)|g' \ + -e 's|@''REPLACE_MODFF''@|$(REPLACE_MODFF)|g' \ + -e 's|@''REPLACE_MODFL''@|$(REPLACE_MODFL)|g' \ + -e 's|@''REPLACE_NAN''@|$(REPLACE_NAN)|g' \ + -e 's|@''REPLACE_REMAINDER''@|$(REPLACE_REMAINDER)|g' \ + -e 's|@''REPLACE_REMAINDERF''@|$(REPLACE_REMAINDERF)|g' \ + -e 's|@''REPLACE_REMAINDERL''@|$(REPLACE_REMAINDERL)|g' \ + -e 's|@''REPLACE_ROUND''@|$(REPLACE_ROUND)|g' \ + -e 's|@''REPLACE_ROUNDF''@|$(REPLACE_ROUNDF)|g' \ + -e 's|@''REPLACE_ROUNDL''@|$(REPLACE_ROUNDL)|g' \ + -e 's|@''REPLACE_SIGNBIT''@|$(REPLACE_SIGNBIT)|g' \ + -e 's|@''REPLACE_SIGNBIT_USING_GCC''@|$(REPLACE_SIGNBIT_USING_GCC)|g' \ + -e 's|@''REPLACE_SQRTL''@|$(REPLACE_SQRTL)|g' \ + -e 's|@''REPLACE_TRUNC''@|$(REPLACE_TRUNC)|g' \ + -e 's|@''REPLACE_TRUNCF''@|$(REPLACE_TRUNCF)|g' \ + -e 's|@''REPLACE_TRUNCL''@|$(REPLACE_TRUNCL)|g' \ + -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ + -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ + -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ + } > $@-t && \ + mv $@-t $@ +MOSTLYCLEANFILES += math.h math.h-t + +EXTRA_DIST += math.in.h + +## end gnulib module math + ## begin gnulib module mbchar libgettextlib_la_SOURCES += mbchar.c @@ -2442,6 +2810,15 @@ ## end gnulib module signal-h +## begin gnulib module signbit + + +EXTRA_DIST += float+.h signbitd.c signbitf.c signbitl.c + +EXTRA_libgettextlib_la_SOURCES += signbitd.c signbitf.c signbitl.c + +## end gnulib module signbit + ## begin gnulib module sigpipe diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/Makefile.in gettext-0.19.7/gettext-tools/gnulib-lib/Makefile.in --- gettext-0.19.6/gettext-tools/gnulib-lib/Makefile.in 2015-09-11 03:05:09.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/Makefile.in 2015-12-27 23:09:40.000000000 +0000 @@ -35,7 +35,7 @@ # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. -# Reproduce by: gnulib-tool --import --dir=gettext-tools --local-dir=gnulib-local --lib=libgettextlib --source-base=gnulib-lib --m4-base=gnulib-m4 --doc-base=doc --tests-base=gnulib-tests --aux-dir=../build-aux --with-tests --avoid=hash-tests --avoid=unilbrk/u8-possible-linebreaks-tests --avoid=unilbrk/ulc-width-linebreaks-tests --avoid=unistr/u8-mbtouc-tests --avoid=unistr/u8-mbtouc-unsafe-tests --avoid=uniwidth/width-tests --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gl alloca-opt ansi-c++-opt atexit backupfile basename binary-io bison-i18n byteswap c-ctype c-strcase c-strcasestr c-strstr clean-temp closedir closeout copy-file csharpcomp csharpcomp-script csharpexec csharpexec-script error error-progname execute extensions fd-ostream file-ostream filename findprog fnmatch fopen fstrcmp full-write fwriteerror gcd gcj getline getopt-gnu gettext-h gettext-tools-misc hash html-styled-ostream iconv include_next java javacomp javacomp-script javaexec javaexec-script libunistring-optional localcharset locale localename lock malloc-posix mbrtowc mbsinit memmove memset minmax multiarch obstack open opendir openmp ostream pipe-filter-ii progname propername readdir relocatable-prog relocatable-script setlocale sh-quote sigpipe sigprocmask snippet/arg-nonnull snippet/c++defs snippet/warn-on-use spawn-pipe ssize_t stdbool stddef stdint stdio stdlib stpcpy stpncpy strcspn streq strerror strpbrk strtol strtoul styled-ostream sys_select sys_stat sys_time term-styled-ostream unictype/ctype-space unilbrk/ulc-width-linebreaks uniname/uniname unistd unistr/u16-mbtouc unistr/u8-mbtouc unistr/u8-mbtoucr unistr/u8-uctomb uniwidth/width unlocked-io vasprintf verify wait-process wchar wctype-h write xalloc xconcat-filename xerror xmalloca xsetenv xstriconv xstriconveh xvasprintf +# Reproduce by: gnulib-tool --import --local-dir=gnulib-local --lib=libgettextlib --source-base=gnulib-lib --m4-base=gnulib-m4 --doc-base=doc --tests-base=gnulib-tests --aux-dir=../build-aux --with-tests --avoid=hash-tests --avoid=unilbrk/u8-possible-linebreaks-tests --avoid=unilbrk/ulc-width-linebreaks-tests --avoid=unistr/u8-mbtouc-tests --avoid=unistr/u8-mbtouc-unsafe-tests --avoid=uniwidth/width-tests --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gl alloca-opt ansi-c++-opt atexit backupfile basename binary-io bison-i18n byteswap c-ctype c-strcase c-strcasestr c-strstr clean-temp closedir closeout copy-file csharpcomp csharpcomp-script csharpexec csharpexec-script error error-progname execute extensions fd-ostream file-ostream filename findprog fnmatch fopen fstrcmp full-write fwriteerror gcd gcj getline getopt-gnu gettext-h gettext-tools-misc hash html-styled-ostream iconv include_next java javacomp javacomp-script javaexec javaexec-script libunistring-optional localcharset locale localename lock malloc-posix mbrtowc mbsinit memmove memset minmax multiarch obstack open opendir openmp ostream pipe-filter-ii progname propername readdir relocatable-prog relocatable-script setlocale sh-quote sigpipe sigprocmask snippet/arg-nonnull snippet/c++defs snippet/warn-on-use spawn-pipe ssize_t stdbool stddef stdint stdio stdlib stpcpy stpncpy strcspn streq strerror strpbrk strtol strtoul styled-ostream sys_select sys_stat sys_time term-styled-ostream trim unictype/ctype-space unilbrk/ulc-width-linebreaks uniname/uniname unistd unistr/u16-mbtouc unistr/u8-mbtouc unistr/u8-mbtoucr unistr/u8-uctomb uniwidth/width unlocked-io vasprintf verify wait-process wchar wctype-h write xalloc xconcat-filename xerror xmalloca xsetenv xstriconv xstriconveh xvasprintf VPATH = @srcdir@ @@ -174,6 +174,7 @@ $(top_srcdir)/gnulib-m4/btowc.m4 \ $(top_srcdir)/gnulib-m4/byteswap.m4 \ $(top_srcdir)/gnulib-m4/canonicalize.m4 \ + $(top_srcdir)/gnulib-m4/check-math-lib.m4 \ $(top_srcdir)/gnulib-m4/close.m4 \ $(top_srcdir)/gnulib-m4/closedir.m4 \ $(top_srcdir)/gnulib-m4/configmake.m4 \ @@ -181,6 +182,7 @@ $(top_srcdir)/gnulib-m4/csharp.m4 \ $(top_srcdir)/gnulib-m4/csharpcomp.m4 \ $(top_srcdir)/gnulib-m4/csharpexec.m4 \ + $(top_srcdir)/gnulib-m4/ctype.m4 \ $(top_srcdir)/gnulib-m4/curses.m4 \ $(top_srcdir)/gnulib-m4/dirent_h.m4 \ $(top_srcdir)/gnulib-m4/double-slash-root.m4 \ @@ -192,7 +194,10 @@ $(top_srcdir)/gnulib-m4/error.m4 \ $(top_srcdir)/gnulib-m4/execute.m4 \ $(top_srcdir)/gnulib-m4/exponentd.m4 \ + $(top_srcdir)/gnulib-m4/exponentf.m4 \ + $(top_srcdir)/gnulib-m4/exponentl.m4 \ $(top_srcdir)/gnulib-m4/extensions.m4 \ + $(top_srcdir)/gnulib-m4/fabs.m4 \ $(top_srcdir)/gnulib-m4/fatal-signal.m4 \ $(top_srcdir)/gnulib-m4/fcntl.m4 \ $(top_srcdir)/gnulib-m4/fcntl_h.m4 \ @@ -222,6 +227,11 @@ $(top_srcdir)/gnulib-m4/inline.m4 \ $(top_srcdir)/gnulib-m4/intmax_t.m4 \ $(top_srcdir)/gnulib-m4/inttypes.m4 \ + $(top_srcdir)/gnulib-m4/isinf.m4 \ + $(top_srcdir)/gnulib-m4/isnan.m4 \ + $(top_srcdir)/gnulib-m4/isnand.m4 \ + $(top_srcdir)/gnulib-m4/isnanf.m4 \ + $(top_srcdir)/gnulib-m4/isnanl.m4 \ $(top_srcdir)/gnulib-m4/iswblank.m4 \ $(top_srcdir)/gnulib-m4/java.m4 \ $(top_srcdir)/gnulib-m4/javacomp.m4 \ @@ -244,10 +254,13 @@ $(top_srcdir)/gnulib-m4/locale-zh.m4 \ $(top_srcdir)/gnulib-m4/locale_h.m4 \ $(top_srcdir)/gnulib-m4/localename.m4 \ + $(top_srcdir)/gnulib-m4/log10.m4 \ $(top_srcdir)/gnulib-m4/lseek.m4 \ $(top_srcdir)/gnulib-m4/lstat.m4 \ $(top_srcdir)/gnulib-m4/malloc.m4 \ $(top_srcdir)/gnulib-m4/malloca.m4 \ + $(top_srcdir)/gnulib-m4/math_h.m4 \ + $(top_srcdir)/gnulib-m4/mathfunc.m4 \ $(top_srcdir)/gnulib-m4/mbchar.m4 \ $(top_srcdir)/gnulib-m4/mbiter.m4 \ $(top_srcdir)/gnulib-m4/mbrtowc.m4 \ @@ -277,6 +290,7 @@ $(top_srcdir)/gnulib-m4/pathmax.m4 \ $(top_srcdir)/gnulib-m4/pipe2.m4 \ $(top_srcdir)/gnulib-m4/posix_spawn.m4 \ + $(top_srcdir)/gnulib-m4/pow.m4 \ $(top_srcdir)/gnulib-m4/printf.m4 \ $(top_srcdir)/gnulib-m4/putenv.m4 \ $(top_srcdir)/gnulib-m4/quote.m4 \ @@ -301,6 +315,7 @@ $(top_srcdir)/gnulib-m4/sigaction.m4 \ $(top_srcdir)/gnulib-m4/signal_h.m4 \ $(top_srcdir)/gnulib-m4/signalblocking.m4 \ + $(top_srcdir)/gnulib-m4/signbit.m4 \ $(top_srcdir)/gnulib-m4/sigpipe.m4 \ $(top_srcdir)/gnulib-m4/sleep.m4 \ $(top_srcdir)/gnulib-m4/snprintf.m4 \ @@ -494,7 +509,7 @@ gl_anyhash_list1.h gl_anyhash_list2.h gl_anylinked_list1.h \ gl_anylinked_list2.h gl_list.h gl_list.c localcharset.h \ localcharset.c localename.c glthread/lock.h glthread/lock.c \ - malloca.c mbchar.c mbiter.h mbiter.c mbslen.c mbsstr.c \ + malloca.c math.c mbchar.c mbiter.h mbiter.c mbslen.c mbsstr.c \ mbswidth.h mbswidth.c mbuiter.h mbuiter.c minmax.h ostream.c \ pipe-filter-ii.c pipe-filter-aux.c pipe2.c pipe2-safer.c \ progname.h progname.c propername.h propername.c qcopy-acl.c \ @@ -564,9 +579,9 @@ $(am__objects_2) $(am__objects_3) javacomp.lo javaexec.lo \ javaversion.lo gl_linkedhash_list.lo gl_list.lo \ localcharset.lo localename.lo glthread/lock.lo malloca.lo \ - mbchar.lo mbiter.lo mbslen.lo mbsstr.lo mbswidth.lo mbuiter.lo \ - ostream.lo pipe-filter-ii.lo pipe-filter-aux.lo pipe2.lo \ - pipe2-safer.lo progname.lo propername.lo qcopy-acl.lo \ + math.lo mbchar.lo mbiter.lo mbslen.lo mbsstr.lo mbswidth.lo \ + mbuiter.lo ostream.lo pipe-filter-ii.lo pipe-filter-aux.lo \ + pipe2.lo pipe2-safer.lo progname.lo propername.lo qcopy-acl.lo \ qset-acl.lo quotearg.lo safe-read.lo safe-write.lo sh-quote.lo \ sig-handler.lo spawn-pipe.lo striconv.lo striconveh.lo \ striconveha.lo strnlen1.lo styled-ostream.lo tempname.lo \ @@ -595,8 +610,8 @@ am_libxml_rpl_la_OBJECTS = libxml/libxml_rpl_la-DOCBparser.lo \ libxml/libxml_rpl_la-HTMLparser.lo \ libxml/libxml_rpl_la-HTMLtree.lo libxml/libxml_rpl_la-SAX.lo \ - libxml/libxml_rpl_la-SAX2.lo libxml/libxml_rpl_la-c14n.lo \ - libxml/libxml_rpl_la-catalog.lo \ + libxml/libxml_rpl_la-SAX2.lo libxml/libxml_rpl_la-buf.lo \ + libxml/libxml_rpl_la-c14n.lo libxml/libxml_rpl_la-catalog.lo \ libxml/libxml_rpl_la-chvalid.lo \ libxml/libxml_rpl_la-debugXML.lo libxml/libxml_rpl_la-dict.lo \ libxml/libxml_rpl_la-encoding.lo \ @@ -611,9 +626,9 @@ libxml/libxml_rpl_la-relaxng.lo \ libxml/libxml_rpl_la-schematron.lo \ libxml/libxml_rpl_la-threads.lo libxml/libxml_rpl_la-tree.lo \ - libxml/libxml_rpl_la-uri.lo libxml/libxml_rpl_la-valid.lo \ - libxml/libxml_rpl_la-xinclude.lo libxml/libxml_rpl_la-xlink.lo \ - libxml/libxml_rpl_la-xmlIO.lo \ + libxml/libxml_rpl_la-trionan.lo libxml/libxml_rpl_la-uri.lo \ + libxml/libxml_rpl_la-valid.lo libxml/libxml_rpl_la-xinclude.lo \ + libxml/libxml_rpl_la-xlink.lo libxml/libxml_rpl_la-xmlIO.lo \ libxml/libxml_rpl_la-xmlmemory.lo \ libxml/libxml_rpl_la-xmlmodule.lo \ libxml/libxml_rpl_la-xmlreader.lo \ @@ -788,6 +803,7 @@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ +FABS_LIBM = @FABS_LIBM@ FGREP = @FGREP@ FLOAT_H = @FLOAT_H@ FNMATCH_H = @FNMATCH_H@ @@ -802,15 +818,34 @@ GLOBAL_SYMBOL_PIPE = @GLOBAL_SYMBOL_PIPE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_ACOSF = @GNULIB_ACOSF@ +GNULIB_ACOSL = @GNULIB_ACOSL@ GNULIB_ALPHASORT = @GNULIB_ALPHASORT@ +GNULIB_ASINF = @GNULIB_ASINF@ +GNULIB_ASINL = @GNULIB_ASINL@ +GNULIB_ATAN2F = @GNULIB_ATAN2F@ +GNULIB_ATANF = @GNULIB_ATANF@ +GNULIB_ATANL = @GNULIB_ATANL@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_BTOWC = @GNULIB_BTOWC@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ +GNULIB_CBRT = @GNULIB_CBRT@ +GNULIB_CBRTF = @GNULIB_CBRTF@ +GNULIB_CBRTL = @GNULIB_CBRTL@ +GNULIB_CEIL = @GNULIB_CEIL@ +GNULIB_CEILF = @GNULIB_CEILF@ +GNULIB_CEILL = @GNULIB_CEILL@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@ +GNULIB_COPYSIGN = @GNULIB_COPYSIGN@ +GNULIB_COPYSIGNF = @GNULIB_COPYSIGNF@ +GNULIB_COPYSIGNL = @GNULIB_COPYSIGNL@ +GNULIB_COSF = @GNULIB_COSF@ +GNULIB_COSHF = @GNULIB_COSHF@ +GNULIB_COSL = @GNULIB_COSL@ GNULIB_DIRFD = @GNULIB_DIRFD@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ @@ -819,6 +854,16 @@ GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_EXP2 = @GNULIB_EXP2@ +GNULIB_EXP2F = @GNULIB_EXP2F@ +GNULIB_EXP2L = @GNULIB_EXP2L@ +GNULIB_EXPF = @GNULIB_EXPF@ +GNULIB_EXPL = @GNULIB_EXPL@ +GNULIB_EXPM1 = @GNULIB_EXPM1@ +GNULIB_EXPM1F = @GNULIB_EXPM1F@ +GNULIB_EXPM1L = @GNULIB_EXPM1L@ +GNULIB_FABSF = @GNULIB_FABSF@ +GNULIB_FABSL = @GNULIB_FABSL@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ @@ -833,6 +878,15 @@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ +GNULIB_FLOOR = @GNULIB_FLOOR@ +GNULIB_FLOORF = @GNULIB_FLOORF@ +GNULIB_FLOORL = @GNULIB_FLOORL@ +GNULIB_FMA = @GNULIB_FMA@ +GNULIB_FMAF = @GNULIB_FMAF@ +GNULIB_FMAL = @GNULIB_FMAL@ +GNULIB_FMOD = @GNULIB_FMOD@ +GNULIB_FMODF = @GNULIB_FMODF@ +GNULIB_FMODL = @GNULIB_FMODL@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ @@ -841,6 +895,9 @@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ +GNULIB_FREXP = @GNULIB_FREXP@ +GNULIB_FREXPF = @GNULIB_FREXPF@ +GNULIB_FREXPL = @GNULIB_FREXPL@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ @@ -871,17 +928,47 @@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ +GNULIB_HYPOT = @GNULIB_HYPOT@ +GNULIB_HYPOTF = @GNULIB_HYPOTF@ +GNULIB_HYPOTL = @GNULIB_HYPOTL@ GNULIB_ICONV = @GNULIB_ICONV@ +GNULIB_ILOGB = @GNULIB_ILOGB@ +GNULIB_ILOGBF = @GNULIB_ILOGBF@ +GNULIB_ILOGBL = @GNULIB_ILOGBL@ GNULIB_IMAXABS = @GNULIB_IMAXABS@ GNULIB_IMAXDIV = @GNULIB_IMAXDIV@ GNULIB_ISATTY = @GNULIB_ISATTY@ +GNULIB_ISBLANK = @GNULIB_ISBLANK@ +GNULIB_ISFINITE = @GNULIB_ISFINITE@ +GNULIB_ISINF = @GNULIB_ISINF@ +GNULIB_ISNAN = @GNULIB_ISNAN@ +GNULIB_ISNAND = @GNULIB_ISNAND@ +GNULIB_ISNANF = @GNULIB_ISNANF@ +GNULIB_ISNANL = @GNULIB_ISNANL@ GNULIB_ISWBLANK = @GNULIB_ISWBLANK@ GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LDEXPF = @GNULIB_LDEXPF@ +GNULIB_LDEXPL = @GNULIB_LDEXPL@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LOCALECONV = @GNULIB_LOCALECONV@ +GNULIB_LOG = @GNULIB_LOG@ +GNULIB_LOG10 = @GNULIB_LOG10@ +GNULIB_LOG10F = @GNULIB_LOG10F@ +GNULIB_LOG10L = @GNULIB_LOG10L@ +GNULIB_LOG1P = @GNULIB_LOG1P@ +GNULIB_LOG1PF = @GNULIB_LOG1PF@ +GNULIB_LOG1PL = @GNULIB_LOG1PL@ +GNULIB_LOG2 = @GNULIB_LOG2@ +GNULIB_LOG2F = @GNULIB_LOG2F@ +GNULIB_LOG2L = @GNULIB_LOG2L@ +GNULIB_LOGB = @GNULIB_LOGB@ +GNULIB_LOGBF = @GNULIB_LOGBF@ +GNULIB_LOGBL = @GNULIB_LOGBL@ +GNULIB_LOGF = @GNULIB_LOGF@ +GNULIB_LOGL = @GNULIB_LOGL@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ @@ -920,6 +1007,9 @@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ +GNULIB_MODF = @GNULIB_MODF@ +GNULIB_MODFF = @GNULIB_MODFF@ +GNULIB_MODFL = @GNULIB_MODFL@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@ GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ @@ -955,6 +1045,7 @@ GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN@ GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY@ GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT@ +GNULIB_POWF = @GNULIB_POWF@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ @@ -978,11 +1069,20 @@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ +GNULIB_REMAINDER = @GNULIB_REMAINDER@ +GNULIB_REMAINDERF = @GNULIB_REMAINDERF@ +GNULIB_REMAINDERL = @GNULIB_REMAINDERL@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_REWINDDIR = @GNULIB_REWINDDIR@ +GNULIB_RINT = @GNULIB_RINT@ +GNULIB_RINTF = @GNULIB_RINTF@ +GNULIB_RINTL = @GNULIB_RINTL@ GNULIB_RMDIR = @GNULIB_RMDIR@ +GNULIB_ROUND = @GNULIB_ROUND@ +GNULIB_ROUNDF = @GNULIB_ROUNDF@ +GNULIB_ROUNDL = @GNULIB_ROUNDL@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANDIR = @GNULIB_SCANDIR@ GNULIB_SCANF = @GNULIB_SCANF@ @@ -993,10 +1093,16 @@ GNULIB_SETLOCALE = @GNULIB_SETLOCALE@ GNULIB_SIGACTION = @GNULIB_SIGACTION@ GNULIB_SIGNAL_H_SIGPIPE = @GNULIB_SIGNAL_H_SIGPIPE@ +GNULIB_SIGNBIT = @GNULIB_SIGNBIT@ GNULIB_SIGPROCMASK = @GNULIB_SIGPROCMASK@ +GNULIB_SINF = @GNULIB_SINF@ +GNULIB_SINHF = @GNULIB_SINHF@ +GNULIB_SINL = @GNULIB_SINL@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ +GNULIB_SQRTF = @GNULIB_SQRTF@ +GNULIB_SQRTL = @GNULIB_SQRTL@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ @@ -1025,11 +1131,17 @@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ +GNULIB_TANF = @GNULIB_TANF@ +GNULIB_TANHF = @GNULIB_TANHF@ +GNULIB_TANL = @GNULIB_TANL@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TIME_RZ = @GNULIB_TIME_RZ@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@ +GNULIB_TRUNC = @GNULIB_TRUNC@ +GNULIB_TRUNCF = @GNULIB_TRUNCF@ +GNULIB_TRUNCL = @GNULIB_TRUNCL@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ @@ -1089,25 +1201,57 @@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ +HAVE_ACOSF = @HAVE_ACOSF@ +HAVE_ACOSL = @HAVE_ACOSL@ HAVE_ALPHASORT = @HAVE_ALPHASORT@ +HAVE_ASINF = @HAVE_ASINF@ +HAVE_ASINL = @HAVE_ASINL@ HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_ATAN2F = @HAVE_ATAN2F@ +HAVE_ATANF = @HAVE_ATANF@ +HAVE_ATANL = @HAVE_ATANL@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_BTOWC = @HAVE_BTOWC@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ +HAVE_CBRT = @HAVE_CBRT@ +HAVE_CBRTF = @HAVE_CBRTF@ +HAVE_CBRTL = @HAVE_CBRTL@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_CLIX = @HAVE_CLIX@ HAVE_CLIX_IN_PATH = @HAVE_CLIX_IN_PATH@ HAVE_CLOSEDIR = @HAVE_CLOSEDIR@ +HAVE_COPYSIGN = @HAVE_COPYSIGN@ +HAVE_COPYSIGNL = @HAVE_COPYSIGNL@ +HAVE_COSF = @HAVE_COSF@ +HAVE_COSHF = @HAVE_COSHF@ +HAVE_COSL = @HAVE_COSL@ HAVE_CSC = @HAVE_CSC@ HAVE_CSCC = @HAVE_CSCC@ HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@ +HAVE_DECL_ASINL = @HAVE_DECL_ASINL@ +HAVE_DECL_ATANL = @HAVE_DECL_ATANL@ +HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@ +HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@ +HAVE_DECL_CEILF = @HAVE_DECL_CEILF@ +HAVE_DECL_CEILL = @HAVE_DECL_CEILL@ +HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@ +HAVE_DECL_COSL = @HAVE_DECL_COSL@ HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@ +HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@ +HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@ +HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ +HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@ +HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@ +HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ +HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ @@ -1119,13 +1263,28 @@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ +HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ +HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@ +HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@ +HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@ +HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@ +HAVE_DECL_LOGB = @HAVE_DECL_LOGB@ +HAVE_DECL_LOGL = @HAVE_DECL_LOGL@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ +HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@ +HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@ +HAVE_DECL_RINTF = @HAVE_DECL_RINTF@ +HAVE_DECL_ROUND = @HAVE_DECL_ROUND@ +HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@ +HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ +HAVE_DECL_SINL = @HAVE_DECL_SINL@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ +HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ @@ -1134,6 +1293,10 @@ HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ +HAVE_DECL_TANL = @HAVE_DECL_TANL@ +HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@ +HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@ +HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ @@ -1145,6 +1308,12 @@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_DUPLOCALE = @HAVE_DUPLOCALE@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_EXPF = @HAVE_EXPF@ +HAVE_EXPL = @HAVE_EXPL@ +HAVE_EXPM1 = @HAVE_EXPM1@ +HAVE_EXPM1F = @HAVE_EXPM1F@ +HAVE_FABSF = @HAVE_FABSF@ +HAVE_FABSL = @HAVE_FABSL@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ @@ -1155,6 +1324,12 @@ HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ +HAVE_FMA = @HAVE_FMA@ +HAVE_FMAF = @HAVE_FMAF@ +HAVE_FMAL = @HAVE_FMAL@ +HAVE_FMODF = @HAVE_FMODF@ +HAVE_FMODL = @HAVE_FMODL@ +HAVE_FREXPF = @HAVE_FREXPF@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ @@ -1177,9 +1352,18 @@ HAVE_GLOBAL_SYMBOL_PIPE = @HAVE_GLOBAL_SYMBOL_PIPE@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ +HAVE_HYPOTF = @HAVE_HYPOTF@ +HAVE_HYPOTL = @HAVE_HYPOTL@ +HAVE_ILOGB = @HAVE_ILOGB@ +HAVE_ILOGBF = @HAVE_ILOGBF@ +HAVE_ILOGBL = @HAVE_ILOGBL@ HAVE_ILRUN = @HAVE_ILRUN@ HAVE_ILRUN_IN_PATH = @HAVE_ILRUN_IN_PATH@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_ISBLANK = @HAVE_ISBLANK@ +HAVE_ISNAND = @HAVE_ISNAND@ +HAVE_ISNANF = @HAVE_ISNANF@ +HAVE_ISNANL = @HAVE_ISNANL@ HAVE_ISWBLANK = @HAVE_ISWBLANK@ HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ HAVE_JAVA = @HAVE_JAVA@ @@ -1201,10 +1385,19 @@ HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ -HAVE_LIBEXPAT = @HAVE_LIBEXPAT@ +HAVE_LDEXPF = @HAVE_LDEXPF@ HAVE_LIBUNISTRING = @HAVE_LIBUNISTRING@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ +HAVE_LOG10F = @HAVE_LOG10F@ +HAVE_LOG10L = @HAVE_LOG10L@ +HAVE_LOG1P = @HAVE_LOG1P@ +HAVE_LOG1PF = @HAVE_LOG1PF@ +HAVE_LOG1PL = @HAVE_LOG1PL@ +HAVE_LOGBF = @HAVE_LOGBF@ +HAVE_LOGBL = @HAVE_LOGBL@ +HAVE_LOGF = @HAVE_LOGF@ +HAVE_LOGL = @HAVE_LOGL@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ @@ -1228,6 +1421,8 @@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ +HAVE_MODFF = @HAVE_MODFF@ +HAVE_MODFL = @HAVE_MODFL@ HAVE_MONO = @HAVE_MONO@ HAVE_MONO_IN_PATH = @HAVE_MONO_IN_PATH@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ @@ -1247,6 +1442,7 @@ HAVE_POSIX_SPAWN = @HAVE_POSIX_SPAWN@ HAVE_POSIX_SPAWNATTR_T = @HAVE_POSIX_SPAWNATTR_T@ HAVE_POSIX_SPAWN_FILE_ACTIONS_T = @HAVE_POSIX_SPAWN_FILE_ACTIONS_T@ +HAVE_POWF = @HAVE_POWF@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PSELECT = @HAVE_PSELECT@ HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ @@ -1262,9 +1458,14 @@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ +HAVE_REMAINDER = @HAVE_REMAINDER@ +HAVE_REMAINDERF = @HAVE_REMAINDERF@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_REWINDDIR = @HAVE_REWINDDIR@ +HAVE_RINT = @HAVE_RINT@ +HAVE_RINTL = @HAVE_RINTL@ HAVE_RPMATCH = @HAVE_RPMATCH@ +HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@ HAVE_SCANDIR = @HAVE_SCANDIR@ HAVE_SCHED_H = @HAVE_SCHED_H@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ @@ -1277,9 +1478,14 @@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SIGSET_T = @HAVE_SIGSET_T@ +HAVE_SINF = @HAVE_SINF@ +HAVE_SINHF = @HAVE_SINHF@ +HAVE_SINL = @HAVE_SINL@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_SNPRINTF = @HAVE_SNPRINTF@ HAVE_SPAWN_H = @HAVE_SPAWN_H@ +HAVE_SQRTF = @HAVE_SQRTF@ +HAVE_SQRTL = @HAVE_SQRTL@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ @@ -1305,6 +1511,9 @@ HAVE_SYS_SELECT_H = @HAVE_SYS_SELECT_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_TANF = @HAVE_TANF@ +HAVE_TANHF = @HAVE_TANHF@ +HAVE_TANL = @HAVE_TANL@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@ HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ @@ -1382,13 +1591,16 @@ INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +ISINF_LIBM = @ISINF_LIBM@ +ISNAND_LIBM = @ISNAND_LIBM@ +ISNANF_LIBM = @ISNANF_LIBM@ +ISNANL_LIBM = @ISNANL_LIBM@ +ISNAN_LIBM = @ISNAN_LIBM@ JAR = @JAR@ JAVA_CHOICE = @JAVA_CHOICE@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBCROCO = @LIBCROCO@ -LIBEXPAT = @LIBEXPAT@ -LIBEXPAT_PREFIX = @LIBEXPAT_PREFIX@ LIBGLIB = @LIBGLIB@ LIBGLIB_H = @LIBGLIB_H@ LIBGREP_LIBDEPS = @LIBGREP_LIBDEPS@ @@ -1426,9 +1638,9 @@ LOCALE_JA = @LOCALE_JA@ LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ LOCALE_ZH_CN = @LOCALE_ZH_CN@ +LOG10_LIBM = @LOG10_LIBM@ LTLIBC = @LTLIBC@ LTLIBCROCO = @LTLIBCROCO@ -LTLIBEXPAT = @LTLIBEXPAT@ LTLIBGLIB = @LTLIBGLIB@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -1449,6 +1661,7 @@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ MSGMERGE_LIBM = @MSGMERGE_LIBM@ +NEXT_AS_FIRST_DIRECTIVE_CTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_CTYPE_H@ NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ @@ -1458,6 +1671,7 @@ NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@ NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@ +NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ NEXT_AS_FIRST_DIRECTIVE_SCHED_H = @NEXT_AS_FIRST_DIRECTIVE_SCHED_H@ NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ NEXT_AS_FIRST_DIRECTIVE_SPAWN_H = @NEXT_AS_FIRST_DIRECTIVE_SPAWN_H@ @@ -1476,6 +1690,7 @@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ +NEXT_CTYPE_H = @NEXT_CTYPE_H@ NEXT_DIRENT_H = @NEXT_DIRENT_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@ @@ -1485,6 +1700,7 @@ NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ NEXT_LANGINFO_H = @NEXT_LANGINFO_H@ NEXT_LOCALE_H = @NEXT_LOCALE_H@ +NEXT_MATH_H = @NEXT_MATH_H@ NEXT_SCHED_H = @NEXT_SCHED_H@ NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ NEXT_SPAWN_H = @NEXT_SPAWN_H@ @@ -1515,12 +1731,14 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_SUFFIX = @PACKAGE_SUFFIX@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ POSUB = @POSUB@ +POW_LIBM = @POW_LIBM@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PRIPTR_PREFIX = @PRIPTR_PREFIX@ @@ -1539,6 +1757,11 @@ REPLACE_BTOWC = @REPLACE_BTOWC@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CBRTF = @REPLACE_CBRTF@ +REPLACE_CBRTL = @REPLACE_CBRTL@ +REPLACE_CEIL = @REPLACE_CEIL@ +REPLACE_CEILF = @REPLACE_CEILF@ +REPLACE_CEILL = @REPLACE_CEILL@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@ @@ -1547,16 +1770,33 @@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@ +REPLACE_EXP2 = @REPLACE_EXP2@ +REPLACE_EXP2L = @REPLACE_EXP2L@ +REPLACE_EXPM1 = @REPLACE_EXPM1@ +REPLACE_EXPM1F = @REPLACE_EXPM1F@ +REPLACE_FABSL = @REPLACE_FABSL@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCNTL = @REPLACE_FCNTL@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ +REPLACE_FLOOR = @REPLACE_FLOOR@ +REPLACE_FLOORF = @REPLACE_FLOORF@ +REPLACE_FLOORL = @REPLACE_FLOORL@ +REPLACE_FMA = @REPLACE_FMA@ +REPLACE_FMAF = @REPLACE_FMAF@ +REPLACE_FMAL = @REPLACE_FMAL@ +REPLACE_FMOD = @REPLACE_FMOD@ +REPLACE_FMODF = @REPLACE_FMODF@ +REPLACE_FMODL = @REPLACE_FMODL@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ +REPLACE_FREXP = @REPLACE_FREXP@ +REPLACE_FREXPF = @REPLACE_FREXPF@ +REPLACE_FREXPL = @REPLACE_FREXPL@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ @@ -1575,19 +1815,44 @@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ +REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ +REPLACE_HYPOT = @REPLACE_HYPOT@ +REPLACE_HYPOTF = @REPLACE_HYPOTF@ +REPLACE_HYPOTL = @REPLACE_HYPOTL@ REPLACE_ICONV = @REPLACE_ICONV@ REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_ILOGB = @REPLACE_ILOGB@ +REPLACE_ILOGBF = @REPLACE_ILOGBF@ REPLACE_ISATTY = @REPLACE_ISATTY@ +REPLACE_ISFINITE = @REPLACE_ISFINITE@ +REPLACE_ISINF = @REPLACE_ISINF@ +REPLACE_ISNAN = @REPLACE_ISNAN@ REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ REPLACE_ITOLD = @REPLACE_ITOLD@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LDEXPL = @REPLACE_LDEXPL@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALECONV = @REPLACE_LOCALECONV@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ +REPLACE_LOG = @REPLACE_LOG@ +REPLACE_LOG10 = @REPLACE_LOG10@ +REPLACE_LOG10F = @REPLACE_LOG10F@ +REPLACE_LOG10L = @REPLACE_LOG10L@ +REPLACE_LOG1P = @REPLACE_LOG1P@ +REPLACE_LOG1PF = @REPLACE_LOG1PF@ +REPLACE_LOG1PL = @REPLACE_LOG1PL@ +REPLACE_LOG2 = @REPLACE_LOG2@ +REPLACE_LOG2F = @REPLACE_LOG2F@ +REPLACE_LOG2L = @REPLACE_LOG2L@ +REPLACE_LOGB = @REPLACE_LOGB@ +REPLACE_LOGBF = @REPLACE_LOGBF@ +REPLACE_LOGBL = @REPLACE_LOGBL@ +REPLACE_LOGF = @REPLACE_LOGF@ +REPLACE_LOGL = @REPLACE_LOGL@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ @@ -1605,6 +1870,10 @@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ +REPLACE_MODF = @REPLACE_MODF@ +REPLACE_MODFF = @REPLACE_MODFF@ +REPLACE_MODFL = @REPLACE_MODFL@ +REPLACE_NAN = @REPLACE_NAN@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@ REPLACE_NULL = @REPLACE_NULL@ @@ -1634,16 +1903,25 @@ REPLACE_READLINKAT = @REPLACE_READLINKAT@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ +REPLACE_REMAINDER = @REPLACE_REMAINDER@ +REPLACE_REMAINDERF = @REPLACE_REMAINDERF@ +REPLACE_REMAINDERL = @REPLACE_REMAINDERL@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ +REPLACE_ROUND = @REPLACE_ROUND@ +REPLACE_ROUNDF = @REPLACE_ROUNDF@ +REPLACE_ROUNDL = @REPLACE_ROUNDL@ REPLACE_SELECT = @REPLACE_SELECT@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SETLOCALE = @REPLACE_SETLOCALE@ +REPLACE_SIGNBIT = @REPLACE_SIGNBIT@ +REPLACE_SIGNBIT_USING_GCC = @REPLACE_SIGNBIT_USING_GCC@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ +REPLACE_SQRTL = @REPLACE_SQRTL@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ @@ -1669,6 +1947,9 @@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ +REPLACE_TRUNC = @REPLACE_TRUNC@ +REPLACE_TRUNCF = @REPLACE_TRUNCF@ +REPLACE_TRUNCL = @REPLACE_TRUNCL@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ @@ -1841,7 +2122,10 @@ iconv_open-aix.gperf iconv_open-hpux.gperf \ iconv_open-irix.gperf iconv_open-osf.gperf \ iconv_open-solaris.gperf iconv_open.c ignore-value.h \ - intprops.h iswblank.c \ + intprops.h isinf.c float+.h isnan.c isnand.c float+.h isnan.c \ + isnand-nolibm.h isnand.c float+.h isnan.c isnanf.c float+.h \ + isnan.c isnanf-nolibm.h isnanf.c float+.h isnan.c isnanl.c \ + float+.h isnan.c isnanl-nolibm.h isnanl.c iswblank.c \ $(top_srcdir)/../build-aux/javacomp.sh.in \ $(top_srcdir)/../build-aux/javaexec.sh.in javaversion.class \ javaversion.java langinfo.in.h libcroco/cr-additional-sel.c \ @@ -1876,25 +2160,27 @@ libxml/DOCBparser.in.h libxml/HTMLparser.c \ libxml/HTMLparser.in.h libxml/HTMLtree.c libxml/HTMLtree.in.h \ libxml/SAX.c libxml/SAX.in.h libxml/SAX2.c libxml/SAX2.in.h \ - libxml/c14n.c libxml/c14n.in.h libxml/catalog.c \ - libxml/catalog.in.h libxml/chvalid.c libxml/chvalid.in.h \ - libxml/debugXML.c libxml/debugXML.in.h libxml/dict.c \ - libxml/dict.in.h libxml/elfgcchack.h libxml/encoding.c \ - libxml/encoding.in.h libxml/entities.c libxml/entities.in.h \ - libxml/error.c libxml/globals.c libxml/globals.in.h \ - libxml/hash.c libxml/hash.in.h libxml/legacy.c libxml/libxml.h \ - libxml/list.c libxml/list.in.h libxml/nanoftp.c \ - libxml/nanoftp.in.h libxml/nanohttp.c libxml/nanohttp.in.h \ - libxml/parser.c libxml/parser.in.h libxml/parserInternals.c \ + libxml/buf.c libxml/buf.h libxml/c14n.c libxml/c14n.in.h \ + libxml/catalog.c libxml/catalog.in.h libxml/chvalid.c \ + libxml/chvalid.in.h libxml/debugXML.c libxml/debugXML.in.h \ + libxml/dict.c libxml/dict.in.h libxml/elfgcchack.h \ + libxml/enc.h libxml/encoding.c libxml/encoding.in.h \ + libxml/entities.c libxml/entities.in.h libxml/error.c \ + libxml/globals.c libxml/globals.in.h libxml/hash.c \ + libxml/hash.in.h libxml/legacy.c libxml/libxml.h libxml/list.c \ + libxml/list.in.h libxml/nanoftp.c libxml/nanoftp.in.h \ + libxml/nanohttp.c libxml/nanohttp.in.h libxml/parser.c \ + libxml/parser.in.h libxml/parserInternals.c \ libxml/parserInternals.in.h libxml/pattern.c \ libxml/pattern.in.h libxml/relaxng.c libxml/relaxng.in.h \ - libxml/schemasInternals.in.h libxml/schematron.c \ + libxml/save.h libxml/schemasInternals.in.h libxml/schematron.c \ libxml/schematron.in.h libxml/threads.c libxml/threads.in.h \ - libxml/tree.c libxml/tree.in.h libxml/uri.c libxml/uri.in.h \ - libxml/valid.c libxml/valid.in.h libxml/xinclude.c \ - libxml/xinclude.in.h libxml/xlink.c libxml/xlink.in.h \ - libxml/xmlIO.c libxml/xmlIO.in.h libxml/xmlautomata.in.h \ - libxml/xmlerror.in.h libxml/xmlexports.in.h libxml/xmlmemory.c \ + libxml/timsort.h libxml/tree.c libxml/tree.in.h \ + libxml/trionan.c libxml/uri.c libxml/uri.in.h libxml/valid.c \ + libxml/valid.in.h libxml/xinclude.c libxml/xinclude.in.h \ + libxml/xlink.c libxml/xlink.in.h libxml/xmlIO.c \ + libxml/xmlIO.in.h libxml/xmlautomata.in.h libxml/xmlerror.in.h \ + libxml/xmlexports.in.h libxml/xmlmemory.c \ libxml/xmlmemory.in.h libxml/xmlmodule.c libxml/xmlmodule.in.h \ libxml/xmlreader.c libxml/xmlreader.in.h libxml/xmlregexp.c \ libxml/xmlregexp.in.h libxml/xmlsave.c libxml/xmlsave.in.h \ @@ -1905,10 +2191,10 @@ libxml/xmlwriter.c libxml/xmlwriter.in.h libxml/xpath.c \ libxml/xpath.in.h libxml/xpathInternals.in.h libxml/xpointer.c \ libxml/xpointer.in.h config.charset ref-add.sin ref-del.sin \ - locale.in.h localename.h lstat.c malloc.c malloca.h \ - malloca.valgrind mbchar.h mbrtowc.c mbsinit.c mbsrtowcs-impl.h \ - mbsrtowcs-state.c mbsrtowcs.c str-kmp.h memchr.c \ - memchr.valgrind memmove.c memset.c mkdtemp.c moo.h \ + locale.in.h localename.h log10.c lstat.c malloc.c malloca.h \ + malloca.valgrind math.in.h mbchar.h mbrtowc.c mbsinit.c \ + mbsrtowcs-impl.h mbsrtowcs-state.c mbsrtowcs.c str-kmp.h \ + memchr.c memchr.valgrind memmove.c memset.c mkdtemp.c moo.h \ $(top_srcdir)/../build-aux/moopp msvc-inval.c msvc-inval.h \ msvc-nothrow.c msvc-nothrow.h obstack.c obstack.h open.c \ dirent-private.h opendir.c ostream.h ostream.c ostream.priv.h \ @@ -1931,7 +2217,8 @@ $(top_srcdir)/../build-aux/relocatable.sh.in rmdir.c \ safe-read.h safe-read.c safe-write.h sched.in.h \ secure_getenv.c setenv.c setlocale.c sig-handler.h sigaction.c \ - signal.in.h stdio-write.c sigprocmask.c \ + signal.in.h float+.h signbitd.c signbitf.c signbitl.c \ + stdio-write.c sigprocmask.c \ $(top_srcdir)/../build-aux/snippet/_Noreturn.h \ $(top_srcdir)/../build-aux/snippet/arg-nonnull.h \ $(top_srcdir)/../build-aux/snippet/c++defs.h \ @@ -1989,7 +2276,7 @@ html_styled_ostream.priv.h html_styled_ostream.vt.h $(ICONV_H) \ iconv_open-aix.h iconv_open-hpux.h iconv_open-irix.h \ iconv_open-osf.h iconv_open-solaris.h langinfo.h $(LIBGLIB_H) \ - $(LIBXML_H) locale.h ostream.h ostream.c ostream.priv.h \ + $(LIBXML_H) locale.h math.h ostream.h ostream.c ostream.priv.h \ ostream.vt.h $(SCHED_H) signal.h arg-nonnull.h c++defs.h \ unused-parameter.h warn-on-use.h spawn.h $(STDARG_H) \ $(STDBOOL_H) $(STDDEF_H) $(STDINT_H) stdio.h stdlib.h string.h \ @@ -2026,19 +2313,19 @@ libxml/xmlschemas.h libxml/xmlschemastypes.h \ libxml/xmlstring.h libxml/xmlunicode.h libxml/xmlversion.h \ libxml/xmlwriter.h libxml/xpath.h libxml/xpathInternals.h \ - libxml/xpointer.h libxml/*.h-t locale.h locale.h-t sched.h \ - sched.h-t signal.h signal.h-t arg-nonnull.h arg-nonnull.h-t \ - c++defs.h c++defs.h-t unused-parameter.h unused-parameter.h-t \ - warn-on-use.h warn-on-use.h-t spawn.h spawn.h-t stdarg.h \ - stdarg.h-t stdbool.h stdbool.h-t stddef.h stddef.h-t stdint.h \ - stdint.h-t stdio.h stdio.h-t stdlib.h stdlib.h-t string.h \ - string.h-t sys/select.h sys/select.h-t sys/stat.h sys/stat.h-t \ - sys/time.h sys/time.h-t sys/types.h sys/types.h-t sys/wait.h \ - sys/wait.h-t time.h time.h-t uniconv.h uniconv.h-t unictype.h \ - unictype.h-t unilbrk.h unilbrk.h-t uniname.h uniname.h-t \ - unistd.h unistd.h-t unistr.h unistr.h-t unitypes.h \ - unitypes.h-t uniwidth.h uniwidth.h-t wchar.h wchar.h-t \ - wctype.h wctype.h-t + libxml/xpointer.h libxml/*.h-t locale.h locale.h-t math.h \ + math.h-t sched.h sched.h-t signal.h signal.h-t arg-nonnull.h \ + arg-nonnull.h-t c++defs.h c++defs.h-t unused-parameter.h \ + unused-parameter.h-t warn-on-use.h warn-on-use.h-t spawn.h \ + spawn.h-t stdarg.h stdarg.h-t stdbool.h stdbool.h-t stddef.h \ + stddef.h-t stdint.h stdint.h-t stdio.h stdio.h-t stdlib.h \ + stdlib.h-t string.h string.h-t sys/select.h sys/select.h-t \ + sys/stat.h sys/stat.h-t sys/time.h sys/time.h-t sys/types.h \ + sys/types.h-t sys/wait.h sys/wait.h-t time.h time.h-t \ + uniconv.h uniconv.h-t unictype.h unictype.h-t unilbrk.h \ + unilbrk.h-t uniname.h uniname.h-t unistd.h unistd.h-t unistr.h \ + unistr.h-t unitypes.h unitypes.h-t uniwidth.h uniwidth.h-t \ + wchar.h wchar.h-t wctype.h wctype.h-t MOSTLYCLEANDIRS = sys sys sys CLEANFILES = configmake.h configmake.h-t charset.alias ref-add.sed \ ref-del.sed @@ -2094,9 +2381,9 @@ gl_linkedhash_list.c gl_anyhash_list1.h gl_anyhash_list2.h \ gl_anylinked_list1.h gl_anylinked_list2.h gl_list.h gl_list.c \ localcharset.h localcharset.c localename.c glthread/lock.h \ - glthread/lock.c malloca.c mbchar.c mbiter.h mbiter.c mbslen.c \ - mbsstr.c mbswidth.h mbswidth.c mbuiter.h mbuiter.c minmax.h \ - ostream.c pipe-filter-ii.c pipe-filter-aux.c pipe2.c \ + glthread/lock.c malloca.c math.c mbchar.c mbiter.h mbiter.c \ + mbslen.c mbsstr.c mbswidth.h mbswidth.c mbuiter.h mbuiter.c \ + minmax.h ostream.c pipe-filter-ii.c pipe-filter-aux.c pipe2.c \ pipe2-safer.c progname.h progname.c propername.h propername.c \ qcopy-acl.c qset-acl.c quotearg.c safe-read.c safe-write.c \ sh-quote.h sh-quote.c sig-handler.c size_max.h spawn-pipe.h \ @@ -2126,50 +2413,53 @@ itold.c fnmatch.c fnmatch_loop.c fopen.c fstat.c getdelim.c \ getdtablesize.c getline.c getopt.c getopt1.c gettimeofday.c \ html-ostream.oo.c html-styled-ostream.oo.c iconv.c \ - iconv_close.c iconv_open.c iswblank.c \ - libcroco/cr-additional-sel.c libcroco/cr-attr-sel.c \ - libcroco/cr-cascade.c libcroco/cr-declaration.c \ - libcroco/cr-doc-handler.c libcroco/cr-enc-handler.c \ - libcroco/cr-fonts.c libcroco/cr-input.c libcroco/cr-num.c \ - libcroco/cr-om-parser.c libcroco/cr-parser.c \ - libcroco/cr-parsing-location.c libcroco/cr-prop-list.c \ - libcroco/cr-pseudo.c libcroco/cr-rgb.c libcroco/cr-sel-eng.c \ - libcroco/cr-selector.c libcroco/cr-simple-sel.c \ - libcroco/cr-statement.c libcroco/cr-string.c \ - libcroco/cr-style.c libcroco/cr-stylesheet.c \ - libcroco/cr-term.c libcroco/cr-tknzr.c libcroco/cr-token.c \ - libcroco/cr-utils.c glib/ghash.c glib/glist.c glib/gmessages.c \ - glib/gprimes.c glib/gstrfuncs.c glib/gstring.c \ - libxml/DOCBparser.c libxml/HTMLparser.c libxml/HTMLtree.c \ - libxml/SAX.c libxml/SAX2.c libxml/c14n.c libxml/catalog.c \ + iconv_close.c iconv_open.c isinf.c isnan.c isnand.c isnan.c \ + isnand.c isnan.c isnanf.c isnan.c isnanf.c isnan.c isnanl.c \ + isnan.c isnanl.c iswblank.c libcroco/cr-additional-sel.c \ + libcroco/cr-attr-sel.c libcroco/cr-cascade.c \ + libcroco/cr-declaration.c libcroco/cr-doc-handler.c \ + libcroco/cr-enc-handler.c libcroco/cr-fonts.c \ + libcroco/cr-input.c libcroco/cr-num.c libcroco/cr-om-parser.c \ + libcroco/cr-parser.c libcroco/cr-parsing-location.c \ + libcroco/cr-prop-list.c libcroco/cr-pseudo.c libcroco/cr-rgb.c \ + libcroco/cr-sel-eng.c libcroco/cr-selector.c \ + libcroco/cr-simple-sel.c libcroco/cr-statement.c \ + libcroco/cr-string.c libcroco/cr-style.c \ + libcroco/cr-stylesheet.c libcroco/cr-term.c \ + libcroco/cr-tknzr.c libcroco/cr-token.c libcroco/cr-utils.c \ + glib/ghash.c glib/glist.c glib/gmessages.c glib/gprimes.c \ + glib/gstrfuncs.c glib/gstring.c libxml/DOCBparser.c \ + libxml/HTMLparser.c libxml/HTMLtree.c libxml/SAX.c \ + libxml/SAX2.c libxml/buf.c libxml/c14n.c libxml/catalog.c \ libxml/chvalid.c libxml/debugXML.c libxml/dict.c \ libxml/encoding.c libxml/entities.c libxml/error.c \ libxml/globals.c libxml/hash.c libxml/legacy.c libxml/list.c \ libxml/nanoftp.c libxml/nanohttp.c libxml/parser.c \ libxml/parserInternals.c libxml/pattern.c libxml/relaxng.c \ libxml/schematron.c libxml/threads.c libxml/tree.c \ - libxml/uri.c libxml/valid.c libxml/xinclude.c libxml/xlink.c \ - libxml/xmlIO.c libxml/xmlmemory.c libxml/xmlmodule.c \ - libxml/xmlreader.c libxml/xmlregexp.c libxml/xmlsave.c \ - libxml/xmlschemas.c libxml/xmlschemastypes.c \ + libxml/trionan.c libxml/uri.c libxml/valid.c libxml/xinclude.c \ + libxml/xlink.c libxml/xmlIO.c libxml/xmlmemory.c \ + libxml/xmlmodule.c libxml/xmlreader.c libxml/xmlregexp.c \ + libxml/xmlsave.c libxml/xmlschemas.c libxml/xmlschemastypes.c \ libxml/xmlstring.c libxml/xmlunicode.c libxml/xmlwriter.c \ - libxml/xpath.c libxml/xpointer.c lstat.c malloc.c mbrtowc.c \ - mbsinit.c mbsrtowcs-state.c mbsrtowcs.c memchr.c memmove.c \ - memset.c mkdtemp.c msvc-inval.c msvc-nothrow.c obstack.c \ - open.c opendir.c ostream.oo.c spawni.c \ + libxml/xpath.c libxml/xpointer.c log10.c lstat.c malloc.c \ + mbrtowc.c mbsinit.c mbsrtowcs-state.c mbsrtowcs.c memchr.c \ + memmove.c memset.c mkdtemp.c msvc-inval.c msvc-nothrow.c \ + obstack.c open.c opendir.c ostream.oo.c spawni.c \ spawn_faction_addclose.c spawn_faction_adddup2.c \ spawn_faction_addopen.c spawn_faction_destroy.c \ spawn_faction_init.c spawnattr_destroy.c spawnattr_init.c \ spawnattr_setflags.c spawnattr_setsigmask.c spawnp.c raise.c \ rawmemchr.c read.c readdir.c readlink.c realloc.c progreloc.c \ relocatable.c rmdir.c safe-read.c secure_getenv.c setenv.c \ - setlocale.c sigaction.c stdio-write.c sigprocmask.c snprintf.c \ - stat.c stpcpy.c stpncpy.c strchrnul.c strcspn.c strerror.c \ - strerror-override.c strnlen.c strpbrk.c strstr.c strtol.c \ - strtol.c strtoul.c styled-ostream.oo.c term-ostream.oo.c \ - term-styled-ostream.oo.c tparm.c tputs.c unsetenv.c \ - asnprintf.c printf-args.c printf-parse.c vasnprintf.c \ - asprintf.c vasprintf.c vsnprintf.c waitpid.c wcwidth.c write.c + setlocale.c sigaction.c signbitd.c signbitf.c signbitl.c \ + stdio-write.c sigprocmask.c snprintf.c stat.c stpcpy.c \ + stpncpy.c strchrnul.c strcspn.c strerror.c strerror-override.c \ + strnlen.c strpbrk.c strstr.c strtol.c strtol.c strtoul.c \ + styled-ostream.oo.c term-ostream.oo.c term-styled-ostream.oo.c \ + tparm.c tputs.c unsetenv.c asnprintf.c printf-args.c \ + printf-parse.c vasnprintf.c asprintf.c vasprintf.c vsnprintf.c \ + waitpid.c wcwidth.c write.c # Need $(LTLIBUNISTRING) because ulc_width_linebreaks, uc_width, etc. may be # taken from libunistring, when the configure option --with-libunistring-prefix @@ -2179,10 +2469,12 @@ # Need @LIB_ACL@ because copy-file.c uses acl.h. # As of 2010-10-04, these are all added by gnulib-tool automatically. #libgettextlib_la_LDFLAGS += $(LTLIBUNISTRING) @LTLIBINTL@ @LTLIBICONV@ @LIB_ACL@ -libgettextlib_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(LIB_ACL) \ - $(LTLIBICONV) $(LTLIBINTL) $(LTLIBTHREAD) $(LTLIBUNISTRING) \ - $(OPENMP_CFLAGS) @INTL_MACOSX_LIBS@ -release @VERSION@ \ - $(am__append_3) $(am__append_12) +libgettextlib_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(FABS_LIBM) \ + $(ISNAND_LIBM) $(ISNANF_LIBM) $(ISNANL_LIBM) $(LIB_ACL) \ + $(LOG10_LIBM) $(LTLIBICONV) $(LTLIBINTL) $(LTLIBTHREAD) \ + $(LTLIBUNISTRING) $(OPENMP_CFLAGS) $(POW_LIBM) \ + @INTL_MACOSX_LIBS@ -release @VERSION@ $(am__append_3) \ + $(am__append_12) # Use this preprocessor expression to decide whether #include_next works. # Do not rely on a 'configure'-time test for this, since the expression @@ -2239,11 +2531,14 @@ libxml/HTMLtree.c \ libxml/SAX.c \ libxml/SAX2.c \ + libxml/buf.h \ + libxml/buf.c \ libxml/c14n.c \ libxml/catalog.c \ libxml/chvalid.c \ libxml/debugXML.c \ libxml/dict.c \ + libxml/enc.h \ libxml/encoding.c \ libxml/entities.c \ libxml/error.c \ @@ -2257,9 +2552,12 @@ libxml/parserInternals.c \ libxml/pattern.c \ libxml/relaxng.c \ + libxml/save.h \ libxml/schematron.c \ libxml/threads.c \ + libxml/timsort.h \ libxml/tree.c \ + libxml/trionan.c \ libxml/uri.c \ libxml/valid.c \ libxml/xinclude.c \ @@ -2516,6 +2814,7 @@ libxml/HTMLtree.lo: libxml/$(am__dirstamp) libxml/SAX.lo: libxml/$(am__dirstamp) libxml/SAX2.lo: libxml/$(am__dirstamp) +libxml/buf.lo: libxml/$(am__dirstamp) libxml/c14n.lo: libxml/$(am__dirstamp) libxml/catalog.lo: libxml/$(am__dirstamp) libxml/chvalid.lo: libxml/$(am__dirstamp) @@ -2537,6 +2836,7 @@ libxml/schematron.lo: libxml/$(am__dirstamp) libxml/threads.lo: libxml/$(am__dirstamp) libxml/tree.lo: libxml/$(am__dirstamp) +libxml/trionan.lo: libxml/$(am__dirstamp) libxml/uri.lo: libxml/$(am__dirstamp) libxml/valid.lo: libxml/$(am__dirstamp) libxml/xinclude.lo: libxml/$(am__dirstamp) @@ -2571,6 +2871,7 @@ libxml/libxml_rpl_la-HTMLtree.lo: libxml/$(am__dirstamp) libxml/libxml_rpl_la-SAX.lo: libxml/$(am__dirstamp) libxml/libxml_rpl_la-SAX2.lo: libxml/$(am__dirstamp) +libxml/libxml_rpl_la-buf.lo: libxml/$(am__dirstamp) libxml/libxml_rpl_la-c14n.lo: libxml/$(am__dirstamp) libxml/libxml_rpl_la-catalog.lo: libxml/$(am__dirstamp) libxml/libxml_rpl_la-chvalid.lo: libxml/$(am__dirstamp) @@ -2592,6 +2893,7 @@ libxml/libxml_rpl_la-schematron.lo: libxml/$(am__dirstamp) libxml/libxml_rpl_la-threads.lo: libxml/$(am__dirstamp) libxml/libxml_rpl_la-tree.lo: libxml/$(am__dirstamp) +libxml/libxml_rpl_la-trionan.lo: libxml/$(am__dirstamp) libxml/libxml_rpl_la-uri.lo: libxml/$(am__dirstamp) libxml/libxml_rpl_la-valid.lo: libxml/$(am__dirstamp) libxml/libxml_rpl_la-xinclude.lo: libxml/$(am__dirstamp) @@ -2761,6 +3063,9 @@ libxml/libxml_rpl_la-SAX2.lo: libxml/SAX2.c $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxml_rpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libxml/libxml_rpl_la-SAX2.lo `test -f 'libxml/SAX2.c' || echo '$(srcdir)/'`libxml/SAX2.c +libxml/libxml_rpl_la-buf.lo: libxml/buf.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxml_rpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libxml/libxml_rpl_la-buf.lo `test -f 'libxml/buf.c' || echo '$(srcdir)/'`libxml/buf.c + libxml/libxml_rpl_la-c14n.lo: libxml/c14n.c $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxml_rpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libxml/libxml_rpl_la-c14n.lo `test -f 'libxml/c14n.c' || echo '$(srcdir)/'`libxml/c14n.c @@ -2824,6 +3129,9 @@ libxml/libxml_rpl_la-tree.lo: libxml/tree.c $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxml_rpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libxml/libxml_rpl_la-tree.lo `test -f 'libxml/tree.c' || echo '$(srcdir)/'`libxml/tree.c +libxml/libxml_rpl_la-trionan.lo: libxml/trionan.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxml_rpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libxml/libxml_rpl_la-trionan.lo `test -f 'libxml/trionan.c' || echo '$(srcdir)/'`libxml/trionan.c + libxml/libxml_rpl_la-uri.lo: libxml/uri.c $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxml_rpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libxml/libxml_rpl_la-uri.lo `test -f 'libxml/uri.c' || echo '$(srcdir)/'`libxml/uri.c @@ -3970,6 +4278,280 @@ < $(srcdir)/locale.in.h; \ } > $@-t && \ mv $@-t $@ + +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +math.h: math.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ + sed -e 's|@''GUARD_PREFIX''@|GL|g' \ + -e 's|@''INCLUDE_NEXT_AS_FIRST_DIRECTIVE''@|$(INCLUDE_NEXT_AS_FIRST_DIRECTIVE)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ + -e 's|@''NEXT_AS_FIRST_DIRECTIVE_MATH_H''@|$(NEXT_AS_FIRST_DIRECTIVE_MATH_H)|g' \ + -e 's/@''GNULIB_ACOSF''@/$(GNULIB_ACOSF)/g' \ + -e 's/@''GNULIB_ACOSL''@/$(GNULIB_ACOSL)/g' \ + -e 's/@''GNULIB_ASINF''@/$(GNULIB_ASINF)/g' \ + -e 's/@''GNULIB_ASINL''@/$(GNULIB_ASINL)/g' \ + -e 's/@''GNULIB_ATANF''@/$(GNULIB_ATANF)/g' \ + -e 's/@''GNULIB_ATANL''@/$(GNULIB_ATANL)/g' \ + -e 's/@''GNULIB_ATAN2F''@/$(GNULIB_ATAN2F)/g' \ + -e 's/@''GNULIB_CBRT''@/$(GNULIB_CBRT)/g' \ + -e 's/@''GNULIB_CBRTF''@/$(GNULIB_CBRTF)/g' \ + -e 's/@''GNULIB_CBRTL''@/$(GNULIB_CBRTL)/g' \ + -e 's/@''GNULIB_CEIL''@/$(GNULIB_CEIL)/g' \ + -e 's/@''GNULIB_CEILF''@/$(GNULIB_CEILF)/g' \ + -e 's/@''GNULIB_CEILL''@/$(GNULIB_CEILL)/g' \ + -e 's/@''GNULIB_COPYSIGN''@/$(GNULIB_COPYSIGN)/g' \ + -e 's/@''GNULIB_COPYSIGNF''@/$(GNULIB_COPYSIGNF)/g' \ + -e 's/@''GNULIB_COPYSIGNL''@/$(GNULIB_COPYSIGNL)/g' \ + -e 's/@''GNULIB_COSF''@/$(GNULIB_COSF)/g' \ + -e 's/@''GNULIB_COSL''@/$(GNULIB_COSL)/g' \ + -e 's/@''GNULIB_COSHF''@/$(GNULIB_COSHF)/g' \ + -e 's/@''GNULIB_EXPF''@/$(GNULIB_EXPF)/g' \ + -e 's/@''GNULIB_EXPL''@/$(GNULIB_EXPL)/g' \ + -e 's/@''GNULIB_EXP2''@/$(GNULIB_EXP2)/g' \ + -e 's/@''GNULIB_EXP2F''@/$(GNULIB_EXP2F)/g' \ + -e 's/@''GNULIB_EXP2L''@/$(GNULIB_EXP2L)/g' \ + -e 's/@''GNULIB_EXPM1''@/$(GNULIB_EXPM1)/g' \ + -e 's/@''GNULIB_EXPM1F''@/$(GNULIB_EXPM1F)/g' \ + -e 's/@''GNULIB_EXPM1L''@/$(GNULIB_EXPM1L)/g' \ + -e 's/@''GNULIB_FABSF''@/$(GNULIB_FABSF)/g' \ + -e 's/@''GNULIB_FABSL''@/$(GNULIB_FABSL)/g' \ + -e 's/@''GNULIB_FLOOR''@/$(GNULIB_FLOOR)/g' \ + -e 's/@''GNULIB_FLOORF''@/$(GNULIB_FLOORF)/g' \ + -e 's/@''GNULIB_FLOORL''@/$(GNULIB_FLOORL)/g' \ + -e 's/@''GNULIB_FMA''@/$(GNULIB_FMA)/g' \ + -e 's/@''GNULIB_FMAF''@/$(GNULIB_FMAF)/g' \ + -e 's/@''GNULIB_FMAL''@/$(GNULIB_FMAL)/g' \ + -e 's/@''GNULIB_FMOD''@/$(GNULIB_FMOD)/g' \ + -e 's/@''GNULIB_FMODF''@/$(GNULIB_FMODF)/g' \ + -e 's/@''GNULIB_FMODL''@/$(GNULIB_FMODL)/g' \ + -e 's/@''GNULIB_FREXPF''@/$(GNULIB_FREXPF)/g' \ + -e 's/@''GNULIB_FREXP''@/$(GNULIB_FREXP)/g' \ + -e 's/@''GNULIB_FREXPL''@/$(GNULIB_FREXPL)/g' \ + -e 's/@''GNULIB_HYPOT''@/$(GNULIB_HYPOT)/g' \ + -e 's/@''GNULIB_HYPOTF''@/$(GNULIB_HYPOTF)/g' \ + -e 's/@''GNULIB_HYPOTL''@/$(GNULIB_HYPOTL)/g' \ + < $(srcdir)/math.in.h | \ + sed -e 's/@''GNULIB_ILOGB''@/$(GNULIB_ILOGB)/g' \ + -e 's/@''GNULIB_ILOGBF''@/$(GNULIB_ILOGBF)/g' \ + -e 's/@''GNULIB_ILOGBL''@/$(GNULIB_ILOGBL)/g' \ + -e 's/@''GNULIB_ISFINITE''@/$(GNULIB_ISFINITE)/g' \ + -e 's/@''GNULIB_ISINF''@/$(GNULIB_ISINF)/g' \ + -e 's/@''GNULIB_ISNAN''@/$(GNULIB_ISNAN)/g' \ + -e 's/@''GNULIB_ISNANF''@/$(GNULIB_ISNANF)/g' \ + -e 's/@''GNULIB_ISNAND''@/$(GNULIB_ISNAND)/g' \ + -e 's/@''GNULIB_ISNANL''@/$(GNULIB_ISNANL)/g' \ + -e 's/@''GNULIB_LDEXPF''@/$(GNULIB_LDEXPF)/g' \ + -e 's/@''GNULIB_LDEXPL''@/$(GNULIB_LDEXPL)/g' \ + -e 's/@''GNULIB_LOG''@/$(GNULIB_LOG)/g' \ + -e 's/@''GNULIB_LOGF''@/$(GNULIB_LOGF)/g' \ + -e 's/@''GNULIB_LOGL''@/$(GNULIB_LOGL)/g' \ + -e 's/@''GNULIB_LOG10''@/$(GNULIB_LOG10)/g' \ + -e 's/@''GNULIB_LOG10F''@/$(GNULIB_LOG10F)/g' \ + -e 's/@''GNULIB_LOG10L''@/$(GNULIB_LOG10L)/g' \ + -e 's/@''GNULIB_LOG1P''@/$(GNULIB_LOG1P)/g' \ + -e 's/@''GNULIB_LOG1PF''@/$(GNULIB_LOG1PF)/g' \ + -e 's/@''GNULIB_LOG1PL''@/$(GNULIB_LOG1PL)/g' \ + -e 's/@''GNULIB_LOG2''@/$(GNULIB_LOG2)/g' \ + -e 's/@''GNULIB_LOG2F''@/$(GNULIB_LOG2F)/g' \ + -e 's/@''GNULIB_LOG2L''@/$(GNULIB_LOG2L)/g' \ + -e 's/@''GNULIB_LOGB''@/$(GNULIB_LOGB)/g' \ + -e 's/@''GNULIB_LOGBF''@/$(GNULIB_LOGBF)/g' \ + -e 's/@''GNULIB_LOGBL''@/$(GNULIB_LOGBL)/g' \ + -e 's/@''GNULIB_MODF''@/$(GNULIB_MODF)/g' \ + -e 's/@''GNULIB_MODFF''@/$(GNULIB_MODFF)/g' \ + -e 's/@''GNULIB_MODFL''@/$(GNULIB_MODFL)/g' \ + -e 's/@''GNULIB_POWF''@/$(GNULIB_POWF)/g' \ + -e 's/@''GNULIB_REMAINDER''@/$(GNULIB_REMAINDER)/g' \ + -e 's/@''GNULIB_REMAINDERF''@/$(GNULIB_REMAINDERF)/g' \ + -e 's/@''GNULIB_REMAINDERL''@/$(GNULIB_REMAINDERL)/g' \ + -e 's/@''GNULIB_RINT''@/$(GNULIB_RINT)/g' \ + -e 's/@''GNULIB_RINTF''@/$(GNULIB_RINTF)/g' \ + -e 's/@''GNULIB_RINTL''@/$(GNULIB_RINTL)/g' \ + -e 's/@''GNULIB_ROUND''@/$(GNULIB_ROUND)/g' \ + -e 's/@''GNULIB_ROUNDF''@/$(GNULIB_ROUNDF)/g' \ + -e 's/@''GNULIB_ROUNDL''@/$(GNULIB_ROUNDL)/g' \ + -e 's/@''GNULIB_SIGNBIT''@/$(GNULIB_SIGNBIT)/g' \ + -e 's/@''GNULIB_SINF''@/$(GNULIB_SINF)/g' \ + -e 's/@''GNULIB_SINL''@/$(GNULIB_SINL)/g' \ + -e 's/@''GNULIB_SINHF''@/$(GNULIB_SINHF)/g' \ + -e 's/@''GNULIB_SQRTF''@/$(GNULIB_SQRTF)/g' \ + -e 's/@''GNULIB_SQRTL''@/$(GNULIB_SQRTL)/g' \ + -e 's/@''GNULIB_TANF''@/$(GNULIB_TANF)/g' \ + -e 's/@''GNULIB_TANL''@/$(GNULIB_TANL)/g' \ + -e 's/@''GNULIB_TANHF''@/$(GNULIB_TANHF)/g' \ + -e 's/@''GNULIB_TRUNC''@/$(GNULIB_TRUNC)/g' \ + -e 's/@''GNULIB_TRUNCF''@/$(GNULIB_TRUNCF)/g' \ + -e 's/@''GNULIB_TRUNCL''@/$(GNULIB_TRUNCL)/g' \ + | \ + sed -e 's|@''HAVE_ACOSF''@|$(HAVE_ACOSF)|g' \ + -e 's|@''HAVE_ACOSL''@|$(HAVE_ACOSL)|g' \ + -e 's|@''HAVE_ASINF''@|$(HAVE_ASINF)|g' \ + -e 's|@''HAVE_ASINL''@|$(HAVE_ASINL)|g' \ + -e 's|@''HAVE_ATANF''@|$(HAVE_ATANF)|g' \ + -e 's|@''HAVE_ATANL''@|$(HAVE_ATANL)|g' \ + -e 's|@''HAVE_ATAN2F''@|$(HAVE_ATAN2F)|g' \ + -e 's|@''HAVE_CBRT''@|$(HAVE_CBRT)|g' \ + -e 's|@''HAVE_CBRTF''@|$(HAVE_CBRTF)|g' \ + -e 's|@''HAVE_CBRTL''@|$(HAVE_CBRTL)|g' \ + -e 's|@''HAVE_COPYSIGN''@|$(HAVE_COPYSIGN)|g' \ + -e 's|@''HAVE_COPYSIGNL''@|$(HAVE_COPYSIGNL)|g' \ + -e 's|@''HAVE_COSF''@|$(HAVE_COSF)|g' \ + -e 's|@''HAVE_COSL''@|$(HAVE_COSL)|g' \ + -e 's|@''HAVE_COSHF''@|$(HAVE_COSHF)|g' \ + -e 's|@''HAVE_EXPF''@|$(HAVE_EXPF)|g' \ + -e 's|@''HAVE_EXPL''@|$(HAVE_EXPL)|g' \ + -e 's|@''HAVE_EXPM1''@|$(HAVE_EXPM1)|g' \ + -e 's|@''HAVE_EXPM1F''@|$(HAVE_EXPM1F)|g' \ + -e 's|@''HAVE_FABSF''@|$(HAVE_FABSF)|g' \ + -e 's|@''HAVE_FABSL''@|$(HAVE_FABSL)|g' \ + -e 's|@''HAVE_FMA''@|$(HAVE_FMA)|g' \ + -e 's|@''HAVE_FMAF''@|$(HAVE_FMAF)|g' \ + -e 's|@''HAVE_FMAL''@|$(HAVE_FMAL)|g' \ + -e 's|@''HAVE_FMODF''@|$(HAVE_FMODF)|g' \ + -e 's|@''HAVE_FMODL''@|$(HAVE_FMODL)|g' \ + -e 's|@''HAVE_FREXPF''@|$(HAVE_FREXPF)|g' \ + -e 's|@''HAVE_HYPOTF''@|$(HAVE_HYPOTF)|g' \ + -e 's|@''HAVE_HYPOTL''@|$(HAVE_HYPOTL)|g' \ + -e 's|@''HAVE_ILOGB''@|$(HAVE_ILOGB)|g' \ + -e 's|@''HAVE_ILOGBF''@|$(HAVE_ILOGBF)|g' \ + -e 's|@''HAVE_ILOGBL''@|$(HAVE_ILOGBL)|g' \ + -e 's|@''HAVE_ISNANF''@|$(HAVE_ISNANF)|g' \ + -e 's|@''HAVE_ISNAND''@|$(HAVE_ISNAND)|g' \ + -e 's|@''HAVE_ISNANL''@|$(HAVE_ISNANL)|g' \ + -e 's|@''HAVE_LDEXPF''@|$(HAVE_LDEXPF)|g' \ + -e 's|@''HAVE_LOGF''@|$(HAVE_LOGF)|g' \ + -e 's|@''HAVE_LOGL''@|$(HAVE_LOGL)|g' \ + -e 's|@''HAVE_LOG10F''@|$(HAVE_LOG10F)|g' \ + -e 's|@''HAVE_LOG10L''@|$(HAVE_LOG10L)|g' \ + -e 's|@''HAVE_LOG1P''@|$(HAVE_LOG1P)|g' \ + -e 's|@''HAVE_LOG1PF''@|$(HAVE_LOG1PF)|g' \ + -e 's|@''HAVE_LOG1PL''@|$(HAVE_LOG1PL)|g' \ + -e 's|@''HAVE_LOGBF''@|$(HAVE_LOGBF)|g' \ + -e 's|@''HAVE_LOGBL''@|$(HAVE_LOGBL)|g' \ + -e 's|@''HAVE_MODFF''@|$(HAVE_MODFF)|g' \ + -e 's|@''HAVE_MODFL''@|$(HAVE_MODFL)|g' \ + -e 's|@''HAVE_POWF''@|$(HAVE_POWF)|g' \ + -e 's|@''HAVE_REMAINDER''@|$(HAVE_REMAINDER)|g' \ + -e 's|@''HAVE_REMAINDERF''@|$(HAVE_REMAINDERF)|g' \ + -e 's|@''HAVE_RINT''@|$(HAVE_RINT)|g' \ + -e 's|@''HAVE_RINTL''@|$(HAVE_RINTL)|g' \ + -e 's|@''HAVE_SINF''@|$(HAVE_SINF)|g' \ + -e 's|@''HAVE_SINL''@|$(HAVE_SINL)|g' \ + -e 's|@''HAVE_SINHF''@|$(HAVE_SINHF)|g' \ + -e 's|@''HAVE_SQRTF''@|$(HAVE_SQRTF)|g' \ + -e 's|@''HAVE_SQRTL''@|$(HAVE_SQRTL)|g' \ + -e 's|@''HAVE_TANF''@|$(HAVE_TANF)|g' \ + -e 's|@''HAVE_TANL''@|$(HAVE_TANL)|g' \ + -e 's|@''HAVE_TANHF''@|$(HAVE_TANHF)|g' \ + -e 's|@''HAVE_DECL_ACOSL''@|$(HAVE_DECL_ACOSL)|g' \ + -e 's|@''HAVE_DECL_ASINL''@|$(HAVE_DECL_ASINL)|g' \ + -e 's|@''HAVE_DECL_ATANL''@|$(HAVE_DECL_ATANL)|g' \ + -e 's|@''HAVE_DECL_CBRTF''@|$(HAVE_DECL_CBRTF)|g' \ + -e 's|@''HAVE_DECL_CBRTL''@|$(HAVE_DECL_CBRTL)|g' \ + -e 's|@''HAVE_DECL_CEILF''@|$(HAVE_DECL_CEILF)|g' \ + -e 's|@''HAVE_DECL_CEILL''@|$(HAVE_DECL_CEILL)|g' \ + -e 's|@''HAVE_DECL_COPYSIGNF''@|$(HAVE_DECL_COPYSIGNF)|g' \ + -e 's|@''HAVE_DECL_COSL''@|$(HAVE_DECL_COSL)|g' \ + -e 's|@''HAVE_DECL_EXPL''@|$(HAVE_DECL_EXPL)|g' \ + -e 's|@''HAVE_DECL_EXP2''@|$(HAVE_DECL_EXP2)|g' \ + -e 's|@''HAVE_DECL_EXP2F''@|$(HAVE_DECL_EXP2F)|g' \ + -e 's|@''HAVE_DECL_EXP2L''@|$(HAVE_DECL_EXP2L)|g' \ + -e 's|@''HAVE_DECL_EXPM1L''@|$(HAVE_DECL_EXPM1L)|g' \ + -e 's|@''HAVE_DECL_FLOORF''@|$(HAVE_DECL_FLOORF)|g' \ + -e 's|@''HAVE_DECL_FLOORL''@|$(HAVE_DECL_FLOORL)|g' \ + -e 's|@''HAVE_DECL_FREXPL''@|$(HAVE_DECL_FREXPL)|g' \ + -e 's|@''HAVE_DECL_LDEXPL''@|$(HAVE_DECL_LDEXPL)|g' \ + -e 's|@''HAVE_DECL_LOGL''@|$(HAVE_DECL_LOGL)|g' \ + -e 's|@''HAVE_DECL_LOG10L''@|$(HAVE_DECL_LOG10L)|g' \ + -e 's|@''HAVE_DECL_LOG2''@|$(HAVE_DECL_LOG2)|g' \ + -e 's|@''HAVE_DECL_LOG2F''@|$(HAVE_DECL_LOG2F)|g' \ + -e 's|@''HAVE_DECL_LOG2L''@|$(HAVE_DECL_LOG2L)|g' \ + -e 's|@''HAVE_DECL_LOGB''@|$(HAVE_DECL_LOGB)|g' \ + -e 's|@''HAVE_DECL_REMAINDER''@|$(HAVE_DECL_REMAINDER)|g' \ + -e 's|@''HAVE_DECL_REMAINDERL''@|$(HAVE_DECL_REMAINDERL)|g' \ + -e 's|@''HAVE_DECL_RINTF''@|$(HAVE_DECL_RINTF)|g' \ + -e 's|@''HAVE_DECL_ROUND''@|$(HAVE_DECL_ROUND)|g' \ + -e 's|@''HAVE_DECL_ROUNDF''@|$(HAVE_DECL_ROUNDF)|g' \ + -e 's|@''HAVE_DECL_ROUNDL''@|$(HAVE_DECL_ROUNDL)|g' \ + -e 's|@''HAVE_DECL_SINL''@|$(HAVE_DECL_SINL)|g' \ + -e 's|@''HAVE_DECL_SQRTL''@|$(HAVE_DECL_SQRTL)|g' \ + -e 's|@''HAVE_DECL_TANL''@|$(HAVE_DECL_TANL)|g' \ + -e 's|@''HAVE_DECL_TRUNC''@|$(HAVE_DECL_TRUNC)|g' \ + -e 's|@''HAVE_DECL_TRUNCF''@|$(HAVE_DECL_TRUNCF)|g' \ + -e 's|@''HAVE_DECL_TRUNCL''@|$(HAVE_DECL_TRUNCL)|g' \ + | \ + sed -e 's|@''REPLACE_CBRTF''@|$(REPLACE_CBRTF)|g' \ + -e 's|@''REPLACE_CBRTL''@|$(REPLACE_CBRTL)|g' \ + -e 's|@''REPLACE_CEIL''@|$(REPLACE_CEIL)|g' \ + -e 's|@''REPLACE_CEILF''@|$(REPLACE_CEILF)|g' \ + -e 's|@''REPLACE_CEILL''@|$(REPLACE_CEILL)|g' \ + -e 's|@''REPLACE_EXPM1''@|$(REPLACE_EXPM1)|g' \ + -e 's|@''REPLACE_EXPM1F''@|$(REPLACE_EXPM1F)|g' \ + -e 's|@''REPLACE_EXP2''@|$(REPLACE_EXP2)|g' \ + -e 's|@''REPLACE_EXP2L''@|$(REPLACE_EXP2L)|g' \ + -e 's|@''REPLACE_FABSL''@|$(REPLACE_FABSL)|g' \ + -e 's|@''REPLACE_FLOOR''@|$(REPLACE_FLOOR)|g' \ + -e 's|@''REPLACE_FLOORF''@|$(REPLACE_FLOORF)|g' \ + -e 's|@''REPLACE_FLOORL''@|$(REPLACE_FLOORL)|g' \ + -e 's|@''REPLACE_FMA''@|$(REPLACE_FMA)|g' \ + -e 's|@''REPLACE_FMAF''@|$(REPLACE_FMAF)|g' \ + -e 's|@''REPLACE_FMAL''@|$(REPLACE_FMAL)|g' \ + -e 's|@''REPLACE_FMOD''@|$(REPLACE_FMOD)|g' \ + -e 's|@''REPLACE_FMODF''@|$(REPLACE_FMODF)|g' \ + -e 's|@''REPLACE_FMODL''@|$(REPLACE_FMODL)|g' \ + -e 's|@''REPLACE_FREXPF''@|$(REPLACE_FREXPF)|g' \ + -e 's|@''REPLACE_FREXP''@|$(REPLACE_FREXP)|g' \ + -e 's|@''REPLACE_FREXPL''@|$(REPLACE_FREXPL)|g' \ + -e 's|@''REPLACE_HUGE_VAL''@|$(REPLACE_HUGE_VAL)|g' \ + -e 's|@''REPLACE_HYPOT''@|$(REPLACE_HYPOT)|g' \ + -e 's|@''REPLACE_HYPOTF''@|$(REPLACE_HYPOTF)|g' \ + -e 's|@''REPLACE_HYPOTL''@|$(REPLACE_HYPOTL)|g' \ + -e 's|@''REPLACE_ILOGB''@|$(REPLACE_ILOGB)|g' \ + -e 's|@''REPLACE_ILOGBF''@|$(REPLACE_ILOGBF)|g' \ + -e 's|@''REPLACE_ISFINITE''@|$(REPLACE_ISFINITE)|g' \ + -e 's|@''REPLACE_ISINF''@|$(REPLACE_ISINF)|g' \ + -e 's|@''REPLACE_ISNAN''@|$(REPLACE_ISNAN)|g' \ + -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \ + -e 's|@''REPLACE_LDEXPL''@|$(REPLACE_LDEXPL)|g' \ + -e 's|@''REPLACE_LOG''@|$(REPLACE_LOG)|g' \ + -e 's|@''REPLACE_LOGF''@|$(REPLACE_LOGF)|g' \ + -e 's|@''REPLACE_LOGL''@|$(REPLACE_LOGL)|g' \ + -e 's|@''REPLACE_LOG10''@|$(REPLACE_LOG10)|g' \ + -e 's|@''REPLACE_LOG10F''@|$(REPLACE_LOG10F)|g' \ + -e 's|@''REPLACE_LOG10L''@|$(REPLACE_LOG10L)|g' \ + -e 's|@''REPLACE_LOG1P''@|$(REPLACE_LOG1P)|g' \ + -e 's|@''REPLACE_LOG1PF''@|$(REPLACE_LOG1PF)|g' \ + -e 's|@''REPLACE_LOG1PL''@|$(REPLACE_LOG1PL)|g' \ + -e 's|@''REPLACE_LOG2''@|$(REPLACE_LOG2)|g' \ + -e 's|@''REPLACE_LOG2F''@|$(REPLACE_LOG2F)|g' \ + -e 's|@''REPLACE_LOG2L''@|$(REPLACE_LOG2L)|g' \ + -e 's|@''REPLACE_LOGB''@|$(REPLACE_LOGB)|g' \ + -e 's|@''REPLACE_LOGBF''@|$(REPLACE_LOGBF)|g' \ + -e 's|@''REPLACE_LOGBL''@|$(REPLACE_LOGBL)|g' \ + -e 's|@''REPLACE_MODF''@|$(REPLACE_MODF)|g' \ + -e 's|@''REPLACE_MODFF''@|$(REPLACE_MODFF)|g' \ + -e 's|@''REPLACE_MODFL''@|$(REPLACE_MODFL)|g' \ + -e 's|@''REPLACE_NAN''@|$(REPLACE_NAN)|g' \ + -e 's|@''REPLACE_REMAINDER''@|$(REPLACE_REMAINDER)|g' \ + -e 's|@''REPLACE_REMAINDERF''@|$(REPLACE_REMAINDERF)|g' \ + -e 's|@''REPLACE_REMAINDERL''@|$(REPLACE_REMAINDERL)|g' \ + -e 's|@''REPLACE_ROUND''@|$(REPLACE_ROUND)|g' \ + -e 's|@''REPLACE_ROUNDF''@|$(REPLACE_ROUNDF)|g' \ + -e 's|@''REPLACE_ROUNDL''@|$(REPLACE_ROUNDL)|g' \ + -e 's|@''REPLACE_SIGNBIT''@|$(REPLACE_SIGNBIT)|g' \ + -e 's|@''REPLACE_SIGNBIT_USING_GCC''@|$(REPLACE_SIGNBIT_USING_GCC)|g' \ + -e 's|@''REPLACE_SQRTL''@|$(REPLACE_SQRTL)|g' \ + -e 's|@''REPLACE_TRUNC''@|$(REPLACE_TRUNC)|g' \ + -e 's|@''REPLACE_TRUNCF''@|$(REPLACE_TRUNCF)|g' \ + -e 's|@''REPLACE_TRUNCL''@|$(REPLACE_TRUNCL)|g' \ + -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ + -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ + -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ + } > $@-t && \ + mv $@-t $@ # This is a Makefile rule that generates multiple files at once; see the # automake documentation, node "Multiple Outputs", for details. ostream.h : $(top_srcdir)/../build-aux/moopp ostream.oo.h ostream.oo.c diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/math.c gettext-0.19.7/gettext-tools/gnulib-lib/math.c --- gettext-0.19.6/gettext-tools/gnulib-lib/math.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/math.c 2015-12-27 23:08:31.000000000 +0000 @@ -0,0 +1,4 @@ +#include +#define _GL_MATH_INLINE _GL_EXTERN_INLINE +#include "math.h" +typedef int dummy; diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/math.in.h gettext-0.19.7/gettext-tools/gnulib-lib/math.in.h --- gettext-0.19.6/gettext-tools/gnulib-lib/math.in.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/math.in.h 2015-12-27 23:08:31.000000000 +0000 @@ -0,0 +1,2278 @@ +/* A GNU-like . + + Copyright (C) 2002-2003, 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#ifndef _@GUARD_PREFIX@_MATH_H + +#if __GNUC__ >= 3 +@PRAGMA_SYSTEM_HEADER@ +#endif +@PRAGMA_COLUMNS@ + +/* The include_next requires a split double-inclusion guard. */ +#@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ + +#ifndef _@GUARD_PREFIX@_MATH_H +#define _@GUARD_PREFIX@_MATH_H + +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif +_GL_INLINE_HEADER_BEGIN +#ifndef _GL_MATH_INLINE +# define _GL_MATH_INLINE _GL_INLINE +#endif + +/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ + +/* The definition of _GL_ARG_NONNULL is copied here. */ + +/* The definition of _GL_WARN_ON_USE is copied here. */ + +#ifdef __cplusplus +/* Helper macros to define type-generic function FUNC as overloaded functions, + rather than as macros like in C. POSIX declares these with an argument of + real-floating (that is, one of float, double, or long double). */ +# define _GL_MATH_CXX_REAL_FLOATING_DECL_1(func) \ +static inline int \ +_gl_cxx_ ## func ## f (float f) \ +{ \ + return func (f); \ +} \ +static inline int \ +_gl_cxx_ ## func ## d (double d) \ +{ \ + return func (d); \ +} \ +static inline int \ +_gl_cxx_ ## func ## l (long double l) \ +{ \ + return func (l); \ +} +# define _GL_MATH_CXX_REAL_FLOATING_DECL_2(func) \ +inline int \ +func (float f) \ +{ \ + return _gl_cxx_ ## func ## f (f); \ +} \ +inline int \ +func (double d) \ +{ \ + return _gl_cxx_ ## func ## d (d); \ +} \ +inline int \ +func (long double l) \ +{ \ + return _gl_cxx_ ## func ## l (l); \ +} +#endif + +/* Helper macros to define a portability warning for the + classification macro FUNC called with VALUE. POSIX declares the + classification macros with an argument of real-floating (that is, + one of float, double, or long double). */ +#define _GL_WARN_REAL_FLOATING_DECL(func) \ +_GL_MATH_INLINE int \ +rpl_ ## func ## f (float f) \ +{ \ + return func (f); \ +} \ +_GL_MATH_INLINE int \ +rpl_ ## func ## d (double d) \ +{ \ + return func (d); \ +} \ +_GL_MATH_INLINE int \ +rpl_ ## func ## l (long double l) \ +{ \ + return func (l); \ +} \ +_GL_WARN_ON_USE (rpl_ ## func ## f, #func " is unportable - " \ + "use gnulib module " #func " for portability"); \ +_GL_WARN_ON_USE (rpl_ ## func ## d, #func " is unportable - " \ + "use gnulib module " #func " for portability"); \ +_GL_WARN_ON_USE (rpl_ ## func ## l, #func " is unportable - " \ + "use gnulib module " #func " for portability") +#define _GL_WARN_REAL_FLOATING_IMPL(func, value) \ + (sizeof (value) == sizeof (float) ? rpl_ ## func ## f (value) \ + : sizeof (value) == sizeof (double) ? rpl_ ## func ## d (value) \ + : rpl_ ## func ## l (value)) + + +#if @REPLACE_ITOLD@ +/* Pull in a function that fixes the 'int' to 'long double' conversion + of glibc 2.7. */ +_GL_EXTERN_C void _Qp_itoq (long double *, int); +static void (*_gl_math_fix_itold) (long double *, int) = _Qp_itoq; +#endif + + +/* POSIX allows platforms that don't support NAN. But all major + machines in the past 15 years have supported something close to + IEEE NaN, so we define this unconditionally. We also must define + it on platforms like Solaris 10, where NAN is present but defined + as a function pointer rather than a floating point constant. */ +#if !defined NAN || @REPLACE_NAN@ +# if !GNULIB_defined_NAN +# undef NAN + /* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler + choke on the expression 0.0 / 0.0. */ +# if defined __DECC || defined _MSC_VER +_GL_MATH_INLINE float +_NaN () +{ + static float zero = 0.0f; + return zero / zero; +} +# define NAN (_NaN()) +# else +# define NAN (0.0f / 0.0f) +# endif +# define GNULIB_defined_NAN 1 +# endif +#endif + +/* Solaris 10 defines HUGE_VAL, but as a function pointer rather + than a floating point constant. */ +#if @REPLACE_HUGE_VAL@ +# undef HUGE_VALF +# define HUGE_VALF (1.0f / 0.0f) +# undef HUGE_VAL +# define HUGE_VAL (1.0 / 0.0) +# undef HUGE_VALL +# define HUGE_VALL (1.0L / 0.0L) +#endif + +/* HUGE_VALF is a 'float' Infinity. */ +#ifndef HUGE_VALF +# if defined _MSC_VER +/* The Microsoft MSVC 9 compiler chokes on the expression 1.0f / 0.0f. */ +# define HUGE_VALF (1e25f * 1e25f) +# else +# define HUGE_VALF (1.0f / 0.0f) +# endif +#endif + +/* HUGE_VAL is a 'double' Infinity. */ +#ifndef HUGE_VAL +# if defined _MSC_VER +/* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0. */ +# define HUGE_VAL (1e250 * 1e250) +# else +# define HUGE_VAL (1.0 / 0.0) +# endif +#endif + +/* HUGE_VALL is a 'long double' Infinity. */ +#ifndef HUGE_VALL +# if defined _MSC_VER +/* The Microsoft MSVC 9 compiler chokes on the expression 1.0L / 0.0L. */ +# define HUGE_VALL (1e250L * 1e250L) +# else +# define HUGE_VALL (1.0L / 0.0L) +# endif +#endif + + +/* Ensure FP_ILOGB0 and FP_ILOGBNAN are defined. */ +#if !(defined FP_ILOGB0 && defined FP_ILOGBNAN) +# if defined __NetBSD__ || defined __sgi + /* NetBSD, IRIX 6.5: match what ilogb() does */ +# define FP_ILOGB0 (- 2147483647 - 1) /* INT_MIN */ +# define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */ +# elif defined _AIX + /* AIX 5.1: match what ilogb() does in AIX >= 5.2 */ +# define FP_ILOGB0 (- 2147483647 - 1) /* INT_MIN */ +# define FP_ILOGBNAN 2147483647 /* INT_MAX */ +# elif defined __sun + /* Solaris 9: match what ilogb() does */ +# define FP_ILOGB0 (- 2147483647) /* - INT_MAX */ +# define FP_ILOGBNAN 2147483647 /* INT_MAX */ +# else + /* Gnulib defined values. */ +# define FP_ILOGB0 (- 2147483647) /* - INT_MAX */ +# define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */ +# endif +#endif + + +#if @GNULIB_ACOSF@ +# if !@HAVE_ACOSF@ +# undef acosf +_GL_FUNCDECL_SYS (acosf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (acosf, float, (float x)); +_GL_CXXALIASWARN (acosf); +#elif defined GNULIB_POSIXCHECK +# undef acosf +# if HAVE_RAW_DECL_ACOSF +_GL_WARN_ON_USE (acosf, "acosf is unportable - " + "use gnulib module acosf for portability"); +# endif +#endif + +#if @GNULIB_ACOSL@ +# if !@HAVE_ACOSL@ || !@HAVE_DECL_ACOSL@ +# undef acosl +_GL_FUNCDECL_SYS (acosl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (acosl, long double, (long double x)); +_GL_CXXALIASWARN (acosl); +#elif defined GNULIB_POSIXCHECK +# undef acosl +# if HAVE_RAW_DECL_ACOSL +_GL_WARN_ON_USE (acosl, "acosl is unportable - " + "use gnulib module acosl for portability"); +# endif +#endif + + +#if @GNULIB_ASINF@ +# if !@HAVE_ASINF@ +# undef asinf +_GL_FUNCDECL_SYS (asinf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (asinf, float, (float x)); +_GL_CXXALIASWARN (asinf); +#elif defined GNULIB_POSIXCHECK +# undef asinf +# if HAVE_RAW_DECL_ASINF +_GL_WARN_ON_USE (asinf, "asinf is unportable - " + "use gnulib module asinf for portability"); +# endif +#endif + +#if @GNULIB_ASINL@ +# if !@HAVE_ASINL@ || !@HAVE_DECL_ASINL@ +# undef asinl +_GL_FUNCDECL_SYS (asinl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (asinl, long double, (long double x)); +_GL_CXXALIASWARN (asinl); +#elif defined GNULIB_POSIXCHECK +# undef asinl +# if HAVE_RAW_DECL_ASINL +_GL_WARN_ON_USE (asinl, "asinl is unportable - " + "use gnulib module asinl for portability"); +# endif +#endif + + +#if @GNULIB_ATANF@ +# if !@HAVE_ATANF@ +# undef atanf +_GL_FUNCDECL_SYS (atanf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (atanf, float, (float x)); +_GL_CXXALIASWARN (atanf); +#elif defined GNULIB_POSIXCHECK +# undef atanf +# if HAVE_RAW_DECL_ATANF +_GL_WARN_ON_USE (atanf, "atanf is unportable - " + "use gnulib module atanf for portability"); +# endif +#endif + +#if @GNULIB_ATANL@ +# if !@HAVE_ATANL@ || !@HAVE_DECL_ATANL@ +# undef atanl +_GL_FUNCDECL_SYS (atanl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (atanl, long double, (long double x)); +_GL_CXXALIASWARN (atanl); +#elif defined GNULIB_POSIXCHECK +# undef atanl +# if HAVE_RAW_DECL_ATANL +_GL_WARN_ON_USE (atanl, "atanl is unportable - " + "use gnulib module atanl for portability"); +# endif +#endif + + +#if @GNULIB_ATAN2F@ +# if !@HAVE_ATAN2F@ +# undef atan2f +_GL_FUNCDECL_SYS (atan2f, float, (float y, float x)); +# endif +_GL_CXXALIAS_SYS (atan2f, float, (float y, float x)); +_GL_CXXALIASWARN (atan2f); +#elif defined GNULIB_POSIXCHECK +# undef atan2f +# if HAVE_RAW_DECL_ATAN2F +_GL_WARN_ON_USE (atan2f, "atan2f is unportable - " + "use gnulib module atan2f for portability"); +# endif +#endif + + +#if @GNULIB_CBRTF@ +# if @REPLACE_CBRTF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef cbrtf +# define cbrtf rpl_cbrtf +# endif +_GL_FUNCDECL_RPL (cbrtf, float, (float x)); +_GL_CXXALIAS_RPL (cbrtf, float, (float x)); +# else +# if !@HAVE_DECL_CBRTF@ +_GL_FUNCDECL_SYS (cbrtf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (cbrtf, float, (float x)); +# endif +_GL_CXXALIASWARN (cbrtf); +#elif defined GNULIB_POSIXCHECK +# undef cbrtf +# if HAVE_RAW_DECL_CBRTF +_GL_WARN_ON_USE (cbrtf, "cbrtf is unportable - " + "use gnulib module cbrtf for portability"); +# endif +#endif + +#if @GNULIB_CBRT@ +# if !@HAVE_CBRT@ +_GL_FUNCDECL_SYS (cbrt, double, (double x)); +# endif +_GL_CXXALIAS_SYS (cbrt, double, (double x)); +_GL_CXXALIASWARN (cbrt); +#elif defined GNULIB_POSIXCHECK +# undef cbrt +# if HAVE_RAW_DECL_CBRT +_GL_WARN_ON_USE (cbrt, "cbrt is unportable - " + "use gnulib module cbrt for portability"); +# endif +#endif + +#if @GNULIB_CBRTL@ +# if @REPLACE_CBRTL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef cbrtl +# define cbrtl rpl_cbrtl +# endif +_GL_FUNCDECL_RPL (cbrtl, long double, (long double x)); +_GL_CXXALIAS_RPL (cbrtl, long double, (long double x)); +# else +# if !@HAVE_DECL_CBRTL@ +_GL_FUNCDECL_SYS (cbrtl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (cbrtl, long double, (long double x)); +# endif +_GL_CXXALIASWARN (cbrtl); +#elif defined GNULIB_POSIXCHECK +# undef cbrtl +# if HAVE_RAW_DECL_CBRTL +_GL_WARN_ON_USE (cbrtl, "cbrtl is unportable - " + "use gnulib module cbrtl for portability"); +# endif +#endif + + +#if @GNULIB_CEILF@ +# if @REPLACE_CEILF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef ceilf +# define ceilf rpl_ceilf +# endif +_GL_FUNCDECL_RPL (ceilf, float, (float x)); +_GL_CXXALIAS_RPL (ceilf, float, (float x)); +# else +# if !@HAVE_DECL_CEILF@ +# undef ceilf +_GL_FUNCDECL_SYS (ceilf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (ceilf, float, (float x)); +# endif +_GL_CXXALIASWARN (ceilf); +#elif defined GNULIB_POSIXCHECK +# undef ceilf +# if HAVE_RAW_DECL_CEILF +_GL_WARN_ON_USE (ceilf, "ceilf is unportable - " + "use gnulib module ceilf for portability"); +# endif +#endif + +#if @GNULIB_CEIL@ +# if @REPLACE_CEIL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# define ceil rpl_ceil +# endif +_GL_FUNCDECL_RPL (ceil, double, (double x)); +_GL_CXXALIAS_RPL (ceil, double, (double x)); +# else +_GL_CXXALIAS_SYS (ceil, double, (double x)); +# endif +_GL_CXXALIASWARN (ceil); +#endif + +#if @GNULIB_CEILL@ +# if @REPLACE_CEILL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef ceill +# define ceill rpl_ceill +# endif +_GL_FUNCDECL_RPL (ceill, long double, (long double x)); +_GL_CXXALIAS_RPL (ceill, long double, (long double x)); +# else +# if !@HAVE_DECL_CEILL@ +# undef ceill +_GL_FUNCDECL_SYS (ceill, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (ceill, long double, (long double x)); +# endif +_GL_CXXALIASWARN (ceill); +#elif defined GNULIB_POSIXCHECK +# undef ceill +# if HAVE_RAW_DECL_CEILL +_GL_WARN_ON_USE (ceill, "ceill is unportable - " + "use gnulib module ceill for portability"); +# endif +#endif + + +#if @GNULIB_COPYSIGNF@ +# if !@HAVE_DECL_COPYSIGNF@ +_GL_FUNCDECL_SYS (copysignf, float, (float x, float y)); +# endif +_GL_CXXALIAS_SYS (copysignf, float, (float x, float y)); +_GL_CXXALIASWARN (copysignf); +#elif defined GNULIB_POSIXCHECK +# undef copysignf +# if HAVE_RAW_DECL_COPYSIGNF +_GL_WARN_ON_USE (copysignf, "copysignf is unportable - " + "use gnulib module copysignf for portability"); +# endif +#endif + +#if @GNULIB_COPYSIGN@ +# if !@HAVE_COPYSIGN@ +_GL_FUNCDECL_SYS (copysign, double, (double x, double y)); +# endif +_GL_CXXALIAS_SYS (copysign, double, (double x, double y)); +_GL_CXXALIASWARN (copysign); +#elif defined GNULIB_POSIXCHECK +# undef copysign +# if HAVE_RAW_DECL_COPYSIGN +_GL_WARN_ON_USE (copysign, "copysign is unportable - " + "use gnulib module copysign for portability"); +# endif +#endif + +#if @GNULIB_COPYSIGNL@ +# if !@HAVE_COPYSIGNL@ +_GL_FUNCDECL_SYS (copysignl, long double, (long double x, long double y)); +# endif +_GL_CXXALIAS_SYS (copysignl, long double, (long double x, long double y)); +_GL_CXXALIASWARN (copysignl); +#elif defined GNULIB_POSIXCHECK +# undef copysignl +# if HAVE_RAW_DECL_COPYSIGNL +_GL_WARN_ON_USE (copysign, "copysignl is unportable - " + "use gnulib module copysignl for portability"); +# endif +#endif + + +#if @GNULIB_COSF@ +# if !@HAVE_COSF@ +# undef cosf +_GL_FUNCDECL_SYS (cosf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (cosf, float, (float x)); +_GL_CXXALIASWARN (cosf); +#elif defined GNULIB_POSIXCHECK +# undef cosf +# if HAVE_RAW_DECL_COSF +_GL_WARN_ON_USE (cosf, "cosf is unportable - " + "use gnulib module cosf for portability"); +# endif +#endif + +#if @GNULIB_COSL@ +# if !@HAVE_COSL@ || !@HAVE_DECL_COSL@ +# undef cosl +_GL_FUNCDECL_SYS (cosl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (cosl, long double, (long double x)); +_GL_CXXALIASWARN (cosl); +#elif defined GNULIB_POSIXCHECK +# undef cosl +# if HAVE_RAW_DECL_COSL +_GL_WARN_ON_USE (cosl, "cosl is unportable - " + "use gnulib module cosl for portability"); +# endif +#endif + + +#if @GNULIB_COSHF@ +# if !@HAVE_COSHF@ +# undef coshf +_GL_FUNCDECL_SYS (coshf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (coshf, float, (float x)); +_GL_CXXALIASWARN (coshf); +#elif defined GNULIB_POSIXCHECK +# undef coshf +# if HAVE_RAW_DECL_COSHF +_GL_WARN_ON_USE (coshf, "coshf is unportable - " + "use gnulib module coshf for portability"); +# endif +#endif + + +#if @GNULIB_EXPF@ +# if !@HAVE_EXPF@ +# undef expf +_GL_FUNCDECL_SYS (expf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (expf, float, (float x)); +_GL_CXXALIASWARN (expf); +#elif defined GNULIB_POSIXCHECK +# undef expf +# if HAVE_RAW_DECL_EXPF +_GL_WARN_ON_USE (expf, "expf is unportable - " + "use gnulib module expf for portability"); +# endif +#endif + +#if @GNULIB_EXPL@ +# if !@HAVE_EXPL@ || !@HAVE_DECL_EXPL@ +# undef expl +_GL_FUNCDECL_SYS (expl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (expl, long double, (long double x)); +_GL_CXXALIASWARN (expl); +#elif defined GNULIB_POSIXCHECK +# undef expl +# if HAVE_RAW_DECL_EXPL +_GL_WARN_ON_USE (expl, "expl is unportable - " + "use gnulib module expl for portability"); +# endif +#endif + + +#if @GNULIB_EXP2F@ +# if !@HAVE_DECL_EXP2F@ +_GL_FUNCDECL_SYS (exp2f, float, (float x)); +# endif +_GL_CXXALIAS_SYS (exp2f, float, (float x)); +_GL_CXXALIASWARN (exp2f); +#elif defined GNULIB_POSIXCHECK +# undef exp2f +# if HAVE_RAW_DECL_EXP2F +_GL_WARN_ON_USE (exp2f, "exp2f is unportable - " + "use gnulib module exp2f for portability"); +# endif +#endif + +#if @GNULIB_EXP2@ +# if @REPLACE_EXP2@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef exp2 +# define exp2 rpl_exp2 +# endif +_GL_FUNCDECL_RPL (exp2, double, (double x)); +_GL_CXXALIAS_RPL (exp2, double, (double x)); +# else +# if !@HAVE_DECL_EXP2@ +_GL_FUNCDECL_SYS (exp2, double, (double x)); +# endif +_GL_CXXALIAS_SYS (exp2, double, (double x)); +# endif +_GL_CXXALIASWARN (exp2); +#elif defined GNULIB_POSIXCHECK +# undef exp2 +# if HAVE_RAW_DECL_EXP2 +_GL_WARN_ON_USE (exp2, "exp2 is unportable - " + "use gnulib module exp2 for portability"); +# endif +#endif + +#if @GNULIB_EXP2L@ +# if @REPLACE_EXP2L@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef exp2l +# define exp2l rpl_exp2l +# endif +_GL_FUNCDECL_RPL (exp2l, long double, (long double x)); +_GL_CXXALIAS_RPL (exp2l, long double, (long double x)); +# else +# if !@HAVE_DECL_EXP2L@ +# undef exp2l +_GL_FUNCDECL_SYS (exp2l, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (exp2l, long double, (long double x)); +# endif +_GL_CXXALIASWARN (exp2l); +#elif defined GNULIB_POSIXCHECK +# undef exp2l +# if HAVE_RAW_DECL_EXP2L +_GL_WARN_ON_USE (exp2l, "exp2l is unportable - " + "use gnulib module exp2l for portability"); +# endif +#endif + + +#if @GNULIB_EXPM1F@ +# if @REPLACE_EXPM1F@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef expm1f +# define expm1f rpl_expm1f +# endif +_GL_FUNCDECL_RPL (expm1f, float, (float x)); +_GL_CXXALIAS_RPL (expm1f, float, (float x)); +# else +# if !@HAVE_EXPM1F@ +_GL_FUNCDECL_SYS (expm1f, float, (float x)); +# endif +_GL_CXXALIAS_SYS (expm1f, float, (float x)); +# endif +_GL_CXXALIASWARN (expm1f); +#elif defined GNULIB_POSIXCHECK +# undef expm1f +# if HAVE_RAW_DECL_EXPM1F +_GL_WARN_ON_USE (expm1f, "expm1f is unportable - " + "use gnulib module expm1f for portability"); +# endif +#endif + +#if @GNULIB_EXPM1@ +# if @REPLACE_EXPM1@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef expm1 +# define expm1 rpl_expm1 +# endif +_GL_FUNCDECL_RPL (expm1, double, (double x)); +_GL_CXXALIAS_RPL (expm1, double, (double x)); +# else +# if !@HAVE_EXPM1@ +_GL_FUNCDECL_SYS (expm1, double, (double x)); +# endif +_GL_CXXALIAS_SYS (expm1, double, (double x)); +# endif +_GL_CXXALIASWARN (expm1); +#elif defined GNULIB_POSIXCHECK +# undef expm1 +# if HAVE_RAW_DECL_EXPM1 +_GL_WARN_ON_USE (expm1, "expm1 is unportable - " + "use gnulib module expm1 for portability"); +# endif +#endif + +#if @GNULIB_EXPM1L@ +# if !@HAVE_DECL_EXPM1L@ +# undef expm1l +_GL_FUNCDECL_SYS (expm1l, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (expm1l, long double, (long double x)); +_GL_CXXALIASWARN (expm1l); +#elif defined GNULIB_POSIXCHECK +# undef expm1l +# if HAVE_RAW_DECL_EXPM1L +_GL_WARN_ON_USE (expm1l, "expm1l is unportable - " + "use gnulib module expm1l for portability"); +# endif +#endif + + +#if @GNULIB_FABSF@ +# if !@HAVE_FABSF@ +# undef fabsf +_GL_FUNCDECL_SYS (fabsf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (fabsf, float, (float x)); +_GL_CXXALIASWARN (fabsf); +#elif defined GNULIB_POSIXCHECK +# undef fabsf +# if HAVE_RAW_DECL_FABSF +_GL_WARN_ON_USE (fabsf, "fabsf is unportable - " + "use gnulib module fabsf for portability"); +# endif +#endif + +#if @GNULIB_FABSL@ +# if @REPLACE_FABSL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef fabsl +# define fabsl rpl_fabsl +# endif +_GL_FUNCDECL_RPL (fabsl, long double, (long double x)); +_GL_CXXALIAS_RPL (fabsl, long double, (long double x)); +# else +# if !@HAVE_FABSL@ +# undef fabsl +_GL_FUNCDECL_SYS (fabsl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (fabsl, long double, (long double x)); +# endif +_GL_CXXALIASWARN (fabsl); +#elif defined GNULIB_POSIXCHECK +# undef fabsl +# if HAVE_RAW_DECL_FABSL +_GL_WARN_ON_USE (fabsl, "fabsl is unportable - " + "use gnulib module fabsl for portability"); +# endif +#endif + + +#if @GNULIB_FLOORF@ +# if @REPLACE_FLOORF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef floorf +# define floorf rpl_floorf +# endif +_GL_FUNCDECL_RPL (floorf, float, (float x)); +_GL_CXXALIAS_RPL (floorf, float, (float x)); +# else +# if !@HAVE_DECL_FLOORF@ +# undef floorf +_GL_FUNCDECL_SYS (floorf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (floorf, float, (float x)); +# endif +_GL_CXXALIASWARN (floorf); +#elif defined GNULIB_POSIXCHECK +# undef floorf +# if HAVE_RAW_DECL_FLOORF +_GL_WARN_ON_USE (floorf, "floorf is unportable - " + "use gnulib module floorf for portability"); +# endif +#endif + +#if @GNULIB_FLOOR@ +# if @REPLACE_FLOOR@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# define floor rpl_floor +# endif +_GL_FUNCDECL_RPL (floor, double, (double x)); +_GL_CXXALIAS_RPL (floor, double, (double x)); +# else +_GL_CXXALIAS_SYS (floor, double, (double x)); +# endif +_GL_CXXALIASWARN (floor); +#endif + +#if @GNULIB_FLOORL@ +# if @REPLACE_FLOORL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef floorl +# define floorl rpl_floorl +# endif +_GL_FUNCDECL_RPL (floorl, long double, (long double x)); +_GL_CXXALIAS_RPL (floorl, long double, (long double x)); +# else +# if !@HAVE_DECL_FLOORL@ +# undef floorl +_GL_FUNCDECL_SYS (floorl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (floorl, long double, (long double x)); +# endif +_GL_CXXALIASWARN (floorl); +#elif defined GNULIB_POSIXCHECK +# undef floorl +# if HAVE_RAW_DECL_FLOORL +_GL_WARN_ON_USE (floorl, "floorl is unportable - " + "use gnulib module floorl for portability"); +# endif +#endif + + +#if @GNULIB_FMAF@ +# if @REPLACE_FMAF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef fmaf +# define fmaf rpl_fmaf +# endif +_GL_FUNCDECL_RPL (fmaf, float, (float x, float y, float z)); +_GL_CXXALIAS_RPL (fmaf, float, (float x, float y, float z)); +# else +# if !@HAVE_FMAF@ +_GL_FUNCDECL_SYS (fmaf, float, (float x, float y, float z)); +# endif +_GL_CXXALIAS_SYS (fmaf, float, (float x, float y, float z)); +# endif +_GL_CXXALIASWARN (fmaf); +#elif defined GNULIB_POSIXCHECK +# undef fmaf +# if HAVE_RAW_DECL_FMAF +_GL_WARN_ON_USE (fmaf, "fmaf is unportable - " + "use gnulib module fmaf for portability"); +# endif +#endif + +#if @GNULIB_FMA@ +# if @REPLACE_FMA@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef fma +# define fma rpl_fma +# endif +_GL_FUNCDECL_RPL (fma, double, (double x, double y, double z)); +_GL_CXXALIAS_RPL (fma, double, (double x, double y, double z)); +# else +# if !@HAVE_FMA@ +_GL_FUNCDECL_SYS (fma, double, (double x, double y, double z)); +# endif +_GL_CXXALIAS_SYS (fma, double, (double x, double y, double z)); +# endif +_GL_CXXALIASWARN (fma); +#elif defined GNULIB_POSIXCHECK +# undef fma +# if HAVE_RAW_DECL_FMA +_GL_WARN_ON_USE (fma, "fma is unportable - " + "use gnulib module fma for portability"); +# endif +#endif + +#if @GNULIB_FMAL@ +# if @REPLACE_FMAL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef fmal +# define fmal rpl_fmal +# endif +_GL_FUNCDECL_RPL (fmal, long double, + (long double x, long double y, long double z)); +_GL_CXXALIAS_RPL (fmal, long double, + (long double x, long double y, long double z)); +# else +# if !@HAVE_FMAL@ +# undef fmal +_GL_FUNCDECL_SYS (fmal, long double, + (long double x, long double y, long double z)); +# endif +_GL_CXXALIAS_SYS (fmal, long double, + (long double x, long double y, long double z)); +# endif +_GL_CXXALIASWARN (fmal); +#elif defined GNULIB_POSIXCHECK +# undef fmal +# if HAVE_RAW_DECL_FMAL +_GL_WARN_ON_USE (fmal, "fmal is unportable - " + "use gnulib module fmal for portability"); +# endif +#endif + + +#if @GNULIB_FMODF@ +# if @REPLACE_FMODF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef fmodf +# define fmodf rpl_fmodf +# endif +_GL_FUNCDECL_RPL (fmodf, float, (float x, float y)); +_GL_CXXALIAS_RPL (fmodf, float, (float x, float y)); +# else +# if !@HAVE_FMODF@ +# undef fmodf +_GL_FUNCDECL_SYS (fmodf, float, (float x, float y)); +# endif +_GL_CXXALIAS_SYS (fmodf, float, (float x, float y)); +# endif +_GL_CXXALIASWARN (fmodf); +#elif defined GNULIB_POSIXCHECK +# undef fmodf +# if HAVE_RAW_DECL_FMODF +_GL_WARN_ON_USE (fmodf, "fmodf is unportable - " + "use gnulib module fmodf for portability"); +# endif +#endif + +#if @GNULIB_FMOD@ +# if @REPLACE_FMOD@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef fmod +# define fmod rpl_fmod +# endif +_GL_FUNCDECL_RPL (fmod, double, (double x, double y)); +_GL_CXXALIAS_RPL (fmod, double, (double x, double y)); +# else +_GL_CXXALIAS_SYS (fmod, double, (double x, double y)); +# endif +_GL_CXXALIASWARN (fmod); +#elif defined GNULIB_POSIXCHECK +# undef fmod +# if HAVE_RAW_DECL_FMOD +_GL_WARN_ON_USE (fmod, "fmod has portability problems - " + "use gnulib module fmod for portability"); +# endif +#endif + +#if @GNULIB_FMODL@ +# if @REPLACE_FMODL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef fmodl +# define fmodl rpl_fmodl +# endif +_GL_FUNCDECL_RPL (fmodl, long double, (long double x, long double y)); +_GL_CXXALIAS_RPL (fmodl, long double, (long double x, long double y)); +# else +# if !@HAVE_FMODL@ +# undef fmodl +_GL_FUNCDECL_SYS (fmodl, long double, (long double x, long double y)); +# endif +_GL_CXXALIAS_SYS (fmodl, long double, (long double x, long double y)); +# endif +_GL_CXXALIASWARN (fmodl); +#elif defined GNULIB_POSIXCHECK +# undef fmodl +# if HAVE_RAW_DECL_FMODL +_GL_WARN_ON_USE (fmodl, "fmodl is unportable - " + "use gnulib module fmodl for portability"); +# endif +#endif + + +/* Write x as + x = mantissa * 2^exp + where + If x finite and nonzero: 0.5 <= |mantissa| < 1.0. + If x is zero: mantissa = x, exp = 0. + If x is infinite or NaN: mantissa = x, exp unspecified. + Store exp in *EXPPTR and return mantissa. */ +#if @GNULIB_FREXPF@ +# if @REPLACE_FREXPF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef frexpf +# define frexpf rpl_frexpf +# endif +_GL_FUNCDECL_RPL (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2))); +_GL_CXXALIAS_RPL (frexpf, float, (float x, int *expptr)); +# else +# if !@HAVE_FREXPF@ +# undef frexpf +_GL_FUNCDECL_SYS (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2))); +# endif +_GL_CXXALIAS_SYS (frexpf, float, (float x, int *expptr)); +# endif +_GL_CXXALIASWARN (frexpf); +#elif defined GNULIB_POSIXCHECK +# undef frexpf +# if HAVE_RAW_DECL_FREXPF +_GL_WARN_ON_USE (frexpf, "frexpf is unportable - " + "use gnulib module frexpf for portability"); +# endif +#endif + +/* Write x as + x = mantissa * 2^exp + where + If x finite and nonzero: 0.5 <= |mantissa| < 1.0. + If x is zero: mantissa = x, exp = 0. + If x is infinite or NaN: mantissa = x, exp unspecified. + Store exp in *EXPPTR and return mantissa. */ +#if @GNULIB_FREXP@ +# if @REPLACE_FREXP@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# define frexp rpl_frexp +# endif +_GL_FUNCDECL_RPL (frexp, double, (double x, int *expptr) _GL_ARG_NONNULL ((2))); +_GL_CXXALIAS_RPL (frexp, double, (double x, int *expptr)); +# else +_GL_CXXALIAS_SYS (frexp, double, (double x, int *expptr)); +# endif +_GL_CXXALIASWARN (frexp); +#elif defined GNULIB_POSIXCHECK +# undef frexp +/* Assume frexp is always declared. */ +_GL_WARN_ON_USE (frexp, "frexp is unportable - " + "use gnulib module frexp for portability"); +#endif + +/* Write x as + x = mantissa * 2^exp + where + If x finite and nonzero: 0.5 <= |mantissa| < 1.0. + If x is zero: mantissa = x, exp = 0. + If x is infinite or NaN: mantissa = x, exp unspecified. + Store exp in *EXPPTR and return mantissa. */ +#if @GNULIB_FREXPL@ && @REPLACE_FREXPL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef frexpl +# define frexpl rpl_frexpl +# endif +_GL_FUNCDECL_RPL (frexpl, long double, + (long double x, int *expptr) _GL_ARG_NONNULL ((2))); +_GL_CXXALIAS_RPL (frexpl, long double, (long double x, int *expptr)); +#else +# if !@HAVE_DECL_FREXPL@ +_GL_FUNCDECL_SYS (frexpl, long double, + (long double x, int *expptr) _GL_ARG_NONNULL ((2))); +# endif +# if @GNULIB_FREXPL@ +_GL_CXXALIAS_SYS (frexpl, long double, (long double x, int *expptr)); +# endif +#endif +#if @GNULIB_FREXPL@ && !(@REPLACE_FREXPL@ && !@HAVE_DECL_FREXPL@) +_GL_CXXALIASWARN (frexpl); +#endif +#if !@GNULIB_FREXPL@ && defined GNULIB_POSIXCHECK +# undef frexpl +# if HAVE_RAW_DECL_FREXPL +_GL_WARN_ON_USE (frexpl, "frexpl is unportable - " + "use gnulib module frexpl for portability"); +# endif +#endif + + +/* Return sqrt(x^2+y^2). */ +#if @GNULIB_HYPOTF@ +# if @REPLACE_HYPOTF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef hypotf +# define hypotf rpl_hypotf +# endif +_GL_FUNCDECL_RPL (hypotf, float, (float x, float y)); +_GL_CXXALIAS_RPL (hypotf, float, (float x, float y)); +# else +# if !@HAVE_HYPOTF@ +_GL_FUNCDECL_SYS (hypotf, float, (float x, float y)); +# endif +_GL_CXXALIAS_SYS (hypotf, float, (float x, float y)); +# endif +_GL_CXXALIASWARN (hypotf); +#elif defined GNULIB_POSIXCHECK +# undef hypotf +# if HAVE_RAW_DECL_HYPOTF +_GL_WARN_ON_USE (hypotf, "hypotf is unportable - " + "use gnulib module hypotf for portability"); +# endif +#endif + +/* Return sqrt(x^2+y^2). */ +#if @GNULIB_HYPOT@ +# if @REPLACE_HYPOT@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef hypot +# define hypot rpl_hypot +# endif +_GL_FUNCDECL_RPL (hypot, double, (double x, double y)); +_GL_CXXALIAS_RPL (hypot, double, (double x, double y)); +# else +_GL_CXXALIAS_SYS (hypot, double, (double x, double y)); +# endif +_GL_CXXALIASWARN (hypot); +#elif defined GNULIB_POSIXCHECK +# undef hypot +# if HAVE_RAW_DECL_HYPOT +_GL_WARN_ON_USE (hypotf, "hypot has portability problems - " + "use gnulib module hypot for portability"); +# endif +#endif + +/* Return sqrt(x^2+y^2). */ +#if @GNULIB_HYPOTL@ +# if @REPLACE_HYPOTL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef hypotl +# define hypotl rpl_hypotl +# endif +_GL_FUNCDECL_RPL (hypotl, long double, (long double x, long double y)); +_GL_CXXALIAS_RPL (hypotl, long double, (long double x, long double y)); +# else +# if !@HAVE_HYPOTL@ +_GL_FUNCDECL_SYS (hypotl, long double, (long double x, long double y)); +# endif +_GL_CXXALIAS_SYS (hypotl, long double, (long double x, long double y)); +# endif +_GL_CXXALIASWARN (hypotl); +#elif defined GNULIB_POSIXCHECK +# undef hypotl +# if HAVE_RAW_DECL_HYPOTL +_GL_WARN_ON_USE (hypotl, "hypotl is unportable - " + "use gnulib module hypotl for portability"); +# endif +#endif + + +#if @GNULIB_ILOGBF@ +# if @REPLACE_ILOGBF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef ilogbf +# define ilogbf rpl_ilogbf +# endif +_GL_FUNCDECL_RPL (ilogbf, int, (float x)); +_GL_CXXALIAS_RPL (ilogbf, int, (float x)); +# else +# if !@HAVE_ILOGBF@ +_GL_FUNCDECL_SYS (ilogbf, int, (float x)); +# endif +_GL_CXXALIAS_SYS (ilogbf, int, (float x)); +# endif +_GL_CXXALIASWARN (ilogbf); +#elif defined GNULIB_POSIXCHECK +# undef ilogbf +# if HAVE_RAW_DECL_ILOGBF +_GL_WARN_ON_USE (ilogbf, "ilogbf is unportable - " + "use gnulib module ilogbf for portability"); +# endif +#endif + +#if @GNULIB_ILOGB@ +# if @REPLACE_ILOGB@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef ilogb +# define ilogb rpl_ilogb +# endif +_GL_FUNCDECL_RPL (ilogb, int, (double x)); +_GL_CXXALIAS_RPL (ilogb, int, (double x)); +# else +# if !@HAVE_ILOGB@ +_GL_FUNCDECL_SYS (ilogb, int, (double x)); +# endif +_GL_CXXALIAS_SYS (ilogb, int, (double x)); +# endif +_GL_CXXALIASWARN (ilogb); +#elif defined GNULIB_POSIXCHECK +# undef ilogb +# if HAVE_RAW_DECL_ILOGB +_GL_WARN_ON_USE (ilogb, "ilogb is unportable - " + "use gnulib module ilogb for portability"); +# endif +#endif + +#if @GNULIB_ILOGBL@ +# if !@HAVE_ILOGBL@ +_GL_FUNCDECL_SYS (ilogbl, int, (long double x)); +# endif +_GL_CXXALIAS_SYS (ilogbl, int, (long double x)); +_GL_CXXALIASWARN (ilogbl); +#elif defined GNULIB_POSIXCHECK +# undef ilogbl +# if HAVE_RAW_DECL_ILOGBL +_GL_WARN_ON_USE (ilogbl, "ilogbl is unportable - " + "use gnulib module ilogbl for portability"); +# endif +#endif + + +/* Return x * 2^exp. */ +#if @GNULIB_LDEXPF@ +# if !@HAVE_LDEXPF@ +# undef ldexpf +_GL_FUNCDECL_SYS (ldexpf, float, (float x, int exp)); +# endif +_GL_CXXALIAS_SYS (ldexpf, float, (float x, int exp)); +_GL_CXXALIASWARN (ldexpf); +#elif defined GNULIB_POSIXCHECK +# undef ldexpf +# if HAVE_RAW_DECL_LDEXPF +_GL_WARN_ON_USE (ldexpf, "ldexpf is unportable - " + "use gnulib module ldexpf for portability"); +# endif +#endif + +/* Return x * 2^exp. */ +#if @GNULIB_LDEXPL@ && @REPLACE_LDEXPL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef ldexpl +# define ldexpl rpl_ldexpl +# endif +_GL_FUNCDECL_RPL (ldexpl, long double, (long double x, int exp)); +_GL_CXXALIAS_RPL (ldexpl, long double, (long double x, int exp)); +#else +# if !@HAVE_DECL_LDEXPL@ +_GL_FUNCDECL_SYS (ldexpl, long double, (long double x, int exp)); +# endif +# if @GNULIB_LDEXPL@ +_GL_CXXALIAS_SYS (ldexpl, long double, (long double x, int exp)); +# endif +#endif +#if @GNULIB_LDEXPL@ +_GL_CXXALIASWARN (ldexpl); +#endif +#if !@GNULIB_LDEXPL@ && defined GNULIB_POSIXCHECK +# undef ldexpl +# if HAVE_RAW_DECL_LDEXPL +_GL_WARN_ON_USE (ldexpl, "ldexpl is unportable - " + "use gnulib module ldexpl for portability"); +# endif +#endif + + +#if @GNULIB_LOGF@ +# if @REPLACE_LOGF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef logf +# define logf rpl_logf +# endif +_GL_FUNCDECL_RPL (logf, float, (float x)); +_GL_CXXALIAS_RPL (logf, float, (float x)); +# else +# if !@HAVE_LOGF@ +# undef logf +_GL_FUNCDECL_SYS (logf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (logf, float, (float x)); +# endif +_GL_CXXALIASWARN (logf); +#elif defined GNULIB_POSIXCHECK +# undef logf +# if HAVE_RAW_DECL_LOGF +_GL_WARN_ON_USE (logf, "logf is unportable - " + "use gnulib module logf for portability"); +# endif +#endif + +#if @GNULIB_LOG@ +# if @REPLACE_LOG@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef log +# define log rpl_log +# endif +_GL_FUNCDECL_RPL (log, double, (double x)); +_GL_CXXALIAS_RPL (log, double, (double x)); +# else +_GL_CXXALIAS_SYS (log, double, (double x)); +# endif +_GL_CXXALIASWARN (log); +#elif defined GNULIB_POSIXCHECK +# undef log +# if HAVE_RAW_DECL_LOG +_GL_WARN_ON_USE (log, "log has portability problems - " + "use gnulib module log for portability"); +# endif +#endif + +#if @GNULIB_LOGL@ +# if @REPLACE_LOGL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef logl +# define logl rpl_logl +# endif +_GL_FUNCDECL_RPL (logl, long double, (long double x)); +_GL_CXXALIAS_RPL (logl, long double, (long double x)); +# else +# if !@HAVE_LOGL@ || !@HAVE_DECL_LOGL@ +# undef logl +_GL_FUNCDECL_SYS (logl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (logl, long double, (long double x)); +# endif +_GL_CXXALIASWARN (logl); +#elif defined GNULIB_POSIXCHECK +# undef logl +# if HAVE_RAW_DECL_LOGL +_GL_WARN_ON_USE (logl, "logl is unportable - " + "use gnulib module logl for portability"); +# endif +#endif + + +#if @GNULIB_LOG10F@ +# if @REPLACE_LOG10F@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef log10f +# define log10f rpl_log10f +# endif +_GL_FUNCDECL_RPL (log10f, float, (float x)); +_GL_CXXALIAS_RPL (log10f, float, (float x)); +# else +# if !@HAVE_LOG10F@ +# undef log10f +_GL_FUNCDECL_SYS (log10f, float, (float x)); +# endif +_GL_CXXALIAS_SYS (log10f, float, (float x)); +# endif +_GL_CXXALIASWARN (log10f); +#elif defined GNULIB_POSIXCHECK +# undef log10f +# if HAVE_RAW_DECL_LOG10F +_GL_WARN_ON_USE (log10f, "log10f is unportable - " + "use gnulib module log10f for portability"); +# endif +#endif + +#if @GNULIB_LOG10@ +# if @REPLACE_LOG10@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef log10 +# define log10 rpl_log10 +# endif +_GL_FUNCDECL_RPL (log10, double, (double x)); +_GL_CXXALIAS_RPL (log10, double, (double x)); +# else +_GL_CXXALIAS_SYS (log10, double, (double x)); +# endif +_GL_CXXALIASWARN (log10); +#elif defined GNULIB_POSIXCHECK +# undef log10 +# if HAVE_RAW_DECL_LOG10 +_GL_WARN_ON_USE (log10, "log10 has portability problems - " + "use gnulib module log10 for portability"); +# endif +#endif + +#if @GNULIB_LOG10L@ +# if @REPLACE_LOG10L@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef log10l +# define log10l rpl_log10l +# endif +_GL_FUNCDECL_RPL (log10l, long double, (long double x)); +_GL_CXXALIAS_RPL (log10l, long double, (long double x)); +# else +# if !@HAVE_LOG10L@ || !@HAVE_DECL_LOG10L@ +# undef log10l +_GL_FUNCDECL_SYS (log10l, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (log10l, long double, (long double x)); +# endif +_GL_CXXALIASWARN (log10l); +#elif defined GNULIB_POSIXCHECK +# undef log10l +# if HAVE_RAW_DECL_LOG10L +_GL_WARN_ON_USE (log10l, "log10l is unportable - " + "use gnulib module log10l for portability"); +# endif +#endif + + +#if @GNULIB_LOG1PF@ +# if @REPLACE_LOG1PF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef log1pf +# define log1pf rpl_log1pf +# endif +_GL_FUNCDECL_RPL (log1pf, float, (float x)); +_GL_CXXALIAS_RPL (log1pf, float, (float x)); +# else +# if !@HAVE_LOG1PF@ +_GL_FUNCDECL_SYS (log1pf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (log1pf, float, (float x)); +# endif +_GL_CXXALIASWARN (log1pf); +#elif defined GNULIB_POSIXCHECK +# undef log1pf +# if HAVE_RAW_DECL_LOG1PF +_GL_WARN_ON_USE (log1pf, "log1pf is unportable - " + "use gnulib module log1pf for portability"); +# endif +#endif + +#if @GNULIB_LOG1P@ +# if @REPLACE_LOG1P@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef log1p +# define log1p rpl_log1p +# endif +_GL_FUNCDECL_RPL (log1p, double, (double x)); +_GL_CXXALIAS_RPL (log1p, double, (double x)); +# else +# if !@HAVE_LOG1P@ +_GL_FUNCDECL_SYS (log1p, double, (double x)); +# endif +_GL_CXXALIAS_SYS (log1p, double, (double x)); +# endif +_GL_CXXALIASWARN (log1p); +#elif defined GNULIB_POSIXCHECK +# undef log1p +# if HAVE_RAW_DECL_LOG1P +_GL_WARN_ON_USE (log1p, "log1p has portability problems - " + "use gnulib module log1p for portability"); +# endif +#endif + +#if @GNULIB_LOG1PL@ +# if @REPLACE_LOG1PL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef log1pl +# define log1pl rpl_log1pl +# endif +_GL_FUNCDECL_RPL (log1pl, long double, (long double x)); +_GL_CXXALIAS_RPL (log1pl, long double, (long double x)); +# else +# if !@HAVE_LOG1PL@ +_GL_FUNCDECL_SYS (log1pl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (log1pl, long double, (long double x)); +# endif +_GL_CXXALIASWARN (log1pl); +#elif defined GNULIB_POSIXCHECK +# undef log1pl +# if HAVE_RAW_DECL_LOG1PL +_GL_WARN_ON_USE (log1pl, "log1pl has portability problems - " + "use gnulib module log1pl for portability"); +# endif +#endif + + +#if @GNULIB_LOG2F@ +# if @REPLACE_LOG2F@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef log2f +# define log2f rpl_log2f +# endif +_GL_FUNCDECL_RPL (log2f, float, (float x)); +_GL_CXXALIAS_RPL (log2f, float, (float x)); +# else +# if !@HAVE_DECL_LOG2F@ +# undef log2f +_GL_FUNCDECL_SYS (log2f, float, (float x)); +# endif +_GL_CXXALIAS_SYS (log2f, float, (float x)); +# endif +_GL_CXXALIASWARN (log2f); +#elif defined GNULIB_POSIXCHECK +# undef log2f +# if HAVE_RAW_DECL_LOG2F +_GL_WARN_ON_USE (log2f, "log2f is unportable - " + "use gnulib module log2f for portability"); +# endif +#endif + +#if @GNULIB_LOG2@ +# if @REPLACE_LOG2@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef log2 +# define log2 rpl_log2 +# endif +_GL_FUNCDECL_RPL (log2, double, (double x)); +_GL_CXXALIAS_RPL (log2, double, (double x)); +# else +# if !@HAVE_DECL_LOG2@ +# undef log2 +_GL_FUNCDECL_SYS (log2, double, (double x)); +# endif +_GL_CXXALIAS_SYS (log2, double, (double x)); +# endif +_GL_CXXALIASWARN (log2); +#elif defined GNULIB_POSIXCHECK +# undef log2 +# if HAVE_RAW_DECL_LOG2 +_GL_WARN_ON_USE (log2, "log2 is unportable - " + "use gnulib module log2 for portability"); +# endif +#endif + +#if @GNULIB_LOG2L@ +# if @REPLACE_LOG2L@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef log2l +# define log2l rpl_log2l +# endif +_GL_FUNCDECL_RPL (log2l, long double, (long double x)); +_GL_CXXALIAS_RPL (log2l, long double, (long double x)); +# else +# if !@HAVE_DECL_LOG2L@ +_GL_FUNCDECL_SYS (log2l, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (log2l, long double, (long double x)); +# endif +_GL_CXXALIASWARN (log2l); +#elif defined GNULIB_POSIXCHECK +# undef log2l +# if HAVE_RAW_DECL_LOG2L +_GL_WARN_ON_USE (log2l, "log2l is unportable - " + "use gnulib module log2l for portability"); +# endif +#endif + + +#if @GNULIB_LOGBF@ +# if @REPLACE_LOGBF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef logbf +# define logbf rpl_logbf +# endif +_GL_FUNCDECL_RPL (logbf, float, (float x)); +_GL_CXXALIAS_RPL (logbf, float, (float x)); +# else +# if !@HAVE_LOGBF@ +_GL_FUNCDECL_SYS (logbf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (logbf, float, (float x)); +# endif +_GL_CXXALIASWARN (logbf); +#elif defined GNULIB_POSIXCHECK +# undef logbf +# if HAVE_RAW_DECL_LOGBF +_GL_WARN_ON_USE (logbf, "logbf is unportable - " + "use gnulib module logbf for portability"); +# endif +#endif + +#if @GNULIB_LOGB@ +# if @REPLACE_LOGB@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef logb +# define logb rpl_logb +# endif +_GL_FUNCDECL_RPL (logb, double, (double x)); +_GL_CXXALIAS_RPL (logb, double, (double x)); +# else +# if !@HAVE_DECL_LOGB@ +_GL_FUNCDECL_SYS (logb, double, (double x)); +# endif +_GL_CXXALIAS_SYS (logb, double, (double x)); +# endif +_GL_CXXALIASWARN (logb); +#elif defined GNULIB_POSIXCHECK +# undef logb +# if HAVE_RAW_DECL_LOGB +_GL_WARN_ON_USE (logb, "logb is unportable - " + "use gnulib module logb for portability"); +# endif +#endif + +#if @GNULIB_LOGBL@ +# if @REPLACE_LOGBL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef logbl +# define logbl rpl_logbl +# endif +_GL_FUNCDECL_RPL (logbl, long double, (long double x)); +_GL_CXXALIAS_RPL (logbl, long double, (long double x)); +# else +# if !@HAVE_LOGBL@ +_GL_FUNCDECL_SYS (logbl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (logbl, long double, (long double x)); +# endif +_GL_CXXALIASWARN (logbl); +#elif defined GNULIB_POSIXCHECK +# undef logbl +# if HAVE_RAW_DECL_LOGBL +_GL_WARN_ON_USE (logbl, "logbl is unportable - " + "use gnulib module logbl for portability"); +# endif +#endif + + +#if @GNULIB_MODFF@ +# if @REPLACE_MODFF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef modff +# define modff rpl_modff +# endif +_GL_FUNCDECL_RPL (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2))); +_GL_CXXALIAS_RPL (modff, float, (float x, float *iptr)); +# else +# if !@HAVE_MODFF@ +# undef modff +_GL_FUNCDECL_SYS (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2))); +# endif +_GL_CXXALIAS_SYS (modff, float, (float x, float *iptr)); +# endif +_GL_CXXALIASWARN (modff); +#elif defined GNULIB_POSIXCHECK +# undef modff +# if HAVE_RAW_DECL_MODFF +_GL_WARN_ON_USE (modff, "modff is unportable - " + "use gnulib module modff for portability"); +# endif +#endif + +#if @GNULIB_MODF@ +# if @REPLACE_MODF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef modf +# define modf rpl_modf +# endif +_GL_FUNCDECL_RPL (modf, double, (double x, double *iptr) _GL_ARG_NONNULL ((2))); +_GL_CXXALIAS_RPL (modf, double, (double x, double *iptr)); +# else +_GL_CXXALIAS_SYS (modf, double, (double x, double *iptr)); +# endif +_GL_CXXALIASWARN (modf); +#elif defined GNULIB_POSIXCHECK +# undef modf +# if HAVE_RAW_DECL_MODF +_GL_WARN_ON_USE (modf, "modf has portability problems - " + "use gnulib module modf for portability"); +# endif +#endif + +#if @GNULIB_MODFL@ +# if @REPLACE_MODFL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef modfl +# define modfl rpl_modfl +# endif +_GL_FUNCDECL_RPL (modfl, long double, (long double x, long double *iptr) + _GL_ARG_NONNULL ((2))); +_GL_CXXALIAS_RPL (modfl, long double, (long double x, long double *iptr)); +# else +# if !@HAVE_MODFL@ +# undef modfl +_GL_FUNCDECL_SYS (modfl, long double, (long double x, long double *iptr) + _GL_ARG_NONNULL ((2))); +# endif +_GL_CXXALIAS_SYS (modfl, long double, (long double x, long double *iptr)); +# endif +_GL_CXXALIASWARN (modfl); +#elif defined GNULIB_POSIXCHECK +# undef modfl +# if HAVE_RAW_DECL_MODFL +_GL_WARN_ON_USE (modfl, "modfl is unportable - " + "use gnulib module modfl for portability"); +# endif +#endif + + +#if @GNULIB_POWF@ +# if !@HAVE_POWF@ +# undef powf +_GL_FUNCDECL_SYS (powf, float, (float x, float y)); +# endif +_GL_CXXALIAS_SYS (powf, float, (float x, float y)); +_GL_CXXALIASWARN (powf); +#elif defined GNULIB_POSIXCHECK +# undef powf +# if HAVE_RAW_DECL_POWF +_GL_WARN_ON_USE (powf, "powf is unportable - " + "use gnulib module powf for portability"); +# endif +#endif + + +#if @GNULIB_REMAINDERF@ +# if @REPLACE_REMAINDERF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef remainderf +# define remainderf rpl_remainderf +# endif +_GL_FUNCDECL_RPL (remainderf, float, (float x, float y)); +_GL_CXXALIAS_RPL (remainderf, float, (float x, float y)); +# else +# if !@HAVE_REMAINDERF@ +_GL_FUNCDECL_SYS (remainderf, float, (float x, float y)); +# endif +_GL_CXXALIAS_SYS (remainderf, float, (float x, float y)); +# endif +_GL_CXXALIASWARN (remainderf); +#elif defined GNULIB_POSIXCHECK +# undef remainderf +# if HAVE_RAW_DECL_REMAINDERF +_GL_WARN_ON_USE (remainderf, "remainderf is unportable - " + "use gnulib module remainderf for portability"); +# endif +#endif + +#if @GNULIB_REMAINDER@ +# if @REPLACE_REMAINDER@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef remainder +# define remainder rpl_remainder +# endif +_GL_FUNCDECL_RPL (remainder, double, (double x, double y)); +_GL_CXXALIAS_RPL (remainder, double, (double x, double y)); +# else +# if !@HAVE_REMAINDER@ || !@HAVE_DECL_REMAINDER@ +_GL_FUNCDECL_SYS (remainder, double, (double x, double y)); +# endif +_GL_CXXALIAS_SYS (remainder, double, (double x, double y)); +# endif +_GL_CXXALIASWARN (remainder); +#elif defined GNULIB_POSIXCHECK +# undef remainder +# if HAVE_RAW_DECL_REMAINDER +_GL_WARN_ON_USE (remainder, "remainder is unportable - " + "use gnulib module remainder for portability"); +# endif +#endif + +#if @GNULIB_REMAINDERL@ +# if @REPLACE_REMAINDERL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef remainderl +# define remainderl rpl_remainderl +# endif +_GL_FUNCDECL_RPL (remainderl, long double, (long double x, long double y)); +_GL_CXXALIAS_RPL (remainderl, long double, (long double x, long double y)); +# else +# if !@HAVE_DECL_REMAINDERL@ +# undef remainderl +_GL_FUNCDECL_SYS (remainderl, long double, (long double x, long double y)); +# endif +_GL_CXXALIAS_SYS (remainderl, long double, (long double x, long double y)); +# endif +_GL_CXXALIASWARN (remainderl); +#elif defined GNULIB_POSIXCHECK +# undef remainderl +# if HAVE_RAW_DECL_REMAINDERL +_GL_WARN_ON_USE (remainderl, "remainderl is unportable - " + "use gnulib module remainderl for portability"); +# endif +#endif + + +#if @GNULIB_RINTF@ +# if !@HAVE_DECL_RINTF@ +_GL_FUNCDECL_SYS (rintf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (rintf, float, (float x)); +_GL_CXXALIASWARN (rintf); +#elif defined GNULIB_POSIXCHECK +# undef rintf +# if HAVE_RAW_DECL_RINTF +_GL_WARN_ON_USE (rintf, "rintf is unportable - " + "use gnulib module rintf for portability"); +# endif +#endif + +#if @GNULIB_RINT@ +# if !@HAVE_RINT@ +_GL_FUNCDECL_SYS (rint, double, (double x)); +# endif +_GL_CXXALIAS_SYS (rint, double, (double x)); +_GL_CXXALIASWARN (rint); +#elif defined GNULIB_POSIXCHECK +# undef rint +# if HAVE_RAW_DECL_RINT +_GL_WARN_ON_USE (rint, "rint is unportable - " + "use gnulib module rint for portability"); +# endif +#endif + +#if @GNULIB_RINTL@ +# if !@HAVE_RINTL@ +_GL_FUNCDECL_SYS (rintl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (rintl, long double, (long double x)); +_GL_CXXALIASWARN (rintl); +#elif defined GNULIB_POSIXCHECK +# undef rintl +# if HAVE_RAW_DECL_RINTL +_GL_WARN_ON_USE (rintl, "rintl is unportable - " + "use gnulib module rintl for portability"); +# endif +#endif + + +#if @GNULIB_ROUNDF@ +# if @REPLACE_ROUNDF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef roundf +# define roundf rpl_roundf +# endif +_GL_FUNCDECL_RPL (roundf, float, (float x)); +_GL_CXXALIAS_RPL (roundf, float, (float x)); +# else +# if !@HAVE_DECL_ROUNDF@ +_GL_FUNCDECL_SYS (roundf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (roundf, float, (float x)); +# endif +_GL_CXXALIASWARN (roundf); +#elif defined GNULIB_POSIXCHECK +# undef roundf +# if HAVE_RAW_DECL_ROUNDF +_GL_WARN_ON_USE (roundf, "roundf is unportable - " + "use gnulib module roundf for portability"); +# endif +#endif + +#if @GNULIB_ROUND@ +# if @REPLACE_ROUND@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef round +# define round rpl_round +# endif +_GL_FUNCDECL_RPL (round, double, (double x)); +_GL_CXXALIAS_RPL (round, double, (double x)); +# else +# if !@HAVE_DECL_ROUND@ +_GL_FUNCDECL_SYS (round, double, (double x)); +# endif +_GL_CXXALIAS_SYS (round, double, (double x)); +# endif +_GL_CXXALIASWARN (round); +#elif defined GNULIB_POSIXCHECK +# undef round +# if HAVE_RAW_DECL_ROUND +_GL_WARN_ON_USE (round, "round is unportable - " + "use gnulib module round for portability"); +# endif +#endif + +#if @GNULIB_ROUNDL@ +# if @REPLACE_ROUNDL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef roundl +# define roundl rpl_roundl +# endif +_GL_FUNCDECL_RPL (roundl, long double, (long double x)); +_GL_CXXALIAS_RPL (roundl, long double, (long double x)); +# else +# if !@HAVE_DECL_ROUNDL@ +# undef roundl +_GL_FUNCDECL_SYS (roundl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (roundl, long double, (long double x)); +# endif +_GL_CXXALIASWARN (roundl); +#elif defined GNULIB_POSIXCHECK +# undef roundl +# if HAVE_RAW_DECL_ROUNDL +_GL_WARN_ON_USE (roundl, "roundl is unportable - " + "use gnulib module roundl for portability"); +# endif +#endif + + +#if @GNULIB_SINF@ +# if !@HAVE_SINF@ +# undef sinf +_GL_FUNCDECL_SYS (sinf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (sinf, float, (float x)); +_GL_CXXALIASWARN (sinf); +#elif defined GNULIB_POSIXCHECK +# undef sinf +# if HAVE_RAW_DECL_SINF +_GL_WARN_ON_USE (sinf, "sinf is unportable - " + "use gnulib module sinf for portability"); +# endif +#endif + +#if @GNULIB_SINL@ +# if !@HAVE_SINL@ || !@HAVE_DECL_SINL@ +# undef sinl +_GL_FUNCDECL_SYS (sinl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (sinl, long double, (long double x)); +_GL_CXXALIASWARN (sinl); +#elif defined GNULIB_POSIXCHECK +# undef sinl +# if HAVE_RAW_DECL_SINL +_GL_WARN_ON_USE (sinl, "sinl is unportable - " + "use gnulib module sinl for portability"); +# endif +#endif + + +#if @GNULIB_SINHF@ +# if !@HAVE_SINHF@ +# undef sinhf +_GL_FUNCDECL_SYS (sinhf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (sinhf, float, (float x)); +_GL_CXXALIASWARN (sinhf); +#elif defined GNULIB_POSIXCHECK +# undef sinhf +# if HAVE_RAW_DECL_SINHF +_GL_WARN_ON_USE (sinhf, "sinhf is unportable - " + "use gnulib module sinhf for portability"); +# endif +#endif + + +#if @GNULIB_SQRTF@ +# if !@HAVE_SQRTF@ +# undef sqrtf +_GL_FUNCDECL_SYS (sqrtf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (sqrtf, float, (float x)); +_GL_CXXALIASWARN (sqrtf); +#elif defined GNULIB_POSIXCHECK +# undef sqrtf +# if HAVE_RAW_DECL_SQRTF +_GL_WARN_ON_USE (sqrtf, "sqrtf is unportable - " + "use gnulib module sqrtf for portability"); +# endif +#endif + +#if @GNULIB_SQRTL@ +# if @REPLACE_SQRTL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef sqrtl +# define sqrtl rpl_sqrtl +# endif +_GL_FUNCDECL_RPL (sqrtl, long double, (long double x)); +_GL_CXXALIAS_RPL (sqrtl, long double, (long double x)); +# else +# if !@HAVE_SQRTL@ || !@HAVE_DECL_SQRTL@ +# undef sqrtl +_GL_FUNCDECL_SYS (sqrtl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (sqrtl, long double, (long double x)); +# endif +_GL_CXXALIASWARN (sqrtl); +#elif defined GNULIB_POSIXCHECK +# undef sqrtl +# if HAVE_RAW_DECL_SQRTL +_GL_WARN_ON_USE (sqrtl, "sqrtl is unportable - " + "use gnulib module sqrtl for portability"); +# endif +#endif + + +#if @GNULIB_TANF@ +# if !@HAVE_TANF@ +# undef tanf +_GL_FUNCDECL_SYS (tanf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (tanf, float, (float x)); +_GL_CXXALIASWARN (tanf); +#elif defined GNULIB_POSIXCHECK +# undef tanf +# if HAVE_RAW_DECL_TANF +_GL_WARN_ON_USE (tanf, "tanf is unportable - " + "use gnulib module tanf for portability"); +# endif +#endif + +#if @GNULIB_TANL@ +# if !@HAVE_TANL@ || !@HAVE_DECL_TANL@ +# undef tanl +_GL_FUNCDECL_SYS (tanl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (tanl, long double, (long double x)); +_GL_CXXALIASWARN (tanl); +#elif defined GNULIB_POSIXCHECK +# undef tanl +# if HAVE_RAW_DECL_TANL +_GL_WARN_ON_USE (tanl, "tanl is unportable - " + "use gnulib module tanl for portability"); +# endif +#endif + + +#if @GNULIB_TANHF@ +# if !@HAVE_TANHF@ +# undef tanhf +_GL_FUNCDECL_SYS (tanhf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (tanhf, float, (float x)); +_GL_CXXALIASWARN (tanhf); +#elif defined GNULIB_POSIXCHECK +# undef tanhf +# if HAVE_RAW_DECL_TANHF +_GL_WARN_ON_USE (tanhf, "tanhf is unportable - " + "use gnulib module tanhf for portability"); +# endif +#endif + + +#if @GNULIB_TRUNCF@ +# if @REPLACE_TRUNCF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# define truncf rpl_truncf +# endif +_GL_FUNCDECL_RPL (truncf, float, (float x)); +_GL_CXXALIAS_RPL (truncf, float, (float x)); +# else +# if !@HAVE_DECL_TRUNCF@ +_GL_FUNCDECL_SYS (truncf, float, (float x)); +# endif +_GL_CXXALIAS_SYS (truncf, float, (float x)); +# endif +_GL_CXXALIASWARN (truncf); +#elif defined GNULIB_POSIXCHECK +# undef truncf +# if HAVE_RAW_DECL_TRUNCF +_GL_WARN_ON_USE (truncf, "truncf is unportable - " + "use gnulib module truncf for portability"); +# endif +#endif + +#if @GNULIB_TRUNC@ +# if @REPLACE_TRUNC@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# define trunc rpl_trunc +# endif +_GL_FUNCDECL_RPL (trunc, double, (double x)); +_GL_CXXALIAS_RPL (trunc, double, (double x)); +# else +# if !@HAVE_DECL_TRUNC@ +_GL_FUNCDECL_SYS (trunc, double, (double x)); +# endif +_GL_CXXALIAS_SYS (trunc, double, (double x)); +# endif +_GL_CXXALIASWARN (trunc); +#elif defined GNULIB_POSIXCHECK +# undef trunc +# if HAVE_RAW_DECL_TRUNC +_GL_WARN_ON_USE (trunc, "trunc is unportable - " + "use gnulib module trunc for portability"); +# endif +#endif + +#if @GNULIB_TRUNCL@ +# if @REPLACE_TRUNCL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef truncl +# define truncl rpl_truncl +# endif +_GL_FUNCDECL_RPL (truncl, long double, (long double x)); +_GL_CXXALIAS_RPL (truncl, long double, (long double x)); +# else +# if !@HAVE_DECL_TRUNCL@ +_GL_FUNCDECL_SYS (truncl, long double, (long double x)); +# endif +_GL_CXXALIAS_SYS (truncl, long double, (long double x)); +# endif +_GL_CXXALIASWARN (truncl); +#elif defined GNULIB_POSIXCHECK +# undef truncl +# if HAVE_RAW_DECL_TRUNCL +_GL_WARN_ON_USE (truncl, "truncl is unportable - " + "use gnulib module truncl for portability"); +# endif +#endif + + +/* Definitions of function-like macros come here, after the function + declarations. */ + + +#if @GNULIB_ISFINITE@ +# if @REPLACE_ISFINITE@ +_GL_EXTERN_C int gl_isfinitef (float x); +_GL_EXTERN_C int gl_isfinited (double x); +_GL_EXTERN_C int gl_isfinitel (long double x); +# undef isfinite +# define isfinite(x) \ + (sizeof (x) == sizeof (long double) ? gl_isfinitel (x) : \ + sizeof (x) == sizeof (double) ? gl_isfinited (x) : \ + gl_isfinitef (x)) +# endif +# ifdef __cplusplus +# ifdef isfinite +_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isfinite) +# undef isfinite +_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite) +# endif +# endif +#elif defined GNULIB_POSIXCHECK +# if defined isfinite +_GL_WARN_REAL_FLOATING_DECL (isfinite); +# undef isfinite +# define isfinite(x) _GL_WARN_REAL_FLOATING_IMPL (isfinite, x) +# endif +#endif + + +#if @GNULIB_ISINF@ +# if @REPLACE_ISINF@ +_GL_EXTERN_C int gl_isinff (float x); +_GL_EXTERN_C int gl_isinfd (double x); +_GL_EXTERN_C int gl_isinfl (long double x); +# undef isinf +# define isinf(x) \ + (sizeof (x) == sizeof (long double) ? gl_isinfl (x) : \ + sizeof (x) == sizeof (double) ? gl_isinfd (x) : \ + gl_isinff (x)) +# endif +# ifdef __cplusplus +# ifdef isinf +_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isinf) +# undef isinf +_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf) +# endif +# endif +#elif defined GNULIB_POSIXCHECK +# if defined isinf +_GL_WARN_REAL_FLOATING_DECL (isinf); +# undef isinf +# define isinf(x) _GL_WARN_REAL_FLOATING_IMPL (isinf, x) +# endif +#endif + + +#if @GNULIB_ISNANF@ +/* Test for NaN for 'float' numbers. */ +# if @HAVE_ISNANF@ +/* The original included above provides a declaration of isnan macro + or (older) isnanf function. */ +# if __GNUC__ >= 4 + /* GCC 4.0 and newer provides three built-ins for isnan. */ +# undef isnanf +# define isnanf(x) __builtin_isnanf ((float)(x)) +# elif defined isnan +# undef isnanf +# define isnanf(x) isnan ((float)(x)) +# endif +# else +/* Test whether X is a NaN. */ +# undef isnanf +# define isnanf rpl_isnanf +_GL_EXTERN_C int isnanf (float x); +# endif +#endif + +#if @GNULIB_ISNAND@ +/* Test for NaN for 'double' numbers. + This function is a gnulib extension, unlike isnan() which applied only + to 'double' numbers earlier but now is a type-generic macro. */ +# if @HAVE_ISNAND@ +/* The original included above provides a declaration of isnan + macro. */ +# if __GNUC__ >= 4 + /* GCC 4.0 and newer provides three built-ins for isnan. */ +# undef isnand +# define isnand(x) __builtin_isnan ((double)(x)) +# else +# undef isnand +# define isnand(x) isnan ((double)(x)) +# endif +# else +/* Test whether X is a NaN. */ +# undef isnand +# define isnand rpl_isnand +_GL_EXTERN_C int isnand (double x); +# endif +#endif + +#if @GNULIB_ISNANL@ +/* Test for NaN for 'long double' numbers. */ +# if @HAVE_ISNANL@ +/* The original included above provides a declaration of isnan + macro or (older) isnanl function. */ +# if __GNUC__ >= 4 + /* GCC 4.0 and newer provides three built-ins for isnan. */ +# undef isnanl +# define isnanl(x) __builtin_isnanl ((long double)(x)) +# elif defined isnan +# undef isnanl +# define isnanl(x) isnan ((long double)(x)) +# endif +# else +/* Test whether X is a NaN. */ +# undef isnanl +# define isnanl rpl_isnanl +_GL_EXTERN_C int isnanl (long double x) _GL_ATTRIBUTE_CONST; +# endif +#endif + +/* This must come *after* the snippets for GNULIB_ISNANF and GNULIB_ISNANL! */ +#if @GNULIB_ISNAN@ +# if @REPLACE_ISNAN@ +/* We can't just use the isnanf macro (e.g.) as exposed by + isnanf.h (e.g.) here, because those may end up being macros + that recursively expand back to isnan. So use the gnulib + replacements for them directly. */ +# if @HAVE_ISNANF@ && __GNUC__ >= 4 +# define gl_isnan_f(x) __builtin_isnanf ((float)(x)) +# else +_GL_EXTERN_C int rpl_isnanf (float x); +# define gl_isnan_f(x) rpl_isnanf (x) +# endif +# if @HAVE_ISNAND@ && __GNUC__ >= 4 +# define gl_isnan_d(x) __builtin_isnan ((double)(x)) +# else +_GL_EXTERN_C int rpl_isnand (double x); +# define gl_isnan_d(x) rpl_isnand (x) +# endif +# if @HAVE_ISNANL@ && __GNUC__ >= 4 +# define gl_isnan_l(x) __builtin_isnanl ((long double)(x)) +# else +_GL_EXTERN_C int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST; +# define gl_isnan_l(x) rpl_isnanl (x) +# endif +# undef isnan +# define isnan(x) \ + (sizeof (x) == sizeof (long double) ? gl_isnan_l (x) : \ + sizeof (x) == sizeof (double) ? gl_isnan_d (x) : \ + gl_isnan_f (x)) +# elif __GNUC__ >= 4 +# undef isnan +# define isnan(x) \ + (sizeof (x) == sizeof (long double) ? __builtin_isnanl ((long double)(x)) : \ + sizeof (x) == sizeof (double) ? __builtin_isnan ((double)(x)) : \ + __builtin_isnanf ((float)(x))) +# endif +# ifdef __cplusplus +# ifdef isnan +_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isnan) +# undef isnan +_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan) +# endif +# else +/* Ensure isnan is a macro. */ +# ifndef isnan +# define isnan isnan +# endif +# endif +#elif defined GNULIB_POSIXCHECK +# if defined isnan +_GL_WARN_REAL_FLOATING_DECL (isnan); +# undef isnan +# define isnan(x) _GL_WARN_REAL_FLOATING_IMPL (isnan, x) +# endif +#endif + + +#if @GNULIB_SIGNBIT@ +# if @REPLACE_SIGNBIT_USING_GCC@ +# undef signbit + /* GCC 4.0 and newer provides three built-ins for signbit. */ +# define signbit(x) \ + (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \ + sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \ + __builtin_signbitf (x)) +# endif +# if @REPLACE_SIGNBIT@ +# undef signbit +_GL_EXTERN_C int gl_signbitf (float arg); +_GL_EXTERN_C int gl_signbitd (double arg); +_GL_EXTERN_C int gl_signbitl (long double arg); +# if __GNUC__ >= 2 && !defined __STRICT_ANSI__ +# define _GL_NUM_UINT_WORDS(type) \ + ((sizeof (type) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +# if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT && !defined gl_signbitf +# define gl_signbitf_OPTIMIZED_MACRO +# define gl_signbitf(arg) \ + ({ union { float _value; \ + unsigned int _word[_GL_NUM_UINT_WORDS (float)]; \ + } _m; \ + _m._value = (arg); \ + (_m._word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1; \ + }) +# endif +# if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT && !defined gl_signbitd +# define gl_signbitd_OPTIMIZED_MACRO +# define gl_signbitd(arg) \ + ({ union { double _value; \ + unsigned int _word[_GL_NUM_UINT_WORDS (double)]; \ + } _m; \ + _m._value = (arg); \ + (_m._word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1; \ + }) +# endif +# if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT && !defined gl_signbitl +# define gl_signbitl_OPTIMIZED_MACRO +# define gl_signbitl(arg) \ + ({ union { long double _value; \ + unsigned int _word[_GL_NUM_UINT_WORDS (long double)]; \ + } _m; \ + _m._value = (arg); \ + (_m._word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1; \ + }) +# endif +# endif +# define signbit(x) \ + (sizeof (x) == sizeof (long double) ? gl_signbitl (x) : \ + sizeof (x) == sizeof (double) ? gl_signbitd (x) : \ + gl_signbitf (x)) +# endif +# ifdef __cplusplus +# ifdef signbit +_GL_MATH_CXX_REAL_FLOATING_DECL_1 (signbit) +# undef signbit +_GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit) +# endif +# endif +#elif defined GNULIB_POSIXCHECK +# if defined signbit +_GL_WARN_REAL_FLOATING_DECL (signbit); +# undef signbit +# define signbit(x) _GL_WARN_REAL_FLOATING_IMPL (signbit, x) +# endif +#endif + +_GL_INLINE_HEADER_END + +#endif /* _@GUARD_PREFIX@_MATH_H */ +#endif /* _@GUARD_PREFIX@_MATH_H */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/mbsstr.c gettext-0.19.7/gettext-tools/gnulib-lib/mbsstr.c --- gettext-0.19.6/gettext-tools/gnulib-lib/mbsstr.c 2015-09-11 03:03:55.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/mbsstr.c 2015-12-27 23:08:31.000000000 +0000 @@ -1,4 +1,4 @@ -/* Searching in a string. +/* Searching in a string. -*- coding: utf-8 -*- Copyright (C) 2005-2015 Free Software Foundation, Inc. Written by Bruno Haible , 2005. diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/pipe-filter.h gettext-0.19.7/gettext-tools/gnulib-lib/pipe-filter.h --- gettext-0.19.6/gettext-tools/gnulib-lib/pipe-filter.h 2015-09-11 03:03:55.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/pipe-filter.h 2015-12-27 23:08:31.000000000 +0000 @@ -1,4 +1,4 @@ -/* Filtering of data through a subprocess. +/* Filtering of data through a subprocess. -*- coding: utf-8 -*- Copyright (C) 2009-2015 Free Software Foundation, Inc. Written by Bruno Haible , 2009, and Paolo Bonzini , 2009. diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/propername.h gettext-0.19.7/gettext-tools/gnulib-lib/propername.h --- gettext-0.19.6/gettext-tools/gnulib-lib/propername.h 2015-09-11 03:03:55.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/propername.h 2015-12-27 23:08:31.000000000 +0000 @@ -1,4 +1,4 @@ -/* Localization of proper names. +/* Localization of proper names. -*- coding: utf-8 -*- Copyright (C) 2006, 2008-2015 Free Software Foundation, Inc. Written by Bruno Haible , 2006. diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/qcopy-acl.c gettext-0.19.7/gettext-tools/gnulib-lib/qcopy-acl.c --- gettext-0.19.6/gettext-tools/gnulib-lib/qcopy-acl.c 2015-09-11 03:03:55.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/qcopy-acl.c 2015-12-27 23:08:31.000000000 +0000 @@ -1,4 +1,4 @@ -/* copy-acl.c - copy access control list from one file to another file +/* Copy access control list from one file to another. -*- coding: utf-8 -*- Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc. diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/quotearg.c gettext-0.19.7/gettext-tools/gnulib-lib/quotearg.c --- gettext-0.19.6/gettext-tools/gnulib-lib/quotearg.c 2015-09-11 03:03:55.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/quotearg.c 2015-12-27 23:08:31.000000000 +0000 @@ -77,6 +77,8 @@ "literal", "shell", "shell-always", + "shell-escape", + "shell-escape-always", "c", "c-maybe", "escape", @@ -91,6 +93,8 @@ literal_quoting_style, shell_quoting_style, shell_always_quoting_style, + shell_escape_quoting_style, + shell_escape_always_quoting_style, c_quoting_style, c_maybe_quoting_style, escape_quoting_style, @@ -116,7 +120,7 @@ /* Get the value of O's quoting style. If O is null, use the default. */ enum quoting_style -get_quoting_style (struct quoting_options *o) +get_quoting_style (struct quoting_options const *o) { return (o ? o : &default_quoting_options)->style; } @@ -253,6 +257,7 @@ bool backslash_escapes = false; bool unibyte_locale = MB_CUR_MAX == 1; bool elide_outer_quotes = (flags & QA_ELIDE_OUTER_QUOTES) != 0; + bool pending_shell_escape_end = false; #define STORE(c) \ do \ @@ -263,6 +268,36 @@ } \ while (0) +#define START_ESC() \ + do \ + { \ + if (elide_outer_quotes) \ + goto force_outer_quoting_style; \ + escaping = true; \ + if (quoting_style == shell_always_quoting_style \ + && ! pending_shell_escape_end) \ + { \ + STORE ('\''); \ + STORE ('$'); \ + STORE ('\''); \ + pending_shell_escape_end = true; \ + } \ + STORE ('\\'); \ + } \ + while (0) + +#define END_ESC() \ + do \ + { \ + if (pending_shell_escape_end && ! escaping) \ + { \ + STORE ('\''); \ + STORE ('\''); \ + pending_shell_escape_end = false; \ + } \ + } \ + while (0) + switch (quoting_style) { case c_maybe_quoting_style: @@ -321,11 +356,18 @@ } break; + case shell_escape_quoting_style: + backslash_escapes = true; + /* Fall through. */ case shell_quoting_style: - quoting_style = shell_always_quoting_style; elide_outer_quotes = true; /* Fall through. */ + case shell_escape_always_quoting_style: + if (!elide_outer_quotes) + backslash_escapes = true; + /* Fall through. */ case shell_always_quoting_style: + quoting_style = shell_always_quoting_style; if (!elide_outer_quotes) STORE ('\''); quote_string = "'"; @@ -345,8 +387,10 @@ unsigned char c; unsigned char esc; bool is_right_quote = false; + bool escaping = false; if (backslash_escapes + && quoting_style != shell_always_quoting_style && quote_string_len && (i + quote_string_len <= (argsize == SIZE_MAX && 1 < quote_string_len @@ -367,15 +411,15 @@ case '\0': if (backslash_escapes) { - if (elide_outer_quotes) - goto force_outer_quoting_style; - STORE ('\\'); + START_ESC (); /* If quote_string were to begin with digits, we'd need to test for the end of the arg as well. However, it's hard to imagine any locale that would use digits in quotes, and set_custom_quoting is documented not to - accept them. */ - if (i + 1 < argsize && '0' <= arg[i + 1] && arg[i + 1] <= '9') + accept them. Use only a single \0 with shell-escape + as currently digits are not printed within $'...' */ + if (quoting_style != shell_always_quoting_style + && i + 1 < argsize && '0' <= arg[i + 1] && arg[i + 1] <= '9') { STORE ('0'); STORE ('0'); @@ -436,6 +480,14 @@ case '\t': esc = 't'; goto c_and_shell_escape; case '\v': esc = 'v'; goto c_escape; case '\\': esc = c; + /* Never need to escape '\' in shell case. */ + if (quoting_style == shell_always_quoting_style) + { + if (elide_outer_quotes) + goto force_outer_quoting_style; + goto store_c; + } + /* No need to escape the escape if we are trying to elide outer quotes and nothing else is problematic. */ if (backslash_escapes && elide_outer_quotes && quote_string_len) @@ -488,6 +540,7 @@ STORE ('\''); STORE ('\\'); STORE ('\''); + pending_shell_escape_end = false; } break; @@ -601,9 +654,7 @@ { if (backslash_escapes && ! printable) { - if (elide_outer_quotes) - goto force_outer_quoting_style; - STORE ('\\'); + START_ESC (); STORE ('0' + (c >> 6)); STORE ('0' + ((c >> 3) & 7)); c = '0' + (c & 7); @@ -615,6 +666,7 @@ } if (ilim <= i + 1) break; + END_ESC (); STORE (c); c = arg[++i]; } @@ -624,18 +676,18 @@ } } - if (! ((backslash_escapes || elide_outer_quotes) + if (! (((backslash_escapes && quoting_style != shell_always_quoting_style) + || elide_outer_quotes) && quote_these_too && quote_these_too[c / INT_BITS] >> (c % INT_BITS) & 1) && !is_right_quote) goto store_c; store_escape: - if (elide_outer_quotes) - goto force_outer_quoting_style; - STORE ('\\'); + START_ESC (); store_c: + END_ESC (); STORE (c); } @@ -654,6 +706,8 @@ force_outer_quoting_style: /* Don't reuse quote_these_too, since the addition of outer quotes sufficiently quotes the specified characters. */ + if (quoting_style == shell_always_quoting_style && backslash_escapes) + quoting_style = shell_escape_always_quoting_style; return quotearg_buffer_restyled (buffer, buffersize, arg, argsize, quoting_style, flags & ~QA_ELIDE_OUTER_QUOTES, NULL, @@ -901,6 +955,15 @@ } char * +quotearg_n_style_colon (int n, enum quoting_style s, char const *arg) +{ + struct quoting_options options; + options = quoting_options_from_style (s); + set_char_quoting (&options, ':', 1); + return quotearg_n_options (n, arg, SIZE_MAX, &options); +} + +char * quotearg_n_custom (int n, char const *left_quote, char const *right_quote, char const *arg) { diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/quotearg.h gettext-0.19.7/gettext-tools/gnulib-lib/quotearg.h --- gettext-0.19.6/gettext-tools/gnulib-lib/quotearg.h 2015-09-11 03:03:55.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/quotearg.h 2015-12-27 23:08:31.000000000 +0000 @@ -73,6 +73,37 @@ */ shell_always_quoting_style, + /* Quote names for the shell if they contain shell metacharacters + or other problematic characters (ls --quoting-style=shell-escape). + Non printable characters are quoted using the $'...' syntax, + which originated in ksh93 and is widely supported by most shells, + and proposed for inclusion in POSIX. + + quotearg_buffer: + "simple", "''$'\\0'' '$'\\t\\n'\\''\"'$'\\033''??/\\'", "a:b" + quotearg: + "simple", "''$'\\0'' '$'\\t\\n'\\''\"'$'\\033''??/\\'", "a:b" + quotearg_colon: + "simple", "''$'\\0'' '$'\\t\\n'\\''\"'$'\\033''??/\\'", "'a:b'" + */ + shell_escape_quoting_style, + + /* Quote names for the shell even if they would normally not + require quoting (ls --quoting-style=shell-escape). + Non printable characters are quoted using the $'...' syntax, + which originated in ksh93 and is widely supported by most shells, + and proposed for inclusion in POSIX. Behaves like + shell_escape_quoting_style if QA_ELIDE_OUTER_QUOTES is in effect. + + quotearg_buffer: + "simple", "''$'\\0'' '$'\\t\\n'\\''\"'$'\\033''??/\'", "a:b" + quotearg: + "simple", "''$'\\0'' '$'\\t\\n'\\''\"'$'\\033''??/\'", "a:b" + quotearg_colon: + "simple", "''$'\\0'' '$'\\t\\n'\\''\"'$'\\033''??/\'", "'a:b'" + */ + shell_escape_always_quoting_style, + /* Quote names as for a C language string (ls --quoting-style=c). Behaves like c_maybe_quoting_style if QA_ELIDE_OUTER_QUOTES is in effect. Split into consecutive strings if @@ -247,7 +278,7 @@ struct quoting_options *clone_quoting_options (struct quoting_options *o); /* Get the value of O's quoting style. If O is null, use the default. */ -enum quoting_style get_quoting_style (struct quoting_options *o); +enum quoting_style get_quoting_style (struct quoting_options const *o); /* In O (or in the default if O is null), set the value of the quoting style to S. */ @@ -362,6 +393,9 @@ /* Like quotearg_colon (ARG), except it can quote null bytes. */ char *quotearg_colon_mem (char const *arg, size_t argsize); +/* Like quotearg_n_style, except with ':' quoting enabled. */ +char *quotearg_n_style_colon (int n, enum quoting_style s, char const *arg); + /* Like quotearg_n_style (N, S, ARG) but with S as custom_quoting_style with left quote as LEFT_QUOTE and right quote as RIGHT_QUOTE. See set_custom_quoting for a description of acceptable LEFT_QUOTE and diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/setlocale.c gettext-0.19.7/gettext-tools/gnulib-lib/setlocale.c --- gettext-0.19.6/gettext-tools/gnulib-lib/setlocale.c 2015-09-11 03:03:56.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/setlocale.c 2015-12-27 23:08:31.000000000 +0000 @@ -1,4 +1,4 @@ -/* Set the current locale. +/* Set the current locale. -*- coding: utf-8 -*- Copyright (C) 2009, 2011-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/set-permissions.c gettext-0.19.7/gettext-tools/gnulib-lib/set-permissions.c --- gettext-0.19.6/gettext-tools/gnulib-lib/set-permissions.c 2015-09-11 03:03:56.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/set-permissions.c 2015-12-27 23:08:31.000000000 +0000 @@ -1,4 +1,4 @@ -/* set-permissions.c - set permissions of a file +/* Set permissions of a file. -*- coding: utf-8 -*- Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc. diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/signbitd.c gettext-0.19.7/gettext-tools/gnulib-lib/signbitd.c --- gettext-0.19.6/gettext-tools/gnulib-lib/signbitd.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/signbitd.c 2015-12-27 23:08:31.000000000 +0000 @@ -0,0 +1,64 @@ +/* signbit() macro: Determine the sign bit of a floating-point number. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +/* Specification. */ +#include + +#include +#include "isnand-nolibm.h" +#include "float+.h" + +#ifdef gl_signbitd_OPTIMIZED_MACRO +# undef gl_signbitd +#endif + +int +gl_signbitd (double arg) +{ +#if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT + /* The use of a union to extract the bits of the representation of a + 'long double' is safe in practice, despite of the "aliasing rules" of + C99, because the GCC docs say + "Even with '-fstrict-aliasing', type-punning is allowed, provided the + memory is accessed through the union type." + and similarly for other compilers. */ +# define NWORDS \ + ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + union { double value; unsigned int word[NWORDS]; } m; + m.value = arg; + return (m.word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1; +#elif HAVE_COPYSIGN_IN_LIBC + return copysign (1.0, arg) < 0; +#else + /* This does not do the right thing for NaN, but this is irrelevant for + most use cases. */ + if (isnand (arg)) + return 0; + if (arg < 0.0) + return 1; + else if (arg == 0.0) + { + /* Distinguish 0.0 and -0.0. */ + static double plus_zero = 0.0; + double arg_mem = arg; + return (memcmp (&plus_zero, &arg_mem, SIZEOF_DBL) != 0); + } + else + return 0; +#endif +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/signbitf.c gettext-0.19.7/gettext-tools/gnulib-lib/signbitf.c --- gettext-0.19.6/gettext-tools/gnulib-lib/signbitf.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/signbitf.c 2015-12-27 23:08:31.000000000 +0000 @@ -0,0 +1,64 @@ +/* signbit() macro: Determine the sign bit of a floating-point number. + Copyright (C) 2007, 2009-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +/* Specification. */ +#include + +#include +#include "isnanf-nolibm.h" +#include "float+.h" + +#ifdef gl_signbitf_OPTIMIZED_MACRO +# undef gl_signbitf +#endif + +int +gl_signbitf (float arg) +{ +#if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT + /* The use of a union to extract the bits of the representation of a + 'long double' is safe in practice, despite of the "aliasing rules" of + C99, because the GCC docs say + "Even with '-fstrict-aliasing', type-punning is allowed, provided the + memory is accessed through the union type." + and similarly for other compilers. */ +# define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + union { float value; unsigned int word[NWORDS]; } m; + m.value = arg; + return (m.word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1; +#elif HAVE_COPYSIGNF_IN_LIBC + return copysignf (1.0f, arg) < 0; +#else + /* This does not do the right thing for NaN, but this is irrelevant for + most use cases. */ + if (isnanf (arg)) + return 0; + if (arg < 0.0f) + return 1; + else if (arg == 0.0f) + { + /* Distinguish 0.0f and -0.0f. */ + static float plus_zero = 0.0f; + float arg_mem = arg; + return (memcmp (&plus_zero, &arg_mem, SIZEOF_FLT) != 0); + } + else + return 0; +#endif +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/signbitl.c gettext-0.19.7/gettext-tools/gnulib-lib/signbitl.c --- gettext-0.19.6/gettext-tools/gnulib-lib/signbitl.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/signbitl.c 2015-12-27 23:08:31.000000000 +0000 @@ -0,0 +1,64 @@ +/* signbit() macro: Determine the sign bit of a floating-point number. + Copyright (C) 2007, 2009-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +/* Specification. */ +#include + +#include +#include "isnanl-nolibm.h" +#include "float+.h" + +#ifdef gl_signbitl_OPTIMIZED_MACRO +# undef gl_signbitl +#endif + +int +gl_signbitl (long double arg) +{ +#if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT + /* The use of a union to extract the bits of the representation of a + 'long double' is safe in practice, despite of the "aliasing rules" of + C99, because the GCC docs say + "Even with '-fstrict-aliasing', type-punning is allowed, provided the + memory is accessed through the union type." + and similarly for other compilers. */ +# define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + union { long double value; unsigned int word[NWORDS]; } m; + m.value = arg; + return (m.word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1; +#elif HAVE_COPYSIGNL_IN_LIBC + return copysignl (1.0L, arg) < 0; +#else + /* This does not do the right thing for NaN, but this is irrelevant for + most use cases. */ + if (isnanl (arg)) + return 0; + if (arg < 0.0L) + return 1; + else if (arg == 0.0L) + { + /* Distinguish 0.0L and -0.0L. */ + static long double plus_zero = 0.0L; + long double arg_mem = arg; + return (memcmp (&plus_zero, &arg_mem, SIZEOF_LDBL) != 0); + } + else + return 0; +#endif +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-lib/unistd.c gettext-0.19.7/gettext-tools/gnulib-lib/unistd.c --- gettext-0.19.6/gettext-tools/gnulib-lib/unistd.c 2015-09-11 03:03:56.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-lib/unistd.c 2015-12-27 23:08:32.000000000 +0000 @@ -1,3 +1,4 @@ #include #define _GL_UNISTD_INLINE _GL_EXTERN_INLINE #include "unistd.h" +typedef int dummy; diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/check-math-lib.m4 gettext-0.19.7/gettext-tools/gnulib-m4/check-math-lib.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/check-math-lib.m4 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/check-math-lib.m4 2015-12-27 23:08:32.000000000 +0000 @@ -0,0 +1,32 @@ +# check-math-lib.m4 serial 4 +dnl Copyright (C) 2007, 2009-2015 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 +dnl gl_CHECK_MATH_LIB (VARIABLE, EXPRESSION [, EXTRA-CODE]) +dnl +dnl Sets the shell VARIABLE according to the libraries needed by EXPRESSION +dnl to compile and link: to the empty string if no extra libraries are needed, +dnl to "-lm" if -lm is needed, or to "missing" if it does not compile and +dnl link either way. +dnl +dnl Example: gl_CHECK_MATH_LIB([ROUNDF_LIBM], [x = roundf (x);]) +AC_DEFUN([gl_CHECK_MATH_LIB], [ + save_LIBS=$LIBS + $1=missing + for libm in "" "-lm"; do + LIBS="$save_LIBS $libm" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #ifndef __NO_MATH_INLINES + # define __NO_MATH_INLINES 1 /* for glibc */ + #endif + #include + $3 + double x;]], + [$2])], + [$1=$libm +break]) + done + LIBS=$save_LIBS +]) diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/ctype.m4 gettext-0.19.7/gettext-tools/gnulib-m4/ctype.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/ctype.m4 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/ctype.m4 2015-12-27 23:08:32.000000000 +0000 @@ -0,0 +1,32 @@ +# ctype_h.m4 serial 6 +dnl Copyright (C) 2009-2015 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. + +AC_DEFUN([gl_CTYPE_H], +[ + AC_REQUIRE([gl_CTYPE_H_DEFAULTS]) + + dnl is always overridden, because of GNULIB_POSIXCHECK. + gl_NEXT_HEADERS([ctype.h]) + + dnl Check for declarations of anything we want to poison if the + dnl corresponding gnulib module is not in use. + gl_WARN_ON_USE_PREPARE([[#include + ]], [isblank]) +]) + +AC_DEFUN([gl_CTYPE_MODULE_INDICATOR], +[ + dnl Use AC_REQUIRE here, so that the default settings are expanded once only. + AC_REQUIRE([gl_CTYPE_H_DEFAULTS]) + gl_MODULE_INDICATOR_SET_VARIABLE([$1]) +]) + +AC_DEFUN([gl_CTYPE_H_DEFAULTS], +[ + GNULIB_ISBLANK=0; AC_SUBST([GNULIB_ISBLANK]) + dnl Assume proper GNU behavior unless another module says otherwise. + HAVE_ISBLANK=1; AC_SUBST([HAVE_ISBLANK]) +]) diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/exponentf.m4 gettext-0.19.7/gettext-tools/gnulib-m4/exponentf.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/exponentf.m4 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/exponentf.m4 2015-12-27 23:08:32.000000000 +0000 @@ -0,0 +1,92 @@ +# exponentf.m4 serial 2 +dnl Copyright (C) 2007-2008, 2010-2015 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. +AC_DEFUN([gl_FLOAT_EXPONENT_LOCATION], +[ + AC_CACHE_CHECK([where to find the exponent in a 'float'], + [gl_cv_cc_float_expbit0], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { float value; unsigned int word[NWORDS]; } memory_float; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (float x) +{ + memory_float m; + size_t i; + /* Clear it first, in case + sizeof (float) < sizeof (memory_float). */ + memset (&m, 0, sizeof (memory_float)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25f); + add_to_ored_words (0.5f); + add_to_ored_words (1.0f); + add_to_ored_words (2.0f); + add_to_ored_words (4.0f); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); +} + ]])], + [gl_cv_cc_float_expbit0=`cat conftest.out`], + [gl_cv_cc_float_expbit0="unknown"], + [gl_cv_cc_float_expbit0="word 0 bit 23"]) + rm -f conftest.out + ]) + case "$gl_cv_cc_float_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'` + AC_DEFINE_UNQUOTED([FLT_EXPBIT0_WORD], [$word], + [Define as the word index where to find the exponent of 'float'.]) + AC_DEFINE_UNQUOTED([FLT_EXPBIT0_BIT], [$bit], + [Define as the bit index in the word where to find bit 0 of the exponent of 'float'.]) + ;; + esac +]) diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/exponentl.m4 gettext-0.19.7/gettext-tools/gnulib-m4/exponentl.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/exponentl.m4 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/exponentl.m4 2015-12-27 23:08:32.000000000 +0000 @@ -0,0 +1,98 @@ +# exponentl.m4 serial 3 +dnl Copyright (C) 2007-2015 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. +AC_DEFUN([gl_LONG_DOUBLE_EXPONENT_LOCATION], +[ + AC_REQUIRE([gl_BIGENDIAN]) + AC_CACHE_CHECK([where to find the exponent in a 'long double'], + [gl_cv_cc_long_double_expbit0], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#include +#include +#include +#define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { long double value; unsigned int word[NWORDS]; } + memory_long_double; +static unsigned int ored_words[NWORDS]; +static unsigned int anded_words[NWORDS]; +static void add_to_ored_words (long double x) +{ + memory_long_double m; + size_t i; + /* Clear it first, in case + sizeof (long double) < sizeof (memory_long_double). */ + memset (&m, 0, sizeof (memory_long_double)); + m.value = x; + for (i = 0; i < NWORDS; i++) + { + ored_words[i] |= m.word[i]; + anded_words[i] &= m.word[i]; + } +} +int main () +{ + size_t j; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + for (j = 0; j < NWORDS; j++) + anded_words[j] = ~ (unsigned int) 0; + add_to_ored_words (0.25L); + add_to_ored_words (0.5L); + add_to_ored_words (1.0L); + add_to_ored_words (2.0L); + add_to_ored_words (4.0L); + /* Remove bits that are common (e.g. if representation of the first mantissa + bit is explicit). */ + for (j = 0; j < NWORDS; j++) + ored_words[j] &= ~anded_words[j]; + /* Now find the nonzero word. */ + for (j = 0; j < NWORDS; j++) + if (ored_words[j] != 0) + break; + if (j < NWORDS) + { + size_t i; + for (i = j + 1; i < NWORDS; i++) + if (ored_words[i] != 0) + { + fprintf (fp, "unknown"); + return (fclose (fp) != 0); + } + for (i = 0; ; i++) + if ((ored_words[j] >> i) & 1) + { + fprintf (fp, "word %d bit %d", (int) j, (int) i); + return (fclose (fp) != 0); + } + } + fprintf (fp, "unknown"); + return (fclose (fp) != 0); +} + ]])], + [gl_cv_cc_long_double_expbit0=`cat conftest.out`], + [gl_cv_cc_long_double_expbit0="unknown"], + [ + dnl When cross-compiling, we don't know. It depends on the + dnl ABI and compiler version. There are too many cases. + gl_cv_cc_long_double_expbit0="unknown" + ]) + rm -f conftest.out + ]) + case "$gl_cv_cc_long_double_expbit0" in + word*bit*) + word=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word.*bit //'` + AC_DEFINE_UNQUOTED([LDBL_EXPBIT0_WORD], [$word], + [Define as the word index where to find the exponent of 'long double'.]) + AC_DEFINE_UNQUOTED([LDBL_EXPBIT0_BIT], [$bit], + [Define as the bit index in the word where to find bit 0 of the exponent of 'long double'.]) + ;; + esac +]) diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/fabs.m4 gettext-0.19.7/gettext-tools/gnulib-m4/fabs.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/fabs.m4 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/fabs.m4 2015-12-27 23:08:32.000000000 +0000 @@ -0,0 +1,11 @@ +# fabs.m4 serial 1 +dnl Copyright (C) 2011-2015 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. + +AC_DEFUN([gl_FUNC_FABS], +[ + dnl Determine FABS_LIBM. + gl_MATHFUNC([fabs], [double], [(double)]) +]) diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/fnmatch.m4 gettext-0.19.7/gettext-tools/gnulib-m4/fnmatch.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/fnmatch.m4 2015-09-11 03:03:57.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/fnmatch.m4 2015-12-27 23:08:32.000000000 +0000 @@ -1,4 +1,4 @@ -# Check for fnmatch - serial 9. +# Check for fnmatch - serial 9. -*- coding: utf-8 -*- # Copyright (C) 2000-2007, 2009-2015 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/fpieee.m4 gettext-0.19.7/gettext-tools/gnulib-m4/fpieee.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/fpieee.m4 2015-09-11 03:03:57.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/fpieee.m4 2015-12-27 23:08:32.000000000 +0000 @@ -1,4 +1,4 @@ -# fpieee.m4 serial 2 +# fpieee.m4 serial 2 -*- coding: utf-8 -*- dnl Copyright (C) 2007, 2009-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/gnulib-cache.m4 gettext-0.19.7/gettext-tools/gnulib-m4/gnulib-cache.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/gnulib-cache.m4 2015-09-11 03:04:08.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/gnulib-cache.m4 2015-12-27 23:08:42.000000000 +0000 @@ -27,7 +27,7 @@ # Specification in the form of a command-line invocation: -# gnulib-tool --import --dir=gettext-tools --local-dir=gnulib-local --lib=libgettextlib --source-base=gnulib-lib --m4-base=gnulib-m4 --doc-base=doc --tests-base=gnulib-tests --aux-dir=../build-aux --with-tests --avoid=hash-tests --avoid=unilbrk/u8-possible-linebreaks-tests --avoid=unilbrk/ulc-width-linebreaks-tests --avoid=unistr/u8-mbtouc-tests --avoid=unistr/u8-mbtouc-unsafe-tests --avoid=uniwidth/width-tests --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gl alloca-opt ansi-c++-opt atexit backupfile basename binary-io bison-i18n byteswap c-ctype c-strcase c-strcasestr c-strstr clean-temp closedir closeout copy-file csharpcomp csharpcomp-script csharpexec csharpexec-script error error-progname execute extensions fd-ostream file-ostream filename findprog fnmatch fopen fstrcmp full-write fwriteerror gcd gcj getline getopt-gnu gettext-h gettext-tools-misc hash html-styled-ostream iconv include_next java javacomp javacomp-script javaexec javaexec-script libunistring-optional localcharset locale localename lock malloc-posix mbrtowc mbsinit memmove memset minmax multiarch obstack open opendir openmp ostream pipe-filter-ii progname propername readdir relocatable-prog relocatable-script setlocale sh-quote sigpipe sigprocmask snippet/arg-nonnull snippet/c++defs snippet/warn-on-use spawn-pipe ssize_t stdbool stddef stdint stdio stdlib stpcpy stpncpy strcspn streq strerror strpbrk strtol strtoul styled-ostream sys_select sys_stat sys_time term-styled-ostream unictype/ctype-space unilbrk/ulc-width-linebreaks uniname/uniname unistd unistr/u16-mbtouc unistr/u8-mbtouc unistr/u8-mbtoucr unistr/u8-uctomb uniwidth/width unlocked-io vasprintf verify wait-process wchar wctype-h write xalloc xconcat-filename xerror xmalloca xsetenv xstriconv xstriconveh xvasprintf +# gnulib-tool --import --local-dir=gnulib-local --lib=libgettextlib --source-base=gnulib-lib --m4-base=gnulib-m4 --doc-base=doc --tests-base=gnulib-tests --aux-dir=../build-aux --with-tests --avoid=hash-tests --avoid=unilbrk/u8-possible-linebreaks-tests --avoid=unilbrk/ulc-width-linebreaks-tests --avoid=unistr/u8-mbtouc-tests --avoid=unistr/u8-mbtouc-unsafe-tests --avoid=uniwidth/width-tests --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gl alloca-opt ansi-c++-opt atexit backupfile basename binary-io bison-i18n byteswap c-ctype c-strcase c-strcasestr c-strstr clean-temp closedir closeout copy-file csharpcomp csharpcomp-script csharpexec csharpexec-script error error-progname execute extensions fd-ostream file-ostream filename findprog fnmatch fopen fstrcmp full-write fwriteerror gcd gcj getline getopt-gnu gettext-h gettext-tools-misc hash html-styled-ostream iconv include_next java javacomp javacomp-script javaexec javaexec-script libunistring-optional localcharset locale localename lock malloc-posix mbrtowc mbsinit memmove memset minmax multiarch obstack open opendir openmp ostream pipe-filter-ii progname propername readdir relocatable-prog relocatable-script setlocale sh-quote sigpipe sigprocmask snippet/arg-nonnull snippet/c++defs snippet/warn-on-use spawn-pipe ssize_t stdbool stddef stdint stdio stdlib stpcpy stpncpy strcspn streq strerror strpbrk strtol strtoul styled-ostream sys_select sys_stat sys_time term-styled-ostream trim unictype/ctype-space unilbrk/ulc-width-linebreaks uniname/uniname unistd unistr/u16-mbtouc unistr/u8-mbtouc unistr/u8-mbtoucr unistr/u8-uctomb uniwidth/width unlocked-io vasprintf verify wait-process wchar wctype-h write xalloc xconcat-filename xerror xmalloca xsetenv xstriconv xstriconveh xvasprintf # Specification in the form of a few gnulib-tool.m4 macro invocations: gl_LOCAL_DIR([../gnulib-local]) @@ -130,6 +130,7 @@ sys_stat sys_time term-styled-ostream + trim unictype/ctype-space unilbrk/ulc-width-linebreaks uniname/uniname diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/gnulib-common.m4 gettext-0.19.7/gettext-tools/gnulib-m4/gnulib-common.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/gnulib-common.m4 2015-09-11 03:03:57.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/gnulib-common.m4 2015-12-27 23:08:32.000000000 +0000 @@ -253,9 +253,10 @@ [ dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler dnl as "cc", and GCC as "gcc". They have different object file formats and - dnl library formats. In particular, the GNU binutils programs ar, ranlib + dnl library formats. In particular, the GNU binutils programs ar and ranlib dnl produce libraries that work only with gcc, not with cc. AC_REQUIRE([AC_PROG_CC]) + AC_BEFORE([$0], [AM_PROG_AR]) AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler], [ AC_EGREP_CPP([Amsterdam], @@ -267,25 +268,37 @@ [gl_cv_c_amsterdam_compiler=yes], [gl_cv_c_amsterdam_compiler=no]) ]) - if test -z "$AR"; then - if test $gl_cv_c_amsterdam_compiler = yes; then + + dnl Don't compete with AM_PROG_AR's decision about AR/ARFLAGS if we are not + dnl building with __ACK__. + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then AR='cc -c.a' - if test -z "$ARFLAGS"; then - ARFLAGS='-o' - fi - else - dnl Use the Automake-documented default values for AR and ARFLAGS, - dnl but prefer ${host}-ar over ar (useful for cross-compiling). - AC_CHECK_TOOL([AR], [ar], [ar]) - if test -z "$ARFLAGS"; then - ARFLAGS='cr' - fi fi - else if test -z "$ARFLAGS"; then - ARFLAGS='cr' + ARFLAGS='-o' fi + else + dnl AM_PROG_AR was added in automake v1.11.2. AM_PROG_AR does not AC_SUBST + dnl ARFLAGS variable (it is filed into Makefile.in directly by automake + dnl script on-demand, if not specified by ./configure of course). + dnl Don't AC_REQUIRE the AM_PROG_AR otherwise the code for __ACK__ above + dnl will be ignored. Also, pay attention to call AM_PROG_AR in else block + dnl because AM_PROG_AR is written so it could re-set AR variable even for + dnl __ACK__. It may seem like its easier to avoid calling the macro here, + dnl but we need to AC_SUBST both AR/ARFLAGS (thus those must have some good + dnl default value and automake should usually know them). + m4_ifdef([AM_PROG_AR], [AM_PROG_AR], [:]) + fi + + dnl In case the code above has not helped with setting AR/ARFLAGS, use + dnl Automake-documented default values for AR and ARFLAGS, but prefer + dnl ${host}-ar over ar (useful for cross-compiling). + AC_CHECK_TOOL([AR], [ar], [ar]) + if test -z "$ARFLAGS"; then + ARFLAGS='cr' fi + AC_SUBST([AR]) AC_SUBST([ARFLAGS]) if test -z "$RANLIB"; then diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/gnulib-comp.m4 gettext-0.19.7/gettext-tools/gnulib-m4/gnulib-comp.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/gnulib-comp.m4 2015-09-11 03:04:11.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/gnulib-comp.m4 2015-12-27 23:08:46.000000000 +0000 @@ -37,7 +37,11 @@ m4_pattern_allow([^gl_ES$])dnl a valid locale name m4_pattern_allow([^gl_LIBOBJS$])dnl a variable m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable + + # Pre-early section. + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_PROG_AR_RANLIB]) + AC_REQUIRE([AM_PROG_CC_C_O]) # Code from module absolute-header: # Code from module acl: @@ -94,6 +98,8 @@ # Code from module csharpcomp-script: # Code from module csharpexec: # Code from module csharpexec-script: + # Code from module ctype: + # Code from module ctype-tests: # Code from module diffseq: # Code from module dirent: # Code from module dirent-tests: @@ -112,8 +118,9 @@ # Code from module execute: # Code from module exitfail: # Code from module extensions: - AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # Code from module extern-inline: + # Code from module fabs: + # Code from module fabs-tests: # Code from module fatal-signal: # Code from module fcntl: # Code from module fcntl-h: @@ -191,6 +198,22 @@ # Code from module inttypes: # Code from module inttypes-incomplete: # Code from module inttypes-tests: + # Code from module isinf: + # Code from module isinf-tests: + # Code from module isnan: + # Code from module isnan-tests: + # Code from module isnand: + # Code from module isnand-nolibm: + # Code from module isnand-nolibm-tests: + # Code from module isnand-tests: + # Code from module isnanf: + # Code from module isnanf-nolibm: + # Code from module isnanf-nolibm-tests: + # Code from module isnanf-tests: + # Code from module isnanl: + # Code from module isnanl-nolibm: + # Code from module isnanl-nolibm-tests: + # Code from module isnanl-tests: # Code from module iswblank: # Code from module iswblank-tests: # Code from module java: @@ -217,6 +240,8 @@ # Code from module localename-tests: # Code from module lock: # Code from module lock-tests: + # Code from module log10: + # Code from module log10-tests: # Code from module lseek: # Code from module lseek-tests: # Code from module lstat: @@ -224,6 +249,8 @@ # Code from module malloc-posix: # Code from module malloca: # Code from module malloca-tests: + # Code from module math: + # Code from module math-tests: # Code from module mbchar: # Code from module mbiter: # Code from module mbrtowc: @@ -279,6 +306,8 @@ # Code from module posix_spawnattr_setsigmask: # Code from module posix_spawnp: # Code from module posix_spawnp-tests: + # Code from module pow: + # Code from module pow-tests: # Code from module progname: # Code from module propername: # Code from module putenv: @@ -321,6 +350,8 @@ # Code from module sigaction-tests: # Code from module signal-h: # Code from module signal-h-tests: + # Code from module signbit: + # Code from module signbit-tests: # Code from module sigpipe: # Code from module sigpipe-tests: # Code from module sigprocmask: @@ -575,6 +606,7 @@ AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])]) gl_EXECUTE AC_REQUIRE([gl_EXTERN_INLINE]) + gl_FUNC_FABS gl_FATAL_SIGNAL gl_FUNC_FCNTL if test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1; then @@ -670,6 +702,55 @@ AC_LIBOBJ([iconv_close]) fi gl_INLINE + gl_ISINF + if test $REPLACE_ISINF = 1; then + AC_LIBOBJ([isinf]) + fi + gl_MATH_MODULE_INDICATOR([isinf]) + gl_ISNAN + gl_MATH_MODULE_INDICATOR([isnan]) + gl_FUNC_ISNAND + m4_ifdef([gl_ISNAN], [ + AC_REQUIRE([gl_ISNAN]) + ]) + if test $HAVE_ISNAND = 0 || test $REPLACE_ISNAN = 1; then + AC_LIBOBJ([isnand]) + gl_PREREQ_ISNAND + fi + gl_MATH_MODULE_INDICATOR([isnand]) + gl_FUNC_ISNAND_NO_LIBM + if test $gl_func_isnand_no_libm != yes; then + AC_LIBOBJ([isnand]) + gl_PREREQ_ISNAND + fi + gl_FUNC_ISNANF + m4_ifdef([gl_ISNAN], [ + AC_REQUIRE([gl_ISNAN]) + ]) + if test $HAVE_ISNANF = 0 || test $REPLACE_ISNAN = 1; then + AC_LIBOBJ([isnanf]) + gl_PREREQ_ISNANF + fi + gl_MATH_MODULE_INDICATOR([isnanf]) + gl_FUNC_ISNANF_NO_LIBM + if test $gl_func_isnanf_no_libm != yes; then + AC_LIBOBJ([isnanf]) + gl_PREREQ_ISNANF + fi + gl_FUNC_ISNANL + m4_ifdef([gl_ISNAN], [ + AC_REQUIRE([gl_ISNAN]) + ]) + if test $HAVE_ISNANL = 0 || test $REPLACE_ISNAN = 1; then + AC_LIBOBJ([isnanl]) + gl_PREREQ_ISNANL + fi + gl_MATH_MODULE_INDICATOR([isnanl]) + gl_FUNC_ISNANL_NO_LIBM + if test $gl_func_isnanl_no_libm != yes; then + AC_LIBOBJ([isnanl]) + gl_PREREQ_ISNANL + fi gl_FUNC_ISWBLANK if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then : @@ -697,6 +778,11 @@ gl_LOCALENAME gl_LOCK gl_MODULE_INDICATOR([lock]) + gl_FUNC_LOG10 + if test $REPLACE_LOG10 = 1; then + AC_LIBOBJ([log10]) + fi + gl_MATH_MODULE_INDICATOR([log10]) gl_FUNC_LSTAT if test $REPLACE_LSTAT = 1; then AC_LIBOBJ([lstat]) @@ -709,6 +795,7 @@ fi gl_STDLIB_MODULE_INDICATOR([malloc-posix]) gl_MALLOCA + gl_MATH_H gl_MBCHAR gl_MBITER gl_FUNC_MBRTOWC @@ -840,6 +927,7 @@ gl_PREREQ_POSIX_SPAWN_INTERNAL fi gl_SPAWN_MODULE_INDICATOR([posix_spawnp]) + gl_FUNC_POW AC_CHECK_DECLS([program_invocation_name], [], [], [#include ]) AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include ]) m4_ifdef([AM_XGETTEXT_OPTION], @@ -926,6 +1014,13 @@ fi gl_SIGNAL_MODULE_INDICATOR([sigaction]) gl_SIGNAL_H + gl_SIGNBIT + if test $REPLACE_SIGNBIT = 1; then + AC_LIBOBJ([signbitf]) + AC_LIBOBJ([signbitd]) + AC_LIBOBJ([signbitl]) + fi + gl_MATH_MODULE_INDICATOR([signbit]) gl_SIGNAL_SIGPIPE dnl Define the C macro GNULIB_SIGPIPE to 1. gl_MODULE_INDICATOR([sigpipe]) @@ -1180,6 +1275,7 @@ gt_LOCALE_FR_UTF8 gt_LOCALE_FR gt_LOCALE_TR_UTF8 + gl_CTYPE_H gl_FUNC_DUP if test $REPLACE_DUP = 1; then AC_LIBOBJ([dup]) @@ -1219,6 +1315,22 @@ gl_UNISTD_MODULE_INDICATOR([getpagesize]) gl_INTTYPES_H gl_INTTYPES_INCOMPLETE + gl_FLOAT_EXPONENT_LOCATION + gl_DOUBLE_EXPONENT_LOCATION + gl_LONG_DOUBLE_EXPONENT_LOCATION + AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) + gl_FLOAT_EXPONENT_LOCATION + gl_DOUBLE_EXPONENT_LOCATION + gl_LONG_DOUBLE_EXPONENT_LOCATION + AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) + gl_DOUBLE_EXPONENT_LOCATION + gl_DOUBLE_EXPONENT_LOCATION + gl_FLOAT_EXPONENT_LOCATION + gl_FLOAT_EXPONENT_LOCATION + gl_LONG_DOUBLE_EXPONENT_LOCATION + AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) + gl_LONG_DOUBLE_EXPONENT_LOCATION + AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) AC_CHECK_FUNCS_ONCE([newlocale]) AC_CHECK_FUNCS_ONCE([newlocale]) gl_FUNC_LSEEK @@ -1275,6 +1387,9 @@ gt_LOCALE_FR_UTF8 gt_LOCALE_JA gt_LOCALE_ZH_CN + AC_REQUIRE([gl_FLOAT_EXPONENT_LOCATION]) + AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION]) + AC_REQUIRE([gl_LONG_DOUBLE_EXPONENT_LOCATION]) gl_FUNC_SLEEP if test $HAVE_SLEEP = 0 || test $REPLACE_SLEEP = 1; then AC_LIBOBJ([sleep]) @@ -1597,6 +1712,14 @@ lib/iconveh.h lib/ignore-value.h lib/intprops.h + lib/isinf.c + lib/isnan.c + lib/isnand-nolibm.h + lib/isnand.c + lib/isnanf-nolibm.h + lib/isnanf.c + lib/isnanl-nolibm.h + lib/isnanl.c lib/iswblank.c lib/itold.c lib/javacomp.c @@ -1674,6 +1797,8 @@ lib/libxml/SAX.in.h lib/libxml/SAX2.c lib/libxml/SAX2.in.h + lib/libxml/buf.c + lib/libxml/buf.h lib/libxml/c14n.c lib/libxml/c14n.in.h lib/libxml/catalog.c @@ -1685,6 +1810,7 @@ lib/libxml/dict.c lib/libxml/dict.in.h lib/libxml/elfgcchack.h + lib/libxml/enc.h lib/libxml/encoding.c lib/libxml/encoding.in.h lib/libxml/entities.c @@ -1710,13 +1836,16 @@ lib/libxml/pattern.in.h lib/libxml/relaxng.c lib/libxml/relaxng.in.h + lib/libxml/save.h lib/libxml/schemasInternals.in.h lib/libxml/schematron.c lib/libxml/schematron.in.h lib/libxml/threads.c lib/libxml/threads.in.h + lib/libxml/timsort.h lib/libxml/tree.c lib/libxml/tree.in.h + lib/libxml/trionan.c lib/libxml/uri.c lib/libxml/uri.in.h lib/libxml/valid.c @@ -1761,11 +1890,14 @@ lib/locale.in.h lib/localename.c lib/localename.h + lib/log10.c lib/lstat.c lib/malloc.c lib/malloca.c lib/malloca.h lib/malloca.valgrind + lib/math.c + lib/math.in.h lib/mbchar.c lib/mbchar.h lib/mbiter.c @@ -1849,6 +1981,9 @@ lib/sig-handler.h lib/sigaction.c lib/signal.in.h + lib/signbitd.c + lib/signbitf.c + lib/signbitl.c lib/sigprocmask.c lib/size_max.h lib/snprintf.c @@ -2011,6 +2146,7 @@ m4/btowc.m4 m4/byteswap.m4 m4/canonicalize.m4 + m4/check-math-lib.m4 m4/close.m4 m4/closedir.m4 m4/codeset.m4 @@ -2019,6 +2155,7 @@ m4/csharp.m4 m4/csharpcomp.m4 m4/csharpexec.m4 + m4/ctype.m4 m4/curses.m4 m4/dirent_h.m4 m4/double-slash-root.m4 @@ -2031,8 +2168,11 @@ m4/error.m4 m4/execute.m4 m4/exponentd.m4 + m4/exponentf.m4 + m4/exponentl.m4 m4/extensions.m4 m4/extern-inline.m4 + m4/fabs.m4 m4/fatal-signal.m4 m4/fcntl-o.m4 m4/fcntl.m4 @@ -2073,6 +2213,11 @@ m4/inttypes-pri.m4 m4/inttypes.m4 m4/inttypes_h.m4 + m4/isinf.m4 + m4/isnan.m4 + m4/isnand.m4 + m4/isnanf.m4 + m4/isnanl.m4 m4/iswblank.m4 m4/java.m4 m4/javacomp.m4 @@ -2097,12 +2242,14 @@ m4/locale_h.m4 m4/localename.m4 m4/lock.m4 + m4/log10.m4 m4/longlong.m4 m4/lseek.m4 m4/lstat.m4 m4/malloc.m4 m4/malloca.m4 m4/math_h.m4 + m4/mathfunc.m4 m4/mbchar.m4 m4/mbiter.m4 m4/mbrtowc.m4 @@ -2135,6 +2282,7 @@ m4/pipe2.m4 m4/po.m4 m4/posix_spawn.m4 + m4/pow.m4 m4/printf-posix.m4 m4/printf.m4 m4/progtest.m4 @@ -2161,6 +2309,7 @@ m4/sigaction.m4 m4/signal_h.m4 m4/signalblocking.m4 + m4/signbit.m4 m4/sigpipe.m4 m4/size_max.m4 m4/sleep.m4 @@ -2228,8 +2377,12 @@ m4/xsize.m4 m4/xvasprintf.m4 m4/yield.m4 + tests/infinity.h tests/init.sh tests/macros.h + tests/minus-zero.h + tests/nan.h + tests/randomd.c tests/signature.h tests/test-alignof.c tests/test-alloca-opt.c @@ -2262,12 +2415,15 @@ tests/test-copy-file-2.sh tests/test-copy-file.c tests/test-copy-file.sh + tests/test-ctype.c tests/test-dirent.c tests/test-dup-safer.c tests/test-dup.c tests/test-dup2.c tests/test-environ.c tests/test-errno.c + tests/test-fabs.c + tests/test-fabs.h tests/test-fcntl-h.c tests/test-fcntl.c tests/test-fdopen.c @@ -2309,17 +2465,31 @@ tests/test-init.sh tests/test-intprops.c tests/test-inttypes.c + tests/test-isinf.c + tests/test-isnan.c + tests/test-isnand-nolibm.c + tests/test-isnand.c + tests/test-isnand.h + tests/test-isnanf-nolibm.c + tests/test-isnanf.c + tests/test-isnanf.h + tests/test-isnanl-nolibm.c + tests/test-isnanl.c + tests/test-isnanl.h tests/test-iswblank.c tests/test-langinfo.c tests/test-linkedhash_list.c tests/test-locale.c tests/test-localename.c tests/test-lock.c + tests/test-log10.c + tests/test-log10.h tests/test-lseek.c tests/test-lseek.sh tests/test-lstat.c tests/test-lstat.h tests/test-malloca.c + tests/test-math.c tests/test-mbrtowc-w32-1.sh tests/test-mbrtowc-w32-2.sh tests/test-mbrtowc-w32-3.sh @@ -2371,6 +2541,7 @@ tests/test-posix_spawn_file_actions_addclose.c tests/test-posix_spawn_file_actions_adddup2.c tests/test-posix_spawn_file_actions_addopen.c + tests/test-pow.c tests/test-quotearg-simple.c tests/test-quotearg.h tests/test-raise.c @@ -2395,6 +2566,7 @@ tests/test-sh-quote.c tests/test-sigaction.c tests/test-signal-h.c + tests/test-signbit.c tests/test-sigpipe.c tests/test-sigpipe.sh tests/test-sigprocmask.c @@ -2438,6 +2610,7 @@ tests/test-term-ostream-xterm-aix51.out tests/test-term-ostream-xterm-basic-italic.out tests/test-term-ostream-xterm-basic.out + tests/test-term-ostream-xterm-freebsd101.out tests/test-term-ostream-xterm-irix65.out tests/test-term-ostream-xterm-linux-debian.out tests/test-term-ostream-xterm-linux-mandriva.out @@ -2497,6 +2670,7 @@ tests/unistr/test-u8-uctomb.c tests/zerosize-ptr.h tests=lib/btowc.c + tests=lib/ctype.in.h tests=lib/dup.c tests=lib/fdopen.c tests=lib/file-has-acl.c diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/isinf.m4 gettext-0.19.7/gettext-tools/gnulib-m4/isinf.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/isinf.m4 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/isinf.m4 2015-12-27 23:08:32.000000000 +0000 @@ -0,0 +1,156 @@ +# isinf.m4 serial 11 +dnl Copyright (C) 2007-2015 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. + +AC_DEFUN([gl_ISINF], +[ + AC_REQUIRE([gl_MATH_H_DEFAULTS]) + dnl Persuade glibc to declare isinf. + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + AC_CHECK_DECLS([isinf], , , + [[#include + #ifndef isinf + #error "isinf must be a macro, not a function" + #endif + ]]) + if test "$ac_cv_have_decl_isinf" = yes; then + gl_CHECK_MATH_LIB([ISINF_LIBM], [x = isinf (x) + isinf ((float) x);]) + if test "$ISINF_LIBM" != missing; then + dnl Test whether isinf() on 'long double' works. + gl_ISINFL_WORKS + case "$gl_cv_func_isinfl_works" in + *yes) ;; + *) ISINF_LIBM=missing;; + esac + fi + fi + if test "$ac_cv_have_decl_isinf" != yes || + test "$ISINF_LIBM" = missing; then + REPLACE_ISINF=1 + dnl No libraries are needed to link lib/isinf.c. + ISINF_LIBM= + fi + AC_SUBST([ISINF_LIBM]) +]) + +dnl Test whether isinf() works: +dnl 1) Whether it correctly returns false for LDBL_MAX. +dnl 2) Whether on 'long double' recognizes all canonical values which are +dnl infinite. +AC_DEFUN([gl_ISINFL_WORKS], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([gl_BIGENDIAN]) + AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([whether isinf(long double) works], [gl_cv_func_isinfl_works], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#include +#include +#define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { unsigned int word[NWORDS]; long double value; } + memory_long_double; +/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the + runtime type conversion. */ +#ifdef __sgi +static long double NaNl () +{ + double zero = 0.0; + return zero / zero; +} +#else +# define NaNl() (0.0L / 0.0L) +#endif +int main () +{ + int result = 0; + + if (isinf (LDBL_MAX)) + result |= 1; + + { + memory_long_double m; + unsigned int i; + + /* The isinf macro should be immune against changes in the sign bit and + in the mantissa bits. The xor operation twiddles a bit that can only be + a sign bit or a mantissa bit (since the exponent never extends to + bit 31). */ + m.value = NaNl (); + m.word[NWORDS / 2] ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); + for (i = 0; i < NWORDS; i++) + m.word[i] |= 1; + if (isinf (m.value)) + result |= 2; + } + +#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE +/* Representation of an 80-bit 'long double' as an initializer for a sequence + of 'unsigned int' words. */ +# ifdef WORDS_BIGENDIAN +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ + ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \ + (unsigned int) (mantlo) << 16 \ + } +# else +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { mantlo, manthi, exponent } +# endif + { /* Quiet NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; + if (isinf (x.value)) + result |= 2; + } + { + /* Signalling NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; + if (isinf (x.value)) + result |= 2; + } + /* isinf should return something even for noncanonical values. */ + { /* Pseudo-NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; + if (isinf (x.value) && !isinf (x.value)) + result |= 4; + } + { /* Pseudo-Infinity. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; + if (isinf (x.value) && !isinf (x.value)) + result |= 8; + } + { /* Pseudo-Zero. */ + static memory_long_double x = + { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; + if (isinf (x.value) && !isinf (x.value)) + result |= 16; + } + { /* Unnormalized number. */ + static memory_long_double x = + { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; + if (isinf (x.value) && !isinf (x.value)) + result |= 32; + } + { /* Pseudo-Denormal. */ + static memory_long_double x = + { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; + if (isinf (x.value) && !isinf (x.value)) + result |= 64; + } +#endif + + return result; +}]])], [gl_cv_func_isinfl_works=yes], [gl_cv_func_isinfl_works=no], + [gl_cv_func_isinfl_works="guessing yes"]) + ]) +]) diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/isnand.m4 gettext-0.19.7/gettext-tools/gnulib-m4/isnand.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/isnand.m4 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/isnand.m4 2015-12-27 23:08:32.000000000 +0000 @@ -0,0 +1,96 @@ +# isnand.m4 serial 11 +dnl Copyright (C) 2007-2015 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 Check how to get or define isnand(). + +AC_DEFUN([gl_FUNC_ISNAND], +[ + AC_REQUIRE([gl_MATH_H_DEFAULTS]) + ISNAND_LIBM= + gl_HAVE_ISNAND_NO_LIBM + if test $gl_cv_func_isnand_no_libm = no; then + gl_HAVE_ISNAND_IN_LIBM + if test $gl_cv_func_isnand_in_libm = yes; then + ISNAND_LIBM=-lm + fi + fi + dnl The variable gl_func_isnand set here is used by isnan.m4. + if test $gl_cv_func_isnand_no_libm = yes \ + || test $gl_cv_func_isnand_in_libm = yes; then + gl_func_isnand=yes + else + gl_func_isnand=no + HAVE_ISNAND=0 + fi + AC_SUBST([ISNAND_LIBM]) +]) + +dnl Check how to get or define isnand() without linking with libm. + +AC_DEFUN([gl_FUNC_ISNAND_NO_LIBM], +[ + gl_HAVE_ISNAND_NO_LIBM + gl_func_isnand_no_libm=$gl_cv_func_isnand_no_libm + if test $gl_cv_func_isnand_no_libm = yes; then + AC_DEFINE([HAVE_ISNAND_IN_LIBC], [1], + [Define if the isnan(double) function is available in libc.]) + fi +]) + +dnl Prerequisites of replacement isnand definition. It does not need -lm. +AC_DEFUN([gl_PREREQ_ISNAND], +[ + AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION]) +]) + +dnl Test whether isnand() can be used with libm. + +AC_DEFUN([gl_HAVE_ISNAND_IN_LIBM], +[ + AC_CACHE_CHECK([whether isnan(double) can be used with libm], + [gl_cv_func_isnand_in_libm], + [ + save_LIBS="$LIBS" + LIBS="$LIBS -lm" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #if __GNUC__ >= 4 + # undef isnand + # define isnand(x) __builtin_isnan ((double)(x)) + #elif defined isnan + # undef isnand + # define isnand(x) isnan ((double)(x)) + #endif + double x;]], + [[return isnand (x);]])], + [gl_cv_func_isnand_in_libm=yes], + [gl_cv_func_isnand_in_libm=no]) + LIBS="$save_LIBS" + ]) +]) + +AC_DEFUN([gl_HAVE_ISNAND_NO_LIBM], +[ + AC_CACHE_CHECK([whether isnan(double) can be used without linking with libm], + [gl_cv_func_isnand_no_libm], + [ + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #if __GNUC__ >= 4 + # undef isnand + # define isnand(x) __builtin_isnan ((double)(x)) + #else + # undef isnand + # define isnand(x) isnan ((double)(x)) + #endif + double x;]], + [[return isnand (x);]])], + [gl_cv_func_isnand_no_libm=yes], + [gl_cv_func_isnand_no_libm=no]) + ]) +]) diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/isnanf.m4 gettext-0.19.7/gettext-tools/gnulib-m4/isnanf.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/isnanf.m4 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/isnanf.m4 2015-12-27 23:08:32.000000000 +0000 @@ -0,0 +1,188 @@ +# isnanf.m4 serial 14 +dnl Copyright (C) 2007-2015 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 Check how to get or define isnanf(). + +AC_DEFUN([gl_FUNC_ISNANF], +[ + AC_REQUIRE([gl_MATH_H_DEFAULTS]) + ISNANF_LIBM= + gl_HAVE_ISNANF_NO_LIBM + if test $gl_cv_func_isnanf_no_libm = no; then + gl_HAVE_ISNANF_IN_LIBM + if test $gl_cv_func_isnanf_in_libm = yes; then + ISNANF_LIBM=-lm + fi + fi + dnl The variable gl_func_isnanf set here is used by isnan.m4. + if test $gl_cv_func_isnanf_no_libm = yes \ + || test $gl_cv_func_isnanf_in_libm = yes; then + save_LIBS="$LIBS" + LIBS="$LIBS $ISNANF_LIBM" + gl_ISNANF_WORKS + LIBS="$save_LIBS" + case "$gl_cv_func_isnanf_works" in + *yes) gl_func_isnanf=yes ;; + *) gl_func_isnanf=no; ISNANF_LIBM= ;; + esac + else + gl_func_isnanf=no + fi + if test $gl_func_isnanf != yes; then + HAVE_ISNANF=0 + fi + AC_SUBST([ISNANF_LIBM]) +]) + +dnl Check how to get or define isnanf() without linking with libm. + +AC_DEFUN([gl_FUNC_ISNANF_NO_LIBM], +[ + gl_HAVE_ISNANF_NO_LIBM + if test $gl_cv_func_isnanf_no_libm = yes; then + gl_ISNANF_WORKS + fi + if test $gl_cv_func_isnanf_no_libm = yes \ + && { case "$gl_cv_func_isnanf_works" in + *yes) true;; + *) false;; + esac + }; then + gl_func_isnanf_no_libm=yes + AC_DEFINE([HAVE_ISNANF_IN_LIBC], [1], + [Define if the isnan(float) function is available in libc.]) + else + gl_func_isnanf_no_libm=no + fi +]) + +dnl Prerequisites of replacement isnanf definition. It does not need -lm. +AC_DEFUN([gl_PREREQ_ISNANF], +[ + gl_FLOAT_EXPONENT_LOCATION +]) + +dnl Test whether isnanf() can be used without libm. +AC_DEFUN([gl_HAVE_ISNANF_NO_LIBM], +[ + AC_CACHE_CHECK([whether isnan(float) can be used without linking with libm], + [gl_cv_func_isnanf_no_libm], + [ + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #if __GNUC__ >= 4 + # undef isnanf + # define isnanf(x) __builtin_isnanf ((float)(x)) + #elif defined isnan + # undef isnanf + # define isnanf(x) isnan ((float)(x)) + #endif + float x;]], + [[return isnanf (x);]])], + [gl_cv_func_isnanf_no_libm=yes], + [gl_cv_func_isnanf_no_libm=no]) + ]) +]) + +dnl Test whether isnanf() can be used with libm. +AC_DEFUN([gl_HAVE_ISNANF_IN_LIBM], +[ + AC_CACHE_CHECK([whether isnan(float) can be used with libm], + [gl_cv_func_isnanf_in_libm], + [ + save_LIBS="$LIBS" + LIBS="$LIBS -lm" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #if __GNUC__ >= 4 + # undef isnanf + # define isnanf(x) __builtin_isnanf ((float)(x)) + #elif defined isnan + # undef isnanf + # define isnanf(x) isnan ((float)(x)) + #endif + float x;]], + [[return isnanf (x);]])], + [gl_cv_func_isnanf_in_libm=yes], + [gl_cv_func_isnanf_in_libm=no]) + LIBS="$save_LIBS" + ]) +]) + +dnl Test whether isnanf() rejects Infinity (this fails on Solaris 2.5.1), +dnl recognizes a NaN (this fails on IRIX 6.5 with cc), and recognizes a NaN +dnl with in-memory representation 0x7fbfffff (this fails on IRIX 6.5). +AC_DEFUN([gl_ISNANF_WORKS], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_REQUIRE([gl_FLOAT_EXPONENT_LOCATION]) + AC_CACHE_CHECK([whether isnan(float) works], [gl_cv_func_isnanf_works], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#if __GNUC__ >= 4 +# undef isnanf +# define isnanf(x) __builtin_isnanf ((float)(x)) +#elif defined isnan +# undef isnanf +# define isnanf(x) isnan ((float)(x)) +#endif +/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */ +#ifdef __DECC +static float +NaN () +{ + static float zero = 0.0f; + return zero / zero; +} +#else +# define NaN() (0.0f / 0.0f) +#endif +#define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { unsigned int word[NWORDS]; float value; } memory_float; +int main() +{ + int result = 0; + + if (isnanf (1.0f / 0.0f)) + result |= 1; + + if (!isnanf (NaN ())) + result |= 2; + +#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT + /* The isnanf function should be immune against changes in the sign bit and + in the mantissa bits. The xor operation twiddles a bit that can only be + a sign bit or a mantissa bit. */ + if (FLT_EXPBIT0_WORD == 0 && FLT_EXPBIT0_BIT > 0) + { + memory_float m; + + m.value = NaN (); + /* Set the bits below the exponent to 01111...111. */ + m.word[0] &= -1U << FLT_EXPBIT0_BIT; + m.word[0] |= 1U << (FLT_EXPBIT0_BIT - 1) - 1; + if (!isnanf (m.value)) + result |= 4; + } +#endif + + return result; +}]])], + [gl_cv_func_isnanf_works=yes], + [gl_cv_func_isnanf_works=no], + [case "$host_os" in + irix* | solaris*) gl_cv_func_isnanf_works="guessing no";; + *) gl_cv_func_isnanf_works="guessing yes";; + esac + ]) + ]) +]) diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/isnanl.m4 gettext-0.19.7/gettext-tools/gnulib-m4/isnanl.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/isnanl.m4 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/isnanl.m4 2015-12-27 23:08:32.000000000 +0000 @@ -0,0 +1,236 @@ +# isnanl.m4 serial 19 +dnl Copyright (C) 2007-2015 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. + +AC_DEFUN([gl_FUNC_ISNANL], +[ + AC_REQUIRE([gl_MATH_H_DEFAULTS]) + ISNANL_LIBM= + gl_HAVE_ISNANL_NO_LIBM + if test $gl_cv_func_isnanl_no_libm = no; then + gl_HAVE_ISNANL_IN_LIBM + if test $gl_cv_func_isnanl_in_libm = yes; then + ISNANL_LIBM=-lm + fi + fi + dnl The variable gl_func_isnanl set here is used by isnan.m4. + if test $gl_cv_func_isnanl_no_libm = yes \ + || test $gl_cv_func_isnanl_in_libm = yes; then + save_LIBS="$LIBS" + LIBS="$LIBS $ISNANL_LIBM" + gl_FUNC_ISNANL_WORKS + LIBS="$save_LIBS" + case "$gl_cv_func_isnanl_works" in + *yes) gl_func_isnanl=yes ;; + *) gl_func_isnanl=no; ISNANL_LIBM= ;; + esac + else + gl_func_isnanl=no + fi + if test $gl_func_isnanl != yes; then + HAVE_ISNANL=0 + fi + AC_SUBST([ISNANL_LIBM]) +]) + +AC_DEFUN([gl_FUNC_ISNANL_NO_LIBM], +[ + gl_HAVE_ISNANL_NO_LIBM + gl_func_isnanl_no_libm=$gl_cv_func_isnanl_no_libm + if test $gl_func_isnanl_no_libm = yes; then + gl_FUNC_ISNANL_WORKS + case "$gl_cv_func_isnanl_works" in + *yes) ;; + *) gl_func_isnanl_no_libm=no ;; + esac + fi + if test $gl_func_isnanl_no_libm = yes; then + AC_DEFINE([HAVE_ISNANL_IN_LIBC], [1], + [Define if the isnan(long double) function is available in libc.]) + fi +]) + +dnl Prerequisites of replacement isnanl definition. It does not need -lm. +AC_DEFUN([gl_PREREQ_ISNANL], +[ + gl_LONG_DOUBLE_EXPONENT_LOCATION + AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) +]) + +dnl Test whether isnanl() can be used without libm. +AC_DEFUN([gl_HAVE_ISNANL_NO_LIBM], +[ + AC_CACHE_CHECK([whether isnan(long double) can be used without linking with libm], + [gl_cv_func_isnanl_no_libm], + [ + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #if __GNUC__ >= 4 + # undef isnanl + # define isnanl(x) __builtin_isnanl ((long double)(x)) + #elif defined isnan + # undef isnanl + # define isnanl(x) isnan ((long double)(x)) + #endif + long double x;]], + [[return isnanl (x);]])], + [gl_cv_func_isnanl_no_libm=yes], + [gl_cv_func_isnanl_no_libm=no]) + ]) +]) + +dnl Test whether isnanl() can be used with libm. +AC_DEFUN([gl_HAVE_ISNANL_IN_LIBM], +[ + AC_CACHE_CHECK([whether isnan(long double) can be used with libm], + [gl_cv_func_isnanl_in_libm], + [ + save_LIBS="$LIBS" + LIBS="$LIBS -lm" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #if __GNUC__ >= 4 + # undef isnanl + # define isnanl(x) __builtin_isnanl ((long double)(x)) + #elif defined isnan + # undef isnanl + # define isnanl(x) isnan ((long double)(x)) + #endif + long double x;]], + [[return isnanl (x);]])], + [gl_cv_func_isnanl_in_libm=yes], + [gl_cv_func_isnanl_in_libm=no]) + LIBS="$save_LIBS" + ]) +]) + +dnl Test whether isnanl() recognizes all canonical numbers which are neither +dnl finite nor infinite. +AC_DEFUN([gl_FUNC_ISNANL_WORKS], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([gl_BIGENDIAN]) + AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([whether isnanl works], [gl_cv_func_isnanl_works], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#include +#include +#if __GNUC__ >= 4 +# undef isnanl +# define isnanl(x) __builtin_isnanl ((long double)(x)) +#elif defined isnan +# undef isnanl +# define isnanl(x) isnan ((long double)(x)) +#endif +#define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { unsigned int word[NWORDS]; long double value; } + memory_long_double; +/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the + runtime type conversion. */ +#ifdef __sgi +static long double NaNl () +{ + double zero = 0.0; + return zero / zero; +} +#else +# define NaNl() (0.0L / 0.0L) +#endif +int main () +{ + int result = 0; + + if (!isnanl (NaNl ())) + result |= 1; + + { + memory_long_double m; + unsigned int i; + + /* The isnanl function should be immune against changes in the sign bit and + in the mantissa bits. The xor operation twiddles a bit that can only be + a sign bit or a mantissa bit (since the exponent never extends to + bit 31). */ + m.value = NaNl (); + m.word[NWORDS / 2] ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); + for (i = 0; i < NWORDS; i++) + m.word[i] |= 1; + if (!isnanl (m.value)) + result |= 1; + } + +#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE +/* Representation of an 80-bit 'long double' as an initializer for a sequence + of 'unsigned int' words. */ +# ifdef WORDS_BIGENDIAN +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ + ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \ + (unsigned int) (mantlo) << 16 \ + } +# else +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { mantlo, manthi, exponent } +# endif + { /* Quiet NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; + if (!isnanl (x.value)) + result |= 2; + } + { + /* Signalling NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; + if (!isnanl (x.value)) + result |= 2; + } + /* isnanl should return something even for noncanonical values. */ + { /* Pseudo-NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 4; + } + { /* Pseudo-Infinity. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 8; + } + { /* Pseudo-Zero. */ + static memory_long_double x = + { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 16; + } + { /* Unnormalized number. */ + static memory_long_double x = + { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 32; + } + { /* Pseudo-Denormal. */ + static memory_long_double x = + { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; + if (isnanl (x.value) && !isnanl (x.value)) + result |= 64; + } +#endif + + return result; +}]])], + [gl_cv_func_isnanl_works=yes], + [gl_cv_func_isnanl_works=no], + [gl_cv_func_isnanl_works="guessing yes"]) + ]) +]) diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/isnan.m4 gettext-0.19.7/gettext-tools/gnulib-m4/isnan.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/isnan.m4 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/isnan.m4 2015-12-27 23:08:32.000000000 +0000 @@ -0,0 +1,44 @@ +# isnan.m4 serial 5 +dnl Copyright (C) 2007-2015 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. + +AC_DEFUN([gl_ISNAN], +[ + AC_REQUIRE([gl_MATH_H_DEFAULTS]) + AC_REQUIRE([gl_FUNC_ISNANF]) + AC_REQUIRE([gl_FUNC_ISNAND]) + AC_REQUIRE([gl_FUNC_ISNANL]) + + # If we replaced any of the underlying isnan* functions, replace + # the isnan macro; it undoubtedly suffers from the same flaws. + AC_MSG_CHECKING([whether isnan macro works]) + if test $gl_func_isnanf = yes \ + && test $gl_func_isnand = yes \ + && test $gl_func_isnanl = yes; then + AC_MSG_RESULT([yes]) + ISNAN_LIBM= + dnl Append $ISNANF_LIBM to ISNAN_LIBM, avoiding gratuitous duplicates. + case " $ISNAN_LIBM " in + *" $ISNANF_LIBM "*) ;; + *) ISNAN_LIBM="$ISNAN_LIBM $ISNANF_LIBM" ;; + esac + dnl Append $ISNAND_LIBM to ISNAN_LIBM, avoiding gratuitous duplicates. + case " $ISNAN_LIBM " in + *" $ISNAND_LIBM "*) ;; + *) ISNAN_LIBM="$ISNAN_LIBM $ISNAND_LIBM" ;; + esac + dnl Append $ISNANL_LIBM to ISNAN_LIBM, avoiding gratuitous duplicates. + case " $ISNAN_LIBM " in + *" $ISNANL_LIBM "*) ;; + *) ISNAN_LIBM="$ISNAN_LIBM $ISNANL_LIBM" ;; + esac + else + AC_MSG_RESULT([no]) + dnl REPLACE_ISNAN=1 also makes sure the rpl_isnan[fdl] functions get built. + REPLACE_ISNAN=1 + ISNAN_LIBM= + fi + AC_SUBST([ISNAN_LIBM]) +]) diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/log10.m4 gettext-0.19.7/gettext-tools/gnulib-m4/log10.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/log10.m4 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/log10.m4 2015-12-27 23:08:32.000000000 +0000 @@ -0,0 +1,107 @@ +# log10.m4 serial 4 +dnl Copyright (C) 2011-2015 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. + +AC_DEFUN([gl_FUNC_LOG10], +[ + m4_divert_text([DEFAULTS], [gl_log10_required=plain]) + AC_REQUIRE([gl_MATH_H_DEFAULTS]) + + dnl Determine LOG10_LIBM. + gl_COMMON_DOUBLE_MATHFUNC([log10]) + + save_LIBS="$LIBS" + LIBS="$LIBS $LOG10_LIBM" + gl_FUNC_LOG10_WORKS + LIBS="$save_LIBS" + case "$gl_cv_func_log10_works" in + *yes) ;; + *) REPLACE_LOG10=1 ;; + esac + + m4_ifdef([gl_FUNC_LOG10_IEEE], [ + if test $gl_log10_required = ieee && test $REPLACE_LOG10 = 0; then + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([whether log10 works according to ISO C 99 with IEC 60559], + [gl_cv_func_log10_ieee], + [ + save_LIBS="$LIBS" + LIBS="$LIBS $LOG10_LIBM" + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#ifndef __NO_MATH_INLINES +# define __NO_MATH_INLINES 1 /* for glibc */ +#endif +#include +/* Compare two numbers with ==. + This is a separate function because IRIX 6.5 "cc -O" miscompiles an + 'x == x' test. */ +static int +numeric_equal (double x, double y) +{ + return x == y; +} +static double dummy (double x) { return 0; } +int main (int argc, char *argv[]) +{ + double (*my_log10) (double) = argc ? log10 : dummy; + /* Test log10(negative). + This test fails on NetBSD 5.1, Solaris 11 2011-11. */ + double y = my_log10 (-1.0); + if (numeric_equal (y, y)) + return 1; + return 0; +} + ]])], + [gl_cv_func_log10_ieee=yes], + [gl_cv_func_log10_ieee=no], + [case "$host_os" in + # Guess yes on glibc systems. + *-gnu*) gl_cv_func_log10_ieee="guessing yes" ;; + # If we don't know, assume the worst. + *) gl_cv_func_log10_ieee="guessing no" ;; + esac + ]) + LIBS="$save_LIBS" + ]) + case "$gl_cv_func_log10_ieee" in + *yes) ;; + *) REPLACE_LOG10=1 ;; + esac + fi + ]) +]) + +dnl Test whether log10() works. +dnl On OSF/1 5.1, log10(-0.0) is NaN. +AC_DEFUN([gl_FUNC_LOG10_WORKS], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([whether log10 works], [gl_cv_func_log10_works], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +volatile double x; +double y; +int main () +{ + x = -0.0; + y = log10 (x); + if (!(y + y == y)) + return 1; + return 0; +} +]])], + [gl_cv_func_log10_works=yes], + [gl_cv_func_log10_works=no], + [case "$host_os" in + osf*) gl_cv_func_log10_works="guessing no";; + *) gl_cv_func_log10_works="guessing yes";; + esac + ]) + ]) +]) diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/mathfunc.m4 gettext-0.19.7/gettext-tools/gnulib-m4/mathfunc.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/mathfunc.m4 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/mathfunc.m4 2015-12-27 23:08:32.000000000 +0000 @@ -0,0 +1,163 @@ +# mathfunc.m4 serial 11 +dnl Copyright (C) 2010-2015 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. + +# gl_MATHFUNC(FUNC, RETTYPE, PARAMTYPES [, INCLUDES] [, EXTRA-CODE]) +# ------------------------------------------------------------------ +# tests whether the function FUNC is available in libc or libm. +# RETTYPE is the return type. PARAMTYPES is a parameter list, with parentheses. +# It sets FUNC_LIBM to empty or "-lm" accordingly. + +AC_DEFUN([gl_MATHFUNC], +[ + dnl We need the RETTYPE and PARAMTYPES in order to force linking with the + dnl function. + dnl 1) With gcc >= 4.3 on glibc/x86_64, calls to the 'fabs' function + dnl are inlined by the compiler, therefore linking of these calls does + dnl not require -lm, but taking the function pointer of 'fabs' does. + dnl 2) On MSVC 9, many math functions exist only as macros with arguments, + dnl whereas the function pointer is undefined. + dnl On the other hand, taking just the function pointer is not enough. + dnl 1) On AIX 7.1, when 'long double' is 128 bit large ("xlc -qldbl128" or + dnl "xlc -qlongdouble" or "gcc -mlong-double-128") many math functions + dnl exist as macros with arguments, that may reference libm or even + dnl completely undefined functions such as __rint128. + dnl 2) In AIX 7.1 with gcc 4.2, when optimization is turned on, calls to + dnl rint() with simple arguments are turned into rintf() calls by the + dnl compiler. But while rint() is resides in libc, rintf() is in libm. + m4_pushdef([func], [$1]) + m4_pushdef([FUNC], [m4_translit([$1],[abcdefghijklmnopqrstuvwxyz], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ])]) + m4_pushdef([ARGS], [m4_bpatsubst( + [m4_bpatsubst( + [m4_bpatsubst( + [m4_bpatsubst( + [m4_bpatsubst( + [m4_bpatsubst( + [m4_bpatsubst( + [m4_bpatsubst( + [m4_bpatsubst( + [$3], + [int \*], [&i_ret])], + [float \*], [&f_ret])], + [double \*], [&d_ret])], + [long double \*], [&l_ret])], + [int], [2])], + [float], [1.618034f])], + [long double], [1.618033988749894848L])], + [double], [1.6180339887])], + [void], [])]) + FUNC[]_LIBM= + AC_CACHE_CHECK([whether func() can be used without linking with libm], + [gl_cv_func_]func[_no_libm], + [ + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#ifndef __NO_MATH_INLINES + # define __NO_MATH_INLINES 1 /* for glibc */ + #endif + #include + $4 + $2 (*funcptr) $3 = ]func[; + int i_ret; + float f_ret; + double d_ret; + long double l_ret;]], + [[$2 y = funcptr ]ARGS[ + ]func[ ]ARGS[; + $5 + return y < 0.3 || y > 1.7; + ]])], + [gl_cv_func_]func[_no_libm=yes], + [gl_cv_func_]func[_no_libm=no]) + ]) + if test $gl_cv_func_[]func[]_no_libm = no; then + AC_CACHE_CHECK([whether func() can be used with libm], + [gl_cv_func_]func[_in_libm], + [ + save_LIBS="$LIBS" + LIBS="$LIBS -lm" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#ifndef __NO_MATH_INLINES + # define __NO_MATH_INLINES 1 /* for glibc */ + #endif + #include + $4 + $2 (*funcptr) $3 = ]func[; + int i_ret; + float f_ret; + double d_ret; + long double l_ret;]], + [[$2 y = funcptr ]ARGS[ + ]func[ ]ARGS[; + $5 + return y < 0.3 || y > 1.7; + ]])], + [gl_cv_func_]func[_in_libm=yes], + [gl_cv_func_]func[_in_libm=no]) + LIBS="$save_LIBS" + ]) + if test $gl_cv_func_[]func[]_in_libm = yes; then + FUNC[]_LIBM=-lm + fi + fi + AC_SUBST(FUNC[_LIBM]) + m4_popdef([ARGS]) + m4_popdef([FUNC]) + m4_popdef([func]) +]) + +# gl_COMMON_DOUBLE_MATHFUNC(FUNC) +# ------------------------------- +# tests whether the function FUNC is available in libc or libm. +# It sets FUNC_LIBM to empty or "-lm" accordingly. +# FUNC must be one of the following functions, that are present on all systems +# and provided by libm on all systems except Mac OS X, BeOS, Haiku: +# acos asin atan atan2 cbrt cos cosh erf erfc exp fmod hypot j0 j1 jn lgamma +# log log10 log1p pow remainder sin sinh sqrt tan tanh y0 y1 yn + +AC_DEFUN([gl_COMMON_DOUBLE_MATHFUNC], +[ + AC_REQUIRE([gl_COMMON_DOUBLE_MATHFUNC_TEST]) + m4_pushdef([FUNC], [m4_translit([$1],[abcdefghijklmnopqrstuvwxyz], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ])]) + FUNC[]_LIBM="$POW_LIBM" + AC_SUBST(FUNC[_LIBM]) + m4_popdef([FUNC]) +]) + +AC_DEFUN([gl_COMMON_DOUBLE_MATHFUNC_TEST], +[ + dnl We could use any of the following: + dnl gl_MATHFUNC([acos], [double], [(double)]) + dnl gl_MATHFUNC([asin], [double], [(double)]) + dnl gl_MATHFUNC([atan], [double], [(double)]) + dnl gl_MATHFUNC([atan2], [double], [(double, double)]) + dnl gl_MATHFUNC([cbrt], [double], [(double)]) + dnl gl_MATHFUNC([cos], [double], [(double)]) + dnl gl_MATHFUNC([cosh], [double], [(double)]) + dnl gl_MATHFUNC([erf], [double], [(double)]) + dnl gl_MATHFUNC([erfc], [double], [(double)]) + dnl gl_MATHFUNC([exp], [double], [(double)]) + dnl gl_MATHFUNC([fmod], [double], [(double, double)]) + dnl gl_MATHFUNC([hypot], [double], [(double, double)]) + dnl gl_MATHFUNC([j0], [double], [(double)]) + dnl gl_MATHFUNC([j1], [double], [(double)]) + dnl gl_MATHFUNC([jn], [double], [(int, double)]) + dnl gl_MATHFUNC([lgamma], [double], [(double)]) + dnl gl_MATHFUNC([log], [double], [(double)]) + dnl gl_MATHFUNC([log10], [double], [(double)]) + dnl gl_MATHFUNC([log1p], [double], [(double)]) + dnl gl_MATHFUNC([pow], [double], [(double, double)]) + dnl gl_MATHFUNC([remainder], [double], [(double, double)]) + dnl gl_MATHFUNC([sin], [double], [(double)]) + dnl gl_MATHFUNC([sinh], [double], [(double)]) + dnl gl_MATHFUNC([sqrt], [double], [(double)]) + dnl gl_MATHFUNC([tan], [double], [(double)]) + dnl gl_MATHFUNC([tanh], [double], [(double)]) + dnl gl_MATHFUNC([y0], [double], [(double)]) + dnl gl_MATHFUNC([y1], [double], [(double)]) + dnl gl_MATHFUNC([yn], [double], [(int, double)]) + gl_MATHFUNC([pow], [double], [(double, double)]) +]) diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/math_h.m4 gettext-0.19.7/gettext-tools/gnulib-m4/math_h.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/math_h.m4 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/math_h.m4 2015-12-27 23:08:32.000000000 +0000 @@ -0,0 +1,353 @@ +# math_h.m4 serial 114 +dnl Copyright (C) 2007-2015 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. + +AC_DEFUN([gl_MATH_H], +[ + AC_REQUIRE([gl_MATH_H_DEFAULTS]) + gl_CHECK_NEXT_HEADERS([math.h]) + + AC_CACHE_CHECK([whether NAN macro works], [gl_cv_header_math_nan_works], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include ]], + [[/* Solaris 10 has a broken definition of NAN. Other platforms + fail to provide NAN, or provide it only in C99 mode; this + test only needs to fail when NAN is provided but wrong. */ + float f = 1.0f; +#ifdef NAN + f = NAN; +#endif + return f == 0;]])], + [gl_cv_header_math_nan_works=yes], + [gl_cv_header_math_nan_works=no])]) + if test $gl_cv_header_math_nan_works = no; then + REPLACE_NAN=1 + fi + AC_CACHE_CHECK([whether HUGE_VAL works], [gl_cv_header_math_huge_val_works], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include ]], + [[/* Solaris 10 has a broken definition of HUGE_VAL. */ + double d = HUGE_VAL; + return d == 0;]])], + [gl_cv_header_math_huge_val_works=yes], + [gl_cv_header_math_huge_val_works=no])]) + if test $gl_cv_header_math_huge_val_works = no; then + REPLACE_HUGE_VAL=1 + fi + + dnl Check for declarations of anything we want to poison if the + dnl corresponding gnulib module is not in use. + gl_WARN_ON_USE_PREPARE([[#include ]], + [acosf acosl asinf asinl atanf atanl + cbrt cbrtf cbrtl ceilf ceill copysign copysignf copysignl cosf cosl coshf + expf expl exp2 exp2f exp2l expm1 expm1f expm1l + fabsf fabsl floorf floorl fma fmaf fmal + fmod fmodf fmodl frexpf frexpl hypotf hypotl + ilogb ilogbf ilogbl + ldexpf ldexpl + log logf logl log10 log10f log10l log1p log1pf log1pl log2 log2f log2l + logb logbf logbl + modf modff modfl powf + remainder remainderf remainderl + rint rintf rintl round roundf roundl sinf sinl sinhf sqrtf sqrtl + tanf tanl tanhf trunc truncf truncl]) +]) + +AC_DEFUN([gl_MATH_MODULE_INDICATOR], +[ + dnl Use AC_REQUIRE here, so that the default settings are expanded once only. + AC_REQUIRE([gl_MATH_H_DEFAULTS]) + gl_MODULE_INDICATOR_SET_VARIABLE([$1]) + dnl Define it also as a C macro, for the benefit of the unit tests. + gl_MODULE_INDICATOR_FOR_TESTS([$1]) +]) + +AC_DEFUN([gl_MATH_H_DEFAULTS], +[ + GNULIB_ACOSF=0; AC_SUBST([GNULIB_ACOSF]) + GNULIB_ACOSL=0; AC_SUBST([GNULIB_ACOSL]) + GNULIB_ASINF=0; AC_SUBST([GNULIB_ASINF]) + GNULIB_ASINL=0; AC_SUBST([GNULIB_ASINL]) + GNULIB_ATANF=0; AC_SUBST([GNULIB_ATANF]) + GNULIB_ATANL=0; AC_SUBST([GNULIB_ATANL]) + GNULIB_ATAN2F=0; AC_SUBST([GNULIB_ATAN2F]) + GNULIB_CBRT=0; AC_SUBST([GNULIB_CBRT]) + GNULIB_CBRTF=0; AC_SUBST([GNULIB_CBRTF]) + GNULIB_CBRTL=0; AC_SUBST([GNULIB_CBRTL]) + GNULIB_CEIL=0; AC_SUBST([GNULIB_CEIL]) + GNULIB_CEILF=0; AC_SUBST([GNULIB_CEILF]) + GNULIB_CEILL=0; AC_SUBST([GNULIB_CEILL]) + GNULIB_COPYSIGN=0; AC_SUBST([GNULIB_COPYSIGN]) + GNULIB_COPYSIGNF=0; AC_SUBST([GNULIB_COPYSIGNF]) + GNULIB_COPYSIGNL=0; AC_SUBST([GNULIB_COPYSIGNL]) + GNULIB_COSF=0; AC_SUBST([GNULIB_COSF]) + GNULIB_COSL=0; AC_SUBST([GNULIB_COSL]) + GNULIB_COSHF=0; AC_SUBST([GNULIB_COSHF]) + GNULIB_EXPF=0; AC_SUBST([GNULIB_EXPF]) + GNULIB_EXPL=0; AC_SUBST([GNULIB_EXPL]) + GNULIB_EXP2=0; AC_SUBST([GNULIB_EXP2]) + GNULIB_EXP2F=0; AC_SUBST([GNULIB_EXP2F]) + GNULIB_EXP2L=0; AC_SUBST([GNULIB_EXP2L]) + GNULIB_EXPM1=0; AC_SUBST([GNULIB_EXPM1]) + GNULIB_EXPM1F=0; AC_SUBST([GNULIB_EXPM1F]) + GNULIB_EXPM1L=0; AC_SUBST([GNULIB_EXPM1L]) + GNULIB_FABSF=0; AC_SUBST([GNULIB_FABSF]) + GNULIB_FABSL=0; AC_SUBST([GNULIB_FABSL]) + GNULIB_FLOOR=0; AC_SUBST([GNULIB_FLOOR]) + GNULIB_FLOORF=0; AC_SUBST([GNULIB_FLOORF]) + GNULIB_FLOORL=0; AC_SUBST([GNULIB_FLOORL]) + GNULIB_FMA=0; AC_SUBST([GNULIB_FMA]) + GNULIB_FMAF=0; AC_SUBST([GNULIB_FMAF]) + GNULIB_FMAL=0; AC_SUBST([GNULIB_FMAL]) + GNULIB_FMOD=0; AC_SUBST([GNULIB_FMOD]) + GNULIB_FMODF=0; AC_SUBST([GNULIB_FMODF]) + GNULIB_FMODL=0; AC_SUBST([GNULIB_FMODL]) + GNULIB_FREXPF=0; AC_SUBST([GNULIB_FREXPF]) + GNULIB_FREXP=0; AC_SUBST([GNULIB_FREXP]) + GNULIB_FREXPL=0; AC_SUBST([GNULIB_FREXPL]) + GNULIB_HYPOT=0; AC_SUBST([GNULIB_HYPOT]) + GNULIB_HYPOTF=0; AC_SUBST([GNULIB_HYPOTF]) + GNULIB_HYPOTL=0; AC_SUBST([GNULIB_HYPOTL]) + GNULIB_ILOGB=0; AC_SUBST([GNULIB_ILOGB]) + GNULIB_ILOGBF=0; AC_SUBST([GNULIB_ILOGBF]) + GNULIB_ILOGBL=0; AC_SUBST([GNULIB_ILOGBL]) + GNULIB_ISFINITE=0; AC_SUBST([GNULIB_ISFINITE]) + GNULIB_ISINF=0; AC_SUBST([GNULIB_ISINF]) + GNULIB_ISNAN=0; AC_SUBST([GNULIB_ISNAN]) + GNULIB_ISNANF=0; AC_SUBST([GNULIB_ISNANF]) + GNULIB_ISNAND=0; AC_SUBST([GNULIB_ISNAND]) + GNULIB_ISNANL=0; AC_SUBST([GNULIB_ISNANL]) + GNULIB_LDEXPF=0; AC_SUBST([GNULIB_LDEXPF]) + GNULIB_LDEXPL=0; AC_SUBST([GNULIB_LDEXPL]) + GNULIB_LOG=0; AC_SUBST([GNULIB_LOG]) + GNULIB_LOGF=0; AC_SUBST([GNULIB_LOGF]) + GNULIB_LOGL=0; AC_SUBST([GNULIB_LOGL]) + GNULIB_LOG10=0; AC_SUBST([GNULIB_LOG10]) + GNULIB_LOG10F=0; AC_SUBST([GNULIB_LOG10F]) + GNULIB_LOG10L=0; AC_SUBST([GNULIB_LOG10L]) + GNULIB_LOG1P=0; AC_SUBST([GNULIB_LOG1P]) + GNULIB_LOG1PF=0; AC_SUBST([GNULIB_LOG1PF]) + GNULIB_LOG1PL=0; AC_SUBST([GNULIB_LOG1PL]) + GNULIB_LOG2=0; AC_SUBST([GNULIB_LOG2]) + GNULIB_LOG2F=0; AC_SUBST([GNULIB_LOG2F]) + GNULIB_LOG2L=0; AC_SUBST([GNULIB_LOG2L]) + GNULIB_LOGB=0; AC_SUBST([GNULIB_LOGB]) + GNULIB_LOGBF=0; AC_SUBST([GNULIB_LOGBF]) + GNULIB_LOGBL=0; AC_SUBST([GNULIB_LOGBL]) + GNULIB_MODF=0; AC_SUBST([GNULIB_MODF]) + GNULIB_MODFF=0; AC_SUBST([GNULIB_MODFF]) + GNULIB_MODFL=0; AC_SUBST([GNULIB_MODFL]) + GNULIB_POWF=0; AC_SUBST([GNULIB_POWF]) + GNULIB_REMAINDER=0; AC_SUBST([GNULIB_REMAINDER]) + GNULIB_REMAINDERF=0; AC_SUBST([GNULIB_REMAINDERF]) + GNULIB_REMAINDERL=0; AC_SUBST([GNULIB_REMAINDERL]) + GNULIB_RINT=0; AC_SUBST([GNULIB_RINT]) + GNULIB_RINTF=0; AC_SUBST([GNULIB_RINTF]) + GNULIB_RINTL=0; AC_SUBST([GNULIB_RINTL]) + GNULIB_ROUND=0; AC_SUBST([GNULIB_ROUND]) + GNULIB_ROUNDF=0; AC_SUBST([GNULIB_ROUNDF]) + GNULIB_ROUNDL=0; AC_SUBST([GNULIB_ROUNDL]) + GNULIB_SIGNBIT=0; AC_SUBST([GNULIB_SIGNBIT]) + GNULIB_SINF=0; AC_SUBST([GNULIB_SINF]) + GNULIB_SINL=0; AC_SUBST([GNULIB_SINL]) + GNULIB_SINHF=0; AC_SUBST([GNULIB_SINHF]) + GNULIB_SQRTF=0; AC_SUBST([GNULIB_SQRTF]) + GNULIB_SQRTL=0; AC_SUBST([GNULIB_SQRTL]) + GNULIB_TANF=0; AC_SUBST([GNULIB_TANF]) + GNULIB_TANL=0; AC_SUBST([GNULIB_TANL]) + GNULIB_TANHF=0; AC_SUBST([GNULIB_TANHF]) + GNULIB_TRUNC=0; AC_SUBST([GNULIB_TRUNC]) + GNULIB_TRUNCF=0; AC_SUBST([GNULIB_TRUNCF]) + GNULIB_TRUNCL=0; AC_SUBST([GNULIB_TRUNCL]) + dnl Assume proper GNU behavior unless another module says otherwise. + HAVE_ACOSF=1; AC_SUBST([HAVE_ACOSF]) + HAVE_ACOSL=1; AC_SUBST([HAVE_ACOSL]) + HAVE_ASINF=1; AC_SUBST([HAVE_ASINF]) + HAVE_ASINL=1; AC_SUBST([HAVE_ASINL]) + HAVE_ATANF=1; AC_SUBST([HAVE_ATANF]) + HAVE_ATANL=1; AC_SUBST([HAVE_ATANL]) + HAVE_ATAN2F=1; AC_SUBST([HAVE_ATAN2F]) + HAVE_CBRT=1; AC_SUBST([HAVE_CBRT]) + HAVE_CBRTF=1; AC_SUBST([HAVE_CBRTF]) + HAVE_CBRTL=1; AC_SUBST([HAVE_CBRTL]) + HAVE_COPYSIGN=1; AC_SUBST([HAVE_COPYSIGN]) + HAVE_COPYSIGNL=1; AC_SUBST([HAVE_COPYSIGNL]) + HAVE_COSF=1; AC_SUBST([HAVE_COSF]) + HAVE_COSL=1; AC_SUBST([HAVE_COSL]) + HAVE_COSHF=1; AC_SUBST([HAVE_COSHF]) + HAVE_EXPF=1; AC_SUBST([HAVE_EXPF]) + HAVE_EXPL=1; AC_SUBST([HAVE_EXPL]) + HAVE_EXPM1=1; AC_SUBST([HAVE_EXPM1]) + HAVE_EXPM1F=1; AC_SUBST([HAVE_EXPM1F]) + HAVE_FABSF=1; AC_SUBST([HAVE_FABSF]) + HAVE_FABSL=1; AC_SUBST([HAVE_FABSL]) + HAVE_FMA=1; AC_SUBST([HAVE_FMA]) + HAVE_FMAF=1; AC_SUBST([HAVE_FMAF]) + HAVE_FMAL=1; AC_SUBST([HAVE_FMAL]) + HAVE_FMODF=1; AC_SUBST([HAVE_FMODF]) + HAVE_FMODL=1; AC_SUBST([HAVE_FMODL]) + HAVE_FREXPF=1; AC_SUBST([HAVE_FREXPF]) + HAVE_HYPOTF=1; AC_SUBST([HAVE_HYPOTF]) + HAVE_HYPOTL=1; AC_SUBST([HAVE_HYPOTL]) + HAVE_ILOGB=1; AC_SUBST([HAVE_ILOGB]) + HAVE_ILOGBF=1; AC_SUBST([HAVE_ILOGBF]) + HAVE_ILOGBL=1; AC_SUBST([HAVE_ILOGBL]) + HAVE_ISNANF=1; AC_SUBST([HAVE_ISNANF]) + HAVE_ISNAND=1; AC_SUBST([HAVE_ISNAND]) + HAVE_ISNANL=1; AC_SUBST([HAVE_ISNANL]) + HAVE_LDEXPF=1; AC_SUBST([HAVE_LDEXPF]) + HAVE_LOGF=1; AC_SUBST([HAVE_LOGF]) + HAVE_LOGL=1; AC_SUBST([HAVE_LOGL]) + HAVE_LOG10F=1; AC_SUBST([HAVE_LOG10F]) + HAVE_LOG10L=1; AC_SUBST([HAVE_LOG10L]) + HAVE_LOG1P=1; AC_SUBST([HAVE_LOG1P]) + HAVE_LOG1PF=1; AC_SUBST([HAVE_LOG1PF]) + HAVE_LOG1PL=1; AC_SUBST([HAVE_LOG1PL]) + HAVE_LOGBF=1; AC_SUBST([HAVE_LOGBF]) + HAVE_LOGBL=1; AC_SUBST([HAVE_LOGBL]) + HAVE_MODFF=1; AC_SUBST([HAVE_MODFF]) + HAVE_MODFL=1; AC_SUBST([HAVE_MODFL]) + HAVE_POWF=1; AC_SUBST([HAVE_POWF]) + HAVE_REMAINDER=1; AC_SUBST([HAVE_REMAINDER]) + HAVE_REMAINDERF=1; AC_SUBST([HAVE_REMAINDERF]) + HAVE_RINT=1; AC_SUBST([HAVE_RINT]) + HAVE_RINTL=1; AC_SUBST([HAVE_RINTL]) + HAVE_SINF=1; AC_SUBST([HAVE_SINF]) + HAVE_SINL=1; AC_SUBST([HAVE_SINL]) + HAVE_SINHF=1; AC_SUBST([HAVE_SINHF]) + HAVE_SQRTF=1; AC_SUBST([HAVE_SQRTF]) + HAVE_SQRTL=1; AC_SUBST([HAVE_SQRTL]) + HAVE_TANF=1; AC_SUBST([HAVE_TANF]) + HAVE_TANL=1; AC_SUBST([HAVE_TANL]) + HAVE_TANHF=1; AC_SUBST([HAVE_TANHF]) + HAVE_DECL_ACOSL=1; AC_SUBST([HAVE_DECL_ACOSL]) + HAVE_DECL_ASINL=1; AC_SUBST([HAVE_DECL_ASINL]) + HAVE_DECL_ATANL=1; AC_SUBST([HAVE_DECL_ATANL]) + HAVE_DECL_CBRTF=1; AC_SUBST([HAVE_DECL_CBRTF]) + HAVE_DECL_CBRTL=1; AC_SUBST([HAVE_DECL_CBRTL]) + HAVE_DECL_CEILF=1; AC_SUBST([HAVE_DECL_CEILF]) + HAVE_DECL_CEILL=1; AC_SUBST([HAVE_DECL_CEILL]) + HAVE_DECL_COPYSIGNF=1; AC_SUBST([HAVE_DECL_COPYSIGNF]) + HAVE_DECL_COSL=1; AC_SUBST([HAVE_DECL_COSL]) + HAVE_DECL_EXPL=1; AC_SUBST([HAVE_DECL_EXPL]) + HAVE_DECL_EXP2=1; AC_SUBST([HAVE_DECL_EXP2]) + HAVE_DECL_EXP2F=1; AC_SUBST([HAVE_DECL_EXP2F]) + HAVE_DECL_EXP2L=1; AC_SUBST([HAVE_DECL_EXP2L]) + HAVE_DECL_EXPM1L=1; AC_SUBST([HAVE_DECL_EXPM1L]) + HAVE_DECL_FLOORF=1; AC_SUBST([HAVE_DECL_FLOORF]) + HAVE_DECL_FLOORL=1; AC_SUBST([HAVE_DECL_FLOORL]) + HAVE_DECL_FREXPL=1; AC_SUBST([HAVE_DECL_FREXPL]) + HAVE_DECL_LDEXPL=1; AC_SUBST([HAVE_DECL_LDEXPL]) + HAVE_DECL_LOGL=1; AC_SUBST([HAVE_DECL_LOGL]) + HAVE_DECL_LOG10L=1; AC_SUBST([HAVE_DECL_LOG10L]) + HAVE_DECL_LOG2=1; AC_SUBST([HAVE_DECL_LOG2]) + HAVE_DECL_LOG2F=1; AC_SUBST([HAVE_DECL_LOG2F]) + HAVE_DECL_LOG2L=1; AC_SUBST([HAVE_DECL_LOG2L]) + HAVE_DECL_LOGB=1; AC_SUBST([HAVE_DECL_LOGB]) + HAVE_DECL_REMAINDER=1; AC_SUBST([HAVE_DECL_REMAINDER]) + HAVE_DECL_REMAINDERL=1; AC_SUBST([HAVE_DECL_REMAINDERL]) + HAVE_DECL_RINTF=1; AC_SUBST([HAVE_DECL_RINTF]) + HAVE_DECL_ROUND=1; AC_SUBST([HAVE_DECL_ROUND]) + HAVE_DECL_ROUNDF=1; AC_SUBST([HAVE_DECL_ROUNDF]) + HAVE_DECL_ROUNDL=1; AC_SUBST([HAVE_DECL_ROUNDL]) + HAVE_DECL_SINL=1; AC_SUBST([HAVE_DECL_SINL]) + HAVE_DECL_SQRTL=1; AC_SUBST([HAVE_DECL_SQRTL]) + HAVE_DECL_TANL=1; AC_SUBST([HAVE_DECL_TANL]) + HAVE_DECL_TRUNC=1; AC_SUBST([HAVE_DECL_TRUNC]) + HAVE_DECL_TRUNCF=1; AC_SUBST([HAVE_DECL_TRUNCF]) + HAVE_DECL_TRUNCL=1; AC_SUBST([HAVE_DECL_TRUNCL]) + REPLACE_CBRTF=0; AC_SUBST([REPLACE_CBRTF]) + REPLACE_CBRTL=0; AC_SUBST([REPLACE_CBRTL]) + REPLACE_CEIL=0; AC_SUBST([REPLACE_CEIL]) + REPLACE_CEILF=0; AC_SUBST([REPLACE_CEILF]) + REPLACE_CEILL=0; AC_SUBST([REPLACE_CEILL]) + REPLACE_EXPM1=0; AC_SUBST([REPLACE_EXPM1]) + REPLACE_EXPM1F=0; AC_SUBST([REPLACE_EXPM1F]) + REPLACE_EXP2=0; AC_SUBST([REPLACE_EXP2]) + REPLACE_EXP2L=0; AC_SUBST([REPLACE_EXP2L]) + REPLACE_FABSL=0; AC_SUBST([REPLACE_FABSL]) + REPLACE_FLOOR=0; AC_SUBST([REPLACE_FLOOR]) + REPLACE_FLOORF=0; AC_SUBST([REPLACE_FLOORF]) + REPLACE_FLOORL=0; AC_SUBST([REPLACE_FLOORL]) + REPLACE_FMA=0; AC_SUBST([REPLACE_FMA]) + REPLACE_FMAF=0; AC_SUBST([REPLACE_FMAF]) + REPLACE_FMAL=0; AC_SUBST([REPLACE_FMAL]) + REPLACE_FMOD=0; AC_SUBST([REPLACE_FMOD]) + REPLACE_FMODF=0; AC_SUBST([REPLACE_FMODF]) + REPLACE_FMODL=0; AC_SUBST([REPLACE_FMODL]) + REPLACE_FREXPF=0; AC_SUBST([REPLACE_FREXPF]) + REPLACE_FREXP=0; AC_SUBST([REPLACE_FREXP]) + REPLACE_FREXPL=0; AC_SUBST([REPLACE_FREXPL]) + REPLACE_HUGE_VAL=0; AC_SUBST([REPLACE_HUGE_VAL]) + REPLACE_HYPOT=0; AC_SUBST([REPLACE_HYPOT]) + REPLACE_HYPOTF=0; AC_SUBST([REPLACE_HYPOTF]) + REPLACE_HYPOTL=0; AC_SUBST([REPLACE_HYPOTL]) + REPLACE_ILOGB=0; AC_SUBST([REPLACE_ILOGB]) + REPLACE_ILOGBF=0; AC_SUBST([REPLACE_ILOGBF]) + REPLACE_ISFINITE=0; AC_SUBST([REPLACE_ISFINITE]) + REPLACE_ISINF=0; AC_SUBST([REPLACE_ISINF]) + REPLACE_ISNAN=0; AC_SUBST([REPLACE_ISNAN]) + REPLACE_LDEXPL=0; AC_SUBST([REPLACE_LDEXPL]) + REPLACE_LOG=0; AC_SUBST([REPLACE_LOG]) + REPLACE_LOGF=0; AC_SUBST([REPLACE_LOGF]) + REPLACE_LOGL=0; AC_SUBST([REPLACE_LOGL]) + REPLACE_LOG10=0; AC_SUBST([REPLACE_LOG10]) + REPLACE_LOG10F=0; AC_SUBST([REPLACE_LOG10F]) + REPLACE_LOG10L=0; AC_SUBST([REPLACE_LOG10L]) + REPLACE_LOG1P=0; AC_SUBST([REPLACE_LOG1P]) + REPLACE_LOG1PF=0; AC_SUBST([REPLACE_LOG1PF]) + REPLACE_LOG1PL=0; AC_SUBST([REPLACE_LOG1PL]) + REPLACE_LOG2=0; AC_SUBST([REPLACE_LOG2]) + REPLACE_LOG2F=0; AC_SUBST([REPLACE_LOG2F]) + REPLACE_LOG2L=0; AC_SUBST([REPLACE_LOG2L]) + REPLACE_LOGB=0; AC_SUBST([REPLACE_LOGB]) + REPLACE_LOGBF=0; AC_SUBST([REPLACE_LOGBF]) + REPLACE_LOGBL=0; AC_SUBST([REPLACE_LOGBL]) + REPLACE_MODF=0; AC_SUBST([REPLACE_MODF]) + REPLACE_MODFF=0; AC_SUBST([REPLACE_MODFF]) + REPLACE_MODFL=0; AC_SUBST([REPLACE_MODFL]) + REPLACE_NAN=0; AC_SUBST([REPLACE_NAN]) + REPLACE_REMAINDER=0; AC_SUBST([REPLACE_REMAINDER]) + REPLACE_REMAINDERF=0; AC_SUBST([REPLACE_REMAINDERF]) + REPLACE_REMAINDERL=0; AC_SUBST([REPLACE_REMAINDERL]) + REPLACE_ROUND=0; AC_SUBST([REPLACE_ROUND]) + REPLACE_ROUNDF=0; AC_SUBST([REPLACE_ROUNDF]) + REPLACE_ROUNDL=0; AC_SUBST([REPLACE_ROUNDL]) + REPLACE_SIGNBIT=0; AC_SUBST([REPLACE_SIGNBIT]) + REPLACE_SIGNBIT_USING_GCC=0; AC_SUBST([REPLACE_SIGNBIT_USING_GCC]) + REPLACE_SQRTL=0; AC_SUBST([REPLACE_SQRTL]) + REPLACE_TRUNC=0; AC_SUBST([REPLACE_TRUNC]) + REPLACE_TRUNCF=0; AC_SUBST([REPLACE_TRUNCF]) + REPLACE_TRUNCL=0; AC_SUBST([REPLACE_TRUNCL]) +]) + +# gl_LONG_DOUBLE_VS_DOUBLE +# determines whether 'long double' and 'double' have the same representation. +# Sets variable HAVE_SAME_LONG_DOUBLE_AS_DOUBLE to 0 or 1, and defines +# HAVE_SAME_LONG_DOUBLE_AS_DOUBLE accordingly. +# The currently known platforms where this is the case are: +# Linux/HPPA, Minix 3.1.8, AIX 5, AIX 6 and 7 with xlc, MSVC 9. +AC_DEFUN([gl_LONG_DOUBLE_VS_DOUBLE], +[ + AC_CACHE_CHECK([whether long double and double are the same], + [gl_cv_long_double_equals_double], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#include ]], + [[typedef int check[sizeof (long double) == sizeof (double) + && LDBL_MANT_DIG == DBL_MANT_DIG + && LDBL_MAX_EXP == DBL_MAX_EXP + && LDBL_MIN_EXP == DBL_MIN_EXP + ? 1 : -1]; + ]])], + [gl_cv_long_double_equals_double=yes], + [gl_cv_long_double_equals_double=no]) + ]) + if test $gl_cv_long_double_equals_double = yes; then + AC_DEFINE([HAVE_SAME_LONG_DOUBLE_AS_DOUBLE], [1], + [Define to 1 if 'long double' and 'double' have the same representation.]) + HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=1 + else + HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=0 + fi + AC_SUBST([HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]) +]) diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/mbrtowc.m4 gettext-0.19.7/gettext-tools/gnulib-m4/mbrtowc.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/mbrtowc.m4 2015-09-11 03:03:57.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/mbrtowc.m4 2015-12-27 23:08:32.000000000 +0000 @@ -1,4 +1,4 @@ -# mbrtowc.m4 serial 26 +# mbrtowc.m4 serial 26 -*- coding: utf-8 -*- dnl Copyright (C) 2001-2002, 2004-2005, 2008-2015 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation @@ -569,10 +569,10 @@ int main (void) { - return mbrtowc (&wc, "", 0, &mbs) == (size_t) -2; + return mbrtowc (&wc, "", 0, &mbs) != (size_t) -2; }]])], - [gl_cv_func_mbrtowc_empty_input=no], [gl_cv_func_mbrtowc_empty_input=yes], + [gl_cv_func_mbrtowc_empty_input=no], [:]) ]) ]) diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/pow.m4 gettext-0.19.7/gettext-tools/gnulib-m4/pow.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/pow.m4 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/pow.m4 2015-12-27 23:08:32.000000000 +0000 @@ -0,0 +1,11 @@ +# pow.m4 serial 1 +dnl Copyright (C) 2011-2015 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. + +AC_DEFUN([gl_FUNC_POW], +[ + dnl Determine POW_LIBM. + gl_COMMON_DOUBLE_MATHFUNC([pow]) +]) diff -Nru gettext-0.19.6/gettext-tools/gnulib-m4/signbit.m4 gettext-0.19.7/gettext-tools/gnulib-m4/signbit.m4 --- gettext-0.19.6/gettext-tools/gnulib-m4/signbit.m4 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-m4/signbit.m4 2015-12-27 23:08:32.000000000 +0000 @@ -0,0 +1,365 @@ +# signbit.m4 serial 13 +dnl Copyright (C) 2007-2015 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. + +AC_DEFUN([gl_SIGNBIT], +[ + AC_REQUIRE([gl_MATH_H_DEFAULTS]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([for signbit macro], [gl_cv_func_signbit], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +/* If signbit is defined as a function, don't use it, since calling it for + 'float' or 'long double' arguments would involve conversions. + If signbit is not declared at all but exists as a library function, don't + use it, since the prototype may not match. + If signbit is not declared at all but exists as a compiler built-in, don't + use it, since it's preferable to use __builtin_signbit* (no warnings, + no conversions). */ +#ifndef signbit +# error "signbit should be a macro" +#endif +#include +]gl_SIGNBIT_TEST_PROGRAM +])], + [gl_cv_func_signbit=yes], + [gl_cv_func_signbit=no], + [case "$host_os" in + # Guess yes on glibc systems. + *-gnu*) gl_cv_func_signbit="guessing yes" ;; + # If we don't know, assume the worst. + *) gl_cv_func_signbit="guessing no" ;; + esac + ]) + ]) + dnl GCC 4.0 and newer provides three built-ins for signbit. + dnl They can be used without warnings, also in C++, regardless of . + dnl But they may expand to calls to functions, which may or may not be in + dnl libc. + AC_CACHE_CHECK([for signbit compiler built-ins], [gl_cv_func_signbit_gcc], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#if __GNUC__ >= 4 +# define signbit(x) \ + (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \ + sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \ + __builtin_signbitf (x)) +#else +# error "signbit should be three compiler built-ins" +#endif +#include +]gl_SIGNBIT_TEST_PROGRAM +])], + [gl_cv_func_signbit_gcc=yes], + [gl_cv_func_signbit_gcc=no], + [case "$host_os" in + # Guess yes on glibc systems. + *-gnu*) gl_cv_func_signbit_gcc="guessing yes" ;; + # If we don't know, assume the worst. + *) gl_cv_func_signbit_gcc="guessing no" ;; + esac + ]) + ]) + dnl Use the compiler built-ins whenever possible, because they are more + dnl efficient than the system library functions (if they exist). + case "$gl_cv_func_signbit_gcc" in + *yes) + REPLACE_SIGNBIT_USING_GCC=1 + ;; + *) + case "$gl_cv_func_signbit" in + *yes) ;; + *) + dnl REPLACE_SIGNBIT=1 makes sure the signbit[fdl] functions get built. + REPLACE_SIGNBIT=1 + gl_FLOAT_SIGN_LOCATION + gl_DOUBLE_SIGN_LOCATION + gl_LONG_DOUBLE_SIGN_LOCATION + if test "$gl_cv_cc_float_signbit" = unknown; then + dnl Test whether copysignf() is declared. + AC_CHECK_DECLS([copysignf], , , [[#include ]]) + if test "$ac_cv_have_decl_copysignf" = yes; then + dnl Test whether copysignf() can be used without libm. + AC_CACHE_CHECK([whether copysignf can be used without linking with libm], + [gl_cv_func_copysignf_no_libm], + [ + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + float x, y;]], + [[return copysignf (x, y) < 0;]])], + [gl_cv_func_copysignf_no_libm=yes], + [gl_cv_func_copysignf_no_libm=no]) + ]) + if test $gl_cv_func_copysignf_no_libm = yes; then + AC_DEFINE([HAVE_COPYSIGNF_IN_LIBC], [1], + [Define if the copysignf function is declared in and available in libc.]) + fi + fi + fi + if test "$gl_cv_cc_double_signbit" = unknown; then + dnl Test whether copysign() is declared. + AC_CHECK_DECLS([copysign], , , [[#include ]]) + if test "$ac_cv_have_decl_copysign" = yes; then + dnl Test whether copysign() can be used without libm. + AC_CACHE_CHECK([whether copysign can be used without linking with libm], + [gl_cv_func_copysign_no_libm], + [ + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + double x, y;]], + [[return copysign (x, y) < 0;]])], + [gl_cv_func_copysign_no_libm=yes], + [gl_cv_func_copysign_no_libm=no]) + ]) + if test $gl_cv_func_copysign_no_libm = yes; then + AC_DEFINE([HAVE_COPYSIGN_IN_LIBC], [1], + [Define if the copysign function is declared in and available in libc.]) + fi + fi + fi + if test "$gl_cv_cc_long_double_signbit" = unknown; then + dnl Test whether copysignl() is declared. + AC_CHECK_DECLS([copysignl], , , [[#include ]]) + if test "$ac_cv_have_decl_copysignl" = yes; then + dnl Test whether copysignl() can be used without libm. + AC_CACHE_CHECK([whether copysignl can be used without linking with libm], + [gl_cv_func_copysignl_no_libm], + [ + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + long double x, y;]], + [[return copysignl (x, y) < 0;]])], + [gl_cv_func_copysignl_no_libm=yes], + [gl_cv_func_copysignl_no_libm=no]) + ]) + if test $gl_cv_func_copysignl_no_libm = yes; then + AC_DEFINE([HAVE_COPYSIGNL_IN_LIBC], [1], + [Define if the copysignl function is declared in and available in libc.]) + fi + fi + fi + ;; + esac + ;; + esac +]) + +AC_DEFUN([gl_SIGNBIT_TEST_PROGRAM], [[ +/* Global variables. + Needed because GCC 4 constant-folds __builtin_signbitl (literal) + but cannot constant-fold __builtin_signbitl (variable). */ +float vf; +double vd; +long double vl; +int main () +{ +/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. + So we use -p0f and -p0d instead. */ +float p0f = 0.0f; +float m0f = -p0f; +double p0d = 0.0; +double m0d = -p0d; +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use another constant expression instead. + But that expression does not work on other platforms, such as when + cross-compiling to PowerPC on Mac OS X 10.5. */ +long double p0l = 0.0L; +#if defined __hpux || defined __sgi +long double m0l = -LDBL_MIN * LDBL_MIN; +#else +long double m0l = -p0l; +#endif + int result = 0; + if (signbit (vf)) /* link check */ + vf++; + { + float plus_inf = 1.0f / p0f; + float minus_inf = -1.0f / p0f; + if (!(!signbit (255.0f) + && signbit (-255.0f) + && !signbit (p0f) + && (memcmp (&m0f, &p0f, sizeof (float)) == 0 || signbit (m0f)) + && !signbit (plus_inf) + && signbit (minus_inf))) + result |= 1; + } + if (signbit (vd)) /* link check */ + vd++; + { + double plus_inf = 1.0 / p0d; + double minus_inf = -1.0 / p0d; + if (!(!signbit (255.0) + && signbit (-255.0) + && !signbit (p0d) + && (memcmp (&m0d, &p0d, sizeof (double)) == 0 || signbit (m0d)) + && !signbit (plus_inf) + && signbit (minus_inf))) + result |= 2; + } + if (signbit (vl)) /* link check */ + vl++; + { + long double plus_inf = 1.0L / p0l; + long double minus_inf = -1.0L / p0l; + if (signbit (255.0L)) + result |= 4; + if (!signbit (-255.0L)) + result |= 4; + if (signbit (p0l)) + result |= 8; + if (!(memcmp (&m0l, &p0l, sizeof (long double)) == 0 || signbit (m0l))) + result |= 16; + if (signbit (plus_inf)) + result |= 32; + if (!signbit (minus_inf)) + result |= 64; + } + return result; +} +]]) + +AC_DEFUN([gl_FLOAT_SIGN_LOCATION], +[ + gl_FLOATTYPE_SIGN_LOCATION([float], [gl_cv_cc_float_signbit], [f], [FLT]) +]) + +AC_DEFUN([gl_DOUBLE_SIGN_LOCATION], +[ + gl_FLOATTYPE_SIGN_LOCATION([double], [gl_cv_cc_double_signbit], [], [DBL]) +]) + +AC_DEFUN([gl_LONG_DOUBLE_SIGN_LOCATION], +[ + gl_FLOATTYPE_SIGN_LOCATION([long double], [gl_cv_cc_long_double_signbit], [L], [LDBL]) +]) + +AC_DEFUN([gl_FLOATTYPE_SIGN_LOCATION], +[ + AC_CACHE_CHECK([where to find the sign bit in a '$1'], + [$2], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#include +#define NWORDS \ + ((sizeof ($1) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +typedef union { $1 value; unsigned int word[NWORDS]; } + memory_float; +static memory_float plus = { 1.0$3 }; +static memory_float minus = { -1.0$3 }; +int main () +{ + size_t j, k, i; + unsigned int m; + FILE *fp = fopen ("conftest.out", "w"); + if (fp == NULL) + return 1; + /* Find the different bit. */ + k = 0; m = 0; + for (j = 0; j < NWORDS; j++) + { + unsigned int x = plus.word[j] ^ minus.word[j]; + if ((x & (x - 1)) || (x && m)) + { + /* More than one bit difference. */ + fprintf (fp, "unknown"); + return 2; + } + if (x) + { + k = j; + m = x; + } + } + if (m == 0) + { + /* No difference. */ + fprintf (fp, "unknown"); + return 3; + } + /* Now m = plus.word[k] ^ ~minus.word[k]. */ + if (plus.word[k] & ~minus.word[k]) + { + /* Oh? The sign bit is set in the positive and cleared in the negative + numbers? */ + fprintf (fp, "unknown"); + return 4; + } + for (i = 0; ; i++) + if ((m >> i) & 1) + break; + fprintf (fp, "word %d bit %d", (int) k, (int) i); + if (fclose (fp) != 0) + return 5; + return 0; +} + ]])], + [$2=`cat conftest.out`], + [$2="unknown"], + [ + dnl When cross-compiling, we don't know. It depends on the + dnl ABI and compiler version. There are too many cases. + $2="unknown" + ]) + rm -f conftest.out + ]) + case "$]$2[" in + word*bit*) + word=`echo "$]$2[" | sed -e 's/word //' -e 's/ bit.*//'` + bit=`echo "$]$2[" | sed -e 's/word.*bit //'` + AC_DEFINE_UNQUOTED([$4][_SIGNBIT_WORD], [$word], + [Define as the word index where to find the sign of '$1'.]) + AC_DEFINE_UNQUOTED([$4][_SIGNBIT_BIT], [$bit], + [Define as the bit index in the word where to find the sign of '$1'.]) + ;; + esac +]) + +# Expands to code that defines a function signbitf(float). +# It extracts the sign bit of a non-NaN value. +AC_DEFUN([gl_FLOAT_SIGNBIT_CODE], +[ + gl_FLOATTYPE_SIGNBIT_CODE([float], [f], [f]) +]) + +# Expands to code that defines a function signbitd(double). +# It extracts the sign bit of a non-NaN value. +AC_DEFUN([gl_DOUBLE_SIGNBIT_CODE], +[ + gl_FLOATTYPE_SIGNBIT_CODE([double], [d], []) +]) + +# Expands to code that defines a function signbitl(long double). +# It extracts the sign bit of a non-NaN value. +AC_DEFUN([gl_LONG_DOUBLE_SIGNBIT_CODE], +[ + gl_FLOATTYPE_SIGNBIT_CODE([long double], [l], [L]) +]) + +AC_DEFUN([gl_FLOATTYPE_SIGNBIT_CODE], +[[ +static int +signbit$2 ($1 value) +{ + typedef union { $1 f; unsigned char b[sizeof ($1)]; } float_union; + static float_union plus_one = { 1.0$3 }; /* unused bits are zero here */ + static float_union minus_one = { -1.0$3 }; /* unused bits are zero here */ + /* Compute the sign bit mask as the XOR of plus_one and minus_one. */ + float_union u; + unsigned int i; + u.f = value; + for (i = 0; i < sizeof ($1); i++) + if (u.b[i] & (plus_one.b[i] ^ minus_one.b[i])) + return 1; + return 0; +} +]]) diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/ChangeLog gettext-0.19.7/gettext-tools/gnulib-tests/ChangeLog --- gettext-0.19.6/gettext-tools/gnulib-tests/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/ChangeLog 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -2015-09-11 Daiki Ueno - - * gettext 0.19.6 released. - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-05-24 Bruno Haible - - Fix compilation failure on systems without . - * Makefile.am (AM_CPPFLAGS): Add -I../intl. - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2009-05-21 Bruno Haible - - * Makefile.am (AUTOMAKE_OPTIONS): Add 1.11 and color-tests. - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2007-10-01 Bruno Haible - - * Makefile.am: New file. - diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/ChangeLog.0 gettext-0.19.7/gettext-tools/gnulib-tests/ChangeLog.0 --- gettext-0.19.6/gettext-tools/gnulib-tests/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/ChangeLog.0 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,45 @@ +2015-09-11 Daiki Ueno + + * gettext 0.19.6 released. + +2015-07-10 Daiki Ueno + + * gettext 0.19.5 released. + +2014-12-24 Daiki Ueno + + * gettext 0.19.4 released. + +2014-10-15 Daiki Ueno + + * gettext 0.19.3 released. + +2012-12-25 Daiki Ueno + + * gettext-0.18.2 released. + +2010-06-04 Bruno Haible + + * gettext-0.18.1 released. + +2010-05-24 Bruno Haible + + Fix compilation failure on systems without . + * Makefile.am (AM_CPPFLAGS): Add -I../intl. + +2010-05-09 Bruno Haible + + * gettext-0.18 released. + +2009-05-21 Bruno Haible + + * Makefile.am (AUTOMAKE_OPTIONS): Add 1.11 and color-tests. + +2007-11-07 Bruno Haible + + * gettext-0.17 released. + +2007-10-01 Bruno Haible + + * Makefile.am: New file. + diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/ctype.in.h gettext-0.19.7/gettext-tools/gnulib-tests/ctype.in.h --- gettext-0.19.6/gettext-tools/gnulib-tests/ctype.in.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/ctype.in.h 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,57 @@ +/* A substitute for ISO C99 , for platforms on which it is incomplete. + + Copyright (C) 2009-2015 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +/* Written by Bruno Haible. */ + +/* + * ISO C 99 for platforms on which it is incomplete. + * + */ + +#ifndef _@GUARD_PREFIX@_CTYPE_H + +#if __GNUC__ >= 3 +@PRAGMA_SYSTEM_HEADER@ +#endif +@PRAGMA_COLUMNS@ + +/* Include the original . */ +/* The include_next requires a split double-inclusion guard. */ +#@INCLUDE_NEXT@ @NEXT_CTYPE_H@ + +#ifndef _@GUARD_PREFIX@_CTYPE_H +#define _@GUARD_PREFIX@_CTYPE_H + +/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ + +/* The definition of _GL_WARN_ON_USE is copied here. */ + +/* Return non-zero if c is a blank, i.e. a space or tab character. */ +#if @GNULIB_ISBLANK@ +# if !@HAVE_ISBLANK@ +_GL_EXTERN_C int isblank (int c); +# endif +#elif defined GNULIB_POSIXCHECK +# undef isblank +# if HAVE_RAW_DECL_ISBLANK +_GL_WARN_ON_USE (isblank, "isblank is unportable - " + "use gnulib module isblank for portability"); +# endif +#endif + +#endif /* _@GUARD_PREFIX@_CTYPE_H */ +#endif /* _@GUARD_PREFIX@_CTYPE_H */ diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/file-has-acl.c gettext-0.19.7/gettext-tools/gnulib-tests/file-has-acl.c --- gettext-0.19.6/gettext-tools/gnulib-tests/file-has-acl.c 2015-09-11 03:03:57.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/file-has-acl.c 2015-12-27 23:08:33.000000000 +0000 @@ -1,4 +1,4 @@ -/* Test whether a file has a nontrivial access control list. +/* Test whether a file has a nontrivial ACL. -*- coding: utf-8 -*- Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc. diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/fpucw.h gettext-0.19.7/gettext-tools/gnulib-tests/fpucw.h --- gettext-0.19.6/gettext-tools/gnulib-tests/fpucw.h 2015-09-11 03:03:57.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/fpucw.h 2015-12-27 23:08:33.000000000 +0000 @@ -1,4 +1,4 @@ -/* Manipulating the FPU control word. +/* Manipulating the FPU control word. -*- coding: utf-8 -*- Copyright (C) 2007-2015 Free Software Foundation, Inc. Written by Bruno Haible , 2007. diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/infinity.h gettext-0.19.7/gettext-tools/gnulib-tests/infinity.h --- gettext-0.19.6/gettext-tools/gnulib-tests/infinity.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/infinity.h 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,60 @@ +/* Macros for infinity. + Copyright (C) 2011-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + + +/* Infinityf () returns a 'float' +Infinity. */ + +/* The Microsoft MSVC 9 compiler chokes on the expression 1.0f / 0.0f. */ +#if defined _MSC_VER +static float +Infinityf () +{ + static float zero = 0.0f; + return 1.0f / zero; +} +#else +# define Infinityf() (1.0f / 0.0f) +#endif + + +/* Infinityd () returns a 'double' +Infinity. */ + +/* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0. */ +#if defined _MSC_VER +static double +Infinityd () +{ + static double zero = 0.0; + return 1.0 / zero; +} +#else +# define Infinityd() (1.0 / 0.0) +#endif + + +/* Infinityl () returns a 'long double' +Infinity. */ + +/* The Microsoft MSVC 9 compiler chokes on the expression 1.0L / 0.0L. */ +#if defined _MSC_VER +static double +Infinityl () +{ + static long double zero = 0.0L; + return 1.0L / zero; +} +#else +# define Infinityl() (1.0L / 0.0L) +#endif diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/Makefile.gnulib gettext-0.19.7/gettext-tools/gnulib-tests/Makefile.gnulib --- gettext-0.19.6/gettext-tools/gnulib-tests/Makefile.gnulib 2015-09-11 03:04:14.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/Makefile.gnulib 2015-12-27 23:08:50.000000000 +0000 @@ -165,7 +165,6 @@ TESTS += test-c-ctype check_PROGRAMS += test-c-ctype - EXTRA_DIST += test-c-ctype.c macros.h ## end gnulib module c-ctype-tests @@ -231,6 +230,41 @@ ## end gnulib module copy-file-tests +## begin gnulib module ctype + +BUILT_SOURCES += ctype.h + +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +ctype.h: ctype.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's|@''GUARD_PREFIX''@|GL|g' \ + -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ + -e 's|@''NEXT_CTYPE_H''@|$(NEXT_CTYPE_H)|g' \ + -e 's/@''GNULIB_ISBLANK''@/$(GNULIB_ISBLANK)/g' \ + -e 's/@''HAVE_ISBLANK''@/$(HAVE_ISBLANK)/g' \ + -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ + -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ + < $(srcdir)/ctype.in.h; \ + } > $@-t && \ + mv $@-t $@ +MOSTLYCLEANFILES += ctype.h ctype.h-t + +EXTRA_DIST += ctype.in.h + +## end gnulib module ctype + +## begin gnulib module ctype-tests + +TESTS += test-ctype +check_PROGRAMS += test-ctype +EXTRA_DIST += test-ctype.c + +## end gnulib module ctype-tests + ## begin gnulib module dirent-tests TESTS += test-dirent @@ -282,6 +316,16 @@ ## end gnulib module errno-tests +## begin gnulib module fabs-tests + +TESTS += test-fabs +check_PROGRAMS += test-fabs +test_fabs_SOURCES = test-fabs.c randomd.c +test_fabs_LDADD = $(LDADD) @FABS_LIBM@ +EXTRA_DIST += test-fabs.c test-fabs.h signature.h minus-zero.h macros.h randomd.c + +## end gnulib module fabs-tests + ## begin gnulib module fcntl-h-tests TESTS += test-fcntl-h @@ -607,6 +651,82 @@ ## end gnulib module inttypes-tests +## begin gnulib module isinf-tests + +TESTS += test-isinf +check_PROGRAMS += test-isinf +test_isinf_LDADD = $(LDADD) @ISINF_LIBM@ +EXTRA_DIST += test-isinf.c infinity.h macros.h + +## end gnulib module isinf-tests + +## begin gnulib module isnan-tests + +TESTS += test-isnan +check_PROGRAMS += test-isnan +test_isnan_LDADD = $(LDADD) @ISNAN_LIBM@ + +EXTRA_DIST += test-isnan.c minus-zero.h infinity.h nan.h macros.h + +## end gnulib module isnan-tests + +## begin gnulib module isnand-nolibm-tests + +TESTS += test-isnand-nolibm +check_PROGRAMS += test-isnand-nolibm + +EXTRA_DIST += test-isnand-nolibm.c test-isnand.h minus-zero.h infinity.h nan.h macros.h + +## end gnulib module isnand-nolibm-tests + +## begin gnulib module isnand-tests + +TESTS += test-isnand +check_PROGRAMS += test-isnand +test_isnand_LDADD = $(LDADD) @ISNAND_LIBM@ + +EXTRA_DIST += test-isnand.c test-isnand.h minus-zero.h infinity.h nan.h macros.h + +## end gnulib module isnand-tests + +## begin gnulib module isnanf-nolibm-tests + +TESTS += test-isnanf-nolibm +check_PROGRAMS += test-isnanf-nolibm + +EXTRA_DIST += test-isnanf-nolibm.c test-isnanf.h minus-zero.h infinity.h nan.h macros.h + +## end gnulib module isnanf-nolibm-tests + +## begin gnulib module isnanf-tests + +TESTS += test-isnanf +check_PROGRAMS += test-isnanf +test_isnanf_LDADD = $(LDADD) @ISNANF_LIBM@ + +EXTRA_DIST += test-isnanf.c test-isnanf.h minus-zero.h infinity.h nan.h macros.h + +## end gnulib module isnanf-tests + +## begin gnulib module isnanl-nolibm-tests + +TESTS += test-isnanl-nolibm +check_PROGRAMS += test-isnanl-nolibm + +EXTRA_DIST += test-isnanl-nolibm.c test-isnanl.h minus-zero.h infinity.h nan.h macros.h + +## end gnulib module isnanl-nolibm-tests + +## begin gnulib module isnanl-tests + +TESTS += test-isnanl +check_PROGRAMS += test-isnanl +test_isnanl_LDADD = $(LDADD) @ISNANL_LIBM@ + +EXTRA_DIST += test-isnanl.c test-isnanl.h minus-zero.h infinity.h nan.h macros.h + +## end gnulib module isnanl-tests + ## begin gnulib module iswblank-tests TESTS += test-iswblank @@ -658,6 +778,16 @@ ## end gnulib module lock-tests +## begin gnulib module log10-tests + +TESTS += test-log10 +check_PROGRAMS += test-log10 +test_log10_SOURCES = test-log10.c randomd.c +test_log10_LDADD = $(LDADD) @LOG10_LIBM@ +EXTRA_DIST += test-log10.c test-log10.h minus-zero.h signature.h macros.h randomd.c + +## end gnulib module log10-tests + ## begin gnulib module lseek @@ -692,6 +822,14 @@ ## end gnulib module malloca-tests +## begin gnulib module math-tests + +TESTS += test-math +check_PROGRAMS += test-math +EXTRA_DIST += test-math.c macros.h + +## end gnulib module math-tests + ## begin gnulib module mbrtowc-tests TESTS += \ @@ -864,6 +1002,15 @@ ## end gnulib module posix_spawnp-tests +## begin gnulib module pow-tests + +TESTS += test-pow +check_PROGRAMS += test-pow +test_pow_LDADD = $(LDADD) @POW_LIBM@ +EXTRA_DIST += test-pow.c signature.h macros.h + +## end gnulib module pow-tests + ## begin gnulib module putenv @@ -999,6 +1146,15 @@ ## end gnulib module signal-h-tests +## begin gnulib module signbit-tests + +TESTS += test-signbit +check_PROGRAMS += test-signbit + +EXTRA_DIST += test-signbit.c minus-zero.h infinity.h macros.h + +## end gnulib module signbit-tests + ## begin gnulib module sigpipe-tests TESTS += test-sigpipe.sh @@ -1398,7 +1554,7 @@ TESTS_ENVIRONMENT += srcdir='$(srcdir)' check_PROGRAMS += test-term-ostream test_term_ostream_LDADD = $(LIBTERMCAP) $(LDADD) -EXTRA_DIST += test-term-ostream.c test-term-ostream-xterm test-term-ostream-xterm-r6.out test-term-ostream-xterm-xf86-v32.out test-term-ostream-xterm-basic.out test-term-ostream-xterm-basic-italic.out test-term-ostream-xterm-8bit.out test-term-ostream-xterm-linux-debian.out test-term-ostream-xterm-linux-mandriva.out test-term-ostream-xterm-netbsd3.out test-term-ostream-xterm-solaris10.out test-term-ostream-xterm-aix51.out test-term-ostream-xterm-osf51.out test-term-ostream-xterm-irix65.out test-term-ostream-xterm-mingw.out test-term-ostream-xterm-16color.out test-term-ostream-xterm-88color.out test-term-ostream-xterm-256color.out +EXTRA_DIST += test-term-ostream.c test-term-ostream-xterm test-term-ostream-xterm-r6.out test-term-ostream-xterm-xf86-v32.out test-term-ostream-xterm-basic.out test-term-ostream-xterm-basic-italic.out test-term-ostream-xterm-freebsd101.out test-term-ostream-xterm-8bit.out test-term-ostream-xterm-linux-debian.out test-term-ostream-xterm-linux-mandriva.out test-term-ostream-xterm-netbsd3.out test-term-ostream-xterm-solaris10.out test-term-ostream-xterm-aix51.out test-term-ostream-xterm-osf51.out test-term-ostream-xterm-irix65.out test-term-ostream-xterm-mingw.out test-term-ostream-xterm-16color.out test-term-ostream-xterm-88color.out test-term-ostream-xterm-256color.out ## end gnulib module term-ostream-tests diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/Makefile.in gettext-0.19.7/gettext-tools/gnulib-tests/Makefile.in --- gettext-0.19.6/gettext-tools/gnulib-tests/Makefile.in 2015-09-11 03:05:10.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/Makefile.in 2015-12-27 23:09:41.000000000 +0000 @@ -121,43 +121,50 @@ test-c-strcasestr$(EXEEXT) test-c-strstr$(EXEEXT) \ test-canonicalize-lgpl$(EXEEXT) test-cloexec$(EXEEXT) \ test-close$(EXEEXT) test-copy-file.sh test-copy-file-1.sh \ - test-copy-file-2.sh test-dirent$(EXEEXT) test-dup$(EXEEXT) \ - test-dup2$(EXEEXT) test-environ$(EXEEXT) test-errno$(EXEEXT) \ - test-fcntl-h$(EXEEXT) test-fcntl$(EXEEXT) test-fdopen$(EXEEXT) \ - test-fgetc$(EXEEXT) test-file-has-acl.sh \ - test-file-has-acl-1.sh test-file-has-acl-2.sh \ - test-float$(EXEEXT) test-fnmatch$(EXEEXT) test-fopen$(EXEEXT) \ - test-fputc$(EXEEXT) test-fread$(EXEEXT) test-fstat$(EXEEXT) \ - test-fstrcmp$(EXEEXT) test-ftell.sh test-ftell2.sh \ - test-ftell3$(EXEEXT) test-ftello.sh test-ftello2.sh \ - test-ftello3$(EXEEXT) test-ftello4.sh test-fwrite$(EXEEXT) \ - test-getcwd-lgpl$(EXEEXT) test-getdelim$(EXEEXT) \ - test-getdtablesize$(EXEEXT) test-getline$(EXEEXT) \ - test-getopt$(EXEEXT) test-gettimeofday$(EXEEXT) \ - test-iconv-h$(EXEEXT) test-iconv$(EXEEXT) \ - test-ignore-value$(EXEEXT) test-intprops$(EXEEXT) \ - test-inttypes$(EXEEXT) test-iswblank$(EXEEXT) \ - test-langinfo$(EXEEXT) test-linkedhash_list$(EXEEXT) \ - test-locale$(EXEEXT) test-localename$(EXEEXT) \ - test-lock$(EXEEXT) test-lseek.sh test-lstat$(EXEEXT) \ - test-malloca$(EXEEXT) test-mbrtowc1.sh test-mbrtowc2.sh \ - test-mbrtowc3.sh test-mbrtowc4.sh test-mbrtowc-w32-1.sh \ - test-mbrtowc-w32-2.sh test-mbrtowc-w32-3.sh \ - test-mbrtowc-w32-4.sh test-mbrtowc-w32-5.sh test-mbsinit.sh \ - test-mbsrtowcs1.sh test-mbsrtowcs2.sh test-mbsrtowcs3.sh \ - test-mbsrtowcs4.sh test-mbsstr1$(EXEEXT) test-mbsstr2.sh \ - test-mbsstr3.sh test-memchr$(EXEEXT) test-open$(EXEEXT) \ - test-pathmax$(EXEEXT) test-pipe-filter-ii1.sh \ - test-pipe-filter-ii2.sh test-pipe2$(EXEEXT) \ + test-copy-file-2.sh test-ctype$(EXEEXT) test-dirent$(EXEEXT) \ + test-dup$(EXEEXT) test-dup2$(EXEEXT) test-environ$(EXEEXT) \ + test-errno$(EXEEXT) test-fabs$(EXEEXT) test-fcntl-h$(EXEEXT) \ + test-fcntl$(EXEEXT) test-fdopen$(EXEEXT) test-fgetc$(EXEEXT) \ + test-file-has-acl.sh test-file-has-acl-1.sh \ + test-file-has-acl-2.sh test-float$(EXEEXT) \ + test-fnmatch$(EXEEXT) test-fopen$(EXEEXT) test-fputc$(EXEEXT) \ + test-fread$(EXEEXT) test-fstat$(EXEEXT) test-fstrcmp$(EXEEXT) \ + test-ftell.sh test-ftell2.sh test-ftell3$(EXEEXT) \ + test-ftello.sh test-ftello2.sh test-ftello3$(EXEEXT) \ + test-ftello4.sh test-fwrite$(EXEEXT) test-getcwd-lgpl$(EXEEXT) \ + test-getdelim$(EXEEXT) test-getdtablesize$(EXEEXT) \ + test-getline$(EXEEXT) test-getopt$(EXEEXT) \ + test-gettimeofday$(EXEEXT) test-iconv-h$(EXEEXT) \ + test-iconv$(EXEEXT) test-ignore-value$(EXEEXT) \ + test-intprops$(EXEEXT) test-inttypes$(EXEEXT) \ + test-isinf$(EXEEXT) test-isnan$(EXEEXT) \ + test-isnand-nolibm$(EXEEXT) test-isnand$(EXEEXT) \ + test-isnanf-nolibm$(EXEEXT) test-isnanf$(EXEEXT) \ + test-isnanl-nolibm$(EXEEXT) test-isnanl$(EXEEXT) \ + test-iswblank$(EXEEXT) test-langinfo$(EXEEXT) \ + test-linkedhash_list$(EXEEXT) test-locale$(EXEEXT) \ + test-localename$(EXEEXT) test-lock$(EXEEXT) \ + test-log10$(EXEEXT) test-lseek.sh test-lstat$(EXEEXT) \ + test-malloca$(EXEEXT) test-math$(EXEEXT) test-mbrtowc1.sh \ + test-mbrtowc2.sh test-mbrtowc3.sh test-mbrtowc4.sh \ + test-mbrtowc-w32-1.sh test-mbrtowc-w32-2.sh \ + test-mbrtowc-w32-3.sh test-mbrtowc-w32-4.sh \ + test-mbrtowc-w32-5.sh test-mbsinit.sh test-mbsrtowcs1.sh \ + test-mbsrtowcs2.sh test-mbsrtowcs3.sh test-mbsrtowcs4.sh \ + test-mbsstr1$(EXEEXT) test-mbsstr2.sh test-mbsstr3.sh \ + test-memchr$(EXEEXT) test-open$(EXEEXT) test-pathmax$(EXEEXT) \ + test-pipe-filter-ii1.sh test-pipe-filter-ii2.sh \ + test-pipe2$(EXEEXT) \ test-posix_spawn_file_actions_addclose$(EXEEXT) \ test-posix_spawn_file_actions_adddup2$(EXEEXT) \ test-posix_spawn_file_actions_addopen$(EXEEXT) $(am__EXEEXT_1) \ - test-quotearg-simple$(EXEEXT) test-raise$(EXEEXT) \ - test-rawmemchr$(EXEEXT) test-read-file$(EXEEXT) \ - test-read$(EXEEXT) test-readlink$(EXEEXT) test-rmdir$(EXEEXT) \ - test-sched$(EXEEXT) test-setenv$(EXEEXT) test-setlocale1.sh \ - test-setlocale2.sh test-sh-quote$(EXEEXT) \ - test-sigaction$(EXEEXT) test-signal-h$(EXEEXT) test-sigpipe.sh \ + test-pow$(EXEEXT) test-quotearg-simple$(EXEEXT) \ + test-raise$(EXEEXT) test-rawmemchr$(EXEEXT) \ + test-read-file$(EXEEXT) test-read$(EXEEXT) \ + test-readlink$(EXEEXT) test-rmdir$(EXEEXT) test-sched$(EXEEXT) \ + test-setenv$(EXEEXT) test-setlocale1.sh test-setlocale2.sh \ + test-sh-quote$(EXEEXT) test-sigaction$(EXEEXT) \ + test-signal-h$(EXEEXT) test-signbit$(EXEEXT) test-sigpipe.sh \ test-sigprocmask$(EXEEXT) test-sleep$(EXEEXT) \ test-snprintf$(EXEEXT) test-spawn-pipe.sh test-spawn$(EXEEXT) \ test-stat$(EXEEXT) test-stdalign$(EXEEXT) \ @@ -200,8 +207,9 @@ test-c-strncasecmp$(EXEEXT) test-c-strcasestr$(EXEEXT) \ test-c-strstr$(EXEEXT) test-canonicalize-lgpl$(EXEEXT) \ test-cloexec$(EXEEXT) test-close$(EXEEXT) \ - test-copy-file$(EXEEXT) test-dirent$(EXEEXT) test-dup$(EXEEXT) \ - test-dup2$(EXEEXT) test-environ$(EXEEXT) test-errno$(EXEEXT) \ + test-copy-file$(EXEEXT) test-ctype$(EXEEXT) \ + test-dirent$(EXEEXT) test-dup$(EXEEXT) test-dup2$(EXEEXT) \ + test-environ$(EXEEXT) test-errno$(EXEEXT) test-fabs$(EXEEXT) \ test-fcntl-h$(EXEEXT) test-fcntl$(EXEEXT) test-fdopen$(EXEEXT) \ test-fgetc$(EXEEXT) test-file-has-acl$(EXEEXT) \ test-float$(EXEEXT) test-fnmatch$(EXEEXT) test-fopen$(EXEEXT) \ @@ -214,11 +222,15 @@ test-getopt$(EXEEXT) test-gettimeofday$(EXEEXT) \ test-iconv-h$(EXEEXT) test-iconv$(EXEEXT) \ test-ignore-value$(EXEEXT) test-intprops$(EXEEXT) \ - test-inttypes$(EXEEXT) test-iswblank$(EXEEXT) \ - test-langinfo$(EXEEXT) test-linkedhash_list$(EXEEXT) \ - test-locale$(EXEEXT) test-localename$(EXEEXT) \ - test-lock$(EXEEXT) test-lseek$(EXEEXT) test-lstat$(EXEEXT) \ - test-malloca$(EXEEXT) test-mbrtowc$(EXEEXT) \ + test-inttypes$(EXEEXT) test-isinf$(EXEEXT) test-isnan$(EXEEXT) \ + test-isnand-nolibm$(EXEEXT) test-isnand$(EXEEXT) \ + test-isnanf-nolibm$(EXEEXT) test-isnanf$(EXEEXT) \ + test-isnanl-nolibm$(EXEEXT) test-isnanl$(EXEEXT) \ + test-iswblank$(EXEEXT) test-langinfo$(EXEEXT) \ + test-linkedhash_list$(EXEEXT) test-locale$(EXEEXT) \ + test-localename$(EXEEXT) test-lock$(EXEEXT) \ + test-log10$(EXEEXT) test-lseek$(EXEEXT) test-lstat$(EXEEXT) \ + test-malloca$(EXEEXT) test-math$(EXEEXT) test-mbrtowc$(EXEEXT) \ test-mbrtowc-w32$(EXEEXT) test-mbsinit$(EXEEXT) \ test-mbsrtowcs$(EXEEXT) test-mbsstr1$(EXEEXT) \ test-mbsstr2$(EXEEXT) test-mbsstr3$(EXEEXT) \ @@ -229,13 +241,14 @@ test-posix_spawn_file_actions_addclose$(EXEEXT) \ test-posix_spawn_file_actions_adddup2$(EXEEXT) \ test-posix_spawn_file_actions_addopen$(EXEEXT) $(am__EXEEXT_1) \ - test-quotearg-simple$(EXEEXT) test-raise$(EXEEXT) \ - test-rawmemchr$(EXEEXT) test-read-file$(EXEEXT) \ - test-read$(EXEEXT) test-readlink$(EXEEXT) test-rmdir$(EXEEXT) \ - test-sched$(EXEEXT) test-setenv$(EXEEXT) \ - test-setlocale1$(EXEEXT) test-setlocale2$(EXEEXT) \ - test-sh-quote$(EXEEXT) test-sigaction$(EXEEXT) \ - test-signal-h$(EXEEXT) test-sigpipe$(EXEEXT) \ + test-pow$(EXEEXT) test-quotearg-simple$(EXEEXT) \ + test-raise$(EXEEXT) test-rawmemchr$(EXEEXT) \ + test-read-file$(EXEEXT) test-read$(EXEEXT) \ + test-readlink$(EXEEXT) test-rmdir$(EXEEXT) test-sched$(EXEEXT) \ + test-setenv$(EXEEXT) test-setlocale1$(EXEEXT) \ + test-setlocale2$(EXEEXT) test-sh-quote$(EXEEXT) \ + test-sigaction$(EXEEXT) test-signal-h$(EXEEXT) \ + test-signbit$(EXEEXT) test-sigpipe$(EXEEXT) \ test-sigprocmask$(EXEEXT) test-sleep$(EXEEXT) \ test-snprintf$(EXEEXT) test-spawn-pipe-main$(EXEEXT) \ test-spawn-pipe-child$(EXEEXT) test-spawn$(EXEEXT) \ @@ -302,6 +315,7 @@ $(top_srcdir)/gnulib-m4/btowc.m4 \ $(top_srcdir)/gnulib-m4/byteswap.m4 \ $(top_srcdir)/gnulib-m4/canonicalize.m4 \ + $(top_srcdir)/gnulib-m4/check-math-lib.m4 \ $(top_srcdir)/gnulib-m4/close.m4 \ $(top_srcdir)/gnulib-m4/closedir.m4 \ $(top_srcdir)/gnulib-m4/configmake.m4 \ @@ -309,6 +323,7 @@ $(top_srcdir)/gnulib-m4/csharp.m4 \ $(top_srcdir)/gnulib-m4/csharpcomp.m4 \ $(top_srcdir)/gnulib-m4/csharpexec.m4 \ + $(top_srcdir)/gnulib-m4/ctype.m4 \ $(top_srcdir)/gnulib-m4/curses.m4 \ $(top_srcdir)/gnulib-m4/dirent_h.m4 \ $(top_srcdir)/gnulib-m4/double-slash-root.m4 \ @@ -320,7 +335,10 @@ $(top_srcdir)/gnulib-m4/error.m4 \ $(top_srcdir)/gnulib-m4/execute.m4 \ $(top_srcdir)/gnulib-m4/exponentd.m4 \ + $(top_srcdir)/gnulib-m4/exponentf.m4 \ + $(top_srcdir)/gnulib-m4/exponentl.m4 \ $(top_srcdir)/gnulib-m4/extensions.m4 \ + $(top_srcdir)/gnulib-m4/fabs.m4 \ $(top_srcdir)/gnulib-m4/fatal-signal.m4 \ $(top_srcdir)/gnulib-m4/fcntl.m4 \ $(top_srcdir)/gnulib-m4/fcntl_h.m4 \ @@ -350,6 +368,11 @@ $(top_srcdir)/gnulib-m4/inline.m4 \ $(top_srcdir)/gnulib-m4/intmax_t.m4 \ $(top_srcdir)/gnulib-m4/inttypes.m4 \ + $(top_srcdir)/gnulib-m4/isinf.m4 \ + $(top_srcdir)/gnulib-m4/isnan.m4 \ + $(top_srcdir)/gnulib-m4/isnand.m4 \ + $(top_srcdir)/gnulib-m4/isnanf.m4 \ + $(top_srcdir)/gnulib-m4/isnanl.m4 \ $(top_srcdir)/gnulib-m4/iswblank.m4 \ $(top_srcdir)/gnulib-m4/java.m4 \ $(top_srcdir)/gnulib-m4/javacomp.m4 \ @@ -372,10 +395,13 @@ $(top_srcdir)/gnulib-m4/locale-zh.m4 \ $(top_srcdir)/gnulib-m4/locale_h.m4 \ $(top_srcdir)/gnulib-m4/localename.m4 \ + $(top_srcdir)/gnulib-m4/log10.m4 \ $(top_srcdir)/gnulib-m4/lseek.m4 \ $(top_srcdir)/gnulib-m4/lstat.m4 \ $(top_srcdir)/gnulib-m4/malloc.m4 \ $(top_srcdir)/gnulib-m4/malloca.m4 \ + $(top_srcdir)/gnulib-m4/math_h.m4 \ + $(top_srcdir)/gnulib-m4/mathfunc.m4 \ $(top_srcdir)/gnulib-m4/mbchar.m4 \ $(top_srcdir)/gnulib-m4/mbiter.m4 \ $(top_srcdir)/gnulib-m4/mbrtowc.m4 \ @@ -405,6 +431,7 @@ $(top_srcdir)/gnulib-m4/pathmax.m4 \ $(top_srcdir)/gnulib-m4/pipe2.m4 \ $(top_srcdir)/gnulib-m4/posix_spawn.m4 \ + $(top_srcdir)/gnulib-m4/pow.m4 \ $(top_srcdir)/gnulib-m4/printf.m4 \ $(top_srcdir)/gnulib-m4/putenv.m4 \ $(top_srcdir)/gnulib-m4/quote.m4 \ @@ -429,6 +456,7 @@ $(top_srcdir)/gnulib-m4/sigaction.m4 \ $(top_srcdir)/gnulib-m4/signal_h.m4 \ $(top_srcdir)/gnulib-m4/signalblocking.m4 \ + $(top_srcdir)/gnulib-m4/signbit.m4 \ $(top_srcdir)/gnulib-m4/sigpipe.m4 \ $(top_srcdir)/gnulib-m4/sleep.m4 \ $(top_srcdir)/gnulib-m4/snprintf.m4 \ @@ -659,6 +687,11 @@ test_copy_file_OBJECTS = test-copy-file.$(OBJEXT) test_copy_file_DEPENDENCIES = $(am__DEPENDENCIES_2) \ $(am__DEPENDENCIES_1) +test_ctype_SOURCES = test-ctype.c +test_ctype_OBJECTS = test-ctype.$(OBJEXT) +test_ctype_LDADD = $(LDADD) +test_ctype_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) am_test_ctype_space_OBJECTS = unictype/test-ctype_space.$(OBJEXT) test_ctype_space_OBJECTS = $(am_test_ctype_space_OBJECTS) test_ctype_space_DEPENDENCIES = $(am__DEPENDENCIES_2) \ @@ -694,6 +727,9 @@ test_errno_LDADD = $(LDADD) test_errno_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ libtests.a $(am__DEPENDENCIES_1) +am_test_fabs_OBJECTS = test-fabs.$(OBJEXT) randomd.$(OBJEXT) +test_fabs_OBJECTS = $(am_test_fabs_OBJECTS) +test_fabs_DEPENDENCIES = $(am__DEPENDENCIES_2) test_fcntl_SOURCES = test-fcntl.c test_fcntl_OBJECTS = test-fcntl.$(OBJEXT) test_fcntl_LDADD = $(LDADD) @@ -835,6 +871,39 @@ test_inttypes_LDADD = $(LDADD) test_inttypes_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ libtests.a $(am__DEPENDENCIES_1) +test_isinf_SOURCES = test-isinf.c +test_isinf_OBJECTS = test-isinf.$(OBJEXT) +test_isinf_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_isnan_SOURCES = test-isnan.c +test_isnan_OBJECTS = test-isnan.$(OBJEXT) +test_isnan_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_isnand_SOURCES = test-isnand.c +test_isnand_OBJECTS = test-isnand.$(OBJEXT) +test_isnand_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_isnand_nolibm_SOURCES = test-isnand-nolibm.c +test_isnand_nolibm_OBJECTS = test-isnand-nolibm.$(OBJEXT) +test_isnand_nolibm_LDADD = $(LDADD) +test_isnand_nolibm_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_isnanf_SOURCES = test-isnanf.c +test_isnanf_OBJECTS = test-isnanf.$(OBJEXT) +test_isnanf_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_isnanf_nolibm_SOURCES = test-isnanf-nolibm.c +test_isnanf_nolibm_OBJECTS = test-isnanf-nolibm.$(OBJEXT) +test_isnanf_nolibm_LDADD = $(LDADD) +test_isnanf_nolibm_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_isnanl_SOURCES = test-isnanl.c +test_isnanl_OBJECTS = test-isnanl.$(OBJEXT) +test_isnanl_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_isnanl_nolibm_SOURCES = test-isnanl-nolibm.c +test_isnanl_nolibm_OBJECTS = test-isnanl-nolibm.$(OBJEXT) +test_isnanl_nolibm_LDADD = $(LDADD) +test_isnanl_nolibm_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) test_iswblank_SOURCES = test-iswblank.c test_iswblank_OBJECTS = test-iswblank.$(OBJEXT) test_iswblank_LDADD = $(LDADD) @@ -863,6 +932,9 @@ test_lock_SOURCES = test-lock.c test_lock_OBJECTS = test-lock.$(OBJEXT) test_lock_DEPENDENCIES = $(am__DEPENDENCIES_2) +am_test_log10_OBJECTS = test-log10.$(OBJEXT) randomd.$(OBJEXT) +test_log10_OBJECTS = $(am_test_log10_OBJECTS) +test_log10_DEPENDENCIES = $(am__DEPENDENCIES_2) test_lseek_SOURCES = test-lseek.c test_lseek_OBJECTS = test-lseek.$(OBJEXT) test_lseek_LDADD = $(LDADD) @@ -878,6 +950,11 @@ test_malloca_LDADD = $(LDADD) test_malloca_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ libtests.a $(am__DEPENDENCIES_1) +test_math_SOURCES = test-math.c +test_math_OBJECTS = test-math.$(OBJEXT) +test_math_LDADD = $(LDADD) +test_math_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) test_mbrtowc_SOURCES = test-mbrtowc.c test_mbrtowc_OBJECTS = test-mbrtowc.$(OBJEXT) test_mbrtowc_LDADD = $(LDADD) @@ -983,6 +1060,9 @@ test_posix_spawn_file_actions_addopen_DEPENDENCIES = libtests.a \ ../gnulib-lib/libgettextlib.la libtests.a \ $(am__DEPENDENCIES_1) +test_pow_SOURCES = test-pow.c +test_pow_OBJECTS = test-pow.$(OBJEXT) +test_pow_DEPENDENCIES = $(am__DEPENDENCIES_2) test_quotearg_simple_SOURCES = test-quotearg-simple.c test_quotearg_simple_OBJECTS = test-quotearg-simple.$(OBJEXT) test_quotearg_simple_DEPENDENCIES = $(am__DEPENDENCIES_2) @@ -1062,6 +1142,11 @@ test_signal_h_LDADD = $(LDADD) test_signal_h_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ libtests.a $(am__DEPENDENCIES_1) +test_signbit_SOURCES = test-signbit.c +test_signbit_OBJECTS = test-signbit.$(OBJEXT) +test_signbit_LDADD = $(LDADD) +test_signbit_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) test_sigpipe_SOURCES = test-sigpipe.c test_sigpipe_OBJECTS = test-sigpipe.$(OBJEXT) test_sigpipe_LDADD = $(LDADD) @@ -1379,52 +1464,55 @@ test-binary-io.c test-btowc.c test-byteswap.c test-c-ctype.c \ test-c-strcasecmp.c test-c-strcasestr.c test-c-strncasecmp.c \ test-c-strstr.c test-canonicalize-lgpl.c test-cloexec.c \ - test-close.c test-copy-acl.c test-copy-file.c \ + test-close.c test-copy-acl.c test-copy-file.c test-ctype.c \ $(test_ctype_space_SOURCES) test-dirent.c test-dup.c \ test-dup-safer.c test-dup2.c test-environ.c test-errno.c \ - test-fcntl.c test-fcntl-h.c test-fdopen.c test-fgetc.c \ - test-file-has-acl.c test-float.c test-fnmatch.c test-fopen.c \ - test-fputc.c test-fread.c test-fstat.c test-fstrcmp.c \ - test-ftell.c test-ftell3.c test-ftello.c test-ftello3.c \ - test-ftello4.c test-fwrite.c test-getcwd-lgpl.c \ + $(test_fabs_SOURCES) test-fcntl.c test-fcntl-h.c test-fdopen.c \ + test-fgetc.c test-file-has-acl.c test-float.c test-fnmatch.c \ + test-fopen.c test-fputc.c test-fread.c test-fstat.c \ + test-fstrcmp.c test-ftell.c test-ftell3.c test-ftello.c \ + test-ftello3.c test-ftello4.c test-fwrite.c test-getcwd-lgpl.c \ test-getdelim.c test-getdtablesize.c test-getline.c \ test-getopt.c test-gettimeofday.c test-iconv.c test-iconv-h.c \ test-ignore-value.c test-intprops.c test-inttypes.c \ - test-iswblank.c test-langinfo.c test-linkedhash_list.c \ - test-locale.c test-localename.c test-lock.c test-lseek.c \ - test-lstat.c test-malloca.c test-mbrtowc.c test-mbrtowc-w32.c \ + test-isinf.c test-isnan.c test-isnand.c test-isnand-nolibm.c \ + test-isnanf.c test-isnanf-nolibm.c test-isnanl.c \ + test-isnanl-nolibm.c test-iswblank.c test-langinfo.c \ + test-linkedhash_list.c test-locale.c test-localename.c \ + test-lock.c $(test_log10_SOURCES) test-lseek.c test-lstat.c \ + test-malloca.c test-math.c test-mbrtowc.c test-mbrtowc-w32.c \ test-mbsinit.c test-mbsrtowcs.c test-mbsstr1.c test-mbsstr2.c \ test-mbsstr3.c test-memchr.c test-open.c test-pathmax.c \ test-pipe-filter-ii1.c test-pipe-filter-ii2-child.c \ test-pipe-filter-ii2-main.c test-pipe2.c test-posix_spawn1.c \ test-posix_spawn2.c test-posix_spawn_file_actions_addclose.c \ test-posix_spawn_file_actions_adddup2.c \ - test-posix_spawn_file_actions_addopen.c test-quotearg-simple.c \ - test-raise.c test-rawmemchr.c test-read.c test-read-file.c \ - test-readlink.c test-rmdir.c test-sameacls.c test-sched.c \ - test-set-mode-acl.c test-setenv.c test-setlocale1.c \ - test-setlocale2.c test-sh-quote.c test-sigaction.c \ - test-signal-h.c test-sigpipe.c test-sigprocmask.c test-sleep.c \ - test-snprintf.c test-spawn.c test-spawn-pipe-child.c \ - test-spawn-pipe-main.c test-stat.c test-stdalign.c \ - test-stdbool.c test-stddef.c test-stdint.c test-stdio.c \ - test-stdlib.c test-strchrnul.c test-strerror.c test-striconv.c \ - test-striconveh.c test-striconveha.c test-string.c \ - test-strnlen.c test-strstr.c test-strtol.c test-strtoul.c \ - test-symlink.c test-sys_select.c test-sys_stat.c \ - test-sys_time.c test-sys_types.c test-sys_wait.c \ - test-term-ostream.c test-thread_create.c test-thread_self.c \ - test-time.c test-tls.c $(test_u16_mbtouc_SOURCES) \ - $(test_u8_check_SOURCES) $(test_u8_cmp_SOURCES) \ - $(test_u8_conv_from_enc_SOURCES) $(test_u8_mblen_SOURCES) \ - $(test_u8_mbtoucr_SOURCES) $(test_u8_prev_SOURCES) \ - $(test_u8_strlen_SOURCES) $(test_u8_uctomb_SOURCES) \ - $(test_u8_width_linebreaks_SOURCES) $(test_uninames_SOURCES) \ - test-unistd.c test-unsetenv.c test-vasnprintf.c \ - test-vasprintf.c test-verify.c test-vsnprintf.c test-wchar.c \ - test-wcrtomb.c test-wcrtomb-w32.c test-wctype-h.c \ - test-wcwidth.c test-write.c test-xalloc-die.c \ - test-xvasprintf.c + test-posix_spawn_file_actions_addopen.c test-pow.c \ + test-quotearg-simple.c test-raise.c test-rawmemchr.c \ + test-read.c test-read-file.c test-readlink.c test-rmdir.c \ + test-sameacls.c test-sched.c test-set-mode-acl.c test-setenv.c \ + test-setlocale1.c test-setlocale2.c test-sh-quote.c \ + test-sigaction.c test-signal-h.c test-signbit.c test-sigpipe.c \ + test-sigprocmask.c test-sleep.c test-snprintf.c test-spawn.c \ + test-spawn-pipe-child.c test-spawn-pipe-main.c test-stat.c \ + test-stdalign.c test-stdbool.c test-stddef.c test-stdint.c \ + test-stdio.c test-stdlib.c test-strchrnul.c test-strerror.c \ + test-striconv.c test-striconveh.c test-striconveha.c \ + test-string.c test-strnlen.c test-strstr.c test-strtol.c \ + test-strtoul.c test-symlink.c test-sys_select.c \ + test-sys_stat.c test-sys_time.c test-sys_types.c \ + test-sys_wait.c test-term-ostream.c test-thread_create.c \ + test-thread_self.c test-time.c test-tls.c \ + $(test_u16_mbtouc_SOURCES) $(test_u8_check_SOURCES) \ + $(test_u8_cmp_SOURCES) $(test_u8_conv_from_enc_SOURCES) \ + $(test_u8_mblen_SOURCES) $(test_u8_mbtoucr_SOURCES) \ + $(test_u8_prev_SOURCES) $(test_u8_strlen_SOURCES) \ + $(test_u8_uctomb_SOURCES) $(test_u8_width_linebreaks_SOURCES) \ + $(test_uninames_SOURCES) test-unistd.c test-unsetenv.c \ + test-vasnprintf.c test-vasprintf.c test-verify.c \ + test-vsnprintf.c test-wchar.c test-wcrtomb.c \ + test-wcrtomb-w32.c test-wctype-h.c test-wcwidth.c test-write.c \ + test-xalloc-die.c test-xvasprintf.c DIST_SOURCES = $(am__libtests_a_SOURCES_DIST) \ $(EXTRA_libtests_a_SOURCES) test-alignof.c test-alloca-opt.c \ test-areadlink.c test-argmatch.c test-array_list.c \ @@ -1432,46 +1520,50 @@ test-c-ctype.c test-c-strcasecmp.c test-c-strcasestr.c \ test-c-strncasecmp.c test-c-strstr.c test-canonicalize-lgpl.c \ test-cloexec.c test-close.c test-copy-acl.c test-copy-file.c \ - $(test_ctype_space_SOURCES) test-dirent.c test-dup.c \ - test-dup-safer.c test-dup2.c test-environ.c test-errno.c \ - test-fcntl.c test-fcntl-h.c test-fdopen.c test-fgetc.c \ - test-file-has-acl.c test-float.c test-fnmatch.c test-fopen.c \ - test-fputc.c test-fread.c test-fstat.c test-fstrcmp.c \ - test-ftell.c test-ftell3.c test-ftello.c test-ftello3.c \ - test-ftello4.c test-fwrite.c test-getcwd-lgpl.c \ - test-getdelim.c test-getdtablesize.c test-getline.c \ - test-getopt.c test-gettimeofday.c test-iconv.c test-iconv-h.c \ - test-ignore-value.c test-intprops.c test-inttypes.c \ - test-iswblank.c test-langinfo.c test-linkedhash_list.c \ - test-locale.c test-localename.c test-lock.c test-lseek.c \ - test-lstat.c test-malloca.c test-mbrtowc.c test-mbrtowc-w32.c \ - test-mbsinit.c test-mbsrtowcs.c test-mbsstr1.c test-mbsstr2.c \ - test-mbsstr3.c test-memchr.c test-open.c test-pathmax.c \ + test-ctype.c $(test_ctype_space_SOURCES) test-dirent.c \ + test-dup.c test-dup-safer.c test-dup2.c test-environ.c \ + test-errno.c $(test_fabs_SOURCES) test-fcntl.c test-fcntl-h.c \ + test-fdopen.c test-fgetc.c test-file-has-acl.c test-float.c \ + test-fnmatch.c test-fopen.c test-fputc.c test-fread.c \ + test-fstat.c test-fstrcmp.c test-ftell.c test-ftell3.c \ + test-ftello.c test-ftello3.c test-ftello4.c test-fwrite.c \ + test-getcwd-lgpl.c test-getdelim.c test-getdtablesize.c \ + test-getline.c test-getopt.c test-gettimeofday.c test-iconv.c \ + test-iconv-h.c test-ignore-value.c test-intprops.c \ + test-inttypes.c test-isinf.c test-isnan.c test-isnand.c \ + test-isnand-nolibm.c test-isnanf.c test-isnanf-nolibm.c \ + test-isnanl.c test-isnanl-nolibm.c test-iswblank.c \ + test-langinfo.c test-linkedhash_list.c test-locale.c \ + test-localename.c test-lock.c $(test_log10_SOURCES) \ + test-lseek.c test-lstat.c test-malloca.c test-math.c \ + test-mbrtowc.c test-mbrtowc-w32.c test-mbsinit.c \ + test-mbsrtowcs.c test-mbsstr1.c test-mbsstr2.c test-mbsstr3.c \ + test-memchr.c test-open.c test-pathmax.c \ test-pipe-filter-ii1.c test-pipe-filter-ii2-child.c \ test-pipe-filter-ii2-main.c test-pipe2.c test-posix_spawn1.c \ test-posix_spawn2.c test-posix_spawn_file_actions_addclose.c \ test-posix_spawn_file_actions_adddup2.c \ - test-posix_spawn_file_actions_addopen.c test-quotearg-simple.c \ - test-raise.c test-rawmemchr.c test-read.c test-read-file.c \ - test-readlink.c test-rmdir.c test-sameacls.c test-sched.c \ - test-set-mode-acl.c test-setenv.c test-setlocale1.c \ - test-setlocale2.c test-sh-quote.c test-sigaction.c \ - test-signal-h.c test-sigpipe.c test-sigprocmask.c test-sleep.c \ - test-snprintf.c test-spawn.c test-spawn-pipe-child.c \ - test-spawn-pipe-main.c test-stat.c test-stdalign.c \ - test-stdbool.c test-stddef.c test-stdint.c test-stdio.c \ - test-stdlib.c test-strchrnul.c test-strerror.c test-striconv.c \ - test-striconveh.c test-striconveha.c test-string.c \ - test-strnlen.c test-strstr.c test-strtol.c test-strtoul.c \ - test-symlink.c test-sys_select.c test-sys_stat.c \ - test-sys_time.c test-sys_types.c test-sys_wait.c \ - test-term-ostream.c test-thread_create.c test-thread_self.c \ - test-time.c test-tls.c $(test_u16_mbtouc_SOURCES) \ - $(test_u8_check_SOURCES) $(test_u8_cmp_SOURCES) \ - $(test_u8_conv_from_enc_SOURCES) $(test_u8_mblen_SOURCES) \ - $(test_u8_mbtoucr_SOURCES) $(test_u8_prev_SOURCES) \ - $(test_u8_strlen_SOURCES) $(test_u8_uctomb_SOURCES) \ - $(test_u8_width_linebreaks_SOURCES) \ + test-posix_spawn_file_actions_addopen.c test-pow.c \ + test-quotearg-simple.c test-raise.c test-rawmemchr.c \ + test-read.c test-read-file.c test-readlink.c test-rmdir.c \ + test-sameacls.c test-sched.c test-set-mode-acl.c test-setenv.c \ + test-setlocale1.c test-setlocale2.c test-sh-quote.c \ + test-sigaction.c test-signal-h.c test-signbit.c test-sigpipe.c \ + test-sigprocmask.c test-sleep.c test-snprintf.c test-spawn.c \ + test-spawn-pipe-child.c test-spawn-pipe-main.c test-stat.c \ + test-stdalign.c test-stdbool.c test-stddef.c test-stdint.c \ + test-stdio.c test-stdlib.c test-strchrnul.c test-strerror.c \ + test-striconv.c test-striconveh.c test-striconveha.c \ + test-string.c test-strnlen.c test-strstr.c test-strtol.c \ + test-strtoul.c test-symlink.c test-sys_select.c \ + test-sys_stat.c test-sys_time.c test-sys_types.c \ + test-sys_wait.c test-term-ostream.c test-thread_create.c \ + test-thread_self.c test-time.c test-tls.c \ + $(test_u16_mbtouc_SOURCES) $(test_u8_check_SOURCES) \ + $(test_u8_cmp_SOURCES) $(test_u8_conv_from_enc_SOURCES) \ + $(test_u8_mblen_SOURCES) $(test_u8_mbtoucr_SOURCES) \ + $(test_u8_prev_SOURCES) $(test_u8_strlen_SOURCES) \ + $(test_u8_uctomb_SOURCES) $(test_u8_width_linebreaks_SOURCES) \ $(am__test_uninames_SOURCES_DIST) test-unistd.c \ test-unsetenv.c test-vasnprintf.c test-vasprintf.c \ test-verify.c test-vsnprintf.c test-wchar.c test-wcrtomb.c \ @@ -1725,7 +1817,7 @@ am__DIST_COMMON = $(srcdir)/Makefile.gnulib $(srcdir)/Makefile.in \ $(top_srcdir)/../build-aux/depcomp \ $(top_srcdir)/../build-aux/mkinstalldirs \ - $(top_srcdir)/../build-aux/test-driver ChangeLog + $(top_srcdir)/../build-aux/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -1823,6 +1915,7 @@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ +FABS_LIBM = @FABS_LIBM@ FGREP = @FGREP@ FLOAT_H = @FLOAT_H@ FNMATCH_H = @FNMATCH_H@ @@ -1837,15 +1930,34 @@ GLOBAL_SYMBOL_PIPE = @GLOBAL_SYMBOL_PIPE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_ACOSF = @GNULIB_ACOSF@ +GNULIB_ACOSL = @GNULIB_ACOSL@ GNULIB_ALPHASORT = @GNULIB_ALPHASORT@ +GNULIB_ASINF = @GNULIB_ASINF@ +GNULIB_ASINL = @GNULIB_ASINL@ +GNULIB_ATAN2F = @GNULIB_ATAN2F@ +GNULIB_ATANF = @GNULIB_ATANF@ +GNULIB_ATANL = @GNULIB_ATANL@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_BTOWC = @GNULIB_BTOWC@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ +GNULIB_CBRT = @GNULIB_CBRT@ +GNULIB_CBRTF = @GNULIB_CBRTF@ +GNULIB_CBRTL = @GNULIB_CBRTL@ +GNULIB_CEIL = @GNULIB_CEIL@ +GNULIB_CEILF = @GNULIB_CEILF@ +GNULIB_CEILL = @GNULIB_CEILL@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@ +GNULIB_COPYSIGN = @GNULIB_COPYSIGN@ +GNULIB_COPYSIGNF = @GNULIB_COPYSIGNF@ +GNULIB_COPYSIGNL = @GNULIB_COPYSIGNL@ +GNULIB_COSF = @GNULIB_COSF@ +GNULIB_COSHF = @GNULIB_COSHF@ +GNULIB_COSL = @GNULIB_COSL@ GNULIB_DIRFD = @GNULIB_DIRFD@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ @@ -1854,6 +1966,16 @@ GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_EXP2 = @GNULIB_EXP2@ +GNULIB_EXP2F = @GNULIB_EXP2F@ +GNULIB_EXP2L = @GNULIB_EXP2L@ +GNULIB_EXPF = @GNULIB_EXPF@ +GNULIB_EXPL = @GNULIB_EXPL@ +GNULIB_EXPM1 = @GNULIB_EXPM1@ +GNULIB_EXPM1F = @GNULIB_EXPM1F@ +GNULIB_EXPM1L = @GNULIB_EXPM1L@ +GNULIB_FABSF = @GNULIB_FABSF@ +GNULIB_FABSL = @GNULIB_FABSL@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ @@ -1868,6 +1990,15 @@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ +GNULIB_FLOOR = @GNULIB_FLOOR@ +GNULIB_FLOORF = @GNULIB_FLOORF@ +GNULIB_FLOORL = @GNULIB_FLOORL@ +GNULIB_FMA = @GNULIB_FMA@ +GNULIB_FMAF = @GNULIB_FMAF@ +GNULIB_FMAL = @GNULIB_FMAL@ +GNULIB_FMOD = @GNULIB_FMOD@ +GNULIB_FMODF = @GNULIB_FMODF@ +GNULIB_FMODL = @GNULIB_FMODL@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ @@ -1876,6 +2007,9 @@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ +GNULIB_FREXP = @GNULIB_FREXP@ +GNULIB_FREXPF = @GNULIB_FREXPF@ +GNULIB_FREXPL = @GNULIB_FREXPL@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ @@ -1906,17 +2040,47 @@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ +GNULIB_HYPOT = @GNULIB_HYPOT@ +GNULIB_HYPOTF = @GNULIB_HYPOTF@ +GNULIB_HYPOTL = @GNULIB_HYPOTL@ GNULIB_ICONV = @GNULIB_ICONV@ +GNULIB_ILOGB = @GNULIB_ILOGB@ +GNULIB_ILOGBF = @GNULIB_ILOGBF@ +GNULIB_ILOGBL = @GNULIB_ILOGBL@ GNULIB_IMAXABS = @GNULIB_IMAXABS@ GNULIB_IMAXDIV = @GNULIB_IMAXDIV@ GNULIB_ISATTY = @GNULIB_ISATTY@ +GNULIB_ISBLANK = @GNULIB_ISBLANK@ +GNULIB_ISFINITE = @GNULIB_ISFINITE@ +GNULIB_ISINF = @GNULIB_ISINF@ +GNULIB_ISNAN = @GNULIB_ISNAN@ +GNULIB_ISNAND = @GNULIB_ISNAND@ +GNULIB_ISNANF = @GNULIB_ISNANF@ +GNULIB_ISNANL = @GNULIB_ISNANL@ GNULIB_ISWBLANK = @GNULIB_ISWBLANK@ GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LDEXPF = @GNULIB_LDEXPF@ +GNULIB_LDEXPL = @GNULIB_LDEXPL@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LOCALECONV = @GNULIB_LOCALECONV@ +GNULIB_LOG = @GNULIB_LOG@ +GNULIB_LOG10 = @GNULIB_LOG10@ +GNULIB_LOG10F = @GNULIB_LOG10F@ +GNULIB_LOG10L = @GNULIB_LOG10L@ +GNULIB_LOG1P = @GNULIB_LOG1P@ +GNULIB_LOG1PF = @GNULIB_LOG1PF@ +GNULIB_LOG1PL = @GNULIB_LOG1PL@ +GNULIB_LOG2 = @GNULIB_LOG2@ +GNULIB_LOG2F = @GNULIB_LOG2F@ +GNULIB_LOG2L = @GNULIB_LOG2L@ +GNULIB_LOGB = @GNULIB_LOGB@ +GNULIB_LOGBF = @GNULIB_LOGBF@ +GNULIB_LOGBL = @GNULIB_LOGBL@ +GNULIB_LOGF = @GNULIB_LOGF@ +GNULIB_LOGL = @GNULIB_LOGL@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ @@ -1955,6 +2119,9 @@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ +GNULIB_MODF = @GNULIB_MODF@ +GNULIB_MODFF = @GNULIB_MODFF@ +GNULIB_MODFL = @GNULIB_MODFL@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@ GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ @@ -1990,6 +2157,7 @@ GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN@ GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY@ GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT@ +GNULIB_POWF = @GNULIB_POWF@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ @@ -2013,11 +2181,20 @@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ +GNULIB_REMAINDER = @GNULIB_REMAINDER@ +GNULIB_REMAINDERF = @GNULIB_REMAINDERF@ +GNULIB_REMAINDERL = @GNULIB_REMAINDERL@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_REWINDDIR = @GNULIB_REWINDDIR@ +GNULIB_RINT = @GNULIB_RINT@ +GNULIB_RINTF = @GNULIB_RINTF@ +GNULIB_RINTL = @GNULIB_RINTL@ GNULIB_RMDIR = @GNULIB_RMDIR@ +GNULIB_ROUND = @GNULIB_ROUND@ +GNULIB_ROUNDF = @GNULIB_ROUNDF@ +GNULIB_ROUNDL = @GNULIB_ROUNDL@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANDIR = @GNULIB_SCANDIR@ GNULIB_SCANF = @GNULIB_SCANF@ @@ -2028,10 +2205,16 @@ GNULIB_SETLOCALE = @GNULIB_SETLOCALE@ GNULIB_SIGACTION = @GNULIB_SIGACTION@ GNULIB_SIGNAL_H_SIGPIPE = @GNULIB_SIGNAL_H_SIGPIPE@ +GNULIB_SIGNBIT = @GNULIB_SIGNBIT@ GNULIB_SIGPROCMASK = @GNULIB_SIGPROCMASK@ +GNULIB_SINF = @GNULIB_SINF@ +GNULIB_SINHF = @GNULIB_SINHF@ +GNULIB_SINL = @GNULIB_SINL@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ +GNULIB_SQRTF = @GNULIB_SQRTF@ +GNULIB_SQRTL = @GNULIB_SQRTL@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ @@ -2060,11 +2243,17 @@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ +GNULIB_TANF = @GNULIB_TANF@ +GNULIB_TANHF = @GNULIB_TANHF@ +GNULIB_TANL = @GNULIB_TANL@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TIME_RZ = @GNULIB_TIME_RZ@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@ +GNULIB_TRUNC = @GNULIB_TRUNC@ +GNULIB_TRUNCF = @GNULIB_TRUNCF@ +GNULIB_TRUNCL = @GNULIB_TRUNCL@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ @@ -2124,25 +2313,57 @@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ +HAVE_ACOSF = @HAVE_ACOSF@ +HAVE_ACOSL = @HAVE_ACOSL@ HAVE_ALPHASORT = @HAVE_ALPHASORT@ +HAVE_ASINF = @HAVE_ASINF@ +HAVE_ASINL = @HAVE_ASINL@ HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_ATAN2F = @HAVE_ATAN2F@ +HAVE_ATANF = @HAVE_ATANF@ +HAVE_ATANL = @HAVE_ATANL@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_BTOWC = @HAVE_BTOWC@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ +HAVE_CBRT = @HAVE_CBRT@ +HAVE_CBRTF = @HAVE_CBRTF@ +HAVE_CBRTL = @HAVE_CBRTL@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_CLIX = @HAVE_CLIX@ HAVE_CLIX_IN_PATH = @HAVE_CLIX_IN_PATH@ HAVE_CLOSEDIR = @HAVE_CLOSEDIR@ +HAVE_COPYSIGN = @HAVE_COPYSIGN@ +HAVE_COPYSIGNL = @HAVE_COPYSIGNL@ +HAVE_COSF = @HAVE_COSF@ +HAVE_COSHF = @HAVE_COSHF@ +HAVE_COSL = @HAVE_COSL@ HAVE_CSC = @HAVE_CSC@ HAVE_CSCC = @HAVE_CSCC@ HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@ +HAVE_DECL_ASINL = @HAVE_DECL_ASINL@ +HAVE_DECL_ATANL = @HAVE_DECL_ATANL@ +HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@ +HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@ +HAVE_DECL_CEILF = @HAVE_DECL_CEILF@ +HAVE_DECL_CEILL = @HAVE_DECL_CEILL@ +HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@ +HAVE_DECL_COSL = @HAVE_DECL_COSL@ HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@ +HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@ +HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@ +HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ +HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@ +HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@ +HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ +HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ @@ -2154,13 +2375,28 @@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ +HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ +HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@ +HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@ +HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@ +HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@ +HAVE_DECL_LOGB = @HAVE_DECL_LOGB@ +HAVE_DECL_LOGL = @HAVE_DECL_LOGL@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ +HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@ +HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@ +HAVE_DECL_RINTF = @HAVE_DECL_RINTF@ +HAVE_DECL_ROUND = @HAVE_DECL_ROUND@ +HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@ +HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ +HAVE_DECL_SINL = @HAVE_DECL_SINL@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ +HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ @@ -2169,6 +2405,10 @@ HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ +HAVE_DECL_TANL = @HAVE_DECL_TANL@ +HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@ +HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@ +HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ @@ -2180,6 +2420,12 @@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_DUPLOCALE = @HAVE_DUPLOCALE@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_EXPF = @HAVE_EXPF@ +HAVE_EXPL = @HAVE_EXPL@ +HAVE_EXPM1 = @HAVE_EXPM1@ +HAVE_EXPM1F = @HAVE_EXPM1F@ +HAVE_FABSF = @HAVE_FABSF@ +HAVE_FABSL = @HAVE_FABSL@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ @@ -2190,6 +2436,12 @@ HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ +HAVE_FMA = @HAVE_FMA@ +HAVE_FMAF = @HAVE_FMAF@ +HAVE_FMAL = @HAVE_FMAL@ +HAVE_FMODF = @HAVE_FMODF@ +HAVE_FMODL = @HAVE_FMODL@ +HAVE_FREXPF = @HAVE_FREXPF@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ @@ -2212,9 +2464,18 @@ HAVE_GLOBAL_SYMBOL_PIPE = @HAVE_GLOBAL_SYMBOL_PIPE@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ +HAVE_HYPOTF = @HAVE_HYPOTF@ +HAVE_HYPOTL = @HAVE_HYPOTL@ +HAVE_ILOGB = @HAVE_ILOGB@ +HAVE_ILOGBF = @HAVE_ILOGBF@ +HAVE_ILOGBL = @HAVE_ILOGBL@ HAVE_ILRUN = @HAVE_ILRUN@ HAVE_ILRUN_IN_PATH = @HAVE_ILRUN_IN_PATH@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_ISBLANK = @HAVE_ISBLANK@ +HAVE_ISNAND = @HAVE_ISNAND@ +HAVE_ISNANF = @HAVE_ISNANF@ +HAVE_ISNANL = @HAVE_ISNANL@ HAVE_ISWBLANK = @HAVE_ISWBLANK@ HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ HAVE_JAVA = @HAVE_JAVA@ @@ -2236,10 +2497,19 @@ HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ -HAVE_LIBEXPAT = @HAVE_LIBEXPAT@ +HAVE_LDEXPF = @HAVE_LDEXPF@ HAVE_LIBUNISTRING = @HAVE_LIBUNISTRING@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ +HAVE_LOG10F = @HAVE_LOG10F@ +HAVE_LOG10L = @HAVE_LOG10L@ +HAVE_LOG1P = @HAVE_LOG1P@ +HAVE_LOG1PF = @HAVE_LOG1PF@ +HAVE_LOG1PL = @HAVE_LOG1PL@ +HAVE_LOGBF = @HAVE_LOGBF@ +HAVE_LOGBL = @HAVE_LOGBL@ +HAVE_LOGF = @HAVE_LOGF@ +HAVE_LOGL = @HAVE_LOGL@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ @@ -2263,6 +2533,8 @@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ +HAVE_MODFF = @HAVE_MODFF@ +HAVE_MODFL = @HAVE_MODFL@ HAVE_MONO = @HAVE_MONO@ HAVE_MONO_IN_PATH = @HAVE_MONO_IN_PATH@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ @@ -2282,6 +2554,7 @@ HAVE_POSIX_SPAWN = @HAVE_POSIX_SPAWN@ HAVE_POSIX_SPAWNATTR_T = @HAVE_POSIX_SPAWNATTR_T@ HAVE_POSIX_SPAWN_FILE_ACTIONS_T = @HAVE_POSIX_SPAWN_FILE_ACTIONS_T@ +HAVE_POWF = @HAVE_POWF@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PSELECT = @HAVE_PSELECT@ HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ @@ -2297,9 +2570,14 @@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ +HAVE_REMAINDER = @HAVE_REMAINDER@ +HAVE_REMAINDERF = @HAVE_REMAINDERF@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_REWINDDIR = @HAVE_REWINDDIR@ +HAVE_RINT = @HAVE_RINT@ +HAVE_RINTL = @HAVE_RINTL@ HAVE_RPMATCH = @HAVE_RPMATCH@ +HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@ HAVE_SCANDIR = @HAVE_SCANDIR@ HAVE_SCHED_H = @HAVE_SCHED_H@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ @@ -2312,9 +2590,14 @@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SIGSET_T = @HAVE_SIGSET_T@ +HAVE_SINF = @HAVE_SINF@ +HAVE_SINHF = @HAVE_SINHF@ +HAVE_SINL = @HAVE_SINL@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_SNPRINTF = @HAVE_SNPRINTF@ HAVE_SPAWN_H = @HAVE_SPAWN_H@ +HAVE_SQRTF = @HAVE_SQRTF@ +HAVE_SQRTL = @HAVE_SQRTL@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ @@ -2340,6 +2623,9 @@ HAVE_SYS_SELECT_H = @HAVE_SYS_SELECT_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_TANF = @HAVE_TANF@ +HAVE_TANHF = @HAVE_TANHF@ +HAVE_TANL = @HAVE_TANL@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@ HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ @@ -2417,13 +2703,16 @@ INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +ISINF_LIBM = @ISINF_LIBM@ +ISNAND_LIBM = @ISNAND_LIBM@ +ISNANF_LIBM = @ISNANF_LIBM@ +ISNANL_LIBM = @ISNANL_LIBM@ +ISNAN_LIBM = @ISNAN_LIBM@ JAR = @JAR@ JAVA_CHOICE = @JAVA_CHOICE@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBCROCO = @LIBCROCO@ -LIBEXPAT = @LIBEXPAT@ -LIBEXPAT_PREFIX = @LIBEXPAT_PREFIX@ LIBGLIB = @LIBGLIB@ LIBGLIB_H = @LIBGLIB_H@ LIBGREP_LIBDEPS = @LIBGREP_LIBDEPS@ @@ -2461,9 +2750,9 @@ LOCALE_JA = @LOCALE_JA@ LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ LOCALE_ZH_CN = @LOCALE_ZH_CN@ +LOG10_LIBM = @LOG10_LIBM@ LTLIBC = @LTLIBC@ LTLIBCROCO = @LTLIBCROCO@ -LTLIBEXPAT = @LTLIBEXPAT@ LTLIBGLIB = @LTLIBGLIB@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -2484,6 +2773,7 @@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ MSGMERGE_LIBM = @MSGMERGE_LIBM@ +NEXT_AS_FIRST_DIRECTIVE_CTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_CTYPE_H@ NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ @@ -2493,6 +2783,7 @@ NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@ NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@ +NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ NEXT_AS_FIRST_DIRECTIVE_SCHED_H = @NEXT_AS_FIRST_DIRECTIVE_SCHED_H@ NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ NEXT_AS_FIRST_DIRECTIVE_SPAWN_H = @NEXT_AS_FIRST_DIRECTIVE_SPAWN_H@ @@ -2511,6 +2802,7 @@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ +NEXT_CTYPE_H = @NEXT_CTYPE_H@ NEXT_DIRENT_H = @NEXT_DIRENT_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@ @@ -2520,6 +2812,7 @@ NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ NEXT_LANGINFO_H = @NEXT_LANGINFO_H@ NEXT_LOCALE_H = @NEXT_LOCALE_H@ +NEXT_MATH_H = @NEXT_MATH_H@ NEXT_SCHED_H = @NEXT_SCHED_H@ NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ NEXT_SPAWN_H = @NEXT_SPAWN_H@ @@ -2550,12 +2843,14 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_SUFFIX = @PACKAGE_SUFFIX@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ POSUB = @POSUB@ +POW_LIBM = @POW_LIBM@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PRIPTR_PREFIX = @PRIPTR_PREFIX@ @@ -2574,6 +2869,11 @@ REPLACE_BTOWC = @REPLACE_BTOWC@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CBRTF = @REPLACE_CBRTF@ +REPLACE_CBRTL = @REPLACE_CBRTL@ +REPLACE_CEIL = @REPLACE_CEIL@ +REPLACE_CEILF = @REPLACE_CEILF@ +REPLACE_CEILL = @REPLACE_CEILL@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@ @@ -2582,16 +2882,33 @@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@ +REPLACE_EXP2 = @REPLACE_EXP2@ +REPLACE_EXP2L = @REPLACE_EXP2L@ +REPLACE_EXPM1 = @REPLACE_EXPM1@ +REPLACE_EXPM1F = @REPLACE_EXPM1F@ +REPLACE_FABSL = @REPLACE_FABSL@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCNTL = @REPLACE_FCNTL@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ +REPLACE_FLOOR = @REPLACE_FLOOR@ +REPLACE_FLOORF = @REPLACE_FLOORF@ +REPLACE_FLOORL = @REPLACE_FLOORL@ +REPLACE_FMA = @REPLACE_FMA@ +REPLACE_FMAF = @REPLACE_FMAF@ +REPLACE_FMAL = @REPLACE_FMAL@ +REPLACE_FMOD = @REPLACE_FMOD@ +REPLACE_FMODF = @REPLACE_FMODF@ +REPLACE_FMODL = @REPLACE_FMODL@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ +REPLACE_FREXP = @REPLACE_FREXP@ +REPLACE_FREXPF = @REPLACE_FREXPF@ +REPLACE_FREXPL = @REPLACE_FREXPL@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ @@ -2610,19 +2927,44 @@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ +REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ +REPLACE_HYPOT = @REPLACE_HYPOT@ +REPLACE_HYPOTF = @REPLACE_HYPOTF@ +REPLACE_HYPOTL = @REPLACE_HYPOTL@ REPLACE_ICONV = @REPLACE_ICONV@ REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_ILOGB = @REPLACE_ILOGB@ +REPLACE_ILOGBF = @REPLACE_ILOGBF@ REPLACE_ISATTY = @REPLACE_ISATTY@ +REPLACE_ISFINITE = @REPLACE_ISFINITE@ +REPLACE_ISINF = @REPLACE_ISINF@ +REPLACE_ISNAN = @REPLACE_ISNAN@ REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ REPLACE_ITOLD = @REPLACE_ITOLD@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LDEXPL = @REPLACE_LDEXPL@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALECONV = @REPLACE_LOCALECONV@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ +REPLACE_LOG = @REPLACE_LOG@ +REPLACE_LOG10 = @REPLACE_LOG10@ +REPLACE_LOG10F = @REPLACE_LOG10F@ +REPLACE_LOG10L = @REPLACE_LOG10L@ +REPLACE_LOG1P = @REPLACE_LOG1P@ +REPLACE_LOG1PF = @REPLACE_LOG1PF@ +REPLACE_LOG1PL = @REPLACE_LOG1PL@ +REPLACE_LOG2 = @REPLACE_LOG2@ +REPLACE_LOG2F = @REPLACE_LOG2F@ +REPLACE_LOG2L = @REPLACE_LOG2L@ +REPLACE_LOGB = @REPLACE_LOGB@ +REPLACE_LOGBF = @REPLACE_LOGBF@ +REPLACE_LOGBL = @REPLACE_LOGBL@ +REPLACE_LOGF = @REPLACE_LOGF@ +REPLACE_LOGL = @REPLACE_LOGL@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ @@ -2640,6 +2982,10 @@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ +REPLACE_MODF = @REPLACE_MODF@ +REPLACE_MODFF = @REPLACE_MODFF@ +REPLACE_MODFL = @REPLACE_MODFL@ +REPLACE_NAN = @REPLACE_NAN@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@ REPLACE_NULL = @REPLACE_NULL@ @@ -2669,16 +3015,25 @@ REPLACE_READLINKAT = @REPLACE_READLINKAT@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ +REPLACE_REMAINDER = @REPLACE_REMAINDER@ +REPLACE_REMAINDERF = @REPLACE_REMAINDERF@ +REPLACE_REMAINDERL = @REPLACE_REMAINDERL@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ +REPLACE_ROUND = @REPLACE_ROUND@ +REPLACE_ROUNDF = @REPLACE_ROUNDF@ +REPLACE_ROUNDL = @REPLACE_ROUNDL@ REPLACE_SELECT = @REPLACE_SELECT@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SETLOCALE = @REPLACE_SETLOCALE@ +REPLACE_SIGNBIT = @REPLACE_SIGNBIT@ +REPLACE_SIGNBIT_USING_GCC = @REPLACE_SIGNBIT_USING_GCC@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ +REPLACE_SQRTL = @REPLACE_SQRTL@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ @@ -2704,6 +3059,9 @@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ +REPLACE_TRUNC = @REPLACE_TRUNC@ +REPLACE_TRUNCF = @REPLACE_TRUNCF@ +REPLACE_TRUNCL = @REPLACE_TRUNCL@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ @@ -2875,11 +3233,13 @@ test-canonicalize-lgpl.c signature.h macros.h test-cloexec.c \ macros.h test-close.c signature.h macros.h test-copy-file.sh \ test-copy-file-1.sh test-copy-file-2.sh test-copy-file.c \ - macros.h test-dirent.c dup.c test-dup.c signature.h macros.h \ - test-dup2.c signature.h macros.h test-environ.c test-errno.c \ - test-fcntl-h.c test-fcntl.c signature.h macros.h fdopen.c \ - test-fdopen.c signature.h macros.h test-fgetc.c signature.h \ - macros.h test-file-has-acl.sh test-file-has-acl-1.sh \ + macros.h ctype.in.h test-ctype.c test-dirent.c dup.c \ + test-dup.c signature.h macros.h test-dup2.c signature.h \ + macros.h test-environ.c test-errno.c test-fabs.c test-fabs.h \ + signature.h minus-zero.h macros.h randomd.c test-fcntl-h.c \ + test-fcntl.c signature.h macros.h fdopen.c test-fdopen.c \ + signature.h macros.h test-fgetc.c signature.h macros.h \ + test-file-has-acl.sh test-file-has-acl-1.sh \ test-file-has-acl-2.sh test-file-has-acl.c macros.h \ test-float.c macros.h test-fnmatch.c signature.h macros.h \ test-fopen.h test-fopen.c signature.h macros.h fpucw.h \ @@ -2896,27 +3256,37 @@ test-getopt.c test-getopt.h test-getopt_long.h getpagesize.c \ signature.h test-gettimeofday.c test-iconv-h.c test-iconv.c \ signature.h macros.h test-ignore-value.c test-intprops.c \ - macros.h inttypes.in.h test-inttypes.c test-iswblank.c \ - macros.h test-langinfo.c test-linkedhash_list.c macros.h \ - test-locale.c test-localename.c macros.h test-lock.c lseek.c \ - test-lseek.c test-lseek.sh signature.h macros.h test-lstat.h \ - test-lstat.c signature.h macros.h test-malloca.c \ - test-mbrtowc1.sh test-mbrtowc2.sh test-mbrtowc3.sh \ - test-mbrtowc4.sh test-mbrtowc.c test-mbrtowc-w32-1.sh \ - test-mbrtowc-w32-2.sh test-mbrtowc-w32-3.sh \ - test-mbrtowc-w32-4.sh test-mbrtowc-w32-5.sh test-mbrtowc-w32.c \ - signature.h macros.h test-mbsinit.sh test-mbsinit.c \ - signature.h macros.h test-mbsrtowcs1.sh test-mbsrtowcs2.sh \ - test-mbsrtowcs3.sh test-mbsrtowcs4.sh test-mbsrtowcs.c \ - signature.h macros.h test-mbsstr1.c test-mbsstr2.sh \ - test-mbsstr2.c test-mbsstr3.sh test-mbsstr3.c macros.h \ - mbtowc-impl.h mbtowc.c test-memchr.c zerosize-ptr.h \ - signature.h macros.h test-moo-root.oo.h test-moo-root.oo.c \ - test-moo-sub1.oo.h test-moo-sub1.oo.c test-moo-sub2.oo.h \ - test-moo-sub2.oo.c test-moo-aroot.oo.h test-moo-aroot.oo.c \ - test-moo-asub1.oo.h test-moo-asub1.oo.c test-moo-assign.c \ - test-open.h test-open.c signature.h macros.h test-pathmax.c \ - test-pipe-filter-ii1.sh test-pipe-filter-ii1.c \ + macros.h inttypes.in.h test-inttypes.c test-isinf.c infinity.h \ + macros.h test-isnan.c minus-zero.h infinity.h nan.h macros.h \ + test-isnand-nolibm.c test-isnand.h minus-zero.h infinity.h \ + nan.h macros.h test-isnand.c test-isnand.h minus-zero.h \ + infinity.h nan.h macros.h test-isnanf-nolibm.c test-isnanf.h \ + minus-zero.h infinity.h nan.h macros.h test-isnanf.c \ + test-isnanf.h minus-zero.h infinity.h nan.h macros.h \ + test-isnanl-nolibm.c test-isnanl.h minus-zero.h infinity.h \ + nan.h macros.h test-isnanl.c test-isnanl.h minus-zero.h \ + infinity.h nan.h macros.h test-iswblank.c macros.h \ + test-langinfo.c test-linkedhash_list.c macros.h test-locale.c \ + test-localename.c macros.h test-lock.c test-log10.c \ + test-log10.h minus-zero.h signature.h macros.h randomd.c \ + lseek.c test-lseek.c test-lseek.sh signature.h macros.h \ + test-lstat.h test-lstat.c signature.h macros.h test-malloca.c \ + test-math.c macros.h test-mbrtowc1.sh test-mbrtowc2.sh \ + test-mbrtowc3.sh test-mbrtowc4.sh test-mbrtowc.c \ + test-mbrtowc-w32-1.sh test-mbrtowc-w32-2.sh \ + test-mbrtowc-w32-3.sh test-mbrtowc-w32-4.sh \ + test-mbrtowc-w32-5.sh test-mbrtowc-w32.c signature.h macros.h \ + test-mbsinit.sh test-mbsinit.c signature.h macros.h \ + test-mbsrtowcs1.sh test-mbsrtowcs2.sh test-mbsrtowcs3.sh \ + test-mbsrtowcs4.sh test-mbsrtowcs.c signature.h macros.h \ + test-mbsstr1.c test-mbsstr2.sh test-mbsstr2.c test-mbsstr3.sh \ + test-mbsstr3.c macros.h mbtowc-impl.h mbtowc.c test-memchr.c \ + zerosize-ptr.h signature.h macros.h test-moo-root.oo.h \ + test-moo-root.oo.c test-moo-sub1.oo.h test-moo-sub1.oo.c \ + test-moo-sub2.oo.h test-moo-sub2.oo.c test-moo-aroot.oo.h \ + test-moo-aroot.oo.c test-moo-asub1.oo.h test-moo-asub1.oo.c \ + test-moo-assign.c test-open.h test-open.c signature.h macros.h \ + test-pathmax.c test-pipe-filter-ii1.sh test-pipe-filter-ii1.c \ test-vasnprintf-posix.c test-pipe-filter-ii2.sh \ test-pipe-filter-ii2-main.c test-pipe-filter-ii2-child.c \ macros.h test-pipe2.c signature.h macros.h \ @@ -2925,18 +3295,20 @@ test-posix_spawn_file_actions_addopen.c signature.h macros.h \ test-posix_spawn1.c test-posix_spawn1.in.sh \ test-posix_spawn2.c test-posix_spawn2.in.sh signature.h \ - putenv.c test-quotearg-simple.c test-quotearg.h macros.h \ - zerosize-ptr.h test-raise.c signature.h macros.h \ - test-rawmemchr.c zerosize-ptr.h signature.h macros.h \ - read-file.h test-read-file.c test-read.c signature.h macros.h \ + test-pow.c signature.h macros.h putenv.c \ + test-quotearg-simple.c test-quotearg.h macros.h zerosize-ptr.h \ + test-raise.c signature.h macros.h test-rawmemchr.c \ + zerosize-ptr.h signature.h macros.h read-file.h \ + test-read-file.c test-read.c signature.h macros.h \ test-readlink.h test-readlink.c signature.h macros.h \ test-rmdir.h test-rmdir.c signature.h macros.h same-inode.h \ test-sched.c test-setenv.c signature.h macros.h \ test-setlocale1.sh test-setlocale1.c test-setlocale2.sh \ test-setlocale2.c signature.h macros.h test-sh-quote.c \ test-sigaction.c signature.h macros.h test-signal-h.c \ - test-sigpipe.c test-sigpipe.sh test-sigprocmask.c signature.h \ - macros.h sleep.c test-sleep.c signature.h macros.h \ + test-signbit.c minus-zero.h infinity.h macros.h test-sigpipe.c \ + test-sigpipe.sh test-sigprocmask.c signature.h macros.h \ + sleep.c test-sleep.c signature.h macros.h \ $(top_srcdir)/../build-aux/snippet/_Noreturn.h \ $(top_srcdir)/../build-aux/snippet/arg-nonnull.h \ $(top_srcdir)/../build-aux/snippet/c++defs.h \ @@ -2961,6 +3333,7 @@ test-term-ostream-xterm-xf86-v32.out \ test-term-ostream-xterm-basic.out \ test-term-ostream-xterm-basic-italic.out \ + test-term-ostream-xterm-freebsd101.out \ test-term-ostream-xterm-8bit.out \ test-term-ostream-xterm-linux-debian.out \ test-term-ostream-xterm-linux-mandriva.out \ @@ -3013,13 +3386,13 @@ # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. -BUILT_SOURCES = inttypes.h $(am__append_3) arg-nonnull.h c++defs.h \ - unused-parameter.h warn-on-use.h $(STDALIGN_H) +BUILT_SOURCES = ctype.h inttypes.h $(am__append_3) arg-nonnull.h \ + c++defs.h unused-parameter.h warn-on-use.h $(STDALIGN_H) SUFFIXES = -MOSTLYCLEANFILES = core *.stackdump t-ftell3.tmp t-ftello3.tmp \ - test-getdelim.txt test-getline.txt inttypes.h inttypes.h-t \ - $(am__append_4) arg-nonnull.h arg-nonnull.h-t c++defs.h \ - c++defs.h-t unused-parameter.h unused-parameter.h-t \ +MOSTLYCLEANFILES = core *.stackdump ctype.h ctype.h-t t-ftell3.tmp \ + t-ftello3.tmp test-getdelim.txt test-getline.txt inttypes.h \ + inttypes.h-t $(am__append_4) arg-nonnull.h arg-nonnull.h-t \ + c++defs.h c++defs.h-t unused-parameter.h unused-parameter.h-t \ warn-on-use.h warn-on-use.h-t stdalign.h stdalign.h-t MOSTLYCLEANDIRS = CLEANFILES = @@ -3045,16 +3418,26 @@ test_sameacls_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@ test_argmatch_LDADD = $(LDADD) @LIBINTL@ test_copy_file_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@ +test_fabs_SOURCES = test-fabs.c randomd.c +test_fabs_LDADD = $(LDADD) @FABS_LIBM@ test_file_has_acl_LDADD = $(LDADD) $(LIB_HAS_ACL) test_fstrcmp_LDADD = $(LDADD) @LIBINTL@ $(LIBTHREAD) test_getcwd_lgpl_LDADD = $(LDADD) $(LIBINTL) test_getopt_LDADD = $(LDADD) $(LIBINTL) test_iconv_LDADD = $(LDADD) @LIBICONV@ +test_isinf_LDADD = $(LDADD) @ISINF_LIBM@ +test_isnan_LDADD = $(LDADD) @ISNAN_LIBM@ +test_isnand_LDADD = $(LDADD) @ISNAND_LIBM@ +test_isnanf_LDADD = $(LDADD) @ISNANF_LIBM@ +test_isnanl_LDADD = $(LDADD) @ISNANL_LIBM@ test_localename_LDADD = $(LDADD) @INTL_MACOSX_LIBS@ $(LIBTHREAD) test_lock_LDADD = $(LDADD) @LIBMULTITHREAD@ @YIELD_LIB@ +test_log10_SOURCES = test-log10.c randomd.c +test_log10_LDADD = $(LDADD) @LOG10_LIBM@ test_pipe_filter_ii1_LDADD = $(LDADD) @LIBINTL@ test_pipe_filter_ii2_main_LDADD = $(LDADD) @LIBINTL@ test_pipe2_LDADD = $(LDADD) $(LIBSOCKET) +test_pow_LDADD = $(LDADD) @POW_LIBM@ test_quotearg_simple_LDADD = $(LDADD) @LIBINTL@ test_sh_quote_LDADD = $(LDADD) @LIBINTL@ @@ -3263,6 +3646,10 @@ test-copy-file$(EXEEXT): $(test_copy_file_OBJECTS) $(test_copy_file_DEPENDENCIES) $(EXTRA_test_copy_file_DEPENDENCIES) @rm -f test-copy-file$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_copy_file_OBJECTS) $(test_copy_file_LDADD) $(LIBS) + +test-ctype$(EXEEXT): $(test_ctype_OBJECTS) $(test_ctype_DEPENDENCIES) $(EXTRA_test_ctype_DEPENDENCIES) + @rm -f test-ctype$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_ctype_OBJECTS) $(test_ctype_LDADD) $(LIBS) unictype/$(am__dirstamp): @$(MKDIR_P) unictype @: > unictype/$(am__dirstamp) @@ -3300,6 +3687,10 @@ @rm -f test-errno$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_errno_OBJECTS) $(test_errno_LDADD) $(LIBS) +test-fabs$(EXEEXT): $(test_fabs_OBJECTS) $(test_fabs_DEPENDENCIES) $(EXTRA_test_fabs_DEPENDENCIES) + @rm -f test-fabs$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_fabs_OBJECTS) $(test_fabs_LDADD) $(LIBS) + test-fcntl$(EXEEXT): $(test_fcntl_OBJECTS) $(test_fcntl_DEPENDENCIES) $(EXTRA_test_fcntl_DEPENDENCIES) @rm -f test-fcntl$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_fcntl_OBJECTS) $(test_fcntl_LDADD) $(LIBS) @@ -3416,6 +3807,38 @@ @rm -f test-inttypes$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_inttypes_OBJECTS) $(test_inttypes_LDADD) $(LIBS) +test-isinf$(EXEEXT): $(test_isinf_OBJECTS) $(test_isinf_DEPENDENCIES) $(EXTRA_test_isinf_DEPENDENCIES) + @rm -f test-isinf$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_isinf_OBJECTS) $(test_isinf_LDADD) $(LIBS) + +test-isnan$(EXEEXT): $(test_isnan_OBJECTS) $(test_isnan_DEPENDENCIES) $(EXTRA_test_isnan_DEPENDENCIES) + @rm -f test-isnan$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_isnan_OBJECTS) $(test_isnan_LDADD) $(LIBS) + +test-isnand$(EXEEXT): $(test_isnand_OBJECTS) $(test_isnand_DEPENDENCIES) $(EXTRA_test_isnand_DEPENDENCIES) + @rm -f test-isnand$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_isnand_OBJECTS) $(test_isnand_LDADD) $(LIBS) + +test-isnand-nolibm$(EXEEXT): $(test_isnand_nolibm_OBJECTS) $(test_isnand_nolibm_DEPENDENCIES) $(EXTRA_test_isnand_nolibm_DEPENDENCIES) + @rm -f test-isnand-nolibm$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_isnand_nolibm_OBJECTS) $(test_isnand_nolibm_LDADD) $(LIBS) + +test-isnanf$(EXEEXT): $(test_isnanf_OBJECTS) $(test_isnanf_DEPENDENCIES) $(EXTRA_test_isnanf_DEPENDENCIES) + @rm -f test-isnanf$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_isnanf_OBJECTS) $(test_isnanf_LDADD) $(LIBS) + +test-isnanf-nolibm$(EXEEXT): $(test_isnanf_nolibm_OBJECTS) $(test_isnanf_nolibm_DEPENDENCIES) $(EXTRA_test_isnanf_nolibm_DEPENDENCIES) + @rm -f test-isnanf-nolibm$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_isnanf_nolibm_OBJECTS) $(test_isnanf_nolibm_LDADD) $(LIBS) + +test-isnanl$(EXEEXT): $(test_isnanl_OBJECTS) $(test_isnanl_DEPENDENCIES) $(EXTRA_test_isnanl_DEPENDENCIES) + @rm -f test-isnanl$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_isnanl_OBJECTS) $(test_isnanl_LDADD) $(LIBS) + +test-isnanl-nolibm$(EXEEXT): $(test_isnanl_nolibm_OBJECTS) $(test_isnanl_nolibm_DEPENDENCIES) $(EXTRA_test_isnanl_nolibm_DEPENDENCIES) + @rm -f test-isnanl-nolibm$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_isnanl_nolibm_OBJECTS) $(test_isnanl_nolibm_LDADD) $(LIBS) + test-iswblank$(EXEEXT): $(test_iswblank_OBJECTS) $(test_iswblank_DEPENDENCIES) $(EXTRA_test_iswblank_DEPENDENCIES) @rm -f test-iswblank$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_iswblank_OBJECTS) $(test_iswblank_LDADD) $(LIBS) @@ -3440,6 +3863,10 @@ @rm -f test-lock$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_lock_OBJECTS) $(test_lock_LDADD) $(LIBS) +test-log10$(EXEEXT): $(test_log10_OBJECTS) $(test_log10_DEPENDENCIES) $(EXTRA_test_log10_DEPENDENCIES) + @rm -f test-log10$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_log10_OBJECTS) $(test_log10_LDADD) $(LIBS) + test-lseek$(EXEEXT): $(test_lseek_OBJECTS) $(test_lseek_DEPENDENCIES) $(EXTRA_test_lseek_DEPENDENCIES) @rm -f test-lseek$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_lseek_OBJECTS) $(test_lseek_LDADD) $(LIBS) @@ -3452,6 +3879,10 @@ @rm -f test-malloca$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_malloca_OBJECTS) $(test_malloca_LDADD) $(LIBS) +test-math$(EXEEXT): $(test_math_OBJECTS) $(test_math_DEPENDENCIES) $(EXTRA_test_math_DEPENDENCIES) + @rm -f test-math$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_math_OBJECTS) $(test_math_LDADD) $(LIBS) + test-mbrtowc$(EXEEXT): $(test_mbrtowc_OBJECTS) $(test_mbrtowc_DEPENDENCIES) $(EXTRA_test_mbrtowc_DEPENDENCIES) @rm -f test-mbrtowc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_mbrtowc_OBJECTS) $(test_mbrtowc_LDADD) $(LIBS) @@ -3528,6 +3959,10 @@ @rm -f test-posix_spawn_file_actions_addopen$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_posix_spawn_file_actions_addopen_OBJECTS) $(test_posix_spawn_file_actions_addopen_LDADD) $(LIBS) +test-pow$(EXEEXT): $(test_pow_OBJECTS) $(test_pow_DEPENDENCIES) $(EXTRA_test_pow_DEPENDENCIES) + @rm -f test-pow$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_pow_OBJECTS) $(test_pow_LDADD) $(LIBS) + test-quotearg-simple$(EXEEXT): $(test_quotearg_simple_OBJECTS) $(test_quotearg_simple_DEPENDENCIES) $(EXTRA_test_quotearg_simple_DEPENDENCIES) @rm -f test-quotearg-simple$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_quotearg_simple_OBJECTS) $(test_quotearg_simple_LDADD) $(LIBS) @@ -3592,6 +4027,10 @@ @rm -f test-signal-h$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_signal_h_OBJECTS) $(test_signal_h_LDADD) $(LIBS) +test-signbit$(EXEEXT): $(test_signbit_OBJECTS) $(test_signbit_DEPENDENCIES) $(EXTRA_test_signbit_DEPENDENCIES) + @rm -f test-signbit$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_signbit_OBJECTS) $(test_signbit_LDADD) $(LIBS) + test-sigpipe$(EXEEXT): $(test_sigpipe_OBJECTS) $(test_sigpipe_DEPENDENCIES) $(EXTRA_test_sigpipe_DEPENDENCIES) @rm -f test-sigpipe$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_sigpipe_OBJECTS) $(test_sigpipe_LDADD) $(LIBS) @@ -3895,6 +4334,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbtowc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/putenv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/randomd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/read-file.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleep.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlink.Po@am__quote@ @@ -3917,12 +4357,14 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-close.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-copy-acl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-copy-file.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ctype.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dirent.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dup-safer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dup2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-environ.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-errno.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fabs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fcntl-h.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fcntl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fdopen.Po@am__quote@ @@ -3952,15 +4394,25 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ignore-value.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-intprops.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-inttypes.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-isinf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-isnan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-isnand-nolibm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-isnand.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-isnanf-nolibm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-isnanf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-isnanl-nolibm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-isnanl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-iswblank.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-langinfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-linkedhash_list.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-locale.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-localename.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-lock.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-log10.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-lseek.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-lstat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-malloca.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-math.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbrtowc-w32.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbrtowc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbsinit.Po@am__quote@ @@ -3980,6 +4432,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-posix_spawn_file_actions_addclose.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-posix_spawn_file_actions_adddup2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-posix_spawn_file_actions_addopen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pow.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-quotearg-simple.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-raise.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-rawmemchr.Po@am__quote@ @@ -3996,6 +4449,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sh-quote.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sigaction.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-signal-h.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-signbit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sigpipe.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sigprocmask.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sleep.Po@am__quote@ @@ -4516,6 +4970,13 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-ctype.log: test-ctype$(EXEEXT) + @p='test-ctype$(EXEEXT)'; \ + b='test-ctype'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-dirent.log: test-dirent$(EXEEXT) @p='test-dirent$(EXEEXT)'; \ b='test-dirent'; \ @@ -4551,6 +5012,13 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-fabs.log: test-fabs$(EXEEXT) + @p='test-fabs$(EXEEXT)'; \ + b='test-fabs'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-fcntl-h.log: test-fcntl-h$(EXEEXT) @p='test-fcntl-h$(EXEEXT)'; \ b='test-fcntl-h'; \ @@ -4782,6 +5250,62 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-isinf.log: test-isinf$(EXEEXT) + @p='test-isinf$(EXEEXT)'; \ + b='test-isinf'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-isnan.log: test-isnan$(EXEEXT) + @p='test-isnan$(EXEEXT)'; \ + b='test-isnan'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-isnand-nolibm.log: test-isnand-nolibm$(EXEEXT) + @p='test-isnand-nolibm$(EXEEXT)'; \ + b='test-isnand-nolibm'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-isnand.log: test-isnand$(EXEEXT) + @p='test-isnand$(EXEEXT)'; \ + b='test-isnand'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-isnanf-nolibm.log: test-isnanf-nolibm$(EXEEXT) + @p='test-isnanf-nolibm$(EXEEXT)'; \ + b='test-isnanf-nolibm'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-isnanf.log: test-isnanf$(EXEEXT) + @p='test-isnanf$(EXEEXT)'; \ + b='test-isnanf'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-isnanl-nolibm.log: test-isnanl-nolibm$(EXEEXT) + @p='test-isnanl-nolibm$(EXEEXT)'; \ + b='test-isnanl-nolibm'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-isnanl.log: test-isnanl$(EXEEXT) + @p='test-isnanl$(EXEEXT)'; \ + b='test-isnanl'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-iswblank.log: test-iswblank$(EXEEXT) @p='test-iswblank$(EXEEXT)'; \ b='test-iswblank'; \ @@ -4824,6 +5348,13 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-log10.log: test-log10$(EXEEXT) + @p='test-log10$(EXEEXT)'; \ + b='test-log10'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-lseek.sh.log: test-lseek.sh @p='test-lseek.sh'; \ b='test-lseek.sh'; \ @@ -4845,6 +5376,13 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-math.log: test-math$(EXEEXT) + @p='test-math$(EXEEXT)'; \ + b='test-math'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-mbrtowc1.sh.log: test-mbrtowc1.sh @p='test-mbrtowc1.sh'; \ b='test-mbrtowc1.sh'; \ @@ -5041,6 +5579,13 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-pow.log: test-pow$(EXEEXT) + @p='test-pow$(EXEEXT)'; \ + b='test-pow'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-quotearg-simple.log: test-quotearg-simple$(EXEEXT) @p='test-quotearg-simple$(EXEEXT)'; \ b='test-quotearg-simple'; \ @@ -5139,6 +5684,13 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-signbit.log: test-signbit$(EXEEXT) + @p='test-signbit$(EXEEXT)'; \ + b='test-signbit'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-sigpipe.sh.log: test-sigpipe.sh @p='test-sigpipe.sh'; \ b='test-sigpipe.sh'; \ @@ -5831,6 +6383,24 @@ .PRECIOUS: Makefile +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +ctype.h: ctype.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's|@''GUARD_PREFIX''@|GL|g' \ + -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ + -e 's|@''NEXT_CTYPE_H''@|$(NEXT_CTYPE_H)|g' \ + -e 's/@''GNULIB_ISBLANK''@/$(GNULIB_ISBLANK)/g' \ + -e 's/@''HAVE_ISBLANK''@/$(HAVE_ISBLANK)/g' \ + -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ + -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ + < $(srcdir)/ctype.in.h; \ + } > $@-t && \ + mv $@-t $@ + # We need the following in order to create when the system # doesn't have one that works with the given compiler. inttypes.h: inttypes.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(ARG_NONNULL_H) diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/minus-zero.h gettext-0.19.7/gettext-tools/gnulib-tests/minus-zero.h --- gettext-0.19.6/gettext-tools/gnulib-tests/minus-zero.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/minus-zero.h 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,74 @@ +/* Macros for floating-point negative zero. + Copyright (C) 2010-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Keep in sync with m4/minus-zero.m4! */ + +#include + + +/* minus_zerof represents the value -0.0f. */ + +/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0f. + ICC 10.0 has a bug when optimizing the expression -zero. + The expression -FLT_MIN * FLT_MIN does not work when cross-compiling + to PowerPC on Mac OS X 10.5. */ +#if defined __hpux || defined __sgi || defined __ICC +static float +compute_minus_zerof (void) +{ + return -FLT_MIN * FLT_MIN; +} +# define minus_zerof compute_minus_zerof () +#else +float minus_zerof = -0.0f; +#endif + + +/* minus_zerod represents the value -0.0. */ + +/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. + ICC 10.0 has a bug when optimizing the expression -zero. + The expression -DBL_MIN * DBL_MIN does not work when cross-compiling + to PowerPC on Mac OS X 10.5. */ +#if defined __hpux || defined __sgi || defined __ICC +static double +compute_minus_zerod (void) +{ + return -DBL_MIN * DBL_MIN; +} +# define minus_zerod compute_minus_zerod () +#else +double minus_zerod = -0.0; +#endif + + +/* minus_zerol represents the value -0.0L. */ + +/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0L. + IRIX cc can't put -0.0L into .data, but can compute at runtime. + ICC 10.0 has a bug when optimizing the expression -zero. + The expression -LDBL_MIN * LDBL_MIN does not work when cross-compiling + to PowerPC on Mac OS X 10.5. */ +#if defined __hpux || defined __sgi || defined __ICC +static long double +compute_minus_zerol (void) +{ + return -LDBL_MIN * LDBL_MIN; +} +# define minus_zerol compute_minus_zerol () +#else +long double minus_zerol = -0.0L; +#endif diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/nan.h gettext-0.19.7/gettext-tools/gnulib-tests/nan.h --- gettext-0.19.6/gettext-tools/gnulib-tests/nan.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/nan.h 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,70 @@ +/* Macros for not-a-number. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + + +/* NaNf () returns a 'float' not-a-number. */ + +/* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler choke + on the expression 0.0 / 0.0. */ +#if defined __DECC || defined _MSC_VER +static float +NaNf () +{ + static float zero = 0.0f; + return zero / zero; +} +#else +# define NaNf() (0.0f / 0.0f) +#endif + + +/* NaNd () returns a 'double' not-a-number. */ + +/* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler choke + on the expression 0.0 / 0.0. */ +#if defined __DECC || defined _MSC_VER +static double +NaNd () +{ + static double zero = 0.0; + return zero / zero; +} +#else +# define NaNd() (0.0 / 0.0) +#endif + + +/* NaNl () returns a 'long double' not-a-number. */ + +/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the + runtime type conversion. + The Microsoft MSVC 9 compiler chokes on the expression 0.0L / 0.0L. */ +#ifdef __sgi +static long double NaNl () +{ + double zero = 0.0; + return zero / zero; +} +#elif defined _MSC_VER +static long double +NaNl () +{ + static long double zero = 0.0L; + return zero / zero; +} +#else +# define NaNl() (0.0L / 0.0L) +#endif diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/randomd.c gettext-0.19.7/gettext-tools/gnulib-tests/randomd.c --- gettext-0.19.6/gettext-tools/gnulib-tests/randomd.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/randomd.c 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,1028 @@ +/* Some random 'double' numbers used by gnulib tests. + Copyright (C) 2012-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +/* Specification. */ +#include "macros.h" + +/* Some numbers in the interval [0,1). */ + +const double randomd[1000] = +{ + /* Some not so random numbers at the beginning. */ + 0.0, + /* Then some numbers generated by GNU clisp. */ + 0.89255299921822260894833866359, + 0.56160033401164667976788987953, + 0.51743003502243816003616725706, + 0.78419011286685927826225711525, + 0.64400370685467819470063888148, + 0.38151255107934048933308886009, + 0.279822118770531878839000163945, + 0.51983544681375980919751125922, + 0.314601557551148376372971500376, + 0.44551938964685651088492647794, + 0.44235192503793823441729544512, + 0.0040120762636767874958681841509, + 0.57608572759464216512285032474, + 0.69151953350396585566714564265, + 0.65634190642598148152780718322, + 0.68520459394253807590733184567, + 0.60728078832107635628786818115, + 0.376679934380311318950949959986, + 0.48893422455419005003224231708, + 0.59664228319132670346209747371, + 0.70162191594290728927555900075, + 0.70981089000005327192380201706, + 0.480574069305863387682360414433, + 0.369264627455974856929910550376, + 0.42224495444170593700839286742, + 0.96974027194201320964041066537, + 0.69950081092902694549973698004, + 0.366921803754944985368022837045, + 0.19460757354611588216534077527, + 0.046437559879825520495822908204, + 0.57694149138457596563075731094, + 0.49632733844850578203860859535, + 0.80735347459453553970910033766, + 0.210271595033975357161360058967, + 0.176539870249396534142059724214, + 0.75320267419158828905982021879, + 0.09535042912249636739069790414, + 0.41433965906065337672703334968, + 0.62189345390648146852641556292, + 0.322595610794052908153116342595, + 0.173860860827838938281708881865, + 0.55258425878412963601205794028, + 0.066559056629606284504735241978, + 0.0193835990781649263368095562556, + 0.127101629778251450428653553143, + 0.9603475517586241593077319367, + 0.68429794014738591042302507235, + 0.0139808909843634026741151214975, + 0.0036035679428138856395527711611, + 0.072656401341518399752950821809, + 0.229562863635014486626281702425, + 0.88337277579960676546469424767, + 0.88850212167800818244030104263, + 0.208063225990716089095767541316, + 0.268304917462565269805874454916, + 0.3195427196271617997151392088, + 0.59101407246003811289573881403, + 0.972093867752368095080492689, + 0.409246208960242309650511849637, + 0.84250639316418167849010246997, + 0.063842712141624332977179722113, + 0.96470327141354888687046060373, + 0.43109879978424216966175314888, + 0.14551248610248934836482236208, + 0.84819094513299136408788493212, + 0.41166757935215520377191731704, + 0.96020915727830366672170130175, + 0.55313106883839046701902022583, + 0.9796595451013758579218900134, + 0.74222694300533435700276764516, + 0.117294243075539310976051880564, + 0.32216824750097146958151447387, + 0.59090211400137031908131441, + 0.116841680533127258304897076543, + 0.83595865401141052310417569507, + 0.249488155772987988074361149176, + 0.67896015287499211280971531326, + 0.72256498621401843299673078876, + 0.327315362968271601258667297595, + 0.37438214921868498405279953481, + 0.76929694812658272272027330778, + 0.44282297788821568912463681727, + 0.59517407740270913902014268964, + 0.346217547960702024419571713567, + 0.68339868731911838904373225224, + 0.057507087039986776837238366719, + 0.1189343986186977384509521024, + 0.65646666532916174831489781194, + 0.80925124288745606089697795707, + 0.61302937875769552609444313984, + 0.64367434863387777107222872563, + 0.059228300879437554416166010005, + 0.76899237494115809397158171526, + 0.335797991302131791511629123206, + 0.72923178692628392090326699514, + 0.79300056654108221012876564405, + 0.58866760551158502690719665335, + 0.65249222174748700395779659047, + 0.79573528799715877963614353006, + 0.101363067664632247385474166088, + 0.392494669960902131436398643207, + 0.37323453200630776302168616197, + 0.29857554596542776498065634631, + 0.9796202149626312305197715787, + 0.58770219934833805722677794788, + 0.126574575737099431915356308504, + 0.51086682994362911961448609847, + 0.26221303911946316754295166201, + 0.87331402410090670707406246035, + 0.08604799064198292716037672196, + 0.77880380648915901962140523059, + 0.34131646312914811415381942246, + 0.422787222735822749759714960156, + 0.16550478231620269333824890372, + 0.84087065799129220871741135711, + 0.96561976597443996963329538915, + 0.059890627133354026356081805998, + 0.09359839900604706997291172522, + 0.61463026659668017286248279853, + 0.220582135665522265733252389516, + 0.30146695094150797543070759948, + 0.406591688270652513808216198946, + 0.206959751707199812083987569348, + 0.71382992952779021033600406503, + 0.98971690700151825984363090029, + 0.86339958328134745391858859595, + 0.70037828363249257457230217791, + 0.97380974339470107231135690474, + 0.9184635965630883290893011311, + 0.418605216026507942885819265225, + 0.61793227858714759711625818653, + 0.67394880797682685081908511723, + 0.98871101941805039780826467279, + 0.65973593853137069988371349845, + 0.93348525072186907424189028727, + 0.59164378220465485142298641014, + 0.95303768733773138214124075961, + 0.88667310242538944858141870801, + 0.83785319781204861623008709825, + 0.54026788227426708201242457367, + 0.74842599257855801522259951132, + 0.286624102305531463268442510375, + 0.41180484980938874161376712508, + 0.22754664620316922947541651384, + 0.62360609793949755240041318939, + 0.3311618194042077047850111557, + 0.315407885695867020730009836503, + 0.215221706711430951961780213436, + 0.168600630933631406101821024413, + 0.62661489373200405241464923618, + 0.95357070304277219756741072036, + 0.5186418766697788447635039428, + 0.70772930521061953327927296944, + 0.410376884797056150221504703145, + 0.39705302343406249619577860633, + 0.79215885822696034431481699125, + 0.157831717946112504384603002152, + 0.26892306298536012837855426922, + 0.15697088614321016223211167568, + 0.41395315712905823355235182393, + 0.043977876945327860015049914653, + 0.91453495544799358550673657283, + 0.46230093259088633973148827911, + 0.79479146768024434444120965094, + 0.1466704986407674407377422815, + 0.093614591443204076599999803382, + 0.66061870961706149406527099303, + 0.087462146328394574476138187113, + 0.79683664444310818297700615557, + 0.39732728185755441060070738751, + 0.141934473990413594291362391075, + 0.63111751995951919258061547632, + 0.78521985432793823024330967029, + 0.53307346282606806792796696141, + 0.61679109370763781010143645189, + 0.40696293619387120891515025426, + 0.68670343879278712242412028794, + 0.0115112936831136012901340526452, + 0.70866056737692430987650236649, + 0.75378980574358943122474800795, + 0.17133202766710894969283150847, + 0.36771201738922655520549864974, + 0.64614182581953931840374311331, + 0.354495602088990708111406368474, + 0.96418771817934443444348833491, + 0.51633426669933834634574104246, + 0.064671329812306055349433587193, + 0.084335079914541732137341401384, + 0.98578018340150609333535890283, + 0.32988119060114570391488875477, + 0.70568290443337103364762141207, + 0.7501960060851696034137148851, + 0.141312840936106004164373056114, + 0.60721022154106372815080238296, + 0.49179275887283771965744826261, + 0.85530668893284708999269819019, + 0.09730053915339358769067661488, + 0.48817911888023094845428570434, + 0.37116312252354470380676793579, + 0.61870369881699387959990992873, + 0.381874188039839457469043174076, + 0.68193837613090719561872304949, + 0.4773618313988618747215621251, + 0.152383599292709764750406667286, + 0.54317522808228983459963725598, + 0.363848788591302782268887022354, + 0.0105589810271147011378412305973, + 0.55582445068669939957392951111, + 0.99910376130213936748996659383, + 0.90286867348280161480903197439, + 0.48268382934936288156485037692, + 0.0976084557356802030533675394, + 0.29004949962481398455881920169, + 0.99169758897256717005011514856, + 0.20722895154834288274430061308, + 0.50294863638464584121275744208, + 0.71094033855350495714847377558, + 0.94078709219520224551350834268, + 0.48088262771516317628650315489, + 0.80538698628980761175811796611, + 0.83495029615293903361580945571, + 0.67996381940825251937974905761, + 0.57936805772275234468590364926, + 0.41778137764942046281708286844, + 0.161602687591454506771276482303, + 0.093910625156097743113739432334, + 0.45716763620641108625606409874, + 0.96455075374827233820027584808, + 0.5179966880512917274934448216, + 0.046797382046060065926143985952, + 0.83673567319931334127111064225, + 0.44224504444533247245974476514, + 0.73281179385894336737033582786, + 0.5642490153724193432309549673, + 0.83700200507325250303481208805, + 0.152714941779871552944298597052, + 0.38606607994977770238226473985, + 0.0155140917516105439042442246577, + 0.51621537013393688713546096688, + 0.311969390991657895966526156064, + 0.83890647777450698803932943984, + 0.54370750820133482930695388638, + 0.98636765788772465929756760473, + 0.77334255661128878905675504339, + 0.57070354296508751519811368688, + 0.8365252076669013372866223481, + 0.344601601940890721182485798794, + 0.92658930620470543221158939208, + 0.72724523363899270076210273102, + 0.413672082025645586061788451734, + 0.5132836422023222169840403333, + 0.82135610583961360173883281975, + 0.423835065039748889417547786563, + 0.87083598844595488941471761572, + 0.59009392451459866513886634656, + 0.206124826643305920436961792363, + 0.288685540685143988030522421633, + 0.7944357933456167153993184889, + 0.090945230657758780394996530608, + 0.52981750421369669363095418817, + 0.091368944984485824360107751981, + 0.81824925769562351657564377069, + 0.083315412912658535228751011063, + 0.59602276778799576464600065047, + 0.52258035262146456789454411102, + 0.394692074165738897132014378974, + 0.92031214264405188928824363967, + 0.32812665356161216265971156268, + 0.79754299890007289545033977389, + 0.3029021512227565310021437326, + 0.81425785760698537744367921928, + 0.85199399843570233736733560413, + 0.096629890212080240754541391968, + 0.60643798959967098211181910285, + 0.75368518979236587723780129098, + 0.451368813651510369666120626045, + 0.86189868235067352904955566961, + 0.239506411296874624231401913963, + 0.143392266376287906568670938457, + 0.035585084401323981008798496622, + 0.89407531932950775763701297226, + 0.56699767164913732414312190205, + 0.6107715946195223295493238966, + 0.980870588312723808697191463, + 0.37603666613089681502774907483, + 0.19565477083291620146833762404, + 0.70326913680165706368122461762, + 0.98247770640436619202690080984, + 0.54911931698472764719220618506, + 0.96749331150477343995263612791, + 0.9349501605275792139661332597, + 0.067704019779021886031495084945, + 0.52883185005352261786874768842, + 0.03879817199556086106868125058, + 0.011268895714104342862021635882, + 0.86781395233112768504418642287, + 0.73610697666830606371057497872, + 0.22595829849389174304359852447, + 0.95990840938724981323147621815, + 0.5938079875208820675776232526, + 0.78655922365792476391655372464, + 0.51099073264725007373467108776, + 0.66474884887866769539664215292, + 0.88640025828226102852258218854, + 0.39889893489572927635368967129, + 0.76340426725003756852384366924, + 0.485534753598641026618647825146, + 0.55957578573824837450384728978, + 0.50840543283094885180866842941, + 0.0102415845792896532313226969615, + 0.74666891036262398733922051708, + 0.49044748088989431070743849791, + 0.184017043174756439606592004597, + 0.0225210121470402648790231578307, + 0.096909683465740960387467976065, + 0.0521874432095560437920256545446, + 0.108114343037383115951564617563, + 0.77430486784405922952977031491, + 0.73286432949907824441702845144, + 0.083559249182272369453587951223, + 0.074541345541671560054508020717, + 0.55130541064331728019681677403, + 0.101450912226971008587146654246, + 0.74564503962660370005995595861, + 0.55903832180264925580029280922, + 0.86098138284846671753408133719, + 0.76146956314354797691373262733, + 0.5569854467166466965564479865, + 0.61138555623626762560168304163, + 0.93778268377974305185411499629, + 0.106728342608615813606903105742, + 0.51139895550624845300079248199, + 0.8826404150665399364200384063, + 0.79849755952621824621632991954, + 0.60058338183244813128378689372, + 0.57271235605091257806409062354, + 0.134476676178095582804914204515, + 0.62710051406343298533266304307, + 0.21517566131268423511744492316, + 0.87763268502269127056352092234, + 0.259516013975152388767641295316, + 0.54026961752737864438921779715, + 0.0321012344232942464157113655476, + 0.047765687217921465801489989111, + 0.17851281529041807770891682623, + 0.67864372391481596436180177405, + 0.27188630999531652193578141334, + 0.76570352378902765382129471855, + 0.55727605717645959087760838806, + 0.40035295538031700787360193533, + 0.65772683660586524086245866733, + 0.87515739410383285146563935658, + 0.51637173718066431535845791928, + 0.32843440805452173782945632394, + 0.46789250836790673252530282969, + 0.153916136058705475580104911632, + 0.38115724589238346986896925035, + 0.96911901452270741576104655076, + 0.327510878721849788805057952285, + 0.52921188196053063832762822112, + 0.357891066893689952162669812174, + 0.8109495999496825638917226258, + 0.87378695338223548954000159812, + 0.071735687760291841872657613394, + 0.22099818521305441851106524174, + 0.61319403424123059973018445501, + 0.49185069904977836269777464774, + 0.8465618819298531473261910176, + 0.88263955123256235889766657732, + 0.264605739218701311737446373095, + 0.157257748694727606809000832224, + 0.61172692557424578980817509135, + 0.89224381101792427145783648267, + 0.049436313890546252030141534714, + 0.78472068655126867546237630366, + 0.94890896727672958163705440614, + 0.61244719025309458330037069759, + 0.69652639673616920270100103049, + 0.82306805868313923466426022855, + 0.4619352653236511042512479492, + 0.248913888569715263431474781448, + 0.64972077945521993267494748532, + 0.058989138867897862567374093665, + 0.97969837050674699927934092348, + 0.112860503606029382332397067852, + 0.9148268966080465389473749031, + 0.80522292073416096202056634334, + 0.80810563925192214527344776336, + 0.082994810842601316055993203972, + 0.58154183958194788097113770541, + 0.91401321304178026032151961143, + 0.064162440925738934087179609749, + 0.15233762499249088696399602351, + 0.05051666992337641462246832006, + 0.138526581114846840617440323377, + 0.3330645447918149831766264793, + 0.217487368997014213919568641696, + 0.61893770768550649722673903221, + 0.48128956859001312165262121487, + 0.67074178502738313699688470847, + 0.74389636308055141796746779725, + 0.78623735396470085242463142878, + 0.74044466560335570728816983391, + 0.44977042205766449238521848558, + 0.04936658918716696558210777333, + 0.46898154881467544198433735515, + 0.86577421926732888331279455256, + 0.351697801257336354285066689416, + 0.44607679846684358775746123434, + 0.68542184287580537292736482205, + 0.044146424753083577398366558491, + 0.84496717026871403905274974765, + 0.20398318496314438897842101827, + 0.75107700174605698650069666924, + 0.178571061661964354577482608798, + 0.67178502534981979941629966218, + 0.90847842600882488644789391115, + 0.073076683947302775918335357377, + 0.33981323802799502107773228774, + 0.88205531070102240708858032672, + 0.52395959911163033140017417074, + 0.339537812421755656306362620887, + 0.54102447887624739438002987695, + 0.99615637434542139613844677579, + 0.91178029521112995461052949527, + 0.75825739605806537625994927603, + 0.20376049709427102495755901889, + 0.414724980644126108685694310425, + 0.33340705339227162790042902392, + 0.63442350111338002489027718102, + 0.79083735924049231993808201264, + 0.7022290803727963570326957922, + 0.073051026670174816217706335151, + 0.50842348505687696224462184336, + 0.32363091931107924009593033016, + 0.097074638787613630803324174721, + 0.79231345620836950165162896374, + 0.46134517653790366185204412042, + 0.87767180094474465071641454817, + 0.30504377737897498569142680272, + 0.96430402804903305707372788262, + 0.58722709934909516402891605024, + 0.36287829330987989626587492725, + 0.341369045118572012709880807167, + 0.18622546427505557603629823709, + 0.71794779555885705340742601105, + 0.098775720656078510422828040021, + 0.94170390436210924588938028149, + 0.6256516749208606216856038288, + 0.84990648194056707180867958453, + 0.24897158268824763099382644974, + 0.67126976686560821454618204853, + 0.18287142221906188751198231263, + 0.58301735289988287890086250316, + 0.39451451502323596545833498888, + 0.64778726863510310777659172018, + 0.344060647976610102257104623935, + 0.8543225374577925606075052273, + 0.41721025737118350088955048104, + 0.346301150923723212219486824146, + 0.430145349151890094004681136873, + 0.083653676599147505357408467754, + 0.89927285917733406113015320169, + 0.87717630249665962395834008139, + 0.114609060439245285884826496387, + 0.19079403943711412757743782207, + 0.095752662525740063245815699042, + 0.79249438764728213221559489213, + 0.36889557473162465630046043798, + 0.076691690566591062968137595944, + 0.82502767429905549906741868154, + 0.7665582347663079379259164121, + 0.40329445688627141530172819257, + 0.76025417855373928649612014969, + 0.67742016809536470259225177395, + 0.56458198627250149175789836481, + 0.78923506303765674533158921804, + 0.242546191857944356752822856477, + 0.5429792204847717222270173404, + 0.7269010821579782458839227112, + 0.68884017933657182784660476876, + 0.037868346502260087811459749823, + 0.5900507745679403546108564628, + 0.2867946536016681954708929644, + 0.47061390957475445523849010039, + 0.51289737877965767076806069599, + 0.422963220866519099525024712084, + 0.056516063514784913538055836342, + 0.77559606292381102490968685122, + 0.44812023547000818124896526252, + 0.8496368064876247362896528731, + 0.272242276648834925536741986616, + 0.21366791927514210787832263868, + 0.458126557153035507756298880855, + 0.59095285049337797286946531198, + 0.41387171106200290943847880691, + 0.040527832792286543640976926214, + 0.84749051864346812142321430329, + 0.6591922374100337646083630177, + 0.30504037894556796180304594549, + 0.69588062596190762407598122745, + 0.54615362946297678668402889519, + 0.27179536774730804380125320985, + 0.16312965572910266758089041195, + 0.60443803311418335000528681396, + 0.76221957063947757300487766314, + 0.0012561481228798307955579245318, + 0.38477311712200424042679172286, + 0.86336953839931184684851388121, + 0.85132017314817690655384788334, + 0.79741410166633177181313320738, + 0.81142674213295830272567127246, + 0.90095974521916505411272740187, + 0.461262866736651478343958282766, + 0.163149749038393754125992055513, + 0.079563568933303239293664877234, + 0.0076308467066608702534098522771, + 0.74020408989686798939059759005, + 0.68004244363120265645245845544, + 0.99423282025586676895879517721, + 0.256512790150101579655974619204, + 0.15841489307390214447222985222, + 0.53156533193583516285295078457, + 0.51195175518666885397864463638, + 0.2688502522458221215136352473, + 0.290743998007688539265414246556, + 0.375642431327791011131765421904, + 0.73366824563603699669790620984, + 0.89031055476039433366324605036, + 0.63269458446317741594059410575, + 0.79677646360837164675956632, + 0.91096051787867659208019728176, + 0.056411022047894420770349313174, + 0.7117937367428418076554349793, + 0.494496454398059649677550547185, + 0.9944698091905991687808626336, + 0.195654008095567563746040882677, + 0.33245249703376584453346565181, + 0.91671965905832444523554539619, + 0.104159073216349402499760928077, + 0.78250381705179599027513221262, + 0.82221952254403323129879405024, + 0.25404653774104883427079980313, + 0.89334850648967094099280368977, + 0.2721479244387740074938025269, + 0.58627710421889854554604323774, + 0.80740872172002770008164688167, + 0.295213737773499230779293451686, + 0.366266263469556210902410635735, + 0.72189449997560167388059780325, + 0.91339160960295327548014703572, + 0.27978723834100283634925494393, + 0.44312275285067091147157546317, + 0.88264479919648468925459438057, + 0.74860386620420068665117140949, + 0.97534502025842784289380076051, + 0.183653687608870314454061893335, + 0.14143760686328530307343938507, + 0.7794390875763962068165432699, + 0.79988123088296718350409621263, + 0.91344402454829897860268279997, + 0.3003753710559256572305330721, + 0.92236868180619898327118824659, + 0.85128995509445007265453349716, + 0.51226586850988855988005111668, + 0.59328586801467434659081264762, + 0.131543061349700789237108200816, + 0.97962864281984756641024957818, + 0.80003961712390827564285728721, + 0.07332191035039234849987853587, + 0.33710892945255754021249327366, + 0.237798240512212115424045579506, + 0.050628096786899757905464602857, + 0.36368141580193860149061967396, + 0.074547282281222729072803274018, + 0.32013351651022219595136046535, + 0.50087363542319392259892635316, + 0.95534128322832584718763016378, + 0.63089810554419660091974256912, + 0.45937043591639452731937380837, + 0.77794827072126710252068287081, + 0.5833967217973934570703322242, + 0.89948711130168823436943591707, + 0.88448792344727137087709578749, + 0.75774410588649351850782212564, + 0.51545850808454807305763364038, + 0.89535564141616759448334976604, + 0.433876155086630438489414332084, + 0.263145194001722566517185175524, + 0.094513715303174637696079970882, + 0.0067905149976316075236601623182, + 0.3746548325271489972742277758, + 0.81418012245523025207375976459, + 0.7382555515800124086679648947, + 0.71505454385778976492869269043, + 0.7698698840252614242858413632, + 0.53096667868591647121855295207, + 0.5913146508318579789498085478, + 0.82865413011200335887487636747, + 0.246477924915753655378269255135, + 0.7718625116939460952174295485, + 0.33088224685104582360581424038, + 0.077396220323469426942810035952, + 0.399851739373243384531661374094, + 0.74828949567652386217126904324, + 0.55533476993642340021791702209, + 0.475356366587838670689554086714, + 0.99199926249299355831492581518, + 0.60739053074816626181185925167, + 0.94570422855790142383862352906, + 0.67410117583869264525962136333, + 0.99340016295179621471645098914, + 0.30521664837678549625426072163, + 0.82786899862234431119578444516, + 0.0246054418785779831964997687095, + 0.33057040500642957115284791089, + 0.325865542252271051046671982904, + 0.116469964535698881624567000313, + 0.38792519202192930208550481713, + 0.147033252049062199325747990948, + 0.333360890210745561370686771174, + 0.267717098935309378552279527125, + 0.473606191830554736751491306975, + 0.69379726024488030302072707274, + 0.39866105325920152799379542147, + 0.075996151521605600512218326895, + 0.43692155239290098173990417979, + 0.63183509185797834489905365016, + 0.327726835190132824885685947736, + 0.82769389015654780671213364517, + 0.38036542617183448008870457384, + 0.06416363778906221378580326597, + 0.95989693996326393340364540321, + 0.77473792948077472252492320019, + 0.73353080354752465520384745159, + 0.79531316211939777703706647305, + 0.31887745411495362933791547194, + 0.5504233366621661345254817397, + 0.133841546560512334978343647306, + 0.93323316393590598213508657757, + 0.219534116905903225236593922786, + 0.352227557302752346568799070044, + 0.50699048681296139093781410327, + 0.56063256677949754339755086295, + 0.97859418495668224120337606178, + 0.43217748779939454097021337034, + 0.6118800794139137562939270606, + 0.8826339041571606455078384688, + 0.190654349423411314990846249777, + 0.0272323818569649486990095499454, + 0.13501820915175992368033644254, + 0.34430252524220055863712676536, + 0.135013324503164182485257894453, + 0.83301344777287732687815180326, + 0.71146270180847724757833953093, + 0.059584725284656364940760846576, + 0.124388342467555907606115942139, + 0.86760011350010388002288781466, + 0.43443235444248399222879725088, + 0.62257025564267773540408523682, + 0.42224480338939459869117553607, + 0.122203729563367693705179104655, + 0.86763329805228175173701751082, + 0.61852711996472568821866689006, + 0.9981036801779161471700405786, + 0.177126618334123901292041594724, + 0.37033568941002233661950847289, + 0.81720705981865203019383851894, + 0.194752883553301253160228353622, + 0.5399475493930702257701115294, + 0.21555050095259535717046390477, + 0.031480898918419061738395489394, + 0.0108626235742996694506893658131, + 0.29439861659506237876675916168, + 0.25969803792963051605662393213, + 0.64305111681301349941082616522, + 0.398301763391130971280749586885, + 0.82959279528518208376169366062, + 0.494452121232255582677051524076, + 0.032046850110252624668328949032, + 0.304808216164121089322038632124, + 0.43743086801077933536332835933, + 0.067635143022119684849606244687, + 0.062601171413915686472972559687, + 0.80704249768256597155262089974, + 0.049090587901867220876053770281, + 0.14290280489067737067786839775, + 0.85153414385190808252068833198, + 0.052035578866778404379096518691, + 0.84803461110488710482683367176, + 0.323391780352303842858779454674, + 0.52713499343541339922976296515, + 0.91034109375479019837692785976, + 0.106146556890642346491650008212, + 0.291532189474064930184344798145, + 0.330494959183718721493342551525, + 0.6236537208920888603043773443, + 0.89122121355780761549659392994, + 0.51799810738861013193016943087, + 0.249256177739037963581221438965, + 0.76322106809612787470242640888, + 0.97852511972383831461233976406, + 0.52255677693690499607690355455, + 0.4450034860583097087122794844, + 0.79114162250324775713725095404, + 0.94756217345536380876998110362, + 0.58677918818329126036021764787, + 0.84845252924877884299669190981, + 0.30081720041370757827674016113, + 0.27920525653128846538023076229, + 0.33471466998109052439193176801, + 0.77432114969973711331784009482, + 0.79975078898170550460312445454, + 0.90029380309155505829673878957, + 0.22735855793472972935624370264, + 0.83917898101167717908999667914, + 0.96001063929762371813642857618, + 0.80557845129235602137075744771, + 0.227828260252387705994553631692, + 0.45514459312672738783331856798, + 0.6996049090759249573037751274, + 0.76407211467383802388153449844, + 0.35750763601712374361686514082, + 0.090157662209549066428683554241, + 0.95043897530001474792481472865, + 0.97262166470012788338731033975, + 0.203045895422423613196589718133, + 0.217437635156560627036179586425, + 0.5222956932204809424910993278, + 0.52865060708104384493756729767, + 0.97715373213739469800445297208, + 0.5740174414400501666597490431, + 0.172348314420047937640907870932, + 0.57197038071649167881433868039, + 0.26289948915209002196358225729, + 0.177903112174726341611524884074, + 0.74917239660013094610681443816, + 0.59837085384984040836442442706, + 0.065070324689375259831989322427, + 0.44807493892928848916566949155, + 0.59027783360778386064107723777, + 0.122058971772529617939528531479, + 0.18965096763129552013799044806, + 0.179455202785822708296801760066, + 0.032170979041981235014758366854, + 0.297222966386620738492021519056, + 0.91323423393143490893801153646, + 0.75998869946268189685327906564, + 0.83934073246383862944110864099, + 0.17898779712956184324621175982, + 0.480986398855505957279379560397, + 0.60860751560721289727164165043, + 0.298927282590269088379100218673, + 0.77935020447343759584143119835, + 0.480545242963934573648858250607, + 0.85619790637736236353631524289, + 0.96488893882602300700764346564, + 0.36351865634843046736230405883, + 0.82895257550724293657223335349, + 0.79749691055514662573933190753, + 0.20106705267868388883102752272, + 0.33623918491977977623116871123, + 0.93256466340279772952587363977, + 0.88648669501682764515636262464, + 0.47662235152771500250187825963, + 0.52659238455883068245922982067, + 0.94111676559395948458425469814, + 0.323317713690175795284098362026, + 0.34796405933091263994264450729, + 0.52445433363119391822452105405, + 0.525140277317638922334264421, + 0.64469482443585357444532895759, + 0.33472685924872903603447879104, + 0.42400458791646499703641118014, + 0.8222662798441265944554029489, + 0.75524567154228028735673060411, + 0.90790601849806560799894333131, + 0.75164241313793249434488428193, + 0.38724602290468111557712203885, + 0.36352513950081020449187506395, + 0.078398790907179055722325452963, + 0.5003676822199407758422514133, + 0.86055044548361328714384972985, + 0.66748567445598821900669819042, + 0.95450644393912187127659765969, + 0.9536501355878008523425355652, + 0.56207573012593503802043957099, + 0.99057795680550440527031916411, + 0.056136908924222021770088579728, + 0.89322960593560085272815946927, + 0.19380351076299398770342941398, + 0.036881975481577328074706357897, + 0.38834900979665334617449710449, + 0.77196507761008668275581490587, + 0.87539115393397618421355963533, + 0.9131721846286054396553858461, + 0.62245648254908013430163665866, + 0.56021174819199355559539089633, + 0.86987294559046384230921358438, + 0.474584307464076041054198211805, + 0.37224942408757353492416873571, + 0.198307276357215222087716993615, + 0.81633548414328354008913860616, + 0.071192681637945014051745371309, + 0.227203421058334439883665388655, + 0.50527083273847576806586104904, + 0.25911353175247232791676189983, + 0.103567996992606824957067451526, + 0.98316826751311017109085781757, + 0.99206610065531611133123425907, + 0.63838444880264351660305680771, + 0.90013304139719692321619239255, + 0.541419881593941428911392944, + 0.434681681520065487913409442927, + 0.0277935905905462584654818408167, + 0.28736085880215502013374946299, + 0.204706679291990486471085620508, + 0.29639415300325412139805373353, + 0.316818074164048785111401123944, + 0.58068268044073033182148412246, + 0.137736206950094621238996907006, + 0.80907996549523150166492783923, + 0.73799561611209772635015717353, + 0.84013433924397440368969968592, + 0.46126521311414726401422152854, + 0.78013716447507497359555980298, + 0.83405708922951231042933175851, + 0.6366367969739079258896472192, + 0.77353748358406402598000037557, + 0.17489624725635947111471117775, + 0.80267952648428412026314875447, + 0.80437106861315296029137160672, + 0.62834462177566783487584779777, + 0.31539602345858033626133832055, + 0.50541890853061839219557074283, + 0.0195874476781850222509795360627, + 0.011676447193909007242643314705, + 0.85675479754070644130150816794, + 0.09391269154749661204040398199, + 0.369625667102334643216258483376, + 0.84311577046357953313746551837, + 0.66438426715728382263582851036, + 0.70530906415261448155650458603, + 0.446783684004800041373395690117, + 0.75627790284213576819810990131, + 0.57190285913753158265774292274, + 0.97785681370875218892539297465, + 0.0244503386494348881614690746194, + 0.48528430854909558202793141933, + 0.89436155397807056672243211894, + 0.40757489194485346255194449191, + 0.91772837786834838909335779229, + 0.28020326531649972709359017096, + 0.28847822326776188982020803144, + 0.93193769743225684077624356649, + 0.58336147304815741644785105161, + 0.4004241800179331174134885947, + 0.265790823692672203607418801725, + 0.4137092141145146388568879939, + 0.0255090449126572366852573357318, + 0.47601725598948555645487446626, + 0.69141516452580797436419291497, + 0.187709862166242786826507443003, + 0.31177816288567708916778389045, + 0.79635247302484103596788484137, + 0.14648403361265752358955335086, + 0.0088027047060531475573345163528, + 0.90053967411241805345616039474, + 0.373822238382428585287035417224, + 0.94303097002109978273901800507, + 0.037263906643698883423150604649, + 0.98416823398276433881119247311, + 0.257766562836474661728601317803, + 0.09336855716941364387765222813, + 0.057604551843195630210060755775, + 0.37732024813036636644231432449, + 0.437099108019093398068604946814, + 0.0298274889889844501626534131975, + 0.54161045457572229928359302347, + 0.354192069739745951755754451894, + 0.9952629304832433588789284291, + 0.61362350596285189174752077338, + 0.23176197923774029736185020682, + 0.259000332877923815426717028414, + 0.77171708810079063604185854121, + 0.87278431247491539306511051532, + 0.386310463821549823085972724515, + 0.19043920209178263945663905422, + 0.77200547833114724875436606573, + 0.2683024354984293205497398925, + 0.144270112550972640008446091075, + 0.36996280314557984925474224612, + 0.163548224543250866742712583905, + 0.54541238293503241055380526708, + 0.54270760938500008382580072956, + 0.7374073253240524865446763851, + 0.93470960326436177572863031654, + 0.71417607213823278615975270201, + 0.65837463356664939532769528292, + 0.433323451649582925271830911365, + 0.79664580661766246494864588315, + 0.392079017934601610514677836005, + 0.212454387416532999103471570235, + 0.198678082418012501322802116335, + 0.61525672800559338657275986197, + 0.99339589895181138684928419014, + 0.53563057949945927383392076793, + 0.68817192513245948798192690082, + 0.59671938169380086666866042956, + 0.5686075254645125832635026196, + 0.25860953535454698758704936914, + 0.60779864941995215785819783969, + 0.46515241662568547274625942204, + 0.8756966078479474164213834749, + 0.89153160343113076353740745469, + 0.57055911159151577684982200009, + 0.39366246576557783924065683256, + 0.53789676931469921495851209609, + 0.95842028586447684249630374944, + 0.25218284880717367924827402845, + 0.23718965807272971860203662735, + 0.334222632819004380754702693406, + 0.6370849366068287810411454729, + 0.722665796162802454203702773, + 0.50216248905279887048328225791, + 0.34529823309520970630714708672, + 0.45098892404492692601908443802, + 0.64640019115293913591196874603, + 0.137077316379736192931987264458, + 0.29368115076039970149731521521, + 0.20091822953913855557804069085, + 0.066267083813833718511605782276, + 0.88094596104423280074202839474, + 0.071730322265966936504743175424, + 0.69735904142296779896396736035, + 0.91352594564083795862432502567, + 0.13244220377041278512040316988, + 0.6283911312781029516331064494, + 0.34896540167805105781090114462, + 0.6795367801751911186206756471, + 0.74898526486791573083377925403, + 0.71700182398199203349731046015, + 0.121142833366516620257163901501, + 0.32678002036857151533698078636, + 0.327511655875027224450064555456, + 0.0079152053645354575349489795814, + 0.84748954479623021059675156738, + 0.75041561033954009809301550159, + 0.41101693712463238996746228193, + 0.90155864029338267639417046915, + 0.35464670537047753945618208157, + 0.68848712573944472430623590326, + 0.08893193373618063124738179594, + 0.58932830480784385636485098641, + 0.0501618828375381577588978271165, + 0.9451968329901169788400753848, + 0.074994725566097580721185016702, + 0.191860088196691871607965261685, + 0.67853841063536805868885844477, + 0.179445375284033906887325905976, + 0.84157620913886056000430779083, + 0.7377942162322144186341324232, + 0.231126715579023126062082806996, + 0.127662509645324778320005407937, + 0.63062414859560283674777403205, + 0.55283326072907470543330204975, + 0.81243486031688046850257374808, + 0.299095175225750536694802628506, + 0.34284433830834748530634854762, + 0.92098838107935607957057329632, + 0.6334432153537539286206936299, + 0.49203336326915182548719200464, + 0.70089872986754081776092540042, + 0.410346112246289262244008861334, + 0.689375704219352519232614571, + 0.53543492718830214408075484368, + 0.78985504761729292283075540625, + 0.66802245726332267870092702429, + 0.75600588548341120124374250114, + 0.83217485519464083512235296359, + 0.77758150309412736979136465746, + 0.067382141804836913185384124002, + 0.7289836962356747770023887674, + 0.453434776313686590560640460504, + 0.3160796148757468204057886796, + 0.0098933475787107681104048511314, + 0.3620064234142809735084479026, + 0.85993179373877360456391909506, + 0.90684883450763884954227285187, + 0.75959171037325548903969803948, + 0.91219881792279148536349496306, + 0.97175430264940118917041244436, + 0.292364544897748356834218017667, + 0.126096590956329503351026499397, + 0.058210669685805595156500555938, + 0.207143479048534791976348255132, + 0.202837039257860939456824357966, + 0.459137240079351948795601640776, + 0.65480905235794807223708347609 +}; diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/stdalign.in.h gettext-0.19.7/gettext-tools/gnulib-tests/stdalign.in.h --- gettext-0.19.6/gettext-tools/gnulib-tests/stdalign.in.h 2015-09-11 03:03:57.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/stdalign.in.h 2015-12-27 23:08:33.000000000 +0000 @@ -52,7 +52,10 @@ #undef _Alignas #undef _Alignof -#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 +/* GCC releases before GCC 4.9 had a bug in _Alignof. See GCC bug 52023 + . */ +#if (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 \ + || (defined __GNUC__ && __GNUC__ < 4 + (__GNUC_MINOR__ < 9))) # ifdef __cplusplus # if 201103 <= __cplusplus # define _Alignof(type) alignof (type) @@ -101,7 +104,7 @@ ? 4 < __GNUC__ + (1 <= __GNUC_MINOR__) \ : __GNUC__) \ || __HP_cc || __HP_aCC || __IBMC__ || __IBMCPP__ \ - || __ICC || 0x5110 <= __SUNPRO_C) + || __ICC || 0x590 <= __SUNPRO_C) # define _Alignas(a) __attribute__ ((__aligned__ (a))) # elif 1300 <= _MSC_VER # define _Alignas(a) __declspec (align (a)) diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-c-ctype.c gettext-0.19.7/gettext-tools/gnulib-tests/test-c-ctype.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-c-ctype.c 2015-09-11 03:03:57.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-c-ctype.c 2015-12-27 23:08:33.000000000 +0000 @@ -20,59 +20,79 @@ #include "c-ctype.h" +#include +#include #include #include "macros.h" static void -test_all (void) +test_agree_with_C_locale (void) { int c; - for (c = -0x80; c < 0x100; c++) + for (c = 0; c <= UCHAR_MAX; c++) { - ASSERT (c_isascii (c) == (c >= 0 && c < 0x80)); - - switch (c) + ASSERT (c_isascii (c) == (isascii (c) != 0)); + if (c_isascii (c)) { - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - ASSERT (c_isalnum (c) == 1); - break; - default: - ASSERT (c_isalnum (c) == 0); - break; + ASSERT (c_isalnum (c) == (isalnum (c) != 0)); + ASSERT (c_isalpha (c) == (isalpha (c) != 0)); + ASSERT (c_isblank (c) == (isblank (c) != 0)); + ASSERT (c_iscntrl (c) == (iscntrl (c) != 0)); + ASSERT (c_isdigit (c) == (isdigit (c) != 0)); + ASSERT (c_islower (c) == (islower (c) != 0)); + ASSERT (c_isgraph (c) == (isgraph (c) != 0)); + ASSERT (c_isprint (c) == (isprint (c) != 0)); + ASSERT (c_ispunct (c) == (ispunct (c) != 0)); + ASSERT (c_isspace (c) == (isspace (c) != 0)); + ASSERT (c_isupper (c) == (isupper (c) != 0)); + ASSERT (c_isxdigit (c) == (isxdigit (c) != 0)); + ASSERT (c_tolower (c) == tolower (c)); + ASSERT (c_toupper (c) == toupper (c)); } + } +} - switch (c) +static void +test_all (void) +{ + int c; + int n_isascii = 0; + + for (c = CHAR_MIN; c <= UCHAR_MAX; c++) + { + if (! (0 <= c && c <= CHAR_MAX)) { - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - ASSERT (c_isalpha (c) == 1); - break; - default: - ASSERT (c_isalpha (c) == 0); - break; + ASSERT (! c_isascii (c)); + ASSERT (! c_isalnum (c)); + ASSERT (! c_isalpha (c)); + ASSERT (! c_isblank (c)); + ASSERT (! c_iscntrl (c)); + ASSERT (! c_isdigit (c)); + ASSERT (! c_islower (c)); + ASSERT (! c_isgraph (c)); + ASSERT (! c_isprint (c)); + ASSERT (! c_ispunct (c)); + ASSERT (! c_isspace (c)); + ASSERT (! c_isupper (c)); + ASSERT (! c_isxdigit (c)); + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == c); } + n_isascii += c_isascii (c); + +#ifdef C_CTYPE_ASCII + ASSERT (c_isascii (c) == (0 <= c && c <= 0x7f)); +#endif + + ASSERT (c_isascii (c) == (c_isprint (c) || c_iscntrl (c))); + + ASSERT (c_isalnum (c) == (c_isalpha (c) || c_isdigit (c))); + + ASSERT (c_isalpha (c) == (c_islower (c) || c_isupper (c))); + switch (c) { case '\t': case ' ': @@ -83,7 +103,19 @@ break; } +#ifdef C_CTYPE_ASCII ASSERT (c_iscntrl (c) == ((c >= 0 && c < 0x20) || c == 0x7f)); +#endif + + switch (c) + { + case '\a': case '\b': case '\f': case '\n': + case '\r': case '\t': case '\v': + ASSERT (c_iscntrl (c)); + break; + } + + ASSERT (! (c_iscntrl (c) && c_isprint (c))); switch (c) { @@ -104,17 +136,37 @@ case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': ASSERT (c_islower (c) == 1); + ASSERT (c_toupper (c) == c - 'a' + 'A'); break; default: ASSERT (c_islower (c) == 0); + ASSERT (c_toupper (c) == c); break; } +#ifdef C_CTYPE_ASCII ASSERT (c_isgraph (c) == ((c >= 0x20 && c < 0x7f) && c != ' ')); ASSERT (c_isprint (c) == (c >= 0x20 && c < 0x7f)); +#endif + + ASSERT (c_isgraph (c) == (c_isalnum (c) || c_ispunct (c))); + + ASSERT (c_isprint (c) == (c_isgraph (c) || c == ' ')); - ASSERT (c_ispunct (c) == (c_isgraph (c) && !c_isalnum (c))); + switch (c) + { + case '!': case '"': case '#': case '$': case '%': case '&': case '\'': + case '(': case ')': case '*': case '+': case ',': case '-': case '.': + case '/': case ':': case ';': case '<': case '=': case '>': case '?': + case '@': case '[': case'\\': case ']': case '^': case '_': case '`': + case '{': case '|': case '}': case '~': + ASSERT (c_ispunct (c) == 1); + break; + default: + ASSERT (c_ispunct (c) == 0); + break; + } switch (c) { @@ -134,9 +186,11 @@ case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': ASSERT (c_isupper (c) == 1); + ASSERT (c_tolower (c) == c - 'A' + 'a'); break; default: ASSERT (c_isupper (c) == 0); + ASSERT (c_tolower (c) == c); break; } @@ -152,228 +206,16 @@ ASSERT (c_isxdigit (c) == 0); break; } - - switch (c) - { - case 'A': - ASSERT (c_tolower (c) == 'a'); - ASSERT (c_toupper (c) == c); - break; - case 'B': - ASSERT (c_tolower (c) == 'b'); - ASSERT (c_toupper (c) == c); - break; - case 'C': - ASSERT (c_tolower (c) == 'c'); - ASSERT (c_toupper (c) == c); - break; - case 'D': - ASSERT (c_tolower (c) == 'd'); - ASSERT (c_toupper (c) == c); - break; - case 'E': - ASSERT (c_tolower (c) == 'e'); - ASSERT (c_toupper (c) == c); - break; - case 'F': - ASSERT (c_tolower (c) == 'f'); - ASSERT (c_toupper (c) == c); - break; - case 'G': - ASSERT (c_tolower (c) == 'g'); - ASSERT (c_toupper (c) == c); - break; - case 'H': - ASSERT (c_tolower (c) == 'h'); - ASSERT (c_toupper (c) == c); - break; - case 'I': - ASSERT (c_tolower (c) == 'i'); - ASSERT (c_toupper (c) == c); - break; - case 'J': - ASSERT (c_tolower (c) == 'j'); - ASSERT (c_toupper (c) == c); - break; - case 'K': - ASSERT (c_tolower (c) == 'k'); - ASSERT (c_toupper (c) == c); - break; - case 'L': - ASSERT (c_tolower (c) == 'l'); - ASSERT (c_toupper (c) == c); - break; - case 'M': - ASSERT (c_tolower (c) == 'm'); - ASSERT (c_toupper (c) == c); - break; - case 'N': - ASSERT (c_tolower (c) == 'n'); - ASSERT (c_toupper (c) == c); - break; - case 'O': - ASSERT (c_tolower (c) == 'o'); - ASSERT (c_toupper (c) == c); - break; - case 'P': - ASSERT (c_tolower (c) == 'p'); - ASSERT (c_toupper (c) == c); - break; - case 'Q': - ASSERT (c_tolower (c) == 'q'); - ASSERT (c_toupper (c) == c); - break; - case 'R': - ASSERT (c_tolower (c) == 'r'); - ASSERT (c_toupper (c) == c); - break; - case 'S': - ASSERT (c_tolower (c) == 's'); - ASSERT (c_toupper (c) == c); - break; - case 'T': - ASSERT (c_tolower (c) == 't'); - ASSERT (c_toupper (c) == c); - break; - case 'U': - ASSERT (c_tolower (c) == 'u'); - ASSERT (c_toupper (c) == c); - break; - case 'V': - ASSERT (c_tolower (c) == 'v'); - ASSERT (c_toupper (c) == c); - break; - case 'W': - ASSERT (c_tolower (c) == 'w'); - ASSERT (c_toupper (c) == c); - break; - case 'X': - ASSERT (c_tolower (c) == 'x'); - ASSERT (c_toupper (c) == c); - break; - case 'Y': - ASSERT (c_tolower (c) == 'y'); - ASSERT (c_toupper (c) == c); - break; - case 'Z': - ASSERT (c_tolower (c) == 'z'); - ASSERT (c_toupper (c) == c); - break; - case 'a': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'A'); - break; - case 'b': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'B'); - break; - case 'c': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'C'); - break; - case 'd': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'D'); - break; - case 'e': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'E'); - break; - case 'f': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'F'); - break; - case 'g': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'G'); - break; - case 'h': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'H'); - break; - case 'i': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'I'); - break; - case 'j': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'J'); - break; - case 'k': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'K'); - break; - case 'l': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'L'); - break; - case 'm': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'M'); - break; - case 'n': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'N'); - break; - case 'o': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'O'); - break; - case 'p': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'P'); - break; - case 'q': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'Q'); - break; - case 'r': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'R'); - break; - case 's': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'S'); - break; - case 't': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'T'); - break; - case 'u': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'U'); - break; - case 'v': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'V'); - break; - case 'w': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'W'); - break; - case 'x': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'X'); - break; - case 'y': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'Y'); - break; - case 'z': - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == 'Z'); - break; - default: - ASSERT (c_tolower (c) == c); - ASSERT (c_toupper (c) == c); - break; - } } + + ASSERT (n_isascii == 128); } int main () { + test_agree_with_C_locale (); + test_all (); setlocale (LC_ALL, "de_DE"); diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-ctype.c gettext-0.19.7/gettext-tools/gnulib-tests/test-ctype.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-ctype.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-ctype.c 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,27 @@ +/* Test of substitute. + Copyright (C) 2009-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Eric Blake , 2009. */ + +#include + +#include + +int +main (void) +{ + return 0; +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-fabs.c gettext-0.19.7/gettext-tools/gnulib-tests/test-fabs.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-fabs.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-fabs.c 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,54 @@ +/* Test of fabs() function. + Copyright (C) 2010-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2010. */ + +#include + +#include + +#include "signature.h" +SIGNATURE_CHECK (fabs, double, (double)); + +#include + +#include "macros.h" +#include "minus-zero.h" + +#define DOUBLE double +#define L_(literal) literal +#define MINUS_ZERO minus_zerod +#define FABS fabs +#define RANDOM randomd +#include "test-fabs.h" + +int +main () +{ + /* A particular positive value. */ + x = 0.6; + y = fabs (x); + ASSERT (y == 0.6); + + /* A particular negative value. */ + x = -0.6; + y = fabs (x); + ASSERT (y == 0.6); + + test_function (); + + return 0; +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-fabs.h gettext-0.19.7/gettext-tools/gnulib-tests/test-fabs.h --- gettext-0.19.6/gettext-tools/gnulib-tests/test-fabs.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-fabs.h 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,48 @@ +/* Test of fabs*() function family. + Copyright (C) 2012-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +static void +test_function (void) +{ + volatile DOUBLE x; + DOUBLE y; + + /* Signed zero. */ + x = L_(0.0); + y = FABS (x); + ASSERT (y == L_(0.0)); + ASSERT (!signbit (y)); + + x = MINUS_ZERO; + y = FABS (x); + ASSERT (y == L_(0.0)); + ASSERT (!signbit (y)); + + /* Randomized tests. */ + { + int i; + + for (i = 0; i < SIZEOF (RANDOM); i++) + { + x = L_(10.0) * RANDOM[i]; /* 0.0 <= x <= 10.0 */ + ASSERT (FABS (x) == x); + ASSERT (FABS (- x) == x); + } + } +} + +volatile DOUBLE x; +DOUBLE y; diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-intprops.c gettext-0.19.7/gettext-tools/gnulib-tests/test-intprops.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-intprops.c 2015-09-11 03:03:58.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-intprops.c 2015-12-27 23:08:33.000000000 +0000 @@ -16,10 +16,19 @@ /* Written by Paul Eggert. */ -/* Tell gcc not to warn about the many (X < 0) expressions that - the overflow macros expand to. */ -#if (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) || 4 < __GNUC__ +/* Tell gcc not to warn about the long expressions that the overflow + macros expand to, or about the (X < 0) expressions. */ +#if 4 < __GNUC__ + (3 <= __GNUC_MINOR__) +# pragma GCC diagnostic ignored "-Woverlength-strings" # pragma GCC diagnostic ignored "-Wtype-limits" + +/* Work around a bug in GCC 5.3.1 and earlier; see: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68971 + Hope it will be fixed by the time GCC 6 comes out. */ +# if __GNUC__ < 6 +# pragma GCC diagnostic ignored "-Woverflow" +# endif + #endif #include @@ -29,6 +38,7 @@ #include #include +#include #include "macros.h" @@ -43,6 +53,8 @@ # define VERIFY(x) ASSERT (x) #endif +#define DONTCARE __LINE__ + int main (void) { @@ -128,148 +140,244 @@ #endif /* All the INT__RANGE_OVERFLOW tests are equally valid as - INT__OVERFLOW tests, so define a single macro to do both. */ - #define CHECK_BINOP(op, a, b, min, max, overflow) \ - (INT_##op##_RANGE_OVERFLOW (a, b, min, max) == (overflow) \ - && INT_##op##_OVERFLOW (a, b) == (overflow)) - #define CHECK_UNOP(op, a, min, max, overflow) \ - (INT_##op##_RANGE_OVERFLOW (a, min, max) == (overflow) \ - && INT_##op##_OVERFLOW (a) == (overflow)) + INT__OVERFLOW tests, so define macros to do both. OP is the + operation, OPNAME its symbolic name, A and B its operands, T the + result type, V the overflow flag, and VRES the result if V and if + two's complement. CHECK_BINOP is for most binary operatinos, + CHECK_SBINOP for binary +, -, * when the result type is signed, + and CHECK_UNOP for unary operations. */ + #define CHECK_BINOP(op, opname, a, b, t, v, vres) \ + VERIFY (INT_##opname##_RANGE_OVERFLOW (a, b, TYPE_MINIMUM (t), \ + TYPE_MAXIMUM (t)) \ + == (v)); \ + VERIFY (INT_##opname##_OVERFLOW (a, b) == (v)) + #define CHECK_SBINOP(op, opname, a, b, t, v, vres) \ + CHECK_BINOP(op, opname, a, b, t, v, vres); \ + { \ + t result; \ + ASSERT (INT_##opname##_WRAPV (a, b, &result) == (v)); \ + ASSERT (result == ((v) ? (vres) : ((a) op (b))) \ + || ((v) && !TYPE_TWOS_COMPLEMENT (t))); \ + } + #define CHECK_UNOP(op, opname, a, t, v) \ + VERIFY (INT_##opname##_RANGE_OVERFLOW (a, TYPE_MINIMUM (t), \ + TYPE_MAXIMUM (t)) \ + == (v)); \ + VERIFY (INT_##opname##_OVERFLOW (a) == (v)) /* INT__RANGE_OVERFLOW, INT__OVERFLOW. */ VERIFY (INT_ADD_RANGE_OVERFLOW (INT_MAX, 1, INT_MIN, INT_MAX)); VERIFY (INT_ADD_OVERFLOW (INT_MAX, 1)); - VERIFY (CHECK_BINOP (ADD, INT_MAX, 1, INT_MIN, INT_MAX, true)); - VERIFY (CHECK_BINOP (ADD, INT_MAX, -1, INT_MIN, INT_MAX, false)); - VERIFY (CHECK_BINOP (ADD, INT_MIN, 1, INT_MIN, INT_MAX, false)); - VERIFY (CHECK_BINOP (ADD, INT_MIN, -1, INT_MIN, INT_MAX, true)); - VERIFY (CHECK_BINOP (ADD, UINT_MAX, 1u, 0u, UINT_MAX, true)); - VERIFY (CHECK_BINOP (ADD, 0u, 1u, 0u, UINT_MAX, false)); - - VERIFY (CHECK_BINOP (SUBTRACT, INT_MAX, 1, INT_MIN, INT_MAX, false)); - VERIFY (CHECK_BINOP (SUBTRACT, INT_MAX, -1, INT_MIN, INT_MAX, true)); - VERIFY (CHECK_BINOP (SUBTRACT, INT_MIN, 1, INT_MIN, INT_MAX, true)); - VERIFY (CHECK_BINOP (SUBTRACT, INT_MIN, -1, INT_MIN, INT_MAX, false)); - VERIFY (CHECK_BINOP (SUBTRACT, UINT_MAX, 1u, 0u, UINT_MAX, false)); - VERIFY (CHECK_BINOP (SUBTRACT, 0u, 1u, 0u, UINT_MAX, true)); - - VERIFY (CHECK_UNOP (NEGATE, INT_MIN, INT_MIN, INT_MAX, - TYPE_TWOS_COMPLEMENT (int))); - VERIFY (CHECK_UNOP (NEGATE, 0, INT_MIN, INT_MAX, false)); - VERIFY (CHECK_UNOP (NEGATE, INT_MAX, INT_MIN, INT_MAX, false)); - VERIFY (CHECK_UNOP (NEGATE, 0u, 0u, UINT_MAX, false)); - VERIFY (CHECK_UNOP (NEGATE, 1u, 0u, UINT_MAX, true)); - VERIFY (CHECK_UNOP (NEGATE, UINT_MAX, 0u, UINT_MAX, true)); - - VERIFY (CHECK_BINOP (MULTIPLY, INT_MAX, INT_MAX, INT_MIN, INT_MAX, true)); - VERIFY (CHECK_BINOP (MULTIPLY, INT_MAX, INT_MIN, INT_MIN, INT_MAX, true)); - VERIFY (CHECK_BINOP (MULTIPLY, INT_MIN, INT_MAX, INT_MIN, INT_MAX, true)); - VERIFY (CHECK_BINOP (MULTIPLY, INT_MIN, INT_MIN, INT_MIN, INT_MAX, true)); - VERIFY (CHECK_BINOP (MULTIPLY, -1, INT_MIN, INT_MIN, INT_MAX, - INT_NEGATE_OVERFLOW (INT_MIN))); - VERIFY (CHECK_BINOP (MULTIPLY, LONG_MIN / INT_MAX, (long int) INT_MAX, - LONG_MIN, LONG_MIN, false)); - - VERIFY (CHECK_BINOP (DIVIDE, INT_MIN, -1, INT_MIN, INT_MAX, - INT_NEGATE_OVERFLOW (INT_MIN))); - VERIFY (CHECK_BINOP (DIVIDE, INT_MAX, 1, INT_MIN, INT_MAX, false)); - VERIFY (CHECK_BINOP (DIVIDE, (unsigned int) INT_MIN, - -1u, 0u, UINT_MAX, false)); - - VERIFY (CHECK_BINOP (REMAINDER, INT_MIN, -1, INT_MIN, INT_MAX, - INT_NEGATE_OVERFLOW (INT_MIN))); - VERIFY (CHECK_BINOP (REMAINDER, INT_MAX, 1, INT_MIN, INT_MAX, false)); - VERIFY (CHECK_BINOP (REMAINDER, (unsigned int) INT_MIN, - -1u, 0u, UINT_MAX, false)); - - VERIFY (CHECK_BINOP (LEFT_SHIFT, UINT_MAX, 1, 0u, UINT_MAX, true)); - VERIFY (CHECK_BINOP (LEFT_SHIFT, UINT_MAX / 2 + 1, 1, 0u, UINT_MAX, true)); - VERIFY (CHECK_BINOP (LEFT_SHIFT, UINT_MAX / 2, 1, 0u, UINT_MAX, false)); - - /* INT__OVERFLOW with mixed types. */ - #define CHECK_SUM(a, b, overflow) \ - VERIFY (INT_ADD_OVERFLOW (a, b) == (overflow)); \ - VERIFY (INT_ADD_OVERFLOW (b, a) == (overflow)) - CHECK_SUM (-1, LONG_MIN, true); - CHECK_SUM (-1, UINT_MAX, false); - CHECK_SUM (-1L, INT_MIN, INT_MIN == LONG_MIN); - CHECK_SUM (0u, -1, true); - CHECK_SUM (0u, 0, false); - CHECK_SUM (0u, 1, false); - CHECK_SUM (1, LONG_MAX, true); - CHECK_SUM (1, UINT_MAX, true); - CHECK_SUM (1L, INT_MAX, INT_MAX == LONG_MAX); - CHECK_SUM (1u, INT_MAX, INT_MAX == UINT_MAX); - CHECK_SUM (1u, INT_MIN, true); - - VERIFY (! INT_SUBTRACT_OVERFLOW (INT_MAX, 1u)); - VERIFY (! INT_SUBTRACT_OVERFLOW (UINT_MAX, 1)); - VERIFY (! INT_SUBTRACT_OVERFLOW (0u, -1)); - VERIFY (INT_SUBTRACT_OVERFLOW (UINT_MAX, -1)); - VERIFY (INT_SUBTRACT_OVERFLOW (INT_MIN, 1u)); - VERIFY (INT_SUBTRACT_OVERFLOW (-1, 0u)); - - #define CHECK_PRODUCT(a, b, overflow) \ - VERIFY (INT_MULTIPLY_OVERFLOW (a, b) == (overflow)); \ - VERIFY (INT_MULTIPLY_OVERFLOW (b, a) == (overflow)) - - CHECK_PRODUCT (-1, 1u, true); - CHECK_PRODUCT (-1, INT_MIN, INT_NEGATE_OVERFLOW (INT_MIN)); - CHECK_PRODUCT (-1, UINT_MAX, true); - CHECK_PRODUCT (-12345, LONG_MAX / -12345 - 1, true); - CHECK_PRODUCT (-12345, LONG_MAX / -12345, false); - CHECK_PRODUCT (0, -1, false); - CHECK_PRODUCT (0, 0, false); - CHECK_PRODUCT (0, 0u, false); - CHECK_PRODUCT (0, 1, false); - CHECK_PRODUCT (0, INT_MAX, false); - CHECK_PRODUCT (0, INT_MIN, false); - CHECK_PRODUCT (0, UINT_MAX, false); - CHECK_PRODUCT (0u, -1, false); - CHECK_PRODUCT (0u, 0, false); - CHECK_PRODUCT (0u, 0u, false); - CHECK_PRODUCT (0u, 1, false); - CHECK_PRODUCT (0u, INT_MAX, false); - CHECK_PRODUCT (0u, INT_MIN, false); - CHECK_PRODUCT (0u, UINT_MAX, false); - CHECK_PRODUCT (1, INT_MAX, false); - CHECK_PRODUCT (1, INT_MIN, false); - CHECK_PRODUCT (1, UINT_MAX, false); - CHECK_PRODUCT (1u, INT_MIN, true); - CHECK_PRODUCT (1u, INT_MAX, UINT_MAX < INT_MAX); - CHECK_PRODUCT (INT_MAX, UINT_MAX, true); - CHECK_PRODUCT (INT_MAX, ULONG_MAX, true); - CHECK_PRODUCT (INT_MIN, LONG_MAX / INT_MIN - 1, true); - CHECK_PRODUCT (INT_MIN, LONG_MAX / INT_MIN, false); - CHECK_PRODUCT (INT_MIN, UINT_MAX, true); - CHECK_PRODUCT (INT_MIN, ULONG_MAX, true); - - VERIFY (INT_DIVIDE_OVERFLOW (INT_MIN, -1L) - == (TYPE_TWOS_COMPLEMENT (long int) && INT_MIN == LONG_MIN)); - VERIFY (! INT_DIVIDE_OVERFLOW (INT_MIN, UINT_MAX)); - VERIFY (! INT_DIVIDE_OVERFLOW (INTMAX_MIN, UINTMAX_MAX)); - VERIFY (! INT_DIVIDE_OVERFLOW (INTMAX_MIN, UINT_MAX)); - VERIFY (INT_DIVIDE_OVERFLOW (-11, 10u)); - VERIFY (INT_DIVIDE_OVERFLOW (-10, 10u)); - VERIFY (! INT_DIVIDE_OVERFLOW (-9, 10u)); - VERIFY (INT_DIVIDE_OVERFLOW (11u, -10)); - VERIFY (INT_DIVIDE_OVERFLOW (10u, -10)); - VERIFY (! INT_DIVIDE_OVERFLOW (9u, -10)); - - VERIFY (INT_REMAINDER_OVERFLOW (INT_MIN, -1L) - == (TYPE_TWOS_COMPLEMENT (long int) && INT_MIN == LONG_MIN)); - VERIFY (INT_REMAINDER_OVERFLOW (-1, UINT_MAX)); - VERIFY (INT_REMAINDER_OVERFLOW ((intmax_t) -1, UINTMAX_MAX)); - VERIFY (INT_REMAINDER_OVERFLOW (INTMAX_MIN, UINT_MAX) - == (INTMAX_MAX < UINT_MAX - && - (unsigned int) INTMAX_MIN % UINT_MAX != 0)); - VERIFY (INT_REMAINDER_OVERFLOW (INT_MIN, ULONG_MAX) - == (INT_MIN % ULONG_MAX != 1)); - VERIFY (! INT_REMAINDER_OVERFLOW (1u, -1)); - VERIFY (! INT_REMAINDER_OVERFLOW (37*39u, -39)); - VERIFY (INT_REMAINDER_OVERFLOW (37*39u + 1, -39)); - VERIFY (INT_REMAINDER_OVERFLOW (37*39u - 1, -39)); - VERIFY (! INT_REMAINDER_OVERFLOW (LONG_MAX, -INT_MAX)); + + CHECK_SBINOP (+, ADD, INT_MAX, 1, int, true, INT_MIN); + CHECK_SBINOP (+, ADD, INT_MAX, -1, int, false, INT_MAX - 1); + CHECK_SBINOP (+, ADD, INT_MIN, 1, int, false, INT_MIN + 1); + CHECK_SBINOP (+, ADD, INT_MIN, -1, int, true, INT_MAX); + CHECK_BINOP (+, ADD, UINT_MAX, 1u, unsigned int, true, 0u); + CHECK_BINOP (+, ADD, 0u, 1u, unsigned int, false, 1u); + + CHECK_SBINOP (-, SUBTRACT, INT_MAX, 1, int, false, INT_MAX - 1); + CHECK_SBINOP (-, SUBTRACT, INT_MAX, -1, int, true, INT_MIN); + CHECK_SBINOP (-, SUBTRACT, INT_MIN, 1, int, true, INT_MAX); + CHECK_SBINOP (-, SUBTRACT, INT_MIN, -1, int, false, INT_MIN - -1); + CHECK_BINOP (-, SUBTRACT, UINT_MAX, 1u, unsigned int, false, UINT_MAX - 1u); + CHECK_BINOP (-, SUBTRACT, 0u, 1u, unsigned int, true, 0u - 1u); + + CHECK_UNOP (-, NEGATE, INT_MIN, int, TYPE_TWOS_COMPLEMENT (int)); + CHECK_UNOP (-, NEGATE, 0, int, false); + CHECK_UNOP (-, NEGATE, INT_MAX, int, false); + CHECK_UNOP (-, NEGATE, 0u, unsigned int, false); + CHECK_UNOP (-, NEGATE, 1u, unsigned int, true); + CHECK_UNOP (-, NEGATE, UINT_MAX, unsigned int, true); + + CHECK_SBINOP (*, MULTIPLY, INT_MAX, INT_MAX, int, true, 1); + CHECK_SBINOP (*, MULTIPLY, INT_MAX, INT_MIN, int, true, INT_MIN); + CHECK_SBINOP (*, MULTIPLY, INT_MIN, INT_MAX, int, true, INT_MIN); + CHECK_SBINOP (*, MULTIPLY, INT_MIN, INT_MIN, int, true, 0); + CHECK_SBINOP (*, MULTIPLY, -1, INT_MIN, int, + INT_NEGATE_OVERFLOW (INT_MIN), INT_MIN); + CHECK_SBINOP (*, MULTIPLY, LONG_MIN / INT_MAX, (long int) INT_MAX, + long int, false, LONG_MIN - LONG_MIN % INT_MAX); + + CHECK_BINOP (/, DIVIDE, INT_MIN, -1, int, + INT_NEGATE_OVERFLOW (INT_MIN), INT_MIN); + CHECK_BINOP (/, DIVIDE, INT_MAX, 1, int, false, INT_MAX); + CHECK_BINOP (/, DIVIDE, (unsigned int) INT_MIN, -1u, unsigned int, + false, INT_MIN / -1u); + + CHECK_BINOP (%, REMAINDER, INT_MIN, -1, int, INT_NEGATE_OVERFLOW (INT_MIN), 0); + CHECK_BINOP (%, REMAINDER, INT_MAX, 1, int, false, 0); + CHECK_BINOP (%, REMAINDER, (unsigned int) INT_MIN, -1u, unsigned int, + false, INT_MIN % -1u); + + CHECK_BINOP (<<, LEFT_SHIFT, UINT_MAX, 1, unsigned int, true, UINT_MAX << 1); + CHECK_BINOP (<<, LEFT_SHIFT, UINT_MAX / 2 + 1, 1, unsigned int, true, + (UINT_MAX / 2 + 1) << 1); + CHECK_BINOP (<<, LEFT_SHIFT, UINT_MAX / 2, 1, unsigned int, false, + (UINT_MAX / 2) << 1); + + /* INT__OVERFLOW and INT__WRAPV with mixed types. */ + #define CHECK_SUM(a, b, t, v, vres) \ + CHECK_SUM1(a, b, t, v, vres); \ + CHECK_SUM1(b, a, t, v, vres) + #define CHECK_SSUM(a, b, t, v, vres) \ + CHECK_SSUM1(a, b, t, v, vres); \ + CHECK_SSUM1(b, a, t, v, vres) + #define CHECK_SUM1(a, b, t, v, vres) \ + VERIFY (INT_ADD_OVERFLOW (a, b) == (v)) + #define CHECK_SSUM1(a, b, t, v, vres) \ + CHECK_SUM1(a, b, t, v, vres); \ + { \ + t result; \ + ASSERT (INT_ADD_WRAPV (a, b, &result) == (v)); \ + ASSERT (result == ((v) ? (vres) : ((a) + (b))) \ + || ((v) && !TYPE_TWOS_COMPLEMENT (t))); \ + } + CHECK_SSUM (-1, LONG_MIN, long int, true, LONG_MAX); + CHECK_SUM (-1, UINT_MAX, unsigned int, false, DONTCARE); + CHECK_SSUM (-1L, INT_MIN, long int, INT_MIN == LONG_MIN, + INT_MIN == LONG_MIN ? INT_MAX : DONTCARE); + CHECK_SUM (0u, -1, unsigned int, true, 0u + -1); + CHECK_SUM (0u, 0, unsigned int, false, DONTCARE); + CHECK_SUM (0u, 1, unsigned int, false, DONTCARE); + CHECK_SSUM (1, LONG_MAX, long int, true, LONG_MIN); + CHECK_SUM (1, UINT_MAX, unsigned int, true, 0u); + CHECK_SSUM (1L, INT_MAX, long int, INT_MAX == LONG_MAX, + INT_MAX == LONG_MAX ? INT_MIN : DONTCARE); + CHECK_SUM (1u, INT_MAX, unsigned int, INT_MAX == UINT_MAX, 1u + INT_MAX); + CHECK_SUM (1u, INT_MIN, unsigned int, true, 1u + INT_MIN); + { + long int result; + ASSERT (INT_ADD_WRAPV (1, INT_MAX, &result) == (INT_MAX == LONG_MAX)); + ASSERT (INT_ADD_WRAPV (-1, INT_MIN, &result) == (INT_MIN == LONG_MIN)); + } + + #define CHECK_DIFFERENCE(a, b, t, v, vres) \ + VERIFY (INT_SUBTRACT_OVERFLOW (a, b) == (v)) + #define CHECK_SDIFFERENCE(a, b, t, v, vres) \ + CHECK_DIFFERENCE(a, b, t, v, vres); \ + { \ + t result; \ + ASSERT (INT_SUBTRACT_WRAPV (a, b, &result) == (v)); \ + ASSERT (result == ((v) ? (vres) : ((a) - (b))) \ + || ((v) && !TYPE_TWOS_COMPLEMENT (t))); \ + } + CHECK_DIFFERENCE (INT_MAX, 1u, unsigned int, UINT_MAX < INT_MAX - 1, + INT_MAX - 1u); + CHECK_DIFFERENCE (UINT_MAX, 1, unsigned int, false, UINT_MAX - 1); + CHECK_DIFFERENCE (0u, -1, unsigned int, false, 0u - -1); + CHECK_DIFFERENCE (UINT_MAX, -1, unsigned int, true, UINT_MAX - -1); + CHECK_DIFFERENCE (INT_MIN, 1u, unsigned int, true, INT_MIN - 1u); + CHECK_DIFFERENCE (-1, 0u, unsigned int, true, -1 - 0u); + CHECK_SDIFFERENCE (-1, INT_MIN, int, false, -1 - INT_MIN); + CHECK_SDIFFERENCE (-1, INT_MAX, int, false, -1 - INT_MAX); + CHECK_SDIFFERENCE (0, INT_MIN, int, INT_MIN < -INT_MAX, INT_MIN); + CHECK_SDIFFERENCE (0, INT_MAX, int, false, 0 - INT_MAX); + { + long int result; + ASSERT (INT_SUBTRACT_WRAPV (INT_MAX, -1, &result) == (INT_MAX == LONG_MAX)); + ASSERT (INT_SUBTRACT_WRAPV (INT_MIN, 1, &result) == (INT_MAX == LONG_MAX)); + } + + #define CHECK_PRODUCT(a, b, t, v, vres) \ + CHECK_PRODUCT1(a, b, t, v, vres); \ + CHECK_PRODUCT1(b, a, t, v, vres) + #define CHECK_SPRODUCT(a, b, t, v, vres) \ + CHECK_SPRODUCT1(a, b, t, v, vres); \ + CHECK_SPRODUCT1(b, a, t, v, vres) + #define CHECK_PRODUCT1(a, b, t, v, vres) \ + VERIFY (INT_MULTIPLY_OVERFLOW (a, b) == (v)) + #define CHECK_SPRODUCT1(a, b, t, v, vres) \ + CHECK_PRODUCT1(a, b, t, v, vres); \ + { \ + t result; \ + ASSERT (INT_MULTIPLY_WRAPV (a, b, &result) == (v)); \ + ASSERT (result == ((v) ? (vres) : ((a) * (b))) \ + || ((v) && !TYPE_TWOS_COMPLEMENT (t))); \ + } + CHECK_PRODUCT (-1, 1u, unsigned int, true, -1 * 1u); + CHECK_SPRODUCT (-1, INT_MIN, int, INT_NEGATE_OVERFLOW (INT_MIN), INT_MIN); + CHECK_PRODUCT (-1, UINT_MAX, unsigned int, true, -1 * UINT_MAX); + CHECK_SPRODUCT (-32768, LONG_MAX / -32768 - 1, long int, true, LONG_MIN); + CHECK_SPRODUCT (-12345, LONG_MAX / -12345, long int, false, DONTCARE); + CHECK_SPRODUCT (0, -1, int, false, DONTCARE); + CHECK_SPRODUCT (0, 0, int, false, DONTCARE); + CHECK_PRODUCT (0, 0u, unsigned int, false, DONTCARE); + CHECK_SPRODUCT (0, 1, int, false, DONTCARE); + CHECK_SPRODUCT (0, INT_MAX, int, false, DONTCARE); + CHECK_SPRODUCT (0, INT_MIN, int, false, DONTCARE); + CHECK_PRODUCT (0, UINT_MAX, unsigned int, false, DONTCARE); + CHECK_PRODUCT (0u, -1, unsigned int, false, DONTCARE); + CHECK_PRODUCT (0u, 0, unsigned int, false, DONTCARE); + CHECK_PRODUCT (0u, 0u, unsigned int, false, DONTCARE); + CHECK_PRODUCT (0u, 1, unsigned int, false, DONTCARE); + CHECK_PRODUCT (0u, INT_MAX, unsigned int, false, DONTCARE); + CHECK_PRODUCT (0u, INT_MIN, unsigned int, false, DONTCARE); + CHECK_PRODUCT (0u, UINT_MAX, unsigned int, false, DONTCARE); + CHECK_SPRODUCT (1, INT_MAX, int, false, DONTCARE); + CHECK_SPRODUCT (1, INT_MIN, int, false, DONTCARE); + CHECK_PRODUCT (1, UINT_MAX, unsigned int, false, DONTCARE); + CHECK_PRODUCT (1u, INT_MIN, unsigned int, true, 1u * INT_MIN); + CHECK_PRODUCT (1u, INT_MAX, unsigned int, UINT_MAX < INT_MAX, 1u * INT_MAX); + CHECK_PRODUCT (INT_MAX, UINT_MAX, unsigned int, true, INT_MAX * UINT_MAX); + CHECK_PRODUCT (INT_MAX, ULONG_MAX, unsigned long int, true, + INT_MAX * ULONG_MAX); + CHECK_SPRODUCT (INT_MIN, LONG_MAX / INT_MIN - 1, long int, true, LONG_MIN); + CHECK_SPRODUCT (INT_MIN, LONG_MAX / INT_MIN, long int, false, DONTCARE); + CHECK_PRODUCT (INT_MIN, UINT_MAX, unsigned int, true, INT_MIN * UINT_MAX); + CHECK_PRODUCT (INT_MIN, ULONG_MAX, unsigned long int, true, + INT_MIN * ULONG_MAX); + { + long int result; + ASSERT (INT_MULTIPLY_WRAPV (INT_MAX, INT_MAX, &result) + == (LONG_MAX / INT_MAX < INT_MAX)); + ASSERT (INT_MULTIPLY_WRAPV (INT_MAX, INT_MAX, &result) + || result == INT_MAX * (long int) INT_MAX); + ASSERT (INT_MULTIPLY_WRAPV (INT_MIN, INT_MIN, &result) + || result == INT_MIN * (long int) INT_MIN); + } + +# ifdef LLONG_MAX + { + long long int result; + ASSERT (INT_MULTIPLY_WRAPV (LONG_MAX, LONG_MAX, &result) + == (LLONG_MAX / LONG_MAX < LONG_MAX)); + ASSERT (INT_MULTIPLY_WRAPV (LONG_MAX, LONG_MAX, &result) + || result == LONG_MAX * (long long int) LONG_MAX); + ASSERT (INT_MULTIPLY_WRAPV (LONG_MIN, LONG_MIN, &result) + || result == LONG_MIN * (long long int) LONG_MIN); + } +# endif + + #define CHECK_QUOTIENT(a, b, v) VERIFY (INT_DIVIDE_OVERFLOW (a, b) == (v)) + + CHECK_QUOTIENT (INT_MIN, -1L, + TYPE_TWOS_COMPLEMENT (long int) && INT_MIN == LONG_MIN); + CHECK_QUOTIENT (INT_MIN, UINT_MAX, false); + CHECK_QUOTIENT (INTMAX_MIN, UINTMAX_MAX, false); + CHECK_QUOTIENT (INTMAX_MIN, UINT_MAX, false); + CHECK_QUOTIENT (-11, 10u, true); + CHECK_QUOTIENT (-10, 10u, true); + CHECK_QUOTIENT (-9, 10u, false); + CHECK_QUOTIENT (11u, -10, true); + CHECK_QUOTIENT (10u, -10, true); + CHECK_QUOTIENT (9u, -10, false); + + #define CHECK_REMAINDER(a, b, v) VERIFY (INT_REMAINDER_OVERFLOW (a, b) == (v)) + + CHECK_REMAINDER (INT_MIN, -1L, + TYPE_TWOS_COMPLEMENT (long int) && INT_MIN == LONG_MIN); + CHECK_REMAINDER (-1, UINT_MAX, true); + CHECK_REMAINDER ((intmax_t) -1, UINTMAX_MAX, true); + CHECK_REMAINDER (INTMAX_MIN, UINT_MAX, + (INTMAX_MAX < UINT_MAX + && - (unsigned int) INTMAX_MIN % UINT_MAX != 0)); + CHECK_REMAINDER (INT_MIN, ULONG_MAX, INT_MIN % ULONG_MAX != 1); + CHECK_REMAINDER (1u, -1, false); + CHECK_REMAINDER (37*39u, -39, false); + CHECK_REMAINDER (37*39u + 1, -39, true); + CHECK_REMAINDER (37*39u - 1, -39, true); + CHECK_REMAINDER (LONG_MAX, -INT_MAX, false); return 0; } diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-isinf.c gettext-0.19.7/gettext-tools/gnulib-tests/test-isinf.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-isinf.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-isinf.c 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,246 @@ +/* Test of isinf() substitute. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Ben Pfaff, 2008, using Bruno Haible's code as a + template. */ + +#include + +#include + +/* isinf must be a macro. */ +#ifndef isinf +# error missing declaration +#endif + +#include +#include + +#include "infinity.h" +#include "macros.h" + +float zerof = 0.0f; +double zerod = 0.0; +long double zerol = 0.0L; + +static void +test_isinff () +{ + /* Zero. */ + ASSERT (!isinf (0.0f)); + /* Subnormal values. */ + ASSERT (!isinf (FLT_MIN / 2)); + ASSERT (!isinf (-FLT_MIN / 2)); + /* Finite values. */ + ASSERT (!isinf (3.141f)); + ASSERT (!isinf (3.141e30f)); + ASSERT (!isinf (3.141e-30f)); + ASSERT (!isinf (-2.718f)); + ASSERT (!isinf (-2.718e30f)); + ASSERT (!isinf (-2.718e-30f)); + ASSERT (!isinf (FLT_MAX)); + ASSERT (!isinf (-FLT_MAX)); + /* Infinite values. */ + ASSERT (isinf (Infinityf ())); + ASSERT (isinf (- Infinityf ())); + /* Quiet NaN. */ + ASSERT (!isinf (zerof / zerof)); +#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT + /* Signalling NaN. */ + { + #define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + typedef union { float value; unsigned int word[NWORDS]; } memory_float; + memory_float m; + m.value = zerof / zerof; +# if FLT_EXPBIT0_BIT > 0 + m.word[FLT_EXPBIT0_WORD] ^= (unsigned int) 1 << (FLT_EXPBIT0_BIT - 1); +# else + m.word[FLT_EXPBIT0_WORD + (FLT_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] + ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); +# endif + if (FLT_EXPBIT0_WORD < NWORDS / 2) + m.word[FLT_EXPBIT0_WORD + 1] |= (unsigned int) 1 << FLT_EXPBIT0_BIT; + else + m.word[0] |= (unsigned int) 1; + ASSERT (!isinf (m.value)); + #undef NWORDS + } +#endif +} + +static void +test_isinfd () +{ + /* Zero. */ + ASSERT (!isinf (0.0)); + /* Subnormal values. */ + ASSERT (!isinf (DBL_MIN / 2)); + ASSERT (!isinf (-DBL_MIN / 2)); + /* Finite values. */ + ASSERT (!isinf (3.141)); + ASSERT (!isinf (3.141e30)); + ASSERT (!isinf (3.141e-30)); + ASSERT (!isinf (-2.718)); + ASSERT (!isinf (-2.718e30)); + ASSERT (!isinf (-2.718e-30)); + ASSERT (!isinf (DBL_MAX)); + ASSERT (!isinf (-DBL_MAX)); + /* Infinite values. */ + ASSERT (isinf (Infinityd ())); + ASSERT (isinf (- Infinityd ())); + /* Quiet NaN. */ + ASSERT (!isinf (zerod / zerod)); +#if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT + /* Signalling NaN. */ + { + #define NWORDS \ + ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + typedef union { double value; unsigned int word[NWORDS]; } memory_double; + memory_double m; + m.value = zerod / zerod; +# if DBL_EXPBIT0_BIT > 0 + m.word[DBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (DBL_EXPBIT0_BIT - 1); +# else + m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] + ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); +# endif + m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] + |= (unsigned int) 1 << DBL_EXPBIT0_BIT; + ASSERT (!isinf (m.value)); + #undef NWORDS + } +#endif +} + +static void +test_isinfl () +{ + #define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + typedef union { unsigned int word[NWORDS]; long double value; } + memory_long_double; + + /* Zero. */ + ASSERT (!isinf (0.0L)); + /* Subnormal values. */ + ASSERT (!isinf (LDBL_MIN / 2)); + ASSERT (!isinf (-LDBL_MIN / 2)); + /* Finite values. */ + ASSERT (!isinf (3.141L)); + ASSERT (!isinf (3.141e30L)); + ASSERT (!isinf (3.141e-30L)); + ASSERT (!isinf (-2.718L)); + ASSERT (!isinf (-2.718e30L)); + ASSERT (!isinf (-2.718e-30L)); + ASSERT (!isinf (LDBL_MAX)); + ASSERT (!isinf (-LDBL_MAX)); + /* Infinite values. */ + ASSERT (isinf (Infinityl ())); + ASSERT (isinf (- Infinityl ())); + /* Quiet NaN. */ + ASSERT (!isinf (zerol / zerol)); + +#if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT + /* A bit pattern that is different from a Quiet NaN. With a bit of luck, + it's a Signalling NaN. */ + { +#if defined __powerpc__ && LDBL_MANT_DIG == 106 + /* This is PowerPC "double double", a pair of two doubles. Inf and Nan are + represented as the corresponding 64-bit IEEE values in the first double; + the second is ignored. Manipulate only the first double. */ + #undef NWORDS + #define NWORDS \ + ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +#endif + + memory_long_double m; + m.value = zerol / zerol; +# if LDBL_EXPBIT0_BIT > 0 + m.word[LDBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (LDBL_EXPBIT0_BIT - 1); +# else + m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] + ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); +# endif + m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] + |= (unsigned int) 1 << LDBL_EXPBIT0_BIT; + ASSERT (!isinf (m.value)); + } +#endif + +#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE +/* Representation of an 80-bit 'long double' as an initializer for a sequence + of 'unsigned int' words. */ +# ifdef WORDS_BIGENDIAN +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ + ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \ + (unsigned int) (mantlo) << 16 \ + } +# else +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { mantlo, manthi, exponent } +# endif + { /* Quiet NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; + ASSERT (!isinf (x.value)); + } + { + /* Signalling NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; + ASSERT (!isinf (x.value)); + } + /* isinf should return something for noncanonical values. */ + { /* Pseudo-NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; + ASSERT (isinf (x.value) || !isinf (x.value)); + } + { /* Pseudo-Infinity. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; + ASSERT (isinf (x.value) || !isinf (x.value)); + } + { /* Pseudo-Zero. */ + static memory_long_double x = + { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; + ASSERT (isinf (x.value) || !isinf (x.value)); + } + { /* Unnormalized number. */ + static memory_long_double x = + { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; + ASSERT (isinf (x.value) || !isinf (x.value)); + } + { /* Pseudo-Denormal. */ + static memory_long_double x = + { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; + ASSERT (isinf (x.value) || !isinf (x.value)); + } +#endif + + #undef NWORDS +} + +int +main () +{ + test_isinff (); + test_isinfd (); + test_isinfl (); + return 0; +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-isnan.c gettext-0.19.7/gettext-tools/gnulib-tests/test-isnan.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-isnan.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-isnan.c 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,225 @@ +/* Test of isnand() substitute. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Ben Pfaff , from code by Bruno + Haible . */ + +#include + +#include + +/* isnan must be a macro. */ +#ifndef isnan +# error missing declaration +#endif + +#include +#include + +#include "minus-zero.h" +#include "infinity.h" +#include "nan.h" +#include "macros.h" + +static void +test_float (void) +{ + /* Finite values. */ + ASSERT (!isnan (3.141f)); + ASSERT (!isnan (3.141e30f)); + ASSERT (!isnan (3.141e-30f)); + ASSERT (!isnan (-2.718f)); + ASSERT (!isnan (-2.718e30f)); + ASSERT (!isnan (-2.718e-30f)); + ASSERT (!isnan (0.0f)); + ASSERT (!isnan (minus_zerof)); + /* Infinite values. */ + ASSERT (!isnan (Infinityf ())); + ASSERT (!isnan (- Infinityf ())); + /* Quiet NaN. */ + ASSERT (isnan (NaNf ())); +#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT + /* Signalling NaN. */ + { + #define NWORDSF \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + typedef union { float value; unsigned int word[NWORDSF]; } memory_float; + memory_float m; + m.value = NaNf (); +# if FLT_EXPBIT0_BIT > 0 + m.word[FLT_EXPBIT0_WORD] ^= (unsigned int) 1 << (FLT_EXPBIT0_BIT - 1); +# else + m.word[FLT_EXPBIT0_WORD + (FLT_EXPBIT0_WORD < NWORDSF / 2 ? 1 : - 1)] + ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); +# endif + if (FLT_EXPBIT0_WORD < NWORDSF / 2) + m.word[FLT_EXPBIT0_WORD + 1] |= (unsigned int) 1 << FLT_EXPBIT0_BIT; + else + m.word[0] |= (unsigned int) 1; + ASSERT (isnan (m.value)); + } +#endif +} + +static void +test_double (void) +{ + /* Finite values. */ + ASSERT (!isnan (3.141)); + ASSERT (!isnan (3.141e30)); + ASSERT (!isnan (3.141e-30)); + ASSERT (!isnan (-2.718)); + ASSERT (!isnan (-2.718e30)); + ASSERT (!isnan (-2.718e-30)); + ASSERT (!isnan (0.0)); + ASSERT (!isnan (minus_zerod)); + /* Infinite values. */ + ASSERT (!isnan (Infinityd ())); + ASSERT (!isnan (- Infinityd ())); + /* Quiet NaN. */ + ASSERT (isnan (NaNd ())); +#if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT + /* Signalling NaN. */ + { + #define NWORDSD \ + ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + typedef union { double value; unsigned int word[NWORDSD]; } memory_double; + memory_double m; + m.value = NaNd (); +# if DBL_EXPBIT0_BIT > 0 + m.word[DBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (DBL_EXPBIT0_BIT - 1); +# else + m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDSD / 2 ? 1 : - 1)] + ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); +# endif + m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDSD / 2 ? 1 : - 1)] + |= (unsigned int) 1 << DBL_EXPBIT0_BIT; + ASSERT (isnan (m.value)); + } +#endif +} + +static void +test_long_double (void) +{ + #define NWORDSL \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + typedef union { unsigned int word[NWORDSL]; long double value; } + memory_long_double; + + /* Finite values. */ + ASSERT (!isnan (3.141L)); + ASSERT (!isnan (3.141e30L)); + ASSERT (!isnan (3.141e-30L)); + ASSERT (!isnan (-2.718L)); + ASSERT (!isnan (-2.718e30L)); + ASSERT (!isnan (-2.718e-30L)); + ASSERT (!isnan (0.0L)); + ASSERT (!isnan (minus_zerol)); + /* Infinite values. */ + ASSERT (!isnan (Infinityl ())); + ASSERT (!isnan (- Infinityl ())); + /* Quiet NaN. */ + ASSERT (isnan (NaNl ())); + +#if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT + /* A bit pattern that is different from a Quiet NaN. With a bit of luck, + it's a Signalling NaN. */ + { +#if defined __powerpc__ && LDBL_MANT_DIG == 106 + /* This is PowerPC "double double", a pair of two doubles. Inf and Nan are + represented as the corresponding 64-bit IEEE values in the first double; + the second is ignored. Manipulate only the first double. */ + #undef NWORDSL + #define NWORDSL \ + ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +#endif + + memory_long_double m; + m.value = NaNl (); +# if LDBL_EXPBIT0_BIT > 0 + m.word[LDBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (LDBL_EXPBIT0_BIT - 1); +# else + m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDSL / 2 ? 1 : - 1)] + ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); +# endif + m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDSL / 2 ? 1 : - 1)] + |= (unsigned int) 1 << LDBL_EXPBIT0_BIT; + ASSERT (isnan (m.value)); + } +#endif + +#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE +/* Representation of an 80-bit 'long double' as an initializer for a sequence + of 'unsigned int' words. */ +# ifdef WORDS_BIGENDIAN +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ + ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \ + (unsigned int) (mantlo) << 16 \ + } +# else +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { mantlo, manthi, exponent } +# endif + { /* Quiet NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; + ASSERT (isnan (x.value)); + } + { + /* Signalling NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; + ASSERT (isnan (x.value)); + } + /* isnan should return something for noncanonical values. */ + { /* Pseudo-NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; + ASSERT (isnan (x.value) || !isnan (x.value)); + } + { /* Pseudo-Infinity. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; + ASSERT (isnan (x.value) || !isnan (x.value)); + } + { /* Pseudo-Zero. */ + static memory_long_double x = + { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; + ASSERT (isnan (x.value) || !isnan (x.value)); + } + { /* Unnormalized number. */ + static memory_long_double x = + { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; + ASSERT (isnan (x.value) || !isnan (x.value)); + } + { /* Pseudo-Denormal. */ + static memory_long_double x = + { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; + ASSERT (isnan (x.value) || !isnan (x.value)); + } +#endif +} + +int +main () +{ + test_float (); + test_double (); + test_long_double (); + return 0; +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-isnand.c gettext-0.19.7/gettext-tools/gnulib-tests/test-isnand.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-isnand.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-isnand.c 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,21 @@ +/* Test of isnand() substitute. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +#include + +#include "test-isnand.h" diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-isnand.h gettext-0.19.7/gettext-tools/gnulib-tests/test-isnand.h --- gettext-0.19.6/gettext-tools/gnulib-tests/test-isnand.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-isnand.h 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,63 @@ +/* Test of isnand() substitute. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2007. */ + +#include + +#include "minus-zero.h" +#include "infinity.h" +#include "nan.h" +#include "macros.h" + +int +main () +{ + /* Finite values. */ + ASSERT (!isnand (3.141)); + ASSERT (!isnand (3.141e30)); + ASSERT (!isnand (3.141e-30)); + ASSERT (!isnand (-2.718)); + ASSERT (!isnand (-2.718e30)); + ASSERT (!isnand (-2.718e-30)); + ASSERT (!isnand (0.0)); + ASSERT (!isnand (minus_zerod)); + /* Infinite values. */ + ASSERT (!isnand (Infinityd ())); + ASSERT (!isnand (- Infinityd ())); + /* Quiet NaN. */ + ASSERT (isnand (NaNd ())); +#if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT + /* Signalling NaN. */ + { + #define NWORDS \ + ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + typedef union { double value; unsigned int word[NWORDS]; } memory_double; + memory_double m; + m.value = NaNd (); +# if DBL_EXPBIT0_BIT > 0 + m.word[DBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (DBL_EXPBIT0_BIT - 1); +# else + m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] + ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); +# endif + m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] + |= (unsigned int) 1 << DBL_EXPBIT0_BIT; + ASSERT (isnand (m.value)); + } +#endif + return 0; +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-isnand-nolibm.c gettext-0.19.7/gettext-tools/gnulib-tests/test-isnand-nolibm.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-isnand-nolibm.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-isnand-nolibm.c 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,21 @@ +/* Test of isnand() substitute. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +#include "isnand-nolibm.h" + +#include "test-isnand.h" diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-isnanf.c gettext-0.19.7/gettext-tools/gnulib-tests/test-isnanf.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-isnanf.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-isnanf.c 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,21 @@ +/* Test of isnanf() substitute. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +#include + +#include "test-isnanf.h" diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-isnanf.h gettext-0.19.7/gettext-tools/gnulib-tests/test-isnanf.h --- gettext-0.19.6/gettext-tools/gnulib-tests/test-isnanf.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-isnanf.h 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,65 @@ +/* Test of isnanf() substitute. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2007. */ + +#include + +#include "minus-zero.h" +#include "infinity.h" +#include "nan.h" +#include "macros.h" + +int +main () +{ + /* Finite values. */ + ASSERT (!isnanf (3.141f)); + ASSERT (!isnanf (3.141e30f)); + ASSERT (!isnanf (3.141e-30f)); + ASSERT (!isnanf (-2.718f)); + ASSERT (!isnanf (-2.718e30f)); + ASSERT (!isnanf (-2.718e-30f)); + ASSERT (!isnanf (0.0f)); + ASSERT (!isnanf (minus_zerof)); + /* Infinite values. */ + ASSERT (!isnanf (Infinityf ())); + ASSERT (!isnanf (- Infinityf ())); + /* Quiet NaN. */ + ASSERT (isnanf (NaNf ())); +#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT + /* Signalling NaN. */ + { + #define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + typedef union { float value; unsigned int word[NWORDS]; } memory_float; + memory_float m; + m.value = NaNf (); +# if FLT_EXPBIT0_BIT > 0 + m.word[FLT_EXPBIT0_WORD] ^= (unsigned int) 1 << (FLT_EXPBIT0_BIT - 1); +# else + m.word[FLT_EXPBIT0_WORD + (FLT_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] + ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); +# endif + if (FLT_EXPBIT0_WORD < NWORDS / 2) + m.word[FLT_EXPBIT0_WORD + 1] |= (unsigned int) 1 << FLT_EXPBIT0_BIT; + else + m.word[0] |= (unsigned int) 1; + ASSERT (isnanf (m.value)); + } +#endif + return 0; +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-isnanf-nolibm.c gettext-0.19.7/gettext-tools/gnulib-tests/test-isnanf-nolibm.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-isnanf-nolibm.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-isnanf-nolibm.c 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,21 @@ +/* Test of isnanf() substitute. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +#include "isnanf-nolibm.h" + +#include "test-isnanf.h" diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-isnanl.c gettext-0.19.7/gettext-tools/gnulib-tests/test-isnanl.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-isnanl.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-isnanl.c 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,23 @@ +/* Test of isnanl() substitute. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2007. */ + +#include + +#include + +#include "test-isnanl.h" diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-isnanl.h gettext-0.19.7/gettext-tools/gnulib-tests/test-isnanl.h --- gettext-0.19.6/gettext-tools/gnulib-tests/test-isnanl.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-isnanl.h 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,130 @@ +/* Test of isnanl() substitute. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2007. */ + +#include +#include + +#include "minus-zero.h" +#include "infinity.h" +#include "nan.h" +#include "macros.h" + +int +main () +{ + #define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + typedef union { unsigned int word[NWORDS]; long double value; } + memory_long_double; + + /* Finite values. */ + ASSERT (!isnanl (3.141L)); + ASSERT (!isnanl (3.141e30L)); + ASSERT (!isnanl (3.141e-30L)); + ASSERT (!isnanl (-2.718L)); + ASSERT (!isnanl (-2.718e30L)); + ASSERT (!isnanl (-2.718e-30L)); + ASSERT (!isnanl (0.0L)); + ASSERT (!isnanl (minus_zerol)); + /* Infinite values. */ + ASSERT (!isnanl (Infinityl ())); + ASSERT (!isnanl (- Infinityl ())); + /* Quiet NaN. */ + ASSERT (isnanl (NaNl ())); + +#if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT + /* A bit pattern that is different from a Quiet NaN. With a bit of luck, + it's a Signalling NaN. */ + { +#if defined __powerpc__ && LDBL_MANT_DIG == 106 + /* This is PowerPC "double double", a pair of two doubles. Inf and Nan are + represented as the corresponding 64-bit IEEE values in the first double; + the second is ignored. Manipulate only the first double. */ + #undef NWORDS + #define NWORDS \ + ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +#endif + + memory_long_double m; + m.value = NaNl (); +# if LDBL_EXPBIT0_BIT > 0 + m.word[LDBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (LDBL_EXPBIT0_BIT - 1); +# else + m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] + ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); +# endif + m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] + |= (unsigned int) 1 << LDBL_EXPBIT0_BIT; + ASSERT (isnanl (m.value)); + } +#endif + +#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE +/* Representation of an 80-bit 'long double' as an initializer for a sequence + of 'unsigned int' words. */ +# ifdef WORDS_BIGENDIAN +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ + ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \ + (unsigned int) (mantlo) << 16 \ + } +# else +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { mantlo, manthi, exponent } +# endif + { /* Quiet NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; + ASSERT (isnanl (x.value)); + } + { + /* Signalling NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; + ASSERT (isnanl (x.value)); + } + /* isnanl should return something for noncanonical values. */ + { /* Pseudo-NaN. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; + ASSERT (isnanl (x.value) || !isnanl (x.value)); + } + { /* Pseudo-Infinity. */ + static memory_long_double x = + { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; + ASSERT (isnanl (x.value) || !isnanl (x.value)); + } + { /* Pseudo-Zero. */ + static memory_long_double x = + { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; + ASSERT (isnanl (x.value) || !isnanl (x.value)); + } + { /* Unnormalized number. */ + static memory_long_double x = + { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; + ASSERT (isnanl (x.value) || !isnanl (x.value)); + } + { /* Pseudo-Denormal. */ + static memory_long_double x = + { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; + ASSERT (isnanl (x.value) || !isnanl (x.value)); + } +#endif + + return 0; +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-isnanl-nolibm.c gettext-0.19.7/gettext-tools/gnulib-tests/test-isnanl-nolibm.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-isnanl-nolibm.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-isnanl-nolibm.c 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,23 @@ +/* Test of isnanl() substitute. + Copyright (C) 2007, 2009-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2007. */ + +#include + +#include "isnanl-nolibm.h" + +#include "test-isnanl.h" diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-log10.c gettext-0.19.7/gettext-tools/gnulib-tests/test-log10.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-log10.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-log10.c 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,51 @@ +/* Test of log10() function. + Copyright (C) 2010-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2010. */ + +#include + +#include + +#include "signature.h" +SIGNATURE_CHECK (log10, double, (double)); + +#include + +#include "minus-zero.h" +#include "macros.h" + +#define DOUBLE double +#define HUGEVAL HUGE_VAL +#define L_(literal) literal +#define MANT_DIG DBL_MANT_DIG +#define MINUS_ZERO minus_zerod +#define LOG10 log10 +#define RANDOM randomd +#include "test-log10.h" + +int +main () +{ + /* A particular value. */ + x = 0.6; + y = log10 (x); + ASSERT (y >= -0.2218487497 && y <= -0.2218487496); + + test_function (); + + return 0; +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-log10.h gettext-0.19.7/gettext-tools/gnulib-tests/test-log10.h --- gettext-0.19.6/gettext-tools/gnulib-tests/test-log10.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-log10.h 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,104 @@ +/* Test of log10*() function family. + Copyright (C) 2012-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +static void +test_function (void) +{ + int i; + int j; + const DOUBLE TWO_MANT_DIG = + /* Assume MANT_DIG <= 5 * 31. + Use the identity + n = floor(n/5) + floor((n+1)/5) + ... + floor((n+4)/5). */ + (DOUBLE) (1U << ((MANT_DIG - 1) / 5)) + * (DOUBLE) (1U << ((MANT_DIG - 1 + 1) / 5)) + * (DOUBLE) (1U << ((MANT_DIG - 1 + 2) / 5)) + * (DOUBLE) (1U << ((MANT_DIG - 1 + 3) / 5)) + * (DOUBLE) (1U << ((MANT_DIG - 1 + 4) / 5)); + + /* Pole. */ + { + DOUBLE z = LOG10 (L_(0.0)); + ASSERT (z == - HUGEVAL); + } + { + DOUBLE z = LOG10 (MINUS_ZERO); + ASSERT (z == - HUGEVAL); + } + + /* Randomized tests. */ + { + /* Error bound, in ulps. */ + const DOUBLE err_bound = + (sizeof (DOUBLE) > sizeof (double) ? +#if defined __i386__ && defined __FreeBSD__ + /* On FreeBSD/x86 6.4, the 'long double' type really has only 53 bits of + precision in the compiler but 64 bits of precision at runtime. See + . + The compiler has truncated all 'long double' literals in log10l.c to + 53 bits of precision. */ + L_(18.0) +#else + L_(3.0) +#endif + : L_(3.0)); + + for (i = 0; i < SIZEOF (RANDOM); i++) + { + DOUBLE x = L_(16.0) * RANDOM[i] + L_(1.0); /* 1.0 <= x <= 17.0 */ + DOUBLE y = LOG10 (x); + DOUBLE z = LOG10 (L_(1.0) / x); + DOUBLE err = y + z; + ASSERT (y >= L_(0.0)); + ASSERT (z <= L_(0.0)); + ASSERT (err > - err_bound / TWO_MANT_DIG + && err < err_bound / TWO_MANT_DIG); + } + } + + { + /* Error bound, in ulps. */ + const DOUBLE err_bound = + (sizeof (DOUBLE) > sizeof (double) ? +#if defined __i386__ && defined __FreeBSD__ + /* On FreeBSD/x86 6.4, the 'long double' type really has only 53 bits of + precision in the compiler but 64 bits of precision at runtime. See + . + The compiler has truncated all 'long double' literals in log10l.c to + 53 bits of precision. */ + L_(38.0) +#else + L_(5.0) +#endif + : L_(5.0)); + + for (i = 0; i < SIZEOF (RANDOM) / 5; i++) + for (j = 0; j < SIZEOF (RANDOM) / 5; j++) + { + DOUBLE x = L_(17.0) / (L_(16.0) - L_(15.0) * RANDOM[i]) - L_(1.0); + DOUBLE y = L_(17.0) / (L_(16.0) - L_(15.0) * RANDOM[j]) - L_(1.0); + /* 1/16 <= x,y <= 16 */ + DOUBLE z = L_(1.0) / (x * y); + /* Approximately x * y * z = 1. */ + DOUBLE err = LOG10 (x) + LOG10 (y) + LOG10 (z); + ASSERT (err > - err_bound / TWO_MANT_DIG + && err < err_bound / TWO_MANT_DIG); + } + } +} + +volatile DOUBLE x; +DOUBLE y; diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-math.c gettext-0.19.7/gettext-tools/gnulib-tests/test-math.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-math.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-math.c 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,104 @@ +/* Test of substitute. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2007. */ + +#include + +#include + +#ifndef NAN +# error NAN should be defined +choke me +#endif + +#ifndef HUGE_VALF +# error HUGE_VALF should be defined +choke me +#endif + +#ifndef HUGE_VAL +# error HUGE_VAL should be defined +choke me +#endif + +#ifndef HUGE_VALL +# error HUGE_VALL should be defined +choke me +#endif + +#ifndef FP_ILOGB0 +# error FP_ILOGB0 should be defined +choke me +#endif + +#ifndef FP_ILOGBNAN +# error FP_ILOGBNAN should be defined +choke me +#endif + +#include + +#include "macros.h" + +#if 0 +/* Check that NAN expands into a constant expression. */ +static float n = NAN; +#endif + +/* Compare two numbers with ==. + This is a separate function because IRIX 6.5 "cc -O" miscompiles an + 'x == x' test. */ +static int +numeric_equalf (float x, float y) +{ + return x == y; +} +static int +numeric_equald (double x, double y) +{ + return x == y; +} +static int +numeric_equall (long double x, long double y) +{ + return x == y; +} + +int +main (void) +{ + double d = NAN; + double zero = 0.0; + ASSERT (!numeric_equald (d, d)); + + d = HUGE_VAL; + ASSERT (numeric_equald (d, 1.0 / zero)); + + ASSERT (numeric_equalf (HUGE_VALF, HUGE_VALF + HUGE_VALF)); + + ASSERT (numeric_equald (HUGE_VAL, HUGE_VAL + HUGE_VAL)); + + ASSERT (numeric_equall (HUGE_VALL, HUGE_VALL + HUGE_VALL)); + + /* Check the value of FP_ILOGB0. */ + ASSERT (FP_ILOGB0 == INT_MIN || FP_ILOGB0 == - INT_MAX); + + /* Check the value of FP_ILOGBNAN. */ + ASSERT (FP_ILOGBNAN == INT_MIN || FP_ILOGBNAN == INT_MAX); + + return 0; +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-pow.c gettext-0.19.7/gettext-tools/gnulib-tests/test-pow.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-pow.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-pow.c 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,42 @@ +/* Test of pow() function. + Copyright (C) 2010-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2010. */ + +#include + +#include + +#include "signature.h" +SIGNATURE_CHECK (pow, double, (double, double)); + +#include "macros.h" + +volatile double x; +volatile double y; +double z; + +int +main () +{ + /* A particular value. */ + x = 243.0; + y = 1.2; + z = pow (x, y); + ASSERT (z >= 728.9999999 && z <= 729.0000001); + + return 0; +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-quotearg-simple.c gettext-0.19.7/gettext-tools/gnulib-tests/test-quotearg-simple.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-quotearg-simple.c 2015-09-11 03:03:58.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-quotearg-simple.c 2015-12-27 23:08:33.000000000 +0000 @@ -58,6 +58,28 @@ { "''", "'1'", 3, "'simple'", "' \t\n'\\''\"\033?""?/\\'", "'a:b'", "'a\\b'", "'" LQ RQ "'", "'" LQ RQ "'" } }, + /* shell_escape_quoting_style */ + { { "''", "''$'\\0''1'$'\\0'", 15, "simple", + "' '$'\\t\\n'\\''\"'$'\\033''?""?/\\'", "a:b", + "'a\\b'", "''$'" LQ_ENC RQ_ENC "'", LQ RQ }, + { "''", "''$'\\0''1'$'\\0'", 15, "simple", + "' '$'\\t\\n'\\''\"'$'\\033''?""?/\\'", "a:b", + "'a\\b'", "''$'" LQ_ENC RQ_ENC "'", LQ RQ }, + { "''", "''$'\\0''1'$'\\0'", 15, "simple", + "' '$'\\t\\n'\\''\"'$'\\033''?""?/\\'", "'a:b'", + "'a\\b'", "''$'" LQ_ENC RQ_ENC "'", LQ RQ } }, + + /* shell_escape_always_quoting_style */ + { { "''", "''$'\\0''1'$'\\0'", 15, "'simple'", + "' '$'\\t\\n'\\''\"'$'\\033''?""?/\\'", "'a:b'", + "'a\\b'", "''$'" LQ_ENC RQ_ENC "'", "'" LQ RQ "'" }, + { "''", "''$'\\0''1'$'\\0'", 15, "'simple'", + "' '$'\\t\\n'\\''\"'$'\\033''?""?/\\'", "'a:b'", + "'a\\b'", "''$'" LQ_ENC RQ_ENC "'", "'" LQ RQ "'" }, + { "''", "''$'\\0''1'$'\\0'", 15, "'simple'", + "' '$'\\t\\n'\\''\"'$'\\033''?""?/\\'", "'a:b'", + "'a\\b'", "''$'" LQ_ENC RQ_ENC "'", "'" LQ RQ "'" } }, + /* c_quoting_style */ { { "\"\"", "\"\\0001\\0\"", 9, "\"simple\"", "\" \\t\\n'\\\"\\033?""?/\\\\\"", "\"a:b\"", "\"a\\\\b\"", diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-signbit.c gettext-0.19.7/gettext-tools/gnulib-tests/test-signbit.c --- gettext-0.19.6/gettext-tools/gnulib-tests/test-signbit.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-signbit.c 2015-12-27 23:08:33.000000000 +0000 @@ -0,0 +1,187 @@ +/* Test of signbit() substitute. + Copyright (C) 2007-2015 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2007. */ + +#include + +#include + +/* signbit must be a macro. */ +#ifndef signbit +# error missing declaration +#endif + +#include +#include + +#include "minus-zero.h" +#include "infinity.h" +#include "macros.h" + +float zerof = 0.0f; +double zerod = 0.0; +long double zerol = 0.0L; + +static void +test_signbitf () +{ + /* Finite values. */ + ASSERT (!signbit (3.141f)); + ASSERT (!signbit (3.141e30f)); + ASSERT (!signbit (3.141e-30f)); + ASSERT (signbit (-2.718f)); + ASSERT (signbit (-2.718e30f)); + ASSERT (signbit (-2.718e-30f)); + /* Zeros. */ + ASSERT (!signbit (0.0f)); + if (1.0f / minus_zerof < 0) + ASSERT (signbit (minus_zerof)); + else + ASSERT (!signbit (minus_zerof)); + /* Infinite values. */ + ASSERT (!signbit (Infinityf ())); + ASSERT (signbit (- Infinityf ())); + /* Quiet NaN. */ + (void) signbit (zerof / zerof); +#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT + /* Signalling NaN. */ + { + #define NWORDS \ + ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + typedef union { float value; unsigned int word[NWORDS]; } memory_float; + memory_float m; + m.value = zerof / zerof; +# if FLT_EXPBIT0_BIT > 0 + m.word[FLT_EXPBIT0_WORD] ^= (unsigned int) 1 << (FLT_EXPBIT0_BIT - 1); +# else + m.word[FLT_EXPBIT0_WORD + (FLT_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] + ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); +# endif + if (FLT_EXPBIT0_WORD < NWORDS / 2) + m.word[FLT_EXPBIT0_WORD + 1] |= (unsigned int) 1 << FLT_EXPBIT0_BIT; + else + m.word[0] |= (unsigned int) 1; + (void) signbit (m.value); + #undef NWORDS + } +#endif +} + +static void +test_signbitd () +{ + /* Finite values. */ + ASSERT (!signbit (3.141)); + ASSERT (!signbit (3.141e30)); + ASSERT (!signbit (3.141e-30)); + ASSERT (signbit (-2.718)); + ASSERT (signbit (-2.718e30)); + ASSERT (signbit (-2.718e-30)); + /* Zeros. */ + ASSERT (!signbit (0.0)); + if (1.0 / minus_zerod < 0) + ASSERT (signbit (minus_zerod)); + else + ASSERT (!signbit (minus_zerod)); + /* Infinite values. */ + ASSERT (!signbit (Infinityd ())); + ASSERT (signbit (- Infinityd ())); + /* Quiet NaN. */ + (void) signbit (zerod / zerod); +#if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT + /* Signalling NaN. */ + { + #define NWORDS \ + ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + typedef union { double value; unsigned int word[NWORDS]; } memory_double; + memory_double m; + m.value = zerod / zerod; +# if DBL_EXPBIT0_BIT > 0 + m.word[DBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (DBL_EXPBIT0_BIT - 1); +# else + m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] + ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); +# endif + m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] + |= (unsigned int) 1 << DBL_EXPBIT0_BIT; + (void) signbit (m.value); + #undef NWORDS + } +#endif +} + +static void +test_signbitl () +{ + /* Finite values. */ + ASSERT (!signbit (3.141L)); + ASSERT (!signbit (3.141e30L)); + ASSERT (!signbit (3.141e-30L)); + ASSERT (signbit (-2.718L)); + ASSERT (signbit (-2.718e30L)); + ASSERT (signbit (-2.718e-30L)); + /* Zeros. */ + ASSERT (!signbit (0.0L)); + if (1.0L / minus_zerol < 0) + ASSERT (signbit (minus_zerol)); + else + ASSERT (!signbit (minus_zerol)); + /* Infinite values. */ + ASSERT (!signbit (Infinityl ())); + ASSERT (signbit (- Infinityl ())); + /* Quiet NaN. */ + (void) signbit (zerol / zerol); +#if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT + /* Signalling NaN. */ + { + #define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + typedef union { long double value; unsigned int word[NWORDS]; } memory_long_double; + +#if defined __powerpc__ && LDBL_MANT_DIG == 106 + /* This is PowerPC "double double", a pair of two doubles. Inf and Nan are + represented as the corresponding 64-bit IEEE values in the first double; + the second is ignored. Manipulate only the first double. */ + #undef NWORDS + #define NWORDS \ + ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) +#endif + + memory_long_double m; + m.value = zerol / zerol; +# if LDBL_EXPBIT0_BIT > 0 + m.word[LDBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (LDBL_EXPBIT0_BIT - 1); +# else + m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] + ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); +# endif + m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] + |= (unsigned int) 1 << LDBL_EXPBIT0_BIT; + (void) signbit (m.value); + #undef NWORDS + } +#endif +} + +int +main () +{ + test_signbitf (); + test_signbitd (); + test_signbitl (); + return 0; +} diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-term-ostream-xterm gettext-0.19.7/gettext-tools/gnulib-tests/test-term-ostream-xterm --- gettext-0.19.6/gettext-tools/gnulib-tests/test-term-ostream-xterm 2015-08-21 07:18:28.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-term-ostream-xterm 2015-12-23 07:09:53.000000000 +0000 @@ -23,6 +23,7 @@ || ${DIFF} ${srcdir}/test-term-ostream-xterm-xf86-v32.out out > /dev/null \ || ${DIFF} ${srcdir}/test-term-ostream-xterm-basic.out out > /dev/null \ || ${DIFF} ${srcdir}/test-term-ostream-xterm-basic-italic.out out > /dev/null \ +|| ${DIFF} ${srcdir}/test-term-ostream-xterm-freebsd101.out out > /dev/null \ || ${DIFF} ${srcdir}/test-term-ostream-xterm-8bit.out out > /dev/null \ || ${DIFF} ${srcdir}/test-term-ostream-xterm-linux-debian.out out > /dev/null \ || ${DIFF} ${srcdir}/test-term-ostream-xterm-linux-mandriva.out out > /dev/null \ diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/test-term-ostream-xterm-freebsd101.out gettext-0.19.7/gettext-tools/gnulib-tests/test-term-ostream-xterm-freebsd101.out --- gettext-0.19.6/gettext-tools/gnulib-tests/test-term-ostream-xterm-freebsd101.out 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/test-term-ostream-xterm-freebsd101.out 2015-12-23 07:08:10.000000000 +0000 @@ -0,0 +1,131 @@ +Colors (foreground/background): + |black |blue |green |cyan |red |magenta|yellow |white |default +black | Words | Words | Words | Words | Words | Words | Words | Words | Words  +blue | Words | Words | Words | Words | Words | Words | Words | Words | Words  +green | Words | Words | Words | Words | Words | Words | Words | Words | Words  +cyan | Words | Words | Words | Words | Words | Words | Words | Words | Words  +red | Words | Words | Words | Words | Words | Words | Words | Words | Words  +magenta| Words | Words | Words | Words | Words | Words | Words | Words | Words  +yellow | Words | Words | Words | Words | Words | Words | Words | Words | Words  +white | Words | Words | Words | Words | Words | Words | Words | Words | Words  +default| Words | Words | Words | Words | Words | Words | Words | Words | Words + +Colors (hue/saturation): +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   + +Weights: +normal, bold, default + +Postures: +normal, italic, default + +Text decorations: +normal, underlined, default + diff -Nru gettext-0.19.6/gettext-tools/gnulib-tests/uniname/test-uninames.c gettext-0.19.7/gettext-tools/gnulib-tests/uniname/test-uninames.c --- gettext-0.19.6/gettext-tools/gnulib-tests/uniname/test-uninames.c 2015-09-11 03:03:59.000000000 +0000 +++ gettext-0.19.7/gettext-tools/gnulib-tests/uniname/test-uninames.c 2015-12-27 23:08:34.000000000 +0000 @@ -62,8 +62,6 @@ while (fgets (line, sizeof line, stream)) { - int n; - int c; char *p; char *comment; unsigned int i; @@ -117,7 +115,6 @@ static void fill_aliases (const char *namealiases_filename) { - int i; FILE *stream; char *field0; char *field1; @@ -133,8 +130,6 @@ while (fgets (line, sizeof line, stream)) { - int n; - int c; char *p; char *comment; unsigned int uc; @@ -354,11 +349,11 @@ { if (result == UNINAME_INVALID) fprintf (stderr, "inverse name lookup of \"%s\" failed\n", - unicode_aliases[i]); + unicode_aliases[i].name); else fprintf (stderr, "inverse name lookup of \"%s\" returned 0x%04X\n", - unicode_aliases[i], result); + unicode_aliases[i].name, result); error = 1; } } diff -Nru gettext-0.19.6/gettext-tools/its/appdata.its gettext-0.19.7/gettext-tools/its/appdata.its --- gettext-0.19.6/gettext-tools/its/appdata.its 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/its/appdata.its 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,10 @@ + + + + + diff -Nru gettext-0.19.6/gettext-tools/its/appdata.loc gettext-0.19.7/gettext-tools/its/appdata.loc --- gettext-0.19.6/gettext-tools/its/appdata.loc 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/its/appdata.loc 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,6 @@ + + + + + + diff -Nru gettext-0.19.6/gettext-tools/its/glade1.its gettext-0.19.7/gettext-tools/its/glade1.its --- gettext-0.19.6/gettext-tools/its/glade1.its 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/its/glade1.its 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,18 @@ + + + + + + + + diff -Nru gettext-0.19.6/gettext-tools/its/glade2.its gettext-0.19.7/gettext-tools/its/glade2.its --- gettext-0.19.6/gettext-tools/its/glade2.its 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/its/glade2.its 2015-12-23 07:08:27.000000000 +0000 @@ -0,0 +1,27 @@ + + + + + + + + + + + + + diff -Nru gettext-0.19.6/gettext-tools/its/glade.loc gettext-0.19.7/gettext-tools/its/glade.loc --- gettext-0.19.6/gettext-tools/its/glade.loc 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/its/glade.loc 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff -Nru gettext-0.19.6/gettext-tools/its/gsettings.its gettext-0.19.7/gettext-tools/its/gsettings.its --- gettext-0.19.6/gettext-tools/its/gsettings.its 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/its/gsettings.its 2015-12-23 07:08:27.000000000 +0000 @@ -0,0 +1,15 @@ + + + + + + + + + + + + + diff -Nru gettext-0.19.6/gettext-tools/its/gsettings.loc gettext-0.19.7/gettext-tools/its/gsettings.loc --- gettext-0.19.6/gettext-tools/its/gsettings.loc 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/its/gsettings.loc 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,6 @@ + + + + + + diff -Nru gettext-0.19.6/gettext-tools/its/gtkbuilder.its gettext-0.19.7/gettext-tools/its/gtkbuilder.its --- gettext-0.19.6/gettext-tools/its/gtkbuilder.its 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/its/gtkbuilder.its 2015-12-23 07:08:27.000000000 +0000 @@ -0,0 +1,17 @@ + + + + + + + + + + + + diff -Nru gettext-0.19.6/gettext-tools/its/Makefile.am gettext-0.19.7/gettext-tools/its/Makefile.am --- gettext-0.19.6/gettext-tools/its/Makefile.am 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/its/Makefile.am 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,24 @@ +## Makefile for the gettext-tools/its subdirectory of GNU gettext +## Copyright (C) 2015 Free Software Foundation, Inc. +## +## This program is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 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 General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see . + +## Process this file with automake to produce Makefile.in. + +AUTOMAKE_OPTIONS = 1.2 gnits + +pkgdatadir = $(datadir)/gettext +itsdir = $(pkgdatadir)$(PACKAGE_SUFFIX)/its +dist_its_DATA = glade.loc glade1.its glade2.its gtkbuilder.its \ +gsettings.loc gsettings.its appdata.loc appdata.its diff -Nru gettext-0.19.6/gettext-tools/its/Makefile.in gettext-0.19.7/gettext-tools/its/Makefile.in --- gettext-0.19.6/gettext-tools/its/Makefile.in 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/its/Makefile.in 2015-12-27 23:09:41.000000000 +0000 @@ -0,0 +1,1985 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = its +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = \ + $(top_srcdir)/libgettextpo/gnulib-m4/gnulib-comp.m4 \ + $(top_srcdir)/libgrep/gnulib-m4/gnulib-comp.m4 \ + $(top_srcdir)/libgrep/gnulib-m4/localeconv.m4 \ + $(top_srcdir)/libgrep/gnulib-m4/mbrlen.m4 \ + $(top_srcdir)/libgrep/gnulib-m4/nl_langinfo.m4 \ + $(top_srcdir)/libgrep/gnulib-m4/regex.m4 \ + $(top_srcdir)/gnulib-m4/00gnulib.m4 \ + $(top_srcdir)/gnulib-m4/absolute-header.m4 \ + $(top_srcdir)/gnulib-m4/acl.m4 \ + $(top_srcdir)/gnulib-m4/alloca.m4 \ + $(top_srcdir)/gnulib-m4/ansi-c++.m4 \ + $(top_srcdir)/gnulib-m4/asm-underscore.m4 \ + $(top_srcdir)/gnulib-m4/atexit.m4 \ + $(top_srcdir)/gnulib-m4/backupfile.m4 \ + $(top_srcdir)/gnulib-m4/bison-i18n.m4 \ + $(top_srcdir)/gnulib-m4/btowc.m4 \ + $(top_srcdir)/gnulib-m4/byteswap.m4 \ + $(top_srcdir)/gnulib-m4/canonicalize.m4 \ + $(top_srcdir)/gnulib-m4/check-math-lib.m4 \ + $(top_srcdir)/gnulib-m4/close.m4 \ + $(top_srcdir)/gnulib-m4/closedir.m4 \ + $(top_srcdir)/gnulib-m4/configmake.m4 \ + $(top_srcdir)/gnulib-m4/copy-file.m4 \ + $(top_srcdir)/gnulib-m4/csharp.m4 \ + $(top_srcdir)/gnulib-m4/csharpcomp.m4 \ + $(top_srcdir)/gnulib-m4/csharpexec.m4 \ + $(top_srcdir)/gnulib-m4/ctype.m4 \ + $(top_srcdir)/gnulib-m4/curses.m4 \ + $(top_srcdir)/gnulib-m4/dirent_h.m4 \ + $(top_srcdir)/gnulib-m4/double-slash-root.m4 \ + $(top_srcdir)/gnulib-m4/dup.m4 $(top_srcdir)/gnulib-m4/dup2.m4 \ + $(top_srcdir)/gnulib-m4/eaccess.m4 \ + $(top_srcdir)/gnulib-m4/eealloc.m4 \ + $(top_srcdir)/gnulib-m4/environ.m4 \ + $(top_srcdir)/gnulib-m4/errno_h.m4 \ + $(top_srcdir)/gnulib-m4/error.m4 \ + $(top_srcdir)/gnulib-m4/execute.m4 \ + $(top_srcdir)/gnulib-m4/exponentd.m4 \ + $(top_srcdir)/gnulib-m4/exponentf.m4 \ + $(top_srcdir)/gnulib-m4/exponentl.m4 \ + $(top_srcdir)/gnulib-m4/extensions.m4 \ + $(top_srcdir)/gnulib-m4/fabs.m4 \ + $(top_srcdir)/gnulib-m4/fatal-signal.m4 \ + $(top_srcdir)/gnulib-m4/fcntl.m4 \ + $(top_srcdir)/gnulib-m4/fcntl_h.m4 \ + $(top_srcdir)/gnulib-m4/fdopen.m4 \ + $(top_srcdir)/gnulib-m4/findprog.m4 \ + $(top_srcdir)/gnulib-m4/float_h.m4 \ + $(top_srcdir)/gnulib-m4/fnmatch.m4 \ + $(top_srcdir)/gnulib-m4/fopen.m4 \ + $(top_srcdir)/gnulib-m4/fpieee.m4 \ + $(top_srcdir)/gnulib-m4/fseeko.m4 \ + $(top_srcdir)/gnulib-m4/fstat.m4 \ + $(top_srcdir)/gnulib-m4/ftell.m4 \ + $(top_srcdir)/gnulib-m4/ftello.m4 \ + $(top_srcdir)/gnulib-m4/gcj.m4 \ + $(top_srcdir)/gnulib-m4/getcwd.m4 \ + $(top_srcdir)/gnulib-m4/getdelim.m4 \ + $(top_srcdir)/gnulib-m4/getdtablesize.m4 \ + $(top_srcdir)/gnulib-m4/getline.m4 \ + $(top_srcdir)/gnulib-m4/getopt.m4 \ + $(top_srcdir)/gnulib-m4/getpagesize.m4 \ + $(top_srcdir)/gnulib-m4/gettimeofday.m4 \ + $(top_srcdir)/gnulib-m4/gnulib-common.m4 \ + $(top_srcdir)/gnulib-m4/gnulib-comp.m4 \ + $(top_srcdir)/gnulib-m4/iconv_h.m4 \ + $(top_srcdir)/gnulib-m4/iconv_open.m4 \ + $(top_srcdir)/gnulib-m4/include_next.m4 \ + $(top_srcdir)/gnulib-m4/inline.m4 \ + $(top_srcdir)/gnulib-m4/intmax_t.m4 \ + $(top_srcdir)/gnulib-m4/inttypes.m4 \ + $(top_srcdir)/gnulib-m4/isinf.m4 \ + $(top_srcdir)/gnulib-m4/isnan.m4 \ + $(top_srcdir)/gnulib-m4/isnand.m4 \ + $(top_srcdir)/gnulib-m4/isnanf.m4 \ + $(top_srcdir)/gnulib-m4/isnanl.m4 \ + $(top_srcdir)/gnulib-m4/iswblank.m4 \ + $(top_srcdir)/gnulib-m4/java.m4 \ + $(top_srcdir)/gnulib-m4/javacomp.m4 \ + $(top_srcdir)/gnulib-m4/javaexec.m4 \ + $(top_srcdir)/gnulib-m4/langinfo_h.m4 \ + $(top_srcdir)/gnulib-m4/largefile.m4 \ + $(top_srcdir)/gnulib-m4/lib-ld.m4 \ + $(top_srcdir)/gnulib-m4/lib-link.m4 \ + $(top_srcdir)/gnulib-m4/lib-prefix.m4 \ + $(top_srcdir)/gnulib-m4/libcroco.m4 \ + $(top_srcdir)/gnulib-m4/libglib.m4 \ + $(top_srcdir)/gnulib-m4/libunistring-base.m4 \ + $(top_srcdir)/gnulib-m4/libunistring-optional.m4 \ + $(top_srcdir)/gnulib-m4/libunistring.m4 \ + $(top_srcdir)/gnulib-m4/libxml.m4 \ + $(top_srcdir)/gnulib-m4/localcharset.m4 \ + $(top_srcdir)/gnulib-m4/locale-fr.m4 \ + $(top_srcdir)/gnulib-m4/locale-ja.m4 \ + $(top_srcdir)/gnulib-m4/locale-tr.m4 \ + $(top_srcdir)/gnulib-m4/locale-zh.m4 \ + $(top_srcdir)/gnulib-m4/locale_h.m4 \ + $(top_srcdir)/gnulib-m4/localename.m4 \ + $(top_srcdir)/gnulib-m4/log10.m4 \ + $(top_srcdir)/gnulib-m4/lseek.m4 \ + $(top_srcdir)/gnulib-m4/lstat.m4 \ + $(top_srcdir)/gnulib-m4/malloc.m4 \ + $(top_srcdir)/gnulib-m4/malloca.m4 \ + $(top_srcdir)/gnulib-m4/math_h.m4 \ + $(top_srcdir)/gnulib-m4/mathfunc.m4 \ + $(top_srcdir)/gnulib-m4/mbchar.m4 \ + $(top_srcdir)/gnulib-m4/mbiter.m4 \ + $(top_srcdir)/gnulib-m4/mbrtowc.m4 \ + $(top_srcdir)/gnulib-m4/mbsinit.m4 \ + $(top_srcdir)/gnulib-m4/mbslen.m4 \ + $(top_srcdir)/gnulib-m4/mbsrtowcs.m4 \ + $(top_srcdir)/gnulib-m4/mbstate_t.m4 \ + $(top_srcdir)/gnulib-m4/mbswidth.m4 \ + $(top_srcdir)/gnulib-m4/mbtowc.m4 \ + $(top_srcdir)/gnulib-m4/memchr.m4 \ + $(top_srcdir)/gnulib-m4/memmove.m4 \ + $(top_srcdir)/gnulib-m4/memset.m4 \ + $(top_srcdir)/gnulib-m4/minmax.m4 \ + $(top_srcdir)/gnulib-m4/mkdtemp.m4 \ + $(top_srcdir)/gnulib-m4/mmap-anon.m4 \ + $(top_srcdir)/gnulib-m4/mode_t.m4 \ + $(top_srcdir)/gnulib-m4/moo.m4 \ + $(top_srcdir)/gnulib-m4/msvc-inval.m4 \ + $(top_srcdir)/gnulib-m4/msvc-nothrow.m4 \ + $(top_srcdir)/gnulib-m4/multiarch.m4 \ + $(top_srcdir)/gnulib-m4/no-c++.m4 \ + $(top_srcdir)/gnulib-m4/nocrash.m4 \ + $(top_srcdir)/gnulib-m4/obstack.m4 \ + $(top_srcdir)/gnulib-m4/off_t.m4 \ + $(top_srcdir)/gnulib-m4/open.m4 \ + $(top_srcdir)/gnulib-m4/opendir.m4 \ + $(top_srcdir)/gnulib-m4/pathmax.m4 \ + $(top_srcdir)/gnulib-m4/pipe2.m4 \ + $(top_srcdir)/gnulib-m4/posix_spawn.m4 \ + $(top_srcdir)/gnulib-m4/pow.m4 \ + $(top_srcdir)/gnulib-m4/printf.m4 \ + $(top_srcdir)/gnulib-m4/putenv.m4 \ + $(top_srcdir)/gnulib-m4/quote.m4 \ + $(top_srcdir)/gnulib-m4/quotearg.m4 \ + $(top_srcdir)/gnulib-m4/raise.m4 \ + $(top_srcdir)/gnulib-m4/rawmemchr.m4 \ + $(top_srcdir)/gnulib-m4/read-file.m4 \ + $(top_srcdir)/gnulib-m4/read.m4 \ + $(top_srcdir)/gnulib-m4/readdir.m4 \ + $(top_srcdir)/gnulib-m4/readlink.m4 \ + $(top_srcdir)/gnulib-m4/realloc.m4 \ + $(top_srcdir)/gnulib-m4/relocatable-lib.m4 \ + $(top_srcdir)/gnulib-m4/relocatable.m4 \ + $(top_srcdir)/gnulib-m4/rmdir.m4 \ + $(top_srcdir)/gnulib-m4/safe-read.m4 \ + $(top_srcdir)/gnulib-m4/safe-write.m4 \ + $(top_srcdir)/gnulib-m4/sched_h.m4 \ + $(top_srcdir)/gnulib-m4/secure_getenv.m4 \ + $(top_srcdir)/gnulib-m4/setenv.m4 \ + $(top_srcdir)/gnulib-m4/setlocale.m4 \ + $(top_srcdir)/gnulib-m4/sig_atomic_t.m4 \ + $(top_srcdir)/gnulib-m4/sigaction.m4 \ + $(top_srcdir)/gnulib-m4/signal_h.m4 \ + $(top_srcdir)/gnulib-m4/signalblocking.m4 \ + $(top_srcdir)/gnulib-m4/signbit.m4 \ + $(top_srcdir)/gnulib-m4/sigpipe.m4 \ + $(top_srcdir)/gnulib-m4/sleep.m4 \ + $(top_srcdir)/gnulib-m4/snprintf.m4 \ + $(top_srcdir)/gnulib-m4/spawn-pipe.m4 \ + $(top_srcdir)/gnulib-m4/spawn_h.m4 \ + $(top_srcdir)/gnulib-m4/ssize_t.m4 \ + $(top_srcdir)/gnulib-m4/stat.m4 \ + $(top_srcdir)/gnulib-m4/stdalign.m4 \ + $(top_srcdir)/gnulib-m4/stdarg.m4 \ + $(top_srcdir)/gnulib-m4/stdbool.m4 \ + $(top_srcdir)/gnulib-m4/stddef_h.m4 \ + $(top_srcdir)/gnulib-m4/stdint.m4 \ + $(top_srcdir)/gnulib-m4/stdio_h.m4 \ + $(top_srcdir)/gnulib-m4/stdlib_h.m4 \ + $(top_srcdir)/gnulib-m4/stpcpy.m4 \ + $(top_srcdir)/gnulib-m4/stpncpy.m4 \ + $(top_srcdir)/gnulib-m4/strchrnul.m4 \ + $(top_srcdir)/gnulib-m4/strcspn.m4 \ + $(top_srcdir)/gnulib-m4/strerror.m4 \ + $(top_srcdir)/gnulib-m4/string_h.m4 \ + $(top_srcdir)/gnulib-m4/strnlen.m4 \ + $(top_srcdir)/gnulib-m4/strpbrk.m4 \ + $(top_srcdir)/gnulib-m4/strstr.m4 \ + $(top_srcdir)/gnulib-m4/strtol.m4 \ + $(top_srcdir)/gnulib-m4/strtoul.m4 \ + $(top_srcdir)/gnulib-m4/symlink.m4 \ + $(top_srcdir)/gnulib-m4/sys_select_h.m4 \ + $(top_srcdir)/gnulib-m4/sys_socket_h.m4 \ + $(top_srcdir)/gnulib-m4/sys_stat_h.m4 \ + $(top_srcdir)/gnulib-m4/sys_time_h.m4 \ + $(top_srcdir)/gnulib-m4/sys_types_h.m4 \ + $(top_srcdir)/gnulib-m4/sys_wait_h.m4 \ + $(top_srcdir)/gnulib-m4/tempname.m4 \ + $(top_srcdir)/gnulib-m4/term-ostream.m4 \ + $(top_srcdir)/gnulib-m4/terminfo.m4 \ + $(top_srcdir)/gnulib-m4/thread.m4 \ + $(top_srcdir)/gnulib-m4/time_h.m4 \ + $(top_srcdir)/gnulib-m4/tls.m4 \ + $(top_srcdir)/gnulib-m4/tmpdir.m4 \ + $(top_srcdir)/gnulib-m4/ungetc.m4 \ + $(top_srcdir)/gnulib-m4/unionwait.m4 \ + $(top_srcdir)/gnulib-m4/unistd-safer.m4 \ + $(top_srcdir)/gnulib-m4/unistd_h.m4 \ + $(top_srcdir)/gnulib-m4/unlocked-io.m4 \ + $(top_srcdir)/gnulib-m4/vasnprintf.m4 \ + $(top_srcdir)/gnulib-m4/vasprintf.m4 \ + $(top_srcdir)/gnulib-m4/vsnprintf.m4 \ + $(top_srcdir)/gnulib-m4/wait-process.m4 \ + $(top_srcdir)/gnulib-m4/waitpid.m4 \ + $(top_srcdir)/gnulib-m4/warn-on-use.m4 \ + $(top_srcdir)/gnulib-m4/wchar_h.m4 \ + $(top_srcdir)/gnulib-m4/wcrtomb.m4 \ + $(top_srcdir)/gnulib-m4/wctob.m4 \ + $(top_srcdir)/gnulib-m4/wctomb.m4 \ + $(top_srcdir)/gnulib-m4/wctype_h.m4 \ + $(top_srcdir)/gnulib-m4/wcwidth.m4 \ + $(top_srcdir)/gnulib-m4/write.m4 \ + $(top_srcdir)/gnulib-m4/xvasprintf.m4 \ + $(top_srcdir)/gnulib-m4/yield.m4 \ + $(top_srcdir)/../m4/fixautomake.m4 \ + $(top_srcdir)/../m4/libtool.m4 \ + $(top_srcdir)/../m4/ltoptions.m4 \ + $(top_srcdir)/../m4/ltsugar.m4 \ + $(top_srcdir)/../m4/ltversion.m4 \ + $(top_srcdir)/../m4/lt~obsolete.m4 \ + $(top_srcdir)/../m4/woe32-dll.m4 \ + $(top_srcdir)/../gettext-runtime/m4/codeset.m4 \ + $(top_srcdir)/../gettext-runtime/m4/extern-inline.m4 \ + $(top_srcdir)/../gettext-runtime/m4/fcntl-o.m4 \ + $(top_srcdir)/../gettext-runtime/m4/gettext.m4 \ + $(top_srcdir)/../gettext-runtime/m4/glibc2.m4 \ + $(top_srcdir)/../gettext-runtime/m4/glibc21.m4 \ + $(top_srcdir)/../gettext-runtime/m4/iconv.m4 \ + $(top_srcdir)/../gettext-runtime/m4/intdiv0.m4 \ + $(top_srcdir)/../gettext-runtime/m4/intl.m4 \ + $(top_srcdir)/../gettext-runtime/m4/intlmacosx.m4 \ + $(top_srcdir)/../gettext-runtime/m4/intmax.m4 \ + $(top_srcdir)/../gettext-runtime/m4/inttypes-pri.m4 \ + $(top_srcdir)/../gettext-runtime/m4/inttypes_h.m4 \ + $(top_srcdir)/../gettext-runtime/m4/lcmessage.m4 \ + $(top_srcdir)/../gettext-runtime/m4/lock.m4 \ + $(top_srcdir)/../gettext-runtime/m4/longlong.m4 \ + $(top_srcdir)/../gettext-runtime/m4/nls.m4 \ + $(top_srcdir)/../gettext-runtime/m4/po.m4 \ + $(top_srcdir)/../gettext-runtime/m4/printf-posix.m4 \ + $(top_srcdir)/../gettext-runtime/m4/progtest.m4 \ + $(top_srcdir)/../gettext-runtime/m4/size_max.m4 \ + $(top_srcdir)/../gettext-runtime/m4/stdint_h.m4 \ + $(top_srcdir)/../gettext-runtime/m4/threadlib.m4 \ + $(top_srcdir)/../gettext-runtime/m4/uintmax_t.m4 \ + $(top_srcdir)/../gettext-runtime/m4/visibility.m4 \ + $(top_srcdir)/../gettext-runtime/m4/wchar_t.m4 \ + $(top_srcdir)/../gettext-runtime/m4/wint_t.m4 \ + $(top_srcdir)/../gettext-runtime/m4/xsize.m4 \ + $(top_srcdir)/m4/exported.m4 $(top_srcdir)/m4/hostname.m4 \ + $(top_srcdir)/m4/setlocale.m4 $(top_srcdir)/m4/siginfo.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_its_DATA) \ + $(am__DIST_COMMON) +mkinstalldirs = $(SHELL) $(top_srcdir)/../build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(itsdir)" +DATA = $(dist_its_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/../build-aux/mkinstalldirs +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +pkgdatadir = $(datadir)/gettext +pkglibexecdir = @pkglibexecdir@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +ARCHIVE_FORMAT = @ARCHIVE_FORMAT@ +ARCHIVE_VERSION = @ARCHIVE_VERSION@ +ARFLAGS = @ARFLAGS@ +AS = @AS@ +ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BISON_LOCALEDIR = @BISON_LOCALEDIR@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +BUILDCSHARP = @BUILDCSHARP@ +BUILDJAVA = @BUILDJAVA@ +BUILDJAVAEXE = @BUILDJAVAEXE@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +BYTESWAP_H = @BYTESWAP_H@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CLASSPATH = @CLASSPATH@ +CLASSPATH_SEPARATOR = @CLASSPATH_SEPARATOR@ +CLIX_PATH = @CLIX_PATH@ +CLIX_PATH_VAR = @CLIX_PATH_VAR@ +CONF_JAVA = @CONF_JAVA@ +CONF_JAVAC = @CONF_JAVAC@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CROSS_COMPILING = @CROSS_COMPILING@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CXX_CHOICE = @CXX_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +DVIPS = @DVIPS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FABS_LIBM = @FABS_LIBM@ +FGREP = @FGREP@ +FLOAT_H = @FLOAT_H@ +FNMATCH_H = @FNMATCH_H@ +GCJ = @GCJ@ +GCJFLAGS = @GCJFLAGS@ +GENCAT = @GENCAT@ +GETOPT_H = @GETOPT_H@ +GETTEXTLIB_EXPORTS_FLAGS = @GETTEXTLIB_EXPORTS_FLAGS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GLOBAL_SYMBOL_PIPE = @GLOBAL_SYMBOL_PIPE@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_ACOSF = @GNULIB_ACOSF@ +GNULIB_ACOSL = @GNULIB_ACOSL@ +GNULIB_ALPHASORT = @GNULIB_ALPHASORT@ +GNULIB_ASINF = @GNULIB_ASINF@ +GNULIB_ASINL = @GNULIB_ASINL@ +GNULIB_ATAN2F = @GNULIB_ATAN2F@ +GNULIB_ATANF = @GNULIB_ATANF@ +GNULIB_ATANL = @GNULIB_ATANL@ +GNULIB_ATOLL = @GNULIB_ATOLL@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ +GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ +GNULIB_CBRT = @GNULIB_CBRT@ +GNULIB_CBRTF = @GNULIB_CBRTF@ +GNULIB_CBRTL = @GNULIB_CBRTL@ +GNULIB_CEIL = @GNULIB_CEIL@ +GNULIB_CEILF = @GNULIB_CEILF@ +GNULIB_CEILL = @GNULIB_CEILL@ +GNULIB_CHDIR = @GNULIB_CHDIR@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@ +GNULIB_COPYSIGN = @GNULIB_COPYSIGN@ +GNULIB_COPYSIGNF = @GNULIB_COPYSIGNF@ +GNULIB_COPYSIGNL = @GNULIB_COPYSIGNL@ +GNULIB_COSF = @GNULIB_COSF@ +GNULIB_COSHF = @GNULIB_COSHF@ +GNULIB_COSL = @GNULIB_COSL@ +GNULIB_DIRFD = @GNULIB_DIRFD@ +GNULIB_DPRINTF = @GNULIB_DPRINTF@ +GNULIB_DUP = @GNULIB_DUP@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_DUP3 = @GNULIB_DUP3@ +GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_EXP2 = @GNULIB_EXP2@ +GNULIB_EXP2F = @GNULIB_EXP2F@ +GNULIB_EXP2L = @GNULIB_EXP2L@ +GNULIB_EXPF = @GNULIB_EXPF@ +GNULIB_EXPL = @GNULIB_EXPL@ +GNULIB_EXPM1 = @GNULIB_EXPM1@ +GNULIB_EXPM1F = @GNULIB_EXPM1F@ +GNULIB_EXPM1L = @GNULIB_EXPM1L@ +GNULIB_FABSF = @GNULIB_FABSF@ +GNULIB_FABSL = @GNULIB_FABSL@ +GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ +GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ +GNULIB_FCLOSE = @GNULIB_FCLOSE@ +GNULIB_FCNTL = @GNULIB_FCNTL@ +GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ +GNULIB_FDOPEN = @GNULIB_FDOPEN@ +GNULIB_FDOPENDIR = @GNULIB_FDOPENDIR@ +GNULIB_FFLUSH = @GNULIB_FFLUSH@ +GNULIB_FFSL = @GNULIB_FFSL@ +GNULIB_FFSLL = @GNULIB_FFSLL@ +GNULIB_FGETC = @GNULIB_FGETC@ +GNULIB_FGETS = @GNULIB_FGETS@ +GNULIB_FLOOR = @GNULIB_FLOOR@ +GNULIB_FLOORF = @GNULIB_FLOORF@ +GNULIB_FLOORL = @GNULIB_FLOORL@ +GNULIB_FMA = @GNULIB_FMA@ +GNULIB_FMAF = @GNULIB_FMAF@ +GNULIB_FMAL = @GNULIB_FMAL@ +GNULIB_FMOD = @GNULIB_FMOD@ +GNULIB_FMODF = @GNULIB_FMODF@ +GNULIB_FMODL = @GNULIB_FMODL@ +GNULIB_FOPEN = @GNULIB_FOPEN@ +GNULIB_FPRINTF = @GNULIB_FPRINTF@ +GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ +GNULIB_FPURGE = @GNULIB_FPURGE@ +GNULIB_FPUTC = @GNULIB_FPUTC@ +GNULIB_FPUTS = @GNULIB_FPUTS@ +GNULIB_FREAD = @GNULIB_FREAD@ +GNULIB_FREOPEN = @GNULIB_FREOPEN@ +GNULIB_FREXP = @GNULIB_FREXP@ +GNULIB_FREXPF = @GNULIB_FREXPF@ +GNULIB_FREXPL = @GNULIB_FREXPL@ +GNULIB_FSCANF = @GNULIB_FSCANF@ +GNULIB_FSEEK = @GNULIB_FSEEK@ +GNULIB_FSEEKO = @GNULIB_FSEEKO@ +GNULIB_FSTAT = @GNULIB_FSTAT@ +GNULIB_FSTATAT = @GNULIB_FSTATAT@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTELL = @GNULIB_FTELL@ +GNULIB_FTELLO = @GNULIB_FTELLO@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ +GNULIB_FWRITE = @GNULIB_FWRITE@ +GNULIB_GETC = @GNULIB_GETC@ +GNULIB_GETCHAR = @GNULIB_GETCHAR@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDELIM = @GNULIB_GETDELIM@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLINE = @GNULIB_GETLINE@ +GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ +GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ +GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ +GNULIB_GRANTPT = @GNULIB_GRANTPT@ +GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ +GNULIB_HYPOT = @GNULIB_HYPOT@ +GNULIB_HYPOTF = @GNULIB_HYPOTF@ +GNULIB_HYPOTL = @GNULIB_HYPOTL@ +GNULIB_ICONV = @GNULIB_ICONV@ +GNULIB_ILOGB = @GNULIB_ILOGB@ +GNULIB_ILOGBF = @GNULIB_ILOGBF@ +GNULIB_ILOGBL = @GNULIB_ILOGBL@ +GNULIB_IMAXABS = @GNULIB_IMAXABS@ +GNULIB_IMAXDIV = @GNULIB_IMAXDIV@ +GNULIB_ISATTY = @GNULIB_ISATTY@ +GNULIB_ISBLANK = @GNULIB_ISBLANK@ +GNULIB_ISFINITE = @GNULIB_ISFINITE@ +GNULIB_ISINF = @GNULIB_ISINF@ +GNULIB_ISNAN = @GNULIB_ISNAN@ +GNULIB_ISNAND = @GNULIB_ISNAND@ +GNULIB_ISNANF = @GNULIB_ISNANF@ +GNULIB_ISNANL = @GNULIB_ISNANL@ +GNULIB_ISWBLANK = @GNULIB_ISWBLANK@ +GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@ +GNULIB_LCHMOD = @GNULIB_LCHMOD@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LDEXPF = @GNULIB_LDEXPF@ +GNULIB_LDEXPL = @GNULIB_LDEXPL@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LINKAT = @GNULIB_LINKAT@ +GNULIB_LOCALECONV = @GNULIB_LOCALECONV@ +GNULIB_LOG = @GNULIB_LOG@ +GNULIB_LOG10 = @GNULIB_LOG10@ +GNULIB_LOG10F = @GNULIB_LOG10F@ +GNULIB_LOG10L = @GNULIB_LOG10L@ +GNULIB_LOG1P = @GNULIB_LOG1P@ +GNULIB_LOG1PF = @GNULIB_LOG1PF@ +GNULIB_LOG1PL = @GNULIB_LOG1PL@ +GNULIB_LOG2 = @GNULIB_LOG2@ +GNULIB_LOG2F = @GNULIB_LOG2F@ +GNULIB_LOG2L = @GNULIB_LOG2L@ +GNULIB_LOGB = @GNULIB_LOGB@ +GNULIB_LOGBF = @GNULIB_LOGBF@ +GNULIB_LOGBL = @GNULIB_LOGBL@ +GNULIB_LOGF = @GNULIB_LOGF@ +GNULIB_LOGL = @GNULIB_LOGL@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_LSTAT = @GNULIB_LSTAT@ +GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MBTOWC = @GNULIB_MBTOWC@ +GNULIB_MEMCHR = @GNULIB_MEMCHR@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ +GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ +GNULIB_MKFIFO = @GNULIB_MKFIFO@ +GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ +GNULIB_MKNOD = @GNULIB_MKNOD@ +GNULIB_MKNODAT = @GNULIB_MKNODAT@ +GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ +GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ +GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ +GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ +GNULIB_MKTIME = @GNULIB_MKTIME@ +GNULIB_MODF = @GNULIB_MODF@ +GNULIB_MODFF = @GNULIB_MODFF@ +GNULIB_MODFL = @GNULIB_MODFL@ +GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ +GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@ +GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ +GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ +GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ +GNULIB_OPEN = @GNULIB_OPEN@ +GNULIB_OPENAT = @GNULIB_OPENAT@ +GNULIB_OPENDIR = @GNULIB_OPENDIR@ +GNULIB_PCLOSE = @GNULIB_PCLOSE@ +GNULIB_PERROR = @GNULIB_PERROR@ +GNULIB_PIPE = @GNULIB_PIPE@ +GNULIB_PIPE2 = @GNULIB_PIPE2@ +GNULIB_POPEN = @GNULIB_POPEN@ +GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ +GNULIB_POSIX_SPAWN = @GNULIB_POSIX_SPAWN@ +GNULIB_POSIX_SPAWNATTR_DESTROY = @GNULIB_POSIX_SPAWNATTR_DESTROY@ +GNULIB_POSIX_SPAWNATTR_GETFLAGS = @GNULIB_POSIX_SPAWNATTR_GETFLAGS@ +GNULIB_POSIX_SPAWNATTR_GETPGROUP = @GNULIB_POSIX_SPAWNATTR_GETPGROUP@ +GNULIB_POSIX_SPAWNATTR_GETSCHEDPARAM = @GNULIB_POSIX_SPAWNATTR_GETSCHEDPARAM@ +GNULIB_POSIX_SPAWNATTR_GETSCHEDPOLICY = @GNULIB_POSIX_SPAWNATTR_GETSCHEDPOLICY@ +GNULIB_POSIX_SPAWNATTR_GETSIGDEFAULT = @GNULIB_POSIX_SPAWNATTR_GETSIGDEFAULT@ +GNULIB_POSIX_SPAWNATTR_GETSIGMASK = @GNULIB_POSIX_SPAWNATTR_GETSIGMASK@ +GNULIB_POSIX_SPAWNATTR_INIT = @GNULIB_POSIX_SPAWNATTR_INIT@ +GNULIB_POSIX_SPAWNATTR_SETFLAGS = @GNULIB_POSIX_SPAWNATTR_SETFLAGS@ +GNULIB_POSIX_SPAWNATTR_SETPGROUP = @GNULIB_POSIX_SPAWNATTR_SETPGROUP@ +GNULIB_POSIX_SPAWNATTR_SETSCHEDPARAM = @GNULIB_POSIX_SPAWNATTR_SETSCHEDPARAM@ +GNULIB_POSIX_SPAWNATTR_SETSCHEDPOLICY = @GNULIB_POSIX_SPAWNATTR_SETSCHEDPOLICY@ +GNULIB_POSIX_SPAWNATTR_SETSIGDEFAULT = @GNULIB_POSIX_SPAWNATTR_SETSIGDEFAULT@ +GNULIB_POSIX_SPAWNATTR_SETSIGMASK = @GNULIB_POSIX_SPAWNATTR_SETSIGMASK@ +GNULIB_POSIX_SPAWNP = @GNULIB_POSIX_SPAWNP@ +GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE@ +GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2@ +GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN@ +GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY@ +GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT@ +GNULIB_POWF = @GNULIB_POWF@ +GNULIB_PREAD = @GNULIB_PREAD@ +GNULIB_PRINTF = @GNULIB_PRINTF@ +GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ +GNULIB_PSELECT = @GNULIB_PSELECT@ +GNULIB_PTHREAD_SIGMASK = @GNULIB_PTHREAD_SIGMASK@ +GNULIB_PTSNAME = @GNULIB_PTSNAME@ +GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ +GNULIB_PUTC = @GNULIB_PUTC@ +GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ +GNULIB_PUTENV = @GNULIB_PUTENV@ +GNULIB_PUTS = @GNULIB_PUTS@ +GNULIB_PWRITE = @GNULIB_PWRITE@ +GNULIB_QSORT_R = @GNULIB_QSORT_R@ +GNULIB_RAISE = @GNULIB_RAISE@ +GNULIB_RANDOM = @GNULIB_RANDOM@ +GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READ = @GNULIB_READ@ +GNULIB_READDIR = @GNULIB_READDIR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_READLINKAT = @GNULIB_READLINKAT@ +GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ +GNULIB_REALPATH = @GNULIB_REALPATH@ +GNULIB_REMAINDER = @GNULIB_REMAINDER@ +GNULIB_REMAINDERF = @GNULIB_REMAINDERF@ +GNULIB_REMAINDERL = @GNULIB_REMAINDERL@ +GNULIB_REMOVE = @GNULIB_REMOVE@ +GNULIB_RENAME = @GNULIB_RENAME@ +GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ +GNULIB_REWINDDIR = @GNULIB_REWINDDIR@ +GNULIB_RINT = @GNULIB_RINT@ +GNULIB_RINTF = @GNULIB_RINTF@ +GNULIB_RINTL = @GNULIB_RINTL@ +GNULIB_RMDIR = @GNULIB_RMDIR@ +GNULIB_ROUND = @GNULIB_ROUND@ +GNULIB_ROUNDF = @GNULIB_ROUNDF@ +GNULIB_ROUNDL = @GNULIB_ROUNDL@ +GNULIB_RPMATCH = @GNULIB_RPMATCH@ +GNULIB_SCANDIR = @GNULIB_SCANDIR@ +GNULIB_SCANF = @GNULIB_SCANF@ +GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ +GNULIB_SELECT = @GNULIB_SELECT@ +GNULIB_SETENV = @GNULIB_SETENV@ +GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ +GNULIB_SETLOCALE = @GNULIB_SETLOCALE@ +GNULIB_SIGACTION = @GNULIB_SIGACTION@ +GNULIB_SIGNAL_H_SIGPIPE = @GNULIB_SIGNAL_H_SIGPIPE@ +GNULIB_SIGNBIT = @GNULIB_SIGNBIT@ +GNULIB_SIGPROCMASK = @GNULIB_SIGPROCMASK@ +GNULIB_SINF = @GNULIB_SINF@ +GNULIB_SINHF = @GNULIB_SINHF@ +GNULIB_SINL = @GNULIB_SINL@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ +GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ +GNULIB_SQRTF = @GNULIB_SQRTF@ +GNULIB_SQRTL = @GNULIB_SQRTL@ +GNULIB_STAT = @GNULIB_STAT@ +GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ +GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ +GNULIB_STRNCAT = @GNULIB_STRNCAT@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRPTIME = @GNULIB_STRPTIME@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOD = @GNULIB_STRTOD@ +GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRTOLL = @GNULIB_STRTOLL@ +GNULIB_STRTOULL = @GNULIB_STRTOULL@ +GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_SYMLINK = @GNULIB_SYMLINK@ +GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ +GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ +GNULIB_TANF = @GNULIB_TANF@ +GNULIB_TANHF = @GNULIB_TANHF@ +GNULIB_TANL = @GNULIB_TANL@ +GNULIB_TIMEGM = @GNULIB_TIMEGM@ +GNULIB_TIME_R = @GNULIB_TIME_R@ +GNULIB_TIME_RZ = @GNULIB_TIME_RZ@ +GNULIB_TMPFILE = @GNULIB_TMPFILE@ +GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@ +GNULIB_TRUNC = @GNULIB_TRUNC@ +GNULIB_TRUNCF = @GNULIB_TRUNCF@ +GNULIB_TRUNCL = @GNULIB_TRUNCL@ +GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ +GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_UNLINK = @GNULIB_UNLINK@ +GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ +GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ +GNULIB_UNSETENV = @GNULIB_UNSETENV@ +GNULIB_USLEEP = @GNULIB_USLEEP@ +GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ +GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ +GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ +GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ +GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ +GNULIB_VFSCANF = @GNULIB_VFSCANF@ +GNULIB_VPRINTF = @GNULIB_VPRINTF@ +GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ +GNULIB_VSCANF = @GNULIB_VSCANF@ +GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ +GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ +GNULIB_WAITPID = @GNULIB_WAITPID@ +GNULIB_WCPCPY = @GNULIB_WCPCPY@ +GNULIB_WCPNCPY = @GNULIB_WCPNCPY@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@ +GNULIB_WCSCAT = @GNULIB_WCSCAT@ +GNULIB_WCSCHR = @GNULIB_WCSCHR@ +GNULIB_WCSCMP = @GNULIB_WCSCMP@ +GNULIB_WCSCOLL = @GNULIB_WCSCOLL@ +GNULIB_WCSCPY = @GNULIB_WCSCPY@ +GNULIB_WCSCSPN = @GNULIB_WCSCSPN@ +GNULIB_WCSDUP = @GNULIB_WCSDUP@ +GNULIB_WCSLEN = @GNULIB_WCSLEN@ +GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@ +GNULIB_WCSNCAT = @GNULIB_WCSNCAT@ +GNULIB_WCSNCMP = @GNULIB_WCSNCMP@ +GNULIB_WCSNCPY = @GNULIB_WCSNCPY@ +GNULIB_WCSNLEN = @GNULIB_WCSNLEN@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSPBRK = @GNULIB_WCSPBRK@ +GNULIB_WCSRCHR = @GNULIB_WCSRCHR@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCSSPN = @GNULIB_WCSSPN@ +GNULIB_WCSSTR = @GNULIB_WCSSTR@ +GNULIB_WCSTOK = @GNULIB_WCSTOK@ +GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@ +GNULIB_WCSXFRM = @GNULIB_WCSXFRM@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCTOMB = @GNULIB_WCTOMB@ +GNULIB_WCTRANS = @GNULIB_WCTRANS@ +GNULIB_WCTYPE = @GNULIB_WCTYPE@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WMEMCHR = @GNULIB_WMEMCHR@ +GNULIB_WMEMCMP = @GNULIB_WMEMCMP@ +GNULIB_WMEMCPY = @GNULIB_WMEMCPY@ +GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@ +GNULIB_WMEMSET = @GNULIB_WMEMSET@ +GNULIB_WRITE = @GNULIB_WRITE@ +GNULIB__EXIT = @GNULIB__EXIT@ +GREP = @GREP@ +HAVE_ACOSF = @HAVE_ACOSF@ +HAVE_ACOSL = @HAVE_ACOSL@ +HAVE_ALPHASORT = @HAVE_ALPHASORT@ +HAVE_ASINF = @HAVE_ASINF@ +HAVE_ASINL = @HAVE_ASINL@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_ATAN2F = @HAVE_ATAN2F@ +HAVE_ATANF = @HAVE_ATANF@ +HAVE_ATANL = @HAVE_ATANL@ +HAVE_ATOLL = @HAVE_ATOLL@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ +HAVE_CBRT = @HAVE_CBRT@ +HAVE_CBRTF = @HAVE_CBRTF@ +HAVE_CBRTL = @HAVE_CBRTL@ +HAVE_CHOWN = @HAVE_CHOWN@ +HAVE_CLIX = @HAVE_CLIX@ +HAVE_CLIX_IN_PATH = @HAVE_CLIX_IN_PATH@ +HAVE_CLOSEDIR = @HAVE_CLOSEDIR@ +HAVE_COPYSIGN = @HAVE_COPYSIGN@ +HAVE_COPYSIGNL = @HAVE_COPYSIGNL@ +HAVE_COSF = @HAVE_COSF@ +HAVE_COSHF = @HAVE_COSHF@ +HAVE_COSL = @HAVE_COSL@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@ +HAVE_DECL_ASINL = @HAVE_DECL_ASINL@ +HAVE_DECL_ATANL = @HAVE_DECL_ATANL@ +HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@ +HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@ +HAVE_DECL_CEILF = @HAVE_DECL_CEILF@ +HAVE_DECL_CEILL = @HAVE_DECL_CEILL@ +HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@ +HAVE_DECL_COSL = @HAVE_DECL_COSL@ +HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@ +HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@ +HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@ +HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ +HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@ +HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ +HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ +HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@ +HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@ +HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@ +HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ +HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ +HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ +HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ +HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ +HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ +HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ +HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ +HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ +HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ +HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@ +HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ +HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@ +HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@ +HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@ +HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@ +HAVE_DECL_LOGB = @HAVE_DECL_LOGB@ +HAVE_DECL_LOGL = @HAVE_DECL_LOGL@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ +HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@ +HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@ +HAVE_DECL_RINTF = @HAVE_DECL_RINTF@ +HAVE_DECL_ROUND = @HAVE_DECL_ROUND@ +HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@ +HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@ +HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ +HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ +HAVE_DECL_SINL = @HAVE_DECL_SINL@ +HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ +HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ +HAVE_DECL_TANL = @HAVE_DECL_TANL@ +HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@ +HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@ +HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@ +HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ +HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ +HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DIRENT_H = @HAVE_DIRENT_H@ +HAVE_DPRINTF = @HAVE_DPRINTF@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_DUP3 = @HAVE_DUP3@ +HAVE_DUPLOCALE = @HAVE_DUPLOCALE@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_EXPF = @HAVE_EXPF@ +HAVE_EXPL = @HAVE_EXPL@ +HAVE_EXPM1 = @HAVE_EXPM1@ +HAVE_EXPM1F = @HAVE_EXPM1F@ +HAVE_FABSF = @HAVE_FABSF@ +HAVE_FABSL = @HAVE_FABSL@ +HAVE_FACCESSAT = @HAVE_FACCESSAT@ +HAVE_FCHDIR = @HAVE_FCHDIR@ +HAVE_FCHMODAT = @HAVE_FCHMODAT@ +HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ +HAVE_FCNTL = @HAVE_FCNTL@ +HAVE_FDATASYNC = @HAVE_FDATASYNC@ +HAVE_FDOPENDIR = @HAVE_FDOPENDIR@ +HAVE_FEATURES_H = @HAVE_FEATURES_H@ +HAVE_FFSL = @HAVE_FFSL@ +HAVE_FFSLL = @HAVE_FFSLL@ +HAVE_FMA = @HAVE_FMA@ +HAVE_FMAF = @HAVE_FMAF@ +HAVE_FMAL = @HAVE_FMAL@ +HAVE_FMODF = @HAVE_FMODF@ +HAVE_FMODL = @HAVE_FMODL@ +HAVE_FREXPF = @HAVE_FREXPF@ +HAVE_FSEEKO = @HAVE_FSEEKO@ +HAVE_FSTATAT = @HAVE_FSTATAT@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTELLO = @HAVE_FTELLO@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_FUTIMENS = @HAVE_FUTIMENS@ +HAVE_GCJ = @HAVE_GCJ@ +HAVE_GCJ_C = @HAVE_GCJ_C@ +HAVE_GCJ_IN_PATH = @HAVE_GCJ_IN_PATH@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETGROUPS = @HAVE_GETGROUPS@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETLOGIN = @HAVE_GETLOGIN@ +HAVE_GETOPT_H = @HAVE_GETOPT_H@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ +HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ +HAVE_GIJ = @HAVE_GIJ@ +HAVE_GIJ_IN_PATH = @HAVE_GIJ_IN_PATH@ +HAVE_GLOBAL_SYMBOL_PIPE = @HAVE_GLOBAL_SYMBOL_PIPE@ +HAVE_GRANTPT = @HAVE_GRANTPT@ +HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ +HAVE_HYPOTF = @HAVE_HYPOTF@ +HAVE_HYPOTL = @HAVE_HYPOTL@ +HAVE_ILOGB = @HAVE_ILOGB@ +HAVE_ILOGBF = @HAVE_ILOGBF@ +HAVE_ILOGBL = @HAVE_ILOGBL@ +HAVE_ILRUN = @HAVE_ILRUN@ +HAVE_ILRUN_IN_PATH = @HAVE_ILRUN_IN_PATH@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_ISBLANK = @HAVE_ISBLANK@ +HAVE_ISNAND = @HAVE_ISNAND@ +HAVE_ISNANF = @HAVE_ISNANF@ +HAVE_ISNANL = @HAVE_ISNANL@ +HAVE_ISWBLANK = @HAVE_ISWBLANK@ +HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ +HAVE_JAVA = @HAVE_JAVA@ +HAVE_JAVAC = @HAVE_JAVAC@ +HAVE_JAVAC_ENVVAR = @HAVE_JAVAC_ENVVAR@ +HAVE_JAVAC_IN_PATH = @HAVE_JAVAC_IN_PATH@ +HAVE_JAVA_ENVVAR = @HAVE_JAVA_ENVVAR@ +HAVE_JAVA_IN_PATH = @HAVE_JAVA_IN_PATH@ +HAVE_JIKES = @HAVE_JIKES@ +HAVE_JIKES_IN_PATH = @HAVE_JIKES_IN_PATH@ +HAVE_JRE = @HAVE_JRE@ +HAVE_JRE_IN_PATH = @HAVE_JRE_IN_PATH@ +HAVE_JVIEW = @HAVE_JVIEW@ +HAVE_JVIEW_IN_PATH = @HAVE_JVIEW_IN_PATH@ +HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@ +HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@ +HAVE_LANGINFO_H = @HAVE_LANGINFO_H@ +HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@ +HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@ +HAVE_LCHMOD = @HAVE_LCHMOD@ +HAVE_LCHOWN = @HAVE_LCHOWN@ +HAVE_LDEXPF = @HAVE_LDEXPF@ +HAVE_LIBUNISTRING = @HAVE_LIBUNISTRING@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LINKAT = @HAVE_LINKAT@ +HAVE_LOG10F = @HAVE_LOG10F@ +HAVE_LOG10L = @HAVE_LOG10L@ +HAVE_LOG1P = @HAVE_LOG1P@ +HAVE_LOG1PF = @HAVE_LOG1PF@ +HAVE_LOG1PL = @HAVE_LOG1PL@ +HAVE_LOGBF = @HAVE_LOGBF@ +HAVE_LOGBL = @HAVE_LOGBL@ +HAVE_LOGF = @HAVE_LOGF@ +HAVE_LOGL = @HAVE_LOGL@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_LSTAT = @HAVE_LSTAT@ +HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSLEN = @HAVE_MBSLEN@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMCHR = @HAVE_MEMCHR@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_MKDIRAT = @HAVE_MKDIRAT@ +HAVE_MKDTEMP = @HAVE_MKDTEMP@ +HAVE_MKFIFO = @HAVE_MKFIFO@ +HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ +HAVE_MKNOD = @HAVE_MKNOD@ +HAVE_MKNODAT = @HAVE_MKNODAT@ +HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ +HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ +HAVE_MKSTEMP = @HAVE_MKSTEMP@ +HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ +HAVE_MODFF = @HAVE_MODFF@ +HAVE_MODFL = @HAVE_MODFL@ +HAVE_MONO = @HAVE_MONO@ +HAVE_MONO_IN_PATH = @HAVE_MONO_IN_PATH@ +HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ +HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@ +HAVE_OPENAT = @HAVE_OPENAT@ +HAVE_OPENDIR = @HAVE_OPENDIR@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_PCLOSE = @HAVE_PCLOSE@ +HAVE_PIPE = @HAVE_PIPE@ +HAVE_PIPE2 = @HAVE_PIPE2@ +HAVE_POPEN = @HAVE_POPEN@ +HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@ +HAVE_POSIX_SPAWN = @HAVE_POSIX_SPAWN@ +HAVE_POSIX_SPAWNATTR_T = @HAVE_POSIX_SPAWNATTR_T@ +HAVE_POSIX_SPAWN_FILE_ACTIONS_T = @HAVE_POSIX_SPAWN_FILE_ACTIONS_T@ +HAVE_POWF = @HAVE_POWF@ +HAVE_PREAD = @HAVE_PREAD@ +HAVE_PSELECT = @HAVE_PSELECT@ +HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ +HAVE_PTSNAME = @HAVE_PTSNAME@ +HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ +HAVE_PWRITE = @HAVE_PWRITE@ +HAVE_RAISE = @HAVE_RAISE@ +HAVE_RANDOM = @HAVE_RANDOM@ +HAVE_RANDOM_H = @HAVE_RANDOM_H@ +HAVE_RANDOM_R = @HAVE_RANDOM_R@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READDIR = @HAVE_READDIR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_READLINKAT = @HAVE_READLINKAT@ +HAVE_REALPATH = @HAVE_REALPATH@ +HAVE_REMAINDER = @HAVE_REMAINDER@ +HAVE_REMAINDERF = @HAVE_REMAINDERF@ +HAVE_RENAMEAT = @HAVE_RENAMEAT@ +HAVE_REWINDDIR = @HAVE_REWINDDIR@ +HAVE_RINT = @HAVE_RINT@ +HAVE_RINTL = @HAVE_RINTL@ +HAVE_RPMATCH = @HAVE_RPMATCH@ +HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@ +HAVE_SCANDIR = @HAVE_SCANDIR@ +HAVE_SCHED_H = @HAVE_SCHED_H@ +HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ +HAVE_SETENV = @HAVE_SETENV@ +HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ +HAVE_SIGACTION = @HAVE_SIGACTION@ +HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@ +HAVE_SIGINFO_T = @HAVE_SIGINFO_T@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SIGSET_T = @HAVE_SIGSET_T@ +HAVE_SINF = @HAVE_SINF@ +HAVE_SINHF = @HAVE_SINHF@ +HAVE_SINL = @HAVE_SINL@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_SPAWN_H = @HAVE_SPAWN_H@ +HAVE_SQRTF = @HAVE_SQRTF@ +HAVE_SQRTL = @HAVE_SQRTL@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRPTIME = @HAVE_STRPTIME@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRTOD = @HAVE_STRTOD@ +HAVE_STRTOLL = @HAVE_STRTOLL@ +HAVE_STRTOULL = @HAVE_STRTOULL@ +HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ +HAVE_STRUCT_SCHED_PARAM = @HAVE_STRUCT_SCHED_PARAM@ +HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ +HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYMLINK = @HAVE_SYMLINK@ +HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_SELECT_H = @HAVE_SYS_SELECT_H@ +HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_TANF = @HAVE_TANF@ +HAVE_TANHF = @HAVE_TANHF@ +HAVE_TANL = @HAVE_TANL@ +HAVE_TIMEGM = @HAVE_TIMEGM@ +HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@ +HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNLINKAT = @HAVE_UNLINKAT@ +HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_USLEEP = @HAVE_USLEEP@ +HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ +HAVE_VASPRINTF = @HAVE_VASPRINTF@ +HAVE_VDPRINTF = @HAVE_VDPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCHAR_T = @HAVE_WCHAR_T@ +HAVE_WCPCPY = @HAVE_WCPCPY@ +HAVE_WCPNCPY = @HAVE_WCPNCPY@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ +HAVE_WCSCAT = @HAVE_WCSCAT@ +HAVE_WCSCHR = @HAVE_WCSCHR@ +HAVE_WCSCMP = @HAVE_WCSCMP@ +HAVE_WCSCOLL = @HAVE_WCSCOLL@ +HAVE_WCSCPY = @HAVE_WCSCPY@ +HAVE_WCSCSPN = @HAVE_WCSCSPN@ +HAVE_WCSDUP = @HAVE_WCSDUP@ +HAVE_WCSLEN = @HAVE_WCSLEN@ +HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ +HAVE_WCSNCAT = @HAVE_WCSNCAT@ +HAVE_WCSNCMP = @HAVE_WCSNCMP@ +HAVE_WCSNCPY = @HAVE_WCSNCPY@ +HAVE_WCSNLEN = @HAVE_WCSNLEN@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSPBRK = @HAVE_WCSPBRK@ +HAVE_WCSRCHR = @HAVE_WCSRCHR@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WCSSPN = @HAVE_WCSSPN@ +HAVE_WCSSTR = @HAVE_WCSSTR@ +HAVE_WCSTOK = @HAVE_WCSTOK@ +HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ +HAVE_WCSXFRM = @HAVE_WCSXFRM@ +HAVE_WCTRANS_T = @HAVE_WCTRANS_T@ +HAVE_WCTYPE_H = @HAVE_WCTYPE_H@ +HAVE_WCTYPE_T = @HAVE_WCTYPE_T@ +HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE_WMEMCHR = @HAVE_WMEMCHR@ +HAVE_WMEMCMP = @HAVE_WMEMCMP@ +HAVE_WMEMCPY = @HAVE_WMEMCPY@ +HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ +HAVE_WMEMSET = @HAVE_WMEMSET@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +HAVE_XLOCALE_H = @HAVE_XLOCALE_H@ +HAVE__BOOL = @HAVE__BOOL@ +HAVE__EXIT = @HAVE__EXIT@ +ICONV_CONST = @ICONV_CONST@ +ICONV_H = @ICONV_H@ +INCCROCO = @INCCROCO@ +INCGLIB = @INCGLIB@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INCTERMINFO = @INCTERMINFO@ +INCXML = @INCXML@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_PROGRAM_ENV = @INSTALL_PROGRAM_ENV@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ +INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +ISINF_LIBM = @ISINF_LIBM@ +ISNAND_LIBM = @ISNAND_LIBM@ +ISNANF_LIBM = @ISNANF_LIBM@ +ISNANL_LIBM = @ISNANL_LIBM@ +ISNAN_LIBM = @ISNAN_LIBM@ +JAR = @JAR@ +JAVA_CHOICE = @JAVA_CHOICE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCROCO = @LIBCROCO@ +LIBGLIB = @LIBGLIB@ +LIBGLIB_H = @LIBGLIB_H@ +LIBGREP_LIBDEPS = @LIBGREP_LIBDEPS@ +LIBGREP_LTLIBDEPS = @LIBGREP_LTLIBDEPS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTERMINFO = @LIBTERMINFO@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIBUNISTRING = @LIBUNISTRING@ +LIBUNISTRING_PREFIX = @LIBUNISTRING_PREFIX@ +LIBUNISTRING_UNICONV_H = @LIBUNISTRING_UNICONV_H@ +LIBUNISTRING_UNICTYPE_H = @LIBUNISTRING_UNICTYPE_H@ +LIBUNISTRING_UNILBRK_H = @LIBUNISTRING_UNILBRK_H@ +LIBUNISTRING_UNINAME_H = @LIBUNISTRING_UNINAME_H@ +LIBUNISTRING_UNISTR_H = @LIBUNISTRING_UNISTR_H@ +LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@ +LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@ +LIBXML = @LIBXML@ +LIBXML_H = @LIBXML_H@ +LIB_ACL = @LIB_ACL@ +LIB_HAS_ACL = @LIB_HAS_ACL@ +LIB_POSIX_SPAWN = @LIB_POSIX_SPAWN@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@ +LOCALE_JA = @LOCALE_JA@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LOCALE_ZH_CN = @LOCALE_ZH_CN@ +LOG10_LIBM = @LOG10_LIBM@ +LTLIBC = @LTLIBC@ +LTLIBCROCO = @LTLIBCROCO@ +LTLIBGLIB = @LTLIBGLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTERMINFO = @LTLIBTERMINFO@ +LTLIBTHREAD = @LTLIBTHREAD@ +LTLIBUNISTRING = @LTLIBUNISTRING@ +LTLIBXML = @LTLIBXML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MONO_PATH = @MONO_PATH@ +MONO_PATH_SEPARATOR = @MONO_PATH_SEPARATOR@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +MSGMERGE_LIBM = @MSGMERGE_LIBM@ +NEXT_AS_FIRST_DIRECTIVE_CTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_CTYPE_H@ +NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ +NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ +NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ +NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@ +NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@ +NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ +NEXT_AS_FIRST_DIRECTIVE_SCHED_H = @NEXT_AS_FIRST_DIRECTIVE_SCHED_H@ +NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ +NEXT_AS_FIRST_DIRECTIVE_SPAWN_H = @NEXT_AS_FIRST_DIRECTIVE_SPAWN_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ +NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H@ +NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ +NEXT_CTYPE_H = @NEXT_CTYPE_H@ +NEXT_DIRENT_H = @NEXT_DIRENT_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_FCNTL_H = @NEXT_FCNTL_H@ +NEXT_FLOAT_H = @NEXT_FLOAT_H@ +NEXT_GETOPT_H = @NEXT_GETOPT_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ +NEXT_LANGINFO_H = @NEXT_LANGINFO_H@ +NEXT_LOCALE_H = @NEXT_LOCALE_H@ +NEXT_MATH_H = @NEXT_MATH_H@ +NEXT_SCHED_H = @NEXT_SCHED_H@ +NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ +NEXT_SPAWN_H = @NEXT_SPAWN_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDDEF_H = @NEXT_STDDEF_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STDIO_H = @NEXT_STDIO_H@ +NEXT_STDLIB_H = @NEXT_STDLIB_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_SYS_SELECT_H = @NEXT_SYS_SELECT_H@ +NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ +NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ +NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ +NEXT_SYS_WAIT_H = @NEXT_SYS_WAIT_H@ +NEXT_TIME_H = @NEXT_TIME_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NEXT_WCTYPE_H = @NEXT_WCTYPE_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NO_CXX = @NO_CXX@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENMP_CFLAGS = @OPENMP_CFLAGS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_SUFFIX = @PACKAGE_SUFFIX@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +POSUB = @POSUB@ +POW_LIBM = @POW_LIBM@ +PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PRIPTR_PREFIX = @PRIPTR_PREFIX@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +RC = @RC@ +RELOCATABLE = @RELOCATABLE@ +RELOCATABLE_BUILD_DIR = @RELOCATABLE_BUILD_DIR@ +RELOCATABLE_CONFIG_H_DIR = @RELOCATABLE_CONFIG_H_DIR@ +RELOCATABLE_LDFLAGS = @RELOCATABLE_LDFLAGS@ +RELOCATABLE_LIBRARY_PATH = @RELOCATABLE_LIBRARY_PATH@ +RELOCATABLE_SRC_DIR = @RELOCATABLE_SRC_DIR@ +RELOCATABLE_STRIP = @RELOCATABLE_STRIP@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CALLOC = @REPLACE_CALLOC@ +REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CBRTF = @REPLACE_CBRTF@ +REPLACE_CBRTL = @REPLACE_CBRTL@ +REPLACE_CEIL = @REPLACE_CEIL@ +REPLACE_CEILF = @REPLACE_CEILF@ +REPLACE_CEILL = @REPLACE_CEILL@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@ +REPLACE_DIRFD = @REPLACE_DIRFD@ +REPLACE_DPRINTF = @REPLACE_DPRINTF@ +REPLACE_DUP = @REPLACE_DUP@ +REPLACE_DUP2 = @REPLACE_DUP2@ +REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@ +REPLACE_EXP2 = @REPLACE_EXP2@ +REPLACE_EXP2L = @REPLACE_EXP2L@ +REPLACE_EXPM1 = @REPLACE_EXPM1@ +REPLACE_EXPM1F = @REPLACE_EXPM1F@ +REPLACE_FABSL = @REPLACE_FABSL@ +REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ +REPLACE_FCLOSE = @REPLACE_FCLOSE@ +REPLACE_FCNTL = @REPLACE_FCNTL@ +REPLACE_FDOPEN = @REPLACE_FDOPEN@ +REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@ +REPLACE_FFLUSH = @REPLACE_FFLUSH@ +REPLACE_FLOOR = @REPLACE_FLOOR@ +REPLACE_FLOORF = @REPLACE_FLOORF@ +REPLACE_FLOORL = @REPLACE_FLOORL@ +REPLACE_FMA = @REPLACE_FMA@ +REPLACE_FMAF = @REPLACE_FMAF@ +REPLACE_FMAL = @REPLACE_FMAL@ +REPLACE_FMOD = @REPLACE_FMOD@ +REPLACE_FMODF = @REPLACE_FMODF@ +REPLACE_FMODL = @REPLACE_FMODL@ +REPLACE_FOPEN = @REPLACE_FOPEN@ +REPLACE_FPRINTF = @REPLACE_FPRINTF@ +REPLACE_FPURGE = @REPLACE_FPURGE@ +REPLACE_FREOPEN = @REPLACE_FREOPEN@ +REPLACE_FREXP = @REPLACE_FREXP@ +REPLACE_FREXPF = @REPLACE_FREXPF@ +REPLACE_FREXPL = @REPLACE_FREXPL@ +REPLACE_FSEEK = @REPLACE_FSEEK@ +REPLACE_FSEEKO = @REPLACE_FSEEKO@ +REPLACE_FSTAT = @REPLACE_FSTAT@ +REPLACE_FSTATAT = @REPLACE_FSTATAT@ +REPLACE_FTELL = @REPLACE_FTELL@ +REPLACE_FTELLO = @REPLACE_FTELLO@ +REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ +REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETDELIM = @REPLACE_GETDELIM@ +REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ +REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ +REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ +REPLACE_GETLINE = @REPLACE_GETLINE@ +REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ +REPLACE_GMTIME = @REPLACE_GMTIME@ +REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ +REPLACE_HYPOT = @REPLACE_HYPOT@ +REPLACE_HYPOTF = @REPLACE_HYPOTF@ +REPLACE_HYPOTL = @REPLACE_HYPOTL@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_ILOGB = @REPLACE_ILOGB@ +REPLACE_ILOGBF = @REPLACE_ILOGBF@ +REPLACE_ISATTY = @REPLACE_ISATTY@ +REPLACE_ISFINITE = @REPLACE_ISFINITE@ +REPLACE_ISINF = @REPLACE_ISINF@ +REPLACE_ISNAN = @REPLACE_ISNAN@ +REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ +REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ +REPLACE_ITOLD = @REPLACE_ITOLD@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LDEXPL = @REPLACE_LDEXPL@ +REPLACE_LINK = @REPLACE_LINK@ +REPLACE_LINKAT = @REPLACE_LINKAT@ +REPLACE_LOCALECONV = @REPLACE_LOCALECONV@ +REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ +REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ +REPLACE_LOG = @REPLACE_LOG@ +REPLACE_LOG10 = @REPLACE_LOG10@ +REPLACE_LOG10F = @REPLACE_LOG10F@ +REPLACE_LOG10L = @REPLACE_LOG10L@ +REPLACE_LOG1P = @REPLACE_LOG1P@ +REPLACE_LOG1PF = @REPLACE_LOG1PF@ +REPLACE_LOG1PL = @REPLACE_LOG1PL@ +REPLACE_LOG2 = @REPLACE_LOG2@ +REPLACE_LOG2F = @REPLACE_LOG2F@ +REPLACE_LOG2L = @REPLACE_LOG2L@ +REPLACE_LOGB = @REPLACE_LOGB@ +REPLACE_LOGBF = @REPLACE_LOGBF@ +REPLACE_LOGBL = @REPLACE_LOGBL@ +REPLACE_LOGF = @REPLACE_LOGF@ +REPLACE_LOGL = @REPLACE_LOGL@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_LSTAT = @REPLACE_LSTAT@ +REPLACE_MALLOC = @REPLACE_MALLOC@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MBTOWC = @REPLACE_MBTOWC@ +REPLACE_MEMCHR = @REPLACE_MEMCHR@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_MKDIR = @REPLACE_MKDIR@ +REPLACE_MKFIFO = @REPLACE_MKFIFO@ +REPLACE_MKNOD = @REPLACE_MKNOD@ +REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ +REPLACE_MKTIME = @REPLACE_MKTIME@ +REPLACE_MODF = @REPLACE_MODF@ +REPLACE_MODFF = @REPLACE_MODFF@ +REPLACE_MODFL = @REPLACE_MODFL@ +REPLACE_NAN = @REPLACE_NAN@ +REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ +REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@ +REPLACE_NULL = @REPLACE_NULL@ +REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ +REPLACE_OPEN = @REPLACE_OPEN@ +REPLACE_OPENAT = @REPLACE_OPENAT@ +REPLACE_OPENDIR = @REPLACE_OPENDIR@ +REPLACE_PERROR = @REPLACE_PERROR@ +REPLACE_POPEN = @REPLACE_POPEN@ +REPLACE_POSIX_SPAWN = @REPLACE_POSIX_SPAWN@ +REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE@ +REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2@ +REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN@ +REPLACE_PREAD = @REPLACE_PREAD@ +REPLACE_PRINTF = @REPLACE_PRINTF@ +REPLACE_PSELECT = @REPLACE_PSELECT@ +REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@ +REPLACE_PTSNAME = @REPLACE_PTSNAME@ +REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ +REPLACE_PUTENV = @REPLACE_PUTENV@ +REPLACE_PWRITE = @REPLACE_PWRITE@ +REPLACE_QSORT_R = @REPLACE_QSORT_R@ +REPLACE_RAISE = @REPLACE_RAISE@ +REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ +REPLACE_READ = @REPLACE_READ@ +REPLACE_READLINK = @REPLACE_READLINK@ +REPLACE_READLINKAT = @REPLACE_READLINKAT@ +REPLACE_REALLOC = @REPLACE_REALLOC@ +REPLACE_REALPATH = @REPLACE_REALPATH@ +REPLACE_REMAINDER = @REPLACE_REMAINDER@ +REPLACE_REMAINDERF = @REPLACE_REMAINDERF@ +REPLACE_REMAINDERL = @REPLACE_REMAINDERL@ +REPLACE_REMOVE = @REPLACE_REMOVE@ +REPLACE_RENAME = @REPLACE_RENAME@ +REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ +REPLACE_RMDIR = @REPLACE_RMDIR@ +REPLACE_ROUND = @REPLACE_ROUND@ +REPLACE_ROUNDF = @REPLACE_ROUNDF@ +REPLACE_ROUNDL = @REPLACE_ROUNDL@ +REPLACE_SELECT = @REPLACE_SELECT@ +REPLACE_SETENV = @REPLACE_SETENV@ +REPLACE_SETLOCALE = @REPLACE_SETLOCALE@ +REPLACE_SIGNBIT = @REPLACE_SIGNBIT@ +REPLACE_SIGNBIT_USING_GCC = @REPLACE_SIGNBIT_USING_GCC@ +REPLACE_SLEEP = @REPLACE_SLEEP@ +REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ +REPLACE_SPRINTF = @REPLACE_SPRINTF@ +REPLACE_SQRTL = @REPLACE_SQRTL@ +REPLACE_STAT = @REPLACE_STAT@ +REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ +REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ +REPLACE_STPNCPY = @REPLACE_STPNCPY@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ +REPLACE_STRNCAT = @REPLACE_STRNCAT@ +REPLACE_STRNDUP = @REPLACE_STRNDUP@ +REPLACE_STRNLEN = @REPLACE_STRNLEN@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_STRTOD = @REPLACE_STRTOD@ +REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@ +REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ +REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@ +REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@ +REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ +REPLACE_SYMLINK = @REPLACE_SYMLINK@ +REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ +REPLACE_TIMEGM = @REPLACE_TIMEGM@ +REPLACE_TMPFILE = @REPLACE_TMPFILE@ +REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ +REPLACE_TRUNC = @REPLACE_TRUNC@ +REPLACE_TRUNCF = @REPLACE_TRUNCF@ +REPLACE_TRUNCL = @REPLACE_TRUNCL@ +REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ +REPLACE_UNLINK = @REPLACE_UNLINK@ +REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ +REPLACE_UNSETENV = @REPLACE_UNSETENV@ +REPLACE_USLEEP = @REPLACE_USLEEP@ +REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ +REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ +REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ +REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ +REPLACE_VPRINTF = @REPLACE_VPRINTF@ +REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ +REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCTOMB = @REPLACE_WCTOMB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SCHED_H = @SCHED_H@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDALIGN_H = @STDALIGN_H@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDDEF_H = @STDDEF_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ +TESTCSHARP = @TESTCSHARP@ +TESTJAVA = @TESTJAVA@ +TESTLIBASPRINTF = @TESTLIBASPRINTF@ +TEXI2PDF = @TEXI2PDF@ +TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ +UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ +UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ +UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ +UNISTD_H_DEFINES_STRUCT_TIMESPEC = @UNISTD_H_DEFINES_STRUCT_TIMESPEC@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ +USE_ACL = @USE_ACL@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ +WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ +WINDRES = @WINDRES@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +YIELD_LIB = @YIELD_LIB@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +aclocaldir = @aclocaldir@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +gltests_WITNESS = @gltests_WITNESS@ +grgl_LIBOBJS = @grgl_LIBOBJS@ +grgl_LTLIBOBJS = @grgl_LTLIBOBJS@ +grgltests_LIBOBJS = @grgltests_LIBOBJS@ +grgltests_LTLIBOBJS = @grgltests_LTLIBOBJS@ +grgltests_WITNESS = @grgltests_WITNESS@ +gtpo_LIBOBJS = @gtpo_LIBOBJS@ +gtpo_LTLIBOBJS = @gtpo_LTLIBOBJS@ +gtpotests_LIBOBJS = @gtpotests_LIBOBJS@ +gtpotests_LTLIBOBJS = @gtpotests_LTLIBOBJS@ +gtpotests_WITNESS = @gtpotests_WITNESS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +subdirs = @subdirs@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = 1.2 gnits +itsdir = $(pkgdatadir)$(PACKAGE_SUFFIX)/its +dist_its_DATA = glade.loc glade1.its glade2.its gtkbuilder.its \ +gsettings.loc gsettings.its appdata.loc appdata.its + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits its/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnits its/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dist_itsDATA: $(dist_its_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_its_DATA)'; test -n "$(itsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(itsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(itsdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(itsdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(itsdir)" || exit $$?; \ + done + +uninstall-dist_itsDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_its_DATA)'; test -n "$(itsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(itsdir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(itsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-dist_itsDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-dist_itsDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-dist_itsDATA install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-dist_itsDATA + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/c-ctype.c gettext-0.19.7/gettext-tools/libgettextpo/c-ctype.c --- gettext-0.19.6/gettext-tools/libgettextpo/c-ctype.c 2015-09-11 03:04:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/c-ctype.c 2015-12-27 23:09:03.000000000 +0000 @@ -1,395 +1,3 @@ -/* Character handling in C locale. - - Copyright 2000-2003, 2006, 2009-2015 Free Software Foundation, Inc. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3 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 General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, see . */ - #include - -/* Specification. */ -#define NO_C_CTYPE_MACROS +#define C_CTYPE_INLINE _GL_EXTERN_INLINE #include "c-ctype.h" - -/* The function isascii is not locale dependent. Its use in EBCDIC is - questionable. */ -bool -c_isascii (int c) -{ - return (c >= 0x00 && c <= 0x7f); -} - -bool -c_isalnum (int c) -{ -#if C_CTYPE_CONSECUTIVE_DIGITS \ - && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII - return ((c >= '0' && c <= '9') - || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z')); -#else - return ((c >= '0' && c <= '9') - || (c >= 'A' && c <= 'Z') - || (c >= 'a' && c <= 'z')); -#endif -#else - switch (c) - { - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isalpha (int c) -{ -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII - return ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'); -#else - return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')); -#endif -#else - switch (c) - { - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isblank (int c) -{ - return (c == ' ' || c == '\t'); -} - -bool -c_iscntrl (int c) -{ -#if C_CTYPE_ASCII - return ((c & ~0x1f) == 0 || c == 0x7f); -#else - switch (c) - { - case ' ': case '!': case '"': case '#': case '$': case '%': - case '&': case '\'': case '(': case ')': case '*': case '+': - case ',': case '-': case '.': case '/': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case ':': case ';': case '<': case '=': case '>': case '?': - case '@': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case '[': case '\\': case ']': case '^': case '_': case '`': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - case '{': case '|': case '}': case '~': - return 0; - default: - return 1; - } -#endif -} - -bool -c_isdigit (int c) -{ -#if C_CTYPE_CONSECUTIVE_DIGITS - return (c >= '0' && c <= '9'); -#else - switch (c) - { - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - return 1; - default: - return 0; - } -#endif -} - -bool -c_islower (int c) -{ -#if C_CTYPE_CONSECUTIVE_LOWERCASE - return (c >= 'a' && c <= 'z'); -#else - switch (c) - { - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isgraph (int c) -{ -#if C_CTYPE_ASCII - return (c >= '!' && c <= '~'); -#else - switch (c) - { - case '!': case '"': case '#': case '$': case '%': case '&': - case '\'': case '(': case ')': case '*': case '+': case ',': - case '-': case '.': case '/': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case ':': case ';': case '<': case '=': case '>': case '?': - case '@': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case '[': case '\\': case ']': case '^': case '_': case '`': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - case '{': case '|': case '}': case '~': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isprint (int c) -{ -#if C_CTYPE_ASCII - return (c >= ' ' && c <= '~'); -#else - switch (c) - { - case ' ': case '!': case '"': case '#': case '$': case '%': - case '&': case '\'': case '(': case ')': case '*': case '+': - case ',': case '-': case '.': case '/': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case ':': case ';': case '<': case '=': case '>': case '?': - case '@': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case '[': case '\\': case ']': case '^': case '_': case '`': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - case '{': case '|': case '}': case '~': - return 1; - default: - return 0; - } -#endif -} - -bool -c_ispunct (int c) -{ -#if C_CTYPE_ASCII - return ((c >= '!' && c <= '~') - && !((c >= '0' && c <= '9') - || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'))); -#else - switch (c) - { - case '!': case '"': case '#': case '$': case '%': case '&': - case '\'': case '(': case ')': case '*': case '+': case ',': - case '-': case '.': case '/': - case ':': case ';': case '<': case '=': case '>': case '?': - case '@': - case '[': case '\\': case ']': case '^': case '_': case '`': - case '{': case '|': case '}': case '~': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isspace (int c) -{ - return (c == ' ' || c == '\t' - || c == '\n' || c == '\v' || c == '\f' || c == '\r'); -} - -bool -c_isupper (int c) -{ -#if C_CTYPE_CONSECUTIVE_UPPERCASE - return (c >= 'A' && c <= 'Z'); -#else - switch (c) - { - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - return 1; - default: - return 0; - } -#endif -} - -bool -c_isxdigit (int c) -{ -#if C_CTYPE_CONSECUTIVE_DIGITS \ - && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII - return ((c >= '0' && c <= '9') - || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'F')); -#else - return ((c >= '0' && c <= '9') - || (c >= 'A' && c <= 'F') - || (c >= 'a' && c <= 'f')); -#endif -#else - switch (c) - { - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - return 1; - default: - return 0; - } -#endif -} - -int -c_tolower (int c) -{ -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE - return (c >= 'A' && c <= 'Z' ? c - 'A' + 'a' : c); -#else - switch (c) - { - case 'A': return 'a'; - case 'B': return 'b'; - case 'C': return 'c'; - case 'D': return 'd'; - case 'E': return 'e'; - case 'F': return 'f'; - case 'G': return 'g'; - case 'H': return 'h'; - case 'I': return 'i'; - case 'J': return 'j'; - case 'K': return 'k'; - case 'L': return 'l'; - case 'M': return 'm'; - case 'N': return 'n'; - case 'O': return 'o'; - case 'P': return 'p'; - case 'Q': return 'q'; - case 'R': return 'r'; - case 'S': return 's'; - case 'T': return 't'; - case 'U': return 'u'; - case 'V': return 'v'; - case 'W': return 'w'; - case 'X': return 'x'; - case 'Y': return 'y'; - case 'Z': return 'z'; - default: return c; - } -#endif -} - -int -c_toupper (int c) -{ -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE - return (c >= 'a' && c <= 'z' ? c - 'a' + 'A' : c); -#else - switch (c) - { - case 'a': return 'A'; - case 'b': return 'B'; - case 'c': return 'C'; - case 'd': return 'D'; - case 'e': return 'E'; - case 'f': return 'F'; - case 'g': return 'G'; - case 'h': return 'H'; - case 'i': return 'I'; - case 'j': return 'J'; - case 'k': return 'K'; - case 'l': return 'L'; - case 'm': return 'M'; - case 'n': return 'N'; - case 'o': return 'O'; - case 'p': return 'P'; - case 'q': return 'Q'; - case 'r': return 'R'; - case 's': return 'S'; - case 't': return 'T'; - case 'u': return 'U'; - case 'v': return 'V'; - case 'w': return 'W'; - case 'x': return 'X'; - case 'y': return 'Y'; - case 'z': return 'Z'; - default: return c; - } -#endif -} diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/c-ctype.h gettext-0.19.7/gettext-tools/libgettextpo/c-ctype.h --- gettext-0.19.6/gettext-tools/libgettextpo/c-ctype.h 2015-09-11 03:04:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/c-ctype.h 2015-12-27 23:09:03.000000000 +0000 @@ -25,6 +25,13 @@ #include +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif +_GL_INLINE_HEADER_BEGIN +#ifndef C_CTYPE_INLINE +# define C_CTYPE_INLINE _GL_INLINE +#endif #ifdef __cplusplus extern "C" { @@ -39,38 +46,6 @@ characters. */ -/* Check whether the ASCII optimizations apply. */ - -/* ANSI C89 (and ISO C99 5.2.1.3 too) already guarantees that - '0', '1', ..., '9' have consecutive integer values. */ -#define C_CTYPE_CONSECUTIVE_DIGITS 1 - -#if ('A' <= 'Z') \ - && ('A' + 1 == 'B') && ('B' + 1 == 'C') && ('C' + 1 == 'D') \ - && ('D' + 1 == 'E') && ('E' + 1 == 'F') && ('F' + 1 == 'G') \ - && ('G' + 1 == 'H') && ('H' + 1 == 'I') && ('I' + 1 == 'J') \ - && ('J' + 1 == 'K') && ('K' + 1 == 'L') && ('L' + 1 == 'M') \ - && ('M' + 1 == 'N') && ('N' + 1 == 'O') && ('O' + 1 == 'P') \ - && ('P' + 1 == 'Q') && ('Q' + 1 == 'R') && ('R' + 1 == 'S') \ - && ('S' + 1 == 'T') && ('T' + 1 == 'U') && ('U' + 1 == 'V') \ - && ('V' + 1 == 'W') && ('W' + 1 == 'X') && ('X' + 1 == 'Y') \ - && ('Y' + 1 == 'Z') -#define C_CTYPE_CONSECUTIVE_UPPERCASE 1 -#endif - -#if ('a' <= 'z') \ - && ('a' + 1 == 'b') && ('b' + 1 == 'c') && ('c' + 1 == 'd') \ - && ('d' + 1 == 'e') && ('e' + 1 == 'f') && ('f' + 1 == 'g') \ - && ('g' + 1 == 'h') && ('h' + 1 == 'i') && ('i' + 1 == 'j') \ - && ('j' + 1 == 'k') && ('k' + 1 == 'l') && ('l' + 1 == 'm') \ - && ('m' + 1 == 'n') && ('n' + 1 == 'o') && ('o' + 1 == 'p') \ - && ('p' + 1 == 'q') && ('q' + 1 == 'r') && ('r' + 1 == 's') \ - && ('s' + 1 == 't') && ('t' + 1 == 'u') && ('u' + 1 == 'v') \ - && ('v' + 1 == 'w') && ('w' + 1 == 'x') && ('x' + 1 == 'y') \ - && ('y' + 1 == 'z') -#define C_CTYPE_CONSECUTIVE_LOWERCASE 1 -#endif - #if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ @@ -96,11 +71,84 @@ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126) /* The character set is ASCII or one of its variants or extensions, not EBCDIC. Testing the value of '\n' and '\r' is not relevant. */ -#define C_CTYPE_ASCII 1 +# define C_CTYPE_ASCII 1 +#elif ! (' ' == '\x40' && '0' == '\xf0' \ + && 'A' == '\xc1' && 'J' == '\xd1' && 'S' == '\xe2' \ + && 'a' == '\x81' && 'j' == '\x91' && 's' == '\xa2') +# error "Only ASCII and EBCDIC are supported" #endif +#if 'A' < 0 +# error "EBCDIC and char is signed -- not supported" +#endif + +/* Cases for control characters. */ + +#define _C_CTYPE_CNTRL \ + case '\a': case '\b': case '\f': case '\n': \ + case '\r': case '\t': case '\v': \ + _C_CTYPE_OTHER_CNTRL + +/* ASCII control characters other than those with \-letter escapes. */ + +#if C_CTYPE_ASCII +# define _C_CTYPE_OTHER_CNTRL \ + case '\x00': case '\x01': case '\x02': case '\x03': \ + case '\x04': case '\x05': case '\x06': case '\x0e': \ + case '\x0f': case '\x10': case '\x11': case '\x12': \ + case '\x13': case '\x14': case '\x15': case '\x16': \ + case '\x17': case '\x18': case '\x19': case '\x1a': \ + case '\x1b': case '\x1c': case '\x1d': case '\x1e': \ + case '\x1f': case '\x7f' +#else + /* Use EBCDIC code page 1047's assignments for ASCII control chars; + assume all EBCDIC code pages agree about these assignments. */ +# define _C_CTYPE_OTHER_CNTRL \ + case '\x00': case '\x01': case '\x02': case '\x03': \ + case '\x07': case '\x0e': case '\x0f': case '\x10': \ + case '\x11': case '\x12': case '\x13': case '\x18': \ + case '\x19': case '\x1c': case '\x1d': case '\x1e': \ + case '\x1f': case '\x26': case '\x27': case '\x2d': \ + case '\x2e': case '\x32': case '\x37': case '\x3c': \ + case '\x3d': case '\x3f' +#endif + +/* Cases for lowercase hex letters, and lowercase letters, all offset by N. */ + +#define _C_CTYPE_LOWER_A_THRU_F_N(n) \ + case 'a' + (n): case 'b' + (n): case 'c' + (n): case 'd' + (n): \ + case 'e' + (n): case 'f' + (n) +#define _C_CTYPE_LOWER_N(n) \ + _C_CTYPE_LOWER_A_THRU_F_N(n): \ + case 'g' + (n): case 'h' + (n): case 'i' + (n): case 'j' + (n): \ + case 'k' + (n): case 'l' + (n): case 'm' + (n): case 'n' + (n): \ + case 'o' + (n): case 'p' + (n): case 'q' + (n): case 'r' + (n): \ + case 's' + (n): case 't' + (n): case 'u' + (n): case 'v' + (n): \ + case 'w' + (n): case 'x' + (n): case 'y' + (n): case 'z' + (n) + +/* Cases for hex letters, digits, lower, punct, and upper. */ + +#define _C_CTYPE_A_THRU_F \ + _C_CTYPE_LOWER_A_THRU_F_N (0): \ + _C_CTYPE_LOWER_A_THRU_F_N ('A' - 'a') +#define _C_CTYPE_DIGIT \ + case '0': case '1': case '2': case '3': \ + case '4': case '5': case '6': case '7': \ + case '8': case '9' +#define _C_CTYPE_LOWER _C_CTYPE_LOWER_N (0) +#define _C_CTYPE_PUNCT \ + case '!': case '"': case '#': case '$': \ + case '%': case '&': case '\'': case '(': \ + case ')': case '*': case '+': case ',': \ + case '-': case '.': case '/': case ':': \ + case ';': case '<': case '=': case '>': \ + case '?': case '@': case '[': case '\\': \ + case ']': case '^': case '_': case '`': \ + case '{': case '|': case '}': case '~' +#define _C_CTYPE_UPPER _C_CTYPE_LOWER_N ('A' - 'a') + -/* Function declarations. */ +/* Function definitions. */ /* Unlike the functions in , which require an argument in the range of the 'unsigned char' type, the functions here operate on values that are @@ -117,179 +165,202 @@ if (c_isalpha (*s)) ... */ -extern bool c_isascii (int c) _GL_ATTRIBUTE_CONST; /* not locale dependent */ - -extern bool c_isalnum (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isalpha (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isblank (int c) _GL_ATTRIBUTE_CONST; -extern bool c_iscntrl (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isdigit (int c) _GL_ATTRIBUTE_CONST; -extern bool c_islower (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isgraph (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isprint (int c) _GL_ATTRIBUTE_CONST; -extern bool c_ispunct (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isspace (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isupper (int c) _GL_ATTRIBUTE_CONST; -extern bool c_isxdigit (int c) _GL_ATTRIBUTE_CONST; - -extern int c_tolower (int c) _GL_ATTRIBUTE_CONST; -extern int c_toupper (int c) _GL_ATTRIBUTE_CONST; - - -#if (defined __GNUC__ && !defined __STRICT_ANSI__ && defined __OPTIMIZE__ \ - && !defined __OPTIMIZE_SIZE__ && !defined NO_C_CTYPE_MACROS) - -/* ASCII optimizations. */ - -#undef c_isascii -#define c_isascii(c) \ - ({ int __c = (c); \ - (__c >= 0x00 && __c <= 0x7f); \ - }) +C_CTYPE_INLINE bool +c_isalnum (int c) +{ + switch (c) + { + _C_CTYPE_DIGIT: + _C_CTYPE_LOWER: + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_DIGITS \ - && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII -#undef c_isalnum -#define c_isalnum(c) \ - ({ int __c = (c); \ - ((__c >= '0' && __c <= '9') \ - || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z')); \ - }) -#else -#undef c_isalnum -#define c_isalnum(c) \ - ({ int __c = (c); \ - ((__c >= '0' && __c <= '9') \ - || (__c >= 'A' && __c <= 'Z') \ - || (__c >= 'a' && __c <= 'z')); \ - }) -#endif -#endif +C_CTYPE_INLINE bool +c_isalpha (int c) +{ + switch (c) + { + _C_CTYPE_LOWER: + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII -#undef c_isalpha -#define c_isalpha(c) \ - ({ int __c = (c); \ - ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z'); \ - }) -#else -#undef c_isalpha -#define c_isalpha(c) \ - ({ int __c = (c); \ - ((__c >= 'A' && __c <= 'Z') || (__c >= 'a' && __c <= 'z')); \ - }) -#endif -#endif +/* The function isascii is not locale dependent. + Its use in EBCDIC is questionable. */ +C_CTYPE_INLINE bool +c_isascii (int c) +{ + switch (c) + { + case ' ': + _C_CTYPE_CNTRL: + _C_CTYPE_DIGIT: + _C_CTYPE_LOWER: + _C_CTYPE_PUNCT: + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#undef c_isblank -#define c_isblank(c) \ - ({ int __c = (c); \ - (__c == ' ' || __c == '\t'); \ - }) +C_CTYPE_INLINE bool +c_isblank (int c) +{ + return c == ' ' || c == '\t'; +} -#if C_CTYPE_ASCII -#undef c_iscntrl -#define c_iscntrl(c) \ - ({ int __c = (c); \ - ((__c & ~0x1f) == 0 || __c == 0x7f); \ - }) -#endif +C_CTYPE_INLINE bool +c_iscntrl (int c) +{ + switch (c) + { + _C_CTYPE_CNTRL: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_DIGITS -#undef c_isdigit -#define c_isdigit(c) \ - ({ int __c = (c); \ - (__c >= '0' && __c <= '9'); \ - }) -#endif +C_CTYPE_INLINE bool +c_isdigit (int c) +{ + switch (c) + { + _C_CTYPE_DIGIT: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_LOWERCASE -#undef c_islower -#define c_islower(c) \ - ({ int __c = (c); \ - (__c >= 'a' && __c <= 'z'); \ - }) -#endif +C_CTYPE_INLINE bool +c_isgraph (int c) +{ + switch (c) + { + _C_CTYPE_DIGIT: + _C_CTYPE_LOWER: + _C_CTYPE_PUNCT: + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#if C_CTYPE_ASCII -#undef c_isgraph -#define c_isgraph(c) \ - ({ int __c = (c); \ - (__c >= '!' && __c <= '~'); \ - }) -#endif +C_CTYPE_INLINE bool +c_islower (int c) +{ + switch (c) + { + _C_CTYPE_LOWER: + return true; + default: + return false; + } +} -#if C_CTYPE_ASCII -#undef c_isprint -#define c_isprint(c) \ - ({ int __c = (c); \ - (__c >= ' ' && __c <= '~'); \ - }) -#endif +C_CTYPE_INLINE bool +c_isprint (int c) +{ + switch (c) + { + case ' ': + _C_CTYPE_DIGIT: + _C_CTYPE_LOWER: + _C_CTYPE_PUNCT: + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#if C_CTYPE_ASCII -#undef c_ispunct -#define c_ispunct(c) \ - ({ int _c = (c); \ - (c_isgraph (_c) && ! c_isalnum (_c)); \ - }) -#endif +C_CTYPE_INLINE bool +c_ispunct (int c) +{ + switch (c) + { + _C_CTYPE_PUNCT: + return true; + default: + return false; + } +} -#undef c_isspace -#define c_isspace(c) \ - ({ int __c = (c); \ - (__c == ' ' || __c == '\t' \ - || __c == '\n' || __c == '\v' || __c == '\f' || __c == '\r'); \ - }) - -#if C_CTYPE_CONSECUTIVE_UPPERCASE -#undef c_isupper -#define c_isupper(c) \ - ({ int __c = (c); \ - (__c >= 'A' && __c <= 'Z'); \ - }) -#endif +C_CTYPE_INLINE bool +c_isspace (int c) +{ + switch (c) + { + case ' ': case '\t': case '\n': case '\v': case '\f': case '\r': + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_DIGITS \ - && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#if C_CTYPE_ASCII -#undef c_isxdigit -#define c_isxdigit(c) \ - ({ int __c = (c); \ - ((__c >= '0' && __c <= '9') \ - || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'F')); \ - }) -#else -#undef c_isxdigit -#define c_isxdigit(c) \ - ({ int __c = (c); \ - ((__c >= '0' && __c <= '9') \ - || (__c >= 'A' && __c <= 'F') \ - || (__c >= 'a' && __c <= 'f')); \ - }) -#endif -#endif +C_CTYPE_INLINE bool +c_isupper (int c) +{ + switch (c) + { + _C_CTYPE_UPPER: + return true; + default: + return false; + } +} -#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -#undef c_tolower -#define c_tolower(c) \ - ({ int __c = (c); \ - (__c >= 'A' && __c <= 'Z' ? __c - 'A' + 'a' : __c); \ - }) -#undef c_toupper -#define c_toupper(c) \ - ({ int __c = (c); \ - (__c >= 'a' && __c <= 'z' ? __c - 'a' + 'A' : __c); \ - }) -#endif +C_CTYPE_INLINE bool +c_isxdigit (int c) +{ + switch (c) + { + _C_CTYPE_DIGIT: + _C_CTYPE_A_THRU_F: + return true; + default: + return false; + } +} -#endif /* optimizing for speed */ +C_CTYPE_INLINE int +c_tolower (int c) +{ + switch (c) + { + _C_CTYPE_UPPER: + return c - 'A' + 'a'; + default: + return c; + } +} +C_CTYPE_INLINE int +c_toupper (int c) +{ + switch (c) + { + _C_CTYPE_LOWER: + return c - 'a' + 'A'; + default: + return c; + } +} #ifdef __cplusplus } #endif +_GL_INLINE_HEADER_END + #endif /* C_CTYPE_H */ diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/ChangeLog gettext-0.19.7/gettext-tools/libgettextpo/ChangeLog --- gettext-0.19.6/gettext-tools/libgettextpo/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/ChangeLog 1970-01-01 00:00:00.000000000 +0000 @@ -1,324 +0,0 @@ -2015-09-11 Daiki Ueno - - * gettext 0.19.6 released. - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2015-03-06 Daiki Ueno - - * Makefile.am (libgettextpo_la_AUXSOURCES): Add - ../src/format-kde-kuit.c and ../src/libexpat-compat.c. - (libgettextpo_la_LDFLAGS): Add @LTLIBEXPAT@. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-12-24 Daiki Ueno - - * gettext-po.in.h (LIBGETTEXTPO_VERSION): Bump to 0.19.4. - * Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 5:3:5. - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-10-15 Daiki Ueno - - * gettext-po.in.h (LIBGETTEXTPO_VERSION): Bump to 0.19.3. - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2014-04-22 Roumen Petrov (tiny change) - - build: Use Automake 'subdir-objects' option - * Makefile.am (AUTOMAKE_OPTIONS): Add 'subdir-objects'. - -2013-04-26 Daiki Ueno - - Support for Python brace format. - * Makefile.am (libgettextpo_la_AUXSOURCES): Add format-python-brace.c. - -2013-04-17 Andreas Stricker - - Support for JavaScript. - * Makefile.am (libgettextpo_la_AUXSOURCES): Add format-javascript.c. - -2013-04-11 Ľubomír Remák - - * Makefile.am (libgettextpo_la_AUXSOURCES): Add format-lua.c. - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2012-12-08 Daiki Ueno - - * gettext-po.in.h (LIBGETTEXTPO_VERSION): Bump to 0.18.2. - * Makefile.am (LTV_CURRENT): Bump to 5:2:5. - -2010-11-07 Bruno Haible - - Rename gettext-po.h.in to gettext-po.in.h. - * gettext-po.in.h: New file, renamed from gettext-po.h.in. - * Makefile.am (EXTRA_DIST, gettext-po.h): Update. - -2011-06-07 Bruno Haible - - Rely more on libtool. - * Makefile.am (libgettextpo_la_LDFLAGS): Use -no-undefined always. - Don't use @LTNOUNDEF@. - -2010-06-06 Bruno Haible - - Bug fixes in libgettextpo. - * gettext-po.c (po_message_create): Initialize msgstr with the empty - string, not with NULL. - (po_message_is_range): Assign to output parameters correctly. - (po_file_check_all, po_message_check_all): Have check_message_list - ignore untranslated and fuzzy messages. - -2010-06-06 Bruno Haible - - Avoid link error in programs that use libgettextpo. - * Makefile.am (libgettextpo_la_LIBADD): Add $(LTLIBUNISTRING). - Reported by Dmitry V. Levin . - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-06-03 Bruno Haible - - * gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number. - * Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 5:1:5. - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2010-05-09 Bruno Haible - - * gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number. - * Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 5:0:5. - * libgettextpo.rc: Update year. - -2009-12-26 Bruno Haible - - * libgettextpo.rc: Update. - -2009-12-12 Bruno Haible - - * gettext-po.h.in: Untabify. - * gettext-po.c: Untabify. - -2009-11-30 Guido Flohr - - * Makefile.am (MOSTLYCLEANDIRS): New variable. - -2009-08-10 Bruno Haible - - * Makefile.am (libgettextpo_la_AUXSOURCES): Add format-gfc-internal.c, - format-qt-plural.c. - -2009-03-25 Bruno Haible - - Fix the handling of Windows resources in shared libraries. - * Makefile.am (WOE32_LIBADD): Renamed from WOE32_LDADD. Use - libgettextpo.res.lo instead of libgettextpo.res. - (libgettextpo.res.lo): Renamed from libgettextpo.res. Use libtool - --tag=RC. - (MOSTLYCLEANFILES): Update. - -2009-01-18 Bruno Haible - - * gettext-po.c (po_message_comments, po_message_extracted_comments): - Update after string_list_join changed. - -2008-10-04 Bruno Haible - - * gettext-po.h.in (po_message_is_range, po_message_set_range): New - declarations. - * gettext-po.c (po_message_is_range, po_message_set_range): New - functions. - (po_message_check_format): Update. - -2008-10-03 Bruno Haible - - * gettext-po.c (po_message_check_format): Update for signature changes - of check_message and check_msgid_msgstr_format. - -2008-07-19 Bruno Haible - - * Makefile.am (EXTRA_DIST): Add gnulib-m4/gnulib-cache.m4. - -2008-05-26 Bruno Haible - - * gettext-po.c (po_header_field, po_header_set_field): Recognize a - field also if there is no space after the ':'. - Reported by Nacho . - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2007-11-01 Bruno Haible - - * gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number. - * Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 4:0:4. - -2007-10-21 Bruno Haible - - * gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number. - (po_format_list, po_format_pretty_name): New declarations. - * gettext-po.c: Include xvasprintf.h. - (po_format_list, po_format_pretty_name): New functions. - Reported by Dwayne Bailey . - -2007-10-20 Bruno Haible - - * gettext-po.c (po_message_check_format): Update call to check_message, - check_msgid_msgstr_format. - -2007-10-07 Bruno Haible - - * libgettextpo.rc (Comments): Update. - -2007-10-06 Bruno Haible - - * Makefile.am (EXTRA_DIST): Add libgettextpo.rc. - -2007-09-30 Bruno Haible - - * Makefile.am (libgettextpo_la_AUXSOURCES): Add format-kde.c. - -2007-06-08 Bruno Haible - - * Makefile.am (LDADD): Remove variable. - (libgettextpo_la_LIBADD): Use WOE32_LDADD here. - -2007-05-28 Bruno Haible - - * libgettextpo.rc: New file. - * Makefile.am (LDADD, WOE32_LDADD): New variables. - (libgettextpo.res): New rule. - (MOSTLYCLEANFILES): Add libgettextpo.res. - -2007-05-13 Bruno Haible - - * gettext-po.c: Don't include vasprintf.h. - -2006-12-13 Bruno Haible - - * Makefile.am (MAINTAINERCLEANFILES): New variable. - -2006-11-26 Bruno Haible - - * Makefile.am (config.h): When removing an object file, also remove - the corresponding .lo file. - -2006-11-26 Bruno Haible - - Support for VPATH builds. - * Makefile.am (config.h): Don't prepend "$(srcdir)/" to the source - file name if it is present in the build directory. - -2006-11-03 Bruno Haible - - Simplify xmalloc expressions. Add overflow check in xmalloc arguments. - * gettext-po.c (po_file_create, po_file_read): Use XMALLOC instead of - xmalloc. - (po_file_domains, po_header_field, po_header_set_field): Use XNMALLOC - instead of xmalloc. - (po_message_iterator: Use XMALLOC instead of xmalloc. - -2006-10-29 Bruno Haible - - Don't name mangle exported symbols in C++ mode. - * gettext-po.c (po_file_read_v2, po_file_read, po_file_write, - po_message_check_format) [C++]: Declare as extern "C". - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-10-29 Bruno Haible - - * gettext-po.h.in (po_message_prev_msgctxt, po_message_set_prev_msgctxt, - po_message_prev_msgid, po_message_set_prev_msgid, - po_message_prev_msgid_plural, po_message_set_prev_msgid_plural): New - declarations. - -2006-10-28 Bruno Haible - - Fix for parallel makes. - * Makefile.am (BUILT_SOURCES): Don't add config.h. - (all, check, install): Depend on config.h. - (config.h): Depend on the BUILT_SOURCES. Don't invoke make recursively. - Reported by Ralf Wildenhues. - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-10-25 Bruno Haible - - * Makefile.am (config.h): If one of the three steps fails, remove - config.h and fail. - -2006-10-24 Bruno Haible - - * Makefile.am (AM_CPPFLAGS): Add also $(top_srcdir). Needed so that - woe32dll/export.h is found while compiling gettextpo-exports.c in a - VPATH build. - Reported by Charles Wilson . - -2006-10-24 Bruno Haible - - * gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number. - -2006-10-24 Bruno Haible - - * Makefile.am (AM_CPPFLAGS): Remove useless -I options. - -2006-10-23 Bruno Haible - - * Makefile.am (config.h): Update obstack_free hack. - -2006-10-23 Bruno Haible - - Fix "make dist". - * Makefile.am (nodist_noinst_HEADERS): Renamed from noinst_HEADERS. - (libgettextpo_la_SOURCES): Remove gettext-po.h. - -2006-10-21 Bruno Haible - - * gettext-po.h.in (struct po_error_handler): Add format attribute to - error, error_at_line fields. - * gettext-po.c (po_error_logger): Declare with format attribute. - -2006-10-20 Bruno Haible - - * Makefile.am (config.h): Treat .lo files like .o files. Define - DLL_VARIABLE to empty. Avoid warning when config.h is included twice. - Add special hack for obstack_free. - -2006-10-16 Bruno Haible - - * gettext-po.h.in: New file, moved here from ../src/. - * gettext-po.c: New file, moved here from ../src/. - * Makefile.am: New file, includings parts of ../src/Makefile.am. - * exported.sh.in: New file. - diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/ChangeLog.0 gettext-0.19.7/gettext-tools/libgettextpo/ChangeLog.0 --- gettext-0.19.6/gettext-tools/libgettextpo/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/ChangeLog.0 2015-12-08 12:50:04.000000000 +0000 @@ -0,0 +1,324 @@ +2015-09-11 Daiki Ueno + + * gettext 0.19.6 released. + +2015-07-10 Daiki Ueno + + * gettext 0.19.5 released. + +2015-03-06 Daiki Ueno + + * Makefile.am (libgettextpo_la_AUXSOURCES): Add + ../src/format-kde-kuit.c and ../src/libexpat-compat.c. + (libgettextpo_la_LDFLAGS): Add @LTLIBEXPAT@. + +2014-12-24 Daiki Ueno + + * gettext 0.19.4 released. + +2014-12-24 Daiki Ueno + + * gettext-po.in.h (LIBGETTEXTPO_VERSION): Bump to 0.19.4. + * Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 5:3:5. + +2014-10-15 Daiki Ueno + + * gettext 0.19.3 released. + +2014-10-15 Daiki Ueno + + * gettext-po.in.h (LIBGETTEXTPO_VERSION): Bump to 0.19.3. + +2014-07-14 Daiki Ueno + + * gettext 0.19.2 released. + +2014-06-10 Daiki Ueno + + * gettext 0.19.1 released. + +2014-06-02 Daiki Ueno + + * gettext 0.19 released. + +2014-04-22 Roumen Petrov (tiny change) + + build: Use Automake 'subdir-objects' option + * Makefile.am (AUTOMAKE_OPTIONS): Add 'subdir-objects'. + +2013-04-26 Daiki Ueno + + Support for Python brace format. + * Makefile.am (libgettextpo_la_AUXSOURCES): Add format-python-brace.c. + +2013-04-17 Andreas Stricker + + Support for JavaScript. + * Makefile.am (libgettextpo_la_AUXSOURCES): Add format-javascript.c. + +2013-04-11 Ľubomír Remák + + * Makefile.am (libgettextpo_la_AUXSOURCES): Add format-lua.c. + +2012-12-25 Daiki Ueno + + * gettext-0.18.2 released. + +2012-12-08 Daiki Ueno + + * gettext-po.in.h (LIBGETTEXTPO_VERSION): Bump to 0.18.2. + * Makefile.am (LTV_CURRENT): Bump to 5:2:5. + +2010-11-07 Bruno Haible + + Rename gettext-po.h.in to gettext-po.in.h. + * gettext-po.in.h: New file, renamed from gettext-po.h.in. + * Makefile.am (EXTRA_DIST, gettext-po.h): Update. + +2011-06-07 Bruno Haible + + Rely more on libtool. + * Makefile.am (libgettextpo_la_LDFLAGS): Use -no-undefined always. + Don't use @LTNOUNDEF@. + +2010-06-06 Bruno Haible + + Bug fixes in libgettextpo. + * gettext-po.c (po_message_create): Initialize msgstr with the empty + string, not with NULL. + (po_message_is_range): Assign to output parameters correctly. + (po_file_check_all, po_message_check_all): Have check_message_list + ignore untranslated and fuzzy messages. + +2010-06-06 Bruno Haible + + Avoid link error in programs that use libgettextpo. + * Makefile.am (libgettextpo_la_LIBADD): Add $(LTLIBUNISTRING). + Reported by Dmitry V. Levin . + +2010-06-04 Bruno Haible + + * gettext-0.18.1 released. + +2010-06-03 Bruno Haible + + * gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number. + * Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 5:1:5. + +2010-05-09 Bruno Haible + + * gettext-0.18 released. + +2010-05-09 Bruno Haible + + * gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number. + * Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 5:0:5. + * libgettextpo.rc: Update year. + +2009-12-26 Bruno Haible + + * libgettextpo.rc: Update. + +2009-12-12 Bruno Haible + + * gettext-po.h.in: Untabify. + * gettext-po.c: Untabify. + +2009-11-30 Guido Flohr + + * Makefile.am (MOSTLYCLEANDIRS): New variable. + +2009-08-10 Bruno Haible + + * Makefile.am (libgettextpo_la_AUXSOURCES): Add format-gfc-internal.c, + format-qt-plural.c. + +2009-03-25 Bruno Haible + + Fix the handling of Windows resources in shared libraries. + * Makefile.am (WOE32_LIBADD): Renamed from WOE32_LDADD. Use + libgettextpo.res.lo instead of libgettextpo.res. + (libgettextpo.res.lo): Renamed from libgettextpo.res. Use libtool + --tag=RC. + (MOSTLYCLEANFILES): Update. + +2009-01-18 Bruno Haible + + * gettext-po.c (po_message_comments, po_message_extracted_comments): + Update after string_list_join changed. + +2008-10-04 Bruno Haible + + * gettext-po.h.in (po_message_is_range, po_message_set_range): New + declarations. + * gettext-po.c (po_message_is_range, po_message_set_range): New + functions. + (po_message_check_format): Update. + +2008-10-03 Bruno Haible + + * gettext-po.c (po_message_check_format): Update for signature changes + of check_message and check_msgid_msgstr_format. + +2008-07-19 Bruno Haible + + * Makefile.am (EXTRA_DIST): Add gnulib-m4/gnulib-cache.m4. + +2008-05-26 Bruno Haible + + * gettext-po.c (po_header_field, po_header_set_field): Recognize a + field also if there is no space after the ':'. + Reported by Nacho . + +2007-11-07 Bruno Haible + + * gettext-0.17 released. + +2007-11-01 Bruno Haible + + * gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number. + * Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 4:0:4. + +2007-10-21 Bruno Haible + + * gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number. + (po_format_list, po_format_pretty_name): New declarations. + * gettext-po.c: Include xvasprintf.h. + (po_format_list, po_format_pretty_name): New functions. + Reported by Dwayne Bailey . + +2007-10-20 Bruno Haible + + * gettext-po.c (po_message_check_format): Update call to check_message, + check_msgid_msgstr_format. + +2007-10-07 Bruno Haible + + * libgettextpo.rc (Comments): Update. + +2007-10-06 Bruno Haible + + * Makefile.am (EXTRA_DIST): Add libgettextpo.rc. + +2007-09-30 Bruno Haible + + * Makefile.am (libgettextpo_la_AUXSOURCES): Add format-kde.c. + +2007-06-08 Bruno Haible + + * Makefile.am (LDADD): Remove variable. + (libgettextpo_la_LIBADD): Use WOE32_LDADD here. + +2007-05-28 Bruno Haible + + * libgettextpo.rc: New file. + * Makefile.am (LDADD, WOE32_LDADD): New variables. + (libgettextpo.res): New rule. + (MOSTLYCLEANFILES): Add libgettextpo.res. + +2007-05-13 Bruno Haible + + * gettext-po.c: Don't include vasprintf.h. + +2006-12-13 Bruno Haible + + * Makefile.am (MAINTAINERCLEANFILES): New variable. + +2006-11-26 Bruno Haible + + * Makefile.am (config.h): When removing an object file, also remove + the corresponding .lo file. + +2006-11-26 Bruno Haible + + Support for VPATH builds. + * Makefile.am (config.h): Don't prepend "$(srcdir)/" to the source + file name if it is present in the build directory. + +2006-11-03 Bruno Haible + + Simplify xmalloc expressions. Add overflow check in xmalloc arguments. + * gettext-po.c (po_file_create, po_file_read): Use XMALLOC instead of + xmalloc. + (po_file_domains, po_header_field, po_header_set_field): Use XNMALLOC + instead of xmalloc. + (po_message_iterator: Use XMALLOC instead of xmalloc. + +2006-10-29 Bruno Haible + + Don't name mangle exported symbols in C++ mode. + * gettext-po.c (po_file_read_v2, po_file_read, po_file_write, + po_message_check_format) [C++]: Declare as extern "C". + +2006-11-27 Bruno Haible + + * gettext-0.16.1 released. + +2006-10-29 Bruno Haible + + * gettext-po.h.in (po_message_prev_msgctxt, po_message_set_prev_msgctxt, + po_message_prev_msgid, po_message_set_prev_msgid, + po_message_prev_msgid_plural, po_message_set_prev_msgid_plural): New + declarations. + +2006-10-28 Bruno Haible + + Fix for parallel makes. + * Makefile.am (BUILT_SOURCES): Don't add config.h. + (all, check, install): Depend on config.h. + (config.h): Depend on the BUILT_SOURCES. Don't invoke make recursively. + Reported by Ralf Wildenhues. + +2006-10-26 Bruno Haible + + * gettext-0.16 released. + +2006-10-25 Bruno Haible + + * Makefile.am (config.h): If one of the three steps fails, remove + config.h and fail. + +2006-10-24 Bruno Haible + + * Makefile.am (AM_CPPFLAGS): Add also $(top_srcdir). Needed so that + woe32dll/export.h is found while compiling gettextpo-exports.c in a + VPATH build. + Reported by Charles Wilson . + +2006-10-24 Bruno Haible + + * gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number. + +2006-10-24 Bruno Haible + + * Makefile.am (AM_CPPFLAGS): Remove useless -I options. + +2006-10-23 Bruno Haible + + * Makefile.am (config.h): Update obstack_free hack. + +2006-10-23 Bruno Haible + + Fix "make dist". + * Makefile.am (nodist_noinst_HEADERS): Renamed from noinst_HEADERS. + (libgettextpo_la_SOURCES): Remove gettext-po.h. + +2006-10-21 Bruno Haible + + * gettext-po.h.in (struct po_error_handler): Add format attribute to + error, error_at_line fields. + * gettext-po.c (po_error_logger): Declare with format attribute. + +2006-10-20 Bruno Haible + + * Makefile.am (config.h): Treat .lo files like .o files. Define + DLL_VARIABLE to empty. Avoid warning when config.h is included twice. + Add special hack for obstack_free. + +2006-10-16 Bruno Haible + + * gettext-po.h.in: New file, moved here from ../src/. + * gettext-po.c: New file, moved here from ../src/. + * Makefile.am: New file, includings parts of ../src/Makefile.am. + * exported.sh.in: New file. + diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/c-strcaseeq.h gettext-0.19.7/gettext-tools/libgettextpo/c-strcaseeq.h --- gettext-0.19.6/gettext-tools/libgettextpo/c-strcaseeq.h 2015-09-11 03:04:29.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/c-strcaseeq.h 2015-12-27 23:09:03.000000000 +0000 @@ -33,9 +33,6 @@ # if C_CTYPE_ASCII # define CASEEQ(other,upper) \ (c_isupper (upper) ? ((other) & ~0x20) == (upper) : (other) == (upper)) -# elif C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE -# define CASEEQ(other,upper) \ - (c_isupper (upper) ? (other) == (upper) || (other) == (upper) - 'A' + 'a' : (other) == (upper)) # else # define CASEEQ(other,upper) \ (c_toupper (other) == (upper)) diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/gettext-po.in.h gettext-0.19.7/gettext-tools/libgettextpo/gettext-po.in.h --- gettext-0.19.6/gettext-tools/libgettextpo/gettext-po.in.h 2015-09-11 01:43:14.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/gettext-po.in.h 2015-12-27 22:58:08.000000000 +0000 @@ -28,7 +28,7 @@ /* =========================== Meta Information ============================ */ /* Version number: (major<<16) + (minor<<8) + subminor */ -#define LIBGETTEXTPO_VERSION 0x001306 +#define LIBGETTEXTPO_VERSION 0x001307 extern int libgettextpo_version; /* ================================= Types ================================= */ diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/gl_anylinked_list1.h gettext-0.19.7/gettext-tools/libgettextpo/gl_anylinked_list1.h --- gettext-0.19.6/gettext-tools/libgettextpo/gl_anylinked_list1.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/gl_anylinked_list1.h 2015-12-27 23:09:03.000000000 +0000 @@ -0,0 +1,48 @@ +/* Sequential list data type implemented by a linked list. + Copyright (C) 2006, 2009-2015 Free Software Foundation, Inc. + Written by Bruno Haible , 2006. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Common code of gl_linked_list.c and gl_linkedhash_list.c. */ + +/* -------------------------- gl_list_t Data Type -------------------------- */ + +/* Concrete list node implementation, valid for this file only. */ +struct gl_list_node_impl +{ +#if WITH_HASHTABLE + struct gl_hash_entry h; /* hash table entry fields; must be first */ +#endif + struct gl_list_node_impl *next; + struct gl_list_node_impl *prev; + const void *value; +}; + +/* Concrete gl_list_impl type, valid for this file only. */ +struct gl_list_impl +{ + struct gl_list_impl_base base; +#if WITH_HASHTABLE + /* A hash table: managed as an array of collision lists. */ + struct gl_hash_entry **table; + size_t table_size; +#endif + /* A circular list anchored at root. + The first node is = root.next, the last node is = root.prev. + The root's value is unused. */ + struct gl_list_node_impl root; + /* Number of list nodes, excluding the root. */ + size_t count; +}; diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/gl_anylinked_list2.h gettext-0.19.7/gettext-tools/libgettextpo/gl_anylinked_list2.h --- gettext-0.19.6/gettext-tools/libgettextpo/gl_anylinked_list2.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/gl_anylinked_list2.h 2015-12-27 23:09:03.000000000 +0000 @@ -0,0 +1,1195 @@ +/* Sequential list data type implemented by a linked list. + Copyright (C) 2006-2015 Free Software Foundation, Inc. + Written by Bruno Haible , 2006. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Common code of gl_linked_list.c and gl_linkedhash_list.c. */ + +/* If the symbol SIGNAL_SAFE_LIST is defined, the code is compiled in such + a way that a gl_list_t data structure may be used from within a signal + handler. The operations allowed in the signal handler are: + gl_list_iterator, gl_list_iterator_next, gl_list_iterator_free. + The list and node fields that are therefore accessed from the signal handler + are: + list->root, node->next, node->value. + We are careful to make modifications to these fields only in an order + that maintains the consistency of the list data structure at any moment, + and we use 'volatile' assignments to prevent the compiler from reordering + such assignments. */ +#ifdef SIGNAL_SAFE_LIST +# define ASYNCSAFE(type) *(volatile type *)& +#else +# define ASYNCSAFE(type) +#endif + +/* -------------------------- gl_list_t Data Type -------------------------- */ + +static gl_list_t +gl_linked_nx_create_empty (gl_list_implementation_t implementation, + gl_listelement_equals_fn equals_fn, + gl_listelement_hashcode_fn hashcode_fn, + gl_listelement_dispose_fn dispose_fn, + bool allow_duplicates) +{ + struct gl_list_impl *list = + (struct gl_list_impl *) malloc (sizeof (struct gl_list_impl)); + + if (list == NULL) + return NULL; + + list->base.vtable = implementation; + list->base.equals_fn = equals_fn; + list->base.hashcode_fn = hashcode_fn; + list->base.dispose_fn = dispose_fn; + list->base.allow_duplicates = allow_duplicates; +#if WITH_HASHTABLE + list->table_size = 11; + list->table = + (gl_hash_entry_t *) calloc (list->table_size, sizeof (gl_hash_entry_t)); + if (list->table == NULL) + goto fail; +#endif + list->root.next = &list->root; + list->root.prev = &list->root; + list->count = 0; + + return list; + +#if WITH_HASHTABLE + fail: + free (list); + return NULL; +#endif +} + +static gl_list_t +gl_linked_nx_create (gl_list_implementation_t implementation, + gl_listelement_equals_fn equals_fn, + gl_listelement_hashcode_fn hashcode_fn, + gl_listelement_dispose_fn dispose_fn, + bool allow_duplicates, + size_t count, const void **contents) +{ + struct gl_list_impl *list = + (struct gl_list_impl *) malloc (sizeof (struct gl_list_impl)); + gl_list_node_t tail; + + if (list == NULL) + return NULL; + + list->base.vtable = implementation; + list->base.equals_fn = equals_fn; + list->base.hashcode_fn = hashcode_fn; + list->base.dispose_fn = dispose_fn; + list->base.allow_duplicates = allow_duplicates; +#if WITH_HASHTABLE + { + size_t estimate = xsum (count, count / 2); /* 1.5 * count */ + if (estimate < 10) + estimate = 10; + list->table_size = next_prime (estimate); + if (size_overflow_p (xtimes (list->table_size, sizeof (gl_hash_entry_t)))) + goto fail1; + list->table = + (gl_hash_entry_t *) calloc (list->table_size, sizeof (gl_hash_entry_t)); + if (list->table == NULL) + goto fail1; + } +#endif + list->count = count; + tail = &list->root; + for (; count > 0; contents++, count--) + { + gl_list_node_t node = + (struct gl_list_node_impl *) malloc (sizeof (struct gl_list_node_impl)); + + if (node == NULL) + goto fail2; + + node->value = *contents; +#if WITH_HASHTABLE + node->h.hashcode = + (list->base.hashcode_fn != NULL + ? list->base.hashcode_fn (node->value) + : (size_t)(uintptr_t) node->value); + + /* Add node to the hash table. */ + if (add_to_bucket (list, node) < 0) + { + free (node); + goto fail2; + } +#endif + + /* Add node to the list. */ + node->prev = tail; + tail->next = node; + tail = node; + } + tail->next = &list->root; + list->root.prev = tail; + + return list; + + fail2: + { + gl_list_node_t node; + + for (node = tail; node != &list->root; ) + { + gl_list_node_t prev = node->prev; + + free (node); + node = prev; + } + } +#if WITH_HASHTABLE + free (list->table); + fail1: +#endif + free (list); + return NULL; +} + +static size_t _GL_ATTRIBUTE_PURE +gl_linked_size (gl_list_t list) +{ + return list->count; +} + +static const void * _GL_ATTRIBUTE_PURE +gl_linked_node_value (gl_list_t list, gl_list_node_t node) +{ + return node->value; +} + +static int +gl_linked_node_nx_set_value (gl_list_t list, gl_list_node_t node, + const void *elt) +{ +#if WITH_HASHTABLE + if (elt != node->value) + { + size_t new_hashcode = + (list->base.hashcode_fn != NULL + ? list->base.hashcode_fn (elt) + : (size_t)(uintptr_t) elt); + + if (new_hashcode != node->h.hashcode) + { + remove_from_bucket (list, node); + node->value = elt; + node->h.hashcode = new_hashcode; + if (add_to_bucket (list, node) < 0) + { + /* Out of memory. We removed node from a bucket but cannot add + it to another bucket. In order to avoid inconsistencies, we + must remove node entirely from the list. */ + gl_list_node_t before_removed = node->prev; + gl_list_node_t after_removed = node->next; + ASYNCSAFE(gl_list_node_t) before_removed->next = after_removed; + after_removed->prev = before_removed; + list->count--; + free (node); + return -1; + } + } + else + node->value = elt; + } +#else + node->value = elt; +#endif + return 0; +} + +static gl_list_node_t _GL_ATTRIBUTE_PURE +gl_linked_next_node (gl_list_t list, gl_list_node_t node) +{ + return (node->next != &list->root ? node->next : NULL); +} + +static gl_list_node_t _GL_ATTRIBUTE_PURE +gl_linked_previous_node (gl_list_t list, gl_list_node_t node) +{ + return (node->prev != &list->root ? node->prev : NULL); +} + +static const void * _GL_ATTRIBUTE_PURE +gl_linked_get_at (gl_list_t list, size_t position) +{ + size_t count = list->count; + gl_list_node_t node; + + if (!(position < count)) + /* Invalid argument. */ + abort (); + /* Here we know count > 0. */ + if (position <= ((count - 1) / 2)) + { + node = list->root.next; + for (; position > 0; position--) + node = node->next; + } + else + { + position = count - 1 - position; + node = list->root.prev; + for (; position > 0; position--) + node = node->prev; + } + return node->value; +} + +static gl_list_node_t +gl_linked_nx_set_at (gl_list_t list, size_t position, const void *elt) +{ + size_t count = list->count; + gl_list_node_t node; + + if (!(position < count)) + /* Invalid argument. */ + abort (); + /* Here we know count > 0. */ + if (position <= ((count - 1) / 2)) + { + node = list->root.next; + for (; position > 0; position--) + node = node->next; + } + else + { + position = count - 1 - position; + node = list->root.prev; + for (; position > 0; position--) + node = node->prev; + } +#if WITH_HASHTABLE + if (elt != node->value) + { + size_t new_hashcode = + (list->base.hashcode_fn != NULL + ? list->base.hashcode_fn (elt) + : (size_t)(uintptr_t) elt); + + if (new_hashcode != node->h.hashcode) + { + remove_from_bucket (list, node); + node->value = elt; + node->h.hashcode = new_hashcode; + if (add_to_bucket (list, node) < 0) + { + /* Out of memory. We removed node from a bucket but cannot add + it to another bucket. In order to avoid inconsistencies, we + must remove node entirely from the list. */ + gl_list_node_t before_removed = node->prev; + gl_list_node_t after_removed = node->next; + ASYNCSAFE(gl_list_node_t) before_removed->next = after_removed; + after_removed->prev = before_removed; + list->count--; + free (node); + return NULL; + } + } + else + node->value = elt; + } +#else + node->value = elt; +#endif + return node; +} + +static gl_list_node_t _GL_ATTRIBUTE_PURE +gl_linked_search_from_to (gl_list_t list, size_t start_index, size_t end_index, + const void *elt) +{ + size_t count = list->count; + + if (!(start_index <= end_index && end_index <= count)) + /* Invalid arguments. */ + abort (); + { +#if WITH_HASHTABLE + size_t hashcode = + (list->base.hashcode_fn != NULL + ? list->base.hashcode_fn (elt) + : (size_t)(uintptr_t) elt); + size_t bucket = hashcode % list->table_size; + gl_listelement_equals_fn equals = list->base.equals_fn; + + if (!list->base.allow_duplicates) + { + /* Look for the first match in the hash bucket. */ + gl_list_node_t found = NULL; + gl_list_node_t node; + + for (node = (gl_list_node_t) list->table[bucket]; + node != NULL; + node = (gl_list_node_t) node->h.hash_next) + if (node->h.hashcode == hashcode + && (equals != NULL + ? equals (elt, node->value) + : elt == node->value)) + { + found = node; + break; + } + if (start_index > 0) + /* Look whether found's index is < start_index. */ + for (node = list->root.next; ; node = node->next) + { + if (node == found) + return NULL; + if (--start_index == 0) + break; + } + if (end_index < count) + /* Look whether found's index is >= end_index. */ + { + end_index = count - end_index; + for (node = list->root.prev; ; node = node->prev) + { + if (node == found) + return NULL; + if (--end_index == 0) + break; + } + } + return found; + } + else + { + /* Look whether there is more than one match in the hash bucket. */ + bool multiple_matches = false; + gl_list_node_t first_match = NULL; + gl_list_node_t node; + + for (node = (gl_list_node_t) list->table[bucket]; + node != NULL; + node = (gl_list_node_t) node->h.hash_next) + if (node->h.hashcode == hashcode + && (equals != NULL + ? equals (elt, node->value) + : elt == node->value)) + { + if (first_match == NULL) + first_match = node; + else + { + multiple_matches = true; + break; + } + } + if (multiple_matches) + { + /* We need the match with the smallest index. But we don't have + a fast mapping node -> index. So we have to walk the list. */ + end_index -= start_index; + node = list->root.next; + for (; start_index > 0; start_index--) + node = node->next; + + for (; + end_index > 0; + node = node->next, end_index--) + if (node->h.hashcode == hashcode + && (equals != NULL + ? equals (elt, node->value) + : elt == node->value)) + return node; + /* The matches must have all been at indices < start_index or + >= end_index. */ + return NULL; + } + else + { + if (start_index > 0) + /* Look whether first_match's index is < start_index. */ + for (node = list->root.next; node != &list->root; node = node->next) + { + if (node == first_match) + return NULL; + if (--start_index == 0) + break; + } + if (end_index < list->count) + /* Look whether first_match's index is >= end_index. */ + { + end_index = list->count - end_index; + for (node = list->root.prev; ; node = node->prev) + { + if (node == first_match) + return NULL; + if (--end_index == 0) + break; + } + } + return first_match; + } + } +#else + gl_listelement_equals_fn equals = list->base.equals_fn; + gl_list_node_t node = list->root.next; + + end_index -= start_index; + for (; start_index > 0; start_index--) + node = node->next; + + if (equals != NULL) + { + for (; end_index > 0; node = node->next, end_index--) + if (equals (elt, node->value)) + return node; + } + else + { + for (; end_index > 0; node = node->next, end_index--) + if (elt == node->value) + return node; + } + return NULL; +#endif + } +} + +static size_t _GL_ATTRIBUTE_PURE +gl_linked_indexof_from_to (gl_list_t list, size_t start_index, size_t end_index, + const void *elt) +{ + size_t count = list->count; + + if (!(start_index <= end_index && end_index <= count)) + /* Invalid arguments. */ + abort (); + { +#if WITH_HASHTABLE + /* Here the hash table doesn't help much. It only allows us to minimize + the number of equals() calls, by looking up first the node and then + its index. */ + size_t hashcode = + (list->base.hashcode_fn != NULL + ? list->base.hashcode_fn (elt) + : (size_t)(uintptr_t) elt); + size_t bucket = hashcode % list->table_size; + gl_listelement_equals_fn equals = list->base.equals_fn; + gl_list_node_t node; + + /* First step: Look up the node. */ + if (!list->base.allow_duplicates) + { + /* Look for the first match in the hash bucket. */ + for (node = (gl_list_node_t) list->table[bucket]; + node != NULL; + node = (gl_list_node_t) node->h.hash_next) + if (node->h.hashcode == hashcode + && (equals != NULL + ? equals (elt, node->value) + : elt == node->value)) + break; + } + else + { + /* Look whether there is more than one match in the hash bucket. */ + bool multiple_matches = false; + gl_list_node_t first_match = NULL; + + for (node = (gl_list_node_t) list->table[bucket]; + node != NULL; + node = (gl_list_node_t) node->h.hash_next) + if (node->h.hashcode == hashcode + && (equals != NULL + ? equals (elt, node->value) + : elt == node->value)) + { + if (first_match == NULL) + first_match = node; + else + { + multiple_matches = true; + break; + } + } + if (multiple_matches) + { + /* We need the match with the smallest index. But we don't have + a fast mapping node -> index. So we have to walk the list. */ + size_t index; + + index = start_index; + node = list->root.next; + for (; start_index > 0; start_index--) + node = node->next; + + for (; + index < end_index; + node = node->next, index++) + if (node->h.hashcode == hashcode + && (equals != NULL + ? equals (elt, node->value) + : elt == node->value)) + return index; + /* The matches must have all been at indices < start_index or + >= end_index. */ + return (size_t)(-1); + } + node = first_match; + } + + /* Second step: Look up the index of the node. */ + if (node == NULL) + return (size_t)(-1); + else + { + size_t index = 0; + + for (; node->prev != &list->root; node = node->prev) + index++; + + if (index >= start_index && index < end_index) + return index; + else + return (size_t)(-1); + } +#else + gl_listelement_equals_fn equals = list->base.equals_fn; + size_t index = start_index; + gl_list_node_t node = list->root.next; + + for (; start_index > 0; start_index--) + node = node->next; + + if (equals != NULL) + { + for (; + index < end_index; + node = node->next, index++) + if (equals (elt, node->value)) + return index; + } + else + { + for (; + index < end_index; + node = node->next, index++) + if (elt == node->value) + return index; + } + return (size_t)(-1); +#endif + } +} + +static gl_list_node_t +gl_linked_nx_add_first (gl_list_t list, const void *elt) +{ + gl_list_node_t node = + (struct gl_list_node_impl *) malloc (sizeof (struct gl_list_node_impl)); + + if (node == NULL) + return NULL; + + ASYNCSAFE(const void *) node->value = elt; +#if WITH_HASHTABLE + node->h.hashcode = + (list->base.hashcode_fn != NULL + ? list->base.hashcode_fn (node->value) + : (size_t)(uintptr_t) node->value); + + /* Add node to the hash table. */ + if (add_to_bucket (list, node) < 0) + { + free (node); + return NULL; + } +#endif + + /* Add node to the list. */ + node->prev = &list->root; + ASYNCSAFE(gl_list_node_t) node->next = list->root.next; + node->next->prev = node; + ASYNCSAFE(gl_list_node_t) list->root.next = node; + list->count++; + +#if WITH_HASHTABLE + hash_resize_after_add (list); +#endif + + return node; +} + +static gl_list_node_t +gl_linked_nx_add_last (gl_list_t list, const void *elt) +{ + gl_list_node_t node = + (struct gl_list_node_impl *) malloc (sizeof (struct gl_list_node_impl)); + + if (node == NULL) + return NULL; + + ASYNCSAFE(const void *) node->value = elt; +#if WITH_HASHTABLE + node->h.hashcode = + (list->base.hashcode_fn != NULL + ? list->base.hashcode_fn (node->value) + : (size_t)(uintptr_t) node->value); + + /* Add node to the hash table. */ + if (add_to_bucket (list, node) < 0) + { + free (node); + return NULL; + } +#endif + + /* Add node to the list. */ + ASYNCSAFE(gl_list_node_t) node->next = &list->root; + node->prev = list->root.prev; + ASYNCSAFE(gl_list_node_t) node->prev->next = node; + list->root.prev = node; + list->count++; + +#if WITH_HASHTABLE + hash_resize_after_add (list); +#endif + + return node; +} + +static gl_list_node_t +gl_linked_nx_add_before (gl_list_t list, gl_list_node_t node, const void *elt) +{ + gl_list_node_t new_node = + (struct gl_list_node_impl *) malloc (sizeof (struct gl_list_node_impl)); + + if (new_node == NULL) + return NULL; + + ASYNCSAFE(const void *) new_node->value = elt; +#if WITH_HASHTABLE + new_node->h.hashcode = + (list->base.hashcode_fn != NULL + ? list->base.hashcode_fn (new_node->value) + : (size_t)(uintptr_t) new_node->value); + + /* Add new_node to the hash table. */ + if (add_to_bucket (list, new_node) < 0) + { + free (new_node); + return NULL; + } +#endif + + /* Add new_node to the list. */ + ASYNCSAFE(gl_list_node_t) new_node->next = node; + new_node->prev = node->prev; + ASYNCSAFE(gl_list_node_t) new_node->prev->next = new_node; + node->prev = new_node; + list->count++; + +#if WITH_HASHTABLE + hash_resize_after_add (list); +#endif + + return new_node; +} + +static gl_list_node_t +gl_linked_nx_add_after (gl_list_t list, gl_list_node_t node, const void *elt) +{ + gl_list_node_t new_node = + (struct gl_list_node_impl *) malloc (sizeof (struct gl_list_node_impl)); + + if (new_node == NULL) + return NULL; + + ASYNCSAFE(const void *) new_node->value = elt; +#if WITH_HASHTABLE + new_node->h.hashcode = + (list->base.hashcode_fn != NULL + ? list->base.hashcode_fn (new_node->value) + : (size_t)(uintptr_t) new_node->value); + + /* Add new_node to the hash table. */ + if (add_to_bucket (list, new_node) < 0) + { + free (new_node); + return NULL; + } +#endif + + /* Add new_node to the list. */ + new_node->prev = node; + ASYNCSAFE(gl_list_node_t) new_node->next = node->next; + new_node->next->prev = new_node; + ASYNCSAFE(gl_list_node_t) node->next = new_node; + list->count++; + +#if WITH_HASHTABLE + hash_resize_after_add (list); +#endif + + return new_node; +} + +static gl_list_node_t +gl_linked_nx_add_at (gl_list_t list, size_t position, const void *elt) +{ + size_t count = list->count; + gl_list_node_t new_node; + + if (!(position <= count)) + /* Invalid argument. */ + abort (); + + new_node = (struct gl_list_node_impl *) malloc (sizeof (struct gl_list_node_impl)); + if (new_node == NULL) + return NULL; + + ASYNCSAFE(const void *) new_node->value = elt; +#if WITH_HASHTABLE + new_node->h.hashcode = + (list->base.hashcode_fn != NULL + ? list->base.hashcode_fn (new_node->value) + : (size_t)(uintptr_t) new_node->value); + + /* Add new_node to the hash table. */ + if (add_to_bucket (list, new_node) < 0) + { + free (new_node); + return NULL; + } +#endif + + /* Add new_node to the list. */ + if (position <= (count / 2)) + { + gl_list_node_t node; + + node = &list->root; + for (; position > 0; position--) + node = node->next; + new_node->prev = node; + ASYNCSAFE(gl_list_node_t) new_node->next = node->next; + new_node->next->prev = new_node; + ASYNCSAFE(gl_list_node_t) node->next = new_node; + } + else + { + gl_list_node_t node; + + position = count - position; + node = &list->root; + for (; position > 0; position--) + node = node->prev; + ASYNCSAFE(gl_list_node_t) new_node->next = node; + new_node->prev = node->prev; + ASYNCSAFE(gl_list_node_t) new_node->prev->next = new_node; + node->prev = new_node; + } + list->count++; + +#if WITH_HASHTABLE + hash_resize_after_add (list); +#endif + + return new_node; +} + +static bool +gl_linked_remove_node (gl_list_t list, gl_list_node_t node) +{ + gl_list_node_t prev; + gl_list_node_t next; + +#if WITH_HASHTABLE + /* Remove node from the hash table. */ + remove_from_bucket (list, node); +#endif + + /* Remove node from the list. */ + prev = node->prev; + next = node->next; + + ASYNCSAFE(gl_list_node_t) prev->next = next; + next->prev = prev; + list->count--; + + if (list->base.dispose_fn != NULL) + list->base.dispose_fn (node->value); + free (node); + return true; +} + +static bool +gl_linked_remove_at (gl_list_t list, size_t position) +{ + size_t count = list->count; + gl_list_node_t removed_node; + + if (!(position < count)) + /* Invalid argument. */ + abort (); + /* Here we know count > 0. */ + if (position <= ((count - 1) / 2)) + { + gl_list_node_t node; + gl_list_node_t after_removed; + + node = &list->root; + for (; position > 0; position--) + node = node->next; + removed_node = node->next; + after_removed = node->next->next; + ASYNCSAFE(gl_list_node_t) node->next = after_removed; + after_removed->prev = node; + } + else + { + gl_list_node_t node; + gl_list_node_t before_removed; + + position = count - 1 - position; + node = &list->root; + for (; position > 0; position--) + node = node->prev; + removed_node = node->prev; + before_removed = node->prev->prev; + node->prev = before_removed; + ASYNCSAFE(gl_list_node_t) before_removed->next = node; + } +#if WITH_HASHTABLE + remove_from_bucket (list, removed_node); +#endif + list->count--; + + if (list->base.dispose_fn != NULL) + list->base.dispose_fn (removed_node->value); + free (removed_node); + return true; +} + +static bool +gl_linked_remove (gl_list_t list, const void *elt) +{ + gl_list_node_t node = gl_linked_search_from_to (list, 0, list->count, elt); + + if (node != NULL) + return gl_linked_remove_node (list, node); + else + return false; +} + +static void +gl_linked_list_free (gl_list_t list) +{ + gl_listelement_dispose_fn dispose = list->base.dispose_fn; + gl_list_node_t node; + + for (node = list->root.next; node != &list->root; ) + { + gl_list_node_t next = node->next; + if (dispose != NULL) + dispose (node->value); + free (node); + node = next; + } +#if WITH_HASHTABLE + free (list->table); +#endif + free (list); +} + +/* --------------------- gl_list_iterator_t Data Type --------------------- */ + +static gl_list_iterator_t +gl_linked_iterator (gl_list_t list) +{ + gl_list_iterator_t result; + + result.vtable = list->base.vtable; + result.list = list; + result.p = list->root.next; + result.q = &list->root; +#ifdef lint + result.i = 0; + result.j = 0; + result.count = 0; +#endif + + return result; +} + +static gl_list_iterator_t +gl_linked_iterator_from_to (gl_list_t list, + size_t start_index, size_t end_index) +{ + gl_list_iterator_t result; + size_t n1, n2, n3; + + if (!(start_index <= end_index && end_index <= list->count)) + /* Invalid arguments. */ + abort (); + result.vtable = list->base.vtable; + result.list = list; + n1 = start_index; + n2 = end_index - start_index; + n3 = list->count - end_index; + /* Find the maximum among n1, n2, n3, so as to reduce the number of + loop iterations to n1 + n2 + n3 - max(n1,n2,n3). */ + if (n1 > n2 && n1 > n3) + { + /* n1 is the maximum, use n2 and n3. */ + gl_list_node_t node; + size_t i; + + node = &list->root; + for (i = n3; i > 0; i--) + node = node->prev; + result.q = node; + for (i = n2; i > 0; i--) + node = node->prev; + result.p = node; + } + else if (n2 > n3) + { + /* n2 is the maximum, use n1 and n3. */ + gl_list_node_t node; + size_t i; + + node = list->root.next; + for (i = n1; i > 0; i--) + node = node->next; + result.p = node; + + node = &list->root; + for (i = n3; i > 0; i--) + node = node->prev; + result.q = node; + } + else + { + /* n3 is the maximum, use n1 and n2. */ + gl_list_node_t node; + size_t i; + + node = list->root.next; + for (i = n1; i > 0; i--) + node = node->next; + result.p = node; + for (i = n2; i > 0; i--) + node = node->next; + result.q = node; + } + +#ifdef lint + result.i = 0; + result.j = 0; + result.count = 0; +#endif + + return result; +} + +static bool +gl_linked_iterator_next (gl_list_iterator_t *iterator, + const void **eltp, gl_list_node_t *nodep) +{ + if (iterator->p != iterator->q) + { + gl_list_node_t node = (gl_list_node_t) iterator->p; + *eltp = node->value; + if (nodep != NULL) + *nodep = node; + iterator->p = node->next; + return true; + } + else + return false; +} + +static void +gl_linked_iterator_free (gl_list_iterator_t *iterator) +{ +} + +/* ---------------------- Sorted gl_list_t Data Type ---------------------- */ + +static gl_list_node_t _GL_ATTRIBUTE_PURE +gl_linked_sortedlist_search (gl_list_t list, gl_listelement_compar_fn compar, + const void *elt) +{ + gl_list_node_t node; + + for (node = list->root.next; node != &list->root; node = node->next) + { + int cmp = compar (node->value, elt); + + if (cmp > 0) + break; + if (cmp == 0) + return node; + } + return NULL; +} + +static gl_list_node_t _GL_ATTRIBUTE_PURE +gl_linked_sortedlist_search_from_to (gl_list_t list, + gl_listelement_compar_fn compar, + size_t low, size_t high, + const void *elt) +{ + size_t count = list->count; + + if (!(low <= high && high <= list->count)) + /* Invalid arguments. */ + abort (); + + high -= low; + if (high > 0) + { + /* Here we know low < count. */ + size_t position = low; + gl_list_node_t node; + + if (position <= ((count - 1) / 2)) + { + node = list->root.next; + for (; position > 0; position--) + node = node->next; + } + else + { + position = count - 1 - position; + node = list->root.prev; + for (; position > 0; position--) + node = node->prev; + } + + do + { + int cmp = compar (node->value, elt); + + if (cmp > 0) + break; + if (cmp == 0) + return node; + node = node->next; + } + while (--high > 0); + } + return NULL; +} + +static size_t _GL_ATTRIBUTE_PURE +gl_linked_sortedlist_indexof (gl_list_t list, gl_listelement_compar_fn compar, + const void *elt) +{ + gl_list_node_t node; + size_t index; + + for (node = list->root.next, index = 0; + node != &list->root; + node = node->next, index++) + { + int cmp = compar (node->value, elt); + + if (cmp > 0) + break; + if (cmp == 0) + return index; + } + return (size_t)(-1); +} + +static size_t _GL_ATTRIBUTE_PURE +gl_linked_sortedlist_indexof_from_to (gl_list_t list, + gl_listelement_compar_fn compar, + size_t low, size_t high, + const void *elt) +{ + size_t count = list->count; + + if (!(low <= high && high <= list->count)) + /* Invalid arguments. */ + abort (); + + high -= low; + if (high > 0) + { + /* Here we know low < count. */ + size_t index = low; + size_t position = low; + gl_list_node_t node; + + if (position <= ((count - 1) / 2)) + { + node = list->root.next; + for (; position > 0; position--) + node = node->next; + } + else + { + position = count - 1 - position; + node = list->root.prev; + for (; position > 0; position--) + node = node->prev; + } + + do + { + int cmp = compar (node->value, elt); + + if (cmp > 0) + break; + if (cmp == 0) + return index; + node = node->next; + index++; + } + while (--high > 0); + } + return (size_t)(-1); +} + +static gl_list_node_t +gl_linked_sortedlist_nx_add (gl_list_t list, gl_listelement_compar_fn compar, + const void *elt) +{ + gl_list_node_t node; + + for (node = list->root.next; node != &list->root; node = node->next) + if (compar (node->value, elt) >= 0) + return gl_linked_nx_add_before (list, node, elt); + return gl_linked_nx_add_last (list, elt); +} + +static bool +gl_linked_sortedlist_remove (gl_list_t list, gl_listelement_compar_fn compar, + const void *elt) +{ + gl_list_node_t node; + + for (node = list->root.next; node != &list->root; node = node->next) + { + int cmp = compar (node->value, elt); + + if (cmp > 0) + break; + if (cmp == 0) + return gl_linked_remove_node (list, node); + } + return false; +} diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/gl_linked_list.c gettext-0.19.7/gettext-tools/libgettextpo/gl_linked_list.c --- gettext-0.19.6/gettext-tools/libgettextpo/gl_linked_list.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/gl_linked_list.c 2015-12-27 23:09:03.000000000 +0000 @@ -0,0 +1,64 @@ +/* Sequential list data type implemented by a linked list. + Copyright (C) 2006, 2008-2015 Free Software Foundation, Inc. + Written by Bruno Haible , 2006. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +/* Specification. */ +#include "gl_linked_list.h" + +#include + +/* -------------------------- gl_list_t Data Type -------------------------- */ + +/* Generic linked list code. */ +#include "gl_anylinked_list1.h" +#include "gl_anylinked_list2.h" + + +const struct gl_list_implementation gl_linked_list_implementation = + { + gl_linked_nx_create_empty, + gl_linked_nx_create, + gl_linked_size, + gl_linked_node_value, + gl_linked_node_nx_set_value, + gl_linked_next_node, + gl_linked_previous_node, + gl_linked_get_at, + gl_linked_nx_set_at, + gl_linked_search_from_to, + gl_linked_indexof_from_to, + gl_linked_nx_add_first, + gl_linked_nx_add_last, + gl_linked_nx_add_before, + gl_linked_nx_add_after, + gl_linked_nx_add_at, + gl_linked_remove_node, + gl_linked_remove_at, + gl_linked_remove, + gl_linked_list_free, + gl_linked_iterator, + gl_linked_iterator_from_to, + gl_linked_iterator_next, + gl_linked_iterator_free, + gl_linked_sortedlist_search, + gl_linked_sortedlist_search_from_to, + gl_linked_sortedlist_indexof, + gl_linked_sortedlist_indexof_from_to, + gl_linked_sortedlist_nx_add, + gl_linked_sortedlist_remove + }; diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/gl_linked_list.h gettext-0.19.7/gettext-tools/libgettextpo/gl_linked_list.h --- gettext-0.19.6/gettext-tools/libgettextpo/gl_linked_list.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/gl_linked_list.h 2015-12-27 23:09:03.000000000 +0000 @@ -0,0 +1,34 @@ +/* Sequential list data type implemented by a linked list. + Copyright (C) 2006, 2009-2015 Free Software Foundation, Inc. + Written by Bruno Haible , 2006. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#ifndef _GL_LINKED_LIST_H +#define _GL_LINKED_LIST_H + +#include "gl_list.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern const struct gl_list_implementation gl_linked_list_implementation; +#define GL_LINKED_LIST &gl_linked_list_implementation + +#ifdef __cplusplus +} +#endif + +#endif /* _GL_LINKED_LIST_H */ diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/gl_list.c gettext-0.19.7/gettext-tools/libgettextpo/gl_list.c --- gettext-0.19.6/gettext-tools/libgettextpo/gl_list.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/gl_list.c 2015-12-27 23:09:03.000000000 +0000 @@ -0,0 +1,3 @@ +#include +#define GL_LIST_INLINE _GL_EXTERN_INLINE +#include "gl_list.h" diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/gl_list.h gettext-0.19.7/gettext-tools/libgettextpo/gl_list.h --- gettext-0.19.6/gettext-tools/libgettextpo/gl_list.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/gl_list.h 2015-12-27 23:09:03.000000000 +0000 @@ -0,0 +1,841 @@ +/* Abstract sequential list data type. -*- coding: utf-8 -*- + Copyright (C) 2006-2015 Free Software Foundation, Inc. + Written by Bruno Haible , 2006. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#ifndef _GL_LIST_H +#define _GL_LIST_H + +#include +#include + +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif +_GL_INLINE_HEADER_BEGIN +#ifndef GL_LIST_INLINE +# define GL_LIST_INLINE _GL_INLINE +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/* gl_list is an abstract list data type. It can contain any number of + objects ('void *' or 'const void *' pointers) in any given order. + Duplicates are allowed, but can optionally be forbidden. + + There are several implementations of this list datatype, optimized for + different operations or for memory. You can start using the simplest list + implementation, GL_ARRAY_LIST, and switch to a different implementation + later, when you realize which operations are performed the most frequently. + The API of the different implementations is exactly the same; when + switching to a different implementation, you only have to change the + gl_list_create call. + + The implementations are: + GL_ARRAY_LIST a growable array + GL_CARRAY_LIST a growable circular array + GL_LINKED_LIST a linked list + GL_AVLTREE_LIST a binary tree (AVL tree) + GL_RBTREE_LIST a binary tree (red-black tree) + GL_LINKEDHASH_LIST a hash table with a linked list + GL_AVLTREEHASH_LIST a hash table with a binary tree (AVL tree) + GL_RBTREEHASH_LIST a hash table with a binary tree (red-black tree) + + The memory consumption is asymptotically the same: O(1) for every object + in the list. When looking more closely at the average memory consumed + for an object, GL_ARRAY_LIST is the most compact representation, and + GL_LINKEDHASH_LIST and GL_TREEHASH_LIST need more memory. + + The guaranteed average performance of the operations is, for a list of + n elements: + + Operation ARRAY LINKED TREE LINKEDHASH TREEHASH + CARRAY with|without with|without + duplicates duplicates + + gl_list_size O(1) O(1) O(1) O(1) O(1) + gl_list_node_value O(1) O(1) O(1) O(1) O(1) + gl_list_node_set_value O(1) O(1) O(1) O(1) O((log n)²)/O(1) + gl_list_next_node O(1) O(1) O(log n) O(1) O(log n) + gl_list_previous_node O(1) O(1) O(log n) O(1) O(log n) + gl_list_get_at O(1) O(n) O(log n) O(n) O(log n) + gl_list_set_at O(1) O(n) O(log n) O(n) O((log n)²)/O(log n) + gl_list_search O(n) O(n) O(n) O(n)/O(1) O(log n)/O(1) + gl_list_search_from O(n) O(n) O(n) O(n)/O(1) O((log n)²)/O(log n) + gl_list_search_from_to O(n) O(n) O(n) O(n)/O(1) O((log n)²)/O(log n) + gl_list_indexof O(n) O(n) O(n) O(n) O(log n) + gl_list_indexof_from O(n) O(n) O(n) O(n) O((log n)²)/O(log n) + gl_list_indexof_from_to O(n) O(n) O(n) O(n) O((log n)²)/O(log n) + gl_list_add_first O(n)/O(1) O(1) O(log n) O(1) O((log n)²)/O(log n) + gl_list_add_last O(1) O(1) O(log n) O(1) O((log n)²)/O(log n) + gl_list_add_before O(n) O(1) O(log n) O(1) O((log n)²)/O(log n) + gl_list_add_after O(n) O(1) O(log n) O(1) O((log n)²)/O(log n) + gl_list_add_at O(n) O(n) O(log n) O(n) O((log n)²)/O(log n) + gl_list_remove_node O(n) O(1) O(log n) O(n)/O(1) O((log n)²)/O(log n) + gl_list_remove_at O(n) O(n) O(log n) O(n) O((log n)²)/O(log n) + gl_list_remove O(n) O(n) O(n) O(n)/O(1) O((log n)²)/O(log n) + gl_list_iterator O(1) O(1) O(log n) O(1) O(log n) + gl_list_iterator_from_to O(1) O(n) O(log n) O(n) O(log n) + gl_list_iterator_next O(1) O(1) O(log n) O(1) O(log n) + gl_sortedlist_search O(log n) O(n) O(log n) O(n) O(log n) + gl_sortedlist_search_from O(log n) O(n) O(log n) O(n) O(log n) + gl_sortedlist_indexof O(log n) O(n) O(log n) O(n) O(log n) + gl_sortedlist_indexof_fro O(log n) O(n) O(log n) O(n) O(log n) + gl_sortedlist_add O(n) O(n) O(log n) O(n) O((log n)²)/O(log n) + gl_sortedlist_remove O(n) O(n) O(log n) O(n) O((log n)²)/O(log n) + */ + +/* -------------------------- gl_list_t Data Type -------------------------- */ + +/* Type of function used to compare two elements. + NULL denotes pointer comparison. */ +typedef bool (*gl_listelement_equals_fn) (const void *elt1, const void *elt2); + +/* Type of function used to compute a hash code. + NULL denotes a function that depends only on the pointer itself. */ +typedef size_t (*gl_listelement_hashcode_fn) (const void *elt); + +/* Type of function used to dispose an element once it's removed from a list. + NULL denotes a no-op. */ +typedef void (*gl_listelement_dispose_fn) (const void *elt); + +struct gl_list_impl; +/* Type representing an entire list. */ +typedef struct gl_list_impl * gl_list_t; + +struct gl_list_node_impl; +/* Type representing the position of an element in the list, in a way that + is more adapted to the list implementation than a plain index. + Note: It is invalidated by insertions and removals! */ +typedef struct gl_list_node_impl * gl_list_node_t; + +struct gl_list_implementation; +/* Type representing a list datatype implementation. */ +typedef const struct gl_list_implementation * gl_list_implementation_t; + +#if 0 /* Unless otherwise specified, these are defined inline below. */ + +/* Create an empty list. + IMPLEMENTATION is one of GL_ARRAY_LIST, GL_CARRAY_LIST, GL_LINKED_LIST, + GL_AVLTREE_LIST, GL_RBTREE_LIST, GL_LINKEDHASH_LIST, GL_AVLTREEHASH_LIST, + GL_RBTREEHASH_LIST. + EQUALS_FN is an element comparison function or NULL. + HASHCODE_FN is an element hash code function or NULL. + DISPOSE_FN is an element disposal function or NULL. + ALLOW_DUPLICATES is false if duplicate elements shall not be allowed in + the list. The implementation may verify this at runtime. */ +/* declared in gl_xlist.h */ +extern gl_list_t gl_list_create_empty (gl_list_implementation_t implementation, + gl_listelement_equals_fn equals_fn, + gl_listelement_hashcode_fn hashcode_fn, + gl_listelement_dispose_fn dispose_fn, + bool allow_duplicates); +/* Likewise. Return NULL upon out-of-memory. */ +extern gl_list_t gl_list_nx_create_empty (gl_list_implementation_t implementation, + gl_listelement_equals_fn equals_fn, + gl_listelement_hashcode_fn hashcode_fn, + gl_listelement_dispose_fn dispose_fn, + bool allow_duplicates); + +/* Create a list with given contents. + IMPLEMENTATION is one of GL_ARRAY_LIST, GL_CARRAY_LIST, GL_LINKED_LIST, + GL_AVLTREE_LIST, GL_RBTREE_LIST, GL_LINKEDHASH_LIST, GL_AVLTREEHASH_LIST, + GL_RBTREEHASH_LIST. + EQUALS_FN is an element comparison function or NULL. + HASHCODE_FN is an element hash code function or NULL. + DISPOSE_FN is an element disposal function or NULL. + ALLOW_DUPLICATES is false if duplicate elements shall not be allowed in + the list. The implementation may verify this at runtime. + COUNT is the number of initial elements. + CONTENTS[0..COUNT-1] is the initial contents. */ +/* declared in gl_xlist.h */ +extern gl_list_t gl_list_create (gl_list_implementation_t implementation, + gl_listelement_equals_fn equals_fn, + gl_listelement_hashcode_fn hashcode_fn, + gl_listelement_dispose_fn dispose_fn, + bool allow_duplicates, + size_t count, const void **contents); +/* Likewise. Return NULL upon out-of-memory. */ +extern gl_list_t gl_list_nx_create (gl_list_implementation_t implementation, + gl_listelement_equals_fn equals_fn, + gl_listelement_hashcode_fn hashcode_fn, + gl_listelement_dispose_fn dispose_fn, + bool allow_duplicates, + size_t count, const void **contents); + +/* Return the current number of elements in a list. */ +extern size_t gl_list_size (gl_list_t list); + +/* Return the element value represented by a list node. */ +extern const void * gl_list_node_value (gl_list_t list, gl_list_node_t node); + +/* Replace the element value represented by a list node. */ +/* declared in gl_xlist.h */ +extern void gl_list_node_set_value (gl_list_t list, gl_list_node_t node, + const void *elt); +/* Likewise. Return 0 upon success, -1 upon out-of-memory. */ +extern int gl_list_node_nx_set_value (gl_list_t list, gl_list_node_t node, + const void *elt) +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + __attribute__ ((__warn_unused_result__)) +#endif + ; + +/* Return the node immediately after the given node in the list, or NULL + if the given node is the last (rightmost) one in the list. */ +extern gl_list_node_t gl_list_next_node (gl_list_t list, gl_list_node_t node); + +/* Return the node immediately before the given node in the list, or NULL + if the given node is the first (leftmost) one in the list. */ +extern gl_list_node_t gl_list_previous_node (gl_list_t list, gl_list_node_t node); + +/* Return the element at a given position in the list. + POSITION must be >= 0 and < gl_list_size (list). */ +extern const void * gl_list_get_at (gl_list_t list, size_t position); + +/* Replace the element at a given position in the list. + POSITION must be >= 0 and < gl_list_size (list). + Return its node. */ +/* declared in gl_xlist.h */ +extern gl_list_node_t gl_list_set_at (gl_list_t list, size_t position, + const void *elt); +/* Likewise. Return NULL upon out-of-memory. */ +extern gl_list_node_t gl_list_nx_set_at (gl_list_t list, size_t position, + const void *elt) +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + __attribute__ ((__warn_unused_result__)) +#endif + ; + +/* Search whether an element is already in the list. + Return its node if found, or NULL if not present in the list. */ +extern gl_list_node_t gl_list_search (gl_list_t list, const void *elt); + +/* Search whether an element is already in the list, + at a position >= START_INDEX. + Return its node if found, or NULL if not present in the list. */ +extern gl_list_node_t gl_list_search_from (gl_list_t list, size_t start_index, + const void *elt); + +/* Search whether an element is already in the list, + at a position >= START_INDEX and < END_INDEX. + Return its node if found, or NULL if not present in the list. */ +extern gl_list_node_t gl_list_search_from_to (gl_list_t list, + size_t start_index, + size_t end_index, + const void *elt); + +/* Search whether an element is already in the list. + Return its position if found, or (size_t)(-1) if not present in the list. */ +extern size_t gl_list_indexof (gl_list_t list, const void *elt); + +/* Search whether an element is already in the list, + at a position >= START_INDEX. + Return its position if found, or (size_t)(-1) if not present in the list. */ +extern size_t gl_list_indexof_from (gl_list_t list, size_t start_index, + const void *elt); + +/* Search whether an element is already in the list, + at a position >= START_INDEX and < END_INDEX. + Return its position if found, or (size_t)(-1) if not present in the list. */ +extern size_t gl_list_indexof_from_to (gl_list_t list, + size_t start_index, size_t end_index, + const void *elt); + +/* Add an element as the first element of the list. + Return its node. */ +/* declared in gl_xlist.h */ +extern gl_list_node_t gl_list_add_first (gl_list_t list, const void *elt); +/* Likewise. Return NULL upon out-of-memory. */ +extern gl_list_node_t gl_list_nx_add_first (gl_list_t list, const void *elt) +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + __attribute__ ((__warn_unused_result__)) +#endif + ; + +/* Add an element as the last element of the list. + Return its node. */ +/* declared in gl_xlist.h */ +extern gl_list_node_t gl_list_add_last (gl_list_t list, const void *elt); +/* Likewise. Return NULL upon out-of-memory. */ +extern gl_list_node_t gl_list_nx_add_last (gl_list_t list, const void *elt) +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + __attribute__ ((__warn_unused_result__)) +#endif + ; + +/* Add an element before a given element node of the list. + Return its node. */ +/* declared in gl_xlist.h */ +extern gl_list_node_t gl_list_add_before (gl_list_t list, gl_list_node_t node, + const void *elt); +/* Likewise. Return NULL upon out-of-memory. */ +extern gl_list_node_t gl_list_nx_add_before (gl_list_t list, + gl_list_node_t node, + const void *elt) +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + __attribute__ ((__warn_unused_result__)) +#endif + ; + +/* Add an element after a given element node of the list. + Return its node. */ +/* declared in gl_xlist.h */ +extern gl_list_node_t gl_list_add_after (gl_list_t list, gl_list_node_t node, + const void *elt); +/* Likewise. Return NULL upon out-of-memory. */ +extern gl_list_node_t gl_list_nx_add_after (gl_list_t list, gl_list_node_t node, + const void *elt) +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + __attribute__ ((__warn_unused_result__)) +#endif + ; + +/* Add an element at a given position in the list. + POSITION must be >= 0 and <= gl_list_size (list). */ +/* declared in gl_xlist.h */ +extern gl_list_node_t gl_list_add_at (gl_list_t list, size_t position, + const void *elt); +/* Likewise. Return NULL upon out-of-memory. */ +extern gl_list_node_t gl_list_nx_add_at (gl_list_t list, size_t position, + const void *elt) +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + __attribute__ ((__warn_unused_result__)) +#endif + ; + +/* Remove an element from the list. + Return true. */ +extern bool gl_list_remove_node (gl_list_t list, gl_list_node_t node); + +/* Remove an element at a given position from the list. + POSITION must be >= 0 and < gl_list_size (list). + Return true. */ +extern bool gl_list_remove_at (gl_list_t list, size_t position); + +/* Search and remove an element from the list. + Return true if it was found and removed. */ +extern bool gl_list_remove (gl_list_t list, const void *elt); + +/* Free an entire list. + (But this call does not free the elements of the list.) */ +extern void gl_list_free (gl_list_t list); + +#endif /* End of inline and gl_xlist.h-defined functions. */ + +/* --------------------- gl_list_iterator_t Data Type --------------------- */ + +/* Functions for iterating through a list. */ + +/* Type of an iterator that traverses a list. + This is a fixed-size struct, so that creation of an iterator doesn't need + memory allocation on the heap. */ +typedef struct +{ + /* For fast dispatch of gl_list_iterator_next. */ + const struct gl_list_implementation *vtable; + /* For detecting whether the last returned element was removed. */ + gl_list_t list; + size_t count; + /* Other, implementation-private fields. */ + void *p; void *q; + size_t i; size_t j; +} gl_list_iterator_t; + +#if 0 /* These are defined inline below. */ + +/* Create an iterator traversing a list. + The list contents must not be modified while the iterator is in use, + except for replacing or removing the last returned element. */ +extern gl_list_iterator_t gl_list_iterator (gl_list_t list); + +/* Create an iterator traversing the element with indices i, + start_index <= i < end_index, of a list. + The list contents must not be modified while the iterator is in use, + except for replacing or removing the last returned element. */ +extern gl_list_iterator_t gl_list_iterator_from_to (gl_list_t list, + size_t start_index, + size_t end_index); + +/* If there is a next element, store the next element in *ELTP, store its + node in *NODEP if NODEP is non-NULL, advance the iterator and return true. + Otherwise, return false. */ +extern bool gl_list_iterator_next (gl_list_iterator_t *iterator, + const void **eltp, gl_list_node_t *nodep); + +/* Free an iterator. */ +extern void gl_list_iterator_free (gl_list_iterator_t *iterator); + +#endif /* End of inline functions. */ + +/* ---------------------- Sorted gl_list_t Data Type ---------------------- */ + +/* The following functions are for lists without duplicates where the + order is given by a sort criterion. */ + +/* Type of function used to compare two elements. Same as for qsort(). + NULL denotes pointer comparison. */ +typedef int (*gl_listelement_compar_fn) (const void *elt1, const void *elt2); + +#if 0 /* Unless otherwise specified, these are defined inline below. */ + +/* Search whether an element is already in the list. + The list is assumed to be sorted with COMPAR. + Return its node if found, or NULL if not present in the list. + If the list contains several copies of ELT, the node of the leftmost one is + returned. */ +extern gl_list_node_t gl_sortedlist_search (gl_list_t list, + gl_listelement_compar_fn compar, + const void *elt); + +/* Search whether an element is already in the list. + The list is assumed to be sorted with COMPAR. + Only list elements with indices >= START_INDEX and < END_INDEX are + considered; the implementation uses these bounds to minimize the number + of COMPAR invocations. + Return its node if found, or NULL if not present in the list. + If the list contains several copies of ELT, the node of the leftmost one is + returned. */ +extern gl_list_node_t gl_sortedlist_search_from_to (gl_list_t list, + gl_listelement_compar_fn compar, + size_t start_index, + size_t end_index, + const void *elt); + +/* Search whether an element is already in the list. + The list is assumed to be sorted with COMPAR. + Return its position if found, or (size_t)(-1) if not present in the list. + If the list contains several copies of ELT, the position of the leftmost one + is returned. */ +extern size_t gl_sortedlist_indexof (gl_list_t list, + gl_listelement_compar_fn compar, + const void *elt); + +/* Search whether an element is already in the list. + The list is assumed to be sorted with COMPAR. + Only list elements with indices >= START_INDEX and < END_INDEX are + considered; the implementation uses these bounds to minimize the number + of COMPAR invocations. + Return its position if found, or (size_t)(-1) if not present in the list. + If the list contains several copies of ELT, the position of the leftmost one + is returned. */ +extern size_t gl_sortedlist_indexof_from_to (gl_list_t list, + gl_listelement_compar_fn compar, + size_t start_index, + size_t end_index, + const void *elt); + +/* Add an element at the appropriate position in the list. + The list is assumed to be sorted with COMPAR. + Return its node. */ +/* declared in gl_xlist.h */ +extern gl_list_node_t gl_sortedlist_add (gl_list_t list, + gl_listelement_compar_fn compar, + const void *elt); +/* Likewise. Return NULL upon out-of-memory. */ +extern gl_list_node_t gl_sortedlist_nx_add (gl_list_t list, + gl_listelement_compar_fn compar, + const void *elt) +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + __attribute__ ((__warn_unused_result__)) +#endif + ; + +/* Search and remove an element from the list. + The list is assumed to be sorted with COMPAR. + Return true if it was found and removed. + If the list contains several copies of ELT, only the leftmost one is + removed. */ +extern bool gl_sortedlist_remove (gl_list_t list, + gl_listelement_compar_fn compar, + const void *elt); + +#endif /* End of inline and gl_xlist.h-defined functions. */ + +/* ------------------------ Implementation Details ------------------------ */ + +struct gl_list_implementation +{ + /* gl_list_t functions. */ + gl_list_t (*nx_create_empty) (gl_list_implementation_t implementation, + gl_listelement_equals_fn equals_fn, + gl_listelement_hashcode_fn hashcode_fn, + gl_listelement_dispose_fn dispose_fn, + bool allow_duplicates); + gl_list_t (*nx_create) (gl_list_implementation_t implementation, + gl_listelement_equals_fn equals_fn, + gl_listelement_hashcode_fn hashcode_fn, + gl_listelement_dispose_fn dispose_fn, + bool allow_duplicates, + size_t count, const void **contents); + size_t (*size) (gl_list_t list); + const void * (*node_value) (gl_list_t list, gl_list_node_t node); + int (*node_nx_set_value) (gl_list_t list, gl_list_node_t node, + const void *elt); + gl_list_node_t (*next_node) (gl_list_t list, gl_list_node_t node); + gl_list_node_t (*previous_node) (gl_list_t list, gl_list_node_t node); + const void * (*get_at) (gl_list_t list, size_t position); + gl_list_node_t (*nx_set_at) (gl_list_t list, size_t position, + const void *elt); + gl_list_node_t (*search_from_to) (gl_list_t list, size_t start_index, + size_t end_index, const void *elt); + size_t (*indexof_from_to) (gl_list_t list, size_t start_index, + size_t end_index, const void *elt); + gl_list_node_t (*nx_add_first) (gl_list_t list, const void *elt); + gl_list_node_t (*nx_add_last) (gl_list_t list, const void *elt); + gl_list_node_t (*nx_add_before) (gl_list_t list, gl_list_node_t node, + const void *elt); + gl_list_node_t (*nx_add_after) (gl_list_t list, gl_list_node_t node, + const void *elt); + gl_list_node_t (*nx_add_at) (gl_list_t list, size_t position, + const void *elt); + bool (*remove_node) (gl_list_t list, gl_list_node_t node); + bool (*remove_at) (gl_list_t list, size_t position); + bool (*remove_elt) (gl_list_t list, const void *elt); + void (*list_free) (gl_list_t list); + /* gl_list_iterator_t functions. */ + gl_list_iterator_t (*iterator) (gl_list_t list); + gl_list_iterator_t (*iterator_from_to) (gl_list_t list, + size_t start_index, + size_t end_index); + bool (*iterator_next) (gl_list_iterator_t *iterator, + const void **eltp, gl_list_node_t *nodep); + void (*iterator_free) (gl_list_iterator_t *iterator); + /* Sorted gl_list_t functions. */ + gl_list_node_t (*sortedlist_search) (gl_list_t list, + gl_listelement_compar_fn compar, + const void *elt); + gl_list_node_t (*sortedlist_search_from_to) (gl_list_t list, + gl_listelement_compar_fn compar, + size_t start_index, + size_t end_index, + const void *elt); + size_t (*sortedlist_indexof) (gl_list_t list, + gl_listelement_compar_fn compar, + const void *elt); + size_t (*sortedlist_indexof_from_to) (gl_list_t list, + gl_listelement_compar_fn compar, + size_t start_index, size_t end_index, + const void *elt); + gl_list_node_t (*sortedlist_nx_add) (gl_list_t list, + gl_listelement_compar_fn compar, + const void *elt); + bool (*sortedlist_remove) (gl_list_t list, + gl_listelement_compar_fn compar, + const void *elt); +}; + +struct gl_list_impl_base +{ + const struct gl_list_implementation *vtable; + gl_listelement_equals_fn equals_fn; + gl_listelement_hashcode_fn hashcode_fn; + gl_listelement_dispose_fn dispose_fn; + bool allow_duplicates; +}; + +/* Define all functions of this file as accesses to the + struct gl_list_implementation. */ + +GL_LIST_INLINE gl_list_t +gl_list_nx_create_empty (gl_list_implementation_t implementation, + gl_listelement_equals_fn equals_fn, + gl_listelement_hashcode_fn hashcode_fn, + gl_listelement_dispose_fn dispose_fn, + bool allow_duplicates) +{ + return implementation->nx_create_empty (implementation, equals_fn, + hashcode_fn, dispose_fn, + allow_duplicates); +} + +GL_LIST_INLINE gl_list_t +gl_list_nx_create (gl_list_implementation_t implementation, + gl_listelement_equals_fn equals_fn, + gl_listelement_hashcode_fn hashcode_fn, + gl_listelement_dispose_fn dispose_fn, + bool allow_duplicates, + size_t count, const void **contents) +{ + return implementation->nx_create (implementation, equals_fn, hashcode_fn, + dispose_fn, allow_duplicates, count, + contents); +} + +GL_LIST_INLINE size_t +gl_list_size (gl_list_t list) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->size (list); +} + +GL_LIST_INLINE const void * +gl_list_node_value (gl_list_t list, gl_list_node_t node) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->node_value (list, node); +} + +GL_LIST_INLINE int +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + __attribute__ ((__warn_unused_result__)) +#endif +gl_list_node_nx_set_value (gl_list_t list, gl_list_node_t node, + const void *elt) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->node_nx_set_value (list, node, elt); +} + +GL_LIST_INLINE gl_list_node_t +gl_list_next_node (gl_list_t list, gl_list_node_t node) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->next_node (list, node); +} + +GL_LIST_INLINE gl_list_node_t +gl_list_previous_node (gl_list_t list, gl_list_node_t node) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->previous_node (list, node); +} + +GL_LIST_INLINE const void * +gl_list_get_at (gl_list_t list, size_t position) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->get_at (list, position); +} + +GL_LIST_INLINE gl_list_node_t +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + __attribute__ ((__warn_unused_result__)) +#endif +gl_list_nx_set_at (gl_list_t list, size_t position, const void *elt) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->nx_set_at (list, position, elt); +} + +GL_LIST_INLINE gl_list_node_t +gl_list_search (gl_list_t list, const void *elt) +{ + size_t size = ((const struct gl_list_impl_base *) list)->vtable->size (list); + return ((const struct gl_list_impl_base *) list)->vtable + ->search_from_to (list, 0, size, elt); +} + +GL_LIST_INLINE gl_list_node_t +gl_list_search_from (gl_list_t list, size_t start_index, const void *elt) +{ + size_t size = ((const struct gl_list_impl_base *) list)->vtable->size (list); + return ((const struct gl_list_impl_base *) list)->vtable + ->search_from_to (list, start_index, size, elt); +} + +GL_LIST_INLINE gl_list_node_t +gl_list_search_from_to (gl_list_t list, size_t start_index, size_t end_index, + const void *elt) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->search_from_to (list, start_index, end_index, elt); +} + +GL_LIST_INLINE size_t +gl_list_indexof (gl_list_t list, const void *elt) +{ + size_t size = ((const struct gl_list_impl_base *) list)->vtable->size (list); + return ((const struct gl_list_impl_base *) list)->vtable + ->indexof_from_to (list, 0, size, elt); +} + +GL_LIST_INLINE size_t +gl_list_indexof_from (gl_list_t list, size_t start_index, const void *elt) +{ + size_t size = ((const struct gl_list_impl_base *) list)->vtable->size (list); + return ((const struct gl_list_impl_base *) list)->vtable + ->indexof_from_to (list, start_index, size, elt); +} + +GL_LIST_INLINE size_t +gl_list_indexof_from_to (gl_list_t list, size_t start_index, size_t end_index, + const void *elt) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->indexof_from_to (list, start_index, end_index, elt); +} + +GL_LIST_INLINE gl_list_node_t +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + __attribute__ ((__warn_unused_result__)) +#endif +gl_list_nx_add_first (gl_list_t list, const void *elt) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->nx_add_first (list, elt); +} + +GL_LIST_INLINE gl_list_node_t +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + __attribute__ ((__warn_unused_result__)) +#endif +gl_list_nx_add_last (gl_list_t list, const void *elt) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->nx_add_last (list, elt); +} + +GL_LIST_INLINE gl_list_node_t +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + __attribute__ ((__warn_unused_result__)) +#endif +gl_list_nx_add_before (gl_list_t list, gl_list_node_t node, const void *elt) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->nx_add_before (list, node, elt); +} + +GL_LIST_INLINE gl_list_node_t +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + __attribute__ ((__warn_unused_result__)) +#endif +gl_list_nx_add_after (gl_list_t list, gl_list_node_t node, const void *elt) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->nx_add_after (list, node, elt); +} + +GL_LIST_INLINE gl_list_node_t +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + __attribute__ ((__warn_unused_result__)) +#endif +gl_list_nx_add_at (gl_list_t list, size_t position, const void *elt) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->nx_add_at (list, position, elt); +} + +GL_LIST_INLINE bool +gl_list_remove_node (gl_list_t list, gl_list_node_t node) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->remove_node (list, node); +} + +GL_LIST_INLINE bool +gl_list_remove_at (gl_list_t list, size_t position) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->remove_at (list, position); +} + +GL_LIST_INLINE bool +gl_list_remove (gl_list_t list, const void *elt) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->remove_elt (list, elt); +} + +GL_LIST_INLINE void +gl_list_free (gl_list_t list) +{ + ((const struct gl_list_impl_base *) list)->vtable->list_free (list); +} + +GL_LIST_INLINE gl_list_iterator_t +gl_list_iterator (gl_list_t list) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->iterator (list); +} + +GL_LIST_INLINE gl_list_iterator_t +gl_list_iterator_from_to (gl_list_t list, size_t start_index, size_t end_index) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->iterator_from_to (list, start_index, end_index); +} + +GL_LIST_INLINE bool +gl_list_iterator_next (gl_list_iterator_t *iterator, + const void **eltp, gl_list_node_t *nodep) +{ + return iterator->vtable->iterator_next (iterator, eltp, nodep); +} + +GL_LIST_INLINE void +gl_list_iterator_free (gl_list_iterator_t *iterator) +{ + iterator->vtable->iterator_free (iterator); +} + +GL_LIST_INLINE gl_list_node_t +gl_sortedlist_search (gl_list_t list, gl_listelement_compar_fn compar, const void *elt) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->sortedlist_search (list, compar, elt); +} + +GL_LIST_INLINE gl_list_node_t +gl_sortedlist_search_from_to (gl_list_t list, gl_listelement_compar_fn compar, size_t start_index, size_t end_index, const void *elt) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->sortedlist_search_from_to (list, compar, start_index, end_index, + elt); +} + +GL_LIST_INLINE size_t +gl_sortedlist_indexof (gl_list_t list, gl_listelement_compar_fn compar, const void *elt) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->sortedlist_indexof (list, compar, elt); +} + +GL_LIST_INLINE size_t +gl_sortedlist_indexof_from_to (gl_list_t list, gl_listelement_compar_fn compar, size_t start_index, size_t end_index, const void *elt) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->sortedlist_indexof_from_to (list, compar, start_index, end_index, + elt); +} + +GL_LIST_INLINE gl_list_node_t +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + __attribute__ ((__warn_unused_result__)) +#endif +gl_sortedlist_nx_add (gl_list_t list, gl_listelement_compar_fn compar, const void *elt) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->sortedlist_nx_add (list, compar, elt); +} + +GL_LIST_INLINE bool +gl_sortedlist_remove (gl_list_t list, gl_listelement_compar_fn compar, const void *elt) +{ + return ((const struct gl_list_impl_base *) list)->vtable + ->sortedlist_remove (list, compar, elt); +} + +#ifdef __cplusplus +} +#endif + +_GL_INLINE_HEADER_END + +#endif /* _GL_LIST_H */ diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/gl_xlist.c gettext-0.19.7/gettext-tools/libgettextpo/gl_xlist.c --- gettext-0.19.6/gettext-tools/libgettextpo/gl_xlist.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/gl_xlist.c 2015-12-27 23:09:03.000000000 +0000 @@ -0,0 +1,3 @@ +#include +#define GL_XLIST_INLINE _GL_EXTERN_INLINE +#include "gl_xlist.h" diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/gl_xlist.h gettext-0.19.7/gettext-tools/libgettextpo/gl_xlist.h --- gettext-0.19.6/gettext-tools/libgettextpo/gl_xlist.h 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/gl_xlist.h 2015-12-27 23:09:03.000000000 +0000 @@ -0,0 +1,177 @@ +/* Abstract sequential list data type, with out-of-memory checking. + Copyright (C) 2009-2015 Free Software Foundation, Inc. + Written by Bruno Haible , 2009. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#ifndef _GL_XLIST_H +#define _GL_XLIST_H + +#include "gl_list.h" +#include "xalloc.h" + +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif +_GL_INLINE_HEADER_BEGIN +#ifndef GL_XLIST_INLINE +# define GL_XLIST_INLINE _GL_INLINE +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* These functions are thin wrappers around the corresponding functions with + _nx_ infix from gl_list.h. Upon out-of-memory, they invoke xalloc_die (), + instead of returning an error indicator. */ +#if 0 /* These are defined inline below. */ +extern gl_list_t gl_list_create_empty (gl_list_implementation_t implementation, + gl_listelement_equals_fn equals_fn, + gl_listelement_hashcode_fn hashcode_fn, + gl_listelement_dispose_fn dispose_fn, + bool allow_duplicates); +extern gl_list_t gl_list_create (gl_list_implementation_t implementation, + gl_listelement_equals_fn equals_fn, + gl_listelement_hashcode_fn hashcode_fn, + gl_listelement_dispose_fn dispose_fn, + bool allow_duplicates, + size_t count, const void **contents); +extern void gl_list_node_set_value (gl_list_t list, gl_list_node_t node, + const void *elt); +extern gl_list_node_t gl_list_set_at (gl_list_t list, size_t position, + const void *elt); +extern gl_list_node_t gl_list_add_first (gl_list_t list, const void *elt); +extern gl_list_node_t gl_list_add_last (gl_list_t list, const void *elt); +extern gl_list_node_t gl_list_add_before (gl_list_t list, gl_list_node_t node, + const void *elt); +extern gl_list_node_t gl_list_add_after (gl_list_t list, gl_list_node_t node, + const void *elt); +extern gl_list_node_t gl_list_add_at (gl_list_t list, size_t position, + const void *elt); +extern gl_list_node_t gl_sortedlist_add (gl_list_t list, + gl_listelement_compar_fn compar, + const void *elt); +#endif + +GL_XLIST_INLINE gl_list_t +gl_list_create_empty (gl_list_implementation_t implementation, + gl_listelement_equals_fn equals_fn, + gl_listelement_hashcode_fn hashcode_fn, + gl_listelement_dispose_fn dispose_fn, + bool allow_duplicates) +{ + gl_list_t result = + gl_list_nx_create_empty (implementation, equals_fn, hashcode_fn, dispose_fn, + allow_duplicates); + if (result == NULL) + xalloc_die (); + return result; +} + +GL_XLIST_INLINE gl_list_t +gl_list_create (gl_list_implementation_t implementation, + gl_listelement_equals_fn equals_fn, + gl_listelement_hashcode_fn hashcode_fn, + gl_listelement_dispose_fn dispose_fn, + bool allow_duplicates, + size_t count, const void **contents) +{ + gl_list_t result = + gl_list_nx_create (implementation, equals_fn, hashcode_fn, dispose_fn, + allow_duplicates, count, contents); + if (result == NULL) + xalloc_die (); + return result; +} + +GL_XLIST_INLINE void +gl_list_node_set_value (gl_list_t list, gl_list_node_t node, const void *elt) +{ + int result = gl_list_node_nx_set_value (list, node, elt); + if (result < 0) + xalloc_die (); +} + +GL_XLIST_INLINE gl_list_node_t +gl_list_set_at (gl_list_t list, size_t position, const void *elt) +{ + gl_list_node_t result = gl_list_nx_set_at (list, position, elt); + if (result == NULL) + xalloc_die (); + return result; +} + +GL_XLIST_INLINE gl_list_node_t +gl_list_add_first (gl_list_t list, const void *elt) +{ + gl_list_node_t result = gl_list_nx_add_first (list, elt); + if (result == NULL) + xalloc_die (); + return result; +} + +GL_XLIST_INLINE gl_list_node_t +gl_list_add_last (gl_list_t list, const void *elt) +{ + gl_list_node_t result = gl_list_nx_add_last (list, elt); + if (result == NULL) + xalloc_die (); + return result; +} + +GL_XLIST_INLINE gl_list_node_t +gl_list_add_before (gl_list_t list, gl_list_node_t node, const void *elt) +{ + gl_list_node_t result = gl_list_nx_add_before (list, node, elt); + if (result == NULL) + xalloc_die (); + return result; +} + +GL_XLIST_INLINE gl_list_node_t +gl_list_add_after (gl_list_t list, gl_list_node_t node, const void *elt) +{ + gl_list_node_t result = gl_list_nx_add_after (list, node, elt); + if (result == NULL) + xalloc_die (); + return result; +} + +GL_XLIST_INLINE gl_list_node_t +gl_list_add_at (gl_list_t list, size_t position, const void *elt) +{ + gl_list_node_t result = gl_list_nx_add_at (list, position, elt); + if (result == NULL) + xalloc_die (); + return result; +} + +GL_XLIST_INLINE gl_list_node_t +gl_sortedlist_add (gl_list_t list, gl_listelement_compar_fn compar, + const void *elt) +{ + gl_list_node_t result = gl_sortedlist_nx_add (list, compar, elt); + if (result == NULL) + xalloc_die (); + return result; +} + +#ifdef __cplusplus +} +#endif + +_GL_INLINE_HEADER_END + +#endif /* _GL_XLIST_H */ diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/gnulib-m4/gnulib-cache.m4 gettext-0.19.7/gettext-tools/libgettextpo/gnulib-m4/gnulib-cache.m4 --- gettext-0.19.6/gettext-tools/libgettextpo/gnulib-m4/gnulib-cache.m4 2015-09-11 03:04:34.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/gnulib-m4/gnulib-cache.m4 2015-12-27 23:09:08.000000000 +0000 @@ -27,7 +27,7 @@ # Specification in the form of a command-line invocation: -# gnulib-tool --import --dir=gettext-tools --local-dir=gnulib-local --lib=libgnu --source-base=libgettextpo --m4-base=libgettextpo/gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../build-aux --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gtpo basename c-ctype c-strcase c-strstr close error error-progname file-ostream filename fopen fstrcmp fwriteerror gcd getline gettext-h hash iconv libunistring-optional minmax open ostream progname relocatable-lib sigpipe stdbool stdio stdlib stpcpy stpncpy strchrnul strerror unictype/ctype-space unilbrk/ulc-width-linebreaks unistr/u16-mbtouc unistr/u8-mbtouc unistr/u8-mbtoucr unistr/u8-uctomb uniwidth/width unlocked-io vasprintf xalloc xconcat-filename xerror xmalloca xstriconv xvasprintf +# gnulib-tool --import --local-dir=gnulib-local --lib=libgnu --source-base=libgettextpo --m4-base=libgettextpo/gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../build-aux --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gtpo basename c-ctype c-strcase c-strstr close error error-progname file-ostream filename fopen fstrcmp fwriteerror gcd getline gettext-h hash iconv libunistring-optional markup minmax open ostream progname relocatable-lib sigpipe stdbool stdio stdlib stpcpy stpncpy strchrnul strerror unictype/ctype-space unilbrk/ulc-width-linebreaks unistr/u16-mbtouc unistr/u8-mbtouc unistr/u8-mbtoucr unistr/u8-uctomb uniwidth/width unlocked-io vasprintf xalloc xconcat-filename xerror xmalloca xstriconv xvasprintf # Specification in the form of a few gnulib-tool.m4 macro invocations: gl_LOCAL_DIR([../gnulib-local]) @@ -50,6 +50,7 @@ hash iconv libunistring-optional + markup minmax open ostream diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/gnulib-m4/gnulib-comp.m4 gettext-0.19.7/gettext-tools/libgettextpo/gnulib-m4/gnulib-comp.m4 --- gettext-0.19.6/gettext-tools/libgettextpo/gnulib-m4/gnulib-comp.m4 2015-09-11 03:04:36.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/gnulib-m4/gnulib-comp.m4 2015-12-27 23:09:09.000000000 +0000 @@ -37,7 +37,11 @@ m4_pattern_allow([^gl_ES$])dnl a valid locale name m4_pattern_allow([^gl_LIBOBJS$])dnl a variable m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable + + # Pre-early section. + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_PROG_AR_RANLIB]) + AC_REQUIRE([AM_PROG_CC_C_O]) # Code from module absolute-header: # Code from module alignof: @@ -57,7 +61,6 @@ # Code from module error-progname: # Code from module exitfail: # Code from module extensions: - AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # Code from module extern-inline: # Code from module fcntl-h: # Code from module fd-hook: @@ -85,10 +88,13 @@ # Code from module largefile: AC_REQUIRE([AC_SYS_LARGEFILE]) # Code from module libunistring-optional: + # Code from module linked-list: + # Code from module list: # Code from module localcharset: # Code from module lock: # Code from module malloc-posix: # Code from module malloca: + # Code from module markup: # Code from module mbrtowc: # Code from module mbsinit: # Code from module mbswidth: @@ -151,6 +157,7 @@ # Code from module uniconv/base: # Code from module uniconv/u8-conv-from-enc: # Code from module unictype/base: + # Code from module unictype/ctype-alpha: # Code from module unictype/ctype-space: # Code from module unilbrk/base: # Code from module unilbrk/tables: @@ -166,7 +173,9 @@ # Code from module unistr/u8-mbtouc: # Code from module unistr/u8-mbtouc-unsafe: # Code from module unistr/u8-mbtoucr: + # Code from module unistr/u8-next: # Code from module unistr/u8-prev: + # Code from module unistr/u8-strmbtouc: # Code from module unistr/u8-uctomb: # Code from module unitypes: # Code from module uniwidth/base: @@ -182,6 +191,7 @@ # Code from module xalloc-die: # Code from module xconcat-filename: # Code from module xerror: + # Code from module xlist: # Code from module xmalloca: # Code from module xsize: # Code from module xstriconv: @@ -443,6 +453,8 @@ gl_LIBUNISTRING_MODULE([0.9], [uniconv/u8-conv-from-enc]) gl_LIBUNISTRING_LIBHEADER([0.9.4], [unictype.h]) AC_REQUIRE([AC_C_INLINE]) + gl_LIBUNISTRING_MODULE([0.9.6], [unictype/ctype-alpha]) + AC_REQUIRE([AC_C_INLINE]) gl_LIBUNISTRING_MODULE([0.9.6], [unictype/ctype-space]) gl_LIBUNISTRING_LIBHEADER([0.9.4], [unilbrk.h]) AC_REQUIRE([AC_C_INLINE]) @@ -461,7 +473,9 @@ gl_LIBUNISTRING_MODULE([0.9.4], [unistr/u8-mbtouc-unsafe]) gl_MODULE_INDICATOR([unistr/u8-mbtoucr]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-mbtoucr]) + gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-next]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-prev]) + gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-strmbtouc]) gl_MODULE_INDICATOR([unistr/u8-uctomb]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-uctomb]) gl_LIBUNISTRING_LIBHEADER([0.9.4], [unitypes.h]) @@ -677,6 +691,14 @@ lib/getline.c lib/gettext.h lib/gettimeofday.c + lib/gl_anylinked_list1.h + lib/gl_anylinked_list2.h + lib/gl_linked_list.c + lib/gl_linked_list.h + lib/gl_list.c + lib/gl_list.h + lib/gl_xlist.c + lib/gl_xlist.h lib/glthread/lock.c lib/glthread/lock.h lib/glthread/threadlib.c @@ -703,6 +725,8 @@ lib/malloca.c lib/malloca.h lib/malloca.valgrind + lib/markup.c + lib/markup.h lib/mbrtowc.c lib/mbsinit.c lib/mbswidth.c @@ -771,6 +795,8 @@ lib/uniconv/u8-conv-from-enc.c lib/unictype.in.h lib/unictype/bitmap.h + lib/unictype/ctype_alpha.c + lib/unictype/ctype_alpha.h lib/unictype/ctype_space.c lib/unictype/ctype_space.h lib/unilbrk.in.h @@ -795,7 +821,9 @@ lib/unistr/u8-mbtouc-unsafe.c lib/unistr/u8-mbtouc.c lib/unistr/u8-mbtoucr.c + lib/unistr/u8-next.c lib/unistr/u8-prev.c + lib/unistr/u8-strmbtouc.c lib/unistr/u8-uctomb-aux.c lib/unistr/u8-uctomb.c lib/unitypes.in.h diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/intprops.h gettext-0.19.7/gettext-tools/libgettextpo/intprops.h --- gettext-0.19.6/gettext-tools/libgettextpo/intprops.h 2015-09-11 03:04:30.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/intprops.h 2015-12-27 23:09:03.000000000 +0000 @@ -22,8 +22,7 @@ #include -/* Return an integer value, converted to the same type as the integer - expression E after integer type promotion. V is the unconverted value. */ +/* Return a value with the common real type of E and V and the value of V. */ #define _GL_INT_CONVERT(e, v) (0 * (e) + (v)) /* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see @@ -48,12 +47,12 @@ /* True if the signed integer expression E uses two's complement. */ #define _GL_INT_TWOS_COMPLEMENT(e) (~ _GL_INT_CONVERT (e, 0) == -1) -/* True if the arithmetic type T is signed. */ +/* True if the real type T is signed. */ #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) -/* Return 1 if the integer expression E, after integer promotion, has - a signed type. */ -#define _GL_INT_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) +/* Return 1 if the real expression E, after promotion, has a + signed or floating type. */ +#define EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) /* Minimum and maximum values for integer types and expressions. These @@ -76,11 +75,11 @@ /* The maximum and minimum values for the type of the expression E, after integer promotion. E should not have side effects. */ #define _GL_INT_MINIMUM(e) \ - (_GL_INT_SIGNED (e) \ + (EXPR_SIGNED (e) \ ? - _GL_INT_TWOS_COMPLEMENT (e) - _GL_SIGNED_INT_MAXIMUM (e) \ : _GL_INT_CONVERT (e, 0)) #define _GL_INT_MAXIMUM(e) \ - (_GL_INT_SIGNED (e) \ + (EXPR_SIGNED (e) \ ? _GL_SIGNED_INT_MAXIMUM (e) \ : _GL_INT_NEGATE_CONVERT (e, 1)) #define _GL_SIGNED_INT_MAXIMUM(e) \ @@ -263,22 +262,29 @@ : (a) % - (b)) \ == 0) - -/* Integer overflow checks. +/* Check for integer overflow, and report low order bits of answer. The INT__OVERFLOW macros return 1 if the corresponding C operators might not yield numerically correct answers due to arithmetic overflow. - They work correctly on all known practical hosts, and do not rely + The INT__WRAPV macros also store the low-order bits of the answer. + These macros work correctly on all known practical hosts, and do not rely on undefined behavior due to signed arithmetic overflow. - Example usage: + Example usage, assuming A and B are long int: - long int i = ...; - long int j = ...; - if (INT_MULTIPLY_OVERFLOW (i, j)) - printf ("multiply would overflow"); + if (INT_MULTIPLY_OVERFLOW (a, b)) + printf ("result would overflow\n"); else - printf ("product is %ld", i * j); + printf ("result is %ld (no overflow)\n", a * b); + + Example usage with WRAPV flavor: + + long int result; + bool overflow = INT_MULTIPLY_WRAPV (a, b, &result); + printf ("result is %ld (%s)\n", result, + overflow ? "after overflow" : "no overflow"); + + Restrictions on these macros: These macros do not check for all possible numerical problems or undefined or unspecified behavior: they do not check for division @@ -287,6 +293,9 @@ These macros may evaluate their arguments zero or multiple times, so the arguments should not have side effects. + The WRAPV macros are not constant expressions. They support only + +, binary -, and *. The result type must be signed. + These macros are tuned for their last argument being a constant. Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B, @@ -317,4 +326,104 @@ _GL_INT_MINIMUM (0 * (b) + (a)), \ _GL_INT_MAXIMUM (0 * (b) + (a))) +/* Compute A + B, A - B, A * B, respectively, storing the result into *R. + Return 1 if the result overflows. See above for restrictions. */ +#define INT_ADD_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, +, __builtin_add_overflow, INT_ADD_OVERFLOW) +#define INT_SUBTRACT_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, -, __builtin_sub_overflow, INT_SUBTRACT_OVERFLOW) +#define INT_MULTIPLY_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, *, __builtin_mul_overflow, INT_MULTIPLY_OVERFLOW) + +#ifndef __has_builtin +# define __has_builtin(x) 0 +#endif + +/* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 + https://llvm.org/bugs/show_bug.cgi?id=25390 + For now, assume all versions of GCC-like compilers generate bogus + warnings for _Generic. This matters only for older compilers that + lack __builtin_add_overflow. */ +#if __GNUC__ +# define _GL__GENERIC_BOGUS 1 +#else +# define _GL__GENERIC_BOGUS 0 +#endif + +/* Store A B into *R, where OP specifies the operation. + BUILTIN is the builtin operation, and OVERFLOW the overflow predicate. + See above for restrictions. */ +#if 5 <= __GNUC__ || __has_builtin (__builtin_add_overflow) +# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) builtin (a, b, r) +#elif 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS +# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) \ + (_Generic \ + (*(r), \ + signed char: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned char, \ + signed char, SCHAR_MIN, SCHAR_MAX), \ + short int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned short int, \ + short int, SHRT_MIN, SHRT_MAX), \ + int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX), \ + long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX), \ + long long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX))) +#else +# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) \ + (sizeof *(r) == sizeof (signed char) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned char, \ + signed char, SCHAR_MIN, SCHAR_MAX) \ + : sizeof *(r) == sizeof (short int) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned short int, \ + short int, SHRT_MIN, SHRT_MAX) \ + : sizeof *(r) == sizeof (int) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX) \ + : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow)) +# ifdef LLONG_MAX +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + (sizeof *(r) == sizeof (long int) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX)) +# else +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX)) +# endif +#endif + +/* Store the low-order bits of A B into *R, where the operation + is given by OP. Use the unsigned type UT for calculation to avoid + overflow problems. *R's type is T, with extremal values TMIN and + TMAX. T must be a signed integer type. */ +#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \ + (sizeof ((a) op (b)) < sizeof (t) \ + ? _GL_INT_OP_CALC1 ((t) (a), (t) (b), r, op, overflow, ut, t, tmin, tmax) \ + : _GL_INT_OP_CALC1 (a, b, r, op, overflow, ut, t, tmin, tmax)) +#define _GL_INT_OP_CALC1(a, b, r, op, overflow, ut, t, tmin, tmax) \ + ((overflow (a, b) \ + || (EXPR_SIGNED ((a) op (b)) && ((a) op (b)) < (tmin)) \ + || (tmax) < ((a) op (b))) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t, tmin, tmax), 1) \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t, tmin, tmax), 0)) + +/* Return A B, where the operation is given by OP. Use the + unsigned type UT for calculation to avoid overflow problems. + Convert the result to type T without overflow by subtracting TMIN + from large values before converting, and adding it afterwards. + Compilers can optimize all the operations except OP. */ +#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t, tmin, tmax) \ + (((ut) (a) op (ut) (b)) <= (tmax) \ + ? (t) ((ut) (a) op (ut) (b)) \ + : ((t) (((ut) (a) op (ut) (b)) - (tmin)) + (tmin))) + #endif /* _GL_INTPROPS_H */ diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/Makefile.am gettext-0.19.7/gettext-tools/libgettextpo/Makefile.am --- gettext-0.19.6/gettext-tools/libgettextpo/Makefile.am 2015-09-11 01:24:59.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/Makefile.am 2015-12-09 19:32:59.000000000 +0000 @@ -41,6 +41,8 @@ -I../src -I$(top_srcdir)/src \ -I../intl -I$(top_srcdir)/../gettext-runtime/intl +DEFS = -DIN_LIBGETTEXTPO=1 @DEFS@ + # libgettextpo contains the public API for PO files. libgettextpo_la_SOURCES = \ gettext-po.c \ @@ -93,8 +95,7 @@ ../src/plural-exp.c \ ../src/plural-eval.c \ ../src/msgl-check.c \ - ../src/sentence.c \ - ../src/libexpat-compat.c + ../src/sentence.c # Libtool's library version information for libgettextpo. # See the libtool documentation, section "Library interface versions". @@ -109,7 +110,7 @@ libgettextpo_la_LDFLAGS = \ -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \ -rpath $(libdir) \ - @LTLIBINTL@ @LTLIBICONV@ @LTLIBEXPAT@ -lc -no-undefined + @LTLIBINTL@ @LTLIBICONV@ -lc -no-undefined # Tell the mingw or Cygwin linker which symbols to export. if WOE32DLL @@ -155,7 +156,7 @@ sf=`echo "$$f" | sed -e 's,\\.[^.]*$$,,'`.c; \ test -f $$sf || sf=$(srcdir)/$$sf; \ of=`echo "$$f" | sed -e 's,^.*/,,' -e 's,\\.[^.]*$$,,'`.$(OBJEXT); \ - $(COMPILE) -c $$sf || { rm -f config.h; exit 1; }; \ + $(COMPILE) $(DEFS) -c $$sf || { rm -f config.h; exit 1; }; \ sh ./exported.sh $$of 1>&5; \ rm -f $$of `echo "$$of" | sed -e 's,\\.$(OBJEXT)$$,.lo,'`; \ ;; \ diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/Makefile.gnulib gettext-0.19.7/gettext-tools/libgettextpo/Makefile.gnulib --- gettext-0.19.6/gettext-tools/libgettextpo/Makefile.gnulib 2015-09-11 03:04:34.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/Makefile.gnulib 2015-12-27 23:09:08.000000000 +0000 @@ -21,7 +21,7 @@ # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. -# Reproduce by: gnulib-tool --import --dir=gettext-tools --local-dir=gnulib-local --lib=libgnu --source-base=libgettextpo --m4-base=libgettextpo/gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../build-aux --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gtpo basename c-ctype c-strcase c-strstr close error error-progname file-ostream filename fopen fstrcmp fwriteerror gcd getline gettext-h hash iconv libunistring-optional minmax open ostream progname relocatable-lib sigpipe stdbool stdio stdlib stpcpy stpncpy strchrnul strerror unictype/ctype-space unilbrk/ulc-width-linebreaks unistr/u16-mbtouc unistr/u8-mbtouc unistr/u8-mbtoucr unistr/u8-uctomb uniwidth/width unlocked-io vasprintf xalloc xconcat-filename xerror xmalloca xstriconv xvasprintf +# Reproduce by: gnulib-tool --import --local-dir=gnulib-local --lib=libgnu --source-base=libgettextpo --m4-base=libgettextpo/gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../build-aux --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gtpo basename c-ctype c-strcase c-strstr close error error-progname file-ostream filename fopen fstrcmp fwriteerror gcd getline gettext-h hash iconv libunistring-optional markup minmax open ostream progname relocatable-lib sigpipe stdbool stdio stdlib stpcpy stpncpy strchrnul strerror unictype/ctype-space unilbrk/ulc-width-linebreaks unistr/u16-mbtouc unistr/u8-mbtouc unistr/u8-mbtoucr unistr/u8-uctomb uniwidth/width unlocked-io vasprintf xalloc xconcat-filename xerror xmalloca xstriconv xvasprintf MOSTLYCLEANFILES += core *.stackdump @@ -520,6 +520,18 @@ ## end gnulib module libunistring-optional +## begin gnulib module linked-list + +libgnu_la_SOURCES += gl_linked_list.h gl_linked_list.c gl_anylinked_list1.h gl_anylinked_list2.h + +## end gnulib module linked-list + +## begin gnulib module list + +libgnu_la_SOURCES += gl_list.h gl_list.c + +## end gnulib module list + ## begin gnulib module localcharset libgnu_la_SOURCES += localcharset.h localcharset.c @@ -617,6 +629,12 @@ ## end gnulib module malloca +## begin gnulib module markup + +libgnu_la_SOURCES += markup.h markup.c + +## end gnulib module markup + ## begin gnulib module mbrtowc @@ -1736,6 +1754,16 @@ ## end gnulib module unictype/base +## begin gnulib module unictype/ctype-alpha + +if LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_ALPHA +libgnu_la_SOURCES += unictype/ctype_alpha.c +endif + +EXTRA_DIST += unictype/bitmap.h unictype/ctype_alpha.h + +## end gnulib module unictype/ctype-alpha + ## begin gnulib module unictype/ctype-space if LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_SPACE @@ -2022,6 +2050,14 @@ ## end gnulib module unistr/u8-mbtoucr +## begin gnulib module unistr/u8-next + +if LIBUNISTRING_COMPILE_UNISTR_U8_NEXT +libgnu_la_SOURCES += unistr/u8-next.c +endif + +## end gnulib module unistr/u8-next + ## begin gnulib module unistr/u8-prev if LIBUNISTRING_COMPILE_UNISTR_U8_PREV @@ -2030,6 +2066,14 @@ ## end gnulib module unistr/u8-prev +## begin gnulib module unistr/u8-strmbtouc + +if LIBUNISTRING_COMPILE_UNISTR_U8_STRMBTOUC +libgnu_la_SOURCES += unistr/u8-strmbtouc.c +endif + +## end gnulib module unistr/u8-strmbtouc + ## begin gnulib module unistr/u8-uctomb if LIBUNISTRING_COMPILE_UNISTR_U8_UCTOMB @@ -2302,6 +2346,12 @@ ## end gnulib module xerror +## begin gnulib module xlist + +libgnu_la_SOURCES += gl_xlist.h gl_xlist.c + +## end gnulib module xlist + ## begin gnulib module xmalloca libgnu_la_SOURCES += xmalloca.c diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/Makefile.in gettext-0.19.7/gettext-tools/libgettextpo/Makefile.in --- gettext-0.19.6/gettext-tools/libgettextpo/Makefile.in 2015-09-11 03:05:10.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/Makefile.in 2015-12-27 23:09:41.000000000 +0000 @@ -35,7 +35,7 @@ # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. -# Reproduce by: gnulib-tool --import --dir=gettext-tools --local-dir=gnulib-local --lib=libgnu --source-base=libgettextpo --m4-base=libgettextpo/gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../build-aux --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gtpo basename c-ctype c-strcase c-strstr close error error-progname file-ostream filename fopen fstrcmp fwriteerror gcd getline gettext-h hash iconv libunistring-optional minmax open ostream progname relocatable-lib sigpipe stdbool stdio stdlib stpcpy stpncpy strchrnul strerror unictype/ctype-space unilbrk/ulc-width-linebreaks unistr/u16-mbtouc unistr/u8-mbtouc unistr/u8-mbtoucr unistr/u8-uctomb uniwidth/width unlocked-io vasprintf xalloc xconcat-filename xerror xmalloca xstriconv xvasprintf +# Reproduce by: gnulib-tool --import --local-dir=gnulib-local --lib=libgnu --source-base=libgettextpo --m4-base=libgettextpo/gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=../build-aux --makefile-name=Makefile.gnulib --no-conditional-dependencies --libtool --macro-prefix=gtpo basename c-ctype c-strcase c-strstr close error error-progname file-ostream filename fopen fstrcmp fwriteerror gcd getline gettext-h hash iconv libunistring-optional markup minmax open ostream progname relocatable-lib sigpipe stdbool stdio stdlib stpcpy stpncpy strchrnul strerror unictype/ctype-space unilbrk/ulc-width-linebreaks unistr/u16-mbtouc unistr/u8-mbtouc unistr/u8-mbtoucr unistr/u8-uctomb uniwidth/width unlocked-io vasprintf xalloc xconcat-filename xerror xmalloca xstriconv xvasprintf VPATH = @srcdir@ @@ -118,19 +118,22 @@ @WOE32_TRUE@am__append_3 = libgettextpo.res.lo @GL_COND_LIBTOOL_TRUE@am__append_4 = $(LTLIBICONV) $(LTLIBICONV) @LIBUNISTRING_COMPILE_UNICONV_U8_CONV_FROM_ENC_TRUE@am__append_5 = uniconv/u8-conv-from-enc.c -@LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_SPACE_TRUE@am__append_6 = unictype/ctype_space.c -@LIBUNISTRING_COMPILE_UNILBRK_U8_POSSIBLE_LINEBREAKS_TRUE@am__append_7 = unilbrk/u8-possible-linebreaks.c -@LIBUNISTRING_COMPILE_UNILBRK_U8_WIDTH_LINEBREAKS_TRUE@am__append_8 = unilbrk/u8-width-linebreaks.c -@LIBUNISTRING_COMPILE_UNILBRK_ULC_WIDTH_LINEBREAKS_TRUE@am__append_9 = unilbrk/ulc-width-linebreaks.c -@LIBUNISTRING_COMPILE_UNISTR_U16_MBTOUC_TRUE@am__append_10 = unistr/u16-mbtouc.c unistr/u16-mbtouc-aux.c -@LIBUNISTRING_COMPILE_UNISTR_U8_CHECK_TRUE@am__append_11 = unistr/u8-check.c -@LIBUNISTRING_COMPILE_UNISTR_U8_MBLEN_TRUE@am__append_12 = unistr/u8-mblen.c -@LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUC_TRUE@am__append_13 = unistr/u8-mbtouc.c unistr/u8-mbtouc-aux.c -@LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUC_UNSAFE_TRUE@am__append_14 = unistr/u8-mbtouc-unsafe.c unistr/u8-mbtouc-unsafe-aux.c -@LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUCR_TRUE@am__append_15 = unistr/u8-mbtoucr.c -@LIBUNISTRING_COMPILE_UNISTR_U8_PREV_TRUE@am__append_16 = unistr/u8-prev.c -@LIBUNISTRING_COMPILE_UNISTR_U8_UCTOMB_TRUE@am__append_17 = unistr/u8-uctomb.c unistr/u8-uctomb-aux.c -@LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE@am__append_18 = uniwidth/width.c +@LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_ALPHA_TRUE@am__append_6 = unictype/ctype_alpha.c +@LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_SPACE_TRUE@am__append_7 = unictype/ctype_space.c +@LIBUNISTRING_COMPILE_UNILBRK_U8_POSSIBLE_LINEBREAKS_TRUE@am__append_8 = unilbrk/u8-possible-linebreaks.c +@LIBUNISTRING_COMPILE_UNILBRK_U8_WIDTH_LINEBREAKS_TRUE@am__append_9 = unilbrk/u8-width-linebreaks.c +@LIBUNISTRING_COMPILE_UNILBRK_ULC_WIDTH_LINEBREAKS_TRUE@am__append_10 = unilbrk/ulc-width-linebreaks.c +@LIBUNISTRING_COMPILE_UNISTR_U16_MBTOUC_TRUE@am__append_11 = unistr/u16-mbtouc.c unistr/u16-mbtouc-aux.c +@LIBUNISTRING_COMPILE_UNISTR_U8_CHECK_TRUE@am__append_12 = unistr/u8-check.c +@LIBUNISTRING_COMPILE_UNISTR_U8_MBLEN_TRUE@am__append_13 = unistr/u8-mblen.c +@LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUC_TRUE@am__append_14 = unistr/u8-mbtouc.c unistr/u8-mbtouc-aux.c +@LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUC_UNSAFE_TRUE@am__append_15 = unistr/u8-mbtouc-unsafe.c unistr/u8-mbtouc-unsafe-aux.c +@LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUCR_TRUE@am__append_16 = unistr/u8-mbtoucr.c +@LIBUNISTRING_COMPILE_UNISTR_U8_NEXT_TRUE@am__append_17 = unistr/u8-next.c +@LIBUNISTRING_COMPILE_UNISTR_U8_PREV_TRUE@am__append_18 = unistr/u8-prev.c +@LIBUNISTRING_COMPILE_UNISTR_U8_STRMBTOUC_TRUE@am__append_19 = unistr/u8-strmbtouc.c +@LIBUNISTRING_COMPILE_UNISTR_U8_UCTOMB_TRUE@am__append_20 = unistr/u8-uctomb.c unistr/u8-uctomb-aux.c +@LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE@am__append_21 = uniwidth/width.c subdir = libgettextpo ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = \ @@ -152,6 +155,7 @@ $(top_srcdir)/gnulib-m4/btowc.m4 \ $(top_srcdir)/gnulib-m4/byteswap.m4 \ $(top_srcdir)/gnulib-m4/canonicalize.m4 \ + $(top_srcdir)/gnulib-m4/check-math-lib.m4 \ $(top_srcdir)/gnulib-m4/close.m4 \ $(top_srcdir)/gnulib-m4/closedir.m4 \ $(top_srcdir)/gnulib-m4/configmake.m4 \ @@ -159,6 +163,7 @@ $(top_srcdir)/gnulib-m4/csharp.m4 \ $(top_srcdir)/gnulib-m4/csharpcomp.m4 \ $(top_srcdir)/gnulib-m4/csharpexec.m4 \ + $(top_srcdir)/gnulib-m4/ctype.m4 \ $(top_srcdir)/gnulib-m4/curses.m4 \ $(top_srcdir)/gnulib-m4/dirent_h.m4 \ $(top_srcdir)/gnulib-m4/double-slash-root.m4 \ @@ -170,7 +175,10 @@ $(top_srcdir)/gnulib-m4/error.m4 \ $(top_srcdir)/gnulib-m4/execute.m4 \ $(top_srcdir)/gnulib-m4/exponentd.m4 \ + $(top_srcdir)/gnulib-m4/exponentf.m4 \ + $(top_srcdir)/gnulib-m4/exponentl.m4 \ $(top_srcdir)/gnulib-m4/extensions.m4 \ + $(top_srcdir)/gnulib-m4/fabs.m4 \ $(top_srcdir)/gnulib-m4/fatal-signal.m4 \ $(top_srcdir)/gnulib-m4/fcntl.m4 \ $(top_srcdir)/gnulib-m4/fcntl_h.m4 \ @@ -200,6 +208,11 @@ $(top_srcdir)/gnulib-m4/inline.m4 \ $(top_srcdir)/gnulib-m4/intmax_t.m4 \ $(top_srcdir)/gnulib-m4/inttypes.m4 \ + $(top_srcdir)/gnulib-m4/isinf.m4 \ + $(top_srcdir)/gnulib-m4/isnan.m4 \ + $(top_srcdir)/gnulib-m4/isnand.m4 \ + $(top_srcdir)/gnulib-m4/isnanf.m4 \ + $(top_srcdir)/gnulib-m4/isnanl.m4 \ $(top_srcdir)/gnulib-m4/iswblank.m4 \ $(top_srcdir)/gnulib-m4/java.m4 \ $(top_srcdir)/gnulib-m4/javacomp.m4 \ @@ -222,10 +235,13 @@ $(top_srcdir)/gnulib-m4/locale-zh.m4 \ $(top_srcdir)/gnulib-m4/locale_h.m4 \ $(top_srcdir)/gnulib-m4/localename.m4 \ + $(top_srcdir)/gnulib-m4/log10.m4 \ $(top_srcdir)/gnulib-m4/lseek.m4 \ $(top_srcdir)/gnulib-m4/lstat.m4 \ $(top_srcdir)/gnulib-m4/malloc.m4 \ $(top_srcdir)/gnulib-m4/malloca.m4 \ + $(top_srcdir)/gnulib-m4/math_h.m4 \ + $(top_srcdir)/gnulib-m4/mathfunc.m4 \ $(top_srcdir)/gnulib-m4/mbchar.m4 \ $(top_srcdir)/gnulib-m4/mbiter.m4 \ $(top_srcdir)/gnulib-m4/mbrtowc.m4 \ @@ -255,6 +271,7 @@ $(top_srcdir)/gnulib-m4/pathmax.m4 \ $(top_srcdir)/gnulib-m4/pipe2.m4 \ $(top_srcdir)/gnulib-m4/posix_spawn.m4 \ + $(top_srcdir)/gnulib-m4/pow.m4 \ $(top_srcdir)/gnulib-m4/printf.m4 \ $(top_srcdir)/gnulib-m4/putenv.m4 \ $(top_srcdir)/gnulib-m4/quote.m4 \ @@ -279,6 +296,7 @@ $(top_srcdir)/gnulib-m4/sigaction.m4 \ $(top_srcdir)/gnulib-m4/signal_h.m4 \ $(top_srcdir)/gnulib-m4/signalblocking.m4 \ + $(top_srcdir)/gnulib-m4/signbit.m4 \ $(top_srcdir)/gnulib-m4/sigpipe.m4 \ $(top_srcdir)/gnulib-m4/sleep.m4 \ $(top_srcdir)/gnulib-m4/snprintf.m4 \ @@ -436,7 +454,7 @@ ../src/format-kde-kuit.c ../src/format-boost.c \ ../src/format-lua.c ../src/format.c ../src/plural-exp.c \ ../src/plural-eval.c ../src/msgl-check.c ../src/sentence.c \ - ../src/libexpat-compat.c ../woe32dll/gettextpo-exports.c + ../woe32dll/gettextpo-exports.c am__dirstamp = $(am__leading_dot)dirstamp am__objects_1 = ../src/str-list.lo ../src/dir-list.lo \ ../src/message.lo ../src/msgl-ascii.lo ../src/po-error.lo \ @@ -458,8 +476,7 @@ ../src/format-kde.lo ../src/format-kde-kuit.lo \ ../src/format-boost.lo ../src/format-lua.lo ../src/format.lo \ ../src/plural-exp.lo ../src/plural-eval.lo \ - ../src/msgl-check.lo ../src/sentence.lo \ - ../src/libexpat-compat.lo + ../src/msgl-check.lo ../src/sentence.lo @WOE32DLL_TRUE@am__objects_2 = ../woe32dll/gettextpo-exports.lo am_libgettextpo_la_OBJECTS = gettext-po.lo $(am__objects_1) \ $(am__objects_2) @@ -477,60 +494,69 @@ c-strstr.c concat-filename.c diffseq.h error-progname.h \ error-progname.c exitfail.c fd-hook.c file-ostream.c fstrcmp.h \ fstrcmp.c fwriteerror.h fwriteerror.c gcd.h gcd.c gettext.h \ - hash.h hash.c localcharset.h localcharset.c glthread/lock.h \ - glthread/lock.c malloca.c mbswidth.h mbswidth.c minmax.h \ + hash.h hash.c gl_linked_list.h gl_linked_list.c \ + gl_anylinked_list1.h gl_anylinked_list2.h gl_list.h gl_list.c \ + localcharset.h localcharset.c glthread/lock.h glthread/lock.c \ + malloca.c markup.h markup.c mbswidth.h mbswidth.c minmax.h \ ostream.c progname.h progname.c size_max.h striconv.h \ striconv.c striconveh.h striconveh.c striconveha.h \ striconveha.c glthread/threadlib.c glthread/tls.h \ glthread/tls.c uniconv/u8-conv-from-enc.c \ - unictype/ctype_space.c unilbrk/lbrktables.c \ - unilbrk/u8-possible-linebreaks.c unilbrk/u8-width-linebreaks.c \ - unilbrk/ulc-common.c unilbrk/ulc-width-linebreaks.c unistd.c \ - unistr/u16-mbtouc.c unistr/u16-mbtouc-aux.c unistr/u8-check.c \ - unistr/u8-mblen.c unistr/u8-mbtouc.c unistr/u8-mbtouc-aux.c \ + unictype/ctype_alpha.c unictype/ctype_space.c \ + unilbrk/lbrktables.c unilbrk/u8-possible-linebreaks.c \ + unilbrk/u8-width-linebreaks.c unilbrk/ulc-common.c \ + unilbrk/ulc-width-linebreaks.c unistd.c unistr/u16-mbtouc.c \ + unistr/u16-mbtouc-aux.c unistr/u8-check.c unistr/u8-mblen.c \ + unistr/u8-mbtouc.c unistr/u8-mbtouc-aux.c \ unistr/u8-mbtouc-unsafe.c unistr/u8-mbtouc-unsafe-aux.c \ - unistr/u8-mbtoucr.c unistr/u8-prev.c unistr/u8-uctomb.c \ + unistr/u8-mbtoucr.c unistr/u8-next.c unistr/u8-prev.c \ + unistr/u8-strmbtouc.c unistr/u8-uctomb.c \ unistr/u8-uctomb-aux.c uniwidth/width.c wctype-h.c xalloc.h \ xmalloc.c xstrdup.c xconcat-filename.c xerror.h xerror.c \ - xmalloca.c xsize.h xsize.c xstriconv.h xstriconv.c \ - xvasprintf.h xvasprintf.c xasprintf.c + gl_xlist.h gl_xlist.c xmalloca.c xsize.h xsize.c xstriconv.h \ + xstriconv.c xvasprintf.h xvasprintf.c xasprintf.c @LIBUNISTRING_COMPILE_UNICONV_U8_CONV_FROM_ENC_TRUE@am__objects_3 = uniconv/u8-conv-from-enc.lo -@LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_SPACE_TRUE@am__objects_4 = unictype/ctype_space.lo -@LIBUNISTRING_COMPILE_UNILBRK_U8_POSSIBLE_LINEBREAKS_TRUE@am__objects_5 = unilbrk/u8-possible-linebreaks.lo -@LIBUNISTRING_COMPILE_UNILBRK_U8_WIDTH_LINEBREAKS_TRUE@am__objects_6 = unilbrk/u8-width-linebreaks.lo -@LIBUNISTRING_COMPILE_UNILBRK_ULC_WIDTH_LINEBREAKS_TRUE@am__objects_7 = unilbrk/ulc-width-linebreaks.lo -@LIBUNISTRING_COMPILE_UNISTR_U16_MBTOUC_TRUE@am__objects_8 = unistr/u16-mbtouc.lo \ +@LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_ALPHA_TRUE@am__objects_4 = unictype/ctype_alpha.lo +@LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_SPACE_TRUE@am__objects_5 = unictype/ctype_space.lo +@LIBUNISTRING_COMPILE_UNILBRK_U8_POSSIBLE_LINEBREAKS_TRUE@am__objects_6 = unilbrk/u8-possible-linebreaks.lo +@LIBUNISTRING_COMPILE_UNILBRK_U8_WIDTH_LINEBREAKS_TRUE@am__objects_7 = unilbrk/u8-width-linebreaks.lo +@LIBUNISTRING_COMPILE_UNILBRK_ULC_WIDTH_LINEBREAKS_TRUE@am__objects_8 = unilbrk/ulc-width-linebreaks.lo +@LIBUNISTRING_COMPILE_UNISTR_U16_MBTOUC_TRUE@am__objects_9 = unistr/u16-mbtouc.lo \ @LIBUNISTRING_COMPILE_UNISTR_U16_MBTOUC_TRUE@ unistr/u16-mbtouc-aux.lo -@LIBUNISTRING_COMPILE_UNISTR_U8_CHECK_TRUE@am__objects_9 = \ +@LIBUNISTRING_COMPILE_UNISTR_U8_CHECK_TRUE@am__objects_10 = \ @LIBUNISTRING_COMPILE_UNISTR_U8_CHECK_TRUE@ unistr/u8-check.lo -@LIBUNISTRING_COMPILE_UNISTR_U8_MBLEN_TRUE@am__objects_10 = \ +@LIBUNISTRING_COMPILE_UNISTR_U8_MBLEN_TRUE@am__objects_11 = \ @LIBUNISTRING_COMPILE_UNISTR_U8_MBLEN_TRUE@ unistr/u8-mblen.lo -@LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUC_TRUE@am__objects_11 = unistr/u8-mbtouc.lo \ +@LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUC_TRUE@am__objects_12 = unistr/u8-mbtouc.lo \ @LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUC_TRUE@ unistr/u8-mbtouc-aux.lo -@LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUC_UNSAFE_TRUE@am__objects_12 = unistr/u8-mbtouc-unsafe.lo \ +@LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUC_UNSAFE_TRUE@am__objects_13 = unistr/u8-mbtouc-unsafe.lo \ @LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUC_UNSAFE_TRUE@ unistr/u8-mbtouc-unsafe-aux.lo -@LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUCR_TRUE@am__objects_13 = unistr/u8-mbtoucr.lo -@LIBUNISTRING_COMPILE_UNISTR_U8_PREV_TRUE@am__objects_14 = \ +@LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUCR_TRUE@am__objects_14 = unistr/u8-mbtoucr.lo +@LIBUNISTRING_COMPILE_UNISTR_U8_NEXT_TRUE@am__objects_15 = \ +@LIBUNISTRING_COMPILE_UNISTR_U8_NEXT_TRUE@ unistr/u8-next.lo +@LIBUNISTRING_COMPILE_UNISTR_U8_PREV_TRUE@am__objects_16 = \ @LIBUNISTRING_COMPILE_UNISTR_U8_PREV_TRUE@ unistr/u8-prev.lo -@LIBUNISTRING_COMPILE_UNISTR_U8_UCTOMB_TRUE@am__objects_15 = unistr/u8-uctomb.lo \ +@LIBUNISTRING_COMPILE_UNISTR_U8_STRMBTOUC_TRUE@am__objects_17 = unistr/u8-strmbtouc.lo +@LIBUNISTRING_COMPILE_UNISTR_U8_UCTOMB_TRUE@am__objects_18 = unistr/u8-uctomb.lo \ @LIBUNISTRING_COMPILE_UNISTR_U8_UCTOMB_TRUE@ unistr/u8-uctomb-aux.lo -@LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE@am__objects_16 = \ +@LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE@am__objects_19 = \ @LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE@ uniwidth/width.lo am_libgnu_la_OBJECTS = basename.lo c-ctype.lo c-strcasecmp.lo \ c-strncasecmp.lo c-strstr.lo concat-filename.lo \ error-progname.lo exitfail.lo fd-hook.lo file-ostream.lo \ - fstrcmp.lo fwriteerror.lo gcd.lo hash.lo localcharset.lo \ - glthread/lock.lo malloca.lo mbswidth.lo ostream.lo progname.lo \ - striconv.lo striconveh.lo striconveha.lo glthread/threadlib.lo \ + fstrcmp.lo fwriteerror.lo gcd.lo hash.lo gl_linked_list.lo \ + gl_list.lo localcharset.lo glthread/lock.lo malloca.lo \ + markup.lo mbswidth.lo ostream.lo progname.lo striconv.lo \ + striconveh.lo striconveha.lo glthread/threadlib.lo \ glthread/tls.lo $(am__objects_3) $(am__objects_4) \ - unilbrk/lbrktables.lo $(am__objects_5) $(am__objects_6) \ - unilbrk/ulc-common.lo $(am__objects_7) unistd.lo \ - $(am__objects_8) $(am__objects_9) $(am__objects_10) \ - $(am__objects_11) $(am__objects_12) $(am__objects_13) \ - $(am__objects_14) $(am__objects_15) $(am__objects_16) \ - wctype-h.lo xmalloc.lo xstrdup.lo xconcat-filename.lo \ - xerror.lo xmalloca.lo xsize.lo xstriconv.lo xvasprintf.lo \ - xasprintf.lo + $(am__objects_5) unilbrk/lbrktables.lo $(am__objects_6) \ + $(am__objects_7) unilbrk/ulc-common.lo $(am__objects_8) \ + unistd.lo $(am__objects_9) $(am__objects_10) $(am__objects_11) \ + $(am__objects_12) $(am__objects_13) $(am__objects_14) \ + $(am__objects_15) $(am__objects_16) $(am__objects_17) \ + $(am__objects_18) $(am__objects_19) wctype-h.lo xmalloc.lo \ + xstrdup.lo xconcat-filename.lo xerror.lo gl_xlist.lo \ + xmalloca.lo xsize.lo xstriconv.lo xvasprintf.lo xasprintf.lo libgnu_la_OBJECTS = $(am_libgnu_la_OBJECTS) libgnu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ @@ -599,7 +625,7 @@ CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.gnulib $(srcdir)/Makefile.in \ $(srcdir)/exported.sh.in \ - $(top_srcdir)/../build-aux/mkinstalldirs ChangeLog + $(top_srcdir)/../build-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkglibexecdir = @pkglibexecdir@ ACLOCAL = @ACLOCAL@ @@ -652,7 +678,7 @@ CXX_CHOICE = @CXX_CHOICE@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ -DEFS = @DEFS@ +DEFS = -DIN_LIBGETTEXTPO=1 @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ @@ -672,6 +698,7 @@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ +FABS_LIBM = @FABS_LIBM@ FGREP = @FGREP@ FLOAT_H = @FLOAT_H@ FNMATCH_H = @FNMATCH_H@ @@ -686,15 +713,34 @@ GLOBAL_SYMBOL_PIPE = @GLOBAL_SYMBOL_PIPE@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_ACOSF = @GNULIB_ACOSF@ +GNULIB_ACOSL = @GNULIB_ACOSL@ GNULIB_ALPHASORT = @GNULIB_ALPHASORT@ +GNULIB_ASINF = @GNULIB_ASINF@ +GNULIB_ASINL = @GNULIB_ASINL@ +GNULIB_ATAN2F = @GNULIB_ATAN2F@ +GNULIB_ATANF = @GNULIB_ATANF@ +GNULIB_ATANL = @GNULIB_ATANL@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_BTOWC = @GNULIB_BTOWC@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ +GNULIB_CBRT = @GNULIB_CBRT@ +GNULIB_CBRTF = @GNULIB_CBRTF@ +GNULIB_CBRTL = @GNULIB_CBRTL@ +GNULIB_CEIL = @GNULIB_CEIL@ +GNULIB_CEILF = @GNULIB_CEILF@ +GNULIB_CEILL = @GNULIB_CEILL@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@ +GNULIB_COPYSIGN = @GNULIB_COPYSIGN@ +GNULIB_COPYSIGNF = @GNULIB_COPYSIGNF@ +GNULIB_COPYSIGNL = @GNULIB_COPYSIGNL@ +GNULIB_COSF = @GNULIB_COSF@ +GNULIB_COSHF = @GNULIB_COSHF@ +GNULIB_COSL = @GNULIB_COSL@ GNULIB_DIRFD = @GNULIB_DIRFD@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ @@ -703,6 +749,16 @@ GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_EXP2 = @GNULIB_EXP2@ +GNULIB_EXP2F = @GNULIB_EXP2F@ +GNULIB_EXP2L = @GNULIB_EXP2L@ +GNULIB_EXPF = @GNULIB_EXPF@ +GNULIB_EXPL = @GNULIB_EXPL@ +GNULIB_EXPM1 = @GNULIB_EXPM1@ +GNULIB_EXPM1F = @GNULIB_EXPM1F@ +GNULIB_EXPM1L = @GNULIB_EXPM1L@ +GNULIB_FABSF = @GNULIB_FABSF@ +GNULIB_FABSL = @GNULIB_FABSL@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ @@ -717,6 +773,15 @@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ +GNULIB_FLOOR = @GNULIB_FLOOR@ +GNULIB_FLOORF = @GNULIB_FLOORF@ +GNULIB_FLOORL = @GNULIB_FLOORL@ +GNULIB_FMA = @GNULIB_FMA@ +GNULIB_FMAF = @GNULIB_FMAF@ +GNULIB_FMAL = @GNULIB_FMAL@ +GNULIB_FMOD = @GNULIB_FMOD@ +GNULIB_FMODF = @GNULIB_FMODF@ +GNULIB_FMODL = @GNULIB_FMODL@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ @@ -725,6 +790,9 @@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ +GNULIB_FREXP = @GNULIB_FREXP@ +GNULIB_FREXPF = @GNULIB_FREXPF@ +GNULIB_FREXPL = @GNULIB_FREXPL@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ @@ -755,17 +823,47 @@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ +GNULIB_HYPOT = @GNULIB_HYPOT@ +GNULIB_HYPOTF = @GNULIB_HYPOTF@ +GNULIB_HYPOTL = @GNULIB_HYPOTL@ GNULIB_ICONV = @GNULIB_ICONV@ +GNULIB_ILOGB = @GNULIB_ILOGB@ +GNULIB_ILOGBF = @GNULIB_ILOGBF@ +GNULIB_ILOGBL = @GNULIB_ILOGBL@ GNULIB_IMAXABS = @GNULIB_IMAXABS@ GNULIB_IMAXDIV = @GNULIB_IMAXDIV@ GNULIB_ISATTY = @GNULIB_ISATTY@ +GNULIB_ISBLANK = @GNULIB_ISBLANK@ +GNULIB_ISFINITE = @GNULIB_ISFINITE@ +GNULIB_ISINF = @GNULIB_ISINF@ +GNULIB_ISNAN = @GNULIB_ISNAN@ +GNULIB_ISNAND = @GNULIB_ISNAND@ +GNULIB_ISNANF = @GNULIB_ISNANF@ +GNULIB_ISNANL = @GNULIB_ISNANL@ GNULIB_ISWBLANK = @GNULIB_ISWBLANK@ GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LDEXPF = @GNULIB_LDEXPF@ +GNULIB_LDEXPL = @GNULIB_LDEXPL@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LOCALECONV = @GNULIB_LOCALECONV@ +GNULIB_LOG = @GNULIB_LOG@ +GNULIB_LOG10 = @GNULIB_LOG10@ +GNULIB_LOG10F = @GNULIB_LOG10F@ +GNULIB_LOG10L = @GNULIB_LOG10L@ +GNULIB_LOG1P = @GNULIB_LOG1P@ +GNULIB_LOG1PF = @GNULIB_LOG1PF@ +GNULIB_LOG1PL = @GNULIB_LOG1PL@ +GNULIB_LOG2 = @GNULIB_LOG2@ +GNULIB_LOG2F = @GNULIB_LOG2F@ +GNULIB_LOG2L = @GNULIB_LOG2L@ +GNULIB_LOGB = @GNULIB_LOGB@ +GNULIB_LOGBF = @GNULIB_LOGBF@ +GNULIB_LOGBL = @GNULIB_LOGBL@ +GNULIB_LOGF = @GNULIB_LOGF@ +GNULIB_LOGL = @GNULIB_LOGL@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ @@ -804,6 +902,9 @@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ +GNULIB_MODF = @GNULIB_MODF@ +GNULIB_MODFF = @GNULIB_MODFF@ +GNULIB_MODFL = @GNULIB_MODFL@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@ GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ @@ -839,6 +940,7 @@ GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN@ GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY@ GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT@ +GNULIB_POWF = @GNULIB_POWF@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ @@ -862,11 +964,20 @@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ +GNULIB_REMAINDER = @GNULIB_REMAINDER@ +GNULIB_REMAINDERF = @GNULIB_REMAINDERF@ +GNULIB_REMAINDERL = @GNULIB_REMAINDERL@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_REWINDDIR = @GNULIB_REWINDDIR@ +GNULIB_RINT = @GNULIB_RINT@ +GNULIB_RINTF = @GNULIB_RINTF@ +GNULIB_RINTL = @GNULIB_RINTL@ GNULIB_RMDIR = @GNULIB_RMDIR@ +GNULIB_ROUND = @GNULIB_ROUND@ +GNULIB_ROUNDF = @GNULIB_ROUNDF@ +GNULIB_ROUNDL = @GNULIB_ROUNDL@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANDIR = @GNULIB_SCANDIR@ GNULIB_SCANF = @GNULIB_SCANF@ @@ -877,10 +988,16 @@ GNULIB_SETLOCALE = @GNULIB_SETLOCALE@ GNULIB_SIGACTION = @GNULIB_SIGACTION@ GNULIB_SIGNAL_H_SIGPIPE = @GNULIB_SIGNAL_H_SIGPIPE@ +GNULIB_SIGNBIT = @GNULIB_SIGNBIT@ GNULIB_SIGPROCMASK = @GNULIB_SIGPROCMASK@ +GNULIB_SINF = @GNULIB_SINF@ +GNULIB_SINHF = @GNULIB_SINHF@ +GNULIB_SINL = @GNULIB_SINL@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ +GNULIB_SQRTF = @GNULIB_SQRTF@ +GNULIB_SQRTL = @GNULIB_SQRTL@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ @@ -909,11 +1026,17 @@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ +GNULIB_TANF = @GNULIB_TANF@ +GNULIB_TANHF = @GNULIB_TANHF@ +GNULIB_TANL = @GNULIB_TANL@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TIME_RZ = @GNULIB_TIME_RZ@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@ +GNULIB_TRUNC = @GNULIB_TRUNC@ +GNULIB_TRUNCF = @GNULIB_TRUNCF@ +GNULIB_TRUNCL = @GNULIB_TRUNCL@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ @@ -973,25 +1096,57 @@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ +HAVE_ACOSF = @HAVE_ACOSF@ +HAVE_ACOSL = @HAVE_ACOSL@ HAVE_ALPHASORT = @HAVE_ALPHASORT@ +HAVE_ASINF = @HAVE_ASINF@ +HAVE_ASINL = @HAVE_ASINL@ HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_ATAN2F = @HAVE_ATAN2F@ +HAVE_ATANF = @HAVE_ATANF@ +HAVE_ATANL = @HAVE_ATANL@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_BTOWC = @HAVE_BTOWC@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ +HAVE_CBRT = @HAVE_CBRT@ +HAVE_CBRTF = @HAVE_CBRTF@ +HAVE_CBRTL = @HAVE_CBRTL@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_CLIX = @HAVE_CLIX@ HAVE_CLIX_IN_PATH = @HAVE_CLIX_IN_PATH@ HAVE_CLOSEDIR = @HAVE_CLOSEDIR@ +HAVE_COPYSIGN = @HAVE_COPYSIGN@ +HAVE_COPYSIGNL = @HAVE_COPYSIGNL@ +HAVE_COSF = @HAVE_COSF@ +HAVE_COSHF = @HAVE_COSHF@ +HAVE_COSL = @HAVE_COSL@ HAVE_CSC = @HAVE_CSC@ HAVE_CSCC = @HAVE_CSCC@ HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@ +HAVE_DECL_ASINL = @HAVE_DECL_ASINL@ +HAVE_DECL_ATANL = @HAVE_DECL_ATANL@ +HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@ +HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@ +HAVE_DECL_CEILF = @HAVE_DECL_CEILF@ +HAVE_DECL_CEILL = @HAVE_DECL_CEILL@ +HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@ +HAVE_DECL_COSL = @HAVE_DECL_COSL@ HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@ +HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@ +HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@ +HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ +HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@ +HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@ +HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ +HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ @@ -1003,13 +1158,28 @@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ +HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ +HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@ +HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@ +HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@ +HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@ +HAVE_DECL_LOGB = @HAVE_DECL_LOGB@ +HAVE_DECL_LOGL = @HAVE_DECL_LOGL@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ +HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@ +HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@ +HAVE_DECL_RINTF = @HAVE_DECL_RINTF@ +HAVE_DECL_ROUND = @HAVE_DECL_ROUND@ +HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@ +HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ +HAVE_DECL_SINL = @HAVE_DECL_SINL@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ +HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ @@ -1018,6 +1188,10 @@ HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ +HAVE_DECL_TANL = @HAVE_DECL_TANL@ +HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@ +HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@ +HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ @@ -1029,6 +1203,12 @@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_DUPLOCALE = @HAVE_DUPLOCALE@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_EXPF = @HAVE_EXPF@ +HAVE_EXPL = @HAVE_EXPL@ +HAVE_EXPM1 = @HAVE_EXPM1@ +HAVE_EXPM1F = @HAVE_EXPM1F@ +HAVE_FABSF = @HAVE_FABSF@ +HAVE_FABSL = @HAVE_FABSL@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ @@ -1039,6 +1219,12 @@ HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ +HAVE_FMA = @HAVE_FMA@ +HAVE_FMAF = @HAVE_FMAF@ +HAVE_FMAL = @HAVE_FMAL@ +HAVE_FMODF = @HAVE_FMODF@ +HAVE_FMODL = @HAVE_FMODL@ +HAVE_FREXPF = @HAVE_FREXPF@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ @@ -1061,9 +1247,18 @@ HAVE_GLOBAL_SYMBOL_PIPE = @HAVE_GLOBAL_SYMBOL_PIPE@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ +HAVE_HYPOTF = @HAVE_HYPOTF@ +HAVE_HYPOTL = @HAVE_HYPOTL@ +HAVE_ILOGB = @HAVE_ILOGB@ +HAVE_ILOGBF = @HAVE_ILOGBF@ +HAVE_ILOGBL = @HAVE_ILOGBL@ HAVE_ILRUN = @HAVE_ILRUN@ HAVE_ILRUN_IN_PATH = @HAVE_ILRUN_IN_PATH@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_ISBLANK = @HAVE_ISBLANK@ +HAVE_ISNAND = @HAVE_ISNAND@ +HAVE_ISNANF = @HAVE_ISNANF@ +HAVE_ISNANL = @HAVE_ISNANL@ HAVE_ISWBLANK = @HAVE_ISWBLANK@ HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ HAVE_JAVA = @HAVE_JAVA@ @@ -1085,10 +1280,19 @@ HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ -HAVE_LIBEXPAT = @HAVE_LIBEXPAT@ +HAVE_LDEXPF = @HAVE_LDEXPF@ HAVE_LIBUNISTRING = @HAVE_LIBUNISTRING@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ +HAVE_LOG10F = @HAVE_LOG10F@ +HAVE_LOG10L = @HAVE_LOG10L@ +HAVE_LOG1P = @HAVE_LOG1P@ +HAVE_LOG1PF = @HAVE_LOG1PF@ +HAVE_LOG1PL = @HAVE_LOG1PL@ +HAVE_LOGBF = @HAVE_LOGBF@ +HAVE_LOGBL = @HAVE_LOGBL@ +HAVE_LOGF = @HAVE_LOGF@ +HAVE_LOGL = @HAVE_LOGL@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ @@ -1112,6 +1316,8 @@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ +HAVE_MODFF = @HAVE_MODFF@ +HAVE_MODFL = @HAVE_MODFL@ HAVE_MONO = @HAVE_MONO@ HAVE_MONO_IN_PATH = @HAVE_MONO_IN_PATH@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ @@ -1131,6 +1337,7 @@ HAVE_POSIX_SPAWN = @HAVE_POSIX_SPAWN@ HAVE_POSIX_SPAWNATTR_T = @HAVE_POSIX_SPAWNATTR_T@ HAVE_POSIX_SPAWN_FILE_ACTIONS_T = @HAVE_POSIX_SPAWN_FILE_ACTIONS_T@ +HAVE_POWF = @HAVE_POWF@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PSELECT = @HAVE_PSELECT@ HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ @@ -1146,9 +1353,14 @@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ +HAVE_REMAINDER = @HAVE_REMAINDER@ +HAVE_REMAINDERF = @HAVE_REMAINDERF@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_REWINDDIR = @HAVE_REWINDDIR@ +HAVE_RINT = @HAVE_RINT@ +HAVE_RINTL = @HAVE_RINTL@ HAVE_RPMATCH = @HAVE_RPMATCH@ +HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@ HAVE_SCANDIR = @HAVE_SCANDIR@ HAVE_SCHED_H = @HAVE_SCHED_H@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ @@ -1161,9 +1373,14 @@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SIGSET_T = @HAVE_SIGSET_T@ +HAVE_SINF = @HAVE_SINF@ +HAVE_SINHF = @HAVE_SINHF@ +HAVE_SINL = @HAVE_SINL@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_SNPRINTF = @HAVE_SNPRINTF@ HAVE_SPAWN_H = @HAVE_SPAWN_H@ +HAVE_SQRTF = @HAVE_SQRTF@ +HAVE_SQRTL = @HAVE_SQRTL@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ @@ -1189,6 +1406,9 @@ HAVE_SYS_SELECT_H = @HAVE_SYS_SELECT_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_TANF = @HAVE_TANF@ +HAVE_TANHF = @HAVE_TANHF@ +HAVE_TANL = @HAVE_TANL@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@ HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ @@ -1266,13 +1486,16 @@ INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +ISINF_LIBM = @ISINF_LIBM@ +ISNAND_LIBM = @ISNAND_LIBM@ +ISNANF_LIBM = @ISNANF_LIBM@ +ISNANL_LIBM = @ISNANL_LIBM@ +ISNAN_LIBM = @ISNAN_LIBM@ JAR = @JAR@ JAVA_CHOICE = @JAVA_CHOICE@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBCROCO = @LIBCROCO@ -LIBEXPAT = @LIBEXPAT@ -LIBEXPAT_PREFIX = @LIBEXPAT_PREFIX@ LIBGLIB = @LIBGLIB@ LIBGLIB_H = @LIBGLIB_H@ LIBGREP_LIBDEPS = @LIBGREP_LIBDEPS@ @@ -1310,9 +1533,9 @@ LOCALE_JA = @LOCALE_JA@ LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ LOCALE_ZH_CN = @LOCALE_ZH_CN@ +LOG10_LIBM = @LOG10_LIBM@ LTLIBC = @LTLIBC@ LTLIBCROCO = @LTLIBCROCO@ -LTLIBEXPAT = @LTLIBEXPAT@ LTLIBGLIB = @LTLIBGLIB@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -1333,6 +1556,7 @@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ MSGMERGE_LIBM = @MSGMERGE_LIBM@ +NEXT_AS_FIRST_DIRECTIVE_CTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_CTYPE_H@ NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ @@ -1342,6 +1566,7 @@ NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@ NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@ +NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ NEXT_AS_FIRST_DIRECTIVE_SCHED_H = @NEXT_AS_FIRST_DIRECTIVE_SCHED_H@ NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ NEXT_AS_FIRST_DIRECTIVE_SPAWN_H = @NEXT_AS_FIRST_DIRECTIVE_SPAWN_H@ @@ -1360,6 +1585,7 @@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ +NEXT_CTYPE_H = @NEXT_CTYPE_H@ NEXT_DIRENT_H = @NEXT_DIRENT_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@ @@ -1369,6 +1595,7 @@ NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ NEXT_LANGINFO_H = @NEXT_LANGINFO_H@ NEXT_LOCALE_H = @NEXT_LOCALE_H@ +NEXT_MATH_H = @NEXT_MATH_H@ NEXT_SCHED_H = @NEXT_SCHED_H@ NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ NEXT_SPAWN_H = @NEXT_SPAWN_H@ @@ -1399,12 +1626,14 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_SUFFIX = @PACKAGE_SUFFIX@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ POSUB = @POSUB@ +POW_LIBM = @POW_LIBM@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PRIPTR_PREFIX = @PRIPTR_PREFIX@ @@ -1423,6 +1652,11 @@ REPLACE_BTOWC = @REPLACE_BTOWC@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CBRTF = @REPLACE_CBRTF@ +REPLACE_CBRTL = @REPLACE_CBRTL@ +REPLACE_CEIL = @REPLACE_CEIL@ +REPLACE_CEILF = @REPLACE_CEILF@ +REPLACE_CEILL = @REPLACE_CEILL@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@ @@ -1431,16 +1665,33 @@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@ +REPLACE_EXP2 = @REPLACE_EXP2@ +REPLACE_EXP2L = @REPLACE_EXP2L@ +REPLACE_EXPM1 = @REPLACE_EXPM1@ +REPLACE_EXPM1F = @REPLACE_EXPM1F@ +REPLACE_FABSL = @REPLACE_FABSL@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCNTL = @REPLACE_FCNTL@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ +REPLACE_FLOOR = @REPLACE_FLOOR@ +REPLACE_FLOORF = @REPLACE_FLOORF@ +REPLACE_FLOORL = @REPLACE_FLOORL@ +REPLACE_FMA = @REPLACE_FMA@ +REPLACE_FMAF = @REPLACE_FMAF@ +REPLACE_FMAL = @REPLACE_FMAL@ +REPLACE_FMOD = @REPLACE_FMOD@ +REPLACE_FMODF = @REPLACE_FMODF@ +REPLACE_FMODL = @REPLACE_FMODL@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ +REPLACE_FREXP = @REPLACE_FREXP@ +REPLACE_FREXPF = @REPLACE_FREXPF@ +REPLACE_FREXPL = @REPLACE_FREXPL@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ @@ -1459,19 +1710,44 @@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ +REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ +REPLACE_HYPOT = @REPLACE_HYPOT@ +REPLACE_HYPOTF = @REPLACE_HYPOTF@ +REPLACE_HYPOTL = @REPLACE_HYPOTL@ REPLACE_ICONV = @REPLACE_ICONV@ REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_ILOGB = @REPLACE_ILOGB@ +REPLACE_ILOGBF = @REPLACE_ILOGBF@ REPLACE_ISATTY = @REPLACE_ISATTY@ +REPLACE_ISFINITE = @REPLACE_ISFINITE@ +REPLACE_ISINF = @REPLACE_ISINF@ +REPLACE_ISNAN = @REPLACE_ISNAN@ REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ REPLACE_ITOLD = @REPLACE_ITOLD@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LDEXPL = @REPLACE_LDEXPL@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALECONV = @REPLACE_LOCALECONV@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ +REPLACE_LOG = @REPLACE_LOG@ +REPLACE_LOG10 = @REPLACE_LOG10@ +REPLACE_LOG10F = @REPLACE_LOG10F@ +REPLACE_LOG10L = @REPLACE_LOG10L@ +REPLACE_LOG1P = @REPLACE_LOG1P@ +REPLACE_LOG1PF = @REPLACE_LOG1PF@ +REPLACE_LOG1PL = @REPLACE_LOG1PL@ +REPLACE_LOG2 = @REPLACE_LOG2@ +REPLACE_LOG2F = @REPLACE_LOG2F@ +REPLACE_LOG2L = @REPLACE_LOG2L@ +REPLACE_LOGB = @REPLACE_LOGB@ +REPLACE_LOGBF = @REPLACE_LOGBF@ +REPLACE_LOGBL = @REPLACE_LOGBL@ +REPLACE_LOGF = @REPLACE_LOGF@ +REPLACE_LOGL = @REPLACE_LOGL@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ @@ -1489,6 +1765,10 @@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ +REPLACE_MODF = @REPLACE_MODF@ +REPLACE_MODFF = @REPLACE_MODFF@ +REPLACE_MODFL = @REPLACE_MODFL@ +REPLACE_NAN = @REPLACE_NAN@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@ REPLACE_NULL = @REPLACE_NULL@ @@ -1518,16 +1798,25 @@ REPLACE_READLINKAT = @REPLACE_READLINKAT@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ +REPLACE_REMAINDER = @REPLACE_REMAINDER@ +REPLACE_REMAINDERF = @REPLACE_REMAINDERF@ +REPLACE_REMAINDERL = @REPLACE_REMAINDERL@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ +REPLACE_ROUND = @REPLACE_ROUND@ +REPLACE_ROUNDF = @REPLACE_ROUNDF@ +REPLACE_ROUNDL = @REPLACE_ROUNDL@ REPLACE_SELECT = @REPLACE_SELECT@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SETLOCALE = @REPLACE_SETLOCALE@ +REPLACE_SIGNBIT = @REPLACE_SIGNBIT@ +REPLACE_SIGNBIT_USING_GCC = @REPLACE_SIGNBIT_USING_GCC@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ +REPLACE_SQRTL = @REPLACE_SQRTL@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ @@ -1553,6 +1842,9 @@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ +REPLACE_TRUNC = @REPLACE_TRUNC@ +REPLACE_TRUNCF = @REPLACE_TRUNCF@ +REPLACE_TRUNCL = @REPLACE_TRUNCL@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ @@ -1727,11 +2019,12 @@ sys_time.in.h sys_types.in.h \ $(top_srcdir)/../build-aux/config.rpath time.in.h iconveh.h \ localcharset.h striconveha.h uniconv.in.h unictype.in.h \ - unictype/bitmap.h unictype/ctype_space.h unilbrk.in.h \ - unilbrk/lbrkprop1.h unilbrk/lbrkprop2.h unilbrk/lbrktables.h \ - uniwidth/cjk.h unilbrk/ulc-common.h unistd.in.h unistr.in.h \ - unitypes.in.h localcharset.h uniwidth.in.h uniwidth/cjk.h \ - unlocked-io.h asnprintf.c float+.h printf-args.c printf-args.h \ + unictype/bitmap.h unictype/ctype_alpha.h unictype/bitmap.h \ + unictype/ctype_space.h unilbrk.in.h unilbrk/lbrkprop1.h \ + unilbrk/lbrkprop2.h unilbrk/lbrktables.h uniwidth/cjk.h \ + unilbrk/ulc-common.h unistd.in.h unistr.in.h unitypes.in.h \ + localcharset.h uniwidth.in.h uniwidth/cjk.h unlocked-io.h \ + asnprintf.c float+.h printf-args.c printf-args.h \ printf-parse.c printf-parse.h vasnprintf.c vasnprintf.h \ asprintf.c vasprintf.c verify.h wchar.in.h wctype.in.h \ wcwidth.c concat-filename.h xmalloca.h xalloc.h @@ -1849,8 +2142,7 @@ ../src/plural-exp.c \ ../src/plural-eval.c \ ../src/msgl-check.c \ - ../src/sentence.c \ - ../src/libexpat-compat.c + ../src/sentence.c # Libtool's library version information for libgettextpo. @@ -1865,8 +2157,7 @@ libgettextpo_la_LIBADD = libgnu.la $(WOE32_LIBADD) $(LTLIBUNISTRING) libgettextpo_la_LDFLAGS = -version-info \ $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) -rpath $(libdir) \ - @LTLIBINTL@ @LTLIBICONV@ @LTLIBEXPAT@ -lc -no-undefined \ - $(am__append_2) + @LTLIBINTL@ @LTLIBICONV@ -lc -no-undefined $(am__append_2) @WOE32_FALSE@WOE32_LIBADD = @WOE32_TRUE@WOE32_LIBADD = libgettextpo.res.lo libgnu_la_SOURCES = basename.h basename.c c-ctype.h c-ctype.c \ @@ -1874,20 +2165,23 @@ c-strstr.c concat-filename.c diffseq.h error-progname.h \ error-progname.c exitfail.c fd-hook.c file-ostream.c fstrcmp.h \ fstrcmp.c fwriteerror.h fwriteerror.c gcd.h gcd.c gettext.h \ - hash.h hash.c localcharset.h localcharset.c glthread/lock.h \ - glthread/lock.c malloca.c mbswidth.h mbswidth.c minmax.h \ + hash.h hash.c gl_linked_list.h gl_linked_list.c \ + gl_anylinked_list1.h gl_anylinked_list2.h gl_list.h gl_list.c \ + localcharset.h localcharset.c glthread/lock.h glthread/lock.c \ + malloca.c markup.h markup.c mbswidth.h mbswidth.c minmax.h \ ostream.c progname.h progname.c size_max.h striconv.h \ striconv.c striconveh.h striconveh.c striconveha.h \ striconveha.c glthread/threadlib.c glthread/tls.h \ - glthread/tls.c $(am__append_5) $(am__append_6) \ - unilbrk/lbrktables.c $(am__append_7) $(am__append_8) \ - unilbrk/ulc-common.c $(am__append_9) unistd.c $(am__append_10) \ + glthread/tls.c $(am__append_5) $(am__append_6) $(am__append_7) \ + unilbrk/lbrktables.c $(am__append_8) $(am__append_9) \ + unilbrk/ulc-common.c $(am__append_10) unistd.c \ $(am__append_11) $(am__append_12) $(am__append_13) \ $(am__append_14) $(am__append_15) $(am__append_16) \ - $(am__append_17) $(am__append_18) wctype-h.c xalloc.h \ + $(am__append_17) $(am__append_18) $(am__append_19) \ + $(am__append_20) $(am__append_21) wctype-h.c xalloc.h \ xmalloc.c xstrdup.c xconcat-filename.c xerror.h xerror.c \ - xmalloca.c xsize.h xsize.c xstriconv.h xstriconv.c \ - xvasprintf.h xvasprintf.c xasprintf.c + gl_xlist.h gl_xlist.c xmalloca.c xsize.h xsize.c xstriconv.h \ + xstriconv.c xvasprintf.h xvasprintf.c xasprintf.c libgnu_la_LIBADD = $(gtpo_LTLIBOBJS) libgnu_la_DEPENDENCIES = $(gtpo_LTLIBOBJS) EXTRA_libgnu_la_SOURCES = close.c error.c file-ostream.oo.c float.c \ @@ -2055,7 +2349,6 @@ ../src/plural-eval.lo: ../src/$(am__dirstamp) ../src/msgl-check.lo: ../src/$(am__dirstamp) ../src/sentence.lo: ../src/$(am__dirstamp) -../src/libexpat-compat.lo: ../src/$(am__dirstamp) ../woe32dll/$(am__dirstamp): @$(MKDIR_P) ../woe32dll @: > ../woe32dll/$(am__dirstamp) @@ -2076,6 +2369,7 @@ unictype/$(am__dirstamp): @$(MKDIR_P) unictype @: > unictype/$(am__dirstamp) +unictype/ctype_alpha.lo: unictype/$(am__dirstamp) unictype/ctype_space.lo: unictype/$(am__dirstamp) unilbrk/$(am__dirstamp): @$(MKDIR_P) unilbrk @@ -2097,7 +2391,9 @@ unistr/u8-mbtouc-unsafe.lo: unistr/$(am__dirstamp) unistr/u8-mbtouc-unsafe-aux.lo: unistr/$(am__dirstamp) unistr/u8-mbtoucr.lo: unistr/$(am__dirstamp) +unistr/u8-next.lo: unistr/$(am__dirstamp) unistr/u8-prev.lo: unistr/$(am__dirstamp) +unistr/u8-strmbtouc.lo: unistr/$(am__dirstamp) unistr/u8-uctomb.lo: unistr/$(am__dirstamp) unistr/u8-uctomb-aux.lo: unistr/$(am__dirstamp) uniwidth/$(am__dirstamp): @@ -2430,7 +2726,7 @@ sf=`echo "$$f" | sed -e 's,\\.[^.]*$$,,'`.c; \ test -f $$sf || sf=$(srcdir)/$$sf; \ of=`echo "$$f" | sed -e 's,^.*/,,' -e 's,\\.[^.]*$$,,'`.$(OBJEXT); \ - $(COMPILE) -c $$sf || { rm -f config.h; exit 1; }; \ + $(COMPILE) $(DEFS) -c $$sf || { rm -f config.h; exit 1; }; \ sh ./exported.sh $$of 1>&5; \ rm -f $$of `echo "$$of" | sed -e 's,\\.$(OBJEXT)$$,.lo,'`; \ ;; \ diff -Nru gettext-0.19.6/gettext-tools/libgettextpo/markup.c gettext-0.19.7/gettext-tools/libgettextpo/markup.c --- gettext-0.19.6/gettext-tools/libgettextpo/markup.c 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gettext-tools/libgettextpo/markup.c 2015-12-23 07:08:27.000000000 +0000 @@ -0,0 +1,1563 @@ +/* markup.c -- simple XML-like parser + Copyright (C) 2015 Free Software Foundation, Inc. + + This file is not part of the GNU gettext program, but is used with + GNU gettext. + + This is a stripped down version of GLib's gmarkup.c. The original + copyright notice is as follows: +*/ + +/* gmarkup.c - Simple XML-like parser + * + * Copyright 2000, 2003 Red Hat, Inc. + * Copyright 2007, 2008 Ryan Lortie + * + * GLib is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * GLib is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with GLib; see the file COPYING.LIB. If not, + * see . + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#include + +/* Specification */ +#include "markup.h" + +#include "c-ctype.h" +#include "gettext.h" +#include "gl_linked_list.h" +#include "gl_xlist.h" +#include "unictype.h" +#include "unistr.h" +#include "xalloc.h" +#include "xvasprintf.h" + +#define _(s) gettext(s) + +/** + * The "markup" parser is intended to parse a simple markup format + * that's a subset of XML. This is a small, efficient, easy-to-use + * parser. It should not be used if you expect to interoperate with + * other applications generating full-scale XML. However, it's very + * useful for application data files, config files, etc. where you + * know your application will be the only one writing the file. + * Full-scale XML parsers should be able to parse the subset used by + * markup, so you can easily migrate to full-scale XML at a later + * time if the need arises. + * + * The parser is not guaranteed to signal an error on all invalid XML; + * the parser may accept documents that an XML parser would not. + * However, XML documents which are not well-formed (which is a weaker + * condition than being valid. See the XML specification + * for definitions of these terms.) + * are not considered valid GMarkup documents. + * + * Simplifications to XML include: + * + * - Only UTF-8 encoding is allowed + * + * - No user-defined entities + * + * - Processing instructions, comments and the doctype declaration + * are "passed through" but are not interpreted in any way + * + * - No DTD or validation + * + * The markup format does support: + * + * - Elements + * + * - Attributes + * + * - 5 standard entities: & < > " ' + * + * - Character references + * + * - Sections marked as CDATA + */ + +typedef enum +{ + STATE_START, + STATE_AFTER_OPEN_ANGLE, + STATE_AFTER_CLOSE_ANGLE, + STATE_AFTER_ELISION_SLASH, /* the slash that obviates need for end element */ + STATE_INSIDE_OPEN_TAG_NAME, + STATE_INSIDE_ATTRIBUTE_NAME, + STATE_AFTER_ATTRIBUTE_NAME, + STATE_BETWEEN_ATTRIBUTES, + STATE_AFTER_ATTRIBUTE_EQUALS_SIGN, + STATE_INSIDE_ATTRIBUTE_VALUE_SQ, + STATE_INSIDE_ATTRIBUTE_VALUE_DQ, + STATE_INSIDE_TEXT, + STATE_AFTER_CLOSE_TAG_SLASH, + STATE_INSIDE_CLOSE_TAG_NAME, + STATE_AFTER_CLOSE_TAG_NAME, + STATE_INSIDE_PASSTHROUGH, + STATE_ERROR +} markup_parse_state_ty; + +typedef struct +{ + const char *prev_element; + const markup_parser_ty *prev_parser; + void *prev_user_data; +} markup_recursion_tracker_ty; + +typedef struct +{ + char *buffer; + size_t bufmax; + size_t buflen; +} markup_string_ty; + +struct _markup_parse_context_ty +{ + const markup_parser_ty *parser; + + markup_parse_flags_ty flags; + + int line_number; + int char_number; + + markup_parse_state_ty state; + + void *user_data; + + /* A piece of character data or an element that + * hasn't "ended" yet so we haven't yet called + * the callback for it. + */ + markup_string_ty *partial_chunk; + + gl_list_t tag_stack; /* */ + + char **attr_names; + char **attr_values; + int cur_attr; + int alloc_attrs; + + const char *current_text; + ssize_t current_text_len; + const char *current_text_end; + + /* used to save the start of the last interesting thingy */ + const char *start; + + const char *iter; + + char *error_text; + + unsigned int document_empty : 1; + unsigned int parsing : 1; + unsigned int awaiting_pop : 1; + int balance; + + /* subparser support */ + gl_list_t subparser_stack; /* */ + const char *subparser_element; +}; + +static markup_string_ty * +markup_string_new (void) +{ + return XZALLOC (markup_string_ty); +} + +static char * +markup_string_free (markup_string_ty *string, bool free_segment) +{ + if (free_segment) + { + free (string->buffer); + free (string); + return NULL; + } + else + { + char *result = string->buffer; + free (string); + return result; + } +} + +static void +markup_string_free1 (markup_string_ty *string) +{ + markup_string_free (string, true); +} + +static void +markup_string_truncate (markup_string_ty *string, size_t length) +{ + assert (string && length < string->buflen - 1); + string->buffer[length] = '\0'; + string->buflen = length; +} + +static void +markup_string_append (markup_string_ty *string, const char *to_append, + size_t length) +{ + if (string->buflen + length + 1 > string->bufmax) + { + string->bufmax *= 2; + if (string->buflen + length + 1 > string->bufmax) + string->bufmax = string->buflen + length + 1; + string->buffer = xrealloc (string->buffer, string->bufmax); + } + memcpy (string->buffer + string->buflen, to_append, length); + string->buffer[length] = '\0'; + string->buflen = length; +} + +static inline void +string_blank (markup_string_ty *string) +{ + if (string->bufmax > 0) + { + *string->buffer = '\0'; + string->buflen = 0; + } +} + +/* Creates a new parse context. A parse context is used to parse + marked-up documents. You can feed any number of documents into a + context, as long as no errors occur; once an error occurs, the + parse context can't continue to parse text (you have to free it and + create a new parse context). */ +markup_parse_context_ty * +markup_parse_context_new (const markup_parser_ty *parser, + markup_parse_flags_ty flags, + void *user_data) +{ + markup_parse_context_ty *context; + + assert (parser != NULL); + + context = XMALLOC (markup_parse_context_ty); + + context->parser = parser; + context->flags = flags; + context->user_data = user_data; + + context->line_number = 1; + context->char_number = 1; + + context->partial_chunk = NULL; + + context->state = STATE_START; + context->tag_stack = + gl_list_create_empty (GL_LINKED_LIST, + NULL, NULL, + (gl_listelement_dispose_fn) markup_string_free1, + true); + context->attr_names = NULL; + context->attr_values = NULL; + context->cur_attr = -1; + context->alloc_attrs = 0; + + context->current_text = NULL; + context->current_text_len = -1; + context->current_text_end = NULL; + + context->start = NULL; + context->iter = NULL; + + context->error_text = NULL; + + context->document_empty = true; + context->parsing = false; + + context->awaiting_pop = false; + context->subparser_stack = + gl_list_create_empty (GL_LINKED_LIST, + NULL, NULL, + (gl_listelement_dispose_fn) free, + true); + context->subparser_element = NULL; + + context->balance = 0; + + return context; +} + +static void clear_attributes (markup_parse_context_ty *context); + +/* Frees a parse context. This function can't be called from inside + one of the markup_parser_ty functions or while a subparser is + pushed. */ +void +markup_parse_context_free (markup_parse_context_ty *context) +{ + assert (context != NULL); + assert (!context->parsing); + assert (gl_list_size (context->subparser_stack) == 0); + assert (!context->awaiting_pop); + + clear_attributes (context); + free (context->attr_names); + free (context->attr_values); + + gl_list_free (context->tag_stack); + gl_list_free (context->subparser_stack); + + if (context->partial_chunk) + markup_string_free (context->partial_chunk, true); + + free (context->error_text); + + free (context); +} + +static void pop_subparser_stack (markup_parse_context_ty *context); + +static void +emit_error (markup_parse_context_ty *context, const char *error_text) +{ + context->state = STATE_ERROR; + + if (context->parser->error) + (*context->parser->error) (context, error_text, context->user_data); + + /* report the error all the way up to free all the user-data */ + while (gl_list_size (context->subparser_stack) > 0) + { + pop_subparser_stack (context); + context->awaiting_pop = false; /* already been freed */ + + if (context->parser->error) + (*context->parser->error) (context, error_text, context->user_data); + } + + if (context->error_text) + free (context->error_text); + context->error_text = xstrdup (error_text); +} + +#define IS_COMMON_NAME_END_CHAR(c) \ + ((c) == '=' || (c) == '/' || (c) == '>' || (c) == ' ') + +static bool +slow_name_validate (markup_parse_context_ty *context, const char *name) +{ + const char *p = name; + ucs4_t uc; + + if (u8_check ((uint8_t *) name, strlen (name)) != NULL) + { + emit_error (context, _("invalid UTF-8 sequence")); + return false; + } + + if (!(c_isalpha (*p) + || (!IS_COMMON_NAME_END_CHAR (*p) + && (*p == '_' + || *p == ':' + || (u8_mbtouc (&uc, (uint8_t *) name, strlen (name)) > 0 + && uc_is_alpha (uc)))))) + { + char *error_text = xasprintf (_("'%s' is not a valid name: %c"), + name, *p); + emit_error (context, error_text); + free (error_text); + return false; + } + + for (p = (char *) u8_next (&uc, (uint8_t *) name); + p != NULL; + p = (char *) u8_next (&uc, (uint8_t *) p)) + { + /* is_name_char */ + if (!(c_isalnum (*p) || + (!IS_COMMON_NAME_END_CHAR (*p) && + (*p == '.' || + *p == '-' || + *p == '_' || + *p == ':' || + uc_is_alpha (uc))))) + { + char *error_text = xasprintf (_("'%s' is not a valid name: '%c'"), + name, *p); + emit_error (context, error_text); + free (error_text); + return false; + } + } + return true; +} + +/* + * Use me for elements, attributes etc. + */ +static bool +name_validate (markup_parse_context_ty *context, const char *name) +{ + char mask; + const char *p; + + /* name start char */ + p = name; + if (IS_COMMON_NAME_END_CHAR (*p) + || !(c_isalpha (*p) || *p == '_' || *p == ':')) + goto slow_validate; + + for (mask = *p++; *p != '\0'; p++) + { + mask |= *p; + + /* is_name_char */ + if (!(c_isalnum (*p) + || (!IS_COMMON_NAME_END_CHAR (*p) + && (*p == '.' || *p == '-' || *p == '_' || *p == ':')))) + goto slow_validate; + } + + if (mask & 0x80) /* un-common / non-ascii */ + goto slow_validate; + + return true; + + slow_validate: + return slow_name_validate (context, name); +} + +static bool +text_validate (markup_parse_context_ty *context, + const char *p, + int len) +{ + if (u8_check ((const uint8_t *) p, len) != NULL) + { + emit_error (context, _("invalid UTF-8 sequence")); + return false; + } + else + return true; +} + +/* + * re-write the GString in-place, unescaping anything that escaped. + * most XML does not contain entities, or escaping. + */ +static bool +unescape_string_inplace (markup_parse_context_ty *context, + markup_string_ty *string, + bool *is_ascii) +{ + char mask, *to; + const char *from; + bool normalize_attribute; + + if (string->buflen == 0) + return true; + + *is_ascii = false; + + /* are we unescaping an attribute or not ? */ + if (context->state == STATE_INSIDE_ATTRIBUTE_VALUE_SQ + || context->state == STATE_INSIDE_ATTRIBUTE_VALUE_DQ) + normalize_attribute = true; + else + normalize_attribute = false; + + /* + * Meeks' theorem: unescaping can only shrink text. + * for < etc. this is obvious, for ￿ more + * thought is required, but this is patently so. + */ + mask = 0; + for (from = to = string->buffer; *from != '\0'; from++, to++) + { + *to = *from; + + mask |= *to; + if (normalize_attribute && (*to == '\t' || *to == '\n')) + *to = ' '; + if (*to == '\r') + { + *to = normalize_attribute ? ' ' : '\n'; + if (from[1] == '\n') + from++; + } + if (*from == '&') + { + from++; + if (*from == '#') + { + int base = 10; + unsigned long l; + char *end = NULL; + + from++; + + if (*from == 'x') + { + base = 16; + from++; + } + + errno = 0; + l = strtoul (from, &end, base); + + if (end == from || errno != 0) + { + char *error_text = + xasprintf (_("invalid character reference: %s"), + errno != 0 + ? strerror (errno) + : _("not a valid number specification")); + emit_error (context, error_text); + free (error_text); + return false; + } + else if (*end != ';') + { + char *error_text = + xasprintf (_("invalid character reference: %s"), + _("no ending ';'")); + emit_error (context, error_text); + free (error_text); + return false; + } + else + { + /* characters XML 1.1 permits */ + if ((0 < l && l <= 0xD7FF) || + (0xE000 <= l && l <= 0xFFFD) || + (0x10000 <= l && l <= 0x10FFFF)) + { + char buf[8]; + int length; + length = u8_uctomb ((uint8_t *) buf, l, 8); + memcpy (to, buf, length); + to += length - 1; + from = end; + if (l >= 0x80) /* not ascii */ + mask |= 0x80; + } + else + { + char *error_text = + xasprintf (_("invalid character reference: %s"), + _("non-permitted character")); + emit_error (context, error_text); + free (error_text); + return false; + } + } + } + + else if (strncmp (from, "lt;", 3) == 0) + { + *to = '<'; + from += 2; + } + else if (strncmp (from, "gt;", 3) == 0) + { + *to = '>'; + from += 2; + } + else if (strncmp (from, "amp;", 4) == 0) + { + *to = '&'; + from += 3; + } + else if (strncmp (from, "quot;", 5) == 0) + { + *to = '"'; + from += 4; + } + else if (strncmp (from, "apos;", 5) == 0) + { + *to = '\''; + from += 4; + } + else + { + const char *reason; + char *error_text; + + if (*from == ';') + reason = _("empty"); + else + { + const char *end = strchr (from, ';'); + if (end) + reason = _("unknown"); + else + reason = _("no ending ';'"); + } + error_text = xasprintf (_("invalid entity reference: %s"), + reason); + emit_error (context, error_text); + free (error_text); + return false; + } + } + } + + assert (to - string->buffer <= string->buflen); + if (to - string->buffer != string->buflen) + markup_string_truncate (string, to - string->buffer); + + *is_ascii = !(mask & 0x80); + + return true; +} + +static inline bool +advance_char (markup_parse_context_ty *context) +{ + context->iter++; + context->char_number++; + + if (context->iter == context->current_text_end) + return false; + + else if (*context->iter == '\n') + { + context->line_number++; + context->char_number = 1; + } + + return true; +} + +static inline bool +xml_isspace (char c) +{ + return c == ' ' || c == '\t' || c == '\n' || c == '\r'; +} + +static void +skip_spaces (markup_parse_context_ty *context) +{ + do + { + if (!xml_isspace (*context->iter)) + return; + } + while (advance_char (context)); +} + +static void +advance_to_name_end (markup_parse_context_ty *context) +{ + do + { + if (IS_COMMON_NAME_END_CHAR (*(context->iter))) + return; + if (xml_isspace (*(context->iter))) + return; + } + while (advance_char (context)); +} + +static void +add_to_partial (markup_parse_context_ty *context, + const char *text_start, + const char *text_end) +{ + if (context->partial_chunk == NULL) + { /* allocate a new chunk to parse into */ + + context->partial_chunk = markup_string_new (); + } + + if (text_start != text_end) + markup_string_append (context->partial_chunk, + text_start, text_end - text_start); +} + +static inline void +truncate_partial (markup_parse_context_ty *context) +{ + if (context->partial_chunk != NULL) + string_blank (context->partial_chunk); +} + +static inline const char* +current_element (markup_parse_context_ty *context) +{ + const markup_string_ty *string = gl_list_get_at (context->tag_stack, 0); + return string->buffer; +} + +static void +pop_subparser_stack (markup_parse_context_ty *context) +{ + markup_recursion_tracker_ty *tracker; + + assert (gl_list_size (context->subparser_stack) > 0); + + tracker = (markup_recursion_tracker_ty *) gl_list_get_at (context->subparser_stack, 0); + + context->awaiting_pop = true; + + context->user_data = tracker->prev_user_data; + context->parser = tracker->prev_parser; + context->subparser_element = tracker->prev_element; + free (tracker); + + gl_list_remove_at (context->subparser_stack, 0); +} + +static void +push_partial_as_tag (markup_parse_context_ty *context) +{ + gl_list_add_first (context->tag_stack, context->partial_chunk); + context->partial_chunk = NULL; +} + +static void +pop_tag (markup_parse_context_ty *context) +{ + gl_list_remove_at (context->tag_stack, 0); +} + +static void +possibly_finish_subparser (markup_parse_context_ty *context) +{ + if (current_element (context) == context->subparser_element) + pop_subparser_stack (context); +} + +static void +ensure_no_outstanding_subparser (markup_parse_context_ty *context) +{ + context->awaiting_pop = false; +} + +static void +add_attribute (markup_parse_context_ty *context, markup_string_ty *string) +{ + if (context->cur_attr + 2 >= context->alloc_attrs) + { + context->alloc_attrs += 5; /* silly magic number */ + context->attr_names = xrealloc (context->attr_names, sizeof (char *) * context->alloc_attrs); + context->attr_values = xrealloc (context->attr_values, sizeof(char *) * context->alloc_attrs); + } + context->cur_attr++; + context->attr_names[context->cur_attr] = xstrdup (string->buffer); + context->attr_values[context->cur_attr] = NULL; + context->attr_names[context->cur_attr+1] = NULL; + context->attr_values[context->cur_attr+1] = NULL; +} + +static void +clear_attributes (markup_parse_context_ty *context) +{ + /* Go ahead and free the attributes. */ + for (; context->cur_attr >= 0; context->cur_attr--) + { + int pos = context->cur_attr; + free (context->attr_names[pos]); + free (context->attr_values[pos]); + context->attr_names[pos] = context->attr_values[pos] = NULL; + } + assert (context->cur_attr == -1); + assert (context->attr_names == NULL || + context->attr_names[0] == NULL); + assert (context->attr_values == NULL || + context->attr_values[0] == NULL); +} + +static void +markup_parse_context_push (markup_parse_context_ty *context, + const markup_parser_ty *parser, + void *user_data) +{ + markup_recursion_tracker_ty *tracker; + + tracker = XMALLOC (markup_recursion_tracker_ty); + tracker->prev_element = context->subparser_element; + tracker->prev_parser = context->parser; + tracker->prev_user_data = context->user_data; + + context->subparser_element = current_element (context); + context->parser = parser; + context->user_data = user_data; + + gl_list_add_first (context->subparser_stack, tracker); +} + +static void +markup_parse_context_pop (markup_parse_context_ty *context) +{ + if (!context->awaiting_pop) + possibly_finish_subparser (context); + + assert (context->awaiting_pop); + + context->awaiting_pop = false; +} + +/* This has to be a separate function to ensure the alloca's + * are unwound on exit - otherwise we grow & blow the stack + * with large documents + */ +static inline void +emit_start_element (markup_parse_context_ty *context) +{ + int i, j = 0; + const char *start_name; + const char **attr_names; + const char **attr_values; + + /* In case we want to ignore qualified tags and we see that we have + * one here, we push a subparser. This will ignore all tags inside of + * the qualified tag. + * + * We deal with the end of the subparser from emit_end_element. + */ + if ((context->flags & MARKUP_IGNORE_QUALIFIED) + && strchr (current_element (context), ':')) + { + static const markup_parser_ty ignore_parser; + markup_parse_context_push (context, &ignore_parser, NULL); + clear_attributes (context); + return; + } + + attr_names = XCALLOC (context->cur_attr + 2, const char *); + attr_values = XCALLOC (context->cur_attr + 2, const char *); + for (i = 0; i < context->cur_attr + 1; i++) + { + /* Possibly omit qualified attribute names from the list */ + if ((context->flags & MARKUP_IGNORE_QUALIFIED) + && strchr (context->attr_names[i], ':')) + continue; + + attr_names[j] = context->attr_names[i]; + attr_values[j] = context->attr_values[i]; + j++; + } + attr_names[j] = NULL; + attr_values[j] = NULL; + + /* Call user callback for element start */ + start_name = current_element (context); + + if (context->parser->start_element && name_validate (context, start_name)) + (* context->parser->start_element) (context, + start_name, + (const char **)attr_names, + (const char **)attr_values, + context->user_data); + free (attr_names); + free (attr_values); + clear_attributes (context); +} + +static void +emit_end_element (markup_parse_context_ty *context) +{ + assert (gl_list_size (context->tag_stack) != 0); + + possibly_finish_subparser (context); + + /* We might have just returned from our ignore subparser */ + if ((context->flags & MARKUP_IGNORE_QUALIFIED) + && strchr (current_element (context), ':')) + { + markup_parse_context_pop (context); + pop_tag (context); + return; + } + + if (context->parser->end_element) + (* context->parser->end_element) (context, + current_element (context), + context->user_data); + + ensure_no_outstanding_subparser (context); + + pop_tag (context); +} + +/* Feed some data to the parse context. The data need not be valid + UTF-8; an error will be signaled if it's invalid. The data need + not be an entire document; you can feed a document into the parser + incrementally, via multiple calls to this function. Typically, as + you receive data from a network connection or file, you feed each + received chunk of data into this function, aborting the process if + an error occurs. Once an error is reported, no further data may be + fed to the parse context; all errors are fatal. */ +bool +markup_parse_context_parse (markup_parse_context_ty *context, + const char *text, + ssize_t text_len) +{ + assert (context != NULL); + assert (text != NULL); + assert (context->state != STATE_ERROR); + assert (!context->parsing); + + if (text_len < 0) + text_len = strlen (text); + + if (text_len == 0) + return true; + + context->parsing = true; + + + context->current_text = text; + context->current_text_len = text_len; + context->current_text_end = context->current_text + text_len; + context->iter = context->current_text; + context->start = context->iter; + + while (context->iter != context->current_text_end) + { + switch (context->state) + { + case STATE_START: + /* Possible next state: AFTER_OPEN_ANGLE */ + + assert (gl_list_size (context->tag_stack) == 0); + + /* whitespace is ignored outside of any elements */ + skip_spaces (context); + + if (context->iter != context->current_text_end) + { + if (*context->iter == '<') + { + /* Move after the open angle */ + advance_char (context); + + context->state = STATE_AFTER_OPEN_ANGLE; + + /* this could start a passthrough */ + context->start = context->iter; + + /* document is now non-empty */ + context->document_empty = false; + } + else + { + emit_error (context, + _("document must begin with an element")); + } + } + break; + + case STATE_AFTER_OPEN_ANGLE: + /* Possible next states: INSIDE_OPEN_TAG_NAME, + * AFTER_CLOSE_TAG_SLASH, INSIDE_PASSTHROUGH + */ + if (*context->iter == '?' || + *context->iter == '!') + { + /* include < in the passthrough */ + const char *openangle = "<"; + add_to_partial (context, openangle, openangle + 1); + context->start = context->iter; + context->balance = 1; + context->state = STATE_INSIDE_PASSTHROUGH; + } + else if (*context->iter == '/') + { + /* move after it */ + advance_char (context); + + context->state = STATE_AFTER_CLOSE_TAG_SLASH; + } + else if (!IS_COMMON_NAME_END_CHAR (*(context->iter))) + { + context->state = STATE_INSIDE_OPEN_TAG_NAME; + + /* start of tag name */ + context->start = context->iter; + } + else + { + char *error_text = xasprintf (_("invalid character after '%s'"), + "<"); + emit_error (context, error_text); + free (error_text); + } + break; + + /* The AFTER_CLOSE_ANGLE state is actually sort of + * broken, because it doesn't correspond to a range + * of characters in the input stream as the others do, + * and thus makes things harder to conceptualize + */ + case STATE_AFTER_CLOSE_ANGLE: + /* Possible next states: INSIDE_TEXT, STATE_START */ + if (gl_list_size (context->tag_stack) == 0) + { + context->start = NULL; + context->state = STATE_START; + } + else + { + context->start = context->iter; + context->state = STATE_INSIDE_TEXT; + } + break; + + case STATE_AFTER_ELISION_SLASH: + /* Possible next state: AFTER_CLOSE_ANGLE */ + if (*context->iter == '>') + { + /* move after the close angle */ + advance_char (context); + context->state = STATE_AFTER_CLOSE_ANGLE; + emit_end_element (context); + } + else + { + char *error_text = xasprintf (_("missing '%c'"), '>'); + emit_error (context, error_text); + free (error_text); + } + break; + + case STATE_INSIDE_OPEN_TAG_NAME: + /* Possible next states: BETWEEN_ATTRIBUTES */ + + /* if there's a partial chunk then it's the first part of the + * tag name. If there's a context->start then it's the start + * of the tag name in current_text, the partial chunk goes + * before that start though. + */ + advance_to_name_end (context); + + if (context->iter == context->current_text_end) + { + /* The name hasn't necessarily ended. Merge with + * partial chunk, leave state unchanged. + */ + add_to_partial (context, context->start, context->iter); + } + else + { + /* The name has ended. Combine it with the partial chunk + * if any; push it on the stack; enter next state. + */ + add_to_partial (context, context->start, context->iter); + push_partial_as_tag (context); + + context->state = STATE_BETWEEN_ATTRIBUTES; + context->start = NULL; + } + break; + + case STATE_INSIDE_ATTRIBUTE_NAME: + /* Possible next states: AFTER_ATTRIBUTE_NAME */ + + advance_to_name_end (context); + add_to_partial (context, context->start, context->iter); + + /* read the full name, if we enter the equals sign state + * then add the attribute to the list (without the value), + * otherwise store a partial chunk to be prepended later. + */ + if (context->iter != context->current_text_end) + context->state = STATE_AFTER_ATTRIBUTE_NAME; + break; + + case STATE_AFTER_ATTRIBUTE_NAME: + /* Possible next states: AFTER_ATTRIBUTE_EQUALS_SIGN */ + + skip_spaces (context); + + if (context->iter != context->current_text_end) + { + /* The name has ended. Combine it with the partial chunk + * if any; push it on the stack; enter next state. + */ + if (!name_validate (context, context->partial_chunk->buffer)) + break; + + add_attribute (context, context->partial_chunk); + + markup_string_free (context->partial_chunk, true); + context->partial_chunk = NULL; + context->start = NULL; + + if (*context->iter == '=') + { + advance_char (context); + context->state = STATE_AFTER_ATTRIBUTE_EQUALS_SIGN; + } + else + { + char *error_text = xasprintf (_("missing '%c'"), '='); + emit_error (context, error_text); + free (error_text); + } + } + break; + + case STATE_BETWEEN_ATTRIBUTES: + /* Possible next states: AFTER_CLOSE_ANGLE, + * AFTER_ELISION_SLASH, INSIDE_ATTRIBUTE_NAME + */ + skip_spaces (context); + + if (context->iter != context->current_text_end) + { + if (*context->iter == '/') + { + advance_char (context); + context->state = STATE_AFTER_ELISION_SLASH; + } + else if (*context->iter == '>') + { + advance_char (context); + context->state = STATE_AFTER_CLOSE_ANGLE; + } + else if (!IS_COMMON_NAME_END_CHAR (*(context->iter))) + { + context->state = STATE_INSIDE_ATTRIBUTE_NAME; + /* start of attribute name */ + context->start = context->iter; + } + else + { + char *error_text = xasprintf (_("missing '%c' or '%c'"), + '>', '/'); + emit_error (context, error_text); + free (error_text); + } + + /* If we're done with attributes, invoke + * the start_element callback + */ + if (context->state == STATE_AFTER_ELISION_SLASH || + context->state == STATE_AFTER_CLOSE_ANGLE) + emit_start_element (context); + } + break; + + case STATE_AFTER_ATTRIBUTE_EQUALS_SIGN: + /* Possible next state: INSIDE_ATTRIBUTE_VALUE_[SQ/DQ] */ + + skip_spaces (context); + + if (context->iter != context->current_text_end) + { + if (*context->iter == '"') + { + advance_char (context); + context->state = STATE_INSIDE_ATTRIBUTE_VALUE_DQ; + context->start = context->iter; + } + else if (*context->iter == '\'') + { + advance_char (context); + context->state = STATE_INSIDE_ATTRIBUTE_VALUE_SQ; + context->start = context->iter; + } + else + { + char *error_text = xasprintf (_("missing '%c' or '%c'"), + '\'', '"'); + emit_error (context, error_text); + free (error_text); + } + } + break; + + case STATE_INSIDE_ATTRIBUTE_VALUE_SQ: + case STATE_INSIDE_ATTRIBUTE_VALUE_DQ: + /* Possible next states: BETWEEN_ATTRIBUTES */ + { + char delim; + + if (context->state == STATE_INSIDE_ATTRIBUTE_VALUE_SQ) + { + delim = '\''; + } + else + { + delim = '"'; + } + + do + { + if (*context->iter == delim) + break; + } + while (advance_char (context)); + } + if (context->iter == context->current_text_end) + { + /* The value hasn't necessarily ended. Merge with + * partial chunk, leave state unchanged. + */ + add_to_partial (context, context->start, context->iter); + } + else + { + bool is_ascii; + /* The value has ended at the quote mark. Combine it + * with the partial chunk if any; set it for the current + * attribute. + */ + add_to_partial (context, context->start, context->iter); + + assert (context->cur_attr >= 0); + + if (unescape_string_inplace (context, context->partial_chunk, + &is_ascii) + && (is_ascii + || text_validate (context, + context->partial_chunk->buffer, + context->partial_chunk->buflen))) + { + /* success, advance past quote and set state. */ + context->attr_values[context->cur_attr] = + markup_string_free (context->partial_chunk, false); + context->partial_chunk = NULL; + advance_char (context); + context->state = STATE_BETWEEN_ATTRIBUTES; + context->start = NULL; + } + + truncate_partial (context); + } + break; + + case STATE_INSIDE_TEXT: + /* Possible next states: AFTER_OPEN_ANGLE */ + do + { + if (*context->iter == '<') + break; + } + while (advance_char (context)); + + /* The text hasn't necessarily ended. Merge with + * partial chunk, leave state unchanged. + */ + + add_to_partial (context, context->start, context->iter); + + if (context->iter != context->current_text_end) + { + bool is_ascii; + + /* The text has ended at the open angle. Call the text + * callback. + */ + if (unescape_string_inplace (context, context->partial_chunk, + &is_ascii) + && (is_ascii + || text_validate (context, + context->partial_chunk->buffer, + context->partial_chunk->buflen))) + { + if (context->parser->text) + (*context->parser->text) (context, + context->partial_chunk->buffer, + context->partial_chunk->buflen, + context->user_data); + + /* advance past open angle and set state. */ + advance_char (context); + context->state = STATE_AFTER_OPEN_ANGLE; + /* could begin a passthrough */ + context->start = context->iter; + } + + truncate_partial (context); + } + break; + + case STATE_AFTER_CLOSE_TAG_SLASH: + /* Possible next state: INSIDE_CLOSE_TAG_NAME */ + if (!IS_COMMON_NAME_END_CHAR (*(context->iter))) + { + context->state = STATE_INSIDE_CLOSE_TAG_NAME; + + /* start of tag name */ + context->start = context->iter; + } + else + { + char *error_text = xasprintf (_("invalid character after '%s'"), + "start, context->iter); + + if (context->iter != context->current_text_end) + context->state = STATE_AFTER_CLOSE_TAG_NAME; + break; + + case STATE_AFTER_CLOSE_TAG_NAME: + /* Possible next state: AFTER_CLOSE_TAG_SLASH */ + + skip_spaces (context); + + if (context->iter != context->current_text_end) + { + markup_string_ty *close_name; + + close_name = context->partial_chunk; + context->partial_chunk = NULL; + + if (*context->iter != '>') + { + char *error_text = + xasprintf (_("invalid character after '%s'"), + _("a close element name")); + emit_error (context, error_text); + free (error_text); + } + else if (gl_list_size (context->tag_stack) == 0) + { + emit_error (context, _("element is closed")); + } + else if (strcmp (close_name->buffer, current_element (context)) + != 0) + { + emit_error (context, _("element is closed")); + } + else + { + advance_char (context); + context->state = STATE_AFTER_CLOSE_ANGLE; + context->start = NULL; + + emit_end_element (context); + } + context->partial_chunk = close_name; + truncate_partial (context); + } + break; + + case STATE_INSIDE_PASSTHROUGH: + /* Possible next state: AFTER_CLOSE_ANGLE */ + do + { + if (*context->iter == '<') + context->balance++; + if (*context->iter == '>') + { + char *str; + size_t len; + + context->balance--; + add_to_partial (context, context->start, context->iter); + context->start = context->iter; + + str = context->partial_chunk->buffer; + len = context->partial_chunk->buflen; + + if (str[1] == '?' && str[len - 1] == '?') + break; + if (strncmp (str, " + + + + + + + + + + + + + + + This is code + + + This is a comment + + + + + + + + + + + + + + + + + + + + + +EOF + +cat <<\EOF >messages.xml + + +]> + + +

    This is a test message &foo;><&""

    + + +

    This is a non-translatable message

    +
    + +

    This is a test message, with an element in a text

    +
    + + $ echo ' ' >> /dev/null + $ cat < /dev/yes + $ sleep 10 & + + + +

    This is a test message, with an attribute

    +
    + + + This is a localization note + +

    This is a test message, with a localization note

    +
    + +

    + This is a test message, with a local localization note +

    +
    + + +

    +
    + +

    This is a message with space preserved

    +
    + +

    This is a non-translatable string

    +
    + +

    This is a non-translatable string

    +
    + + +

    context|A translatable string with a context prefixed

    +
    + +

    Leading/trailing whitespaces are removed, + but not middle +

    +
    + +

    This is an unescaped element <>&"

    +
    + +

    +
    + +EOF + +cat <<\EOF >messages.ok +#. (itstool) path: message/p +#: messages.xml:8 +msgid "This is a test message &foo;><&\"\"" +msgstr "" + +#. (itstool) path: message/p +#: messages.xml:14 +msgid "This is a test message, with an element in a text" +msgstr "" + +#. This is code +#. (itstool) path: message/code +#: messages.xml:17 +#, no-wrap +msgid "" +" $ echo ' ' >> /dev/null\n" +" $ cat < /dev/yes\n" +" $ sleep 10 &\n" +msgstr "" + +#. This is a comment +#. (itstool) path: messages/message@comment +#: messages.xml:22 +msgid "This is a comment <>&"" +msgstr "" + +#. (itstool) path: message/p +#: messages.xml:23 +msgid "This is a test message, with an attribute" +msgstr "" + +#. This is a localization note +#. (itstool) path: message/p +#: messages.xml:29 +msgid "This is a test message, with a localization note" +msgstr "" + +#. This is a local localization note +#. (itstool) path: message/p +#: messages.xml:32 +msgid "This is a test message, with a local localization note" +msgstr "" + +#. (itstool) path: message/p +#: messages.xml:41 +#, no-wrap +msgid " This is a message with space preserved" +msgstr "" + +#. This is a comment +#. (itstool) path: message/p +#: messages.xml:51 +msgctxt "context" +msgid "A translatable string with a context prefixed" +msgstr "" + +#. (itstool) path: message/p +#: messages.xml:54 +msgid "" +"Leading/trailing whitespaces are removed,\n" +" but not middle" +msgstr "" + +#. (itstool) path: message/p +#: messages.xml:59 +msgid "This is an unescaped element <>&\"" +msgstr "" + +#. (itstool) path: messages/message@unescaped +#: messages.xml:61 +msgid "This is an unescaped attribute <>&\"" +msgstr "" +EOF + +: ${DIFF=diff} + +${XGETTEXT} --itstool --no-wrap --omit-header -o messages.pot messages.xml 2>messages.err || { cat messages.err; exit 1; } +${DIFF} messages.ok messages.pot +result=$? +test $result = 0 || exit $result + +# Check if locating rules can work with --directory, and extra ".in" +# file name extension. +test -d data || mkdir data +test -d po || mkdir po + +cp messages.xml data/messages.msg.in + +cd po +GETTEXTDATADIR=.. +export GETTEXTDATADIR + +${XGETTEXT} --itstool --no-wrap --omit-header --directory=.. -o messages.pot.in data/messages.msg.in 2>messages.err || { cat messages.err; exit 1; } +sed -e 's!^#: data/messages.msg.in!#: messages.xml!' \ + < messages.pot.in > messages.pot + +${DIFF} ../messages.ok messages.pot +result=$? +test $result = 0 || exit $result diff -Nru gettext-0.19.6/gnulib-local/ChangeLog gettext-0.19.7/gnulib-local/ChangeLog --- gettext-0.19.6/gnulib-local/ChangeLog 2015-09-11 03:03:01.000000000 +0000 +++ gettext-0.19.7/gnulib-local/ChangeLog 1970-01-01 00:00:00.000000000 +0000 @@ -1,1932 +0,0 @@ -2015-09-11 Daiki Ueno - - * gettext 0.19.6 released. - -2015-07-14 Daiki Ueno - - gnulib-local: Fix Java compilation on mingw - * lib/clean-temp.c.diff: New file, from m4. - Suggested by Eric Blake in: - . - -2015-07-10 Daiki Ueno - - * gettext 0.19.5 released. - -2014-12-24 Daiki Ueno - - * gettext 0.19.4 released. - -2014-12-24 Daiki Ueno - - gnulib-local: Suppress compiler warning with -Wunused - * lib/diffseq.h.diff: New file. - -2014-12-16 Daiki Ueno - - Backport iOS check from Gnulib - * lib/unistd.in.h.diff: Update. - -2014-12-15 Daiki Ueno - - Work around interoperability with preinstalled libunistring - * modules/unilbrk/base.diff: New file; bump minimum version of - unilbrk.h. - -2014-10-15 Daiki Ueno - - * gettext 0.19.3 released. - -2014-10-15 Daiki Ueno - - * tests/test-term-ostream-xterm-basic-italic.out: New file. - * tests/test-term-ostream-xterm: Use it as possible test result. - * modules/term-ostream-tests (Files): Add new file. - * Makefile.am (EXTRA_DIST): Add new file. - Needed for ncurses >= 5.9-20140906 that defines sitm/ritm in the - xterm-basic terminfo definition. - -2014-07-14 Daiki Ueno - - * gettext 0.19.2 released. - -2014-07-14 Daiki Ueno - - Update after gnulib changed. - * lib/execute.c.diff: Update. - * lib/spawn-pipe.c.diff: Update. - -2014-06-10 Daiki Ueno - - * gettext 0.19.1 released. - -2014-06-03 Daiki Ueno - - build: Handle 'environ' global variable differently on cygwin x86_64 - Amendment to commit c97dafde. - * tests/test-environ.c.diff: New file. - * Makefile.am (EXTRA_DIST): Add new patch. - -2014-06-02 Daiki Ueno - - * gettext 0.19 released. - -2014-06-02 Daiki Ueno - - build: Handle 'environ' global variable differently on cygwin x86_64 - Problem reported by Vasyl Khalak in: - . - * lib/execute.c.diff: New file. - * lib/spawn-pipe.c.diff: Likewise. - * Makefile.am (EXTRA_DIST): Add new patches. - -2014-05-14 Daiki Ueno - - Update after gnulib changed. - * modules/regex.diff: Remove. modules/regex no longer depends on - malloc-gnu thus this patch is not needed anymore. - -2014-04-07 Daiki Ueno - - Update after gnulib changed. - * lib/obstack.h.diff: Update. - -2013-08-07 Daiki Ueno - - Update after gnulib changed. - * modules/regex.diff: Update. - -2013-07-21 Daiki Ueno - - Update after gnulib changed. - * lib/localcharset.c.diff: Remove file. - -2013-06-25 Daiki Ueno - - Work around localcharset issue under OS X multi-threaded scenario. - * lib/localcharset.c.diff: New patch originally posted to Gnulib - . - -2013-06-16 Andreas Schwab (tiny change) - - * m4/libxml.m4 (gl_LIBXML): Remove extra quotes. - -2013-06-10 Daiki Ueno - - * modules/libxml: Use $(MKDIR_P) instead of $(mkdir_p). - * modules/libglib: Likewise. - Suggested by Stefano Lattarini in - . - -2013-02-25 Daiki Ueno - - Update after gnulib changed. - * lib/unistd.in.h.diff: Update. - -2013-02-25 Daiki Ueno - - * modules/gettext-runtime-misc (AM_CPPFLAGS): Augment by - INTL_EXPORTS_FLAGS. - -2013-01-03 Daiki Ueno - - Update after gnulib changed. - * modules/regex.diff: Update. - -2012-12-25 Daiki Ueno - - * gettext-0.18.2 released. - -2012-12-25 Daiki Ueno - - Work around error_* symbol conflict with Cygwin 1.7 DLL. - * lib/error.h.diff: Rename the error_* symbol if - GNULIB_REPLACE_ERROR is defined. - -2012-12-12 Daiki Ueno - - Add notice about included external libraries. - As per "External Libraries" in the (maintain) manual. - * lib/glib/README: New file. - * lib/libcroco/README: New file. - * lib/libxml/README: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2012-07-11 Paul Eggert - - Do not assume '#define ... defined ...' behavior. - * lib/gettext.h (_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS): - Do not use '#define FOO ... defined BAR ...', as the C standard says - it's not portable to expect that this works after macro expansion. - Problem reported for gzip by Steven M. Schweda in - . - -2012-06-03 Jim Meyering - - * lib/tparm.c: Spelling fixes. - -2012-02-17 Bruno Haible - - Update after gnulib changed. - * lib/exitfail.h.diff: Update. - -2012-01-26 Bruno Haible - - Modernize quoting. - * lib/backupfile.c: Quote 'like this', not `like this', as per the - recent change to the GNU coding standards. - * lib/basename.c: Likewise. - * lib/closeout.c: Likewise. - * lib/xmalloc.c: Likewise. - -2012-01-06 Bruno Haible - - Update after gnulib changed. - * lib/argmatch.h.diff: Update. - * lib/error.h.diff: Update. - * lib/fnmatch_loop.c.diff: Update. - * lib/getopt.in.h.diff: Update. - * lib/obstack.h.diff: Update. - -2011-10-18 Daniel Richard G. (tiny change) - - Support for old NeXTstep 3.3 gcc. - * lib/gettext.h (_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS): Write - 'defined __STRICT_ANSI__', not '__STRICT_ANSI__'. - -2011-09-12 Bruno Haible - - Update after gnulib changed. - * modules/backupfile (Depends-on): Add opendir, readdir, - closedir. - -2011-08-12 Bruno Haible - - Comment. - * m4/libxml.m4 (gl_LIBXML): Add comment about Cygwin 1.7. - -2011-08-04 Bruno Haible - - Update after gnulib changed. - * lib/xgetcwd.c (PATH_MAX): Provide a fallback value. - -2011-07-12 Bruno Haible - - Update after gnulib changed. - * modules/fnmatch.diff: Update. - -2011-06-16 Bruno Haible - - Update after gnulib changed. - * m4/quote.m4.diff: Remove file. - * m4/quotearg.m4.diff: Remove file. - * modules/quote.diff: Remove file. - * modules/quotearg.diff: Remove file. - * Makefile.am (EXTRA_DIST): Remove them. - -2011-06-03 Bruno Haible - - libxml: Detect installed libxml2 versions which don't define xmlFree(). - * m4/libxml.m4 (gl_LIBXML): Also try linking an xmlFree() invocation. - -2011-06-03 Bruno Haible - - Copyright: Use LGPL 2.1 instead of LGPL 2.0. - * lib/gettext.h: Update copyright header. - * lib/hash.h: Likewise. - * lib/moo.h: Likewise. - * lib/tparm.c: Likewise. - * lib/tputs.c: Likewise. - -2011-06-02 Bruno Haible - - Update after gnulib changed. - * modules/fnmatch.diff: Update. - * modules/regex.diff: Likewise. - * m4/alloca.m4 (gl_FUNC_ALLOCA): Likewise. - -2011-02-12 Bruno Haible - - Prefer gnulib's setlocale override over libintl's override. - * lib/gettext.h (setlocale): Redefine to rpl_setlocale if - GNULIB_defined_setlocale is set. - -2011-02-12 Bruno Haible - - Update after gnulib changed. - * modules/fnmatch.diff: Update. - -2010-03-25 Bruno Haible - - Minor formatting changes. - * lib/gettext.h: Insert space before function argument list. - -2010-11-20 Bruno Haible - - Port to uClibc. - * lib/basename.h: Treat uClibc like glibc. - * lib/basename.c: Likewise. - * lib/iconv-ostream.oo.c (iconv_ostream::write_mem, - iconv_ostream::free, iconv_ostream_create): Likewise. - -2010-11-20 Bruno Haible - - Port to uClibc. - * lib/gettext.h: Treat uClibc like a non-glibc platform. - Reported by Mike Frysinger . - -2010-10-10 Bruno Haible - - Rely more on libtool. - * modules/gettext-tools-misc (Makefile.am): Remove @LTLIBC@ flag from - libgettextlib_la_LDFLAGS, relying more on libtool. Remove @LTNOUNDEF@ - flag from libgettextlib_la_LDFLAGS, now generated by gnulib-tool. - -2010-10-10 Bruno Haible - - * modules/gettext-tools-misc (Makefile.am): Remove flags from - libgettextlib_la_LDFLAGS that are now generated by gnulib-tool. - -2010-08-29 Bruno Haible - - * modules/regex.diff: Update after gnulib changed. - -2010-06-04 Bruno Haible - - * gettext-0.18.1 released. - -2010-05-19 Bruno Haible - - Link with libunistring, if it exists. - * modules/gettext-tools-misc (lib_LDFLAGS): Add LTLIBUNISTRING. - -2010-05-24 Bruno Haible - - Use the newest regex module from gnulib. - * modules/gettext-tools-misc (Files): Remove m4/mbrtowc.m4 and - m4/memchr.m4. - -2010-05-24 Bruno Haible - - Use regex module without dependency on 'malloc'. - * lib/regex_internal.h.diff: New file. - * lib/regexec.c.diff: New file. - * modules/regex.diff: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2010-05-23 Bruno Haible - - Do regex matching purely with regex, not regex + dfa + kwset. - * modules/gettext-tools-misc (Files): Remove m4/hard-locale.m4. - -2010-05-09 Bruno Haible - - * gettext-0.18 released. - -2010-05-09 Bruno Haible - - Avoid test suite failure on mingw. - * tests/test-term-ostream-xterm: Convert CR/LF to LF before comparing. - -2010-05-09 Bruno Haible - - Export rpl_optind, rpl_optarg from DLL depending on platform. - * modules/gettext-tools-misc (AM_CPPFLAGS): Augment by - GETTEXTLIB_EXPORTS_FLAGS. - -2010-05-09 Bruno Haible - - Avoid compilation error in libgettextpo directory on Solaris 8. - * lib/unistd.in.h.diff: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2010-03-28 Bruno Haible - - * modules/closeout (Depends-on): Add stdlib, remove exit. - * modules/fd-ostream (Depends-on): Likewise. - * modules/html-styled-ostream (Depends-on): Likewise. - * modules/iconv-ostream (Depends-on): Likewise. - * modules/memory-ostream (Depends-on): Likewise. - * modules/term-ostream (Depends-on): Likewise. - * modules/xalloc (Depends-on): Likewise. - -2010-03-06 Bruno Haible - - * m4/exitfail.m4.diff: Remove file. - * modules/exitfail.diff: Remove file. - * Makefile.am (EXTRA_DIST): Remove them. - -2010-02-19 Bruno Haible - - * modules/wait-process.diff: Remove trailing space. - -2010-01-14 Bruno Haible - - Use full 'vasnprintf' module from gnulib. The reduced one did not - support NULL arguments. - * lib/vasprintf.c: Remove file. - * m4/vasprintf.m4: Remove file. - * modules/vasprintf.diff: Remove file. - * Makefile.am (EXTRA_DIST): Remove them. - Reported by LRN at . - -2010-01-11 Bruno Haible - - * modules/html-ostream (Depends-on): Remove utf8-ucs4. Instead add - unistr/u8-mbtouc. - -2009-12-25 Bruno Haible - - * lib/html-ostream.oo.c: Include gl_xlist.h instead of gl_list.h. - * modules/html-ostream (Depends-on): Add xlist. Remove list. - -2009-12-12 Bruno Haible - - * lib/*.h, lib/*.c: Untabify. - * m4/unionwait.m4: Untabify. - * tests/*.c: Untabify. - -2009-12-12 Bruno Haible - - * lib/fnmatch_loop.c.diff: Update after gnulib changed. - -2009-08-15 Bruno Haible - - Stop using gnulib module 'strdup'. - * modules/gettext-tools-misc (Files): Remove m4/strdup.m4. - -2009-08-10 Bruno Haible - - Avoid gcc warning on Cygwin. - * lib/html-ostream.oo.c (html_ostream::write_mem): Change type of local - variable 'uc'. - -2009-05-23 Bruno Haible - - Avoid gcc warning "cast from pointer to integer of different size". - * lib/glibconfig.in.h (GPOINTER_TO_INT, GINT_TO_POINTER): Cast through - intptr_t. - (GPOINTER_TO_UINT, GUINT_TO_POINTER: Cast through uintptr_t. - -2009-05-01 Bruno Haible - - Avoid compiler warnings when redefining macros defined by . - * lib/gettext.h [!ENABLE_NLS] (gettext, dgettext, dcgettext, ngettext, - dngettext, dcngettext, textdomain, bindtextdomain, - bind_textdomain_codeset): Undefine before redefining. - -2009-03-25 Bruno Haible - - * m4/quotearg.m4.diff: Update after gnulib changed. - -2008-12-18 Bruno Haible - - * modules/gettext-tools-misc (Files): Add m4/locale-ja.m4. - -2008-12-07 Bruno Haible - - Avoid gcc -Wmissing-prototypes warnings. - * lib/html-ostream.oo.c: Mark all method implementations as static. - * lib/term-ostream.oo.c: Likewise. - -2008-12-07 Bruno Haible - - Avoid gcc -Wmissing-prototypes warnings. - * build-aux/moopp (func_emit_source_c): Emit a prototype before the - synthetized functions. - -2008-09-14 Bruno Haible - - * modules/libxml: Use $(mkdir_p) to create the libxml directory. - * modules/libglib: Use $(mkdir_p) to create the glib directory. - Suggested by Ralf Wildenhues . - -2008-09-14 Bruno Haible - - * modules/libglib (Depends-on): Add strerror. - -2008-08-16 Bruno Haible - - Recognize installed libxml2 version 2.6.x. - * m4/libxml.m4 (gl_LIBXML): Determine libxml2_include_dir by looking - for as well. - Reported by Steve Trotman - via . - -2008-05-18 Bruno Haible - - * modules/propername: Remove file, moved to gnulib. - * lib/propername.h: Remove file, moved to gnulib. - * lib/propername.c: Remove file, moved to gnulib. - * Makefile.am (EXTRA_DIST): Remove them. - -2008-05-18 Bruno Haible - - * lib/propername.c: Include , , trim.h, mbchar.h, - mbuiter.h. Don't include c-strstr.h. - (mbsstr_trimmed_wordbounded): New function. - (proper_name, proper_name_utf8): Use it instead of mbsstr or c_strstr. - * modules/propername (Depends-on): Add stdbool, trim, mbchar, mbuiter. - Remove c-strstr. - Reported by Paul Eggert . - -2008-05-18 Bruno Haible - - * modules/propername (Notice): New field. - (configure.ac): Invoke AM_GETTEXT_OPTION. - * lib/propername.h: Add more comments. - Reported by Ben Pfaff . - -2008-05-11 Bruno Haible - - * lib/gen-lbrkprop.c: Move to gnulib as lib/unilbrk/gen-lbrk.c. - * lib/3level.h: Remove file. - * modules/gen-lbrkprop: Move to gnulib as modules/unilbrk/gen-lbrk. - * Makefile.am (EXTRA_DIST): Remove lib/gen-lbrkprop.c, lib/3level.h, - modules/gen-lbrkprop. - -2008-05-11 Bruno Haible - - * lib/gen-lbrkprop.c (output_lbp): Output to two different streams. - (output_tables): Accept two filename arguments. - (main): Generate lbrkprop1.h and lbrkprop2.h instead of lbrkprop.h. - - * lib/gen-lbrkprop.c (unicode_combining): Remove variable. - (fill_combining): Remove function. - (main): Take one argument less. - * lib/Combining.txt: Remove file. - * modules/gen-lbrkprop (Files): Remove Combining.txt. - * Makefile.am (EXTRA_DIST): Likewise. - - * lib/gen-lbrkprop.c: Change copyright to GPLv3+. - (output_tables): Emit a GPLv3+ header. - -2008-05-10 Bruno Haible - - * lib/linebreak.c.diff: Remove file. - * Makefile.am (EXTRA_DIST): Remove it. - -2008-01-13 Bruno Haible - - New configure option --disable-curses. - * m4/curses.m4: New file. - * m4/termcap.m4 (gl_TERMCAP_BODY): Require gl_CURSES and consider its - result. - * m4/terminfo.m4 (gl_TERMINFO_BODY): Likewise. - * modules/termcap (Files): Add m4/curses.m4. - * modules/terminfo (Files): Likewise. - * Makefile.am (EXTRA_DIST): Add m4/curses.m4. - -2007-11-09 Bruno Haible - - * m4/libglib.m4 (gl_LIBGLIB): Ensure that the is from a glib - version >= 2.0. - Reported by Paul Eggert . - -2007-11-07 Bruno Haible - - * gettext-0.17 released. - -2007-10-27 Bruno Haible - - * modules/libcroco (Makefile.am): When using the preinstalled libcroco, - add INCCROCO to AM_CPPFLAGS. - * lib/term-styled-ostream.oo.c: Work around broken double-inclusion - guard in libcroco-0.6.1. - -2007-10-27 Bruno Haible - - * modules/gettext-tools-misc (Makefile.am): Use @LTLIBC@ instead of - hardcoding -lc. Needed for HP-UX 11. - -2007-10-27 Bruno Haible - - * tests/test-term-ostream-xterm-linux-debian.out: New file. - * tests/test-term-ostream-xterm-linux-mandriva.out: New file. - * tests/test-term-ostream-xterm: Use them as possible test results. - * modules/term-ostream-tests (Files): Add the new files. - * Makefile.am (EXTRA_DIST): Add the new files. - Needed on Mandriva Linux Corporate Server release 2006.0 and - Debian 4.0.0. - -2007-10-27 Bruno Haible - - * tests/test-term-ostream-xterm-netbsd3.out: New file. - * tests/test-term-ostream-xterm: Use it as possible test result. - * modules/term-ostream-tests (Files): Add it. - * Makefile.am (EXTRA_DIST): Add it. - -2007-10-26 Bruno Haible - - * modules/libxml (Depends-on): Add snprintf, vsnprintf. Needed for - OSF/1 4.0. - -2007-10-25 Bruno Haible - - * tests/test-term-ostream-xterm: Redirect stderr into a pipe. - * tests/test-term-ostream-xterm-aix51.out: Remove padding. - -2007-10-21 Bruno Haible - - * tests/test-term-ostream-xterm-solaris10.out: New file. - * tests/test-term-ostream-xterm-aix51.out: New file. - * tests/test-term-ostream-xterm-osf51.out: New file. - * tests/test-term-ostream-xterm-irix65.out: New file. - * tests/test-term-ostream-xterm-mingw.out: New file. - * tests/test-term-ostream-xterm: Use them as possible test results. - * modules/term-ostream-tests (Files): Add the new files. - * Makefile.am (EXTRA_DIST): Add the new files. - -2007-10-17 Bruno Haible - - * lib/gl_array_list.h.diff: New file. - * lib/gl_linkedhash_list.h.diff: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2007-10-07 Bruno Haible - - * build-aux/moopp (func_version): In the --version output, say GPLv3+. - -2007-10-06 Bruno Haible - - * tests/test-term-ostream-xterm-r6.out: New file. - * tests/test-term-ostream-xterm-xf86-v32.out: New file. - * tests/test-term-ostream-xterm-basic.out: New file. - * tests/test-term-ostream-xterm-8bit.out: New file. - * tests/test-term-ostream-xterm.out: Remove file. - * tests/test-term-ostream-xterm: Test against 4 possible expected - results. - * modules/term-ostream-tests (Files): Replace - tests/test-term-ostream-xterm.out with - tests/test-term-ostream-xterm-*.out. - * Makefile.am (EXTRA_DIST): Update. - -2007-03-30 Bruno Haible - - * alloca.in.h: Change prefix of double-inclusion guard macro to _GL_. - -2006-06-19 Paul Eggert - - * alloca.in.h (alloca) [defined alloca]: Don't define or declare. - -2007-10-04 Bruno Haible - - * lib/libxml/c14n.in.h: Renamed from lib/libxml/c14n_.h. - * lib/libxml/catalog.in.h: Renamed from lib/libxml/catalog_.h. - * lib/libxml/chvalid.in.h: Renamed from lib/libxml/chvalid_.h. - * lib/libxml/debugXML.in.h: Renamed from lib/libxml/debugXML_.h. - * lib/libxml/dict.in.h: Renamed from lib/libxml/dict_.h. - * lib/libxml/DOCBparser.in.h: Renamed from lib/libxml/DOCBparser_.h. - * lib/libxml/encoding.in.h: Renamed from lib/libxml/encoding_.h. - * lib/libxml/entities.in.h: Renamed from lib/libxml/entities_.h. - * lib/libxml/globals.in.h: Renamed from lib/libxml/globals_.h. - * lib/libxml/hash.in.h: Renamed from lib/libxml/hash_.h. - * lib/libxml/HTMLparser.in.h: Renamed from lib/libxml/HTMLparser_.h. - * lib/libxml/HTMLtree.in.h: Renamed from lib/libxml/HTMLtree_.h. - * lib/libxml/list.in.h: Renamed from lib/libxml/list_.h. - * lib/libxml/nanoftp.in.h: Renamed from lib/libxml/nanoftp_.h. - * lib/libxml/nanohttp.in.h: Renamed from lib/libxml/nanohttp_.h. - * lib/libxml/parser.in.h: Renamed from lib/libxml/parser_.h. - * lib/libxml/parserInternals.in.h: Renamed from lib/libxml/parserInternals_.h. - * lib/libxml/pattern.in.h: Renamed from lib/libxml/pattern_.h. - * lib/libxml/relaxng.in.h: Renamed from lib/libxml/relaxng_.h. - * lib/libxml/SAX2.in.h: Renamed from lib/libxml/SAX2_.h. - * lib/libxml/SAX.in.h: Renamed from lib/libxml/SAX_.h. - * lib/libxml/schemasInternals.in.h: Renamed from lib/libxml/schemasInternals_.h. - * lib/libxml/schematron.in.h: Renamed from lib/libxml/schematron_.h. - * lib/libxml/threads.in.h: Renamed from lib/libxml/threads_.h. - * lib/libxml/tree.in.h: Renamed from lib/libxml/tree_.h. - * lib/libxml/uri.in.h: Renamed from lib/libxml/uri_.h. - * lib/libxml/valid.in.h: Renamed from lib/libxml/valid_.h. - * lib/libxml/xinclude.in.h: Renamed from lib/libxml/xinclude_.h. - * lib/libxml/xlink.in.h: Renamed from lib/libxml/xlink_.h. - * lib/libxml/xmlautomata.in.h: Renamed from lib/libxml/xmlautomata_.h. - * lib/libxml/xmlerror.in.h: Renamed from lib/libxml/xmlerror_.h. - * lib/libxml/xmlexports.in.h: Renamed from lib/libxml/xmlexports_.h. - * lib/libxml/xmlIO.in.h: Renamed from lib/libxml/xmlIO_.h. - * lib/libxml/xmlmemory.in.h: Renamed from lib/libxml/xmlmemory_.h. - * lib/libxml/xmlmodule.in.h: Renamed from lib/libxml/xmlmodule_.h. - * lib/libxml/xmlreader.in.h: Renamed from lib/libxml/xmlreader_.h. - * lib/libxml/xmlregexp.in.h: Renamed from lib/libxml/xmlregexp_.h. - * lib/libxml/xmlsave.in.h: Renamed from lib/libxml/xmlsave_.h. - * lib/libxml/xmlschemas.in.h: Renamed from lib/libxml/xmlschemas_.h. - * lib/libxml/xmlschemastypes.in.h: Renamed from lib/libxml/xmlschemastypes_.h. - * lib/libxml/xmlstring.in.h: Renamed from lib/libxml/xmlstring_.h. - * lib/libxml/xmlunicode.in.h: Renamed from lib/libxml/xmlunicode_.h. - * lib/libxml/xmlversion.in.h: Renamed from lib/libxml/xmlversion_.h. - * lib/libxml/xmlwriter.in.h: Renamed from lib/libxml/xmlwriter_.h. - * lib/libxml/xpath.in.h: Renamed from lib/libxml/xpath_.h. - * lib/libxml/xpathInternals.in.h: Renamed from lib/libxml/xpathInternals_.h. - * lib/libxml/xpointer.in.h: Renamed from lib/libxml/xpointer_.h. - * modules/libxml (Files, Makefile.am): Update. - * Makefile.am (EXTRA_DIST): Update. - - * lib/glib/ghash.in.h: Renamed from lib/glib/ghash_.h. - * lib/glib/glist.in.h: Renamed from lib/glib/glist_.h. - * lib/glib/gprimes.in.h: Renamed from lib/glib/gprimes_.h. - * lib/glib/gstrfuncs.in.h: Renamed from lib/glib/gstrfuncs_.h. - * lib/glib/gstring.in.h: Renamed from lib/glib/gstring_.h. - * lib/glib/gtypes.in.h: Renamed from lib/glib/gtypes_.h. - * lib/glib.in.h: Renamed from lib/glib_.h. - * lib/glibconfig.in.h: Renamed from lib/glibconfig_.h. - * modules/libglib (Files, Makefile.am): Update. - * Makefile.am (EXTRA_DIST): Update. - - * lib/getopt.in.h.diff: Renamed from lib/getopt_.h.diff. - * Makefile.am (EXTRA_DIST): Update. - - * lib/alloca.in.h: Renamed from lib/alloca_.h. - * Makefile.am (EXTRA_DIST): Update. - -2007-10-01 Bruno Haible - - * tests/test-term-ostream-xterm.out: Update expected result after - code changes on 2006-12-23. - -2007-09-29 Bruno Haible - - * modules/fnmatch.diff: Update. - -2007-09-26 Bruno Haible - - * lib/vasprintf.c (int_vasprintf): Pass the args as a va_list, - not as a 'va_list *'. Needed on x86_64-linux, where va_list is an - array type: taking the address of a parameter of type va_list does - not yield a 'va_list *'. We have to assume that platforms where - passing a va_list by reference is useful (either because va_end is - not a no-op or because sizeof(va_list) is large) have already defined - va_list to an array type; no need to try to enforce passing by - reference. - Reported by Cristian Baboi . - -2007-09-24 Bruno Haible - - * lib/vasprintf.c (int_vasprintf): Use va_copy and va_end. - * modules/vasprintf.diff: Add dependency to stdarg. - Reported by Cristian Baboi . - -2007-09-01 Bruno Haible - - * lib/linebreak.c.diff: Update. - -2007-08-18 Bruno Haible - - * modules/fstrcmp: Remove file, moved to gnulib. - * lib/fstrcmp.h: Remove file, moved to gnulib. - * lib/fstrcmp.c: Remove file, moved to gnulib. - * lib/diffseq.h: Remove file, moved to gnulib. - * Makefile.am (EXTRA_DIST): Remove them. - -2007-07-01 Bruno Haible - - * build-aux/moopp (func_version): Use the standard --version output, - see - . - -2007-05-13 Bruno Haible - - * m4/vasprintf.m4 (gl_REPLACE_VASPRINTF, gl_PREREQ_VASPRINTF_H): New - macros, partially copied from gnulib. - (gl_FUNC_VASPRINTF): Copied from gnulib. - -2007-05-13 Bruno Haible - - * lib/vasprintf.c: Include stdio.h instead of vasprintf.h. - * lib/glibconfig_.h: Likewise. - -2007-05-13 Bruno Haible - - * modules/vasprintf.diff: Update. - * lib/linebreak.c.diff: Update. - -2007-05-01 Bruno Haible - - * lib/term-ostream.oo.c: Don't include sigprocmask.h. - -2007-03-24 Bruno Haible - - * lib/html-ostream.oo.c: Include unistr.h instead of utf8-ucs4.h. - -2007-03-16 Bruno Haible - - * lib/html-ostream.oo.c (html_ostream_create): Update after signature - of gl_list_create_empty changed. - -2007-03-04 Bruno Haible - - * lib/propername.c (proper_name, proper_name_utf8): Use mbsstr instead - of strstr. - * modules/propername (Depends-on): Remove strstr. Add mbsstr. - -2007-03-04 Bruno Haible - - Moved --enable-relocatable infrastructure to gnulib. - * modules/gettext-tools-libgettextpo-misc: Remove file. - * modules/progreloc: Remove file. - * modules/relocatable: Remove file. - * modules/relocwrapper: Remove file. - * lib/strerror.c.diff: Remove file. - * Makefile.am (EXTRA_DIST): Remove these files. - -2007-02-28 Bruno Haible - - Move relocatability infrastructure to gnulib. - * lib/relocatable.c: Remove file. - * lib/relocatable.h: Remove file. - * lib/relocwrapper.c: Remove file. - * m4/relocatable.m4: Remove file. - * Makefile.am (EXTRA_DIST): Remove these files. - -2007-02-28 Bruno Haible - - Move module xreadlink to gnulib. - * modules/xreadlink: Remove file. - * lib/xreadlink.h: Remove file. - * lib/xreadlink.c: Remove file. - * m4/xreadlink.m4: Remove file. - * Makefile.am (EXTRA_DIST): Remove these files. - -2007-02-19 Bruno Haible - - * lib/closeout.c: Include instead of exit.h. - * lib/fd-ostream.oo.c: Don't include exit.h. - * lib/html-styled-ostream.oo.c: Include instead of exit.h. - * lib/iconv-ostream.oo.c: Don't include exit.h. - * lib/memory-ostream.oo.c: Likewise. - * lib/term-ostream.oo.c: Likewise. - * lib/xmalloc.c: Likewise. - -2007-02-12 Bruno Haible - - * modules/gettext-tools-misc (Files): Add m4/locale-fr.m4. - -2007-02-01 Bruno Haible - - * modules/gettext-tools-misc (Makefile.am): Add @LIB_ACL@ to - lib_LDFLAGS. - Reported by Ralf Wildenhues . - -2007-01-28 Bruno Haible - - * lib/linebreak.c.diff: Update. - -2007-01-27 Bruno Haible - - Move a patch to gnulib. - * lib/javacomp.c.diff: Remove file. - * modules/javacomp.diff: Remove file. - * Makefile.am (EXTRA_DIST): Remove them. - -2007-01-26 Bruno Haible - - * lib/propername.c: Don't include strstr.h, use instead. - -2007-01-12 Bruno Haible - - * lib/xreadlink.c (xreadlink): Handle an ERANGE error. Needed for - AIX and HP-UX. Based on a gnulib patch from Paul Eggert on 2004-11-03. - -2006-12-23 Bruno Haible - - * term-ostream.oo.c (out_attr_change): Consider the side effects of - exit_attribute_mode: Turn off all attributes before turning on others. - Also re-enable the colors after turning off attributes. - -2006-12-23 Bruno Haible - - * build-aux/moopp (func_emit_source_h, func_emit_source_c): Accept the - newfile_base as second argument. Emit #line directives without a - directory. - -2006-12-22 Bruno Haible - - * modules/html-styled-ostream (Makefile.am) [WOE32DLL]: Use a C++ - wrapper file. - * modules/term-styled-ostream (Makefile.am) [WOE32DLL]: Likewise. - -2006-12-22 Bruno Haible - - Test for CC=c++ at configure-time. - * m4/moo.m4: New file. - * build-aux/moopp: Emit test of IS_CPLUSPLUS instead of __cplusplus. - * modules/moo (Files): Add m4/moo.m4. - (configure.ac): Set to gl_MOO. - * Makefile.am (EXTRA_DIST): Add m4/moo.m4. - -2006-12-23 Bruno Haible - - Support platforms with neither terminfo nor termcap functions, like - mingw. - * lib/tputs.c: New file. - - * modules/termcap (Files): Add lib/tputs.c. - * m4/termcap.m4 (gl_TERMCAP): Add tputs replacement. - (gl_TERMCAP_BODY): Define HAVE_TERMCAP if tgetent is available. - * lib/termcap.h (tgetent, tgetnum, tgetflag, tgetstr): Declare only - if HAVE_TERMCAP. - (tgoto): Declare only if HAVE_TERMCAP || HAVE_TERMINFO. - - * modules/terminfo (Files): Add lib/tputs.c. - * m4/terminfo.m4 (gl_TERMINFO): Add tputs replacement. - (gl_TERMINFO_BODY): Define HAVE_TERMCAP if tgetent is available. - * lib/terminfo.h (tgetent, tgetnum, tgetflag, tgetstr): Declare only - if HAVE_TERMCAP. - (tgoto): Declare only if HAVE_TERMINFO || HAVE_TERMCAP. - - * lib/term-ostream.oo.c (term_ostream_create): Use ANSI color escape - sequences when neither terminfo nor termcap functions exist. - * Makefile.am (EXTRA_DIST): Add lib/tputs.c. - -2006-12-23 Bruno Haible - - Improve cross-compilation support. - * m4/gcj.m4 (gt_GCJ): Use AC_CHECK_TOOL instead of AC_CHECK_PROGS. - -2006-12-23 Bruno Haible - - * lib/term-ostream.oo.c (term_ostream_create): Fix up the - no_color_video value for cygwin. - -2006-12-22 Bruno Haible - - Move no-c++ module to gnulib. - * modules/no-c++: Remove file. - * m4/no-c++.m4: Remove file. - * Makefile.am (EXTRA_DIST): Remove them. - -2006-12-21 Bruno Haible - - * modules/gettext-tools-misc (Makefile.am): Move modifications of - AUTOMAKE_OPTIONS, AM_CPPFLAGS and settings of gettextsrcdir, - gettextsrc_DATA, pkgdatadir to ../gettext-tools/gnulib-lib/Makefile.am. - -2006-12-21 Bruno Haible - - * build-aux/moopp (func_usage, func_version): New functions. - (dllexports): New variable. - Parse command-line options. - (func_emit_source_h): Emit DLL_VARIABLE marks if the class is to be - exported. - -2006-12-21 Bruno Haible - - * modules/moo (Makefile.am): Declare MOOPPFLAGS. - * modules/moo-tests (Makefile.am): Pass the MOOPPFLAGS to every moopp - invocation. - * modules/ostream (Makefile.am): Likewise. - * modules/fd-ostream (Makefile.am): Likewise. - * modules/file-ostream (Makefile.am): Likewise. - * modules/html-ostream (Makefile.am): Likewise. - * modules/iconv-ostream (Makefile.am): Likewise. - * modules/memory-ostream (Makefile.am): Likewise. - * modules/term-ostream (Makefile.am): Likewise. - * modules/styled-ostream (Makefile.am): Likewise. - * modules/html-styled-ostream (Makefile.am): Likewise. - * modules/term-styled-ostream (Makefile.am): Likewise. - -2006-12-21 Bruno Haible - - * lib/diffseq.h (diag, compareseq): Use the EQUAL macro. - -2006-12-19 Bruno Haible - - * m4/libxml.m4 (gl_LIBXML): Check for arpa/nameser.h and resolv.h - with some prerequisite headers. Needed for AIX 4.3.2. - -2006-12-19 Bruno Haible - - * lib/term-ostream.oo.c (term_ostream_create): Add color information - about xterm if the platform lacks it. - -2006-12-19 Bruno Haible - - * lib/term-ostream.oo.c: Include terminfo.h instead of termcap.h. - * modules/term-ostream (Depends-on): Add terminfo-h, remove termcap-h. - -2006-12-19 Bruno Haible - - * lib/terminfo.h: New file. - * modules/terminfo-h: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2006-12-19 Bruno Haible - - * m4/terminfo.m4: New file. - * modules/terminfo: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2006-12-19 Bruno Haible - - * m4/termcap.m4 (gl_TERMCAP, gl_TERMCAP_BODY): Rename cache variables. - -2006-12-17 Bruno Haible - - * lib/diffseq.h: New file, extracted from fstrcmp.c and GNU diff's - analyze.c. - * lib/fstrcmp.c: Use it. - * modules/fstrcmp (Files): Add lib/diffseq.h. - -2006-12-17 Bruno Haible - - * lib/fstrcmp.c: Make generic. - (EXTRA_CONTEXT_FIELDS, NOTE_DELETE, NOTE_INSERT): New macros. - -2006-10-07 Bruno Haible - - * lib/fstrcmp.c: Include minmax.h. - * modules/fstrcmp (Depends-on): Add minmax. - - * lib/fstrcmp.c (IF_LINT): New macro. - - * lib/fstrcmp.c: Make comments and variable syntax closer to GNU - diff's analyze.c. - - * lib/fstrcmp.c: Fix FSF address in copyright header. - - * lib/fstrcmp.c: Rename macro MINUS_H_FLAG to USE_HEURISTIC. Use bool. - - * lib/fstrcmp.c: Update comments. Talk about vectors instead of - strings, and about elements instead of characters. - - * lib/fstrcmp.c: Make generic. - (OFFSET_MAX): New macro. - - * lib/fstrcmp.c: Modernize the coding style. - - * lib/fstrcmp.c: Include . Use bool where appropriate. - Rename 'minimal' to 'find_minimal'. - - * lib/fstrcmp.c: Make generic. - (ELEMENT, EQUAL, OFFSET): New macros. - -2006-12-17 Bruno Haible - - * lib/fstrcmp.c (diag): Change return type to void. - (compareseq): Remove verification that the change count is > 1. - -2006-12-16 Bruno Haible - - * m4/termcap.m4 (gl_TERMCAP_BODY): Also test for the terminfo - functions. - * lib/termcap.h (setupterm, tigetnum, tigetflag, tigetstr): New - declarations. - * lib/term-ostream.oo.c (xstrdup0) [HAVE_TERMINFO]: Handle (char*)-1 - return value from tigetstr. - (term_ostream_create) [HAVE_TERMINFO]: Prefer the terminfo API. - -2006-12-16 Bruno Haible - - * lib/term-ostream.oo.c (term_ostream_create): Fix tgetstr argument - for stream->no_color_video. - -2006-12-16 Bruno Haible - - * lib/term-ostream.oo.c (term_ostream_create): Don't ignore tgetent's - return value. - -2006-12-16 Bruno Haible - - * lib/libcroco/cr-style.h (enum CRPositionType): Remove trailing - comma. Needed for compilation on AIX with xlc. - -2006-12-16 Bruno Haible - - * modules/libxml (Depends-on): Add stdarg. - * m4/libxml.m4 (gl_LIBXML): Define VA_COPY, needed for xmlwriter.c. - -2006-12-16 Bruno Haible - - * lib/libxml/xmlwriter.c: Include libxml.h first, not after string.h. - -2006-12-13 Bruno Haible - - * build-aux/moopp: Add check for GNU sed. Generate the 4 files in the - source directory, not in the current directory. - * modules/ostream (Makefile.am): Test for the .h file in the source - directory, not in the current directory. Augment MAINTAINERCLEANFILES - and EXTRA_DIST, not CLEANFILES. - * modules/fd-ostream (Makefile.am): Likewise. - * modules/file-ostream (Makefile.am): Likewise. - * modules/html-ostream (Makefile.am): Likewise. - * modules/iconv-ostream (Makefile.am): Likewise. - * modules/memory-ostream (Makefile.am): Likewise. - * modules/term-ostream (Makefile.am): Likewise. - * modules/styled-ostream (Makefile.am): Likewise. - * modules/html-styled-ostream (Makefile.am): Likewise. - * modules/term-styled-ostream (Makefile.am): Likewise. - -2006-12-13 Bruno Haible - - Avoid crash on NetBSD. - * lib/term-ostream.oo.c (term_ostream_create): Pass a non-NULL area - pointer to tgetstr. - -2006-12-13 Bruno Haible - - * lib/tparm.c: New file, based on a public-domain implementation part - of Cygwin. - * m4/termcap.m4 (gl_TERMCAP): AC_LIBOBJ of tparm.c if needed. - (gl_TERMCAP_BODY): Test whether the system has tparm(). - * modules/termcap (Files): Add lib/tparm.c. - (Depends-on): Add c-ctype. - * Makefile.am (EXTRA_DIST): Add lib/tparm.c. - -2006-12-13 Bruno Haible - - * modules/termcap-h (Include): Add termcap.h. - -2006-12-13 Bruno Haible - - * build-aux/moopp (sed_remove_comments): Fix handling of character - constants. Example: '"' /* comment */ '"' - (sed_remove_comments_ERE): New variable. - -2006-12-13 Bruno Haible - - * modules/ostream (Makefile.am): List all generated files in the moopp - rule. - * modules/fd-ostream (Makefile.am): Likewise. - * modules/file-ostream (Makefile.am): Likewise. - * modules/html-ostream (Makefile.am): Likewise. - * modules/iconv-ostream (Makefile.am): Likewise. - * modules/memory-ostream (Makefile.am): Likewise. - * modules/term-ostream (Makefile.am): Likewise. - * modules/styled-ostream (Makefile.am): Likewise. - * modules/html-styled-ostream (Makefile.am): Likewise. - * modules/term-styled-ostream (Makefile.am): Likewise. - -2006-12-12 Bruno Haible - - Fix moopp rules for parallel make. - * build-aux/moopp: Generate source.h first and source.c last. - * modules/ostream (Makefile.am): Rewrite the moopp rule so that all - generated files depend on the generated .h file. - * modules/fd-ostream (Makefile.am): Likewise. - * modules/file-ostream (Makefile.am): Likewise. - * modules/html-ostream (Makefile.am): Likewise. - * modules/iconv-ostream (Makefile.am): Likewise. - * modules/memory-ostream (Makefile.am): Likewise. - * modules/term-ostream (Makefile.am): Likewise. - * modules/styled-ostream (Makefile.am): Likewise. - * modules/html-styled-ostream (Makefile.am): Likewise. - * modules/term-styled-ostream (Makefile.am): Likewise. - Reported by Ralf Wildenhues. - -2006-12-12 Bruno Haible - - * build-aux/moopp (func_emit_priv_h, func_emit_vt_h, - func_emit_source_h, func_emit_source_c): New functions. - -2006-12-02 Bruno Haible - - Support 'text-decoration: underline' in terminal mode. - * lib/term-styled-ostream.oo.c: Include cr-string.h. - (enum CRXTextDecorationType): New type. - (CRXStyle): New type. - (crx_style_new, crx_style_destroy, crx_sel_eng_get_matched_style): New - functions. - (style_compute_text_underline_value): Take a CRXStyle as argument. - (match): Build a chain of CRXStyle instead of CRStyle. - -2006-12-01 Bruno Haible - - * modules/term-styled-ostream: New file. - * lib/term-styled-ostream.oo.c: New file. - * lib/term-styled-ostream.oo.h: New file. - * Makefile.am (EXTRA_DIST): Add the new files. - -2006-12-01 Bruno Haible - - * modules/html-styled-ostream: New file. - * lib/html-styled-ostream.oo.c: New file. - * lib/html-styled-ostream.oo.h: New file. - * Makefile.am (EXTRA_DIST): Add the new files. - -2006-12-01 Bruno Haible - - * modules/styled-ostream: New file. - * lib/styled-ostream.oo.c: New file. - * lib/styled-ostream.oo.h: New file. - * Makefile.am (EXTRA_DIST): Add the new files. - -2006-12-11 Bruno Haible - - Portability to BeOS. - * lib/term-ostream.oo.c (term_ostream_create) [BeOS]: Correct the - values of stream->set_a_foreground and stream->set_a_background. - -2006-12-11 Bruno Haible - - Portability to systems with GNU termcap. - * m4/termcap.m4 (gl_TERMCAP_BODY): Also test for the tparam function. - * lib/termcap.h (tparam): New declaration. - * lib/term-ostream.oo.c (tparambuf): New variable. - (tparm): Define in terms of tparam when tparam exists. - -2006-12-01 Bruno Haible - - * modules/term-ostream: Depend on termcap-h, not termcap. - * lib/term-ostream.oo.c: Include termcap.h. - (tgetent, tgetnum, tgetflag, tgetstr, tparm, tgoto, tputs): Remove - declarations. - - Move termcap function declarations to a header file. - * modules/termcap-h: New file. - * lib/termcap.h: New file. - * Makefile.am (EXTRA_DIST): Add the new files. - -2006-12-01 Bruno Haible - - * modules/moo-tests: New file. - * tests/test-moo-aroot.oo.c: New file. - * tests/test-moo-aroot.oo.h: New file. - * tests/test-moo-assign.c: New file. - * tests/test-moo-asub1.oo.c: New file. - * tests/test-moo-asub1.oo.h: New file. - * tests/test-moo-root.oo.c: New file. - * tests/test-moo-root.oo.h: New file. - * tests/test-moo-sub1.oo.c: New file. - * tests/test-moo-sub1.oo.h: New file. - * tests/test-moo-sub2.oo.c: New file. - * tests/test-moo-sub2.oo.h: New file. - * Makefile.am (EXTRA_DIST): Add the new files. - -2006-12-01 Bruno Haible - - * modules/term-ostream-tests: New file. - * tests/test-term-ostream.c: New file. - * tests/test-term-ostream-xterm: New file. - * tests/test-term-ostream-xterm.out: New file. - * tests/test-term-ostream-xterm-16color.out: New file. - * tests/test-term-ostream-xterm-88color.out: New file. - * tests/test-term-ostream-xterm-256color.out: New file. - * Makefile.am (EXTRA_DIST): Add the new files. - -2006-12-02 Bruno Haible - - * lib/term-ostream.oo.c (term_ostream_create): Recognize also the - terminal types rxvt[-16color] and konsole[-16color]. - -2006-12-01 Bruno Haible - - Preserve the hue of bright colors. - * lib/term-ostream.oo.c (colors_of_common8): New variable. - (rgb_to_color_common8): Rewritten. - (colors_of_xterm8): New variable. - (rgb_to_color_xterm8): Rewritten. - -2006-12-01 Bruno Haible - - * lib/term-ostream.oo.c (out_attr_change): Fix typo. - -2006-11-30 Bruno Haible - - Add special color support for xterm-16color, xterm-88color, - xterm-256color. - * lib/term-ostream.oo.h (term_color_t): Define as int. - (COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, COLOR_RED, - COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE): Remove enum items. - (term_ostream): Add method rgb_to_color. - * lib/term-ostream.oo.c (rgb_t, hsv_t): New types. - (rgb_to_hsv, color_distance, nearest_color, color_luminance): New - functions. - (colormodel_t): New type. - (rgb_to_color_monochrome): New function. - (rgb_to_color_common8): New function. - (rgb_to_color_xterm8): New function. - (colors_of_xterm16): New variable. - (rgb_to_color_xterm16): New function. - (colors_of_xterm88): New variable. - (rgb_to_color_xterm88): New function. - (colors_of_xterm256): New variable. - (rgb_to_color_xterm256): New function. - (attributes_t): Reserve more bits for the colors. - (term_ostream): Add colormodel field. - (out_error): New function. - (out_char): Use it. - (out_attr_change): Add support for the xterm color models. - (term_ostream::rgb_to_color): New function. - (term_ostream_create): Initialize the colormodel field. - -2006-11-28 Bruno Haible - - * lib/term-ostream.oo.c (out_attr_change): Fix uses of color_bgr. - -2006-11-28 Bruno Haible - - Guard against interruption with Ctrl-Z. - * lib/term-ostream.oo.c: Include also signal.h and sigprocmask.h. - (SIZEOF): New macro. - (stopping_signals): New variable. - (num_stopping_signals): New macro. - (stopping_signal_set): New variable. - (init_stopping_signal_set): New function. - (block_stopping_signals, unblock_stopping_signals): New functions. - (output_buffer): Use them. - * modules/term-ostream (Depends-on): Add sigprocmask. - -2006-11-28 Bruno Haible - - * lib/libcroco/cr-fonts.h: Fix double-inclusion guard. - -2006-11-27 Paul Eggert - Bruno Haible - - * lib/gettext.h (_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS): Define to 0 - if compiling with "gcc -ansi". - -2006-11-26 Bruno Haible - - Build the imported libraries with a C compiler, even when CC=g++. - - * modules/libcroco (Depends-on): Add no-c++. - (Makefile.am): Define libcroco_rpl_la_SOURCES, - libcroco_rpl_la_CPPFLAGS. - Augment lib_LIBADD, lib_DEPENDENCIES, noinst_LTLIBRARIES. - * m4/libcroco.m4 (gl_LIBCROCO): Don't use AC_LIBOBJ. - - * modules/libglib (Depends-on): Add no-c++. - (Makefile.am): Define libglib_rpl_la_SOURCES, libglib_rpl_la_CPPFLAGS. - Augment lib_LIBADD, lib_DEPENDENCIES, noinst_LTLIBRARIES. - * m4/libglib.m4 (gl_LIBGLIB): Don't use AC_LIBOBJ. New condition - INCLUDED_LIBGLIB. - - * modules/libxml (Depends-on): Add no-c++. - (Makefile.am): Define libxml_rpl_la_SOURCES, libxml_rpl_la_CPPFLAGS. - Augment lib_LIBADD, lib_DEPENDENCIES, noinst_LTLIBRARIES. - * m4/libxml.m4 (gl_LIBXML): Don't use AC_LIBOBJ. New condition - INCLUDED_LIBXML. - -2006-11-26 Bruno Haible - - libcroco uses vasprintf.h, which requires . - * lib/libcroco/cr-additional-sel.c: Include . - * lib/libcroco/cr-attr-sel.c: Likewise. - * lib/libcroco/cr-cascade.c: Likewise. - * lib/libcroco/cr-declaration.c: Likewise. - * lib/libcroco/cr-doc-handler.c: Likewise. - * lib/libcroco/cr-enc-handler.c: Likewise. - * lib/libcroco/cr-fonts.c: Likewise. - * lib/libcroco/cr-input.c: Likewise. - * lib/libcroco/cr-num.c: Likewise. - * lib/libcroco/cr-om-parser.c: Likewise. - * lib/libcroco/cr-parser.c: Likewise. - * lib/libcroco/cr-parsing-location.c: Likewise. - * lib/libcroco/cr-prop-list.c: Likewise. - * lib/libcroco/cr-pseudo.c: Likewise. - * lib/libcroco/cr-rgb.c: Likewise. - * lib/libcroco/cr-sel-eng.c: Likewise. - * lib/libcroco/cr-selector.c: Likewise. - * lib/libcroco/cr-simple-sel.c: Likewise. - * lib/libcroco/cr-statement.c: Likewise. - * lib/libcroco/cr-string.c: Likewise. - * lib/libcroco/cr-style.c: Likewise. - * lib/libcroco/cr-stylesheet.c: Likewise. - * lib/libcroco/cr-term.c: Likewise. - * lib/libcroco/cr-tknzr.c: Likewise. - * lib/libcroco/cr-token.c: Likewise. - * lib/libcroco/cr-utils.c: Likewise. - -2006-11-26 Bruno Haible - - * modules/no-c++: New file. - * m4/no-c++.m4: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2006-11-26 Bruno Haible - - Support for VPATH builds. - * modules/libglib (glib/*.h): Create the glib directory if necessary. - * modules/libxml (libxml/*.h): Create the libxml directory if - necessary. - -2006-11-26 Bruno Haible - - * lib/xalloc.h (xmemdup): Add a typesafe C++ template variant. - Based on a patch from Paul Eggert in gnulib. - -2006-11-26 Bruno Haible - - Optimize IS_INSTANCE. - * build-aux/moopp: Emit also a classname_SUPERCLASSES_LENGTH macro. - * lib/moo.h (IS_INSTANCE): Use the value of this macro, known at - compile time. - (IS_INSTANCE_PRIVATE): Remove macro. - -2006-11-26 Bruno Haible - - * lib/moo.h (IS_INSTANCE): Fix reference to vtable. - -2006-11-26 Bruno Haible - - * build-aux/moopp: In the C++ class definition, add 'operator ==', - 'operator !=' members, and add constructors for downcasting. - -2006-11-25 Bruno Haible - - * lib/glibconfig_.h (g_return_if_fail, g_return_val_if_fail, - g_return_if_reached, g_return_val_if_reached): Return instead of - calling abort(). - -2006-11-12 Bruno Haible - - * modules/libcroco: New file. - * m4/libcroco.m4: New file. - * lib/libcroco/cr-additional-sel.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-additional-sel.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-attr-sel.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-attr-sel.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-cascade.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-cascade.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-declaration.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-declaration.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-doc-handler.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-doc-handler.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-enc-handler.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-enc-handler.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-fonts.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-fonts.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-input.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-input.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-num.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-num.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-om-parser.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-om-parser.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-parser.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-parser.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-parsing-location.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-parsing-location.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-prop-list.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-prop-list.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-pseudo.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-pseudo.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-rgb.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-rgb.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-sel-eng.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-sel-eng.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-selector.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-selector.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-simple-sel.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-simple-sel.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-statement.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-statement.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-string.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-string.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-style.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-style.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-stylesheet.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-stylesheet.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-term.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-term.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-tknzr.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-tknzr.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-token.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-token.h: New file, from libcroco-0.6.1. - * lib/libcroco/cr-utils.c: New file, from libcroco-0.6.1. - * lib/libcroco/cr-utils.h: New file, from libcroco-0.6.1. - * lib/libcroco/libcroco-config.h: New file, from libcroco-0.6.1. - * lib/libcroco/libcroco.h: New file, from libcroco-0.6.1. - * Makefile.am (EXTRA_DIST): Add the new files. - -2006-11-12 Bruno Haible - - * modules/libglib: New file. - * m4/libglib.m4: New file. - * lib/glib_.h: New file, from glib-2.12.4 with modifications. - * lib/glibconfig_.h: New file, based on glib-2.12.4. - * lib/glib/ghash.c: New file, from glib-2.12.4 with modifications. - * lib/glib/ghash_.h: New file, from glib-2.12.4 with modifications. - * lib/glib/glist.c: New file, from glib-2.12.4 with modifications. - * lib/glib/glist_.h: New file, from glib-2.12.4 with modifications. - * lib/glib/gmessages.c: New file. - * lib/glib/gprimes.c: New file, from glib-2.12.4 with modifications. - * lib/glib/gprimes_.h: New file, from glib-2.12.4 with modifications. - * lib/glib/gstrfuncs.c: New file, from glib-2.12.4 with modifications. - * lib/glib/gstrfuncs_.h: New file, from glib-2.12.4 with modifications. - * lib/glib/gstring.c: New file, from glib-2.12.4 with modifications. - * lib/glib/gstring_.h: New file, from glib-2.12.4 with modifications. - * lib/glib/gtypes_.h: New file, from glib-2.12.4 with modifications. - * Makefile.am (EXTRA_DIST): Add the new files. - -2006-11-12 Bruno Haible - - * modules/xalloc (Depends-on): Add error, gettext-h, exit. - -2006-11-09 Paul Eggert - - * lib/gettext.h (dgettext, dcgettext, ngettext) [! ENABLE_NLS]: - (dngettext, dcngettext, bindtextdomain) [! ENABLE_NLS]: - (bind_textdomain_codeset) [! ENABLE_NLS]: - Evaluate all the arguments. That way, callers get compatible behavior - if the arguments have side effects. Also, it avoids some GCC - diagnostics in some cases; Joel E. Denny reported problems when Bison - was configured with --enable-gcc-warnigs. - -2006-11-05 Bruno Haible - - Include libxml2 as a fallback. - * modules/libxml: New file. - * m4/libxml.m4: New file. - * lib/libxml/elfgcchack.h: New empty file. - * lib/libxml/xmlversion_.h: New file, from libxml2-2.6.27 with - modifications. - * lib/libxml/libxml.h: New file, from libxml2-2.6.27. - * lib/libxml/COPYING: New file, from libxml2-2.6.27. - * lib/libxml/DOCBparser.c: New file, from libxml2-2.6.27. - * lib/libxml/DOCBparser_.h: New file, from libxml2-2.6.27. - * lib/libxml/HTMLparser.c: New file, from libxml2-2.6.27. - * lib/libxml/HTMLparser_.h: New file, from libxml2-2.6.27. - * lib/libxml/HTMLtree.c: New file, from libxml2-2.6.27. - * lib/libxml/HTMLtree_.h: New file, from libxml2-2.6.27. - * lib/libxml/SAX.c: New file, from libxml2-2.6.27. - * lib/libxml/SAX2.c: New file, from libxml2-2.6.27. - * lib/libxml/SAX2_.h: New file, from libxml2-2.6.27. - * lib/libxml/SAX_.h: New file, from libxml2-2.6.27. - * lib/libxml/c14n.c: New file, from libxml2-2.6.27. - * lib/libxml/c14n_.h: New file, from libxml2-2.6.27. - * lib/libxml/catalog.c: New file, from libxml2-2.6.27. - * lib/libxml/catalog_.h: New file, from libxml2-2.6.27. - * lib/libxml/chvalid.c: New file, from libxml2-2.6.27. - * lib/libxml/chvalid_.h: New file, from libxml2-2.6.27. - * lib/libxml/debugXML.c: New file, from libxml2-2.6.27. - * lib/libxml/debugXML_.h: New file, from libxml2-2.6.27. - * lib/libxml/dict.c: New file, from libxml2-2.6.27. - * lib/libxml/dict_.h: New file, from libxml2-2.6.27. - * lib/libxml/encoding.c: New file, from libxml2-2.6.27. - * lib/libxml/encoding_.h: New file, from libxml2-2.6.27. - * lib/libxml/entities.c: New file, from libxml2-2.6.27. - * lib/libxml/entities_.h: New file, from libxml2-2.6.27. - * lib/libxml/error.c: New file, from libxml2-2.6.27. - * lib/libxml/globals.c: New file, from libxml2-2.6.27. - * lib/libxml/globals_.h: New file, from libxml2-2.6.27. - * lib/libxml/hash.c: New file, from libxml2-2.6.27. - * lib/libxml/hash_.h: New file, from libxml2-2.6.27. - * lib/libxml/legacy.c: New file, from libxml2-2.6.27. - * lib/libxml/list.c: New file, from libxml2-2.6.27. - * lib/libxml/list_.h: New file, from libxml2-2.6.27. - * lib/libxml/nanoftp.c: New file, from libxml2-2.6.27. - * lib/libxml/nanoftp_.h: New file, from libxml2-2.6.27. - * lib/libxml/nanohttp.c: New file, from libxml2-2.6.27. - * lib/libxml/nanohttp_.h: New file, from libxml2-2.6.27. - * lib/libxml/parser.c: New file, from libxml2-2.6.27. - * lib/libxml/parserInternals.c: New file, from libxml2-2.6.27. - * lib/libxml/parserInternals_.h: New file, from libxml2-2.6.27. - * lib/libxml/parser_.h: New file, from libxml2-2.6.27. - * lib/libxml/pattern.c: New file, from libxml2-2.6.27. - * lib/libxml/pattern_.h: New file, from libxml2-2.6.27. - * lib/libxml/relaxng.c: New file, from libxml2-2.6.27. - * lib/libxml/relaxng_.h: New file, from libxml2-2.6.27. - * lib/libxml/schemasInternals_.h: New file, from libxml2-2.6.27. - * lib/libxml/schematron.c: New file, from libxml2-2.6.27. - * lib/libxml/schematron_.h: New file, from libxml2-2.6.27. - * lib/libxml/threads.c: New file, from libxml2-2.6.27. - * lib/libxml/threads_.h: New file, from libxml2-2.6.27. - * lib/libxml/tree.c: New file, from libxml2-2.6.27. - * lib/libxml/tree_.h: New file, from libxml2-2.6.27. - * lib/libxml/uri.c: New file, from libxml2-2.6.27. - * lib/libxml/uri_.h: New file, from libxml2-2.6.27. - * lib/libxml/valid.c: New file, from libxml2-2.6.27. - * lib/libxml/valid_.h: New file, from libxml2-2.6.27. - * lib/libxml/xinclude.c: New file, from libxml2-2.6.27. - * lib/libxml/xinclude_.h: New file, from libxml2-2.6.27. - * lib/libxml/xlink.c: New file, from libxml2-2.6.27. - * lib/libxml/xlink_.h: New file, from libxml2-2.6.27. - * lib/libxml/xmlIO.c: New file, from libxml2-2.6.27. - * lib/libxml/xmlIO_.h: New file, from libxml2-2.6.27. - * lib/libxml/xmlautomata_.h: New file, from libxml2-2.6.27. - * lib/libxml/xmlerror_.h: New file, from libxml2-2.6.27. - * lib/libxml/xmlexports_.h: New file, from libxml2-2.6.27. - * lib/libxml/xmlmemory.c: New file, from libxml2-2.6.27. - * lib/libxml/xmlmemory_.h: New file, from libxml2-2.6.27. - * lib/libxml/xmlmodule.c: New file, from libxml2-2.6.27. - * lib/libxml/xmlmodule_.h: New file, from libxml2-2.6.27. - * lib/libxml/xmlreader.c: New file, from libxml2-2.6.27. - * lib/libxml/xmlreader_.h: New file, from libxml2-2.6.27. - * lib/libxml/xmlregexp.c: New file, from libxml2-2.6.27. - * lib/libxml/xmlregexp_.h: New file, from libxml2-2.6.27. - * lib/libxml/xmlsave.c: New file, from libxml2-2.6.27. - * lib/libxml/xmlsave_.h: New file, from libxml2-2.6.27. - * lib/libxml/xmlschemas.c: New file, from libxml2-2.6.27. - * lib/libxml/xmlschemas_.h: New file, from libxml2-2.6.27. - * lib/libxml/xmlschemastypes.c: New file, from libxml2-2.6.27. - * lib/libxml/xmlschemastypes_.h: New file, from libxml2-2.6.27. - * lib/libxml/xmlstring.c: New file, from libxml2-2.6.27. - * lib/libxml/xmlstring_.h: New file, from libxml2-2.6.27. - * lib/libxml/xmlunicode.c: New file, from libxml2-2.6.27. - * lib/libxml/xmlunicode_.h: New file, from libxml2-2.6.27. - * lib/libxml/xmlwriter.c: New file, from libxml2-2.6.27. - * lib/libxml/xmlwriter_.h: New file, from libxml2-2.6.27. - * lib/libxml/xpath.c: New file, from libxml2-2.6.27. - * lib/libxml/xpathInternals_.h: New file, from libxml2-2.6.27. - * lib/libxml/xpath_.h: New file, from libxml2-2.6.27. - * lib/libxml/xpointer.c: New file, from libxml2-2.6.27. - * lib/libxml/xpointer_.h: New file, from libxml2-2.6.27. - * Makefile.am (EXTRA_DIST): Add the new files. - -2006-11-05 Bruno Haible - - * modules/term-ostream: New file. - * m4/term-ostream.m4: New file. - * lib/term-ostream.oo.h: New file. - * lib/term-ostream.oo.c: New file. - * Makefile.am (EXTRA_DIST): Add them. - - * modules/termcap: New file. - * m4/termcap.m4: New file. - * Makefile.am (EXTRA_DIST): Add them. - - * modules/memory-ostream: New file. - * lib/memory-ostream.oo.h: New file. - * lib/memory-ostream.oo.c: New file. - * Makefile.am (EXTRA_DIST): Add them. - - * modules/iconv-ostream: New file. - * lib/iconv-ostream.oo.h: New file. - * lib/iconv-ostream.oo.c: New file. - * Makefile.am (EXTRA_DIST): Add them. - - * modules/html-ostream: New file. - * lib/html-ostream.oo.h: New file. - * lib/html-ostream.oo.c: New file. - * Makefile.am (EXTRA_DIST): Add them. - - * modules/file-ostream: New file. - * lib/file-ostream.oo.h: New file. - * lib/file-ostream.oo.c: New file. - * Makefile.am (EXTRA_DIST): Add them. - - * modules/fd-ostream: New file. - * lib/fd-ostream.oo.h: New file. - * lib/fd-ostream.oo.c: New file. - * Makefile.am (EXTRA_DIST): Add them. - - * modules/ostream: New file. - * lib/ostream.oo.h: New file. - * lib/ostream.oo.c: New file. - * Makefile.am (EXTRA_DIST): Add them. - - * modules/moo: New file. - * build-aux/moopp: New file. - * lib/moo.h: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2006-11-06 Bruno Haible - - * lib/xalloc.h (xcharalloc): New macro. - (xmemdup): New declaration. - * lib/xstrdup.c (xmemdup): New function. - -2006-11-03 Bruno Haible - - * lib/xalloc.h (XMALLOC, XNMALLOC, XZALLOC, XCALLOC): New macros. - (xnboundedmalloc): New inline function. - * lib/fstrcmp.c (fstrcmp): Use xnmalloc instead of xmalloc. - * lib/hash.c (hash_init, resize): Use XCALLOC instead of xcalloc. - * lib/propername.c (proper_name, proper_name_utf8): Use XNMALLOC - instead of xmalloc. - * lib/xgetcwd.c (xgetcwd): Use XNMALLOC instead of xmalloc. - * lib/xstrdup.c (xstrdup): Likewise. - -2006-11-06 Bruno Haible - - * lib/getopt_.h.diff: Update. - -2006-11-06 Bruno Haible - - Moved canonicalize to gnulib. - * modules/canonicalize: Remove file. - * lib/canonicalize.h: Remove file. - * lib/canonicalize.c: Remove file. - * m4/canonicalize.m4: Remove file. - * Makefile.am (EXTRA_DIST): Remove these files. - * modules/progreloc (Depends-on): Replace 'canonicalize' with - 'canonicalize-lgpl'. - -2006-11-06 Bruno Haible - - * lib/canonicalize.h (canonicalize_file_name): Fix wrong comment - borrowed from glibc. - -2006-11-02 Bruno Haible - - * lib/xalloc.h (xnmalloc): New declaration. From gnulib xalloc.h. - * lib/xmalloc.c (fixup_null_alloc): Write NULL, not 0. - (xnmalloc): New function. - -2006-10-29 Bruno Haible - - * lib/fstrcmp.h: Wrap declarations in extern "C". - -2006-10-29 Bruno Haible - - Make it compile in C++ mode. - * lib/backupfile.c (find_backup_file_name): Cast malloc result. - * lib/xalloc.h (xrealloc): Define as template with appropriate return - type. - * lib/xstrdup.c (xstrdup): Cast xmalloc result. - -2006-11-27 Bruno Haible - - * gettext-0.16.1 released. - -2006-10-26 Bruno Haible - - * gettext-0.16 released. - -2006-10-26 Bruno Haible - - * modules/canonicalize (Makefile.am): Remove EXTRA_DIST. Now done by - gnulib-tool. - * modules/relocatable (Makefile.am): Likewise. - * modules/relocwrapper (Makefile.am): Likewise. - -2006-10-25 Bruno Haible - - * m4/relocatable.m4 (AC_RELOCATABLE_BODY): Renamed from AC_RELOCATABLE, - without the AC_LIBOBJ invocation. - (AC_RELOCATABLE): New macro. Invoke AC_LIBOBJ here. - * modules/relocwrapper (configure.ac): Invoke AC_RELOCATABLE instead - of requiring it. - * modules/gettext-tools-libgettextpo-misc: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2006-10-25 Bruno Haible - - * lib/gettext.h (_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS): Define to - false for non-gcc C++ compilers. - Reported by Nelson H. F. Beebe . - -2006-10-24 Bruno Haible - - * modules/gettext-tools-misc (Makefile.am): Add also $(top_srcdir) to - AM_CPPFLAGS. Needed so that woe32dll/export.h is found while compiling - gettextlib-exports.c in a VPATH build. - Reported by Charles Wilson . - -2006-10-24 Bruno Haible - - * modules/gettext-tools/misc (Makefile.am): Use rm -f instead of - $(RM). - -2006-10-24 Bruno Haible - - * lib/fstrcmp.c (keys_init_once): Remove semicolon after - gl_once_define invocation. - -2006-10-23 Bruno Haible - - Moved last change to gnulib. - * lib/obstack.h.diff: Undo last change. - * lib/obstack.c.diff: Remove file. - * Makefile.am (EXTRA_DIST): Remove it. - -2006-10-20 Bruno Haible - - * lib/obstack.h.diff: Use _obstack_free instead of obstack_free, but - define _obstack_free to obstack_free by default. - * lib/obstack.c.diff: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2006-10-17 Bruno Haible - - * lib/gettext.h (gettext, ngettext, pgettext, npgettext): Define - differently if DEFAULT_TEXT_DOMAIN is set. - -2006-10-16 Bruno Haible - - Use newer modules from gnulib. - * lib/getline.h: Remove file. - * lib/getline.c: Remove file. - * m4/getline.m4: Remove file. - * modules/getline: Remove file. - * lib/getndelim2.h: Remove file. - * lib/getndelim2.c: Remove file. - * m4/getndelim2.m4: Remove file. - * modules/getndelim2: Remove file. - * Makefile.am (EXTRA_DIST): Remove them. - -2006-10-13 Bruno Haible - - * modules/exitfail.diff: Update. - * modules/quote.diff: Update. - * modules/quotearg.diff: Update. - -2006-10-12 Bruno Haible - - * modules/exitfail: Update. - * modules/quote: Update. - * modules/quotearg: Update. - -2006-10-12 Bruno Haible - - * modules/canonicalize (Makefile.am): Distribute all files in lib/ - through EXTRA_DIST. - * modules/getline (Makefile.am): Likewise. - * modules/getndelim2 (Makefile.am): Likewise. - * modules/relocatable (Makefile.am): Likewise. - -2006-10-02 Bruno Haible - - * modules/gettext-runtime-misc (Makefile.am): Add no-dependencies to - AUTOMAKE_OPTIONS. - * modules/gettext-tools-misc (Makefile.am): Likewise. - -2006-09-29 Bruno Haible - - * lib/closeout.c (close_stdout_status): Remove function. - (close_stdout): Inline it. Call fwriteerror_no_ebadf instead of - fwriteerror. Also close stderr. - -2006-09-14 Bruno Haible - - * lib/addext.c: Include unconditionally. - * lib/backupfile.c: Likewise. - * lib/basename.c: Likewise. - * lib/canonicalize.c: Likewise. - * lib/closeout.c: Likewise. - * lib/error-progname.c: Likewise. - * lib/fstrcmp.c: Likewise. - * lib/getline.c: Likewise. - * lib/getndelim2.c: Likewise. - * lib/hash.c: Likewise. - * lib/propername.c: Likewise. - * lib/relocatable.c: Likewise. - * lib/relocwrapper.c: Likewise. - * lib/vasprintf.c: Likewise. - * lib/xerror.c: Likewise. - * lib/xgetcwd.c: Likewise. - * lib/xmalloc.c: Likewise. - * lib/xreadlink.c: Likewise. - * lib/xstrdup.c: Likewise. - -2006-09-09 Bruno Haible - - * modules/gettext-tools-misc (Makefile.am): Augment lib_LDFLAGS - instead of setting it. - -2006-09-06 Bruno Haible - - * modules/iconvstring: Remove file. - * lib/iconvstring.h: Remove file. - * lib/iconvstring.c: Remove file. - * Makefile.am (EXTRA_DIST): Remove modules/iconvstring, - lib/iconvstring.h, lib/iconvstring.c. - - * lib/propername.c: Include xstriconv.h instead of iconvstring.h. - (convert_name): Remove function. - (proper_name_utf8): Use xstr_iconv instead of convert_name. - * modules/propername: Depend on xstriconv instead of iconvstring. - -2006-08-30 Bruno Haible - - * lib/xerror.h: Don't include error.h. - * lib/xerror.c: Include error.h here. - -2006-08-28 Bruno Haible - - * modules/c-strstr: Remove file, now in gnulib. - * lib/c-strstr.h: Remove file, now in gnulib. - * lib/c-strstr.c: Remove file, now in gnulib. - * Makefile.am (EXTRA_DIST): Remove them. - -2006-08-22 Bruno Haible - - * modules/pathmax.diff: Remove file. - * modules/unlocked-io.diff: Remove file. - * modules/exitfail.diff: Update. - * modules/quote.diff: Update. - * modules/quotearg.diff: Update. - * m4/pathmax.m4.diff: Remove file. - * m4/strdup.m4.diff: Remove file. - * m4/unlocked-io.m4.diff: Remove file. - * m4/exitfail.m4.diff: Update. - * m4/hard-locale.m4.diff: Update. - * m4/quote.m4.diff: Update. - * m4/quotearg.m4.diff: Update. - * Makefile.am (EXTRA_DIST): Remove the removed files. - -2006-08-22 Bruno Haible - - * modules/gettext-tools-misc (Makefile.am): New variable - lib_LTLIBRARIES. - -2006-08-18 Bruno Haible - - * modules/bison-i18n: Remove file. Now taken from gnulib. - * m4/bison-i18n.m4: Remove file. Now taken from gnulib. - * Makefile.am (EXTRA_DIST): Remove them. - -2006-08-16 Bruno Haible - - * modules/gettext-tools-misc (Files): Remove m4/restrict.m4, no longer - in gnulib. - -2006-07-31 Bruno Haible - - * lib/propername.c: Remove temporary hack. - -2006-07-31 Bruno Haible - - * modules/gettext-runtime-misc: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2006-08-02 Bruno Haible - - * Makefile.am: New file. - -2006-07-30 Bruno Haible - - * lib/argmatch.h.diff: New file. - * lib/error.h.diff: New file. - * lib/exitfail.h.diff: New file. - * lib/fnmatch.c.diff: New file. - * lib/fnmatch_loop.c.diff: New file. - * lib/getopt_.h.diff: New file. - * lib/javacomp.c.diff: New file. - * lib/linebreak.c.diff: New file. - * lib/obstack.h.diff: New file. - * lib/progname.h.diff: New file. - * lib/strerror.c.diff: New file. - * m4/exitfail.m4.diff: New file. - * m4/hard-locale.m4.diff: New file. - * m4/pathmax.m4.diff: New file. - * m4/quote.m4.diff: New file. - * m4/quotearg.m4.diff: New file. - * m4/strdup.m4.diff: New file. - * m4/unlocked-io.m4.diff: New file. - * m4/vasprintf.m4: New file. - * modules/backupfile: New file. - * modules/basename: New file. - * modules/bison-i18n: New file. - * modules/c-strstr: New file. - * modules/canonicalize: New file. - * modules/closeout: New file. - * modules/error-progname: New file. - * modules/exitfail.diff: New file. - * modules/fnmatch.diff: New file. - * modules/fstrcmp: New file. - * modules/gcj: New file. - * modules/gen-lbrkprop: New file. - * modules/getline: New file. - * modules/getndelim2: New file. - * modules/gettext-tools-misc: New file. - * modules/hash: New file. - * modules/iconvstring: New file. - * modules/java: New file. - * modules/javacomp.diff: New file. - * modules/pathmax.diff: New file. - * modules/progreloc: New file. - * modules/propername: New file. - * modules/quote.diff: New file. - * modules/quotearg.diff: New file. - * modules/relocatable: New file. - * modules/relocwrapper: New file. - * modules/unlocked-io.diff: New file. - * modules/vasprintf.diff: New file. - * modules/wait-process.diff: New file. - * modules/xalloc: New file. - * modules/xalloc-die: New file. - * modules/xerror: New file. - * modules/xgetcwd: New file. - * modules/xreadlink: New file. - diff -Nru gettext-0.19.6/gnulib-local/ChangeLog.0 gettext-0.19.7/gnulib-local/ChangeLog.0 --- gettext-0.19.6/gnulib-local/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 +++ gettext-0.19.7/gnulib-local/ChangeLog.0 2015-12-08 12:50:05.000000000 +0000 @@ -0,0 +1,1932 @@ +2015-09-11 Daiki Ueno + + * gettext 0.19.6 released. + +2015-07-14 Daiki Ueno + + gnulib-local: Fix Java compilation on mingw + * lib/clean-temp.c.diff: New file, from m4. + Suggested by Eric Blake in: + . + +2015-07-10 Daiki Ueno + + * gettext 0.19.5 released. + +2014-12-24 Daiki Ueno + + * gettext 0.19.4 released. + +2014-12-24 Daiki Ueno + + gnulib-local: Suppress compiler warning with -Wunused + * lib/diffseq.h.diff: New file. + +2014-12-16 Daiki Ueno + + Backport iOS check from Gnulib + * lib/unistd.in.h.diff: Update. + +2014-12-15 Daiki Ueno + + Work around interoperability with preinstalled libunistring + * modules/unilbrk/base.diff: New file; bump minimum version of + unilbrk.h. + +2014-10-15 Daiki Ueno + + * gettext 0.19.3 released. + +2014-10-15 Daiki Ueno + + * tests/test-term-ostream-xterm-basic-italic.out: New file. + * tests/test-term-ostream-xterm: Use it as possible test result. + * modules/term-ostream-tests (Files): Add new file. + * Makefile.am (EXTRA_DIST): Add new file. + Needed for ncurses >= 5.9-20140906 that defines sitm/ritm in the + xterm-basic terminfo definition. + +2014-07-14 Daiki Ueno + + * gettext 0.19.2 released. + +2014-07-14 Daiki Ueno + + Update after gnulib changed. + * lib/execute.c.diff: Update. + * lib/spawn-pipe.c.diff: Update. + +2014-06-10 Daiki Ueno + + * gettext 0.19.1 released. + +2014-06-03 Daiki Ueno + + build: Handle 'environ' global variable differently on cygwin x86_64 + Amendment to commit c97dafde. + * tests/test-environ.c.diff: New file. + * Makefile.am (EXTRA_DIST): Add new patch. + +2014-06-02 Daiki Ueno + + * gettext 0.19 released. + +2014-06-02 Daiki Ueno + + build: Handle 'environ' global variable differently on cygwin x86_64 + Problem reported by Vasyl Khalak in: + . + * lib/execute.c.diff: New file. + * lib/spawn-pipe.c.diff: Likewise. + * Makefile.am (EXTRA_DIST): Add new patches. + +2014-05-14 Daiki Ueno + + Update after gnulib changed. + * modules/regex.diff: Remove. modules/regex no longer depends on + malloc-gnu thus this patch is not needed anymore. + +2014-04-07 Daiki Ueno + + Update after gnulib changed. + * lib/obstack.h.diff: Update. + +2013-08-07 Daiki Ueno + + Update after gnulib changed. + * modules/regex.diff: Update. + +2013-07-21 Daiki Ueno + + Update after gnulib changed. + * lib/localcharset.c.diff: Remove file. + +2013-06-25 Daiki Ueno + + Work around localcharset issue under OS X multi-threaded scenario. + * lib/localcharset.c.diff: New patch originally posted to Gnulib + . + +2013-06-16 Andreas Schwab (tiny change) + + * m4/libxml.m4 (gl_LIBXML): Remove extra quotes. + +2013-06-10 Daiki Ueno + + * modules/libxml: Use $(MKDIR_P) instead of $(mkdir_p). + * modules/libglib: Likewise. + Suggested by Stefano Lattarini in + . + +2013-02-25 Daiki Ueno + + Update after gnulib changed. + * lib/unistd.in.h.diff: Update. + +2013-02-25 Daiki Ueno + + * modules/gettext-runtime-misc (AM_CPPFLAGS): Augment by + INTL_EXPORTS_FLAGS. + +2013-01-03 Daiki Ueno + + Update after gnulib changed. + * modules/regex.diff: Update. + +2012-12-25 Daiki Ueno + + * gettext-0.18.2 released. + +2012-12-25 Daiki Ueno + + Work around error_* symbol conflict with Cygwin 1.7 DLL. + * lib/error.h.diff: Rename the error_* symbol if + GNULIB_REPLACE_ERROR is defined. + +2012-12-12 Daiki Ueno + + Add notice about included external libraries. + As per "External Libraries" in the (maintain) manual. + * lib/glib/README: New file. + * lib/libcroco/README: New file. + * lib/libxml/README: New file. + * Makefile.am (EXTRA_DIST): Add them. + +2012-07-11 Paul Eggert + + Do not assume '#define ... defined ...' behavior. + * lib/gettext.h (_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS): + Do not use '#define FOO ... defined BAR ...', as the C standard says + it's not portable to expect that this works after macro expansion. + Problem reported for gzip by Steven M. Schweda in + . + +2012-06-03 Jim Meyering + + * lib/tparm.c: Spelling fixes. + +2012-02-17 Bruno Haible + + Update after gnulib changed. + * lib/exitfail.h.diff: Update. + +2012-01-26 Bruno Haible + + Modernize quoting. + * lib/backupfile.c: Quote 'like this', not `like this', as per the + recent change to the GNU coding standards. + * lib/basename.c: Likewise. + * lib/closeout.c: Likewise. + * lib/xmalloc.c: Likewise. + +2012-01-06 Bruno Haible + + Update after gnulib changed. + * lib/argmatch.h.diff: Update. + * lib/error.h.diff: Update. + * lib/fnmatch_loop.c.diff: Update. + * lib/getopt.in.h.diff: Update. + * lib/obstack.h.diff: Update. + +2011-10-18 Daniel Richard G. (tiny change) + + Support for old NeXTstep 3.3 gcc. + * lib/gettext.h (_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS): Write + 'defined __STRICT_ANSI__', not '__STRICT_ANSI__'. + +2011-09-12 Bruno Haible + + Update after gnulib changed. + * modules/backupfile (Depends-on): Add opendir, readdir, + closedir. + +2011-08-12 Bruno Haible + + Comment. + * m4/libxml.m4 (gl_LIBXML): Add comment about Cygwin 1.7. + +2011-08-04 Bruno Haible + + Update after gnulib changed. + * lib/xgetcwd.c (PATH_MAX): Provide a fallback value. + +2011-07-12 Bruno Haible + + Update after gnulib changed. + * modules/fnmatch.diff: Update. + +2011-06-16 Bruno Haible + + Update after gnulib changed. + * m4/quote.m4.diff: Remove file. + * m4/quotearg.m4.diff: Remove file. + * modules/quote.diff: Remove file. + * modules/quotearg.diff: Remove file. + * Makefile.am (EXTRA_DIST): Remove them. + +2011-06-03 Bruno Haible + + libxml: Detect installed libxml2 versions which don't define xmlFree(). + * m4/libxml.m4 (gl_LIBXML): Also try linking an xmlFree() invocation. + +2011-06-03 Bruno Haible + + Copyright: Use LGPL 2.1 instead of LGPL 2.0. + * lib/gettext.h: Update copyright header. + * lib/hash.h: Likewise. + * lib/moo.h: Likewise. + * lib/tparm.c: Likewise. + * lib/tputs.c: Likewise. + +2011-06-02 Bruno Haible + + Update after gnulib changed. + * modules/fnmatch.diff: Update. + * modules/regex.diff: Likewise. + * m4/alloca.m4 (gl_FUNC_ALLOCA): Likewise. + +2011-02-12 Bruno Haible + + Prefer gnulib's setlocale override over libintl's override. + * lib/gettext.h (setlocale): Redefine to rpl_setlocale if + GNULIB_defined_setlocale is set. + +2011-02-12 Bruno Haible + + Update after gnulib changed. + * modules/fnmatch.diff: Update. + +2010-03-25 Bruno Haible + + Minor formatting changes. + * lib/gettext.h: Insert space before function argument list. + +2010-11-20 Bruno Haible + + Port to uClibc. + * lib/basename.h: Treat uClibc like glibc. + * lib/basename.c: Likewise. + * lib/iconv-ostream.oo.c (iconv_ostream::write_mem, + iconv_ostream::free, iconv_ostream_create): Likewise. + +2010-11-20 Bruno Haible + + Port to uClibc. + * lib/gettext.h: Treat uClibc like a non-glibc platform. + Reported by Mike Frysinger . + +2010-10-10 Bruno Haible + + Rely more on libtool. + * modules/gettext-tools-misc (Makefile.am): Remove @LTLIBC@ flag from + libgettextlib_la_LDFLAGS, relying more on libtool. Remove @LTNOUNDEF@ + flag from libgettextlib_la_LDFLAGS, now generated by gnulib-tool. + +2010-10-10 Bruno Haible + + * modules/gettext-tools-misc (Makefile.am): Remove flags from + libgettextlib_la_LDFLAGS that are now generated by gnulib-tool. + +2010-08-29 Bruno Haible + + * modules/regex.diff: Update after gnulib changed. + +2010-06-04 Bruno Haible + + * gettext-0.18.1 released. + +2010-05-19 Bruno Haible + + Link with libunistring, if it exists. + * modules/gettext-tools-misc (lib_LDFLAGS): Add LTLIBUNISTRING. + +2010-05-24 Bruno Haible + + Use the newest regex module from gnulib. + * modules/gettext-tools-misc (Files): Remove m4/mbrtowc.m4 and + m4/memchr.m4. + +2010-05-24 Bruno Haible + + Use regex module without dependency on 'malloc'. + * lib/regex_internal.h.diff: New file. + * lib/regexec.c.diff: New file. + * modules/regex.diff: New file. + * Makefile.am (EXTRA_DIST): Add them. + +2010-05-23 Bruno Haible + + Do regex matching purely with regex, not regex + dfa + kwset. + * modules/gettext-tools-misc (Files): Remove m4/hard-locale.m4. + +2010-05-09 Bruno Haible + + * gettext-0.18 released. + +2010-05-09 Bruno Haible + + Avoid test suite failure on mingw. + * tests/test-term-ostream-xterm: Convert CR/LF to LF before comparing. + +2010-05-09 Bruno Haible + + Export rpl_optind, rpl_optarg from DLL depending on platform. + * modules/gettext-tools-misc (AM_CPPFLAGS): Augment by + GETTEXTLIB_EXPORTS_FLAGS. + +2010-05-09 Bruno Haible + + Avoid compilation error in libgettextpo directory on Solaris 8. + * lib/unistd.in.h.diff: New file. + * Makefile.am (EXTRA_DIST): Add it. + +2010-03-28 Bruno Haible + + * modules/closeout (Depends-on): Add stdlib, remove exit. + * modules/fd-ostream (Depends-on): Likewise. + * modules/html-styled-ostream (Depends-on): Likewise. + * modules/iconv-ostream (Depends-on): Likewise. + * modules/memory-ostream (Depends-on): Likewise. + * modules/term-ostream (Depends-on): Likewise. + * modules/xalloc (Depends-on): Likewise. + +2010-03-06 Bruno Haible + + * m4/exitfail.m4.diff: Remove file. + * modules/exitfail.diff: Remove file. + * Makefile.am (EXTRA_DIST): Remove them. + +2010-02-19 Bruno Haible + + * modules/wait-process.diff: Remove trailing space. + +2010-01-14 Bruno Haible + + Use full 'vasnprintf' module from gnulib. The reduced one did not + support NULL arguments. + * lib/vasprintf.c: Remove file. + * m4/vasprintf.m4: Remove file. + * modules/vasprintf.diff: Remove file. + * Makefile.am (EXTRA_DIST): Remove them. + Reported by LRN at . + +2010-01-11 Bruno Haible + + * modules/html-ostream (Depends-on): Remove utf8-ucs4. Instead add + unistr/u8-mbtouc. + +2009-12-25 Bruno Haible + + * lib/html-ostream.oo.c: Include gl_xlist.h instead of gl_list.h. + * modules/html-ostream (Depends-on): Add xlist. Remove list. + +2009-12-12 Bruno Haible + + * lib/*.h, lib/*.c: Untabify. + * m4/unionwait.m4: Untabify. + * tests/*.c: Untabify. + +2009-12-12 Bruno Haible + + * lib/fnmatch_loop.c.diff: Update after gnulib changed. + +2009-08-15 Bruno Haible + + Stop using gnulib module 'strdup'. + * modules/gettext-tools-misc (Files): Remove m4/strdup.m4. + +2009-08-10 Bruno Haible + + Avoid gcc warning on Cygwin. + * lib/html-ostream.oo.c (html_ostream::write_mem): Change type of local + variable 'uc'. + +2009-05-23 Bruno Haible + + Avoid gcc warning "cast from pointer to integer of different size". + * lib/glibconfig.in.h (GPOINTER_TO_INT, GINT_TO_POINTER): Cast through + intptr_t. + (GPOINTER_TO_UINT, GUINT_TO_POINTER: Cast through uintptr_t. + +2009-05-01 Bruno Haible + + Avoid compiler warnings when redefining macros defined by . + * lib/gettext.h [!ENABLE_NLS] (gettext, dgettext, dcgettext, ngettext, + dngettext, dcngettext, textdomain, bindtextdomain, + bind_textdomain_codeset): Undefine before redefining. + +2009-03-25 Bruno Haible + + * m4/quotearg.m4.diff: Update after gnulib changed. + +2008-12-18 Bruno Haible + + * modules/gettext-tools-misc (Files): Add m4/locale-ja.m4. + +2008-12-07 Bruno Haible + + Avoid gcc -Wmissing-prototypes warnings. + * lib/html-ostream.oo.c: Mark all method implementations as static. + * lib/term-ostream.oo.c: Likewise. + +2008-12-07 Bruno Haible + + Avoid gcc -Wmissing-prototypes warnings. + * build-aux/moopp (func_emit_source_c): Emit a prototype before the + synthetized functions. + +2008-09-14 Bruno Haible + + * modules/libxml: Use $(mkdir_p) to create the libxml directory. + * modules/libglib: Use $(mkdir_p) to create the glib directory. + Suggested by Ralf Wildenhues . + +2008-09-14 Bruno Haible + + * modules/libglib (Depends-on): Add strerror. + +2008-08-16 Bruno Haible + + Recognize installed libxml2 version 2.6.x. + * m4/libxml.m4 (gl_LIBXML): Determine libxml2_include_dir by looking + for as well. + Reported by Steve Trotman + via . + +2008-05-18 Bruno Haible + + * modules/propername: Remove file, moved to gnulib. + * lib/propername.h: Remove file, moved to gnulib. + * lib/propername.c: Remove file, moved to gnulib. + * Makefile.am (EXTRA_DIST): Remove them. + +2008-05-18 Bruno Haible + + * lib/propername.c: Include , , trim.h, mbchar.h, + mbuiter.h. Don't include c-strstr.h. + (mbsstr_trimmed_wordbounded): New function. + (proper_name, proper_name_utf8): Use it instead of mbsstr or c_strstr. + * modules/propername (Depends-on): Add stdbool, trim, mbchar, mbuiter. + Remove c-strstr. + Reported by Paul Eggert . + +2008-05-18 Bruno Haible + + * modules/propername (Notice): New field. + (configure.ac): Invoke AM_GETTEXT_OPTION. + * lib/propername.h: Add more comments. + Reported by Ben Pfaff . + +2008-05-11 Bruno Haible + + * lib/gen-lbrkprop.c: Move to gnulib as lib/unilbrk/gen-lbrk.c. + * lib/3level.h: Remove file. + * modules/gen-lbrkprop: Move to gnulib as modules/unilbrk/gen-lbrk. + * Makefile.am (EXTRA_DIST): Remove lib/gen-lbrkprop.c, lib/3level.h, + modules/gen-lbrkprop. + +2008-05-11 Bruno Haible + + * lib/gen-lbrkprop.c (output_lbp): Output to two different streams. + (output_tables): Accept two filename arguments. + (main): Generate lbrkprop1.h and lbrkprop2.h instead of lbrkprop.h. + + * lib/gen-lbrkprop.c (unicode_combining): Remove variable. + (fill_combining): Remove function. + (main): Take one argument less. + * lib/Combining.txt: Remove file. + * modules/gen-lbrkprop (Files): Remove Combining.txt. + * Makefile.am (EXTRA_DIST): Likewise. + + * lib/gen-lbrkprop.c: Change copyright to GPLv3+. + (output_tables): Emit a GPLv3+ header. + +2008-05-10 Bruno Haible + + * lib/linebreak.c.diff: Remove file. + * Makefile.am (EXTRA_DIST): Remove it. + +2008-01-13 Bruno Haible + + New configure option --disable-curses. + * m4/curses.m4: New file. + * m4/termcap.m4 (gl_TERMCAP_BODY): Require gl_CURSES and consider its + result. + * m4/terminfo.m4 (gl_TERMINFO_BODY): Likewise. + * modules/termcap (Files): Add m4/curses.m4. + * modules/terminfo (Files): Likewise. + * Makefile.am (EXTRA_DIST): Add m4/curses.m4. + +2007-11-09 Bruno Haible + + * m4/libglib.m4 (gl_LIBGLIB): Ensure that the is from a glib + version >= 2.0. + Reported by Paul Eggert . + +2007-11-07 Bruno Haible + + * gettext-0.17 released. + +2007-10-27 Bruno Haible + + * modules/libcroco (Makefile.am): When using the preinstalled libcroco, + add INCCROCO to AM_CPPFLAGS. + * lib/term-styled-ostream.oo.c: Work around broken double-inclusion + guard in libcroco-0.6.1. + +2007-10-27 Bruno Haible + + * modules/gettext-tools-misc (Makefile.am): Use @LTLIBC@ instead of + hardcoding -lc. Needed for HP-UX 11. + +2007-10-27 Bruno Haible + + * tests/test-term-ostream-xterm-linux-debian.out: New file. + * tests/test-term-ostream-xterm-linux-mandriva.out: New file. + * tests/test-term-ostream-xterm: Use them as possible test results. + * modules/term-ostream-tests (Files): Add the new files. + * Makefile.am (EXTRA_DIST): Add the new files. + Needed on Mandriva Linux Corporate Server release 2006.0 and + Debian 4.0.0. + +2007-10-27 Bruno Haible + + * tests/test-term-ostream-xterm-netbsd3.out: New file. + * tests/test-term-ostream-xterm: Use it as possible test result. + * modules/term-ostream-tests (Files): Add it. + * Makefile.am (EXTRA_DIST): Add it. + +2007-10-26 Bruno Haible + + * modules/libxml (Depends-on): Add snprintf, vsnprintf. Needed for + OSF/1 4.0. + +2007-10-25 Bruno Haible + + * tests/test-term-ostream-xterm: Redirect stderr into a pipe. + * tests/test-term-ostream-xterm-aix51.out: Remove padding. + +2007-10-21 Bruno Haible + + * tests/test-term-ostream-xterm-solaris10.out: New file. + * tests/test-term-ostream-xterm-aix51.out: New file. + * tests/test-term-ostream-xterm-osf51.out: New file. + * tests/test-term-ostream-xterm-irix65.out: New file. + * tests/test-term-ostream-xterm-mingw.out: New file. + * tests/test-term-ostream-xterm: Use them as possible test results. + * modules/term-ostream-tests (Files): Add the new files. + * Makefile.am (EXTRA_DIST): Add the new files. + +2007-10-17 Bruno Haible + + * lib/gl_array_list.h.diff: New file. + * lib/gl_linkedhash_list.h.diff: New file. + * Makefile.am (EXTRA_DIST): Add them. + +2007-10-07 Bruno Haible + + * build-aux/moopp (func_version): In the --version output, say GPLv3+. + +2007-10-06 Bruno Haible + + * tests/test-term-ostream-xterm-r6.out: New file. + * tests/test-term-ostream-xterm-xf86-v32.out: New file. + * tests/test-term-ostream-xterm-basic.out: New file. + * tests/test-term-ostream-xterm-8bit.out: New file. + * tests/test-term-ostream-xterm.out: Remove file. + * tests/test-term-ostream-xterm: Test against 4 possible expected + results. + * modules/term-ostream-tests (Files): Replace + tests/test-term-ostream-xterm.out with + tests/test-term-ostream-xterm-*.out. + * Makefile.am (EXTRA_DIST): Update. + +2007-03-30 Bruno Haible + + * alloca.in.h: Change prefix of double-inclusion guard macro to _GL_. + +2006-06-19 Paul Eggert + + * alloca.in.h (alloca) [defined alloca]: Don't define or declare. + +2007-10-04 Bruno Haible + + * lib/libxml/c14n.in.h: Renamed from lib/libxml/c14n_.h. + * lib/libxml/catalog.in.h: Renamed from lib/libxml/catalog_.h. + * lib/libxml/chvalid.in.h: Renamed from lib/libxml/chvalid_.h. + * lib/libxml/debugXML.in.h: Renamed from lib/libxml/debugXML_.h. + * lib/libxml/dict.in.h: Renamed from lib/libxml/dict_.h. + * lib/libxml/DOCBparser.in.h: Renamed from lib/libxml/DOCBparser_.h. + * lib/libxml/encoding.in.h: Renamed from lib/libxml/encoding_.h. + * lib/libxml/entities.in.h: Renamed from lib/libxml/entities_.h. + * lib/libxml/globals.in.h: Renamed from lib/libxml/globals_.h. + * lib/libxml/hash.in.h: Renamed from lib/libxml/hash_.h. + * lib/libxml/HTMLparser.in.h: Renamed from lib/libxml/HTMLparser_.h. + * lib/libxml/HTMLtree.in.h: Renamed from lib/libxml/HTMLtree_.h. + * lib/libxml/list.in.h: Renamed from lib/libxml/list_.h. + * lib/libxml/nanoftp.in.h: Renamed from lib/libxml/nanoftp_.h. + * lib/libxml/nanohttp.in.h: Renamed from lib/libxml/nanohttp_.h. + * lib/libxml/parser.in.h: Renamed from lib/libxml/parser_.h. + * lib/libxml/parserInternals.in.h: Renamed from lib/libxml/parserInternals_.h. + * lib/libxml/pattern.in.h: Renamed from lib/libxml/pattern_.h. + * lib/libxml/relaxng.in.h: Renamed from lib/libxml/relaxng_.h. + * lib/libxml/SAX2.in.h: Renamed from lib/libxml/SAX2_.h. + * lib/libxml/SAX.in.h: Renamed from lib/libxml/SAX_.h. + * lib/libxml/schemasInternals.in.h: Renamed from lib/libxml/schemasInternals_.h. + * lib/libxml/schematron.in.h: Renamed from lib/libxml/schematron_.h. + * lib/libxml/threads.in.h: Renamed from lib/libxml/threads_.h. + * lib/libxml/tree.in.h: Renamed from lib/libxml/tree_.h. + * lib/libxml/uri.in.h: Renamed from lib/libxml/uri_.h. + * lib/libxml/valid.in.h: Renamed from lib/libxml/valid_.h. + * lib/libxml/xinclude.in.h: Renamed from lib/libxml/xinclude_.h. + * lib/libxml/xlink.in.h: Renamed from lib/libxml/xlink_.h. + * lib/libxml/xmlautomata.in.h: Renamed from lib/libxml/xmlautomata_.h. + * lib/libxml/xmlerror.in.h: Renamed from lib/libxml/xmlerror_.h. + * lib/libxml/xmlexports.in.h: Renamed from lib/libxml/xmlexports_.h. + * lib/libxml/xmlIO.in.h: Renamed from lib/libxml/xmlIO_.h. + * lib/libxml/xmlmemory.in.h: Renamed from lib/libxml/xmlmemory_.h. + * lib/libxml/xmlmodule.in.h: Renamed from lib/libxml/xmlmodule_.h. + * lib/libxml/xmlreader.in.h: Renamed from lib/libxml/xmlreader_.h. + * lib/libxml/xmlregexp.in.h: Renamed from lib/libxml/xmlregexp_.h. + * lib/libxml/xmlsave.in.h: Renamed from lib/libxml/xmlsave_.h. + * lib/libxml/xmlschemas.in.h: Renamed from lib/libxml/xmlschemas_.h. + * lib/libxml/xmlschemastypes.in.h: Renamed from lib/libxml/xmlschemastypes_.h. + * lib/libxml/xmlstring.in.h: Renamed from lib/libxml/xmlstring_.h. + * lib/libxml/xmlunicode.in.h: Renamed from lib/libxml/xmlunicode_.h. + * lib/libxml/xmlversion.in.h: Renamed from lib/libxml/xmlversion_.h. + * lib/libxml/xmlwriter.in.h: Renamed from lib/libxml/xmlwriter_.h. + * lib/libxml/xpath.in.h: Renamed from lib/libxml/xpath_.h. + * lib/libxml/xpathInternals.in.h: Renamed from lib/libxml/xpathInternals_.h. + * lib/libxml/xpointer.in.h: Renamed from lib/libxml/xpointer_.h. + * modules/libxml (Files, Makefile.am): Update. + * Makefile.am (EXTRA_DIST): Update. + + * lib/glib/ghash.in.h: Renamed from lib/glib/ghash_.h. + * lib/glib/glist.in.h: Renamed from lib/glib/glist_.h. + * lib/glib/gprimes.in.h: Renamed from lib/glib/gprimes_.h. + * lib/glib/gstrfuncs.in.h: Renamed from lib/glib/gstrfuncs_.h. + * lib/glib/gstring.in.h: Renamed from lib/glib/gstring_.h. + * lib/glib/gtypes.in.h: Renamed from lib/glib/gtypes_.h. + * lib/glib.in.h: Renamed from lib/glib_.h. + * lib/glibconfig.in.h: Renamed from lib/glibconfig_.h. + * modules/libglib (Files, Makefile.am): Update. + * Makefile.am (EXTRA_DIST): Update. + + * lib/getopt.in.h.diff: Renamed from lib/getopt_.h.diff. + * Makefile.am (EXTRA_DIST): Update. + + * lib/alloca.in.h: Renamed from lib/alloca_.h. + * Makefile.am (EXTRA_DIST): Update. + +2007-10-01 Bruno Haible + + * tests/test-term-ostream-xterm.out: Update expected result after + code changes on 2006-12-23. + +2007-09-29 Bruno Haible + + * modules/fnmatch.diff: Update. + +2007-09-26 Bruno Haible + + * lib/vasprintf.c (int_vasprintf): Pass the args as a va_list, + not as a 'va_list *'. Needed on x86_64-linux, where va_list is an + array type: taking the address of a parameter of type va_list does + not yield a 'va_list *'. We have to assume that platforms where + passing a va_list by reference is useful (either because va_end is + not a no-op or because sizeof(va_list) is large) have already defined + va_list to an array type; no need to try to enforce passing by + reference. + Reported by Cristian Baboi . + +2007-09-24 Bruno Haible + + * lib/vasprintf.c (int_vasprintf): Use va_copy and va_end. + * modules/vasprintf.diff: Add dependency to stdarg. + Reported by Cristian Baboi . + +2007-09-01 Bruno Haible + + * lib/linebreak.c.diff: Update. + +2007-08-18 Bruno Haible + + * modules/fstrcmp: Remove file, moved to gnulib. + * lib/fstrcmp.h: Remove file, moved to gnulib. + * lib/fstrcmp.c: Remove file, moved to gnulib. + * lib/diffseq.h: Remove file, moved to gnulib. + * Makefile.am (EXTRA_DIST): Remove them. + +2007-07-01 Bruno Haible + + * build-aux/moopp (func_version): Use the standard --version output, + see + . + +2007-05-13 Bruno Haible + + * m4/vasprintf.m4 (gl_REPLACE_VASPRINTF, gl_PREREQ_VASPRINTF_H): New + macros, partially copied from gnulib. + (gl_FUNC_VASPRINTF): Copied from gnulib. + +2007-05-13 Bruno Haible + + * lib/vasprintf.c: Include stdio.h instead of vasprintf.h. + * lib/glibconfig_.h: Likewise. + +2007-05-13 Bruno Haible + + * modules/vasprintf.diff: Update. + * lib/linebreak.c.diff: Update. + +2007-05-01 Bruno Haible + + * lib/term-ostream.oo.c: Don't include sigprocmask.h. + +2007-03-24 Bruno Haible + + * lib/html-ostream.oo.c: Include unistr.h instead of utf8-ucs4.h. + +2007-03-16 Bruno Haible + + * lib/html-ostream.oo.c (html_ostream_create): Update after signature + of gl_list_create_empty changed. + +2007-03-04 Bruno Haible + + * lib/propername.c (proper_name, proper_name_utf8): Use mbsstr instead + of strstr. + * modules/propername (Depends-on): Remove strstr. Add mbsstr. + +2007-03-04 Bruno Haible + + Moved --enable-relocatable infrastructure to gnulib. + * modules/gettext-tools-libgettextpo-misc: Remove file. + * modules/progreloc: Remove file. + * modules/relocatable: Remove file. + * modules/relocwrapper: Remove file. + * lib/strerror.c.diff: Remove file. + * Makefile.am (EXTRA_DIST): Remove these files. + +2007-02-28 Bruno Haible + + Move relocatability infrastructure to gnulib. + * lib/relocatable.c: Remove file. + * lib/relocatable.h: Remove file. + * lib/relocwrapper.c: Remove file. + * m4/relocatable.m4: Remove file. + * Makefile.am (EXTRA_DIST): Remove these files. + +2007-02-28 Bruno Haible + + Move module xreadlink to gnulib. + * modules/xreadlink: Remove file. + * lib/xreadlink.h: Remove file. + * lib/xreadlink.c: Remove file. + * m4/xreadlink.m4: Remove file. + * Makefile.am (EXTRA_DIST): Remove these files. + +2007-02-19 Bruno Haible + + * lib/closeout.c: Include instead of exit.h. + * lib/fd-ostream.oo.c: Don't include exit.h. + * lib/html-styled-ostream.oo.c: Include instead of exit.h. + * lib/iconv-ostream.oo.c: Don't include exit.h. + * lib/memory-ostream.oo.c: Likewise. + * lib/term-ostream.oo.c: Likewise. + * lib/xmalloc.c: Likewise. + +2007-02-12 Bruno Haible + + * modules/gettext-tools-misc (Files): Add m4/locale-fr.m4. + +2007-02-01 Bruno Haible + + * modules/gettext-tools-misc (Makefile.am): Add @LIB_ACL@ to + lib_LDFLAGS. + Reported by Ralf Wildenhues . + +2007-01-28 Bruno Haible + + * lib/linebreak.c.diff: Update. + +2007-01-27 Bruno Haible + + Move a patch to gnulib. + * lib/javacomp.c.diff: Remove file. + * modules/javacomp.diff: Remove file. + * Makefile.am (EXTRA_DIST): Remove them. + +2007-01-26 Bruno Haible + + * lib/propername.c: Don't include strstr.h, use instead. + +2007-01-12 Bruno Haible + + * lib/xreadlink.c (xreadlink): Handle an ERANGE error. Needed for + AIX and HP-UX. Based on a gnulib patch from Paul Eggert on 2004-11-03. + +2006-12-23 Bruno Haible + + * term-ostream.oo.c (out_attr_change): Consider the side effects of + exit_attribute_mode: Turn off all attributes before turning on others. + Also re-enable the colors after turning off attributes. + +2006-12-23 Bruno Haible + + * build-aux/moopp (func_emit_source_h, func_emit_source_c): Accept the + newfile_base as second argument. Emit #line directives without a + directory. + +2006-12-22 Bruno Haible + + * modules/html-styled-ostream (Makefile.am) [WOE32DLL]: Use a C++ + wrapper file. + * modules/term-styled-ostream (Makefile.am) [WOE32DLL]: Likewise. + +2006-12-22 Bruno Haible + + Test for CC=c++ at configure-time. + * m4/moo.m4: New file. + * build-aux/moopp: Emit test of IS_CPLUSPLUS instead of __cplusplus. + * modules/moo (Files): Add m4/moo.m4. + (configure.ac): Set to gl_MOO. + * Makefile.am (EXTRA_DIST): Add m4/moo.m4. + +2006-12-23 Bruno Haible + + Support platforms with neither terminfo nor termcap functions, like + mingw. + * lib/tputs.c: New file. + + * modules/termcap (Files): Add lib/tputs.c. + * m4/termcap.m4 (gl_TERMCAP): Add tputs replacement. + (gl_TERMCAP_BODY): Define HAVE_TERMCAP if tgetent is available. + * lib/termcap.h (tgetent, tgetnum, tgetflag, tgetstr): Declare only + if HAVE_TERMCAP. + (tgoto): Declare only if HAVE_TERMCAP || HAVE_TERMINFO. + + * modules/terminfo (Files): Add lib/tputs.c. + * m4/terminfo.m4 (gl_TERMINFO): Add tputs replacement. + (gl_TERMINFO_BODY): Define HAVE_TERMCAP if tgetent is available. + * lib/terminfo.h (tgetent, tgetnum, tgetflag, tgetstr): Declare only + if HAVE_TERMCAP. + (tgoto): Declare only if HAVE_TERMINFO || HAVE_TERMCAP. + + * lib/term-ostream.oo.c (term_ostream_create): Use ANSI color escape + sequences when neither terminfo nor termcap functions exist. + * Makefile.am (EXTRA_DIST): Add lib/tputs.c. + +2006-12-23 Bruno Haible + + Improve cross-compilation support. + * m4/gcj.m4 (gt_GCJ): Use AC_CHECK_TOOL instead of AC_CHECK_PROGS. + +2006-12-23 Bruno Haible + + * lib/term-ostream.oo.c (term_ostream_create): Fix up the + no_color_video value for cygwin. + +2006-12-22 Bruno Haible + + Move no-c++ module to gnulib. + * modules/no-c++: Remove file. + * m4/no-c++.m4: Remove file. + * Makefile.am (EXTRA_DIST): Remove them. + +2006-12-21 Bruno Haible + + * modules/gettext-tools-misc (Makefile.am): Move modifications of + AUTOMAKE_OPTIONS, AM_CPPFLAGS and settings of gettextsrcdir, + gettextsrc_DATA, pkgdatadir to ../gettext-tools/gnulib-lib/Makefile.am. + +2006-12-21 Bruno Haible + + * build-aux/moopp (func_usage, func_version): New functions. + (dllexports): New variable. + Parse command-line options. + (func_emit_source_h): Emit DLL_VARIABLE marks if the class is to be + exported. + +2006-12-21 Bruno Haible + + * modules/moo (Makefile.am): Declare MOOPPFLAGS. + * modules/moo-tests (Makefile.am): Pass the MOOPPFLAGS to every moopp + invocation. + * modules/ostream (Makefile.am): Likewise. + * modules/fd-ostream (Makefile.am): Likewise. + * modules/file-ostream (Makefile.am): Likewise. + * modules/html-ostream (Makefile.am): Likewise. + * modules/iconv-ostream (Makefile.am): Likewise. + * modules/memory-ostream (Makefile.am): Likewise. + * modules/term-ostream (Makefile.am): Likewise. + * modules/styled-ostream (Makefile.am): Likewise. + * modules/html-styled-ostream (Makefile.am): Likewise. + * modules/term-styled-ostream (Makefile.am): Likewise. + +2006-12-21 Bruno Haible + + * lib/diffseq.h (diag, compareseq): Use the EQUAL macro. + +2006-12-19 Bruno Haible + + * m4/libxml.m4 (gl_LIBXML): Check for arpa/nameser.h and resolv.h + with some prerequisite headers. Needed for AIX 4.3.2. + +2006-12-19 Bruno Haible + + * lib/term-ostream.oo.c (term_ostream_create): Add color information + about xterm if the platform lacks it. + +2006-12-19 Bruno Haible + + * lib/term-ostream.oo.c: Include terminfo.h instead of termcap.h. + * modules/term-ostream (Depends-on): Add terminfo-h, remove termcap-h. + +2006-12-19 Bruno Haible + + * lib/terminfo.h: New file. + * modules/terminfo-h: New file. + * Makefile.am (EXTRA_DIST): Add them. + +2006-12-19 Bruno Haible + + * m4/terminfo.m4: New file. + * modules/terminfo: New file. + * Makefile.am (EXTRA_DIST): Add them. + +2006-12-19 Bruno Haible + + * m4/termcap.m4 (gl_TERMCAP, gl_TERMCAP_BODY): Rename cache variables. + +2006-12-17 Bruno Haible + + * lib/diffseq.h: New file, extracted from fstrcmp.c and GNU diff's + analyze.c. + * lib/fstrcmp.c: Use it. + * modules/fstrcmp (Files): Add lib/diffseq.h. + +2006-12-17 Bruno Haible + + * lib/fstrcmp.c: Make generic. + (EXTRA_CONTEXT_FIELDS, NOTE_DELETE, NOTE_INSERT): New macros. + +2006-10-07 Bruno Haible + + * lib/fstrcmp.c: Include minmax.h. + * modules/fstrcmp (Depends-on): Add minmax. + + * lib/fstrcmp.c (IF_LINT): New macro. + + * lib/fstrcmp.c: Make comments and variable syntax closer to GNU + diff's analyze.c. + + * lib/fstrcmp.c: Fix FSF address in copyright header. + + * lib/fstrcmp.c: Rename macro MINUS_H_FLAG to USE_HEURISTIC. Use bool. + + * lib/fstrcmp.c: Update comments. Talk about vectors instead of + strings, and about elements instead of characters. + + * lib/fstrcmp.c: Make generic. + (OFFSET_MAX): New macro. + + * lib/fstrcmp.c: Modernize the coding style. + + * lib/fstrcmp.c: Include . Use bool where appropriate. + Rename 'minimal' to 'find_minimal'. + + * lib/fstrcmp.c: Make generic. + (ELEMENT, EQUAL, OFFSET): New macros. + +2006-12-17 Bruno Haible + + * lib/fstrcmp.c (diag): Change return type to void. + (compareseq): Remove verification that the change count is > 1. + +2006-12-16 Bruno Haible + + * m4/termcap.m4 (gl_TERMCAP_BODY): Also test for the terminfo + functions. + * lib/termcap.h (setupterm, tigetnum, tigetflag, tigetstr): New + declarations. + * lib/term-ostream.oo.c (xstrdup0) [HAVE_TERMINFO]: Handle (char*)-1 + return value from tigetstr. + (term_ostream_create) [HAVE_TERMINFO]: Prefer the terminfo API. + +2006-12-16 Bruno Haible + + * lib/term-ostream.oo.c (term_ostream_create): Fix tgetstr argument + for stream->no_color_video. + +2006-12-16 Bruno Haible + + * lib/term-ostream.oo.c (term_ostream_create): Don't ignore tgetent's + return value. + +2006-12-16 Bruno Haible + + * lib/libcroco/cr-style.h (enum CRPositionType): Remove trailing + comma. Needed for compilation on AIX with xlc. + +2006-12-16 Bruno Haible + + * modules/libxml (Depends-on): Add stdarg. + * m4/libxml.m4 (gl_LIBXML): Define VA_COPY, needed for xmlwriter.c. + +2006-12-16 Bruno Haible + + * lib/libxml/xmlwriter.c: Include libxml.h first, not after string.h. + +2006-12-13 Bruno Haible + + * build-aux/moopp: Add check for GNU sed. Generate the 4 files in the + source directory, not in the current directory. + * modules/ostream (Makefile.am): Test for the .h file in the source + directory, not in the current directory. Augment MAINTAINERCLEANFILES + and EXTRA_DIST, not CLEANFILES. + * modules/fd-ostream (Makefile.am): Likewise. + * modules/file-ostream (Makefile.am): Likewise. + * modules/html-ostream (Makefile.am): Likewise. + * modules/iconv-ostream (Makefile.am): Likewise. + * modules/memory-ostream (Makefile.am): Likewise. + * modules/term-ostream (Makefile.am): Likewise. + * modules/styled-ostream (Makefile.am): Likewise. + * modules/html-styled-ostream (Makefile.am): Likewise. + * modules/term-styled-ostream (Makefile.am): Likewise. + +2006-12-13 Bruno Haible + + Avoid crash on NetBSD. + * lib/term-ostream.oo.c (term_ostream_create): Pass a non-NULL area + pointer to tgetstr. + +2006-12-13 Bruno Haible + + * lib/tparm.c: New file, based on a public-domain implementation part + of Cygwin. + * m4/termcap.m4 (gl_TERMCAP): AC_LIBOBJ of tparm.c if needed. + (gl_TERMCAP_BODY): Test whether the system has tparm(). + * modules/termcap (Files): Add lib/tparm.c. + (Depends-on): Add c-ctype. + * Makefile.am (EXTRA_DIST): Add lib/tparm.c. + +2006-12-13 Bruno Haible + + * modules/termcap-h (Include): Add termcap.h. + +2006-12-13 Bruno Haible + + * build-aux/moopp (sed_remove_comments): Fix handling of character + constants. Example: '"' /* comment */ '"' + (sed_remove_comments_ERE): New variable. + +2006-12-13 Bruno Haible + + * modules/ostream (Makefile.am): List all generated files in the moopp + rule. + * modules/fd-ostream (Makefile.am): Likewise. + * modules/file-ostream (Makefile.am): Likewise. + * modules/html-ostream (Makefile.am): Likewise. + * modules/iconv-ostream (Makefile.am): Likewise. + * modules/memory-ostream (Makefile.am): Likewise. + * modules/term-ostream (Makefile.am): Likewise. + * modules/styled-ostream (Makefile.am): Likewise. + * modules/html-styled-ostream (Makefile.am): Likewise. + * modules/term-styled-ostream (Makefile.am): Likewise. + +2006-12-12 Bruno Haible + + Fix moopp rules for parallel make. + * build-aux/moopp: Generate source.h first and source.c last. + * modules/ostream (Makefile.am): Rewrite the moopp rule so that all + generated files depend on the generated .h file. + * modules/fd-ostream (Makefile.am): Likewise. + * modules/file-ostream (Makefile.am): Likewise. + * modules/html-ostream (Makefile.am): Likewise. + * modules/iconv-ostream (Makefile.am): Likewise. + * modules/memory-ostream (Makefile.am): Likewise. + * modules/term-ostream (Makefile.am): Likewise. + * modules/styled-ostream (Makefile.am): Likewise. + * modules/html-styled-ostream (Makefile.am): Likewise. + * modules/term-styled-ostream (Makefile.am): Likewise. + Reported by Ralf Wildenhues. + +2006-12-12 Bruno Haible + + * build-aux/moopp (func_emit_priv_h, func_emit_vt_h, + func_emit_source_h, func_emit_source_c): New functions. + +2006-12-02 Bruno Haible + + Support 'text-decoration: underline' in terminal mode. + * lib/term-styled-ostream.oo.c: Include cr-string.h. + (enum CRXTextDecorationType): New type. + (CRXStyle): New type. + (crx_style_new, crx_style_destroy, crx_sel_eng_get_matched_style): New + functions. + (style_compute_text_underline_value): Take a CRXStyle as argument. + (match): Build a chain of CRXStyle instead of CRStyle. + +2006-12-01 Bruno Haible + + * modules/term-styled-ostream: New file. + * lib/term-styled-ostream.oo.c: New file. + * lib/term-styled-ostream.oo.h: New file. + * Makefile.am (EXTRA_DIST): Add the new files. + +2006-12-01 Bruno Haible + + * modules/html-styled-ostream: New file. + * lib/html-styled-ostream.oo.c: New file. + * lib/html-styled-ostream.oo.h: New file. + * Makefile.am (EXTRA_DIST): Add the new files. + +2006-12-01 Bruno Haible + + * modules/styled-ostream: New file. + * lib/styled-ostream.oo.c: New file. + * lib/styled-ostream.oo.h: New file. + * Makefile.am (EXTRA_DIST): Add the new files. + +2006-12-11 Bruno Haible + + Portability to BeOS. + * lib/term-ostream.oo.c (term_ostream_create) [BeOS]: Correct the + values of stream->set_a_foreground and stream->set_a_background. + +2006-12-11 Bruno Haible + + Portability to systems with GNU termcap. + * m4/termcap.m4 (gl_TERMCAP_BODY): Also test for the tparam function. + * lib/termcap.h (tparam): New declaration. + * lib/term-ostream.oo.c (tparambuf): New variable. + (tparm): Define in terms of tparam when tparam exists. + +2006-12-01 Bruno Haible + + * modules/term-ostream: Depend on termcap-h, not termcap. + * lib/term-ostream.oo.c: Include termcap.h. + (tgetent, tgetnum, tgetflag, tgetstr, tparm, tgoto, tputs): Remove + declarations. + + Move termcap function declarations to a header file. + * modules/termcap-h: New file. + * lib/termcap.h: New file. + * Makefile.am (EXTRA_DIST): Add the new files. + +2006-12-01 Bruno Haible + + * modules/moo-tests: New file. + * tests/test-moo-aroot.oo.c: New file. + * tests/test-moo-aroot.oo.h: New file. + * tests/test-moo-assign.c: New file. + * tests/test-moo-asub1.oo.c: New file. + * tests/test-moo-asub1.oo.h: New file. + * tests/test-moo-root.oo.c: New file. + * tests/test-moo-root.oo.h: New file. + * tests/test-moo-sub1.oo.c: New file. + * tests/test-moo-sub1.oo.h: New file. + * tests/test-moo-sub2.oo.c: New file. + * tests/test-moo-sub2.oo.h: New file. + * Makefile.am (EXTRA_DIST): Add the new files. + +2006-12-01 Bruno Haible + + * modules/term-ostream-tests: New file. + * tests/test-term-ostream.c: New file. + * tests/test-term-ostream-xterm: New file. + * tests/test-term-ostream-xterm.out: New file. + * tests/test-term-ostream-xterm-16color.out: New file. + * tests/test-term-ostream-xterm-88color.out: New file. + * tests/test-term-ostream-xterm-256color.out: New file. + * Makefile.am (EXTRA_DIST): Add the new files. + +2006-12-02 Bruno Haible + + * lib/term-ostream.oo.c (term_ostream_create): Recognize also the + terminal types rxvt[-16color] and konsole[-16color]. + +2006-12-01 Bruno Haible + + Preserve the hue of bright colors. + * lib/term-ostream.oo.c (colors_of_common8): New variable. + (rgb_to_color_common8): Rewritten. + (colors_of_xterm8): New variable. + (rgb_to_color_xterm8): Rewritten. + +2006-12-01 Bruno Haible + + * lib/term-ostream.oo.c (out_attr_change): Fix typo. + +2006-11-30 Bruno Haible + + Add special color support for xterm-16color, xterm-88color, + xterm-256color. + * lib/term-ostream.oo.h (term_color_t): Define as int. + (COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, COLOR_RED, + COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE): Remove enum items. + (term_ostream): Add method rgb_to_color. + * lib/term-ostream.oo.c (rgb_t, hsv_t): New types. + (rgb_to_hsv, color_distance, nearest_color, color_luminance): New + functions. + (colormodel_t): New type. + (rgb_to_color_monochrome): New function. + (rgb_to_color_common8): New function. + (rgb_to_color_xterm8): New function. + (colors_of_xterm16): New variable. + (rgb_to_color_xterm16): New function. + (colors_of_xterm88): New variable. + (rgb_to_color_xterm88): New function. + (colors_of_xterm256): New variable. + (rgb_to_color_xterm256): New function. + (attributes_t): Reserve more bits for the colors. + (term_ostream): Add colormodel field. + (out_error): New function. + (out_char): Use it. + (out_attr_change): Add support for the xterm color models. + (term_ostream::rgb_to_color): New function. + (term_ostream_create): Initialize the colormodel field. + +2006-11-28 Bruno Haible + + * lib/term-ostream.oo.c (out_attr_change): Fix uses of color_bgr. + +2006-11-28 Bruno Haible + + Guard against interruption with Ctrl-Z. + * lib/term-ostream.oo.c: Include also signal.h and sigprocmask.h. + (SIZEOF): New macro. + (stopping_signals): New variable. + (num_stopping_signals): New macro. + (stopping_signal_set): New variable. + (init_stopping_signal_set): New function. + (block_stopping_signals, unblock_stopping_signals): New functions. + (output_buffer): Use them. + * modules/term-ostream (Depends-on): Add sigprocmask. + +2006-11-28 Bruno Haible + + * lib/libcroco/cr-fonts.h: Fix double-inclusion guard. + +2006-11-27 Paul Eggert + Bruno Haible + + * lib/gettext.h (_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS): Define to 0 + if compiling with "gcc -ansi". + +2006-11-26 Bruno Haible + + Build the imported libraries with a C compiler, even when CC=g++. + + * modules/libcroco (Depends-on): Add no-c++. + (Makefile.am): Define libcroco_rpl_la_SOURCES, + libcroco_rpl_la_CPPFLAGS. + Augment lib_LIBADD, lib_DEPENDENCIES, noinst_LTLIBRARIES. + * m4/libcroco.m4 (gl_LIBCROCO): Don't use AC_LIBOBJ. + + * modules/libglib (Depends-on): Add no-c++. + (Makefile.am): Define libglib_rpl_la_SOURCES, libglib_rpl_la_CPPFLAGS. + Augment lib_LIBADD, lib_DEPENDENCIES, noinst_LTLIBRARIES. + * m4/libglib.m4 (gl_LIBGLIB): Don't use AC_LIBOBJ. New condition + INCLUDED_LIBGLIB. + + * modules/libxml (Depends-on): Add no-c++. + (Makefile.am): Define libxml_rpl_la_SOURCES, libxml_rpl_la_CPPFLAGS. + Augment lib_LIBADD, lib_DEPENDENCIES, noinst_LTLIBRARIES. + * m4/libxml.m4 (gl_LIBXML): Don't use AC_LIBOBJ. New condition + INCLUDED_LIBXML. + +2006-11-26 Bruno Haible + + libcroco uses vasprintf.h, which requires . + * lib/libcroco/cr-additional-sel.c: Include . + * lib/libcroco/cr-attr-sel.c: Likewise. + * lib/libcroco/cr-cascade.c: Likewise. + * lib/libcroco/cr-declaration.c: Likewise. + * lib/libcroco/cr-doc-handler.c: Likewise. + * lib/libcroco/cr-enc-handler.c: Likewise. + * lib/libcroco/cr-fonts.c: Likewise. + * lib/libcroco/cr-input.c: Likewise. + * lib/libcroco/cr-num.c: Likewise. + * lib/libcroco/cr-om-parser.c: Likewise. + * lib/libcroco/cr-parser.c: Likewise. + * lib/libcroco/cr-parsing-location.c: Likewise. + * lib/libcroco/cr-prop-list.c: Likewise. + * lib/libcroco/cr-pseudo.c: Likewise. + * lib/libcroco/cr-rgb.c: Likewise. + * lib/libcroco/cr-sel-eng.c: Likewise. + * lib/libcroco/cr-selector.c: Likewise. + * lib/libcroco/cr-simple-sel.c: Likewise. + * lib/libcroco/cr-statement.c: Likewise. + * lib/libcroco/cr-string.c: Likewise. + * lib/libcroco/cr-style.c: Likewise. + * lib/libcroco/cr-stylesheet.c: Likewise. + * lib/libcroco/cr-term.c: Likewise. + * lib/libcroco/cr-tknzr.c: Likewise. + * lib/libcroco/cr-token.c: Likewise. + * lib/libcroco/cr-utils.c: Likewise. + +2006-11-26 Bruno Haible + + * modules/no-c++: New file. + * m4/no-c++.m4: New file. + * Makefile.am (EXTRA_DIST): Add them. + +2006-11-26 Bruno Haible + + Support for VPATH builds. + * modules/libglib (glib/*.h): Create the glib directory if necessary. + * modules/libxml (libxml/*.h): Create the libxml directory if + necessary. + +2006-11-26 Bruno Haible + + * lib/xalloc.h (xmemdup): Add a typesafe C++ template variant. + Based on a patch from Paul Eggert in gnulib. + +2006-11-26 Bruno Haible + + Optimize IS_INSTANCE. + * build-aux/moopp: Emit also a classname_SUPERCLASSES_LENGTH macro. + * lib/moo.h (IS_INSTANCE): Use the value of this macro, known at + compile time. + (IS_INSTANCE_PRIVATE): Remove macro. + +2006-11-26 Bruno Haible + + * lib/moo.h (IS_INSTANCE): Fix reference to vtable. + +2006-11-26 Bruno Haible + + * build-aux/moopp: In the C++ class definition, add 'operator ==', + 'operator !=' members, and add constructors for downcasting. + +2006-11-25 Bruno Haible + + * lib/glibconfig_.h (g_return_if_fail, g_return_val_if_fail, + g_return_if_reached, g_return_val_if_reached): Return instead of + calling abort(). + +2006-11-12 Bruno Haible + + * modules/libcroco: New file. + * m4/libcroco.m4: New file. + * lib/libcroco/cr-additional-sel.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-additional-sel.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-attr-sel.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-attr-sel.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-cascade.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-cascade.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-declaration.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-declaration.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-doc-handler.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-doc-handler.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-enc-handler.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-enc-handler.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-fonts.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-fonts.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-input.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-input.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-num.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-num.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-om-parser.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-om-parser.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-parser.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-parser.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-parsing-location.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-parsing-location.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-prop-list.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-prop-list.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-pseudo.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-pseudo.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-rgb.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-rgb.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-sel-eng.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-sel-eng.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-selector.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-selector.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-simple-sel.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-simple-sel.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-statement.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-statement.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-string.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-string.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-style.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-style.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-stylesheet.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-stylesheet.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-term.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-term.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-tknzr.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-tknzr.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-token.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-token.h: New file, from libcroco-0.6.1. + * lib/libcroco/cr-utils.c: New file, from libcroco-0.6.1. + * lib/libcroco/cr-utils.h: New file, from libcroco-0.6.1. + * lib/libcroco/libcroco-config.h: New file, from libcroco-0.6.1. + * lib/libcroco/libcroco.h: New file, from libcroco-0.6.1. + * Makefile.am (EXTRA_DIST): Add the new files. + +2006-11-12 Bruno Haible + + * modules/libglib: New file. + * m4/libglib.m4: New file. + * lib/glib_.h: New file, from glib-2.12.4 with modifications. + * lib/glibconfig_.h: New file, based on glib-2.12.4. + * lib/glib/ghash.c: New file, from glib-2.12.4 with modifications. + * lib/glib/ghash_.h: New file, from glib-2.12.4 with modifications. + * lib/glib/glist.c: New file, from glib-2.12.4 with modifications. + * lib/glib/glist_.h: New file, from glib-2.12.4 with modifications. + * lib/glib/gmessages.c: New file. + * lib/glib/gprimes.c: New file, from glib-2.12.4 with modifications. + * lib/glib/gprimes_.h: New file, from glib-2.12.4 with modifications. + * lib/glib/gstrfuncs.c: New file, from glib-2.12.4 with modifications. + * lib/glib/gstrfuncs_.h: New file, from glib-2.12.4 with modifications. + * lib/glib/gstring.c: New file, from glib-2.12.4 with modifications. + * lib/glib/gstring_.h: New file, from glib-2.12.4 with modifications. + * lib/glib/gtypes_.h: New file, from glib-2.12.4 with modifications. + * Makefile.am (EXTRA_DIST): Add the new files. + +2006-11-12 Bruno Haible + + * modules/xalloc (Depends-on): Add error, gettext-h, exit. + +2006-11-09 Paul Eggert + + * lib/gettext.h (dgettext, dcgettext, ngettext) [! ENABLE_NLS]: + (dngettext, dcngettext, bindtextdomain) [! ENABLE_NLS]: + (bind_textdomain_codeset) [! ENABLE_NLS]: + Evaluate all the arguments. That way, callers get compatible behavior + if the arguments have side effects. Also, it avoids some GCC + diagnostics in some cases; Joel E. Denny reported problems when Bison + was configured with --enable-gcc-warnigs. + +2006-11-05 Bruno Haible + + Include libxml2 as a fallback. + * modules/libxml: New file. + * m4/libxml.m4: New file. + * lib/libxml/elfgcchack.h: New empty file. + * lib/libxml/xmlversion_.h: New file, from libxml2-2.6.27 with + modifications. + * lib/libxml/libxml.h: New file, from libxml2-2.6.27. + * lib/libxml/COPYING: New file, from libxml2-2.6.27. + * lib/libxml/DOCBparser.c: New file, from libxml2-2.6.27. + * lib/libxml/DOCBparser_.h: New file, from libxml2-2.6.27. + * lib/libxml/HTMLparser.c: New file, from libxml2-2.6.27. + * lib/libxml/HTMLparser_.h: New file, from libxml2-2.6.27. + * lib/libxml/HTMLtree.c: New file, from libxml2-2.6.27. + * lib/libxml/HTMLtree_.h: New file, from libxml2-2.6.27. + * lib/libxml/SAX.c: New file, from libxml2-2.6.27. + * lib/libxml/SAX2.c: New file, from libxml2-2.6.27. + * lib/libxml/SAX2_.h: New file, from libxml2-2.6.27. + * lib/libxml/SAX_.h: New file, from libxml2-2.6.27. + * lib/libxml/c14n.c: New file, from libxml2-2.6.27. + * lib/libxml/c14n_.h: New file, from libxml2-2.6.27. + * lib/libxml/catalog.c: New file, from libxml2-2.6.27. + * lib/libxml/catalog_.h: New file, from libxml2-2.6.27. + * lib/libxml/chvalid.c: New file, from libxml2-2.6.27. + * lib/libxml/chvalid_.h: New file, from libxml2-2.6.27. + * lib/libxml/debugXML.c: New file, from libxml2-2.6.27. + * lib/libxml/debugXML_.h: New file, from libxml2-2.6.27. + * lib/libxml/dict.c: New file, from libxml2-2.6.27. + * lib/libxml/dict_.h: New file, from libxml2-2.6.27. + * lib/libxml/encoding.c: New file, from libxml2-2.6.27. + * lib/libxml/encoding_.h: New file, from libxml2-2.6.27. + * lib/libxml/entities.c: New file, from libxml2-2.6.27. + * lib/libxml/entities_.h: New file, from libxml2-2.6.27. + * lib/libxml/error.c: New file, from libxml2-2.6.27. + * lib/libxml/globals.c: New file, from libxml2-2.6.27. + * lib/libxml/globals_.h: New file, from libxml2-2.6.27. + * lib/libxml/hash.c: New file, from libxml2-2.6.27. + * lib/libxml/hash_.h: New file, from libxml2-2.6.27. + * lib/libxml/legacy.c: New file, from libxml2-2.6.27. + * lib/libxml/list.c: New file, from libxml2-2.6.27. + * lib/libxml/list_.h: New file, from libxml2-2.6.27. + * lib/libxml/nanoftp.c: New file, from libxml2-2.6.27. + * lib/libxml/nanoftp_.h: New file, from libxml2-2.6.27. + * lib/libxml/nanohttp.c: New file, from libxml2-2.6.27. + * lib/libxml/nanohttp_.h: New file, from libxml2-2.6.27. + * lib/libxml/parser.c: New file, from libxml2-2.6.27. + * lib/libxml/parserInternals.c: New file, from libxml2-2.6.27. + * lib/libxml/parserInternals_.h: New file, from libxml2-2.6.27. + * lib/libxml/parser_.h: New file, from libxml2-2.6.27. + * lib/libxml/pattern.c: New file, from libxml2-2.6.27. + * lib/libxml/pattern_.h: New file, from libxml2-2.6.27. + * lib/libxml/relaxng.c: New file, from libxml2-2.6.27. + * lib/libxml/relaxng_.h: New file, from libxml2-2.6.27. + * lib/libxml/schemasInternals_.h: New file, from libxml2-2.6.27. + * lib/libxml/schematron.c: New file, from libxml2-2.6.27. + * lib/libxml/schematron_.h: New file, from libxml2-2.6.27. + * lib/libxml/threads.c: New file, from libxml2-2.6.27. + * lib/libxml/threads_.h: New file, from libxml2-2.6.27. + * lib/libxml/tree.c: New file, from libxml2-2.6.27. + * lib/libxml/tree_.h: New file, from libxml2-2.6.27. + * lib/libxml/uri.c: New file, from libxml2-2.6.27. + * lib/libxml/uri_.h: New file, from libxml2-2.6.27. + * lib/libxml/valid.c: New file, from libxml2-2.6.27. + * lib/libxml/valid_.h: New file, from libxml2-2.6.27. + * lib/libxml/xinclude.c: New file, from libxml2-2.6.27. + * lib/libxml/xinclude_.h: New file, from libxml2-2.6.27. + * lib/libxml/xlink.c: New file, from libxml2-2.6.27. + * lib/libxml/xlink_.h: New file, from libxml2-2.6.27. + * lib/libxml/xmlIO.c: New file, from libxml2-2.6.27. + * lib/libxml/xmlIO_.h: New file, from libxml2-2.6.27. + * lib/libxml/xmlautomata_.h: New file, from libxml2-2.6.27. + * lib/libxml/xmlerror_.h: New file, from libxml2-2.6.27. + * lib/libxml/xmlexports_.h: New file, from libxml2-2.6.27. + * lib/libxml/xmlmemory.c: New file, from libxml2-2.6.27. + * lib/libxml/xmlmemory_.h: New file, from libxml2-2.6.27. + * lib/libxml/xmlmodule.c: New file, from libxml2-2.6.27. + * lib/libxml/xmlmodule_.h: New file, from libxml2-2.6.27. + * lib/libxml/xmlreader.c: New file, from libxml2-2.6.27. + * lib/libxml/xmlreader_.h: New file, from libxml2-2.6.27. + * lib/libxml/xmlregexp.c: New file, from libxml2-2.6.27. + * lib/libxml/xmlregexp_.h: New file, from libxml2-2.6.27. + * lib/libxml/xmlsave.c: New file, from libxml2-2.6.27. + * lib/libxml/xmlsave_.h: New file, from libxml2-2.6.27. + * lib/libxml/xmlschemas.c: New file, from libxml2-2.6.27. + * lib/libxml/xmlschemas_.h: New file, from libxml2-2.6.27. + * lib/libxml/xmlschemastypes.c: New file, from libxml2-2.6.27. + * lib/libxml/xmlschemastypes_.h: New file, from libxml2-2.6.27. + * lib/libxml/xmlstring.c: New file, from libxml2-2.6.27. + * lib/libxml/xmlstring_.h: New file, from libxml2-2.6.27. + * lib/libxml/xmlunicode.c: New file, from libxml2-2.6.27. + * lib/libxml/xmlunicode_.h: New file, from libxml2-2.6.27. + * lib/libxml/xmlwriter.c: New file, from libxml2-2.6.27. + * lib/libxml/xmlwriter_.h: New file, from libxml2-2.6.27. + * lib/libxml/xpath.c: New file, from libxml2-2.6.27. + * lib/libxml/xpathInternals_.h: New file, from libxml2-2.6.27. + * lib/libxml/xpath_.h: New file, from libxml2-2.6.27. + * lib/libxml/xpointer.c: New file, from libxml2-2.6.27. + * lib/libxml/xpointer_.h: New file, from libxml2-2.6.27. + * Makefile.am (EXTRA_DIST): Add the new files. + +2006-11-05 Bruno Haible + + * modules/term-ostream: New file. + * m4/term-ostream.m4: New file. + * lib/term-ostream.oo.h: New file. + * lib/term-ostream.oo.c: New file. + * Makefile.am (EXTRA_DIST): Add them. + + * modules/termcap: New file. + * m4/termcap.m4: New file. + * Makefile.am (EXTRA_DIST): Add them. + + * modules/memory-ostream: New file. + * lib/memory-ostream.oo.h: New file. + * lib/memory-ostream.oo.c: New file. + * Makefile.am (EXTRA_DIST): Add them. + + * modules/iconv-ostream: New file. + * lib/iconv-ostream.oo.h: New file. + * lib/iconv-ostream.oo.c: New file. + * Makefile.am (EXTRA_DIST): Add them. + + * modules/html-ostream: New file. + * lib/html-ostream.oo.h: New file. + * lib/html-ostream.oo.c: New file. + * Makefile.am (EXTRA_DIST): Add them. + + * modules/file-ostream: New file. + * lib/file-ostream.oo.h: New file. + * lib/file-ostream.oo.c: New file. + * Makefile.am (EXTRA_DIST): Add them. + + * modules/fd-ostream: New file. + * lib/fd-ostream.oo.h: New file. + * lib/fd-ostream.oo.c: New file. + * Makefile.am (EXTRA_DIST): Add them. + + * modules/ostream: New file. + * lib/ostream.oo.h: New file. + * lib/ostream.oo.c: New file. + * Makefile.am (EXTRA_DIST): Add them. + + * modules/moo: New file. + * build-aux/moopp: New file. + * lib/moo.h: New file. + * Makefile.am (EXTRA_DIST): Add them. + +2006-11-06 Bruno Haible + + * lib/xalloc.h (xcharalloc): New macro. + (xmemdup): New declaration. + * lib/xstrdup.c (xmemdup): New function. + +2006-11-03 Bruno Haible + + * lib/xalloc.h (XMALLOC, XNMALLOC, XZALLOC, XCALLOC): New macros. + (xnboundedmalloc): New inline function. + * lib/fstrcmp.c (fstrcmp): Use xnmalloc instead of xmalloc. + * lib/hash.c (hash_init, resize): Use XCALLOC instead of xcalloc. + * lib/propername.c (proper_name, proper_name_utf8): Use XNMALLOC + instead of xmalloc. + * lib/xgetcwd.c (xgetcwd): Use XNMALLOC instead of xmalloc. + * lib/xstrdup.c (xstrdup): Likewise. + +2006-11-06 Bruno Haible + + * lib/getopt_.h.diff: Update. + +2006-11-06 Bruno Haible + + Moved canonicalize to gnulib. + * modules/canonicalize: Remove file. + * lib/canonicalize.h: Remove file. + * lib/canonicalize.c: Remove file. + * m4/canonicalize.m4: Remove file. + * Makefile.am (EXTRA_DIST): Remove these files. + * modules/progreloc (Depends-on): Replace 'canonicalize' with + 'canonicalize-lgpl'. + +2006-11-06 Bruno Haible + + * lib/canonicalize.h (canonicalize_file_name): Fix wrong comment + borrowed from glibc. + +2006-11-02 Bruno Haible + + * lib/xalloc.h (xnmalloc): New declaration. From gnulib xalloc.h. + * lib/xmalloc.c (fixup_null_alloc): Write NULL, not 0. + (xnmalloc): New function. + +2006-10-29 Bruno Haible + + * lib/fstrcmp.h: Wrap declarations in extern "C". + +2006-10-29 Bruno Haible + + Make it compile in C++ mode. + * lib/backupfile.c (find_backup_file_name): Cast malloc result. + * lib/xalloc.h (xrealloc): Define as template with appropriate return + type. + * lib/xstrdup.c (xstrdup): Cast xmalloc result. + +2006-11-27 Bruno Haible + + * gettext-0.16.1 released. + +2006-10-26 Bruno Haible + + * gettext-0.16 released. + +2006-10-26 Bruno Haible + + * modules/canonicalize (Makefile.am): Remove EXTRA_DIST. Now done by + gnulib-tool. + * modules/relocatable (Makefile.am): Likewise. + * modules/relocwrapper (Makefile.am): Likewise. + +2006-10-25 Bruno Haible + + * m4/relocatable.m4 (AC_RELOCATABLE_BODY): Renamed from AC_RELOCATABLE, + without the AC_LIBOBJ invocation. + (AC_RELOCATABLE): New macro. Invoke AC_LIBOBJ here. + * modules/relocwrapper (configure.ac): Invoke AC_RELOCATABLE instead + of requiring it. + * modules/gettext-tools-libgettextpo-misc: New file. + * Makefile.am (EXTRA_DIST): Add it. + +2006-10-25 Bruno Haible + + * lib/gettext.h (_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS): Define to + false for non-gcc C++ compilers. + Reported by Nelson H. F. Beebe . + +2006-10-24 Bruno Haible + + * modules/gettext-tools-misc (Makefile.am): Add also $(top_srcdir) to + AM_CPPFLAGS. Needed so that woe32dll/export.h is found while compiling + gettextlib-exports.c in a VPATH build. + Reported by Charles Wilson . + +2006-10-24 Bruno Haible + + * modules/gettext-tools/misc (Makefile.am): Use rm -f instead of + $(RM). + +2006-10-24 Bruno Haible + + * lib/fstrcmp.c (keys_init_once): Remove semicolon after + gl_once_define invocation. + +2006-10-23 Bruno Haible + + Moved last change to gnulib. + * lib/obstack.h.diff: Undo last change. + * lib/obstack.c.diff: Remove file. + * Makefile.am (EXTRA_DIST): Remove it. + +2006-10-20 Bruno Haible + + * lib/obstack.h.diff: Use _obstack_free instead of obstack_free, but + define _obstack_free to obstack_free by default. + * lib/obstack.c.diff: New file. + * Makefile.am (EXTRA_DIST): Add it. + +2006-10-17 Bruno Haible + + * lib/gettext.h (gettext, ngettext, pgettext, npgettext): Define + differently if DEFAULT_TEXT_DOMAIN is set. + +2006-10-16 Bruno Haible + + Use newer modules from gnulib. + * lib/getline.h: Remove file. + * lib/getline.c: Remove file. + * m4/getline.m4: Remove file. + * modules/getline: Remove file. + * lib/getndelim2.h: Remove file. + * lib/getndelim2.c: Remove file. + * m4/getndelim2.m4: Remove file. + * modules/getndelim2: Remove file. + * Makefile.am (EXTRA_DIST): Remove them. + +2006-10-13 Bruno Haible + + * modules/exitfail.diff: Update. + * modules/quote.diff: Update. + * modules/quotearg.diff: Update. + +2006-10-12 Bruno Haible + + * modules/exitfail: Update. + * modules/quote: Update. + * modules/quotearg: Update. + +2006-10-12 Bruno Haible + + * modules/canonicalize (Makefile.am): Distribute all files in lib/ + through EXTRA_DIST. + * modules/getline (Makefile.am): Likewise. + * modules/getndelim2 (Makefile.am): Likewise. + * modules/relocatable (Makefile.am): Likewise. + +2006-10-02 Bruno Haible + + * modules/gettext-runtime-misc (Makefile.am): Add no-dependencies to + AUTOMAKE_OPTIONS. + * modules/gettext-tools-misc (Makefile.am): Likewise. + +2006-09-29 Bruno Haible + + * lib/closeout.c (close_stdout_status): Remove function. + (close_stdout): Inline it. Call fwriteerror_no_ebadf instead of + fwriteerror. Also close stderr. + +2006-09-14 Bruno Haible + + * lib/addext.c: Include unconditionally. + * lib/backupfile.c: Likewise. + * lib/basename.c: Likewise. + * lib/canonicalize.c: Likewise. + * lib/closeout.c: Likewise. + * lib/error-progname.c: Likewise. + * lib/fstrcmp.c: Likewise. + * lib/getline.c: Likewise. + * lib/getndelim2.c: Likewise. + * lib/hash.c: Likewise. + * lib/propername.c: Likewise. + * lib/relocatable.c: Likewise. + * lib/relocwrapper.c: Likewise. + * lib/vasprintf.c: Likewise. + * lib/xerror.c: Likewise. + * lib/xgetcwd.c: Likewise. + * lib/xmalloc.c: Likewise. + * lib/xreadlink.c: Likewise. + * lib/xstrdup.c: Likewise. + +2006-09-09 Bruno Haible + + * modules/gettext-tools-misc (Makefile.am): Augment lib_LDFLAGS + instead of setting it. + +2006-09-06 Bruno Haible + + * modules/iconvstring: Remove file. + * lib/iconvstring.h: Remove file. + * lib/iconvstring.c: Remove file. + * Makefile.am (EXTRA_DIST): Remove modules/iconvstring, + lib/iconvstring.h, lib/iconvstring.c. + + * lib/propername.c: Include xstriconv.h instead of iconvstring.h. + (convert_name): Remove function. + (proper_name_utf8): Use xstr_iconv instead of convert_name. + * modules/propername: Depend on xstriconv instead of iconvstring. + +2006-08-30 Bruno Haible + + * lib/xerror.h: Don't include error.h. + * lib/xerror.c: Include error.h here. + +2006-08-28 Bruno Haible + + * modules/c-strstr: Remove file, now in gnulib. + * lib/c-strstr.h: Remove file, now in gnulib. + * lib/c-strstr.c: Remove file, now in gnulib. + * Makefile.am (EXTRA_DIST): Remove them. + +2006-08-22 Bruno Haible + + * modules/pathmax.diff: Remove file. + * modules/unlocked-io.diff: Remove file. + * modules/exitfail.diff: Update. + * modules/quote.diff: Update. + * modules/quotearg.diff: Update. + * m4/pathmax.m4.diff: Remove file. + * m4/strdup.m4.diff: Remove file. + * m4/unlocked-io.m4.diff: Remove file. + * m4/exitfail.m4.diff: Update. + * m4/hard-locale.m4.diff: Update. + * m4/quote.m4.diff: Update. + * m4/quotearg.m4.diff: Update. + * Makefile.am (EXTRA_DIST): Remove the removed files. + +2006-08-22 Bruno Haible + + * modules/gettext-tools-misc (Makefile.am): New variable + lib_LTLIBRARIES. + +2006-08-18 Bruno Haible + + * modules/bison-i18n: Remove file. Now taken from gnulib. + * m4/bison-i18n.m4: Remove file. Now taken from gnulib. + * Makefile.am (EXTRA_DIST): Remove them. + +2006-08-16 Bruno Haible + + * modules/gettext-tools-misc (Files): Remove m4/restrict.m4, no longer + in gnulib. + +2006-07-31 Bruno Haible + + * lib/propername.c: Remove temporary hack. + +2006-07-31 Bruno Haible + + * modules/gettext-runtime-misc: New file. + * Makefile.am (EXTRA_DIST): Add it. + +2006-08-02 Bruno Haible + + * Makefile.am: New file. + +2006-07-30 Bruno Haible + + * lib/argmatch.h.diff: New file. + * lib/error.h.diff: New file. + * lib/exitfail.h.diff: New file. + * lib/fnmatch.c.diff: New file. + * lib/fnmatch_loop.c.diff: New file. + * lib/getopt_.h.diff: New file. + * lib/javacomp.c.diff: New file. + * lib/linebreak.c.diff: New file. + * lib/obstack.h.diff: New file. + * lib/progname.h.diff: New file. + * lib/strerror.c.diff: New file. + * m4/exitfail.m4.diff: New file. + * m4/hard-locale.m4.diff: New file. + * m4/pathmax.m4.diff: New file. + * m4/quote.m4.diff: New file. + * m4/quotearg.m4.diff: New file. + * m4/strdup.m4.diff: New file. + * m4/unlocked-io.m4.diff: New file. + * m4/vasprintf.m4: New file. + * modules/backupfile: New file. + * modules/basename: New file. + * modules/bison-i18n: New file. + * modules/c-strstr: New file. + * modules/canonicalize: New file. + * modules/closeout: New file. + * modules/error-progname: New file. + * modules/exitfail.diff: New file. + * modules/fnmatch.diff: New file. + * modules/fstrcmp: New file. + * modules/gcj: New file. + * modules/gen-lbrkprop: New file. + * modules/getline: New file. + * modules/getndelim2: New file. + * modules/gettext-tools-misc: New file. + * modules/hash: New file. + * modules/iconvstring: New file. + * modules/java: New file. + * modules/javacomp.diff: New file. + * modules/pathmax.diff: New file. + * modules/progreloc: New file. + * modules/propername: New file. + * modules/quote.diff: New file. + * modules/quotearg.diff: New file. + * modules/relocatable: New file. + * modules/relocwrapper: New file. + * modules/unlocked-io.diff: New file. + * modules/vasprintf.diff: New file. + * modules/wait-process.diff: New file. + * modules/xalloc: New file. + * modules/xalloc-die: New file. + * modules/xerror: New file. + * modules/xgetcwd: New file. + * modules/xreadlink: New file. + diff -Nru gettext-0.19.6/gnulib-local/lib/ChangeLog.0 gettext-0.19.7/gnulib-local/lib/ChangeLog.0 --- gettext-0.19.6/gnulib-local/lib/ChangeLog.0 2015-08-21 05:48:27.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 @@ -1,1821 +0,0 @@ -2003-01-12 Bruno Haible - - * linebreak.c (mbs_possible_linebreaks): Return immediately if n = 0. - (mbs_width_linebreaks): Likewise. - -2003-01-12 Bruno Haible - - * mkdtemp.c: Use the simpler macro names HAVE_STDINT_H, - HAVE_INTTYPES_H. (Including or even when not - necessary doesn't hurt.) - -2002-12-11 Bruno Haible - - * setenv.c (alloca): Fall back to malloc. - (freea): New macro. - (setenv): Use freea() to free memory allocated with alloca(). - -2003-01-12 Bruno Haible - - * classpath.h: New file. - * classpath.c: Turn into an independent source file. - (new_classpath, set_classpath, reset_classpath): Make non-static. - * javacomp.c: Include classpath.h instead of classpath.c. - * javaexec.c: Likewise. - * Makefile.am (libgettextlib_la_SOURCES): Add classpath.h, classpath.c. - (EXTRA_DIST): Remove classpath.c. - -2003-01-12 Bruno Haible - - * localcharset.h: New file. - * localcharset.c: Include it. - * Makefile.am (libgettextlib_la_SOURCES): Add localcharset.h. - -2003-01-12 Bruno Haible - - * alloca_.h: New file, from gnulib. - * liballoca.h: Remove file. - * Makefile.am: Add snippet from gnulib module alloca. - (LIBADD_SOURCE): Remove liballoca.h. - * javacomp.c: Include alloca.h instead of liballoca.h. - * javaexec.c: Likewise. - * setenv.c: Likewise. - -2003-01-12 Bruno Haible - - * Makefile.am: Make use of += for variables. - (install-exec-local): Avoid creating $(libdir) if it would be empty. - -2003-01-12 Bruno Haible - - * linebreak.c (iconv_string_keeping_offsets): Add an assertion, to - protect against Solaris 2.9 iconv() bug. - -2003-01-10 Bruno Haible - - * linebreak.c (mbs_possible_linebreaks, mbs_width_linebreaks): - Work around Solaris 2.9 iconv() bug. - -2003-01-08 Bruno Haible - - * safe-read.h: Update from current gnulib version. - * safe-read.c: Update from current gnulib version. - * safe-write.h: Update from current gnulib version. - * safe-write.c: Update from current gnulib version. - * full-write.h: Update from current gnulib version. - * full-write.c: Update from current gnulib version. - -2002-12-16 Bruno Haible - - * copy-file.c: Include if doesn't exist. - Needed for mingw32. - Reported by Steven Edwards . - -2002-11-22 Bruno Haible - - * safe-write.h: New file, from current gnulib version. - * safe-write.c: New file, from current gnulib version. - * full-write.h: Update from current gnulib version. - * full-write.c: Update from current gnulib version. - * copy-file.c (copy_file): Change test of full_write return value. - * Makefile.am (libgettextlib_la_SOURCES): Add safe-write.h, - safe-write.c. - - * safe-read.h: Update from current gnulib version. - * safe-read.c: Update from current gnulib version. - - * argmatch.h: Update from current gnulib version. - * argmatch.c: Update from current gnulib version, with simplifications. - -2002-11-19 Bruno Haible - - * pathmax.h: Update from current gnulib version. - * obstack.h: Update from current gnulib version. - * obstack.c: Update from current gnulib version. - -2002-11-06 Bruno Haible - - * gcd.h (gcd): Change argument type to 'unsigned long'. - * gcd.c (gcd): Likewise. - -2002-11-15 Bruno Haible - - * alloca.c: Update from current gnulib version. - * memset.c: Update from current gnulib version. - -2002-11-13 Bruno Haible - - Assume ANSI C. - * libstdarg.h: Remove file. - * Makefile.am (LIBADD_SOURCE): Remove libstdarg.h. - * addext.c (addext): Use ANSI C function declarations. - * alloca.c (alloca): Likewise. - * argmatch.h (PARAMS): Remove macro. - (argmatch, argmatch_exit_fn, argmatch_invalid, argmatch_valid, - __xargmatch_internal, argmatch_to_argument): Use ANSI C function - declarations. - * argmatch.c (argmatch, argmatch_invalid, argmatch_valid, - __xargmatch_internal, argmatch_to_argument): Likewise. - * backupfile.h (PARAMS): Remove macro. - (find_backup_file_name, get_version, xget_version, addext): Use ANSI C - function declarations. - * backupfile.c (find_backup_file_name, max_backup_version, - version_number, get_version, xget_version): Likewise. - * basename.h (gnu_basename): Likewise. - * basename.c (basename): Likewise. - * c-ctype.h (PARAMS): Remove macro. - (c_isascii, c_isalnum, c_isalpha, c_isblank, c_iscntrl, c_isdigit, - c_islower, c_isgraph, c_isprint, c_ispunct, c_isspace, c_isupper, - c_isxdigit, c_tolower, c_toupper): Use ANSI C function declarations. - * c-ctype.c (c_isascii, c_isalnum, c_isalpha, c_isblank, c_iscntrl, - c_isdigit, c_islower, c_isgraph, c_isprint, c_ispunct, c_isspace, - c_isupper, c_isxdigit, c_tolower, c_toupper): Likewise. - * classpath.c (new_classpath, set_classpath, reset_classpath): - Likewise. - * concatpath.c (concatenated_pathname): Likewise. - * copy-file.h (copy_file): Likewise. - * copy-file.c (copy_file): Likewise. - * execute.h (execute): Likewise. - * execute.c (nonintr_close, nonintr_open, execute): Likewise. - * findprog.h (find_in_path): Likewise. - * findprog.c (find_in_path): Likewise. - * fstrcmp.h (fstrcmp): Likewise. - * fstrcmp.c (diag, compareseq, fstrcmp): Likewise. - * full-write.h (full_write): Likewise. - * full-write.c (full_write): Likewise. - * gcd.h (PARAMS): Remove macro. - (gcd): Use ANSI C function declarations. - * gcd.c (gcd): Likewise. - * getline.h (PARAMS): Remove macro. - (getline, getdelim): Use ANSI C function declarations. - * getline.c (getstr, getline, getdelim): Likewise. - * hash.h (PARAMS): Remove macro. - (init_hash, delete_hash, insert_entry, find_entry, iterate_table, - next_prime): Use ANSI C function declarations. - * hash.c (init_hash, delete_hash, insert_entry, insert_entry_2, - find_entry, iterate_table, lookup, compute_hashval, next_prime, - is_prime): Likewise. - * javacomp.h (compile_java_class): Likewise. - * javacomp.c (compile_java_class): Likewise. - * javaexec.h (execute_fn, execute_java_class): Likewise. - * javaexec.c (execute_java_class): Likewise. - * linebreak.h (PARAMS): Remove macro. - (locale_charset, uc_width, u8_width, u16_width, u32_width, - u8_possible_linebreaks, u16_possible_linebreaks, - u32_possible_linebreaks, mbs_possible_linebreaks, u8_width_linebreaks, - u16_width_linebreaks, u32_width_linebreaks, mbs_width_linebreaks): Use - ANSI C function declarations. - * linebreak.c (u32_mbtouc, is_cjk_encoding, is_utf8_encoding, - uc_width, u8_width, u16_width, u32_width, lbrkprop_lookup, - u8_possible_linebreaks, u16_possible_linebreaks, - u32_possible_linebreaks, u8_width_linebreaks, u16_width_linebreaks, - u32_width_linebreaks, read_file, main, iconv_string_length, - iconv_string_keeping_offsets, is_all_ascii, mbs_possible_linebreaks, - mbs_width_linebreaks, read_file, main): Likewise. - * mbswidth.h (PARAMS): Remove macro. - (mbswidth, mbsnwidth): Use ANSI C function declarations. - * mbswidth.c (mbswidth, mbsnwidth): Likewise. - * memmove.c (memmove): Likewise. - * memset.c (memset): Likewise. - * mkdtemp.h (PARAMS): Remove macro. - (mkdtemp): Use ANSI C function declarations. - * mkdtemp.c (gen_tempname, mkdtemp): Likewise. - * pathname.h (PARAMS): Remove macro. - (concatenated_pathname): Use ANSI C function declarations. - * pfnmatch.h (PARAMS): Remove macro. - (fnmatch): Use ANSI C function declarations. - * pfnmatch.c (fnmatch): Likewise. - * pipe.h (create_pipe_out, create_pipe_in, create_pipe_bidi): - Likewise. - * pipe-bidi.c (nonintr_close, create_pipe_bidi): Likewise. - * pipe-in.c (nonintr_close, nonintr_open, create_pipe_in): Likewise. - * pipe-out.c (nonintr_close, nonintr_open, create_pipe_out): Likewise. - * progname.h (set_program_name, maybe_print_progname): Likewise. - * progname.c (set_program_name): Likewise. - * safe-read.h (safe_read): Likewise. - * safe-read.c (safe_read): Likewise. - * setenv.h (PARAMS): Remove macro. - (setenv, unsetenv): Use ANSI C function declarations. - * setenv.c (compar_fn_t, __add_to_environ, setenv): Likewise. - * sh-quote.h (shell_quote_length, shell_quote_copy, shell_quote, - shell_quote_argv): Likewise. - * sh-quote.c (shell_quote_length, shell_quote_copy, shell_quote, - shell_quote_argv): Likewise. - * stpcpy.h (PARAMS): Remove macro. - (stpcpy): Use ANSI C function declarations. - * stpcpy.c (__stpcpy): Likewise. - * stpncpy.h (PARAMS): Remove macro. - (gnu_stpncpy): Use ANSI C function declarations. - * stpncpy.c (__stpncpy): Likewise. - * strcase.h (PARAMS): Remove macro. - (strcasecmp, strncasecmp): Use ANSI C function declarations. - * strcasecmp.c (__strcasecmp): Likewise. - * strncasecmp.c (__strncasecmp): Likewise. - * strcspn.c (strcspn): Likewise. - * strpbrk.h (PARAMS): Remove macro. - (strpbrk): Use ANSI C function declarations. - * strpbrk.c (strpbrk): Likewise. - * strstr.h (PARAMS): Remove macro. - (strstr): Use ANSI C function declarations. - * strstr.c (strstr): Likewise. - * tmpdir.h (PARAMS): Remove macro. - (path_search): Use ANSI C function declarations. - * tmpdir.c (direxists, path_search): Likewise. - * ucs4-utf8.h (u8_uctomb_aux, u8_uctomb): Likewise. - * ucs4-utf16.h (u16_uctomb_aux, u16_uctomb): Likewise. - * unsetenv.c (unsetenv): Likewise. - * utf8-ucs4.h (u8_mbtouc_aux, u8_mbtouc): Likewise. - * utf16-ucs4.h (u16_mbtouc_aux, u16_mbtouc): Likewise. - * vasprintf.h (PARAMS): Remove macro. - Include instead of libstdarg.h. - (asprintf, vasprintf): Use ANSI C function declarations. - * vasprintf.c: Include instead of libstdarg.h. - (int_vasprintf, asprintf, checkit): Use ANSI C function declarations. - Use va_start instead of VA_START. - * wait-process.h (wait_subprocess): Likewise. - * wait-process.c (wait_subprocess): Likewise. - * xerror.h (xasprintf, multiline_warning, multiline_error): Likewise. - * xerror.c: Include instead of libstdarg.h. - (xasprintf, multiline_warning, multiline_error): Use ANSI C function - declarations. Use va_start instead of VA_START. - * xgetcwd.h (PARAMS): Remove macro. - (xgetcwd): Use ANSI C function declarations. - * xmalloc.h (xmalloc, xcalloc, xrealloc, xstrdup): Likewise. - * xmalloc.c (fixup_null_alloc, xmalloc, xcalloc, xrealloc): Likewise. - * xsetenv.h (xsetenv): Likewise. - * xsetenv.c (xsetenv): Likewise. - * xstrdup.c (xstrdup): Likewise. - -2002-11-05 Bruno Haible - - * argmatch.c: Include gettext.h instead of and . - * error.c [!_LIBC]: Include gettext.h instead of . - * getopt.c [!_LIBC]: Include gettext.h instead of . - * obstack.c [!_LIBC]: Include gettext.h instead of . - -2002-11-04 Bruno Haible - - * getopt.c: Don't test HAVE_LIBINTL_H. - - * getopt.h: Update from current gnulib version. - * getopt.c: Likewise. - * getopt1.c: Likewise. - -2002-10-29 Bruno Haible - - * libstdarg.h: Treat SunPro C like ANSI C; it defines __STDC__ to 0. - -2002-10-27 Bruno Haible - - * liballoca.h: Put under LGPL. - * libstdarg.h: Likewise. - -2002-10-26 Bruno Haible - - * vasprintf.c (int_vasprintf): Treat 'F' like 'f'. - -2002-08-25 Bruno Haible - - * Makefile.am (MOSTLYCLEANFILES): Add stdbool.h unconditionally. - -2002-08-06 Bruno Haible - - * gettext-0.11.5 released. - -2002-07-25 Bruno Haible - - * gettext-0.11.4 released. - -2002-07-21 Bruno Haible - - * mkdtemp.c: Test HAVE_STDINT_H_WITH_UINTMAX instead of HAVE_STDINT_H. - Test HAVE_INTTYPES_H_WITH_UINTMAX instead of HAVE_INTTYPES_H. - -2002-07-17 Bruno Haible - - * gettext-0.11.3 released. - -2002-07-16 Bruno Haible - - * javaexec.h (execute_java_class): Add argument exe_dir. - * javaexec.c (execute_java_class): Add argument exe_dir. If given, - attempt to run a native executable. - * Makefile.am (DEFS): Define EXEEXT. - * javacomp.sh.in: Use HAVE_GCJ_C instead of HAVE_GCJ. - -2002-06-15 Bruno Haible - - * javacomp.c (compile_java_class): Ignore gcj versions that start with - "3.0" or "3.1". (gcj 3.0.4 compiles GetURL.java to invalid bytecode, - that crashes with an IllegalAccessError when executed by gij 3.0.4 or - with a VerifyError when executed by Sun Java. Likewise for gcj 3.1.) - -2002-05-29 Bruno Haible - - * linebreak.c (nonspacing_table_data, uc_width): Upgrade to - Unicode 3.2.0. - -2002-05-18 Bruno Haible - - * basename.h: Use __GLIBC__ >= 2, because BeOS (which defines __GLIBC__ - to -2) doesn't declare basename() properly. - * basename.c: Likewise. - -2002-05-18 Bruno Haible - - * Makefile.am (RM): New variable. - (install-exec-am): Depend on install-exec-clean. - (install-exec-clean): New rule. - -2002-05-09 Bruno Haible - - * config.charset: Update for newest glibc. Add canonical names - ISO-8859-14, KOI8-T, TCVN5712-1, GEORGIAN-PS. - -2002-05-09 Bruno Haible - - * localcharset.c (get_charset_aliases): Add more Windows specific - aliases. - -2002-05-08 Owen Taylor - - * config.charset: A few additions for Solaris. - -2001-12-05 Bruno Haible - - * localcharset.c (locale_charset): Don't return an empty string. - -2001-10-23 Bruno Haible - - * config.charset: msdos in uk_UA uses CP1125. - -2001-08-05 Bruno Haible - - Make it possible to build libcharset with CC=gcc CFLAGS="-x c++". - * localcharset.c (locale_charset): Declare as extern "C". - (get_charset_aliases): Cast malloc and realloc results to 'char *'. - -2002-05-10 Bruno Haible - - * gettext.h: On Solaris, include . - -2002-05-04 Bruno Haible - - * javacomp.c (compile_java_class): Ignore non-digits in the first - line of the output of "gcj --version". Needed for gcj 3.1. - -2002-04-30 Bruno Haible - - * stdbool.h.in (_Bool): Omit the definition if _Bool is already known - as a builtin primitive type. Needed for cc on OSF/1 5.1. - * Makefile.am (stdbool.h): Substitute the value of HAVE__BOOL. - -2002-04-26 Bruno Haible - - * basename.h: Use __GLIBC__ instead of __GNU_LIBRARY__, because - Linux libc5 doesn't declare basename() properly. - * basename.c: Likewise. - -2002-04-24 Bruno Haible - - * gettext-0.11.2 released. - -2002-03-12 Bruno Haible - - * gettext-0.11.1 released. - -2002-03-10 Bruno Haible - - Upgrade to Unicode-3.1. - * Combining.txt: New file, extracted from Unicode-3.0 PropList.txt. - * gen-lbrkprop.c: Replace 0x10000 with 0x110000 everywhere. - (fill_width): Adapt to changed format of EastAsianWidth.txt in - Unicode-3.1. - (get_lbp): Make more compatible to Unicode-3.1 LineBreak.txt. - (debug_output_lbp): Avoid gcc-3.0 warning. - (unicode_org_lbp): New variable. - (fill_org_lbp): New function. - (debug_output_org_lbp): New function. - (debug_output_org_tables): New function. - (output_lbp): Handle new negative entries in level1[] correctly. - Pretty-print level1 contents. - (main): Expect one more argument. - * lbrkprop.h: Regenerated with Unicode-3.1 tables. - * linebreak.c (nonspacing_table_data): Add one more block. - (nonspacing_table_ind): Extend up to 0x1dfff. - (uc_width): Update for Unicode-3.1. - * Makefile.am (EXTRA_DIST): Add Combining.txt. - -2001-08-07 Andreas Jaeger - Andreas Schwab - Bruno Haible - - * 3level.h (EMPTY): New macro. - (*_get, *_add, *_iterate, *_finalize): Use it instead of ~(uint32_t) 0. - -2002-03-09 Bruno Haible - - Portability to AIX 4.3.3. - * stpncpy.h (gnu_stpncpy): Renamed from stpncpy. - (stpncpy): Define as an alias. - * stpncpy.c: Compile nothing on glibc systems is set. Otherwise name - the function gnu_stpncpy. - * Makefile.am (LIBADD_SOURCE): Remove stpncpy.h, stpncpy.c. - (libgettextlib_la_SOURCES): Add stpncpy.h, stpncpy.c. - -2002-03-04 Bruno Haible - - Portability to AIX 4.3.3. - * unsetenv.c: New file, extracted from setenv.c. - * setenv.c: Move the unsetenv() function to unsetenv.c. - * setenv.h: Cope with systems that have setenv() but not unsetenv(). - * Makefile.am (LIBADD_SOURCE): Add unsetenv.c. - (c-ctype.lo, tmpdir.lo): Depend on stdbool.h. - -2002-02-21 Bruno Haible - - * strncasecmp.c (__strncasecmp): Trivial simplification. - -2002-02-24 Bruno Haible - - * libstdarg.h: New file. - * vasprintf.c: Include it. - (asprintf): Modernize varargs handling. - (checkit): Likewise. - * xerror.c: Include libstdarg.h. - (xasprintf): Modernize varargs handling. - * Makefile.am (LIBADD_SOURCE): Add libstdarg.h. - -2002-02-24 Bruno Haible - - * vasprintf.h: New file. - * vasprintf.c: Include it. - * xerror.c: Likewise. - * Makefile.am (LIBADD_SOURCE): Add vasprintf.h. - -2002-02-17 Bruno Haible - - * utf8-ucs4.h (u8_mbtouc_aux): Stricter range checking. - -2002-02-15 Bruno Haible - - * config.charset [msdosdjgpp]: For Russian, use CP866. - -2002-02-09 Bruno Haible - - * c-ctype.h (c_is*): Change return type to bool. - * c-ctype.c (c_is*): Likewise. - - * tmpdir.h (path_search): Change last argument's type to bool. - * tmpdir.c (path_search): Likewise. - (direxists): Change return type to bool. - - * vasprintf.c (int_vasprintf): Change total_width to size_t. - -2002-02-11 Bruno Haible - - * config.charset: Add support for NetBSD. - -2002-02-02 Bruno Haible - - * ucs4-utf8.h: New file. - * ucs4-utf16.h: New file. - * Makefile.am (libgettextlib_la_SOURCES): Add them. - -2002-02-03 Bruno Haible - - * xerror.c (multiline_warning): Remove temporary hack. - -2002-01-31 Bruno Haible - - * gettext-0.11 released. - -2002-01-30 Bruno Haible - - * error.c: Compile nothing if HAVE_ERROR_AT_LINE is set. - * strtoul.c: Compile nothing if HAVE_STRTOUL is set. - * Makefile.am (libgettextlib_la_SOURCES): Add error.h, error.c, - strtoul.c. - (LIBADD_SOURCE): Remove error.h, error.c, strtoul.c. - -2002-01-24 Bruno Haible - - * getline.c: Remove NDEBUG. It killed the effect of assert(). - -2002-01-24 Bruno Haible - - * Makefile.am (libgettextlib_la_LDFLAGS): Use @LTLIBINTL@ instead of - @INTLLIBS@, and @LTLIBICONV@ instead of @LIBICONV@. - -2002-01-19 Bruno Haible - - * xerror.c (multiline_warning): Add a newline if the message doesn't - terminate with a newline. - -2002-01-12 Bruno Haible - - * gettext.h (gettext_noop): Remove the parentheses around the - expansion. - -2002-01-10 Bruno Haible - - * liballoca.h: Fix typo. - -2002-01-10 Andrew Zabolotny - Bruno Haible - - * localcharset.c: Rework OS/2 support. - * config.charset: Add OS/2 support. - -2002-01-09 Bruno Haible - - * setenv.h: Make it possible to include this file from C++. - * xsetenv.h: Likewise. - -2002-01-05 Bruno Haible - - * Makefile.am (libgettextlib_la_LDFLAGS): Add -lc. Needed on AIX. - -2002-01-05 Bruno Haible - - * wait-process.c (WIFSIGNALED): Make it return false when WIFSTOPPED - returns true. - (wait_subprocess): Use WIFSIGNALED instead of WCOREDUMP || WTERMSIG. - On AIX and OSF/1, WTERMSIG has a negative value if !WIFSIGNALED. And - WCOREDUMP is a BSDism, not POSIX. - -2001-12-23 Bruno Haible - - * xsetenv.h: New file. - * xsetenv.c: New file. - * Makefile.am (libgettextlib_la_SOURCES): Add them. - * classpath.c (set_classpath): Use xsetenv instead of setenv. - (reset_classpath): Likewise. - * javacomp.c (compile_java_class): Likewise. - * javaexec.c (execute_java_class): Likewise. - -2001-12-23 Bruno Haible - - * Makefile.am (libgettextlib_la_SOURCES): Add the contents of - libgettextlib_la_HEADER, except liballoca.h. - (LIBADD_SOURCE): Add the contents of LIBADD_HEADER, plus liballoca.h. - (UNUSED_SOURCE): Add the contents of UNUSED_HEADER. - (libgettextlib_la_HEADER, LIBADD_HEADER, UNUSED_HEADER): Remove - variables. - (noinst_HEADERS): Update. - -2001-12-21 Bruno Haible - - * localcharset.c (ISSLASH): Provide definition for DOS-like systems. - * basename.c (FILESYSTEM_PREFIX_LEN, ISSLASH): Likewise. - -2001-12-22 Bruno Haible - - * binary-io.h: New file, extracted from system.h. - * exit.h: New file, extracted from system.h. - * liballoca.h: New file, extracted from system.h. - * pathname.h: New file, extracted from system.h. - * stpcpy.h: New file, extracted from system.h. - * stpncpy.h: New file, extracted from system.h. - * strcase.h: New file, extracted from system.h. - * xgetcwd.h: New file, extracted from system.h. - * system.h: Remove file. - * Makefile.am (libgettextlib_la_SOURCES): Remove xgetcwd.c. - (libgettextlib_la_HEADER): Add binary-io.h, exit.h, liballoca.h, - pathname.h. Remove system.h. - (LIBADD_HEADER): Add stpcpy.h, stpncpy.h, strcase.h. - (UNUSED_SOURCE): Add xgetcwd.c. - (UNUSED_HEADER): Add xgetcwd.h. - * argmatch.c: Include exit.h instead of . - (EXIT_FAILURE): Remove fallback definition. - * concatpath.c: Include pathname.h, , stpcpy.h instead of - system.h. - * copy-file.c: Include , binary-io.h, exit.h instead of - system.h. - (O_BINARY): Remove fallback definition. - * execute.c: Include exit.h. - (EXIT_FAILURE): Remove fallback definition. - * findprog.c: Include pathname.h instead of system.h. - * javacomp.c: Include liballoca.h. Remove alloca() declaration stuff. - * javaexec.c: Likewise. - * setenv.c: Likewise. - * linebreak.h: Include instead of . - * linebreak.c: Include instead of . - * pipe-bidi.c: Include exit.h. - (EXIT_FAILURE): Remove fallback definition. - * pipe-in.c: Include exit.h. - (EXIT_FAILURE): Remove fallback definition. - * pipe-out.c: Include exit.h. - (EXIT_FAILURE): Remove fallback definition. - * wait-process.c: Include exit.h. - (EXIT_FAILURE): Remove fallback definition. - * xerror.c: Include exit.h. - (EXIT_FAILURE): Remove fallback definition. - * xmalloc.c: Include exit.h. - (EXIT_FAILURE): Remove fallback definition. - -2001-12-21 Bruno Haible - - * minmax.h: New file, extracted from system.h. - * system.h (MIN, MAX): Remove macros. - * Makefile.am (libgettextlib_la_HEADER): Add minmax.h. - -2001-12-21 Bruno Haible - - * gettext.h: Moved here from ../intl/libgettext.h. - * Makefile.am (noinst_HEADERS): Add it. - (gettextsrcdir, gettextsrc_DATA): New variables. - * copy-file.c: Include gettext.h instead of libgettext.h. - * execute.c: Likewise. - * javacomp.c: Likewise. - * javaexec.c: Likewise. - * pipe-bidi.c: Likewise. - * pipe-in.c: Likewise. - * pipe-out.c: Likewise. - * wait-process.c: Likewise. - * xerror.c: Likewise. - * xmalloc.c: Likewise. - -2001-12-20 Bruno Haible - - * execute.c (nonintr_open): Omit prototype. On some platforms mode_t - promotes to int, not mode_t. - * pipe-in.c (nonintr_open): Likewise. - * pipe-out.c (nonintr_open): Likewise. - -2001-12-20 Bruno Haible - - * setenv.c (__add_to_environ): Don't call realloc(NULL,...), use - malloc instead. For SunOS4. - -2001-12-17 Bruno Haible - - * pfnmatch.h: New file, from fileutils-4.1/lib/fnmatch.h with - modifications. - * pfnmatch.c: New file, from fileutils-4.1/lib/fnmatch.c with - modifications. - * Makefile.am (LIBADD_SOURCE): Add pfnmatch.c. - (LIBADD_HEADER): Add pfnmatch.h. - (DISTCLEANFILES): New variable. - -2001-12-18 Bruno Haible - - * getline.h: Include , for size_t. - -2001-12-15 Bruno Haible - - * localcharset.c: Add OS/2 support. - -2001-12-11 Bruno Haible - - * argmatch.c: Include , to declare exit(). - * copy-file.c: Include , for struct stat. - * gcd.c: Include , to declare abort(). - * setenv.c: Declare alloca. - (compar_fn_t): New typedef. - (KNOWN_VALUE, STORE_VALUE): Use it. - -2001-12-08 Bruno Haible - - * pipe-in.c (create_pipe_in): Don't redirect stdin if prog_stdin - is NULL. - * pipe-out.c (create_pipe_out): Don't redirect stdout if prog_stdout - is NULL. - -2001-11-24 Bruno Haible - - * javaexec.h (execute_java_class): New argument 'quiet'. - * javaexec.c (execute_java_class): Likewise. - -2001-11-17 Bruno Haible - - * hash.c (lookup_2): Remove function, identical to 'lookup'. - (init_hash): Remove test for NULL that can never succeed. - (insert_entry_2): Resize at 75%, not 90%. Call 'lookup' instead of - 'lookup_2'. - (compute_hashval): Shift by 9 bits, not by 4 bits. This drastically - improves the quality of the hash function, especially for short - strings. - -2001-11-11 Bruno Haible - - * javaexec.sh.in: Use HAVE_JAVA instead of HAVE_JAVA_JVM. - The problem seen with automake-1.4 is gone with automake-1.5. - -2001-11-10 Bruno Haible - - * argmatch.h (PARAMS): Also test for __SUNPRO_C, because 64-bit Solaris - cc needs prototypes although it defines __STDC__ to 0 by default. - Also test for __cplusplus and __PROTOTYPES, just for consistency with - libgnuintl.h. - * c-ctype.h (PARAMS): Likewise. - * gcd.h (PARAMS): Likewise. - * getline.h (PARAMS): Likewise. - * hash.h (PARAMS): Likewise. - * linebreak.h (PARAMS): Likewise. - * mbswidth.h (PARAMS): Likewise. - * mkdtemp.h (PARAMS): Likewise. - * setenv.h (PARAMS): Likewise. - * strpbrk.h (PARAMS): Likewise. - * strstr.h (PARAMS): Likewise. - * system.h (PARAMS): Likewise. - * tmpdir.h (PARAMS): Likewise. - -2001-11-05 Bruno Haible - - * tmpdir.c: Include string.h. - -2001-11-01 Bruno Haible - - * execute.c (execute): If the subprocess fails, exit with return code - 127, not -1 (which becomes 255). - * pipe-bidi.c (create_pipe_bidi): Likewise. - * pipe-in.c (create_pipe_in): Likewise. - * pipe-out.c (create_pipe_out): Likewise. - -2001-10-31 Bruno Haible - - * Makefile.am (execute.lo, javacomp.lo, javaexec.lo, pipe-bidi.lo, - pipe-in.lo, pipe-out.lo, progname.lo, wait-process.lo, xerror.lo): - Depend on @STDBOOL_H@. - * execute.c (EXIT_FAILURE): Provide a fallback definition, for SunOS 4. - * pipe-bidi.c (EXIT_FAILURE): Likewise. - * pipe-in.c (EXIT_FAILURE): Likewise. - * pipe-out.c (EXIT_FAILURE): Likewise. - * wait-process.c (EXIT_FAILURE): Likewise. - * xerror.c (EXIT_FAILURE): Likewise. - (xasprintf): Use VA_START instead of va_start. - * javacomp.c: Include alloca() declaration stuff. - * javaexec.c: Likewise. - -2001-10-28 Bruno Haible - - * progname.c (set_program_name) [BeOS]: Make program_name absolute - before removing "lt-". - -2001-10-21 Bruno Haible - - Create a libgettextlib shared library. - * Makefile.am (noinst_LIBRARIES): Remove variable. - (lib_LTLIBRARIES): New variable. - (libgettextlib_la_SOURCES): Renamed from libnlsut_a_SOURCES. - (libgettextlib_la_HEADER): Renamed from libnlsut_a_HEADER. - (libgettextlib_la_LIBADD): Renamed from libnlsut_a_LIBADD. - (libgettextlib_la_LDFLAGS): New variable. - -2001-10-21 Bruno Haible - - * mkdtemp.c: Include if it exists. Needed on platforms - which have but not , like BeOS. - -2001-10-21 Bruno Haible - - * stdbool.h.in: Avoid syntax error on BeOS if has - already been included. - -2001-10-21 Bruno Haible - - * basename.c: #undef basename before defining it. This avoids a - warning on non-glibc platforms. - -2001-10-09 Bruno Haible - - * localcharset.c (getc): Define as getc_unlocked if available. - -2001-10-10 Bruno Haible - - * wait-process.h (wait_subprocess): New argument 'exit_on_error'. - * wait-process.c (wait_subprocess): Implement 'exit_on_error' handling. - Treat exitcode 127 like a failure to create the subprocess. - * execute.h (execute): New argument 'exit_on_error'. - * execute.c (execute): Implement 'exit_on_error' handling. - * pipe.h (create_pipe_out, create_pipe_in, create_pipe_bidi): New - arguments 'null_stderr' and 'exit_on_error'. - * pipe-in.c (create_pipe_in): Implement 'null_stderr' and - 'exit_on_error' handling. - * pipe-out.c (create_pipe_out): Likewise. - * pipe-bidi.c (create_pipe_bidi): Likewise. - * javacomp.c: Include pipe.h, wait-process.h, safe-read.h. - (compile_java_class): Update for changed execute(). When testing for - gcj, ignore gcj version 2.xx, require at least gcj 3.0. - * javaexec.c (execute_java_class): Update for changed execute(). - * Makefile.am (libnlsut_a_SOURCES): Add safe-read.c. - (libnlsut_a_HEADER): Add safe-read.h. - (UNUSED_SOURCE): Remove safe-read.c. - (UNUSED_HEADER): Remove safe-read.h. - -2001-09-25 Bruno Haible - - Upgrade to automake-1.5. - * Makefile.am (AUTOMAKE_OPTIONS): Add 'no-dependencies'. - -2001-10-20 Bruno Haible - - Assume strchr() exists. - * system.h (strchr): Remove fallback definition. - -2001-09-17 Bruno Haible - - * backupfile.h: New file, from fileutils-4.1 with modifications. - * backupfile.c: New file, from fileutils-4.1 with modifications. - * addext.c: New file, from fileutils-4.1 with modifications. - * Makefile.am (libnlsut_a_SOURCES): Add backupfile.c, addext.c. - (libnlsut_a_HEADER): Add backupfile.h. - -2001-09-17 Bruno Haible - - * argmatch.h: New file, from fileutils-4.1 with simplifications. - * argmatch.c: New file, from fileutils-4.1 with simplifications. - * Makefile.am (libnlsut_a_SOURCES): Add argmatch.c. - (libnlsut_a_HEADER): Add argmatch.h. - -2001-09-17 Bruno Haible - - * copy-file.h: New file. - * copy-file.c: New file. - * Makefile.am (libnlsut_a_SOURCES): Add copy-file.c. - (libnlsut_a_HEADER): Add copy-file.h. - -2001-09-17 Bruno Haible - - * basename.h: New file. - * basename.c: Include it. Don't compile the function if already - present in the GNU C library. - * Makefile.am (libnlsut_a_HEADER): Add basename.h. - * system.h (gnu_basename, basename): Remove. - -2001-09-09 Bruno Haible - - * xmalloc.h: New file. - * strstr.h: New file. - * system.h (xmalloc, xrealloc, xstrdup): Remove declarations, now in - xmalloc.h. - (parse_printf_format, asprintf): Remove declarations. - (strstr): Remove declaration, now in strstr.h. - * xmalloc.c: Include xmalloc.h. Modernize. Assume exists. - * xstrdup.c: Include xmalloc.h. Modernize. Assume exists. - * concatpath.c: Include xmalloc.h. - * findprog.c: Likewise. - * fstrcmp.c: Include xmalloc.h instead of system.h. - * javacomp.c: Likewise. - * javaexec.c: Likewise. - * sh-quote.c: Likewise. - * hash.c: Include xmalloc.h. Don't declare xmalloc, xcalloc. - * xgetcwd.c: Include stdlib.h and xmalloc.h. Don't declare xmalloc, - xstrdup, free. - * Makefile.am (libnlsut_a_HEADER): Add xmalloc.h. - (LIBADD_HEADER): Add strstr.h. - - * Makefile.am (INCLUDES): Add -I$(top_srcdir)/intl. Needed because - some files include "libgettext.h", in the case $builddir != $srcdir. - -2001-09-25 Bruno Haible - - * javacomp.c (compile_java_class): Recognize javac exit code 2. - -2001-09-16 Bruno Haible - - * Makefile.am (libnlsut_a_SOURCES): Remove safe-read.c. - (libnlsut_a_HEADER, LIBADD_SOURCE, LIBADD_HEADER, UNUSED_SOURCE, - UNUSED_HEADER): New variables. - (noinst_HEADERS, EXTRA_DIST): Use them. - -2001-09-08 Bruno Haible - - * pipe-bidi.c (nonintr_close): Add function prototypes. - * pipe-in.c (nonintr_close, nonintr_open): Likewise. - * pipe-out.c (nonintr_close, nonintr_open): Likewise. - -2001-09-08 Bruno Haible - - * findprog.c: Include specification header before all other headers. - * fstrcmp.c: Likewise. - * full-write.c: Likewise. - * hash.c: Likewise. - * linebreak.c: Likewise. - * mbswidth.c: Likewise. - * progname.c: Likewise. - * safe-read.c: Likewise. - * wait-process.c: Likewise. - * xerror.c: Likewise. - * getline.c: Include getline.h. - * mbswidth.h: Include , for size_t. - * wait-process.h: Include and , for pid_t. - -2001-09-08 Bruno Haible - - * javacomp.sh.in: New file. - * javaexec.sh.in: New file. - -2001-09-06 Bruno Haible - - * javacomp.h: New file. - * javacomp.c: New file. - * javaexec.h: New file. - * javaexec.c: New file. - * classpath.c: New file. - * Makefile.am (EXTRA_DIST): Add classpath.c. - (libnlsut_a_SOURCES): Add javacomp.c, javaexec.c. - (noinst_HEADERS): Add javacomp.h, javaexec.h. - -2001-09-06 Bruno Haible - - * sh-quote.h: New file. - * sh-quote.c: New file. - * Makefile.am (libnlsut_a_SOURCES): Add sh-quote.c. - (noinst_HEADERS): Add sh-quote.h. - -2001-09-06 Bruno Haible - - * strpbrk.h: New file. - * strpbrk.c: New file, from glibc-2.2.4. - * Makefile.am (EXTRA_DIST): Add strpbrk.c. - (noinst_HEADERS): Add strpbrk.h. - -2001-09-06 Bruno Haible - - * setenv.h: New file. - * setenv.c: New file, from glibc-2.2.4. - * Makefile.am (EXTRA_DIST): Add setenv.c. - (noinst_HEADERS): Add setenv.h. - -2001-09-02 Bruno Haible - - * mkdtemp.h: New file. - * mkdtemp.c: New file, mostly taken from glibc-2.2.4. - * tmpdir.h: New file. - * tmpdir.c: New file, mostly taken from glibc-2.2.4. - * Makefile.am (EXTRA_DIST): Add mkdtemp.c. - (libnlsut_a_SOURCES): Add tmpdir.c. - (noinst_HEADERS): Add mkdtemp.h, tmpdir.h. - -2001-09-02 Bruno Haible - - * execute.h: New file. - * execute.c: New file. - * Makefile.am (libnlsut_a_SOURCES): Add execute.c. - (noinst_HEADERS): Add execute.h. - -2001-09-02 Bruno Haible - - * gcd.h: New file. - * gcd.c: New file. - * Makefile.am (libnlsut_a_SOURCES): Add gcd.c. - (noinst_HEADERS): Add gcd.h. - -2001-09-02 Bruno Haible - - * pipe.h: Ensure pid_t gets declared. - * pipe-bidi.c: Include pipe.h. - * pipe-in.c: Likewise. - * pipe-out.c: Likewise. - -2001-08-26 Bruno Haible - - * printf-parse.h: Remove file. - * printf.h: Remove file. - * printf-prs.c: Remove file. - * Makefile.am (EXTRA_DIST): Remove printf-prs.c. - (noinst_HEADERS): Remove printf-parse.h, printf.h. - * system.h (MIN): New macro. - -2001-07-28 Bruno Haible - - * printf-parse.h: Don't include . - (ISDIGIT): New macro. - (read_int, parse_one_spec): Use ISDIGIT instead of isdigit. - -2001-08-05 Bruno Haible - - * stdbool.h.in (_Bool): Define differently in C++ mode. - -2001-07-23 Bruno Haible - - * system.h: Assume exists. - * fstrcmp.c: Likewise. - -2001-07-01 Bruno Haible - - * utf8-ucs4.h: New file, extracted from linebreak.c. - * utf16-ucs4.h: New file, extracted from linebreak.c. - * linebreak.c (u8_mbtouc_aux, u8_mbtouc): Moved to utf8-ucs4.h. - (u16_mbtouc_aux, u16_mbtouc): Moved to utf16-ucs4.h. - * Makefile.am (noinst_HEADERS): Add utf8-ucs4.h, utf16-ucs4.h. - -2001-06-30 Bruno Haible - - * stdbool.h.in: New file. - * Makefile.am (EXTRA_DIST): Add stdbool.h.in. - (all-local): Depend on @STDBOOL_H@. - (stdbool.h): New rule. - (MOSTLYCLEANFILES): New variable. - * progname.h: Include stdbool.h. - (error_with_progname): Change type to bool. - * progname.c (error_with_progname): Likewise. - -2001-06-10 Bruno Haible - - * findprog.h: New file. - * findprog.c: New file. - * full-write.h: New file. - * full-write.c: New file. - * pipe.h: New file. - * pipe-bidi.c: New file. - * pipe-in.c: New file. - * pipe-out.c: New file. - * safe-read.h: New file. - * safe-read.c: New file. - * wait-process.h: New file. - * wait-process.c: New file. - * Makefile.am (libnlsut_a_SOURCES): Add findprog.c, full-write.c, - pipe-bidi.c, pipe-in.c, pipe-out.c, safe-read.c, wait-process.c. - (noinst_HEADERS): Add findprog.h, full-write.h, pipe.h, safe-read.h, - wait-process.h. - -2001-05-15 Bruno Haible - - * progname.h (set_program_name): New declaration. - * progname.c: Include . - (set_program_name): New function. - -2001-05-02 Bruno Haible - - * xerror.h: New file. - * xerror.c: New file. - * Makefile.am (libnlsut_a_SOURCES): Add xerror.c. - (noinst_HEADERS): Add xerror.h. - -2001-05-01 Bruno Haible - - Prefix most error messages with the program name, except those - starting with "filename:lineno:". - * progname.h: New file. - * progname.c: New file. - * Makefile.am (libnlsut_a_SOURCES): Add progname.c. - (noinst_HEADERS): Add progname.h. - -2001-05-01 Bruno Haible - - * vasprintf.c (int_vasprintf): Upon allocation failure, return -1, - not 0, to be consistent with glibc documentation. - -2001-09-13 Bruno Haible - - * gettext-0.10.40 released. - -2001-09-13 Bruno Haible - - * alloca.c (alloca): Replace 'REGISTER' with 'register'. - Reported by Len Makin . - -2001-07-24 Bruno Haible - - * gettext-0.10.39 released. - -2001-06-24 Bruno Haible - - * config.charset: Change canonical name of BIG5HKSCS to BIG5-HKSCS. - Change canonical name of SJIS to SHIFT_JIS. - -2001-06-25 Bruno Haible - - * mbswidth.c (mbsinit): Define to 1 if not defined. For SCO 3.2v5.0.2. - -2001-04-30 Bruno Haible - - Silence "gcc -Wall -Wwrite-strings" warnings. - * localcharset.c (charset_aliases): Change type to 'const char *'. - (get_charset_aliases): Change type of 'cp' to 'const char *'. - -2001-05-23 Bruno Haible - - * gettext-0.10.38 released. - -2001-05-23 Bruno Haible - - * linebreak.c (mbs_possible_linebreaks): Avoid broken EUC-KR - conversion in glibc-2.1. - (mbs_width_linebreaks): Likewise. - -2001-05-02 Bruno Haible - - * linebreak.c (iconv_string_keeping_offsets): Work around a glibc-2.1 - bug. - -2001-04-19 Bruno Haible - - * gettext-0.10.37 released. - -2001-04-04 Bruno Haible - - * mbswidth.h: New file, from textutils-2.0.13 with modifications. - * mbswidth.c: Likewise. - * Makefile.am (noinst_HEADERS): Add mbswidth.h. - (libnlsut_a_SOURCES): Add mbswidth.c. - -2001-04-04 Bruno Haible - - * linebreak.h (UC_BREAK_UNDEFINED): New enum value. - (u8_width_linebreaks, u16_width_linebreaks, u32_width_linebreaks, - mbs_width_linebreaks): Add overrides argument. - * linebreak.c (u8_width_linebreaks, u16_width_linebreaks, - u32_width_linebreaks, mbs_width_linebreaks): Add overrides argument. - -2001-03-29 Bruno Haible - - * gettext-0.10.36 released. - -2001-03-21 Bruno Haible - - * linebreak.c: Include string.h, needed for memset() declaration. - -2001-03-11 Bruno Haible - - * xmalloc.c (fixup_null_alloc): Unify messages. - -2001-03-10 Bruno Haible - - * linebreak.c (iconv_string_length): Don't call - iconv(cd,NULL,NULL,NULL,NULL) on glibc-2.1; it crashes. - - * localcharset.c (locale_charset): Allow wildcard syntax. Resolve - alias also if codeset is empty. - * config.charset (BeOS): Use wildcard syntax. - -2001-03-09 Bruno Haible - - * config.charset: Update from libiconv-1.6. - * localcharset.c: Likewise. - -2001-03-04 Bruno Haible - - * system.h (ISSLASH, HAS_DEVICE, IS_ABSOLUTE_PATH, IS_PATH_WITH_DIR, - FILESYSTEM_PREFIX_LEN): New macros. - (concatenated_pathname): New declaration. - (SET_BINARY): New macro. - * concatpath.c: New file. - * Makefile.am (libnlsut_a_SOURCES): Add concatpath.c. - -2001-03-03 Bruno Haible - - * gen-lbrkprop.c: New file. - * 3level.h: New file. - * lbrkprop.h: New file, generated by gen-lbrkprop. - * linebreak.h: New file. - * linebreak.c: New file. - * Makefile.am (EXTRA_DIST): Add gen-lbrkprop.c, 3level.h. - (libnlsut_a_SOURCES): Add linebreak.c. - (noinst_HEADERS): Add linebreak.h, lbrkprop.h. - - * c-ctype.h: New file. - * c-ctype.c: New file. - * Makefile.am (libnlsut_a_SOURCES): Add c-ctype.c. - (noinst_HEADERS): Add c-ctype.h. - - Allow the use of locale_charset() in src. - * config.charset: New file, from ../intl/. - * localcharset.c: New file, from ../intl/. - * ref-add.sin: New file, from ../intl/. - * ref-del.sin: New file, from ../intl/. - * Makefile.am (EXTRA_DIST): Add config.charset, ref-{add,del}.sin. - (libnlsut_a_SOURCES): Add localcharset.c. - (DEFS): Define to set LIBDIR. - (INCLUDES): Add -I. -I$(srcdir) -I.. to compensate for automake's - default DEFS setting. - (all-local, install-exec-local, uninstall-local, charset.alias): New - targets. - (SUFFIXES): New variable. - (.sin.sed): New rule. - (CLEANFILES): New variable. - -2001-03-03 Bruno Haible - - * printf.h (PARAMS): GNU C always supports prototypes. - * system.h (PARAMS): Likewise. - -2001-03-05 Bruno Haible - - * vasprintf.c (int_vasprintf): Cast second arg of strtoul, to avoid - warning. - -2001-02-04 Bruno Haible - - * system.h (O_BINARY, O_TEXT, setmode, fileno): New macros for systems - that distinguish between text and binary I/O. - -2001-02-04 Bruno Haible - - * error.c: Include only if ENABLE_NLS || _LIBC. - * getopt.c: Test ENABLE_NLS instead of 'defined HAVE_LIBINTL_H'. - * obstack.c: Likewise. - -2001-01-07 Bruno Haible - - * system.h: Assume , exist. - * fstrcmp.c: Likewise. - * vasprintf.c: Likewise. - -2001-01-05 Bruno Haible - - * basename.c: Include , needed by assert on SunOS4. - (basename): Convert to K&R C syntax. - * vasprintf.c (int_vasprintf): Don't use fabs, it needs -lm on some - platforms. - -2000-12-31 Bruno Haible - - * hash.c (insert_entry): Use obstack_copy instead of obstack_copy0. - -2000-12-30 Bruno Haible - - * system.h (open_po_file): Remove declaration. - -2000-12-30 Bruno Haible - - * printf.h (printf_info): New fields is_char, is_longlong. - (PA_FLAG_CHAR): New macro. - * printf-parse.h: Include inttypes.h. - (long_long_int): Define depending on HAVE_UNSIGNED_LONG_LONG. - (ptrdiff_t): Define depending on HAVE_PTRDIFF_T. - (parse_one_spec): Handle new ISO C99 length modifiers 'j', 't', 'z'. - -2000-12-30 Bruno Haible - - * basename.c: Update from current fileutils version, keeping the - function name as `basename' or `gnu_basename'. - - * error.c: Update from glibc-2.2 version. - - * fstrcmp.h: extern declaration. - - * getline.h: Comment out declarations on glibc2 systems. - * getline.c: Make getstr() static, to avoid conflict with libncurses. - - * getopt.h: Update from glibc-2.2 version. - * getopt.c: Likewise. - - * hash.h: Update from glibc-2.2 version. Don't assume keys are NUL - terminated. - (insert_entry, find_entry): Change argument type from 'const char*' to - 'const void*'. - (iterate_table): Add keylen argument. - * hash.c: Update from glibc-2.2 version. Don't assume keys are NUL - terminated. - (xcalloc): New declaration. - (struct hash_entry): Add keylen field. - (init_hash): Use xcalloc instead of xmalloc. - (insert_entry_2): Add keylen argument. Use xcalloc instead of xmalloc. - (iterate_table): Add keylen argument. - (lookup): Compare using memcmp, not strncmp. - (lookup_2): Add keylen argument. Compare using memcmp, not strcmp. - - * memmove.c: Revert to gettext-0.10.35 version, independent of glibc. - * memset.c: Likewise. - - * obstack.h: Update from glibc-2.2 version. Add a few consts. - * obstack.c: Update from glibc-2.2 version. - - * pathmax.h: Update from current fileutils version. - - * printf-prs.c: Revert to old, not multibyte aware version. Since the - messages in the catalog can be in any encoding, use of the current - locale's encoding is wrong here. - * printf-parse.h (find_spec): Likewise. - - * strtol.c: Update from glibc-2.2 version. - - * strstr.c (strstr): Add an empty statement after 'shloop' label. - - * vasprintf.c: Include stdlib.h if it exists. - (int_vasprintf): Increase buffer size for float/double values with - positive exponent only. Recognize new ISO C99 length modifiers 'j', - 't', 'z'. - (main): Add more tests. - - * xgetcwd.c (xgetcwd): If the required pathname length is smaller - than 1024, return a memory chunk of least possible size, instead - of size PATH_MAX + 2. In the loop, increment the size proportionally. - Use free/xmalloc instead of xrealloc to avoid copying for very long - paths. - - * xmalloc.c: Use NULL where appropriate. - - * xstrdup.c (xstrdup): Change argument type to 'const char *'. - -1999-12-27 Geoff Keating - - * vasprintf.c (int_vasprintf): Don't re-read the format character - as this mishandles strings like '%%s'. - -1998-01-18 Michael Snyder - - * vasprintf.c (int_vasprintf): Increase buffer size for float/double - values. - -2000-05-06 Ulrich Drepper - - * Makefile.am (EXTRA_DIST): Add basename.c. - (libnlsut_a_SOURCES): Add basename.c. - -1998-06-01 Ulrich Drepper - - * printf-parse.h: Change back from using `unsigned char' to `char'. - -1998-05-01 08:47 Ulrich Drepper - - * gettext-0.10.35 released. - -1998-04-29 Ulrich Drepper - - * printf-parse.h: Use unsigned char for parameters to read_int and - parse_one_spec (for losing Solaris systems). - Patch by Jim Meyering. - -1998-04-28 11:42 Ulrich Drepper - - * hash.c: Include malloc.h if stdlib.h is not available. - Include either string.h or strings.h. - - * system.h: Include limits.h before defining MAX to prevent - redefinitions. - - * Makefile.am: Move basename.c from EXTRA_DIST to libnlsut_a_SOURCES. - -1998-04-27 20:51 Ulrich Drepper - - * Makefile (EXTRA_DIST): Remove obstack.c here. - (libnlsut_a_SOURCES): Add obstack.c here. - - * alloca.c: Include string.h and stdlib.h if available. Fix typos. - - * getopt.c: Update from glibc version. - - * hash.c: Include stdlib.h. Use #if instead of #ifdef while testing - HAVE_* macros. Don't include system.h. - - * printf-parse.h: Use #if instead of #ifdef. - -1997-08-18 13:47 Philippe De Muyter - - * xstrdup.c (sys/types.h): File included. - * system.h (strstr): Function prototype added. - -1997-08-15 03:01 Ulrich Drepper - - * stpcpy.c, stpncpy.c: Copy version from glibc to fix severe bugs. - -1997-08-01 15:47 Ulrich Drepper - - * Makefile.am (AUTOMAKE_OPTIONS): Require version 1.2. - -Mon Mar 10 06:52:59 1997 Ulrich Drepper - - * xstrdup.c: Add more compatibility handling. Pretty-print - preprocessor directives. - - * printf-parse.h: Define _GNU_SOURCE not __USE_GNU. - - * Makefile.am: Change for use with automake-1.1. - -1997-02-08 04:26 Ulrich Drepper - - * stpncpy.c: Update from version in GNU libc 2.0. This corrects - a long standing bug in xgettext. - -Fri Dec 6 04:20:56 1996 Ulrich Drepper - - * system.h: Use PARAMS not __P for basename prototype. - Reported by Kaveh R. Ghazi . - -Tue Dec 3 17:50:34 1996 Ulrich Drepper - - * system.h: Add prototype for basename. - - * Makefile.am (EXTRA_DIST): Add basename.c. - -Fri Nov 22 03:32:34 1996 Ulrich Drepper - - * Makefile.am (EXTRA_DIST): Rename strncase.c to strncasecmp.c. - -Sat Aug 31 04:52:56 1996 Ulrich Drepper - - * Makefile.am (nlsut_SOURCES): Move error.c to EXTRA_DIST. - -Wed Jun 19 02:45:02 1996 Ulrich Drepper - - * system.h: Add prototypes for stpncpy, strcasecmp, and - strncasecmp. - - * Makefile.am (EXTRA_DIST): Add strncase and stpncpy. - -Fri Jun 14 03:56:23 1996 Ulrich Drepper - - * getline.c (_GNU_SOURCE): Define this macro, not __USE_GNU. - - * Makefile.am (nlsut_SOURCES): Move getline.c and printf-prs.c to - EXTRA_DIST. Reported by Kaveh R. Ghazi. - -Tue Jun 11 15:28:17 1996 Ulrich Drepper - - * printf-prs.c: Add some casts for `n'. - - * printf-parse.h: Add prototypes and __USE_GNU definition. - - * getline.c: Define __USE_GNU to get prototype. - - * Makefile.am (AUTOMAKE_OPTIONS): Add variable. Must be defined - in all subdirs. - -Wed Jun 5 16:54:43 1996 Ulrich Drepper - - * Makefile.am (INCLUDES): Define include paths to intl/ dir for - file. - -Mon Jun 3 19:13:36 1996 Ulrich Drepper - - * getopt.c: Update from latest GNU libc source. We don't need - the AC_REPLACE_GNU_GETOPT anymore. - - * Makefile.am (EXTRA_DIST): Remove files mentioned in - nlsut_SOURCES from EXTRA_DIST. - (nlsut_SOURCES): Add getopt.c and getopt1.c. - -Wed Apr 24 23:48:42 1996 Ulrich Drepper - - * Makefile.in (GETOPT): Remove variable. - (OBJECTS): Don't use $(GETOPT). If not present the getopt are now - listed in @LIBOBJS@. - -Fri Apr 5 12:00:51 1996 Ulrich Drepper - - * Makefile.in (SOURCES): Remove whoami.c. - (OBJECTS): Remove whoami.o. - - * system.h: Remove prototype for `get_submitter'. - -Thu Apr 4 21:14:51 1996 Ulrich Drepper - - * system.h: Add prototype for asprintf. - -Tue Apr 2 18:53:38 1996 Ulrich Drepper - - * Makefile.in (all-gettext): New goal. Same as all. - -Tue Apr 2 12:57:44 1996 Ulrich Drepper - - * error.c, error.h: Update from version in GNU libc. - -Tue Mar 26 12:35:56 1996 Ulrich Drepper - - * error.c, error.h: Applied François' patches for more - portability. - -Mon Mar 25 01:21:31 1996 Ulrich Drepper - - * Makefile.in (SOURCES): Add strstr.c. - -Sun Mar 24 18:41:42 1996 Ulrich Drepper - - * error.c (error_with_loc): In `one error per line' mode check for - old_file_name to be NULL first. Reported by François Pinard. - -Fri Mar 1 13:38:26 1996 Ulrich Drepper - - * getopt.c: Update from latest version in GNU C Library. - * getopt1.c: Ditto. - * getopt.h: Ditto. - - * error.c (error_with_loc): Not simply compare string pointers to - test for same file name. - (error_with_loc): file_name parameter is really const. - - * error.c (error_one_per_line): New variable. - (error_with_loc): If error_one_per_line != 0, print at most one - error per line. - - * error.h: Declare new variable error_one_per_line. - -Mon Jan 1 03:12:08 1996 Ulrich Drepper - - * Makefile.in (GETOPTSRC): Remove this variable. - -Sat Dec 30 16:26:07 1995 Ulrich Drepper - - * Makefile.in (ERROR, ERRORSRC): New variables. error.c is now - part of GNU libc and will not be needed on systems running this - lib. - (SOURCES): Replace error.c with $(ERRORSRC). - (OBJECTS): Replace error.o with $(ERROR). - -Tue Dec 19 22:08:10 1995 Ulrich Drepper - - * Makefile.in (Makefile): Explicitly use $(SHELL) for running - shell scripts. - -Sat Dec 9 16:40:49 1995 Ulrich Drepper - - * whoami.c, system.h, printf.h, printf-parse.h, hash.h, hash.c, - getline.h, fstrcmp.h, fstrcmp.c, error.h, error.c: - Use PARAMS instead of __P. Suggested by Roland McGrath. - -Wed Dec 6 16:07:27 1995 ghazi@caip.rutgers.edu - - * system.h: Fix alloca declaration so that it matches the one - generated by bison on HPUX. - -Sat Nov 25 16:13:50 1995 Ulrich Drepper - - * whoami.c: Don't use #ifdef, prefer #if. - - * error.c: Capitalize arguments of macros. Patch by François Pinard. - -Thu Nov 16 22:41:32 1995 Ulrich Drepper - - * whoami.c: Correct prototype declarations. - - * xmalloc.c: Include "error.h" instead of defining error ourself. - - * system.h: Include to get FILE definition. - - * hash.c: Peter Miller suggested not to use `div' as a variable name. - - * error.c (error_print_progname): For ANSI C provide complete type. - Include error.h. Patches by Peter Miller. - -Sun Nov 12 12:34:12 1995 Ulrich Drepper - - * whoami.c: Add prototypes. - (get_submitter): Use stpcpy if available. - -Sat Nov 11 00:26:31 1995 Ulrich Drepper - - * Makefile.in (HEADERS): - Add missing pathmax.h file. Reported by François Pinard. - -Fri Nov 10 09:59:06 1995 Ulrich Drepper - - * error.h (error_print_progname): - Provide real prototype, i.e. with argument types. - Patch by Peter Miller. - -Wed Nov 8 23:25:00 1995 Ulrich Drepper - - * system.h: Add prototype for xgetcwd. - - * Makefile.in (SOURCES): Add xgetcwd.c. - (OBJECTS): Add xgetcwd.o. - -Tue Nov 7 11:44:32 1995 Ulrich Drepper - - * Makefile.in (intldir): - New variable. Use its value instead of ../intl. - -Sun Nov 5 19:40:03 1995 Ulrich Drepper - - * Makefile.in (dist-gettext): Make synonym for dist. - -Sun Nov 5 18:04:11 1995 Ulrich Drepper - - * hash.c (find_entry): Remove unused variable retval. - -Sun Nov 5 11:38:19 1995 Ulrich Drepper - - * Makefile.in (dist): Suppress error message when ln failed. - Get files from $(srcdir) explicitly. - -Sat Oct 28 14:25:13 1995 Ulrich Drepper - - * fstrcmp.c: - Revised version by Peter Miller. Now based on GNU diff's version - of this algorithm. - -Wed Sep 27 20:18:44 1995 Ulrich Drepper - - * system.h: Include sys/types.h for those old SysV systems out there. - Reported by Francesco Potorti`. - -Mon Sep 25 22:26:28 1995 Ulrich Drepper - - * obstack.h (ptrdiff_t): - Don't define unless HAVE_PTRDIFF_T is not defined. This - solves problems with Sun's compiler. Reported by Marcus Daniels. - -Mon Sep 18 10:45:48 1995 Ulrich Drepper - - * fstrcmp.h, fstrcmp.c: Initial revision - -Sun Sep 17 23:37:15 1995 Ulrich Drepper - - * Makefile.in: Add fstrcmp.[ch] to libgettext. - - * system.h (open_po_file): Remove unused `use_path' parameter. - - * hash.c: - Rewrite for uniform return values: < 0 for error cases, else >= 0. - - * Makefile.in: hash.[ch] moved from src/ to lib/ subdirectory. - -Mon Aug 28 10:05:31 1995 Ulrich Drepper - - * Makefile.in: Remove Emacs hints. - - * Makefile.in (libnlsut.a): Use $@ instead of full name. - -Sat Aug 19 17:37:24 1995 Ulrich Drepper - - * Makefile.in (install-src): Make depend on `all'. - -Tue Aug 15 05:51:25 1995 Ulrich Drepper - - * system.h (xgetcwd): Remove prototype. - -Mon Aug 14 23:52:41 1995 Ulrich Drepper - - * Makefile.in (install-src): New no-op goal. - -Wed Aug 9 10:05:09 1995 Ulrich Drepper - - * system.h (MAX): - Mark GCC variant with __extension__ and change typeof to __typeof__. - -Tue Aug 8 21:02:28 1995 Ulrich Drepper - - * strcasecmp.c: Initial revision. - - * Makefile.in (SOURCES): Add strcasecmp.c. - -Mon Aug 7 21:17:51 1995 Ulrich Drepper - - * strcspn.c: Initial revision. - - * Makefile.in (SOURCES): Add strcspn.c. - -Fri Aug 4 15:44:00 1995 Ulrich Drepper - - * Makefile.in (dist): Remove `copying instead' message. - -Wed Aug 2 18:51:33 1995 Ulrich Drepper - - * Makefile.in (ID, TAGS): Do not use $^. - -Tue Aug 1 20:07:40 1995 Ulrich Drepper - - * Makefile.in (distclean): Remove ID file. - - * Makefile.in (TAGS, ID): Use $^ as command argument. - (TAGS): Give etags -o option t write to current directory, - not $(srcdir). - (ID): Use $(srcdir) instead os $(top_srcdir)/src. - -Wed Jul 19 23:54:32 1995 Ulrich Drepper - - * strtol.c: Change copyright from LGPL to GPL. - -Tue Jul 18 20:09:04 1995 Ulrich Drepper - - * strtol.c (ULONG_MAX): Define if not defined in system header. - Reported by Francesco Potorti`. - - * printf-parse.h (parse_one_spec): Define prototype. - - * obstack.h: Put stddef.h include statement back in. - -Tue Jul 18 00:19:54 1995 Ulrich Drepper - - * vasprintf.c, strtol.c, obstack.c, getopt1.c, getopt.c, system.h, - printf.h, obstack.h, getline.h: Uniform test for __STDC__. - -Mon Jul 17 01:13:09 1995 Ulrich Drepper - - * system.h (HAVE_MALLOC_H): - Remove obsolete #else case. Was needed when we tried - to define free ourself. - - * system.h, error.h, strtoul.c, printf-parse.h, memmove.c, - getline.h: Add `Free' to Software Foundation. - - * getline.h: - Remove unneeded comment after #endif. We now use indentation. - - * getline.c: Indent preprocessor directives. - - * strtol.c (NULL): Define manualy if not defined in any included file. - -Sat Jul 15 23:59:26 1995 Ulrich Drepper - - * obstack.h: Add accidentally removed #endif. - -Sat Jul 15 23:31:45 1995 Ulrich Drepper - - * vasprintf.c, printf-prs.c, obstack.h, obstack.c, memmove.c, - printf.h, printf-parse.h: - Exchange old LGPL against new GPL (no LGPL code in normal packages). - - * getline.h: Add copyright. - - * strtoul.c, strtol.c: Initial revision - - * obstack.h (ptrdiff_t): - Don't include stddef.h. Try to get it with sys/types.h and - if _PTRDIFF_T and ptrdiff_t are not defined, define it to off_t - (which is at least defined in config.h). - - * system.h (HAVE_STDLIB_H): - Is not useful if STDC_HEADERS is not also defined. - -Sat Jul 15 00:49:22 1995 Ulrich Drepper - - * error.h: Correct definition of size_t: don't try to include - stddef.h, but instead use sys/types. If it is not found here, - the config.h file will define it. - - * system.h: Load before defining prototypes. This - avoids problems with size_t not defined in the prototypes. - - * printf-parse.h (find_spec): Handle missing mblen function. - -Thu Jul 13 22:28:38 1995 Ulrich Drepper - - * system.h (MAX): - Move definition to end to reduce possibility of redefinition. - - * whoami.c (get_username, get_hostname, get_submitter): - Use K&R prototypes. - - * vasprintf.c: Include config.h. - - * printf.h (printf_info): - Use `char' and `unsigned' instead of `unsigned char' and - `unsigned int' resp. to help these dumb K&R compilers. - - * printf-parse.h: - Compilers other than GCC don't have `long long', K&R compiler - even don't have `long double'. - -Thu Jul 13 01:41:41 1995 Ulrich Drepper - - * Makefile.in (check): New goal. - -Tue Jul 11 21:37:19 1995 Ulrich Drepper - - * vasprintf.c (HAVE_STRTOUL): - Not needed anymore because we substitute strtoul if not present. - -Tue Jul 11 01:34:06 1995 Ulrich Drepper - - * whoami.c: Define NULL is necessary. - - * obstack.h: Protect inclusion of stddef and define ptrdiff_t if - necessary. - - * memmove.c: Include sys/types.h and perhaps stdlib.h instead of - stddef.h for getting size_t defined. - - * system.h: Don't define free, qsort, and strtol when no header - file is available. - Define EXIT_{FAILURE,SUCCESS} after stdlib.h is included. - - * printf.h: Protect non-ANSI header inclusion. - Protect __P definition. - Don't use __const in prototypes. - - * printf-prs.c: Include config.h. - Protect stdlib.h inclusion. - - * printf-parse.h: Protect header inclusion for non-ANSI environments. - Protect and de-GCC-ify MAX/MIN definition. - - * Makefile.in (SOURCES): New files: strtol.c and strtoul.c. - Depend $(OBJECT) on config.h,, instead of $(LIBOBJS). - Better dependency for printf-prs.o. - -Tue Jul 4 22:09:00 1995 Ulrich Drepper - - * Makefile.in (SOURCES): add memmove.c. - - * memmove.c: Initial revision. - - * error.h: Make size_t definition correct for !__STDC__. - Include for getting size_t defined. - - * vasprintf.c: Don't use strtoul if !HAVE_STRTOUL. - - * system.h: Include also if defined HAVE_STDLIB_H. - Make sure that qsort, free and strtoul are prototyped. - -Mon Jul 3 15:02:50 1995 Ulrich Drepper - - * system.h: system.h (MAX): don't use GCC feature if !__STDC__. - Fix typo in EXIT_FAILURE defintion. - - * xmalloc.c: Include prototype for calloc.c. - - * Makefile.in (INCLUDES): even better path list. - (INCLUDES): remove unnecessary paths. - Correct path to original version. - -Sun Jul 2 02:01:43 1995 Ulrich Drepper - - * First official release. This directory contains supplementary - code taken from GNU C Library and other package's lib/ - directories. diff -Nru gettext-0.19.6/gnulib-local/lib/ChangeLog.1 gettext-0.19.7/gnulib-local/lib/ChangeLog.1 --- gettext-0.19.6/gnulib-local/lib/ChangeLog.1 2015-08-21 05:48:28.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/ChangeLog.1 1970-01-01 00:00:00.000000000 +0000 @@ -1,1796 +0,0 @@ -2006-07-30 Bruno Haible - - * propername.c: Temporarily use c_strstr always. - -2006-07-30 Bruno Haible - - * c-strstr.h: Renamed from strstr.h. Don't test HAVE_STRSTR. - (c_strstr): Renamed from strstr. - * c-strstr.c: Renamed from strstr.c. - (c_strstr): Renamed from strstr. - * javacomp.c: Include c-strstr.h instead of strstr.h. - (is_envjavac_gcj): Use c_strstr instead of strstr. - * propername.c: Include c-strstr.h. - (proper_name_utf8): Use c_strstr instead of strstr. - -2006-07-29 Bruno Haible - - * xreadlink.c: Assume exists. - -2006-07-29 Bruno Haible - - * localcharset.c: Assume , , exist. - -2006-07-23 Bruno Haible - - Make fstrcmp multithread-safe. - * lock.h: New file, from gnulib. - * lock.c: New file, from gnulib. - * tls.h: New file, from gnulib. - * tls.c: New file, from gnulib. - * Makefile.am (libgettextlib_la_SOURCES): Add them. - * fstrcmp.c: Include lock.h, tls.h. - (uintptr_t): New macro. - (struct context): New structure, grouping all variables. - (diag, compareseq): Add context argument. - (buffer_key, bufmax_key): New variables. - (keys_init): New functions. - (keys_init_once): New variable. - (fstrcmp): Establish a struct context. Allocate memory per-thread. - -2006-07-22 Bruno Haible - - * gl_anyhash_list1.h: New file, from gnulib. - * gl_anyhash_list2.h: New file, from gnulib. - * gl_anylinked_list1.h: New file, from gnulib. - * gl_anylinked_list2.h: New file, from gnulib. - * gl_linkedhash_list.h: New file, from gnulib. - * gl_linkedhash_list.c: New file, from gnulib. - * gl_list.h: New file, from gnulib. - * gl_list.c: New file, from gnulib. - * size_max.h: New file, from gnulib. - * Makefile.am (libgettextlib_la_SOURCES): Add them. - (DEFS): Also define SIGNAL_SAFE_LIST. - * clean-temp.c: Include limits.h, gl_linkedhash_list.h. - (struct tempdir): Use gl_list_t instead of a self-made array-list. - (string_equals, string_hash): New functions. - (SIZE_BITS): New macro. - (cleanup): Use gl_list_iterator_t to walk through the list. No need - tp ignore NULLs any more. - (create_temp_dir, register_temp_file, unregister_temp_file, - register_temp_subdir, unregister_temp_subdir, - cleanup_temp_dir_contents): Update. - -2006-07-18 Bruno Haible - - * xalloc.h (xzalloc): New declaration. - * xmalloc.c (xzalloc): New function. - -2006-07-25 Bruno Haible - - * Makefile.msvc: Remove file. - * Makefile.am (EXTRA_DIST): Remove Makefile.msvc. - -2006-07-25 Bruno Haible - - * Makefile.vms: Remove file. - * Makefile.am (EXTRA_DIST): Remove Makefile.vms. - -2006-07-22 Bruno Haible - - * stdbool_.h: Update from gnulib. - - * quotearg.c: Update from gnulib. - - * pathmax.h: Update from gnulib. - - * obstack.h: Update from gnulib, keeping DLL_VARIABLE annotation. - * obstack.c: Update from gnulib. - - * minmax.h: Update from gnulib. - - * mbswidth.c: Update from gnulib. - - * wcwidth.h: New file, from gnulib. - * Makefile.am (libgettextlib_la_SOURCES): Add it. - - * getopt.c: Update from gnulib. - * getopt1.c: Likewise. - - * gcd.c: Update from gnulib. - - * fwriteerror.c: Update from gnulib. - - * fnmatch_.h: Update from gnulib. - * fnmatch.c: Likewise. - * fnmatch_loop.c: Likewise. - - * fatal-signal.c: Include , not "config.h". - * findprog.c: Likewise. - * pipe.c: Likewise. - * progname.c: Likewise. - * progreloc.c: Likewise. - * wait-process.c: Likewise. - - * c-strcasecmp.c: Update from gnulib. Don't assume that - UCHAR_MAX <= INT_MAX. - * c-strncasecmp.c: Likewise. - - * copy-file.c: Update from gnulib. - - * atexit.c: Update from gnulib. - - * verify.h: New file, from gnulib. - * argmatch.h: Update from gnulib, keeping DLL_VARIABLE annotation. - * Makefile.am (libgettextlib_la_SOURCES): Add verify.h. - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2006-07-14 Bruno Haible - - * Makefile.am (MOSTLYCLEANFILES): Add core and *.stackdump. - -2006-07-13 Bruno Haible - - Fix construction of temporary directory names on mingw. - * tmpdir.c (ISSLASH): New macro. - (path_search): Use it, and remove also the first character if it is - a slash. - Reported by Steffen Macke . - -2006-07-13 Bruno Haible - - * Makefile.am (EXTRA_DIST): Add javaversion.class. - -2006-07-11 Bruno Haible - - * javacomp.c: Fix a comment. - Reported by Jim Meyering. - -2006-07-02 Bruno Haible - - * clean-temp.h (register_temp_file): Renamed from enqueue_temp_file. - (unregister_temp_file): Renamed from dequeue_temp_file. - (register_temp_subdir): Renamed from enqueue_temp_subdir. - (unregister_temp_subdir): Renamed from dequeue_temp_subdir. - * clean-temp.c (register_temp_file): Renamed from enqueue_temp_file. - (unregister_temp_file): Renamed from dequeue_temp_file. - (register_temp_subdir): Renamed from enqueue_temp_subdir. - (unregister_temp_subdir): Renamed from dequeue_temp_subdir. - (cleanup_temp_file, cleanup_temp_subdir): Update. - * javacomp.c (write_temp_file, is_envjavac_gcj_14_14_usable, - is_envjavac_gcj_14_13_usable, is_envjavac_nongcj_usable, - is_gcj_present, is_gcj_14_14_usable, is_gcj_14_13_usable, - is_javac_usable): Update. - -2006-06-29 Bruno Haible - - * clean-temp.h: Include . - (struct temp_dir): Add cleanup_verbose field. - (create_temp_dir): Add parentdir, cleanup_verbose arguments. - * clean-temp.c (struct tempdir): Add cleanup_verbose field. - (create_temp_dir): Add parentdir, cleanup_verbose arguments. - (do_unlink. do_rmdir): New functions. - (cleanup_temp_file, cleanup_temp_subdir, cleanup_temp_dir_contents, - cleanup_temp_dir): Use them. - * javacomp.c (is_envjavac_gcj_14_14_usable, - is_envjavac_gcj_14_13_usable, is_envjavac_nongcj_usable, - is_gcj_present, is_gcj_14_14_usable, is_gcj_14_13_usable, - is_javac_usable): Update. - -2006-06-28 Bruno Haible - - Assume on all Unix platforms. Assume closedir works. - * backupfile.c: Don't include , , . - (NLENGTH): Remove macro. - (max_backup_version): Use closedir directly. - -2006-06-27 Bruno Haible - - Assume correct S_ISDIR macro. - * mkdtemp.c: Remove test of STAT_MACROS_BROKEN. - * tmpdir.c: Remove test of STAT_MACROS_BROKEN. - -2006-06-27 Bruno Haible - - Assume ANSI C header files and functions. - * fnmatch.c (ISASCII): Remove macro. - (isblank): Renamed from ISBLANK. - (isgraph): Renamed from isgraph. - (ISPRINT, ISDIGIT, ISALNUM, ISALPHA, ISCNTRL, ISLOWER, ISPUNCT, - ISSPACE, ISUPPER, ISXDIGIT): Remove macros. - (FOLD): Update. - * fnmatch_loop.c (FCT): Update. - * getndelim2.c: Include always. - * mbswidth.c (IN_CTYPE_DOMAIN, ISPRINT, ISCNTRL): Remove macros. - (mbsnwidth): Use isprint, iscntrl instead. - * strtol.c (IN_CTYPE_DOMAIN): Remove macro. - (ISSPACE, ISALPHA, TOUPPER): Use isspace, isalpha, toupper directly. - -2006-06-28 Bruno Haible - - * xvasprintf.h: Update from gnulib. - -2006-04-14 Bruno Haible - - Assume autoconf >= 2.60. - * Makefile.am (docdir): Remove variable. - -2006-06-21 Bruno Haible - - Avoid warnings from recent versions of mcs. - * csharpcomp.sh.in (options_mcs): Don't use options -o, -L, -r any - more. Use options documented since mcs-1.0 instead. Similarly for -g. - * csharpcomp.c (compile_csharp_using_mono): Likewise. - -2006-06-17 Bruno Haible - - * iconvstring.c (UNSAFE_ICONV): New macro. - (iconv_string): Add slower but safer code for UNSAFE_ICONV. - Needed for IRIX iconv() and NetBSD's iconv(). - -2006-06-17 Bruno Haible - - * iconvstring.c (iconv_string): Recognize conversion failures also - from NetBSD's iconv(). - -2006-06-17 Bruno Haible - - * config.charset: Update for NetBSD 3.0. - -2006-06-17 Bruno Haible - - * xgetcwd.c: Assume errno.h declares errno. - * xreadlink.c: Likewise. - -2006-06-16 Eric Blake - - * unsetenv.c [!defined errno]: Assume errno.h declares errno. - * strtol.c [!defined errno]: Likewise. - -2006-06-04 Bruno Haible - - * gettext.h (_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS): Parenthesize. - Include stdlib.h. - -2006-05-17 Bruno Haible - - Cygwin portability. - * classpath.c (PATH_SEPARATOR) [CYGWIN]: Define as ':'. - * javaexec.c (execute_java_class): Test for jview program also on - Cygwin. - * localcharset.c (WIN32_NATIVE): Renamed from WIN32. - * progreloc.c (WIN32_NATIVE): Renamed from WIN32. - -2006-05-16 Bruno Haible - - * localcharset.c [CYGWIN]: Include . - (get_charset_aliases): For Cygwin, return the same CPxxx aliases list - as under WIN32. - (locale_charset) [CYGWIN]: Try to retrieve the encoding from the - environment variables. Fall back to GetACP(). - -2006-05-16 Bruno Haible - - * javacomp.c (is_envjavac_gcj_14_14_usable, - is_envjavac_gcj_14_13_usable, is_envjavac_nongcj_usable, - is_gcj_present, is_gcj_14_14_usable, is_gcj_14_13_usable, - is_javac_usable): Remove unused variable. - -2006-05-15 Bruno Haible - - * Makefile.am: Test flag WOE32DLL instead of CYGWINDLL. - -2006-04-30 Bruno Haible - - * progreloc.c: Include if available. - (find_executable): Use _NSGetExecutablePath when possible. - -2006-05-12 Bruno Haible - - * mkdtemp.c [MINGW]: Include . - (mkdir): Define using _mkdir. - -2006-05-11 Bruno Haible - - * Makefile.am (libgettextlib_la_SOURCES, libgettextlib_la_LDFLAGS): - Modify for Cygwin. - -2006-05-09 Bruno Haible - - * xvasprintf.c (xstrcat): Handle overflow. Suggested by Paul Eggert. - Optimize away a va_copy call. Suggested by Eric Blake. Add missing - va_end call. - -2006-05-06 Charles Wilson - - * progreloc.c (maybe_executable) [CYGWIN]: Use the access() function. - -2006-04-30 Bruno Haible - - * javacomp.h (compile_java_class): Add source_version, target_version - arguments. - * javacomp.c: Rewritten to choose only a compiler that respects the - specified source_version and target_version. - -2006-04-30 Bruno Haible - - * xvasprintf.c: Include limits.h, string.h, xsize.h. - (EOVERFLOW): Define fallback value. - (xstrcat): New function. - (xvasprintf): Recognize the special case of a string concatenation. - -2006-03-13 Bruno Haible - - * javaversion.h: New file. - * javaversion.c: New file. - * javaversion.java: New file. - * javaversion.class: New file, generated from javaversion.java. - * Makefile.am (libgettextlib_la_SOURCES): Add javaversion.h, - javaversion.c. - (pkgdatadir, pkgdata_DATA): New variables. - (EXTRA_DIST): Add javaversion.java. - (DEFS): Also define PKGDATADIR. - * Makefile.msvc (pkgdatadir, IIpkgdatadir): New variables. - (CFLAGS): Also define PKGDATADIR. - (OBJECTS): Add javaversion.obj. - (javaversion.obj): New rule. - * Makefile.vms (pkgdatadir): New variable. - (CFLAGS): Also define PKGDATADIR. - (OBJECTS): Add javaversion.obj. - (javaversion.obj): New rule. - -2006-04-30 Bruno Haible - - * xvasprintf.h: New file, from gnulib. - * xvasprintf.c: New file, from gnulib. - * xasprintf.c: New file, from gnulib. - * xerror.h (xasprintf): Remove declaration. - * xerror.c: Don't include stdarg.h, error.h, exit.h, vasprintf.h, - gettext.h. - (_): Remove macro. - (xasprintf): Remove function. - * Makefile.am (libgettextlib_la_SOURCES): Add xvasprintf.h, - xvasprintf.c, xasprintf.c. - * Makefile.msvc (OBJECTS): Add xvasprintf.obj, xasprintf.obj. - (xvasprintf.obj, xasprintf.obj): New rules. - * Makefile.vms (OBJECTS): Add xvasprintf.obj, xasprintf.obj. - (xvasprintf.obj, xasprintf.obj): New rules. - -2006-05-01 Bruno Haible - - * javacomp.sh.in: Update for changed javacomp.m4. - -2006-04-23 Bruno Haible - - * addext.c: Include unconditionally. - * clean-temp.c: Likewise. - * copy-file.c: Likewise. - * execute.c: Likewise. - * fatal-signal.c: Likewise. - * findprog.c: Likewise. - * getopt_.h: Likewise. - * mkdtemp.c: Likewise. - * pathmax.h: Likewise. - * pipe.h: Likewise. - * pipe.c: Likewise. - * safe-read.c: Likewise. - * unsetenv.c: Likewise. - * wait-process.h: Likewise. - * xgetcwd.c: Likewise. - * Makefile.am (BUILT_SOURCES): Conditionally add unistd.h. - (unistd.h): New rule. - (MOSTLYCLEANFILES): Add unistd.h. - -2006-04-17 Bruno Haible - - * Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs). - -2006-04-17 Bruno Haible - - * Makefile.am (byteswap.h): Don't use $(srcdir)/$<, for portability. - -2006-04-09 Bruno Haible - - * clean-temp.h: New file. - * clean-temp.c: New file. - * Makefile.am (libgettextlib_la_SOURCES): Add them. - * Makefile.msvc (OBJECTS): Add clean-temp.obj. - (clean-temp.obj): New rule. - * Makefile.vms (OBJECTS): Add clean-temp.obj. - (clean-temp.obj): New rule. - -2006-04-09 Bruno Haible - - * fatal-signal.c: Don't include string.h. - (at_fatal_signal): Use a copying loop instead of memcpy. - -2006-04-05 Bruno Haible - - * config.charset: Update Juan Manuel Guerrero's address. - -2006-04-02 Bruno Haible - - * gettext.h (_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS, pgettext_expr, - dpgettext_expr, npgettext_expr, dnpgettext_expr): New macros. - (dcpgettext_expr, dcnpgettext_expr): New inline functions. - Reported by Chusslove Illich . - -2006-04-02 Bruno Haible - - Support for non-ASCII author names. - * propername.h: New file. - * propername.c: New file. - * Makefile.am (libgettextlib_la_SOURCES): Add propername.h, - propername.c. - * Makefile.msvc (OBJECTS): Add propername.obj. - (propername.obj): New rule. - * Makefile.vms (OBJECTS): Add propername.obj. - (propername.obj): New rule. - -2006-03-28 Bruno Haible - - * iconvstring.h: New file. - * iconvstring.c: New file, mostly extracted from ../src/msgl-iconv.c. - * Makefile.am (libgettextlib_la_SOURCES): Add them. - * Makefile.msvc (OBJECTS): Add iconvstring.obj. - (iconvstring.obj): New rule. - * Makefile.vms (OBJECTS): Add iconvstring.obj. - (iconvstring.obj): New rule. - -2006-03-12 Bruno Haible - - * javaexec.sh.in: Update for changed javaexec.m4. - -2006-03-11 Bruno Haible - - Avoid gcc-4.x warnings. - * hash.h (struct hash_entry): New declaration. - (struct hash_table): Use it, instead of 'void *'. - * hash.c (hash_init): Update. - (lookup, hash_find_entry, insert_entry_2): Remove casts. - (resize): Update. - (hash_insert_entry, hash_set_value): Remove casts. - (hash_iterate, hash_iterate_modify): Likewise. - -2006-03-11 Bruno Haible - - * hash.h (hash_iterate_modify): New declaration. - * hash.c (hash_iterate_modify): New function. - -2006-01-10 Bruno Haible - - * localcharset.c: Assume ANSI C. Fixes a gcc warning. - Reported by Werner Lemberg . - -2005-12-29 Bruno Haible - - * progreloc.c (set_program_name_and_installdir): Fix compilation error. - -2005-12-04 Bruno Haible - - * csharpexec.sh.in: Add support for 'clix' launcher (untested). - * csharpexec.c: Likewise. - (execute_csharp_using_sscli): New function. - (execute_csharp_program): Call it. - -2005-12-04 Bruno Haible - - * csharpcomp.sh.in: Suffix for resources is .resources, not .resource. - -2005-12-04 Bruno Haible - - Cygwin portability. - * progreloc.c: Include also on Cygwin. - (find_executable): Add support for Cygwin. - (set_program_name_and_installdir): Handle also platforms with nonempty - EXEEXT. - * relocatable.c: Include also on Cygwin. - (DllMain): Add support for Cygwin. - (get_shared_library_fullname): Update. - * relocwrapper.c (add_dotbin): Handle also platforms with nonempty - EXEEXT. - Patches partially from Charles Wilson . - -2005-10-09 Bruno Haible - - * c-strcasestr.h: New file. - * c-strcasestr.c: New file, based on gnulib's strcasestr.c. - * Makefile.am (libgettextlib_la_SOURCES): Add them. - -2005-10-06 Bruno Haible - - * addext.c: Test HAVE_CONFIG_H using #ifdef. - * argmatch.c: Likewise. - * backupfile.c: Likewise. - * c-strcasecmp.c: Likewise. - * c-strncasecmp.c: Likewise. - * canonicalize.c: Likewise. - * closeout.c: Likewise. - * exitfail.c: Likewise. - * fnmatch.c: Likewise. - * full-write.c: Likewise. - * fwriteerror.c: Likewise. - * getline.c: Likewise. - * getndelim2.c: Likewise. - * getopt_.h: Likewise. - * hash.c: Likewise. - * memmove.c: Likewise. - * quote.c: Likewise. - * quotearg.c: Likewise. - * readlink.c: Likewise. - * safe-read.c: Likewise. - * setenv.c: Likewise. - * strcspn.c: Likewise. - * strerror.c: Likewise. - * strstr.c: Likewise. - * strtol.c: Likewise. - * unsetenv.c: Likewise. - * xgetcwd.c: Likewise. - * xmalloc.c: Likewise. - * xreadlink.c: Likewise. - * xsetenv.c: Likewise. - * xstrdup.c: Likewise. - Reported by Ralf Wildenhues on bug-gnulib. - -2005-10-03 Bruno Haible - - * hash.h (hash_insert_entry): Return a pointer instead of int. - * hash.c (hash_insert_entry): Return a pointer to the copy of the key. - -2005-10-03 Bruno Haible - - * hash.h: Add comments everywhere. - (hash_init): Renamed from init_hash. - (hash_destroy): Renamed from delete_hash. - (hash_find_entry): Renamed from find_entry. - (hash_insert_entry): Renamed from insert_entry. - (hash_set_value): New declaration. - (hash_iterate): Renamed from iterate_table. - * hash.c: Add comments everywhere. Reorder. - (hash_init): Renamed from init_hash. - (hash_destroy): Renamed from delete_hash. - (hash_find_entry): Renamed from find_entry. - (hash_insert_entry): Renamed from insert_entry. - (hash_set_value): New function. - (hash_iterate): Renamed from iterate_table. - -2005-10-01 Bruno Haible - - Support for context dependent translations in PO files. - * gettext.h (GETTEXT_CONTEXT_GLUE): New macro. - (pgettext, dpgettext, dcpgettext, npgettext, dnpgettext, dcnpgettext): - New macros. - (pgettext_aux, npgettext_aux): New inline functions. - -2005-08-23 Bruno Haible - - * byteswap_.h: New file, from gnulib. - * Makefile.am (BUILT_SOURCES, EXTRA_DIST, MOSTLYCLEANFILES): Adjust - for byteswap.h. - (byteswap.h): New rule. - -2005-08-16 Bruno Haible - - * strcase.h: Remove file. - * strcasecmp.c: Remove file. - * strncasecmp.c: Remove file. - * Makefile.am (LIBADD_SOURCE): Remove them. - * Makefile.msvc (OBJECTS): Remove strcasecmp.obj, strncasecmp.obj. - (strcasecmp.obj, strncasecmp.obj): Remove rules. - -2005-07-31 Bruno Haible - - * hash.c (resize): New function, extracted from insert_entry_2. - (insert_entry): Invoke resize here. - (insert_entry_2): ... not here. - -2005-07-24 Bruno Haible - - Tidy up exported symbols. - * relocatable.h (RELOCATABLE_DLL_EXPORTED) [HAVE_VISIBILITY]: Define - to the gcc visibility attribute. - -2005-07-22 Bruno Haible - - * Makefile.am: Remove rules depending on @STDBOOL_H@, @ALLOCA_H@, - @FNMATCH_H@, @GETOPT_H@. - (BUILT_SOURCES): Add $(STDBOOL_H), $(ALLOCA_H). - Reported by Alexandre Duret-Lutz . - -2005-07-09 Bruno Haible - - * csharpcomp.sh.in (options_csc): For -l option, add a .dll suffix. - * csharpcomp.c (compile_csharp_using_sscli): Likewise. - Reported by Mark Junker . - -2005-07-05 Bruno Haible - - * Makefile.am (libgettextlib_la_LDFLAGS): Use LTNOUNDEF. - -2005-07-02 Bruno Haible - - * localcharset.c (get_charset_aliases) [WIN32]: Add CP65001 and others. - Reported by via Alain Bench . - -2005-06-08 Bruno Haible - - * canonicalize.c (__realpath): Avoid gcc warnings on platforms that - don't support symbolic links. - -2005-06-08 Bruno Haible - - * binary-io.h (fileno): Undefine before defining it. Avoids a gcc - warning on mingw. - -2006-06-21 Bruno Haible - - * gettext-0.14.6 released. - -2005-05-23 Bruno Haible - - * gettext-0.14.5 released. - -2005-04-11 Bruno Haible - - * gettext-0.14.4 released. - -2005-03-22 Bruno Haible - - * Makefile.am (examplesbuildauxdir): Renamed from examplesconfigdir. - (examplesbuildaux_DATA): Renamed from examplesconfig_DATA. - -2005-03-14 Bruno Haible - - * gettext-0.14.3 released. - -2004-09-12 Bruno Haible - - * hash.c: Include instead of . - Assume an ANSI C implementation with stdlib.h, string.h. - (BITSPERBYTE, LONGBITS, bcopy): Remove macros. - -2005-02-24 Bruno Haible - - * gettext-0.14.2 released. - -2005-02-12 Bruno Haible - - * Makefile.msvc (OBJECTS): Remove strtoul.obj. - (strtoul.obj): Remove target. - * Makefile.vms (OBJECTS): Remove strtoul.obj. - (strtoul.obj): Remove target. - -2005-02-12 Bruno Haible - - * allocsa.h: Add extern "C" for C++. - * xallocsa.h: Likewise. - -2005-02-12 Bruno Haible - - * exitfail.h (exit_failure): Add DLL_VARIABLE attribute. - -2005-02-12 Bruno Haible - - * obstack.c: Update from current gnulib version. - -2005-02-10 Bruno Haible - - * allocsa.h (sa_alignof): Define differently with AIX xlc, to avoid - a bug of this compiler on AIX 3.2.5 dealing with enums. - -2005-02-07 Bruno Haible - - * c-strcase.h: New file, based on strcase.h. - * c-strcasecmp.c: New file, based on strcasecmp.c. - * c-strncasecmp.c: New file, based on strcasecmp.c. - * Makefile.am (libgettextlib_la_SOURCES): Add c-strcase.h, - c-strcasecmp.c, c-strncasecmp.c. - * Makefile.msvc (OBJECTS): Add c-strcasecmp.obj, c-strncasecmp.obj. - (c-strcasecmp.obj, c-strncasecmp.obj): New rules. - * Makefile.vms (OBJECTS): Add c-strcasecmp.obj, c-strncasecmp.obj. - (c-strcasecmp.obj, c-strncasecmp.obj): New rules. - -2005-01-29 Bruno Haible - - * progname.c (program_name): Initialize. - Needed when linking statically on MacOS X. - -2005-01-27 Bruno Haible - - * Makefile.am (libgettextlib_la_SOURCES): Remove strtoul.c. - (LIBADD_SOURCE): Add strtoul.c here. - -2005-01-28 Bruno Haible - - * stpncpy.h (stpncpy): Define as a macro without arguments, so that - stpncpy.c uses it. - -2005-01-09 Bruno Haible - - * csharpcomp.sh.in (func_tmpdir): New function. - (mcs invocation): Use it. Fix exit code. - -2005-01-07 Bruno Haible - - * csharpcomp.c: Include safe-read.h. - -2005-01-06 Bruno Haible - - * fwriteerror.h (fwriteerror): Change specification to include fclose. - * fwriteerror.c: Include . - (fwriteerror): At the end, close the file stream. Record whether - stdout was already closed. - * closeout.c: Update comments. - -2005-01-06 Bruno Haible - - * strerror.c: Update from gnulib, with HAVE_STRERROR modifications. - -2005-01-06 Bruno Haible - - * strtol.c: Update from gnulib. - * strtoul.c: Update from gnulib. - -2005-01-06 Bruno Haible - - * strstr.c: Update from gnulib. - -2005-01-06 Bruno Haible - - * strpbrk.c: Update from gnulib. - -2005-01-06 Bruno Haible - - * strcspn.c: Update from gnulib. - -2005-01-06 Bruno Haible - - * strcasecmp.c: Update from gnulib. - * strncasecmp.c: Update from gnulib. - -2005-01-06 Bruno Haible - - * stpncpy.h: Update from gnulib. - * stpncpy.c: Update from gnulib with simplifications. - * Makefile.am (libgettextlib_la_SOURCES): Remove stpncpy.h, stpncpy.c. - (LIBADD_SOURCE): Add stpncpy.h, stpncpy.c. - * Makefile.msvc: Update. - * Makefie.vms: Update. - -2005-01-06 Bruno Haible - - * error.h: Update from gnulib. - * error.c: Update from gnulib. - * Makefile.am (libgettextlib_la_SOURCES): Remove error.h, error.c. - (LIBADD_SOURCE): Add error.h, error.c here. - * Makefile.msvc: Update. - * Makefile.vms: Update. - -2005-01-06 Bruno Haible - - * argmatch.h: Update from gnulib, with DLL_VARIABLE modifications. - * argmatch.c: Update from gnulib. - -2005-01-06 Bruno Haible - - * quote.h: New file, from gnulib. - * quote.c: New file, from gnulib. - * Makefile.am (libgettextlib_la_SOURCES): Add quote.h, quote.c. - * Makefile.msvc (OBJECTS): Add quote.obj. - (quote.obj): New rule. - * Makefile.vms (OBJECTS): Add quote.obj. - (quote.obj): New rule. - -2005-01-06 Bruno Haible - - * exitfail.h: New file, from gnulib. - * exitfail.c: New file, from gnulib. - * Makefile.am (libgettextlib_la_SOURCES): Add exitfail.h, exitfail.c. - * Makefile.msvc (OBJECTS): Add exitfail.obj. - (exitfail.obj): New rule. - * Makefile.vms (OBJECTS): Add exitfail.obj. - (exitfail.obj): New rule. - -2005-01-06 Bruno Haible - - * Makefile.am (libgettextlib_la_SOURCES): Remove getopt files. - (LIBADD_SOURCE): Add getopt files here, except getopt.h. - (BUILT_SOURCES, EXTRA_DIST, all-local, getopt.h): Support for getopt - module. - * getopt.h: Remove file. - * getopt_.h: New file, from gnulib, with DLL_VARIABLE modifications. - * getopt.c: Update from gnulib. - * getopt1.c: Update from gnulib. - * getopt_int.h: New file, from gnulib. - -2005-01-06 Bruno Haible - - * fnmatch_.h: Upgrade from gnulib. - * fnmatch.c: Upgrade from gnulib. - * fnmatch_loop.c: New file, from gnulib. - * Makefile.am (DISTCLEANFILES): Remove fnmatch.h. - (BUILT_SOURCES): New variable. - (EXTRA_DIST): Add fnmatch_loop.c. - * Makefile.vms (fnmatch.obj): Depend also on fnmatch_loop.c. - -2004-12-19 Paul Eggert - - * alloca_.h: Conditionalize on _GNULIB_ALLOCA_H, not _ALLOCA_H. - -2004-12-18 Bruno Haible - - * fatal-signal.c (fatal_signals): Make non-const. - (init_fatal_signals): New function. - (uninstall_handlers, install_handlers): Ignore signals that were set to - SIG_IGN. - (at_fatal_signal): Call init_fatal_signals. - (init_fatal_signal_set): Likewise. Ignore signals that were set to - SIG_IGN. - Reported by Paul Eggert. - -2004-11-11 Jim Meyering - - * linebreak.c: Remove trailing blanks. - -2004-11-10 Paul Eggert - - * quotearg.c (struct quoting_options): Use unsigned int for - quote_these_too, so that right shifts are well defined. All uses - changed. - -2004-11-05 Bruno Haible - - * readlink.c: Include stddef.h, needed for size_t on Woe32. - Reported by Mark D. Baushke . - -2004-11-02 Bruno Haible - - * setenv.h (unsetenv): Define as a macro if the system's unsetenv() - function returns void. - -2004-10-04 Paul Eggert - - * unlocked-io.h: Don't worry about USE_UNLOCKED_IO; that's now - the includer's responsibility. - -2004-08-06 Paul Eggert - - * full-write.c: Import changes from coreutils. - -2004-08-06 Paul Eggert - - * safe-read.c: Import changes from coreutils. - -2004-08-06 Paul Eggert - - * quotearg.c, quotearg.h: Import changes from coreutils. - -2004-08-06 Paul Eggert - - * setenv.c: Import changes from coreutils. - -2004-08-03 Simon Josefsson - - * progname.h: Don't include stdbool.h. - -2004-07-16 Bruno Haible - - * mbswidth.h: Add extern "C" for C++. - Reported by Albert Chin-A-Young . - -2003-09-09 Paul Eggert - - * memmove.c, memset.c: Include . - Use types required by C89 in prototype. - -2003-09-08 Paul Eggert - - * atexit.c (atexit): Define using a prototype. - -2004-12-10 Bruno Haible - - * obstack.h: Update from current gnulib version. - * obstack.c: Update from current gnulib version. - Reported by Raphaël Zhou . - -2004-11-23 Bruno Haible - - * gettext.h [!ENABLE_NLS]: When using GNU libstdc++, include - early. - Reported by Peter Breitenlohner . - -2004-10-07 Bruno Haible - - * gen-lbrkprop.c (output_tables): Emit a GPL copyright notice. - * lbrkprop.h: Update. - -2004-09-11 Bruno Haible - - * allocsa.valgrind: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2004-09-01 Bruno Haible - - * config.charset: Add support for Darwin 7. - -2004-08-08 Bruno Haible - - * pathname.h (FILE_SYSTEM_PREFIX_LEN): Renamed from - FILESYSTEM_PREFIX_LEN. - * progreloc.c: Likewise. - * concatpath.c (concatenated_pathname): Use FILE_SYSTEM_PREFIX_LEN. - * basename.c (FILE_SYSTEM_PREFIX_LEN): Renamed from - FILESYSTEM_PREFIX_LEN. - (basename): Update. - * relocatable.c (FILE_SYSTEM_PREFIX_LEN): Renamed from - FILESYSTEM_PREFIX_LEN. - (compute_curr_prefix): Update. - -2004-05-27 Bruno Haible - - * execute.c (environ): Declare if needed. - * pipe.c (environ): Likewise. - Reported by Michael Schloh von Bennewitz . - -2004-04-28 Bruno Haible - - * basename.c (FILESYSTEM_PREFIX_LEN, ISSLASH): Treat Cygwin like - Windows, since it now accepts Windows pathnames. - * findprog.c (find_in_path): Treat Cygwin like Windows, since it also - implicitly appends .exe to executables. - * localcharset.c (ISSLASH): Treat Cygwin like Windows, since it now - accepts Windows pathnames. - * pathname.h (ISSLASH, IS_PATH_WITH_DIR, FILESYSTEM_PREFIX_LEN): Treat - Cygwin like Windows, since it now accepts Windows pathnames. - * relocatable.c (ISSLASH, IS_PATH_WITH_DIR, FILESYSTEM_PREFIX_LEN): - Treat Cygwin like Windows, since it now accepts Windows pathnames. - (compute_curr_prefix): Likewise. - * progreloc.c (ISSLASH, IS_PATH_WITH_DIR, FILESYSTEM_PREFIX_LEN): Treat - Cygwin like Windows, since it now accepts Windows pathnames. - Reported by Derek Robert Price . - -2004-04-23 Bruno Haible - - * localcharset.c (get_charset_aliases): Allow the CHARSETALIASDIR - environment variable to override LIBDIR. - Suggested by Matthias Clasen . - -2004-04-20 Jim Meyering - Bruno Haible - - * localcharset.c (get_charset_aliases) [!VMS && !WIN32]: Don't leak - memory when realloc fails. - -2004-03-18 Paul Eggert - Bruno Haible - - * mbswidth.h: Include only if HAVE_DECL_MBSWIDTH_IN_WCHAR_H, - not on all platforms that have . - * mbswidth.c: Include and before . - -2004-03-19 Bruno Haible - - * Makefile.am (install-exec-clean): Don't remove libgettextlib.a on - AIX. - Reported by Kouichi Hashikawa . - -2004-03-08 Bruno Haible - - * csharpcomp.c (compile_csharp_using_sscli): Test whether csc is not - the chicken scheme's 'csc' compiler. - Reported by Colin Marquardt . - -2004-02-07 Bruno Haible - - * xalloc.h (xalloc_oversized): New macro, from gnulib. - * quotearg.h: New file, from gnulib. - * quotearg.c: New file, from gnulib. - * sh-quote.c: Include quotearg.h. - (sh_quoting_options): New variable. - (init_sh_quoting_options): New function. - (shell_quote_length, shell_quote_copy, shell_quote): Rewrite to use - quotearg. - * Makefile.am (libgettextlib_la_SOURCES): Add quotearg.h, quotearg.c. - * Makefile.msvc (OBJECTS): Add quotearg.obj. - (quotearg.obj): New rule. - * Makefile.vms (OBJECTS): Add quotearg.obj. - (quotearg.obj): New rule. - -2004-02-06 Bruno Haible - - * allocsa.h (sa_alignof): Define differently with HP-UX cc, to avoid - a bug of this cc on HP-UX 10.20 dealing with enums. - Reported by Christopher Seip . - -2004-02-03 Bruno Haible - - * pipe.c: New file, synthesis of pipe-in.c, pipe-out.c, pipe-bidi.c. - * pipe-in.c: Remove file. - * pipe-out.c: Remove file. - * pipe-bidi.c: Remove file. - * Makefile.am (libgettextlib_la_SOURCES): Add pipe.c, Remove pipe-in.c, - pipe-out.c, pipe-bidi.c. - * Makefile.msvc (OBJECTS): Add pipe.obj. Remove pipe-in.obj, - pipe-out.obj, pipe-bidi.obj. - (pipe.obj): New rule. - (pipe-in.obj, pipe-out.obj, pipe-bidi.obj): Remove rules. - * Makefile.vms (OBJECTS): Add pipe.obj. Remove pipe-in.obj, - pipe-out.obj, pipe-bidi.obj. - (pipe.obj): New rule. - (pipe-in.obj, pipe-out.obj, pipe-bidi.obj): Remove rules. - -2004-01-29 Bruno Haible - - * gettext-0.14.1 released. - -2004-01-28 Bruno Haible - - * gettext-0.14 released. - -2004-01-24 Bruno Haible - - * progreloc.c (xstrdup): Define as strdup if no xmalloc should be used. - -2004-01-21 Bruno Haible - - * config.charset: Add support for MacOS X (Darwin). - -2004-01-10 Bruno Haible - - * csharpcomp.c (compile_csharp_using_pnet, compile_csharp_using_mono, - compile_csharp_using_sscli): New functions. - (compile_csharp_class): Call them. Respect the CSHARP_CHOICE_* macros. - * csharpexec.c (execute_csharp_using_pnet, execute_csharp_using_mono): - New functions. - (execute_csharp_program): Call them. Respect the CSHARP_CHOICE_* - macros. - -2004-01-10 Bruno Haible - - * csharpcomp.sh.in: Copy the mcs output to stderr, dropping the - "Compilation succeeded" message. - * csharpcomp.c: Include errno.h, pipe.h, wait-process.h, getline.h. - (compile_csharp_class): Copy the mcs output to stderr, dropping the - "Compilation succeeded" message. - -2003-12-26 Bruno Haible - - Support for C#. - * csharpcomp.sh.in: New file. - * csharpcomp.h: New file. - * csharpcomp.c: New file. - * csharpexec.sh.in: New file. - * csharpexec.h: New file. - * csharpexec.c: New file. - * classpath.c (CLASSPATHVAR): New variable. - (new_classpath, set_classpath, reset_classpath): Use it instead of - hardcoding "CLASSPATH". - * Makefile.am (libgettextlib_la_SOURCES): Add csharpcomp.h, - csharpcomp.c, csharpexec.h, csharpexec.c. - (examplesconfig_DATA): Add csharpcomp.sh.in, csharpexec.sh.in. - * Makefile.msvc (OBJECTS): Add csharpcomp.obj, csharpexec.obj. - (csharpcomp.obj, csharpexec.obj): New rules. - * Makefile.vms (OBJECTS): Add csharpcomp.obj, csharpexec.obj. - (csharpcomp.obj, csharpexec.obj): New rules. - -2003-12-28 Bruno Haible - - * wait-process.c (wait_subprocess): Add ignore_sigpipe argument. - * wait-process.c (wait_subprocess): Likewise. Handle SIGPIPE specially. - * execute.h (execute): Add ignore_sigpipe argument. - * execute.c (execute): Likewise. - * javacomp.c (compile_java_class): Always pass ignore_sigpipe = false. - * javaexec.c (execute_java_class): Likewise. - -2003-09-12 Paul Eggert - - * setenv.c (clearenv): Define via prototype. - -2003-09-10 Bruno Haible - - * setenv.c: Include and unconditionally. - * unsetenv.c: Likewise. - -2003-12-12 Bruno Haible - - Assume automake-1.8. - * Makefile.am (install-exec-local): Renamed from install-exec-am. - -2003-11-30 Bruno Haible - - * alloca.c: Remove file. - * Makefile.am (LIBADD_SOURCE): Remove alloca.c. - (libgettextlib_la_LIBADD): Drop @LTALLOCA@. - -2003-11-30 Bruno Haible - - Safer stack allocation. - * allocsa.h: New file. - * allocsa.c: New file. - * xallocsa.h: New file. - * xallocsa.c: New file. - * canonicalize.c: Include allocsa.h. - (__realpath): Use allocsa instead of alloca. Don't clobber errno right - before returning NULL. - * javacomp.c: Include xallocsa.h. - (compile_java_class): Use allocsa instead of alloca. - * javaexec.c: Include xallocsa.h. - (execute_java_class): Use allocsa instead of alloca. - * relocwrapper.c: Indirectly depends on allocsa. - * setenv.c: Include allocsa.h. - (alloca): Remove fallback definition. - (freea): Remove macro. - (__add_to_environ) [!_LIBC]: Use allocsa instead of alloca. Use freesa - instead of freea. - * Makefile.am (libgettextlib_la_SOURCES): Add allocsa.h, allocsa.c, - xallocsa.h, xallocsa.c. - * Makefile.msvc (OBJECTS): Add allocsa.obj, xallocsa.obj. - (allocsa.obj, xallocsa.obj): New rules. - * Makefile.vms (OBJECTS): Add allocsa.obj, xallocsa.obj. - (allocsa.obj, xallocsa.obj): New rules. - -2003-12-17 Bruno Haible - - * gettext-0.13.1 released. - -2003-12-02 Bruno Haible - - * config.charset: Treat the new country name CS like the old country - name YU. - -2003-11-30 Bruno Haible - - * gettext-0.13 released. - -2003-11-28 Bruno Haible - - * Makefile.msvc (OBJECTS): Fix typo. - * wait-process.c (cleanup_slaves): Use ANSI C declaration. - -2003-11-27 Bruno Haible - - * wait-process.c: On Windows, include windows.h. Needed on mingw. - -2003-11-17 Bruno Haible - - * canonicalize.c: #undef realpath after but before the - system includes, so as to avoid a prototype clash on Solaris 2.5.1. - Reported by Warren L. Dodge . - -2003-11-17 Bruno Haible - - * wait-process.c (wait_process): Disable the 2003-10-31 waitid() patch. - -2003-11-16 Bruno Haible - - * xsize.h (xmax): New function. - (xsum, xsum3, xsum4): Declare as "pure" functions. - -2003-11-15 Bruno Haible - - * Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES. - -2003-11-15 Bruno Haible - - * Makefile.am (docdir, examplesconfigdir, examplesconfig_DATA): New - variables. - -2003-11-11 Bruno Haible - - * xsize.h (SIZE_MAX): Remove fallback definition. - -2003-11-05 Bruno Haible - - * xsize.h: Include limits.h, to avoid a possible collision with - SIZE_MAX defined in on Solaris. - -2003-11-04 Bruno Haible - - * xsize.h: New file. - * linebreak.c: Include xsize.h. - (mbs_possible_linebreaks, mbs_width_linebreaks): Check malloc() - argument for overflow. - * Makefile.am (libgettextlib_la_SOURCES): Add xsize.h. - -2003-10-31 Bruno Haible - - * wait-process.c (wait_process): Use waitid with WNOWAIT if available, - to avoid (extremely rare) race condition. - -2003-10-27 Bruno Haible - - * stdbool_.h: Better support for BeOS. - -2003-10-14 Bruno Haible - - * hash.h: Make it includable in C++ mode. - -2003-10-21 Bruno Haible - - * canonicalize.c (lstat): Define as an alias to 'stat' on systems - without symbolic links. - -2003-10-21 Bruno Haible - - * wait-process.c (kill): Define appropriately for native Woe32 API. - -2003-10-21 Bruno Haible - - * mkdtemp.c (mkdir): Redefine on mingw. - -2003-10-17 Bruno Haible - - * binary-io.h: Avoid warnings on Cygwin. - -2003-10-09 Bruno Haible - - * xalloc.h: Renamed from xmalloc.h. - * classpath.c: Include xalloc.h instead of xmalloc.h. - * concatpath.c: Likewise. - * fatal-signal.c: Likewise. - * findprog.c: Likewise. - * fstrcmp.c: Likewise. - * hash.c: Likewise. - * javacomp.c: Likewise. - * javaexec.c: Likewise. - * progreloc.c: Likewise. - * relocatable.c: Likewise. - * sh-quote.c: Likewise. - * w32spawn.h: Likewise. - * wait-process.c: Likewise. - * xgetcwd.c: Likewise. - * xmalloc.c: Likewise. - * xreadlink.c: Likewise. - * xstrdup.c: Likewise. - * Makefile.am (libgettextlib_la_SOURCES): Use xalloc.h instead of - xmalloc.h. - * Makefile.msvc: Reorder accordingly. - * Makefile.vms: Likewise. - -2003-10-07 Bruno Haible - - More reliable subprocess cleanup. - * javacomp.c (compile_java_class): Pass slave_process = true to - execute(). create_pipe_in(), wait_subprocess(). - * javaexec.c (execute_java_class): Pass slave_process = true to - execute(). - - * wait-process.h (wait_subprocess): Add slave_process argument. - (register_slave_subprocess): New declaration. - * wait-process.c: Include string.h, signal.h, fatal-signal.h, - xmalloc.h. - (slaves_entry_t): New type. - (static_slaves, slaves, slaves_count, slaves_allocated): New variables. - (TERMINATOR): New macro. - (cleanup_slaves, register_slave_subprocess, - unregister_slave_subprocess): New functions. - (wait_subprocess): Add slave_process argument. - * execute.h (execute): Add slave_process argument. - * execute.c: Include signal.h, fatal-signal.h. - (execute): Add slave_process argument. - * pipe.h (create_pipe_in, create_pipe_out, create_pipe_bidi): Add - slave_process argument. - * pipe-in.c: Include signal.h, fatal-signal.h, wait-process.h. - (create_pipe_in): Add slave_process argument. - * pipe-out.c: Include signal.h, fatal-signal.h, wait-process.h. - (create_pipe_out): Add slave_process argument. - * pipe-bidi.c: Include signal.h, fatal-signal.h, wait-process.h. - (create_pipe_bidi): Add slave_process argument. - -2003-10-08 Bruno Haible - - * fatal-signal.h: New file. - * fatal-signal.c: New file. - * Makefile.am (libgettextlib_la_SOURCES): Add them. - * Makefile.msvc (OBJECTS): Add fatal-signal.obj. - (fatal-signal.obj): New rule. - * Makefile.vms (OBJECTS): Add fatal-signal.obj. - (fatal-signal.obj): New rule. - -2003-09-21 Bruno Haible - - * vasprintf.c (int_vasprintf): Assume ANSI C when copying a structure. - -2003-09-16 Bruno Haible - - Portability to SunOS 4. - * atexit.c: New file, from gnulib with modifications. - * Makefile.am (LIBADD_SOURCE): Add atexit.c. - -2003-09-14 Bruno Haible - - * closeout.c: Include fwriteerror.h. - (close_stdout_status): Use improved errno value from fwriteerror(). - Don't call fclose; it is be done implicitly during exit(). - -2003-09-14 Bruno Haible - - * fwriteerror.h: New file. - * fwriteerror.c: New file. - * Makefile.am (libgettextlib_la_SOURCES): Add fwriteerror.h, - fwriteerror.c. - * Makefile.msvc (OBJECTS): Add fwriteerror.obj. - (fwriteerror.obj): New rule. - * Makefile.vms (OBJECTS): Add fwriteerror.obj. - (fwriteerror.obj): New rule. - -2003-09-13 Bruno Haible - - * closeout.h: New file, from gnulib with modifications. - * closeout.c: New file, from gnulib with modifications. - * Makefile.am (libgettextlib_la_SOURCES): Add closeout.h, closeout.c. - * Makefile.msvc (OBJECTS): Add closeout.obj. - (closeout.obj): New rule. - * Makefile.vms (OBJECTS): Add closeout.obj. - (closeout.obj): New rule. - -2003-09-12 Paul Eggert - - * progreloc.c (get_full_program_name): Define via prototype. - -2003-08-28 Bruno Haible - - * binary-io.h: Undefine O_BINARY before defining it. This avoids a - warning on QNX, which defines O_BINARY to 000000. - -2003-08-27 Bruno Haible - - * getopt.h: Include config.h. Needed for DLL_VARIABLE on OSF/1 4.0. - -2003-08-24 Bruno Haible - - * binary-io.h: Include , to avoid a compilation error when - MSVC7 is included later. - -2003-08-24 Bruno Haible - - * error.h: Use ANSI C "..." declarations when compiling with MSVC, even - though it doesn't define __STDC__ by default. - * error.c: Use when compiling with MSVC, even though it - doesn't define __STDC__ by default. - -2003-08-24 Bruno Haible - - Support for building DLLs on Windows. - * argmatch.h (argmatch_die): Add DLL_VARIABLE attribute. - * backupfile.h (simple_backup_suffix): Likewise. - * error.h (error_print_progname, error_message_count, - error_one_per_line): Likewise. - * error-progname.h (error_with_progname): Likewise. - * getopt.h (optarg, optind, opterr, optopt): Likewise. - * obstack.h (obstack_alloc_failed_handler, obstack_exit_failure): - Likewise. - * progname.h (program_name): Likewise. - -2003-08-24 Bruno Haible - - * backupfile.h: Make this file includable in C++ mode: add extern "C". - * basename.h: Likewise. - * copy-file.h: Likewise. - * error-progname.h: Likewise. - * findprog.h: Likewise. - * full-write.h: Likewise. - * pathname.h: Likewise. - * pipe.h: Likewise. - * progname.h: Likewise. - * relocatable.h: Likewise. - * stpcpy.h: Likewise. - * stpncpy.h: Likewise, - * strcase.h: Likewise. - * strstr.h: Likewise. - * wait-process.h: Likewise. - * xerror.h: Likewise. - * xmalloc.h: Likewise. - -2003-08-23 Bruno Haible - - * getline.h: Update from gnulib. - * getline.c: Update from gnulib. - * getndelim2.h: New file, from gnulib. - * getndelim2.c: New file, from gnulib. - * Makefile.am (LIBADD_SOURCE): Add getndelim2.h, getndelim2.c. - * Makefile.msvc (OBJECTS): Add getndelim2.obj. - (getndelim2.obj): New rule. - * Makefile.vms (OBJECTS): Add getndelim2.obj. - (getndelim2.obj): New rule. - -2003-08-23 Bruno Haible - - * fnmatch_.h: Renamed from pfnmatch.h. - * fnmatch.c: Renamed from pfnmatch.c. - * Makefile.am (LIBADD_SOURCE): Remove pfnmatch.h, pfnmatch.c, add - fnmatch.c. - (EXTRA_DIST): Add fnmatch_.h. - (all-local): Depend on fnmatch.h. - (fnmatch.h): New rule. - (MOSTLYCLEANFILES): Add fnmatch.h. - * Makefile.msvc (OBJECTS): Remove pfnmatch.obj, add fnmatch.obj. - (fnmatch.obj): Renamed from pfnmatch.obj. - * Makefile.vms (OBJECTS): Remove pfnmatch.obj, add fnmatch.obj. - (fnmatch.h): Update rule. - (fnmatch.obj): Renamed from pfnmatch.obj. - -2003-07-01 Paul Eggert - - * xreadlink.c: Include unconditionally, instead of - having it depend on HAVE_SYS_TYPES_H. - -2003-06-27 Bruno Haible - - Avoid use of *_unlocked functions on Solaris 2.5.1. - * localcharset.c: Test HAVE_DECL_GETC_UNLOCKED, not HAVE_GETC_UNLOCKED. - Reported by Eric Botcazou . - -2003-08-22 Bruno Haible - - * error-progname.h: New file, extracted from progname.h. - * error-progname.c: New file, extracted from progname.c. - * progname.h (error_with_progname, maybe_print_progname): Remove - declarations. - * progname.c (error_with_progname): Remove variable. - (maybe_print_progname): Remove function. - * xerror.c: Include error-progname.h. - * Makefile.am (libgettextlib_la_SOURCES): Add error-progname.h and - error-progname.c. - * Makefile.msvc (OBJECTS): Add error-progname.obj. - (error-progname.obj): New rule. - * Makefile.vms (OBJECTS): Add error-progname.obj. - (error-progname.obj): New rule. - -2003-08-20 Bruno Haible - - * config.charset (linux-gnulibc1*): Change hr_HR, ro_RO to ISO-8859-2. - Reported by Alain Guibert . - -2003-08-11 Bruno Haible - - * stdbool_.h: Update from gnulib. - 2003-08-11 Bruno Haible - * stdbool_.h (_Bool): Undo last change; instead use a negative - enum value to ensure that _Bool promotes to int. Use #define - for _Bool when using the Solaris C compiler. Adds comments - suggested by Paul Eggert. - 2003-08-03 Paul Eggert - * stdbool_.h (_Bool): Make it signed char, instead of - an enum type, so that it's guaranteed to promote to int. See: - - -2003-05-28 Paul Eggert - - * safe-read.c (CHAR_BIT): Don't define, since is guaranteed - to do that. - * safe-read.c (INT_MAX): Don't define, since does that. - * safe-read.c (TYPE_MINIMUM, TYPE_MAXIMUM): Remove; no longer needed. - * safe-read.c: Remove TYPE_SIGNED; no longer needed. - -2003-04-25 Bruno Haible - - * copy-file.c: Include , for size_t. - -2003-03-03 Paul Eggert - Bruno Haible - - * mbswidth.h: Include . Needed for UnixWare 7.1.1. - Reported by John Hughes, see - http://mail.gnu.org/archive/html/bug-bison/2003-02/msg00030.html - -2003-01-28 Bruno Haible - - * c-ctype.h: Assume C_CTYPE_CONSECUTIVE_DIGITS. - (c_isascii, c_isalnum, c_isalpha, c_isxdigit): Optimize. - * c-ctype.c (c_isascii, c_isalnum, c_isalpha, c_ispunct, c_isxdigit): - Optimize. - Suggested by Paul Eggert. - -2003-01-23 Bruno Haible - - * minmax.h: Add comments from Paul Eggert. - -2002-11-15 Bruno Haible - - * strcspn.c: Include . - * strpbrk.c: Minimize diffs to glibc. Include . - -2003-08-14 Bruno Haible - - * config.charset: Add support for Linux libc5. Based on data from - Alain Guibert . - -2003-08-01 Bruno Haible - - * relocatable.c (find_shared_library_fullname): Disable the code on - Linux/libc5. Reported by Alain Guibert . - -2003-07-09 Paul Eggert - - * alloca_.h: Switch from LGPL to GPL. - -2003-07-01 Bruno Haible - - * readlink.c: New file, from gnulib. - * Makefile.am (LIBADD_SOURCE): Add it. - -2003-07-01 Bruno Haible - - * Makefile.am (EXTRA_DIST, stdbool.h): Use stdbool_.h instead of - stdbool.h.in. - -2003-05-28 Paul Eggert - - * pathmax.h: Include without checking for HAVE_LIMITS_H. - * addext.c: Likewise. - * backupfile.c: Likewise. - * xreadlink.c: Likewise. - -2003-06-23 Bruno Haible - - Avoid compilation units that are empty after preprocessing. - * canonicalize.c: Add dummy declaration. - * strerror.c: Likewise. - * strtoul.c: Likewise. - * error.c: Include even if there's nothing to be compiled. - -2003-06-22 Bruno Haible - - Portability to mingw32. - * relocatable.c [WIN32]: Include . - Reported by Jeff Bonggren . - -2003-06-22 Bruno Haible - - * relocatable.c (compute_curr_prefix): Comment out this function in - the case when it is not used. - Reported by Pavel Roskin . - -2003-06-13 Bruno Haible - - * wait-process.h (wait_subprocess): Add null_stderr argument. - * wait-process.c (wait_subprocess): Add null_stderr argument. - When !exit_on_error && !null_stderr, still emit error messages, but - don't exit. - * execute.c (execute): When !exit_on_error && !null_stderr, still - emit error messages, but don't exit. Update wait_subprocess call. - * pipe-in.c (create_pipe_in): When !exit_on_error && !null_stderr, - still emit error messages, but don't exit. - * pipe-out.c (create_pipe_out): Likewise. - * pipe-bidi.c (create_pipe_bidi): Likewise. - * javacomp.c (compile_java_class): Update wait_subprocess call. - -2003-06-08 Bruno Haible - - * Makefile.vms (alloca.h): New rule. - (all, javacomp.obj, javaexec.obj): Depend on it. - (getopt.obj): Compile with ELIDE_CODE. - * canonicalize.c (__getcwd) [VMS]: Pass 3 arguments to getcwd. - * xgetcwd.c (getcwd) [VMS]: Pass 3 arguments. - Reported by Jouk Jansen . - -2003-05-22 Bruno Haible - - * gettext-0.12.1 released. - -2003-05-18 Bruno Haible - - * Makefile.msvc (DEBUGFLAGS): New variable. - (gettextlib.lib): Use it. - -2003-05-17 Bruno Haible - - * gettext-0.12 released. - -2003-05-17 Bruno Haible - - * Makefile.msvc (OBJECTS): Remove strpbrk.obj. - (strpbrk.obj): Remove rule. - - * w32spawn.h (dup_noinherit): Cast _get_osfhandle result and - _open_osfhandle argument, to avoid warnings. - (prepare_spawn): Add a cast. - * execute.c (execute) [WIN32]: Don't call wait_subprocess; the - return value from spawnvp is already the exit code. - -2003-05-10 Bruno Haible - - * linebreak.c (iconv_string_length): Don't return -1 just because the - string is longer than 4 KB. - -2003-05-09 Bruno Haible - - * error.c: Update from gnulib with modifications. - * unlocked-io.h: New file, from gnulib. - * Makefile.am (libgettextlib_la_SOURCES): Add it. - -2003-05-09 Bruno Haible - - * canonicalize.c: Add #ifdef around versioned_symbol. Avoids an - "extraneous semicolon" warning from Tru64 cc. - -2003-05-06 Bruno Haible - - * Makefile.am (DEFS): Fix spelling of DEPENDS_ON_LIBICONV. - * Makefile.msvc (CFLAGS): Likewise. - -2003-05-03 Bruno Haible - - Upgrade to Unicode-4.0. - * linebreak.c (nonspacing_table_data): Change width of U+00AD, - U+0350..U+0357, U+035D..U+035F, U+0600..U+0603, U+0610..U+0615, - U+0656..U+0658, U+0A01, U+0AE2..U+0AE3, U+0CBC, U+17B4..U+17B5, - U+17DD, U+1920..U+1922, U+1927..U+192B, U+1932, U+1939..U+193B - from 1 to 0. Change width of U+0CBF, U+0CC6, U+180E from 0 to 1. - (uc_width): Change width of U+4DC0..U+4DFF from 2 to 1. Change width - of U+2A6D7..U+2F7FF, U+2FA1E..U+2FFFD, U+30000..U+3FFFD from 1 to 2. - Change width of U+E0100..U+E01EF from 1 to 0. - -2003-05-02 Bruno Haible - - Support for libtool-1.5. - * progname.c (set_program_name): Remove a leading "/.libs/lt-" - or "/.libs/", not only "lt-". - -2003-04-12 Bruno Haible - - * Makefile.vms: New variables ABIFLAGS, DEFS. Avoid rules with no - lines. Update library creation rule. Don't use the force target. - Correct wildcard syntax. Create fnmatch.h. - Suggested by Jouk Jansen . - -2003-04-12 Bruno Haible - - * localcharset.c (get_charset_aliases): Add special case for VMS. - -2003-04-10 Bruno Haible - - * findprog.c (find_in_path): Use 'bool' and eaccess(). - Suggested by Paul Eggert. - -2003-04-06 Bruno Haible - - * progname.c: Move out all methods depending on ENABLE_RELOCATABLE... - * progreloc.c: ... to here. New file. - * Makefile.am (libgettextlib_la_SOURCES): Add progreloc.c. - * Makefile.msvc (OBJECTS): Add progreloc.obj. - (progreloc.obj): New rule. - * Makefile.vms (OBJECTS): Add progreloc.obj. - (progreloc.obj): New rule. - -2003-04-05 Bruno Haible - - * relocatable.c: Rely on DEPENDS_ON_LIBCHARSET, DEPENDS_ON_LIBICONV, - DEPENDS_ON_LIBINTL, not on NO_LIBRARIES. - * Makefile.am (DEFS): Define DEPENDS_ON_LIBINTL and DEPENDS_ON_LIBICONV, - for relocatable.c. - * Makefile.msvc (CFLAGS): Also define DEPENDS_ON_LIBINTL and - DEPENDS_ON_LIBCONV. - -2003-04-05 Bruno Haible - - * relocatable.c (_GNU_SOURCE): Define, to ensure getline() gets - declared by . - -2003-03-30 Bruno Haible - - * xgetcwd.c: Include . - -2003-04-03 Bruno Haible - - * w32spawn.h (dup_noinherit): Signal an error instead of returning -1. - * execute.c: Reorder includes. - * pipe-bidi.c: Likewise. - * pipe-in.c: Likewise. - * pipe-out.c: Likewise. - -2003-04-02 Bruno Haible - - * binary-io.h: Cosmetics. Suggested by Jim Meyering. - -2003-03-30 Bruno Haible - - * Makefile.vms: New file. - * Makefile.am (EXTRA_DIST): Add Makefile.vms. - * execute.c (open): #undef before redefining it. Needed for VMS. - * pipe-in.c (open): Likewise. - * pipe-out.c (open): Likewise. - -2003-03-31 Bruno Haible - - * sh-quote.c (shell_quote_length, shell_quote_copy): Handle empty - argument string correctly. - -2003-03-30 Bruno Haible - - * progname.c (ISSLASH, HAS_DEVICE, IS_PATH_WITH_DIR, - FILESYSTEM_PREFIX_LEN): New macros. - (maybe_executable): Make a nop on Woe32. - (find_executable) [WIN32]: Fix compilation. - - * relocatable.h (RELOCATABLE_DLL_EXPORTED): New macro. - - * w32spawn.h: New file. - * execute.c: Add alternative implementation using native Woe32 API. - * pipe-bidi.c: Likewise. - * pipe-in.c: Likewise. - * pipe-out.c: Likewise. - * wait-process.c: Likewise. - * Makefile.am (libgettextlib_la_SOURCES): Add w32spawn.h. - - * pipe.h (DEV_NULL): New macro. - * javacomp.c (compile_java_class): Use DEV_NULL instead of "/dev/null". - - * pipe-bidi.c (STDERR_FILENO): Provide a fallback value. - * pipe-in.c (STDERR_FILENO): Likewise. - * pipe-out.c (STDERR_FILENO): Likewise. - - * copy-file.c (copy_file_preserving): Don't set owner if the function - chown() doesn't exist. - -2003-03-17 Bruno Haible - - Native Woe32/MSVC support. - * Makefile.msvc: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2003-03-28 Bruno Haible - - * copy-file.h (copy_file_preserving): Renamed from copy_file. - * copy-file.c (copy_file_preserving): Renamed from copy_file. - Preserve the owner and group as well. - -2003-02-28 Bruno Haible - - Support for relocatable installation. - * canonicalize.h: New file. - * canonicalize.c: New file, from glibc 2.3.1 with modifications. - * relocatable.h: New file. - * relocatable.c: New file. - * relocwrapper.c: New file. - * strerror.c: New file, from gnulib with modifications. - * xreadlink.h: New file, from gnulib with modifications. - * xreadlink.c: New file, from gnulib with modifications. - * progname.h (set_program_name_and_installdir): New declaration. - (set_program_name) [ENABLE_RELOCATABLE]: Define as macro. - (get_full_program_name): New declaration. - * progname.c: Include xreadlink.h, canonicalize.h, relocatable.h. - (executable_fd): New variable. - (maybe_executable): New function. - (find_executable): New function. - (executable_fullname): New variable. - (prepare_relocate): New function. - (set_program_name_and_installdir): New function. - (get_full_program_name): New function. - * localcharset.c: Include relocatable.h. - (get_charset_aliases): Relocate LIBDIR value. - * xmalloc.h (xalloc_die): New declaration. - * xmalloc.c (xalloc_die): New function. - (fixup_null_alloc): Use it. - * Makefile.am (libgettextlib_la_SOURCES): Add xreadlink.h, xreadlink.c. - (LIBADD_SOURCE): Add canonicalize.h, canonicalize.c, memmove.c, - relocatable.h, relocatable.c, strerror.c. - (UNUSED_SOURCE): Remove memmove.c. - (EXTRA_DIST): Add relocwrapper.c. - -2003-02-28 Bruno Haible - - * localcharset.h: Change copyright to LGPL. Enclose declaration in - extern "C", for C++ compilers. - * localcharset.c: Drop C linkage declaration. - -2003-01-29 Bruno Haible - - * config.charset: Add an alias for CP1251 on Solaris. - Reported by Hidetoshi Tajima . - -2003-02-18 Bruno Haible - - * copy-file.c: Include safe-read.h. - (copy_file): Simplify code by using safe_read() instead of read(). - -2003-02-12 Bruno Haible - - * Makefile.am (EXTRA_DIST): Add ChangeLog.0. - - -See ChangeLog.0 for earlier changes. diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/c14n.c gettext-0.19.7/gnulib-local/lib/libxml/c14n.c --- gettext-0.19.6/gnulib-local/lib/libxml/c14n.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/c14n.c 2015-12-23 07:08:27.000000000 +0000 @@ -1,12 +1,12 @@ /* - * "Canonical XML" implementation + * "Canonical XML" implementation * http://www.w3.org/TR/xml-c14n - * + * * "Exclusive XML Canonicalization" implementation * http://www.w3.org/TR/xml-exc-c14n * * See Copyright for the status of this software. - * + * * Author: Aleksey Sanin */ #define IN_LIBXML @@ -27,6 +27,8 @@ #include #include +#include "buf.h" + /************************************************************************ * * * Some declaration better left private ATM * @@ -44,7 +46,7 @@ int nsPrevStart; /* the begginning of the stack for previous visible node */ int nsPrevEnd; /* the end of the stack for previous visible node */ int nsMax; /* size of the array as allocated */ - xmlNsPtr *nsTab; /* array of ns in no particular order */ + xmlNsPtr *nsTab; /* array of ns in no particular order */ xmlNodePtr *nodeTab; /* array of nodes in no particular order */ } xmlC14NVisibleNsStack, *xmlC14NVisibleNsStackPtr; @@ -52,7 +54,7 @@ /* input parameters */ xmlDocPtr doc; xmlC14NIsVisibleCallback is_visible_callback; - void* user_data; + void* user_data; int with_comments; xmlOutputBufferPtr buf; @@ -61,8 +63,10 @@ int parent_is_doc; xmlC14NVisibleNsStackPtr ns_rendered; + /* C14N mode */ + xmlC14NMode mode; + /* exclusive canonicalization */ - int exclusive; xmlChar **inclusive_ns_prefixes; /* error number */ @@ -71,17 +75,17 @@ static xmlC14NVisibleNsStackPtr xmlC14NVisibleNsStackCreate (void); static void xmlC14NVisibleNsStackDestroy (xmlC14NVisibleNsStackPtr cur); -static void xmlC14NVisibleNsStackAdd (xmlC14NVisibleNsStackPtr cur, +static void xmlC14NVisibleNsStackAdd (xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlNodePtr node); -static void xmlC14NVisibleNsStackSave (xmlC14NVisibleNsStackPtr cur, +static void xmlC14NVisibleNsStackSave (xmlC14NVisibleNsStackPtr cur, xmlC14NVisibleNsStackPtr state); -static void xmlC14NVisibleNsStackRestore (xmlC14NVisibleNsStackPtr cur, +static void xmlC14NVisibleNsStackRestore (xmlC14NVisibleNsStackPtr cur, xmlC14NVisibleNsStackPtr state); -static void xmlC14NVisibleNsStackShift (xmlC14NVisibleNsStackPtr cur); -static int xmlC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur, +static void xmlC14NVisibleNsStackShift (xmlC14NVisibleNsStackPtr cur); +static int xmlC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns); -static int xmlExcC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur, +static int xmlExcC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlC14NCtxPtr ctx); @@ -103,23 +107,26 @@ static xmlChar *xmlC11NNormalizeString(const xmlChar * input, xmlC14NNormalizationMode mode); -#define xmlC11NNormalizeAttr( a ) \ +#define xmlC11NNormalizeAttr( a ) \ xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_ATTR) -#define xmlC11NNormalizeComment( a ) \ +#define xmlC11NNormalizeComment( a ) \ xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_COMMENT) -#define xmlC11NNormalizePI( a ) \ +#define xmlC11NNormalizePI( a ) \ xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_PI) -#define xmlC11NNormalizeText( a ) \ +#define xmlC11NNormalizeText( a ) \ xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_TEXT) -#define xmlC14NIsVisible( ctx, node, parent ) \ +#define xmlC14NIsVisible( ctx, node, parent ) \ (((ctx)->is_visible_callback != NULL) ? \ (ctx)->is_visible_callback((ctx)->user_data, \ (xmlNodePtr)(node), (xmlNodePtr)(parent)) : 1) +#define xmlC14NIsExclusive( ctx ) \ + ( (ctx)->mode == XML_C14N_EXCLUSIVE_1_0 ) + /************************************************************************ * * - * Some factorized error routines * + * Some factorized error routines * * * ************************************************************************/ @@ -234,7 +241,7 @@ __xmlRaiseError(NULL, NULL, NULL, ctxt, node, XML_FROM_C14N, error, XML_ERR_ERROR, NULL, 0, - NULL, NULL, NULL, 0, 0, msg); + NULL, NULL, NULL, 0, 0, "%s", msg); } /************************************************************************ @@ -244,25 +251,25 @@ ************************************************************************/ #define XML_NAMESPACES_DEFAULT 16 -static int +static int xmlC14NIsNodeInNodeset(xmlNodeSetPtr nodes, xmlNodePtr node, xmlNodePtr parent) { if((nodes != NULL) && (node != NULL)) { if(node->type != XML_NAMESPACE_DECL) { return(xmlXPathNodeSetContains(nodes, node)); } else { xmlNs ns; - - memcpy(&ns, node, sizeof(ns)); - + + memcpy(&ns, node, sizeof(ns)); + /* this is a libxml hack! check xpath.c for details */ if((parent != NULL) && (parent->type == XML_ATTRIBUTE_NODE)) { ns.next = (xmlNsPtr)parent->parent; } else { - ns.next = (xmlNsPtr)parent; + ns.next = (xmlNsPtr)parent; } - /* - * If the input is an XPath node-set, then the node-set must explicitly + /* + * If the input is an XPath node-set, then the node-set must explicitly * contain every node to be rendered to the canonical form. */ return(xmlXPathNodeSetContains(nodes, (xmlNodePtr)&ns)); @@ -300,12 +307,12 @@ } memset(cur, 0, sizeof(xmlC14NVisibleNsStack)); xmlFree(cur); - + } -static void +static void xmlC14NVisibleNsStackAdd(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlNodePtr node) { - if((cur == NULL) || + if((cur == NULL) || ((cur->nsTab == NULL) && (cur->nodeTab != NULL)) || ((cur->nsTab != NULL) && (cur->nodeTab == NULL))) { xmlC14NErrParam("adding namespace to stack"); @@ -323,9 +330,9 @@ memset(cur->nodeTab, 0 , XML_NAMESPACES_DEFAULT * sizeof(xmlNodePtr)); cur->nsMax = XML_NAMESPACES_DEFAULT; } else if(cur->nsMax == cur->nsCurEnd) { - void *tmp; + void *tmp; int tmpSize; - + tmpSize = 2 * cur->nsMax; tmp = xmlRealloc(cur->nsTab, tmpSize * sizeof(xmlNsPtr)); if (tmp == NULL) { @@ -355,7 +362,7 @@ xmlC14NErrParam("saving namespaces stack"); return; } - + state->nsCurEnd = cur->nsCurEnd; state->nsPrevStart = cur->nsPrevStart; state->nsPrevEnd = cur->nsPrevEnd; @@ -372,7 +379,7 @@ cur->nsPrevEnd = state->nsPrevEnd; } -static void +static void xmlC14NVisibleNsStackShift(xmlC14NVisibleNsStackPtr cur) { if(cur == NULL) { xmlC14NErrParam("shifting namespaces stack"); @@ -395,7 +402,7 @@ /** * xmlC14NVisibleNsStackFind: - * @ctx: the C14N context + * @ctx: the C14N context * @ns: the namespace to check * * Checks whether the given namespace was already rendered or not @@ -409,14 +416,14 @@ const xmlChar *prefix; const xmlChar *href; int has_empty_ns; - + if(cur == NULL) { xmlC14NErrParam("searching namespaces stack (c14n)"); return (0); } /* - * if the default namespace xmlns="" is not defined yet then + * if the default namespace xmlns="" is not defined yet then * we do not want to print it out */ prefix = ((ns == NULL) || (ns->prefix == NULL)) ? BAD_CAST "" : ns->prefix; @@ -427,7 +434,7 @@ int start = (has_empty_ns) ? 0 : cur->nsPrevStart; for (i = cur->nsCurEnd - 1; i >= start; --i) { xmlNsPtr ns1 = cur->nsTab[i]; - + if(xmlC14NStrEqual(prefix, (ns1 != NULL) ? ns1->prefix : NULL)) { return(xmlC14NStrEqual(href, (ns1 != NULL) ? ns1->href : NULL)); } @@ -436,20 +443,20 @@ return(has_empty_ns); } -static int +static int xmlExcC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlC14NCtxPtr ctx) { int i; const xmlChar *prefix; const xmlChar *href; int has_empty_ns; - + if(cur == NULL) { xmlC14NErrParam("searching namespaces stack (exc c14n)"); return (0); } /* - * if the default namespace xmlns="" is not defined yet then + * if the default namespace xmlns="" is not defined yet then * we do not want to print it out */ prefix = ((ns == NULL) || (ns->prefix == NULL)) ? BAD_CAST "" : ns->prefix; @@ -460,10 +467,10 @@ int start = 0; for (i = cur->nsCurEnd - 1; i >= start; --i) { xmlNsPtr ns1 = cur->nsTab[i]; - + if(xmlC14NStrEqual(prefix, (ns1 != NULL) ? ns1->prefix : NULL)) { if(xmlC14NStrEqual(href, (ns1 != NULL) ? ns1->href : NULL)) { - return(xmlC14NIsVisible(ctx, ns1, cur->nodeTab[i])); + return(xmlC14NIsVisible(ctx, ns1, cur->nodeTab[i])); } else { return(0); } @@ -478,8 +485,8 @@ /** * xmlC14NIsXmlNs: - * @ns: the namespace to check - * + * @ns: the namespace to check + * * Checks whether the given namespace is a default "xml:" namespace * with href="http://www.w3.org/XML/1998/namespace" * @@ -492,16 +499,14 @@ { return ((ns != NULL) && (xmlStrEqual(ns->prefix, BAD_CAST "xml")) && - (xmlStrEqual(ns->href, - BAD_CAST - "http://www.w3.org/XML/1998/namespace"))); + (xmlStrEqual(ns->href, XML_XML_NAMESPACE))); } /** * xmlC14NNsCompare: * @ns1: the pointer to first namespace - * @ns2: the pointer to second namespace + * @ns2: the pointer to second namespace * * Compares the namespaces by names (prefixes). * @@ -524,7 +529,7 @@ /** * xmlC14NPrintNamespaces: * @ns: the pointer to namespace - * @ctx: the C14N context + * @ctx: the C14N context * * Prints the given namespace to the output buffer from C14N context. * @@ -542,52 +547,53 @@ if (ns->prefix != NULL) { xmlOutputBufferWriteString(ctx->buf, " xmlns:"); xmlOutputBufferWriteString(ctx->buf, (const char *) ns->prefix); - xmlOutputBufferWriteString(ctx->buf, "=\""); + xmlOutputBufferWriteString(ctx->buf, "="); } else { - xmlOutputBufferWriteString(ctx->buf, " xmlns=\""); + xmlOutputBufferWriteString(ctx->buf, " xmlns="); } if(ns->href != NULL) { - xmlOutputBufferWriteString(ctx->buf, (const char *) ns->href); + xmlBufWriteQuotedString(ctx->buf->buffer, ns->href); + } else { + xmlOutputBufferWriteString(ctx->buf, "\"\""); } - xmlOutputBufferWriteString(ctx->buf, "\""); return (1); } /** * xmlC14NProcessNamespacesAxis: - * @ctx: the C14N context + * @ctx: the C14N context * @node: the current node * * Prints out canonical namespace axis of the current node to the - * buffer from C14N context as follows + * buffer from C14N context as follows * * Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n) * * Namespace Axis - * Consider a list L containing only namespace nodes in the - * axis and in the node-set in lexicographic order (ascending). To begin - * processing L, if the first node is not the default namespace node (a node - * with no namespace URI and no local name), then generate a space followed + * Consider a list L containing only namespace nodes in the + * axis and in the node-set in lexicographic order (ascending). To begin + * processing L, if the first node is not the default namespace node (a node + * with no namespace URI and no local name), then generate a space followed * by xmlns="" if and only if the following conditions are met: * - the element E that owns the axis is in the node-set - * - The nearest ancestor element of E in the node-set has a default - * namespace node in the node-set (default namespace nodes always + * - The nearest ancestor element of E in the node-set has a default + * namespace node in the node-set (default namespace nodes always * have non-empty values in XPath) - * The latter condition eliminates unnecessary occurrences of xmlns="" in - * the canonical form since an element only receives an xmlns="" if its - * default namespace is empty and if it has an immediate parent in the - * canonical form that has a non-empty default namespace. To finish - * processing L, simply process every namespace node in L, except omit - * namespace node with local name xml, which defines the xml prefix, + * The latter condition eliminates unnecessary occurrences of xmlns="" in + * the canonical form since an element only receives an xmlns="" if its + * default namespace is empty and if it has an immediate parent in the + * canonical form that has a non-empty default namespace. To finish + * processing L, simply process every namespace node in L, except omit + * namespace node with local name xml, which defines the xml prefix, * if its string value is http://www.w3.org/XML/1998/namespace. * * Exclusive XML Canonicalization v 1.0 (http://www.w3.org/TR/xml-exc-c14n) - * Canonical XML applied to a document subset requires the search of the - * ancestor nodes of each orphan element node for attributes in the xml - * namespace, such as xml:lang and xml:space. These are copied into the - * element node except if a declaration of the same attribute is already - * in the attribute axis of the element (whether or not it is included in - * the document subset). This search and copying are omitted from the + * Canonical XML applied to a document subset requires the search of the + * ancestor nodes of each orphan element node for attributes in the xml + * namespace, such as xml:lang and xml:space. These are copied into the + * element node except if a declaration of the same attribute is already + * in the attribute axis of the element (whether or not it is included in + * the document subset). This search and copying are omitted from the * Exclusive XML Canonicalization method. * * Returns 0 on success or -1 on fail. @@ -600,7 +606,7 @@ xmlListPtr list; int already_rendered; int has_empty_ns = 0; - + if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) { xmlC14NErrParam("processing namespaces axis (c14n)"); return (-1); @@ -619,29 +625,29 @@ for(n = cur; n != NULL; n = n->parent) { for(ns = n->nsDef; ns != NULL; ns = ns->next) { tmp = xmlSearchNs(cur->doc, cur, ns->prefix); - + if((tmp == ns) && !xmlC14NIsXmlNs(ns) && xmlC14NIsVisible(ctx, ns, cur)) { already_rendered = xmlC14NVisibleNsStackFind(ctx->ns_rendered, ns); if(visible) { - xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); + xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); } if(!already_rendered) { - xmlListInsert(list, ns); + xmlListInsert(list, ns); } - if(xmlStrlen(ns->prefix) == 0) { + if(xmlStrlen(ns->prefix) == 0) { has_empty_ns = 1; } } } } - + /** - * if the first node is not the default namespace node (a node with no - * namespace URI and no local name), then generate a space followed by + * if the first node is not the default namespace node (a node with no + * namespace URI and no local name), then generate a space followed by * xmlns="" if and only if the following conditions are met: * - the element E that owns the axis is in the node-set - * - the nearest ancestor element of E in the node-set has a default - * namespace node in the node-set (default namespace nodes always + * - the nearest ancestor element of E in the node-set has a default + * namespace node in the node-set (default namespace nodes always * have non-empty values in XPath) */ if(visible && !has_empty_ns) { @@ -649,17 +655,17 @@ memset(&ns_default, 0, sizeof(ns_default)); if(!xmlC14NVisibleNsStackFind(ctx->ns_rendered, &ns_default)) { - xmlC14NPrintNamespaces(&ns_default, ctx); + xmlC14NPrintNamespaces(&ns_default, ctx); } } - - - /* - * print out all elements from list + + + /* + * print out all elements from list */ xmlListWalk(list, (xmlListWalker) xmlC14NPrintNamespaces, (const void *) ctx); - /* + /* * Cleanup */ xmlListDelete(list); @@ -669,28 +675,28 @@ /** * xmlExcC14NProcessNamespacesAxis: - * @ctx: the C14N context + * @ctx: the C14N context * @node: the current node * * Prints out exclusive canonical namespace axis of the current node to the - * buffer from C14N context as follows + * buffer from C14N context as follows * * Exclusive XML Canonicalization * http://www.w3.org/TR/xml-exc-c14n * - * If the element node is in the XPath subset then output the node in - * accordance with Canonical XML except for namespace nodes which are + * If the element node is in the XPath subset then output the node in + * accordance with Canonical XML except for namespace nodes which are * rendered as follows: * * 1. Render each namespace node iff: - * * it is visibly utilized by the immediate parent element or one of + * * it is visibly utilized by the immediate parent element or one of * its attributes, or is present in InclusiveNamespaces PrefixList, and - * * its prefix and value do not appear in ns_rendered. ns_rendered is - * obtained by popping the state stack in order to obtain a list of - * prefixes and their values which have already been rendered by + * * its prefix and value do not appear in ns_rendered. ns_rendered is + * obtained by popping the state stack in order to obtain a list of + * prefixes and their values which have already been rendered by * an output ancestor of the namespace node's parent element. - * 2. Append the rendered namespace node to the list ns_rendered of namespace - * nodes rendered by output ancestors. Push ns_rendered on state stack and + * 2. Append the rendered namespace node to the list ns_rendered of namespace + * nodes rendered by output ancestors. Push ns_rendered on state stack and * recurse. * 3. After the recursion returns, pop thestate stack. * @@ -707,13 +713,13 @@ int has_empty_ns = 0; int has_visibly_utilized_empty_ns = 0; int has_empty_ns_in_inclusive_list = 0; - + if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) { xmlC14NErrParam("processing namespaces axis (exc c14n)"); return (-1); } - if(!ctx->exclusive) { + if(!xmlC14NIsExclusive(ctx)) { xmlC14NErrParam("processing namespaces axis (exc c14n)"); return (-1); @@ -728,15 +734,15 @@ return (-1); } - /* + /* * process inclusive namespaces: - * All namespace nodes appearing on inclusive ns list are + * All namespace nodes appearing on inclusive ns list are * handled as provided in Canonical XML */ if(ctx->inclusive_ns_prefixes != NULL) { - xmlChar *prefix; + xmlChar *prefix; int i; - + for (i = 0; ctx->inclusive_ns_prefixes[i] != NULL; ++i) { prefix = ctx->inclusive_ns_prefixes[i]; /* @@ -747,23 +753,23 @@ prefix = NULL; has_empty_ns_in_inclusive_list = 1; } - - ns = xmlSearchNs(cur->doc, cur, prefix); + + ns = xmlSearchNs(cur->doc, cur, prefix); if((ns != NULL) && !xmlC14NIsXmlNs(ns) && xmlC14NIsVisible(ctx, ns, cur)) { already_rendered = xmlC14NVisibleNsStackFind(ctx->ns_rendered, ns); if(visible) { - xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); + xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); } if(!already_rendered) { - xmlListInsert(list, ns); + xmlListInsert(list, ns); } - if(xmlStrlen(ns->prefix) == 0) { + if(xmlStrlen(ns->prefix) == 0) { has_empty_ns = 1; } } } } - + /* add node namespace */ if(cur->ns != NULL) { ns = cur->ns; @@ -772,32 +778,32 @@ has_visibly_utilized_empty_ns = 1; } if((ns != NULL) && !xmlC14NIsXmlNs(ns)) { - if(visible && xmlC14NIsVisible(ctx, ns, cur)) { + if(visible && xmlC14NIsVisible(ctx, ns, cur)) { if(!xmlExcC14NVisibleNsStackFind(ctx->ns_rendered, ns, ctx)) { xmlListInsert(list, ns); } } if(visible) { - xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); + xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); } if(xmlStrlen(ns->prefix) == 0) { has_empty_ns = 1; } } - - + + /* add attributes */ for(attr = cur->properties; attr != NULL; attr = attr->next) { - /* + /* * we need to check that attribute is visible and has non - * default namespace (XML Namespaces: "default namespaces - * do not apply directly to attributes") + * default namespace (XML Namespaces: "default namespaces + * do not apply directly to attributes") */ if((attr->ns != NULL) && !xmlC14NIsXmlNs(attr->ns) && xmlC14NIsVisible(ctx, attr, cur)) { already_rendered = xmlExcC14NVisibleNsStackFind(ctx->ns_rendered, attr->ns, ctx); - xmlC14NVisibleNsStackAdd(ctx->ns_rendered, attr->ns, cur); + xmlC14NVisibleNsStackAdd(ctx->ns_rendered, attr->ns, cur); if(!already_rendered && visible) { - xmlListInsert(list, attr->ns); + xmlListInsert(list, attr->ns); } if(xmlStrlen(attr->ns->prefix) == 0) { has_empty_ns = 1; @@ -810,33 +816,33 @@ /* * Process xmlns="" */ - if(visible && has_visibly_utilized_empty_ns && + if(visible && has_visibly_utilized_empty_ns && !has_empty_ns && !has_empty_ns_in_inclusive_list) { static xmlNs ns_default; memset(&ns_default, 0, sizeof(ns_default)); - + already_rendered = xmlExcC14NVisibleNsStackFind(ctx->ns_rendered, &ns_default, ctx); if(!already_rendered) { - xmlC14NPrintNamespaces(&ns_default, ctx); + xmlC14NPrintNamespaces(&ns_default, ctx); } } else if(visible && !has_empty_ns && has_empty_ns_in_inclusive_list) { static xmlNs ns_default; memset(&ns_default, 0, sizeof(ns_default)); if(!xmlC14NVisibleNsStackFind(ctx->ns_rendered, &ns_default)) { - xmlC14NPrintNamespaces(&ns_default, ctx); + xmlC14NPrintNamespaces(&ns_default, ctx); } } - - /* - * print out all elements from list + + /* + * print out all elements from list */ xmlListWalk(list, (xmlListWalker) xmlC14NPrintNamespaces, (const void *) ctx); - /* + /* * Cleanup */ xmlListDelete(list); @@ -845,9 +851,28 @@ /** + * xmlC14NIsXmlAttr: + * @attr: the attr to check + * + * Checks whether the given attribute is a default "xml:" namespace + * with href="http://www.w3.org/XML/1998/namespace" + * + * Returns 1 if the node is default or 0 otherwise + */ + +/* todo: make it a define? */ +static int +xmlC14NIsXmlAttr(xmlAttrPtr attr) +{ + return ((attr->ns != NULL) && + (xmlC14NIsXmlNs(attr->ns) != 0)); +} + + +/** * xmlC14NAttrsCompare: * @attr1: the pointer tls o first attr - * @attr2: the pointer to second attr + * @attr2: the pointer to second attr * * Prints the given attribute to the output buffer from C14N context. * @@ -871,7 +896,7 @@ return (xmlStrcmp(attr1->name, attr2->name)); } - /* + /* * Attributes in the default namespace are first * because the default namespace is not applied to * unqualified attributes @@ -896,10 +921,10 @@ /** * xmlC14NPrintAttrs: * @attr: the pointer to attr - * @ctx: the C14N context + * @ctx: the C14N context * * Prints out canonical attribute urrent node to the - * buffer from C14N context as follows + * buffer from C14N context as follows * * Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n) * @@ -925,7 +950,7 @@ xmlOutputBufferWriteString(ctx->buf, (const char *) attr->name); xmlOutputBufferWriteString(ctx->buf, "=\""); - value = xmlNodeListGetString(attr->doc, attr->children, 1); + value = xmlNodeListGetString(ctx->doc, attr->children, 1); /* todo: should we log an error if value==NULL ? */ if (value != NULL) { buffer = xmlC11NNormalizeAttr(value); @@ -943,33 +968,156 @@ } /** + * xmlC14NFindHiddenParentAttr: + * + * Finds an attribute in a hidden parent node. + * + * Returns a pointer to the attribute node (if found) or NULL otherwise. + */ +static xmlAttrPtr +xmlC14NFindHiddenParentAttr(xmlC14NCtxPtr ctx, xmlNodePtr cur, const xmlChar * name, const xmlChar * ns) +{ + xmlAttrPtr res; + while((cur != NULL) && (!xmlC14NIsVisible(ctx, cur, cur->parent))) { + res = xmlHasNsProp(cur, name, ns); + if(res != NULL) { + return res; + } + + cur = cur->parent; + } + + return NULL; +} + +/** + * xmlC14NFixupBaseAttr: + * + * Fixes up the xml:base attribute + * + * Returns the newly created attribute or NULL + */ +static xmlAttrPtr +xmlC14NFixupBaseAttr(xmlC14NCtxPtr ctx, xmlAttrPtr xml_base_attr) +{ + xmlChar * res = NULL; + xmlNodePtr cur; + xmlAttrPtr attr; + xmlChar * tmp_str; + xmlChar * tmp_str2; + int tmp_str_len; + + if ((ctx == NULL) || (xml_base_attr == NULL) || (xml_base_attr->parent == NULL)) { + xmlC14NErrParam("processing xml:base attribute"); + return (NULL); + } + + /* start from current value */ + res = xmlNodeListGetString(ctx->doc, xml_base_attr->children, 1); + if(res == NULL) { + xmlC14NErrInternal("processing xml:base attribute - can't get attr value"); + return (NULL); + } + + /* go up the stack until we find a node that we rendered already */ + cur = xml_base_attr->parent->parent; + while((cur != NULL) && (!xmlC14NIsVisible(ctx, cur, cur->parent))) { + attr = xmlHasNsProp(cur, BAD_CAST "base", XML_XML_NAMESPACE); + if(attr != NULL) { + /* get attr value */ + tmp_str = xmlNodeListGetString(ctx->doc, attr->children, 1); + if(tmp_str == NULL) { + xmlFree(res); + + xmlC14NErrInternal("processing xml:base attribute - can't get attr value"); + return (NULL); + } + + /* we need to add '/' if our current base uri ends with '..' or '.' + to ensure that we are forced to go "up" all the time */ + tmp_str_len = xmlStrlen(tmp_str); + if(tmp_str_len > 1 && tmp_str[tmp_str_len - 2] == '.') { + tmp_str2 = xmlStrcat(tmp_str, BAD_CAST "/"); + if(tmp_str2 == NULL) { + xmlFree(tmp_str); + xmlFree(res); + + xmlC14NErrInternal("processing xml:base attribute - can't modify uri"); + return (NULL); + } + + tmp_str = tmp_str2; + } + + /* build uri */ + tmp_str2 = xmlBuildURI(res, tmp_str); + if(tmp_str2 == NULL) { + xmlFree(tmp_str); + xmlFree(res); + + xmlC14NErrInternal("processing xml:base attribute - can't construct uri"); + return (NULL); + } + + /* cleanup and set the new res */ + xmlFree(tmp_str); + xmlFree(res); + res = tmp_str2; + } + + /* next */ + cur = cur->parent; + } + + /* check if result uri is empty or not */ + if((res == NULL) || xmlStrEqual(res, BAD_CAST "")) { + xmlFree(res); + return (NULL); + } + + /* create and return the new attribute node */ + attr = xmlNewNsProp(NULL, xml_base_attr->ns, BAD_CAST "base", res); + if(attr == NULL) { + xmlFree(res); + + xmlC14NErrInternal("processing xml:base attribute - can't construct attribute"); + return (NULL); + } + + /* done */ + xmlFree(res); + return (attr); +} + +/** * xmlC14NProcessAttrsAxis: - * @ctx: the C14N context + * @ctx: the C14N context * @cur: the current node * @parent_visible: the visibility of parent node + * @all_parents_visible: the visibility of all parent nodes * * Prints out canonical attribute axis of the current node to the - * buffer from C14N context as follows + * buffer from C14N context as follows * * Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n) * - * Attribute Axis - * In lexicographic order (ascending), process each node that + * Attribute Axis + * In lexicographic order (ascending), process each node that * is in the element's attribute axis and in the node-set. - * - * The processing of an element node E MUST be modified slightly - * when an XPath node-set is given as input and the element's + * + * The processing of an element node E MUST be modified slightly + * when an XPath node-set is given as input and the element's * parent is omitted from the node-set. * * * Exclusive XML Canonicalization v 1.0 (http://www.w3.org/TR/xml-exc-c14n) * - * Canonical XML applied to a document subset requires the search of the - * ancestor nodes of each orphan element node for attributes in the xml - * namespace, such as xml:lang and xml:space. These are copied into the - * element node except if a declaration of the same attribute is already - * in the attribute axis of the element (whether or not it is included in - * the document subset). This search and copying are omitted from the + * Canonical XML applied to a document subset requires the search of the + * ancestor nodes of each orphan element node for attributes in the xml + * namespace, such as xml:lang and xml:space. These are copied into the + * element node except if a declaration of the same attribute is already + * in the attribute axis of the element (whether or not it is included in + * the document subset). This search and copying are omitted from the * Exclusive XML Canonicalization method. * * Returns 0 on success or -1 on fail. @@ -979,6 +1127,12 @@ { xmlAttrPtr attr; xmlListPtr list; + xmlAttrPtr attrs_to_delete = NULL; + + /* special processing for 1.1 spec */ + xmlAttrPtr xml_base_attr = NULL; + xmlAttrPtr xml_lang_attr = NULL; + xmlAttrPtr xml_space_attr = NULL; if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) { xmlC14NErrParam("processing attributes axis"); @@ -994,57 +1148,200 @@ return (-1); } - /* - * Add all visible attributes from current node. - */ - attr = cur->properties; - while (attr != NULL) { - /* check that attribute is visible */ - if (xmlC14NIsVisible(ctx, attr, cur)) { - xmlListInsert(list, attr); + switch(ctx->mode) { + case XML_C14N_1_0: + /* The processing of an element node E MUST be modified slightly when an XPath node-set is + * given as input and the element's parent is omitted from the node-set. The method for processing + * the attribute axis of an element E in the node-set is enhanced. All element nodes along E's + * ancestor axis are examined for nearest occurrences of attributes in the xml namespace, such + * as xml:lang and xml:space (whether or not they are in the node-set). From this list of attributes, + * remove any that are in E's attribute axis (whether or not they are in the node-set). Then, + * lexicographically merge this attribute list with the nodes of E's attribute axis that are in + * the node-set. The result of visiting the attribute axis is computed by processing the attribute + * nodes in this merged attribute list. + */ + + /* + * Add all visible attributes from current node. + */ + attr = cur->properties; + while (attr != NULL) { + /* check that attribute is visible */ + if (xmlC14NIsVisible(ctx, attr, cur)) { + xmlListInsert(list, attr); + } + attr = attr->next; } - attr = attr->next; - } - /* - * include attributes in "xml" namespace defined in ancestors - * (only for non-exclusive XML Canonicalization) - */ - if (parent_visible && (!ctx->exclusive) && (cur->parent != NULL) - && (!xmlC14NIsVisible(ctx, cur->parent, cur->parent->parent))) { /* - * If XPath node-set is not specified then the parent is always - * visible! + * Handle xml attributes */ - cur = cur->parent; - while (cur != NULL) { - attr = cur->properties; - while (attr != NULL) { - if ((attr->ns != NULL) - && (xmlStrEqual(attr->ns->prefix, BAD_CAST "xml"))) { - if (xmlListSearch(list, attr) == NULL) { - xmlListInsert(list, attr); + if (parent_visible && (cur->parent != NULL) && + (!xmlC14NIsVisible(ctx, cur->parent, cur->parent->parent))) + { + xmlNodePtr tmp; + + /* + * If XPath node-set is not specified then the parent is always + * visible! + */ + tmp = cur->parent; + while (tmp != NULL) { + attr = tmp->properties; + while (attr != NULL) { + if (xmlC14NIsXmlAttr(attr) != 0) { + if (xmlListSearch(list, attr) == NULL) { + xmlListInsert(list, attr); + } } + attr = attr->next; + } + tmp = tmp->parent; + } + } + + /* done */ + break; + case XML_C14N_EXCLUSIVE_1_0: + /* attributes in the XML namespace, such as xml:lang and xml:space + * are not imported into orphan nodes of the document subset + */ + + /* + * Add all visible attributes from current node. + */ + attr = cur->properties; + while (attr != NULL) { + /* check that attribute is visible */ + if (xmlC14NIsVisible(ctx, attr, cur)) { + xmlListInsert(list, attr); + } + attr = attr->next; + } + + /* do nothing special for xml attributes */ + break; + case XML_C14N_1_1: + /* The processing of an element node E MUST be modified slightly when an XPath node-set is + * given as input and some of the element's ancestors are omitted from the node-set. + * + * Simple inheritable attributes are attributes that have a value that requires at most a simple + * redeclaration. This redeclaration is done by supplying a new value in the child axis. The + * redeclaration of a simple inheritable attribute A contained in one of E's ancestors is done + * by supplying a value to an attribute Ae inside E with the same name. Simple inheritable attributes + * are xml:lang and xml:space. + * + * The method for processing the attribute axis of an element E in the node-set is hence enhanced. + * All element nodes along E's ancestor axis are examined for the nearest occurrences of simple + * inheritable attributes in the xml namespace, such as xml:lang and xml:space (whether or not they + * are in the node-set). From this list of attributes, any simple inheritable attributes that are + * already in E's attribute axis (whether or not they are in the node-set) are removed. Then, + * lexicographically merge this attribute list with the nodes of E's attribute axis that are in + * the node-set. The result of visiting the attribute axis is computed by processing the attribute + * nodes in this merged attribute list. + * + * The xml:id attribute is not a simple inheritable attribute and no processing of these attributes is + * performed. + * + * The xml:base attribute is not a simple inheritable attribute and requires special processing beyond + * a simple redeclaration. + * + * Attributes in the XML namespace other than xml:base, xml:id, xml:lang, and xml:space MUST be processed + * as ordinary attributes. + */ + + /* + * Add all visible attributes from current node. + */ + attr = cur->properties; + while (attr != NULL) { + /* special processing for XML attribute kiks in only when we have invisible parents */ + if ((!parent_visible) || (xmlC14NIsXmlAttr(attr) == 0)) { + /* check that attribute is visible */ + if (xmlC14NIsVisible(ctx, attr, cur)) { + xmlListInsert(list, attr); + } + } else { + int matched = 0; + + /* check for simple inheritance attributes */ + if((!matched) && (xml_lang_attr == NULL) && xmlStrEqual(attr->name, BAD_CAST "lang")) { + xml_lang_attr = attr; + matched = 1; + } + if((!matched) && (xml_space_attr == NULL) && xmlStrEqual(attr->name, BAD_CAST "space")) { + xml_space_attr = attr; + matched = 1; + } + + /* check for base attr */ + if((!matched) && (xml_base_attr == NULL) && xmlStrEqual(attr->name, BAD_CAST "base")) { + xml_base_attr = attr; + matched = 1; + } + + /* otherwise, it is a normal attribute, so just check if it is visible */ + if((!matched) && xmlC14NIsVisible(ctx, attr, cur)) { + xmlListInsert(list, attr); + } + } + + /* move to the next one */ + attr = attr->next; + } + + /* special processing for XML attribute kiks in only when we have invisible parents */ + if ((parent_visible)) { + + /* simple inheritance attributes - copy */ + if(xml_lang_attr == NULL) { + xml_lang_attr = xmlC14NFindHiddenParentAttr(ctx, cur->parent, BAD_CAST "lang", XML_XML_NAMESPACE); + } + if(xml_lang_attr != NULL) { + xmlListInsert(list, xml_lang_attr); + } + if(xml_space_attr == NULL) { + xml_space_attr = xmlC14NFindHiddenParentAttr(ctx, cur->parent, BAD_CAST "space", XML_XML_NAMESPACE); + } + if(xml_space_attr != NULL) { + xmlListInsert(list, xml_space_attr); + } + + /* base uri attribute - fix up */ + if(xml_base_attr == NULL) { + /* if we don't have base uri attribute, check if we have a "hidden" one above */ + xml_base_attr = xmlC14NFindHiddenParentAttr(ctx, cur->parent, BAD_CAST "base", XML_XML_NAMESPACE); + } + if(xml_base_attr != NULL) { + xml_base_attr = xmlC14NFixupBaseAttr(ctx, xml_base_attr); + if(xml_base_attr != NULL) { + xmlListInsert(list, xml_base_attr); + + /* note that we MUST delete returned attr node ourselves! */ + xml_base_attr->next = attrs_to_delete; + attrs_to_delete = xml_base_attr; } - attr = attr->next; } - cur = cur->parent; } + + /* done */ + break; } - /* - * print out all elements from list + /* + * print out all elements from list */ xmlListWalk(list, (xmlListWalker) xmlC14NPrintAttrs, (const void *) ctx); - /* + /* * Cleanup */ + xmlFreePropList(attrs_to_delete); xmlListDelete(list); return (0); } -/** +/** * xmlC14NCheckForRelativeNamespaces: * @ctx: the C14N context * @cur: the current element node @@ -1094,21 +1391,23 @@ /** * xmlC14NProcessElementNode: - * @ctx: the pointer to C14N context object + * @ctx: the pointer to C14N context object * @cur: the node to process - * + * @visible: this node is visible + * @all_parents_visible: whether all the parents of this node are visible + * * Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n) * * Element Nodes - * If the element is not in the node-set, then the result is obtained - * by processing the namespace axis, then the attribute axis, then - * processing the child nodes of the element that are in the node-set - * (in document order). If the element is in the node-set, then the result - * is an open angle bracket (<), the element QName, the result of - * processing the namespace axis, the result of processing the attribute - * axis, a close angle bracket (>), the result of processing the child - * nodes of the element that are in the node-set (in document order), an - * open angle bracket, a forward slash (/), the element QName, and a close + * If the element is not in the node-set, then the result is obtained + * by processing the namespace axis, then the attribute axis, then + * processing the child nodes of the element that are in the node-set + * (in document order). If the element is in the node-set, then the result + * is an open angle bracket (<), the element QName, the result of + * processing the namespace axis, the result of processing the attribute + * axis, a close angle bracket (>), the result of processing the child + * nodes of the element that are in the node-set (in document order), an + * open angle bracket, a forward slash (/), the element QName, and a close * angle bracket. * * Returns non-negative value on success or negative value on fail @@ -1125,7 +1424,7 @@ return (-1); } - /* + /* * Check relative relative namespaces: * implementations of XML canonicalization MUST report an operation * failure on documents containing relative namespace URIs. @@ -1136,13 +1435,13 @@ } - /* + /* * Save ns_rendered stack position */ memset(&state, 0, sizeof(state)); xmlC14NVisibleNsStackSave(ctx->ns_rendered, &state); - if (visible) { + if (visible) { if (ctx->parent_is_doc) { /* save this flag into the stack */ parent_is_doc = ctx->parent_is_doc; @@ -1159,7 +1458,7 @@ xmlOutputBufferWriteString(ctx->buf, (const char *) cur->name); } - if (!ctx->exclusive) { + if (!xmlC14NIsExclusive(ctx)) { ret = xmlC14NProcessNamespacesAxis(ctx, cur, visible); } else { ret = xmlExcC14NProcessNamespacesAxis(ctx, cur, visible); @@ -1172,14 +1471,14 @@ if(visible) { xmlC14NVisibleNsStackShift(ctx->ns_rendered); } - + ret = xmlC14NProcessAttrsAxis(ctx, cur, visible); if (ret < 0) { xmlC14NErrInternal("processing attributes axis"); - return (-1); + return (-1); } - if (visible) { + if (visible) { xmlOutputBufferWriteString(ctx->buf, ">"); } if (cur->children != NULL) { @@ -1205,7 +1504,7 @@ } } - /* + /* * Restore ns_rendered stack position */ xmlC14NVisibleNsStackRestore(ctx->ns_rendered, &state); @@ -1214,9 +1513,9 @@ /** * xmlC14NProcessNode: - * @ctx: the pointer to C14N context object + * @ctx: the pointer to C14N context object * @cur: the node to process - * + * * Processes the given node * * Returns non-negative value on success or negative value on fail @@ -1241,9 +1540,9 @@ case XML_TEXT_NODE: /* * Text Nodes - * the string value, except all ampersands are replaced - * by &, all open angle brackets (<) are replaced by <, all closing - * angle brackets (>) are replaced by >, and all #xD characters are + * the string value, except all ampersands are replaced + * by &, all open angle brackets (<) are replaced by <, all closing + * angle brackets (>) are replaced by >, and all #xD characters are * replaced by . */ /* cdata sections are processed as text nodes */ @@ -1263,16 +1562,16 @@ } break; case XML_PI_NODE: - /* - * Processing Instruction (PI) Nodes- - * The opening PI symbol (). If the string value is empty, - * then the leading space is not added. Also, a trailing #xA is - * rendered after the closing PI symbol for PI children of the - * root node with a lesser document order than the document - * element, and a leading #xA is rendered before the opening PI - * symbol of PI children of the root node with a greater document + /* + * Processing Instruction (PI) Nodes- + * The opening PI symbol (). If the string value is empty, + * then the leading space is not added. Also, a trailing #xA is + * rendered after the closing PI symbol for PI children of the + * root node with a lesser document order than the document + * element, and a leading #xA is rendered before the opening PI + * symbol of PI children of the root node with a greater document * order than the document element. */ if (visible) { @@ -1311,17 +1610,17 @@ case XML_COMMENT_NODE: /* * Comment Nodes - * Nothing if generating canonical XML without comments. For - * canonical XML with comments, generate the opening comment - * symbol (). Also, a trailing #xA is rendered - * after the closing comment symbol for comment children of the - * root node with a lesser document order than the document - * element, and a leading #xA is rendered before the opening - * comment symbol of comment children of the root node with a - * greater document order than the document element. (Comment - * children of the root node represent comments outside of the - * top-level document element and outside of the document type + * Nothing if generating canonical XML without comments. For + * canonical XML with comments, generate the opening comment + * symbol (). Also, a trailing #xA is rendered + * after the closing comment symbol for comment children of the + * root node with a lesser document order than the document + * element, and a leading #xA is rendered before the opening + * comment symbol of comment children of the root node with a + * greater document order than the document element. (Comment + * children of the root node represent comments outside of the + * top-level document element and outside of the document type * declaration). */ if (visible && ctx->with_comments) { @@ -1391,8 +1690,8 @@ case XML_XINCLUDE_START: case XML_XINCLUDE_END: #endif - /* - * should be ignored according to "W3C Canonical XML" + /* + * should be ignored according to "W3C Canonical XML" */ break; default: @@ -1405,9 +1704,9 @@ /** * xmlC14NProcessNodeList: - * @ctx: the pointer to C14N context object + * @ctx: the pointer to C14N context object * @cur: the node to start from - * + * * Processes all nodes in the row starting from cur. * * Returns non-negative value on success or negative value on fail @@ -1432,7 +1731,7 @@ /** * xmlC14NFreeCtx: * @ctx: the pointer to C14N context object - * + * * Cleanups the C14N context object. */ @@ -1452,28 +1751,29 @@ /** * xmlC14NNewCtx: - * @doc: the XML document for canonization - * @is_visible_callback:the function to use to determine is node visible + * @doc: the XML document for canonization + * @is_visible_callback:the function to use to determine is node visible * or not - * @user_data: the first parameter for @is_visible_callback function + * @user_data: the first parameter for @is_visible_callback function * (in most cases, it is nodes set) - * @inclusive_ns_prefixe the list of inclusive namespace prefixes + * @mode: the c14n mode (see @xmlC14NMode) + * @inclusive_ns_prefixe the list of inclusive namespace prefixes * ended with a NULL or NULL if there is no - * inclusive namespaces (only for exclusive + * inclusive namespaces (only for ` * canonicalization) - * @with_comments: include comments in the result (!=0) or not (==0) - * @buf: the output buffer to store canonical XML; this + * @with_comments: include comments in the result (!=0) or not (==0) + * @buf: the output buffer to store canonical XML; this * buffer MUST have encoder==NULL because C14N requires * UTF-8 output - * + * * Creates new C14N context object to store C14N parameters. * * Returns pointer to newly created object (success) or NULL (fail) */ static xmlC14NCtxPtr -xmlC14NNewCtx(xmlDocPtr doc, +xmlC14NNewCtx(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback, void* user_data, - int exclusive, xmlChar ** inclusive_ns_prefixes, + xmlC14NMode mode, xmlChar ** inclusive_ns_prefixes, int with_comments, xmlOutputBufferPtr buf) { xmlC14NCtxPtr ctx = NULL; @@ -1531,11 +1831,11 @@ } /* - * Set "exclusive" flag, create a nodes set for namespaces - * stack and remember list of incluseve prefixes + * Set "mode" flag and remember list of incluseve prefixes + * for exclusive c14n */ - if (exclusive) { - ctx->exclusive = 1; + ctx->mode = mode; + if(xmlC14NIsExclusive(ctx)) { ctx->inclusive_ns_prefixes = inclusive_ns_prefixes; } return (ctx); @@ -1543,34 +1843,34 @@ /** * xmlC14NExecute: - * @doc: the XML document for canonization - * @is_visible_callback:the function to use to determine is node visible + * @doc: the XML document for canonization + * @is_visible_callback:the function to use to determine is node visible * or not - * @user_data: the first parameter for @is_visible_callback function + * @user_data: the first parameter for @is_visible_callback function * (in most cases, it is nodes set) - * @exclusive: the exclusive flag (0 - non-exclusive canonicalization; - * otherwise - exclusive canonicalization) - * @inclusive_ns_prefixes: the list of inclusive namespace prefixes + * @mode: the c14n mode (see @xmlC14NMode) + * @inclusive_ns_prefixes: the list of inclusive namespace prefixes * ended with a NULL or NULL if there is no - * inclusive namespaces (only for exclusive + * inclusive namespaces (only for exclusive * canonicalization, ignored otherwise) - * @with_comments: include comments in the result (!=0) or not (==0) - * @buf: the output buffer to store canonical XML; this + * @with_comments: include comments in the result (!=0) or not (==0) + * @buf: the output buffer to store canonical XML; this * buffer MUST have encoder==NULL because C14N requires * UTF-8 output - * + * * Dumps the canonized image of given XML document into the provided buffer. * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n) * - * Returns non-negative value on success or a negative value on fail + * Returns non-negative value on success or a negative value on fail */ -int +int xmlC14NExecute(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback, - void* user_data, int exclusive, xmlChar **inclusive_ns_prefixes, + void* user_data, int mode, xmlChar **inclusive_ns_prefixes, int with_comments, xmlOutputBufferPtr buf) { xmlC14NCtxPtr ctx; + xmlC14NMode c14n_mode = XML_C14N_1_0; int ret; if ((buf == NULL) || (doc == NULL)) { @@ -1578,6 +1878,19 @@ return (-1); } + /* for backward compatibility, we have to have "mode" as "int" + and here we check that user gives valid value */ + switch(mode) { + case XML_C14N_1_0: + case XML_C14N_EXCLUSIVE_1_0: + case XML_C14N_1_1: + c14n_mode = (xmlC14NMode)mode; + break; + default: + xmlC14NErrParam("invalid mode for executing c14n"); + return (-1); + } + /* * Validate the encoding output buffer encoding */ @@ -1587,9 +1900,9 @@ return (-1); } - ctx = xmlC14NNewCtx(doc, is_visible_callback, user_data, - exclusive, inclusive_ns_prefixes, - with_comments, buf); + ctx = xmlC14NNewCtx(doc, is_visible_callback, user_data, + c14n_mode, inclusive_ns_prefixes, + with_comments, buf); if (ctx == NULL) { xmlC14NErr(NULL, (xmlNodePtr) doc, XML_C14N_CREATE_CTXT, "xmlC14NExecute: unable to create C14N context\n"); @@ -1598,12 +1911,12 @@ - /* + /* * Root Node - * The root node is the parent of the top-level document element. The - * result of processing each of its child nodes that is in the node-set - * in document order. The root node does not generate a byte order mark, - * XML declaration, nor anything from within the document type + * The root node is the parent of the top-level document element. The + * result of processing each of its child nodes that is in the node-set + * in document order. The root node does not generate a byte order mark, + * XML declaration, nor anything from within the document type * declaration. */ if (doc->children != NULL) { @@ -1625,7 +1938,7 @@ return (-1); } - /* + /* * Cleanup */ xmlC14NFreeCtx(ctx); @@ -1634,34 +1947,33 @@ /** * xmlC14NDocSaveTo: - * @doc: the XML document for canonization - * @nodes: the nodes set to be included in the canonized image - * or NULL if all document nodes should be included - * @exclusive: the exclusive flag (0 - non-exclusive canonicalization; - * otherwise - exclusive canonicalization) - * @inclusive_ns_prefixes: the list of inclusive namespace prefixes + * @doc: the XML document for canonization + * @nodes: the nodes set to be included in the canonized image + * or NULL if all document nodes should be included + * @mode: the c14n mode (see @xmlC14NMode) + * @inclusive_ns_prefixes: the list of inclusive namespace prefixes * ended with a NULL or NULL if there is no - * inclusive namespaces (only for exclusive + * inclusive namespaces (only for exclusive * canonicalization, ignored otherwise) - * @with_comments: include comments in the result (!=0) or not (==0) - * @buf: the output buffer to store canonical XML; this + * @with_comments: include comments in the result (!=0) or not (==0) + * @buf: the output buffer to store canonical XML; this * buffer MUST have encoder==NULL because C14N requires * UTF-8 output - * + * * Dumps the canonized image of given XML document into the provided buffer. * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n) * - * Returns non-negative value on success or a negative value on fail + * Returns non-negative value on success or a negative value on fail */ int xmlC14NDocSaveTo(xmlDocPtr doc, xmlNodeSetPtr nodes, - int exclusive, xmlChar ** inclusive_ns_prefixes, + int mode, xmlChar ** inclusive_ns_prefixes, int with_comments, xmlOutputBufferPtr buf) { - return(xmlC14NExecute(doc, + return(xmlC14NExecute(doc, (xmlC14NIsVisibleCallback)xmlC14NIsNodeInNodeset, nodes, - exclusive, + mode, inclusive_ns_prefixes, with_comments, buf)); @@ -1670,29 +1982,28 @@ /** * xmlC14NDocDumpMemory: - * @doc: the XML document for canonization - * @nodes: the nodes set to be included in the canonized image - * or NULL if all document nodes should be included - * @exclusive: the exclusive flag (0 - non-exclusive canonicalization; - * otherwise - exclusive canonicalization) - * @inclusive_ns_prefixes: the list of inclusive namespace prefixes + * @doc: the XML document for canonization + * @nodes: the nodes set to be included in the canonized image + * or NULL if all document nodes should be included + * @mode: the c14n mode (see @xmlC14NMode) + * @inclusive_ns_prefixes: the list of inclusive namespace prefixes * ended with a NULL or NULL if there is no - * inclusive namespaces (only for exclusive + * inclusive namespaces (only for exclusive * canonicalization, ignored otherwise) - * @with_comments: include comments in the result (!=0) or not (==0) - * @doc_txt_ptr: the memory pointer for allocated canonical XML text; + * @with_comments: include comments in the result (!=0) or not (==0) + * @doc_txt_ptr: the memory pointer for allocated canonical XML text; * the caller of this functions is responsible for calling - * xmlFree() to free allocated memory - * + * xmlFree() to free allocated memory + * * Dumps the canonized image of given XML document into memory. * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n) * - * Returns the number of bytes written on success or a negative value on fail + * Returns the number of bytes written on success or a negative value on fail */ int xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes, - int exclusive, xmlChar ** inclusive_ns_prefixes, + int mode, xmlChar ** inclusive_ns_prefixes, int with_comments, xmlChar ** doc_txt_ptr) { int ret; @@ -1706,7 +2017,7 @@ *doc_txt_ptr = NULL; /* - * create memory buffer with UTF8 (default) encoding + * create memory buffer with UTF8 (default) encoding */ buf = xmlAllocOutputBuffer(NULL); if (buf == NULL) { @@ -1717,7 +2028,7 @@ /* * canonize document and write to buffer */ - ret = xmlC14NDocSaveTo(doc, nodes, exclusive, inclusive_ns_prefixes, + ret = xmlC14NDocSaveTo(doc, nodes, mode, inclusive_ns_prefixes, with_comments, buf); if (ret < 0) { xmlC14NErrInternal("saving doc to output buffer"); @@ -1725,9 +2036,9 @@ return (-1); } - ret = buf->buffer->use; + ret = xmlBufUse(buf->buffer); if (ret > 0) { - *doc_txt_ptr = xmlStrndup(buf->buffer->content, ret); + *doc_txt_ptr = xmlStrndup(xmlBufContent(buf->buffer), ret); } (void) xmlOutputBufferClose(buf); @@ -1740,31 +2051,30 @@ /** * xmlC14NDocSave: - * @doc: the XML document for canonization - * @nodes: the nodes set to be included in the canonized image - * or NULL if all document nodes should be included - * @exclusive: the exclusive flag (0 - non-exclusive canonicalization; - * otherwise - exclusive canonicalization) - * @inclusive_ns_prefixes: the list of inclusive namespace prefixes + * @doc: the XML document for canonization + * @nodes: the nodes set to be included in the canonized image + * or NULL if all document nodes should be included + * @mode: the c14n mode (see @xmlC14NMode) + * @inclusive_ns_prefixes: the list of inclusive namespace prefixes * ended with a NULL or NULL if there is no - * inclusive namespaces (only for exclusive + * inclusive namespaces (only for exclusive * canonicalization, ignored otherwise) - * @with_comments: include comments in the result (!=0) or not (==0) - * @filename: the filename to store canonical XML image - * @compression: the compression level (zlib requred): + * @with_comments: include comments in the result (!=0) or not (==0) + * @filename: the filename to store canonical XML image + * @compression: the compression level (zlib requred): * -1 - libxml default, - * 0 - uncompressed, + * 0 - uncompressed, * >0 - compression level - * + * * Dumps the canonized image of given XML document into the file. * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n) * - * Returns the number of bytes written success or a negative value on fail + * Returns the number of bytes written success or a negative value on fail */ int xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes, - int exclusive, xmlChar ** inclusive_ns_prefixes, + int mode, xmlChar ** inclusive_ns_prefixes, int with_comments, const char *filename, int compression) { xmlOutputBufferPtr buf; @@ -1779,7 +2089,7 @@ compression = xmlGetCompressMode(); #endif - /* + /* * save the content to a temp buffer, use default UTF8 encoding. */ buf = xmlOutputBufferCreateFilename(filename, NULL, compression); @@ -1791,7 +2101,7 @@ /* * canonize document and write to buffer */ - ret = xmlC14NDocSaveTo(doc, nodes, exclusive, inclusive_ns_prefixes, + ret = xmlC14NDocSaveTo(doc, nodes, mode, inclusive_ns_prefixes, with_comments, buf); if (ret < 0) { xmlC14NErrInternal("cannicanize document to buffer"); @@ -1799,8 +2109,8 @@ return (-1); } - /* - * get the numbers of bytes written + /* + * get the numbers of bytes written */ ret = xmlOutputBufferClose(buf); return (ret); @@ -1814,14 +2124,14 @@ #define growBufferReentrant() { \ buffer_size *= 2; \ buffer = (xmlChar *) \ - xmlRealloc(buffer, buffer_size * sizeof(xmlChar)); \ + xmlRealloc(buffer, buffer_size * sizeof(xmlChar)); \ if (buffer == NULL) { \ xmlC14NErrMemory("growing buffer"); \ return(NULL); \ } \ } -/** +/** * xmlC11NNormalizeString: * @input: the input string * @mode: the normalization mode (attribute, comment, PI or text) @@ -1919,7 +2229,7 @@ } cur++; } - *out++ = 0; + *out = 0; return (buffer); } #endif /* LIBXML_OUTPUT_ENABLED */ diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/c14n.in.h gettext-0.19.7/gnulib-local/lib/libxml/c14n.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/c14n.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/c14n.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -2,30 +2,30 @@ * Summary: Provide Canonical XML and Exclusive XML Canonicalization * Description: the c14n modules provides a * - * "Canonical XML" implementation + * "Canonical XML" implementation * http://www.w3.org/TR/xml-c14n - * + * * and an * * "Exclusive XML Canonicalization" implementation * http://www.w3.org/TR/xml-exc-c14n - + * Copy: See Copyright for the status of this software. - * + * * Author: Aleksey Sanin */ #ifndef __XML_C14N_H__ -#define __XML_C14N_H__ +#define __XML_C14N_H__ #ifdef LIBXML_C14N_ENABLED #ifdef LIBXML_OUTPUT_ENABLED #ifdef __cplusplus extern "C" { -#endif /* __cplusplus */ +#endif /* __cplusplus */ #include #include -#include +#include /* * XML Canonicazation @@ -37,44 +37,55 @@ * Canonical form of an XML document could be created if and only if * a) default attributes (if any) are added to all nodes * b) all character and parsed entity references are resolved - * In order to achive this in libxml2 the document MUST be loaded with + * In order to achive this in libxml2 the document MUST be loaded with * following global setings: - * + * * xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS; * xmlSubstituteEntitiesDefault(1); * * or corresponding parser context setting: * xmlParserCtxtPtr ctxt; - * - * ... + * + * ... * ctxt->loadsubset = XML_DETECT_IDS | XML_COMPLETE_ATTRS; * ctxt->replaceEntities = 1; * ... */ +/* + * xmlC14NMode: + * + * Predefined values for C14N modes + * + */ +typedef enum { + XML_C14N_1_0 = 0, /* Origianal C14N 1.0 spec */ + XML_C14N_EXCLUSIVE_1_0 = 1, /* Exclusive C14N 1.0 spec */ + XML_C14N_1_1 = 2 /* C14N 1.1 spec */ +} xmlC14NMode; -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlC14NDocSaveTo (xmlDocPtr doc, xmlNodeSetPtr nodes, - int exclusive, + int mode, /* a xmlC14NMode */ xmlChar **inclusive_ns_prefixes, - int with_comments, + int with_comments, xmlOutputBufferPtr buf); XMLPUBFUN int XMLCALL xmlC14NDocDumpMemory (xmlDocPtr doc, xmlNodeSetPtr nodes, - int exclusive, + int mode, /* a xmlC14NMode */ xmlChar **inclusive_ns_prefixes, - int with_comments, + int with_comments, xmlChar **doc_txt_ptr); XMLPUBFUN int XMLCALL xmlC14NDocSave (xmlDocPtr doc, xmlNodeSetPtr nodes, - int exclusive, + int mode, /* a xmlC14NMode */ xmlChar **inclusive_ns_prefixes, - int with_comments, + int with_comments, const char* filename, int compression); @@ -82,17 +93,27 @@ /** * This is the core C14N function */ -typedef int (*xmlC14NIsVisibleCallback) (void* user_data, +/** + * xmlC14NIsVisibleCallback: + * @user_data: user data + * @node: the curent node + * @parent: the parent node + * + * Signature for a C14N callback on visible nodes + * + * Returns 1 if the node should be included + */ +typedef int (*xmlC14NIsVisibleCallback) (void* user_data, xmlNodePtr node, xmlNodePtr parent); XMLPUBFUN int XMLCALL xmlC14NExecute (xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback, - void* user_data, - int exclusive, + void* user_data, + int mode, /* a xmlC14NMode */ xmlChar **inclusive_ns_prefixes, - int with_comments, + int with_comments, xmlOutputBufferPtr buf); #ifdef __cplusplus diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/catalog.c gettext-0.19.7/gnulib-local/lib/libxml/catalog.c --- gettext-0.19.6/gnulib-local/lib/libxml/catalog.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/catalog.c 2015-12-23 07:08:27.000000000 +0000 @@ -1,5 +1,5 @@ /** - * catalog.c: set of generic Catalog related routines + * catalog.c: set of generic Catalog related routines * * Reference: SGML Open Technical Resolution TR9401:1997. * http://www.jclark.com/sp/catalog.htm @@ -41,9 +41,17 @@ #include #include +#include "buf.h" + #define MAX_DELEGATE 50 #define MAX_CATAL_DEPTH 50 +#ifdef _WIN32 +# define PATH_SEAPARATOR ';' +#else +# define PATH_SEAPARATOR ':' +#endif + /** * TODO: * @@ -54,7 +62,7 @@ *> values "system" and "public". I have made the default be "system" to *> match yours. */ -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); @@ -71,9 +79,17 @@ #if defined(_WIN32) && defined(_MSC_VER) #undef XML_XML_DEFAULT_CATALOG static char XML_XML_DEFAULT_CATALOG[256] = "file:///etc/xml/catalog"; +#if defined(_WIN32_WCE) +/* Windows CE don't have a A variant */ +#define GetModuleHandleA GetModuleHandle +#define GetModuleFileNameA GetModuleFileName +#else +#if !defined(_WINDOWS_) void* __stdcall GetModuleHandleA(const char*); unsigned long __stdcall GetModuleFileNameA(void*, char*, unsigned long); #endif +#endif +#endif static xmlChar *xmlCatalogNormalizePublic(const xmlChar *pubID); static int xmlExpandCatalog(xmlCatalogPtr catal, const char *filename); @@ -194,7 +210,7 @@ /************************************************************************ * * - * Catalog error handlers * + * Catalog error handlers * * * ************************************************************************/ @@ -247,9 +263,9 @@ * @name: name of the entry * @value: value of the entry * @prefer: the PUBLIC vs. SYSTEM current preference value - * @group: for members of a group, the group entry + * @group: for members of a group, the group entry * - * create a new Catalog entry, this type is shared both by XML and + * create a new Catalog entry, this type is shared both by XML and * SGML catalogs, but the acceptable types values differs. * * Returns the xmlCatalogEntryPtr or NULL in case of error @@ -387,7 +403,7 @@ * @type: type of catalog * @prefer: the PUBLIC vs. SYSTEM current preference value * - * create a new Catalog, this type is shared both by XML and + * create a new Catalog, this type is shared both by XML and * SGML catalogs, but the acceptable types values differs. * * Returns the xmlCatalogPtr or NULL in case of error @@ -555,7 +571,7 @@ xns = xmlSearchNsByHref(doc, node, XML_XML_NAMESPACE); if (xns != NULL) xmlSetNsProp(node, xns, BAD_CAST "base", - cur->value); + cur->value); } switch (cur->prefer) { case XML_CATA_PREFER_NONE: @@ -673,7 +689,7 @@ xmlAddChild((xmlNodePtr) doc, catalog); xmlDumpXMLCatalogNode(catal, catalog, doc, ns, NULL); - + /* * reserialize it */ @@ -810,7 +826,7 @@ if (xmlStrncmp(urn, BAD_CAST XML_URN_PUBID, sizeof(XML_URN_PUBID) - 1)) return(NULL); urn += sizeof(XML_URN_PUBID) - 1; - + while (*urn != 0) { if (i > sizeof(result) - 4) break; @@ -900,10 +916,7 @@ inputStream->filename = (char *) xmlCanonicPath((const xmlChar *)filename); inputStream->buf = buf; - inputStream->base = inputStream->buf->buffer->content; - inputStream->cur = inputStream->buf->buffer->content; - inputStream->end = - &inputStream->buf->buffer->content[inputStream->buf->buffer->use]; + xmlBufResetInput(buf->buffer, inputStream); inputPush(ctxt, inputStream); if ((ctxt->directory == NULL) && (directory == NULL)) @@ -926,7 +939,7 @@ ctxt->myDoc = NULL; } xmlFreeParserCtxt(ctxt); - + return(ret); } @@ -978,25 +991,27 @@ return (NULL); } #endif - content = xmlMallocAtomic(size + 10); + content = (xmlChar*)xmlMallocAtomic(size + 10); if (content == NULL) { xmlCatalogErrMemory("allocating catalog data"); +#ifdef HAVE_STAT + close(fd); +#else + fclose(fd); +#endif return (NULL); } #ifdef HAVE_STAT len = read(fd, content, size); + close(fd); #else len = fread(content, 1, size, fd); + fclose(fd); #endif if (len < 0) { xmlFree(content); return (NULL); } -#ifdef HAVE_STAT - close(fd); -#else - fclose(fd); -#endif content[len] = 0; return(content); @@ -1319,7 +1334,7 @@ * * Parses the catalog file to extract the XML tree and then analyze the * tree to build a list of Catalog entries corresponding to this catalog - * + * * Returns the resulting Catalog entries list */ static xmlCatalogEntryPtr @@ -1387,19 +1402,17 @@ * @catal: an existing but incomplete catalog entry * * Fetch and parse the subcatalog referenced by an entry - * + * * Returns 0 in case of success, -1 otherwise */ static int xmlFetchXMLCatalogFile(xmlCatalogEntryPtr catal) { xmlCatalogEntryPtr doc; - if (catal == NULL) + if (catal == NULL) return(-1); if (catal->URL == NULL) return(-1); - if (catal->children != NULL) - return(-1); /* * lock the whole catalog for modification @@ -1488,7 +1501,7 @@ xmlCatalogEntryType typ; int doregister = 0; - if ((catal == NULL) || + if ((catal == NULL) || ((catal->type != XML_CATA_CATALOG) && (catal->type != XML_CATA_BROKEN_CATALOG))) return(-1); @@ -1541,7 +1554,7 @@ NULL, catal->prefer, NULL); if (doregister) { catal->type = XML_CATA_CATALOG; - cur = xmlHashLookup(xmlCatalogXMLFiles, catal->URL); + cur = (xmlCatalogEntryPtr)xmlHashLookup(xmlCatalogXMLFiles, catal->URL); if (cur != NULL) cur->children = catal->children; } @@ -1564,7 +1577,7 @@ xmlCatalogEntryPtr cur; int ret = 0; - if ((catal == NULL) || + if ((catal == NULL) || ((catal->type != XML_CATA_CATALOG) && (catal->type != XML_CATA_BROKEN_CATALOG))) return(-1); @@ -1779,7 +1792,7 @@ } if (nbList < MAX_DELEGATE) delegates[nbList++] = cur->URL; - + if (cur->children == NULL) { xmlFetchXMLCatalogFile(cur); } @@ -1816,6 +1829,8 @@ if (ret != NULL) { catal->depth--; return(ret); + } else if (catal->depth > MAX_CATAL_DEPTH) { + return(NULL); } } } @@ -1856,6 +1871,13 @@ if (URI == NULL) return(NULL); + if (catal->depth > MAX_CATAL_DEPTH) { + xmlCatalogErr(catal, NULL, XML_CATALOG_RECURSION, + "Detected recursion in catalog %s\n", + catal->name, NULL, NULL); + return(NULL); + } + /* * First tries steps 2/ 3/ 4/ if a system ID is provided. */ @@ -1983,7 +2005,7 @@ xmlChar *ret = NULL; xmlChar *urnID = NULL; xmlChar *normid; - + if (catal == NULL) return(NULL); if ((pubID == NULL) && (sysID == NULL)) @@ -1992,7 +2014,7 @@ normid = xmlCatalogNormalizePublic(pubID); if (normid != NULL) pubID = (*normid != 0 ? normid : NULL); - + if (!xmlStrncmp(pubID, BAD_CAST XML_URN_PUBID, sizeof(XML_URN_PUBID) - 1)) { urnID = xmlCatalogUnWrapURN(pubID); if (xmlDebugCatalogs) { @@ -2041,16 +2063,18 @@ if (catal->children != NULL) { ret = xmlCatalogXMLResolve(catal->children, pubID, sysID); if (ret != NULL) { - if (normid != NULL) - xmlFree(normid); - return(ret); - } + break; + } else if ((catal->children != NULL) && + (catal->children->depth > MAX_CATAL_DEPTH)) { + ret = NULL; + break; + } } } catal = catal->next; } - if (normid != NULL) - xmlFree(normid); + if (normid != NULL) + xmlFree(normid); return(ret); } @@ -2070,7 +2094,7 @@ xmlCatalogListXMLResolveURI(xmlCatalogEntryPtr catal, const xmlChar *URI) { xmlChar *ret = NULL; xmlChar *urnID = NULL; - + if (catal == NULL) return(NULL); if (URI == NULL) @@ -2130,7 +2154,7 @@ */ static const xmlChar * xmlParseSGMLCatalogComment(const xmlChar *cur) { - if ((cur[0] != '-') || (cur[1] != '-')) + if ((cur[0] != '-') || (cur[1] != '-')) return(cur); SKIP(2); while ((cur[0] != 0) && ((cur[0] != '-') || ((cur[1] != '-')))) @@ -2593,6 +2617,8 @@ return(ret); if (sysID != NULL) ret = xmlCatalogGetSGMLSystem(catal->sgml, sysID); + if (ret != NULL) + return(ret); return(NULL); } @@ -2663,7 +2689,7 @@ first = content; - + while ((*first != 0) && (*first != '-') && (*first != '<') && (!(((*first >= 'A') && (*first <= 'Z')) || ((*first >= 'a') && (*first <= 'z'))))) @@ -2758,7 +2784,7 @@ if ((sysID == NULL) || (catal == NULL)) return(NULL); - + if (xmlDebugCatalogs) xmlGenericError(xmlGenericErrorContext, "Resolve sysID %s\n", sysID); @@ -2793,7 +2819,7 @@ if ((pubID == NULL) || (catal == NULL)) return(NULL); - + if (xmlDebugCatalogs) xmlGenericError(xmlGenericErrorContext, "Resolve pubID %s\n", pubID); @@ -2889,7 +2915,7 @@ sgml = xmlCatalogSGMLResolve(catal, NULL, URI); if (sgml != NULL) - sgml = xmlStrdup(sgml); + ret = xmlStrdup(sgml); } return(ret); } @@ -2912,7 +2938,7 @@ } else { xmlHashScan(catal->sgml, (xmlHashScanner) xmlCatalogDumpEntry, out); - } + } } #endif /* LIBXML_OUTPUT_ENABLED */ @@ -2920,7 +2946,7 @@ * xmlACatalogAdd: * @catal: a Catalog * @type: the type of record to add to the catalog - * @orig: the system, public or prefix to match + * @orig: the system, public or prefix to match * @replace: the replacement value for the match * * Add an entry in the catalog, it may overwrite existing but @@ -2979,7 +3005,7 @@ (xmlHashDeallocator) xmlFreeCatalogEntry); if (res == 0) res = 1; - } + } return(res); } @@ -3038,7 +3064,7 @@ return(1); if (res < 0) return(-1); - } + } return(0); } @@ -3061,7 +3087,7 @@ if (xmlCatalogInitialized != 0) return; - if (getenv("XML_DEBUG_CATALOG")) + if (getenv("XML_DEBUG_CATALOG")) xmlDebugCatalogs = 1; xmlCatalogMutex = xmlNewRMutex(); @@ -3082,7 +3108,7 @@ xmlInitializeCatalogData(); xmlRMutexLock(xmlCatalogMutex); - if (getenv("XML_DEBUG_CATALOG")) + if (getenv("XML_DEBUG_CATALOG")) xmlDebugCatalogs = 1; if (xmlDefaultCatalog == NULL) { @@ -3105,12 +3131,12 @@ unsigned long len = GetModuleFileNameA(hmodule, buf, 255); if (len != 0) { char* p = &(buf[len]); - while (*p != '\\' && p > buf) + while (*p != '\\' && p > buf) p--; if (p != buf) { xmlChar* uri; strncpy(p, "\\..\\etc\\catalog", 255 - (p - buf)); - uri = xmlCanonicPath(buf); + uri = xmlCanonicPath((const xmlChar*)buf); if (uri != NULL) { strncpy(XML_XML_DEFAULT_CATALOG, uri, 255); xmlFree(uri); @@ -3124,15 +3150,15 @@ catalogs = XML_XML_DEFAULT_CATALOG; #endif - catal = xmlCreateNewCatalog(XML_XML_CATALOG_TYPE, + catal = xmlCreateNewCatalog(XML_XML_CATALOG_TYPE, xmlCatalogDefaultPrefer); if (catal != NULL) { - /* the XML_CATALOG_FILES envvar is allowed to contain a + /* the XML_CATALOG_FILES envvar is allowed to contain a space-separated list of entries. */ cur = catalogs; nextent = &catal->xml; while (*cur != '\0') { - while (xmlIsBlank_ch(*cur)) + while (xmlIsBlank_ch(*cur)) cur++; if (*cur != 0) { paths = cur; @@ -3209,6 +3235,9 @@ const char *cur; const char *paths; xmlChar *path; +#ifdef _WIN32 + int i, iLen; +#endif if (pathss == NULL) return; @@ -3218,15 +3247,23 @@ while (xmlIsBlank_ch(*cur)) cur++; if (*cur != 0) { paths = cur; - while ((*cur != 0) && (*cur != ':') && (!xmlIsBlank_ch(*cur))) + while ((*cur != 0) && (*cur != PATH_SEAPARATOR) && (!xmlIsBlank_ch(*cur))) cur++; path = xmlStrndup((const xmlChar *)paths, cur - paths); +#ifdef _WIN32 + iLen = strlen((const char*)path); + for(i = 0; i < iLen; i++) { + if(path[i] == '\\') { + path[i] = '/'; + } + } +#endif if (path != NULL) { xmlLoadCatalog((const char *) path); xmlFree(path); } } - while (*cur == ':') + while (*cur == PATH_SEAPARATOR) cur++; } } @@ -3246,7 +3283,7 @@ xmlGenericError(xmlGenericErrorContext, "Catalogs cleanup\n"); if (xmlCatalogXMLFiles != NULL) - xmlHashFree(xmlCatalogXMLFiles, + xmlHashFree(xmlCatalogXMLFiles, (xmlHashDeallocator)xmlFreeCatalogHashEntryList); xmlCatalogXMLFiles = NULL; if (xmlDefaultCatalog != NULL) @@ -3361,7 +3398,7 @@ /** * xmlCatalogAdd: * @type: the type of record to add to the catalog - * @orig: the system, public or prefix to match + * @orig: the system, public or prefix to match * @replace: the replacement value for the match * * Add an entry in the catalog, it may overwrite existing but @@ -3392,7 +3429,7 @@ xmlRMutexUnlock(xmlCatalogMutex); return(0); - } + } res = xmlACatalogAdd(xmlDefaultCatalog, type, orig, replace); xmlRMutexUnlock(xmlCatalogMutex); @@ -3518,8 +3555,8 @@ xmlGenericError(xmlGenericErrorContext, "Setting catalog preference to SYSTEM\n"); break; - case XML_CATA_PREFER_NONE: - break; + default: + return(ret); } } xmlCatalogDefaultPrefer = prefer; @@ -3580,7 +3617,7 @@ * * Returns the updated list */ -void * +void * xmlCatalogAddLocal(void *catalogs, const xmlChar *URL) { xmlCatalogEntryPtr catal, add; @@ -3600,7 +3637,7 @@ return(catalogs); catal = (xmlCatalogEntryPtr) catalogs; - if (catal == NULL) + if (catal == NULL) return((void *) add); while (catal->next != NULL) @@ -3615,7 +3652,7 @@ * @pubID: the public ID string * @sysID: the system ID string * - * Do a complete resolution lookup of an External Identifier using a + * Do a complete resolution lookup of an External Identifier using a * document's private catalog list * * Returns the URI of the resource or NULL if not found, it must be freed @@ -3660,7 +3697,7 @@ * @catalogs: a document's list of catalogs * @URI: the URI * - * Do a complete resolution lookup of an URI using a + * Do a complete resolution lookup of an URI using a * document's private catalog list * * Returns the URI of the resource or NULL if not found, it must be freed @@ -3721,7 +3758,7 @@ if (sysID == NULL) return(NULL); - + /* * Check first the XML catalogs */ @@ -3765,7 +3802,7 @@ if (pubID == NULL) return(NULL); - + /* * Check first the XML catalogs */ diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/catalog.in.h gettext-0.19.7/gnulib-local/lib/libxml/catalog.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/catalog.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/catalog.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -68,111 +68,111 @@ */ XMLPUBFUN xmlCatalogPtr XMLCALL xmlNewCatalog (int sgml); -XMLPUBFUN xmlCatalogPtr XMLCALL +XMLPUBFUN xmlCatalogPtr XMLCALL xmlLoadACatalog (const char *filename); -XMLPUBFUN xmlCatalogPtr XMLCALL +XMLPUBFUN xmlCatalogPtr XMLCALL xmlLoadSGMLSuperCatalog (const char *filename); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlConvertSGMLCatalog (xmlCatalogPtr catal); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlACatalogAdd (xmlCatalogPtr catal, const xmlChar *type, const xmlChar *orig, const xmlChar *replace); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlACatalogRemove (xmlCatalogPtr catal, const xmlChar *value); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlACatalogResolve (xmlCatalogPtr catal, const xmlChar *pubID, const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlACatalogResolveSystem(xmlCatalogPtr catal, const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlACatalogResolvePublic(xmlCatalogPtr catal, const xmlChar *pubID); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlACatalogResolveURI (xmlCatalogPtr catal, const xmlChar *URI); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlACatalogDump (xmlCatalogPtr catal, FILE *out); #endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeCatalog (xmlCatalogPtr catal); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCatalogIsEmpty (xmlCatalogPtr catal); /* * Global operations. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlInitializeCatalog (void); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlLoadCatalog (const char *filename); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlLoadCatalogs (const char *paths); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCatalogCleanup (void); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCatalogDump (FILE *out); #endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlCatalogResolve (const xmlChar *pubID, const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlCatalogResolveSystem (const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlCatalogResolvePublic (const xmlChar *pubID); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlCatalogResolveURI (const xmlChar *URI); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCatalogAdd (const xmlChar *type, const xmlChar *orig, const xmlChar *replace); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCatalogRemove (const xmlChar *value); -XMLPUBFUN xmlDocPtr XMLCALL +XMLPUBFUN xmlDocPtr XMLCALL xmlParseCatalogFile (const char *filename); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCatalogConvert (void); /* * Strictly minimal interfaces for per-document catalogs used * by the parser. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCatalogFreeLocal (void *catalogs); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlCatalogAddLocal (void *catalogs, const xmlChar *URL); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlCatalogLocalResolve (void *catalogs, const xmlChar *pubID, const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlCatalogLocalResolveURI(void *catalogs, const xmlChar *URI); /* * Preference settings. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCatalogSetDebug (int level); -XMLPUBFUN xmlCatalogPrefer XMLCALL +XMLPUBFUN xmlCatalogPrefer XMLCALL xmlCatalogSetDefaultPrefer(xmlCatalogPrefer prefer); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCatalogSetDefaults (xmlCatalogAllow allow); -XMLPUBFUN xmlCatalogAllow XMLCALL +XMLPUBFUN xmlCatalogAllow XMLCALL xmlCatalogGetDefaults (void); /* DEPRECATED interfaces */ -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlCatalogGetSystem (const xmlChar *sysID); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlCatalogGetPublic (const xmlChar *pubID); #ifdef __cplusplus diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/chvalid.c gettext-0.19.7/gnulib-local/lib/libxml/chvalid.c --- gettext-0.19.6/gnulib-local/lib/libxml/chvalid.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/chvalid.c 2015-12-23 07:08:27.000000000 +0000 @@ -46,109 +46,109 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -static const xmlChSRange xmlIsBaseChar_srng[] = { {0x100, 0x131}, - {0x134, 0x13e}, {0x141, 0x148}, {0x14a, 0x17e}, {0x180, 0x1c3}, - {0x1cd, 0x1f0}, {0x1f4, 0x1f5}, {0x1fa, 0x217}, {0x250, 0x2a8}, - {0x2bb, 0x2c1}, {0x386, 0x386}, {0x388, 0x38a}, {0x38c, 0x38c}, - {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3d6}, {0x3da, 0x3da}, - {0x3dc, 0x3dc}, {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3f3}, - {0x401, 0x40c}, {0x40e, 0x44f}, {0x451, 0x45c}, {0x45e, 0x481}, - {0x490, 0x4c4}, {0x4c7, 0x4c8}, {0x4cb, 0x4cc}, {0x4d0, 0x4eb}, - {0x4ee, 0x4f5}, {0x4f8, 0x4f9}, {0x531, 0x556}, {0x559, 0x559}, - {0x561, 0x586}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, - {0x641, 0x64a}, {0x671, 0x6b7}, {0x6ba, 0x6be}, {0x6c0, 0x6ce}, - {0x6d0, 0x6d3}, {0x6d5, 0x6d5}, {0x6e5, 0x6e6}, {0x905, 0x939}, - {0x93d, 0x93d}, {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990}, - {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, - {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a}, - {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33}, - {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e}, - {0xa72, 0xa74}, {0xa85, 0xa8b}, {0xa8d, 0xa8d}, {0xa8f, 0xa91}, - {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9}, - {0xabd, 0xabd}, {0xae0, 0xae0}, {0xb05, 0xb0c}, {0xb0f, 0xb10}, - {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb36, 0xb39}, - {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb85, 0xb8a}, - {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c}, - {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5}, - {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28}, - {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c}, - {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, - {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10}, - {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xe01, 0xe2e}, - {0xe30, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45}, {0xe81, 0xe82}, - {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d}, - {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5}, - {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeae}, {0xeb0, 0xeb0}, - {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xf40, 0xf47}, - {0xf49, 0xf69}, {0x10a0, 0x10c5}, {0x10d0, 0x10f6}, {0x1100, 0x1100}, - {0x1102, 0x1103}, {0x1105, 0x1107}, {0x1109, 0x1109}, {0x110b, 0x110c}, - {0x110e, 0x1112}, {0x113c, 0x113c}, {0x113e, 0x113e}, {0x1140, 0x1140}, - {0x114c, 0x114c}, {0x114e, 0x114e}, {0x1150, 0x1150}, {0x1154, 0x1155}, - {0x1159, 0x1159}, {0x115f, 0x1161}, {0x1163, 0x1163}, {0x1165, 0x1165}, - {0x1167, 0x1167}, {0x1169, 0x1169}, {0x116d, 0x116e}, {0x1172, 0x1173}, - {0x1175, 0x1175}, {0x119e, 0x119e}, {0x11a8, 0x11a8}, {0x11ab, 0x11ab}, - {0x11ae, 0x11af}, {0x11b7, 0x11b8}, {0x11ba, 0x11ba}, {0x11bc, 0x11c2}, - {0x11eb, 0x11eb}, {0x11f0, 0x11f0}, {0x11f9, 0x11f9}, {0x1e00, 0x1e9b}, - {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, - {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, - {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, - {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, - {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, - {0x2126, 0x2126}, {0x212a, 0x212b}, {0x212e, 0x212e}, {0x2180, 0x2182}, +static const xmlChSRange xmlIsBaseChar_srng[] = { {0x100, 0x131}, + {0x134, 0x13e}, {0x141, 0x148}, {0x14a, 0x17e}, {0x180, 0x1c3}, + {0x1cd, 0x1f0}, {0x1f4, 0x1f5}, {0x1fa, 0x217}, {0x250, 0x2a8}, + {0x2bb, 0x2c1}, {0x386, 0x386}, {0x388, 0x38a}, {0x38c, 0x38c}, + {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3d6}, {0x3da, 0x3da}, + {0x3dc, 0x3dc}, {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3f3}, + {0x401, 0x40c}, {0x40e, 0x44f}, {0x451, 0x45c}, {0x45e, 0x481}, + {0x490, 0x4c4}, {0x4c7, 0x4c8}, {0x4cb, 0x4cc}, {0x4d0, 0x4eb}, + {0x4ee, 0x4f5}, {0x4f8, 0x4f9}, {0x531, 0x556}, {0x559, 0x559}, + {0x561, 0x586}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, + {0x641, 0x64a}, {0x671, 0x6b7}, {0x6ba, 0x6be}, {0x6c0, 0x6ce}, + {0x6d0, 0x6d3}, {0x6d5, 0x6d5}, {0x6e5, 0x6e6}, {0x905, 0x939}, + {0x93d, 0x93d}, {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990}, + {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, + {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a}, + {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33}, + {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e}, + {0xa72, 0xa74}, {0xa85, 0xa8b}, {0xa8d, 0xa8d}, {0xa8f, 0xa91}, + {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9}, + {0xabd, 0xabd}, {0xae0, 0xae0}, {0xb05, 0xb0c}, {0xb0f, 0xb10}, + {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb36, 0xb39}, + {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb85, 0xb8a}, + {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c}, + {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5}, + {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28}, + {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c}, + {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, + {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10}, + {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xe01, 0xe2e}, + {0xe30, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45}, {0xe81, 0xe82}, + {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d}, + {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5}, + {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeae}, {0xeb0, 0xeb0}, + {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xf40, 0xf47}, + {0xf49, 0xf69}, {0x10a0, 0x10c5}, {0x10d0, 0x10f6}, {0x1100, 0x1100}, + {0x1102, 0x1103}, {0x1105, 0x1107}, {0x1109, 0x1109}, {0x110b, 0x110c}, + {0x110e, 0x1112}, {0x113c, 0x113c}, {0x113e, 0x113e}, {0x1140, 0x1140}, + {0x114c, 0x114c}, {0x114e, 0x114e}, {0x1150, 0x1150}, {0x1154, 0x1155}, + {0x1159, 0x1159}, {0x115f, 0x1161}, {0x1163, 0x1163}, {0x1165, 0x1165}, + {0x1167, 0x1167}, {0x1169, 0x1169}, {0x116d, 0x116e}, {0x1172, 0x1173}, + {0x1175, 0x1175}, {0x119e, 0x119e}, {0x11a8, 0x11a8}, {0x11ab, 0x11ab}, + {0x11ae, 0x11af}, {0x11b7, 0x11b8}, {0x11ba, 0x11ba}, {0x11bc, 0x11c2}, + {0x11eb, 0x11eb}, {0x11f0, 0x11f0}, {0x11f9, 0x11f9}, {0x1e00, 0x1e9b}, + {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, + {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, + {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, + {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, + {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, + {0x2126, 0x2126}, {0x212a, 0x212b}, {0x212e, 0x212e}, {0x2180, 0x2182}, {0x3041, 0x3094}, {0x30a1, 0x30fa}, {0x3105, 0x312c}, {0xac00, 0xd7a3}}; const xmlChRangeGroup xmlIsBaseCharGroup = {197, 0, xmlIsBaseChar_srng, (xmlChLRangePtr)0}; -static const xmlChSRange xmlIsChar_srng[] = { {0x100, 0xd7ff}, +static const xmlChSRange xmlIsChar_srng[] = { {0x100, 0xd7ff}, {0xe000, 0xfffd}}; static const xmlChLRange xmlIsChar_lrng[] = { {0x10000, 0x10ffff}}; const xmlChRangeGroup xmlIsCharGroup = {2, 1, xmlIsChar_srng, xmlIsChar_lrng}; -static const xmlChSRange xmlIsCombining_srng[] = { {0x300, 0x345}, - {0x360, 0x361}, {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, - {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, - {0x64b, 0x652}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6dd, 0x6df}, - {0x6e0, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x901, 0x903}, - {0x93c, 0x93c}, {0x93e, 0x94c}, {0x94d, 0x94d}, {0x951, 0x954}, - {0x962, 0x963}, {0x981, 0x983}, {0x9bc, 0x9bc}, {0x9be, 0x9be}, - {0x9bf, 0x9bf}, {0x9c0, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd}, - {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa02, 0xa02}, {0xa3c, 0xa3c}, - {0xa3e, 0xa3e}, {0xa3f, 0xa3f}, {0xa40, 0xa42}, {0xa47, 0xa48}, - {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa83}, {0xabc, 0xabc}, - {0xabe, 0xac5}, {0xac7, 0xac9}, {0xacb, 0xacd}, {0xb01, 0xb03}, - {0xb3c, 0xb3c}, {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d}, - {0xb56, 0xb57}, {0xb82, 0xb83}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, - {0xbca, 0xbcd}, {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44}, - {0xc46, 0xc48}, {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83}, - {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6}, - {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d}, - {0xd57, 0xd57}, {0xe31, 0xe31}, {0xe34, 0xe3a}, {0xe47, 0xe4e}, - {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc}, {0xec8, 0xecd}, - {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37}, {0xf39, 0xf39}, - {0xf3e, 0xf3e}, {0xf3f, 0xf3f}, {0xf71, 0xf84}, {0xf86, 0xf8b}, - {0xf90, 0xf95}, {0xf97, 0xf97}, {0xf99, 0xfad}, {0xfb1, 0xfb7}, - {0xfb9, 0xfb9}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, {0x302a, 0x302f}, +static const xmlChSRange xmlIsCombining_srng[] = { {0x300, 0x345}, + {0x360, 0x361}, {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, + {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, + {0x64b, 0x652}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6dd, 0x6df}, + {0x6e0, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x901, 0x903}, + {0x93c, 0x93c}, {0x93e, 0x94c}, {0x94d, 0x94d}, {0x951, 0x954}, + {0x962, 0x963}, {0x981, 0x983}, {0x9bc, 0x9bc}, {0x9be, 0x9be}, + {0x9bf, 0x9bf}, {0x9c0, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd}, + {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa02, 0xa02}, {0xa3c, 0xa3c}, + {0xa3e, 0xa3e}, {0xa3f, 0xa3f}, {0xa40, 0xa42}, {0xa47, 0xa48}, + {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa83}, {0xabc, 0xabc}, + {0xabe, 0xac5}, {0xac7, 0xac9}, {0xacb, 0xacd}, {0xb01, 0xb03}, + {0xb3c, 0xb3c}, {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d}, + {0xb56, 0xb57}, {0xb82, 0xb83}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, + {0xbca, 0xbcd}, {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44}, + {0xc46, 0xc48}, {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83}, + {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6}, + {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d}, + {0xd57, 0xd57}, {0xe31, 0xe31}, {0xe34, 0xe3a}, {0xe47, 0xe4e}, + {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc}, {0xec8, 0xecd}, + {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37}, {0xf39, 0xf39}, + {0xf3e, 0xf3e}, {0xf3f, 0xf3f}, {0xf71, 0xf84}, {0xf86, 0xf8b}, + {0xf90, 0xf95}, {0xf97, 0xf97}, {0xf99, 0xfad}, {0xfb1, 0xfb7}, + {0xfb9, 0xfb9}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, {0x302a, 0x302f}, {0x3099, 0x3099}, {0x309a, 0x309a}}; const xmlChRangeGroup xmlIsCombiningGroup = {95, 0, xmlIsCombining_srng, (xmlChLRangePtr)0}; -static const xmlChSRange xmlIsDigit_srng[] = { {0x660, 0x669}, - {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f}, - {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f}, - {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9}, +static const xmlChSRange xmlIsDigit_srng[] = { {0x660, 0x669}, + {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f}, + {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f}, + {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9}, {0xf20, 0xf29}}; const xmlChRangeGroup xmlIsDigitGroup = {14, 0, xmlIsDigit_srng, (xmlChLRangePtr)0}; -static const xmlChSRange xmlIsExtender_srng[] = { {0x2d0, 0x2d0}, - {0x2d1, 0x2d1}, {0x387, 0x387}, {0x640, 0x640}, {0xe46, 0xe46}, - {0xec6, 0xec6}, {0x3005, 0x3005}, {0x3031, 0x3035}, {0x309d, 0x309e}, +static const xmlChSRange xmlIsExtender_srng[] = { {0x2d0, 0x2d0}, + {0x2d1, 0x2d1}, {0x387, 0x387}, {0x640, 0x640}, {0xe46, 0xe46}, + {0xec6, 0xec6}, {0x3005, 0x3005}, {0x3031, 0x3035}, {0x309d, 0x309e}, {0x30fc, 0x30fe}}; const xmlChRangeGroup xmlIsExtenderGroup = {10, 0, xmlIsExtender_srng, (xmlChLRangePtr)0}; -static const xmlChSRange xmlIsIdeographic_srng[] = { {0x3007, 0x3007}, +static const xmlChSRange xmlIsIdeographic_srng[] = { {0x3007, 0x3007}, {0x3021, 0x3029}, {0x4e00, 0x9fa5}}; const xmlChRangeGroup xmlIsIdeographicGroup = {3, 0, xmlIsIdeographic_srng, (xmlChLRangePtr)0}; diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/COPYING gettext-0.19.7/gnulib-local/lib/libxml/COPYING --- gettext-0.19.6/gnulib-local/lib/libxml/COPYING 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/COPYING 2015-12-23 07:08:27.000000000 +0000 @@ -2,7 +2,7 @@ list.c and the trio files, which are covered by a similar licence but with different Copyright notices) all the files are: - Copyright (C) 1998-2003 Daniel Veillard. All Rights Reserved. + Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -17,11 +17,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON- -NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Daniel Veillard shall not -be used in advertising or otherwise to promote the sale, use or other deal- -ings in this Software without prior written authorization from him. - +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/debugXML.c gettext-0.19.7/gnulib-local/lib/libxml/debugXML.c --- gettext-0.19.6/gnulib-local/lib/libxml/debugXML.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/debugXML.c 2015-12-23 07:08:27.000000000 +0000 @@ -85,7 +85,7 @@ * * Check that a given namespace is in scope on a node. * - * Returns 1 if in scope, -1 in case of argument error, + * Returns 1 if in scope, -1 in case of argument error, * -2 if the namespace is not in scope, and -3 if not on * an ancestor node. */ @@ -141,9 +141,9 @@ return; if ((ctxt->output != NULL) && (ctxt->depth > 0)) { if (ctxt->depth < 50) - fprintf(ctxt->output, &ctxt->shift[100 - 2 * ctxt->depth]); + fprintf(ctxt->output, "%s", &ctxt->shift[100 - 2 * ctxt->depth]); else - fprintf(ctxt->output, ctxt->shift); + fprintf(ctxt->output, "%s", ctxt->shift); } } @@ -162,7 +162,7 @@ NULL, ctxt->node, XML_FROM_CHECK, error, XML_ERR_ERROR, NULL, 0, NULL, NULL, NULL, 0, 0, - msg); + "%s", msg); } static void xmlDebugErr2(xmlDebugCtxtPtr ctxt, int error, const char *msg, int extra) @@ -254,12 +254,16 @@ xmlDebugErr(ctxt, XML_CHECK_NO_NAME, "Name is NULL"); return; } +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) if (xmlValidateName(name, 0)) { xmlDebugErr3(ctxt, XML_CHECK_NOT_NCNAME, "Name is not an NCName '%s'", (const char *) name); } +#endif if ((ctxt->dict != NULL) && - (!xmlDictOwns(ctxt->dict, name))) { + (!xmlDictOwns(ctxt->dict, name)) && + ((ctxt->doc == NULL) || + ((ctxt->doc->parseFlags & (XML_PARSE_SAX1 | XML_PARSE_NODICT)) == 0))) { xmlDebugErr3(ctxt, XML_CHECK_OUTSIDE_DICT, "Name is not from the document dictionnary '%s'", (const char *) name); @@ -309,7 +313,7 @@ (node != (xmlNodePtr) node->parent->properties)) xmlDebugErr(ctxt, XML_CHECK_NO_PREV, "Attr has no prev and not first of attr list\n"); - + } else if ((node->parent != NULL) && (node->parent->children != node)) xmlDebugErr(ctxt, XML_CHECK_NO_PREV, "Node has no prev and not first of parent list\n"); @@ -320,7 +324,8 @@ } if (node->next == NULL) { if ((node->parent != NULL) && (node->type != XML_ATTRIBUTE_NODE) && - (node->parent->last != node)) + (node->parent->last != node) && + (node->parent->type == XML_ELEMENT_NODE)) xmlDebugErr(ctxt, XML_CHECK_NO_NEXT, "Node has no next and not last of parent list\n"); } else { @@ -351,7 +356,6 @@ (node->type != XML_ELEMENT_DECL) && (node->type != XML_ATTRIBUTE_DECL) && (node->type != XML_DTD_NODE) && - (node->type != XML_ELEMENT_DECL) && (node->type != XML_HTML_DOCUMENT_NODE) && (node->type != XML_DOCUMENT_NODE)) { if (node->content != NULL) @@ -1065,7 +1069,7 @@ return; } xmlCtxtDumpOneNode(ctxt, node); - if ((node->type != XML_NAMESPACE_DECL) && + if ((node->type != XML_NAMESPACE_DECL) && (node->children != NULL) && (node->type != XML_ENTITY_REF_NODE)) { ctxt->depth++; xmlCtxtDumpNodeList(ctxt, node->children); @@ -1600,7 +1604,7 @@ xmlLsCountNode(xmlNodePtr node) { int ret = 0; xmlNodePtr list = NULL; - + if (node == NULL) return(0); @@ -1641,7 +1645,7 @@ ret = 1; break; } - for (;list != NULL;ret++) + for (;list != NULL;ret++) list = list->next; return(ret); } @@ -1709,11 +1713,11 @@ if (node->type != XML_NAMESPACE_DECL) { if (node->properties != NULL) fprintf(output, "a"); - else + else fprintf(output, "-"); - if (node->nsDef != NULL) + if (node->nsDef != NULL) fprintf(output, "n"); - else + else fprintf(output, "-"); } @@ -1721,8 +1725,11 @@ switch (node->type) { case XML_ELEMENT_NODE: - if (node->name != NULL) + if (node->name != NULL) { + if ((node->ns != NULL) && (node->ns->prefix != NULL)) + fprintf(output, "%s:", node->ns->prefix); fprintf(output, "%s", (const char *) node->name); + } break; case XML_ATTRIBUTE_NODE: if (node->name != NULL) @@ -1780,7 +1787,7 @@ * xmlBoolToText: * @boolval: a bool to turn into text * - * Convenient way to turn bool into text + * Convenient way to turn bool into text * * Returns a pointer to either "True" or "False" */ @@ -1796,7 +1803,7 @@ #ifdef LIBXML_XPATH_ENABLED /**************************************************************** * * - * The XML shell related functions * + * The XML shell related functions * * * ****************************************************************/ @@ -2047,7 +2054,7 @@ if (node == NULL) { fprintf(ctxt->output, "NULL\n"); return (0); - } + } base = xmlNodeGetBase(node->doc, node); @@ -2274,7 +2281,7 @@ if (node == NULL) { fprintf(ctxt->output, "NULL\n"); return (0); - } + } if ((node->type == XML_DOCUMENT_NODE) || (node->type == XML_HTML_DOCUMENT_NODE)) { xmlDebugDumpDocumentHead(ctxt->output, (xmlDocPtr) node); @@ -2409,7 +2416,7 @@ if (node == NULL) { fprintf(ctxt->output, "NULL\n"); return (0); - } + } if (ctxt->doc->type == XML_HTML_DOCUMENT_NODE) { #ifdef LIBXML_HTML_ENABLED if (node->type == XML_HTML_DOCUMENT_NODE) @@ -2693,6 +2700,8 @@ } else if (node->type == XML_ELEMENT_NODE) { for (i = 0; i < indent; i++) fprintf(ctxt->output, " "); + if ((node->ns) && (node->ns->prefix)) + fprintf(ctxt->output, "%s:", node->ns->prefix); fprintf(ctxt->output, "%s\n", node->name); } else { } @@ -2745,7 +2754,7 @@ * xmlShellPwd: * @ctxt: the shell context * @buffer: the output buffer - * @node: a node + * @node: a node * @node2: unused * * Implements the XML shell function "pwd" @@ -2790,7 +2799,7 @@ * @input: the line reading function * @output: the output FILE*, defaults to stdout if NULL * - * Implements the XML shell + * Implements the XML shell * This allow to load, validate, view, modify and save a document * using a environment similar to a UNIX commandline. */ @@ -2800,7 +2809,6 @@ { char prompt[500] = "/ > "; char *cmdline = NULL, *cur; - int nbargs; char command[100]; char arg[400]; int i; @@ -2835,6 +2843,10 @@ while (1) { if (ctxt->node == (xmlNodePtr) ctxt->doc) snprintf(prompt, sizeof(prompt), "%s > ", "/"); + else if ((ctxt->node != NULL) && (ctxt->node->name) && + (ctxt->node->ns) && (ctxt->node->ns->prefix)) + snprintf(prompt, sizeof(prompt), "%s:%s > ", + (ctxt->node->ns->prefix), ctxt->node->name); else if ((ctxt->node != NULL) && (ctxt->node->name)) snprintf(prompt, sizeof(prompt), "%s > ", ctxt->node->name); else @@ -2852,7 +2864,6 @@ * Parse the command itself */ cur = cmdline; - nbargs = 0; while ((*cur == ' ') || (*cur == '\t')) cur++; i = 0; @@ -2865,7 +2876,6 @@ command[i] = 0; if (i == 0) continue; - nbargs++; /* * Parse the argument @@ -2879,8 +2889,6 @@ arg[i++] = *cur++; } arg[i] = 0; - if (i != 0) - nbargs++; /* * start interpreting the command @@ -2913,6 +2921,7 @@ fprintf(ctxt->output, "\t the default namespace if any uses 'defaultns' prefix\n"); #endif /* LIBXML_XPATH_ENABLED */ fprintf(ctxt->output, "\tpwd display current working directory\n"); + fprintf(ctxt->output, "\twhereis display absolute path of [path] or current working directory\n"); fprintf(ctxt->output, "\tquit leave shell\n"); #ifdef LIBXML_OUTPUT_ENABLED fprintf(ctxt->output, "\tsave [name] save this document to name or the original name\n"); @@ -2939,11 +2948,11 @@ } else if (!strcmp(command, "save")) { xmlShellSave(ctxt, arg, NULL, NULL); } else if (!strcmp(command, "write")) { - if ((arg == NULL) || (arg[0] == 0)) + if (arg[0] == 0) xmlGenericError(xmlGenericErrorContext, "Write command requires a filename argument\n"); else - xmlShellWrite(ctxt, arg, NULL, NULL); + xmlShellWrite(ctxt, arg, ctxt->node, NULL); #endif /* LIBXML_OUTPUT_ENABLED */ } else if (!strcmp(command, "grep")) { xmlShellGrep(ctxt, arg, ctxt->node, NULL); @@ -2962,7 +2971,79 @@ if (!xmlShellPwd(ctxt, dir, ctxt->node, NULL)) fprintf(ctxt->output, "%s\n", dir); } else if (!strcmp(command, "du")) { - xmlShellDu(ctxt, NULL, ctxt->node, NULL); + if (arg[0] == 0) { + xmlShellDu(ctxt, NULL, ctxt->node, NULL); + } else { + ctxt->pctxt->node = ctxt->node; +#ifdef LIBXML_XPATH_ENABLED + ctxt->pctxt->node = ctxt->node; + list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); +#else + list = NULL; +#endif /* LIBXML_XPATH_ENABLED */ + if (list != NULL) { + switch (list->type) { + case XPATH_UNDEFINED: + xmlGenericError(xmlGenericErrorContext, + "%s: no such node\n", arg); + break; + case XPATH_NODESET:{ + int indx; + + if (list->nodesetval == NULL) + break; + + for (indx = 0; + indx < list->nodesetval->nodeNr; + indx++) + xmlShellDu(ctxt, NULL, + list->nodesetval-> + nodeTab[indx], NULL); + break; + } + case XPATH_BOOLEAN: + xmlGenericError(xmlGenericErrorContext, + "%s is a Boolean\n", arg); + break; + case XPATH_NUMBER: + xmlGenericError(xmlGenericErrorContext, + "%s is a number\n", arg); + break; + case XPATH_STRING: + xmlGenericError(xmlGenericErrorContext, + "%s is a string\n", arg); + break; + case XPATH_POINT: + xmlGenericError(xmlGenericErrorContext, + "%s is a point\n", arg); + break; + case XPATH_RANGE: + xmlGenericError(xmlGenericErrorContext, + "%s is a range\n", arg); + break; + case XPATH_LOCATIONSET: + xmlGenericError(xmlGenericErrorContext, + "%s is a range\n", arg); + break; + case XPATH_USERS: + xmlGenericError(xmlGenericErrorContext, + "%s is user-defined\n", arg); + break; + case XPATH_XSLT_TREE: + xmlGenericError(xmlGenericErrorContext, + "%s is an XSLT value tree\n", + arg); + break; + } +#ifdef LIBXML_XPATH_ENABLED + xmlXPathFreeObject(list); +#endif + } else { + xmlGenericError(xmlGenericErrorContext, + "%s: no such node\n", arg); + } + ctxt->pctxt->node = NULL; + } } else if (!strcmp(command, "base")) { xmlShellBase(ctxt, NULL, ctxt->node, NULL); } else if (!strcmp(command, "set")) { @@ -3080,12 +3161,94 @@ } ctxt->pctxt->node = NULL; } + } else if (!strcmp(command, "whereis")) { + char dir[500]; + + if (arg[0] == 0) { + if (!xmlShellPwd(ctxt, dir, ctxt->node, NULL)) + fprintf(ctxt->output, "%s\n", dir); + } else { + ctxt->pctxt->node = ctxt->node; +#ifdef LIBXML_XPATH_ENABLED + list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); +#else + list = NULL; +#endif /* LIBXML_XPATH_ENABLED */ + if (list != NULL) { + switch (list->type) { + case XPATH_UNDEFINED: + xmlGenericError(xmlGenericErrorContext, + "%s: no such node\n", arg); + break; + case XPATH_NODESET:{ + int indx; + + if (list->nodesetval == NULL) + break; + + for (indx = 0; + indx < list->nodesetval->nodeNr; + indx++) { + if (!xmlShellPwd(ctxt, dir, list->nodesetval-> + nodeTab[indx], NULL)) + fprintf(ctxt->output, "%s\n", dir); + } + break; + } + case XPATH_BOOLEAN: + xmlGenericError(xmlGenericErrorContext, + "%s is a Boolean\n", arg); + break; + case XPATH_NUMBER: + xmlGenericError(xmlGenericErrorContext, + "%s is a number\n", arg); + break; + case XPATH_STRING: + xmlGenericError(xmlGenericErrorContext, + "%s is a string\n", arg); + break; + case XPATH_POINT: + xmlGenericError(xmlGenericErrorContext, + "%s is a point\n", arg); + break; + case XPATH_RANGE: + xmlGenericError(xmlGenericErrorContext, + "%s is a range\n", arg); + break; + case XPATH_LOCATIONSET: + xmlGenericError(xmlGenericErrorContext, + "%s is a range\n", arg); + break; + case XPATH_USERS: + xmlGenericError(xmlGenericErrorContext, + "%s is user-defined\n", arg); + break; + case XPATH_XSLT_TREE: + xmlGenericError(xmlGenericErrorContext, + "%s is an XSLT value tree\n", + arg); + break; + } +#ifdef LIBXML_XPATH_ENABLED + xmlXPathFreeObject(list); +#endif + } else { + xmlGenericError(xmlGenericErrorContext, + "%s: no such node\n", arg); + } + ctxt->pctxt->node = NULL; + } } else if (!strcmp(command, "cd")) { if (arg[0] == 0) { ctxt->node = (xmlNodePtr) ctxt->doc; } else { #ifdef LIBXML_XPATH_ENABLED + int l; + ctxt->pctxt->node = ctxt->node; + l = strlen(arg); + if ((l >= 2) && (arg[l - 1] == '/')) + arg[l - 1] = 0; list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); #else list = NULL; @@ -3244,6 +3407,7 @@ "Unknown command %s\n", command); } free(cmdline); /* not xmlFree here ! */ + cmdline = NULL; } #ifdef LIBXML_XPATH_ENABLED xmlXPathFreeContext(ctxt->pctxt); diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/debugXML.in.h gettext-0.19.7/gnulib-local/lib/libxml/debugXML.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/debugXML.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/debugXML.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -25,18 +25,18 @@ /* * The standard Dump routines. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDebugDumpString (FILE *output, const xmlChar *str); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDebugDumpAttr (FILE *output, xmlAttrPtr attr, int depth); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDebugDumpAttrList (FILE *output, xmlAttrPtr attr, int depth); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDebugDumpOneNode (FILE *output, xmlNodePtr node, int depth); @@ -54,16 +54,16 @@ XMLPUBFUN void XMLCALL xmlDebugDumpDocument (FILE *output, xmlDocPtr doc); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDebugDumpDTD (FILE *output, xmlDtdPtr dtd); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDebugDumpEntities (FILE *output, xmlDocPtr doc); /**************************************************************** * * - * Checking routines * + * Checking routines * * * ****************************************************************/ @@ -73,16 +73,16 @@ /**************************************************************** * * - * XML shell helpers * + * XML shell helpers * * * ****************************************************************/ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlLsOneNode (FILE *output, xmlNodePtr node); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlLsCountNode (xmlNodePtr node); -XMLPUBFUN const char * XMLCALL +XMLPUBFUN const char * XMLCALL xmlBoolToText (int boolval); /**************************************************************** @@ -136,63 +136,63 @@ xmlNodePtr node, xmlNodePtr node2); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlShellPrintXPathError (int errorType, const char *arg); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlShellPrintXPathResult(xmlXPathObjectPtr list); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellList (xmlShellCtxtPtr ctxt, char *arg, xmlNodePtr node, xmlNodePtr node2); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellBase (xmlShellCtxtPtr ctxt, char *arg, xmlNodePtr node, xmlNodePtr node2); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellDir (xmlShellCtxtPtr ctxt, char *arg, xmlNodePtr node, xmlNodePtr node2); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellLoad (xmlShellCtxtPtr ctxt, char *filename, xmlNodePtr node, xmlNodePtr node2); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlShellPrintNode (xmlNodePtr node); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellCat (xmlShellCtxtPtr ctxt, char *arg, xmlNodePtr node, xmlNodePtr node2); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellWrite (xmlShellCtxtPtr ctxt, char *filename, xmlNodePtr node, xmlNodePtr node2); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellSave (xmlShellCtxtPtr ctxt, char *filename, xmlNodePtr node, xmlNodePtr node2); #endif /* LIBXML_OUTPUT_ENABLED */ #ifdef LIBXML_VALID_ENABLED -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellValidate (xmlShellCtxtPtr ctxt, char *dtd, xmlNodePtr node, xmlNodePtr node2); #endif /* LIBXML_VALID_ENABLED */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellDu (xmlShellCtxtPtr ctxt, char *arg, xmlNodePtr tree, xmlNodePtr node2); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlShellPwd (xmlShellCtxtPtr ctxt, char *buffer, xmlNodePtr node, @@ -201,12 +201,12 @@ /* * The Shell interface. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlShell (xmlDocPtr doc, char *filename, xmlShellReadlineFunc input, FILE *output); - + #endif /* LIBXML_XPATH_ENABLED */ #ifdef __cplusplus diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/dict.c gettext-0.19.7/gnulib-local/lib/libxml/dict.c --- gettext-0.19.6/gnulib-local/lib/libxml/dict.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/dict.c 2015-12-23 07:08:27.000000000 +0000 @@ -2,7 +2,7 @@ * dict.c: dictionary of reusable strings, just used to avoid allocation * and freeing operations. * - * Copyright (C) 2003 Daniel Veillard. + * Copyright (C) 2003-2012 Daniel Veillard. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -19,19 +19,72 @@ #define IN_LIBXML #include "libxml.h" +#include +#ifdef HAVE_STDLIB_H +#include +#endif +#ifdef HAVE_TIME_H +#include +#endif + +/* + * Following http://www.ocert.org/advisories/ocert-2011-003.html + * it seems that having hash randomization might be a good idea + * when using XML with untrusted data + * Note1: that it works correctly only if compiled with WITH_BIG_KEY + * which is the default. + * Note2: the fast function used for a small dict won't protect very + * well but since the attack is based on growing a very big hash + * list we will use the BigKey algo as soon as the hash size grows + * over MIN_DICT_SIZE so this actually works + */ +#if defined(HAVE_RAND) && defined(HAVE_SRAND) && defined(HAVE_TIME) +#define DICT_RANDOMIZATION +#endif + #include +#ifdef HAVE_STDINT_H +#include +#else +#ifdef HAVE_INTTYPES_H +#include +#elif defined(WIN32) +typedef unsigned __int32 uint32_t; +#endif +#endif #include #include #include #include #include -#define MAX_HASH_LEN 4 +/* #define DEBUG_GROW */ +/* #define DICT_DEBUG_PATTERNS */ + +#define MAX_HASH_LEN 3 #define MIN_DICT_SIZE 128 #define MAX_DICT_HASH 8 * 2048 +#define WITH_BIG_KEY -/* #define ALLOW_REMOVAL */ -/* #define DEBUG_GROW */ +#ifdef WITH_BIG_KEY +#define xmlDictComputeKey(dict, name, len) \ + (((dict)->size == MIN_DICT_SIZE) ? \ + xmlDictComputeFastKey(name, len, (dict)->seed) : \ + xmlDictComputeBigKey(name, len, (dict)->seed)) + +#define xmlDictComputeQKey(dict, prefix, plen, name, len) \ + (((prefix) == NULL) ? \ + (xmlDictComputeKey(dict, name, len)) : \ + (((dict)->size == MIN_DICT_SIZE) ? \ + xmlDictComputeFastQKey(prefix, plen, name, len, (dict)->seed) : \ + xmlDictComputeBigQKey(prefix, plen, name, len, (dict)->seed))) + +#else /* !WITH_BIG_KEY */ +#define xmlDictComputeKey(dict, name, len) \ + xmlDictComputeFastKey(name, len, (dict)->seed) +#define xmlDictComputeQKey(dict, prefix, plen, name, len) \ + xmlDictComputeFastQKey(prefix, plen, name, len, (dict)->seed) +#endif /* WITH_BIG_KEY */ /* * An entry in the dictionnary @@ -41,8 +94,9 @@ struct _xmlDictEntry { struct _xmlDictEntry *next; const xmlChar *name; - int len; + unsigned int len; int valid; + unsigned long okey; }; typedef struct _xmlDictStrings xmlDictStrings; @@ -51,8 +105,8 @@ xmlDictStringsPtr next; xmlChar *free; xmlChar *end; - int size; - int nbStrings; + size_t size; + size_t nbStrings; xmlChar array[1]; }; /* @@ -60,14 +114,17 @@ */ struct _xmlDict { int ref_counter; - xmlRMutexPtr mutex; struct _xmlDictEntry *dict; - int size; - int nbElems; + size_t size; + unsigned int nbElems; xmlDictStringsPtr strings; struct _xmlDict *subdict; + /* used for randomization */ + int seed; + /* used to impose a limit on size */ + size_t limit; }; /* @@ -81,28 +138,84 @@ */ static int xmlDictInitialized = 0; +#ifdef DICT_RANDOMIZATION +#ifdef HAVE_RAND_R +/* + * Internal data for random function, protected by xmlDictMutex + */ +static unsigned int rand_seed = 0; +#endif +#endif + /** * xmlInitializeDict: * * Do the dictionary mutex initialization. + * this function is deprecated + * + * Returns 0 if initialization was already done, and 1 if that + * call led to the initialization + */ +int xmlInitializeDict(void) { + return(0); +} + +/** + * __xmlInitializeDict: + * + * This function is not public + * Do the dictionary mutex initialization. * this function is not thread safe, initialization should - * preferably be done once at startup + * normally be done once at setup when called from xmlOnceInit() + * we may also land in this code if thread support is not compiled in + * + * Returns 0 if initialization was already done, and 1 if that + * call led to the initialization */ -static int xmlInitializeDict(void) { +int __xmlInitializeDict(void) { if (xmlDictInitialized) return(1); if ((xmlDictMutex = xmlNewRMutex()) == NULL) return(0); + xmlRMutexLock(xmlDictMutex); +#ifdef DICT_RANDOMIZATION +#ifdef HAVE_RAND_R + rand_seed = time(NULL); + rand_r(& rand_seed); +#else + srand(time(NULL)); +#endif +#endif xmlDictInitialized = 1; + xmlRMutexUnlock(xmlDictMutex); return(1); } +#ifdef DICT_RANDOMIZATION +int __xmlRandom(void) { + int ret; + + if (xmlDictInitialized == 0) + __xmlInitializeDict(); + + xmlRMutexLock(xmlDictMutex); +#ifdef HAVE_RAND_R + ret = rand_r(& rand_seed); +#else + ret = rand(); +#endif + xmlRMutexUnlock(xmlDictMutex); + return(ret); +} +#endif + /** * xmlDictCleanup: * - * Free the dictionary mutex. + * Free the dictionary mutex. Do not call unless sure the library + * is not in use anymore ! */ void xmlDictCleanup(void) { @@ -118,32 +231,41 @@ * xmlDictAddString: * @dict: the dictionnary * @name: the name of the userdata - * @len: the length of the name, if -1 it is recomputed + * @len: the length of the name * * Add the string to the array[s] * * Returns the pointer of the local string, or NULL in case of error. */ static const xmlChar * -xmlDictAddString(xmlDictPtr dict, const xmlChar *name, int namelen) { +xmlDictAddString(xmlDictPtr dict, const xmlChar *name, unsigned int namelen) { xmlDictStringsPtr pool; const xmlChar *ret; - int size = 0; /* + sizeof(_xmlDictStrings) == 1024 */ + size_t size = 0; /* + sizeof(_xmlDictStrings) == 1024 */ + size_t limit = 0; +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "-"); +#endif pool = dict->strings; while (pool != NULL) { if (pool->end - pool->free > namelen) goto found_pool; if (pool->size > size) size = pool->size; + limit += pool->size; pool = pool->next; } /* * Not found, need to allocate */ if (pool == NULL) { + if ((dict->limit > 0) && (limit > dict->limit)) { + return(NULL); + } + if (size == 0) size = 1000; else size *= 4; /* exponential growth */ - if (size < 4 * namelen) + if (size < 4 * namelen) size = 4 * namelen; /* just in case ! */ pool = (xmlDictStringsPtr) xmlMalloc(sizeof(xmlDictStrings) + size); if (pool == NULL) @@ -154,12 +276,16 @@ pool->end = &pool->array[size]; pool->next = dict->strings; dict->strings = pool; +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "+"); +#endif } found_pool: ret = pool->free; memcpy(pool->free, name, namelen); pool->free += namelen; *(pool->free++) = 0; + pool->nbStrings++; return(ret); } @@ -167,40 +293,48 @@ * xmlDictAddQString: * @dict: the dictionnary * @prefix: the prefix of the userdata + * @plen: the prefix length * @name: the name of the userdata - * @len: the length of the name, if -1 it is recomputed + * @len: the length of the name * * Add the QName to the array[s] * * Returns the pointer of the local string, or NULL in case of error. */ static const xmlChar * -xmlDictAddQString(xmlDictPtr dict, const xmlChar *prefix, - const xmlChar *name, int namelen) +xmlDictAddQString(xmlDictPtr dict, const xmlChar *prefix, unsigned int plen, + const xmlChar *name, unsigned int namelen) { xmlDictStringsPtr pool; const xmlChar *ret; - int size = 0; /* + sizeof(_xmlDictStrings) == 1024 */ - int plen; + size_t size = 0; /* + sizeof(_xmlDictStrings) == 1024 */ + size_t limit = 0; if (prefix == NULL) return(xmlDictAddString(dict, name, namelen)); - plen = xmlStrlen(prefix); +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "="); +#endif pool = dict->strings; while (pool != NULL) { - if (pool->end - pool->free > namelen) + if (pool->end - pool->free > namelen + plen + 1) goto found_pool; if (pool->size > size) size = pool->size; + limit += pool->size; pool = pool->next; } /* * Not found, need to allocate */ if (pool == NULL) { + if ((dict->limit > 0) && (limit > dict->limit)) { + return(NULL); + } + if (size == 0) size = 1000; else size *= 4; /* exponential growth */ - if (size < 4 * namelen) - size = 4 * namelen; /* just in case ! */ + if (size < 4 * (namelen + plen + 1)) + size = 4 * (namelen + plen + 1); /* just in case ! */ pool = (xmlDictStringsPtr) xmlMalloc(sizeof(xmlDictStrings) + size); if (pool == NULL) return(NULL); @@ -210,27 +344,106 @@ pool->end = &pool->array[size]; pool->next = dict->strings; dict->strings = pool; +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "+"); +#endif } found_pool: ret = pool->free; memcpy(pool->free, prefix, plen); pool->free += plen; *(pool->free++) = ':'; - namelen -= plen + 1; memcpy(pool->free, name, namelen); pool->free += namelen; *(pool->free++) = 0; + pool->nbStrings++; return(ret); } +#ifdef WITH_BIG_KEY /* - * xmlDictComputeKey: - * Calculate the hash key + * xmlDictComputeBigKey: + * + * Calculate a hash key using a good hash function that works well for + * larger hash table sizes. + * + * Hash function by "One-at-a-Time Hash" see + * http://burtleburtle.net/bob/hash/doobs.html + */ + +static uint32_t +xmlDictComputeBigKey(const xmlChar* data, int namelen, int seed) { + uint32_t hash; + int i; + + if (namelen <= 0 || data == NULL) return(0); + + hash = seed; + + for (i = 0;i < namelen; i++) { + hash += data[i]; + hash += (hash << 10); + hash ^= (hash >> 6); + } + hash += (hash << 3); + hash ^= (hash >> 11); + hash += (hash << 15); + + return hash; +} + +/* + * xmlDictComputeBigQKey: + * + * Calculate a hash key for two strings using a good hash function + * that works well for larger hash table sizes. + * + * Hash function by "One-at-a-Time Hash" see + * http://burtleburtle.net/bob/hash/doobs.html + * + * Neither of the two strings must be NULL. */ static unsigned long -xmlDictComputeKey(const xmlChar *name, int namelen) { - unsigned long value = 0L; - +xmlDictComputeBigQKey(const xmlChar *prefix, int plen, + const xmlChar *name, int len, int seed) +{ + uint32_t hash; + int i; + + hash = seed; + + for (i = 0;i < plen; i++) { + hash += prefix[i]; + hash += (hash << 10); + hash ^= (hash >> 6); + } + hash += ':'; + hash += (hash << 10); + hash ^= (hash >> 6); + + for (i = 0;i < len; i++) { + hash += name[i]; + hash += (hash << 10); + hash ^= (hash >> 6); + } + hash += (hash << 3); + hash ^= (hash >> 11); + hash += (hash << 15); + + return hash; +} +#endif /* WITH_BIG_KEY */ + +/* + * xmlDictComputeFastKey: + * + * Calculate a hash key using a fast hash function that works well + * for low hash table fill. + */ +static unsigned long +xmlDictComputeFastKey(const xmlChar *name, int namelen, int seed) { + unsigned long value = seed; + if (name == NULL) return(0); value = *name; value <<= 5; @@ -254,26 +467,29 @@ } /* - * xmlDictComputeQKey: - * Calculate the hash key + * xmlDictComputeFastQKey: + * + * Calculate a hash key for two strings using a fast hash function + * that works well for low hash table fill. + * + * Neither of the two strings must be NULL. */ static unsigned long -xmlDictComputeQKey(const xmlChar *prefix, const xmlChar *name, int len) +xmlDictComputeFastQKey(const xmlChar *prefix, int plen, + const xmlChar *name, int len, int seed) { - unsigned long value = 0L; - int plen; - - if (prefix == NULL) - return(xmlDictComputeKey(name, len)); + unsigned long value = (unsigned long) seed; - plen = xmlStrlen(prefix); if (plen == 0) value += 30 * (unsigned long) ':'; else value += 30 * (*prefix); - + if (len > 10) { - value += name[len - (plen + 1 + 1)]; + int offset = len - (plen + 1 + 1); + if (offset < 0) + offset = len - (10 + 1); + value += name[offset]; len = 10; if (plen > 10) plen = 10; @@ -324,12 +540,17 @@ xmlDictPtr dict; if (!xmlDictInitialized) - if (!xmlInitializeDict()) + if (!__xmlInitializeDict()) return(NULL); - + +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "C"); +#endif + dict = xmlMalloc(sizeof(xmlDict)); if (dict) { dict->ref_counter = 1; + dict->limit = 0; dict->size = MIN_DICT_SIZE; dict->nbElems = 0; @@ -337,11 +558,13 @@ dict->strings = NULL; dict->subdict = NULL; if (dict->dict) { - if ((dict->mutex = xmlNewRMutex()) != NULL) { - memset(dict->dict, 0, MIN_DICT_SIZE * sizeof(xmlDictEntry)); - return(dict); - } - xmlFree(dict->dict); + memset(dict->dict, 0, MIN_DICT_SIZE * sizeof(xmlDictEntry)); +#ifdef DICT_RANDOMIZATION + dict->seed = __xmlRandom(); +#else + dict->seed = 0; +#endif + return(dict); } xmlFree(dict); } @@ -362,8 +585,12 @@ xmlDictPtr xmlDictCreateSub(xmlDictPtr sub) { xmlDictPtr dict = xmlDictCreate(); - + if ((dict != NULL) && (sub != NULL)) { +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "R"); +#endif + dict->seed = sub->seed; dict->subdict = sub; xmlDictReference(dict->subdict); } @@ -381,7 +608,7 @@ int xmlDictReference(xmlDictPtr dict) { if (!xmlDictInitialized) - if (!xmlInitializeDict()) + if (!__xmlInitializeDict()) return(-1); if (dict == NULL) return -1; @@ -401,15 +628,17 @@ * Returns 0 in case of success, -1 in case of failure */ static int -xmlDictGrow(xmlDictPtr dict, int size) { - unsigned long key; - int oldsize, i; +xmlDictGrow(xmlDictPtr dict, size_t size) { + unsigned long key, okey; + size_t oldsize, i; xmlDictEntryPtr iter, next; struct _xmlDictEntry *olddict; #ifdef DEBUG_GROW unsigned long nbElem = 0; #endif - + int ret = 0; + int keep_keys = 1; + if (dict == NULL) return(-1); if (size < 8) @@ -417,11 +646,17 @@ if (size > 8 * 2048) return(-1); +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "*"); +#endif + oldsize = dict->size; olddict = dict->dict; if (olddict == NULL) return(-1); - + if (oldsize == MIN_DICT_SIZE) + keep_keys = 0; + dict->dict = xmlMalloc(size * sizeof(xmlDictEntry)); if (dict->dict == NULL) { dict->dict = olddict; @@ -431,17 +666,44 @@ dict->size = size; /* If the two loops are merged, there would be situations where - a new entry needs to allocated and data copied into it from - the main dict. So instead, we run through the array twice, first - copying all the elements in the main array (where we can't get - conflicts) and then the rest, so we only free (and don't allocate) + a new entry needs to allocated and data copied into it from + the main dict. It is nicer to run through the array twice, first + copying all the elements in the main array (less probability of + allocate) and then the rest, so we only free in the second loop. */ for (i = 0; i < oldsize; i++) { - if (olddict[i].valid == 0) + if (olddict[i].valid == 0) continue; - key = xmlDictComputeKey(olddict[i].name, olddict[i].len) % dict->size; - memcpy(&(dict->dict[key]), &(olddict[i]), sizeof(xmlDictEntry)); - dict->dict[key].next = NULL; + + if (keep_keys) + okey = olddict[i].okey; + else + okey = xmlDictComputeKey(dict, olddict[i].name, olddict[i].len); + key = okey % dict->size; + + if (dict->dict[key].valid == 0) { + memcpy(&(dict->dict[key]), &(olddict[i]), sizeof(xmlDictEntry)); + dict->dict[key].next = NULL; + dict->dict[key].okey = okey; + } else { + xmlDictEntryPtr entry; + + entry = xmlMalloc(sizeof(xmlDictEntry)); + if (entry != NULL) { + entry->name = olddict[i].name; + entry->len = olddict[i].len; + entry->okey = okey; + entry->next = dict->dict[key].next; + entry->valid = 1; + dict->dict[key].next = entry; + } else { + /* + * we don't have much ways to alert from herei + * result is loosing an entry and unicity garantee + */ + ret = -1; + } + } #ifdef DEBUG_GROW nbElem++; #endif @@ -456,15 +718,21 @@ * put back the entry in the new dict */ - key = xmlDictComputeKey(iter->name, iter->len) % dict->size; + if (keep_keys) + okey = iter->okey; + else + okey = xmlDictComputeKey(dict, iter->name, iter->len); + key = okey % dict->size; if (dict->dict[key].valid == 0) { memcpy(&(dict->dict[key]), iter, sizeof(xmlDictEntry)); dict->dict[key].next = NULL; dict->dict[key].valid = 1; + dict->dict[key].okey = okey; xmlFree(iter); } else { - iter->next = dict->dict[key].next; - dict->dict[key].next = iter; + iter->next = dict->dict[key].next; + iter->okey = okey; + dict->dict[key].next = iter; } #ifdef DEBUG_GROW @@ -479,10 +747,10 @@ #ifdef DEBUG_GROW xmlGenericError(xmlGenericErrorContext, - "xmlDictGrow : from %d to %d, %d elems\n", oldsize, size, nbElem); + "xmlDictGrow : from %lu to %lu, %u elems\n", oldsize, size, nbElem); #endif - return(0); + return(ret); } /** @@ -494,7 +762,7 @@ */ void xmlDictFree(xmlDictPtr dict) { - int i; + size_t i; xmlDictEntryPtr iter; xmlDictEntryPtr next; int inside_dict = 0; @@ -504,7 +772,7 @@ return; if (!xmlDictInitialized) - if (!xmlInitializeDict()) + if (!__xmlInitializeDict()) return; /* decrement the counter, it may be shared by a parser and docs */ @@ -535,7 +803,6 @@ inside_dict = 0; iter = next; } - inside_dict = 0; } xmlFree(dict->dict); } @@ -545,7 +812,6 @@ xmlFree(pool); pool = nextp; } - xmlFreeRMutex(dict->mutex); xmlFree(dict); } @@ -565,17 +831,24 @@ xmlDictEntryPtr entry; xmlDictEntryPtr insert; const xmlChar *ret; + unsigned int l; if ((dict == NULL) || (name == NULL)) return(NULL); if (len < 0) - len = xmlStrlen(name); + l = strlen((const char *) name); + else + l = len; + + if (((dict->limit > 0) && (l >= dict->limit)) || + (l > INT_MAX / 2)) + return(NULL); /* * Check for duplicate and insertion location. */ - okey = xmlDictComputeKey(name, len); + okey = xmlDictComputeKey(dict, name, l); key = okey % dict->size; if (dict->dict[key].valid == 0) { insert = NULL; @@ -583,63 +856,74 @@ for (insert = &(dict->dict[key]); insert->next != NULL; insert = insert->next) { #ifdef __GNUC__ - if (insert->len == len) { - if (!memcmp(insert->name, name, len)) + if ((insert->okey == okey) && (insert->len == l)) { + if (!memcmp(insert->name, name, l)) return(insert->name); } #else - if ((insert->len == len) && - (!xmlStrncmp(insert->name, name, len))) + if ((insert->okey == okey) && (insert->len == l) && + (!xmlStrncmp(insert->name, name, l))) return(insert->name); #endif nbi++; } #ifdef __GNUC__ - if (insert->len == len) { - if (!memcmp(insert->name, name, len)) + if ((insert->okey == okey) && (insert->len == l)) { + if (!memcmp(insert->name, name, l)) return(insert->name); } #else - if ((insert->len == len) && - (!xmlStrncmp(insert->name, name, len))) + if ((insert->okey == okey) && (insert->len == l) && + (!xmlStrncmp(insert->name, name, l))) return(insert->name); #endif } if (dict->subdict) { - key = okey % dict->subdict->size; + unsigned long skey; + + /* we cannot always reuse the same okey for the subdict */ + if (((dict->size == MIN_DICT_SIZE) && + (dict->subdict->size != MIN_DICT_SIZE)) || + ((dict->size != MIN_DICT_SIZE) && + (dict->subdict->size == MIN_DICT_SIZE))) + skey = xmlDictComputeKey(dict->subdict, name, l); + else + skey = okey; + + key = skey % dict->subdict->size; if (dict->subdict->dict[key].valid != 0) { xmlDictEntryPtr tmp; for (tmp = &(dict->subdict->dict[key]); tmp->next != NULL; tmp = tmp->next) { #ifdef __GNUC__ - if (tmp->len == len) { - if (!memcmp(tmp->name, name, len)) + if ((tmp->okey == skey) && (tmp->len == l)) { + if (!memcmp(tmp->name, name, l)) return(tmp->name); } #else - if ((tmp->len == len) && - (!xmlStrncmp(tmp->name, name, len))) + if ((tmp->okey == skey) && (tmp->len == l) && + (!xmlStrncmp(tmp->name, name, l))) return(tmp->name); #endif nbi++; } #ifdef __GNUC__ - if (tmp->len == len) { - if (!memcmp(tmp->name, name, len)) + if ((tmp->okey == skey) && (tmp->len == l)) { + if (!memcmp(tmp->name, name, l)) return(tmp->name); } #else - if ((tmp->len == len) && - (!xmlStrncmp(tmp->name, name, len))) + if ((tmp->okey == skey) && (tmp->len == l) && + (!xmlStrncmp(tmp->name, name, l))) return(tmp->name); #endif } key = okey % dict->size; } - ret = xmlDictAddString(dict, name, len); + ret = xmlDictAddString(dict, name, l); if (ret == NULL) return(NULL); if (insert == NULL) { @@ -650,19 +934,22 @@ return(NULL); } entry->name = ret; - entry->len = len; + entry->len = l; entry->next = NULL; entry->valid = 1; + entry->okey = okey; - if (insert != NULL) + if (insert != NULL) insert->next = entry; dict->nbElems++; if ((nbi > MAX_HASH_LEN) && - (dict->size <= ((MAX_DICT_HASH / 2) / MAX_HASH_LEN))) - xmlDictGrow(dict, MAX_HASH_LEN * 2 * dict->size); + (dict->size <= ((MAX_DICT_HASH / 2) / MAX_HASH_LEN))) { + if (xmlDictGrow(dict, MAX_HASH_LEN * 2 * dict->size) != 0) + return(NULL); + } /* Note that entry may have been freed at this point by xmlDictGrow */ return(ret); @@ -682,17 +969,23 @@ xmlDictExists(xmlDictPtr dict, const xmlChar *name, int len) { unsigned long key, okey, nbi = 0; xmlDictEntryPtr insert; + unsigned int l; if ((dict == NULL) || (name == NULL)) return(NULL); if (len < 0) - len = xmlStrlen(name); + l = strlen((const char *) name); + else + l = len; + if (((dict->limit > 0) && (l >= dict->limit)) || + (l > INT_MAX / 2)) + return(NULL); /* * Check for duplicate and insertion location. */ - okey = xmlDictComputeKey(name, len); + okey = xmlDictComputeKey(dict, name, l); key = okey % dict->size; if (dict->dict[key].valid == 0) { insert = NULL; @@ -700,60 +993,70 @@ for (insert = &(dict->dict[key]); insert->next != NULL; insert = insert->next) { #ifdef __GNUC__ - if (insert->len == len) { - if (!memcmp(insert->name, name, len)) + if ((insert->okey == okey) && (insert->len == l)) { + if (!memcmp(insert->name, name, l)) return(insert->name); } #else - if ((insert->len == len) && - (!xmlStrncmp(insert->name, name, len))) + if ((insert->okey == okey) && (insert->len == l) && + (!xmlStrncmp(insert->name, name, l))) return(insert->name); #endif nbi++; } #ifdef __GNUC__ - if (insert->len == len) { - if (!memcmp(insert->name, name, len)) + if ((insert->okey == okey) && (insert->len == l)) { + if (!memcmp(insert->name, name, l)) return(insert->name); } #else - if ((insert->len == len) && - (!xmlStrncmp(insert->name, name, len))) + if ((insert->okey == okey) && (insert->len == l) && + (!xmlStrncmp(insert->name, name, l))) return(insert->name); #endif } if (dict->subdict) { - key = okey % dict->subdict->size; + unsigned long skey; + + /* we cannot always reuse the same okey for the subdict */ + if (((dict->size == MIN_DICT_SIZE) && + (dict->subdict->size != MIN_DICT_SIZE)) || + ((dict->size != MIN_DICT_SIZE) && + (dict->subdict->size == MIN_DICT_SIZE))) + skey = xmlDictComputeKey(dict->subdict, name, l); + else + skey = okey; + + key = skey % dict->subdict->size; if (dict->subdict->dict[key].valid != 0) { xmlDictEntryPtr tmp; for (tmp = &(dict->subdict->dict[key]); tmp->next != NULL; tmp = tmp->next) { #ifdef __GNUC__ - if (tmp->len == len) { - if (!memcmp(tmp->name, name, len)) + if ((tmp->okey == skey) && (tmp->len == l)) { + if (!memcmp(tmp->name, name, l)) return(tmp->name); } #else - if ((tmp->len == len) && - (!xmlStrncmp(tmp->name, name, len))) + if ((tmp->okey == skey) && (tmp->len == l) && + (!xmlStrncmp(tmp->name, name, l))) return(tmp->name); #endif nbi++; } #ifdef __GNUC__ - if (tmp->len == len) { - if (!memcmp(tmp->name, name, len)) + if ((tmp->okey == skey) && (tmp->len == l)) { + if (!memcmp(tmp->name, name, l)) return(tmp->name); } #else - if ((tmp->len == len) && - (!xmlStrncmp(tmp->name, name, len))) + if ((tmp->okey == skey) && (tmp->len == l) && + (!xmlStrncmp(tmp->name, name, l))) return(tmp->name); #endif } - key = okey % dict->size; } /* not found */ @@ -763,7 +1066,7 @@ /** * xmlDictQLookup: * @dict: the dictionnary - * @prefix: the prefix + * @prefix: the prefix * @name: the name * * Add the QName @prefix:@name to the hash @dict if not present. @@ -776,54 +1079,67 @@ xmlDictEntryPtr entry; xmlDictEntryPtr insert; const xmlChar *ret; - int len; + unsigned int len, plen, l; if ((dict == NULL) || (name == NULL)) return(NULL); + if (prefix == NULL) + return(xmlDictLookup(dict, name, -1)); - len = xmlStrlen(name); - if (prefix != NULL) - len += 1 + xmlStrlen(prefix); + l = len = strlen((const char *) name); + plen = strlen((const char *) prefix); + len += 1 + plen; /* * Check for duplicate and insertion location. */ - okey = xmlDictComputeQKey(prefix, name, len); + okey = xmlDictComputeQKey(dict, prefix, plen, name, l); key = okey % dict->size; if (dict->dict[key].valid == 0) { insert = NULL; } else { for (insert = &(dict->dict[key]); insert->next != NULL; insert = insert->next) { - if ((insert->len == len) && + if ((insert->okey == okey) && (insert->len == len) && (xmlStrQEqual(prefix, name, insert->name))) return(insert->name); nbi++; } - if ((insert->len == len) && + if ((insert->okey == okey) && (insert->len == len) && (xmlStrQEqual(prefix, name, insert->name))) return(insert->name); } if (dict->subdict) { - key = okey % dict->subdict->size; + unsigned long skey; + + /* we cannot always reuse the same okey for the subdict */ + if (((dict->size == MIN_DICT_SIZE) && + (dict->subdict->size != MIN_DICT_SIZE)) || + ((dict->size != MIN_DICT_SIZE) && + (dict->subdict->size == MIN_DICT_SIZE))) + skey = xmlDictComputeQKey(dict->subdict, prefix, plen, name, l); + else + skey = okey; + + key = skey % dict->subdict->size; if (dict->subdict->dict[key].valid != 0) { xmlDictEntryPtr tmp; for (tmp = &(dict->subdict->dict[key]); tmp->next != NULL; tmp = tmp->next) { - if ((tmp->len == len) && + if ((tmp->okey == skey) && (tmp->len == len) && (xmlStrQEqual(prefix, name, tmp->name))) return(tmp->name); nbi++; } - if ((tmp->len == len) && + if ((tmp->okey == skey) && (tmp->len == len) && (xmlStrQEqual(prefix, name, tmp->name))) return(tmp->name); } key = okey % dict->size; } - ret = xmlDictAddQString(dict, prefix, name, len); + ret = xmlDictAddQString(dict, prefix, plen, name, l); if (ret == NULL) return(NULL); if (insert == NULL) { @@ -837,8 +1153,9 @@ entry->len = len; entry->next = NULL; entry->valid = 1; + entry->okey = okey; - if (insert != NULL) + if (insert != NULL) insert->next = entry; dict->nbElems++; @@ -896,6 +1213,50 @@ return(dict->nbElems); } +/** + * xmlDictSetLimit: + * @dict: the dictionnary + * @limit: the limit in bytes + * + * Set a size limit for the dictionary + * Added in 2.9.0 + * + * Returns the previous limit of the dictionary or 0 + */ +size_t +xmlDictSetLimit(xmlDictPtr dict, size_t limit) { + size_t ret; + + if (dict == NULL) + return(0); + ret = dict->limit; + dict->limit = limit; + return(ret); +} + +/** + * xmlDictGetUsage: + * @dict: the dictionnary + * + * Get how much memory is used by a dictionary for strings + * Added in 2.9.0 + * + * Returns the amount of strings allocated + */ +size_t +xmlDictGetUsage(xmlDictPtr dict) { + xmlDictStringsPtr pool; + size_t limit = 0; + + if (dict == NULL) + return(0); + pool = dict->strings; + while (pool != NULL) { + limit += pool->size; + pool = pool->next; + } + return(limit); +} #define bottom_dict #include "elfgcchack.h" diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/dict.in.h gettext-0.19.7/gnulib-local/lib/libxml/dict.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/dict.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/dict.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -11,6 +11,7 @@ #ifndef __XML_DICT_H__ #define __XML_DICT_H__ +#include #include #include @@ -25,36 +26,46 @@ typedef xmlDict *xmlDictPtr; /* + * Initializer + */ +XMLPUBFUN int XMLCALL xmlInitializeDict(void); + +/* * Constructor and destructor. */ XMLPUBFUN xmlDictPtr XMLCALL xmlDictCreate (void); +XMLPUBFUN size_t XMLCALL + xmlDictSetLimit (xmlDictPtr dict, + size_t limit); +XMLPUBFUN size_t XMLCALL + xmlDictGetUsage (xmlDictPtr dict); XMLPUBFUN xmlDictPtr XMLCALL xmlDictCreateSub(xmlDictPtr sub); XMLPUBFUN int XMLCALL xmlDictReference(xmlDictPtr dict); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDictFree (xmlDictPtr dict); /* * Lookup of entry in the dictionnary. */ -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlDictLookup (xmlDictPtr dict, const xmlChar *name, int len); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlDictExists (xmlDictPtr dict, const xmlChar *name, int len); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlDictQLookup (xmlDictPtr dict, const xmlChar *prefix, const xmlChar *name); XMLPUBFUN int XMLCALL xmlDictOwns (xmlDictPtr dict, const xmlChar *str); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlDictSize (xmlDictPtr dict); /* diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/DOCBparser.c gettext-0.19.7/gnulib-local/lib/libxml/DOCBparser.c --- gettext-0.19.6/gnulib-local/lib/libxml/DOCBparser.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/DOCBparser.c 2015-12-23 07:08:27.000000000 +0000 @@ -53,7 +53,7 @@ /** * docbParseDocument: * @ctxt: an SGML parser context - * + * * parse an SGML document (and build a tree if using the standard SAX * interface). * @@ -163,12 +163,12 @@ * @cur: a pointer to an array of xmlChar * @encoding: a free form C string describing the SGML document encoding, or NULL * @sax: the SAX handler block - * @userData: if using SAX, this pointer will be provided on callbacks. + * @userData: if using SAX, this pointer will be provided on callbacks. * * parse an SGML in-memory document and build a tree. * It use the given SAX function block to handle the parsing callback. * If sax is NULL, fallback to the default DOM tree building routines. - * + * * Returns the resulting document tree */ @@ -196,7 +196,7 @@ * @encoding: a free form C string describing the SGML document encoding, or NULL * * parse an SGML in-memory document and build a tree. - * + * * Returns the resulting document tree */ @@ -221,7 +221,7 @@ * @filename: the filename * @encoding: the SGML document encoding, or NULL * - * Create a parser context for a file content. + * Create a parser context for a file content. * Automatic support for ZLIB/Compress compressed document is provided * by default if found at compile-time. * @@ -247,7 +247,7 @@ * @filename: the filename * @encoding: a free form C string describing the SGML document encoding, or NULL * @sax: the SAX handler block - * @userData: if using SAX, this pointer will be provided on callbacks. + * @userData: if using SAX, this pointer will be provided on callbacks. * * parse an SGML file and build a tree. Automatic support for ZLIB/Compress * compressed document is provided by default if found at compile-time. diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/DOCBparser.in.h gettext-0.19.7/gnulib-local/lib/libxml/DOCBparser.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/DOCBparser.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/DOCBparser.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -47,44 +47,44 @@ const unsigned char *in, int *inlen, int quoteChar); -XMLPUBFUN docbDocPtr XMLCALL +XMLPUBFUN docbDocPtr XMLCALL docbSAXParseDoc (xmlChar *cur, const char *encoding, docbSAXHandlerPtr sax, void *userData); -XMLPUBFUN docbDocPtr XMLCALL +XMLPUBFUN docbDocPtr XMLCALL docbParseDoc (xmlChar *cur, const char *encoding); -XMLPUBFUN docbDocPtr XMLCALL +XMLPUBFUN docbDocPtr XMLCALL docbSAXParseFile (const char *filename, const char *encoding, docbSAXHandlerPtr sax, void *userData); -XMLPUBFUN docbDocPtr XMLCALL +XMLPUBFUN docbDocPtr XMLCALL docbParseFile (const char *filename, const char *encoding); /** * Interfaces for the Push mode. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL docbFreeParserCtxt (docbParserCtxtPtr ctxt); -XMLPUBFUN docbParserCtxtPtr XMLCALL +XMLPUBFUN docbParserCtxtPtr XMLCALL docbCreatePushParserCtxt(docbSAXHandlerPtr sax, void *user_data, const char *chunk, int size, const char *filename, xmlCharEncoding enc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL docbParseChunk (docbParserCtxtPtr ctxt, const char *chunk, int size, int terminate); -XMLPUBFUN docbParserCtxtPtr XMLCALL +XMLPUBFUN docbParserCtxtPtr XMLCALL docbCreateFileParserCtxt(const char *filename, const char *encoding); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL docbParseDocument (docbParserCtxtPtr ctxt); #ifdef __cplusplus diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/elfgcchack.h gettext-0.19.7/gnulib-local/lib/libxml/elfgcchack.h --- gettext-0.19.6/gnulib-local/lib/libxml/elfgcchack.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/elfgcchack.h 2015-12-23 07:08:27.000000000 +0000 @@ -0,0 +1,17808 @@ +/* + * elfgcchack.h: hack by Arjan van de Ven to speed + * up the code when using gcc for call within the library. + * + * Based on the analysis http://people.redhat.com/drepper/dsohowto.pdf + * from Ulrich drepper. Rewritten to be generated from the XML description + * file for libxml2 API + * autogenerated with xsltproc doc/elfgcchack.xsl doc/libxml2-api.xml + */ + +#ifdef IN_LIBXML +#ifdef __GNUC__ +#ifdef PIC +#ifdef linux +#if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || (__GNUC__ > 3) + +#include "libxml/c14n.h" +#include "libxml/catalog.h" +#include "libxml/chvalid.h" +#include "libxml/debugXML.h" +#include "libxml/dict.h" +#include "libxml/DOCBparser.h" +#include "libxml/encoding.h" +#include "libxml/entities.h" +#include "libxml/globals.h" +#include "libxml/hash.h" +#include "libxml/HTMLparser.h" +#include "libxml/HTMLtree.h" +#include "libxml/list.h" +#include "libxml/nanoftp.h" +#include "libxml/nanohttp.h" +#include "libxml/parser.h" +#include "libxml/parserInternals.h" +#include "libxml/pattern.h" +#include "libxml/relaxng.h" +#include "libxml/SAX2.h" +#include "libxml/SAX.h" +#include "libxml/schemasInternals.h" +#include "libxml/schematron.h" +#include "libxml/threads.h" +#include "libxml/tree.h" +#include "libxml/uri.h" +#include "libxml/valid.h" +#include "libxml/xinclude.h" +#include "libxml/xlink.h" +#include "libxml/xmlautomata.h" +#include "libxml/xmlerror.h" +#include "libxml/xmlexports.h" +#include "libxml/xmlIO.h" +#include "libxml/xmlmemory.h" +#include "libxml/xmlreader.h" +#include "libxml/xmlregexp.h" +#include "libxml/xmlsave.h" +#include "libxml/xmlschemas.h" +#include "libxml/xmlschemastypes.h" +#include "libxml/xmlstring.h" +#include "libxml/xmlunicode.h" +#include "libxml/xmlversion.h" +#include "libxml/xmlwriter.h" +#include "libxml/xpath.h" +#include "libxml/xpathInternals.h" +#include "libxml/xpointer.h" +#include "libxml/xmlmodule.h" + +/* special hot spot not exported ones */ + +#ifdef bottom_globals +#undef __xmlGenericError +extern __typeof (__xmlGenericError) __xmlGenericError __attribute((alias("__xmlGenericError__internal_alias"))); +#else +#ifndef __xmlGenericError +extern __typeof (__xmlGenericError) __xmlGenericError__internal_alias __attribute((visibility("hidden"))); +#define __xmlGenericError __xmlGenericError__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef __xmlGenericErrorContext +extern __typeof (__xmlGenericErrorContext) __xmlGenericErrorContext __attribute((alias("__xmlGenericErrorContext__internal_alias"))); +#else +#ifndef __xmlGenericErrorContext +extern __typeof (__xmlGenericErrorContext) __xmlGenericErrorContext__internal_alias __attribute((visibility("hidden"))); +#define __xmlGenericErrorContext __xmlGenericErrorContext__internal_alias +#endif +#endif + +/* list generated from libxml2-api.xml */ +#if defined(LIBXML_DOCB_ENABLED) +#ifdef bottom_DOCBparser +#undef docbCreatePushParserCtxt +extern __typeof (docbCreatePushParserCtxt) docbCreatePushParserCtxt __attribute((alias("docbCreatePushParserCtxt__internal_alias"))); +#else +#ifndef docbCreatePushParserCtxt +extern __typeof (docbCreatePushParserCtxt) docbCreatePushParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define docbCreatePushParserCtxt docbCreatePushParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlAttrAllowed +extern __typeof (htmlAttrAllowed) htmlAttrAllowed __attribute((alias("htmlAttrAllowed__internal_alias"))); +#else +#ifndef htmlAttrAllowed +extern __typeof (htmlAttrAllowed) htmlAttrAllowed__internal_alias __attribute((visibility("hidden"))); +#define htmlAttrAllowed htmlAttrAllowed__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlAutoCloseTag +extern __typeof (htmlAutoCloseTag) htmlAutoCloseTag __attribute((alias("htmlAutoCloseTag__internal_alias"))); +#else +#ifndef htmlAutoCloseTag +extern __typeof (htmlAutoCloseTag) htmlAutoCloseTag__internal_alias __attribute((visibility("hidden"))); +#define htmlAutoCloseTag htmlAutoCloseTag__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCreateFileParserCtxt +extern __typeof (htmlCreateFileParserCtxt) htmlCreateFileParserCtxt __attribute((alias("htmlCreateFileParserCtxt__internal_alias"))); +#else +#ifndef htmlCreateFileParserCtxt +extern __typeof (htmlCreateFileParserCtxt) htmlCreateFileParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define htmlCreateFileParserCtxt htmlCreateFileParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCreateMemoryParserCtxt +extern __typeof (htmlCreateMemoryParserCtxt) htmlCreateMemoryParserCtxt __attribute((alias("htmlCreateMemoryParserCtxt__internal_alias"))); +#else +#ifndef htmlCreateMemoryParserCtxt +extern __typeof (htmlCreateMemoryParserCtxt) htmlCreateMemoryParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define htmlCreateMemoryParserCtxt htmlCreateMemoryParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_PUSH_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCreatePushParserCtxt +extern __typeof (htmlCreatePushParserCtxt) htmlCreatePushParserCtxt __attribute((alias("htmlCreatePushParserCtxt__internal_alias"))); +#else +#ifndef htmlCreatePushParserCtxt +extern __typeof (htmlCreatePushParserCtxt) htmlCreatePushParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define htmlCreatePushParserCtxt htmlCreatePushParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCtxtReadDoc +extern __typeof (htmlCtxtReadDoc) htmlCtxtReadDoc __attribute((alias("htmlCtxtReadDoc__internal_alias"))); +#else +#ifndef htmlCtxtReadDoc +extern __typeof (htmlCtxtReadDoc) htmlCtxtReadDoc__internal_alias __attribute((visibility("hidden"))); +#define htmlCtxtReadDoc htmlCtxtReadDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCtxtReadFd +extern __typeof (htmlCtxtReadFd) htmlCtxtReadFd __attribute((alias("htmlCtxtReadFd__internal_alias"))); +#else +#ifndef htmlCtxtReadFd +extern __typeof (htmlCtxtReadFd) htmlCtxtReadFd__internal_alias __attribute((visibility("hidden"))); +#define htmlCtxtReadFd htmlCtxtReadFd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCtxtReadFile +extern __typeof (htmlCtxtReadFile) htmlCtxtReadFile __attribute((alias("htmlCtxtReadFile__internal_alias"))); +#else +#ifndef htmlCtxtReadFile +extern __typeof (htmlCtxtReadFile) htmlCtxtReadFile__internal_alias __attribute((visibility("hidden"))); +#define htmlCtxtReadFile htmlCtxtReadFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCtxtReadIO +extern __typeof (htmlCtxtReadIO) htmlCtxtReadIO __attribute((alias("htmlCtxtReadIO__internal_alias"))); +#else +#ifndef htmlCtxtReadIO +extern __typeof (htmlCtxtReadIO) htmlCtxtReadIO__internal_alias __attribute((visibility("hidden"))); +#define htmlCtxtReadIO htmlCtxtReadIO__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCtxtReadMemory +extern __typeof (htmlCtxtReadMemory) htmlCtxtReadMemory __attribute((alias("htmlCtxtReadMemory__internal_alias"))); +#else +#ifndef htmlCtxtReadMemory +extern __typeof (htmlCtxtReadMemory) htmlCtxtReadMemory__internal_alias __attribute((visibility("hidden"))); +#define htmlCtxtReadMemory htmlCtxtReadMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCtxtReset +extern __typeof (htmlCtxtReset) htmlCtxtReset __attribute((alias("htmlCtxtReset__internal_alias"))); +#else +#ifndef htmlCtxtReset +extern __typeof (htmlCtxtReset) htmlCtxtReset__internal_alias __attribute((visibility("hidden"))); +#define htmlCtxtReset htmlCtxtReset__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlCtxtUseOptions +extern __typeof (htmlCtxtUseOptions) htmlCtxtUseOptions __attribute((alias("htmlCtxtUseOptions__internal_alias"))); +#else +#ifndef htmlCtxtUseOptions +extern __typeof (htmlCtxtUseOptions) htmlCtxtUseOptions__internal_alias __attribute((visibility("hidden"))); +#define htmlCtxtUseOptions htmlCtxtUseOptions__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_SAX2 +#undef htmlDefaultSAXHandlerInit +extern __typeof (htmlDefaultSAXHandlerInit) htmlDefaultSAXHandlerInit __attribute((alias("htmlDefaultSAXHandlerInit__internal_alias"))); +#else +#ifndef htmlDefaultSAXHandlerInit +extern __typeof (htmlDefaultSAXHandlerInit) htmlDefaultSAXHandlerInit__internal_alias __attribute((visibility("hidden"))); +#define htmlDefaultSAXHandlerInit htmlDefaultSAXHandlerInit__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlDocContentDumpFormatOutput +extern __typeof (htmlDocContentDumpFormatOutput) htmlDocContentDumpFormatOutput __attribute((alias("htmlDocContentDumpFormatOutput__internal_alias"))); +#else +#ifndef htmlDocContentDumpFormatOutput +extern __typeof (htmlDocContentDumpFormatOutput) htmlDocContentDumpFormatOutput__internal_alias __attribute((visibility("hidden"))); +#define htmlDocContentDumpFormatOutput htmlDocContentDumpFormatOutput__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlDocContentDumpOutput +extern __typeof (htmlDocContentDumpOutput) htmlDocContentDumpOutput __attribute((alias("htmlDocContentDumpOutput__internal_alias"))); +#else +#ifndef htmlDocContentDumpOutput +extern __typeof (htmlDocContentDumpOutput) htmlDocContentDumpOutput__internal_alias __attribute((visibility("hidden"))); +#define htmlDocContentDumpOutput htmlDocContentDumpOutput__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlDocDump +extern __typeof (htmlDocDump) htmlDocDump __attribute((alias("htmlDocDump__internal_alias"))); +#else +#ifndef htmlDocDump +extern __typeof (htmlDocDump) htmlDocDump__internal_alias __attribute((visibility("hidden"))); +#define htmlDocDump htmlDocDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlDocDumpMemory +extern __typeof (htmlDocDumpMemory) htmlDocDumpMemory __attribute((alias("htmlDocDumpMemory__internal_alias"))); +#else +#ifndef htmlDocDumpMemory +extern __typeof (htmlDocDumpMemory) htmlDocDumpMemory__internal_alias __attribute((visibility("hidden"))); +#define htmlDocDumpMemory htmlDocDumpMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlDocDumpMemoryFormat +extern __typeof (htmlDocDumpMemoryFormat) htmlDocDumpMemoryFormat __attribute((alias("htmlDocDumpMemoryFormat__internal_alias"))); +#else +#ifndef htmlDocDumpMemoryFormat +extern __typeof (htmlDocDumpMemoryFormat) htmlDocDumpMemoryFormat__internal_alias __attribute((visibility("hidden"))); +#define htmlDocDumpMemoryFormat htmlDocDumpMemoryFormat__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlElementAllowedHere +extern __typeof (htmlElementAllowedHere) htmlElementAllowedHere __attribute((alias("htmlElementAllowedHere__internal_alias"))); +#else +#ifndef htmlElementAllowedHere +extern __typeof (htmlElementAllowedHere) htmlElementAllowedHere__internal_alias __attribute((visibility("hidden"))); +#define htmlElementAllowedHere htmlElementAllowedHere__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlElementStatusHere +extern __typeof (htmlElementStatusHere) htmlElementStatusHere __attribute((alias("htmlElementStatusHere__internal_alias"))); +#else +#ifndef htmlElementStatusHere +extern __typeof (htmlElementStatusHere) htmlElementStatusHere__internal_alias __attribute((visibility("hidden"))); +#define htmlElementStatusHere htmlElementStatusHere__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlEncodeEntities +extern __typeof (htmlEncodeEntities) htmlEncodeEntities __attribute((alias("htmlEncodeEntities__internal_alias"))); +#else +#ifndef htmlEncodeEntities +extern __typeof (htmlEncodeEntities) htmlEncodeEntities__internal_alias __attribute((visibility("hidden"))); +#define htmlEncodeEntities htmlEncodeEntities__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlEntityLookup +extern __typeof (htmlEntityLookup) htmlEntityLookup __attribute((alias("htmlEntityLookup__internal_alias"))); +#else +#ifndef htmlEntityLookup +extern __typeof (htmlEntityLookup) htmlEntityLookup__internal_alias __attribute((visibility("hidden"))); +#define htmlEntityLookup htmlEntityLookup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlEntityValueLookup +extern __typeof (htmlEntityValueLookup) htmlEntityValueLookup __attribute((alias("htmlEntityValueLookup__internal_alias"))); +#else +#ifndef htmlEntityValueLookup +extern __typeof (htmlEntityValueLookup) htmlEntityValueLookup__internal_alias __attribute((visibility("hidden"))); +#define htmlEntityValueLookup htmlEntityValueLookup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlFreeParserCtxt +extern __typeof (htmlFreeParserCtxt) htmlFreeParserCtxt __attribute((alias("htmlFreeParserCtxt__internal_alias"))); +#else +#ifndef htmlFreeParserCtxt +extern __typeof (htmlFreeParserCtxt) htmlFreeParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define htmlFreeParserCtxt htmlFreeParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlGetMetaEncoding +extern __typeof (htmlGetMetaEncoding) htmlGetMetaEncoding __attribute((alias("htmlGetMetaEncoding__internal_alias"))); +#else +#ifndef htmlGetMetaEncoding +extern __typeof (htmlGetMetaEncoding) htmlGetMetaEncoding__internal_alias __attribute((visibility("hidden"))); +#define htmlGetMetaEncoding htmlGetMetaEncoding__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlHandleOmittedElem +extern __typeof (htmlHandleOmittedElem) htmlHandleOmittedElem __attribute((alias("htmlHandleOmittedElem__internal_alias"))); +#else +#ifndef htmlHandleOmittedElem +extern __typeof (htmlHandleOmittedElem) htmlHandleOmittedElem__internal_alias __attribute((visibility("hidden"))); +#define htmlHandleOmittedElem htmlHandleOmittedElem__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlInitAutoClose +extern __typeof (htmlInitAutoClose) htmlInitAutoClose __attribute((alias("htmlInitAutoClose__internal_alias"))); +#else +#ifndef htmlInitAutoClose +extern __typeof (htmlInitAutoClose) htmlInitAutoClose__internal_alias __attribute((visibility("hidden"))); +#define htmlInitAutoClose htmlInitAutoClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlIsAutoClosed +extern __typeof (htmlIsAutoClosed) htmlIsAutoClosed __attribute((alias("htmlIsAutoClosed__internal_alias"))); +#else +#ifndef htmlIsAutoClosed +extern __typeof (htmlIsAutoClosed) htmlIsAutoClosed__internal_alias __attribute((visibility("hidden"))); +#define htmlIsAutoClosed htmlIsAutoClosed__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlIsBooleanAttr +extern __typeof (htmlIsBooleanAttr) htmlIsBooleanAttr __attribute((alias("htmlIsBooleanAttr__internal_alias"))); +#else +#ifndef htmlIsBooleanAttr +extern __typeof (htmlIsBooleanAttr) htmlIsBooleanAttr__internal_alias __attribute((visibility("hidden"))); +#define htmlIsBooleanAttr htmlIsBooleanAttr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlIsScriptAttribute +extern __typeof (htmlIsScriptAttribute) htmlIsScriptAttribute __attribute((alias("htmlIsScriptAttribute__internal_alias"))); +#else +#ifndef htmlIsScriptAttribute +extern __typeof (htmlIsScriptAttribute) htmlIsScriptAttribute__internal_alias __attribute((visibility("hidden"))); +#define htmlIsScriptAttribute htmlIsScriptAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlNewDoc +extern __typeof (htmlNewDoc) htmlNewDoc __attribute((alias("htmlNewDoc__internal_alias"))); +#else +#ifndef htmlNewDoc +extern __typeof (htmlNewDoc) htmlNewDoc__internal_alias __attribute((visibility("hidden"))); +#define htmlNewDoc htmlNewDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlNewDocNoDtD +extern __typeof (htmlNewDocNoDtD) htmlNewDocNoDtD __attribute((alias("htmlNewDocNoDtD__internal_alias"))); +#else +#ifndef htmlNewDocNoDtD +extern __typeof (htmlNewDocNoDtD) htmlNewDocNoDtD__internal_alias __attribute((visibility("hidden"))); +#define htmlNewDocNoDtD htmlNewDocNoDtD__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlNewParserCtxt +extern __typeof (htmlNewParserCtxt) htmlNewParserCtxt __attribute((alias("htmlNewParserCtxt__internal_alias"))); +#else +#ifndef htmlNewParserCtxt +extern __typeof (htmlNewParserCtxt) htmlNewParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define htmlNewParserCtxt htmlNewParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlNodeDump +extern __typeof (htmlNodeDump) htmlNodeDump __attribute((alias("htmlNodeDump__internal_alias"))); +#else +#ifndef htmlNodeDump +extern __typeof (htmlNodeDump) htmlNodeDump__internal_alias __attribute((visibility("hidden"))); +#define htmlNodeDump htmlNodeDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlNodeDumpFile +extern __typeof (htmlNodeDumpFile) htmlNodeDumpFile __attribute((alias("htmlNodeDumpFile__internal_alias"))); +#else +#ifndef htmlNodeDumpFile +extern __typeof (htmlNodeDumpFile) htmlNodeDumpFile__internal_alias __attribute((visibility("hidden"))); +#define htmlNodeDumpFile htmlNodeDumpFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlNodeDumpFileFormat +extern __typeof (htmlNodeDumpFileFormat) htmlNodeDumpFileFormat __attribute((alias("htmlNodeDumpFileFormat__internal_alias"))); +#else +#ifndef htmlNodeDumpFileFormat +extern __typeof (htmlNodeDumpFileFormat) htmlNodeDumpFileFormat__internal_alias __attribute((visibility("hidden"))); +#define htmlNodeDumpFileFormat htmlNodeDumpFileFormat__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlNodeDumpFormatOutput +extern __typeof (htmlNodeDumpFormatOutput) htmlNodeDumpFormatOutput __attribute((alias("htmlNodeDumpFormatOutput__internal_alias"))); +#else +#ifndef htmlNodeDumpFormatOutput +extern __typeof (htmlNodeDumpFormatOutput) htmlNodeDumpFormatOutput__internal_alias __attribute((visibility("hidden"))); +#define htmlNodeDumpFormatOutput htmlNodeDumpFormatOutput__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlNodeDumpOutput +extern __typeof (htmlNodeDumpOutput) htmlNodeDumpOutput __attribute((alias("htmlNodeDumpOutput__internal_alias"))); +#else +#ifndef htmlNodeDumpOutput +extern __typeof (htmlNodeDumpOutput) htmlNodeDumpOutput__internal_alias __attribute((visibility("hidden"))); +#define htmlNodeDumpOutput htmlNodeDumpOutput__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlNodeStatus +extern __typeof (htmlNodeStatus) htmlNodeStatus __attribute((alias("htmlNodeStatus__internal_alias"))); +#else +#ifndef htmlNodeStatus +extern __typeof (htmlNodeStatus) htmlNodeStatus__internal_alias __attribute((visibility("hidden"))); +#define htmlNodeStatus htmlNodeStatus__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlParseCharRef +extern __typeof (htmlParseCharRef) htmlParseCharRef __attribute((alias("htmlParseCharRef__internal_alias"))); +#else +#ifndef htmlParseCharRef +extern __typeof (htmlParseCharRef) htmlParseCharRef__internal_alias __attribute((visibility("hidden"))); +#define htmlParseCharRef htmlParseCharRef__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_PUSH_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlParseChunk +extern __typeof (htmlParseChunk) htmlParseChunk __attribute((alias("htmlParseChunk__internal_alias"))); +#else +#ifndef htmlParseChunk +extern __typeof (htmlParseChunk) htmlParseChunk__internal_alias __attribute((visibility("hidden"))); +#define htmlParseChunk htmlParseChunk__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlParseDoc +extern __typeof (htmlParseDoc) htmlParseDoc __attribute((alias("htmlParseDoc__internal_alias"))); +#else +#ifndef htmlParseDoc +extern __typeof (htmlParseDoc) htmlParseDoc__internal_alias __attribute((visibility("hidden"))); +#define htmlParseDoc htmlParseDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlParseDocument +extern __typeof (htmlParseDocument) htmlParseDocument __attribute((alias("htmlParseDocument__internal_alias"))); +#else +#ifndef htmlParseDocument +extern __typeof (htmlParseDocument) htmlParseDocument__internal_alias __attribute((visibility("hidden"))); +#define htmlParseDocument htmlParseDocument__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlParseElement +extern __typeof (htmlParseElement) htmlParseElement __attribute((alias("htmlParseElement__internal_alias"))); +#else +#ifndef htmlParseElement +extern __typeof (htmlParseElement) htmlParseElement__internal_alias __attribute((visibility("hidden"))); +#define htmlParseElement htmlParseElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlParseEntityRef +extern __typeof (htmlParseEntityRef) htmlParseEntityRef __attribute((alias("htmlParseEntityRef__internal_alias"))); +#else +#ifndef htmlParseEntityRef +extern __typeof (htmlParseEntityRef) htmlParseEntityRef__internal_alias __attribute((visibility("hidden"))); +#define htmlParseEntityRef htmlParseEntityRef__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlParseFile +extern __typeof (htmlParseFile) htmlParseFile __attribute((alias("htmlParseFile__internal_alias"))); +#else +#ifndef htmlParseFile +extern __typeof (htmlParseFile) htmlParseFile__internal_alias __attribute((visibility("hidden"))); +#define htmlParseFile htmlParseFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlReadDoc +extern __typeof (htmlReadDoc) htmlReadDoc __attribute((alias("htmlReadDoc__internal_alias"))); +#else +#ifndef htmlReadDoc +extern __typeof (htmlReadDoc) htmlReadDoc__internal_alias __attribute((visibility("hidden"))); +#define htmlReadDoc htmlReadDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlReadFd +extern __typeof (htmlReadFd) htmlReadFd __attribute((alias("htmlReadFd__internal_alias"))); +#else +#ifndef htmlReadFd +extern __typeof (htmlReadFd) htmlReadFd__internal_alias __attribute((visibility("hidden"))); +#define htmlReadFd htmlReadFd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlReadFile +extern __typeof (htmlReadFile) htmlReadFile __attribute((alias("htmlReadFile__internal_alias"))); +#else +#ifndef htmlReadFile +extern __typeof (htmlReadFile) htmlReadFile__internal_alias __attribute((visibility("hidden"))); +#define htmlReadFile htmlReadFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlReadIO +extern __typeof (htmlReadIO) htmlReadIO __attribute((alias("htmlReadIO__internal_alias"))); +#else +#ifndef htmlReadIO +extern __typeof (htmlReadIO) htmlReadIO__internal_alias __attribute((visibility("hidden"))); +#define htmlReadIO htmlReadIO__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlReadMemory +extern __typeof (htmlReadMemory) htmlReadMemory __attribute((alias("htmlReadMemory__internal_alias"))); +#else +#ifndef htmlReadMemory +extern __typeof (htmlReadMemory) htmlReadMemory__internal_alias __attribute((visibility("hidden"))); +#define htmlReadMemory htmlReadMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlSAXParseDoc +extern __typeof (htmlSAXParseDoc) htmlSAXParseDoc __attribute((alias("htmlSAXParseDoc__internal_alias"))); +#else +#ifndef htmlSAXParseDoc +extern __typeof (htmlSAXParseDoc) htmlSAXParseDoc__internal_alias __attribute((visibility("hidden"))); +#define htmlSAXParseDoc htmlSAXParseDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlSAXParseFile +extern __typeof (htmlSAXParseFile) htmlSAXParseFile __attribute((alias("htmlSAXParseFile__internal_alias"))); +#else +#ifndef htmlSAXParseFile +extern __typeof (htmlSAXParseFile) htmlSAXParseFile__internal_alias __attribute((visibility("hidden"))); +#define htmlSAXParseFile htmlSAXParseFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlSaveFile +extern __typeof (htmlSaveFile) htmlSaveFile __attribute((alias("htmlSaveFile__internal_alias"))); +#else +#ifndef htmlSaveFile +extern __typeof (htmlSaveFile) htmlSaveFile__internal_alias __attribute((visibility("hidden"))); +#define htmlSaveFile htmlSaveFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlSaveFileEnc +extern __typeof (htmlSaveFileEnc) htmlSaveFileEnc __attribute((alias("htmlSaveFileEnc__internal_alias"))); +#else +#ifndef htmlSaveFileEnc +extern __typeof (htmlSaveFileEnc) htmlSaveFileEnc__internal_alias __attribute((visibility("hidden"))); +#define htmlSaveFileEnc htmlSaveFileEnc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlSaveFileFormat +extern __typeof (htmlSaveFileFormat) htmlSaveFileFormat __attribute((alias("htmlSaveFileFormat__internal_alias"))); +#else +#ifndef htmlSaveFileFormat +extern __typeof (htmlSaveFileFormat) htmlSaveFileFormat__internal_alias __attribute((visibility("hidden"))); +#define htmlSaveFileFormat htmlSaveFileFormat__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLtree +#undef htmlSetMetaEncoding +extern __typeof (htmlSetMetaEncoding) htmlSetMetaEncoding __attribute((alias("htmlSetMetaEncoding__internal_alias"))); +#else +#ifndef htmlSetMetaEncoding +extern __typeof (htmlSetMetaEncoding) htmlSetMetaEncoding__internal_alias __attribute((visibility("hidden"))); +#define htmlSetMetaEncoding htmlSetMetaEncoding__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_HTMLparser +#undef htmlTagLookup +extern __typeof (htmlTagLookup) htmlTagLookup __attribute((alias("htmlTagLookup__internal_alias"))); +#else +#ifndef htmlTagLookup +extern __typeof (htmlTagLookup) htmlTagLookup__internal_alias __attribute((visibility("hidden"))); +#define htmlTagLookup htmlTagLookup__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef inputPop +extern __typeof (inputPop) inputPop __attribute((alias("inputPop__internal_alias"))); +#else +#ifndef inputPop +extern __typeof (inputPop) inputPop__internal_alias __attribute((visibility("hidden"))); +#define inputPop inputPop__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef inputPush +extern __typeof (inputPush) inputPush __attribute((alias("inputPush__internal_alias"))); +#else +#ifndef inputPush +extern __typeof (inputPush) inputPush__internal_alias __attribute((visibility("hidden"))); +#define inputPush inputPush__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef namePop +extern __typeof (namePop) namePop __attribute((alias("namePop__internal_alias"))); +#else +#ifndef namePop +extern __typeof (namePop) namePop__internal_alias __attribute((visibility("hidden"))); +#define namePop namePop__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef namePush +extern __typeof (namePush) namePush __attribute((alias("namePush__internal_alias"))); +#else +#ifndef namePush +extern __typeof (namePush) namePush__internal_alias __attribute((visibility("hidden"))); +#define namePush namePush__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef nodePop +extern __typeof (nodePop) nodePop __attribute((alias("nodePop__internal_alias"))); +#else +#ifndef nodePop +extern __typeof (nodePop) nodePop__internal_alias __attribute((visibility("hidden"))); +#define nodePop nodePop__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef nodePush +extern __typeof (nodePush) nodePush __attribute((alias("nodePush__internal_alias"))); +#else +#ifndef nodePush +extern __typeof (nodePush) nodePush__internal_alias __attribute((visibility("hidden"))); +#define nodePush nodePush__internal_alias +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef valuePop +extern __typeof (valuePop) valuePop __attribute((alias("valuePop__internal_alias"))); +#else +#ifndef valuePop +extern __typeof (valuePop) valuePop__internal_alias __attribute((visibility("hidden"))); +#define valuePop valuePop__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef valuePush +extern __typeof (valuePush) valuePush __attribute((alias("valuePush__internal_alias"))); +#else +#ifndef valuePush +extern __typeof (valuePush) valuePush__internal_alias __attribute((visibility("hidden"))); +#define valuePush valuePush__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlACatalogAdd +extern __typeof (xmlACatalogAdd) xmlACatalogAdd __attribute((alias("xmlACatalogAdd__internal_alias"))); +#else +#ifndef xmlACatalogAdd +extern __typeof (xmlACatalogAdd) xmlACatalogAdd__internal_alias __attribute((visibility("hidden"))); +#define xmlACatalogAdd xmlACatalogAdd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_catalog +#undef xmlACatalogDump +extern __typeof (xmlACatalogDump) xmlACatalogDump __attribute((alias("xmlACatalogDump__internal_alias"))); +#else +#ifndef xmlACatalogDump +extern __typeof (xmlACatalogDump) xmlACatalogDump__internal_alias __attribute((visibility("hidden"))); +#define xmlACatalogDump xmlACatalogDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlACatalogRemove +extern __typeof (xmlACatalogRemove) xmlACatalogRemove __attribute((alias("xmlACatalogRemove__internal_alias"))); +#else +#ifndef xmlACatalogRemove +extern __typeof (xmlACatalogRemove) xmlACatalogRemove__internal_alias __attribute((visibility("hidden"))); +#define xmlACatalogRemove xmlACatalogRemove__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlACatalogResolve +extern __typeof (xmlACatalogResolve) xmlACatalogResolve __attribute((alias("xmlACatalogResolve__internal_alias"))); +#else +#ifndef xmlACatalogResolve +extern __typeof (xmlACatalogResolve) xmlACatalogResolve__internal_alias __attribute((visibility("hidden"))); +#define xmlACatalogResolve xmlACatalogResolve__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlACatalogResolvePublic +extern __typeof (xmlACatalogResolvePublic) xmlACatalogResolvePublic __attribute((alias("xmlACatalogResolvePublic__internal_alias"))); +#else +#ifndef xmlACatalogResolvePublic +extern __typeof (xmlACatalogResolvePublic) xmlACatalogResolvePublic__internal_alias __attribute((visibility("hidden"))); +#define xmlACatalogResolvePublic xmlACatalogResolvePublic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlACatalogResolveSystem +extern __typeof (xmlACatalogResolveSystem) xmlACatalogResolveSystem __attribute((alias("xmlACatalogResolveSystem__internal_alias"))); +#else +#ifndef xmlACatalogResolveSystem +extern __typeof (xmlACatalogResolveSystem) xmlACatalogResolveSystem__internal_alias __attribute((visibility("hidden"))); +#define xmlACatalogResolveSystem xmlACatalogResolveSystem__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlACatalogResolveURI +extern __typeof (xmlACatalogResolveURI) xmlACatalogResolveURI __attribute((alias("xmlACatalogResolveURI__internal_alias"))); +#else +#ifndef xmlACatalogResolveURI +extern __typeof (xmlACatalogResolveURI) xmlACatalogResolveURI__internal_alias __attribute((visibility("hidden"))); +#define xmlACatalogResolveURI xmlACatalogResolveURI__internal_alias +#endif +#endif +#endif + +#ifdef bottom_valid +#undef xmlAddAttributeDecl +extern __typeof (xmlAddAttributeDecl) xmlAddAttributeDecl __attribute((alias("xmlAddAttributeDecl__internal_alias"))); +#else +#ifndef xmlAddAttributeDecl +extern __typeof (xmlAddAttributeDecl) xmlAddAttributeDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlAddAttributeDecl xmlAddAttributeDecl__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlAddChild +extern __typeof (xmlAddChild) xmlAddChild __attribute((alias("xmlAddChild__internal_alias"))); +#else +#ifndef xmlAddChild +extern __typeof (xmlAddChild) xmlAddChild__internal_alias __attribute((visibility("hidden"))); +#define xmlAddChild xmlAddChild__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlAddChildList +extern __typeof (xmlAddChildList) xmlAddChildList __attribute((alias("xmlAddChildList__internal_alias"))); +#else +#ifndef xmlAddChildList +extern __typeof (xmlAddChildList) xmlAddChildList__internal_alias __attribute((visibility("hidden"))); +#define xmlAddChildList xmlAddChildList__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlAddDocEntity +extern __typeof (xmlAddDocEntity) xmlAddDocEntity __attribute((alias("xmlAddDocEntity__internal_alias"))); +#else +#ifndef xmlAddDocEntity +extern __typeof (xmlAddDocEntity) xmlAddDocEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlAddDocEntity xmlAddDocEntity__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlAddDtdEntity +extern __typeof (xmlAddDtdEntity) xmlAddDtdEntity __attribute((alias("xmlAddDtdEntity__internal_alias"))); +#else +#ifndef xmlAddDtdEntity +extern __typeof (xmlAddDtdEntity) xmlAddDtdEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlAddDtdEntity xmlAddDtdEntity__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlAddElementDecl +extern __typeof (xmlAddElementDecl) xmlAddElementDecl __attribute((alias("xmlAddElementDecl__internal_alias"))); +#else +#ifndef xmlAddElementDecl +extern __typeof (xmlAddElementDecl) xmlAddElementDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlAddElementDecl xmlAddElementDecl__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlAddEncodingAlias +extern __typeof (xmlAddEncodingAlias) xmlAddEncodingAlias __attribute((alias("xmlAddEncodingAlias__internal_alias"))); +#else +#ifndef xmlAddEncodingAlias +extern __typeof (xmlAddEncodingAlias) xmlAddEncodingAlias__internal_alias __attribute((visibility("hidden"))); +#define xmlAddEncodingAlias xmlAddEncodingAlias__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlAddID +extern __typeof (xmlAddID) xmlAddID __attribute((alias("xmlAddID__internal_alias"))); +#else +#ifndef xmlAddID +extern __typeof (xmlAddID) xmlAddID__internal_alias __attribute((visibility("hidden"))); +#define xmlAddID xmlAddID__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlAddNextSibling +extern __typeof (xmlAddNextSibling) xmlAddNextSibling __attribute((alias("xmlAddNextSibling__internal_alias"))); +#else +#ifndef xmlAddNextSibling +extern __typeof (xmlAddNextSibling) xmlAddNextSibling__internal_alias __attribute((visibility("hidden"))); +#define xmlAddNextSibling xmlAddNextSibling__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlAddNotationDecl +extern __typeof (xmlAddNotationDecl) xmlAddNotationDecl __attribute((alias("xmlAddNotationDecl__internal_alias"))); +#else +#ifndef xmlAddNotationDecl +extern __typeof (xmlAddNotationDecl) xmlAddNotationDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlAddNotationDecl xmlAddNotationDecl__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_tree +#undef xmlAddPrevSibling +extern __typeof (xmlAddPrevSibling) xmlAddPrevSibling __attribute((alias("xmlAddPrevSibling__internal_alias"))); +#else +#ifndef xmlAddPrevSibling +extern __typeof (xmlAddPrevSibling) xmlAddPrevSibling__internal_alias __attribute((visibility("hidden"))); +#define xmlAddPrevSibling xmlAddPrevSibling__internal_alias +#endif +#endif +#endif + +#ifdef bottom_valid +#undef xmlAddRef +extern __typeof (xmlAddRef) xmlAddRef __attribute((alias("xmlAddRef__internal_alias"))); +#else +#ifndef xmlAddRef +extern __typeof (xmlAddRef) xmlAddRef__internal_alias __attribute((visibility("hidden"))); +#define xmlAddRef xmlAddRef__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlAddSibling +extern __typeof (xmlAddSibling) xmlAddSibling __attribute((alias("xmlAddSibling__internal_alias"))); +#else +#ifndef xmlAddSibling +extern __typeof (xmlAddSibling) xmlAddSibling__internal_alias __attribute((visibility("hidden"))); +#define xmlAddSibling xmlAddSibling__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlAllocOutputBuffer +extern __typeof (xmlAllocOutputBuffer) xmlAllocOutputBuffer __attribute((alias("xmlAllocOutputBuffer__internal_alias"))); +#else +#ifndef xmlAllocOutputBuffer +extern __typeof (xmlAllocOutputBuffer) xmlAllocOutputBuffer__internal_alias __attribute((visibility("hidden"))); +#define xmlAllocOutputBuffer xmlAllocOutputBuffer__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlAllocParserInputBuffer +extern __typeof (xmlAllocParserInputBuffer) xmlAllocParserInputBuffer __attribute((alias("xmlAllocParserInputBuffer__internal_alias"))); +#else +#ifndef xmlAllocParserInputBuffer +extern __typeof (xmlAllocParserInputBuffer) xmlAllocParserInputBuffer__internal_alias __attribute((visibility("hidden"))); +#define xmlAllocParserInputBuffer xmlAllocParserInputBuffer__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlAttrSerializeTxtContent +extern __typeof (xmlAttrSerializeTxtContent) xmlAttrSerializeTxtContent __attribute((alias("xmlAttrSerializeTxtContent__internal_alias"))); +#else +#ifndef xmlAttrSerializeTxtContent +extern __typeof (xmlAttrSerializeTxtContent) xmlAttrSerializeTxtContent__internal_alias __attribute((visibility("hidden"))); +#define xmlAttrSerializeTxtContent xmlAttrSerializeTxtContent__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataCompile +extern __typeof (xmlAutomataCompile) xmlAutomataCompile __attribute((alias("xmlAutomataCompile__internal_alias"))); +#else +#ifndef xmlAutomataCompile +extern __typeof (xmlAutomataCompile) xmlAutomataCompile__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataCompile xmlAutomataCompile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataGetInitState +extern __typeof (xmlAutomataGetInitState) xmlAutomataGetInitState __attribute((alias("xmlAutomataGetInitState__internal_alias"))); +#else +#ifndef xmlAutomataGetInitState +extern __typeof (xmlAutomataGetInitState) xmlAutomataGetInitState__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataGetInitState xmlAutomataGetInitState__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataIsDeterminist +extern __typeof (xmlAutomataIsDeterminist) xmlAutomataIsDeterminist __attribute((alias("xmlAutomataIsDeterminist__internal_alias"))); +#else +#ifndef xmlAutomataIsDeterminist +extern __typeof (xmlAutomataIsDeterminist) xmlAutomataIsDeterminist__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataIsDeterminist xmlAutomataIsDeterminist__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewAllTrans +extern __typeof (xmlAutomataNewAllTrans) xmlAutomataNewAllTrans __attribute((alias("xmlAutomataNewAllTrans__internal_alias"))); +#else +#ifndef xmlAutomataNewAllTrans +extern __typeof (xmlAutomataNewAllTrans) xmlAutomataNewAllTrans__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewAllTrans xmlAutomataNewAllTrans__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewCountTrans +extern __typeof (xmlAutomataNewCountTrans) xmlAutomataNewCountTrans __attribute((alias("xmlAutomataNewCountTrans__internal_alias"))); +#else +#ifndef xmlAutomataNewCountTrans +extern __typeof (xmlAutomataNewCountTrans) xmlAutomataNewCountTrans__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewCountTrans xmlAutomataNewCountTrans__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewCountTrans2 +extern __typeof (xmlAutomataNewCountTrans2) xmlAutomataNewCountTrans2 __attribute((alias("xmlAutomataNewCountTrans2__internal_alias"))); +#else +#ifndef xmlAutomataNewCountTrans2 +extern __typeof (xmlAutomataNewCountTrans2) xmlAutomataNewCountTrans2__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewCountTrans2 xmlAutomataNewCountTrans2__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewCountedTrans +extern __typeof (xmlAutomataNewCountedTrans) xmlAutomataNewCountedTrans __attribute((alias("xmlAutomataNewCountedTrans__internal_alias"))); +#else +#ifndef xmlAutomataNewCountedTrans +extern __typeof (xmlAutomataNewCountedTrans) xmlAutomataNewCountedTrans__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewCountedTrans xmlAutomataNewCountedTrans__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewCounter +extern __typeof (xmlAutomataNewCounter) xmlAutomataNewCounter __attribute((alias("xmlAutomataNewCounter__internal_alias"))); +#else +#ifndef xmlAutomataNewCounter +extern __typeof (xmlAutomataNewCounter) xmlAutomataNewCounter__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewCounter xmlAutomataNewCounter__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewCounterTrans +extern __typeof (xmlAutomataNewCounterTrans) xmlAutomataNewCounterTrans __attribute((alias("xmlAutomataNewCounterTrans__internal_alias"))); +#else +#ifndef xmlAutomataNewCounterTrans +extern __typeof (xmlAutomataNewCounterTrans) xmlAutomataNewCounterTrans__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewCounterTrans xmlAutomataNewCounterTrans__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewEpsilon +extern __typeof (xmlAutomataNewEpsilon) xmlAutomataNewEpsilon __attribute((alias("xmlAutomataNewEpsilon__internal_alias"))); +#else +#ifndef xmlAutomataNewEpsilon +extern __typeof (xmlAutomataNewEpsilon) xmlAutomataNewEpsilon__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewEpsilon xmlAutomataNewEpsilon__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewNegTrans +extern __typeof (xmlAutomataNewNegTrans) xmlAutomataNewNegTrans __attribute((alias("xmlAutomataNewNegTrans__internal_alias"))); +#else +#ifndef xmlAutomataNewNegTrans +extern __typeof (xmlAutomataNewNegTrans) xmlAutomataNewNegTrans__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewNegTrans xmlAutomataNewNegTrans__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewOnceTrans +extern __typeof (xmlAutomataNewOnceTrans) xmlAutomataNewOnceTrans __attribute((alias("xmlAutomataNewOnceTrans__internal_alias"))); +#else +#ifndef xmlAutomataNewOnceTrans +extern __typeof (xmlAutomataNewOnceTrans) xmlAutomataNewOnceTrans__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewOnceTrans xmlAutomataNewOnceTrans__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewOnceTrans2 +extern __typeof (xmlAutomataNewOnceTrans2) xmlAutomataNewOnceTrans2 __attribute((alias("xmlAutomataNewOnceTrans2__internal_alias"))); +#else +#ifndef xmlAutomataNewOnceTrans2 +extern __typeof (xmlAutomataNewOnceTrans2) xmlAutomataNewOnceTrans2__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewOnceTrans2 xmlAutomataNewOnceTrans2__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewState +extern __typeof (xmlAutomataNewState) xmlAutomataNewState __attribute((alias("xmlAutomataNewState__internal_alias"))); +#else +#ifndef xmlAutomataNewState +extern __typeof (xmlAutomataNewState) xmlAutomataNewState__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewState xmlAutomataNewState__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewTransition +extern __typeof (xmlAutomataNewTransition) xmlAutomataNewTransition __attribute((alias("xmlAutomataNewTransition__internal_alias"))); +#else +#ifndef xmlAutomataNewTransition +extern __typeof (xmlAutomataNewTransition) xmlAutomataNewTransition__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewTransition xmlAutomataNewTransition__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataNewTransition2 +extern __typeof (xmlAutomataNewTransition2) xmlAutomataNewTransition2 __attribute((alias("xmlAutomataNewTransition2__internal_alias"))); +#else +#ifndef xmlAutomataNewTransition2 +extern __typeof (xmlAutomataNewTransition2) xmlAutomataNewTransition2__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataNewTransition2 xmlAutomataNewTransition2__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlAutomataSetFinalState +extern __typeof (xmlAutomataSetFinalState) xmlAutomataSetFinalState __attribute((alias("xmlAutomataSetFinalState__internal_alias"))); +#else +#ifndef xmlAutomataSetFinalState +extern __typeof (xmlAutomataSetFinalState) xmlAutomataSetFinalState__internal_alias __attribute((visibility("hidden"))); +#define xmlAutomataSetFinalState xmlAutomataSetFinalState__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlBoolToText +extern __typeof (xmlBoolToText) xmlBoolToText __attribute((alias("xmlBoolToText__internal_alias"))); +#else +#ifndef xmlBoolToText +extern __typeof (xmlBoolToText) xmlBoolToText__internal_alias __attribute((visibility("hidden"))); +#define xmlBoolToText xmlBoolToText__internal_alias +#endif +#endif +#endif + +#ifdef bottom_buf +#undef xmlBufContent +extern __typeof (xmlBufContent) xmlBufContent __attribute((alias("xmlBufContent__internal_alias"))); +#else +#ifndef xmlBufContent +extern __typeof (xmlBufContent) xmlBufContent__internal_alias __attribute((visibility("hidden"))); +#define xmlBufContent xmlBufContent__internal_alias +#endif +#endif + +#ifdef bottom_buf +#undef xmlBufEnd +extern __typeof (xmlBufEnd) xmlBufEnd __attribute((alias("xmlBufEnd__internal_alias"))); +#else +#ifndef xmlBufEnd +extern __typeof (xmlBufEnd) xmlBufEnd__internal_alias __attribute((visibility("hidden"))); +#define xmlBufEnd xmlBufEnd__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufGetNodeContent +extern __typeof (xmlBufGetNodeContent) xmlBufGetNodeContent __attribute((alias("xmlBufGetNodeContent__internal_alias"))); +#else +#ifndef xmlBufGetNodeContent +extern __typeof (xmlBufGetNodeContent) xmlBufGetNodeContent__internal_alias __attribute((visibility("hidden"))); +#define xmlBufGetNodeContent xmlBufGetNodeContent__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlBufNodeDump +extern __typeof (xmlBufNodeDump) xmlBufNodeDump __attribute((alias("xmlBufNodeDump__internal_alias"))); +#else +#ifndef xmlBufNodeDump +extern __typeof (xmlBufNodeDump) xmlBufNodeDump__internal_alias __attribute((visibility("hidden"))); +#define xmlBufNodeDump xmlBufNodeDump__internal_alias +#endif +#endif +#endif + +#ifdef bottom_buf +#undef xmlBufShrink +extern __typeof (xmlBufShrink) xmlBufShrink __attribute((alias("xmlBufShrink__internal_alias"))); +#else +#ifndef xmlBufShrink +extern __typeof (xmlBufShrink) xmlBufShrink__internal_alias __attribute((visibility("hidden"))); +#define xmlBufShrink xmlBufShrink__internal_alias +#endif +#endif + +#ifdef bottom_buf +#undef xmlBufUse +extern __typeof (xmlBufUse) xmlBufUse __attribute((alias("xmlBufUse__internal_alias"))); +#else +#ifndef xmlBufUse +extern __typeof (xmlBufUse) xmlBufUse__internal_alias __attribute((visibility("hidden"))); +#define xmlBufUse xmlBufUse__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferAdd +extern __typeof (xmlBufferAdd) xmlBufferAdd __attribute((alias("xmlBufferAdd__internal_alias"))); +#else +#ifndef xmlBufferAdd +extern __typeof (xmlBufferAdd) xmlBufferAdd__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferAdd xmlBufferAdd__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferAddHead +extern __typeof (xmlBufferAddHead) xmlBufferAddHead __attribute((alias("xmlBufferAddHead__internal_alias"))); +#else +#ifndef xmlBufferAddHead +extern __typeof (xmlBufferAddHead) xmlBufferAddHead__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferAddHead xmlBufferAddHead__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferCCat +extern __typeof (xmlBufferCCat) xmlBufferCCat __attribute((alias("xmlBufferCCat__internal_alias"))); +#else +#ifndef xmlBufferCCat +extern __typeof (xmlBufferCCat) xmlBufferCCat__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferCCat xmlBufferCCat__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferCat +extern __typeof (xmlBufferCat) xmlBufferCat __attribute((alias("xmlBufferCat__internal_alias"))); +#else +#ifndef xmlBufferCat +extern __typeof (xmlBufferCat) xmlBufferCat__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferCat xmlBufferCat__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferContent +extern __typeof (xmlBufferContent) xmlBufferContent __attribute((alias("xmlBufferContent__internal_alias"))); +#else +#ifndef xmlBufferContent +extern __typeof (xmlBufferContent) xmlBufferContent__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferContent xmlBufferContent__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferCreate +extern __typeof (xmlBufferCreate) xmlBufferCreate __attribute((alias("xmlBufferCreate__internal_alias"))); +#else +#ifndef xmlBufferCreate +extern __typeof (xmlBufferCreate) xmlBufferCreate__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferCreate xmlBufferCreate__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferCreateSize +extern __typeof (xmlBufferCreateSize) xmlBufferCreateSize __attribute((alias("xmlBufferCreateSize__internal_alias"))); +#else +#ifndef xmlBufferCreateSize +extern __typeof (xmlBufferCreateSize) xmlBufferCreateSize__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferCreateSize xmlBufferCreateSize__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferCreateStatic +extern __typeof (xmlBufferCreateStatic) xmlBufferCreateStatic __attribute((alias("xmlBufferCreateStatic__internal_alias"))); +#else +#ifndef xmlBufferCreateStatic +extern __typeof (xmlBufferCreateStatic) xmlBufferCreateStatic__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferCreateStatic xmlBufferCreateStatic__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferDetach +extern __typeof (xmlBufferDetach) xmlBufferDetach __attribute((alias("xmlBufferDetach__internal_alias"))); +#else +#ifndef xmlBufferDetach +extern __typeof (xmlBufferDetach) xmlBufferDetach__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferDetach xmlBufferDetach__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferDump +extern __typeof (xmlBufferDump) xmlBufferDump __attribute((alias("xmlBufferDump__internal_alias"))); +#else +#ifndef xmlBufferDump +extern __typeof (xmlBufferDump) xmlBufferDump__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferDump xmlBufferDump__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferEmpty +extern __typeof (xmlBufferEmpty) xmlBufferEmpty __attribute((alias("xmlBufferEmpty__internal_alias"))); +#else +#ifndef xmlBufferEmpty +extern __typeof (xmlBufferEmpty) xmlBufferEmpty__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferEmpty xmlBufferEmpty__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferFree +extern __typeof (xmlBufferFree) xmlBufferFree __attribute((alias("xmlBufferFree__internal_alias"))); +#else +#ifndef xmlBufferFree +extern __typeof (xmlBufferFree) xmlBufferFree__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferFree xmlBufferFree__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferGrow +extern __typeof (xmlBufferGrow) xmlBufferGrow __attribute((alias("xmlBufferGrow__internal_alias"))); +#else +#ifndef xmlBufferGrow +extern __typeof (xmlBufferGrow) xmlBufferGrow__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferGrow xmlBufferGrow__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferLength +extern __typeof (xmlBufferLength) xmlBufferLength __attribute((alias("xmlBufferLength__internal_alias"))); +#else +#ifndef xmlBufferLength +extern __typeof (xmlBufferLength) xmlBufferLength__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferLength xmlBufferLength__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferResize +extern __typeof (xmlBufferResize) xmlBufferResize __attribute((alias("xmlBufferResize__internal_alias"))); +#else +#ifndef xmlBufferResize +extern __typeof (xmlBufferResize) xmlBufferResize__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferResize xmlBufferResize__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferSetAllocationScheme +extern __typeof (xmlBufferSetAllocationScheme) xmlBufferSetAllocationScheme __attribute((alias("xmlBufferSetAllocationScheme__internal_alias"))); +#else +#ifndef xmlBufferSetAllocationScheme +extern __typeof (xmlBufferSetAllocationScheme) xmlBufferSetAllocationScheme__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferSetAllocationScheme xmlBufferSetAllocationScheme__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferShrink +extern __typeof (xmlBufferShrink) xmlBufferShrink __attribute((alias("xmlBufferShrink__internal_alias"))); +#else +#ifndef xmlBufferShrink +extern __typeof (xmlBufferShrink) xmlBufferShrink__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferShrink xmlBufferShrink__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferWriteCHAR +extern __typeof (xmlBufferWriteCHAR) xmlBufferWriteCHAR __attribute((alias("xmlBufferWriteCHAR__internal_alias"))); +#else +#ifndef xmlBufferWriteCHAR +extern __typeof (xmlBufferWriteCHAR) xmlBufferWriteCHAR__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferWriteCHAR xmlBufferWriteCHAR__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferWriteChar +extern __typeof (xmlBufferWriteChar) xmlBufferWriteChar __attribute((alias("xmlBufferWriteChar__internal_alias"))); +#else +#ifndef xmlBufferWriteChar +extern __typeof (xmlBufferWriteChar) xmlBufferWriteChar__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferWriteChar xmlBufferWriteChar__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBufferWriteQuotedString +extern __typeof (xmlBufferWriteQuotedString) xmlBufferWriteQuotedString __attribute((alias("xmlBufferWriteQuotedString__internal_alias"))); +#else +#ifndef xmlBufferWriteQuotedString +extern __typeof (xmlBufferWriteQuotedString) xmlBufferWriteQuotedString__internal_alias __attribute((visibility("hidden"))); +#define xmlBufferWriteQuotedString xmlBufferWriteQuotedString__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlBuildQName +extern __typeof (xmlBuildQName) xmlBuildQName __attribute((alias("xmlBuildQName__internal_alias"))); +#else +#ifndef xmlBuildQName +extern __typeof (xmlBuildQName) xmlBuildQName__internal_alias __attribute((visibility("hidden"))); +#define xmlBuildQName xmlBuildQName__internal_alias +#endif +#endif + +#ifdef bottom_uri +#undef xmlBuildRelativeURI +extern __typeof (xmlBuildRelativeURI) xmlBuildRelativeURI __attribute((alias("xmlBuildRelativeURI__internal_alias"))); +#else +#ifndef xmlBuildRelativeURI +extern __typeof (xmlBuildRelativeURI) xmlBuildRelativeURI__internal_alias __attribute((visibility("hidden"))); +#define xmlBuildRelativeURI xmlBuildRelativeURI__internal_alias +#endif +#endif + +#ifdef bottom_uri +#undef xmlBuildURI +extern __typeof (xmlBuildURI) xmlBuildURI __attribute((alias("xmlBuildURI__internal_alias"))); +#else +#ifndef xmlBuildURI +extern __typeof (xmlBuildURI) xmlBuildURI__internal_alias __attribute((visibility("hidden"))); +#define xmlBuildURI xmlBuildURI__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlByteConsumed +extern __typeof (xmlByteConsumed) xmlByteConsumed __attribute((alias("xmlByteConsumed__internal_alias"))); +#else +#ifndef xmlByteConsumed +extern __typeof (xmlByteConsumed) xmlByteConsumed__internal_alias __attribute((visibility("hidden"))); +#define xmlByteConsumed xmlByteConsumed__internal_alias +#endif +#endif + +#if defined(LIBXML_C14N_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_c14n +#undef xmlC14NDocDumpMemory +extern __typeof (xmlC14NDocDumpMemory) xmlC14NDocDumpMemory __attribute((alias("xmlC14NDocDumpMemory__internal_alias"))); +#else +#ifndef xmlC14NDocDumpMemory +extern __typeof (xmlC14NDocDumpMemory) xmlC14NDocDumpMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlC14NDocDumpMemory xmlC14NDocDumpMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_C14N_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_c14n +#undef xmlC14NDocSave +extern __typeof (xmlC14NDocSave) xmlC14NDocSave __attribute((alias("xmlC14NDocSave__internal_alias"))); +#else +#ifndef xmlC14NDocSave +extern __typeof (xmlC14NDocSave) xmlC14NDocSave__internal_alias __attribute((visibility("hidden"))); +#define xmlC14NDocSave xmlC14NDocSave__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_C14N_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_c14n +#undef xmlC14NDocSaveTo +extern __typeof (xmlC14NDocSaveTo) xmlC14NDocSaveTo __attribute((alias("xmlC14NDocSaveTo__internal_alias"))); +#else +#ifndef xmlC14NDocSaveTo +extern __typeof (xmlC14NDocSaveTo) xmlC14NDocSaveTo__internal_alias __attribute((visibility("hidden"))); +#define xmlC14NDocSaveTo xmlC14NDocSaveTo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_C14N_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_c14n +#undef xmlC14NExecute +extern __typeof (xmlC14NExecute) xmlC14NExecute __attribute((alias("xmlC14NExecute__internal_alias"))); +#else +#ifndef xmlC14NExecute +extern __typeof (xmlC14NExecute) xmlC14NExecute__internal_alias __attribute((visibility("hidden"))); +#define xmlC14NExecute xmlC14NExecute__internal_alias +#endif +#endif +#endif + +#ifdef bottom_uri +#undef xmlCanonicPath +extern __typeof (xmlCanonicPath) xmlCanonicPath __attribute((alias("xmlCanonicPath__internal_alias"))); +#else +#ifndef xmlCanonicPath +extern __typeof (xmlCanonicPath) xmlCanonicPath__internal_alias __attribute((visibility("hidden"))); +#define xmlCanonicPath xmlCanonicPath__internal_alias +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogAdd +extern __typeof (xmlCatalogAdd) xmlCatalogAdd __attribute((alias("xmlCatalogAdd__internal_alias"))); +#else +#ifndef xmlCatalogAdd +extern __typeof (xmlCatalogAdd) xmlCatalogAdd__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogAdd xmlCatalogAdd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogAddLocal +extern __typeof (xmlCatalogAddLocal) xmlCatalogAddLocal __attribute((alias("xmlCatalogAddLocal__internal_alias"))); +#else +#ifndef xmlCatalogAddLocal +extern __typeof (xmlCatalogAddLocal) xmlCatalogAddLocal__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogAddLocal xmlCatalogAddLocal__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogCleanup +extern __typeof (xmlCatalogCleanup) xmlCatalogCleanup __attribute((alias("xmlCatalogCleanup__internal_alias"))); +#else +#ifndef xmlCatalogCleanup +extern __typeof (xmlCatalogCleanup) xmlCatalogCleanup__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogCleanup xmlCatalogCleanup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogConvert +extern __typeof (xmlCatalogConvert) xmlCatalogConvert __attribute((alias("xmlCatalogConvert__internal_alias"))); +#else +#ifndef xmlCatalogConvert +extern __typeof (xmlCatalogConvert) xmlCatalogConvert__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogConvert xmlCatalogConvert__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogDump +extern __typeof (xmlCatalogDump) xmlCatalogDump __attribute((alias("xmlCatalogDump__internal_alias"))); +#else +#ifndef xmlCatalogDump +extern __typeof (xmlCatalogDump) xmlCatalogDump__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogDump xmlCatalogDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogFreeLocal +extern __typeof (xmlCatalogFreeLocal) xmlCatalogFreeLocal __attribute((alias("xmlCatalogFreeLocal__internal_alias"))); +#else +#ifndef xmlCatalogFreeLocal +extern __typeof (xmlCatalogFreeLocal) xmlCatalogFreeLocal__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogFreeLocal xmlCatalogFreeLocal__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogGetDefaults +extern __typeof (xmlCatalogGetDefaults) xmlCatalogGetDefaults __attribute((alias("xmlCatalogGetDefaults__internal_alias"))); +#else +#ifndef xmlCatalogGetDefaults +extern __typeof (xmlCatalogGetDefaults) xmlCatalogGetDefaults__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogGetDefaults xmlCatalogGetDefaults__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogGetPublic +extern __typeof (xmlCatalogGetPublic) xmlCatalogGetPublic __attribute((alias("xmlCatalogGetPublic__internal_alias"))); +#else +#ifndef xmlCatalogGetPublic +extern __typeof (xmlCatalogGetPublic) xmlCatalogGetPublic__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogGetPublic xmlCatalogGetPublic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogGetSystem +extern __typeof (xmlCatalogGetSystem) xmlCatalogGetSystem __attribute((alias("xmlCatalogGetSystem__internal_alias"))); +#else +#ifndef xmlCatalogGetSystem +extern __typeof (xmlCatalogGetSystem) xmlCatalogGetSystem__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogGetSystem xmlCatalogGetSystem__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogIsEmpty +extern __typeof (xmlCatalogIsEmpty) xmlCatalogIsEmpty __attribute((alias("xmlCatalogIsEmpty__internal_alias"))); +#else +#ifndef xmlCatalogIsEmpty +extern __typeof (xmlCatalogIsEmpty) xmlCatalogIsEmpty__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogIsEmpty xmlCatalogIsEmpty__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogLocalResolve +extern __typeof (xmlCatalogLocalResolve) xmlCatalogLocalResolve __attribute((alias("xmlCatalogLocalResolve__internal_alias"))); +#else +#ifndef xmlCatalogLocalResolve +extern __typeof (xmlCatalogLocalResolve) xmlCatalogLocalResolve__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogLocalResolve xmlCatalogLocalResolve__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogLocalResolveURI +extern __typeof (xmlCatalogLocalResolveURI) xmlCatalogLocalResolveURI __attribute((alias("xmlCatalogLocalResolveURI__internal_alias"))); +#else +#ifndef xmlCatalogLocalResolveURI +extern __typeof (xmlCatalogLocalResolveURI) xmlCatalogLocalResolveURI__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogLocalResolveURI xmlCatalogLocalResolveURI__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogRemove +extern __typeof (xmlCatalogRemove) xmlCatalogRemove __attribute((alias("xmlCatalogRemove__internal_alias"))); +#else +#ifndef xmlCatalogRemove +extern __typeof (xmlCatalogRemove) xmlCatalogRemove__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogRemove xmlCatalogRemove__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogResolve +extern __typeof (xmlCatalogResolve) xmlCatalogResolve __attribute((alias("xmlCatalogResolve__internal_alias"))); +#else +#ifndef xmlCatalogResolve +extern __typeof (xmlCatalogResolve) xmlCatalogResolve__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogResolve xmlCatalogResolve__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogResolvePublic +extern __typeof (xmlCatalogResolvePublic) xmlCatalogResolvePublic __attribute((alias("xmlCatalogResolvePublic__internal_alias"))); +#else +#ifndef xmlCatalogResolvePublic +extern __typeof (xmlCatalogResolvePublic) xmlCatalogResolvePublic__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogResolvePublic xmlCatalogResolvePublic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogResolveSystem +extern __typeof (xmlCatalogResolveSystem) xmlCatalogResolveSystem __attribute((alias("xmlCatalogResolveSystem__internal_alias"))); +#else +#ifndef xmlCatalogResolveSystem +extern __typeof (xmlCatalogResolveSystem) xmlCatalogResolveSystem__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogResolveSystem xmlCatalogResolveSystem__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogResolveURI +extern __typeof (xmlCatalogResolveURI) xmlCatalogResolveURI __attribute((alias("xmlCatalogResolveURI__internal_alias"))); +#else +#ifndef xmlCatalogResolveURI +extern __typeof (xmlCatalogResolveURI) xmlCatalogResolveURI__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogResolveURI xmlCatalogResolveURI__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogSetDebug +extern __typeof (xmlCatalogSetDebug) xmlCatalogSetDebug __attribute((alias("xmlCatalogSetDebug__internal_alias"))); +#else +#ifndef xmlCatalogSetDebug +extern __typeof (xmlCatalogSetDebug) xmlCatalogSetDebug__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogSetDebug xmlCatalogSetDebug__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogSetDefaultPrefer +extern __typeof (xmlCatalogSetDefaultPrefer) xmlCatalogSetDefaultPrefer __attribute((alias("xmlCatalogSetDefaultPrefer__internal_alias"))); +#else +#ifndef xmlCatalogSetDefaultPrefer +extern __typeof (xmlCatalogSetDefaultPrefer) xmlCatalogSetDefaultPrefer__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogSetDefaultPrefer xmlCatalogSetDefaultPrefer__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlCatalogSetDefaults +extern __typeof (xmlCatalogSetDefaults) xmlCatalogSetDefaults __attribute((alias("xmlCatalogSetDefaults__internal_alias"))); +#else +#ifndef xmlCatalogSetDefaults +extern __typeof (xmlCatalogSetDefaults) xmlCatalogSetDefaults__internal_alias __attribute((visibility("hidden"))); +#define xmlCatalogSetDefaults xmlCatalogSetDefaults__internal_alias +#endif +#endif +#endif + +#ifdef bottom_encoding +#undef xmlCharEncCloseFunc +extern __typeof (xmlCharEncCloseFunc) xmlCharEncCloseFunc __attribute((alias("xmlCharEncCloseFunc__internal_alias"))); +#else +#ifndef xmlCharEncCloseFunc +extern __typeof (xmlCharEncCloseFunc) xmlCharEncCloseFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlCharEncCloseFunc xmlCharEncCloseFunc__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlCharEncFirstLine +extern __typeof (xmlCharEncFirstLine) xmlCharEncFirstLine __attribute((alias("xmlCharEncFirstLine__internal_alias"))); +#else +#ifndef xmlCharEncFirstLine +extern __typeof (xmlCharEncFirstLine) xmlCharEncFirstLine__internal_alias __attribute((visibility("hidden"))); +#define xmlCharEncFirstLine xmlCharEncFirstLine__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlCharEncInFunc +extern __typeof (xmlCharEncInFunc) xmlCharEncInFunc __attribute((alias("xmlCharEncInFunc__internal_alias"))); +#else +#ifndef xmlCharEncInFunc +extern __typeof (xmlCharEncInFunc) xmlCharEncInFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlCharEncInFunc xmlCharEncInFunc__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlCharEncOutFunc +extern __typeof (xmlCharEncOutFunc) xmlCharEncOutFunc __attribute((alias("xmlCharEncOutFunc__internal_alias"))); +#else +#ifndef xmlCharEncOutFunc +extern __typeof (xmlCharEncOutFunc) xmlCharEncOutFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlCharEncOutFunc xmlCharEncOutFunc__internal_alias +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlCharInRange +extern __typeof (xmlCharInRange) xmlCharInRange __attribute((alias("xmlCharInRange__internal_alias"))); +#else +#ifndef xmlCharInRange +extern __typeof (xmlCharInRange) xmlCharInRange__internal_alias __attribute((visibility("hidden"))); +#define xmlCharInRange xmlCharInRange__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlCharStrdup +extern __typeof (xmlCharStrdup) xmlCharStrdup __attribute((alias("xmlCharStrdup__internal_alias"))); +#else +#ifndef xmlCharStrdup +extern __typeof (xmlCharStrdup) xmlCharStrdup__internal_alias __attribute((visibility("hidden"))); +#define xmlCharStrdup xmlCharStrdup__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlCharStrndup +extern __typeof (xmlCharStrndup) xmlCharStrndup __attribute((alias("xmlCharStrndup__internal_alias"))); +#else +#ifndef xmlCharStrndup +extern __typeof (xmlCharStrndup) xmlCharStrndup__internal_alias __attribute((visibility("hidden"))); +#define xmlCharStrndup xmlCharStrndup__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlCheckFilename +extern __typeof (xmlCheckFilename) xmlCheckFilename __attribute((alias("xmlCheckFilename__internal_alias"))); +#else +#ifndef xmlCheckFilename +extern __typeof (xmlCheckFilename) xmlCheckFilename__internal_alias __attribute((visibility("hidden"))); +#define xmlCheckFilename xmlCheckFilename__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlCheckHTTPInput +extern __typeof (xmlCheckHTTPInput) xmlCheckHTTPInput __attribute((alias("xmlCheckHTTPInput__internal_alias"))); +#else +#ifndef xmlCheckHTTPInput +extern __typeof (xmlCheckHTTPInput) xmlCheckHTTPInput__internal_alias __attribute((visibility("hidden"))); +#define xmlCheckHTTPInput xmlCheckHTTPInput__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCheckLanguageID +extern __typeof (xmlCheckLanguageID) xmlCheckLanguageID __attribute((alias("xmlCheckLanguageID__internal_alias"))); +#else +#ifndef xmlCheckLanguageID +extern __typeof (xmlCheckLanguageID) xmlCheckLanguageID__internal_alias __attribute((visibility("hidden"))); +#define xmlCheckLanguageID xmlCheckLanguageID__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlCheckUTF8 +extern __typeof (xmlCheckUTF8) xmlCheckUTF8 __attribute((alias("xmlCheckUTF8__internal_alias"))); +#else +#ifndef xmlCheckUTF8 +extern __typeof (xmlCheckUTF8) xmlCheckUTF8__internal_alias __attribute((visibility("hidden"))); +#define xmlCheckUTF8 xmlCheckUTF8__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlCheckVersion +extern __typeof (xmlCheckVersion) xmlCheckVersion __attribute((alias("xmlCheckVersion__internal_alias"))); +#else +#ifndef xmlCheckVersion +extern __typeof (xmlCheckVersion) xmlCheckVersion__internal_alias __attribute((visibility("hidden"))); +#define xmlCheckVersion xmlCheckVersion__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlChildElementCount +extern __typeof (xmlChildElementCount) xmlChildElementCount __attribute((alias("xmlChildElementCount__internal_alias"))); +#else +#ifndef xmlChildElementCount +extern __typeof (xmlChildElementCount) xmlChildElementCount__internal_alias __attribute((visibility("hidden"))); +#define xmlChildElementCount xmlChildElementCount__internal_alias +#endif +#endif +#endif + +#ifdef bottom_encoding +#undef xmlCleanupCharEncodingHandlers +extern __typeof (xmlCleanupCharEncodingHandlers) xmlCleanupCharEncodingHandlers __attribute((alias("xmlCleanupCharEncodingHandlers__internal_alias"))); +#else +#ifndef xmlCleanupCharEncodingHandlers +extern __typeof (xmlCleanupCharEncodingHandlers) xmlCleanupCharEncodingHandlers__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupCharEncodingHandlers xmlCleanupCharEncodingHandlers__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlCleanupEncodingAliases +extern __typeof (xmlCleanupEncodingAliases) xmlCleanupEncodingAliases __attribute((alias("xmlCleanupEncodingAliases__internal_alias"))); +#else +#ifndef xmlCleanupEncodingAliases +extern __typeof (xmlCleanupEncodingAliases) xmlCleanupEncodingAliases__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupEncodingAliases xmlCleanupEncodingAliases__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlCleanupGlobals +extern __typeof (xmlCleanupGlobals) xmlCleanupGlobals __attribute((alias("xmlCleanupGlobals__internal_alias"))); +#else +#ifndef xmlCleanupGlobals +extern __typeof (xmlCleanupGlobals) xmlCleanupGlobals__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupGlobals xmlCleanupGlobals__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlCleanupInputCallbacks +extern __typeof (xmlCleanupInputCallbacks) xmlCleanupInputCallbacks __attribute((alias("xmlCleanupInputCallbacks__internal_alias"))); +#else +#ifndef xmlCleanupInputCallbacks +extern __typeof (xmlCleanupInputCallbacks) xmlCleanupInputCallbacks__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupInputCallbacks xmlCleanupInputCallbacks__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlCleanupMemory +extern __typeof (xmlCleanupMemory) xmlCleanupMemory __attribute((alias("xmlCleanupMemory__internal_alias"))); +#else +#ifndef xmlCleanupMemory +extern __typeof (xmlCleanupMemory) xmlCleanupMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupMemory xmlCleanupMemory__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlCleanupOutputCallbacks +extern __typeof (xmlCleanupOutputCallbacks) xmlCleanupOutputCallbacks __attribute((alias("xmlCleanupOutputCallbacks__internal_alias"))); +#else +#ifndef xmlCleanupOutputCallbacks +extern __typeof (xmlCleanupOutputCallbacks) xmlCleanupOutputCallbacks__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupOutputCallbacks xmlCleanupOutputCallbacks__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlCleanupParser +extern __typeof (xmlCleanupParser) xmlCleanupParser __attribute((alias("xmlCleanupParser__internal_alias"))); +#else +#ifndef xmlCleanupParser +extern __typeof (xmlCleanupParser) xmlCleanupParser__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupParser xmlCleanupParser__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlCleanupPredefinedEntities +extern __typeof (xmlCleanupPredefinedEntities) xmlCleanupPredefinedEntities __attribute((alias("xmlCleanupPredefinedEntities__internal_alias"))); +#else +#ifndef xmlCleanupPredefinedEntities +extern __typeof (xmlCleanupPredefinedEntities) xmlCleanupPredefinedEntities__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupPredefinedEntities xmlCleanupPredefinedEntities__internal_alias +#endif +#endif +#endif + +#ifdef bottom_threads +#undef xmlCleanupThreads +extern __typeof (xmlCleanupThreads) xmlCleanupThreads __attribute((alias("xmlCleanupThreads__internal_alias"))); +#else +#ifndef xmlCleanupThreads +extern __typeof (xmlCleanupThreads) xmlCleanupThreads__internal_alias __attribute((visibility("hidden"))); +#define xmlCleanupThreads xmlCleanupThreads__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlClearNodeInfoSeq +extern __typeof (xmlClearNodeInfoSeq) xmlClearNodeInfoSeq __attribute((alias("xmlClearNodeInfoSeq__internal_alias"))); +#else +#ifndef xmlClearNodeInfoSeq +extern __typeof (xmlClearNodeInfoSeq) xmlClearNodeInfoSeq__internal_alias __attribute((visibility("hidden"))); +#define xmlClearNodeInfoSeq xmlClearNodeInfoSeq__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlClearParserCtxt +extern __typeof (xmlClearParserCtxt) xmlClearParserCtxt __attribute((alias("xmlClearParserCtxt__internal_alias"))); +#else +#ifndef xmlClearParserCtxt +extern __typeof (xmlClearParserCtxt) xmlClearParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlClearParserCtxt xmlClearParserCtxt__internal_alias +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlConvertSGMLCatalog +extern __typeof (xmlConvertSGMLCatalog) xmlConvertSGMLCatalog __attribute((alias("xmlConvertSGMLCatalog__internal_alias"))); +#else +#ifndef xmlConvertSGMLCatalog +extern __typeof (xmlConvertSGMLCatalog) xmlConvertSGMLCatalog__internal_alias __attribute((visibility("hidden"))); +#define xmlConvertSGMLCatalog xmlConvertSGMLCatalog__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_valid +#undef xmlCopyAttributeTable +extern __typeof (xmlCopyAttributeTable) xmlCopyAttributeTable __attribute((alias("xmlCopyAttributeTable__internal_alias"))); +#else +#ifndef xmlCopyAttributeTable +extern __typeof (xmlCopyAttributeTable) xmlCopyAttributeTable__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyAttributeTable xmlCopyAttributeTable__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlCopyChar +extern __typeof (xmlCopyChar) xmlCopyChar __attribute((alias("xmlCopyChar__internal_alias"))); +#else +#ifndef xmlCopyChar +extern __typeof (xmlCopyChar) xmlCopyChar__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyChar xmlCopyChar__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlCopyCharMultiByte +extern __typeof (xmlCopyCharMultiByte) xmlCopyCharMultiByte __attribute((alias("xmlCopyCharMultiByte__internal_alias"))); +#else +#ifndef xmlCopyCharMultiByte +extern __typeof (xmlCopyCharMultiByte) xmlCopyCharMultiByte__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyCharMultiByte xmlCopyCharMultiByte__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlCopyDoc +extern __typeof (xmlCopyDoc) xmlCopyDoc __attribute((alias("xmlCopyDoc__internal_alias"))); +#else +#ifndef xmlCopyDoc +extern __typeof (xmlCopyDoc) xmlCopyDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyDoc xmlCopyDoc__internal_alias +#endif +#endif +#endif + +#ifdef bottom_valid +#undef xmlCopyDocElementContent +extern __typeof (xmlCopyDocElementContent) xmlCopyDocElementContent __attribute((alias("xmlCopyDocElementContent__internal_alias"))); +#else +#ifndef xmlCopyDocElementContent +extern __typeof (xmlCopyDocElementContent) xmlCopyDocElementContent__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyDocElementContent xmlCopyDocElementContent__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlCopyDtd +extern __typeof (xmlCopyDtd) xmlCopyDtd __attribute((alias("xmlCopyDtd__internal_alias"))); +#else +#ifndef xmlCopyDtd +extern __typeof (xmlCopyDtd) xmlCopyDtd__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyDtd xmlCopyDtd__internal_alias +#endif +#endif +#endif + +#ifdef bottom_valid +#undef xmlCopyElementContent +extern __typeof (xmlCopyElementContent) xmlCopyElementContent __attribute((alias("xmlCopyElementContent__internal_alias"))); +#else +#ifndef xmlCopyElementContent +extern __typeof (xmlCopyElementContent) xmlCopyElementContent__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyElementContent xmlCopyElementContent__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_valid +#undef xmlCopyElementTable +extern __typeof (xmlCopyElementTable) xmlCopyElementTable __attribute((alias("xmlCopyElementTable__internal_alias"))); +#else +#ifndef xmlCopyElementTable +extern __typeof (xmlCopyElementTable) xmlCopyElementTable__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyElementTable xmlCopyElementTable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_entities +#undef xmlCopyEntitiesTable +extern __typeof (xmlCopyEntitiesTable) xmlCopyEntitiesTable __attribute((alias("xmlCopyEntitiesTable__internal_alias"))); +#else +#ifndef xmlCopyEntitiesTable +extern __typeof (xmlCopyEntitiesTable) xmlCopyEntitiesTable__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyEntitiesTable xmlCopyEntitiesTable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_valid +#undef xmlCopyEnumeration +extern __typeof (xmlCopyEnumeration) xmlCopyEnumeration __attribute((alias("xmlCopyEnumeration__internal_alias"))); +#else +#ifndef xmlCopyEnumeration +extern __typeof (xmlCopyEnumeration) xmlCopyEnumeration__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyEnumeration xmlCopyEnumeration__internal_alias +#endif +#endif +#endif + +#ifdef bottom_error +#undef xmlCopyError +extern __typeof (xmlCopyError) xmlCopyError __attribute((alias("xmlCopyError__internal_alias"))); +#else +#ifndef xmlCopyError +extern __typeof (xmlCopyError) xmlCopyError__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyError xmlCopyError__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlCopyNamespace +extern __typeof (xmlCopyNamespace) xmlCopyNamespace __attribute((alias("xmlCopyNamespace__internal_alias"))); +#else +#ifndef xmlCopyNamespace +extern __typeof (xmlCopyNamespace) xmlCopyNamespace__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyNamespace xmlCopyNamespace__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlCopyNamespaceList +extern __typeof (xmlCopyNamespaceList) xmlCopyNamespaceList __attribute((alias("xmlCopyNamespaceList__internal_alias"))); +#else +#ifndef xmlCopyNamespaceList +extern __typeof (xmlCopyNamespaceList) xmlCopyNamespaceList__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyNamespaceList xmlCopyNamespaceList__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlCopyNode +extern __typeof (xmlCopyNode) xmlCopyNode __attribute((alias("xmlCopyNode__internal_alias"))); +#else +#ifndef xmlCopyNode +extern __typeof (xmlCopyNode) xmlCopyNode__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyNode xmlCopyNode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlCopyNodeList +extern __typeof (xmlCopyNodeList) xmlCopyNodeList __attribute((alias("xmlCopyNodeList__internal_alias"))); +#else +#ifndef xmlCopyNodeList +extern __typeof (xmlCopyNodeList) xmlCopyNodeList__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyNodeList xmlCopyNodeList__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_valid +#undef xmlCopyNotationTable +extern __typeof (xmlCopyNotationTable) xmlCopyNotationTable __attribute((alias("xmlCopyNotationTable__internal_alias"))); +#else +#ifndef xmlCopyNotationTable +extern __typeof (xmlCopyNotationTable) xmlCopyNotationTable__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyNotationTable xmlCopyNotationTable__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlCopyProp +extern __typeof (xmlCopyProp) xmlCopyProp __attribute((alias("xmlCopyProp__internal_alias"))); +#else +#ifndef xmlCopyProp +extern __typeof (xmlCopyProp) xmlCopyProp__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyProp xmlCopyProp__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlCopyPropList +extern __typeof (xmlCopyPropList) xmlCopyPropList __attribute((alias("xmlCopyPropList__internal_alias"))); +#else +#ifndef xmlCopyPropList +extern __typeof (xmlCopyPropList) xmlCopyPropList__internal_alias __attribute((visibility("hidden"))); +#define xmlCopyPropList xmlCopyPropList__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCreateDocParserCtxt +extern __typeof (xmlCreateDocParserCtxt) xmlCreateDocParserCtxt __attribute((alias("xmlCreateDocParserCtxt__internal_alias"))); +#else +#ifndef xmlCreateDocParserCtxt +extern __typeof (xmlCreateDocParserCtxt) xmlCreateDocParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateDocParserCtxt xmlCreateDocParserCtxt__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlCreateEntitiesTable +extern __typeof (xmlCreateEntitiesTable) xmlCreateEntitiesTable __attribute((alias("xmlCreateEntitiesTable__internal_alias"))); +#else +#ifndef xmlCreateEntitiesTable +extern __typeof (xmlCreateEntitiesTable) xmlCreateEntitiesTable__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateEntitiesTable xmlCreateEntitiesTable__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCreateEntityParserCtxt +extern __typeof (xmlCreateEntityParserCtxt) xmlCreateEntityParserCtxt __attribute((alias("xmlCreateEntityParserCtxt__internal_alias"))); +#else +#ifndef xmlCreateEntityParserCtxt +extern __typeof (xmlCreateEntityParserCtxt) xmlCreateEntityParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateEntityParserCtxt xmlCreateEntityParserCtxt__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlCreateEnumeration +extern __typeof (xmlCreateEnumeration) xmlCreateEnumeration __attribute((alias("xmlCreateEnumeration__internal_alias"))); +#else +#ifndef xmlCreateEnumeration +extern __typeof (xmlCreateEnumeration) xmlCreateEnumeration__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateEnumeration xmlCreateEnumeration__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCreateFileParserCtxt +extern __typeof (xmlCreateFileParserCtxt) xmlCreateFileParserCtxt __attribute((alias("xmlCreateFileParserCtxt__internal_alias"))); +#else +#ifndef xmlCreateFileParserCtxt +extern __typeof (xmlCreateFileParserCtxt) xmlCreateFileParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateFileParserCtxt xmlCreateFileParserCtxt__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCreateIOParserCtxt +extern __typeof (xmlCreateIOParserCtxt) xmlCreateIOParserCtxt __attribute((alias("xmlCreateIOParserCtxt__internal_alias"))); +#else +#ifndef xmlCreateIOParserCtxt +extern __typeof (xmlCreateIOParserCtxt) xmlCreateIOParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateIOParserCtxt xmlCreateIOParserCtxt__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlCreateIntSubset +extern __typeof (xmlCreateIntSubset) xmlCreateIntSubset __attribute((alias("xmlCreateIntSubset__internal_alias"))); +#else +#ifndef xmlCreateIntSubset +extern __typeof (xmlCreateIntSubset) xmlCreateIntSubset__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateIntSubset xmlCreateIntSubset__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCreateMemoryParserCtxt +extern __typeof (xmlCreateMemoryParserCtxt) xmlCreateMemoryParserCtxt __attribute((alias("xmlCreateMemoryParserCtxt__internal_alias"))); +#else +#ifndef xmlCreateMemoryParserCtxt +extern __typeof (xmlCreateMemoryParserCtxt) xmlCreateMemoryParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateMemoryParserCtxt xmlCreateMemoryParserCtxt__internal_alias +#endif +#endif + +#if defined(LIBXML_PUSH_ENABLED) +#ifdef bottom_parser +#undef xmlCreatePushParserCtxt +extern __typeof (xmlCreatePushParserCtxt) xmlCreatePushParserCtxt __attribute((alias("xmlCreatePushParserCtxt__internal_alias"))); +#else +#ifndef xmlCreatePushParserCtxt +extern __typeof (xmlCreatePushParserCtxt) xmlCreatePushParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlCreatePushParserCtxt xmlCreatePushParserCtxt__internal_alias +#endif +#endif +#endif + +#ifdef bottom_uri +#undef xmlCreateURI +extern __typeof (xmlCreateURI) xmlCreateURI __attribute((alias("xmlCreateURI__internal_alias"))); +#else +#ifndef xmlCreateURI +extern __typeof (xmlCreateURI) xmlCreateURI__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateURI xmlCreateURI__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCreateURLParserCtxt +extern __typeof (xmlCreateURLParserCtxt) xmlCreateURLParserCtxt __attribute((alias("xmlCreateURLParserCtxt__internal_alias"))); +#else +#ifndef xmlCreateURLParserCtxt +extern __typeof (xmlCreateURLParserCtxt) xmlCreateURLParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlCreateURLParserCtxt xmlCreateURLParserCtxt__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlCtxtGetLastError +extern __typeof (xmlCtxtGetLastError) xmlCtxtGetLastError __attribute((alias("xmlCtxtGetLastError__internal_alias"))); +#else +#ifndef xmlCtxtGetLastError +extern __typeof (xmlCtxtGetLastError) xmlCtxtGetLastError__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtGetLastError xmlCtxtGetLastError__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCtxtReadDoc +extern __typeof (xmlCtxtReadDoc) xmlCtxtReadDoc __attribute((alias("xmlCtxtReadDoc__internal_alias"))); +#else +#ifndef xmlCtxtReadDoc +extern __typeof (xmlCtxtReadDoc) xmlCtxtReadDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtReadDoc xmlCtxtReadDoc__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCtxtReadFd +extern __typeof (xmlCtxtReadFd) xmlCtxtReadFd __attribute((alias("xmlCtxtReadFd__internal_alias"))); +#else +#ifndef xmlCtxtReadFd +extern __typeof (xmlCtxtReadFd) xmlCtxtReadFd__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtReadFd xmlCtxtReadFd__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCtxtReadFile +extern __typeof (xmlCtxtReadFile) xmlCtxtReadFile __attribute((alias("xmlCtxtReadFile__internal_alias"))); +#else +#ifndef xmlCtxtReadFile +extern __typeof (xmlCtxtReadFile) xmlCtxtReadFile__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtReadFile xmlCtxtReadFile__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCtxtReadIO +extern __typeof (xmlCtxtReadIO) xmlCtxtReadIO __attribute((alias("xmlCtxtReadIO__internal_alias"))); +#else +#ifndef xmlCtxtReadIO +extern __typeof (xmlCtxtReadIO) xmlCtxtReadIO__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtReadIO xmlCtxtReadIO__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCtxtReadMemory +extern __typeof (xmlCtxtReadMemory) xmlCtxtReadMemory __attribute((alias("xmlCtxtReadMemory__internal_alias"))); +#else +#ifndef xmlCtxtReadMemory +extern __typeof (xmlCtxtReadMemory) xmlCtxtReadMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtReadMemory xmlCtxtReadMemory__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCtxtReset +extern __typeof (xmlCtxtReset) xmlCtxtReset __attribute((alias("xmlCtxtReset__internal_alias"))); +#else +#ifndef xmlCtxtReset +extern __typeof (xmlCtxtReset) xmlCtxtReset__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtReset xmlCtxtReset__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlCtxtResetLastError +extern __typeof (xmlCtxtResetLastError) xmlCtxtResetLastError __attribute((alias("xmlCtxtResetLastError__internal_alias"))); +#else +#ifndef xmlCtxtResetLastError +extern __typeof (xmlCtxtResetLastError) xmlCtxtResetLastError__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtResetLastError xmlCtxtResetLastError__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCtxtResetPush +extern __typeof (xmlCtxtResetPush) xmlCtxtResetPush __attribute((alias("xmlCtxtResetPush__internal_alias"))); +#else +#ifndef xmlCtxtResetPush +extern __typeof (xmlCtxtResetPush) xmlCtxtResetPush__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtResetPush xmlCtxtResetPush__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlCtxtUseOptions +extern __typeof (xmlCtxtUseOptions) xmlCtxtUseOptions __attribute((alias("xmlCtxtUseOptions__internal_alias"))); +#else +#ifndef xmlCtxtUseOptions +extern __typeof (xmlCtxtUseOptions) xmlCtxtUseOptions__internal_alias __attribute((visibility("hidden"))); +#define xmlCtxtUseOptions xmlCtxtUseOptions__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlCurrentChar +extern __typeof (xmlCurrentChar) xmlCurrentChar __attribute((alias("xmlCurrentChar__internal_alias"))); +#else +#ifndef xmlCurrentChar +extern __typeof (xmlCurrentChar) xmlCurrentChar__internal_alias __attribute((visibility("hidden"))); +#define xmlCurrentChar xmlCurrentChar__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlDOMWrapAdoptNode +extern __typeof (xmlDOMWrapAdoptNode) xmlDOMWrapAdoptNode __attribute((alias("xmlDOMWrapAdoptNode__internal_alias"))); +#else +#ifndef xmlDOMWrapAdoptNode +extern __typeof (xmlDOMWrapAdoptNode) xmlDOMWrapAdoptNode__internal_alias __attribute((visibility("hidden"))); +#define xmlDOMWrapAdoptNode xmlDOMWrapAdoptNode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlDOMWrapCloneNode +extern __typeof (xmlDOMWrapCloneNode) xmlDOMWrapCloneNode __attribute((alias("xmlDOMWrapCloneNode__internal_alias"))); +#else +#ifndef xmlDOMWrapCloneNode +extern __typeof (xmlDOMWrapCloneNode) xmlDOMWrapCloneNode__internal_alias __attribute((visibility("hidden"))); +#define xmlDOMWrapCloneNode xmlDOMWrapCloneNode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlDOMWrapFreeCtxt +extern __typeof (xmlDOMWrapFreeCtxt) xmlDOMWrapFreeCtxt __attribute((alias("xmlDOMWrapFreeCtxt__internal_alias"))); +#else +#ifndef xmlDOMWrapFreeCtxt +extern __typeof (xmlDOMWrapFreeCtxt) xmlDOMWrapFreeCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlDOMWrapFreeCtxt xmlDOMWrapFreeCtxt__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlDOMWrapNewCtxt +extern __typeof (xmlDOMWrapNewCtxt) xmlDOMWrapNewCtxt __attribute((alias("xmlDOMWrapNewCtxt__internal_alias"))); +#else +#ifndef xmlDOMWrapNewCtxt +extern __typeof (xmlDOMWrapNewCtxt) xmlDOMWrapNewCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlDOMWrapNewCtxt xmlDOMWrapNewCtxt__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlDOMWrapReconcileNamespaces +extern __typeof (xmlDOMWrapReconcileNamespaces) xmlDOMWrapReconcileNamespaces __attribute((alias("xmlDOMWrapReconcileNamespaces__internal_alias"))); +#else +#ifndef xmlDOMWrapReconcileNamespaces +extern __typeof (xmlDOMWrapReconcileNamespaces) xmlDOMWrapReconcileNamespaces__internal_alias __attribute((visibility("hidden"))); +#define xmlDOMWrapReconcileNamespaces xmlDOMWrapReconcileNamespaces__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlDOMWrapRemoveNode +extern __typeof (xmlDOMWrapRemoveNode) xmlDOMWrapRemoveNode __attribute((alias("xmlDOMWrapRemoveNode__internal_alias"))); +#else +#ifndef xmlDOMWrapRemoveNode +extern __typeof (xmlDOMWrapRemoveNode) xmlDOMWrapRemoveNode__internal_alias __attribute((visibility("hidden"))); +#define xmlDOMWrapRemoveNode xmlDOMWrapRemoveNode__internal_alias +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugCheckDocument +extern __typeof (xmlDebugCheckDocument) xmlDebugCheckDocument __attribute((alias("xmlDebugCheckDocument__internal_alias"))); +#else +#ifndef xmlDebugCheckDocument +extern __typeof (xmlDebugCheckDocument) xmlDebugCheckDocument__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugCheckDocument xmlDebugCheckDocument__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpAttr +extern __typeof (xmlDebugDumpAttr) xmlDebugDumpAttr __attribute((alias("xmlDebugDumpAttr__internal_alias"))); +#else +#ifndef xmlDebugDumpAttr +extern __typeof (xmlDebugDumpAttr) xmlDebugDumpAttr__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpAttr xmlDebugDumpAttr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpAttrList +extern __typeof (xmlDebugDumpAttrList) xmlDebugDumpAttrList __attribute((alias("xmlDebugDumpAttrList__internal_alias"))); +#else +#ifndef xmlDebugDumpAttrList +extern __typeof (xmlDebugDumpAttrList) xmlDebugDumpAttrList__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpAttrList xmlDebugDumpAttrList__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpDTD +extern __typeof (xmlDebugDumpDTD) xmlDebugDumpDTD __attribute((alias("xmlDebugDumpDTD__internal_alias"))); +#else +#ifndef xmlDebugDumpDTD +extern __typeof (xmlDebugDumpDTD) xmlDebugDumpDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpDTD xmlDebugDumpDTD__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpDocument +extern __typeof (xmlDebugDumpDocument) xmlDebugDumpDocument __attribute((alias("xmlDebugDumpDocument__internal_alias"))); +#else +#ifndef xmlDebugDumpDocument +extern __typeof (xmlDebugDumpDocument) xmlDebugDumpDocument__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpDocument xmlDebugDumpDocument__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpDocumentHead +extern __typeof (xmlDebugDumpDocumentHead) xmlDebugDumpDocumentHead __attribute((alias("xmlDebugDumpDocumentHead__internal_alias"))); +#else +#ifndef xmlDebugDumpDocumentHead +extern __typeof (xmlDebugDumpDocumentHead) xmlDebugDumpDocumentHead__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpDocumentHead xmlDebugDumpDocumentHead__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpEntities +extern __typeof (xmlDebugDumpEntities) xmlDebugDumpEntities __attribute((alias("xmlDebugDumpEntities__internal_alias"))); +#else +#ifndef xmlDebugDumpEntities +extern __typeof (xmlDebugDumpEntities) xmlDebugDumpEntities__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpEntities xmlDebugDumpEntities__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpNode +extern __typeof (xmlDebugDumpNode) xmlDebugDumpNode __attribute((alias("xmlDebugDumpNode__internal_alias"))); +#else +#ifndef xmlDebugDumpNode +extern __typeof (xmlDebugDumpNode) xmlDebugDumpNode__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpNode xmlDebugDumpNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpNodeList +extern __typeof (xmlDebugDumpNodeList) xmlDebugDumpNodeList __attribute((alias("xmlDebugDumpNodeList__internal_alias"))); +#else +#ifndef xmlDebugDumpNodeList +extern __typeof (xmlDebugDumpNodeList) xmlDebugDumpNodeList__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpNodeList xmlDebugDumpNodeList__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpOneNode +extern __typeof (xmlDebugDumpOneNode) xmlDebugDumpOneNode __attribute((alias("xmlDebugDumpOneNode__internal_alias"))); +#else +#ifndef xmlDebugDumpOneNode +extern __typeof (xmlDebugDumpOneNode) xmlDebugDumpOneNode__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpOneNode xmlDebugDumpOneNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlDebugDumpString +extern __typeof (xmlDebugDumpString) xmlDebugDumpString __attribute((alias("xmlDebugDumpString__internal_alias"))); +#else +#ifndef xmlDebugDumpString +extern __typeof (xmlDebugDumpString) xmlDebugDumpString__internal_alias __attribute((visibility("hidden"))); +#define xmlDebugDumpString xmlDebugDumpString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlDecodeEntities +extern __typeof (xmlDecodeEntities) xmlDecodeEntities __attribute((alias("xmlDecodeEntities__internal_alias"))); +#else +#ifndef xmlDecodeEntities +extern __typeof (xmlDecodeEntities) xmlDecodeEntities__internal_alias __attribute((visibility("hidden"))); +#define xmlDecodeEntities xmlDecodeEntities__internal_alias +#endif +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlDefaultSAXHandlerInit +extern __typeof (xmlDefaultSAXHandlerInit) xmlDefaultSAXHandlerInit __attribute((alias("xmlDefaultSAXHandlerInit__internal_alias"))); +#else +#ifndef xmlDefaultSAXHandlerInit +extern __typeof (xmlDefaultSAXHandlerInit) xmlDefaultSAXHandlerInit__internal_alias __attribute((visibility("hidden"))); +#define xmlDefaultSAXHandlerInit xmlDefaultSAXHandlerInit__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlDelEncodingAlias +extern __typeof (xmlDelEncodingAlias) xmlDelEncodingAlias __attribute((alias("xmlDelEncodingAlias__internal_alias"))); +#else +#ifndef xmlDelEncodingAlias +extern __typeof (xmlDelEncodingAlias) xmlDelEncodingAlias__internal_alias __attribute((visibility("hidden"))); +#define xmlDelEncodingAlias xmlDelEncodingAlias__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlDeregisterNodeDefault +extern __typeof (xmlDeregisterNodeDefault) xmlDeregisterNodeDefault __attribute((alias("xmlDeregisterNodeDefault__internal_alias"))); +#else +#ifndef xmlDeregisterNodeDefault +extern __typeof (xmlDeregisterNodeDefault) xmlDeregisterNodeDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlDeregisterNodeDefault xmlDeregisterNodeDefault__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlDetectCharEncoding +extern __typeof (xmlDetectCharEncoding) xmlDetectCharEncoding __attribute((alias("xmlDetectCharEncoding__internal_alias"))); +#else +#ifndef xmlDetectCharEncoding +extern __typeof (xmlDetectCharEncoding) xmlDetectCharEncoding__internal_alias __attribute((visibility("hidden"))); +#define xmlDetectCharEncoding xmlDetectCharEncoding__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictCleanup +extern __typeof (xmlDictCleanup) xmlDictCleanup __attribute((alias("xmlDictCleanup__internal_alias"))); +#else +#ifndef xmlDictCleanup +extern __typeof (xmlDictCleanup) xmlDictCleanup__internal_alias __attribute((visibility("hidden"))); +#define xmlDictCleanup xmlDictCleanup__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictCreate +extern __typeof (xmlDictCreate) xmlDictCreate __attribute((alias("xmlDictCreate__internal_alias"))); +#else +#ifndef xmlDictCreate +extern __typeof (xmlDictCreate) xmlDictCreate__internal_alias __attribute((visibility("hidden"))); +#define xmlDictCreate xmlDictCreate__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictCreateSub +extern __typeof (xmlDictCreateSub) xmlDictCreateSub __attribute((alias("xmlDictCreateSub__internal_alias"))); +#else +#ifndef xmlDictCreateSub +extern __typeof (xmlDictCreateSub) xmlDictCreateSub__internal_alias __attribute((visibility("hidden"))); +#define xmlDictCreateSub xmlDictCreateSub__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictExists +extern __typeof (xmlDictExists) xmlDictExists __attribute((alias("xmlDictExists__internal_alias"))); +#else +#ifndef xmlDictExists +extern __typeof (xmlDictExists) xmlDictExists__internal_alias __attribute((visibility("hidden"))); +#define xmlDictExists xmlDictExists__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictFree +extern __typeof (xmlDictFree) xmlDictFree __attribute((alias("xmlDictFree__internal_alias"))); +#else +#ifndef xmlDictFree +extern __typeof (xmlDictFree) xmlDictFree__internal_alias __attribute((visibility("hidden"))); +#define xmlDictFree xmlDictFree__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictGetUsage +extern __typeof (xmlDictGetUsage) xmlDictGetUsage __attribute((alias("xmlDictGetUsage__internal_alias"))); +#else +#ifndef xmlDictGetUsage +extern __typeof (xmlDictGetUsage) xmlDictGetUsage__internal_alias __attribute((visibility("hidden"))); +#define xmlDictGetUsage xmlDictGetUsage__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictLookup +extern __typeof (xmlDictLookup) xmlDictLookup __attribute((alias("xmlDictLookup__internal_alias"))); +#else +#ifndef xmlDictLookup +extern __typeof (xmlDictLookup) xmlDictLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlDictLookup xmlDictLookup__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictOwns +extern __typeof (xmlDictOwns) xmlDictOwns __attribute((alias("xmlDictOwns__internal_alias"))); +#else +#ifndef xmlDictOwns +extern __typeof (xmlDictOwns) xmlDictOwns__internal_alias __attribute((visibility("hidden"))); +#define xmlDictOwns xmlDictOwns__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictQLookup +extern __typeof (xmlDictQLookup) xmlDictQLookup __attribute((alias("xmlDictQLookup__internal_alias"))); +#else +#ifndef xmlDictQLookup +extern __typeof (xmlDictQLookup) xmlDictQLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlDictQLookup xmlDictQLookup__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictReference +extern __typeof (xmlDictReference) xmlDictReference __attribute((alias("xmlDictReference__internal_alias"))); +#else +#ifndef xmlDictReference +extern __typeof (xmlDictReference) xmlDictReference__internal_alias __attribute((visibility("hidden"))); +#define xmlDictReference xmlDictReference__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictSetLimit +extern __typeof (xmlDictSetLimit) xmlDictSetLimit __attribute((alias("xmlDictSetLimit__internal_alias"))); +#else +#ifndef xmlDictSetLimit +extern __typeof (xmlDictSetLimit) xmlDictSetLimit__internal_alias __attribute((visibility("hidden"))); +#define xmlDictSetLimit xmlDictSetLimit__internal_alias +#endif +#endif + +#ifdef bottom_dict +#undef xmlDictSize +extern __typeof (xmlDictSize) xmlDictSize __attribute((alias("xmlDictSize__internal_alias"))); +#else +#ifndef xmlDictSize +extern __typeof (xmlDictSize) xmlDictSize__internal_alias __attribute((visibility("hidden"))); +#define xmlDictSize xmlDictSize__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlDocCopyNode +extern __typeof (xmlDocCopyNode) xmlDocCopyNode __attribute((alias("xmlDocCopyNode__internal_alias"))); +#else +#ifndef xmlDocCopyNode +extern __typeof (xmlDocCopyNode) xmlDocCopyNode__internal_alias __attribute((visibility("hidden"))); +#define xmlDocCopyNode xmlDocCopyNode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlDocCopyNodeList +extern __typeof (xmlDocCopyNodeList) xmlDocCopyNodeList __attribute((alias("xmlDocCopyNodeList__internal_alias"))); +#else +#ifndef xmlDocCopyNodeList +extern __typeof (xmlDocCopyNodeList) xmlDocCopyNodeList__internal_alias __attribute((visibility("hidden"))); +#define xmlDocCopyNodeList xmlDocCopyNodeList__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlDocDump +extern __typeof (xmlDocDump) xmlDocDump __attribute((alias("xmlDocDump__internal_alias"))); +#else +#ifndef xmlDocDump +extern __typeof (xmlDocDump) xmlDocDump__internal_alias __attribute((visibility("hidden"))); +#define xmlDocDump xmlDocDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlDocDumpFormatMemory +extern __typeof (xmlDocDumpFormatMemory) xmlDocDumpFormatMemory __attribute((alias("xmlDocDumpFormatMemory__internal_alias"))); +#else +#ifndef xmlDocDumpFormatMemory +extern __typeof (xmlDocDumpFormatMemory) xmlDocDumpFormatMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlDocDumpFormatMemory xmlDocDumpFormatMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlDocDumpFormatMemoryEnc +extern __typeof (xmlDocDumpFormatMemoryEnc) xmlDocDumpFormatMemoryEnc __attribute((alias("xmlDocDumpFormatMemoryEnc__internal_alias"))); +#else +#ifndef xmlDocDumpFormatMemoryEnc +extern __typeof (xmlDocDumpFormatMemoryEnc) xmlDocDumpFormatMemoryEnc__internal_alias __attribute((visibility("hidden"))); +#define xmlDocDumpFormatMemoryEnc xmlDocDumpFormatMemoryEnc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlDocDumpMemory +extern __typeof (xmlDocDumpMemory) xmlDocDumpMemory __attribute((alias("xmlDocDumpMemory__internal_alias"))); +#else +#ifndef xmlDocDumpMemory +extern __typeof (xmlDocDumpMemory) xmlDocDumpMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlDocDumpMemory xmlDocDumpMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlDocDumpMemoryEnc +extern __typeof (xmlDocDumpMemoryEnc) xmlDocDumpMemoryEnc __attribute((alias("xmlDocDumpMemoryEnc__internal_alias"))); +#else +#ifndef xmlDocDumpMemoryEnc +extern __typeof (xmlDocDumpMemoryEnc) xmlDocDumpMemoryEnc__internal_alias __attribute((visibility("hidden"))); +#define xmlDocDumpMemoryEnc xmlDocDumpMemoryEnc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlDocFormatDump +extern __typeof (xmlDocFormatDump) xmlDocFormatDump __attribute((alias("xmlDocFormatDump__internal_alias"))); +#else +#ifndef xmlDocFormatDump +extern __typeof (xmlDocFormatDump) xmlDocFormatDump__internal_alias __attribute((visibility("hidden"))); +#define xmlDocFormatDump xmlDocFormatDump__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlDocGetRootElement +extern __typeof (xmlDocGetRootElement) xmlDocGetRootElement __attribute((alias("xmlDocGetRootElement__internal_alias"))); +#else +#ifndef xmlDocGetRootElement +extern __typeof (xmlDocGetRootElement) xmlDocGetRootElement__internal_alias __attribute((visibility("hidden"))); +#define xmlDocGetRootElement xmlDocGetRootElement__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_tree +#undef xmlDocSetRootElement +extern __typeof (xmlDocSetRootElement) xmlDocSetRootElement __attribute((alias("xmlDocSetRootElement__internal_alias"))); +#else +#ifndef xmlDocSetRootElement +extern __typeof (xmlDocSetRootElement) xmlDocSetRootElement__internal_alias __attribute((visibility("hidden"))); +#define xmlDocSetRootElement xmlDocSetRootElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_valid +#undef xmlDumpAttributeDecl +extern __typeof (xmlDumpAttributeDecl) xmlDumpAttributeDecl __attribute((alias("xmlDumpAttributeDecl__internal_alias"))); +#else +#ifndef xmlDumpAttributeDecl +extern __typeof (xmlDumpAttributeDecl) xmlDumpAttributeDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlDumpAttributeDecl xmlDumpAttributeDecl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_valid +#undef xmlDumpAttributeTable +extern __typeof (xmlDumpAttributeTable) xmlDumpAttributeTable __attribute((alias("xmlDumpAttributeTable__internal_alias"))); +#else +#ifndef xmlDumpAttributeTable +extern __typeof (xmlDumpAttributeTable) xmlDumpAttributeTable__internal_alias __attribute((visibility("hidden"))); +#define xmlDumpAttributeTable xmlDumpAttributeTable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_valid +#undef xmlDumpElementDecl +extern __typeof (xmlDumpElementDecl) xmlDumpElementDecl __attribute((alias("xmlDumpElementDecl__internal_alias"))); +#else +#ifndef xmlDumpElementDecl +extern __typeof (xmlDumpElementDecl) xmlDumpElementDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlDumpElementDecl xmlDumpElementDecl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_valid +#undef xmlDumpElementTable +extern __typeof (xmlDumpElementTable) xmlDumpElementTable __attribute((alias("xmlDumpElementTable__internal_alias"))); +#else +#ifndef xmlDumpElementTable +extern __typeof (xmlDumpElementTable) xmlDumpElementTable__internal_alias __attribute((visibility("hidden"))); +#define xmlDumpElementTable xmlDumpElementTable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_entities +#undef xmlDumpEntitiesTable +extern __typeof (xmlDumpEntitiesTable) xmlDumpEntitiesTable __attribute((alias("xmlDumpEntitiesTable__internal_alias"))); +#else +#ifndef xmlDumpEntitiesTable +extern __typeof (xmlDumpEntitiesTable) xmlDumpEntitiesTable__internal_alias __attribute((visibility("hidden"))); +#define xmlDumpEntitiesTable xmlDumpEntitiesTable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_entities +#undef xmlDumpEntityDecl +extern __typeof (xmlDumpEntityDecl) xmlDumpEntityDecl __attribute((alias("xmlDumpEntityDecl__internal_alias"))); +#else +#ifndef xmlDumpEntityDecl +extern __typeof (xmlDumpEntityDecl) xmlDumpEntityDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlDumpEntityDecl xmlDumpEntityDecl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_valid +#undef xmlDumpNotationDecl +extern __typeof (xmlDumpNotationDecl) xmlDumpNotationDecl __attribute((alias("xmlDumpNotationDecl__internal_alias"))); +#else +#ifndef xmlDumpNotationDecl +extern __typeof (xmlDumpNotationDecl) xmlDumpNotationDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlDumpNotationDecl xmlDumpNotationDecl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_valid +#undef xmlDumpNotationTable +extern __typeof (xmlDumpNotationTable) xmlDumpNotationTable __attribute((alias("xmlDumpNotationTable__internal_alias"))); +#else +#ifndef xmlDumpNotationTable +extern __typeof (xmlDumpNotationTable) xmlDumpNotationTable__internal_alias __attribute((visibility("hidden"))); +#define xmlDumpNotationTable xmlDumpNotationTable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlElemDump +extern __typeof (xmlElemDump) xmlElemDump __attribute((alias("xmlElemDump__internal_alias"))); +#else +#ifndef xmlElemDump +extern __typeof (xmlElemDump) xmlElemDump__internal_alias __attribute((visibility("hidden"))); +#define xmlElemDump xmlElemDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlEncodeEntities +extern __typeof (xmlEncodeEntities) xmlEncodeEntities __attribute((alias("xmlEncodeEntities__internal_alias"))); +#else +#ifndef xmlEncodeEntities +extern __typeof (xmlEncodeEntities) xmlEncodeEntities__internal_alias __attribute((visibility("hidden"))); +#define xmlEncodeEntities xmlEncodeEntities__internal_alias +#endif +#endif +#endif + +#ifdef bottom_entities +#undef xmlEncodeEntitiesReentrant +extern __typeof (xmlEncodeEntitiesReentrant) xmlEncodeEntitiesReentrant __attribute((alias("xmlEncodeEntitiesReentrant__internal_alias"))); +#else +#ifndef xmlEncodeEntitiesReentrant +extern __typeof (xmlEncodeEntitiesReentrant) xmlEncodeEntitiesReentrant__internal_alias __attribute((visibility("hidden"))); +#define xmlEncodeEntitiesReentrant xmlEncodeEntitiesReentrant__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlEncodeSpecialChars +extern __typeof (xmlEncodeSpecialChars) xmlEncodeSpecialChars __attribute((alias("xmlEncodeSpecialChars__internal_alias"))); +#else +#ifndef xmlEncodeSpecialChars +extern __typeof (xmlEncodeSpecialChars) xmlEncodeSpecialChars__internal_alias __attribute((visibility("hidden"))); +#define xmlEncodeSpecialChars xmlEncodeSpecialChars__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlErrMemory +extern __typeof (xmlErrMemory) xmlErrMemory __attribute((alias("xmlErrMemory__internal_alias"))); +#else +#ifndef xmlErrMemory +extern __typeof (xmlErrMemory) xmlErrMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlErrMemory xmlErrMemory__internal_alias +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpCtxtNbCons +extern __typeof (xmlExpCtxtNbCons) xmlExpCtxtNbCons __attribute((alias("xmlExpCtxtNbCons__internal_alias"))); +#else +#ifndef xmlExpCtxtNbCons +extern __typeof (xmlExpCtxtNbCons) xmlExpCtxtNbCons__internal_alias __attribute((visibility("hidden"))); +#define xmlExpCtxtNbCons xmlExpCtxtNbCons__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpCtxtNbNodes +extern __typeof (xmlExpCtxtNbNodes) xmlExpCtxtNbNodes __attribute((alias("xmlExpCtxtNbNodes__internal_alias"))); +#else +#ifndef xmlExpCtxtNbNodes +extern __typeof (xmlExpCtxtNbNodes) xmlExpCtxtNbNodes__internal_alias __attribute((visibility("hidden"))); +#define xmlExpCtxtNbNodes xmlExpCtxtNbNodes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpDump +extern __typeof (xmlExpDump) xmlExpDump __attribute((alias("xmlExpDump__internal_alias"))); +#else +#ifndef xmlExpDump +extern __typeof (xmlExpDump) xmlExpDump__internal_alias __attribute((visibility("hidden"))); +#define xmlExpDump xmlExpDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpExpDerive +extern __typeof (xmlExpExpDerive) xmlExpExpDerive __attribute((alias("xmlExpExpDerive__internal_alias"))); +#else +#ifndef xmlExpExpDerive +extern __typeof (xmlExpExpDerive) xmlExpExpDerive__internal_alias __attribute((visibility("hidden"))); +#define xmlExpExpDerive xmlExpExpDerive__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpFree +extern __typeof (xmlExpFree) xmlExpFree __attribute((alias("xmlExpFree__internal_alias"))); +#else +#ifndef xmlExpFree +extern __typeof (xmlExpFree) xmlExpFree__internal_alias __attribute((visibility("hidden"))); +#define xmlExpFree xmlExpFree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpFreeCtxt +extern __typeof (xmlExpFreeCtxt) xmlExpFreeCtxt __attribute((alias("xmlExpFreeCtxt__internal_alias"))); +#else +#ifndef xmlExpFreeCtxt +extern __typeof (xmlExpFreeCtxt) xmlExpFreeCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlExpFreeCtxt xmlExpFreeCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpGetLanguage +extern __typeof (xmlExpGetLanguage) xmlExpGetLanguage __attribute((alias("xmlExpGetLanguage__internal_alias"))); +#else +#ifndef xmlExpGetLanguage +extern __typeof (xmlExpGetLanguage) xmlExpGetLanguage__internal_alias __attribute((visibility("hidden"))); +#define xmlExpGetLanguage xmlExpGetLanguage__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpGetStart +extern __typeof (xmlExpGetStart) xmlExpGetStart __attribute((alias("xmlExpGetStart__internal_alias"))); +#else +#ifndef xmlExpGetStart +extern __typeof (xmlExpGetStart) xmlExpGetStart__internal_alias __attribute((visibility("hidden"))); +#define xmlExpGetStart xmlExpGetStart__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpIsNillable +extern __typeof (xmlExpIsNillable) xmlExpIsNillable __attribute((alias("xmlExpIsNillable__internal_alias"))); +#else +#ifndef xmlExpIsNillable +extern __typeof (xmlExpIsNillable) xmlExpIsNillable__internal_alias __attribute((visibility("hidden"))); +#define xmlExpIsNillable xmlExpIsNillable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpMaxToken +extern __typeof (xmlExpMaxToken) xmlExpMaxToken __attribute((alias("xmlExpMaxToken__internal_alias"))); +#else +#ifndef xmlExpMaxToken +extern __typeof (xmlExpMaxToken) xmlExpMaxToken__internal_alias __attribute((visibility("hidden"))); +#define xmlExpMaxToken xmlExpMaxToken__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpNewAtom +extern __typeof (xmlExpNewAtom) xmlExpNewAtom __attribute((alias("xmlExpNewAtom__internal_alias"))); +#else +#ifndef xmlExpNewAtom +extern __typeof (xmlExpNewAtom) xmlExpNewAtom__internal_alias __attribute((visibility("hidden"))); +#define xmlExpNewAtom xmlExpNewAtom__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpNewCtxt +extern __typeof (xmlExpNewCtxt) xmlExpNewCtxt __attribute((alias("xmlExpNewCtxt__internal_alias"))); +#else +#ifndef xmlExpNewCtxt +extern __typeof (xmlExpNewCtxt) xmlExpNewCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlExpNewCtxt xmlExpNewCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpNewOr +extern __typeof (xmlExpNewOr) xmlExpNewOr __attribute((alias("xmlExpNewOr__internal_alias"))); +#else +#ifndef xmlExpNewOr +extern __typeof (xmlExpNewOr) xmlExpNewOr__internal_alias __attribute((visibility("hidden"))); +#define xmlExpNewOr xmlExpNewOr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpNewRange +extern __typeof (xmlExpNewRange) xmlExpNewRange __attribute((alias("xmlExpNewRange__internal_alias"))); +#else +#ifndef xmlExpNewRange +extern __typeof (xmlExpNewRange) xmlExpNewRange__internal_alias __attribute((visibility("hidden"))); +#define xmlExpNewRange xmlExpNewRange__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpNewSeq +extern __typeof (xmlExpNewSeq) xmlExpNewSeq __attribute((alias("xmlExpNewSeq__internal_alias"))); +#else +#ifndef xmlExpNewSeq +extern __typeof (xmlExpNewSeq) xmlExpNewSeq__internal_alias __attribute((visibility("hidden"))); +#define xmlExpNewSeq xmlExpNewSeq__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpParse +extern __typeof (xmlExpParse) xmlExpParse __attribute((alias("xmlExpParse__internal_alias"))); +#else +#ifndef xmlExpParse +extern __typeof (xmlExpParse) xmlExpParse__internal_alias __attribute((visibility("hidden"))); +#define xmlExpParse xmlExpParse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpRef +extern __typeof (xmlExpRef) xmlExpRef __attribute((alias("xmlExpRef__internal_alias"))); +#else +#ifndef xmlExpRef +extern __typeof (xmlExpRef) xmlExpRef__internal_alias __attribute((visibility("hidden"))); +#define xmlExpRef xmlExpRef__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpStringDerive +extern __typeof (xmlExpStringDerive) xmlExpStringDerive __attribute((alias("xmlExpStringDerive__internal_alias"))); +#else +#ifndef xmlExpStringDerive +extern __typeof (xmlExpStringDerive) xmlExpStringDerive__internal_alias __attribute((visibility("hidden"))); +#define xmlExpStringDerive xmlExpStringDerive__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlExpSubsume +extern __typeof (xmlExpSubsume) xmlExpSubsume __attribute((alias("xmlExpSubsume__internal_alias"))); +#else +#ifndef xmlExpSubsume +extern __typeof (xmlExpSubsume) xmlExpSubsume__internal_alias __attribute((visibility("hidden"))); +#define xmlExpSubsume xmlExpSubsume__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlFileClose +extern __typeof (xmlFileClose) xmlFileClose __attribute((alias("xmlFileClose__internal_alias"))); +#else +#ifndef xmlFileClose +extern __typeof (xmlFileClose) xmlFileClose__internal_alias __attribute((visibility("hidden"))); +#define xmlFileClose xmlFileClose__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlFileMatch +extern __typeof (xmlFileMatch) xmlFileMatch __attribute((alias("xmlFileMatch__internal_alias"))); +#else +#ifndef xmlFileMatch +extern __typeof (xmlFileMatch) xmlFileMatch__internal_alias __attribute((visibility("hidden"))); +#define xmlFileMatch xmlFileMatch__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlFileOpen +extern __typeof (xmlFileOpen) xmlFileOpen __attribute((alias("xmlFileOpen__internal_alias"))); +#else +#ifndef xmlFileOpen +extern __typeof (xmlFileOpen) xmlFileOpen__internal_alias __attribute((visibility("hidden"))); +#define xmlFileOpen xmlFileOpen__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlFileRead +extern __typeof (xmlFileRead) xmlFileRead __attribute((alias("xmlFileRead__internal_alias"))); +#else +#ifndef xmlFileRead +extern __typeof (xmlFileRead) xmlFileRead__internal_alias __attribute((visibility("hidden"))); +#define xmlFileRead xmlFileRead__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlFindCharEncodingHandler +extern __typeof (xmlFindCharEncodingHandler) xmlFindCharEncodingHandler __attribute((alias("xmlFindCharEncodingHandler__internal_alias"))); +#else +#ifndef xmlFindCharEncodingHandler +extern __typeof (xmlFindCharEncodingHandler) xmlFindCharEncodingHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlFindCharEncodingHandler xmlFindCharEncodingHandler__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlFirstElementChild +extern __typeof (xmlFirstElementChild) xmlFirstElementChild __attribute((alias("xmlFirstElementChild__internal_alias"))); +#else +#ifndef xmlFirstElementChild +extern __typeof (xmlFirstElementChild) xmlFirstElementChild__internal_alias __attribute((visibility("hidden"))); +#define xmlFirstElementChild xmlFirstElementChild__internal_alias +#endif +#endif +#endif + +#ifdef bottom_valid +#undef xmlFreeAttributeTable +extern __typeof (xmlFreeAttributeTable) xmlFreeAttributeTable __attribute((alias("xmlFreeAttributeTable__internal_alias"))); +#else +#ifndef xmlFreeAttributeTable +extern __typeof (xmlFreeAttributeTable) xmlFreeAttributeTable__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeAttributeTable xmlFreeAttributeTable__internal_alias +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlFreeAutomata +extern __typeof (xmlFreeAutomata) xmlFreeAutomata __attribute((alias("xmlFreeAutomata__internal_alias"))); +#else +#ifndef xmlFreeAutomata +extern __typeof (xmlFreeAutomata) xmlFreeAutomata__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeAutomata xmlFreeAutomata__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlFreeCatalog +extern __typeof (xmlFreeCatalog) xmlFreeCatalog __attribute((alias("xmlFreeCatalog__internal_alias"))); +#else +#ifndef xmlFreeCatalog +extern __typeof (xmlFreeCatalog) xmlFreeCatalog__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeCatalog xmlFreeCatalog__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlFreeDoc +extern __typeof (xmlFreeDoc) xmlFreeDoc __attribute((alias("xmlFreeDoc__internal_alias"))); +#else +#ifndef xmlFreeDoc +extern __typeof (xmlFreeDoc) xmlFreeDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeDoc xmlFreeDoc__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlFreeDocElementContent +extern __typeof (xmlFreeDocElementContent) xmlFreeDocElementContent __attribute((alias("xmlFreeDocElementContent__internal_alias"))); +#else +#ifndef xmlFreeDocElementContent +extern __typeof (xmlFreeDocElementContent) xmlFreeDocElementContent__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeDocElementContent xmlFreeDocElementContent__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlFreeDtd +extern __typeof (xmlFreeDtd) xmlFreeDtd __attribute((alias("xmlFreeDtd__internal_alias"))); +#else +#ifndef xmlFreeDtd +extern __typeof (xmlFreeDtd) xmlFreeDtd__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeDtd xmlFreeDtd__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlFreeElementContent +extern __typeof (xmlFreeElementContent) xmlFreeElementContent __attribute((alias("xmlFreeElementContent__internal_alias"))); +#else +#ifndef xmlFreeElementContent +extern __typeof (xmlFreeElementContent) xmlFreeElementContent__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeElementContent xmlFreeElementContent__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlFreeElementTable +extern __typeof (xmlFreeElementTable) xmlFreeElementTable __attribute((alias("xmlFreeElementTable__internal_alias"))); +#else +#ifndef xmlFreeElementTable +extern __typeof (xmlFreeElementTable) xmlFreeElementTable__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeElementTable xmlFreeElementTable__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlFreeEntitiesTable +extern __typeof (xmlFreeEntitiesTable) xmlFreeEntitiesTable __attribute((alias("xmlFreeEntitiesTable__internal_alias"))); +#else +#ifndef xmlFreeEntitiesTable +extern __typeof (xmlFreeEntitiesTable) xmlFreeEntitiesTable__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeEntitiesTable xmlFreeEntitiesTable__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlFreeEnumeration +extern __typeof (xmlFreeEnumeration) xmlFreeEnumeration __attribute((alias("xmlFreeEnumeration__internal_alias"))); +#else +#ifndef xmlFreeEnumeration +extern __typeof (xmlFreeEnumeration) xmlFreeEnumeration__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeEnumeration xmlFreeEnumeration__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlFreeIDTable +extern __typeof (xmlFreeIDTable) xmlFreeIDTable __attribute((alias("xmlFreeIDTable__internal_alias"))); +#else +#ifndef xmlFreeIDTable +extern __typeof (xmlFreeIDTable) xmlFreeIDTable__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeIDTable xmlFreeIDTable__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlFreeInputStream +extern __typeof (xmlFreeInputStream) xmlFreeInputStream __attribute((alias("xmlFreeInputStream__internal_alias"))); +#else +#ifndef xmlFreeInputStream +extern __typeof (xmlFreeInputStream) xmlFreeInputStream__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeInputStream xmlFreeInputStream__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlFreeMutex +extern __typeof (xmlFreeMutex) xmlFreeMutex __attribute((alias("xmlFreeMutex__internal_alias"))); +#else +#ifndef xmlFreeMutex +extern __typeof (xmlFreeMutex) xmlFreeMutex__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeMutex xmlFreeMutex__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlFreeNode +extern __typeof (xmlFreeNode) xmlFreeNode __attribute((alias("xmlFreeNode__internal_alias"))); +#else +#ifndef xmlFreeNode +extern __typeof (xmlFreeNode) xmlFreeNode__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeNode xmlFreeNode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlFreeNodeList +extern __typeof (xmlFreeNodeList) xmlFreeNodeList __attribute((alias("xmlFreeNodeList__internal_alias"))); +#else +#ifndef xmlFreeNodeList +extern __typeof (xmlFreeNodeList) xmlFreeNodeList__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeNodeList xmlFreeNodeList__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlFreeNotationTable +extern __typeof (xmlFreeNotationTable) xmlFreeNotationTable __attribute((alias("xmlFreeNotationTable__internal_alias"))); +#else +#ifndef xmlFreeNotationTable +extern __typeof (xmlFreeNotationTable) xmlFreeNotationTable__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeNotationTable xmlFreeNotationTable__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlFreeNs +extern __typeof (xmlFreeNs) xmlFreeNs __attribute((alias("xmlFreeNs__internal_alias"))); +#else +#ifndef xmlFreeNs +extern __typeof (xmlFreeNs) xmlFreeNs__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeNs xmlFreeNs__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlFreeNsList +extern __typeof (xmlFreeNsList) xmlFreeNsList __attribute((alias("xmlFreeNsList__internal_alias"))); +#else +#ifndef xmlFreeNsList +extern __typeof (xmlFreeNsList) xmlFreeNsList__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeNsList xmlFreeNsList__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlFreeParserCtxt +extern __typeof (xmlFreeParserCtxt) xmlFreeParserCtxt __attribute((alias("xmlFreeParserCtxt__internal_alias"))); +#else +#ifndef xmlFreeParserCtxt +extern __typeof (xmlFreeParserCtxt) xmlFreeParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeParserCtxt xmlFreeParserCtxt__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlFreeParserInputBuffer +extern __typeof (xmlFreeParserInputBuffer) xmlFreeParserInputBuffer __attribute((alias("xmlFreeParserInputBuffer__internal_alias"))); +#else +#ifndef xmlFreeParserInputBuffer +extern __typeof (xmlFreeParserInputBuffer) xmlFreeParserInputBuffer__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeParserInputBuffer xmlFreeParserInputBuffer__internal_alias +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlFreePattern +extern __typeof (xmlFreePattern) xmlFreePattern __attribute((alias("xmlFreePattern__internal_alias"))); +#else +#ifndef xmlFreePattern +extern __typeof (xmlFreePattern) xmlFreePattern__internal_alias __attribute((visibility("hidden"))); +#define xmlFreePattern xmlFreePattern__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlFreePatternList +extern __typeof (xmlFreePatternList) xmlFreePatternList __attribute((alias("xmlFreePatternList__internal_alias"))); +#else +#ifndef xmlFreePatternList +extern __typeof (xmlFreePatternList) xmlFreePatternList__internal_alias __attribute((visibility("hidden"))); +#define xmlFreePatternList xmlFreePatternList__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlFreeProp +extern __typeof (xmlFreeProp) xmlFreeProp __attribute((alias("xmlFreeProp__internal_alias"))); +#else +#ifndef xmlFreeProp +extern __typeof (xmlFreeProp) xmlFreeProp__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeProp xmlFreeProp__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlFreePropList +extern __typeof (xmlFreePropList) xmlFreePropList __attribute((alias("xmlFreePropList__internal_alias"))); +#else +#ifndef xmlFreePropList +extern __typeof (xmlFreePropList) xmlFreePropList__internal_alias __attribute((visibility("hidden"))); +#define xmlFreePropList xmlFreePropList__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlFreeRMutex +extern __typeof (xmlFreeRMutex) xmlFreeRMutex __attribute((alias("xmlFreeRMutex__internal_alias"))); +#else +#ifndef xmlFreeRMutex +extern __typeof (xmlFreeRMutex) xmlFreeRMutex__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeRMutex xmlFreeRMutex__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlFreeRefTable +extern __typeof (xmlFreeRefTable) xmlFreeRefTable __attribute((alias("xmlFreeRefTable__internal_alias"))); +#else +#ifndef xmlFreeRefTable +extern __typeof (xmlFreeRefTable) xmlFreeRefTable__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeRefTable xmlFreeRefTable__internal_alias +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlFreeStreamCtxt +extern __typeof (xmlFreeStreamCtxt) xmlFreeStreamCtxt __attribute((alias("xmlFreeStreamCtxt__internal_alias"))); +#else +#ifndef xmlFreeStreamCtxt +extern __typeof (xmlFreeStreamCtxt) xmlFreeStreamCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeStreamCtxt xmlFreeStreamCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlFreeTextReader +extern __typeof (xmlFreeTextReader) xmlFreeTextReader __attribute((alias("xmlFreeTextReader__internal_alias"))); +#else +#ifndef xmlFreeTextReader +extern __typeof (xmlFreeTextReader) xmlFreeTextReader__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeTextReader xmlFreeTextReader__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlFreeTextWriter +extern __typeof (xmlFreeTextWriter) xmlFreeTextWriter __attribute((alias("xmlFreeTextWriter__internal_alias"))); +#else +#ifndef xmlFreeTextWriter +extern __typeof (xmlFreeTextWriter) xmlFreeTextWriter__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeTextWriter xmlFreeTextWriter__internal_alias +#endif +#endif +#endif + +#ifdef bottom_uri +#undef xmlFreeURI +extern __typeof (xmlFreeURI) xmlFreeURI __attribute((alias("xmlFreeURI__internal_alias"))); +#else +#ifndef xmlFreeURI +extern __typeof (xmlFreeURI) xmlFreeURI__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeURI xmlFreeURI__internal_alias +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlFreeValidCtxt +extern __typeof (xmlFreeValidCtxt) xmlFreeValidCtxt __attribute((alias("xmlFreeValidCtxt__internal_alias"))); +#else +#ifndef xmlFreeValidCtxt +extern __typeof (xmlFreeValidCtxt) xmlFreeValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlFreeValidCtxt xmlFreeValidCtxt__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlGcMemGet +extern __typeof (xmlGcMemGet) xmlGcMemGet __attribute((alias("xmlGcMemGet__internal_alias"))); +#else +#ifndef xmlGcMemGet +extern __typeof (xmlGcMemGet) xmlGcMemGet__internal_alias __attribute((visibility("hidden"))); +#define xmlGcMemGet xmlGcMemGet__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlGcMemSetup +extern __typeof (xmlGcMemSetup) xmlGcMemSetup __attribute((alias("xmlGcMemSetup__internal_alias"))); +#else +#ifndef xmlGcMemSetup +extern __typeof (xmlGcMemSetup) xmlGcMemSetup__internal_alias __attribute((visibility("hidden"))); +#define xmlGcMemSetup xmlGcMemSetup__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetBufferAllocationScheme +extern __typeof (xmlGetBufferAllocationScheme) xmlGetBufferAllocationScheme __attribute((alias("xmlGetBufferAllocationScheme__internal_alias"))); +#else +#ifndef xmlGetBufferAllocationScheme +extern __typeof (xmlGetBufferAllocationScheme) xmlGetBufferAllocationScheme__internal_alias __attribute((visibility("hidden"))); +#define xmlGetBufferAllocationScheme xmlGetBufferAllocationScheme__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlGetCharEncodingHandler +extern __typeof (xmlGetCharEncodingHandler) xmlGetCharEncodingHandler __attribute((alias("xmlGetCharEncodingHandler__internal_alias"))); +#else +#ifndef xmlGetCharEncodingHandler +extern __typeof (xmlGetCharEncodingHandler) xmlGetCharEncodingHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlGetCharEncodingHandler xmlGetCharEncodingHandler__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlGetCharEncodingName +extern __typeof (xmlGetCharEncodingName) xmlGetCharEncodingName __attribute((alias("xmlGetCharEncodingName__internal_alias"))); +#else +#ifndef xmlGetCharEncodingName +extern __typeof (xmlGetCharEncodingName) xmlGetCharEncodingName__internal_alias __attribute((visibility("hidden"))); +#define xmlGetCharEncodingName xmlGetCharEncodingName__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetCompressMode +extern __typeof (xmlGetCompressMode) xmlGetCompressMode __attribute((alias("xmlGetCompressMode__internal_alias"))); +#else +#ifndef xmlGetCompressMode +extern __typeof (xmlGetCompressMode) xmlGetCompressMode__internal_alias __attribute((visibility("hidden"))); +#define xmlGetCompressMode xmlGetCompressMode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetDocCompressMode +extern __typeof (xmlGetDocCompressMode) xmlGetDocCompressMode __attribute((alias("xmlGetDocCompressMode__internal_alias"))); +#else +#ifndef xmlGetDocCompressMode +extern __typeof (xmlGetDocCompressMode) xmlGetDocCompressMode__internal_alias __attribute((visibility("hidden"))); +#define xmlGetDocCompressMode xmlGetDocCompressMode__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlGetDocEntity +extern __typeof (xmlGetDocEntity) xmlGetDocEntity __attribute((alias("xmlGetDocEntity__internal_alias"))); +#else +#ifndef xmlGetDocEntity +extern __typeof (xmlGetDocEntity) xmlGetDocEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlGetDocEntity xmlGetDocEntity__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlGetDtdAttrDesc +extern __typeof (xmlGetDtdAttrDesc) xmlGetDtdAttrDesc __attribute((alias("xmlGetDtdAttrDesc__internal_alias"))); +#else +#ifndef xmlGetDtdAttrDesc +extern __typeof (xmlGetDtdAttrDesc) xmlGetDtdAttrDesc__internal_alias __attribute((visibility("hidden"))); +#define xmlGetDtdAttrDesc xmlGetDtdAttrDesc__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlGetDtdElementDesc +extern __typeof (xmlGetDtdElementDesc) xmlGetDtdElementDesc __attribute((alias("xmlGetDtdElementDesc__internal_alias"))); +#else +#ifndef xmlGetDtdElementDesc +extern __typeof (xmlGetDtdElementDesc) xmlGetDtdElementDesc__internal_alias __attribute((visibility("hidden"))); +#define xmlGetDtdElementDesc xmlGetDtdElementDesc__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlGetDtdEntity +extern __typeof (xmlGetDtdEntity) xmlGetDtdEntity __attribute((alias("xmlGetDtdEntity__internal_alias"))); +#else +#ifndef xmlGetDtdEntity +extern __typeof (xmlGetDtdEntity) xmlGetDtdEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlGetDtdEntity xmlGetDtdEntity__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlGetDtdNotationDesc +extern __typeof (xmlGetDtdNotationDesc) xmlGetDtdNotationDesc __attribute((alias("xmlGetDtdNotationDesc__internal_alias"))); +#else +#ifndef xmlGetDtdNotationDesc +extern __typeof (xmlGetDtdNotationDesc) xmlGetDtdNotationDesc__internal_alias __attribute((visibility("hidden"))); +#define xmlGetDtdNotationDesc xmlGetDtdNotationDesc__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlGetDtdQAttrDesc +extern __typeof (xmlGetDtdQAttrDesc) xmlGetDtdQAttrDesc __attribute((alias("xmlGetDtdQAttrDesc__internal_alias"))); +#else +#ifndef xmlGetDtdQAttrDesc +extern __typeof (xmlGetDtdQAttrDesc) xmlGetDtdQAttrDesc__internal_alias __attribute((visibility("hidden"))); +#define xmlGetDtdQAttrDesc xmlGetDtdQAttrDesc__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlGetDtdQElementDesc +extern __typeof (xmlGetDtdQElementDesc) xmlGetDtdQElementDesc __attribute((alias("xmlGetDtdQElementDesc__internal_alias"))); +#else +#ifndef xmlGetDtdQElementDesc +extern __typeof (xmlGetDtdQElementDesc) xmlGetDtdQElementDesc__internal_alias __attribute((visibility("hidden"))); +#define xmlGetDtdQElementDesc xmlGetDtdQElementDesc__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlGetEncodingAlias +extern __typeof (xmlGetEncodingAlias) xmlGetEncodingAlias __attribute((alias("xmlGetEncodingAlias__internal_alias"))); +#else +#ifndef xmlGetEncodingAlias +extern __typeof (xmlGetEncodingAlias) xmlGetEncodingAlias__internal_alias __attribute((visibility("hidden"))); +#define xmlGetEncodingAlias xmlGetEncodingAlias__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlGetExternalEntityLoader +extern __typeof (xmlGetExternalEntityLoader) xmlGetExternalEntityLoader __attribute((alias("xmlGetExternalEntityLoader__internal_alias"))); +#else +#ifndef xmlGetExternalEntityLoader +extern __typeof (xmlGetExternalEntityLoader) xmlGetExternalEntityLoader__internal_alias __attribute((visibility("hidden"))); +#define xmlGetExternalEntityLoader xmlGetExternalEntityLoader__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlGetFeature +extern __typeof (xmlGetFeature) xmlGetFeature __attribute((alias("xmlGetFeature__internal_alias"))); +#else +#ifndef xmlGetFeature +extern __typeof (xmlGetFeature) xmlGetFeature__internal_alias __attribute((visibility("hidden"))); +#define xmlGetFeature xmlGetFeature__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlGetFeaturesList +extern __typeof (xmlGetFeaturesList) xmlGetFeaturesList __attribute((alias("xmlGetFeaturesList__internal_alias"))); +#else +#ifndef xmlGetFeaturesList +extern __typeof (xmlGetFeaturesList) xmlGetFeaturesList__internal_alias __attribute((visibility("hidden"))); +#define xmlGetFeaturesList xmlGetFeaturesList__internal_alias +#endif +#endif +#endif + +#ifdef bottom_threads +#undef xmlGetGlobalState +extern __typeof (xmlGetGlobalState) xmlGetGlobalState __attribute((alias("xmlGetGlobalState__internal_alias"))); +#else +#ifndef xmlGetGlobalState +extern __typeof (xmlGetGlobalState) xmlGetGlobalState__internal_alias __attribute((visibility("hidden"))); +#define xmlGetGlobalState xmlGetGlobalState__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlGetID +extern __typeof (xmlGetID) xmlGetID __attribute((alias("xmlGetID__internal_alias"))); +#else +#ifndef xmlGetID +extern __typeof (xmlGetID) xmlGetID__internal_alias __attribute((visibility("hidden"))); +#define xmlGetID xmlGetID__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetIntSubset +extern __typeof (xmlGetIntSubset) xmlGetIntSubset __attribute((alias("xmlGetIntSubset__internal_alias"))); +#else +#ifndef xmlGetIntSubset +extern __typeof (xmlGetIntSubset) xmlGetIntSubset__internal_alias __attribute((visibility("hidden"))); +#define xmlGetIntSubset xmlGetIntSubset__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetLastChild +extern __typeof (xmlGetLastChild) xmlGetLastChild __attribute((alias("xmlGetLastChild__internal_alias"))); +#else +#ifndef xmlGetLastChild +extern __typeof (xmlGetLastChild) xmlGetLastChild__internal_alias __attribute((visibility("hidden"))); +#define xmlGetLastChild xmlGetLastChild__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlGetLastError +extern __typeof (xmlGetLastError) xmlGetLastError __attribute((alias("xmlGetLastError__internal_alias"))); +#else +#ifndef xmlGetLastError +extern __typeof (xmlGetLastError) xmlGetLastError__internal_alias __attribute((visibility("hidden"))); +#define xmlGetLastError xmlGetLastError__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetLineNo +extern __typeof (xmlGetLineNo) xmlGetLineNo __attribute((alias("xmlGetLineNo__internal_alias"))); +#else +#ifndef xmlGetLineNo +extern __typeof (xmlGetLineNo) xmlGetLineNo__internal_alias __attribute((visibility("hidden"))); +#define xmlGetLineNo xmlGetLineNo__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetNoNsProp +extern __typeof (xmlGetNoNsProp) xmlGetNoNsProp __attribute((alias("xmlGetNoNsProp__internal_alias"))); +#else +#ifndef xmlGetNoNsProp +extern __typeof (xmlGetNoNsProp) xmlGetNoNsProp__internal_alias __attribute((visibility("hidden"))); +#define xmlGetNoNsProp xmlGetNoNsProp__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_tree +#undef xmlGetNodePath +extern __typeof (xmlGetNodePath) xmlGetNodePath __attribute((alias("xmlGetNodePath__internal_alias"))); +#else +#ifndef xmlGetNodePath +extern __typeof (xmlGetNodePath) xmlGetNodePath__internal_alias __attribute((visibility("hidden"))); +#define xmlGetNodePath xmlGetNodePath__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlGetNsList +extern __typeof (xmlGetNsList) xmlGetNsList __attribute((alias("xmlGetNsList__internal_alias"))); +#else +#ifndef xmlGetNsList +extern __typeof (xmlGetNsList) xmlGetNsList__internal_alias __attribute((visibility("hidden"))); +#define xmlGetNsList xmlGetNsList__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetNsProp +extern __typeof (xmlGetNsProp) xmlGetNsProp __attribute((alias("xmlGetNsProp__internal_alias"))); +#else +#ifndef xmlGetNsProp +extern __typeof (xmlGetNsProp) xmlGetNsProp__internal_alias __attribute((visibility("hidden"))); +#define xmlGetNsProp xmlGetNsProp__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlGetParameterEntity +extern __typeof (xmlGetParameterEntity) xmlGetParameterEntity __attribute((alias("xmlGetParameterEntity__internal_alias"))); +#else +#ifndef xmlGetParameterEntity +extern __typeof (xmlGetParameterEntity) xmlGetParameterEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlGetParameterEntity xmlGetParameterEntity__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlGetPredefinedEntity +extern __typeof (xmlGetPredefinedEntity) xmlGetPredefinedEntity __attribute((alias("xmlGetPredefinedEntity__internal_alias"))); +#else +#ifndef xmlGetPredefinedEntity +extern __typeof (xmlGetPredefinedEntity) xmlGetPredefinedEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlGetPredefinedEntity xmlGetPredefinedEntity__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlGetProp +extern __typeof (xmlGetProp) xmlGetProp __attribute((alias("xmlGetProp__internal_alias"))); +#else +#ifndef xmlGetProp +extern __typeof (xmlGetProp) xmlGetProp__internal_alias __attribute((visibility("hidden"))); +#define xmlGetProp xmlGetProp__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlGetRefs +extern __typeof (xmlGetRefs) xmlGetRefs __attribute((alias("xmlGetRefs__internal_alias"))); +#else +#ifndef xmlGetRefs +extern __typeof (xmlGetRefs) xmlGetRefs__internal_alias __attribute((visibility("hidden"))); +#define xmlGetRefs xmlGetRefs__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlGetThreadId +extern __typeof (xmlGetThreadId) xmlGetThreadId __attribute((alias("xmlGetThreadId__internal_alias"))); +#else +#ifndef xmlGetThreadId +extern __typeof (xmlGetThreadId) xmlGetThreadId__internal_alias __attribute((visibility("hidden"))); +#define xmlGetThreadId xmlGetThreadId__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlGetUTF8Char +extern __typeof (xmlGetUTF8Char) xmlGetUTF8Char __attribute((alias("xmlGetUTF8Char__internal_alias"))); +#else +#ifndef xmlGetUTF8Char +extern __typeof (xmlGetUTF8Char) xmlGetUTF8Char__internal_alias __attribute((visibility("hidden"))); +#define xmlGetUTF8Char xmlGetUTF8Char__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlHandleEntity +extern __typeof (xmlHandleEntity) xmlHandleEntity __attribute((alias("xmlHandleEntity__internal_alias"))); +#else +#ifndef xmlHandleEntity +extern __typeof (xmlHandleEntity) xmlHandleEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlHandleEntity xmlHandleEntity__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlHasFeature +extern __typeof (xmlHasFeature) xmlHasFeature __attribute((alias("xmlHasFeature__internal_alias"))); +#else +#ifndef xmlHasFeature +extern __typeof (xmlHasFeature) xmlHasFeature__internal_alias __attribute((visibility("hidden"))); +#define xmlHasFeature xmlHasFeature__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlHasNsProp +extern __typeof (xmlHasNsProp) xmlHasNsProp __attribute((alias("xmlHasNsProp__internal_alias"))); +#else +#ifndef xmlHasNsProp +extern __typeof (xmlHasNsProp) xmlHasNsProp__internal_alias __attribute((visibility("hidden"))); +#define xmlHasNsProp xmlHasNsProp__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlHasProp +extern __typeof (xmlHasProp) xmlHasProp __attribute((alias("xmlHasProp__internal_alias"))); +#else +#ifndef xmlHasProp +extern __typeof (xmlHasProp) xmlHasProp__internal_alias __attribute((visibility("hidden"))); +#define xmlHasProp xmlHasProp__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashAddEntry +extern __typeof (xmlHashAddEntry) xmlHashAddEntry __attribute((alias("xmlHashAddEntry__internal_alias"))); +#else +#ifndef xmlHashAddEntry +extern __typeof (xmlHashAddEntry) xmlHashAddEntry__internal_alias __attribute((visibility("hidden"))); +#define xmlHashAddEntry xmlHashAddEntry__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashAddEntry2 +extern __typeof (xmlHashAddEntry2) xmlHashAddEntry2 __attribute((alias("xmlHashAddEntry2__internal_alias"))); +#else +#ifndef xmlHashAddEntry2 +extern __typeof (xmlHashAddEntry2) xmlHashAddEntry2__internal_alias __attribute((visibility("hidden"))); +#define xmlHashAddEntry2 xmlHashAddEntry2__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashAddEntry3 +extern __typeof (xmlHashAddEntry3) xmlHashAddEntry3 __attribute((alias("xmlHashAddEntry3__internal_alias"))); +#else +#ifndef xmlHashAddEntry3 +extern __typeof (xmlHashAddEntry3) xmlHashAddEntry3__internal_alias __attribute((visibility("hidden"))); +#define xmlHashAddEntry3 xmlHashAddEntry3__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashCopy +extern __typeof (xmlHashCopy) xmlHashCopy __attribute((alias("xmlHashCopy__internal_alias"))); +#else +#ifndef xmlHashCopy +extern __typeof (xmlHashCopy) xmlHashCopy__internal_alias __attribute((visibility("hidden"))); +#define xmlHashCopy xmlHashCopy__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashCreate +extern __typeof (xmlHashCreate) xmlHashCreate __attribute((alias("xmlHashCreate__internal_alias"))); +#else +#ifndef xmlHashCreate +extern __typeof (xmlHashCreate) xmlHashCreate__internal_alias __attribute((visibility("hidden"))); +#define xmlHashCreate xmlHashCreate__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashCreateDict +extern __typeof (xmlHashCreateDict) xmlHashCreateDict __attribute((alias("xmlHashCreateDict__internal_alias"))); +#else +#ifndef xmlHashCreateDict +extern __typeof (xmlHashCreateDict) xmlHashCreateDict__internal_alias __attribute((visibility("hidden"))); +#define xmlHashCreateDict xmlHashCreateDict__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashFree +extern __typeof (xmlHashFree) xmlHashFree __attribute((alias("xmlHashFree__internal_alias"))); +#else +#ifndef xmlHashFree +extern __typeof (xmlHashFree) xmlHashFree__internal_alias __attribute((visibility("hidden"))); +#define xmlHashFree xmlHashFree__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashLookup +extern __typeof (xmlHashLookup) xmlHashLookup __attribute((alias("xmlHashLookup__internal_alias"))); +#else +#ifndef xmlHashLookup +extern __typeof (xmlHashLookup) xmlHashLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlHashLookup xmlHashLookup__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashLookup2 +extern __typeof (xmlHashLookup2) xmlHashLookup2 __attribute((alias("xmlHashLookup2__internal_alias"))); +#else +#ifndef xmlHashLookup2 +extern __typeof (xmlHashLookup2) xmlHashLookup2__internal_alias __attribute((visibility("hidden"))); +#define xmlHashLookup2 xmlHashLookup2__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashLookup3 +extern __typeof (xmlHashLookup3) xmlHashLookup3 __attribute((alias("xmlHashLookup3__internal_alias"))); +#else +#ifndef xmlHashLookup3 +extern __typeof (xmlHashLookup3) xmlHashLookup3__internal_alias __attribute((visibility("hidden"))); +#define xmlHashLookup3 xmlHashLookup3__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashQLookup +extern __typeof (xmlHashQLookup) xmlHashQLookup __attribute((alias("xmlHashQLookup__internal_alias"))); +#else +#ifndef xmlHashQLookup +extern __typeof (xmlHashQLookup) xmlHashQLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlHashQLookup xmlHashQLookup__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashQLookup2 +extern __typeof (xmlHashQLookup2) xmlHashQLookup2 __attribute((alias("xmlHashQLookup2__internal_alias"))); +#else +#ifndef xmlHashQLookup2 +extern __typeof (xmlHashQLookup2) xmlHashQLookup2__internal_alias __attribute((visibility("hidden"))); +#define xmlHashQLookup2 xmlHashQLookup2__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashQLookup3 +extern __typeof (xmlHashQLookup3) xmlHashQLookup3 __attribute((alias("xmlHashQLookup3__internal_alias"))); +#else +#ifndef xmlHashQLookup3 +extern __typeof (xmlHashQLookup3) xmlHashQLookup3__internal_alias __attribute((visibility("hidden"))); +#define xmlHashQLookup3 xmlHashQLookup3__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashRemoveEntry +extern __typeof (xmlHashRemoveEntry) xmlHashRemoveEntry __attribute((alias("xmlHashRemoveEntry__internal_alias"))); +#else +#ifndef xmlHashRemoveEntry +extern __typeof (xmlHashRemoveEntry) xmlHashRemoveEntry__internal_alias __attribute((visibility("hidden"))); +#define xmlHashRemoveEntry xmlHashRemoveEntry__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashRemoveEntry2 +extern __typeof (xmlHashRemoveEntry2) xmlHashRemoveEntry2 __attribute((alias("xmlHashRemoveEntry2__internal_alias"))); +#else +#ifndef xmlHashRemoveEntry2 +extern __typeof (xmlHashRemoveEntry2) xmlHashRemoveEntry2__internal_alias __attribute((visibility("hidden"))); +#define xmlHashRemoveEntry2 xmlHashRemoveEntry2__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashRemoveEntry3 +extern __typeof (xmlHashRemoveEntry3) xmlHashRemoveEntry3 __attribute((alias("xmlHashRemoveEntry3__internal_alias"))); +#else +#ifndef xmlHashRemoveEntry3 +extern __typeof (xmlHashRemoveEntry3) xmlHashRemoveEntry3__internal_alias __attribute((visibility("hidden"))); +#define xmlHashRemoveEntry3 xmlHashRemoveEntry3__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashScan +extern __typeof (xmlHashScan) xmlHashScan __attribute((alias("xmlHashScan__internal_alias"))); +#else +#ifndef xmlHashScan +extern __typeof (xmlHashScan) xmlHashScan__internal_alias __attribute((visibility("hidden"))); +#define xmlHashScan xmlHashScan__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashScan3 +extern __typeof (xmlHashScan3) xmlHashScan3 __attribute((alias("xmlHashScan3__internal_alias"))); +#else +#ifndef xmlHashScan3 +extern __typeof (xmlHashScan3) xmlHashScan3__internal_alias __attribute((visibility("hidden"))); +#define xmlHashScan3 xmlHashScan3__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashScanFull +extern __typeof (xmlHashScanFull) xmlHashScanFull __attribute((alias("xmlHashScanFull__internal_alias"))); +#else +#ifndef xmlHashScanFull +extern __typeof (xmlHashScanFull) xmlHashScanFull__internal_alias __attribute((visibility("hidden"))); +#define xmlHashScanFull xmlHashScanFull__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashScanFull3 +extern __typeof (xmlHashScanFull3) xmlHashScanFull3 __attribute((alias("xmlHashScanFull3__internal_alias"))); +#else +#ifndef xmlHashScanFull3 +extern __typeof (xmlHashScanFull3) xmlHashScanFull3__internal_alias __attribute((visibility("hidden"))); +#define xmlHashScanFull3 xmlHashScanFull3__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashSize +extern __typeof (xmlHashSize) xmlHashSize __attribute((alias("xmlHashSize__internal_alias"))); +#else +#ifndef xmlHashSize +extern __typeof (xmlHashSize) xmlHashSize__internal_alias __attribute((visibility("hidden"))); +#define xmlHashSize xmlHashSize__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashUpdateEntry +extern __typeof (xmlHashUpdateEntry) xmlHashUpdateEntry __attribute((alias("xmlHashUpdateEntry__internal_alias"))); +#else +#ifndef xmlHashUpdateEntry +extern __typeof (xmlHashUpdateEntry) xmlHashUpdateEntry__internal_alias __attribute((visibility("hidden"))); +#define xmlHashUpdateEntry xmlHashUpdateEntry__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashUpdateEntry2 +extern __typeof (xmlHashUpdateEntry2) xmlHashUpdateEntry2 __attribute((alias("xmlHashUpdateEntry2__internal_alias"))); +#else +#ifndef xmlHashUpdateEntry2 +extern __typeof (xmlHashUpdateEntry2) xmlHashUpdateEntry2__internal_alias __attribute((visibility("hidden"))); +#define xmlHashUpdateEntry2 xmlHashUpdateEntry2__internal_alias +#endif +#endif + +#ifdef bottom_hash +#undef xmlHashUpdateEntry3 +extern __typeof (xmlHashUpdateEntry3) xmlHashUpdateEntry3 __attribute((alias("xmlHashUpdateEntry3__internal_alias"))); +#else +#ifndef xmlHashUpdateEntry3 +extern __typeof (xmlHashUpdateEntry3) xmlHashUpdateEntry3__internal_alias __attribute((visibility("hidden"))); +#define xmlHashUpdateEntry3 xmlHashUpdateEntry3__internal_alias +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOFTPClose +extern __typeof (xmlIOFTPClose) xmlIOFTPClose __attribute((alias("xmlIOFTPClose__internal_alias"))); +#else +#ifndef xmlIOFTPClose +extern __typeof (xmlIOFTPClose) xmlIOFTPClose__internal_alias __attribute((visibility("hidden"))); +#define xmlIOFTPClose xmlIOFTPClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOFTPMatch +extern __typeof (xmlIOFTPMatch) xmlIOFTPMatch __attribute((alias("xmlIOFTPMatch__internal_alias"))); +#else +#ifndef xmlIOFTPMatch +extern __typeof (xmlIOFTPMatch) xmlIOFTPMatch__internal_alias __attribute((visibility("hidden"))); +#define xmlIOFTPMatch xmlIOFTPMatch__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOFTPOpen +extern __typeof (xmlIOFTPOpen) xmlIOFTPOpen __attribute((alias("xmlIOFTPOpen__internal_alias"))); +#else +#ifndef xmlIOFTPOpen +extern __typeof (xmlIOFTPOpen) xmlIOFTPOpen__internal_alias __attribute((visibility("hidden"))); +#define xmlIOFTPOpen xmlIOFTPOpen__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOFTPRead +extern __typeof (xmlIOFTPRead) xmlIOFTPRead __attribute((alias("xmlIOFTPRead__internal_alias"))); +#else +#ifndef xmlIOFTPRead +extern __typeof (xmlIOFTPRead) xmlIOFTPRead__internal_alias __attribute((visibility("hidden"))); +#define xmlIOFTPRead xmlIOFTPRead__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOHTTPClose +extern __typeof (xmlIOHTTPClose) xmlIOHTTPClose __attribute((alias("xmlIOHTTPClose__internal_alias"))); +#else +#ifndef xmlIOHTTPClose +extern __typeof (xmlIOHTTPClose) xmlIOHTTPClose__internal_alias __attribute((visibility("hidden"))); +#define xmlIOHTTPClose xmlIOHTTPClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOHTTPMatch +extern __typeof (xmlIOHTTPMatch) xmlIOHTTPMatch __attribute((alias("xmlIOHTTPMatch__internal_alias"))); +#else +#ifndef xmlIOHTTPMatch +extern __typeof (xmlIOHTTPMatch) xmlIOHTTPMatch__internal_alias __attribute((visibility("hidden"))); +#define xmlIOHTTPMatch xmlIOHTTPMatch__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOHTTPOpen +extern __typeof (xmlIOHTTPOpen) xmlIOHTTPOpen __attribute((alias("xmlIOHTTPOpen__internal_alias"))); +#else +#ifndef xmlIOHTTPOpen +extern __typeof (xmlIOHTTPOpen) xmlIOHTTPOpen__internal_alias __attribute((visibility("hidden"))); +#define xmlIOHTTPOpen xmlIOHTTPOpen__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOHTTPOpenW +extern __typeof (xmlIOHTTPOpenW) xmlIOHTTPOpenW __attribute((alias("xmlIOHTTPOpenW__internal_alias"))); +#else +#ifndef xmlIOHTTPOpenW +extern __typeof (xmlIOHTTPOpenW) xmlIOHTTPOpenW__internal_alias __attribute((visibility("hidden"))); +#define xmlIOHTTPOpenW xmlIOHTTPOpenW__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlIOHTTPRead +extern __typeof (xmlIOHTTPRead) xmlIOHTTPRead __attribute((alias("xmlIOHTTPRead__internal_alias"))); +#else +#ifndef xmlIOHTTPRead +extern __typeof (xmlIOHTTPRead) xmlIOHTTPRead__internal_alias __attribute((visibility("hidden"))); +#define xmlIOHTTPRead xmlIOHTTPRead__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_parser +#undef xmlIOParseDTD +extern __typeof (xmlIOParseDTD) xmlIOParseDTD __attribute((alias("xmlIOParseDTD__internal_alias"))); +#else +#ifndef xmlIOParseDTD +extern __typeof (xmlIOParseDTD) xmlIOParseDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlIOParseDTD xmlIOParseDTD__internal_alias +#endif +#endif +#endif + +#ifdef bottom_encoding +#undef xmlInitCharEncodingHandlers +extern __typeof (xmlInitCharEncodingHandlers) xmlInitCharEncodingHandlers __attribute((alias("xmlInitCharEncodingHandlers__internal_alias"))); +#else +#ifndef xmlInitCharEncodingHandlers +extern __typeof (xmlInitCharEncodingHandlers) xmlInitCharEncodingHandlers__internal_alias __attribute((visibility("hidden"))); +#define xmlInitCharEncodingHandlers xmlInitCharEncodingHandlers__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlInitGlobals +extern __typeof (xmlInitGlobals) xmlInitGlobals __attribute((alias("xmlInitGlobals__internal_alias"))); +#else +#ifndef xmlInitGlobals +extern __typeof (xmlInitGlobals) xmlInitGlobals__internal_alias __attribute((visibility("hidden"))); +#define xmlInitGlobals xmlInitGlobals__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlInitMemory +extern __typeof (xmlInitMemory) xmlInitMemory __attribute((alias("xmlInitMemory__internal_alias"))); +#else +#ifndef xmlInitMemory +extern __typeof (xmlInitMemory) xmlInitMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlInitMemory xmlInitMemory__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlInitNodeInfoSeq +extern __typeof (xmlInitNodeInfoSeq) xmlInitNodeInfoSeq __attribute((alias("xmlInitNodeInfoSeq__internal_alias"))); +#else +#ifndef xmlInitNodeInfoSeq +extern __typeof (xmlInitNodeInfoSeq) xmlInitNodeInfoSeq__internal_alias __attribute((visibility("hidden"))); +#define xmlInitNodeInfoSeq xmlInitNodeInfoSeq__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlInitParser +extern __typeof (xmlInitParser) xmlInitParser __attribute((alias("xmlInitParser__internal_alias"))); +#else +#ifndef xmlInitParser +extern __typeof (xmlInitParser) xmlInitParser__internal_alias __attribute((visibility("hidden"))); +#define xmlInitParser xmlInitParser__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlInitParserCtxt +extern __typeof (xmlInitParserCtxt) xmlInitParserCtxt __attribute((alias("xmlInitParserCtxt__internal_alias"))); +#else +#ifndef xmlInitParserCtxt +extern __typeof (xmlInitParserCtxt) xmlInitParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlInitParserCtxt xmlInitParserCtxt__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlInitThreads +extern __typeof (xmlInitThreads) xmlInitThreads __attribute((alias("xmlInitThreads__internal_alias"))); +#else +#ifndef xmlInitThreads +extern __typeof (xmlInitThreads) xmlInitThreads__internal_alias __attribute((visibility("hidden"))); +#define xmlInitThreads xmlInitThreads__internal_alias +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlInitializeCatalog +extern __typeof (xmlInitializeCatalog) xmlInitializeCatalog __attribute((alias("xmlInitializeCatalog__internal_alias"))); +#else +#ifndef xmlInitializeCatalog +extern __typeof (xmlInitializeCatalog) xmlInitializeCatalog__internal_alias __attribute((visibility("hidden"))); +#define xmlInitializeCatalog xmlInitializeCatalog__internal_alias +#endif +#endif +#endif + +#ifdef bottom_dict +#undef xmlInitializeDict +extern __typeof (xmlInitializeDict) xmlInitializeDict __attribute((alias("xmlInitializeDict__internal_alias"))); +#else +#ifndef xmlInitializeDict +extern __typeof (xmlInitializeDict) xmlInitializeDict__internal_alias __attribute((visibility("hidden"))); +#define xmlInitializeDict xmlInitializeDict__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlInitializeGlobalState +extern __typeof (xmlInitializeGlobalState) xmlInitializeGlobalState __attribute((alias("xmlInitializeGlobalState__internal_alias"))); +#else +#ifndef xmlInitializeGlobalState +extern __typeof (xmlInitializeGlobalState) xmlInitializeGlobalState__internal_alias __attribute((visibility("hidden"))); +#define xmlInitializeGlobalState xmlInitializeGlobalState__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlInitializePredefinedEntities +extern __typeof (xmlInitializePredefinedEntities) xmlInitializePredefinedEntities __attribute((alias("xmlInitializePredefinedEntities__internal_alias"))); +#else +#ifndef xmlInitializePredefinedEntities +extern __typeof (xmlInitializePredefinedEntities) xmlInitializePredefinedEntities__internal_alias __attribute((visibility("hidden"))); +#define xmlInitializePredefinedEntities xmlInitializePredefinedEntities__internal_alias +#endif +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlIsBaseChar +extern __typeof (xmlIsBaseChar) xmlIsBaseChar __attribute((alias("xmlIsBaseChar__internal_alias"))); +#else +#ifndef xmlIsBaseChar +extern __typeof (xmlIsBaseChar) xmlIsBaseChar__internal_alias __attribute((visibility("hidden"))); +#define xmlIsBaseChar xmlIsBaseChar__internal_alias +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlIsBlank +extern __typeof (xmlIsBlank) xmlIsBlank __attribute((alias("xmlIsBlank__internal_alias"))); +#else +#ifndef xmlIsBlank +extern __typeof (xmlIsBlank) xmlIsBlank__internal_alias __attribute((visibility("hidden"))); +#define xmlIsBlank xmlIsBlank__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlIsBlankNode +extern __typeof (xmlIsBlankNode) xmlIsBlankNode __attribute((alias("xmlIsBlankNode__internal_alias"))); +#else +#ifndef xmlIsBlankNode +extern __typeof (xmlIsBlankNode) xmlIsBlankNode__internal_alias __attribute((visibility("hidden"))); +#define xmlIsBlankNode xmlIsBlankNode__internal_alias +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlIsChar +extern __typeof (xmlIsChar) xmlIsChar __attribute((alias("xmlIsChar__internal_alias"))); +#else +#ifndef xmlIsChar +extern __typeof (xmlIsChar) xmlIsChar__internal_alias __attribute((visibility("hidden"))); +#define xmlIsChar xmlIsChar__internal_alias +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlIsCombining +extern __typeof (xmlIsCombining) xmlIsCombining __attribute((alias("xmlIsCombining__internal_alias"))); +#else +#ifndef xmlIsCombining +extern __typeof (xmlIsCombining) xmlIsCombining__internal_alias __attribute((visibility("hidden"))); +#define xmlIsCombining xmlIsCombining__internal_alias +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlIsDigit +extern __typeof (xmlIsDigit) xmlIsDigit __attribute((alias("xmlIsDigit__internal_alias"))); +#else +#ifndef xmlIsDigit +extern __typeof (xmlIsDigit) xmlIsDigit__internal_alias __attribute((visibility("hidden"))); +#define xmlIsDigit xmlIsDigit__internal_alias +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlIsExtender +extern __typeof (xmlIsExtender) xmlIsExtender __attribute((alias("xmlIsExtender__internal_alias"))); +#else +#ifndef xmlIsExtender +extern __typeof (xmlIsExtender) xmlIsExtender__internal_alias __attribute((visibility("hidden"))); +#define xmlIsExtender xmlIsExtender__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlIsID +extern __typeof (xmlIsID) xmlIsID __attribute((alias("xmlIsID__internal_alias"))); +#else +#ifndef xmlIsID +extern __typeof (xmlIsID) xmlIsID__internal_alias __attribute((visibility("hidden"))); +#define xmlIsID xmlIsID__internal_alias +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlIsIdeographic +extern __typeof (xmlIsIdeographic) xmlIsIdeographic __attribute((alias("xmlIsIdeographic__internal_alias"))); +#else +#ifndef xmlIsIdeographic +extern __typeof (xmlIsIdeographic) xmlIsIdeographic__internal_alias __attribute((visibility("hidden"))); +#define xmlIsIdeographic xmlIsIdeographic__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlIsLetter +extern __typeof (xmlIsLetter) xmlIsLetter __attribute((alias("xmlIsLetter__internal_alias"))); +#else +#ifndef xmlIsLetter +extern __typeof (xmlIsLetter) xmlIsLetter__internal_alias __attribute((visibility("hidden"))); +#define xmlIsLetter xmlIsLetter__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlIsMainThread +extern __typeof (xmlIsMainThread) xmlIsMainThread __attribute((alias("xmlIsMainThread__internal_alias"))); +#else +#ifndef xmlIsMainThread +extern __typeof (xmlIsMainThread) xmlIsMainThread__internal_alias __attribute((visibility("hidden"))); +#define xmlIsMainThread xmlIsMainThread__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlIsMixedElement +extern __typeof (xmlIsMixedElement) xmlIsMixedElement __attribute((alias("xmlIsMixedElement__internal_alias"))); +#else +#ifndef xmlIsMixedElement +extern __typeof (xmlIsMixedElement) xmlIsMixedElement__internal_alias __attribute((visibility("hidden"))); +#define xmlIsMixedElement xmlIsMixedElement__internal_alias +#endif +#endif + +#ifdef bottom_chvalid +#undef xmlIsPubidChar +extern __typeof (xmlIsPubidChar) xmlIsPubidChar __attribute((alias("xmlIsPubidChar__internal_alias"))); +#else +#ifndef xmlIsPubidChar +extern __typeof (xmlIsPubidChar) xmlIsPubidChar__internal_alias __attribute((visibility("hidden"))); +#define xmlIsPubidChar xmlIsPubidChar__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlIsRef +extern __typeof (xmlIsRef) xmlIsRef __attribute((alias("xmlIsRef__internal_alias"))); +#else +#ifndef xmlIsRef +extern __typeof (xmlIsRef) xmlIsRef__internal_alias __attribute((visibility("hidden"))); +#define xmlIsRef xmlIsRef__internal_alias +#endif +#endif + +#ifdef bottom_xmlsave +#undef xmlIsXHTML +extern __typeof (xmlIsXHTML) xmlIsXHTML __attribute((alias("xmlIsXHTML__internal_alias"))); +#else +#ifndef xmlIsXHTML +extern __typeof (xmlIsXHTML) xmlIsXHTML__internal_alias __attribute((visibility("hidden"))); +#define xmlIsXHTML xmlIsXHTML__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlKeepBlanksDefault +extern __typeof (xmlKeepBlanksDefault) xmlKeepBlanksDefault __attribute((alias("xmlKeepBlanksDefault__internal_alias"))); +#else +#ifndef xmlKeepBlanksDefault +extern __typeof (xmlKeepBlanksDefault) xmlKeepBlanksDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlKeepBlanksDefault xmlKeepBlanksDefault__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlLastElementChild +extern __typeof (xmlLastElementChild) xmlLastElementChild __attribute((alias("xmlLastElementChild__internal_alias"))); +#else +#ifndef xmlLastElementChild +extern __typeof (xmlLastElementChild) xmlLastElementChild__internal_alias __attribute((visibility("hidden"))); +#define xmlLastElementChild xmlLastElementChild__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlLineNumbersDefault +extern __typeof (xmlLineNumbersDefault) xmlLineNumbersDefault __attribute((alias("xmlLineNumbersDefault__internal_alias"))); +#else +#ifndef xmlLineNumbersDefault +extern __typeof (xmlLineNumbersDefault) xmlLineNumbersDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlLineNumbersDefault xmlLineNumbersDefault__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlLinkGetData +extern __typeof (xmlLinkGetData) xmlLinkGetData __attribute((alias("xmlLinkGetData__internal_alias"))); +#else +#ifndef xmlLinkGetData +extern __typeof (xmlLinkGetData) xmlLinkGetData__internal_alias __attribute((visibility("hidden"))); +#define xmlLinkGetData xmlLinkGetData__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListAppend +extern __typeof (xmlListAppend) xmlListAppend __attribute((alias("xmlListAppend__internal_alias"))); +#else +#ifndef xmlListAppend +extern __typeof (xmlListAppend) xmlListAppend__internal_alias __attribute((visibility("hidden"))); +#define xmlListAppend xmlListAppend__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListClear +extern __typeof (xmlListClear) xmlListClear __attribute((alias("xmlListClear__internal_alias"))); +#else +#ifndef xmlListClear +extern __typeof (xmlListClear) xmlListClear__internal_alias __attribute((visibility("hidden"))); +#define xmlListClear xmlListClear__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListCopy +extern __typeof (xmlListCopy) xmlListCopy __attribute((alias("xmlListCopy__internal_alias"))); +#else +#ifndef xmlListCopy +extern __typeof (xmlListCopy) xmlListCopy__internal_alias __attribute((visibility("hidden"))); +#define xmlListCopy xmlListCopy__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListCreate +extern __typeof (xmlListCreate) xmlListCreate __attribute((alias("xmlListCreate__internal_alias"))); +#else +#ifndef xmlListCreate +extern __typeof (xmlListCreate) xmlListCreate__internal_alias __attribute((visibility("hidden"))); +#define xmlListCreate xmlListCreate__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListDelete +extern __typeof (xmlListDelete) xmlListDelete __attribute((alias("xmlListDelete__internal_alias"))); +#else +#ifndef xmlListDelete +extern __typeof (xmlListDelete) xmlListDelete__internal_alias __attribute((visibility("hidden"))); +#define xmlListDelete xmlListDelete__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListDup +extern __typeof (xmlListDup) xmlListDup __attribute((alias("xmlListDup__internal_alias"))); +#else +#ifndef xmlListDup +extern __typeof (xmlListDup) xmlListDup__internal_alias __attribute((visibility("hidden"))); +#define xmlListDup xmlListDup__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListEmpty +extern __typeof (xmlListEmpty) xmlListEmpty __attribute((alias("xmlListEmpty__internal_alias"))); +#else +#ifndef xmlListEmpty +extern __typeof (xmlListEmpty) xmlListEmpty__internal_alias __attribute((visibility("hidden"))); +#define xmlListEmpty xmlListEmpty__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListEnd +extern __typeof (xmlListEnd) xmlListEnd __attribute((alias("xmlListEnd__internal_alias"))); +#else +#ifndef xmlListEnd +extern __typeof (xmlListEnd) xmlListEnd__internal_alias __attribute((visibility("hidden"))); +#define xmlListEnd xmlListEnd__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListFront +extern __typeof (xmlListFront) xmlListFront __attribute((alias("xmlListFront__internal_alias"))); +#else +#ifndef xmlListFront +extern __typeof (xmlListFront) xmlListFront__internal_alias __attribute((visibility("hidden"))); +#define xmlListFront xmlListFront__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListInsert +extern __typeof (xmlListInsert) xmlListInsert __attribute((alias("xmlListInsert__internal_alias"))); +#else +#ifndef xmlListInsert +extern __typeof (xmlListInsert) xmlListInsert__internal_alias __attribute((visibility("hidden"))); +#define xmlListInsert xmlListInsert__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListMerge +extern __typeof (xmlListMerge) xmlListMerge __attribute((alias("xmlListMerge__internal_alias"))); +#else +#ifndef xmlListMerge +extern __typeof (xmlListMerge) xmlListMerge__internal_alias __attribute((visibility("hidden"))); +#define xmlListMerge xmlListMerge__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListPopBack +extern __typeof (xmlListPopBack) xmlListPopBack __attribute((alias("xmlListPopBack__internal_alias"))); +#else +#ifndef xmlListPopBack +extern __typeof (xmlListPopBack) xmlListPopBack__internal_alias __attribute((visibility("hidden"))); +#define xmlListPopBack xmlListPopBack__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListPopFront +extern __typeof (xmlListPopFront) xmlListPopFront __attribute((alias("xmlListPopFront__internal_alias"))); +#else +#ifndef xmlListPopFront +extern __typeof (xmlListPopFront) xmlListPopFront__internal_alias __attribute((visibility("hidden"))); +#define xmlListPopFront xmlListPopFront__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListPushBack +extern __typeof (xmlListPushBack) xmlListPushBack __attribute((alias("xmlListPushBack__internal_alias"))); +#else +#ifndef xmlListPushBack +extern __typeof (xmlListPushBack) xmlListPushBack__internal_alias __attribute((visibility("hidden"))); +#define xmlListPushBack xmlListPushBack__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListPushFront +extern __typeof (xmlListPushFront) xmlListPushFront __attribute((alias("xmlListPushFront__internal_alias"))); +#else +#ifndef xmlListPushFront +extern __typeof (xmlListPushFront) xmlListPushFront__internal_alias __attribute((visibility("hidden"))); +#define xmlListPushFront xmlListPushFront__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListRemoveAll +extern __typeof (xmlListRemoveAll) xmlListRemoveAll __attribute((alias("xmlListRemoveAll__internal_alias"))); +#else +#ifndef xmlListRemoveAll +extern __typeof (xmlListRemoveAll) xmlListRemoveAll__internal_alias __attribute((visibility("hidden"))); +#define xmlListRemoveAll xmlListRemoveAll__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListRemoveFirst +extern __typeof (xmlListRemoveFirst) xmlListRemoveFirst __attribute((alias("xmlListRemoveFirst__internal_alias"))); +#else +#ifndef xmlListRemoveFirst +extern __typeof (xmlListRemoveFirst) xmlListRemoveFirst__internal_alias __attribute((visibility("hidden"))); +#define xmlListRemoveFirst xmlListRemoveFirst__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListRemoveLast +extern __typeof (xmlListRemoveLast) xmlListRemoveLast __attribute((alias("xmlListRemoveLast__internal_alias"))); +#else +#ifndef xmlListRemoveLast +extern __typeof (xmlListRemoveLast) xmlListRemoveLast__internal_alias __attribute((visibility("hidden"))); +#define xmlListRemoveLast xmlListRemoveLast__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListReverse +extern __typeof (xmlListReverse) xmlListReverse __attribute((alias("xmlListReverse__internal_alias"))); +#else +#ifndef xmlListReverse +extern __typeof (xmlListReverse) xmlListReverse__internal_alias __attribute((visibility("hidden"))); +#define xmlListReverse xmlListReverse__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListReverseSearch +extern __typeof (xmlListReverseSearch) xmlListReverseSearch __attribute((alias("xmlListReverseSearch__internal_alias"))); +#else +#ifndef xmlListReverseSearch +extern __typeof (xmlListReverseSearch) xmlListReverseSearch__internal_alias __attribute((visibility("hidden"))); +#define xmlListReverseSearch xmlListReverseSearch__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListReverseWalk +extern __typeof (xmlListReverseWalk) xmlListReverseWalk __attribute((alias("xmlListReverseWalk__internal_alias"))); +#else +#ifndef xmlListReverseWalk +extern __typeof (xmlListReverseWalk) xmlListReverseWalk__internal_alias __attribute((visibility("hidden"))); +#define xmlListReverseWalk xmlListReverseWalk__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListSearch +extern __typeof (xmlListSearch) xmlListSearch __attribute((alias("xmlListSearch__internal_alias"))); +#else +#ifndef xmlListSearch +extern __typeof (xmlListSearch) xmlListSearch__internal_alias __attribute((visibility("hidden"))); +#define xmlListSearch xmlListSearch__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListSize +extern __typeof (xmlListSize) xmlListSize __attribute((alias("xmlListSize__internal_alias"))); +#else +#ifndef xmlListSize +extern __typeof (xmlListSize) xmlListSize__internal_alias __attribute((visibility("hidden"))); +#define xmlListSize xmlListSize__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListSort +extern __typeof (xmlListSort) xmlListSort __attribute((alias("xmlListSort__internal_alias"))); +#else +#ifndef xmlListSort +extern __typeof (xmlListSort) xmlListSort__internal_alias __attribute((visibility("hidden"))); +#define xmlListSort xmlListSort__internal_alias +#endif +#endif + +#ifdef bottom_list +#undef xmlListWalk +extern __typeof (xmlListWalk) xmlListWalk __attribute((alias("xmlListWalk__internal_alias"))); +#else +#ifndef xmlListWalk +extern __typeof (xmlListWalk) xmlListWalk__internal_alias __attribute((visibility("hidden"))); +#define xmlListWalk xmlListWalk__internal_alias +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlLoadACatalog +extern __typeof (xmlLoadACatalog) xmlLoadACatalog __attribute((alias("xmlLoadACatalog__internal_alias"))); +#else +#ifndef xmlLoadACatalog +extern __typeof (xmlLoadACatalog) xmlLoadACatalog__internal_alias __attribute((visibility("hidden"))); +#define xmlLoadACatalog xmlLoadACatalog__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlLoadCatalog +extern __typeof (xmlLoadCatalog) xmlLoadCatalog __attribute((alias("xmlLoadCatalog__internal_alias"))); +#else +#ifndef xmlLoadCatalog +extern __typeof (xmlLoadCatalog) xmlLoadCatalog__internal_alias __attribute((visibility("hidden"))); +#define xmlLoadCatalog xmlLoadCatalog__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlLoadCatalogs +extern __typeof (xmlLoadCatalogs) xmlLoadCatalogs __attribute((alias("xmlLoadCatalogs__internal_alias"))); +#else +#ifndef xmlLoadCatalogs +extern __typeof (xmlLoadCatalogs) xmlLoadCatalogs__internal_alias __attribute((visibility("hidden"))); +#define xmlLoadCatalogs xmlLoadCatalogs__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlLoadExternalEntity +extern __typeof (xmlLoadExternalEntity) xmlLoadExternalEntity __attribute((alias("xmlLoadExternalEntity__internal_alias"))); +#else +#ifndef xmlLoadExternalEntity +extern __typeof (xmlLoadExternalEntity) xmlLoadExternalEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlLoadExternalEntity xmlLoadExternalEntity__internal_alias +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlLoadSGMLSuperCatalog +extern __typeof (xmlLoadSGMLSuperCatalog) xmlLoadSGMLSuperCatalog __attribute((alias("xmlLoadSGMLSuperCatalog__internal_alias"))); +#else +#ifndef xmlLoadSGMLSuperCatalog +extern __typeof (xmlLoadSGMLSuperCatalog) xmlLoadSGMLSuperCatalog__internal_alias __attribute((visibility("hidden"))); +#define xmlLoadSGMLSuperCatalog xmlLoadSGMLSuperCatalog__internal_alias +#endif +#endif +#endif + +#ifdef bottom_threads +#undef xmlLockLibrary +extern __typeof (xmlLockLibrary) xmlLockLibrary __attribute((alias("xmlLockLibrary__internal_alias"))); +#else +#ifndef xmlLockLibrary +extern __typeof (xmlLockLibrary) xmlLockLibrary__internal_alias __attribute((visibility("hidden"))); +#define xmlLockLibrary xmlLockLibrary__internal_alias +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlLsCountNode +extern __typeof (xmlLsCountNode) xmlLsCountNode __attribute((alias("xmlLsCountNode__internal_alias"))); +#else +#ifndef xmlLsCountNode +extern __typeof (xmlLsCountNode) xmlLsCountNode__internal_alias __attribute((visibility("hidden"))); +#define xmlLsCountNode xmlLsCountNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_debugXML +#undef xmlLsOneNode +extern __typeof (xmlLsOneNode) xmlLsOneNode __attribute((alias("xmlLsOneNode__internal_alias"))); +#else +#ifndef xmlLsOneNode +extern __typeof (xmlLsOneNode) xmlLsOneNode__internal_alias __attribute((visibility("hidden"))); +#define xmlLsOneNode xmlLsOneNode__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMallocAtomicLoc +extern __typeof (xmlMallocAtomicLoc) xmlMallocAtomicLoc __attribute((alias("xmlMallocAtomicLoc__internal_alias"))); +#else +#ifndef xmlMallocAtomicLoc +extern __typeof (xmlMallocAtomicLoc) xmlMallocAtomicLoc__internal_alias __attribute((visibility("hidden"))); +#define xmlMallocAtomicLoc xmlMallocAtomicLoc__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMallocLoc +extern __typeof (xmlMallocLoc) xmlMallocLoc __attribute((alias("xmlMallocLoc__internal_alias"))); +#else +#ifndef xmlMallocLoc +extern __typeof (xmlMallocLoc) xmlMallocLoc__internal_alias __attribute((visibility("hidden"))); +#define xmlMallocLoc xmlMallocLoc__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemBlocks +extern __typeof (xmlMemBlocks) xmlMemBlocks __attribute((alias("xmlMemBlocks__internal_alias"))); +#else +#ifndef xmlMemBlocks +extern __typeof (xmlMemBlocks) xmlMemBlocks__internal_alias __attribute((visibility("hidden"))); +#define xmlMemBlocks xmlMemBlocks__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemDisplay +extern __typeof (xmlMemDisplay) xmlMemDisplay __attribute((alias("xmlMemDisplay__internal_alias"))); +#else +#ifndef xmlMemDisplay +extern __typeof (xmlMemDisplay) xmlMemDisplay__internal_alias __attribute((visibility("hidden"))); +#define xmlMemDisplay xmlMemDisplay__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemDisplayLast +extern __typeof (xmlMemDisplayLast) xmlMemDisplayLast __attribute((alias("xmlMemDisplayLast__internal_alias"))); +#else +#ifndef xmlMemDisplayLast +extern __typeof (xmlMemDisplayLast) xmlMemDisplayLast__internal_alias __attribute((visibility("hidden"))); +#define xmlMemDisplayLast xmlMemDisplayLast__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemFree +extern __typeof (xmlMemFree) xmlMemFree __attribute((alias("xmlMemFree__internal_alias"))); +#else +#ifndef xmlMemFree +extern __typeof (xmlMemFree) xmlMemFree__internal_alias __attribute((visibility("hidden"))); +#define xmlMemFree xmlMemFree__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemGet +extern __typeof (xmlMemGet) xmlMemGet __attribute((alias("xmlMemGet__internal_alias"))); +#else +#ifndef xmlMemGet +extern __typeof (xmlMemGet) xmlMemGet__internal_alias __attribute((visibility("hidden"))); +#define xmlMemGet xmlMemGet__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemMalloc +extern __typeof (xmlMemMalloc) xmlMemMalloc __attribute((alias("xmlMemMalloc__internal_alias"))); +#else +#ifndef xmlMemMalloc +extern __typeof (xmlMemMalloc) xmlMemMalloc__internal_alias __attribute((visibility("hidden"))); +#define xmlMemMalloc xmlMemMalloc__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemRealloc +extern __typeof (xmlMemRealloc) xmlMemRealloc __attribute((alias("xmlMemRealloc__internal_alias"))); +#else +#ifndef xmlMemRealloc +extern __typeof (xmlMemRealloc) xmlMemRealloc__internal_alias __attribute((visibility("hidden"))); +#define xmlMemRealloc xmlMemRealloc__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemSetup +extern __typeof (xmlMemSetup) xmlMemSetup __attribute((alias("xmlMemSetup__internal_alias"))); +#else +#ifndef xmlMemSetup +extern __typeof (xmlMemSetup) xmlMemSetup__internal_alias __attribute((visibility("hidden"))); +#define xmlMemSetup xmlMemSetup__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemShow +extern __typeof (xmlMemShow) xmlMemShow __attribute((alias("xmlMemShow__internal_alias"))); +#else +#ifndef xmlMemShow +extern __typeof (xmlMemShow) xmlMemShow__internal_alias __attribute((visibility("hidden"))); +#define xmlMemShow xmlMemShow__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemStrdupLoc +extern __typeof (xmlMemStrdupLoc) xmlMemStrdupLoc __attribute((alias("xmlMemStrdupLoc__internal_alias"))); +#else +#ifndef xmlMemStrdupLoc +extern __typeof (xmlMemStrdupLoc) xmlMemStrdupLoc__internal_alias __attribute((visibility("hidden"))); +#define xmlMemStrdupLoc xmlMemStrdupLoc__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemUsed +extern __typeof (xmlMemUsed) xmlMemUsed __attribute((alias("xmlMemUsed__internal_alias"))); +#else +#ifndef xmlMemUsed +extern __typeof (xmlMemUsed) xmlMemUsed__internal_alias __attribute((visibility("hidden"))); +#define xmlMemUsed xmlMemUsed__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemoryDump +extern __typeof (xmlMemoryDump) xmlMemoryDump __attribute((alias("xmlMemoryDump__internal_alias"))); +#else +#ifndef xmlMemoryDump +extern __typeof (xmlMemoryDump) xmlMemoryDump__internal_alias __attribute((visibility("hidden"))); +#define xmlMemoryDump xmlMemoryDump__internal_alias +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlMemoryStrdup +extern __typeof (xmlMemoryStrdup) xmlMemoryStrdup __attribute((alias("xmlMemoryStrdup__internal_alias"))); +#else +#ifndef xmlMemoryStrdup +extern __typeof (xmlMemoryStrdup) xmlMemoryStrdup__internal_alias __attribute((visibility("hidden"))); +#define xmlMemoryStrdup xmlMemoryStrdup__internal_alias +#endif +#endif + +#if defined(LIBXML_MODULES_ENABLED) +#ifdef bottom_xmlmodule +#undef xmlModuleClose +extern __typeof (xmlModuleClose) xmlModuleClose __attribute((alias("xmlModuleClose__internal_alias"))); +#else +#ifndef xmlModuleClose +extern __typeof (xmlModuleClose) xmlModuleClose__internal_alias __attribute((visibility("hidden"))); +#define xmlModuleClose xmlModuleClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_MODULES_ENABLED) +#ifdef bottom_xmlmodule +#undef xmlModuleFree +extern __typeof (xmlModuleFree) xmlModuleFree __attribute((alias("xmlModuleFree__internal_alias"))); +#else +#ifndef xmlModuleFree +extern __typeof (xmlModuleFree) xmlModuleFree__internal_alias __attribute((visibility("hidden"))); +#define xmlModuleFree xmlModuleFree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_MODULES_ENABLED) +#ifdef bottom_xmlmodule +#undef xmlModuleOpen +extern __typeof (xmlModuleOpen) xmlModuleOpen __attribute((alias("xmlModuleOpen__internal_alias"))); +#else +#ifndef xmlModuleOpen +extern __typeof (xmlModuleOpen) xmlModuleOpen__internal_alias __attribute((visibility("hidden"))); +#define xmlModuleOpen xmlModuleOpen__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_MODULES_ENABLED) +#ifdef bottom_xmlmodule +#undef xmlModuleSymbol +extern __typeof (xmlModuleSymbol) xmlModuleSymbol __attribute((alias("xmlModuleSymbol__internal_alias"))); +#else +#ifndef xmlModuleSymbol +extern __typeof (xmlModuleSymbol) xmlModuleSymbol__internal_alias __attribute((visibility("hidden"))); +#define xmlModuleSymbol xmlModuleSymbol__internal_alias +#endif +#endif +#endif + +#ifdef bottom_threads +#undef xmlMutexLock +extern __typeof (xmlMutexLock) xmlMutexLock __attribute((alias("xmlMutexLock__internal_alias"))); +#else +#ifndef xmlMutexLock +extern __typeof (xmlMutexLock) xmlMutexLock__internal_alias __attribute((visibility("hidden"))); +#define xmlMutexLock xmlMutexLock__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlMutexUnlock +extern __typeof (xmlMutexUnlock) xmlMutexUnlock __attribute((alias("xmlMutexUnlock__internal_alias"))); +#else +#ifndef xmlMutexUnlock +extern __typeof (xmlMutexUnlock) xmlMutexUnlock__internal_alias __attribute((visibility("hidden"))); +#define xmlMutexUnlock xmlMutexUnlock__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlNamespaceParseNCName +extern __typeof (xmlNamespaceParseNCName) xmlNamespaceParseNCName __attribute((alias("xmlNamespaceParseNCName__internal_alias"))); +#else +#ifndef xmlNamespaceParseNCName +extern __typeof (xmlNamespaceParseNCName) xmlNamespaceParseNCName__internal_alias __attribute((visibility("hidden"))); +#define xmlNamespaceParseNCName xmlNamespaceParseNCName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlNamespaceParseNSDef +extern __typeof (xmlNamespaceParseNSDef) xmlNamespaceParseNSDef __attribute((alias("xmlNamespaceParseNSDef__internal_alias"))); +#else +#ifndef xmlNamespaceParseNSDef +extern __typeof (xmlNamespaceParseNSDef) xmlNamespaceParseNSDef__internal_alias __attribute((visibility("hidden"))); +#define xmlNamespaceParseNSDef xmlNamespaceParseNSDef__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlNamespaceParseQName +extern __typeof (xmlNamespaceParseQName) xmlNamespaceParseQName __attribute((alias("xmlNamespaceParseQName__internal_alias"))); +#else +#ifndef xmlNamespaceParseQName +extern __typeof (xmlNamespaceParseQName) xmlNamespaceParseQName__internal_alias __attribute((visibility("hidden"))); +#define xmlNamespaceParseQName xmlNamespaceParseQName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPCheckResponse +extern __typeof (xmlNanoFTPCheckResponse) xmlNanoFTPCheckResponse __attribute((alias("xmlNanoFTPCheckResponse__internal_alias"))); +#else +#ifndef xmlNanoFTPCheckResponse +extern __typeof (xmlNanoFTPCheckResponse) xmlNanoFTPCheckResponse__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPCheckResponse xmlNanoFTPCheckResponse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPCleanup +extern __typeof (xmlNanoFTPCleanup) xmlNanoFTPCleanup __attribute((alias("xmlNanoFTPCleanup__internal_alias"))); +#else +#ifndef xmlNanoFTPCleanup +extern __typeof (xmlNanoFTPCleanup) xmlNanoFTPCleanup__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPCleanup xmlNanoFTPCleanup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPClose +extern __typeof (xmlNanoFTPClose) xmlNanoFTPClose __attribute((alias("xmlNanoFTPClose__internal_alias"))); +#else +#ifndef xmlNanoFTPClose +extern __typeof (xmlNanoFTPClose) xmlNanoFTPClose__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPClose xmlNanoFTPClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPCloseConnection +extern __typeof (xmlNanoFTPCloseConnection) xmlNanoFTPCloseConnection __attribute((alias("xmlNanoFTPCloseConnection__internal_alias"))); +#else +#ifndef xmlNanoFTPCloseConnection +extern __typeof (xmlNanoFTPCloseConnection) xmlNanoFTPCloseConnection__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPCloseConnection xmlNanoFTPCloseConnection__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPConnect +extern __typeof (xmlNanoFTPConnect) xmlNanoFTPConnect __attribute((alias("xmlNanoFTPConnect__internal_alias"))); +#else +#ifndef xmlNanoFTPConnect +extern __typeof (xmlNanoFTPConnect) xmlNanoFTPConnect__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPConnect xmlNanoFTPConnect__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPConnectTo +extern __typeof (xmlNanoFTPConnectTo) xmlNanoFTPConnectTo __attribute((alias("xmlNanoFTPConnectTo__internal_alias"))); +#else +#ifndef xmlNanoFTPConnectTo +extern __typeof (xmlNanoFTPConnectTo) xmlNanoFTPConnectTo__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPConnectTo xmlNanoFTPConnectTo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPCwd +extern __typeof (xmlNanoFTPCwd) xmlNanoFTPCwd __attribute((alias("xmlNanoFTPCwd__internal_alias"))); +#else +#ifndef xmlNanoFTPCwd +extern __typeof (xmlNanoFTPCwd) xmlNanoFTPCwd__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPCwd xmlNanoFTPCwd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPDele +extern __typeof (xmlNanoFTPDele) xmlNanoFTPDele __attribute((alias("xmlNanoFTPDele__internal_alias"))); +#else +#ifndef xmlNanoFTPDele +extern __typeof (xmlNanoFTPDele) xmlNanoFTPDele__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPDele xmlNanoFTPDele__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPFreeCtxt +extern __typeof (xmlNanoFTPFreeCtxt) xmlNanoFTPFreeCtxt __attribute((alias("xmlNanoFTPFreeCtxt__internal_alias"))); +#else +#ifndef xmlNanoFTPFreeCtxt +extern __typeof (xmlNanoFTPFreeCtxt) xmlNanoFTPFreeCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPFreeCtxt xmlNanoFTPFreeCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPGet +extern __typeof (xmlNanoFTPGet) xmlNanoFTPGet __attribute((alias("xmlNanoFTPGet__internal_alias"))); +#else +#ifndef xmlNanoFTPGet +extern __typeof (xmlNanoFTPGet) xmlNanoFTPGet__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPGet xmlNanoFTPGet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPGetConnection +extern __typeof (xmlNanoFTPGetConnection) xmlNanoFTPGetConnection __attribute((alias("xmlNanoFTPGetConnection__internal_alias"))); +#else +#ifndef xmlNanoFTPGetConnection +extern __typeof (xmlNanoFTPGetConnection) xmlNanoFTPGetConnection__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPGetConnection xmlNanoFTPGetConnection__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPGetResponse +extern __typeof (xmlNanoFTPGetResponse) xmlNanoFTPGetResponse __attribute((alias("xmlNanoFTPGetResponse__internal_alias"))); +#else +#ifndef xmlNanoFTPGetResponse +extern __typeof (xmlNanoFTPGetResponse) xmlNanoFTPGetResponse__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPGetResponse xmlNanoFTPGetResponse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPGetSocket +extern __typeof (xmlNanoFTPGetSocket) xmlNanoFTPGetSocket __attribute((alias("xmlNanoFTPGetSocket__internal_alias"))); +#else +#ifndef xmlNanoFTPGetSocket +extern __typeof (xmlNanoFTPGetSocket) xmlNanoFTPGetSocket__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPGetSocket xmlNanoFTPGetSocket__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPInit +extern __typeof (xmlNanoFTPInit) xmlNanoFTPInit __attribute((alias("xmlNanoFTPInit__internal_alias"))); +#else +#ifndef xmlNanoFTPInit +extern __typeof (xmlNanoFTPInit) xmlNanoFTPInit__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPInit xmlNanoFTPInit__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPList +extern __typeof (xmlNanoFTPList) xmlNanoFTPList __attribute((alias("xmlNanoFTPList__internal_alias"))); +#else +#ifndef xmlNanoFTPList +extern __typeof (xmlNanoFTPList) xmlNanoFTPList__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPList xmlNanoFTPList__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPNewCtxt +extern __typeof (xmlNanoFTPNewCtxt) xmlNanoFTPNewCtxt __attribute((alias("xmlNanoFTPNewCtxt__internal_alias"))); +#else +#ifndef xmlNanoFTPNewCtxt +extern __typeof (xmlNanoFTPNewCtxt) xmlNanoFTPNewCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPNewCtxt xmlNanoFTPNewCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPOpen +extern __typeof (xmlNanoFTPOpen) xmlNanoFTPOpen __attribute((alias("xmlNanoFTPOpen__internal_alias"))); +#else +#ifndef xmlNanoFTPOpen +extern __typeof (xmlNanoFTPOpen) xmlNanoFTPOpen__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPOpen xmlNanoFTPOpen__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPProxy +extern __typeof (xmlNanoFTPProxy) xmlNanoFTPProxy __attribute((alias("xmlNanoFTPProxy__internal_alias"))); +#else +#ifndef xmlNanoFTPProxy +extern __typeof (xmlNanoFTPProxy) xmlNanoFTPProxy__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPProxy xmlNanoFTPProxy__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPQuit +extern __typeof (xmlNanoFTPQuit) xmlNanoFTPQuit __attribute((alias("xmlNanoFTPQuit__internal_alias"))); +#else +#ifndef xmlNanoFTPQuit +extern __typeof (xmlNanoFTPQuit) xmlNanoFTPQuit__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPQuit xmlNanoFTPQuit__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPRead +extern __typeof (xmlNanoFTPRead) xmlNanoFTPRead __attribute((alias("xmlNanoFTPRead__internal_alias"))); +#else +#ifndef xmlNanoFTPRead +extern __typeof (xmlNanoFTPRead) xmlNanoFTPRead__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPRead xmlNanoFTPRead__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPScanProxy +extern __typeof (xmlNanoFTPScanProxy) xmlNanoFTPScanProxy __attribute((alias("xmlNanoFTPScanProxy__internal_alias"))); +#else +#ifndef xmlNanoFTPScanProxy +extern __typeof (xmlNanoFTPScanProxy) xmlNanoFTPScanProxy__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPScanProxy xmlNanoFTPScanProxy__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_FTP_ENABLED) +#ifdef bottom_nanoftp +#undef xmlNanoFTPUpdateURL +extern __typeof (xmlNanoFTPUpdateURL) xmlNanoFTPUpdateURL __attribute((alias("xmlNanoFTPUpdateURL__internal_alias"))); +#else +#ifndef xmlNanoFTPUpdateURL +extern __typeof (xmlNanoFTPUpdateURL) xmlNanoFTPUpdateURL__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoFTPUpdateURL xmlNanoFTPUpdateURL__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPAuthHeader +extern __typeof (xmlNanoHTTPAuthHeader) xmlNanoHTTPAuthHeader __attribute((alias("xmlNanoHTTPAuthHeader__internal_alias"))); +#else +#ifndef xmlNanoHTTPAuthHeader +extern __typeof (xmlNanoHTTPAuthHeader) xmlNanoHTTPAuthHeader__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPAuthHeader xmlNanoHTTPAuthHeader__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPCleanup +extern __typeof (xmlNanoHTTPCleanup) xmlNanoHTTPCleanup __attribute((alias("xmlNanoHTTPCleanup__internal_alias"))); +#else +#ifndef xmlNanoHTTPCleanup +extern __typeof (xmlNanoHTTPCleanup) xmlNanoHTTPCleanup__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPCleanup xmlNanoHTTPCleanup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPClose +extern __typeof (xmlNanoHTTPClose) xmlNanoHTTPClose __attribute((alias("xmlNanoHTTPClose__internal_alias"))); +#else +#ifndef xmlNanoHTTPClose +extern __typeof (xmlNanoHTTPClose) xmlNanoHTTPClose__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPClose xmlNanoHTTPClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPContentLength +extern __typeof (xmlNanoHTTPContentLength) xmlNanoHTTPContentLength __attribute((alias("xmlNanoHTTPContentLength__internal_alias"))); +#else +#ifndef xmlNanoHTTPContentLength +extern __typeof (xmlNanoHTTPContentLength) xmlNanoHTTPContentLength__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPContentLength xmlNanoHTTPContentLength__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPEncoding +extern __typeof (xmlNanoHTTPEncoding) xmlNanoHTTPEncoding __attribute((alias("xmlNanoHTTPEncoding__internal_alias"))); +#else +#ifndef xmlNanoHTTPEncoding +extern __typeof (xmlNanoHTTPEncoding) xmlNanoHTTPEncoding__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPEncoding xmlNanoHTTPEncoding__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPFetch +extern __typeof (xmlNanoHTTPFetch) xmlNanoHTTPFetch __attribute((alias("xmlNanoHTTPFetch__internal_alias"))); +#else +#ifndef xmlNanoHTTPFetch +extern __typeof (xmlNanoHTTPFetch) xmlNanoHTTPFetch__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPFetch xmlNanoHTTPFetch__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPInit +extern __typeof (xmlNanoHTTPInit) xmlNanoHTTPInit __attribute((alias("xmlNanoHTTPInit__internal_alias"))); +#else +#ifndef xmlNanoHTTPInit +extern __typeof (xmlNanoHTTPInit) xmlNanoHTTPInit__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPInit xmlNanoHTTPInit__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPMethod +extern __typeof (xmlNanoHTTPMethod) xmlNanoHTTPMethod __attribute((alias("xmlNanoHTTPMethod__internal_alias"))); +#else +#ifndef xmlNanoHTTPMethod +extern __typeof (xmlNanoHTTPMethod) xmlNanoHTTPMethod__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPMethod xmlNanoHTTPMethod__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPMethodRedir +extern __typeof (xmlNanoHTTPMethodRedir) xmlNanoHTTPMethodRedir __attribute((alias("xmlNanoHTTPMethodRedir__internal_alias"))); +#else +#ifndef xmlNanoHTTPMethodRedir +extern __typeof (xmlNanoHTTPMethodRedir) xmlNanoHTTPMethodRedir__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPMethodRedir xmlNanoHTTPMethodRedir__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPMimeType +extern __typeof (xmlNanoHTTPMimeType) xmlNanoHTTPMimeType __attribute((alias("xmlNanoHTTPMimeType__internal_alias"))); +#else +#ifndef xmlNanoHTTPMimeType +extern __typeof (xmlNanoHTTPMimeType) xmlNanoHTTPMimeType__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPMimeType xmlNanoHTTPMimeType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPOpen +extern __typeof (xmlNanoHTTPOpen) xmlNanoHTTPOpen __attribute((alias("xmlNanoHTTPOpen__internal_alias"))); +#else +#ifndef xmlNanoHTTPOpen +extern __typeof (xmlNanoHTTPOpen) xmlNanoHTTPOpen__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPOpen xmlNanoHTTPOpen__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPOpenRedir +extern __typeof (xmlNanoHTTPOpenRedir) xmlNanoHTTPOpenRedir __attribute((alias("xmlNanoHTTPOpenRedir__internal_alias"))); +#else +#ifndef xmlNanoHTTPOpenRedir +extern __typeof (xmlNanoHTTPOpenRedir) xmlNanoHTTPOpenRedir__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPOpenRedir xmlNanoHTTPOpenRedir__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPRead +extern __typeof (xmlNanoHTTPRead) xmlNanoHTTPRead __attribute((alias("xmlNanoHTTPRead__internal_alias"))); +#else +#ifndef xmlNanoHTTPRead +extern __typeof (xmlNanoHTTPRead) xmlNanoHTTPRead__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPRead xmlNanoHTTPRead__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPRedir +extern __typeof (xmlNanoHTTPRedir) xmlNanoHTTPRedir __attribute((alias("xmlNanoHTTPRedir__internal_alias"))); +#else +#ifndef xmlNanoHTTPRedir +extern __typeof (xmlNanoHTTPRedir) xmlNanoHTTPRedir__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPRedir xmlNanoHTTPRedir__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPReturnCode +extern __typeof (xmlNanoHTTPReturnCode) xmlNanoHTTPReturnCode __attribute((alias("xmlNanoHTTPReturnCode__internal_alias"))); +#else +#ifndef xmlNanoHTTPReturnCode +extern __typeof (xmlNanoHTTPReturnCode) xmlNanoHTTPReturnCode__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPReturnCode xmlNanoHTTPReturnCode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPSave +extern __typeof (xmlNanoHTTPSave) xmlNanoHTTPSave __attribute((alias("xmlNanoHTTPSave__internal_alias"))); +#else +#ifndef xmlNanoHTTPSave +extern __typeof (xmlNanoHTTPSave) xmlNanoHTTPSave__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPSave xmlNanoHTTPSave__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_nanohttp +#undef xmlNanoHTTPScanProxy +extern __typeof (xmlNanoHTTPScanProxy) xmlNanoHTTPScanProxy __attribute((alias("xmlNanoHTTPScanProxy__internal_alias"))); +#else +#ifndef xmlNanoHTTPScanProxy +extern __typeof (xmlNanoHTTPScanProxy) xmlNanoHTTPScanProxy__internal_alias __attribute((visibility("hidden"))); +#define xmlNanoHTTPScanProxy xmlNanoHTTPScanProxy__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlNewAutomata +extern __typeof (xmlNewAutomata) xmlNewAutomata __attribute((alias("xmlNewAutomata__internal_alias"))); +#else +#ifndef xmlNewAutomata +extern __typeof (xmlNewAutomata) xmlNewAutomata__internal_alias __attribute((visibility("hidden"))); +#define xmlNewAutomata xmlNewAutomata__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewCDataBlock +extern __typeof (xmlNewCDataBlock) xmlNewCDataBlock __attribute((alias("xmlNewCDataBlock__internal_alias"))); +#else +#ifndef xmlNewCDataBlock +extern __typeof (xmlNewCDataBlock) xmlNewCDataBlock__internal_alias __attribute((visibility("hidden"))); +#define xmlNewCDataBlock xmlNewCDataBlock__internal_alias +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlNewCatalog +extern __typeof (xmlNewCatalog) xmlNewCatalog __attribute((alias("xmlNewCatalog__internal_alias"))); +#else +#ifndef xmlNewCatalog +extern __typeof (xmlNewCatalog) xmlNewCatalog__internal_alias __attribute((visibility("hidden"))); +#define xmlNewCatalog xmlNewCatalog__internal_alias +#endif +#endif +#endif + +#ifdef bottom_encoding +#undef xmlNewCharEncodingHandler +extern __typeof (xmlNewCharEncodingHandler) xmlNewCharEncodingHandler __attribute((alias("xmlNewCharEncodingHandler__internal_alias"))); +#else +#ifndef xmlNewCharEncodingHandler +extern __typeof (xmlNewCharEncodingHandler) xmlNewCharEncodingHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlNewCharEncodingHandler xmlNewCharEncodingHandler__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewCharRef +extern __typeof (xmlNewCharRef) xmlNewCharRef __attribute((alias("xmlNewCharRef__internal_alias"))); +#else +#ifndef xmlNewCharRef +extern __typeof (xmlNewCharRef) xmlNewCharRef__internal_alias __attribute((visibility("hidden"))); +#define xmlNewCharRef xmlNewCharRef__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlNewChild +extern __typeof (xmlNewChild) xmlNewChild __attribute((alias("xmlNewChild__internal_alias"))); +#else +#ifndef xmlNewChild +extern __typeof (xmlNewChild) xmlNewChild__internal_alias __attribute((visibility("hidden"))); +#define xmlNewChild xmlNewChild__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewComment +extern __typeof (xmlNewComment) xmlNewComment __attribute((alias("xmlNewComment__internal_alias"))); +#else +#ifndef xmlNewComment +extern __typeof (xmlNewComment) xmlNewComment__internal_alias __attribute((visibility("hidden"))); +#define xmlNewComment xmlNewComment__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDoc +extern __typeof (xmlNewDoc) xmlNewDoc __attribute((alias("xmlNewDoc__internal_alias"))); +#else +#ifndef xmlNewDoc +extern __typeof (xmlNewDoc) xmlNewDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDoc xmlNewDoc__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDocComment +extern __typeof (xmlNewDocComment) xmlNewDocComment __attribute((alias("xmlNewDocComment__internal_alias"))); +#else +#ifndef xmlNewDocComment +extern __typeof (xmlNewDocComment) xmlNewDocComment__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocComment xmlNewDocComment__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlNewDocElementContent +extern __typeof (xmlNewDocElementContent) xmlNewDocElementContent __attribute((alias("xmlNewDocElementContent__internal_alias"))); +#else +#ifndef xmlNewDocElementContent +extern __typeof (xmlNewDocElementContent) xmlNewDocElementContent__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocElementContent xmlNewDocElementContent__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNewDocFragment +extern __typeof (xmlNewDocFragment) xmlNewDocFragment __attribute((alias("xmlNewDocFragment__internal_alias"))); +#else +#ifndef xmlNewDocFragment +extern __typeof (xmlNewDocFragment) xmlNewDocFragment__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocFragment xmlNewDocFragment__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDocNode +extern __typeof (xmlNewDocNode) xmlNewDocNode __attribute((alias("xmlNewDocNode__internal_alias"))); +#else +#ifndef xmlNewDocNode +extern __typeof (xmlNewDocNode) xmlNewDocNode__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocNode xmlNewDocNode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDocNodeEatName +extern __typeof (xmlNewDocNodeEatName) xmlNewDocNodeEatName __attribute((alias("xmlNewDocNodeEatName__internal_alias"))); +#else +#ifndef xmlNewDocNodeEatName +extern __typeof (xmlNewDocNodeEatName) xmlNewDocNodeEatName__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocNodeEatName xmlNewDocNodeEatName__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDocPI +extern __typeof (xmlNewDocPI) xmlNewDocPI __attribute((alias("xmlNewDocPI__internal_alias"))); +#else +#ifndef xmlNewDocPI +extern __typeof (xmlNewDocPI) xmlNewDocPI__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocPI xmlNewDocPI__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDocProp +extern __typeof (xmlNewDocProp) xmlNewDocProp __attribute((alias("xmlNewDocProp__internal_alias"))); +#else +#ifndef xmlNewDocProp +extern __typeof (xmlNewDocProp) xmlNewDocProp__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocProp xmlNewDocProp__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNewDocRawNode +extern __typeof (xmlNewDocRawNode) xmlNewDocRawNode __attribute((alias("xmlNewDocRawNode__internal_alias"))); +#else +#ifndef xmlNewDocRawNode +extern __typeof (xmlNewDocRawNode) xmlNewDocRawNode__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocRawNode xmlNewDocRawNode__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDocText +extern __typeof (xmlNewDocText) xmlNewDocText __attribute((alias("xmlNewDocText__internal_alias"))); +#else +#ifndef xmlNewDocText +extern __typeof (xmlNewDocText) xmlNewDocText__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocText xmlNewDocText__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDocTextLen +extern __typeof (xmlNewDocTextLen) xmlNewDocTextLen __attribute((alias("xmlNewDocTextLen__internal_alias"))); +#else +#ifndef xmlNewDocTextLen +extern __typeof (xmlNewDocTextLen) xmlNewDocTextLen__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDocTextLen xmlNewDocTextLen__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewDtd +extern __typeof (xmlNewDtd) xmlNewDtd __attribute((alias("xmlNewDtd__internal_alias"))); +#else +#ifndef xmlNewDtd +extern __typeof (xmlNewDtd) xmlNewDtd__internal_alias __attribute((visibility("hidden"))); +#define xmlNewDtd xmlNewDtd__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlNewElementContent +extern __typeof (xmlNewElementContent) xmlNewElementContent __attribute((alias("xmlNewElementContent__internal_alias"))); +#else +#ifndef xmlNewElementContent +extern __typeof (xmlNewElementContent) xmlNewElementContent__internal_alias __attribute((visibility("hidden"))); +#define xmlNewElementContent xmlNewElementContent__internal_alias +#endif +#endif + +#ifdef bottom_entities +#undef xmlNewEntity +extern __typeof (xmlNewEntity) xmlNewEntity __attribute((alias("xmlNewEntity__internal_alias"))); +#else +#ifndef xmlNewEntity +extern __typeof (xmlNewEntity) xmlNewEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlNewEntity xmlNewEntity__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlNewEntityInputStream +extern __typeof (xmlNewEntityInputStream) xmlNewEntityInputStream __attribute((alias("xmlNewEntityInputStream__internal_alias"))); +#else +#ifndef xmlNewEntityInputStream +extern __typeof (xmlNewEntityInputStream) xmlNewEntityInputStream__internal_alias __attribute((visibility("hidden"))); +#define xmlNewEntityInputStream xmlNewEntityInputStream__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlNewGlobalNs +extern __typeof (xmlNewGlobalNs) xmlNewGlobalNs __attribute((alias("xmlNewGlobalNs__internal_alias"))); +#else +#ifndef xmlNewGlobalNs +extern __typeof (xmlNewGlobalNs) xmlNewGlobalNs__internal_alias __attribute((visibility("hidden"))); +#define xmlNewGlobalNs xmlNewGlobalNs__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlNewIOInputStream +extern __typeof (xmlNewIOInputStream) xmlNewIOInputStream __attribute((alias("xmlNewIOInputStream__internal_alias"))); +#else +#ifndef xmlNewIOInputStream +extern __typeof (xmlNewIOInputStream) xmlNewIOInputStream__internal_alias __attribute((visibility("hidden"))); +#define xmlNewIOInputStream xmlNewIOInputStream__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlNewInputFromFile +extern __typeof (xmlNewInputFromFile) xmlNewInputFromFile __attribute((alias("xmlNewInputFromFile__internal_alias"))); +#else +#ifndef xmlNewInputFromFile +extern __typeof (xmlNewInputFromFile) xmlNewInputFromFile__internal_alias __attribute((visibility("hidden"))); +#define xmlNewInputFromFile xmlNewInputFromFile__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlNewInputStream +extern __typeof (xmlNewInputStream) xmlNewInputStream __attribute((alias("xmlNewInputStream__internal_alias"))); +#else +#ifndef xmlNewInputStream +extern __typeof (xmlNewInputStream) xmlNewInputStream__internal_alias __attribute((visibility("hidden"))); +#define xmlNewInputStream xmlNewInputStream__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlNewMutex +extern __typeof (xmlNewMutex) xmlNewMutex __attribute((alias("xmlNewMutex__internal_alias"))); +#else +#ifndef xmlNewMutex +extern __typeof (xmlNewMutex) xmlNewMutex__internal_alias __attribute((visibility("hidden"))); +#define xmlNewMutex xmlNewMutex__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewNode +extern __typeof (xmlNewNode) xmlNewNode __attribute((alias("xmlNewNode__internal_alias"))); +#else +#ifndef xmlNewNode +extern __typeof (xmlNewNode) xmlNewNode__internal_alias __attribute((visibility("hidden"))); +#define xmlNewNode xmlNewNode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewNodeEatName +extern __typeof (xmlNewNodeEatName) xmlNewNodeEatName __attribute((alias("xmlNewNodeEatName__internal_alias"))); +#else +#ifndef xmlNewNodeEatName +extern __typeof (xmlNewNodeEatName) xmlNewNodeEatName__internal_alias __attribute((visibility("hidden"))); +#define xmlNewNodeEatName xmlNewNodeEatName__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewNs +extern __typeof (xmlNewNs) xmlNewNs __attribute((alias("xmlNewNs__internal_alias"))); +#else +#ifndef xmlNewNs +extern __typeof (xmlNewNs) xmlNewNs__internal_alias __attribute((visibility("hidden"))); +#define xmlNewNs xmlNewNs__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewNsProp +extern __typeof (xmlNewNsProp) xmlNewNsProp __attribute((alias("xmlNewNsProp__internal_alias"))); +#else +#ifndef xmlNewNsProp +extern __typeof (xmlNewNsProp) xmlNewNsProp__internal_alias __attribute((visibility("hidden"))); +#define xmlNewNsProp xmlNewNsProp__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewNsPropEatName +extern __typeof (xmlNewNsPropEatName) xmlNewNsPropEatName __attribute((alias("xmlNewNsPropEatName__internal_alias"))); +#else +#ifndef xmlNewNsPropEatName +extern __typeof (xmlNewNsPropEatName) xmlNewNsPropEatName__internal_alias __attribute((visibility("hidden"))); +#define xmlNewNsPropEatName xmlNewNsPropEatName__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewPI +extern __typeof (xmlNewPI) xmlNewPI __attribute((alias("xmlNewPI__internal_alias"))); +#else +#ifndef xmlNewPI +extern __typeof (xmlNewPI) xmlNewPI__internal_alias __attribute((visibility("hidden"))); +#define xmlNewPI xmlNewPI__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlNewParserCtxt +extern __typeof (xmlNewParserCtxt) xmlNewParserCtxt __attribute((alias("xmlNewParserCtxt__internal_alias"))); +#else +#ifndef xmlNewParserCtxt +extern __typeof (xmlNewParserCtxt) xmlNewParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlNewParserCtxt xmlNewParserCtxt__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlNewProp +extern __typeof (xmlNewProp) xmlNewProp __attribute((alias("xmlNewProp__internal_alias"))); +#else +#ifndef xmlNewProp +extern __typeof (xmlNewProp) xmlNewProp__internal_alias __attribute((visibility("hidden"))); +#define xmlNewProp xmlNewProp__internal_alias +#endif +#endif +#endif + +#ifdef bottom_threads +#undef xmlNewRMutex +extern __typeof (xmlNewRMutex) xmlNewRMutex __attribute((alias("xmlNewRMutex__internal_alias"))); +#else +#ifndef xmlNewRMutex +extern __typeof (xmlNewRMutex) xmlNewRMutex__internal_alias __attribute((visibility("hidden"))); +#define xmlNewRMutex xmlNewRMutex__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewReference +extern __typeof (xmlNewReference) xmlNewReference __attribute((alias("xmlNewReference__internal_alias"))); +#else +#ifndef xmlNewReference +extern __typeof (xmlNewReference) xmlNewReference__internal_alias __attribute((visibility("hidden"))); +#define xmlNewReference xmlNewReference__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlNewStringInputStream +extern __typeof (xmlNewStringInputStream) xmlNewStringInputStream __attribute((alias("xmlNewStringInputStream__internal_alias"))); +#else +#ifndef xmlNewStringInputStream +extern __typeof (xmlNewStringInputStream) xmlNewStringInputStream__internal_alias __attribute((visibility("hidden"))); +#define xmlNewStringInputStream xmlNewStringInputStream__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewText +extern __typeof (xmlNewText) xmlNewText __attribute((alias("xmlNewText__internal_alias"))); +#else +#ifndef xmlNewText +extern __typeof (xmlNewText) xmlNewText__internal_alias __attribute((visibility("hidden"))); +#define xmlNewText xmlNewText__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNewTextChild +extern __typeof (xmlNewTextChild) xmlNewTextChild __attribute((alias("xmlNewTextChild__internal_alias"))); +#else +#ifndef xmlNewTextChild +extern __typeof (xmlNewTextChild) xmlNewTextChild__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextChild xmlNewTextChild__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlNewTextLen +extern __typeof (xmlNewTextLen) xmlNewTextLen __attribute((alias("xmlNewTextLen__internal_alias"))); +#else +#ifndef xmlNewTextLen +extern __typeof (xmlNewTextLen) xmlNewTextLen__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextLen xmlNewTextLen__internal_alias +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlNewTextReader +extern __typeof (xmlNewTextReader) xmlNewTextReader __attribute((alias("xmlNewTextReader__internal_alias"))); +#else +#ifndef xmlNewTextReader +extern __typeof (xmlNewTextReader) xmlNewTextReader__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextReader xmlNewTextReader__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlNewTextReaderFilename +extern __typeof (xmlNewTextReaderFilename) xmlNewTextReaderFilename __attribute((alias("xmlNewTextReaderFilename__internal_alias"))); +#else +#ifndef xmlNewTextReaderFilename +extern __typeof (xmlNewTextReaderFilename) xmlNewTextReaderFilename__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextReaderFilename xmlNewTextReaderFilename__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlNewTextWriter +extern __typeof (xmlNewTextWriter) xmlNewTextWriter __attribute((alias("xmlNewTextWriter__internal_alias"))); +#else +#ifndef xmlNewTextWriter +extern __typeof (xmlNewTextWriter) xmlNewTextWriter__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextWriter xmlNewTextWriter__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlNewTextWriterDoc +extern __typeof (xmlNewTextWriterDoc) xmlNewTextWriterDoc __attribute((alias("xmlNewTextWriterDoc__internal_alias"))); +#else +#ifndef xmlNewTextWriterDoc +extern __typeof (xmlNewTextWriterDoc) xmlNewTextWriterDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextWriterDoc xmlNewTextWriterDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlNewTextWriterFilename +extern __typeof (xmlNewTextWriterFilename) xmlNewTextWriterFilename __attribute((alias("xmlNewTextWriterFilename__internal_alias"))); +#else +#ifndef xmlNewTextWriterFilename +extern __typeof (xmlNewTextWriterFilename) xmlNewTextWriterFilename__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextWriterFilename xmlNewTextWriterFilename__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlNewTextWriterMemory +extern __typeof (xmlNewTextWriterMemory) xmlNewTextWriterMemory __attribute((alias("xmlNewTextWriterMemory__internal_alias"))); +#else +#ifndef xmlNewTextWriterMemory +extern __typeof (xmlNewTextWriterMemory) xmlNewTextWriterMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextWriterMemory xmlNewTextWriterMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlNewTextWriterPushParser +extern __typeof (xmlNewTextWriterPushParser) xmlNewTextWriterPushParser __attribute((alias("xmlNewTextWriterPushParser__internal_alias"))); +#else +#ifndef xmlNewTextWriterPushParser +extern __typeof (xmlNewTextWriterPushParser) xmlNewTextWriterPushParser__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextWriterPushParser xmlNewTextWriterPushParser__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlNewTextWriterTree +extern __typeof (xmlNewTextWriterTree) xmlNewTextWriterTree __attribute((alias("xmlNewTextWriterTree__internal_alias"))); +#else +#ifndef xmlNewTextWriterTree +extern __typeof (xmlNewTextWriterTree) xmlNewTextWriterTree__internal_alias __attribute((visibility("hidden"))); +#define xmlNewTextWriterTree xmlNewTextWriterTree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlNewValidCtxt +extern __typeof (xmlNewValidCtxt) xmlNewValidCtxt __attribute((alias("xmlNewValidCtxt__internal_alias"))); +#else +#ifndef xmlNewValidCtxt +extern __typeof (xmlNewValidCtxt) xmlNewValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlNewValidCtxt xmlNewValidCtxt__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlNextChar +extern __typeof (xmlNextChar) xmlNextChar __attribute((alias("xmlNextChar__internal_alias"))); +#else +#ifndef xmlNextChar +extern __typeof (xmlNextChar) xmlNextChar__internal_alias __attribute((visibility("hidden"))); +#define xmlNextChar xmlNextChar__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNextElementSibling +extern __typeof (xmlNextElementSibling) xmlNextElementSibling __attribute((alias("xmlNextElementSibling__internal_alias"))); +#else +#ifndef xmlNextElementSibling +extern __typeof (xmlNextElementSibling) xmlNextElementSibling__internal_alias __attribute((visibility("hidden"))); +#define xmlNextElementSibling xmlNextElementSibling__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlNoNetExternalEntityLoader +extern __typeof (xmlNoNetExternalEntityLoader) xmlNoNetExternalEntityLoader __attribute((alias("xmlNoNetExternalEntityLoader__internal_alias"))); +#else +#ifndef xmlNoNetExternalEntityLoader +extern __typeof (xmlNoNetExternalEntityLoader) xmlNoNetExternalEntityLoader__internal_alias __attribute((visibility("hidden"))); +#define xmlNoNetExternalEntityLoader xmlNoNetExternalEntityLoader__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeAddContent +extern __typeof (xmlNodeAddContent) xmlNodeAddContent __attribute((alias("xmlNodeAddContent__internal_alias"))); +#else +#ifndef xmlNodeAddContent +extern __typeof (xmlNodeAddContent) xmlNodeAddContent__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeAddContent xmlNodeAddContent__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeAddContentLen +extern __typeof (xmlNodeAddContentLen) xmlNodeAddContentLen __attribute((alias("xmlNodeAddContentLen__internal_alias"))); +#else +#ifndef xmlNodeAddContentLen +extern __typeof (xmlNodeAddContentLen) xmlNodeAddContentLen__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeAddContentLen xmlNodeAddContentLen__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeBufGetContent +extern __typeof (xmlNodeBufGetContent) xmlNodeBufGetContent __attribute((alias("xmlNodeBufGetContent__internal_alias"))); +#else +#ifndef xmlNodeBufGetContent +extern __typeof (xmlNodeBufGetContent) xmlNodeBufGetContent__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeBufGetContent xmlNodeBufGetContent__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlNodeDump +extern __typeof (xmlNodeDump) xmlNodeDump __attribute((alias("xmlNodeDump__internal_alias"))); +#else +#ifndef xmlNodeDump +extern __typeof (xmlNodeDump) xmlNodeDump__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeDump xmlNodeDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlNodeDumpOutput +extern __typeof (xmlNodeDumpOutput) xmlNodeDumpOutput __attribute((alias("xmlNodeDumpOutput__internal_alias"))); +#else +#ifndef xmlNodeDumpOutput +extern __typeof (xmlNodeDumpOutput) xmlNodeDumpOutput__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeDumpOutput xmlNodeDumpOutput__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeGetBase +extern __typeof (xmlNodeGetBase) xmlNodeGetBase __attribute((alias("xmlNodeGetBase__internal_alias"))); +#else +#ifndef xmlNodeGetBase +extern __typeof (xmlNodeGetBase) xmlNodeGetBase__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeGetBase xmlNodeGetBase__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeGetContent +extern __typeof (xmlNodeGetContent) xmlNodeGetContent __attribute((alias("xmlNodeGetContent__internal_alias"))); +#else +#ifndef xmlNodeGetContent +extern __typeof (xmlNodeGetContent) xmlNodeGetContent__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeGetContent xmlNodeGetContent__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeGetLang +extern __typeof (xmlNodeGetLang) xmlNodeGetLang __attribute((alias("xmlNodeGetLang__internal_alias"))); +#else +#ifndef xmlNodeGetLang +extern __typeof (xmlNodeGetLang) xmlNodeGetLang__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeGetLang xmlNodeGetLang__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeGetSpacePreserve +extern __typeof (xmlNodeGetSpacePreserve) xmlNodeGetSpacePreserve __attribute((alias("xmlNodeGetSpacePreserve__internal_alias"))); +#else +#ifndef xmlNodeGetSpacePreserve +extern __typeof (xmlNodeGetSpacePreserve) xmlNodeGetSpacePreserve__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeGetSpacePreserve xmlNodeGetSpacePreserve__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeIsText +extern __typeof (xmlNodeIsText) xmlNodeIsText __attribute((alias("xmlNodeIsText__internal_alias"))); +#else +#ifndef xmlNodeIsText +extern __typeof (xmlNodeIsText) xmlNodeIsText__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeIsText xmlNodeIsText__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNodeListGetRawString +extern __typeof (xmlNodeListGetRawString) xmlNodeListGetRawString __attribute((alias("xmlNodeListGetRawString__internal_alias"))); +#else +#ifndef xmlNodeListGetRawString +extern __typeof (xmlNodeListGetRawString) xmlNodeListGetRawString__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeListGetRawString xmlNodeListGetRawString__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeListGetString +extern __typeof (xmlNodeListGetString) xmlNodeListGetString __attribute((alias("xmlNodeListGetString__internal_alias"))); +#else +#ifndef xmlNodeListGetString +extern __typeof (xmlNodeListGetString) xmlNodeListGetString__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeListGetString xmlNodeListGetString__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_tree +#undef xmlNodeSetBase +extern __typeof (xmlNodeSetBase) xmlNodeSetBase __attribute((alias("xmlNodeSetBase__internal_alias"))); +#else +#ifndef xmlNodeSetBase +extern __typeof (xmlNodeSetBase) xmlNodeSetBase__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeSetBase xmlNodeSetBase__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlNodeSetContent +extern __typeof (xmlNodeSetContent) xmlNodeSetContent __attribute((alias("xmlNodeSetContent__internal_alias"))); +#else +#ifndef xmlNodeSetContent +extern __typeof (xmlNodeSetContent) xmlNodeSetContent__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeSetContent xmlNodeSetContent__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNodeSetContentLen +extern __typeof (xmlNodeSetContentLen) xmlNodeSetContentLen __attribute((alias("xmlNodeSetContentLen__internal_alias"))); +#else +#ifndef xmlNodeSetContentLen +extern __typeof (xmlNodeSetContentLen) xmlNodeSetContentLen__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeSetContentLen xmlNodeSetContentLen__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNodeSetLang +extern __typeof (xmlNodeSetLang) xmlNodeSetLang __attribute((alias("xmlNodeSetLang__internal_alias"))); +#else +#ifndef xmlNodeSetLang +extern __typeof (xmlNodeSetLang) xmlNodeSetLang__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeSetLang xmlNodeSetLang__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNodeSetName +extern __typeof (xmlNodeSetName) xmlNodeSetName __attribute((alias("xmlNodeSetName__internal_alias"))); +#else +#ifndef xmlNodeSetName +extern __typeof (xmlNodeSetName) xmlNodeSetName__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeSetName xmlNodeSetName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlNodeSetSpacePreserve +extern __typeof (xmlNodeSetSpacePreserve) xmlNodeSetSpacePreserve __attribute((alias("xmlNodeSetSpacePreserve__internal_alias"))); +#else +#ifndef xmlNodeSetSpacePreserve +extern __typeof (xmlNodeSetSpacePreserve) xmlNodeSetSpacePreserve__internal_alias __attribute((visibility("hidden"))); +#define xmlNodeSetSpacePreserve xmlNodeSetSpacePreserve__internal_alias +#endif +#endif +#endif + +#ifdef bottom_uri +#undef xmlNormalizeURIPath +extern __typeof (xmlNormalizeURIPath) xmlNormalizeURIPath __attribute((alias("xmlNormalizeURIPath__internal_alias"))); +#else +#ifndef xmlNormalizeURIPath +extern __typeof (xmlNormalizeURIPath) xmlNormalizeURIPath__internal_alias __attribute((visibility("hidden"))); +#define xmlNormalizeURIPath xmlNormalizeURIPath__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlNormalizeWindowsPath +extern __typeof (xmlNormalizeWindowsPath) xmlNormalizeWindowsPath __attribute((alias("xmlNormalizeWindowsPath__internal_alias"))); +#else +#ifndef xmlNormalizeWindowsPath +extern __typeof (xmlNormalizeWindowsPath) xmlNormalizeWindowsPath__internal_alias __attribute((visibility("hidden"))); +#define xmlNormalizeWindowsPath xmlNormalizeWindowsPath__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferClose +extern __typeof (xmlOutputBufferClose) xmlOutputBufferClose __attribute((alias("xmlOutputBufferClose__internal_alias"))); +#else +#ifndef xmlOutputBufferClose +extern __typeof (xmlOutputBufferClose) xmlOutputBufferClose__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferClose xmlOutputBufferClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferCreateBuffer +extern __typeof (xmlOutputBufferCreateBuffer) xmlOutputBufferCreateBuffer __attribute((alias("xmlOutputBufferCreateBuffer__internal_alias"))); +#else +#ifndef xmlOutputBufferCreateBuffer +extern __typeof (xmlOutputBufferCreateBuffer) xmlOutputBufferCreateBuffer__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferCreateBuffer xmlOutputBufferCreateBuffer__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferCreateFd +extern __typeof (xmlOutputBufferCreateFd) xmlOutputBufferCreateFd __attribute((alias("xmlOutputBufferCreateFd__internal_alias"))); +#else +#ifndef xmlOutputBufferCreateFd +extern __typeof (xmlOutputBufferCreateFd) xmlOutputBufferCreateFd__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferCreateFd xmlOutputBufferCreateFd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferCreateFile +extern __typeof (xmlOutputBufferCreateFile) xmlOutputBufferCreateFile __attribute((alias("xmlOutputBufferCreateFile__internal_alias"))); +#else +#ifndef xmlOutputBufferCreateFile +extern __typeof (xmlOutputBufferCreateFile) xmlOutputBufferCreateFile__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferCreateFile xmlOutputBufferCreateFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferCreateFilename +extern __typeof (xmlOutputBufferCreateFilename) xmlOutputBufferCreateFilename __attribute((alias("xmlOutputBufferCreateFilename__internal_alias"))); +#else +#ifndef xmlOutputBufferCreateFilename +extern __typeof (xmlOutputBufferCreateFilename) xmlOutputBufferCreateFilename__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferCreateFilename xmlOutputBufferCreateFilename__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlOutputBufferCreateFilenameDefault +extern __typeof (xmlOutputBufferCreateFilenameDefault) xmlOutputBufferCreateFilenameDefault __attribute((alias("xmlOutputBufferCreateFilenameDefault__internal_alias"))); +#else +#ifndef xmlOutputBufferCreateFilenameDefault +extern __typeof (xmlOutputBufferCreateFilenameDefault) xmlOutputBufferCreateFilenameDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferCreateFilenameDefault xmlOutputBufferCreateFilenameDefault__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferCreateIO +extern __typeof (xmlOutputBufferCreateIO) xmlOutputBufferCreateIO __attribute((alias("xmlOutputBufferCreateIO__internal_alias"))); +#else +#ifndef xmlOutputBufferCreateIO +extern __typeof (xmlOutputBufferCreateIO) xmlOutputBufferCreateIO__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferCreateIO xmlOutputBufferCreateIO__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferFlush +extern __typeof (xmlOutputBufferFlush) xmlOutputBufferFlush __attribute((alias("xmlOutputBufferFlush__internal_alias"))); +#else +#ifndef xmlOutputBufferFlush +extern __typeof (xmlOutputBufferFlush) xmlOutputBufferFlush__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferFlush xmlOutputBufferFlush__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferGetContent +extern __typeof (xmlOutputBufferGetContent) xmlOutputBufferGetContent __attribute((alias("xmlOutputBufferGetContent__internal_alias"))); +#else +#ifndef xmlOutputBufferGetContent +extern __typeof (xmlOutputBufferGetContent) xmlOutputBufferGetContent__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferGetContent xmlOutputBufferGetContent__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferGetSize +extern __typeof (xmlOutputBufferGetSize) xmlOutputBufferGetSize __attribute((alias("xmlOutputBufferGetSize__internal_alias"))); +#else +#ifndef xmlOutputBufferGetSize +extern __typeof (xmlOutputBufferGetSize) xmlOutputBufferGetSize__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferGetSize xmlOutputBufferGetSize__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferWrite +extern __typeof (xmlOutputBufferWrite) xmlOutputBufferWrite __attribute((alias("xmlOutputBufferWrite__internal_alias"))); +#else +#ifndef xmlOutputBufferWrite +extern __typeof (xmlOutputBufferWrite) xmlOutputBufferWrite__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferWrite xmlOutputBufferWrite__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferWriteEscape +extern __typeof (xmlOutputBufferWriteEscape) xmlOutputBufferWriteEscape __attribute((alias("xmlOutputBufferWriteEscape__internal_alias"))); +#else +#ifndef xmlOutputBufferWriteEscape +extern __typeof (xmlOutputBufferWriteEscape) xmlOutputBufferWriteEscape__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferWriteEscape xmlOutputBufferWriteEscape__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlOutputBufferWriteString +extern __typeof (xmlOutputBufferWriteString) xmlOutputBufferWriteString __attribute((alias("xmlOutputBufferWriteString__internal_alias"))); +#else +#ifndef xmlOutputBufferWriteString +extern __typeof (xmlOutputBufferWriteString) xmlOutputBufferWriteString__internal_alias __attribute((visibility("hidden"))); +#define xmlOutputBufferWriteString xmlOutputBufferWriteString__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseAttValue +extern __typeof (xmlParseAttValue) xmlParseAttValue __attribute((alias("xmlParseAttValue__internal_alias"))); +#else +#ifndef xmlParseAttValue +extern __typeof (xmlParseAttValue) xmlParseAttValue__internal_alias __attribute((visibility("hidden"))); +#define xmlParseAttValue xmlParseAttValue__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseAttribute +extern __typeof (xmlParseAttribute) xmlParseAttribute __attribute((alias("xmlParseAttribute__internal_alias"))); +#else +#ifndef xmlParseAttribute +extern __typeof (xmlParseAttribute) xmlParseAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlParseAttribute xmlParseAttribute__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseAttributeListDecl +extern __typeof (xmlParseAttributeListDecl) xmlParseAttributeListDecl __attribute((alias("xmlParseAttributeListDecl__internal_alias"))); +#else +#ifndef xmlParseAttributeListDecl +extern __typeof (xmlParseAttributeListDecl) xmlParseAttributeListDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseAttributeListDecl xmlParseAttributeListDecl__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseAttributeType +extern __typeof (xmlParseAttributeType) xmlParseAttributeType __attribute((alias("xmlParseAttributeType__internal_alias"))); +#else +#ifndef xmlParseAttributeType +extern __typeof (xmlParseAttributeType) xmlParseAttributeType__internal_alias __attribute((visibility("hidden"))); +#define xmlParseAttributeType xmlParseAttributeType__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseBalancedChunkMemory +extern __typeof (xmlParseBalancedChunkMemory) xmlParseBalancedChunkMemory __attribute((alias("xmlParseBalancedChunkMemory__internal_alias"))); +#else +#ifndef xmlParseBalancedChunkMemory +extern __typeof (xmlParseBalancedChunkMemory) xmlParseBalancedChunkMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlParseBalancedChunkMemory xmlParseBalancedChunkMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseBalancedChunkMemoryRecover +extern __typeof (xmlParseBalancedChunkMemoryRecover) xmlParseBalancedChunkMemoryRecover __attribute((alias("xmlParseBalancedChunkMemoryRecover__internal_alias"))); +#else +#ifndef xmlParseBalancedChunkMemoryRecover +extern __typeof (xmlParseBalancedChunkMemoryRecover) xmlParseBalancedChunkMemoryRecover__internal_alias __attribute((visibility("hidden"))); +#define xmlParseBalancedChunkMemoryRecover xmlParseBalancedChunkMemoryRecover__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseCDSect +extern __typeof (xmlParseCDSect) xmlParseCDSect __attribute((alias("xmlParseCDSect__internal_alias"))); +#else +#ifndef xmlParseCDSect +extern __typeof (xmlParseCDSect) xmlParseCDSect__internal_alias __attribute((visibility("hidden"))); +#define xmlParseCDSect xmlParseCDSect__internal_alias +#endif +#endif + +#if defined(LIBXML_CATALOG_ENABLED) +#ifdef bottom_catalog +#undef xmlParseCatalogFile +extern __typeof (xmlParseCatalogFile) xmlParseCatalogFile __attribute((alias("xmlParseCatalogFile__internal_alias"))); +#else +#ifndef xmlParseCatalogFile +extern __typeof (xmlParseCatalogFile) xmlParseCatalogFile__internal_alias __attribute((visibility("hidden"))); +#define xmlParseCatalogFile xmlParseCatalogFile__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseCharData +extern __typeof (xmlParseCharData) xmlParseCharData __attribute((alias("xmlParseCharData__internal_alias"))); +#else +#ifndef xmlParseCharData +extern __typeof (xmlParseCharData) xmlParseCharData__internal_alias __attribute((visibility("hidden"))); +#define xmlParseCharData xmlParseCharData__internal_alias +#endif +#endif + +#ifdef bottom_encoding +#undef xmlParseCharEncoding +extern __typeof (xmlParseCharEncoding) xmlParseCharEncoding __attribute((alias("xmlParseCharEncoding__internal_alias"))); +#else +#ifndef xmlParseCharEncoding +extern __typeof (xmlParseCharEncoding) xmlParseCharEncoding__internal_alias __attribute((visibility("hidden"))); +#define xmlParseCharEncoding xmlParseCharEncoding__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseCharRef +extern __typeof (xmlParseCharRef) xmlParseCharRef __attribute((alias("xmlParseCharRef__internal_alias"))); +#else +#ifndef xmlParseCharRef +extern __typeof (xmlParseCharRef) xmlParseCharRef__internal_alias __attribute((visibility("hidden"))); +#define xmlParseCharRef xmlParseCharRef__internal_alias +#endif +#endif + +#if defined(LIBXML_PUSH_ENABLED) +#ifdef bottom_parser +#undef xmlParseChunk +extern __typeof (xmlParseChunk) xmlParseChunk __attribute((alias("xmlParseChunk__internal_alias"))); +#else +#ifndef xmlParseChunk +extern __typeof (xmlParseChunk) xmlParseChunk__internal_alias __attribute((visibility("hidden"))); +#define xmlParseChunk xmlParseChunk__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseComment +extern __typeof (xmlParseComment) xmlParseComment __attribute((alias("xmlParseComment__internal_alias"))); +#else +#ifndef xmlParseComment +extern __typeof (xmlParseComment) xmlParseComment__internal_alias __attribute((visibility("hidden"))); +#define xmlParseComment xmlParseComment__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseContent +extern __typeof (xmlParseContent) xmlParseContent __attribute((alias("xmlParseContent__internal_alias"))); +#else +#ifndef xmlParseContent +extern __typeof (xmlParseContent) xmlParseContent__internal_alias __attribute((visibility("hidden"))); +#define xmlParseContent xmlParseContent__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseCtxtExternalEntity +extern __typeof (xmlParseCtxtExternalEntity) xmlParseCtxtExternalEntity __attribute((alias("xmlParseCtxtExternalEntity__internal_alias"))); +#else +#ifndef xmlParseCtxtExternalEntity +extern __typeof (xmlParseCtxtExternalEntity) xmlParseCtxtExternalEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlParseCtxtExternalEntity xmlParseCtxtExternalEntity__internal_alias +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_parser +#undef xmlParseDTD +extern __typeof (xmlParseDTD) xmlParseDTD __attribute((alias("xmlParseDTD__internal_alias"))); +#else +#ifndef xmlParseDTD +extern __typeof (xmlParseDTD) xmlParseDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlParseDTD xmlParseDTD__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseDefaultDecl +extern __typeof (xmlParseDefaultDecl) xmlParseDefaultDecl __attribute((alias("xmlParseDefaultDecl__internal_alias"))); +#else +#ifndef xmlParseDefaultDecl +extern __typeof (xmlParseDefaultDecl) xmlParseDefaultDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseDefaultDecl xmlParseDefaultDecl__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseDoc +extern __typeof (xmlParseDoc) xmlParseDoc __attribute((alias("xmlParseDoc__internal_alias"))); +#else +#ifndef xmlParseDoc +extern __typeof (xmlParseDoc) xmlParseDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlParseDoc xmlParseDoc__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseDocTypeDecl +extern __typeof (xmlParseDocTypeDecl) xmlParseDocTypeDecl __attribute((alias("xmlParseDocTypeDecl__internal_alias"))); +#else +#ifndef xmlParseDocTypeDecl +extern __typeof (xmlParseDocTypeDecl) xmlParseDocTypeDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseDocTypeDecl xmlParseDocTypeDecl__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseDocument +extern __typeof (xmlParseDocument) xmlParseDocument __attribute((alias("xmlParseDocument__internal_alias"))); +#else +#ifndef xmlParseDocument +extern __typeof (xmlParseDocument) xmlParseDocument__internal_alias __attribute((visibility("hidden"))); +#define xmlParseDocument xmlParseDocument__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseElement +extern __typeof (xmlParseElement) xmlParseElement __attribute((alias("xmlParseElement__internal_alias"))); +#else +#ifndef xmlParseElement +extern __typeof (xmlParseElement) xmlParseElement__internal_alias __attribute((visibility("hidden"))); +#define xmlParseElement xmlParseElement__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseElementChildrenContentDecl +extern __typeof (xmlParseElementChildrenContentDecl) xmlParseElementChildrenContentDecl __attribute((alias("xmlParseElementChildrenContentDecl__internal_alias"))); +#else +#ifndef xmlParseElementChildrenContentDecl +extern __typeof (xmlParseElementChildrenContentDecl) xmlParseElementChildrenContentDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseElementChildrenContentDecl xmlParseElementChildrenContentDecl__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseElementContentDecl +extern __typeof (xmlParseElementContentDecl) xmlParseElementContentDecl __attribute((alias("xmlParseElementContentDecl__internal_alias"))); +#else +#ifndef xmlParseElementContentDecl +extern __typeof (xmlParseElementContentDecl) xmlParseElementContentDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseElementContentDecl xmlParseElementContentDecl__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseElementDecl +extern __typeof (xmlParseElementDecl) xmlParseElementDecl __attribute((alias("xmlParseElementDecl__internal_alias"))); +#else +#ifndef xmlParseElementDecl +extern __typeof (xmlParseElementDecl) xmlParseElementDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseElementDecl xmlParseElementDecl__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseElementMixedContentDecl +extern __typeof (xmlParseElementMixedContentDecl) xmlParseElementMixedContentDecl __attribute((alias("xmlParseElementMixedContentDecl__internal_alias"))); +#else +#ifndef xmlParseElementMixedContentDecl +extern __typeof (xmlParseElementMixedContentDecl) xmlParseElementMixedContentDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseElementMixedContentDecl xmlParseElementMixedContentDecl__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseEncName +extern __typeof (xmlParseEncName) xmlParseEncName __attribute((alias("xmlParseEncName__internal_alias"))); +#else +#ifndef xmlParseEncName +extern __typeof (xmlParseEncName) xmlParseEncName__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEncName xmlParseEncName__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseEncodingDecl +extern __typeof (xmlParseEncodingDecl) xmlParseEncodingDecl __attribute((alias("xmlParseEncodingDecl__internal_alias"))); +#else +#ifndef xmlParseEncodingDecl +extern __typeof (xmlParseEncodingDecl) xmlParseEncodingDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEncodingDecl xmlParseEncodingDecl__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseEndTag +extern __typeof (xmlParseEndTag) xmlParseEndTag __attribute((alias("xmlParseEndTag__internal_alias"))); +#else +#ifndef xmlParseEndTag +extern __typeof (xmlParseEndTag) xmlParseEndTag__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEndTag xmlParseEndTag__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseEntity +extern __typeof (xmlParseEntity) xmlParseEntity __attribute((alias("xmlParseEntity__internal_alias"))); +#else +#ifndef xmlParseEntity +extern __typeof (xmlParseEntity) xmlParseEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEntity xmlParseEntity__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseEntityDecl +extern __typeof (xmlParseEntityDecl) xmlParseEntityDecl __attribute((alias("xmlParseEntityDecl__internal_alias"))); +#else +#ifndef xmlParseEntityDecl +extern __typeof (xmlParseEntityDecl) xmlParseEntityDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEntityDecl xmlParseEntityDecl__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseEntityRef +extern __typeof (xmlParseEntityRef) xmlParseEntityRef __attribute((alias("xmlParseEntityRef__internal_alias"))); +#else +#ifndef xmlParseEntityRef +extern __typeof (xmlParseEntityRef) xmlParseEntityRef__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEntityRef xmlParseEntityRef__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseEntityValue +extern __typeof (xmlParseEntityValue) xmlParseEntityValue __attribute((alias("xmlParseEntityValue__internal_alias"))); +#else +#ifndef xmlParseEntityValue +extern __typeof (xmlParseEntityValue) xmlParseEntityValue__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEntityValue xmlParseEntityValue__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseEnumeratedType +extern __typeof (xmlParseEnumeratedType) xmlParseEnumeratedType __attribute((alias("xmlParseEnumeratedType__internal_alias"))); +#else +#ifndef xmlParseEnumeratedType +extern __typeof (xmlParseEnumeratedType) xmlParseEnumeratedType__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEnumeratedType xmlParseEnumeratedType__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseEnumerationType +extern __typeof (xmlParseEnumerationType) xmlParseEnumerationType __attribute((alias("xmlParseEnumerationType__internal_alias"))); +#else +#ifndef xmlParseEnumerationType +extern __typeof (xmlParseEnumerationType) xmlParseEnumerationType__internal_alias __attribute((visibility("hidden"))); +#define xmlParseEnumerationType xmlParseEnumerationType__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseExtParsedEnt +extern __typeof (xmlParseExtParsedEnt) xmlParseExtParsedEnt __attribute((alias("xmlParseExtParsedEnt__internal_alias"))); +#else +#ifndef xmlParseExtParsedEnt +extern __typeof (xmlParseExtParsedEnt) xmlParseExtParsedEnt__internal_alias __attribute((visibility("hidden"))); +#define xmlParseExtParsedEnt xmlParseExtParsedEnt__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseExternalEntity +extern __typeof (xmlParseExternalEntity) xmlParseExternalEntity __attribute((alias("xmlParseExternalEntity__internal_alias"))); +#else +#ifndef xmlParseExternalEntity +extern __typeof (xmlParseExternalEntity) xmlParseExternalEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlParseExternalEntity xmlParseExternalEntity__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseExternalID +extern __typeof (xmlParseExternalID) xmlParseExternalID __attribute((alias("xmlParseExternalID__internal_alias"))); +#else +#ifndef xmlParseExternalID +extern __typeof (xmlParseExternalID) xmlParseExternalID__internal_alias __attribute((visibility("hidden"))); +#define xmlParseExternalID xmlParseExternalID__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseExternalSubset +extern __typeof (xmlParseExternalSubset) xmlParseExternalSubset __attribute((alias("xmlParseExternalSubset__internal_alias"))); +#else +#ifndef xmlParseExternalSubset +extern __typeof (xmlParseExternalSubset) xmlParseExternalSubset__internal_alias __attribute((visibility("hidden"))); +#define xmlParseExternalSubset xmlParseExternalSubset__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseFile +extern __typeof (xmlParseFile) xmlParseFile __attribute((alias("xmlParseFile__internal_alias"))); +#else +#ifndef xmlParseFile +extern __typeof (xmlParseFile) xmlParseFile__internal_alias __attribute((visibility("hidden"))); +#define xmlParseFile xmlParseFile__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseInNodeContext +extern __typeof (xmlParseInNodeContext) xmlParseInNodeContext __attribute((alias("xmlParseInNodeContext__internal_alias"))); +#else +#ifndef xmlParseInNodeContext +extern __typeof (xmlParseInNodeContext) xmlParseInNodeContext__internal_alias __attribute((visibility("hidden"))); +#define xmlParseInNodeContext xmlParseInNodeContext__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseMarkupDecl +extern __typeof (xmlParseMarkupDecl) xmlParseMarkupDecl __attribute((alias("xmlParseMarkupDecl__internal_alias"))); +#else +#ifndef xmlParseMarkupDecl +extern __typeof (xmlParseMarkupDecl) xmlParseMarkupDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseMarkupDecl xmlParseMarkupDecl__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseMemory +extern __typeof (xmlParseMemory) xmlParseMemory __attribute((alias("xmlParseMemory__internal_alias"))); +#else +#ifndef xmlParseMemory +extern __typeof (xmlParseMemory) xmlParseMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlParseMemory xmlParseMemory__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseMisc +extern __typeof (xmlParseMisc) xmlParseMisc __attribute((alias("xmlParseMisc__internal_alias"))); +#else +#ifndef xmlParseMisc +extern __typeof (xmlParseMisc) xmlParseMisc__internal_alias __attribute((visibility("hidden"))); +#define xmlParseMisc xmlParseMisc__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseName +extern __typeof (xmlParseName) xmlParseName __attribute((alias("xmlParseName__internal_alias"))); +#else +#ifndef xmlParseName +extern __typeof (xmlParseName) xmlParseName__internal_alias __attribute((visibility("hidden"))); +#define xmlParseName xmlParseName__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlParseNamespace +extern __typeof (xmlParseNamespace) xmlParseNamespace __attribute((alias("xmlParseNamespace__internal_alias"))); +#else +#ifndef xmlParseNamespace +extern __typeof (xmlParseNamespace) xmlParseNamespace__internal_alias __attribute((visibility("hidden"))); +#define xmlParseNamespace xmlParseNamespace__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseNmtoken +extern __typeof (xmlParseNmtoken) xmlParseNmtoken __attribute((alias("xmlParseNmtoken__internal_alias"))); +#else +#ifndef xmlParseNmtoken +extern __typeof (xmlParseNmtoken) xmlParseNmtoken__internal_alias __attribute((visibility("hidden"))); +#define xmlParseNmtoken xmlParseNmtoken__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseNotationDecl +extern __typeof (xmlParseNotationDecl) xmlParseNotationDecl __attribute((alias("xmlParseNotationDecl__internal_alias"))); +#else +#ifndef xmlParseNotationDecl +extern __typeof (xmlParseNotationDecl) xmlParseNotationDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseNotationDecl xmlParseNotationDecl__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseNotationType +extern __typeof (xmlParseNotationType) xmlParseNotationType __attribute((alias("xmlParseNotationType__internal_alias"))); +#else +#ifndef xmlParseNotationType +extern __typeof (xmlParseNotationType) xmlParseNotationType__internal_alias __attribute((visibility("hidden"))); +#define xmlParseNotationType xmlParseNotationType__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParsePEReference +extern __typeof (xmlParsePEReference) xmlParsePEReference __attribute((alias("xmlParsePEReference__internal_alias"))); +#else +#ifndef xmlParsePEReference +extern __typeof (xmlParsePEReference) xmlParsePEReference__internal_alias __attribute((visibility("hidden"))); +#define xmlParsePEReference xmlParsePEReference__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParsePI +extern __typeof (xmlParsePI) xmlParsePI __attribute((alias("xmlParsePI__internal_alias"))); +#else +#ifndef xmlParsePI +extern __typeof (xmlParsePI) xmlParsePI__internal_alias __attribute((visibility("hidden"))); +#define xmlParsePI xmlParsePI__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParsePITarget +extern __typeof (xmlParsePITarget) xmlParsePITarget __attribute((alias("xmlParsePITarget__internal_alias"))); +#else +#ifndef xmlParsePITarget +extern __typeof (xmlParsePITarget) xmlParsePITarget__internal_alias __attribute((visibility("hidden"))); +#define xmlParsePITarget xmlParsePITarget__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParsePubidLiteral +extern __typeof (xmlParsePubidLiteral) xmlParsePubidLiteral __attribute((alias("xmlParsePubidLiteral__internal_alias"))); +#else +#ifndef xmlParsePubidLiteral +extern __typeof (xmlParsePubidLiteral) xmlParsePubidLiteral__internal_alias __attribute((visibility("hidden"))); +#define xmlParsePubidLiteral xmlParsePubidLiteral__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlParseQuotedString +extern __typeof (xmlParseQuotedString) xmlParseQuotedString __attribute((alias("xmlParseQuotedString__internal_alias"))); +#else +#ifndef xmlParseQuotedString +extern __typeof (xmlParseQuotedString) xmlParseQuotedString__internal_alias __attribute((visibility("hidden"))); +#define xmlParseQuotedString xmlParseQuotedString__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseReference +extern __typeof (xmlParseReference) xmlParseReference __attribute((alias("xmlParseReference__internal_alias"))); +#else +#ifndef xmlParseReference +extern __typeof (xmlParseReference) xmlParseReference__internal_alias __attribute((visibility("hidden"))); +#define xmlParseReference xmlParseReference__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseSDDecl +extern __typeof (xmlParseSDDecl) xmlParseSDDecl __attribute((alias("xmlParseSDDecl__internal_alias"))); +#else +#ifndef xmlParseSDDecl +extern __typeof (xmlParseSDDecl) xmlParseSDDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseSDDecl xmlParseSDDecl__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlParseStartTag +extern __typeof (xmlParseStartTag) xmlParseStartTag __attribute((alias("xmlParseStartTag__internal_alias"))); +#else +#ifndef xmlParseStartTag +extern __typeof (xmlParseStartTag) xmlParseStartTag__internal_alias __attribute((visibility("hidden"))); +#define xmlParseStartTag xmlParseStartTag__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseSystemLiteral +extern __typeof (xmlParseSystemLiteral) xmlParseSystemLiteral __attribute((alias("xmlParseSystemLiteral__internal_alias"))); +#else +#ifndef xmlParseSystemLiteral +extern __typeof (xmlParseSystemLiteral) xmlParseSystemLiteral__internal_alias __attribute((visibility("hidden"))); +#define xmlParseSystemLiteral xmlParseSystemLiteral__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseTextDecl +extern __typeof (xmlParseTextDecl) xmlParseTextDecl __attribute((alias("xmlParseTextDecl__internal_alias"))); +#else +#ifndef xmlParseTextDecl +extern __typeof (xmlParseTextDecl) xmlParseTextDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseTextDecl xmlParseTextDecl__internal_alias +#endif +#endif + +#ifdef bottom_uri +#undef xmlParseURI +extern __typeof (xmlParseURI) xmlParseURI __attribute((alias("xmlParseURI__internal_alias"))); +#else +#ifndef xmlParseURI +extern __typeof (xmlParseURI) xmlParseURI__internal_alias __attribute((visibility("hidden"))); +#define xmlParseURI xmlParseURI__internal_alias +#endif +#endif + +#ifdef bottom_uri +#undef xmlParseURIRaw +extern __typeof (xmlParseURIRaw) xmlParseURIRaw __attribute((alias("xmlParseURIRaw__internal_alias"))); +#else +#ifndef xmlParseURIRaw +extern __typeof (xmlParseURIRaw) xmlParseURIRaw__internal_alias __attribute((visibility("hidden"))); +#define xmlParseURIRaw xmlParseURIRaw__internal_alias +#endif +#endif + +#ifdef bottom_uri +#undef xmlParseURIReference +extern __typeof (xmlParseURIReference) xmlParseURIReference __attribute((alias("xmlParseURIReference__internal_alias"))); +#else +#ifndef xmlParseURIReference +extern __typeof (xmlParseURIReference) xmlParseURIReference__internal_alias __attribute((visibility("hidden"))); +#define xmlParseURIReference xmlParseURIReference__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseVersionInfo +extern __typeof (xmlParseVersionInfo) xmlParseVersionInfo __attribute((alias("xmlParseVersionInfo__internal_alias"))); +#else +#ifndef xmlParseVersionInfo +extern __typeof (xmlParseVersionInfo) xmlParseVersionInfo__internal_alias __attribute((visibility("hidden"))); +#define xmlParseVersionInfo xmlParseVersionInfo__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseVersionNum +extern __typeof (xmlParseVersionNum) xmlParseVersionNum __attribute((alias("xmlParseVersionNum__internal_alias"))); +#else +#ifndef xmlParseVersionNum +extern __typeof (xmlParseVersionNum) xmlParseVersionNum__internal_alias __attribute((visibility("hidden"))); +#define xmlParseVersionNum xmlParseVersionNum__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParseXMLDecl +extern __typeof (xmlParseXMLDecl) xmlParseXMLDecl __attribute((alias("xmlParseXMLDecl__internal_alias"))); +#else +#ifndef xmlParseXMLDecl +extern __typeof (xmlParseXMLDecl) xmlParseXMLDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlParseXMLDecl xmlParseXMLDecl__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlParserAddNodeInfo +extern __typeof (xmlParserAddNodeInfo) xmlParserAddNodeInfo __attribute((alias("xmlParserAddNodeInfo__internal_alias"))); +#else +#ifndef xmlParserAddNodeInfo +extern __typeof (xmlParserAddNodeInfo) xmlParserAddNodeInfo__internal_alias __attribute((visibility("hidden"))); +#define xmlParserAddNodeInfo xmlParserAddNodeInfo__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlParserError +extern __typeof (xmlParserError) xmlParserError __attribute((alias("xmlParserError__internal_alias"))); +#else +#ifndef xmlParserError +extern __typeof (xmlParserError) xmlParserError__internal_alias __attribute((visibility("hidden"))); +#define xmlParserError xmlParserError__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlParserFindNodeInfo +extern __typeof (xmlParserFindNodeInfo) xmlParserFindNodeInfo __attribute((alias("xmlParserFindNodeInfo__internal_alias"))); +#else +#ifndef xmlParserFindNodeInfo +extern __typeof (xmlParserFindNodeInfo) xmlParserFindNodeInfo__internal_alias __attribute((visibility("hidden"))); +#define xmlParserFindNodeInfo xmlParserFindNodeInfo__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlParserFindNodeInfoIndex +extern __typeof (xmlParserFindNodeInfoIndex) xmlParserFindNodeInfoIndex __attribute((alias("xmlParserFindNodeInfoIndex__internal_alias"))); +#else +#ifndef xmlParserFindNodeInfoIndex +extern __typeof (xmlParserFindNodeInfoIndex) xmlParserFindNodeInfoIndex__internal_alias __attribute((visibility("hidden"))); +#define xmlParserFindNodeInfoIndex xmlParserFindNodeInfoIndex__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserGetDirectory +extern __typeof (xmlParserGetDirectory) xmlParserGetDirectory __attribute((alias("xmlParserGetDirectory__internal_alias"))); +#else +#ifndef xmlParserGetDirectory +extern __typeof (xmlParserGetDirectory) xmlParserGetDirectory__internal_alias __attribute((visibility("hidden"))); +#define xmlParserGetDirectory xmlParserGetDirectory__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlParserHandlePEReference +extern __typeof (xmlParserHandlePEReference) xmlParserHandlePEReference __attribute((alias("xmlParserHandlePEReference__internal_alias"))); +#else +#ifndef xmlParserHandlePEReference +extern __typeof (xmlParserHandlePEReference) xmlParserHandlePEReference__internal_alias __attribute((visibility("hidden"))); +#define xmlParserHandlePEReference xmlParserHandlePEReference__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlParserHandleReference +extern __typeof (xmlParserHandleReference) xmlParserHandleReference __attribute((alias("xmlParserHandleReference__internal_alias"))); +#else +#ifndef xmlParserHandleReference +extern __typeof (xmlParserHandleReference) xmlParserHandleReference__internal_alias __attribute((visibility("hidden"))); +#define xmlParserHandleReference xmlParserHandleReference__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferCreateFd +extern __typeof (xmlParserInputBufferCreateFd) xmlParserInputBufferCreateFd __attribute((alias("xmlParserInputBufferCreateFd__internal_alias"))); +#else +#ifndef xmlParserInputBufferCreateFd +extern __typeof (xmlParserInputBufferCreateFd) xmlParserInputBufferCreateFd__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferCreateFd xmlParserInputBufferCreateFd__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferCreateFile +extern __typeof (xmlParserInputBufferCreateFile) xmlParserInputBufferCreateFile __attribute((alias("xmlParserInputBufferCreateFile__internal_alias"))); +#else +#ifndef xmlParserInputBufferCreateFile +extern __typeof (xmlParserInputBufferCreateFile) xmlParserInputBufferCreateFile__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferCreateFile xmlParserInputBufferCreateFile__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferCreateFilename +extern __typeof (xmlParserInputBufferCreateFilename) xmlParserInputBufferCreateFilename __attribute((alias("xmlParserInputBufferCreateFilename__internal_alias"))); +#else +#ifndef xmlParserInputBufferCreateFilename +extern __typeof (xmlParserInputBufferCreateFilename) xmlParserInputBufferCreateFilename__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferCreateFilename xmlParserInputBufferCreateFilename__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferCreateFilenameDefault +extern __typeof (xmlParserInputBufferCreateFilenameDefault) xmlParserInputBufferCreateFilenameDefault __attribute((alias("xmlParserInputBufferCreateFilenameDefault__internal_alias"))); +#else +#ifndef xmlParserInputBufferCreateFilenameDefault +extern __typeof (xmlParserInputBufferCreateFilenameDefault) xmlParserInputBufferCreateFilenameDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferCreateFilenameDefault xmlParserInputBufferCreateFilenameDefault__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferCreateIO +extern __typeof (xmlParserInputBufferCreateIO) xmlParserInputBufferCreateIO __attribute((alias("xmlParserInputBufferCreateIO__internal_alias"))); +#else +#ifndef xmlParserInputBufferCreateIO +extern __typeof (xmlParserInputBufferCreateIO) xmlParserInputBufferCreateIO__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferCreateIO xmlParserInputBufferCreateIO__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferCreateMem +extern __typeof (xmlParserInputBufferCreateMem) xmlParserInputBufferCreateMem __attribute((alias("xmlParserInputBufferCreateMem__internal_alias"))); +#else +#ifndef xmlParserInputBufferCreateMem +extern __typeof (xmlParserInputBufferCreateMem) xmlParserInputBufferCreateMem__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferCreateMem xmlParserInputBufferCreateMem__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferCreateStatic +extern __typeof (xmlParserInputBufferCreateStatic) xmlParserInputBufferCreateStatic __attribute((alias("xmlParserInputBufferCreateStatic__internal_alias"))); +#else +#ifndef xmlParserInputBufferCreateStatic +extern __typeof (xmlParserInputBufferCreateStatic) xmlParserInputBufferCreateStatic__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferCreateStatic xmlParserInputBufferCreateStatic__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferGrow +extern __typeof (xmlParserInputBufferGrow) xmlParserInputBufferGrow __attribute((alias("xmlParserInputBufferGrow__internal_alias"))); +#else +#ifndef xmlParserInputBufferGrow +extern __typeof (xmlParserInputBufferGrow) xmlParserInputBufferGrow__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferGrow xmlParserInputBufferGrow__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferPush +extern __typeof (xmlParserInputBufferPush) xmlParserInputBufferPush __attribute((alias("xmlParserInputBufferPush__internal_alias"))); +#else +#ifndef xmlParserInputBufferPush +extern __typeof (xmlParserInputBufferPush) xmlParserInputBufferPush__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferPush xmlParserInputBufferPush__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlParserInputBufferRead +extern __typeof (xmlParserInputBufferRead) xmlParserInputBufferRead __attribute((alias("xmlParserInputBufferRead__internal_alias"))); +#else +#ifndef xmlParserInputBufferRead +extern __typeof (xmlParserInputBufferRead) xmlParserInputBufferRead__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputBufferRead xmlParserInputBufferRead__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlParserInputGrow +extern __typeof (xmlParserInputGrow) xmlParserInputGrow __attribute((alias("xmlParserInputGrow__internal_alias"))); +#else +#ifndef xmlParserInputGrow +extern __typeof (xmlParserInputGrow) xmlParserInputGrow__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputGrow xmlParserInputGrow__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlParserInputRead +extern __typeof (xmlParserInputRead) xmlParserInputRead __attribute((alias("xmlParserInputRead__internal_alias"))); +#else +#ifndef xmlParserInputRead +extern __typeof (xmlParserInputRead) xmlParserInputRead__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputRead xmlParserInputRead__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlParserInputShrink +extern __typeof (xmlParserInputShrink) xmlParserInputShrink __attribute((alias("xmlParserInputShrink__internal_alias"))); +#else +#ifndef xmlParserInputShrink +extern __typeof (xmlParserInputShrink) xmlParserInputShrink__internal_alias __attribute((visibility("hidden"))); +#define xmlParserInputShrink xmlParserInputShrink__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlParserPrintFileContext +extern __typeof (xmlParserPrintFileContext) xmlParserPrintFileContext __attribute((alias("xmlParserPrintFileContext__internal_alias"))); +#else +#ifndef xmlParserPrintFileContext +extern __typeof (xmlParserPrintFileContext) xmlParserPrintFileContext__internal_alias __attribute((visibility("hidden"))); +#define xmlParserPrintFileContext xmlParserPrintFileContext__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlParserPrintFileInfo +extern __typeof (xmlParserPrintFileInfo) xmlParserPrintFileInfo __attribute((alias("xmlParserPrintFileInfo__internal_alias"))); +#else +#ifndef xmlParserPrintFileInfo +extern __typeof (xmlParserPrintFileInfo) xmlParserPrintFileInfo__internal_alias __attribute((visibility("hidden"))); +#define xmlParserPrintFileInfo xmlParserPrintFileInfo__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlParserValidityError +extern __typeof (xmlParserValidityError) xmlParserValidityError __attribute((alias("xmlParserValidityError__internal_alias"))); +#else +#ifndef xmlParserValidityError +extern __typeof (xmlParserValidityError) xmlParserValidityError__internal_alias __attribute((visibility("hidden"))); +#define xmlParserValidityError xmlParserValidityError__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlParserValidityWarning +extern __typeof (xmlParserValidityWarning) xmlParserValidityWarning __attribute((alias("xmlParserValidityWarning__internal_alias"))); +#else +#ifndef xmlParserValidityWarning +extern __typeof (xmlParserValidityWarning) xmlParserValidityWarning__internal_alias __attribute((visibility("hidden"))); +#define xmlParserValidityWarning xmlParserValidityWarning__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlParserWarning +extern __typeof (xmlParserWarning) xmlParserWarning __attribute((alias("xmlParserWarning__internal_alias"))); +#else +#ifndef xmlParserWarning +extern __typeof (xmlParserWarning) xmlParserWarning__internal_alias __attribute((visibility("hidden"))); +#define xmlParserWarning xmlParserWarning__internal_alias +#endif +#endif + +#ifdef bottom_uri +#undef xmlPathToURI +extern __typeof (xmlPathToURI) xmlPathToURI __attribute((alias("xmlPathToURI__internal_alias"))); +#else +#ifndef xmlPathToURI +extern __typeof (xmlPathToURI) xmlPathToURI__internal_alias __attribute((visibility("hidden"))); +#define xmlPathToURI xmlPathToURI__internal_alias +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlPatternFromRoot +extern __typeof (xmlPatternFromRoot) xmlPatternFromRoot __attribute((alias("xmlPatternFromRoot__internal_alias"))); +#else +#ifndef xmlPatternFromRoot +extern __typeof (xmlPatternFromRoot) xmlPatternFromRoot__internal_alias __attribute((visibility("hidden"))); +#define xmlPatternFromRoot xmlPatternFromRoot__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlPatternGetStreamCtxt +extern __typeof (xmlPatternGetStreamCtxt) xmlPatternGetStreamCtxt __attribute((alias("xmlPatternGetStreamCtxt__internal_alias"))); +#else +#ifndef xmlPatternGetStreamCtxt +extern __typeof (xmlPatternGetStreamCtxt) xmlPatternGetStreamCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlPatternGetStreamCtxt xmlPatternGetStreamCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlPatternMatch +extern __typeof (xmlPatternMatch) xmlPatternMatch __attribute((alias("xmlPatternMatch__internal_alias"))); +#else +#ifndef xmlPatternMatch +extern __typeof (xmlPatternMatch) xmlPatternMatch__internal_alias __attribute((visibility("hidden"))); +#define xmlPatternMatch xmlPatternMatch__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlPatternMaxDepth +extern __typeof (xmlPatternMaxDepth) xmlPatternMaxDepth __attribute((alias("xmlPatternMaxDepth__internal_alias"))); +#else +#ifndef xmlPatternMaxDepth +extern __typeof (xmlPatternMaxDepth) xmlPatternMaxDepth__internal_alias __attribute((visibility("hidden"))); +#define xmlPatternMaxDepth xmlPatternMaxDepth__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlPatternMinDepth +extern __typeof (xmlPatternMinDepth) xmlPatternMinDepth __attribute((alias("xmlPatternMinDepth__internal_alias"))); +#else +#ifndef xmlPatternMinDepth +extern __typeof (xmlPatternMinDepth) xmlPatternMinDepth__internal_alias __attribute((visibility("hidden"))); +#define xmlPatternMinDepth xmlPatternMinDepth__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlPatternStreamable +extern __typeof (xmlPatternStreamable) xmlPatternStreamable __attribute((alias("xmlPatternStreamable__internal_alias"))); +#else +#ifndef xmlPatternStreamable +extern __typeof (xmlPatternStreamable) xmlPatternStreamable__internal_alias __attribute((visibility("hidden"))); +#define xmlPatternStreamable xmlPatternStreamable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlPatterncompile +extern __typeof (xmlPatterncompile) xmlPatterncompile __attribute((alias("xmlPatterncompile__internal_alias"))); +#else +#ifndef xmlPatterncompile +extern __typeof (xmlPatterncompile) xmlPatterncompile__internal_alias __attribute((visibility("hidden"))); +#define xmlPatterncompile xmlPatterncompile__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlPedanticParserDefault +extern __typeof (xmlPedanticParserDefault) xmlPedanticParserDefault __attribute((alias("xmlPedanticParserDefault__internal_alias"))); +#else +#ifndef xmlPedanticParserDefault +extern __typeof (xmlPedanticParserDefault) xmlPedanticParserDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlPedanticParserDefault xmlPedanticParserDefault__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlPopInput +extern __typeof (xmlPopInput) xmlPopInput __attribute((alias("xmlPopInput__internal_alias"))); +#else +#ifndef xmlPopInput +extern __typeof (xmlPopInput) xmlPopInput__internal_alias __attribute((visibility("hidden"))); +#define xmlPopInput xmlPopInput__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlPopInputCallbacks +extern __typeof (xmlPopInputCallbacks) xmlPopInputCallbacks __attribute((alias("xmlPopInputCallbacks__internal_alias"))); +#else +#ifndef xmlPopInputCallbacks +extern __typeof (xmlPopInputCallbacks) xmlPopInputCallbacks__internal_alias __attribute((visibility("hidden"))); +#define xmlPopInputCallbacks xmlPopInputCallbacks__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlPreviousElementSibling +extern __typeof (xmlPreviousElementSibling) xmlPreviousElementSibling __attribute((alias("xmlPreviousElementSibling__internal_alias"))); +#else +#ifndef xmlPreviousElementSibling +extern __typeof (xmlPreviousElementSibling) xmlPreviousElementSibling__internal_alias __attribute((visibility("hidden"))); +#define xmlPreviousElementSibling xmlPreviousElementSibling__internal_alias +#endif +#endif +#endif + +#ifdef bottom_uri +#undef xmlPrintURI +extern __typeof (xmlPrintURI) xmlPrintURI __attribute((alias("xmlPrintURI__internal_alias"))); +#else +#ifndef xmlPrintURI +extern __typeof (xmlPrintURI) xmlPrintURI__internal_alias __attribute((visibility("hidden"))); +#define xmlPrintURI xmlPrintURI__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlPushInput +extern __typeof (xmlPushInput) xmlPushInput __attribute((alias("xmlPushInput__internal_alias"))); +#else +#ifndef xmlPushInput +extern __typeof (xmlPushInput) xmlPushInput__internal_alias __attribute((visibility("hidden"))); +#define xmlPushInput xmlPushInput__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlRMutexLock +extern __typeof (xmlRMutexLock) xmlRMutexLock __attribute((alias("xmlRMutexLock__internal_alias"))); +#else +#ifndef xmlRMutexLock +extern __typeof (xmlRMutexLock) xmlRMutexLock__internal_alias __attribute((visibility("hidden"))); +#define xmlRMutexLock xmlRMutexLock__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlRMutexUnlock +extern __typeof (xmlRMutexUnlock) xmlRMutexUnlock __attribute((alias("xmlRMutexUnlock__internal_alias"))); +#else +#ifndef xmlRMutexUnlock +extern __typeof (xmlRMutexUnlock) xmlRMutexUnlock__internal_alias __attribute((visibility("hidden"))); +#define xmlRMutexUnlock xmlRMutexUnlock__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlReadDoc +extern __typeof (xmlReadDoc) xmlReadDoc __attribute((alias("xmlReadDoc__internal_alias"))); +#else +#ifndef xmlReadDoc +extern __typeof (xmlReadDoc) xmlReadDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlReadDoc xmlReadDoc__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlReadFd +extern __typeof (xmlReadFd) xmlReadFd __attribute((alias("xmlReadFd__internal_alias"))); +#else +#ifndef xmlReadFd +extern __typeof (xmlReadFd) xmlReadFd__internal_alias __attribute((visibility("hidden"))); +#define xmlReadFd xmlReadFd__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlReadFile +extern __typeof (xmlReadFile) xmlReadFile __attribute((alias("xmlReadFile__internal_alias"))); +#else +#ifndef xmlReadFile +extern __typeof (xmlReadFile) xmlReadFile__internal_alias __attribute((visibility("hidden"))); +#define xmlReadFile xmlReadFile__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlReadIO +extern __typeof (xmlReadIO) xmlReadIO __attribute((alias("xmlReadIO__internal_alias"))); +#else +#ifndef xmlReadIO +extern __typeof (xmlReadIO) xmlReadIO__internal_alias __attribute((visibility("hidden"))); +#define xmlReadIO xmlReadIO__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlReadMemory +extern __typeof (xmlReadMemory) xmlReadMemory __attribute((alias("xmlReadMemory__internal_alias"))); +#else +#ifndef xmlReadMemory +extern __typeof (xmlReadMemory) xmlReadMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlReadMemory xmlReadMemory__internal_alias +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderForDoc +extern __typeof (xmlReaderForDoc) xmlReaderForDoc __attribute((alias("xmlReaderForDoc__internal_alias"))); +#else +#ifndef xmlReaderForDoc +extern __typeof (xmlReaderForDoc) xmlReaderForDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderForDoc xmlReaderForDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderForFd +extern __typeof (xmlReaderForFd) xmlReaderForFd __attribute((alias("xmlReaderForFd__internal_alias"))); +#else +#ifndef xmlReaderForFd +extern __typeof (xmlReaderForFd) xmlReaderForFd__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderForFd xmlReaderForFd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderForFile +extern __typeof (xmlReaderForFile) xmlReaderForFile __attribute((alias("xmlReaderForFile__internal_alias"))); +#else +#ifndef xmlReaderForFile +extern __typeof (xmlReaderForFile) xmlReaderForFile__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderForFile xmlReaderForFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderForIO +extern __typeof (xmlReaderForIO) xmlReaderForIO __attribute((alias("xmlReaderForIO__internal_alias"))); +#else +#ifndef xmlReaderForIO +extern __typeof (xmlReaderForIO) xmlReaderForIO__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderForIO xmlReaderForIO__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderForMemory +extern __typeof (xmlReaderForMemory) xmlReaderForMemory __attribute((alias("xmlReaderForMemory__internal_alias"))); +#else +#ifndef xmlReaderForMemory +extern __typeof (xmlReaderForMemory) xmlReaderForMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderForMemory xmlReaderForMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderNewDoc +extern __typeof (xmlReaderNewDoc) xmlReaderNewDoc __attribute((alias("xmlReaderNewDoc__internal_alias"))); +#else +#ifndef xmlReaderNewDoc +extern __typeof (xmlReaderNewDoc) xmlReaderNewDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderNewDoc xmlReaderNewDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderNewFd +extern __typeof (xmlReaderNewFd) xmlReaderNewFd __attribute((alias("xmlReaderNewFd__internal_alias"))); +#else +#ifndef xmlReaderNewFd +extern __typeof (xmlReaderNewFd) xmlReaderNewFd__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderNewFd xmlReaderNewFd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderNewFile +extern __typeof (xmlReaderNewFile) xmlReaderNewFile __attribute((alias("xmlReaderNewFile__internal_alias"))); +#else +#ifndef xmlReaderNewFile +extern __typeof (xmlReaderNewFile) xmlReaderNewFile__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderNewFile xmlReaderNewFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderNewIO +extern __typeof (xmlReaderNewIO) xmlReaderNewIO __attribute((alias("xmlReaderNewIO__internal_alias"))); +#else +#ifndef xmlReaderNewIO +extern __typeof (xmlReaderNewIO) xmlReaderNewIO__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderNewIO xmlReaderNewIO__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderNewMemory +extern __typeof (xmlReaderNewMemory) xmlReaderNewMemory __attribute((alias("xmlReaderNewMemory__internal_alias"))); +#else +#ifndef xmlReaderNewMemory +extern __typeof (xmlReaderNewMemory) xmlReaderNewMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderNewMemory xmlReaderNewMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderNewWalker +extern __typeof (xmlReaderNewWalker) xmlReaderNewWalker __attribute((alias("xmlReaderNewWalker__internal_alias"))); +#else +#ifndef xmlReaderNewWalker +extern __typeof (xmlReaderNewWalker) xmlReaderNewWalker__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderNewWalker xmlReaderNewWalker__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlReaderWalker +extern __typeof (xmlReaderWalker) xmlReaderWalker __attribute((alias("xmlReaderWalker__internal_alias"))); +#else +#ifndef xmlReaderWalker +extern __typeof (xmlReaderWalker) xmlReaderWalker__internal_alias __attribute((visibility("hidden"))); +#define xmlReaderWalker xmlReaderWalker__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlmemory +#undef xmlReallocLoc +extern __typeof (xmlReallocLoc) xmlReallocLoc __attribute((alias("xmlReallocLoc__internal_alias"))); +#else +#ifndef xmlReallocLoc +extern __typeof (xmlReallocLoc) xmlReallocLoc__internal_alias __attribute((visibility("hidden"))); +#define xmlReallocLoc xmlReallocLoc__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) +#ifdef bottom_tree +#undef xmlReconciliateNs +extern __typeof (xmlReconciliateNs) xmlReconciliateNs __attribute((alias("xmlReconciliateNs__internal_alias"))); +#else +#ifndef xmlReconciliateNs +extern __typeof (xmlReconciliateNs) xmlReconciliateNs__internal_alias __attribute((visibility("hidden"))); +#define xmlReconciliateNs xmlReconciliateNs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlRecoverDoc +extern __typeof (xmlRecoverDoc) xmlRecoverDoc __attribute((alias("xmlRecoverDoc__internal_alias"))); +#else +#ifndef xmlRecoverDoc +extern __typeof (xmlRecoverDoc) xmlRecoverDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlRecoverDoc xmlRecoverDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlRecoverFile +extern __typeof (xmlRecoverFile) xmlRecoverFile __attribute((alias("xmlRecoverFile__internal_alias"))); +#else +#ifndef xmlRecoverFile +extern __typeof (xmlRecoverFile) xmlRecoverFile__internal_alias __attribute((visibility("hidden"))); +#define xmlRecoverFile xmlRecoverFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlRecoverMemory +extern __typeof (xmlRecoverMemory) xmlRecoverMemory __attribute((alias("xmlRecoverMemory__internal_alias"))); +#else +#ifndef xmlRecoverMemory +extern __typeof (xmlRecoverMemory) xmlRecoverMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlRecoverMemory xmlRecoverMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegExecErrInfo +extern __typeof (xmlRegExecErrInfo) xmlRegExecErrInfo __attribute((alias("xmlRegExecErrInfo__internal_alias"))); +#else +#ifndef xmlRegExecErrInfo +extern __typeof (xmlRegExecErrInfo) xmlRegExecErrInfo__internal_alias __attribute((visibility("hidden"))); +#define xmlRegExecErrInfo xmlRegExecErrInfo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegExecNextValues +extern __typeof (xmlRegExecNextValues) xmlRegExecNextValues __attribute((alias("xmlRegExecNextValues__internal_alias"))); +#else +#ifndef xmlRegExecNextValues +extern __typeof (xmlRegExecNextValues) xmlRegExecNextValues__internal_alias __attribute((visibility("hidden"))); +#define xmlRegExecNextValues xmlRegExecNextValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegExecPushString +extern __typeof (xmlRegExecPushString) xmlRegExecPushString __attribute((alias("xmlRegExecPushString__internal_alias"))); +#else +#ifndef xmlRegExecPushString +extern __typeof (xmlRegExecPushString) xmlRegExecPushString__internal_alias __attribute((visibility("hidden"))); +#define xmlRegExecPushString xmlRegExecPushString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegExecPushString2 +extern __typeof (xmlRegExecPushString2) xmlRegExecPushString2 __attribute((alias("xmlRegExecPushString2__internal_alias"))); +#else +#ifndef xmlRegExecPushString2 +extern __typeof (xmlRegExecPushString2) xmlRegExecPushString2__internal_alias __attribute((visibility("hidden"))); +#define xmlRegExecPushString2 xmlRegExecPushString2__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegFreeExecCtxt +extern __typeof (xmlRegFreeExecCtxt) xmlRegFreeExecCtxt __attribute((alias("xmlRegFreeExecCtxt__internal_alias"))); +#else +#ifndef xmlRegFreeExecCtxt +extern __typeof (xmlRegFreeExecCtxt) xmlRegFreeExecCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlRegFreeExecCtxt xmlRegFreeExecCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegFreeRegexp +extern __typeof (xmlRegFreeRegexp) xmlRegFreeRegexp __attribute((alias("xmlRegFreeRegexp__internal_alias"))); +#else +#ifndef xmlRegFreeRegexp +extern __typeof (xmlRegFreeRegexp) xmlRegFreeRegexp__internal_alias __attribute((visibility("hidden"))); +#define xmlRegFreeRegexp xmlRegFreeRegexp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegNewExecCtxt +extern __typeof (xmlRegNewExecCtxt) xmlRegNewExecCtxt __attribute((alias("xmlRegNewExecCtxt__internal_alias"))); +#else +#ifndef xmlRegNewExecCtxt +extern __typeof (xmlRegNewExecCtxt) xmlRegNewExecCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlRegNewExecCtxt xmlRegNewExecCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegexpCompile +extern __typeof (xmlRegexpCompile) xmlRegexpCompile __attribute((alias("xmlRegexpCompile__internal_alias"))); +#else +#ifndef xmlRegexpCompile +extern __typeof (xmlRegexpCompile) xmlRegexpCompile__internal_alias __attribute((visibility("hidden"))); +#define xmlRegexpCompile xmlRegexpCompile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegexpExec +extern __typeof (xmlRegexpExec) xmlRegexpExec __attribute((alias("xmlRegexpExec__internal_alias"))); +#else +#ifndef xmlRegexpExec +extern __typeof (xmlRegexpExec) xmlRegexpExec__internal_alias __attribute((visibility("hidden"))); +#define xmlRegexpExec xmlRegexpExec__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegexpIsDeterminist +extern __typeof (xmlRegexpIsDeterminist) xmlRegexpIsDeterminist __attribute((alias("xmlRegexpIsDeterminist__internal_alias"))); +#else +#ifndef xmlRegexpIsDeterminist +extern __typeof (xmlRegexpIsDeterminist) xmlRegexpIsDeterminist__internal_alias __attribute((visibility("hidden"))); +#define xmlRegexpIsDeterminist xmlRegexpIsDeterminist__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_xmlregexp +#undef xmlRegexpPrint +extern __typeof (xmlRegexpPrint) xmlRegexpPrint __attribute((alias("xmlRegexpPrint__internal_alias"))); +#else +#ifndef xmlRegexpPrint +extern __typeof (xmlRegexpPrint) xmlRegexpPrint__internal_alias __attribute((visibility("hidden"))); +#define xmlRegexpPrint xmlRegexpPrint__internal_alias +#endif +#endif +#endif + +#ifdef bottom_encoding +#undef xmlRegisterCharEncodingHandler +extern __typeof (xmlRegisterCharEncodingHandler) xmlRegisterCharEncodingHandler __attribute((alias("xmlRegisterCharEncodingHandler__internal_alias"))); +#else +#ifndef xmlRegisterCharEncodingHandler +extern __typeof (xmlRegisterCharEncodingHandler) xmlRegisterCharEncodingHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlRegisterCharEncodingHandler xmlRegisterCharEncodingHandler__internal_alias +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlRegisterDefaultInputCallbacks +extern __typeof (xmlRegisterDefaultInputCallbacks) xmlRegisterDefaultInputCallbacks __attribute((alias("xmlRegisterDefaultInputCallbacks__internal_alias"))); +#else +#ifndef xmlRegisterDefaultInputCallbacks +extern __typeof (xmlRegisterDefaultInputCallbacks) xmlRegisterDefaultInputCallbacks__internal_alias __attribute((visibility("hidden"))); +#define xmlRegisterDefaultInputCallbacks xmlRegisterDefaultInputCallbacks__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlRegisterDefaultOutputCallbacks +extern __typeof (xmlRegisterDefaultOutputCallbacks) xmlRegisterDefaultOutputCallbacks __attribute((alias("xmlRegisterDefaultOutputCallbacks__internal_alias"))); +#else +#ifndef xmlRegisterDefaultOutputCallbacks +extern __typeof (xmlRegisterDefaultOutputCallbacks) xmlRegisterDefaultOutputCallbacks__internal_alias __attribute((visibility("hidden"))); +#define xmlRegisterDefaultOutputCallbacks xmlRegisterDefaultOutputCallbacks__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) && defined(LIBXML_HTTP_ENABLED) +#ifdef bottom_xmlIO +#undef xmlRegisterHTTPPostCallbacks +extern __typeof (xmlRegisterHTTPPostCallbacks) xmlRegisterHTTPPostCallbacks __attribute((alias("xmlRegisterHTTPPostCallbacks__internal_alias"))); +#else +#ifndef xmlRegisterHTTPPostCallbacks +extern __typeof (xmlRegisterHTTPPostCallbacks) xmlRegisterHTTPPostCallbacks__internal_alias __attribute((visibility("hidden"))); +#define xmlRegisterHTTPPostCallbacks xmlRegisterHTTPPostCallbacks__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlRegisterInputCallbacks +extern __typeof (xmlRegisterInputCallbacks) xmlRegisterInputCallbacks __attribute((alias("xmlRegisterInputCallbacks__internal_alias"))); +#else +#ifndef xmlRegisterInputCallbacks +extern __typeof (xmlRegisterInputCallbacks) xmlRegisterInputCallbacks__internal_alias __attribute((visibility("hidden"))); +#define xmlRegisterInputCallbacks xmlRegisterInputCallbacks__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlRegisterNodeDefault +extern __typeof (xmlRegisterNodeDefault) xmlRegisterNodeDefault __attribute((alias("xmlRegisterNodeDefault__internal_alias"))); +#else +#ifndef xmlRegisterNodeDefault +extern __typeof (xmlRegisterNodeDefault) xmlRegisterNodeDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlRegisterNodeDefault xmlRegisterNodeDefault__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlIO +#undef xmlRegisterOutputCallbacks +extern __typeof (xmlRegisterOutputCallbacks) xmlRegisterOutputCallbacks __attribute((alias("xmlRegisterOutputCallbacks__internal_alias"))); +#else +#ifndef xmlRegisterOutputCallbacks +extern __typeof (xmlRegisterOutputCallbacks) xmlRegisterOutputCallbacks__internal_alias __attribute((visibility("hidden"))); +#define xmlRegisterOutputCallbacks xmlRegisterOutputCallbacks__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGCleanupTypes +extern __typeof (xmlRelaxNGCleanupTypes) xmlRelaxNGCleanupTypes __attribute((alias("xmlRelaxNGCleanupTypes__internal_alias"))); +#else +#ifndef xmlRelaxNGCleanupTypes +extern __typeof (xmlRelaxNGCleanupTypes) xmlRelaxNGCleanupTypes__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGCleanupTypes xmlRelaxNGCleanupTypes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGDump +extern __typeof (xmlRelaxNGDump) xmlRelaxNGDump __attribute((alias("xmlRelaxNGDump__internal_alias"))); +#else +#ifndef xmlRelaxNGDump +extern __typeof (xmlRelaxNGDump) xmlRelaxNGDump__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGDump xmlRelaxNGDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGDumpTree +extern __typeof (xmlRelaxNGDumpTree) xmlRelaxNGDumpTree __attribute((alias("xmlRelaxNGDumpTree__internal_alias"))); +#else +#ifndef xmlRelaxNGDumpTree +extern __typeof (xmlRelaxNGDumpTree) xmlRelaxNGDumpTree__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGDumpTree xmlRelaxNGDumpTree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGFree +extern __typeof (xmlRelaxNGFree) xmlRelaxNGFree __attribute((alias("xmlRelaxNGFree__internal_alias"))); +#else +#ifndef xmlRelaxNGFree +extern __typeof (xmlRelaxNGFree) xmlRelaxNGFree__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGFree xmlRelaxNGFree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGFreeParserCtxt +extern __typeof (xmlRelaxNGFreeParserCtxt) xmlRelaxNGFreeParserCtxt __attribute((alias("xmlRelaxNGFreeParserCtxt__internal_alias"))); +#else +#ifndef xmlRelaxNGFreeParserCtxt +extern __typeof (xmlRelaxNGFreeParserCtxt) xmlRelaxNGFreeParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGFreeParserCtxt xmlRelaxNGFreeParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGFreeValidCtxt +extern __typeof (xmlRelaxNGFreeValidCtxt) xmlRelaxNGFreeValidCtxt __attribute((alias("xmlRelaxNGFreeValidCtxt__internal_alias"))); +#else +#ifndef xmlRelaxNGFreeValidCtxt +extern __typeof (xmlRelaxNGFreeValidCtxt) xmlRelaxNGFreeValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGFreeValidCtxt xmlRelaxNGFreeValidCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGGetParserErrors +extern __typeof (xmlRelaxNGGetParserErrors) xmlRelaxNGGetParserErrors __attribute((alias("xmlRelaxNGGetParserErrors__internal_alias"))); +#else +#ifndef xmlRelaxNGGetParserErrors +extern __typeof (xmlRelaxNGGetParserErrors) xmlRelaxNGGetParserErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGGetParserErrors xmlRelaxNGGetParserErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGGetValidErrors +extern __typeof (xmlRelaxNGGetValidErrors) xmlRelaxNGGetValidErrors __attribute((alias("xmlRelaxNGGetValidErrors__internal_alias"))); +#else +#ifndef xmlRelaxNGGetValidErrors +extern __typeof (xmlRelaxNGGetValidErrors) xmlRelaxNGGetValidErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGGetValidErrors xmlRelaxNGGetValidErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGInitTypes +extern __typeof (xmlRelaxNGInitTypes) xmlRelaxNGInitTypes __attribute((alias("xmlRelaxNGInitTypes__internal_alias"))); +#else +#ifndef xmlRelaxNGInitTypes +extern __typeof (xmlRelaxNGInitTypes) xmlRelaxNGInitTypes__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGInitTypes xmlRelaxNGInitTypes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGNewDocParserCtxt +extern __typeof (xmlRelaxNGNewDocParserCtxt) xmlRelaxNGNewDocParserCtxt __attribute((alias("xmlRelaxNGNewDocParserCtxt__internal_alias"))); +#else +#ifndef xmlRelaxNGNewDocParserCtxt +extern __typeof (xmlRelaxNGNewDocParserCtxt) xmlRelaxNGNewDocParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGNewDocParserCtxt xmlRelaxNGNewDocParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGNewMemParserCtxt +extern __typeof (xmlRelaxNGNewMemParserCtxt) xmlRelaxNGNewMemParserCtxt __attribute((alias("xmlRelaxNGNewMemParserCtxt__internal_alias"))); +#else +#ifndef xmlRelaxNGNewMemParserCtxt +extern __typeof (xmlRelaxNGNewMemParserCtxt) xmlRelaxNGNewMemParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGNewMemParserCtxt xmlRelaxNGNewMemParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGNewParserCtxt +extern __typeof (xmlRelaxNGNewParserCtxt) xmlRelaxNGNewParserCtxt __attribute((alias("xmlRelaxNGNewParserCtxt__internal_alias"))); +#else +#ifndef xmlRelaxNGNewParserCtxt +extern __typeof (xmlRelaxNGNewParserCtxt) xmlRelaxNGNewParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGNewParserCtxt xmlRelaxNGNewParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGNewValidCtxt +extern __typeof (xmlRelaxNGNewValidCtxt) xmlRelaxNGNewValidCtxt __attribute((alias("xmlRelaxNGNewValidCtxt__internal_alias"))); +#else +#ifndef xmlRelaxNGNewValidCtxt +extern __typeof (xmlRelaxNGNewValidCtxt) xmlRelaxNGNewValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGNewValidCtxt xmlRelaxNGNewValidCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGParse +extern __typeof (xmlRelaxNGParse) xmlRelaxNGParse __attribute((alias("xmlRelaxNGParse__internal_alias"))); +#else +#ifndef xmlRelaxNGParse +extern __typeof (xmlRelaxNGParse) xmlRelaxNGParse__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGParse xmlRelaxNGParse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGSetParserErrors +extern __typeof (xmlRelaxNGSetParserErrors) xmlRelaxNGSetParserErrors __attribute((alias("xmlRelaxNGSetParserErrors__internal_alias"))); +#else +#ifndef xmlRelaxNGSetParserErrors +extern __typeof (xmlRelaxNGSetParserErrors) xmlRelaxNGSetParserErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGSetParserErrors xmlRelaxNGSetParserErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGSetParserStructuredErrors +extern __typeof (xmlRelaxNGSetParserStructuredErrors) xmlRelaxNGSetParserStructuredErrors __attribute((alias("xmlRelaxNGSetParserStructuredErrors__internal_alias"))); +#else +#ifndef xmlRelaxNGSetParserStructuredErrors +extern __typeof (xmlRelaxNGSetParserStructuredErrors) xmlRelaxNGSetParserStructuredErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGSetParserStructuredErrors xmlRelaxNGSetParserStructuredErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGSetValidErrors +extern __typeof (xmlRelaxNGSetValidErrors) xmlRelaxNGSetValidErrors __attribute((alias("xmlRelaxNGSetValidErrors__internal_alias"))); +#else +#ifndef xmlRelaxNGSetValidErrors +extern __typeof (xmlRelaxNGSetValidErrors) xmlRelaxNGSetValidErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGSetValidErrors xmlRelaxNGSetValidErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGSetValidStructuredErrors +extern __typeof (xmlRelaxNGSetValidStructuredErrors) xmlRelaxNGSetValidStructuredErrors __attribute((alias("xmlRelaxNGSetValidStructuredErrors__internal_alias"))); +#else +#ifndef xmlRelaxNGSetValidStructuredErrors +extern __typeof (xmlRelaxNGSetValidStructuredErrors) xmlRelaxNGSetValidStructuredErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGSetValidStructuredErrors xmlRelaxNGSetValidStructuredErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGValidateDoc +extern __typeof (xmlRelaxNGValidateDoc) xmlRelaxNGValidateDoc __attribute((alias("xmlRelaxNGValidateDoc__internal_alias"))); +#else +#ifndef xmlRelaxNGValidateDoc +extern __typeof (xmlRelaxNGValidateDoc) xmlRelaxNGValidateDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGValidateDoc xmlRelaxNGValidateDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGValidateFullElement +extern __typeof (xmlRelaxNGValidateFullElement) xmlRelaxNGValidateFullElement __attribute((alias("xmlRelaxNGValidateFullElement__internal_alias"))); +#else +#ifndef xmlRelaxNGValidateFullElement +extern __typeof (xmlRelaxNGValidateFullElement) xmlRelaxNGValidateFullElement__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGValidateFullElement xmlRelaxNGValidateFullElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGValidatePopElement +extern __typeof (xmlRelaxNGValidatePopElement) xmlRelaxNGValidatePopElement __attribute((alias("xmlRelaxNGValidatePopElement__internal_alias"))); +#else +#ifndef xmlRelaxNGValidatePopElement +extern __typeof (xmlRelaxNGValidatePopElement) xmlRelaxNGValidatePopElement__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGValidatePopElement xmlRelaxNGValidatePopElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGValidatePushCData +extern __typeof (xmlRelaxNGValidatePushCData) xmlRelaxNGValidatePushCData __attribute((alias("xmlRelaxNGValidatePushCData__internal_alias"))); +#else +#ifndef xmlRelaxNGValidatePushCData +extern __typeof (xmlRelaxNGValidatePushCData) xmlRelaxNGValidatePushCData__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGValidatePushCData xmlRelaxNGValidatePushCData__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxNGValidatePushElement +extern __typeof (xmlRelaxNGValidatePushElement) xmlRelaxNGValidatePushElement __attribute((alias("xmlRelaxNGValidatePushElement__internal_alias"))); +#else +#ifndef xmlRelaxNGValidatePushElement +extern __typeof (xmlRelaxNGValidatePushElement) xmlRelaxNGValidatePushElement__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxNGValidatePushElement xmlRelaxNGValidatePushElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_relaxng +#undef xmlRelaxParserSetFlag +extern __typeof (xmlRelaxParserSetFlag) xmlRelaxParserSetFlag __attribute((alias("xmlRelaxParserSetFlag__internal_alias"))); +#else +#ifndef xmlRelaxParserSetFlag +extern __typeof (xmlRelaxParserSetFlag) xmlRelaxParserSetFlag__internal_alias __attribute((visibility("hidden"))); +#define xmlRelaxParserSetFlag xmlRelaxParserSetFlag__internal_alias +#endif +#endif +#endif + +#ifdef bottom_valid +#undef xmlRemoveID +extern __typeof (xmlRemoveID) xmlRemoveID __attribute((alias("xmlRemoveID__internal_alias"))); +#else +#ifndef xmlRemoveID +extern __typeof (xmlRemoveID) xmlRemoveID__internal_alias __attribute((visibility("hidden"))); +#define xmlRemoveID xmlRemoveID__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlRemoveProp +extern __typeof (xmlRemoveProp) xmlRemoveProp __attribute((alias("xmlRemoveProp__internal_alias"))); +#else +#ifndef xmlRemoveProp +extern __typeof (xmlRemoveProp) xmlRemoveProp__internal_alias __attribute((visibility("hidden"))); +#define xmlRemoveProp xmlRemoveProp__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlRemoveRef +extern __typeof (xmlRemoveRef) xmlRemoveRef __attribute((alias("xmlRemoveRef__internal_alias"))); +#else +#ifndef xmlRemoveRef +extern __typeof (xmlRemoveRef) xmlRemoveRef__internal_alias __attribute((visibility("hidden"))); +#define xmlRemoveRef xmlRemoveRef__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_tree +#undef xmlReplaceNode +extern __typeof (xmlReplaceNode) xmlReplaceNode __attribute((alias("xmlReplaceNode__internal_alias"))); +#else +#ifndef xmlReplaceNode +extern __typeof (xmlReplaceNode) xmlReplaceNode__internal_alias __attribute((visibility("hidden"))); +#define xmlReplaceNode xmlReplaceNode__internal_alias +#endif +#endif +#endif + +#ifdef bottom_error +#undef xmlResetError +extern __typeof (xmlResetError) xmlResetError __attribute((alias("xmlResetError__internal_alias"))); +#else +#ifndef xmlResetError +extern __typeof (xmlResetError) xmlResetError__internal_alias __attribute((visibility("hidden"))); +#define xmlResetError xmlResetError__internal_alias +#endif +#endif + +#ifdef bottom_error +#undef xmlResetLastError +extern __typeof (xmlResetLastError) xmlResetLastError __attribute((alias("xmlResetLastError__internal_alias"))); +#else +#ifndef xmlResetLastError +extern __typeof (xmlResetLastError) xmlResetLastError__internal_alias __attribute((visibility("hidden"))); +#define xmlResetLastError xmlResetLastError__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2AttributeDecl +extern __typeof (xmlSAX2AttributeDecl) xmlSAX2AttributeDecl __attribute((alias("xmlSAX2AttributeDecl__internal_alias"))); +#else +#ifndef xmlSAX2AttributeDecl +extern __typeof (xmlSAX2AttributeDecl) xmlSAX2AttributeDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2AttributeDecl xmlSAX2AttributeDecl__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2CDataBlock +extern __typeof (xmlSAX2CDataBlock) xmlSAX2CDataBlock __attribute((alias("xmlSAX2CDataBlock__internal_alias"))); +#else +#ifndef xmlSAX2CDataBlock +extern __typeof (xmlSAX2CDataBlock) xmlSAX2CDataBlock__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2CDataBlock xmlSAX2CDataBlock__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2Characters +extern __typeof (xmlSAX2Characters) xmlSAX2Characters __attribute((alias("xmlSAX2Characters__internal_alias"))); +#else +#ifndef xmlSAX2Characters +extern __typeof (xmlSAX2Characters) xmlSAX2Characters__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2Characters xmlSAX2Characters__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2Comment +extern __typeof (xmlSAX2Comment) xmlSAX2Comment __attribute((alias("xmlSAX2Comment__internal_alias"))); +#else +#ifndef xmlSAX2Comment +extern __typeof (xmlSAX2Comment) xmlSAX2Comment__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2Comment xmlSAX2Comment__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2ElementDecl +extern __typeof (xmlSAX2ElementDecl) xmlSAX2ElementDecl __attribute((alias("xmlSAX2ElementDecl__internal_alias"))); +#else +#ifndef xmlSAX2ElementDecl +extern __typeof (xmlSAX2ElementDecl) xmlSAX2ElementDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2ElementDecl xmlSAX2ElementDecl__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2EndDocument +extern __typeof (xmlSAX2EndDocument) xmlSAX2EndDocument __attribute((alias("xmlSAX2EndDocument__internal_alias"))); +#else +#ifndef xmlSAX2EndDocument +extern __typeof (xmlSAX2EndDocument) xmlSAX2EndDocument__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2EndDocument xmlSAX2EndDocument__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_SAX2 +#undef xmlSAX2EndElement +extern __typeof (xmlSAX2EndElement) xmlSAX2EndElement __attribute((alias("xmlSAX2EndElement__internal_alias"))); +#else +#ifndef xmlSAX2EndElement +extern __typeof (xmlSAX2EndElement) xmlSAX2EndElement__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2EndElement xmlSAX2EndElement__internal_alias +#endif +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2EndElementNs +extern __typeof (xmlSAX2EndElementNs) xmlSAX2EndElementNs __attribute((alias("xmlSAX2EndElementNs__internal_alias"))); +#else +#ifndef xmlSAX2EndElementNs +extern __typeof (xmlSAX2EndElementNs) xmlSAX2EndElementNs__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2EndElementNs xmlSAX2EndElementNs__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2EntityDecl +extern __typeof (xmlSAX2EntityDecl) xmlSAX2EntityDecl __attribute((alias("xmlSAX2EntityDecl__internal_alias"))); +#else +#ifndef xmlSAX2EntityDecl +extern __typeof (xmlSAX2EntityDecl) xmlSAX2EntityDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2EntityDecl xmlSAX2EntityDecl__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2ExternalSubset +extern __typeof (xmlSAX2ExternalSubset) xmlSAX2ExternalSubset __attribute((alias("xmlSAX2ExternalSubset__internal_alias"))); +#else +#ifndef xmlSAX2ExternalSubset +extern __typeof (xmlSAX2ExternalSubset) xmlSAX2ExternalSubset__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2ExternalSubset xmlSAX2ExternalSubset__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2GetColumnNumber +extern __typeof (xmlSAX2GetColumnNumber) xmlSAX2GetColumnNumber __attribute((alias("xmlSAX2GetColumnNumber__internal_alias"))); +#else +#ifndef xmlSAX2GetColumnNumber +extern __typeof (xmlSAX2GetColumnNumber) xmlSAX2GetColumnNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2GetColumnNumber xmlSAX2GetColumnNumber__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2GetEntity +extern __typeof (xmlSAX2GetEntity) xmlSAX2GetEntity __attribute((alias("xmlSAX2GetEntity__internal_alias"))); +#else +#ifndef xmlSAX2GetEntity +extern __typeof (xmlSAX2GetEntity) xmlSAX2GetEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2GetEntity xmlSAX2GetEntity__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2GetLineNumber +extern __typeof (xmlSAX2GetLineNumber) xmlSAX2GetLineNumber __attribute((alias("xmlSAX2GetLineNumber__internal_alias"))); +#else +#ifndef xmlSAX2GetLineNumber +extern __typeof (xmlSAX2GetLineNumber) xmlSAX2GetLineNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2GetLineNumber xmlSAX2GetLineNumber__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2GetParameterEntity +extern __typeof (xmlSAX2GetParameterEntity) xmlSAX2GetParameterEntity __attribute((alias("xmlSAX2GetParameterEntity__internal_alias"))); +#else +#ifndef xmlSAX2GetParameterEntity +extern __typeof (xmlSAX2GetParameterEntity) xmlSAX2GetParameterEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2GetParameterEntity xmlSAX2GetParameterEntity__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2GetPublicId +extern __typeof (xmlSAX2GetPublicId) xmlSAX2GetPublicId __attribute((alias("xmlSAX2GetPublicId__internal_alias"))); +#else +#ifndef xmlSAX2GetPublicId +extern __typeof (xmlSAX2GetPublicId) xmlSAX2GetPublicId__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2GetPublicId xmlSAX2GetPublicId__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2GetSystemId +extern __typeof (xmlSAX2GetSystemId) xmlSAX2GetSystemId __attribute((alias("xmlSAX2GetSystemId__internal_alias"))); +#else +#ifndef xmlSAX2GetSystemId +extern __typeof (xmlSAX2GetSystemId) xmlSAX2GetSystemId__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2GetSystemId xmlSAX2GetSystemId__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2HasExternalSubset +extern __typeof (xmlSAX2HasExternalSubset) xmlSAX2HasExternalSubset __attribute((alias("xmlSAX2HasExternalSubset__internal_alias"))); +#else +#ifndef xmlSAX2HasExternalSubset +extern __typeof (xmlSAX2HasExternalSubset) xmlSAX2HasExternalSubset__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2HasExternalSubset xmlSAX2HasExternalSubset__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2HasInternalSubset +extern __typeof (xmlSAX2HasInternalSubset) xmlSAX2HasInternalSubset __attribute((alias("xmlSAX2HasInternalSubset__internal_alias"))); +#else +#ifndef xmlSAX2HasInternalSubset +extern __typeof (xmlSAX2HasInternalSubset) xmlSAX2HasInternalSubset__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2HasInternalSubset xmlSAX2HasInternalSubset__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2IgnorableWhitespace +extern __typeof (xmlSAX2IgnorableWhitespace) xmlSAX2IgnorableWhitespace __attribute((alias("xmlSAX2IgnorableWhitespace__internal_alias"))); +#else +#ifndef xmlSAX2IgnorableWhitespace +extern __typeof (xmlSAX2IgnorableWhitespace) xmlSAX2IgnorableWhitespace__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2IgnorableWhitespace xmlSAX2IgnorableWhitespace__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2InitDefaultSAXHandler +extern __typeof (xmlSAX2InitDefaultSAXHandler) xmlSAX2InitDefaultSAXHandler __attribute((alias("xmlSAX2InitDefaultSAXHandler__internal_alias"))); +#else +#ifndef xmlSAX2InitDefaultSAXHandler +extern __typeof (xmlSAX2InitDefaultSAXHandler) xmlSAX2InitDefaultSAXHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2InitDefaultSAXHandler xmlSAX2InitDefaultSAXHandler__internal_alias +#endif +#endif + +#if defined(LIBXML_DOCB_ENABLED) +#ifdef bottom_SAX2 +#undef xmlSAX2InitDocbDefaultSAXHandler +extern __typeof (xmlSAX2InitDocbDefaultSAXHandler) xmlSAX2InitDocbDefaultSAXHandler __attribute((alias("xmlSAX2InitDocbDefaultSAXHandler__internal_alias"))); +#else +#ifndef xmlSAX2InitDocbDefaultSAXHandler +extern __typeof (xmlSAX2InitDocbDefaultSAXHandler) xmlSAX2InitDocbDefaultSAXHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2InitDocbDefaultSAXHandler xmlSAX2InitDocbDefaultSAXHandler__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_HTML_ENABLED) +#ifdef bottom_SAX2 +#undef xmlSAX2InitHtmlDefaultSAXHandler +extern __typeof (xmlSAX2InitHtmlDefaultSAXHandler) xmlSAX2InitHtmlDefaultSAXHandler __attribute((alias("xmlSAX2InitHtmlDefaultSAXHandler__internal_alias"))); +#else +#ifndef xmlSAX2InitHtmlDefaultSAXHandler +extern __typeof (xmlSAX2InitHtmlDefaultSAXHandler) xmlSAX2InitHtmlDefaultSAXHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2InitHtmlDefaultSAXHandler xmlSAX2InitHtmlDefaultSAXHandler__internal_alias +#endif +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2InternalSubset +extern __typeof (xmlSAX2InternalSubset) xmlSAX2InternalSubset __attribute((alias("xmlSAX2InternalSubset__internal_alias"))); +#else +#ifndef xmlSAX2InternalSubset +extern __typeof (xmlSAX2InternalSubset) xmlSAX2InternalSubset__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2InternalSubset xmlSAX2InternalSubset__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2IsStandalone +extern __typeof (xmlSAX2IsStandalone) xmlSAX2IsStandalone __attribute((alias("xmlSAX2IsStandalone__internal_alias"))); +#else +#ifndef xmlSAX2IsStandalone +extern __typeof (xmlSAX2IsStandalone) xmlSAX2IsStandalone__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2IsStandalone xmlSAX2IsStandalone__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2NotationDecl +extern __typeof (xmlSAX2NotationDecl) xmlSAX2NotationDecl __attribute((alias("xmlSAX2NotationDecl__internal_alias"))); +#else +#ifndef xmlSAX2NotationDecl +extern __typeof (xmlSAX2NotationDecl) xmlSAX2NotationDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2NotationDecl xmlSAX2NotationDecl__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2ProcessingInstruction +extern __typeof (xmlSAX2ProcessingInstruction) xmlSAX2ProcessingInstruction __attribute((alias("xmlSAX2ProcessingInstruction__internal_alias"))); +#else +#ifndef xmlSAX2ProcessingInstruction +extern __typeof (xmlSAX2ProcessingInstruction) xmlSAX2ProcessingInstruction__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2ProcessingInstruction xmlSAX2ProcessingInstruction__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2Reference +extern __typeof (xmlSAX2Reference) xmlSAX2Reference __attribute((alias("xmlSAX2Reference__internal_alias"))); +#else +#ifndef xmlSAX2Reference +extern __typeof (xmlSAX2Reference) xmlSAX2Reference__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2Reference xmlSAX2Reference__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2ResolveEntity +extern __typeof (xmlSAX2ResolveEntity) xmlSAX2ResolveEntity __attribute((alias("xmlSAX2ResolveEntity__internal_alias"))); +#else +#ifndef xmlSAX2ResolveEntity +extern __typeof (xmlSAX2ResolveEntity) xmlSAX2ResolveEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2ResolveEntity xmlSAX2ResolveEntity__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2SetDocumentLocator +extern __typeof (xmlSAX2SetDocumentLocator) xmlSAX2SetDocumentLocator __attribute((alias("xmlSAX2SetDocumentLocator__internal_alias"))); +#else +#ifndef xmlSAX2SetDocumentLocator +extern __typeof (xmlSAX2SetDocumentLocator) xmlSAX2SetDocumentLocator__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2SetDocumentLocator xmlSAX2SetDocumentLocator__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2StartDocument +extern __typeof (xmlSAX2StartDocument) xmlSAX2StartDocument __attribute((alias("xmlSAX2StartDocument__internal_alias"))); +#else +#ifndef xmlSAX2StartDocument +extern __typeof (xmlSAX2StartDocument) xmlSAX2StartDocument__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2StartDocument xmlSAX2StartDocument__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_SAX2 +#undef xmlSAX2StartElement +extern __typeof (xmlSAX2StartElement) xmlSAX2StartElement __attribute((alias("xmlSAX2StartElement__internal_alias"))); +#else +#ifndef xmlSAX2StartElement +extern __typeof (xmlSAX2StartElement) xmlSAX2StartElement__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2StartElement xmlSAX2StartElement__internal_alias +#endif +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2StartElementNs +extern __typeof (xmlSAX2StartElementNs) xmlSAX2StartElementNs __attribute((alias("xmlSAX2StartElementNs__internal_alias"))); +#else +#ifndef xmlSAX2StartElementNs +extern __typeof (xmlSAX2StartElementNs) xmlSAX2StartElementNs__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2StartElementNs xmlSAX2StartElementNs__internal_alias +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAX2UnparsedEntityDecl +extern __typeof (xmlSAX2UnparsedEntityDecl) xmlSAX2UnparsedEntityDecl __attribute((alias("xmlSAX2UnparsedEntityDecl__internal_alias"))); +#else +#ifndef xmlSAX2UnparsedEntityDecl +extern __typeof (xmlSAX2UnparsedEntityDecl) xmlSAX2UnparsedEntityDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlSAX2UnparsedEntityDecl xmlSAX2UnparsedEntityDecl__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_SAX2 +#undef xmlSAXDefaultVersion +extern __typeof (xmlSAXDefaultVersion) xmlSAXDefaultVersion __attribute((alias("xmlSAXDefaultVersion__internal_alias"))); +#else +#ifndef xmlSAXDefaultVersion +extern __typeof (xmlSAXDefaultVersion) xmlSAXDefaultVersion__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXDefaultVersion xmlSAXDefaultVersion__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_parser +#undef xmlSAXParseDTD +extern __typeof (xmlSAXParseDTD) xmlSAXParseDTD __attribute((alias("xmlSAXParseDTD__internal_alias"))); +#else +#ifndef xmlSAXParseDTD +extern __typeof (xmlSAXParseDTD) xmlSAXParseDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXParseDTD xmlSAXParseDTD__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSAXParseDoc +extern __typeof (xmlSAXParseDoc) xmlSAXParseDoc __attribute((alias("xmlSAXParseDoc__internal_alias"))); +#else +#ifndef xmlSAXParseDoc +extern __typeof (xmlSAXParseDoc) xmlSAXParseDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXParseDoc xmlSAXParseDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSAXParseEntity +extern __typeof (xmlSAXParseEntity) xmlSAXParseEntity __attribute((alias("xmlSAXParseEntity__internal_alias"))); +#else +#ifndef xmlSAXParseEntity +extern __typeof (xmlSAXParseEntity) xmlSAXParseEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXParseEntity xmlSAXParseEntity__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSAXParseFile +extern __typeof (xmlSAXParseFile) xmlSAXParseFile __attribute((alias("xmlSAXParseFile__internal_alias"))); +#else +#ifndef xmlSAXParseFile +extern __typeof (xmlSAXParseFile) xmlSAXParseFile__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXParseFile xmlSAXParseFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSAXParseFileWithData +extern __typeof (xmlSAXParseFileWithData) xmlSAXParseFileWithData __attribute((alias("xmlSAXParseFileWithData__internal_alias"))); +#else +#ifndef xmlSAXParseFileWithData +extern __typeof (xmlSAXParseFileWithData) xmlSAXParseFileWithData__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXParseFileWithData xmlSAXParseFileWithData__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSAXParseMemory +extern __typeof (xmlSAXParseMemory) xmlSAXParseMemory __attribute((alias("xmlSAXParseMemory__internal_alias"))); +#else +#ifndef xmlSAXParseMemory +extern __typeof (xmlSAXParseMemory) xmlSAXParseMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXParseMemory xmlSAXParseMemory__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSAXParseMemoryWithData +extern __typeof (xmlSAXParseMemoryWithData) xmlSAXParseMemoryWithData __attribute((alias("xmlSAXParseMemoryWithData__internal_alias"))); +#else +#ifndef xmlSAXParseMemoryWithData +extern __typeof (xmlSAXParseMemoryWithData) xmlSAXParseMemoryWithData__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXParseMemoryWithData xmlSAXParseMemoryWithData__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSAXUserParseFile +extern __typeof (xmlSAXUserParseFile) xmlSAXUserParseFile __attribute((alias("xmlSAXUserParseFile__internal_alias"))); +#else +#ifndef xmlSAXUserParseFile +extern __typeof (xmlSAXUserParseFile) xmlSAXUserParseFile__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXUserParseFile xmlSAXUserParseFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSAXUserParseMemory +extern __typeof (xmlSAXUserParseMemory) xmlSAXUserParseMemory __attribute((alias("xmlSAXUserParseMemory__internal_alias"))); +#else +#ifndef xmlSAXUserParseMemory +extern __typeof (xmlSAXUserParseMemory) xmlSAXUserParseMemory__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXUserParseMemory xmlSAXUserParseMemory__internal_alias +#endif +#endif +#endif + +#ifdef bottom_SAX2 +#undef xmlSAXVersion +extern __typeof (xmlSAXVersion) xmlSAXVersion __attribute((alias("xmlSAXVersion__internal_alias"))); +#else +#ifndef xmlSAXVersion +extern __typeof (xmlSAXVersion) xmlSAXVersion__internal_alias __attribute((visibility("hidden"))); +#define xmlSAXVersion xmlSAXVersion__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveClose +extern __typeof (xmlSaveClose) xmlSaveClose __attribute((alias("xmlSaveClose__internal_alias"))); +#else +#ifndef xmlSaveClose +extern __typeof (xmlSaveClose) xmlSaveClose__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveClose xmlSaveClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveDoc +extern __typeof (xmlSaveDoc) xmlSaveDoc __attribute((alias("xmlSaveDoc__internal_alias"))); +#else +#ifndef xmlSaveDoc +extern __typeof (xmlSaveDoc) xmlSaveDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveDoc xmlSaveDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveFile +extern __typeof (xmlSaveFile) xmlSaveFile __attribute((alias("xmlSaveFile__internal_alias"))); +#else +#ifndef xmlSaveFile +extern __typeof (xmlSaveFile) xmlSaveFile__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveFile xmlSaveFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveFileEnc +extern __typeof (xmlSaveFileEnc) xmlSaveFileEnc __attribute((alias("xmlSaveFileEnc__internal_alias"))); +#else +#ifndef xmlSaveFileEnc +extern __typeof (xmlSaveFileEnc) xmlSaveFileEnc__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveFileEnc xmlSaveFileEnc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveFileTo +extern __typeof (xmlSaveFileTo) xmlSaveFileTo __attribute((alias("xmlSaveFileTo__internal_alias"))); +#else +#ifndef xmlSaveFileTo +extern __typeof (xmlSaveFileTo) xmlSaveFileTo__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveFileTo xmlSaveFileTo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveFlush +extern __typeof (xmlSaveFlush) xmlSaveFlush __attribute((alias("xmlSaveFlush__internal_alias"))); +#else +#ifndef xmlSaveFlush +extern __typeof (xmlSaveFlush) xmlSaveFlush__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveFlush xmlSaveFlush__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveFormatFile +extern __typeof (xmlSaveFormatFile) xmlSaveFormatFile __attribute((alias("xmlSaveFormatFile__internal_alias"))); +#else +#ifndef xmlSaveFormatFile +extern __typeof (xmlSaveFormatFile) xmlSaveFormatFile__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveFormatFile xmlSaveFormatFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveFormatFileEnc +extern __typeof (xmlSaveFormatFileEnc) xmlSaveFormatFileEnc __attribute((alias("xmlSaveFormatFileEnc__internal_alias"))); +#else +#ifndef xmlSaveFormatFileEnc +extern __typeof (xmlSaveFormatFileEnc) xmlSaveFormatFileEnc__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveFormatFileEnc xmlSaveFormatFileEnc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveFormatFileTo +extern __typeof (xmlSaveFormatFileTo) xmlSaveFormatFileTo __attribute((alias("xmlSaveFormatFileTo__internal_alias"))); +#else +#ifndef xmlSaveFormatFileTo +extern __typeof (xmlSaveFormatFileTo) xmlSaveFormatFileTo__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveFormatFileTo xmlSaveFormatFileTo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveSetAttrEscape +extern __typeof (xmlSaveSetAttrEscape) xmlSaveSetAttrEscape __attribute((alias("xmlSaveSetAttrEscape__internal_alias"))); +#else +#ifndef xmlSaveSetAttrEscape +extern __typeof (xmlSaveSetAttrEscape) xmlSaveSetAttrEscape__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveSetAttrEscape xmlSaveSetAttrEscape__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveSetEscape +extern __typeof (xmlSaveSetEscape) xmlSaveSetEscape __attribute((alias("xmlSaveSetEscape__internal_alias"))); +#else +#ifndef xmlSaveSetEscape +extern __typeof (xmlSaveSetEscape) xmlSaveSetEscape__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveSetEscape xmlSaveSetEscape__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveToBuffer +extern __typeof (xmlSaveToBuffer) xmlSaveToBuffer __attribute((alias("xmlSaveToBuffer__internal_alias"))); +#else +#ifndef xmlSaveToBuffer +extern __typeof (xmlSaveToBuffer) xmlSaveToBuffer__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveToBuffer xmlSaveToBuffer__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveToFd +extern __typeof (xmlSaveToFd) xmlSaveToFd __attribute((alias("xmlSaveToFd__internal_alias"))); +#else +#ifndef xmlSaveToFd +extern __typeof (xmlSaveToFd) xmlSaveToFd__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveToFd xmlSaveToFd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveToFilename +extern __typeof (xmlSaveToFilename) xmlSaveToFilename __attribute((alias("xmlSaveToFilename__internal_alias"))); +#else +#ifndef xmlSaveToFilename +extern __typeof (xmlSaveToFilename) xmlSaveToFilename__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveToFilename xmlSaveToFilename__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveToIO +extern __typeof (xmlSaveToIO) xmlSaveToIO __attribute((alias("xmlSaveToIO__internal_alias"))); +#else +#ifndef xmlSaveToIO +extern __typeof (xmlSaveToIO) xmlSaveToIO__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveToIO xmlSaveToIO__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlsave +#undef xmlSaveTree +extern __typeof (xmlSaveTree) xmlSaveTree __attribute((alias("xmlSaveTree__internal_alias"))); +#else +#ifndef xmlSaveTree +extern __typeof (xmlSaveTree) xmlSaveTree__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveTree xmlSaveTree__internal_alias +#endif +#endif +#endif + +#ifdef bottom_uri +#undef xmlSaveUri +extern __typeof (xmlSaveUri) xmlSaveUri __attribute((alias("xmlSaveUri__internal_alias"))); +#else +#ifndef xmlSaveUri +extern __typeof (xmlSaveUri) xmlSaveUri__internal_alias __attribute((visibility("hidden"))); +#define xmlSaveUri xmlSaveUri__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlScanName +extern __typeof (xmlScanName) xmlScanName __attribute((alias("xmlScanName__internal_alias"))); +#else +#ifndef xmlScanName +extern __typeof (xmlScanName) xmlScanName__internal_alias __attribute((visibility("hidden"))); +#define xmlScanName xmlScanName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaCheckFacet +extern __typeof (xmlSchemaCheckFacet) xmlSchemaCheckFacet __attribute((alias("xmlSchemaCheckFacet__internal_alias"))); +#else +#ifndef xmlSchemaCheckFacet +extern __typeof (xmlSchemaCheckFacet) xmlSchemaCheckFacet__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaCheckFacet xmlSchemaCheckFacet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaCleanupTypes +extern __typeof (xmlSchemaCleanupTypes) xmlSchemaCleanupTypes __attribute((alias("xmlSchemaCleanupTypes__internal_alias"))); +#else +#ifndef xmlSchemaCleanupTypes +extern __typeof (xmlSchemaCleanupTypes) xmlSchemaCleanupTypes__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaCleanupTypes xmlSchemaCleanupTypes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaCollapseString +extern __typeof (xmlSchemaCollapseString) xmlSchemaCollapseString __attribute((alias("xmlSchemaCollapseString__internal_alias"))); +#else +#ifndef xmlSchemaCollapseString +extern __typeof (xmlSchemaCollapseString) xmlSchemaCollapseString__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaCollapseString xmlSchemaCollapseString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaCompareValues +extern __typeof (xmlSchemaCompareValues) xmlSchemaCompareValues __attribute((alias("xmlSchemaCompareValues__internal_alias"))); +#else +#ifndef xmlSchemaCompareValues +extern __typeof (xmlSchemaCompareValues) xmlSchemaCompareValues__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaCompareValues xmlSchemaCompareValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaCompareValuesWhtsp +extern __typeof (xmlSchemaCompareValuesWhtsp) xmlSchemaCompareValuesWhtsp __attribute((alias("xmlSchemaCompareValuesWhtsp__internal_alias"))); +#else +#ifndef xmlSchemaCompareValuesWhtsp +extern __typeof (xmlSchemaCompareValuesWhtsp) xmlSchemaCompareValuesWhtsp__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaCompareValuesWhtsp xmlSchemaCompareValuesWhtsp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaCopyValue +extern __typeof (xmlSchemaCopyValue) xmlSchemaCopyValue __attribute((alias("xmlSchemaCopyValue__internal_alias"))); +#else +#ifndef xmlSchemaCopyValue +extern __typeof (xmlSchemaCopyValue) xmlSchemaCopyValue__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaCopyValue xmlSchemaCopyValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaDump +extern __typeof (xmlSchemaDump) xmlSchemaDump __attribute((alias("xmlSchemaDump__internal_alias"))); +#else +#ifndef xmlSchemaDump +extern __typeof (xmlSchemaDump) xmlSchemaDump__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaDump xmlSchemaDump__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaFree +extern __typeof (xmlSchemaFree) xmlSchemaFree __attribute((alias("xmlSchemaFree__internal_alias"))); +#else +#ifndef xmlSchemaFree +extern __typeof (xmlSchemaFree) xmlSchemaFree__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaFree xmlSchemaFree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaFreeFacet +extern __typeof (xmlSchemaFreeFacet) xmlSchemaFreeFacet __attribute((alias("xmlSchemaFreeFacet__internal_alias"))); +#else +#ifndef xmlSchemaFreeFacet +extern __typeof (xmlSchemaFreeFacet) xmlSchemaFreeFacet__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaFreeFacet xmlSchemaFreeFacet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaFreeParserCtxt +extern __typeof (xmlSchemaFreeParserCtxt) xmlSchemaFreeParserCtxt __attribute((alias("xmlSchemaFreeParserCtxt__internal_alias"))); +#else +#ifndef xmlSchemaFreeParserCtxt +extern __typeof (xmlSchemaFreeParserCtxt) xmlSchemaFreeParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaFreeParserCtxt xmlSchemaFreeParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaFreeType +extern __typeof (xmlSchemaFreeType) xmlSchemaFreeType __attribute((alias("xmlSchemaFreeType__internal_alias"))); +#else +#ifndef xmlSchemaFreeType +extern __typeof (xmlSchemaFreeType) xmlSchemaFreeType__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaFreeType xmlSchemaFreeType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaFreeValidCtxt +extern __typeof (xmlSchemaFreeValidCtxt) xmlSchemaFreeValidCtxt __attribute((alias("xmlSchemaFreeValidCtxt__internal_alias"))); +#else +#ifndef xmlSchemaFreeValidCtxt +extern __typeof (xmlSchemaFreeValidCtxt) xmlSchemaFreeValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaFreeValidCtxt xmlSchemaFreeValidCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaFreeValue +extern __typeof (xmlSchemaFreeValue) xmlSchemaFreeValue __attribute((alias("xmlSchemaFreeValue__internal_alias"))); +#else +#ifndef xmlSchemaFreeValue +extern __typeof (xmlSchemaFreeValue) xmlSchemaFreeValue__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaFreeValue xmlSchemaFreeValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaFreeWildcard +extern __typeof (xmlSchemaFreeWildcard) xmlSchemaFreeWildcard __attribute((alias("xmlSchemaFreeWildcard__internal_alias"))); +#else +#ifndef xmlSchemaFreeWildcard +extern __typeof (xmlSchemaFreeWildcard) xmlSchemaFreeWildcard__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaFreeWildcard xmlSchemaFreeWildcard__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaGetBuiltInListSimpleTypeItemType +extern __typeof (xmlSchemaGetBuiltInListSimpleTypeItemType) xmlSchemaGetBuiltInListSimpleTypeItemType __attribute((alias("xmlSchemaGetBuiltInListSimpleTypeItemType__internal_alias"))); +#else +#ifndef xmlSchemaGetBuiltInListSimpleTypeItemType +extern __typeof (xmlSchemaGetBuiltInListSimpleTypeItemType) xmlSchemaGetBuiltInListSimpleTypeItemType__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetBuiltInListSimpleTypeItemType xmlSchemaGetBuiltInListSimpleTypeItemType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaGetBuiltInType +extern __typeof (xmlSchemaGetBuiltInType) xmlSchemaGetBuiltInType __attribute((alias("xmlSchemaGetBuiltInType__internal_alias"))); +#else +#ifndef xmlSchemaGetBuiltInType +extern __typeof (xmlSchemaGetBuiltInType) xmlSchemaGetBuiltInType__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetBuiltInType xmlSchemaGetBuiltInType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaGetCanonValue +extern __typeof (xmlSchemaGetCanonValue) xmlSchemaGetCanonValue __attribute((alias("xmlSchemaGetCanonValue__internal_alias"))); +#else +#ifndef xmlSchemaGetCanonValue +extern __typeof (xmlSchemaGetCanonValue) xmlSchemaGetCanonValue__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetCanonValue xmlSchemaGetCanonValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaGetCanonValueWhtsp +extern __typeof (xmlSchemaGetCanonValueWhtsp) xmlSchemaGetCanonValueWhtsp __attribute((alias("xmlSchemaGetCanonValueWhtsp__internal_alias"))); +#else +#ifndef xmlSchemaGetCanonValueWhtsp +extern __typeof (xmlSchemaGetCanonValueWhtsp) xmlSchemaGetCanonValueWhtsp__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetCanonValueWhtsp xmlSchemaGetCanonValueWhtsp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaGetFacetValueAsULong +extern __typeof (xmlSchemaGetFacetValueAsULong) xmlSchemaGetFacetValueAsULong __attribute((alias("xmlSchemaGetFacetValueAsULong__internal_alias"))); +#else +#ifndef xmlSchemaGetFacetValueAsULong +extern __typeof (xmlSchemaGetFacetValueAsULong) xmlSchemaGetFacetValueAsULong__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetFacetValueAsULong xmlSchemaGetFacetValueAsULong__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaGetParserErrors +extern __typeof (xmlSchemaGetParserErrors) xmlSchemaGetParserErrors __attribute((alias("xmlSchemaGetParserErrors__internal_alias"))); +#else +#ifndef xmlSchemaGetParserErrors +extern __typeof (xmlSchemaGetParserErrors) xmlSchemaGetParserErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetParserErrors xmlSchemaGetParserErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaGetPredefinedType +extern __typeof (xmlSchemaGetPredefinedType) xmlSchemaGetPredefinedType __attribute((alias("xmlSchemaGetPredefinedType__internal_alias"))); +#else +#ifndef xmlSchemaGetPredefinedType +extern __typeof (xmlSchemaGetPredefinedType) xmlSchemaGetPredefinedType__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetPredefinedType xmlSchemaGetPredefinedType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaGetValType +extern __typeof (xmlSchemaGetValType) xmlSchemaGetValType __attribute((alias("xmlSchemaGetValType__internal_alias"))); +#else +#ifndef xmlSchemaGetValType +extern __typeof (xmlSchemaGetValType) xmlSchemaGetValType__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetValType xmlSchemaGetValType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaGetValidErrors +extern __typeof (xmlSchemaGetValidErrors) xmlSchemaGetValidErrors __attribute((alias("xmlSchemaGetValidErrors__internal_alias"))); +#else +#ifndef xmlSchemaGetValidErrors +extern __typeof (xmlSchemaGetValidErrors) xmlSchemaGetValidErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaGetValidErrors xmlSchemaGetValidErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaInitTypes +extern __typeof (xmlSchemaInitTypes) xmlSchemaInitTypes __attribute((alias("xmlSchemaInitTypes__internal_alias"))); +#else +#ifndef xmlSchemaInitTypes +extern __typeof (xmlSchemaInitTypes) xmlSchemaInitTypes__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaInitTypes xmlSchemaInitTypes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaIsBuiltInTypeFacet +extern __typeof (xmlSchemaIsBuiltInTypeFacet) xmlSchemaIsBuiltInTypeFacet __attribute((alias("xmlSchemaIsBuiltInTypeFacet__internal_alias"))); +#else +#ifndef xmlSchemaIsBuiltInTypeFacet +extern __typeof (xmlSchemaIsBuiltInTypeFacet) xmlSchemaIsBuiltInTypeFacet__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaIsBuiltInTypeFacet xmlSchemaIsBuiltInTypeFacet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaIsValid +extern __typeof (xmlSchemaIsValid) xmlSchemaIsValid __attribute((alias("xmlSchemaIsValid__internal_alias"))); +#else +#ifndef xmlSchemaIsValid +extern __typeof (xmlSchemaIsValid) xmlSchemaIsValid__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaIsValid xmlSchemaIsValid__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaNewDocParserCtxt +extern __typeof (xmlSchemaNewDocParserCtxt) xmlSchemaNewDocParserCtxt __attribute((alias("xmlSchemaNewDocParserCtxt__internal_alias"))); +#else +#ifndef xmlSchemaNewDocParserCtxt +extern __typeof (xmlSchemaNewDocParserCtxt) xmlSchemaNewDocParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaNewDocParserCtxt xmlSchemaNewDocParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaNewFacet +extern __typeof (xmlSchemaNewFacet) xmlSchemaNewFacet __attribute((alias("xmlSchemaNewFacet__internal_alias"))); +#else +#ifndef xmlSchemaNewFacet +extern __typeof (xmlSchemaNewFacet) xmlSchemaNewFacet__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaNewFacet xmlSchemaNewFacet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaNewMemParserCtxt +extern __typeof (xmlSchemaNewMemParserCtxt) xmlSchemaNewMemParserCtxt __attribute((alias("xmlSchemaNewMemParserCtxt__internal_alias"))); +#else +#ifndef xmlSchemaNewMemParserCtxt +extern __typeof (xmlSchemaNewMemParserCtxt) xmlSchemaNewMemParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaNewMemParserCtxt xmlSchemaNewMemParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaNewNOTATIONValue +extern __typeof (xmlSchemaNewNOTATIONValue) xmlSchemaNewNOTATIONValue __attribute((alias("xmlSchemaNewNOTATIONValue__internal_alias"))); +#else +#ifndef xmlSchemaNewNOTATIONValue +extern __typeof (xmlSchemaNewNOTATIONValue) xmlSchemaNewNOTATIONValue__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaNewNOTATIONValue xmlSchemaNewNOTATIONValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaNewParserCtxt +extern __typeof (xmlSchemaNewParserCtxt) xmlSchemaNewParserCtxt __attribute((alias("xmlSchemaNewParserCtxt__internal_alias"))); +#else +#ifndef xmlSchemaNewParserCtxt +extern __typeof (xmlSchemaNewParserCtxt) xmlSchemaNewParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaNewParserCtxt xmlSchemaNewParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaNewQNameValue +extern __typeof (xmlSchemaNewQNameValue) xmlSchemaNewQNameValue __attribute((alias("xmlSchemaNewQNameValue__internal_alias"))); +#else +#ifndef xmlSchemaNewQNameValue +extern __typeof (xmlSchemaNewQNameValue) xmlSchemaNewQNameValue__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaNewQNameValue xmlSchemaNewQNameValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaNewStringValue +extern __typeof (xmlSchemaNewStringValue) xmlSchemaNewStringValue __attribute((alias("xmlSchemaNewStringValue__internal_alias"))); +#else +#ifndef xmlSchemaNewStringValue +extern __typeof (xmlSchemaNewStringValue) xmlSchemaNewStringValue__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaNewStringValue xmlSchemaNewStringValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaNewValidCtxt +extern __typeof (xmlSchemaNewValidCtxt) xmlSchemaNewValidCtxt __attribute((alias("xmlSchemaNewValidCtxt__internal_alias"))); +#else +#ifndef xmlSchemaNewValidCtxt +extern __typeof (xmlSchemaNewValidCtxt) xmlSchemaNewValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaNewValidCtxt xmlSchemaNewValidCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaParse +extern __typeof (xmlSchemaParse) xmlSchemaParse __attribute((alias("xmlSchemaParse__internal_alias"))); +#else +#ifndef xmlSchemaParse +extern __typeof (xmlSchemaParse) xmlSchemaParse__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaParse xmlSchemaParse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaSAXPlug +extern __typeof (xmlSchemaSAXPlug) xmlSchemaSAXPlug __attribute((alias("xmlSchemaSAXPlug__internal_alias"))); +#else +#ifndef xmlSchemaSAXPlug +extern __typeof (xmlSchemaSAXPlug) xmlSchemaSAXPlug__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSAXPlug xmlSchemaSAXPlug__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaSAXUnplug +extern __typeof (xmlSchemaSAXUnplug) xmlSchemaSAXUnplug __attribute((alias("xmlSchemaSAXUnplug__internal_alias"))); +#else +#ifndef xmlSchemaSAXUnplug +extern __typeof (xmlSchemaSAXUnplug) xmlSchemaSAXUnplug__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSAXUnplug xmlSchemaSAXUnplug__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaSetParserErrors +extern __typeof (xmlSchemaSetParserErrors) xmlSchemaSetParserErrors __attribute((alias("xmlSchemaSetParserErrors__internal_alias"))); +#else +#ifndef xmlSchemaSetParserErrors +extern __typeof (xmlSchemaSetParserErrors) xmlSchemaSetParserErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSetParserErrors xmlSchemaSetParserErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaSetParserStructuredErrors +extern __typeof (xmlSchemaSetParserStructuredErrors) xmlSchemaSetParserStructuredErrors __attribute((alias("xmlSchemaSetParserStructuredErrors__internal_alias"))); +#else +#ifndef xmlSchemaSetParserStructuredErrors +extern __typeof (xmlSchemaSetParserStructuredErrors) xmlSchemaSetParserStructuredErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSetParserStructuredErrors xmlSchemaSetParserStructuredErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaSetValidErrors +extern __typeof (xmlSchemaSetValidErrors) xmlSchemaSetValidErrors __attribute((alias("xmlSchemaSetValidErrors__internal_alias"))); +#else +#ifndef xmlSchemaSetValidErrors +extern __typeof (xmlSchemaSetValidErrors) xmlSchemaSetValidErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSetValidErrors xmlSchemaSetValidErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaSetValidOptions +extern __typeof (xmlSchemaSetValidOptions) xmlSchemaSetValidOptions __attribute((alias("xmlSchemaSetValidOptions__internal_alias"))); +#else +#ifndef xmlSchemaSetValidOptions +extern __typeof (xmlSchemaSetValidOptions) xmlSchemaSetValidOptions__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSetValidOptions xmlSchemaSetValidOptions__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaSetValidStructuredErrors +extern __typeof (xmlSchemaSetValidStructuredErrors) xmlSchemaSetValidStructuredErrors __attribute((alias("xmlSchemaSetValidStructuredErrors__internal_alias"))); +#else +#ifndef xmlSchemaSetValidStructuredErrors +extern __typeof (xmlSchemaSetValidStructuredErrors) xmlSchemaSetValidStructuredErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaSetValidStructuredErrors xmlSchemaSetValidStructuredErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValPredefTypeNode +extern __typeof (xmlSchemaValPredefTypeNode) xmlSchemaValPredefTypeNode __attribute((alias("xmlSchemaValPredefTypeNode__internal_alias"))); +#else +#ifndef xmlSchemaValPredefTypeNode +extern __typeof (xmlSchemaValPredefTypeNode) xmlSchemaValPredefTypeNode__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValPredefTypeNode xmlSchemaValPredefTypeNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValPredefTypeNodeNoNorm +extern __typeof (xmlSchemaValPredefTypeNodeNoNorm) xmlSchemaValPredefTypeNodeNoNorm __attribute((alias("xmlSchemaValPredefTypeNodeNoNorm__internal_alias"))); +#else +#ifndef xmlSchemaValPredefTypeNodeNoNorm +extern __typeof (xmlSchemaValPredefTypeNodeNoNorm) xmlSchemaValPredefTypeNodeNoNorm__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValPredefTypeNodeNoNorm xmlSchemaValPredefTypeNodeNoNorm__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaValidCtxtGetOptions +extern __typeof (xmlSchemaValidCtxtGetOptions) xmlSchemaValidCtxtGetOptions __attribute((alias("xmlSchemaValidCtxtGetOptions__internal_alias"))); +#else +#ifndef xmlSchemaValidCtxtGetOptions +extern __typeof (xmlSchemaValidCtxtGetOptions) xmlSchemaValidCtxtGetOptions__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidCtxtGetOptions xmlSchemaValidCtxtGetOptions__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaValidCtxtGetParserCtxt +extern __typeof (xmlSchemaValidCtxtGetParserCtxt) xmlSchemaValidCtxtGetParserCtxt __attribute((alias("xmlSchemaValidCtxtGetParserCtxt__internal_alias"))); +#else +#ifndef xmlSchemaValidCtxtGetParserCtxt +extern __typeof (xmlSchemaValidCtxtGetParserCtxt) xmlSchemaValidCtxtGetParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidCtxtGetParserCtxt xmlSchemaValidCtxtGetParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaValidateDoc +extern __typeof (xmlSchemaValidateDoc) xmlSchemaValidateDoc __attribute((alias("xmlSchemaValidateDoc__internal_alias"))); +#else +#ifndef xmlSchemaValidateDoc +extern __typeof (xmlSchemaValidateDoc) xmlSchemaValidateDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateDoc xmlSchemaValidateDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValidateFacet +extern __typeof (xmlSchemaValidateFacet) xmlSchemaValidateFacet __attribute((alias("xmlSchemaValidateFacet__internal_alias"))); +#else +#ifndef xmlSchemaValidateFacet +extern __typeof (xmlSchemaValidateFacet) xmlSchemaValidateFacet__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateFacet xmlSchemaValidateFacet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValidateFacetWhtsp +extern __typeof (xmlSchemaValidateFacetWhtsp) xmlSchemaValidateFacetWhtsp __attribute((alias("xmlSchemaValidateFacetWhtsp__internal_alias"))); +#else +#ifndef xmlSchemaValidateFacetWhtsp +extern __typeof (xmlSchemaValidateFacetWhtsp) xmlSchemaValidateFacetWhtsp__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateFacetWhtsp xmlSchemaValidateFacetWhtsp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaValidateFile +extern __typeof (xmlSchemaValidateFile) xmlSchemaValidateFile __attribute((alias("xmlSchemaValidateFile__internal_alias"))); +#else +#ifndef xmlSchemaValidateFile +extern __typeof (xmlSchemaValidateFile) xmlSchemaValidateFile__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateFile xmlSchemaValidateFile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValidateLengthFacet +extern __typeof (xmlSchemaValidateLengthFacet) xmlSchemaValidateLengthFacet __attribute((alias("xmlSchemaValidateLengthFacet__internal_alias"))); +#else +#ifndef xmlSchemaValidateLengthFacet +extern __typeof (xmlSchemaValidateLengthFacet) xmlSchemaValidateLengthFacet__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateLengthFacet xmlSchemaValidateLengthFacet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValidateLengthFacetWhtsp +extern __typeof (xmlSchemaValidateLengthFacetWhtsp) xmlSchemaValidateLengthFacetWhtsp __attribute((alias("xmlSchemaValidateLengthFacetWhtsp__internal_alias"))); +#else +#ifndef xmlSchemaValidateLengthFacetWhtsp +extern __typeof (xmlSchemaValidateLengthFacetWhtsp) xmlSchemaValidateLengthFacetWhtsp__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateLengthFacetWhtsp xmlSchemaValidateLengthFacetWhtsp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValidateListSimpleTypeFacet +extern __typeof (xmlSchemaValidateListSimpleTypeFacet) xmlSchemaValidateListSimpleTypeFacet __attribute((alias("xmlSchemaValidateListSimpleTypeFacet__internal_alias"))); +#else +#ifndef xmlSchemaValidateListSimpleTypeFacet +extern __typeof (xmlSchemaValidateListSimpleTypeFacet) xmlSchemaValidateListSimpleTypeFacet__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateListSimpleTypeFacet xmlSchemaValidateListSimpleTypeFacet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaValidateOneElement +extern __typeof (xmlSchemaValidateOneElement) xmlSchemaValidateOneElement __attribute((alias("xmlSchemaValidateOneElement__internal_alias"))); +#else +#ifndef xmlSchemaValidateOneElement +extern __typeof (xmlSchemaValidateOneElement) xmlSchemaValidateOneElement__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateOneElement xmlSchemaValidateOneElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValidatePredefinedType +extern __typeof (xmlSchemaValidatePredefinedType) xmlSchemaValidatePredefinedType __attribute((alias("xmlSchemaValidatePredefinedType__internal_alias"))); +#else +#ifndef xmlSchemaValidatePredefinedType +extern __typeof (xmlSchemaValidatePredefinedType) xmlSchemaValidatePredefinedType__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidatePredefinedType xmlSchemaValidatePredefinedType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaValidateSetFilename +extern __typeof (xmlSchemaValidateSetFilename) xmlSchemaValidateSetFilename __attribute((alias("xmlSchemaValidateSetFilename__internal_alias"))); +#else +#ifndef xmlSchemaValidateSetFilename +extern __typeof (xmlSchemaValidateSetFilename) xmlSchemaValidateSetFilename__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateSetFilename xmlSchemaValidateSetFilename__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaValidateSetLocator +extern __typeof (xmlSchemaValidateSetLocator) xmlSchemaValidateSetLocator __attribute((alias("xmlSchemaValidateSetLocator__internal_alias"))); +#else +#ifndef xmlSchemaValidateSetLocator +extern __typeof (xmlSchemaValidateSetLocator) xmlSchemaValidateSetLocator__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateSetLocator xmlSchemaValidateSetLocator__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemas +#undef xmlSchemaValidateStream +extern __typeof (xmlSchemaValidateStream) xmlSchemaValidateStream __attribute((alias("xmlSchemaValidateStream__internal_alias"))); +#else +#ifndef xmlSchemaValidateStream +extern __typeof (xmlSchemaValidateStream) xmlSchemaValidateStream__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValidateStream xmlSchemaValidateStream__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValueAppend +extern __typeof (xmlSchemaValueAppend) xmlSchemaValueAppend __attribute((alias("xmlSchemaValueAppend__internal_alias"))); +#else +#ifndef xmlSchemaValueAppend +extern __typeof (xmlSchemaValueAppend) xmlSchemaValueAppend__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValueAppend xmlSchemaValueAppend__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValueGetAsBoolean +extern __typeof (xmlSchemaValueGetAsBoolean) xmlSchemaValueGetAsBoolean __attribute((alias("xmlSchemaValueGetAsBoolean__internal_alias"))); +#else +#ifndef xmlSchemaValueGetAsBoolean +extern __typeof (xmlSchemaValueGetAsBoolean) xmlSchemaValueGetAsBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValueGetAsBoolean xmlSchemaValueGetAsBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValueGetAsString +extern __typeof (xmlSchemaValueGetAsString) xmlSchemaValueGetAsString __attribute((alias("xmlSchemaValueGetAsString__internal_alias"))); +#else +#ifndef xmlSchemaValueGetAsString +extern __typeof (xmlSchemaValueGetAsString) xmlSchemaValueGetAsString__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValueGetAsString xmlSchemaValueGetAsString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaValueGetNext +extern __typeof (xmlSchemaValueGetNext) xmlSchemaValueGetNext __attribute((alias("xmlSchemaValueGetNext__internal_alias"))); +#else +#ifndef xmlSchemaValueGetNext +extern __typeof (xmlSchemaValueGetNext) xmlSchemaValueGetNext__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaValueGetNext xmlSchemaValueGetNext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlschemastypes +#undef xmlSchemaWhiteSpaceReplace +extern __typeof (xmlSchemaWhiteSpaceReplace) xmlSchemaWhiteSpaceReplace __attribute((alias("xmlSchemaWhiteSpaceReplace__internal_alias"))); +#else +#ifndef xmlSchemaWhiteSpaceReplace +extern __typeof (xmlSchemaWhiteSpaceReplace) xmlSchemaWhiteSpaceReplace__internal_alias __attribute((visibility("hidden"))); +#define xmlSchemaWhiteSpaceReplace xmlSchemaWhiteSpaceReplace__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronFree +extern __typeof (xmlSchematronFree) xmlSchematronFree __attribute((alias("xmlSchematronFree__internal_alias"))); +#else +#ifndef xmlSchematronFree +extern __typeof (xmlSchematronFree) xmlSchematronFree__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronFree xmlSchematronFree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronFreeParserCtxt +extern __typeof (xmlSchematronFreeParserCtxt) xmlSchematronFreeParserCtxt __attribute((alias("xmlSchematronFreeParserCtxt__internal_alias"))); +#else +#ifndef xmlSchematronFreeParserCtxt +extern __typeof (xmlSchematronFreeParserCtxt) xmlSchematronFreeParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronFreeParserCtxt xmlSchematronFreeParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronFreeValidCtxt +extern __typeof (xmlSchematronFreeValidCtxt) xmlSchematronFreeValidCtxt __attribute((alias("xmlSchematronFreeValidCtxt__internal_alias"))); +#else +#ifndef xmlSchematronFreeValidCtxt +extern __typeof (xmlSchematronFreeValidCtxt) xmlSchematronFreeValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronFreeValidCtxt xmlSchematronFreeValidCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronNewDocParserCtxt +extern __typeof (xmlSchematronNewDocParserCtxt) xmlSchematronNewDocParserCtxt __attribute((alias("xmlSchematronNewDocParserCtxt__internal_alias"))); +#else +#ifndef xmlSchematronNewDocParserCtxt +extern __typeof (xmlSchematronNewDocParserCtxt) xmlSchematronNewDocParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronNewDocParserCtxt xmlSchematronNewDocParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronNewMemParserCtxt +extern __typeof (xmlSchematronNewMemParserCtxt) xmlSchematronNewMemParserCtxt __attribute((alias("xmlSchematronNewMemParserCtxt__internal_alias"))); +#else +#ifndef xmlSchematronNewMemParserCtxt +extern __typeof (xmlSchematronNewMemParserCtxt) xmlSchematronNewMemParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronNewMemParserCtxt xmlSchematronNewMemParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronNewParserCtxt +extern __typeof (xmlSchematronNewParserCtxt) xmlSchematronNewParserCtxt __attribute((alias("xmlSchematronNewParserCtxt__internal_alias"))); +#else +#ifndef xmlSchematronNewParserCtxt +extern __typeof (xmlSchematronNewParserCtxt) xmlSchematronNewParserCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronNewParserCtxt xmlSchematronNewParserCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronNewValidCtxt +extern __typeof (xmlSchematronNewValidCtxt) xmlSchematronNewValidCtxt __attribute((alias("xmlSchematronNewValidCtxt__internal_alias"))); +#else +#ifndef xmlSchematronNewValidCtxt +extern __typeof (xmlSchematronNewValidCtxt) xmlSchematronNewValidCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronNewValidCtxt xmlSchematronNewValidCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronParse +extern __typeof (xmlSchematronParse) xmlSchematronParse __attribute((alias("xmlSchematronParse__internal_alias"))); +#else +#ifndef xmlSchematronParse +extern __typeof (xmlSchematronParse) xmlSchematronParse__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronParse xmlSchematronParse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronSetValidStructuredErrors +extern __typeof (xmlSchematronSetValidStructuredErrors) xmlSchematronSetValidStructuredErrors __attribute((alias("xmlSchematronSetValidStructuredErrors__internal_alias"))); +#else +#ifndef xmlSchematronSetValidStructuredErrors +extern __typeof (xmlSchematronSetValidStructuredErrors) xmlSchematronSetValidStructuredErrors__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronSetValidStructuredErrors xmlSchematronSetValidStructuredErrors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_SCHEMATRON_ENABLED) +#ifdef bottom_schematron +#undef xmlSchematronValidateDoc +extern __typeof (xmlSchematronValidateDoc) xmlSchematronValidateDoc __attribute((alias("xmlSchematronValidateDoc__internal_alias"))); +#else +#ifndef xmlSchematronValidateDoc +extern __typeof (xmlSchematronValidateDoc) xmlSchematronValidateDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlSchematronValidateDoc xmlSchematronValidateDoc__internal_alias +#endif +#endif +#endif + +#ifdef bottom_tree +#undef xmlSearchNs +extern __typeof (xmlSearchNs) xmlSearchNs __attribute((alias("xmlSearchNs__internal_alias"))); +#else +#ifndef xmlSearchNs +extern __typeof (xmlSearchNs) xmlSearchNs__internal_alias __attribute((visibility("hidden"))); +#define xmlSearchNs xmlSearchNs__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSearchNsByHref +extern __typeof (xmlSearchNsByHref) xmlSearchNsByHref __attribute((alias("xmlSearchNsByHref__internal_alias"))); +#else +#ifndef xmlSearchNsByHref +extern __typeof (xmlSearchNsByHref) xmlSearchNsByHref__internal_alias __attribute((visibility("hidden"))); +#define xmlSearchNsByHref xmlSearchNsByHref__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSetBufferAllocationScheme +extern __typeof (xmlSetBufferAllocationScheme) xmlSetBufferAllocationScheme __attribute((alias("xmlSetBufferAllocationScheme__internal_alias"))); +#else +#ifndef xmlSetBufferAllocationScheme +extern __typeof (xmlSetBufferAllocationScheme) xmlSetBufferAllocationScheme__internal_alias __attribute((visibility("hidden"))); +#define xmlSetBufferAllocationScheme xmlSetBufferAllocationScheme__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSetCompressMode +extern __typeof (xmlSetCompressMode) xmlSetCompressMode __attribute((alias("xmlSetCompressMode__internal_alias"))); +#else +#ifndef xmlSetCompressMode +extern __typeof (xmlSetCompressMode) xmlSetCompressMode__internal_alias __attribute((visibility("hidden"))); +#define xmlSetCompressMode xmlSetCompressMode__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSetDocCompressMode +extern __typeof (xmlSetDocCompressMode) xmlSetDocCompressMode __attribute((alias("xmlSetDocCompressMode__internal_alias"))); +#else +#ifndef xmlSetDocCompressMode +extern __typeof (xmlSetDocCompressMode) xmlSetDocCompressMode__internal_alias __attribute((visibility("hidden"))); +#define xmlSetDocCompressMode xmlSetDocCompressMode__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_parser +#undef xmlSetEntityReferenceFunc +extern __typeof (xmlSetEntityReferenceFunc) xmlSetEntityReferenceFunc __attribute((alias("xmlSetEntityReferenceFunc__internal_alias"))); +#else +#ifndef xmlSetEntityReferenceFunc +extern __typeof (xmlSetEntityReferenceFunc) xmlSetEntityReferenceFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlSetEntityReferenceFunc xmlSetEntityReferenceFunc__internal_alias +#endif +#endif +#endif + +#ifdef bottom_xmlIO +#undef xmlSetExternalEntityLoader +extern __typeof (xmlSetExternalEntityLoader) xmlSetExternalEntityLoader __attribute((alias("xmlSetExternalEntityLoader__internal_alias"))); +#else +#ifndef xmlSetExternalEntityLoader +extern __typeof (xmlSetExternalEntityLoader) xmlSetExternalEntityLoader__internal_alias __attribute((visibility("hidden"))); +#define xmlSetExternalEntityLoader xmlSetExternalEntityLoader__internal_alias +#endif +#endif + +#if defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_legacy +#undef xmlSetFeature +extern __typeof (xmlSetFeature) xmlSetFeature __attribute((alias("xmlSetFeature__internal_alias"))); +#else +#ifndef xmlSetFeature +extern __typeof (xmlSetFeature) xmlSetFeature__internal_alias __attribute((visibility("hidden"))); +#define xmlSetFeature xmlSetFeature__internal_alias +#endif +#endif +#endif + +#ifdef bottom_error +#undef xmlSetGenericErrorFunc +extern __typeof (xmlSetGenericErrorFunc) xmlSetGenericErrorFunc __attribute((alias("xmlSetGenericErrorFunc__internal_alias"))); +#else +#ifndef xmlSetGenericErrorFunc +extern __typeof (xmlSetGenericErrorFunc) xmlSetGenericErrorFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlSetGenericErrorFunc xmlSetGenericErrorFunc__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSetListDoc +extern __typeof (xmlSetListDoc) xmlSetListDoc __attribute((alias("xmlSetListDoc__internal_alias"))); +#else +#ifndef xmlSetListDoc +extern __typeof (xmlSetListDoc) xmlSetListDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlSetListDoc xmlSetListDoc__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSetNs +extern __typeof (xmlSetNs) xmlSetNs __attribute((alias("xmlSetNs__internal_alias"))); +#else +#ifndef xmlSetNs +extern __typeof (xmlSetNs) xmlSetNs__internal_alias __attribute((visibility("hidden"))); +#define xmlSetNs xmlSetNs__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) +#ifdef bottom_tree +#undef xmlSetNsProp +extern __typeof (xmlSetNsProp) xmlSetNsProp __attribute((alias("xmlSetNsProp__internal_alias"))); +#else +#ifndef xmlSetNsProp +extern __typeof (xmlSetNsProp) xmlSetNsProp__internal_alias __attribute((visibility("hidden"))); +#define xmlSetNsProp xmlSetNsProp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) +#ifdef bottom_tree +#undef xmlSetProp +extern __typeof (xmlSetProp) xmlSetProp __attribute((alias("xmlSetProp__internal_alias"))); +#else +#ifndef xmlSetProp +extern __typeof (xmlSetProp) xmlSetProp__internal_alias __attribute((visibility("hidden"))); +#define xmlSetProp xmlSetProp__internal_alias +#endif +#endif +#endif + +#ifdef bottom_error +#undef xmlSetStructuredErrorFunc +extern __typeof (xmlSetStructuredErrorFunc) xmlSetStructuredErrorFunc __attribute((alias("xmlSetStructuredErrorFunc__internal_alias"))); +#else +#ifndef xmlSetStructuredErrorFunc +extern __typeof (xmlSetStructuredErrorFunc) xmlSetStructuredErrorFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlSetStructuredErrorFunc xmlSetStructuredErrorFunc__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSetTreeDoc +extern __typeof (xmlSetTreeDoc) xmlSetTreeDoc __attribute((alias("xmlSetTreeDoc__internal_alias"))); +#else +#ifndef xmlSetTreeDoc +extern __typeof (xmlSetTreeDoc) xmlSetTreeDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlSetTreeDoc xmlSetTreeDoc__internal_alias +#endif +#endif + +#if defined(LIBXML_SAX1_ENABLED) +#ifdef bottom_parser +#undef xmlSetupParserForBuffer +extern __typeof (xmlSetupParserForBuffer) xmlSetupParserForBuffer __attribute((alias("xmlSetupParserForBuffer__internal_alias"))); +#else +#ifndef xmlSetupParserForBuffer +extern __typeof (xmlSetupParserForBuffer) xmlSetupParserForBuffer__internal_alias __attribute((visibility("hidden"))); +#define xmlSetupParserForBuffer xmlSetupParserForBuffer__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShell +extern __typeof (xmlShell) xmlShell __attribute((alias("xmlShell__internal_alias"))); +#else +#ifndef xmlShell +extern __typeof (xmlShell) xmlShell__internal_alias __attribute((visibility("hidden"))); +#define xmlShell xmlShell__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellBase +extern __typeof (xmlShellBase) xmlShellBase __attribute((alias("xmlShellBase__internal_alias"))); +#else +#ifndef xmlShellBase +extern __typeof (xmlShellBase) xmlShellBase__internal_alias __attribute((visibility("hidden"))); +#define xmlShellBase xmlShellBase__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellCat +extern __typeof (xmlShellCat) xmlShellCat __attribute((alias("xmlShellCat__internal_alias"))); +#else +#ifndef xmlShellCat +extern __typeof (xmlShellCat) xmlShellCat__internal_alias __attribute((visibility("hidden"))); +#define xmlShellCat xmlShellCat__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellDir +extern __typeof (xmlShellDir) xmlShellDir __attribute((alias("xmlShellDir__internal_alias"))); +#else +#ifndef xmlShellDir +extern __typeof (xmlShellDir) xmlShellDir__internal_alias __attribute((visibility("hidden"))); +#define xmlShellDir xmlShellDir__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellDu +extern __typeof (xmlShellDu) xmlShellDu __attribute((alias("xmlShellDu__internal_alias"))); +#else +#ifndef xmlShellDu +extern __typeof (xmlShellDu) xmlShellDu__internal_alias __attribute((visibility("hidden"))); +#define xmlShellDu xmlShellDu__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellList +extern __typeof (xmlShellList) xmlShellList __attribute((alias("xmlShellList__internal_alias"))); +#else +#ifndef xmlShellList +extern __typeof (xmlShellList) xmlShellList__internal_alias __attribute((visibility("hidden"))); +#define xmlShellList xmlShellList__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellLoad +extern __typeof (xmlShellLoad) xmlShellLoad __attribute((alias("xmlShellLoad__internal_alias"))); +#else +#ifndef xmlShellLoad +extern __typeof (xmlShellLoad) xmlShellLoad__internal_alias __attribute((visibility("hidden"))); +#define xmlShellLoad xmlShellLoad__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellPrintNode +extern __typeof (xmlShellPrintNode) xmlShellPrintNode __attribute((alias("xmlShellPrintNode__internal_alias"))); +#else +#ifndef xmlShellPrintNode +extern __typeof (xmlShellPrintNode) xmlShellPrintNode__internal_alias __attribute((visibility("hidden"))); +#define xmlShellPrintNode xmlShellPrintNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellPrintXPathError +extern __typeof (xmlShellPrintXPathError) xmlShellPrintXPathError __attribute((alias("xmlShellPrintXPathError__internal_alias"))); +#else +#ifndef xmlShellPrintXPathError +extern __typeof (xmlShellPrintXPathError) xmlShellPrintXPathError__internal_alias __attribute((visibility("hidden"))); +#define xmlShellPrintXPathError xmlShellPrintXPathError__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellPrintXPathResult +extern __typeof (xmlShellPrintXPathResult) xmlShellPrintXPathResult __attribute((alias("xmlShellPrintXPathResult__internal_alias"))); +#else +#ifndef xmlShellPrintXPathResult +extern __typeof (xmlShellPrintXPathResult) xmlShellPrintXPathResult__internal_alias __attribute((visibility("hidden"))); +#define xmlShellPrintXPathResult xmlShellPrintXPathResult__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellPwd +extern __typeof (xmlShellPwd) xmlShellPwd __attribute((alias("xmlShellPwd__internal_alias"))); +#else +#ifndef xmlShellPwd +extern __typeof (xmlShellPwd) xmlShellPwd__internal_alias __attribute((visibility("hidden"))); +#define xmlShellPwd xmlShellPwd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellSave +extern __typeof (xmlShellSave) xmlShellSave __attribute((alias("xmlShellSave__internal_alias"))); +#else +#ifndef xmlShellSave +extern __typeof (xmlShellSave) xmlShellSave__internal_alias __attribute((visibility("hidden"))); +#define xmlShellSave xmlShellSave__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_VALID_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellValidate +extern __typeof (xmlShellValidate) xmlShellValidate __attribute((alias("xmlShellValidate__internal_alias"))); +#else +#ifndef xmlShellValidate +extern __typeof (xmlShellValidate) xmlShellValidate__internal_alias __attribute((visibility("hidden"))); +#define xmlShellValidate xmlShellValidate__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_debugXML +#undef xmlShellWrite +extern __typeof (xmlShellWrite) xmlShellWrite __attribute((alias("xmlShellWrite__internal_alias"))); +#else +#ifndef xmlShellWrite +extern __typeof (xmlShellWrite) xmlShellWrite__internal_alias __attribute((visibility("hidden"))); +#define xmlShellWrite xmlShellWrite__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlSkipBlankChars +extern __typeof (xmlSkipBlankChars) xmlSkipBlankChars __attribute((alias("xmlSkipBlankChars__internal_alias"))); +#else +#ifndef xmlSkipBlankChars +extern __typeof (xmlSkipBlankChars) xmlSkipBlankChars__internal_alias __attribute((visibility("hidden"))); +#define xmlSkipBlankChars xmlSkipBlankChars__internal_alias +#endif +#endif + +#ifdef bottom_valid +#undef xmlSnprintfElementContent +extern __typeof (xmlSnprintfElementContent) xmlSnprintfElementContent __attribute((alias("xmlSnprintfElementContent__internal_alias"))); +#else +#ifndef xmlSnprintfElementContent +extern __typeof (xmlSnprintfElementContent) xmlSnprintfElementContent__internal_alias __attribute((visibility("hidden"))); +#define xmlSnprintfElementContent xmlSnprintfElementContent__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlSplitQName +extern __typeof (xmlSplitQName) xmlSplitQName __attribute((alias("xmlSplitQName__internal_alias"))); +#else +#ifndef xmlSplitQName +extern __typeof (xmlSplitQName) xmlSplitQName__internal_alias __attribute((visibility("hidden"))); +#define xmlSplitQName xmlSplitQName__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSplitQName2 +extern __typeof (xmlSplitQName2) xmlSplitQName2 __attribute((alias("xmlSplitQName2__internal_alias"))); +#else +#ifndef xmlSplitQName2 +extern __typeof (xmlSplitQName2) xmlSplitQName2__internal_alias __attribute((visibility("hidden"))); +#define xmlSplitQName2 xmlSplitQName2__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlSplitQName3 +extern __typeof (xmlSplitQName3) xmlSplitQName3 __attribute((alias("xmlSplitQName3__internal_alias"))); +#else +#ifndef xmlSplitQName3 +extern __typeof (xmlSplitQName3) xmlSplitQName3__internal_alias __attribute((visibility("hidden"))); +#define xmlSplitQName3 xmlSplitQName3__internal_alias +#endif +#endif + +#if defined(LIBXML_OUTPUT_ENABLED) +#ifdef bottom_valid +#undef xmlSprintfElementContent +extern __typeof (xmlSprintfElementContent) xmlSprintfElementContent __attribute((alias("xmlSprintfElementContent__internal_alias"))); +#else +#ifndef xmlSprintfElementContent +extern __typeof (xmlSprintfElementContent) xmlSprintfElementContent__internal_alias __attribute((visibility("hidden"))); +#define xmlSprintfElementContent xmlSprintfElementContent__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parser +#undef xmlStopParser +extern __typeof (xmlStopParser) xmlStopParser __attribute((alias("xmlStopParser__internal_alias"))); +#else +#ifndef xmlStopParser +extern __typeof (xmlStopParser) xmlStopParser__internal_alias __attribute((visibility("hidden"))); +#define xmlStopParser xmlStopParser__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrEqual +extern __typeof (xmlStrEqual) xmlStrEqual __attribute((alias("xmlStrEqual__internal_alias"))); +#else +#ifndef xmlStrEqual +extern __typeof (xmlStrEqual) xmlStrEqual__internal_alias __attribute((visibility("hidden"))); +#define xmlStrEqual xmlStrEqual__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrPrintf +extern __typeof (xmlStrPrintf) xmlStrPrintf __attribute((alias("xmlStrPrintf__internal_alias"))); +#else +#ifndef xmlStrPrintf +extern __typeof (xmlStrPrintf) xmlStrPrintf__internal_alias __attribute((visibility("hidden"))); +#define xmlStrPrintf xmlStrPrintf__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrQEqual +extern __typeof (xmlStrQEqual) xmlStrQEqual __attribute((alias("xmlStrQEqual__internal_alias"))); +#else +#ifndef xmlStrQEqual +extern __typeof (xmlStrQEqual) xmlStrQEqual__internal_alias __attribute((visibility("hidden"))); +#define xmlStrQEqual xmlStrQEqual__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrVPrintf +extern __typeof (xmlStrVPrintf) xmlStrVPrintf __attribute((alias("xmlStrVPrintf__internal_alias"))); +#else +#ifndef xmlStrVPrintf +extern __typeof (xmlStrVPrintf) xmlStrVPrintf__internal_alias __attribute((visibility("hidden"))); +#define xmlStrVPrintf xmlStrVPrintf__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrcasecmp +extern __typeof (xmlStrcasecmp) xmlStrcasecmp __attribute((alias("xmlStrcasecmp__internal_alias"))); +#else +#ifndef xmlStrcasecmp +extern __typeof (xmlStrcasecmp) xmlStrcasecmp__internal_alias __attribute((visibility("hidden"))); +#define xmlStrcasecmp xmlStrcasecmp__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrcasestr +extern __typeof (xmlStrcasestr) xmlStrcasestr __attribute((alias("xmlStrcasestr__internal_alias"))); +#else +#ifndef xmlStrcasestr +extern __typeof (xmlStrcasestr) xmlStrcasestr__internal_alias __attribute((visibility("hidden"))); +#define xmlStrcasestr xmlStrcasestr__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrcat +extern __typeof (xmlStrcat) xmlStrcat __attribute((alias("xmlStrcat__internal_alias"))); +#else +#ifndef xmlStrcat +extern __typeof (xmlStrcat) xmlStrcat__internal_alias __attribute((visibility("hidden"))); +#define xmlStrcat xmlStrcat__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrchr +extern __typeof (xmlStrchr) xmlStrchr __attribute((alias("xmlStrchr__internal_alias"))); +#else +#ifndef xmlStrchr +extern __typeof (xmlStrchr) xmlStrchr__internal_alias __attribute((visibility("hidden"))); +#define xmlStrchr xmlStrchr__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrcmp +extern __typeof (xmlStrcmp) xmlStrcmp __attribute((alias("xmlStrcmp__internal_alias"))); +#else +#ifndef xmlStrcmp +extern __typeof (xmlStrcmp) xmlStrcmp__internal_alias __attribute((visibility("hidden"))); +#define xmlStrcmp xmlStrcmp__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrdup +extern __typeof (xmlStrdup) xmlStrdup __attribute((alias("xmlStrdup__internal_alias"))); +#else +#ifndef xmlStrdup +extern __typeof (xmlStrdup) xmlStrdup__internal_alias __attribute((visibility("hidden"))); +#define xmlStrdup xmlStrdup__internal_alias +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlStreamPop +extern __typeof (xmlStreamPop) xmlStreamPop __attribute((alias("xmlStreamPop__internal_alias"))); +#else +#ifndef xmlStreamPop +extern __typeof (xmlStreamPop) xmlStreamPop__internal_alias __attribute((visibility("hidden"))); +#define xmlStreamPop xmlStreamPop__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlStreamPush +extern __typeof (xmlStreamPush) xmlStreamPush __attribute((alias("xmlStreamPush__internal_alias"))); +#else +#ifndef xmlStreamPush +extern __typeof (xmlStreamPush) xmlStreamPush__internal_alias __attribute((visibility("hidden"))); +#define xmlStreamPush xmlStreamPush__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlStreamPushAttr +extern __typeof (xmlStreamPushAttr) xmlStreamPushAttr __attribute((alias("xmlStreamPushAttr__internal_alias"))); +#else +#ifndef xmlStreamPushAttr +extern __typeof (xmlStreamPushAttr) xmlStreamPushAttr__internal_alias __attribute((visibility("hidden"))); +#define xmlStreamPushAttr xmlStreamPushAttr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlStreamPushNode +extern __typeof (xmlStreamPushNode) xmlStreamPushNode __attribute((alias("xmlStreamPushNode__internal_alias"))); +#else +#ifndef xmlStreamPushNode +extern __typeof (xmlStreamPushNode) xmlStreamPushNode__internal_alias __attribute((visibility("hidden"))); +#define xmlStreamPushNode xmlStreamPushNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_pattern +#undef xmlStreamWantsAnyNode +extern __typeof (xmlStreamWantsAnyNode) xmlStreamWantsAnyNode __attribute((alias("xmlStreamWantsAnyNode__internal_alias"))); +#else +#ifndef xmlStreamWantsAnyNode +extern __typeof (xmlStreamWantsAnyNode) xmlStreamWantsAnyNode__internal_alias __attribute((visibility("hidden"))); +#define xmlStreamWantsAnyNode xmlStreamWantsAnyNode__internal_alias +#endif +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlStringCurrentChar +extern __typeof (xmlStringCurrentChar) xmlStringCurrentChar __attribute((alias("xmlStringCurrentChar__internal_alias"))); +#else +#ifndef xmlStringCurrentChar +extern __typeof (xmlStringCurrentChar) xmlStringCurrentChar__internal_alias __attribute((visibility("hidden"))); +#define xmlStringCurrentChar xmlStringCurrentChar__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlStringDecodeEntities +extern __typeof (xmlStringDecodeEntities) xmlStringDecodeEntities __attribute((alias("xmlStringDecodeEntities__internal_alias"))); +#else +#ifndef xmlStringDecodeEntities +extern __typeof (xmlStringDecodeEntities) xmlStringDecodeEntities__internal_alias __attribute((visibility("hidden"))); +#define xmlStringDecodeEntities xmlStringDecodeEntities__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlStringGetNodeList +extern __typeof (xmlStringGetNodeList) xmlStringGetNodeList __attribute((alias("xmlStringGetNodeList__internal_alias"))); +#else +#ifndef xmlStringGetNodeList +extern __typeof (xmlStringGetNodeList) xmlStringGetNodeList__internal_alias __attribute((visibility("hidden"))); +#define xmlStringGetNodeList xmlStringGetNodeList__internal_alias +#endif +#endif + +#ifdef bottom_parser +#undef xmlStringLenDecodeEntities +extern __typeof (xmlStringLenDecodeEntities) xmlStringLenDecodeEntities __attribute((alias("xmlStringLenDecodeEntities__internal_alias"))); +#else +#ifndef xmlStringLenDecodeEntities +extern __typeof (xmlStringLenDecodeEntities) xmlStringLenDecodeEntities__internal_alias __attribute((visibility("hidden"))); +#define xmlStringLenDecodeEntities xmlStringLenDecodeEntities__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlStringLenGetNodeList +extern __typeof (xmlStringLenGetNodeList) xmlStringLenGetNodeList __attribute((alias("xmlStringLenGetNodeList__internal_alias"))); +#else +#ifndef xmlStringLenGetNodeList +extern __typeof (xmlStringLenGetNodeList) xmlStringLenGetNodeList__internal_alias __attribute((visibility("hidden"))); +#define xmlStringLenGetNodeList xmlStringLenGetNodeList__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrlen +extern __typeof (xmlStrlen) xmlStrlen __attribute((alias("xmlStrlen__internal_alias"))); +#else +#ifndef xmlStrlen +extern __typeof (xmlStrlen) xmlStrlen__internal_alias __attribute((visibility("hidden"))); +#define xmlStrlen xmlStrlen__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrncasecmp +extern __typeof (xmlStrncasecmp) xmlStrncasecmp __attribute((alias("xmlStrncasecmp__internal_alias"))); +#else +#ifndef xmlStrncasecmp +extern __typeof (xmlStrncasecmp) xmlStrncasecmp__internal_alias __attribute((visibility("hidden"))); +#define xmlStrncasecmp xmlStrncasecmp__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrncat +extern __typeof (xmlStrncat) xmlStrncat __attribute((alias("xmlStrncat__internal_alias"))); +#else +#ifndef xmlStrncat +extern __typeof (xmlStrncat) xmlStrncat__internal_alias __attribute((visibility("hidden"))); +#define xmlStrncat xmlStrncat__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrncatNew +extern __typeof (xmlStrncatNew) xmlStrncatNew __attribute((alias("xmlStrncatNew__internal_alias"))); +#else +#ifndef xmlStrncatNew +extern __typeof (xmlStrncatNew) xmlStrncatNew__internal_alias __attribute((visibility("hidden"))); +#define xmlStrncatNew xmlStrncatNew__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrncmp +extern __typeof (xmlStrncmp) xmlStrncmp __attribute((alias("xmlStrncmp__internal_alias"))); +#else +#ifndef xmlStrncmp +extern __typeof (xmlStrncmp) xmlStrncmp__internal_alias __attribute((visibility("hidden"))); +#define xmlStrncmp xmlStrncmp__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrndup +extern __typeof (xmlStrndup) xmlStrndup __attribute((alias("xmlStrndup__internal_alias"))); +#else +#ifndef xmlStrndup +extern __typeof (xmlStrndup) xmlStrndup__internal_alias __attribute((visibility("hidden"))); +#define xmlStrndup xmlStrndup__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrstr +extern __typeof (xmlStrstr) xmlStrstr __attribute((alias("xmlStrstr__internal_alias"))); +#else +#ifndef xmlStrstr +extern __typeof (xmlStrstr) xmlStrstr__internal_alias __attribute((visibility("hidden"))); +#define xmlStrstr xmlStrstr__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlStrsub +extern __typeof (xmlStrsub) xmlStrsub __attribute((alias("xmlStrsub__internal_alias"))); +#else +#ifndef xmlStrsub +extern __typeof (xmlStrsub) xmlStrsub__internal_alias __attribute((visibility("hidden"))); +#define xmlStrsub xmlStrsub__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlSubstituteEntitiesDefault +extern __typeof (xmlSubstituteEntitiesDefault) xmlSubstituteEntitiesDefault __attribute((alias("xmlSubstituteEntitiesDefault__internal_alias"))); +#else +#ifndef xmlSubstituteEntitiesDefault +extern __typeof (xmlSubstituteEntitiesDefault) xmlSubstituteEntitiesDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlSubstituteEntitiesDefault xmlSubstituteEntitiesDefault__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlSwitchEncoding +extern __typeof (xmlSwitchEncoding) xmlSwitchEncoding __attribute((alias("xmlSwitchEncoding__internal_alias"))); +#else +#ifndef xmlSwitchEncoding +extern __typeof (xmlSwitchEncoding) xmlSwitchEncoding__internal_alias __attribute((visibility("hidden"))); +#define xmlSwitchEncoding xmlSwitchEncoding__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlSwitchInputEncoding +extern __typeof (xmlSwitchInputEncoding) xmlSwitchInputEncoding __attribute((alias("xmlSwitchInputEncoding__internal_alias"))); +#else +#ifndef xmlSwitchInputEncoding +extern __typeof (xmlSwitchInputEncoding) xmlSwitchInputEncoding__internal_alias __attribute((visibility("hidden"))); +#define xmlSwitchInputEncoding xmlSwitchInputEncoding__internal_alias +#endif +#endif + +#ifdef bottom_parserInternals +#undef xmlSwitchToEncoding +extern __typeof (xmlSwitchToEncoding) xmlSwitchToEncoding __attribute((alias("xmlSwitchToEncoding__internal_alias"))); +#else +#ifndef xmlSwitchToEncoding +extern __typeof (xmlSwitchToEncoding) xmlSwitchToEncoding__internal_alias __attribute((visibility("hidden"))); +#define xmlSwitchToEncoding xmlSwitchToEncoding__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlTextConcat +extern __typeof (xmlTextConcat) xmlTextConcat __attribute((alias("xmlTextConcat__internal_alias"))); +#else +#ifndef xmlTextConcat +extern __typeof (xmlTextConcat) xmlTextConcat__internal_alias __attribute((visibility("hidden"))); +#define xmlTextConcat xmlTextConcat__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlTextMerge +extern __typeof (xmlTextMerge) xmlTextMerge __attribute((alias("xmlTextMerge__internal_alias"))); +#else +#ifndef xmlTextMerge +extern __typeof (xmlTextMerge) xmlTextMerge__internal_alias __attribute((visibility("hidden"))); +#define xmlTextMerge xmlTextMerge__internal_alias +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderAttributeCount +extern __typeof (xmlTextReaderAttributeCount) xmlTextReaderAttributeCount __attribute((alias("xmlTextReaderAttributeCount__internal_alias"))); +#else +#ifndef xmlTextReaderAttributeCount +extern __typeof (xmlTextReaderAttributeCount) xmlTextReaderAttributeCount__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderAttributeCount xmlTextReaderAttributeCount__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderBaseUri +extern __typeof (xmlTextReaderBaseUri) xmlTextReaderBaseUri __attribute((alias("xmlTextReaderBaseUri__internal_alias"))); +#else +#ifndef xmlTextReaderBaseUri +extern __typeof (xmlTextReaderBaseUri) xmlTextReaderBaseUri__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderBaseUri xmlTextReaderBaseUri__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderByteConsumed +extern __typeof (xmlTextReaderByteConsumed) xmlTextReaderByteConsumed __attribute((alias("xmlTextReaderByteConsumed__internal_alias"))); +#else +#ifndef xmlTextReaderByteConsumed +extern __typeof (xmlTextReaderByteConsumed) xmlTextReaderByteConsumed__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderByteConsumed xmlTextReaderByteConsumed__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderClose +extern __typeof (xmlTextReaderClose) xmlTextReaderClose __attribute((alias("xmlTextReaderClose__internal_alias"))); +#else +#ifndef xmlTextReaderClose +extern __typeof (xmlTextReaderClose) xmlTextReaderClose__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderClose xmlTextReaderClose__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstBaseUri +extern __typeof (xmlTextReaderConstBaseUri) xmlTextReaderConstBaseUri __attribute((alias("xmlTextReaderConstBaseUri__internal_alias"))); +#else +#ifndef xmlTextReaderConstBaseUri +extern __typeof (xmlTextReaderConstBaseUri) xmlTextReaderConstBaseUri__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstBaseUri xmlTextReaderConstBaseUri__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstEncoding +extern __typeof (xmlTextReaderConstEncoding) xmlTextReaderConstEncoding __attribute((alias("xmlTextReaderConstEncoding__internal_alias"))); +#else +#ifndef xmlTextReaderConstEncoding +extern __typeof (xmlTextReaderConstEncoding) xmlTextReaderConstEncoding__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstEncoding xmlTextReaderConstEncoding__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstLocalName +extern __typeof (xmlTextReaderConstLocalName) xmlTextReaderConstLocalName __attribute((alias("xmlTextReaderConstLocalName__internal_alias"))); +#else +#ifndef xmlTextReaderConstLocalName +extern __typeof (xmlTextReaderConstLocalName) xmlTextReaderConstLocalName__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstLocalName xmlTextReaderConstLocalName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstName +extern __typeof (xmlTextReaderConstName) xmlTextReaderConstName __attribute((alias("xmlTextReaderConstName__internal_alias"))); +#else +#ifndef xmlTextReaderConstName +extern __typeof (xmlTextReaderConstName) xmlTextReaderConstName__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstName xmlTextReaderConstName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstNamespaceUri +extern __typeof (xmlTextReaderConstNamespaceUri) xmlTextReaderConstNamespaceUri __attribute((alias("xmlTextReaderConstNamespaceUri__internal_alias"))); +#else +#ifndef xmlTextReaderConstNamespaceUri +extern __typeof (xmlTextReaderConstNamespaceUri) xmlTextReaderConstNamespaceUri__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstNamespaceUri xmlTextReaderConstNamespaceUri__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstPrefix +extern __typeof (xmlTextReaderConstPrefix) xmlTextReaderConstPrefix __attribute((alias("xmlTextReaderConstPrefix__internal_alias"))); +#else +#ifndef xmlTextReaderConstPrefix +extern __typeof (xmlTextReaderConstPrefix) xmlTextReaderConstPrefix__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstPrefix xmlTextReaderConstPrefix__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstString +extern __typeof (xmlTextReaderConstString) xmlTextReaderConstString __attribute((alias("xmlTextReaderConstString__internal_alias"))); +#else +#ifndef xmlTextReaderConstString +extern __typeof (xmlTextReaderConstString) xmlTextReaderConstString__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstString xmlTextReaderConstString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstValue +extern __typeof (xmlTextReaderConstValue) xmlTextReaderConstValue __attribute((alias("xmlTextReaderConstValue__internal_alias"))); +#else +#ifndef xmlTextReaderConstValue +extern __typeof (xmlTextReaderConstValue) xmlTextReaderConstValue__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstValue xmlTextReaderConstValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstXmlLang +extern __typeof (xmlTextReaderConstXmlLang) xmlTextReaderConstXmlLang __attribute((alias("xmlTextReaderConstXmlLang__internal_alias"))); +#else +#ifndef xmlTextReaderConstXmlLang +extern __typeof (xmlTextReaderConstXmlLang) xmlTextReaderConstXmlLang__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstXmlLang xmlTextReaderConstXmlLang__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderConstXmlVersion +extern __typeof (xmlTextReaderConstXmlVersion) xmlTextReaderConstXmlVersion __attribute((alias("xmlTextReaderConstXmlVersion__internal_alias"))); +#else +#ifndef xmlTextReaderConstXmlVersion +extern __typeof (xmlTextReaderConstXmlVersion) xmlTextReaderConstXmlVersion__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderConstXmlVersion xmlTextReaderConstXmlVersion__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderCurrentDoc +extern __typeof (xmlTextReaderCurrentDoc) xmlTextReaderCurrentDoc __attribute((alias("xmlTextReaderCurrentDoc__internal_alias"))); +#else +#ifndef xmlTextReaderCurrentDoc +extern __typeof (xmlTextReaderCurrentDoc) xmlTextReaderCurrentDoc__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderCurrentDoc xmlTextReaderCurrentDoc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderCurrentNode +extern __typeof (xmlTextReaderCurrentNode) xmlTextReaderCurrentNode __attribute((alias("xmlTextReaderCurrentNode__internal_alias"))); +#else +#ifndef xmlTextReaderCurrentNode +extern __typeof (xmlTextReaderCurrentNode) xmlTextReaderCurrentNode__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderCurrentNode xmlTextReaderCurrentNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderDepth +extern __typeof (xmlTextReaderDepth) xmlTextReaderDepth __attribute((alias("xmlTextReaderDepth__internal_alias"))); +#else +#ifndef xmlTextReaderDepth +extern __typeof (xmlTextReaderDepth) xmlTextReaderDepth__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderDepth xmlTextReaderDepth__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderExpand +extern __typeof (xmlTextReaderExpand) xmlTextReaderExpand __attribute((alias("xmlTextReaderExpand__internal_alias"))); +#else +#ifndef xmlTextReaderExpand +extern __typeof (xmlTextReaderExpand) xmlTextReaderExpand__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderExpand xmlTextReaderExpand__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderGetAttribute +extern __typeof (xmlTextReaderGetAttribute) xmlTextReaderGetAttribute __attribute((alias("xmlTextReaderGetAttribute__internal_alias"))); +#else +#ifndef xmlTextReaderGetAttribute +extern __typeof (xmlTextReaderGetAttribute) xmlTextReaderGetAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderGetAttribute xmlTextReaderGetAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderGetAttributeNo +extern __typeof (xmlTextReaderGetAttributeNo) xmlTextReaderGetAttributeNo __attribute((alias("xmlTextReaderGetAttributeNo__internal_alias"))); +#else +#ifndef xmlTextReaderGetAttributeNo +extern __typeof (xmlTextReaderGetAttributeNo) xmlTextReaderGetAttributeNo__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderGetAttributeNo xmlTextReaderGetAttributeNo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderGetAttributeNs +extern __typeof (xmlTextReaderGetAttributeNs) xmlTextReaderGetAttributeNs __attribute((alias("xmlTextReaderGetAttributeNs__internal_alias"))); +#else +#ifndef xmlTextReaderGetAttributeNs +extern __typeof (xmlTextReaderGetAttributeNs) xmlTextReaderGetAttributeNs__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderGetAttributeNs xmlTextReaderGetAttributeNs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderGetErrorHandler +extern __typeof (xmlTextReaderGetErrorHandler) xmlTextReaderGetErrorHandler __attribute((alias("xmlTextReaderGetErrorHandler__internal_alias"))); +#else +#ifndef xmlTextReaderGetErrorHandler +extern __typeof (xmlTextReaderGetErrorHandler) xmlTextReaderGetErrorHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderGetErrorHandler xmlTextReaderGetErrorHandler__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderGetParserColumnNumber +extern __typeof (xmlTextReaderGetParserColumnNumber) xmlTextReaderGetParserColumnNumber __attribute((alias("xmlTextReaderGetParserColumnNumber__internal_alias"))); +#else +#ifndef xmlTextReaderGetParserColumnNumber +extern __typeof (xmlTextReaderGetParserColumnNumber) xmlTextReaderGetParserColumnNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderGetParserColumnNumber xmlTextReaderGetParserColumnNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderGetParserLineNumber +extern __typeof (xmlTextReaderGetParserLineNumber) xmlTextReaderGetParserLineNumber __attribute((alias("xmlTextReaderGetParserLineNumber__internal_alias"))); +#else +#ifndef xmlTextReaderGetParserLineNumber +extern __typeof (xmlTextReaderGetParserLineNumber) xmlTextReaderGetParserLineNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderGetParserLineNumber xmlTextReaderGetParserLineNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderGetParserProp +extern __typeof (xmlTextReaderGetParserProp) xmlTextReaderGetParserProp __attribute((alias("xmlTextReaderGetParserProp__internal_alias"))); +#else +#ifndef xmlTextReaderGetParserProp +extern __typeof (xmlTextReaderGetParserProp) xmlTextReaderGetParserProp__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderGetParserProp xmlTextReaderGetParserProp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderGetRemainder +extern __typeof (xmlTextReaderGetRemainder) xmlTextReaderGetRemainder __attribute((alias("xmlTextReaderGetRemainder__internal_alias"))); +#else +#ifndef xmlTextReaderGetRemainder +extern __typeof (xmlTextReaderGetRemainder) xmlTextReaderGetRemainder__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderGetRemainder xmlTextReaderGetRemainder__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderHasAttributes +extern __typeof (xmlTextReaderHasAttributes) xmlTextReaderHasAttributes __attribute((alias("xmlTextReaderHasAttributes__internal_alias"))); +#else +#ifndef xmlTextReaderHasAttributes +extern __typeof (xmlTextReaderHasAttributes) xmlTextReaderHasAttributes__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderHasAttributes xmlTextReaderHasAttributes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderHasValue +extern __typeof (xmlTextReaderHasValue) xmlTextReaderHasValue __attribute((alias("xmlTextReaderHasValue__internal_alias"))); +#else +#ifndef xmlTextReaderHasValue +extern __typeof (xmlTextReaderHasValue) xmlTextReaderHasValue__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderHasValue xmlTextReaderHasValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderIsDefault +extern __typeof (xmlTextReaderIsDefault) xmlTextReaderIsDefault __attribute((alias("xmlTextReaderIsDefault__internal_alias"))); +#else +#ifndef xmlTextReaderIsDefault +extern __typeof (xmlTextReaderIsDefault) xmlTextReaderIsDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderIsDefault xmlTextReaderIsDefault__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderIsEmptyElement +extern __typeof (xmlTextReaderIsEmptyElement) xmlTextReaderIsEmptyElement __attribute((alias("xmlTextReaderIsEmptyElement__internal_alias"))); +#else +#ifndef xmlTextReaderIsEmptyElement +extern __typeof (xmlTextReaderIsEmptyElement) xmlTextReaderIsEmptyElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderIsEmptyElement xmlTextReaderIsEmptyElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderIsNamespaceDecl +extern __typeof (xmlTextReaderIsNamespaceDecl) xmlTextReaderIsNamespaceDecl __attribute((alias("xmlTextReaderIsNamespaceDecl__internal_alias"))); +#else +#ifndef xmlTextReaderIsNamespaceDecl +extern __typeof (xmlTextReaderIsNamespaceDecl) xmlTextReaderIsNamespaceDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderIsNamespaceDecl xmlTextReaderIsNamespaceDecl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderIsValid +extern __typeof (xmlTextReaderIsValid) xmlTextReaderIsValid __attribute((alias("xmlTextReaderIsValid__internal_alias"))); +#else +#ifndef xmlTextReaderIsValid +extern __typeof (xmlTextReaderIsValid) xmlTextReaderIsValid__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderIsValid xmlTextReaderIsValid__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderLocalName +extern __typeof (xmlTextReaderLocalName) xmlTextReaderLocalName __attribute((alias("xmlTextReaderLocalName__internal_alias"))); +#else +#ifndef xmlTextReaderLocalName +extern __typeof (xmlTextReaderLocalName) xmlTextReaderLocalName__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderLocalName xmlTextReaderLocalName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderLocatorBaseURI +extern __typeof (xmlTextReaderLocatorBaseURI) xmlTextReaderLocatorBaseURI __attribute((alias("xmlTextReaderLocatorBaseURI__internal_alias"))); +#else +#ifndef xmlTextReaderLocatorBaseURI +extern __typeof (xmlTextReaderLocatorBaseURI) xmlTextReaderLocatorBaseURI__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderLocatorBaseURI xmlTextReaderLocatorBaseURI__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderLocatorLineNumber +extern __typeof (xmlTextReaderLocatorLineNumber) xmlTextReaderLocatorLineNumber __attribute((alias("xmlTextReaderLocatorLineNumber__internal_alias"))); +#else +#ifndef xmlTextReaderLocatorLineNumber +extern __typeof (xmlTextReaderLocatorLineNumber) xmlTextReaderLocatorLineNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderLocatorLineNumber xmlTextReaderLocatorLineNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderLookupNamespace +extern __typeof (xmlTextReaderLookupNamespace) xmlTextReaderLookupNamespace __attribute((alias("xmlTextReaderLookupNamespace__internal_alias"))); +#else +#ifndef xmlTextReaderLookupNamespace +extern __typeof (xmlTextReaderLookupNamespace) xmlTextReaderLookupNamespace__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderLookupNamespace xmlTextReaderLookupNamespace__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderMoveToAttribute +extern __typeof (xmlTextReaderMoveToAttribute) xmlTextReaderMoveToAttribute __attribute((alias("xmlTextReaderMoveToAttribute__internal_alias"))); +#else +#ifndef xmlTextReaderMoveToAttribute +extern __typeof (xmlTextReaderMoveToAttribute) xmlTextReaderMoveToAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderMoveToAttribute xmlTextReaderMoveToAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderMoveToAttributeNo +extern __typeof (xmlTextReaderMoveToAttributeNo) xmlTextReaderMoveToAttributeNo __attribute((alias("xmlTextReaderMoveToAttributeNo__internal_alias"))); +#else +#ifndef xmlTextReaderMoveToAttributeNo +extern __typeof (xmlTextReaderMoveToAttributeNo) xmlTextReaderMoveToAttributeNo__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderMoveToAttributeNo xmlTextReaderMoveToAttributeNo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderMoveToAttributeNs +extern __typeof (xmlTextReaderMoveToAttributeNs) xmlTextReaderMoveToAttributeNs __attribute((alias("xmlTextReaderMoveToAttributeNs__internal_alias"))); +#else +#ifndef xmlTextReaderMoveToAttributeNs +extern __typeof (xmlTextReaderMoveToAttributeNs) xmlTextReaderMoveToAttributeNs__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderMoveToAttributeNs xmlTextReaderMoveToAttributeNs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderMoveToElement +extern __typeof (xmlTextReaderMoveToElement) xmlTextReaderMoveToElement __attribute((alias("xmlTextReaderMoveToElement__internal_alias"))); +#else +#ifndef xmlTextReaderMoveToElement +extern __typeof (xmlTextReaderMoveToElement) xmlTextReaderMoveToElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderMoveToElement xmlTextReaderMoveToElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderMoveToFirstAttribute +extern __typeof (xmlTextReaderMoveToFirstAttribute) xmlTextReaderMoveToFirstAttribute __attribute((alias("xmlTextReaderMoveToFirstAttribute__internal_alias"))); +#else +#ifndef xmlTextReaderMoveToFirstAttribute +extern __typeof (xmlTextReaderMoveToFirstAttribute) xmlTextReaderMoveToFirstAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderMoveToFirstAttribute xmlTextReaderMoveToFirstAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderMoveToNextAttribute +extern __typeof (xmlTextReaderMoveToNextAttribute) xmlTextReaderMoveToNextAttribute __attribute((alias("xmlTextReaderMoveToNextAttribute__internal_alias"))); +#else +#ifndef xmlTextReaderMoveToNextAttribute +extern __typeof (xmlTextReaderMoveToNextAttribute) xmlTextReaderMoveToNextAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderMoveToNextAttribute xmlTextReaderMoveToNextAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderName +extern __typeof (xmlTextReaderName) xmlTextReaderName __attribute((alias("xmlTextReaderName__internal_alias"))); +#else +#ifndef xmlTextReaderName +extern __typeof (xmlTextReaderName) xmlTextReaderName__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderName xmlTextReaderName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderNamespaceUri +extern __typeof (xmlTextReaderNamespaceUri) xmlTextReaderNamespaceUri __attribute((alias("xmlTextReaderNamespaceUri__internal_alias"))); +#else +#ifndef xmlTextReaderNamespaceUri +extern __typeof (xmlTextReaderNamespaceUri) xmlTextReaderNamespaceUri__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderNamespaceUri xmlTextReaderNamespaceUri__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderNext +extern __typeof (xmlTextReaderNext) xmlTextReaderNext __attribute((alias("xmlTextReaderNext__internal_alias"))); +#else +#ifndef xmlTextReaderNext +extern __typeof (xmlTextReaderNext) xmlTextReaderNext__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderNext xmlTextReaderNext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderNextSibling +extern __typeof (xmlTextReaderNextSibling) xmlTextReaderNextSibling __attribute((alias("xmlTextReaderNextSibling__internal_alias"))); +#else +#ifndef xmlTextReaderNextSibling +extern __typeof (xmlTextReaderNextSibling) xmlTextReaderNextSibling__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderNextSibling xmlTextReaderNextSibling__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderNodeType +extern __typeof (xmlTextReaderNodeType) xmlTextReaderNodeType __attribute((alias("xmlTextReaderNodeType__internal_alias"))); +#else +#ifndef xmlTextReaderNodeType +extern __typeof (xmlTextReaderNodeType) xmlTextReaderNodeType__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderNodeType xmlTextReaderNodeType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderNormalization +extern __typeof (xmlTextReaderNormalization) xmlTextReaderNormalization __attribute((alias("xmlTextReaderNormalization__internal_alias"))); +#else +#ifndef xmlTextReaderNormalization +extern __typeof (xmlTextReaderNormalization) xmlTextReaderNormalization__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderNormalization xmlTextReaderNormalization__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderPrefix +extern __typeof (xmlTextReaderPrefix) xmlTextReaderPrefix __attribute((alias("xmlTextReaderPrefix__internal_alias"))); +#else +#ifndef xmlTextReaderPrefix +extern __typeof (xmlTextReaderPrefix) xmlTextReaderPrefix__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderPrefix xmlTextReaderPrefix__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderPreserve +extern __typeof (xmlTextReaderPreserve) xmlTextReaderPreserve __attribute((alias("xmlTextReaderPreserve__internal_alias"))); +#else +#ifndef xmlTextReaderPreserve +extern __typeof (xmlTextReaderPreserve) xmlTextReaderPreserve__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderPreserve xmlTextReaderPreserve__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_PATTERN_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderPreservePattern +extern __typeof (xmlTextReaderPreservePattern) xmlTextReaderPreservePattern __attribute((alias("xmlTextReaderPreservePattern__internal_alias"))); +#else +#ifndef xmlTextReaderPreservePattern +extern __typeof (xmlTextReaderPreservePattern) xmlTextReaderPreservePattern__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderPreservePattern xmlTextReaderPreservePattern__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderQuoteChar +extern __typeof (xmlTextReaderQuoteChar) xmlTextReaderQuoteChar __attribute((alias("xmlTextReaderQuoteChar__internal_alias"))); +#else +#ifndef xmlTextReaderQuoteChar +extern __typeof (xmlTextReaderQuoteChar) xmlTextReaderQuoteChar__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderQuoteChar xmlTextReaderQuoteChar__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderRead +extern __typeof (xmlTextReaderRead) xmlTextReaderRead __attribute((alias("xmlTextReaderRead__internal_alias"))); +#else +#ifndef xmlTextReaderRead +extern __typeof (xmlTextReaderRead) xmlTextReaderRead__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderRead xmlTextReaderRead__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderReadAttributeValue +extern __typeof (xmlTextReaderReadAttributeValue) xmlTextReaderReadAttributeValue __attribute((alias("xmlTextReaderReadAttributeValue__internal_alias"))); +#else +#ifndef xmlTextReaderReadAttributeValue +extern __typeof (xmlTextReaderReadAttributeValue) xmlTextReaderReadAttributeValue__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderReadAttributeValue xmlTextReaderReadAttributeValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderReadInnerXml +extern __typeof (xmlTextReaderReadInnerXml) xmlTextReaderReadInnerXml __attribute((alias("xmlTextReaderReadInnerXml__internal_alias"))); +#else +#ifndef xmlTextReaderReadInnerXml +extern __typeof (xmlTextReaderReadInnerXml) xmlTextReaderReadInnerXml__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderReadInnerXml xmlTextReaderReadInnerXml__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderReadOuterXml +extern __typeof (xmlTextReaderReadOuterXml) xmlTextReaderReadOuterXml __attribute((alias("xmlTextReaderReadOuterXml__internal_alias"))); +#else +#ifndef xmlTextReaderReadOuterXml +extern __typeof (xmlTextReaderReadOuterXml) xmlTextReaderReadOuterXml__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderReadOuterXml xmlTextReaderReadOuterXml__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderReadState +extern __typeof (xmlTextReaderReadState) xmlTextReaderReadState __attribute((alias("xmlTextReaderReadState__internal_alias"))); +#else +#ifndef xmlTextReaderReadState +extern __typeof (xmlTextReaderReadState) xmlTextReaderReadState__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderReadState xmlTextReaderReadState__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderReadString +extern __typeof (xmlTextReaderReadString) xmlTextReaderReadString __attribute((alias("xmlTextReaderReadString__internal_alias"))); +#else +#ifndef xmlTextReaderReadString +extern __typeof (xmlTextReaderReadString) xmlTextReaderReadString__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderReadString xmlTextReaderReadString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderRelaxNGSetSchema +extern __typeof (xmlTextReaderRelaxNGSetSchema) xmlTextReaderRelaxNGSetSchema __attribute((alias("xmlTextReaderRelaxNGSetSchema__internal_alias"))); +#else +#ifndef xmlTextReaderRelaxNGSetSchema +extern __typeof (xmlTextReaderRelaxNGSetSchema) xmlTextReaderRelaxNGSetSchema__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderRelaxNGSetSchema xmlTextReaderRelaxNGSetSchema__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderRelaxNGValidate +extern __typeof (xmlTextReaderRelaxNGValidate) xmlTextReaderRelaxNGValidate __attribute((alias("xmlTextReaderRelaxNGValidate__internal_alias"))); +#else +#ifndef xmlTextReaderRelaxNGValidate +extern __typeof (xmlTextReaderRelaxNGValidate) xmlTextReaderRelaxNGValidate__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderRelaxNGValidate xmlTextReaderRelaxNGValidate__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderRelaxNGValidateCtxt +extern __typeof (xmlTextReaderRelaxNGValidateCtxt) xmlTextReaderRelaxNGValidateCtxt __attribute((alias("xmlTextReaderRelaxNGValidateCtxt__internal_alias"))); +#else +#ifndef xmlTextReaderRelaxNGValidateCtxt +extern __typeof (xmlTextReaderRelaxNGValidateCtxt) xmlTextReaderRelaxNGValidateCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderRelaxNGValidateCtxt xmlTextReaderRelaxNGValidateCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderSchemaValidate +extern __typeof (xmlTextReaderSchemaValidate) xmlTextReaderSchemaValidate __attribute((alias("xmlTextReaderSchemaValidate__internal_alias"))); +#else +#ifndef xmlTextReaderSchemaValidate +extern __typeof (xmlTextReaderSchemaValidate) xmlTextReaderSchemaValidate__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderSchemaValidate xmlTextReaderSchemaValidate__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderSchemaValidateCtxt +extern __typeof (xmlTextReaderSchemaValidateCtxt) xmlTextReaderSchemaValidateCtxt __attribute((alias("xmlTextReaderSchemaValidateCtxt__internal_alias"))); +#else +#ifndef xmlTextReaderSchemaValidateCtxt +extern __typeof (xmlTextReaderSchemaValidateCtxt) xmlTextReaderSchemaValidateCtxt__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderSchemaValidateCtxt xmlTextReaderSchemaValidateCtxt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderSetErrorHandler +extern __typeof (xmlTextReaderSetErrorHandler) xmlTextReaderSetErrorHandler __attribute((alias("xmlTextReaderSetErrorHandler__internal_alias"))); +#else +#ifndef xmlTextReaderSetErrorHandler +extern __typeof (xmlTextReaderSetErrorHandler) xmlTextReaderSetErrorHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderSetErrorHandler xmlTextReaderSetErrorHandler__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderSetParserProp +extern __typeof (xmlTextReaderSetParserProp) xmlTextReaderSetParserProp __attribute((alias("xmlTextReaderSetParserProp__internal_alias"))); +#else +#ifndef xmlTextReaderSetParserProp +extern __typeof (xmlTextReaderSetParserProp) xmlTextReaderSetParserProp__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderSetParserProp xmlTextReaderSetParserProp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderSetSchema +extern __typeof (xmlTextReaderSetSchema) xmlTextReaderSetSchema __attribute((alias("xmlTextReaderSetSchema__internal_alias"))); +#else +#ifndef xmlTextReaderSetSchema +extern __typeof (xmlTextReaderSetSchema) xmlTextReaderSetSchema__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderSetSchema xmlTextReaderSetSchema__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderSetStructuredErrorHandler +extern __typeof (xmlTextReaderSetStructuredErrorHandler) xmlTextReaderSetStructuredErrorHandler __attribute((alias("xmlTextReaderSetStructuredErrorHandler__internal_alias"))); +#else +#ifndef xmlTextReaderSetStructuredErrorHandler +extern __typeof (xmlTextReaderSetStructuredErrorHandler) xmlTextReaderSetStructuredErrorHandler__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderSetStructuredErrorHandler xmlTextReaderSetStructuredErrorHandler__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderSetup +extern __typeof (xmlTextReaderSetup) xmlTextReaderSetup __attribute((alias("xmlTextReaderSetup__internal_alias"))); +#else +#ifndef xmlTextReaderSetup +extern __typeof (xmlTextReaderSetup) xmlTextReaderSetup__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderSetup xmlTextReaderSetup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderStandalone +extern __typeof (xmlTextReaderStandalone) xmlTextReaderStandalone __attribute((alias("xmlTextReaderStandalone__internal_alias"))); +#else +#ifndef xmlTextReaderStandalone +extern __typeof (xmlTextReaderStandalone) xmlTextReaderStandalone__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderStandalone xmlTextReaderStandalone__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderValue +extern __typeof (xmlTextReaderValue) xmlTextReaderValue __attribute((alias("xmlTextReaderValue__internal_alias"))); +#else +#ifndef xmlTextReaderValue +extern __typeof (xmlTextReaderValue) xmlTextReaderValue__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderValue xmlTextReaderValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_READER_ENABLED) +#ifdef bottom_xmlreader +#undef xmlTextReaderXmlLang +extern __typeof (xmlTextReaderXmlLang) xmlTextReaderXmlLang __attribute((alias("xmlTextReaderXmlLang__internal_alias"))); +#else +#ifndef xmlTextReaderXmlLang +extern __typeof (xmlTextReaderXmlLang) xmlTextReaderXmlLang__internal_alias __attribute((visibility("hidden"))); +#define xmlTextReaderXmlLang xmlTextReaderXmlLang__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndAttribute +extern __typeof (xmlTextWriterEndAttribute) xmlTextWriterEndAttribute __attribute((alias("xmlTextWriterEndAttribute__internal_alias"))); +#else +#ifndef xmlTextWriterEndAttribute +extern __typeof (xmlTextWriterEndAttribute) xmlTextWriterEndAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndAttribute xmlTextWriterEndAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndCDATA +extern __typeof (xmlTextWriterEndCDATA) xmlTextWriterEndCDATA __attribute((alias("xmlTextWriterEndCDATA__internal_alias"))); +#else +#ifndef xmlTextWriterEndCDATA +extern __typeof (xmlTextWriterEndCDATA) xmlTextWriterEndCDATA__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndCDATA xmlTextWriterEndCDATA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndComment +extern __typeof (xmlTextWriterEndComment) xmlTextWriterEndComment __attribute((alias("xmlTextWriterEndComment__internal_alias"))); +#else +#ifndef xmlTextWriterEndComment +extern __typeof (xmlTextWriterEndComment) xmlTextWriterEndComment__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndComment xmlTextWriterEndComment__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndDTD +extern __typeof (xmlTextWriterEndDTD) xmlTextWriterEndDTD __attribute((alias("xmlTextWriterEndDTD__internal_alias"))); +#else +#ifndef xmlTextWriterEndDTD +extern __typeof (xmlTextWriterEndDTD) xmlTextWriterEndDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndDTD xmlTextWriterEndDTD__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndDTDAttlist +extern __typeof (xmlTextWriterEndDTDAttlist) xmlTextWriterEndDTDAttlist __attribute((alias("xmlTextWriterEndDTDAttlist__internal_alias"))); +#else +#ifndef xmlTextWriterEndDTDAttlist +extern __typeof (xmlTextWriterEndDTDAttlist) xmlTextWriterEndDTDAttlist__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndDTDAttlist xmlTextWriterEndDTDAttlist__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndDTDElement +extern __typeof (xmlTextWriterEndDTDElement) xmlTextWriterEndDTDElement __attribute((alias("xmlTextWriterEndDTDElement__internal_alias"))); +#else +#ifndef xmlTextWriterEndDTDElement +extern __typeof (xmlTextWriterEndDTDElement) xmlTextWriterEndDTDElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndDTDElement xmlTextWriterEndDTDElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndDTDEntity +extern __typeof (xmlTextWriterEndDTDEntity) xmlTextWriterEndDTDEntity __attribute((alias("xmlTextWriterEndDTDEntity__internal_alias"))); +#else +#ifndef xmlTextWriterEndDTDEntity +extern __typeof (xmlTextWriterEndDTDEntity) xmlTextWriterEndDTDEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndDTDEntity xmlTextWriterEndDTDEntity__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndDocument +extern __typeof (xmlTextWriterEndDocument) xmlTextWriterEndDocument __attribute((alias("xmlTextWriterEndDocument__internal_alias"))); +#else +#ifndef xmlTextWriterEndDocument +extern __typeof (xmlTextWriterEndDocument) xmlTextWriterEndDocument__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndDocument xmlTextWriterEndDocument__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndElement +extern __typeof (xmlTextWriterEndElement) xmlTextWriterEndElement __attribute((alias("xmlTextWriterEndElement__internal_alias"))); +#else +#ifndef xmlTextWriterEndElement +extern __typeof (xmlTextWriterEndElement) xmlTextWriterEndElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndElement xmlTextWriterEndElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterEndPI +extern __typeof (xmlTextWriterEndPI) xmlTextWriterEndPI __attribute((alias("xmlTextWriterEndPI__internal_alias"))); +#else +#ifndef xmlTextWriterEndPI +extern __typeof (xmlTextWriterEndPI) xmlTextWriterEndPI__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterEndPI xmlTextWriterEndPI__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterFlush +extern __typeof (xmlTextWriterFlush) xmlTextWriterFlush __attribute((alias("xmlTextWriterFlush__internal_alias"))); +#else +#ifndef xmlTextWriterFlush +extern __typeof (xmlTextWriterFlush) xmlTextWriterFlush__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterFlush xmlTextWriterFlush__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterFullEndElement +extern __typeof (xmlTextWriterFullEndElement) xmlTextWriterFullEndElement __attribute((alias("xmlTextWriterFullEndElement__internal_alias"))); +#else +#ifndef xmlTextWriterFullEndElement +extern __typeof (xmlTextWriterFullEndElement) xmlTextWriterFullEndElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterFullEndElement xmlTextWriterFullEndElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterSetIndent +extern __typeof (xmlTextWriterSetIndent) xmlTextWriterSetIndent __attribute((alias("xmlTextWriterSetIndent__internal_alias"))); +#else +#ifndef xmlTextWriterSetIndent +extern __typeof (xmlTextWriterSetIndent) xmlTextWriterSetIndent__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterSetIndent xmlTextWriterSetIndent__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterSetIndentString +extern __typeof (xmlTextWriterSetIndentString) xmlTextWriterSetIndentString __attribute((alias("xmlTextWriterSetIndentString__internal_alias"))); +#else +#ifndef xmlTextWriterSetIndentString +extern __typeof (xmlTextWriterSetIndentString) xmlTextWriterSetIndentString__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterSetIndentString xmlTextWriterSetIndentString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterSetQuoteChar +extern __typeof (xmlTextWriterSetQuoteChar) xmlTextWriterSetQuoteChar __attribute((alias("xmlTextWriterSetQuoteChar__internal_alias"))); +#else +#ifndef xmlTextWriterSetQuoteChar +extern __typeof (xmlTextWriterSetQuoteChar) xmlTextWriterSetQuoteChar__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterSetQuoteChar xmlTextWriterSetQuoteChar__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartAttribute +extern __typeof (xmlTextWriterStartAttribute) xmlTextWriterStartAttribute __attribute((alias("xmlTextWriterStartAttribute__internal_alias"))); +#else +#ifndef xmlTextWriterStartAttribute +extern __typeof (xmlTextWriterStartAttribute) xmlTextWriterStartAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartAttribute xmlTextWriterStartAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartAttributeNS +extern __typeof (xmlTextWriterStartAttributeNS) xmlTextWriterStartAttributeNS __attribute((alias("xmlTextWriterStartAttributeNS__internal_alias"))); +#else +#ifndef xmlTextWriterStartAttributeNS +extern __typeof (xmlTextWriterStartAttributeNS) xmlTextWriterStartAttributeNS__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartAttributeNS xmlTextWriterStartAttributeNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartCDATA +extern __typeof (xmlTextWriterStartCDATA) xmlTextWriterStartCDATA __attribute((alias("xmlTextWriterStartCDATA__internal_alias"))); +#else +#ifndef xmlTextWriterStartCDATA +extern __typeof (xmlTextWriterStartCDATA) xmlTextWriterStartCDATA__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartCDATA xmlTextWriterStartCDATA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartComment +extern __typeof (xmlTextWriterStartComment) xmlTextWriterStartComment __attribute((alias("xmlTextWriterStartComment__internal_alias"))); +#else +#ifndef xmlTextWriterStartComment +extern __typeof (xmlTextWriterStartComment) xmlTextWriterStartComment__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartComment xmlTextWriterStartComment__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartDTD +extern __typeof (xmlTextWriterStartDTD) xmlTextWriterStartDTD __attribute((alias("xmlTextWriterStartDTD__internal_alias"))); +#else +#ifndef xmlTextWriterStartDTD +extern __typeof (xmlTextWriterStartDTD) xmlTextWriterStartDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartDTD xmlTextWriterStartDTD__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartDTDAttlist +extern __typeof (xmlTextWriterStartDTDAttlist) xmlTextWriterStartDTDAttlist __attribute((alias("xmlTextWriterStartDTDAttlist__internal_alias"))); +#else +#ifndef xmlTextWriterStartDTDAttlist +extern __typeof (xmlTextWriterStartDTDAttlist) xmlTextWriterStartDTDAttlist__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartDTDAttlist xmlTextWriterStartDTDAttlist__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartDTDElement +extern __typeof (xmlTextWriterStartDTDElement) xmlTextWriterStartDTDElement __attribute((alias("xmlTextWriterStartDTDElement__internal_alias"))); +#else +#ifndef xmlTextWriterStartDTDElement +extern __typeof (xmlTextWriterStartDTDElement) xmlTextWriterStartDTDElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartDTDElement xmlTextWriterStartDTDElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartDTDEntity +extern __typeof (xmlTextWriterStartDTDEntity) xmlTextWriterStartDTDEntity __attribute((alias("xmlTextWriterStartDTDEntity__internal_alias"))); +#else +#ifndef xmlTextWriterStartDTDEntity +extern __typeof (xmlTextWriterStartDTDEntity) xmlTextWriterStartDTDEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartDTDEntity xmlTextWriterStartDTDEntity__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartDocument +extern __typeof (xmlTextWriterStartDocument) xmlTextWriterStartDocument __attribute((alias("xmlTextWriterStartDocument__internal_alias"))); +#else +#ifndef xmlTextWriterStartDocument +extern __typeof (xmlTextWriterStartDocument) xmlTextWriterStartDocument__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartDocument xmlTextWriterStartDocument__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartElement +extern __typeof (xmlTextWriterStartElement) xmlTextWriterStartElement __attribute((alias("xmlTextWriterStartElement__internal_alias"))); +#else +#ifndef xmlTextWriterStartElement +extern __typeof (xmlTextWriterStartElement) xmlTextWriterStartElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartElement xmlTextWriterStartElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartElementNS +extern __typeof (xmlTextWriterStartElementNS) xmlTextWriterStartElementNS __attribute((alias("xmlTextWriterStartElementNS__internal_alias"))); +#else +#ifndef xmlTextWriterStartElementNS +extern __typeof (xmlTextWriterStartElementNS) xmlTextWriterStartElementNS__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartElementNS xmlTextWriterStartElementNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterStartPI +extern __typeof (xmlTextWriterStartPI) xmlTextWriterStartPI __attribute((alias("xmlTextWriterStartPI__internal_alias"))); +#else +#ifndef xmlTextWriterStartPI +extern __typeof (xmlTextWriterStartPI) xmlTextWriterStartPI__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterStartPI xmlTextWriterStartPI__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteAttribute +extern __typeof (xmlTextWriterWriteAttribute) xmlTextWriterWriteAttribute __attribute((alias("xmlTextWriterWriteAttribute__internal_alias"))); +#else +#ifndef xmlTextWriterWriteAttribute +extern __typeof (xmlTextWriterWriteAttribute) xmlTextWriterWriteAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteAttribute xmlTextWriterWriteAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteAttributeNS +extern __typeof (xmlTextWriterWriteAttributeNS) xmlTextWriterWriteAttributeNS __attribute((alias("xmlTextWriterWriteAttributeNS__internal_alias"))); +#else +#ifndef xmlTextWriterWriteAttributeNS +extern __typeof (xmlTextWriterWriteAttributeNS) xmlTextWriterWriteAttributeNS__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteAttributeNS xmlTextWriterWriteAttributeNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteBase64 +extern __typeof (xmlTextWriterWriteBase64) xmlTextWriterWriteBase64 __attribute((alias("xmlTextWriterWriteBase64__internal_alias"))); +#else +#ifndef xmlTextWriterWriteBase64 +extern __typeof (xmlTextWriterWriteBase64) xmlTextWriterWriteBase64__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteBase64 xmlTextWriterWriteBase64__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteBinHex +extern __typeof (xmlTextWriterWriteBinHex) xmlTextWriterWriteBinHex __attribute((alias("xmlTextWriterWriteBinHex__internal_alias"))); +#else +#ifndef xmlTextWriterWriteBinHex +extern __typeof (xmlTextWriterWriteBinHex) xmlTextWriterWriteBinHex__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteBinHex xmlTextWriterWriteBinHex__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteCDATA +extern __typeof (xmlTextWriterWriteCDATA) xmlTextWriterWriteCDATA __attribute((alias("xmlTextWriterWriteCDATA__internal_alias"))); +#else +#ifndef xmlTextWriterWriteCDATA +extern __typeof (xmlTextWriterWriteCDATA) xmlTextWriterWriteCDATA__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteCDATA xmlTextWriterWriteCDATA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteComment +extern __typeof (xmlTextWriterWriteComment) xmlTextWriterWriteComment __attribute((alias("xmlTextWriterWriteComment__internal_alias"))); +#else +#ifndef xmlTextWriterWriteComment +extern __typeof (xmlTextWriterWriteComment) xmlTextWriterWriteComment__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteComment xmlTextWriterWriteComment__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteDTD +extern __typeof (xmlTextWriterWriteDTD) xmlTextWriterWriteDTD __attribute((alias("xmlTextWriterWriteDTD__internal_alias"))); +#else +#ifndef xmlTextWriterWriteDTD +extern __typeof (xmlTextWriterWriteDTD) xmlTextWriterWriteDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteDTD xmlTextWriterWriteDTD__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteDTDAttlist +extern __typeof (xmlTextWriterWriteDTDAttlist) xmlTextWriterWriteDTDAttlist __attribute((alias("xmlTextWriterWriteDTDAttlist__internal_alias"))); +#else +#ifndef xmlTextWriterWriteDTDAttlist +extern __typeof (xmlTextWriterWriteDTDAttlist) xmlTextWriterWriteDTDAttlist__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteDTDAttlist xmlTextWriterWriteDTDAttlist__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteDTDElement +extern __typeof (xmlTextWriterWriteDTDElement) xmlTextWriterWriteDTDElement __attribute((alias("xmlTextWriterWriteDTDElement__internal_alias"))); +#else +#ifndef xmlTextWriterWriteDTDElement +extern __typeof (xmlTextWriterWriteDTDElement) xmlTextWriterWriteDTDElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteDTDElement xmlTextWriterWriteDTDElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteDTDEntity +extern __typeof (xmlTextWriterWriteDTDEntity) xmlTextWriterWriteDTDEntity __attribute((alias("xmlTextWriterWriteDTDEntity__internal_alias"))); +#else +#ifndef xmlTextWriterWriteDTDEntity +extern __typeof (xmlTextWriterWriteDTDEntity) xmlTextWriterWriteDTDEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteDTDEntity xmlTextWriterWriteDTDEntity__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteDTDExternalEntity +extern __typeof (xmlTextWriterWriteDTDExternalEntity) xmlTextWriterWriteDTDExternalEntity __attribute((alias("xmlTextWriterWriteDTDExternalEntity__internal_alias"))); +#else +#ifndef xmlTextWriterWriteDTDExternalEntity +extern __typeof (xmlTextWriterWriteDTDExternalEntity) xmlTextWriterWriteDTDExternalEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteDTDExternalEntity xmlTextWriterWriteDTDExternalEntity__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteDTDExternalEntityContents +extern __typeof (xmlTextWriterWriteDTDExternalEntityContents) xmlTextWriterWriteDTDExternalEntityContents __attribute((alias("xmlTextWriterWriteDTDExternalEntityContents__internal_alias"))); +#else +#ifndef xmlTextWriterWriteDTDExternalEntityContents +extern __typeof (xmlTextWriterWriteDTDExternalEntityContents) xmlTextWriterWriteDTDExternalEntityContents__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteDTDExternalEntityContents xmlTextWriterWriteDTDExternalEntityContents__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteDTDInternalEntity +extern __typeof (xmlTextWriterWriteDTDInternalEntity) xmlTextWriterWriteDTDInternalEntity __attribute((alias("xmlTextWriterWriteDTDInternalEntity__internal_alias"))); +#else +#ifndef xmlTextWriterWriteDTDInternalEntity +extern __typeof (xmlTextWriterWriteDTDInternalEntity) xmlTextWriterWriteDTDInternalEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteDTDInternalEntity xmlTextWriterWriteDTDInternalEntity__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteDTDNotation +extern __typeof (xmlTextWriterWriteDTDNotation) xmlTextWriterWriteDTDNotation __attribute((alias("xmlTextWriterWriteDTDNotation__internal_alias"))); +#else +#ifndef xmlTextWriterWriteDTDNotation +extern __typeof (xmlTextWriterWriteDTDNotation) xmlTextWriterWriteDTDNotation__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteDTDNotation xmlTextWriterWriteDTDNotation__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteElement +extern __typeof (xmlTextWriterWriteElement) xmlTextWriterWriteElement __attribute((alias("xmlTextWriterWriteElement__internal_alias"))); +#else +#ifndef xmlTextWriterWriteElement +extern __typeof (xmlTextWriterWriteElement) xmlTextWriterWriteElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteElement xmlTextWriterWriteElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteElementNS +extern __typeof (xmlTextWriterWriteElementNS) xmlTextWriterWriteElementNS __attribute((alias("xmlTextWriterWriteElementNS__internal_alias"))); +#else +#ifndef xmlTextWriterWriteElementNS +extern __typeof (xmlTextWriterWriteElementNS) xmlTextWriterWriteElementNS__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteElementNS xmlTextWriterWriteElementNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatAttribute +extern __typeof (xmlTextWriterWriteFormatAttribute) xmlTextWriterWriteFormatAttribute __attribute((alias("xmlTextWriterWriteFormatAttribute__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatAttribute +extern __typeof (xmlTextWriterWriteFormatAttribute) xmlTextWriterWriteFormatAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatAttribute xmlTextWriterWriteFormatAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatAttributeNS +extern __typeof (xmlTextWriterWriteFormatAttributeNS) xmlTextWriterWriteFormatAttributeNS __attribute((alias("xmlTextWriterWriteFormatAttributeNS__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatAttributeNS +extern __typeof (xmlTextWriterWriteFormatAttributeNS) xmlTextWriterWriteFormatAttributeNS__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatAttributeNS xmlTextWriterWriteFormatAttributeNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatCDATA +extern __typeof (xmlTextWriterWriteFormatCDATA) xmlTextWriterWriteFormatCDATA __attribute((alias("xmlTextWriterWriteFormatCDATA__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatCDATA +extern __typeof (xmlTextWriterWriteFormatCDATA) xmlTextWriterWriteFormatCDATA__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatCDATA xmlTextWriterWriteFormatCDATA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatComment +extern __typeof (xmlTextWriterWriteFormatComment) xmlTextWriterWriteFormatComment __attribute((alias("xmlTextWriterWriteFormatComment__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatComment +extern __typeof (xmlTextWriterWriteFormatComment) xmlTextWriterWriteFormatComment__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatComment xmlTextWriterWriteFormatComment__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatDTD +extern __typeof (xmlTextWriterWriteFormatDTD) xmlTextWriterWriteFormatDTD __attribute((alias("xmlTextWriterWriteFormatDTD__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatDTD +extern __typeof (xmlTextWriterWriteFormatDTD) xmlTextWriterWriteFormatDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatDTD xmlTextWriterWriteFormatDTD__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatDTDAttlist +extern __typeof (xmlTextWriterWriteFormatDTDAttlist) xmlTextWriterWriteFormatDTDAttlist __attribute((alias("xmlTextWriterWriteFormatDTDAttlist__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatDTDAttlist +extern __typeof (xmlTextWriterWriteFormatDTDAttlist) xmlTextWriterWriteFormatDTDAttlist__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatDTDAttlist xmlTextWriterWriteFormatDTDAttlist__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatDTDElement +extern __typeof (xmlTextWriterWriteFormatDTDElement) xmlTextWriterWriteFormatDTDElement __attribute((alias("xmlTextWriterWriteFormatDTDElement__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatDTDElement +extern __typeof (xmlTextWriterWriteFormatDTDElement) xmlTextWriterWriteFormatDTDElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatDTDElement xmlTextWriterWriteFormatDTDElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatDTDInternalEntity +extern __typeof (xmlTextWriterWriteFormatDTDInternalEntity) xmlTextWriterWriteFormatDTDInternalEntity __attribute((alias("xmlTextWriterWriteFormatDTDInternalEntity__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatDTDInternalEntity +extern __typeof (xmlTextWriterWriteFormatDTDInternalEntity) xmlTextWriterWriteFormatDTDInternalEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatDTDInternalEntity xmlTextWriterWriteFormatDTDInternalEntity__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatElement +extern __typeof (xmlTextWriterWriteFormatElement) xmlTextWriterWriteFormatElement __attribute((alias("xmlTextWriterWriteFormatElement__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatElement +extern __typeof (xmlTextWriterWriteFormatElement) xmlTextWriterWriteFormatElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatElement xmlTextWriterWriteFormatElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatElementNS +extern __typeof (xmlTextWriterWriteFormatElementNS) xmlTextWriterWriteFormatElementNS __attribute((alias("xmlTextWriterWriteFormatElementNS__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatElementNS +extern __typeof (xmlTextWriterWriteFormatElementNS) xmlTextWriterWriteFormatElementNS__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatElementNS xmlTextWriterWriteFormatElementNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatPI +extern __typeof (xmlTextWriterWriteFormatPI) xmlTextWriterWriteFormatPI __attribute((alias("xmlTextWriterWriteFormatPI__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatPI +extern __typeof (xmlTextWriterWriteFormatPI) xmlTextWriterWriteFormatPI__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatPI xmlTextWriterWriteFormatPI__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatRaw +extern __typeof (xmlTextWriterWriteFormatRaw) xmlTextWriterWriteFormatRaw __attribute((alias("xmlTextWriterWriteFormatRaw__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatRaw +extern __typeof (xmlTextWriterWriteFormatRaw) xmlTextWriterWriteFormatRaw__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatRaw xmlTextWriterWriteFormatRaw__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteFormatString +extern __typeof (xmlTextWriterWriteFormatString) xmlTextWriterWriteFormatString __attribute((alias("xmlTextWriterWriteFormatString__internal_alias"))); +#else +#ifndef xmlTextWriterWriteFormatString +extern __typeof (xmlTextWriterWriteFormatString) xmlTextWriterWriteFormatString__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteFormatString xmlTextWriterWriteFormatString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWritePI +extern __typeof (xmlTextWriterWritePI) xmlTextWriterWritePI __attribute((alias("xmlTextWriterWritePI__internal_alias"))); +#else +#ifndef xmlTextWriterWritePI +extern __typeof (xmlTextWriterWritePI) xmlTextWriterWritePI__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWritePI xmlTextWriterWritePI__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteRaw +extern __typeof (xmlTextWriterWriteRaw) xmlTextWriterWriteRaw __attribute((alias("xmlTextWriterWriteRaw__internal_alias"))); +#else +#ifndef xmlTextWriterWriteRaw +extern __typeof (xmlTextWriterWriteRaw) xmlTextWriterWriteRaw__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteRaw xmlTextWriterWriteRaw__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteRawLen +extern __typeof (xmlTextWriterWriteRawLen) xmlTextWriterWriteRawLen __attribute((alias("xmlTextWriterWriteRawLen__internal_alias"))); +#else +#ifndef xmlTextWriterWriteRawLen +extern __typeof (xmlTextWriterWriteRawLen) xmlTextWriterWriteRawLen__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteRawLen xmlTextWriterWriteRawLen__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteString +extern __typeof (xmlTextWriterWriteString) xmlTextWriterWriteString __attribute((alias("xmlTextWriterWriteString__internal_alias"))); +#else +#ifndef xmlTextWriterWriteString +extern __typeof (xmlTextWriterWriteString) xmlTextWriterWriteString__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteString xmlTextWriterWriteString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatAttribute +extern __typeof (xmlTextWriterWriteVFormatAttribute) xmlTextWriterWriteVFormatAttribute __attribute((alias("xmlTextWriterWriteVFormatAttribute__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatAttribute +extern __typeof (xmlTextWriterWriteVFormatAttribute) xmlTextWriterWriteVFormatAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatAttribute xmlTextWriterWriteVFormatAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatAttributeNS +extern __typeof (xmlTextWriterWriteVFormatAttributeNS) xmlTextWriterWriteVFormatAttributeNS __attribute((alias("xmlTextWriterWriteVFormatAttributeNS__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatAttributeNS +extern __typeof (xmlTextWriterWriteVFormatAttributeNS) xmlTextWriterWriteVFormatAttributeNS__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatAttributeNS xmlTextWriterWriteVFormatAttributeNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatCDATA +extern __typeof (xmlTextWriterWriteVFormatCDATA) xmlTextWriterWriteVFormatCDATA __attribute((alias("xmlTextWriterWriteVFormatCDATA__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatCDATA +extern __typeof (xmlTextWriterWriteVFormatCDATA) xmlTextWriterWriteVFormatCDATA__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatCDATA xmlTextWriterWriteVFormatCDATA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatComment +extern __typeof (xmlTextWriterWriteVFormatComment) xmlTextWriterWriteVFormatComment __attribute((alias("xmlTextWriterWriteVFormatComment__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatComment +extern __typeof (xmlTextWriterWriteVFormatComment) xmlTextWriterWriteVFormatComment__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatComment xmlTextWriterWriteVFormatComment__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatDTD +extern __typeof (xmlTextWriterWriteVFormatDTD) xmlTextWriterWriteVFormatDTD __attribute((alias("xmlTextWriterWriteVFormatDTD__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatDTD +extern __typeof (xmlTextWriterWriteVFormatDTD) xmlTextWriterWriteVFormatDTD__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatDTD xmlTextWriterWriteVFormatDTD__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatDTDAttlist +extern __typeof (xmlTextWriterWriteVFormatDTDAttlist) xmlTextWriterWriteVFormatDTDAttlist __attribute((alias("xmlTextWriterWriteVFormatDTDAttlist__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatDTDAttlist +extern __typeof (xmlTextWriterWriteVFormatDTDAttlist) xmlTextWriterWriteVFormatDTDAttlist__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatDTDAttlist xmlTextWriterWriteVFormatDTDAttlist__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatDTDElement +extern __typeof (xmlTextWriterWriteVFormatDTDElement) xmlTextWriterWriteVFormatDTDElement __attribute((alias("xmlTextWriterWriteVFormatDTDElement__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatDTDElement +extern __typeof (xmlTextWriterWriteVFormatDTDElement) xmlTextWriterWriteVFormatDTDElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatDTDElement xmlTextWriterWriteVFormatDTDElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatDTDInternalEntity +extern __typeof (xmlTextWriterWriteVFormatDTDInternalEntity) xmlTextWriterWriteVFormatDTDInternalEntity __attribute((alias("xmlTextWriterWriteVFormatDTDInternalEntity__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatDTDInternalEntity +extern __typeof (xmlTextWriterWriteVFormatDTDInternalEntity) xmlTextWriterWriteVFormatDTDInternalEntity__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatDTDInternalEntity xmlTextWriterWriteVFormatDTDInternalEntity__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatElement +extern __typeof (xmlTextWriterWriteVFormatElement) xmlTextWriterWriteVFormatElement __attribute((alias("xmlTextWriterWriteVFormatElement__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatElement +extern __typeof (xmlTextWriterWriteVFormatElement) xmlTextWriterWriteVFormatElement__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatElement xmlTextWriterWriteVFormatElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatElementNS +extern __typeof (xmlTextWriterWriteVFormatElementNS) xmlTextWriterWriteVFormatElementNS __attribute((alias("xmlTextWriterWriteVFormatElementNS__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatElementNS +extern __typeof (xmlTextWriterWriteVFormatElementNS) xmlTextWriterWriteVFormatElementNS__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatElementNS xmlTextWriterWriteVFormatElementNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatPI +extern __typeof (xmlTextWriterWriteVFormatPI) xmlTextWriterWriteVFormatPI __attribute((alias("xmlTextWriterWriteVFormatPI__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatPI +extern __typeof (xmlTextWriterWriteVFormatPI) xmlTextWriterWriteVFormatPI__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatPI xmlTextWriterWriteVFormatPI__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatRaw +extern __typeof (xmlTextWriterWriteVFormatRaw) xmlTextWriterWriteVFormatRaw __attribute((alias("xmlTextWriterWriteVFormatRaw__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatRaw +extern __typeof (xmlTextWriterWriteVFormatRaw) xmlTextWriterWriteVFormatRaw__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatRaw xmlTextWriterWriteVFormatRaw__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_WRITER_ENABLED) +#ifdef bottom_xmlwriter +#undef xmlTextWriterWriteVFormatString +extern __typeof (xmlTextWriterWriteVFormatString) xmlTextWriterWriteVFormatString __attribute((alias("xmlTextWriterWriteVFormatString__internal_alias"))); +#else +#ifndef xmlTextWriterWriteVFormatString +extern __typeof (xmlTextWriterWriteVFormatString) xmlTextWriterWriteVFormatString__internal_alias __attribute((visibility("hidden"))); +#define xmlTextWriterWriteVFormatString xmlTextWriterWriteVFormatString__internal_alias +#endif +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefBufferAllocScheme +extern __typeof (xmlThrDefBufferAllocScheme) xmlThrDefBufferAllocScheme __attribute((alias("xmlThrDefBufferAllocScheme__internal_alias"))); +#else +#ifndef xmlThrDefBufferAllocScheme +extern __typeof (xmlThrDefBufferAllocScheme) xmlThrDefBufferAllocScheme__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefBufferAllocScheme xmlThrDefBufferAllocScheme__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefDefaultBufferSize +extern __typeof (xmlThrDefDefaultBufferSize) xmlThrDefDefaultBufferSize __attribute((alias("xmlThrDefDefaultBufferSize__internal_alias"))); +#else +#ifndef xmlThrDefDefaultBufferSize +extern __typeof (xmlThrDefDefaultBufferSize) xmlThrDefDefaultBufferSize__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefDefaultBufferSize xmlThrDefDefaultBufferSize__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefDeregisterNodeDefault +extern __typeof (xmlThrDefDeregisterNodeDefault) xmlThrDefDeregisterNodeDefault __attribute((alias("xmlThrDefDeregisterNodeDefault__internal_alias"))); +#else +#ifndef xmlThrDefDeregisterNodeDefault +extern __typeof (xmlThrDefDeregisterNodeDefault) xmlThrDefDeregisterNodeDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefDeregisterNodeDefault xmlThrDefDeregisterNodeDefault__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefDoValidityCheckingDefaultValue +extern __typeof (xmlThrDefDoValidityCheckingDefaultValue) xmlThrDefDoValidityCheckingDefaultValue __attribute((alias("xmlThrDefDoValidityCheckingDefaultValue__internal_alias"))); +#else +#ifndef xmlThrDefDoValidityCheckingDefaultValue +extern __typeof (xmlThrDefDoValidityCheckingDefaultValue) xmlThrDefDoValidityCheckingDefaultValue__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefDoValidityCheckingDefaultValue xmlThrDefDoValidityCheckingDefaultValue__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefGetWarningsDefaultValue +extern __typeof (xmlThrDefGetWarningsDefaultValue) xmlThrDefGetWarningsDefaultValue __attribute((alias("xmlThrDefGetWarningsDefaultValue__internal_alias"))); +#else +#ifndef xmlThrDefGetWarningsDefaultValue +extern __typeof (xmlThrDefGetWarningsDefaultValue) xmlThrDefGetWarningsDefaultValue__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefGetWarningsDefaultValue xmlThrDefGetWarningsDefaultValue__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefIndentTreeOutput +extern __typeof (xmlThrDefIndentTreeOutput) xmlThrDefIndentTreeOutput __attribute((alias("xmlThrDefIndentTreeOutput__internal_alias"))); +#else +#ifndef xmlThrDefIndentTreeOutput +extern __typeof (xmlThrDefIndentTreeOutput) xmlThrDefIndentTreeOutput__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefIndentTreeOutput xmlThrDefIndentTreeOutput__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefKeepBlanksDefaultValue +extern __typeof (xmlThrDefKeepBlanksDefaultValue) xmlThrDefKeepBlanksDefaultValue __attribute((alias("xmlThrDefKeepBlanksDefaultValue__internal_alias"))); +#else +#ifndef xmlThrDefKeepBlanksDefaultValue +extern __typeof (xmlThrDefKeepBlanksDefaultValue) xmlThrDefKeepBlanksDefaultValue__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefKeepBlanksDefaultValue xmlThrDefKeepBlanksDefaultValue__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefLineNumbersDefaultValue +extern __typeof (xmlThrDefLineNumbersDefaultValue) xmlThrDefLineNumbersDefaultValue __attribute((alias("xmlThrDefLineNumbersDefaultValue__internal_alias"))); +#else +#ifndef xmlThrDefLineNumbersDefaultValue +extern __typeof (xmlThrDefLineNumbersDefaultValue) xmlThrDefLineNumbersDefaultValue__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefLineNumbersDefaultValue xmlThrDefLineNumbersDefaultValue__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefLoadExtDtdDefaultValue +extern __typeof (xmlThrDefLoadExtDtdDefaultValue) xmlThrDefLoadExtDtdDefaultValue __attribute((alias("xmlThrDefLoadExtDtdDefaultValue__internal_alias"))); +#else +#ifndef xmlThrDefLoadExtDtdDefaultValue +extern __typeof (xmlThrDefLoadExtDtdDefaultValue) xmlThrDefLoadExtDtdDefaultValue__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefLoadExtDtdDefaultValue xmlThrDefLoadExtDtdDefaultValue__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefOutputBufferCreateFilenameDefault +extern __typeof (xmlThrDefOutputBufferCreateFilenameDefault) xmlThrDefOutputBufferCreateFilenameDefault __attribute((alias("xmlThrDefOutputBufferCreateFilenameDefault__internal_alias"))); +#else +#ifndef xmlThrDefOutputBufferCreateFilenameDefault +extern __typeof (xmlThrDefOutputBufferCreateFilenameDefault) xmlThrDefOutputBufferCreateFilenameDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefOutputBufferCreateFilenameDefault xmlThrDefOutputBufferCreateFilenameDefault__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefParserDebugEntities +extern __typeof (xmlThrDefParserDebugEntities) xmlThrDefParserDebugEntities __attribute((alias("xmlThrDefParserDebugEntities__internal_alias"))); +#else +#ifndef xmlThrDefParserDebugEntities +extern __typeof (xmlThrDefParserDebugEntities) xmlThrDefParserDebugEntities__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefParserDebugEntities xmlThrDefParserDebugEntities__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefParserInputBufferCreateFilenameDefault +extern __typeof (xmlThrDefParserInputBufferCreateFilenameDefault) xmlThrDefParserInputBufferCreateFilenameDefault __attribute((alias("xmlThrDefParserInputBufferCreateFilenameDefault__internal_alias"))); +#else +#ifndef xmlThrDefParserInputBufferCreateFilenameDefault +extern __typeof (xmlThrDefParserInputBufferCreateFilenameDefault) xmlThrDefParserInputBufferCreateFilenameDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefParserInputBufferCreateFilenameDefault xmlThrDefParserInputBufferCreateFilenameDefault__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefPedanticParserDefaultValue +extern __typeof (xmlThrDefPedanticParserDefaultValue) xmlThrDefPedanticParserDefaultValue __attribute((alias("xmlThrDefPedanticParserDefaultValue__internal_alias"))); +#else +#ifndef xmlThrDefPedanticParserDefaultValue +extern __typeof (xmlThrDefPedanticParserDefaultValue) xmlThrDefPedanticParserDefaultValue__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefPedanticParserDefaultValue xmlThrDefPedanticParserDefaultValue__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefRegisterNodeDefault +extern __typeof (xmlThrDefRegisterNodeDefault) xmlThrDefRegisterNodeDefault __attribute((alias("xmlThrDefRegisterNodeDefault__internal_alias"))); +#else +#ifndef xmlThrDefRegisterNodeDefault +extern __typeof (xmlThrDefRegisterNodeDefault) xmlThrDefRegisterNodeDefault__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefRegisterNodeDefault xmlThrDefRegisterNodeDefault__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefSaveNoEmptyTags +extern __typeof (xmlThrDefSaveNoEmptyTags) xmlThrDefSaveNoEmptyTags __attribute((alias("xmlThrDefSaveNoEmptyTags__internal_alias"))); +#else +#ifndef xmlThrDefSaveNoEmptyTags +extern __typeof (xmlThrDefSaveNoEmptyTags) xmlThrDefSaveNoEmptyTags__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefSaveNoEmptyTags xmlThrDefSaveNoEmptyTags__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefSetGenericErrorFunc +extern __typeof (xmlThrDefSetGenericErrorFunc) xmlThrDefSetGenericErrorFunc __attribute((alias("xmlThrDefSetGenericErrorFunc__internal_alias"))); +#else +#ifndef xmlThrDefSetGenericErrorFunc +extern __typeof (xmlThrDefSetGenericErrorFunc) xmlThrDefSetGenericErrorFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefSetGenericErrorFunc xmlThrDefSetGenericErrorFunc__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefSetStructuredErrorFunc +extern __typeof (xmlThrDefSetStructuredErrorFunc) xmlThrDefSetStructuredErrorFunc __attribute((alias("xmlThrDefSetStructuredErrorFunc__internal_alias"))); +#else +#ifndef xmlThrDefSetStructuredErrorFunc +extern __typeof (xmlThrDefSetStructuredErrorFunc) xmlThrDefSetStructuredErrorFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefSetStructuredErrorFunc xmlThrDefSetStructuredErrorFunc__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefSubstituteEntitiesDefaultValue +extern __typeof (xmlThrDefSubstituteEntitiesDefaultValue) xmlThrDefSubstituteEntitiesDefaultValue __attribute((alias("xmlThrDefSubstituteEntitiesDefaultValue__internal_alias"))); +#else +#ifndef xmlThrDefSubstituteEntitiesDefaultValue +extern __typeof (xmlThrDefSubstituteEntitiesDefaultValue) xmlThrDefSubstituteEntitiesDefaultValue__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefSubstituteEntitiesDefaultValue xmlThrDefSubstituteEntitiesDefaultValue__internal_alias +#endif +#endif + +#ifdef bottom_globals +#undef xmlThrDefTreeIndentString +extern __typeof (xmlThrDefTreeIndentString) xmlThrDefTreeIndentString __attribute((alias("xmlThrDefTreeIndentString__internal_alias"))); +#else +#ifndef xmlThrDefTreeIndentString +extern __typeof (xmlThrDefTreeIndentString) xmlThrDefTreeIndentString__internal_alias __attribute((visibility("hidden"))); +#define xmlThrDefTreeIndentString xmlThrDefTreeIndentString__internal_alias +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsAegeanNumbers +extern __typeof (xmlUCSIsAegeanNumbers) xmlUCSIsAegeanNumbers __attribute((alias("xmlUCSIsAegeanNumbers__internal_alias"))); +#else +#ifndef xmlUCSIsAegeanNumbers +extern __typeof (xmlUCSIsAegeanNumbers) xmlUCSIsAegeanNumbers__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsAegeanNumbers xmlUCSIsAegeanNumbers__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsAlphabeticPresentationForms +extern __typeof (xmlUCSIsAlphabeticPresentationForms) xmlUCSIsAlphabeticPresentationForms __attribute((alias("xmlUCSIsAlphabeticPresentationForms__internal_alias"))); +#else +#ifndef xmlUCSIsAlphabeticPresentationForms +extern __typeof (xmlUCSIsAlphabeticPresentationForms) xmlUCSIsAlphabeticPresentationForms__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsAlphabeticPresentationForms xmlUCSIsAlphabeticPresentationForms__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsArabic +extern __typeof (xmlUCSIsArabic) xmlUCSIsArabic __attribute((alias("xmlUCSIsArabic__internal_alias"))); +#else +#ifndef xmlUCSIsArabic +extern __typeof (xmlUCSIsArabic) xmlUCSIsArabic__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsArabic xmlUCSIsArabic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsArabicPresentationFormsA +extern __typeof (xmlUCSIsArabicPresentationFormsA) xmlUCSIsArabicPresentationFormsA __attribute((alias("xmlUCSIsArabicPresentationFormsA__internal_alias"))); +#else +#ifndef xmlUCSIsArabicPresentationFormsA +extern __typeof (xmlUCSIsArabicPresentationFormsA) xmlUCSIsArabicPresentationFormsA__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsArabicPresentationFormsA xmlUCSIsArabicPresentationFormsA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsArabicPresentationFormsB +extern __typeof (xmlUCSIsArabicPresentationFormsB) xmlUCSIsArabicPresentationFormsB __attribute((alias("xmlUCSIsArabicPresentationFormsB__internal_alias"))); +#else +#ifndef xmlUCSIsArabicPresentationFormsB +extern __typeof (xmlUCSIsArabicPresentationFormsB) xmlUCSIsArabicPresentationFormsB__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsArabicPresentationFormsB xmlUCSIsArabicPresentationFormsB__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsArmenian +extern __typeof (xmlUCSIsArmenian) xmlUCSIsArmenian __attribute((alias("xmlUCSIsArmenian__internal_alias"))); +#else +#ifndef xmlUCSIsArmenian +extern __typeof (xmlUCSIsArmenian) xmlUCSIsArmenian__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsArmenian xmlUCSIsArmenian__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsArrows +extern __typeof (xmlUCSIsArrows) xmlUCSIsArrows __attribute((alias("xmlUCSIsArrows__internal_alias"))); +#else +#ifndef xmlUCSIsArrows +extern __typeof (xmlUCSIsArrows) xmlUCSIsArrows__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsArrows xmlUCSIsArrows__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBasicLatin +extern __typeof (xmlUCSIsBasicLatin) xmlUCSIsBasicLatin __attribute((alias("xmlUCSIsBasicLatin__internal_alias"))); +#else +#ifndef xmlUCSIsBasicLatin +extern __typeof (xmlUCSIsBasicLatin) xmlUCSIsBasicLatin__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBasicLatin xmlUCSIsBasicLatin__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBengali +extern __typeof (xmlUCSIsBengali) xmlUCSIsBengali __attribute((alias("xmlUCSIsBengali__internal_alias"))); +#else +#ifndef xmlUCSIsBengali +extern __typeof (xmlUCSIsBengali) xmlUCSIsBengali__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBengali xmlUCSIsBengali__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBlock +extern __typeof (xmlUCSIsBlock) xmlUCSIsBlock __attribute((alias("xmlUCSIsBlock__internal_alias"))); +#else +#ifndef xmlUCSIsBlock +extern __typeof (xmlUCSIsBlock) xmlUCSIsBlock__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBlock xmlUCSIsBlock__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBlockElements +extern __typeof (xmlUCSIsBlockElements) xmlUCSIsBlockElements __attribute((alias("xmlUCSIsBlockElements__internal_alias"))); +#else +#ifndef xmlUCSIsBlockElements +extern __typeof (xmlUCSIsBlockElements) xmlUCSIsBlockElements__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBlockElements xmlUCSIsBlockElements__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBopomofo +extern __typeof (xmlUCSIsBopomofo) xmlUCSIsBopomofo __attribute((alias("xmlUCSIsBopomofo__internal_alias"))); +#else +#ifndef xmlUCSIsBopomofo +extern __typeof (xmlUCSIsBopomofo) xmlUCSIsBopomofo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBopomofo xmlUCSIsBopomofo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBopomofoExtended +extern __typeof (xmlUCSIsBopomofoExtended) xmlUCSIsBopomofoExtended __attribute((alias("xmlUCSIsBopomofoExtended__internal_alias"))); +#else +#ifndef xmlUCSIsBopomofoExtended +extern __typeof (xmlUCSIsBopomofoExtended) xmlUCSIsBopomofoExtended__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBopomofoExtended xmlUCSIsBopomofoExtended__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBoxDrawing +extern __typeof (xmlUCSIsBoxDrawing) xmlUCSIsBoxDrawing __attribute((alias("xmlUCSIsBoxDrawing__internal_alias"))); +#else +#ifndef xmlUCSIsBoxDrawing +extern __typeof (xmlUCSIsBoxDrawing) xmlUCSIsBoxDrawing__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBoxDrawing xmlUCSIsBoxDrawing__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBraillePatterns +extern __typeof (xmlUCSIsBraillePatterns) xmlUCSIsBraillePatterns __attribute((alias("xmlUCSIsBraillePatterns__internal_alias"))); +#else +#ifndef xmlUCSIsBraillePatterns +extern __typeof (xmlUCSIsBraillePatterns) xmlUCSIsBraillePatterns__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBraillePatterns xmlUCSIsBraillePatterns__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsBuhid +extern __typeof (xmlUCSIsBuhid) xmlUCSIsBuhid __attribute((alias("xmlUCSIsBuhid__internal_alias"))); +#else +#ifndef xmlUCSIsBuhid +extern __typeof (xmlUCSIsBuhid) xmlUCSIsBuhid__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsBuhid xmlUCSIsBuhid__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsByzantineMusicalSymbols +extern __typeof (xmlUCSIsByzantineMusicalSymbols) xmlUCSIsByzantineMusicalSymbols __attribute((alias("xmlUCSIsByzantineMusicalSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsByzantineMusicalSymbols +extern __typeof (xmlUCSIsByzantineMusicalSymbols) xmlUCSIsByzantineMusicalSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsByzantineMusicalSymbols xmlUCSIsByzantineMusicalSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKCompatibility +extern __typeof (xmlUCSIsCJKCompatibility) xmlUCSIsCJKCompatibility __attribute((alias("xmlUCSIsCJKCompatibility__internal_alias"))); +#else +#ifndef xmlUCSIsCJKCompatibility +extern __typeof (xmlUCSIsCJKCompatibility) xmlUCSIsCJKCompatibility__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKCompatibility xmlUCSIsCJKCompatibility__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKCompatibilityForms +extern __typeof (xmlUCSIsCJKCompatibilityForms) xmlUCSIsCJKCompatibilityForms __attribute((alias("xmlUCSIsCJKCompatibilityForms__internal_alias"))); +#else +#ifndef xmlUCSIsCJKCompatibilityForms +extern __typeof (xmlUCSIsCJKCompatibilityForms) xmlUCSIsCJKCompatibilityForms__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKCompatibilityForms xmlUCSIsCJKCompatibilityForms__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKCompatibilityIdeographs +extern __typeof (xmlUCSIsCJKCompatibilityIdeographs) xmlUCSIsCJKCompatibilityIdeographs __attribute((alias("xmlUCSIsCJKCompatibilityIdeographs__internal_alias"))); +#else +#ifndef xmlUCSIsCJKCompatibilityIdeographs +extern __typeof (xmlUCSIsCJKCompatibilityIdeographs) xmlUCSIsCJKCompatibilityIdeographs__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKCompatibilityIdeographs xmlUCSIsCJKCompatibilityIdeographs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKCompatibilityIdeographsSupplement +extern __typeof (xmlUCSIsCJKCompatibilityIdeographsSupplement) xmlUCSIsCJKCompatibilityIdeographsSupplement __attribute((alias("xmlUCSIsCJKCompatibilityIdeographsSupplement__internal_alias"))); +#else +#ifndef xmlUCSIsCJKCompatibilityIdeographsSupplement +extern __typeof (xmlUCSIsCJKCompatibilityIdeographsSupplement) xmlUCSIsCJKCompatibilityIdeographsSupplement__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKCompatibilityIdeographsSupplement xmlUCSIsCJKCompatibilityIdeographsSupplement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKRadicalsSupplement +extern __typeof (xmlUCSIsCJKRadicalsSupplement) xmlUCSIsCJKRadicalsSupplement __attribute((alias("xmlUCSIsCJKRadicalsSupplement__internal_alias"))); +#else +#ifndef xmlUCSIsCJKRadicalsSupplement +extern __typeof (xmlUCSIsCJKRadicalsSupplement) xmlUCSIsCJKRadicalsSupplement__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKRadicalsSupplement xmlUCSIsCJKRadicalsSupplement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKSymbolsandPunctuation +extern __typeof (xmlUCSIsCJKSymbolsandPunctuation) xmlUCSIsCJKSymbolsandPunctuation __attribute((alias("xmlUCSIsCJKSymbolsandPunctuation__internal_alias"))); +#else +#ifndef xmlUCSIsCJKSymbolsandPunctuation +extern __typeof (xmlUCSIsCJKSymbolsandPunctuation) xmlUCSIsCJKSymbolsandPunctuation__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKSymbolsandPunctuation xmlUCSIsCJKSymbolsandPunctuation__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKUnifiedIdeographs +extern __typeof (xmlUCSIsCJKUnifiedIdeographs) xmlUCSIsCJKUnifiedIdeographs __attribute((alias("xmlUCSIsCJKUnifiedIdeographs__internal_alias"))); +#else +#ifndef xmlUCSIsCJKUnifiedIdeographs +extern __typeof (xmlUCSIsCJKUnifiedIdeographs) xmlUCSIsCJKUnifiedIdeographs__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKUnifiedIdeographs xmlUCSIsCJKUnifiedIdeographs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKUnifiedIdeographsExtensionA +extern __typeof (xmlUCSIsCJKUnifiedIdeographsExtensionA) xmlUCSIsCJKUnifiedIdeographsExtensionA __attribute((alias("xmlUCSIsCJKUnifiedIdeographsExtensionA__internal_alias"))); +#else +#ifndef xmlUCSIsCJKUnifiedIdeographsExtensionA +extern __typeof (xmlUCSIsCJKUnifiedIdeographsExtensionA) xmlUCSIsCJKUnifiedIdeographsExtensionA__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKUnifiedIdeographsExtensionA xmlUCSIsCJKUnifiedIdeographsExtensionA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCJKUnifiedIdeographsExtensionB +extern __typeof (xmlUCSIsCJKUnifiedIdeographsExtensionB) xmlUCSIsCJKUnifiedIdeographsExtensionB __attribute((alias("xmlUCSIsCJKUnifiedIdeographsExtensionB__internal_alias"))); +#else +#ifndef xmlUCSIsCJKUnifiedIdeographsExtensionB +extern __typeof (xmlUCSIsCJKUnifiedIdeographsExtensionB) xmlUCSIsCJKUnifiedIdeographsExtensionB__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCJKUnifiedIdeographsExtensionB xmlUCSIsCJKUnifiedIdeographsExtensionB__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCat +extern __typeof (xmlUCSIsCat) xmlUCSIsCat __attribute((alias("xmlUCSIsCat__internal_alias"))); +#else +#ifndef xmlUCSIsCat +extern __typeof (xmlUCSIsCat) xmlUCSIsCat__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCat xmlUCSIsCat__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatC +extern __typeof (xmlUCSIsCatC) xmlUCSIsCatC __attribute((alias("xmlUCSIsCatC__internal_alias"))); +#else +#ifndef xmlUCSIsCatC +extern __typeof (xmlUCSIsCatC) xmlUCSIsCatC__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatC xmlUCSIsCatC__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatCc +extern __typeof (xmlUCSIsCatCc) xmlUCSIsCatCc __attribute((alias("xmlUCSIsCatCc__internal_alias"))); +#else +#ifndef xmlUCSIsCatCc +extern __typeof (xmlUCSIsCatCc) xmlUCSIsCatCc__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatCc xmlUCSIsCatCc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatCf +extern __typeof (xmlUCSIsCatCf) xmlUCSIsCatCf __attribute((alias("xmlUCSIsCatCf__internal_alias"))); +#else +#ifndef xmlUCSIsCatCf +extern __typeof (xmlUCSIsCatCf) xmlUCSIsCatCf__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatCf xmlUCSIsCatCf__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatCo +extern __typeof (xmlUCSIsCatCo) xmlUCSIsCatCo __attribute((alias("xmlUCSIsCatCo__internal_alias"))); +#else +#ifndef xmlUCSIsCatCo +extern __typeof (xmlUCSIsCatCo) xmlUCSIsCatCo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatCo xmlUCSIsCatCo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatCs +extern __typeof (xmlUCSIsCatCs) xmlUCSIsCatCs __attribute((alias("xmlUCSIsCatCs__internal_alias"))); +#else +#ifndef xmlUCSIsCatCs +extern __typeof (xmlUCSIsCatCs) xmlUCSIsCatCs__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatCs xmlUCSIsCatCs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatL +extern __typeof (xmlUCSIsCatL) xmlUCSIsCatL __attribute((alias("xmlUCSIsCatL__internal_alias"))); +#else +#ifndef xmlUCSIsCatL +extern __typeof (xmlUCSIsCatL) xmlUCSIsCatL__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatL xmlUCSIsCatL__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatLl +extern __typeof (xmlUCSIsCatLl) xmlUCSIsCatLl __attribute((alias("xmlUCSIsCatLl__internal_alias"))); +#else +#ifndef xmlUCSIsCatLl +extern __typeof (xmlUCSIsCatLl) xmlUCSIsCatLl__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatLl xmlUCSIsCatLl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatLm +extern __typeof (xmlUCSIsCatLm) xmlUCSIsCatLm __attribute((alias("xmlUCSIsCatLm__internal_alias"))); +#else +#ifndef xmlUCSIsCatLm +extern __typeof (xmlUCSIsCatLm) xmlUCSIsCatLm__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatLm xmlUCSIsCatLm__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatLo +extern __typeof (xmlUCSIsCatLo) xmlUCSIsCatLo __attribute((alias("xmlUCSIsCatLo__internal_alias"))); +#else +#ifndef xmlUCSIsCatLo +extern __typeof (xmlUCSIsCatLo) xmlUCSIsCatLo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatLo xmlUCSIsCatLo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatLt +extern __typeof (xmlUCSIsCatLt) xmlUCSIsCatLt __attribute((alias("xmlUCSIsCatLt__internal_alias"))); +#else +#ifndef xmlUCSIsCatLt +extern __typeof (xmlUCSIsCatLt) xmlUCSIsCatLt__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatLt xmlUCSIsCatLt__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatLu +extern __typeof (xmlUCSIsCatLu) xmlUCSIsCatLu __attribute((alias("xmlUCSIsCatLu__internal_alias"))); +#else +#ifndef xmlUCSIsCatLu +extern __typeof (xmlUCSIsCatLu) xmlUCSIsCatLu__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatLu xmlUCSIsCatLu__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatM +extern __typeof (xmlUCSIsCatM) xmlUCSIsCatM __attribute((alias("xmlUCSIsCatM__internal_alias"))); +#else +#ifndef xmlUCSIsCatM +extern __typeof (xmlUCSIsCatM) xmlUCSIsCatM__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatM xmlUCSIsCatM__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatMc +extern __typeof (xmlUCSIsCatMc) xmlUCSIsCatMc __attribute((alias("xmlUCSIsCatMc__internal_alias"))); +#else +#ifndef xmlUCSIsCatMc +extern __typeof (xmlUCSIsCatMc) xmlUCSIsCatMc__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatMc xmlUCSIsCatMc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatMe +extern __typeof (xmlUCSIsCatMe) xmlUCSIsCatMe __attribute((alias("xmlUCSIsCatMe__internal_alias"))); +#else +#ifndef xmlUCSIsCatMe +extern __typeof (xmlUCSIsCatMe) xmlUCSIsCatMe__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatMe xmlUCSIsCatMe__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatMn +extern __typeof (xmlUCSIsCatMn) xmlUCSIsCatMn __attribute((alias("xmlUCSIsCatMn__internal_alias"))); +#else +#ifndef xmlUCSIsCatMn +extern __typeof (xmlUCSIsCatMn) xmlUCSIsCatMn__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatMn xmlUCSIsCatMn__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatN +extern __typeof (xmlUCSIsCatN) xmlUCSIsCatN __attribute((alias("xmlUCSIsCatN__internal_alias"))); +#else +#ifndef xmlUCSIsCatN +extern __typeof (xmlUCSIsCatN) xmlUCSIsCatN__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatN xmlUCSIsCatN__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatNd +extern __typeof (xmlUCSIsCatNd) xmlUCSIsCatNd __attribute((alias("xmlUCSIsCatNd__internal_alias"))); +#else +#ifndef xmlUCSIsCatNd +extern __typeof (xmlUCSIsCatNd) xmlUCSIsCatNd__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatNd xmlUCSIsCatNd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatNl +extern __typeof (xmlUCSIsCatNl) xmlUCSIsCatNl __attribute((alias("xmlUCSIsCatNl__internal_alias"))); +#else +#ifndef xmlUCSIsCatNl +extern __typeof (xmlUCSIsCatNl) xmlUCSIsCatNl__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatNl xmlUCSIsCatNl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatNo +extern __typeof (xmlUCSIsCatNo) xmlUCSIsCatNo __attribute((alias("xmlUCSIsCatNo__internal_alias"))); +#else +#ifndef xmlUCSIsCatNo +extern __typeof (xmlUCSIsCatNo) xmlUCSIsCatNo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatNo xmlUCSIsCatNo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatP +extern __typeof (xmlUCSIsCatP) xmlUCSIsCatP __attribute((alias("xmlUCSIsCatP__internal_alias"))); +#else +#ifndef xmlUCSIsCatP +extern __typeof (xmlUCSIsCatP) xmlUCSIsCatP__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatP xmlUCSIsCatP__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatPc +extern __typeof (xmlUCSIsCatPc) xmlUCSIsCatPc __attribute((alias("xmlUCSIsCatPc__internal_alias"))); +#else +#ifndef xmlUCSIsCatPc +extern __typeof (xmlUCSIsCatPc) xmlUCSIsCatPc__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatPc xmlUCSIsCatPc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatPd +extern __typeof (xmlUCSIsCatPd) xmlUCSIsCatPd __attribute((alias("xmlUCSIsCatPd__internal_alias"))); +#else +#ifndef xmlUCSIsCatPd +extern __typeof (xmlUCSIsCatPd) xmlUCSIsCatPd__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatPd xmlUCSIsCatPd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatPe +extern __typeof (xmlUCSIsCatPe) xmlUCSIsCatPe __attribute((alias("xmlUCSIsCatPe__internal_alias"))); +#else +#ifndef xmlUCSIsCatPe +extern __typeof (xmlUCSIsCatPe) xmlUCSIsCatPe__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatPe xmlUCSIsCatPe__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatPf +extern __typeof (xmlUCSIsCatPf) xmlUCSIsCatPf __attribute((alias("xmlUCSIsCatPf__internal_alias"))); +#else +#ifndef xmlUCSIsCatPf +extern __typeof (xmlUCSIsCatPf) xmlUCSIsCatPf__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatPf xmlUCSIsCatPf__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatPi +extern __typeof (xmlUCSIsCatPi) xmlUCSIsCatPi __attribute((alias("xmlUCSIsCatPi__internal_alias"))); +#else +#ifndef xmlUCSIsCatPi +extern __typeof (xmlUCSIsCatPi) xmlUCSIsCatPi__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatPi xmlUCSIsCatPi__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatPo +extern __typeof (xmlUCSIsCatPo) xmlUCSIsCatPo __attribute((alias("xmlUCSIsCatPo__internal_alias"))); +#else +#ifndef xmlUCSIsCatPo +extern __typeof (xmlUCSIsCatPo) xmlUCSIsCatPo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatPo xmlUCSIsCatPo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatPs +extern __typeof (xmlUCSIsCatPs) xmlUCSIsCatPs __attribute((alias("xmlUCSIsCatPs__internal_alias"))); +#else +#ifndef xmlUCSIsCatPs +extern __typeof (xmlUCSIsCatPs) xmlUCSIsCatPs__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatPs xmlUCSIsCatPs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatS +extern __typeof (xmlUCSIsCatS) xmlUCSIsCatS __attribute((alias("xmlUCSIsCatS__internal_alias"))); +#else +#ifndef xmlUCSIsCatS +extern __typeof (xmlUCSIsCatS) xmlUCSIsCatS__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatS xmlUCSIsCatS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatSc +extern __typeof (xmlUCSIsCatSc) xmlUCSIsCatSc __attribute((alias("xmlUCSIsCatSc__internal_alias"))); +#else +#ifndef xmlUCSIsCatSc +extern __typeof (xmlUCSIsCatSc) xmlUCSIsCatSc__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatSc xmlUCSIsCatSc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatSk +extern __typeof (xmlUCSIsCatSk) xmlUCSIsCatSk __attribute((alias("xmlUCSIsCatSk__internal_alias"))); +#else +#ifndef xmlUCSIsCatSk +extern __typeof (xmlUCSIsCatSk) xmlUCSIsCatSk__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatSk xmlUCSIsCatSk__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatSm +extern __typeof (xmlUCSIsCatSm) xmlUCSIsCatSm __attribute((alias("xmlUCSIsCatSm__internal_alias"))); +#else +#ifndef xmlUCSIsCatSm +extern __typeof (xmlUCSIsCatSm) xmlUCSIsCatSm__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatSm xmlUCSIsCatSm__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatSo +extern __typeof (xmlUCSIsCatSo) xmlUCSIsCatSo __attribute((alias("xmlUCSIsCatSo__internal_alias"))); +#else +#ifndef xmlUCSIsCatSo +extern __typeof (xmlUCSIsCatSo) xmlUCSIsCatSo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatSo xmlUCSIsCatSo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatZ +extern __typeof (xmlUCSIsCatZ) xmlUCSIsCatZ __attribute((alias("xmlUCSIsCatZ__internal_alias"))); +#else +#ifndef xmlUCSIsCatZ +extern __typeof (xmlUCSIsCatZ) xmlUCSIsCatZ__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatZ xmlUCSIsCatZ__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatZl +extern __typeof (xmlUCSIsCatZl) xmlUCSIsCatZl __attribute((alias("xmlUCSIsCatZl__internal_alias"))); +#else +#ifndef xmlUCSIsCatZl +extern __typeof (xmlUCSIsCatZl) xmlUCSIsCatZl__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatZl xmlUCSIsCatZl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatZp +extern __typeof (xmlUCSIsCatZp) xmlUCSIsCatZp __attribute((alias("xmlUCSIsCatZp__internal_alias"))); +#else +#ifndef xmlUCSIsCatZp +extern __typeof (xmlUCSIsCatZp) xmlUCSIsCatZp__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatZp xmlUCSIsCatZp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCatZs +extern __typeof (xmlUCSIsCatZs) xmlUCSIsCatZs __attribute((alias("xmlUCSIsCatZs__internal_alias"))); +#else +#ifndef xmlUCSIsCatZs +extern __typeof (xmlUCSIsCatZs) xmlUCSIsCatZs__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCatZs xmlUCSIsCatZs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCherokee +extern __typeof (xmlUCSIsCherokee) xmlUCSIsCherokee __attribute((alias("xmlUCSIsCherokee__internal_alias"))); +#else +#ifndef xmlUCSIsCherokee +extern __typeof (xmlUCSIsCherokee) xmlUCSIsCherokee__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCherokee xmlUCSIsCherokee__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCombiningDiacriticalMarks +extern __typeof (xmlUCSIsCombiningDiacriticalMarks) xmlUCSIsCombiningDiacriticalMarks __attribute((alias("xmlUCSIsCombiningDiacriticalMarks__internal_alias"))); +#else +#ifndef xmlUCSIsCombiningDiacriticalMarks +extern __typeof (xmlUCSIsCombiningDiacriticalMarks) xmlUCSIsCombiningDiacriticalMarks__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCombiningDiacriticalMarks xmlUCSIsCombiningDiacriticalMarks__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCombiningDiacriticalMarksforSymbols +extern __typeof (xmlUCSIsCombiningDiacriticalMarksforSymbols) xmlUCSIsCombiningDiacriticalMarksforSymbols __attribute((alias("xmlUCSIsCombiningDiacriticalMarksforSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsCombiningDiacriticalMarksforSymbols +extern __typeof (xmlUCSIsCombiningDiacriticalMarksforSymbols) xmlUCSIsCombiningDiacriticalMarksforSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCombiningDiacriticalMarksforSymbols xmlUCSIsCombiningDiacriticalMarksforSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCombiningHalfMarks +extern __typeof (xmlUCSIsCombiningHalfMarks) xmlUCSIsCombiningHalfMarks __attribute((alias("xmlUCSIsCombiningHalfMarks__internal_alias"))); +#else +#ifndef xmlUCSIsCombiningHalfMarks +extern __typeof (xmlUCSIsCombiningHalfMarks) xmlUCSIsCombiningHalfMarks__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCombiningHalfMarks xmlUCSIsCombiningHalfMarks__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCombiningMarksforSymbols +extern __typeof (xmlUCSIsCombiningMarksforSymbols) xmlUCSIsCombiningMarksforSymbols __attribute((alias("xmlUCSIsCombiningMarksforSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsCombiningMarksforSymbols +extern __typeof (xmlUCSIsCombiningMarksforSymbols) xmlUCSIsCombiningMarksforSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCombiningMarksforSymbols xmlUCSIsCombiningMarksforSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsControlPictures +extern __typeof (xmlUCSIsControlPictures) xmlUCSIsControlPictures __attribute((alias("xmlUCSIsControlPictures__internal_alias"))); +#else +#ifndef xmlUCSIsControlPictures +extern __typeof (xmlUCSIsControlPictures) xmlUCSIsControlPictures__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsControlPictures xmlUCSIsControlPictures__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCurrencySymbols +extern __typeof (xmlUCSIsCurrencySymbols) xmlUCSIsCurrencySymbols __attribute((alias("xmlUCSIsCurrencySymbols__internal_alias"))); +#else +#ifndef xmlUCSIsCurrencySymbols +extern __typeof (xmlUCSIsCurrencySymbols) xmlUCSIsCurrencySymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCurrencySymbols xmlUCSIsCurrencySymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCypriotSyllabary +extern __typeof (xmlUCSIsCypriotSyllabary) xmlUCSIsCypriotSyllabary __attribute((alias("xmlUCSIsCypriotSyllabary__internal_alias"))); +#else +#ifndef xmlUCSIsCypriotSyllabary +extern __typeof (xmlUCSIsCypriotSyllabary) xmlUCSIsCypriotSyllabary__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCypriotSyllabary xmlUCSIsCypriotSyllabary__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCyrillic +extern __typeof (xmlUCSIsCyrillic) xmlUCSIsCyrillic __attribute((alias("xmlUCSIsCyrillic__internal_alias"))); +#else +#ifndef xmlUCSIsCyrillic +extern __typeof (xmlUCSIsCyrillic) xmlUCSIsCyrillic__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCyrillic xmlUCSIsCyrillic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsCyrillicSupplement +extern __typeof (xmlUCSIsCyrillicSupplement) xmlUCSIsCyrillicSupplement __attribute((alias("xmlUCSIsCyrillicSupplement__internal_alias"))); +#else +#ifndef xmlUCSIsCyrillicSupplement +extern __typeof (xmlUCSIsCyrillicSupplement) xmlUCSIsCyrillicSupplement__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsCyrillicSupplement xmlUCSIsCyrillicSupplement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsDeseret +extern __typeof (xmlUCSIsDeseret) xmlUCSIsDeseret __attribute((alias("xmlUCSIsDeseret__internal_alias"))); +#else +#ifndef xmlUCSIsDeseret +extern __typeof (xmlUCSIsDeseret) xmlUCSIsDeseret__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsDeseret xmlUCSIsDeseret__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsDevanagari +extern __typeof (xmlUCSIsDevanagari) xmlUCSIsDevanagari __attribute((alias("xmlUCSIsDevanagari__internal_alias"))); +#else +#ifndef xmlUCSIsDevanagari +extern __typeof (xmlUCSIsDevanagari) xmlUCSIsDevanagari__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsDevanagari xmlUCSIsDevanagari__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsDingbats +extern __typeof (xmlUCSIsDingbats) xmlUCSIsDingbats __attribute((alias("xmlUCSIsDingbats__internal_alias"))); +#else +#ifndef xmlUCSIsDingbats +extern __typeof (xmlUCSIsDingbats) xmlUCSIsDingbats__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsDingbats xmlUCSIsDingbats__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsEnclosedAlphanumerics +extern __typeof (xmlUCSIsEnclosedAlphanumerics) xmlUCSIsEnclosedAlphanumerics __attribute((alias("xmlUCSIsEnclosedAlphanumerics__internal_alias"))); +#else +#ifndef xmlUCSIsEnclosedAlphanumerics +extern __typeof (xmlUCSIsEnclosedAlphanumerics) xmlUCSIsEnclosedAlphanumerics__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsEnclosedAlphanumerics xmlUCSIsEnclosedAlphanumerics__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsEnclosedCJKLettersandMonths +extern __typeof (xmlUCSIsEnclosedCJKLettersandMonths) xmlUCSIsEnclosedCJKLettersandMonths __attribute((alias("xmlUCSIsEnclosedCJKLettersandMonths__internal_alias"))); +#else +#ifndef xmlUCSIsEnclosedCJKLettersandMonths +extern __typeof (xmlUCSIsEnclosedCJKLettersandMonths) xmlUCSIsEnclosedCJKLettersandMonths__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsEnclosedCJKLettersandMonths xmlUCSIsEnclosedCJKLettersandMonths__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsEthiopic +extern __typeof (xmlUCSIsEthiopic) xmlUCSIsEthiopic __attribute((alias("xmlUCSIsEthiopic__internal_alias"))); +#else +#ifndef xmlUCSIsEthiopic +extern __typeof (xmlUCSIsEthiopic) xmlUCSIsEthiopic__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsEthiopic xmlUCSIsEthiopic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGeneralPunctuation +extern __typeof (xmlUCSIsGeneralPunctuation) xmlUCSIsGeneralPunctuation __attribute((alias("xmlUCSIsGeneralPunctuation__internal_alias"))); +#else +#ifndef xmlUCSIsGeneralPunctuation +extern __typeof (xmlUCSIsGeneralPunctuation) xmlUCSIsGeneralPunctuation__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGeneralPunctuation xmlUCSIsGeneralPunctuation__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGeometricShapes +extern __typeof (xmlUCSIsGeometricShapes) xmlUCSIsGeometricShapes __attribute((alias("xmlUCSIsGeometricShapes__internal_alias"))); +#else +#ifndef xmlUCSIsGeometricShapes +extern __typeof (xmlUCSIsGeometricShapes) xmlUCSIsGeometricShapes__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGeometricShapes xmlUCSIsGeometricShapes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGeorgian +extern __typeof (xmlUCSIsGeorgian) xmlUCSIsGeorgian __attribute((alias("xmlUCSIsGeorgian__internal_alias"))); +#else +#ifndef xmlUCSIsGeorgian +extern __typeof (xmlUCSIsGeorgian) xmlUCSIsGeorgian__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGeorgian xmlUCSIsGeorgian__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGothic +extern __typeof (xmlUCSIsGothic) xmlUCSIsGothic __attribute((alias("xmlUCSIsGothic__internal_alias"))); +#else +#ifndef xmlUCSIsGothic +extern __typeof (xmlUCSIsGothic) xmlUCSIsGothic__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGothic xmlUCSIsGothic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGreek +extern __typeof (xmlUCSIsGreek) xmlUCSIsGreek __attribute((alias("xmlUCSIsGreek__internal_alias"))); +#else +#ifndef xmlUCSIsGreek +extern __typeof (xmlUCSIsGreek) xmlUCSIsGreek__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGreek xmlUCSIsGreek__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGreekExtended +extern __typeof (xmlUCSIsGreekExtended) xmlUCSIsGreekExtended __attribute((alias("xmlUCSIsGreekExtended__internal_alias"))); +#else +#ifndef xmlUCSIsGreekExtended +extern __typeof (xmlUCSIsGreekExtended) xmlUCSIsGreekExtended__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGreekExtended xmlUCSIsGreekExtended__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGreekandCoptic +extern __typeof (xmlUCSIsGreekandCoptic) xmlUCSIsGreekandCoptic __attribute((alias("xmlUCSIsGreekandCoptic__internal_alias"))); +#else +#ifndef xmlUCSIsGreekandCoptic +extern __typeof (xmlUCSIsGreekandCoptic) xmlUCSIsGreekandCoptic__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGreekandCoptic xmlUCSIsGreekandCoptic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGujarati +extern __typeof (xmlUCSIsGujarati) xmlUCSIsGujarati __attribute((alias("xmlUCSIsGujarati__internal_alias"))); +#else +#ifndef xmlUCSIsGujarati +extern __typeof (xmlUCSIsGujarati) xmlUCSIsGujarati__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGujarati xmlUCSIsGujarati__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsGurmukhi +extern __typeof (xmlUCSIsGurmukhi) xmlUCSIsGurmukhi __attribute((alias("xmlUCSIsGurmukhi__internal_alias"))); +#else +#ifndef xmlUCSIsGurmukhi +extern __typeof (xmlUCSIsGurmukhi) xmlUCSIsGurmukhi__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsGurmukhi xmlUCSIsGurmukhi__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHalfwidthandFullwidthForms +extern __typeof (xmlUCSIsHalfwidthandFullwidthForms) xmlUCSIsHalfwidthandFullwidthForms __attribute((alias("xmlUCSIsHalfwidthandFullwidthForms__internal_alias"))); +#else +#ifndef xmlUCSIsHalfwidthandFullwidthForms +extern __typeof (xmlUCSIsHalfwidthandFullwidthForms) xmlUCSIsHalfwidthandFullwidthForms__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHalfwidthandFullwidthForms xmlUCSIsHalfwidthandFullwidthForms__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHangulCompatibilityJamo +extern __typeof (xmlUCSIsHangulCompatibilityJamo) xmlUCSIsHangulCompatibilityJamo __attribute((alias("xmlUCSIsHangulCompatibilityJamo__internal_alias"))); +#else +#ifndef xmlUCSIsHangulCompatibilityJamo +extern __typeof (xmlUCSIsHangulCompatibilityJamo) xmlUCSIsHangulCompatibilityJamo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHangulCompatibilityJamo xmlUCSIsHangulCompatibilityJamo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHangulJamo +extern __typeof (xmlUCSIsHangulJamo) xmlUCSIsHangulJamo __attribute((alias("xmlUCSIsHangulJamo__internal_alias"))); +#else +#ifndef xmlUCSIsHangulJamo +extern __typeof (xmlUCSIsHangulJamo) xmlUCSIsHangulJamo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHangulJamo xmlUCSIsHangulJamo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHangulSyllables +extern __typeof (xmlUCSIsHangulSyllables) xmlUCSIsHangulSyllables __attribute((alias("xmlUCSIsHangulSyllables__internal_alias"))); +#else +#ifndef xmlUCSIsHangulSyllables +extern __typeof (xmlUCSIsHangulSyllables) xmlUCSIsHangulSyllables__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHangulSyllables xmlUCSIsHangulSyllables__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHanunoo +extern __typeof (xmlUCSIsHanunoo) xmlUCSIsHanunoo __attribute((alias("xmlUCSIsHanunoo__internal_alias"))); +#else +#ifndef xmlUCSIsHanunoo +extern __typeof (xmlUCSIsHanunoo) xmlUCSIsHanunoo__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHanunoo xmlUCSIsHanunoo__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHebrew +extern __typeof (xmlUCSIsHebrew) xmlUCSIsHebrew __attribute((alias("xmlUCSIsHebrew__internal_alias"))); +#else +#ifndef xmlUCSIsHebrew +extern __typeof (xmlUCSIsHebrew) xmlUCSIsHebrew__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHebrew xmlUCSIsHebrew__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHighPrivateUseSurrogates +extern __typeof (xmlUCSIsHighPrivateUseSurrogates) xmlUCSIsHighPrivateUseSurrogates __attribute((alias("xmlUCSIsHighPrivateUseSurrogates__internal_alias"))); +#else +#ifndef xmlUCSIsHighPrivateUseSurrogates +extern __typeof (xmlUCSIsHighPrivateUseSurrogates) xmlUCSIsHighPrivateUseSurrogates__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHighPrivateUseSurrogates xmlUCSIsHighPrivateUseSurrogates__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHighSurrogates +extern __typeof (xmlUCSIsHighSurrogates) xmlUCSIsHighSurrogates __attribute((alias("xmlUCSIsHighSurrogates__internal_alias"))); +#else +#ifndef xmlUCSIsHighSurrogates +extern __typeof (xmlUCSIsHighSurrogates) xmlUCSIsHighSurrogates__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHighSurrogates xmlUCSIsHighSurrogates__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsHiragana +extern __typeof (xmlUCSIsHiragana) xmlUCSIsHiragana __attribute((alias("xmlUCSIsHiragana__internal_alias"))); +#else +#ifndef xmlUCSIsHiragana +extern __typeof (xmlUCSIsHiragana) xmlUCSIsHiragana__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsHiragana xmlUCSIsHiragana__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsIPAExtensions +extern __typeof (xmlUCSIsIPAExtensions) xmlUCSIsIPAExtensions __attribute((alias("xmlUCSIsIPAExtensions__internal_alias"))); +#else +#ifndef xmlUCSIsIPAExtensions +extern __typeof (xmlUCSIsIPAExtensions) xmlUCSIsIPAExtensions__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsIPAExtensions xmlUCSIsIPAExtensions__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsIdeographicDescriptionCharacters +extern __typeof (xmlUCSIsIdeographicDescriptionCharacters) xmlUCSIsIdeographicDescriptionCharacters __attribute((alias("xmlUCSIsIdeographicDescriptionCharacters__internal_alias"))); +#else +#ifndef xmlUCSIsIdeographicDescriptionCharacters +extern __typeof (xmlUCSIsIdeographicDescriptionCharacters) xmlUCSIsIdeographicDescriptionCharacters__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsIdeographicDescriptionCharacters xmlUCSIsIdeographicDescriptionCharacters__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsKanbun +extern __typeof (xmlUCSIsKanbun) xmlUCSIsKanbun __attribute((alias("xmlUCSIsKanbun__internal_alias"))); +#else +#ifndef xmlUCSIsKanbun +extern __typeof (xmlUCSIsKanbun) xmlUCSIsKanbun__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsKanbun xmlUCSIsKanbun__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsKangxiRadicals +extern __typeof (xmlUCSIsKangxiRadicals) xmlUCSIsKangxiRadicals __attribute((alias("xmlUCSIsKangxiRadicals__internal_alias"))); +#else +#ifndef xmlUCSIsKangxiRadicals +extern __typeof (xmlUCSIsKangxiRadicals) xmlUCSIsKangxiRadicals__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsKangxiRadicals xmlUCSIsKangxiRadicals__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsKannada +extern __typeof (xmlUCSIsKannada) xmlUCSIsKannada __attribute((alias("xmlUCSIsKannada__internal_alias"))); +#else +#ifndef xmlUCSIsKannada +extern __typeof (xmlUCSIsKannada) xmlUCSIsKannada__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsKannada xmlUCSIsKannada__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsKatakana +extern __typeof (xmlUCSIsKatakana) xmlUCSIsKatakana __attribute((alias("xmlUCSIsKatakana__internal_alias"))); +#else +#ifndef xmlUCSIsKatakana +extern __typeof (xmlUCSIsKatakana) xmlUCSIsKatakana__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsKatakana xmlUCSIsKatakana__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsKatakanaPhoneticExtensions +extern __typeof (xmlUCSIsKatakanaPhoneticExtensions) xmlUCSIsKatakanaPhoneticExtensions __attribute((alias("xmlUCSIsKatakanaPhoneticExtensions__internal_alias"))); +#else +#ifndef xmlUCSIsKatakanaPhoneticExtensions +extern __typeof (xmlUCSIsKatakanaPhoneticExtensions) xmlUCSIsKatakanaPhoneticExtensions__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsKatakanaPhoneticExtensions xmlUCSIsKatakanaPhoneticExtensions__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsKhmer +extern __typeof (xmlUCSIsKhmer) xmlUCSIsKhmer __attribute((alias("xmlUCSIsKhmer__internal_alias"))); +#else +#ifndef xmlUCSIsKhmer +extern __typeof (xmlUCSIsKhmer) xmlUCSIsKhmer__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsKhmer xmlUCSIsKhmer__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsKhmerSymbols +extern __typeof (xmlUCSIsKhmerSymbols) xmlUCSIsKhmerSymbols __attribute((alias("xmlUCSIsKhmerSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsKhmerSymbols +extern __typeof (xmlUCSIsKhmerSymbols) xmlUCSIsKhmerSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsKhmerSymbols xmlUCSIsKhmerSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLao +extern __typeof (xmlUCSIsLao) xmlUCSIsLao __attribute((alias("xmlUCSIsLao__internal_alias"))); +#else +#ifndef xmlUCSIsLao +extern __typeof (xmlUCSIsLao) xmlUCSIsLao__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLao xmlUCSIsLao__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLatin1Supplement +extern __typeof (xmlUCSIsLatin1Supplement) xmlUCSIsLatin1Supplement __attribute((alias("xmlUCSIsLatin1Supplement__internal_alias"))); +#else +#ifndef xmlUCSIsLatin1Supplement +extern __typeof (xmlUCSIsLatin1Supplement) xmlUCSIsLatin1Supplement__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLatin1Supplement xmlUCSIsLatin1Supplement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLatinExtendedA +extern __typeof (xmlUCSIsLatinExtendedA) xmlUCSIsLatinExtendedA __attribute((alias("xmlUCSIsLatinExtendedA__internal_alias"))); +#else +#ifndef xmlUCSIsLatinExtendedA +extern __typeof (xmlUCSIsLatinExtendedA) xmlUCSIsLatinExtendedA__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLatinExtendedA xmlUCSIsLatinExtendedA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLatinExtendedAdditional +extern __typeof (xmlUCSIsLatinExtendedAdditional) xmlUCSIsLatinExtendedAdditional __attribute((alias("xmlUCSIsLatinExtendedAdditional__internal_alias"))); +#else +#ifndef xmlUCSIsLatinExtendedAdditional +extern __typeof (xmlUCSIsLatinExtendedAdditional) xmlUCSIsLatinExtendedAdditional__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLatinExtendedAdditional xmlUCSIsLatinExtendedAdditional__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLatinExtendedB +extern __typeof (xmlUCSIsLatinExtendedB) xmlUCSIsLatinExtendedB __attribute((alias("xmlUCSIsLatinExtendedB__internal_alias"))); +#else +#ifndef xmlUCSIsLatinExtendedB +extern __typeof (xmlUCSIsLatinExtendedB) xmlUCSIsLatinExtendedB__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLatinExtendedB xmlUCSIsLatinExtendedB__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLetterlikeSymbols +extern __typeof (xmlUCSIsLetterlikeSymbols) xmlUCSIsLetterlikeSymbols __attribute((alias("xmlUCSIsLetterlikeSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsLetterlikeSymbols +extern __typeof (xmlUCSIsLetterlikeSymbols) xmlUCSIsLetterlikeSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLetterlikeSymbols xmlUCSIsLetterlikeSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLimbu +extern __typeof (xmlUCSIsLimbu) xmlUCSIsLimbu __attribute((alias("xmlUCSIsLimbu__internal_alias"))); +#else +#ifndef xmlUCSIsLimbu +extern __typeof (xmlUCSIsLimbu) xmlUCSIsLimbu__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLimbu xmlUCSIsLimbu__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLinearBIdeograms +extern __typeof (xmlUCSIsLinearBIdeograms) xmlUCSIsLinearBIdeograms __attribute((alias("xmlUCSIsLinearBIdeograms__internal_alias"))); +#else +#ifndef xmlUCSIsLinearBIdeograms +extern __typeof (xmlUCSIsLinearBIdeograms) xmlUCSIsLinearBIdeograms__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLinearBIdeograms xmlUCSIsLinearBIdeograms__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLinearBSyllabary +extern __typeof (xmlUCSIsLinearBSyllabary) xmlUCSIsLinearBSyllabary __attribute((alias("xmlUCSIsLinearBSyllabary__internal_alias"))); +#else +#ifndef xmlUCSIsLinearBSyllabary +extern __typeof (xmlUCSIsLinearBSyllabary) xmlUCSIsLinearBSyllabary__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLinearBSyllabary xmlUCSIsLinearBSyllabary__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsLowSurrogates +extern __typeof (xmlUCSIsLowSurrogates) xmlUCSIsLowSurrogates __attribute((alias("xmlUCSIsLowSurrogates__internal_alias"))); +#else +#ifndef xmlUCSIsLowSurrogates +extern __typeof (xmlUCSIsLowSurrogates) xmlUCSIsLowSurrogates__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsLowSurrogates xmlUCSIsLowSurrogates__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMalayalam +extern __typeof (xmlUCSIsMalayalam) xmlUCSIsMalayalam __attribute((alias("xmlUCSIsMalayalam__internal_alias"))); +#else +#ifndef xmlUCSIsMalayalam +extern __typeof (xmlUCSIsMalayalam) xmlUCSIsMalayalam__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMalayalam xmlUCSIsMalayalam__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMathematicalAlphanumericSymbols +extern __typeof (xmlUCSIsMathematicalAlphanumericSymbols) xmlUCSIsMathematicalAlphanumericSymbols __attribute((alias("xmlUCSIsMathematicalAlphanumericSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsMathematicalAlphanumericSymbols +extern __typeof (xmlUCSIsMathematicalAlphanumericSymbols) xmlUCSIsMathematicalAlphanumericSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMathematicalAlphanumericSymbols xmlUCSIsMathematicalAlphanumericSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMathematicalOperators +extern __typeof (xmlUCSIsMathematicalOperators) xmlUCSIsMathematicalOperators __attribute((alias("xmlUCSIsMathematicalOperators__internal_alias"))); +#else +#ifndef xmlUCSIsMathematicalOperators +extern __typeof (xmlUCSIsMathematicalOperators) xmlUCSIsMathematicalOperators__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMathematicalOperators xmlUCSIsMathematicalOperators__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMiscellaneousMathematicalSymbolsA +extern __typeof (xmlUCSIsMiscellaneousMathematicalSymbolsA) xmlUCSIsMiscellaneousMathematicalSymbolsA __attribute((alias("xmlUCSIsMiscellaneousMathematicalSymbolsA__internal_alias"))); +#else +#ifndef xmlUCSIsMiscellaneousMathematicalSymbolsA +extern __typeof (xmlUCSIsMiscellaneousMathematicalSymbolsA) xmlUCSIsMiscellaneousMathematicalSymbolsA__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMiscellaneousMathematicalSymbolsA xmlUCSIsMiscellaneousMathematicalSymbolsA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMiscellaneousMathematicalSymbolsB +extern __typeof (xmlUCSIsMiscellaneousMathematicalSymbolsB) xmlUCSIsMiscellaneousMathematicalSymbolsB __attribute((alias("xmlUCSIsMiscellaneousMathematicalSymbolsB__internal_alias"))); +#else +#ifndef xmlUCSIsMiscellaneousMathematicalSymbolsB +extern __typeof (xmlUCSIsMiscellaneousMathematicalSymbolsB) xmlUCSIsMiscellaneousMathematicalSymbolsB__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMiscellaneousMathematicalSymbolsB xmlUCSIsMiscellaneousMathematicalSymbolsB__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMiscellaneousSymbols +extern __typeof (xmlUCSIsMiscellaneousSymbols) xmlUCSIsMiscellaneousSymbols __attribute((alias("xmlUCSIsMiscellaneousSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsMiscellaneousSymbols +extern __typeof (xmlUCSIsMiscellaneousSymbols) xmlUCSIsMiscellaneousSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMiscellaneousSymbols xmlUCSIsMiscellaneousSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMiscellaneousSymbolsandArrows +extern __typeof (xmlUCSIsMiscellaneousSymbolsandArrows) xmlUCSIsMiscellaneousSymbolsandArrows __attribute((alias("xmlUCSIsMiscellaneousSymbolsandArrows__internal_alias"))); +#else +#ifndef xmlUCSIsMiscellaneousSymbolsandArrows +extern __typeof (xmlUCSIsMiscellaneousSymbolsandArrows) xmlUCSIsMiscellaneousSymbolsandArrows__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMiscellaneousSymbolsandArrows xmlUCSIsMiscellaneousSymbolsandArrows__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMiscellaneousTechnical +extern __typeof (xmlUCSIsMiscellaneousTechnical) xmlUCSIsMiscellaneousTechnical __attribute((alias("xmlUCSIsMiscellaneousTechnical__internal_alias"))); +#else +#ifndef xmlUCSIsMiscellaneousTechnical +extern __typeof (xmlUCSIsMiscellaneousTechnical) xmlUCSIsMiscellaneousTechnical__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMiscellaneousTechnical xmlUCSIsMiscellaneousTechnical__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMongolian +extern __typeof (xmlUCSIsMongolian) xmlUCSIsMongolian __attribute((alias("xmlUCSIsMongolian__internal_alias"))); +#else +#ifndef xmlUCSIsMongolian +extern __typeof (xmlUCSIsMongolian) xmlUCSIsMongolian__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMongolian xmlUCSIsMongolian__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMusicalSymbols +extern __typeof (xmlUCSIsMusicalSymbols) xmlUCSIsMusicalSymbols __attribute((alias("xmlUCSIsMusicalSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsMusicalSymbols +extern __typeof (xmlUCSIsMusicalSymbols) xmlUCSIsMusicalSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMusicalSymbols xmlUCSIsMusicalSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsMyanmar +extern __typeof (xmlUCSIsMyanmar) xmlUCSIsMyanmar __attribute((alias("xmlUCSIsMyanmar__internal_alias"))); +#else +#ifndef xmlUCSIsMyanmar +extern __typeof (xmlUCSIsMyanmar) xmlUCSIsMyanmar__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsMyanmar xmlUCSIsMyanmar__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsNumberForms +extern __typeof (xmlUCSIsNumberForms) xmlUCSIsNumberForms __attribute((alias("xmlUCSIsNumberForms__internal_alias"))); +#else +#ifndef xmlUCSIsNumberForms +extern __typeof (xmlUCSIsNumberForms) xmlUCSIsNumberForms__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsNumberForms xmlUCSIsNumberForms__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsOgham +extern __typeof (xmlUCSIsOgham) xmlUCSIsOgham __attribute((alias("xmlUCSIsOgham__internal_alias"))); +#else +#ifndef xmlUCSIsOgham +extern __typeof (xmlUCSIsOgham) xmlUCSIsOgham__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsOgham xmlUCSIsOgham__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsOldItalic +extern __typeof (xmlUCSIsOldItalic) xmlUCSIsOldItalic __attribute((alias("xmlUCSIsOldItalic__internal_alias"))); +#else +#ifndef xmlUCSIsOldItalic +extern __typeof (xmlUCSIsOldItalic) xmlUCSIsOldItalic__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsOldItalic xmlUCSIsOldItalic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsOpticalCharacterRecognition +extern __typeof (xmlUCSIsOpticalCharacterRecognition) xmlUCSIsOpticalCharacterRecognition __attribute((alias("xmlUCSIsOpticalCharacterRecognition__internal_alias"))); +#else +#ifndef xmlUCSIsOpticalCharacterRecognition +extern __typeof (xmlUCSIsOpticalCharacterRecognition) xmlUCSIsOpticalCharacterRecognition__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsOpticalCharacterRecognition xmlUCSIsOpticalCharacterRecognition__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsOriya +extern __typeof (xmlUCSIsOriya) xmlUCSIsOriya __attribute((alias("xmlUCSIsOriya__internal_alias"))); +#else +#ifndef xmlUCSIsOriya +extern __typeof (xmlUCSIsOriya) xmlUCSIsOriya__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsOriya xmlUCSIsOriya__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsOsmanya +extern __typeof (xmlUCSIsOsmanya) xmlUCSIsOsmanya __attribute((alias("xmlUCSIsOsmanya__internal_alias"))); +#else +#ifndef xmlUCSIsOsmanya +extern __typeof (xmlUCSIsOsmanya) xmlUCSIsOsmanya__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsOsmanya xmlUCSIsOsmanya__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsPhoneticExtensions +extern __typeof (xmlUCSIsPhoneticExtensions) xmlUCSIsPhoneticExtensions __attribute((alias("xmlUCSIsPhoneticExtensions__internal_alias"))); +#else +#ifndef xmlUCSIsPhoneticExtensions +extern __typeof (xmlUCSIsPhoneticExtensions) xmlUCSIsPhoneticExtensions__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsPhoneticExtensions xmlUCSIsPhoneticExtensions__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsPrivateUse +extern __typeof (xmlUCSIsPrivateUse) xmlUCSIsPrivateUse __attribute((alias("xmlUCSIsPrivateUse__internal_alias"))); +#else +#ifndef xmlUCSIsPrivateUse +extern __typeof (xmlUCSIsPrivateUse) xmlUCSIsPrivateUse__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsPrivateUse xmlUCSIsPrivateUse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsPrivateUseArea +extern __typeof (xmlUCSIsPrivateUseArea) xmlUCSIsPrivateUseArea __attribute((alias("xmlUCSIsPrivateUseArea__internal_alias"))); +#else +#ifndef xmlUCSIsPrivateUseArea +extern __typeof (xmlUCSIsPrivateUseArea) xmlUCSIsPrivateUseArea__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsPrivateUseArea xmlUCSIsPrivateUseArea__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsRunic +extern __typeof (xmlUCSIsRunic) xmlUCSIsRunic __attribute((alias("xmlUCSIsRunic__internal_alias"))); +#else +#ifndef xmlUCSIsRunic +extern __typeof (xmlUCSIsRunic) xmlUCSIsRunic__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsRunic xmlUCSIsRunic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsShavian +extern __typeof (xmlUCSIsShavian) xmlUCSIsShavian __attribute((alias("xmlUCSIsShavian__internal_alias"))); +#else +#ifndef xmlUCSIsShavian +extern __typeof (xmlUCSIsShavian) xmlUCSIsShavian__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsShavian xmlUCSIsShavian__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSinhala +extern __typeof (xmlUCSIsSinhala) xmlUCSIsSinhala __attribute((alias("xmlUCSIsSinhala__internal_alias"))); +#else +#ifndef xmlUCSIsSinhala +extern __typeof (xmlUCSIsSinhala) xmlUCSIsSinhala__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSinhala xmlUCSIsSinhala__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSmallFormVariants +extern __typeof (xmlUCSIsSmallFormVariants) xmlUCSIsSmallFormVariants __attribute((alias("xmlUCSIsSmallFormVariants__internal_alias"))); +#else +#ifndef xmlUCSIsSmallFormVariants +extern __typeof (xmlUCSIsSmallFormVariants) xmlUCSIsSmallFormVariants__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSmallFormVariants xmlUCSIsSmallFormVariants__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSpacingModifierLetters +extern __typeof (xmlUCSIsSpacingModifierLetters) xmlUCSIsSpacingModifierLetters __attribute((alias("xmlUCSIsSpacingModifierLetters__internal_alias"))); +#else +#ifndef xmlUCSIsSpacingModifierLetters +extern __typeof (xmlUCSIsSpacingModifierLetters) xmlUCSIsSpacingModifierLetters__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSpacingModifierLetters xmlUCSIsSpacingModifierLetters__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSpecials +extern __typeof (xmlUCSIsSpecials) xmlUCSIsSpecials __attribute((alias("xmlUCSIsSpecials__internal_alias"))); +#else +#ifndef xmlUCSIsSpecials +extern __typeof (xmlUCSIsSpecials) xmlUCSIsSpecials__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSpecials xmlUCSIsSpecials__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSuperscriptsandSubscripts +extern __typeof (xmlUCSIsSuperscriptsandSubscripts) xmlUCSIsSuperscriptsandSubscripts __attribute((alias("xmlUCSIsSuperscriptsandSubscripts__internal_alias"))); +#else +#ifndef xmlUCSIsSuperscriptsandSubscripts +extern __typeof (xmlUCSIsSuperscriptsandSubscripts) xmlUCSIsSuperscriptsandSubscripts__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSuperscriptsandSubscripts xmlUCSIsSuperscriptsandSubscripts__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSupplementalArrowsA +extern __typeof (xmlUCSIsSupplementalArrowsA) xmlUCSIsSupplementalArrowsA __attribute((alias("xmlUCSIsSupplementalArrowsA__internal_alias"))); +#else +#ifndef xmlUCSIsSupplementalArrowsA +extern __typeof (xmlUCSIsSupplementalArrowsA) xmlUCSIsSupplementalArrowsA__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSupplementalArrowsA xmlUCSIsSupplementalArrowsA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSupplementalArrowsB +extern __typeof (xmlUCSIsSupplementalArrowsB) xmlUCSIsSupplementalArrowsB __attribute((alias("xmlUCSIsSupplementalArrowsB__internal_alias"))); +#else +#ifndef xmlUCSIsSupplementalArrowsB +extern __typeof (xmlUCSIsSupplementalArrowsB) xmlUCSIsSupplementalArrowsB__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSupplementalArrowsB xmlUCSIsSupplementalArrowsB__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSupplementalMathematicalOperators +extern __typeof (xmlUCSIsSupplementalMathematicalOperators) xmlUCSIsSupplementalMathematicalOperators __attribute((alias("xmlUCSIsSupplementalMathematicalOperators__internal_alias"))); +#else +#ifndef xmlUCSIsSupplementalMathematicalOperators +extern __typeof (xmlUCSIsSupplementalMathematicalOperators) xmlUCSIsSupplementalMathematicalOperators__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSupplementalMathematicalOperators xmlUCSIsSupplementalMathematicalOperators__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSupplementaryPrivateUseAreaA +extern __typeof (xmlUCSIsSupplementaryPrivateUseAreaA) xmlUCSIsSupplementaryPrivateUseAreaA __attribute((alias("xmlUCSIsSupplementaryPrivateUseAreaA__internal_alias"))); +#else +#ifndef xmlUCSIsSupplementaryPrivateUseAreaA +extern __typeof (xmlUCSIsSupplementaryPrivateUseAreaA) xmlUCSIsSupplementaryPrivateUseAreaA__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSupplementaryPrivateUseAreaA xmlUCSIsSupplementaryPrivateUseAreaA__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSupplementaryPrivateUseAreaB +extern __typeof (xmlUCSIsSupplementaryPrivateUseAreaB) xmlUCSIsSupplementaryPrivateUseAreaB __attribute((alias("xmlUCSIsSupplementaryPrivateUseAreaB__internal_alias"))); +#else +#ifndef xmlUCSIsSupplementaryPrivateUseAreaB +extern __typeof (xmlUCSIsSupplementaryPrivateUseAreaB) xmlUCSIsSupplementaryPrivateUseAreaB__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSupplementaryPrivateUseAreaB xmlUCSIsSupplementaryPrivateUseAreaB__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsSyriac +extern __typeof (xmlUCSIsSyriac) xmlUCSIsSyriac __attribute((alias("xmlUCSIsSyriac__internal_alias"))); +#else +#ifndef xmlUCSIsSyriac +extern __typeof (xmlUCSIsSyriac) xmlUCSIsSyriac__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsSyriac xmlUCSIsSyriac__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsTagalog +extern __typeof (xmlUCSIsTagalog) xmlUCSIsTagalog __attribute((alias("xmlUCSIsTagalog__internal_alias"))); +#else +#ifndef xmlUCSIsTagalog +extern __typeof (xmlUCSIsTagalog) xmlUCSIsTagalog__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsTagalog xmlUCSIsTagalog__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsTagbanwa +extern __typeof (xmlUCSIsTagbanwa) xmlUCSIsTagbanwa __attribute((alias("xmlUCSIsTagbanwa__internal_alias"))); +#else +#ifndef xmlUCSIsTagbanwa +extern __typeof (xmlUCSIsTagbanwa) xmlUCSIsTagbanwa__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsTagbanwa xmlUCSIsTagbanwa__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsTags +extern __typeof (xmlUCSIsTags) xmlUCSIsTags __attribute((alias("xmlUCSIsTags__internal_alias"))); +#else +#ifndef xmlUCSIsTags +extern __typeof (xmlUCSIsTags) xmlUCSIsTags__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsTags xmlUCSIsTags__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsTaiLe +extern __typeof (xmlUCSIsTaiLe) xmlUCSIsTaiLe __attribute((alias("xmlUCSIsTaiLe__internal_alias"))); +#else +#ifndef xmlUCSIsTaiLe +extern __typeof (xmlUCSIsTaiLe) xmlUCSIsTaiLe__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsTaiLe xmlUCSIsTaiLe__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsTaiXuanJingSymbols +extern __typeof (xmlUCSIsTaiXuanJingSymbols) xmlUCSIsTaiXuanJingSymbols __attribute((alias("xmlUCSIsTaiXuanJingSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsTaiXuanJingSymbols +extern __typeof (xmlUCSIsTaiXuanJingSymbols) xmlUCSIsTaiXuanJingSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsTaiXuanJingSymbols xmlUCSIsTaiXuanJingSymbols__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsTamil +extern __typeof (xmlUCSIsTamil) xmlUCSIsTamil __attribute((alias("xmlUCSIsTamil__internal_alias"))); +#else +#ifndef xmlUCSIsTamil +extern __typeof (xmlUCSIsTamil) xmlUCSIsTamil__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsTamil xmlUCSIsTamil__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsTelugu +extern __typeof (xmlUCSIsTelugu) xmlUCSIsTelugu __attribute((alias("xmlUCSIsTelugu__internal_alias"))); +#else +#ifndef xmlUCSIsTelugu +extern __typeof (xmlUCSIsTelugu) xmlUCSIsTelugu__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsTelugu xmlUCSIsTelugu__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsThaana +extern __typeof (xmlUCSIsThaana) xmlUCSIsThaana __attribute((alias("xmlUCSIsThaana__internal_alias"))); +#else +#ifndef xmlUCSIsThaana +extern __typeof (xmlUCSIsThaana) xmlUCSIsThaana__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsThaana xmlUCSIsThaana__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsThai +extern __typeof (xmlUCSIsThai) xmlUCSIsThai __attribute((alias("xmlUCSIsThai__internal_alias"))); +#else +#ifndef xmlUCSIsThai +extern __typeof (xmlUCSIsThai) xmlUCSIsThai__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsThai xmlUCSIsThai__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsTibetan +extern __typeof (xmlUCSIsTibetan) xmlUCSIsTibetan __attribute((alias("xmlUCSIsTibetan__internal_alias"))); +#else +#ifndef xmlUCSIsTibetan +extern __typeof (xmlUCSIsTibetan) xmlUCSIsTibetan__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsTibetan xmlUCSIsTibetan__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsUgaritic +extern __typeof (xmlUCSIsUgaritic) xmlUCSIsUgaritic __attribute((alias("xmlUCSIsUgaritic__internal_alias"))); +#else +#ifndef xmlUCSIsUgaritic +extern __typeof (xmlUCSIsUgaritic) xmlUCSIsUgaritic__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsUgaritic xmlUCSIsUgaritic__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsUnifiedCanadianAboriginalSyllabics +extern __typeof (xmlUCSIsUnifiedCanadianAboriginalSyllabics) xmlUCSIsUnifiedCanadianAboriginalSyllabics __attribute((alias("xmlUCSIsUnifiedCanadianAboriginalSyllabics__internal_alias"))); +#else +#ifndef xmlUCSIsUnifiedCanadianAboriginalSyllabics +extern __typeof (xmlUCSIsUnifiedCanadianAboriginalSyllabics) xmlUCSIsUnifiedCanadianAboriginalSyllabics__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsUnifiedCanadianAboriginalSyllabics xmlUCSIsUnifiedCanadianAboriginalSyllabics__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsVariationSelectors +extern __typeof (xmlUCSIsVariationSelectors) xmlUCSIsVariationSelectors __attribute((alias("xmlUCSIsVariationSelectors__internal_alias"))); +#else +#ifndef xmlUCSIsVariationSelectors +extern __typeof (xmlUCSIsVariationSelectors) xmlUCSIsVariationSelectors__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsVariationSelectors xmlUCSIsVariationSelectors__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsVariationSelectorsSupplement +extern __typeof (xmlUCSIsVariationSelectorsSupplement) xmlUCSIsVariationSelectorsSupplement __attribute((alias("xmlUCSIsVariationSelectorsSupplement__internal_alias"))); +#else +#ifndef xmlUCSIsVariationSelectorsSupplement +extern __typeof (xmlUCSIsVariationSelectorsSupplement) xmlUCSIsVariationSelectorsSupplement__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsVariationSelectorsSupplement xmlUCSIsVariationSelectorsSupplement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsYiRadicals +extern __typeof (xmlUCSIsYiRadicals) xmlUCSIsYiRadicals __attribute((alias("xmlUCSIsYiRadicals__internal_alias"))); +#else +#ifndef xmlUCSIsYiRadicals +extern __typeof (xmlUCSIsYiRadicals) xmlUCSIsYiRadicals__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsYiRadicals xmlUCSIsYiRadicals__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsYiSyllables +extern __typeof (xmlUCSIsYiSyllables) xmlUCSIsYiSyllables __attribute((alias("xmlUCSIsYiSyllables__internal_alias"))); +#else +#ifndef xmlUCSIsYiSyllables +extern __typeof (xmlUCSIsYiSyllables) xmlUCSIsYiSyllables__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsYiSyllables xmlUCSIsYiSyllables__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_UNICODE_ENABLED) +#ifdef bottom_xmlunicode +#undef xmlUCSIsYijingHexagramSymbols +extern __typeof (xmlUCSIsYijingHexagramSymbols) xmlUCSIsYijingHexagramSymbols __attribute((alias("xmlUCSIsYijingHexagramSymbols__internal_alias"))); +#else +#ifndef xmlUCSIsYijingHexagramSymbols +extern __typeof (xmlUCSIsYijingHexagramSymbols) xmlUCSIsYijingHexagramSymbols__internal_alias __attribute((visibility("hidden"))); +#define xmlUCSIsYijingHexagramSymbols xmlUCSIsYijingHexagramSymbols__internal_alias +#endif +#endif +#endif + +#ifdef bottom_uri +#undef xmlURIEscape +extern __typeof (xmlURIEscape) xmlURIEscape __attribute((alias("xmlURIEscape__internal_alias"))); +#else +#ifndef xmlURIEscape +extern __typeof (xmlURIEscape) xmlURIEscape__internal_alias __attribute((visibility("hidden"))); +#define xmlURIEscape xmlURIEscape__internal_alias +#endif +#endif + +#ifdef bottom_uri +#undef xmlURIEscapeStr +extern __typeof (xmlURIEscapeStr) xmlURIEscapeStr __attribute((alias("xmlURIEscapeStr__internal_alias"))); +#else +#ifndef xmlURIEscapeStr +extern __typeof (xmlURIEscapeStr) xmlURIEscapeStr__internal_alias __attribute((visibility("hidden"))); +#define xmlURIEscapeStr xmlURIEscapeStr__internal_alias +#endif +#endif + +#ifdef bottom_uri +#undef xmlURIUnescapeString +extern __typeof (xmlURIUnescapeString) xmlURIUnescapeString __attribute((alias("xmlURIUnescapeString__internal_alias"))); +#else +#ifndef xmlURIUnescapeString +extern __typeof (xmlURIUnescapeString) xmlURIUnescapeString__internal_alias __attribute((visibility("hidden"))); +#define xmlURIUnescapeString xmlURIUnescapeString__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlUTF8Charcmp +extern __typeof (xmlUTF8Charcmp) xmlUTF8Charcmp __attribute((alias("xmlUTF8Charcmp__internal_alias"))); +#else +#ifndef xmlUTF8Charcmp +extern __typeof (xmlUTF8Charcmp) xmlUTF8Charcmp__internal_alias __attribute((visibility("hidden"))); +#define xmlUTF8Charcmp xmlUTF8Charcmp__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlUTF8Size +extern __typeof (xmlUTF8Size) xmlUTF8Size __attribute((alias("xmlUTF8Size__internal_alias"))); +#else +#ifndef xmlUTF8Size +extern __typeof (xmlUTF8Size) xmlUTF8Size__internal_alias __attribute((visibility("hidden"))); +#define xmlUTF8Size xmlUTF8Size__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlUTF8Strlen +extern __typeof (xmlUTF8Strlen) xmlUTF8Strlen __attribute((alias("xmlUTF8Strlen__internal_alias"))); +#else +#ifndef xmlUTF8Strlen +extern __typeof (xmlUTF8Strlen) xmlUTF8Strlen__internal_alias __attribute((visibility("hidden"))); +#define xmlUTF8Strlen xmlUTF8Strlen__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlUTF8Strloc +extern __typeof (xmlUTF8Strloc) xmlUTF8Strloc __attribute((alias("xmlUTF8Strloc__internal_alias"))); +#else +#ifndef xmlUTF8Strloc +extern __typeof (xmlUTF8Strloc) xmlUTF8Strloc__internal_alias __attribute((visibility("hidden"))); +#define xmlUTF8Strloc xmlUTF8Strloc__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlUTF8Strndup +extern __typeof (xmlUTF8Strndup) xmlUTF8Strndup __attribute((alias("xmlUTF8Strndup__internal_alias"))); +#else +#ifndef xmlUTF8Strndup +extern __typeof (xmlUTF8Strndup) xmlUTF8Strndup__internal_alias __attribute((visibility("hidden"))); +#define xmlUTF8Strndup xmlUTF8Strndup__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlUTF8Strpos +extern __typeof (xmlUTF8Strpos) xmlUTF8Strpos __attribute((alias("xmlUTF8Strpos__internal_alias"))); +#else +#ifndef xmlUTF8Strpos +extern __typeof (xmlUTF8Strpos) xmlUTF8Strpos__internal_alias __attribute((visibility("hidden"))); +#define xmlUTF8Strpos xmlUTF8Strpos__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlUTF8Strsize +extern __typeof (xmlUTF8Strsize) xmlUTF8Strsize __attribute((alias("xmlUTF8Strsize__internal_alias"))); +#else +#ifndef xmlUTF8Strsize +extern __typeof (xmlUTF8Strsize) xmlUTF8Strsize__internal_alias __attribute((visibility("hidden"))); +#define xmlUTF8Strsize xmlUTF8Strsize__internal_alias +#endif +#endif + +#ifdef bottom_xmlstring +#undef xmlUTF8Strsub +extern __typeof (xmlUTF8Strsub) xmlUTF8Strsub __attribute((alias("xmlUTF8Strsub__internal_alias"))); +#else +#ifndef xmlUTF8Strsub +extern __typeof (xmlUTF8Strsub) xmlUTF8Strsub__internal_alias __attribute((visibility("hidden"))); +#define xmlUTF8Strsub xmlUTF8Strsub__internal_alias +#endif +#endif + +#ifdef bottom_tree +#undef xmlUnlinkNode +extern __typeof (xmlUnlinkNode) xmlUnlinkNode __attribute((alias("xmlUnlinkNode__internal_alias"))); +#else +#ifndef xmlUnlinkNode +extern __typeof (xmlUnlinkNode) xmlUnlinkNode__internal_alias __attribute((visibility("hidden"))); +#define xmlUnlinkNode xmlUnlinkNode__internal_alias +#endif +#endif + +#ifdef bottom_threads +#undef xmlUnlockLibrary +extern __typeof (xmlUnlockLibrary) xmlUnlockLibrary __attribute((alias("xmlUnlockLibrary__internal_alias"))); +#else +#ifndef xmlUnlockLibrary +extern __typeof (xmlUnlockLibrary) xmlUnlockLibrary__internal_alias __attribute((visibility("hidden"))); +#define xmlUnlockLibrary xmlUnlockLibrary__internal_alias +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlUnsetNsProp +extern __typeof (xmlUnsetNsProp) xmlUnsetNsProp __attribute((alias("xmlUnsetNsProp__internal_alias"))); +#else +#ifndef xmlUnsetNsProp +extern __typeof (xmlUnsetNsProp) xmlUnsetNsProp__internal_alias __attribute((visibility("hidden"))); +#define xmlUnsetNsProp xmlUnsetNsProp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlUnsetProp +extern __typeof (xmlUnsetProp) xmlUnsetProp __attribute((alias("xmlUnsetProp__internal_alias"))); +#else +#ifndef xmlUnsetProp +extern __typeof (xmlUnsetProp) xmlUnsetProp__internal_alias __attribute((visibility("hidden"))); +#define xmlUnsetProp xmlUnsetProp__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_valid +#undef xmlValidBuildContentModel +extern __typeof (xmlValidBuildContentModel) xmlValidBuildContentModel __attribute((alias("xmlValidBuildContentModel__internal_alias"))); +#else +#ifndef xmlValidBuildContentModel +extern __typeof (xmlValidBuildContentModel) xmlValidBuildContentModel__internal_alias __attribute((visibility("hidden"))); +#define xmlValidBuildContentModel xmlValidBuildContentModel__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidCtxtNormalizeAttributeValue +extern __typeof (xmlValidCtxtNormalizeAttributeValue) xmlValidCtxtNormalizeAttributeValue __attribute((alias("xmlValidCtxtNormalizeAttributeValue__internal_alias"))); +#else +#ifndef xmlValidCtxtNormalizeAttributeValue +extern __typeof (xmlValidCtxtNormalizeAttributeValue) xmlValidCtxtNormalizeAttributeValue__internal_alias __attribute((visibility("hidden"))); +#define xmlValidCtxtNormalizeAttributeValue xmlValidCtxtNormalizeAttributeValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidGetPotentialChildren +extern __typeof (xmlValidGetPotentialChildren) xmlValidGetPotentialChildren __attribute((alias("xmlValidGetPotentialChildren__internal_alias"))); +#else +#ifndef xmlValidGetPotentialChildren +extern __typeof (xmlValidGetPotentialChildren) xmlValidGetPotentialChildren__internal_alias __attribute((visibility("hidden"))); +#define xmlValidGetPotentialChildren xmlValidGetPotentialChildren__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidGetValidElements +extern __typeof (xmlValidGetValidElements) xmlValidGetValidElements __attribute((alias("xmlValidGetValidElements__internal_alias"))); +#else +#ifndef xmlValidGetValidElements +extern __typeof (xmlValidGetValidElements) xmlValidGetValidElements__internal_alias __attribute((visibility("hidden"))); +#define xmlValidGetValidElements xmlValidGetValidElements__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidNormalizeAttributeValue +extern __typeof (xmlValidNormalizeAttributeValue) xmlValidNormalizeAttributeValue __attribute((alias("xmlValidNormalizeAttributeValue__internal_alias"))); +#else +#ifndef xmlValidNormalizeAttributeValue +extern __typeof (xmlValidNormalizeAttributeValue) xmlValidNormalizeAttributeValue__internal_alias __attribute((visibility("hidden"))); +#define xmlValidNormalizeAttributeValue xmlValidNormalizeAttributeValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateAttributeDecl +extern __typeof (xmlValidateAttributeDecl) xmlValidateAttributeDecl __attribute((alias("xmlValidateAttributeDecl__internal_alias"))); +#else +#ifndef xmlValidateAttributeDecl +extern __typeof (xmlValidateAttributeDecl) xmlValidateAttributeDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateAttributeDecl xmlValidateAttributeDecl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateAttributeValue +extern __typeof (xmlValidateAttributeValue) xmlValidateAttributeValue __attribute((alias("xmlValidateAttributeValue__internal_alias"))); +#else +#ifndef xmlValidateAttributeValue +extern __typeof (xmlValidateAttributeValue) xmlValidateAttributeValue__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateAttributeValue xmlValidateAttributeValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateDocument +extern __typeof (xmlValidateDocument) xmlValidateDocument __attribute((alias("xmlValidateDocument__internal_alias"))); +#else +#ifndef xmlValidateDocument +extern __typeof (xmlValidateDocument) xmlValidateDocument__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateDocument xmlValidateDocument__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateDocumentFinal +extern __typeof (xmlValidateDocumentFinal) xmlValidateDocumentFinal __attribute((alias("xmlValidateDocumentFinal__internal_alias"))); +#else +#ifndef xmlValidateDocumentFinal +extern __typeof (xmlValidateDocumentFinal) xmlValidateDocumentFinal__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateDocumentFinal xmlValidateDocumentFinal__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateDtd +extern __typeof (xmlValidateDtd) xmlValidateDtd __attribute((alias("xmlValidateDtd__internal_alias"))); +#else +#ifndef xmlValidateDtd +extern __typeof (xmlValidateDtd) xmlValidateDtd__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateDtd xmlValidateDtd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateDtdFinal +extern __typeof (xmlValidateDtdFinal) xmlValidateDtdFinal __attribute((alias("xmlValidateDtdFinal__internal_alias"))); +#else +#ifndef xmlValidateDtdFinal +extern __typeof (xmlValidateDtdFinal) xmlValidateDtdFinal__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateDtdFinal xmlValidateDtdFinal__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateElement +extern __typeof (xmlValidateElement) xmlValidateElement __attribute((alias("xmlValidateElement__internal_alias"))); +#else +#ifndef xmlValidateElement +extern __typeof (xmlValidateElement) xmlValidateElement__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateElement xmlValidateElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateElementDecl +extern __typeof (xmlValidateElementDecl) xmlValidateElementDecl __attribute((alias("xmlValidateElementDecl__internal_alias"))); +#else +#ifndef xmlValidateElementDecl +extern __typeof (xmlValidateElementDecl) xmlValidateElementDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateElementDecl xmlValidateElementDecl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED) +#ifdef bottom_tree +#undef xmlValidateNCName +extern __typeof (xmlValidateNCName) xmlValidateNCName __attribute((alias("xmlValidateNCName__internal_alias"))); +#else +#ifndef xmlValidateNCName +extern __typeof (xmlValidateNCName) xmlValidateNCName__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateNCName xmlValidateNCName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlValidateNMToken +extern __typeof (xmlValidateNMToken) xmlValidateNMToken __attribute((alias("xmlValidateNMToken__internal_alias"))); +#else +#ifndef xmlValidateNMToken +extern __typeof (xmlValidateNMToken) xmlValidateNMToken__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateNMToken xmlValidateNMToken__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlValidateName +extern __typeof (xmlValidateName) xmlValidateName __attribute((alias("xmlValidateName__internal_alias"))); +#else +#ifndef xmlValidateName +extern __typeof (xmlValidateName) xmlValidateName__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateName xmlValidateName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateNameValue +extern __typeof (xmlValidateNameValue) xmlValidateNameValue __attribute((alias("xmlValidateNameValue__internal_alias"))); +#else +#ifndef xmlValidateNameValue +extern __typeof (xmlValidateNameValue) xmlValidateNameValue__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateNameValue xmlValidateNameValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateNamesValue +extern __typeof (xmlValidateNamesValue) xmlValidateNamesValue __attribute((alias("xmlValidateNamesValue__internal_alias"))); +#else +#ifndef xmlValidateNamesValue +extern __typeof (xmlValidateNamesValue) xmlValidateNamesValue__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateNamesValue xmlValidateNamesValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateNmtokenValue +extern __typeof (xmlValidateNmtokenValue) xmlValidateNmtokenValue __attribute((alias("xmlValidateNmtokenValue__internal_alias"))); +#else +#ifndef xmlValidateNmtokenValue +extern __typeof (xmlValidateNmtokenValue) xmlValidateNmtokenValue__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateNmtokenValue xmlValidateNmtokenValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateNmtokensValue +extern __typeof (xmlValidateNmtokensValue) xmlValidateNmtokensValue __attribute((alias("xmlValidateNmtokensValue__internal_alias"))); +#else +#ifndef xmlValidateNmtokensValue +extern __typeof (xmlValidateNmtokensValue) xmlValidateNmtokensValue__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateNmtokensValue xmlValidateNmtokensValue__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateNotationDecl +extern __typeof (xmlValidateNotationDecl) xmlValidateNotationDecl __attribute((alias("xmlValidateNotationDecl__internal_alias"))); +#else +#ifndef xmlValidateNotationDecl +extern __typeof (xmlValidateNotationDecl) xmlValidateNotationDecl__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateNotationDecl xmlValidateNotationDecl__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_valid +#undef xmlValidateNotationUse +extern __typeof (xmlValidateNotationUse) xmlValidateNotationUse __attribute((alias("xmlValidateNotationUse__internal_alias"))); +#else +#ifndef xmlValidateNotationUse +extern __typeof (xmlValidateNotationUse) xmlValidateNotationUse__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateNotationUse xmlValidateNotationUse__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateOneAttribute +extern __typeof (xmlValidateOneAttribute) xmlValidateOneAttribute __attribute((alias("xmlValidateOneAttribute__internal_alias"))); +#else +#ifndef xmlValidateOneAttribute +extern __typeof (xmlValidateOneAttribute) xmlValidateOneAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateOneAttribute xmlValidateOneAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateOneElement +extern __typeof (xmlValidateOneElement) xmlValidateOneElement __attribute((alias("xmlValidateOneElement__internal_alias"))); +#else +#ifndef xmlValidateOneElement +extern __typeof (xmlValidateOneElement) xmlValidateOneElement__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateOneElement xmlValidateOneElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateOneNamespace +extern __typeof (xmlValidateOneNamespace) xmlValidateOneNamespace __attribute((alias("xmlValidateOneNamespace__internal_alias"))); +#else +#ifndef xmlValidateOneNamespace +extern __typeof (xmlValidateOneNamespace) xmlValidateOneNamespace__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateOneNamespace xmlValidateOneNamespace__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_valid +#undef xmlValidatePopElement +extern __typeof (xmlValidatePopElement) xmlValidatePopElement __attribute((alias("xmlValidatePopElement__internal_alias"))); +#else +#ifndef xmlValidatePopElement +extern __typeof (xmlValidatePopElement) xmlValidatePopElement__internal_alias __attribute((visibility("hidden"))); +#define xmlValidatePopElement xmlValidatePopElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_valid +#undef xmlValidatePushCData +extern __typeof (xmlValidatePushCData) xmlValidatePushCData __attribute((alias("xmlValidatePushCData__internal_alias"))); +#else +#ifndef xmlValidatePushCData +extern __typeof (xmlValidatePushCData) xmlValidatePushCData__internal_alias __attribute((visibility("hidden"))); +#define xmlValidatePushCData xmlValidatePushCData__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) +#ifdef bottom_valid +#undef xmlValidatePushElement +extern __typeof (xmlValidatePushElement) xmlValidatePushElement __attribute((alias("xmlValidatePushElement__internal_alias"))); +#else +#ifndef xmlValidatePushElement +extern __typeof (xmlValidatePushElement) xmlValidatePushElement__internal_alias __attribute((visibility("hidden"))); +#define xmlValidatePushElement xmlValidatePushElement__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_tree +#undef xmlValidateQName +extern __typeof (xmlValidateQName) xmlValidateQName __attribute((alias("xmlValidateQName__internal_alias"))); +#else +#ifndef xmlValidateQName +extern __typeof (xmlValidateQName) xmlValidateQName__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateQName xmlValidateQName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_VALID_ENABLED) +#ifdef bottom_valid +#undef xmlValidateRoot +extern __typeof (xmlValidateRoot) xmlValidateRoot __attribute((alias("xmlValidateRoot__internal_alias"))); +#else +#ifndef xmlValidateRoot +extern __typeof (xmlValidateRoot) xmlValidateRoot__internal_alias __attribute((visibility("hidden"))); +#define xmlValidateRoot xmlValidateRoot__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeFreeContext +extern __typeof (xmlXIncludeFreeContext) xmlXIncludeFreeContext __attribute((alias("xmlXIncludeFreeContext__internal_alias"))); +#else +#ifndef xmlXIncludeFreeContext +extern __typeof (xmlXIncludeFreeContext) xmlXIncludeFreeContext__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeFreeContext xmlXIncludeFreeContext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeNewContext +extern __typeof (xmlXIncludeNewContext) xmlXIncludeNewContext __attribute((alias("xmlXIncludeNewContext__internal_alias"))); +#else +#ifndef xmlXIncludeNewContext +extern __typeof (xmlXIncludeNewContext) xmlXIncludeNewContext__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeNewContext xmlXIncludeNewContext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeProcess +extern __typeof (xmlXIncludeProcess) xmlXIncludeProcess __attribute((alias("xmlXIncludeProcess__internal_alias"))); +#else +#ifndef xmlXIncludeProcess +extern __typeof (xmlXIncludeProcess) xmlXIncludeProcess__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeProcess xmlXIncludeProcess__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeProcessFlags +extern __typeof (xmlXIncludeProcessFlags) xmlXIncludeProcessFlags __attribute((alias("xmlXIncludeProcessFlags__internal_alias"))); +#else +#ifndef xmlXIncludeProcessFlags +extern __typeof (xmlXIncludeProcessFlags) xmlXIncludeProcessFlags__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeProcessFlags xmlXIncludeProcessFlags__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeProcessFlagsData +extern __typeof (xmlXIncludeProcessFlagsData) xmlXIncludeProcessFlagsData __attribute((alias("xmlXIncludeProcessFlagsData__internal_alias"))); +#else +#ifndef xmlXIncludeProcessFlagsData +extern __typeof (xmlXIncludeProcessFlagsData) xmlXIncludeProcessFlagsData__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeProcessFlagsData xmlXIncludeProcessFlagsData__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeProcessNode +extern __typeof (xmlXIncludeProcessNode) xmlXIncludeProcessNode __attribute((alias("xmlXIncludeProcessNode__internal_alias"))); +#else +#ifndef xmlXIncludeProcessNode +extern __typeof (xmlXIncludeProcessNode) xmlXIncludeProcessNode__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeProcessNode xmlXIncludeProcessNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeProcessTree +extern __typeof (xmlXIncludeProcessTree) xmlXIncludeProcessTree __attribute((alias("xmlXIncludeProcessTree__internal_alias"))); +#else +#ifndef xmlXIncludeProcessTree +extern __typeof (xmlXIncludeProcessTree) xmlXIncludeProcessTree__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeProcessTree xmlXIncludeProcessTree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeProcessTreeFlags +extern __typeof (xmlXIncludeProcessTreeFlags) xmlXIncludeProcessTreeFlags __attribute((alias("xmlXIncludeProcessTreeFlags__internal_alias"))); +#else +#ifndef xmlXIncludeProcessTreeFlags +extern __typeof (xmlXIncludeProcessTreeFlags) xmlXIncludeProcessTreeFlags__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeProcessTreeFlags xmlXIncludeProcessTreeFlags__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeProcessTreeFlagsData +extern __typeof (xmlXIncludeProcessTreeFlagsData) xmlXIncludeProcessTreeFlagsData __attribute((alias("xmlXIncludeProcessTreeFlagsData__internal_alias"))); +#else +#ifndef xmlXIncludeProcessTreeFlagsData +extern __typeof (xmlXIncludeProcessTreeFlagsData) xmlXIncludeProcessTreeFlagsData__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeProcessTreeFlagsData xmlXIncludeProcessTreeFlagsData__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XINCLUDE_ENABLED) +#ifdef bottom_xinclude +#undef xmlXIncludeSetFlags +extern __typeof (xmlXIncludeSetFlags) xmlXIncludeSetFlags __attribute((alias("xmlXIncludeSetFlags__internal_alias"))); +#else +#ifndef xmlXIncludeSetFlags +extern __typeof (xmlXIncludeSetFlags) xmlXIncludeSetFlags__internal_alias __attribute((visibility("hidden"))); +#define xmlXIncludeSetFlags xmlXIncludeSetFlags__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathAddValues +extern __typeof (xmlXPathAddValues) xmlXPathAddValues __attribute((alias("xmlXPathAddValues__internal_alias"))); +#else +#ifndef xmlXPathAddValues +extern __typeof (xmlXPathAddValues) xmlXPathAddValues__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathAddValues xmlXPathAddValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathBooleanFunction +extern __typeof (xmlXPathBooleanFunction) xmlXPathBooleanFunction __attribute((alias("xmlXPathBooleanFunction__internal_alias"))); +#else +#ifndef xmlXPathBooleanFunction +extern __typeof (xmlXPathBooleanFunction) xmlXPathBooleanFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathBooleanFunction xmlXPathBooleanFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastBooleanToNumber +extern __typeof (xmlXPathCastBooleanToNumber) xmlXPathCastBooleanToNumber __attribute((alias("xmlXPathCastBooleanToNumber__internal_alias"))); +#else +#ifndef xmlXPathCastBooleanToNumber +extern __typeof (xmlXPathCastBooleanToNumber) xmlXPathCastBooleanToNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastBooleanToNumber xmlXPathCastBooleanToNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastBooleanToString +extern __typeof (xmlXPathCastBooleanToString) xmlXPathCastBooleanToString __attribute((alias("xmlXPathCastBooleanToString__internal_alias"))); +#else +#ifndef xmlXPathCastBooleanToString +extern __typeof (xmlXPathCastBooleanToString) xmlXPathCastBooleanToString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastBooleanToString xmlXPathCastBooleanToString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastNodeSetToBoolean +extern __typeof (xmlXPathCastNodeSetToBoolean) xmlXPathCastNodeSetToBoolean __attribute((alias("xmlXPathCastNodeSetToBoolean__internal_alias"))); +#else +#ifndef xmlXPathCastNodeSetToBoolean +extern __typeof (xmlXPathCastNodeSetToBoolean) xmlXPathCastNodeSetToBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastNodeSetToBoolean xmlXPathCastNodeSetToBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastNodeSetToNumber +extern __typeof (xmlXPathCastNodeSetToNumber) xmlXPathCastNodeSetToNumber __attribute((alias("xmlXPathCastNodeSetToNumber__internal_alias"))); +#else +#ifndef xmlXPathCastNodeSetToNumber +extern __typeof (xmlXPathCastNodeSetToNumber) xmlXPathCastNodeSetToNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastNodeSetToNumber xmlXPathCastNodeSetToNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastNodeSetToString +extern __typeof (xmlXPathCastNodeSetToString) xmlXPathCastNodeSetToString __attribute((alias("xmlXPathCastNodeSetToString__internal_alias"))); +#else +#ifndef xmlXPathCastNodeSetToString +extern __typeof (xmlXPathCastNodeSetToString) xmlXPathCastNodeSetToString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastNodeSetToString xmlXPathCastNodeSetToString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastNodeToNumber +extern __typeof (xmlXPathCastNodeToNumber) xmlXPathCastNodeToNumber __attribute((alias("xmlXPathCastNodeToNumber__internal_alias"))); +#else +#ifndef xmlXPathCastNodeToNumber +extern __typeof (xmlXPathCastNodeToNumber) xmlXPathCastNodeToNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastNodeToNumber xmlXPathCastNodeToNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastNodeToString +extern __typeof (xmlXPathCastNodeToString) xmlXPathCastNodeToString __attribute((alias("xmlXPathCastNodeToString__internal_alias"))); +#else +#ifndef xmlXPathCastNodeToString +extern __typeof (xmlXPathCastNodeToString) xmlXPathCastNodeToString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastNodeToString xmlXPathCastNodeToString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastNumberToBoolean +extern __typeof (xmlXPathCastNumberToBoolean) xmlXPathCastNumberToBoolean __attribute((alias("xmlXPathCastNumberToBoolean__internal_alias"))); +#else +#ifndef xmlXPathCastNumberToBoolean +extern __typeof (xmlXPathCastNumberToBoolean) xmlXPathCastNumberToBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastNumberToBoolean xmlXPathCastNumberToBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastNumberToString +extern __typeof (xmlXPathCastNumberToString) xmlXPathCastNumberToString __attribute((alias("xmlXPathCastNumberToString__internal_alias"))); +#else +#ifndef xmlXPathCastNumberToString +extern __typeof (xmlXPathCastNumberToString) xmlXPathCastNumberToString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastNumberToString xmlXPathCastNumberToString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastStringToBoolean +extern __typeof (xmlXPathCastStringToBoolean) xmlXPathCastStringToBoolean __attribute((alias("xmlXPathCastStringToBoolean__internal_alias"))); +#else +#ifndef xmlXPathCastStringToBoolean +extern __typeof (xmlXPathCastStringToBoolean) xmlXPathCastStringToBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastStringToBoolean xmlXPathCastStringToBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastStringToNumber +extern __typeof (xmlXPathCastStringToNumber) xmlXPathCastStringToNumber __attribute((alias("xmlXPathCastStringToNumber__internal_alias"))); +#else +#ifndef xmlXPathCastStringToNumber +extern __typeof (xmlXPathCastStringToNumber) xmlXPathCastStringToNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastStringToNumber xmlXPathCastStringToNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastToBoolean +extern __typeof (xmlXPathCastToBoolean) xmlXPathCastToBoolean __attribute((alias("xmlXPathCastToBoolean__internal_alias"))); +#else +#ifndef xmlXPathCastToBoolean +extern __typeof (xmlXPathCastToBoolean) xmlXPathCastToBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastToBoolean xmlXPathCastToBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastToNumber +extern __typeof (xmlXPathCastToNumber) xmlXPathCastToNumber __attribute((alias("xmlXPathCastToNumber__internal_alias"))); +#else +#ifndef xmlXPathCastToNumber +extern __typeof (xmlXPathCastToNumber) xmlXPathCastToNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastToNumber xmlXPathCastToNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCastToString +extern __typeof (xmlXPathCastToString) xmlXPathCastToString __attribute((alias("xmlXPathCastToString__internal_alias"))); +#else +#ifndef xmlXPathCastToString +extern __typeof (xmlXPathCastToString) xmlXPathCastToString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCastToString xmlXPathCastToString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCeilingFunction +extern __typeof (xmlXPathCeilingFunction) xmlXPathCeilingFunction __attribute((alias("xmlXPathCeilingFunction__internal_alias"))); +#else +#ifndef xmlXPathCeilingFunction +extern __typeof (xmlXPathCeilingFunction) xmlXPathCeilingFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCeilingFunction xmlXPathCeilingFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCmpNodes +extern __typeof (xmlXPathCmpNodes) xmlXPathCmpNodes __attribute((alias("xmlXPathCmpNodes__internal_alias"))); +#else +#ifndef xmlXPathCmpNodes +extern __typeof (xmlXPathCmpNodes) xmlXPathCmpNodes__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCmpNodes xmlXPathCmpNodes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCompareValues +extern __typeof (xmlXPathCompareValues) xmlXPathCompareValues __attribute((alias("xmlXPathCompareValues__internal_alias"))); +#else +#ifndef xmlXPathCompareValues +extern __typeof (xmlXPathCompareValues) xmlXPathCompareValues__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCompareValues xmlXPathCompareValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCompile +extern __typeof (xmlXPathCompile) xmlXPathCompile __attribute((alias("xmlXPathCompile__internal_alias"))); +#else +#ifndef xmlXPathCompile +extern __typeof (xmlXPathCompile) xmlXPathCompile__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCompile xmlXPathCompile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCompiledEval +extern __typeof (xmlXPathCompiledEval) xmlXPathCompiledEval __attribute((alias("xmlXPathCompiledEval__internal_alias"))); +#else +#ifndef xmlXPathCompiledEval +extern __typeof (xmlXPathCompiledEval) xmlXPathCompiledEval__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCompiledEval xmlXPathCompiledEval__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCompiledEvalToBoolean +extern __typeof (xmlXPathCompiledEvalToBoolean) xmlXPathCompiledEvalToBoolean __attribute((alias("xmlXPathCompiledEvalToBoolean__internal_alias"))); +#else +#ifndef xmlXPathCompiledEvalToBoolean +extern __typeof (xmlXPathCompiledEvalToBoolean) xmlXPathCompiledEvalToBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCompiledEvalToBoolean xmlXPathCompiledEvalToBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathConcatFunction +extern __typeof (xmlXPathConcatFunction) xmlXPathConcatFunction __attribute((alias("xmlXPathConcatFunction__internal_alias"))); +#else +#ifndef xmlXPathConcatFunction +extern __typeof (xmlXPathConcatFunction) xmlXPathConcatFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathConcatFunction xmlXPathConcatFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathContainsFunction +extern __typeof (xmlXPathContainsFunction) xmlXPathContainsFunction __attribute((alias("xmlXPathContainsFunction__internal_alias"))); +#else +#ifndef xmlXPathContainsFunction +extern __typeof (xmlXPathContainsFunction) xmlXPathContainsFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathContainsFunction xmlXPathContainsFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathContextSetCache +extern __typeof (xmlXPathContextSetCache) xmlXPathContextSetCache __attribute((alias("xmlXPathContextSetCache__internal_alias"))); +#else +#ifndef xmlXPathContextSetCache +extern __typeof (xmlXPathContextSetCache) xmlXPathContextSetCache__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathContextSetCache xmlXPathContextSetCache__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathConvertBoolean +extern __typeof (xmlXPathConvertBoolean) xmlXPathConvertBoolean __attribute((alias("xmlXPathConvertBoolean__internal_alias"))); +#else +#ifndef xmlXPathConvertBoolean +extern __typeof (xmlXPathConvertBoolean) xmlXPathConvertBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathConvertBoolean xmlXPathConvertBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathConvertNumber +extern __typeof (xmlXPathConvertNumber) xmlXPathConvertNumber __attribute((alias("xmlXPathConvertNumber__internal_alias"))); +#else +#ifndef xmlXPathConvertNumber +extern __typeof (xmlXPathConvertNumber) xmlXPathConvertNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathConvertNumber xmlXPathConvertNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathConvertString +extern __typeof (xmlXPathConvertString) xmlXPathConvertString __attribute((alias("xmlXPathConvertString__internal_alias"))); +#else +#ifndef xmlXPathConvertString +extern __typeof (xmlXPathConvertString) xmlXPathConvertString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathConvertString xmlXPathConvertString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCountFunction +extern __typeof (xmlXPathCountFunction) xmlXPathCountFunction __attribute((alias("xmlXPathCountFunction__internal_alias"))); +#else +#ifndef xmlXPathCountFunction +extern __typeof (xmlXPathCountFunction) xmlXPathCountFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCountFunction xmlXPathCountFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathCtxtCompile +extern __typeof (xmlXPathCtxtCompile) xmlXPathCtxtCompile __attribute((alias("xmlXPathCtxtCompile__internal_alias"))); +#else +#ifndef xmlXPathCtxtCompile +extern __typeof (xmlXPathCtxtCompile) xmlXPathCtxtCompile__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathCtxtCompile xmlXPathCtxtCompile__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathDebugDumpCompExpr +extern __typeof (xmlXPathDebugDumpCompExpr) xmlXPathDebugDumpCompExpr __attribute((alias("xmlXPathDebugDumpCompExpr__internal_alias"))); +#else +#ifndef xmlXPathDebugDumpCompExpr +extern __typeof (xmlXPathDebugDumpCompExpr) xmlXPathDebugDumpCompExpr__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathDebugDumpCompExpr xmlXPathDebugDumpCompExpr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_DEBUG_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathDebugDumpObject +extern __typeof (xmlXPathDebugDumpObject) xmlXPathDebugDumpObject __attribute((alias("xmlXPathDebugDumpObject__internal_alias"))); +#else +#ifndef xmlXPathDebugDumpObject +extern __typeof (xmlXPathDebugDumpObject) xmlXPathDebugDumpObject__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathDebugDumpObject xmlXPathDebugDumpObject__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathDifference +extern __typeof (xmlXPathDifference) xmlXPathDifference __attribute((alias("xmlXPathDifference__internal_alias"))); +#else +#ifndef xmlXPathDifference +extern __typeof (xmlXPathDifference) xmlXPathDifference__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathDifference xmlXPathDifference__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathDistinct +extern __typeof (xmlXPathDistinct) xmlXPathDistinct __attribute((alias("xmlXPathDistinct__internal_alias"))); +#else +#ifndef xmlXPathDistinct +extern __typeof (xmlXPathDistinct) xmlXPathDistinct__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathDistinct xmlXPathDistinct__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathDistinctSorted +extern __typeof (xmlXPathDistinctSorted) xmlXPathDistinctSorted __attribute((alias("xmlXPathDistinctSorted__internal_alias"))); +#else +#ifndef xmlXPathDistinctSorted +extern __typeof (xmlXPathDistinctSorted) xmlXPathDistinctSorted__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathDistinctSorted xmlXPathDistinctSorted__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathDivValues +extern __typeof (xmlXPathDivValues) xmlXPathDivValues __attribute((alias("xmlXPathDivValues__internal_alias"))); +#else +#ifndef xmlXPathDivValues +extern __typeof (xmlXPathDivValues) xmlXPathDivValues__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathDivValues xmlXPathDivValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathEqualValues +extern __typeof (xmlXPathEqualValues) xmlXPathEqualValues __attribute((alias("xmlXPathEqualValues__internal_alias"))); +#else +#ifndef xmlXPathEqualValues +extern __typeof (xmlXPathEqualValues) xmlXPathEqualValues__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathEqualValues xmlXPathEqualValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathErr +extern __typeof (xmlXPathErr) xmlXPathErr __attribute((alias("xmlXPathErr__internal_alias"))); +#else +#ifndef xmlXPathErr +extern __typeof (xmlXPathErr) xmlXPathErr__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathErr xmlXPathErr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathEval +extern __typeof (xmlXPathEval) xmlXPathEval __attribute((alias("xmlXPathEval__internal_alias"))); +#else +#ifndef xmlXPathEval +extern __typeof (xmlXPathEval) xmlXPathEval__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathEval xmlXPathEval__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathEvalExpr +extern __typeof (xmlXPathEvalExpr) xmlXPathEvalExpr __attribute((alias("xmlXPathEvalExpr__internal_alias"))); +#else +#ifndef xmlXPathEvalExpr +extern __typeof (xmlXPathEvalExpr) xmlXPathEvalExpr__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathEvalExpr xmlXPathEvalExpr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathEvalExpression +extern __typeof (xmlXPathEvalExpression) xmlXPathEvalExpression __attribute((alias("xmlXPathEvalExpression__internal_alias"))); +#else +#ifndef xmlXPathEvalExpression +extern __typeof (xmlXPathEvalExpression) xmlXPathEvalExpression__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathEvalExpression xmlXPathEvalExpression__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathEvalPredicate +extern __typeof (xmlXPathEvalPredicate) xmlXPathEvalPredicate __attribute((alias("xmlXPathEvalPredicate__internal_alias"))); +#else +#ifndef xmlXPathEvalPredicate +extern __typeof (xmlXPathEvalPredicate) xmlXPathEvalPredicate__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathEvalPredicate xmlXPathEvalPredicate__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathEvaluatePredicateResult +extern __typeof (xmlXPathEvaluatePredicateResult) xmlXPathEvaluatePredicateResult __attribute((alias("xmlXPathEvaluatePredicateResult__internal_alias"))); +#else +#ifndef xmlXPathEvaluatePredicateResult +extern __typeof (xmlXPathEvaluatePredicateResult) xmlXPathEvaluatePredicateResult__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathEvaluatePredicateResult xmlXPathEvaluatePredicateResult__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFalseFunction +extern __typeof (xmlXPathFalseFunction) xmlXPathFalseFunction __attribute((alias("xmlXPathFalseFunction__internal_alias"))); +#else +#ifndef xmlXPathFalseFunction +extern __typeof (xmlXPathFalseFunction) xmlXPathFalseFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFalseFunction xmlXPathFalseFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFloorFunction +extern __typeof (xmlXPathFloorFunction) xmlXPathFloorFunction __attribute((alias("xmlXPathFloorFunction__internal_alias"))); +#else +#ifndef xmlXPathFloorFunction +extern __typeof (xmlXPathFloorFunction) xmlXPathFloorFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFloorFunction xmlXPathFloorFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFreeCompExpr +extern __typeof (xmlXPathFreeCompExpr) xmlXPathFreeCompExpr __attribute((alias("xmlXPathFreeCompExpr__internal_alias"))); +#else +#ifndef xmlXPathFreeCompExpr +extern __typeof (xmlXPathFreeCompExpr) xmlXPathFreeCompExpr__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFreeCompExpr xmlXPathFreeCompExpr__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFreeContext +extern __typeof (xmlXPathFreeContext) xmlXPathFreeContext __attribute((alias("xmlXPathFreeContext__internal_alias"))); +#else +#ifndef xmlXPathFreeContext +extern __typeof (xmlXPathFreeContext) xmlXPathFreeContext__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFreeContext xmlXPathFreeContext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFreeNodeSet +extern __typeof (xmlXPathFreeNodeSet) xmlXPathFreeNodeSet __attribute((alias("xmlXPathFreeNodeSet__internal_alias"))); +#else +#ifndef xmlXPathFreeNodeSet +extern __typeof (xmlXPathFreeNodeSet) xmlXPathFreeNodeSet__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFreeNodeSet xmlXPathFreeNodeSet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFreeNodeSetList +extern __typeof (xmlXPathFreeNodeSetList) xmlXPathFreeNodeSetList __attribute((alias("xmlXPathFreeNodeSetList__internal_alias"))); +#else +#ifndef xmlXPathFreeNodeSetList +extern __typeof (xmlXPathFreeNodeSetList) xmlXPathFreeNodeSetList__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFreeNodeSetList xmlXPathFreeNodeSetList__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFreeObject +extern __typeof (xmlXPathFreeObject) xmlXPathFreeObject __attribute((alias("xmlXPathFreeObject__internal_alias"))); +#else +#ifndef xmlXPathFreeObject +extern __typeof (xmlXPathFreeObject) xmlXPathFreeObject__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFreeObject xmlXPathFreeObject__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFreeParserContext +extern __typeof (xmlXPathFreeParserContext) xmlXPathFreeParserContext __attribute((alias("xmlXPathFreeParserContext__internal_alias"))); +#else +#ifndef xmlXPathFreeParserContext +extern __typeof (xmlXPathFreeParserContext) xmlXPathFreeParserContext__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFreeParserContext xmlXPathFreeParserContext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFunctionLookup +extern __typeof (xmlXPathFunctionLookup) xmlXPathFunctionLookup __attribute((alias("xmlXPathFunctionLookup__internal_alias"))); +#else +#ifndef xmlXPathFunctionLookup +extern __typeof (xmlXPathFunctionLookup) xmlXPathFunctionLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFunctionLookup xmlXPathFunctionLookup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathFunctionLookupNS +extern __typeof (xmlXPathFunctionLookupNS) xmlXPathFunctionLookupNS __attribute((alias("xmlXPathFunctionLookupNS__internal_alias"))); +#else +#ifndef xmlXPathFunctionLookupNS +extern __typeof (xmlXPathFunctionLookupNS) xmlXPathFunctionLookupNS__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathFunctionLookupNS xmlXPathFunctionLookupNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathHasSameNodes +extern __typeof (xmlXPathHasSameNodes) xmlXPathHasSameNodes __attribute((alias("xmlXPathHasSameNodes__internal_alias"))); +#else +#ifndef xmlXPathHasSameNodes +extern __typeof (xmlXPathHasSameNodes) xmlXPathHasSameNodes__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathHasSameNodes xmlXPathHasSameNodes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathIdFunction +extern __typeof (xmlXPathIdFunction) xmlXPathIdFunction __attribute((alias("xmlXPathIdFunction__internal_alias"))); +#else +#ifndef xmlXPathIdFunction +extern __typeof (xmlXPathIdFunction) xmlXPathIdFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathIdFunction xmlXPathIdFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathInit +extern __typeof (xmlXPathInit) xmlXPathInit __attribute((alias("xmlXPathInit__internal_alias"))); +#else +#ifndef xmlXPathInit +extern __typeof (xmlXPathInit) xmlXPathInit__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathInit xmlXPathInit__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathIntersection +extern __typeof (xmlXPathIntersection) xmlXPathIntersection __attribute((alias("xmlXPathIntersection__internal_alias"))); +#else +#ifndef xmlXPathIntersection +extern __typeof (xmlXPathIntersection) xmlXPathIntersection__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathIntersection xmlXPathIntersection__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathIsInf +extern __typeof (xmlXPathIsInf) xmlXPathIsInf __attribute((alias("xmlXPathIsInf__internal_alias"))); +#else +#ifndef xmlXPathIsInf +extern __typeof (xmlXPathIsInf) xmlXPathIsInf__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathIsInf xmlXPathIsInf__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathIsNaN +extern __typeof (xmlXPathIsNaN) xmlXPathIsNaN __attribute((alias("xmlXPathIsNaN__internal_alias"))); +#else +#ifndef xmlXPathIsNaN +extern __typeof (xmlXPathIsNaN) xmlXPathIsNaN__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathIsNaN xmlXPathIsNaN__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathIsNodeType +extern __typeof (xmlXPathIsNodeType) xmlXPathIsNodeType __attribute((alias("xmlXPathIsNodeType__internal_alias"))); +#else +#ifndef xmlXPathIsNodeType +extern __typeof (xmlXPathIsNodeType) xmlXPathIsNodeType__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathIsNodeType xmlXPathIsNodeType__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathLangFunction +extern __typeof (xmlXPathLangFunction) xmlXPathLangFunction __attribute((alias("xmlXPathLangFunction__internal_alias"))); +#else +#ifndef xmlXPathLangFunction +extern __typeof (xmlXPathLangFunction) xmlXPathLangFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathLangFunction xmlXPathLangFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathLastFunction +extern __typeof (xmlXPathLastFunction) xmlXPathLastFunction __attribute((alias("xmlXPathLastFunction__internal_alias"))); +#else +#ifndef xmlXPathLastFunction +extern __typeof (xmlXPathLastFunction) xmlXPathLastFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathLastFunction xmlXPathLastFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathLeading +extern __typeof (xmlXPathLeading) xmlXPathLeading __attribute((alias("xmlXPathLeading__internal_alias"))); +#else +#ifndef xmlXPathLeading +extern __typeof (xmlXPathLeading) xmlXPathLeading__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathLeading xmlXPathLeading__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathLeadingSorted +extern __typeof (xmlXPathLeadingSorted) xmlXPathLeadingSorted __attribute((alias("xmlXPathLeadingSorted__internal_alias"))); +#else +#ifndef xmlXPathLeadingSorted +extern __typeof (xmlXPathLeadingSorted) xmlXPathLeadingSorted__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathLeadingSorted xmlXPathLeadingSorted__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathLocalNameFunction +extern __typeof (xmlXPathLocalNameFunction) xmlXPathLocalNameFunction __attribute((alias("xmlXPathLocalNameFunction__internal_alias"))); +#else +#ifndef xmlXPathLocalNameFunction +extern __typeof (xmlXPathLocalNameFunction) xmlXPathLocalNameFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathLocalNameFunction xmlXPathLocalNameFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathModValues +extern __typeof (xmlXPathModValues) xmlXPathModValues __attribute((alias("xmlXPathModValues__internal_alias"))); +#else +#ifndef xmlXPathModValues +extern __typeof (xmlXPathModValues) xmlXPathModValues__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathModValues xmlXPathModValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathMultValues +extern __typeof (xmlXPathMultValues) xmlXPathMultValues __attribute((alias("xmlXPathMultValues__internal_alias"))); +#else +#ifndef xmlXPathMultValues +extern __typeof (xmlXPathMultValues) xmlXPathMultValues__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathMultValues xmlXPathMultValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNamespaceURIFunction +extern __typeof (xmlXPathNamespaceURIFunction) xmlXPathNamespaceURIFunction __attribute((alias("xmlXPathNamespaceURIFunction__internal_alias"))); +#else +#ifndef xmlXPathNamespaceURIFunction +extern __typeof (xmlXPathNamespaceURIFunction) xmlXPathNamespaceURIFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNamespaceURIFunction xmlXPathNamespaceURIFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewBoolean +extern __typeof (xmlXPathNewBoolean) xmlXPathNewBoolean __attribute((alias("xmlXPathNewBoolean__internal_alias"))); +#else +#ifndef xmlXPathNewBoolean +extern __typeof (xmlXPathNewBoolean) xmlXPathNewBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewBoolean xmlXPathNewBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewCString +extern __typeof (xmlXPathNewCString) xmlXPathNewCString __attribute((alias("xmlXPathNewCString__internal_alias"))); +#else +#ifndef xmlXPathNewCString +extern __typeof (xmlXPathNewCString) xmlXPathNewCString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewCString xmlXPathNewCString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewContext +extern __typeof (xmlXPathNewContext) xmlXPathNewContext __attribute((alias("xmlXPathNewContext__internal_alias"))); +#else +#ifndef xmlXPathNewContext +extern __typeof (xmlXPathNewContext) xmlXPathNewContext__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewContext xmlXPathNewContext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewFloat +extern __typeof (xmlXPathNewFloat) xmlXPathNewFloat __attribute((alias("xmlXPathNewFloat__internal_alias"))); +#else +#ifndef xmlXPathNewFloat +extern __typeof (xmlXPathNewFloat) xmlXPathNewFloat__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewFloat xmlXPathNewFloat__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewNodeSet +extern __typeof (xmlXPathNewNodeSet) xmlXPathNewNodeSet __attribute((alias("xmlXPathNewNodeSet__internal_alias"))); +#else +#ifndef xmlXPathNewNodeSet +extern __typeof (xmlXPathNewNodeSet) xmlXPathNewNodeSet__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewNodeSet xmlXPathNewNodeSet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewNodeSetList +extern __typeof (xmlXPathNewNodeSetList) xmlXPathNewNodeSetList __attribute((alias("xmlXPathNewNodeSetList__internal_alias"))); +#else +#ifndef xmlXPathNewNodeSetList +extern __typeof (xmlXPathNewNodeSetList) xmlXPathNewNodeSetList__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewNodeSetList xmlXPathNewNodeSetList__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewParserContext +extern __typeof (xmlXPathNewParserContext) xmlXPathNewParserContext __attribute((alias("xmlXPathNewParserContext__internal_alias"))); +#else +#ifndef xmlXPathNewParserContext +extern __typeof (xmlXPathNewParserContext) xmlXPathNewParserContext__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewParserContext xmlXPathNewParserContext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewString +extern __typeof (xmlXPathNewString) xmlXPathNewString __attribute((alias("xmlXPathNewString__internal_alias"))); +#else +#ifndef xmlXPathNewString +extern __typeof (xmlXPathNewString) xmlXPathNewString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewString xmlXPathNewString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNewValueTree +extern __typeof (xmlXPathNewValueTree) xmlXPathNewValueTree __attribute((alias("xmlXPathNewValueTree__internal_alias"))); +#else +#ifndef xmlXPathNewValueTree +extern __typeof (xmlXPathNewValueTree) xmlXPathNewValueTree__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNewValueTree xmlXPathNewValueTree__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextAncestor +extern __typeof (xmlXPathNextAncestor) xmlXPathNextAncestor __attribute((alias("xmlXPathNextAncestor__internal_alias"))); +#else +#ifndef xmlXPathNextAncestor +extern __typeof (xmlXPathNextAncestor) xmlXPathNextAncestor__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextAncestor xmlXPathNextAncestor__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextAncestorOrSelf +extern __typeof (xmlXPathNextAncestorOrSelf) xmlXPathNextAncestorOrSelf __attribute((alias("xmlXPathNextAncestorOrSelf__internal_alias"))); +#else +#ifndef xmlXPathNextAncestorOrSelf +extern __typeof (xmlXPathNextAncestorOrSelf) xmlXPathNextAncestorOrSelf__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextAncestorOrSelf xmlXPathNextAncestorOrSelf__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextAttribute +extern __typeof (xmlXPathNextAttribute) xmlXPathNextAttribute __attribute((alias("xmlXPathNextAttribute__internal_alias"))); +#else +#ifndef xmlXPathNextAttribute +extern __typeof (xmlXPathNextAttribute) xmlXPathNextAttribute__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextAttribute xmlXPathNextAttribute__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextChild +extern __typeof (xmlXPathNextChild) xmlXPathNextChild __attribute((alias("xmlXPathNextChild__internal_alias"))); +#else +#ifndef xmlXPathNextChild +extern __typeof (xmlXPathNextChild) xmlXPathNextChild__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextChild xmlXPathNextChild__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextDescendant +extern __typeof (xmlXPathNextDescendant) xmlXPathNextDescendant __attribute((alias("xmlXPathNextDescendant__internal_alias"))); +#else +#ifndef xmlXPathNextDescendant +extern __typeof (xmlXPathNextDescendant) xmlXPathNextDescendant__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextDescendant xmlXPathNextDescendant__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextDescendantOrSelf +extern __typeof (xmlXPathNextDescendantOrSelf) xmlXPathNextDescendantOrSelf __attribute((alias("xmlXPathNextDescendantOrSelf__internal_alias"))); +#else +#ifndef xmlXPathNextDescendantOrSelf +extern __typeof (xmlXPathNextDescendantOrSelf) xmlXPathNextDescendantOrSelf__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextDescendantOrSelf xmlXPathNextDescendantOrSelf__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextFollowing +extern __typeof (xmlXPathNextFollowing) xmlXPathNextFollowing __attribute((alias("xmlXPathNextFollowing__internal_alias"))); +#else +#ifndef xmlXPathNextFollowing +extern __typeof (xmlXPathNextFollowing) xmlXPathNextFollowing__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextFollowing xmlXPathNextFollowing__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextFollowingSibling +extern __typeof (xmlXPathNextFollowingSibling) xmlXPathNextFollowingSibling __attribute((alias("xmlXPathNextFollowingSibling__internal_alias"))); +#else +#ifndef xmlXPathNextFollowingSibling +extern __typeof (xmlXPathNextFollowingSibling) xmlXPathNextFollowingSibling__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextFollowingSibling xmlXPathNextFollowingSibling__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextNamespace +extern __typeof (xmlXPathNextNamespace) xmlXPathNextNamespace __attribute((alias("xmlXPathNextNamespace__internal_alias"))); +#else +#ifndef xmlXPathNextNamespace +extern __typeof (xmlXPathNextNamespace) xmlXPathNextNamespace__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextNamespace xmlXPathNextNamespace__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextParent +extern __typeof (xmlXPathNextParent) xmlXPathNextParent __attribute((alias("xmlXPathNextParent__internal_alias"))); +#else +#ifndef xmlXPathNextParent +extern __typeof (xmlXPathNextParent) xmlXPathNextParent__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextParent xmlXPathNextParent__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextPreceding +extern __typeof (xmlXPathNextPreceding) xmlXPathNextPreceding __attribute((alias("xmlXPathNextPreceding__internal_alias"))); +#else +#ifndef xmlXPathNextPreceding +extern __typeof (xmlXPathNextPreceding) xmlXPathNextPreceding__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextPreceding xmlXPathNextPreceding__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextPrecedingSibling +extern __typeof (xmlXPathNextPrecedingSibling) xmlXPathNextPrecedingSibling __attribute((alias("xmlXPathNextPrecedingSibling__internal_alias"))); +#else +#ifndef xmlXPathNextPrecedingSibling +extern __typeof (xmlXPathNextPrecedingSibling) xmlXPathNextPrecedingSibling__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextPrecedingSibling xmlXPathNextPrecedingSibling__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNextSelf +extern __typeof (xmlXPathNextSelf) xmlXPathNextSelf __attribute((alias("xmlXPathNextSelf__internal_alias"))); +#else +#ifndef xmlXPathNextSelf +extern __typeof (xmlXPathNextSelf) xmlXPathNextSelf__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNextSelf xmlXPathNextSelf__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeEval +extern __typeof (xmlXPathNodeEval) xmlXPathNodeEval __attribute((alias("xmlXPathNodeEval__internal_alias"))); +#else +#ifndef xmlXPathNodeEval +extern __typeof (xmlXPathNodeEval) xmlXPathNodeEval__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeEval xmlXPathNodeEval__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeLeading +extern __typeof (xmlXPathNodeLeading) xmlXPathNodeLeading __attribute((alias("xmlXPathNodeLeading__internal_alias"))); +#else +#ifndef xmlXPathNodeLeading +extern __typeof (xmlXPathNodeLeading) xmlXPathNodeLeading__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeLeading xmlXPathNodeLeading__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeLeadingSorted +extern __typeof (xmlXPathNodeLeadingSorted) xmlXPathNodeLeadingSorted __attribute((alias("xmlXPathNodeLeadingSorted__internal_alias"))); +#else +#ifndef xmlXPathNodeLeadingSorted +extern __typeof (xmlXPathNodeLeadingSorted) xmlXPathNodeLeadingSorted__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeLeadingSorted xmlXPathNodeLeadingSorted__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetAdd +extern __typeof (xmlXPathNodeSetAdd) xmlXPathNodeSetAdd __attribute((alias("xmlXPathNodeSetAdd__internal_alias"))); +#else +#ifndef xmlXPathNodeSetAdd +extern __typeof (xmlXPathNodeSetAdd) xmlXPathNodeSetAdd__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetAdd xmlXPathNodeSetAdd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetAddNs +extern __typeof (xmlXPathNodeSetAddNs) xmlXPathNodeSetAddNs __attribute((alias("xmlXPathNodeSetAddNs__internal_alias"))); +#else +#ifndef xmlXPathNodeSetAddNs +extern __typeof (xmlXPathNodeSetAddNs) xmlXPathNodeSetAddNs__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetAddNs xmlXPathNodeSetAddNs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetAddUnique +extern __typeof (xmlXPathNodeSetAddUnique) xmlXPathNodeSetAddUnique __attribute((alias("xmlXPathNodeSetAddUnique__internal_alias"))); +#else +#ifndef xmlXPathNodeSetAddUnique +extern __typeof (xmlXPathNodeSetAddUnique) xmlXPathNodeSetAddUnique__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetAddUnique xmlXPathNodeSetAddUnique__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetContains +extern __typeof (xmlXPathNodeSetContains) xmlXPathNodeSetContains __attribute((alias("xmlXPathNodeSetContains__internal_alias"))); +#else +#ifndef xmlXPathNodeSetContains +extern __typeof (xmlXPathNodeSetContains) xmlXPathNodeSetContains__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetContains xmlXPathNodeSetContains__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetCreate +extern __typeof (xmlXPathNodeSetCreate) xmlXPathNodeSetCreate __attribute((alias("xmlXPathNodeSetCreate__internal_alias"))); +#else +#ifndef xmlXPathNodeSetCreate +extern __typeof (xmlXPathNodeSetCreate) xmlXPathNodeSetCreate__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetCreate xmlXPathNodeSetCreate__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetDel +extern __typeof (xmlXPathNodeSetDel) xmlXPathNodeSetDel __attribute((alias("xmlXPathNodeSetDel__internal_alias"))); +#else +#ifndef xmlXPathNodeSetDel +extern __typeof (xmlXPathNodeSetDel) xmlXPathNodeSetDel__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetDel xmlXPathNodeSetDel__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetFreeNs +extern __typeof (xmlXPathNodeSetFreeNs) xmlXPathNodeSetFreeNs __attribute((alias("xmlXPathNodeSetFreeNs__internal_alias"))); +#else +#ifndef xmlXPathNodeSetFreeNs +extern __typeof (xmlXPathNodeSetFreeNs) xmlXPathNodeSetFreeNs__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetFreeNs xmlXPathNodeSetFreeNs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetMerge +extern __typeof (xmlXPathNodeSetMerge) xmlXPathNodeSetMerge __attribute((alias("xmlXPathNodeSetMerge__internal_alias"))); +#else +#ifndef xmlXPathNodeSetMerge +extern __typeof (xmlXPathNodeSetMerge) xmlXPathNodeSetMerge__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetMerge xmlXPathNodeSetMerge__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetRemove +extern __typeof (xmlXPathNodeSetRemove) xmlXPathNodeSetRemove __attribute((alias("xmlXPathNodeSetRemove__internal_alias"))); +#else +#ifndef xmlXPathNodeSetRemove +extern __typeof (xmlXPathNodeSetRemove) xmlXPathNodeSetRemove__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetRemove xmlXPathNodeSetRemove__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeSetSort +extern __typeof (xmlXPathNodeSetSort) xmlXPathNodeSetSort __attribute((alias("xmlXPathNodeSetSort__internal_alias"))); +#else +#ifndef xmlXPathNodeSetSort +extern __typeof (xmlXPathNodeSetSort) xmlXPathNodeSetSort__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeSetSort xmlXPathNodeSetSort__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeTrailing +extern __typeof (xmlXPathNodeTrailing) xmlXPathNodeTrailing __attribute((alias("xmlXPathNodeTrailing__internal_alias"))); +#else +#ifndef xmlXPathNodeTrailing +extern __typeof (xmlXPathNodeTrailing) xmlXPathNodeTrailing__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeTrailing xmlXPathNodeTrailing__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNodeTrailingSorted +extern __typeof (xmlXPathNodeTrailingSorted) xmlXPathNodeTrailingSorted __attribute((alias("xmlXPathNodeTrailingSorted__internal_alias"))); +#else +#ifndef xmlXPathNodeTrailingSorted +extern __typeof (xmlXPathNodeTrailingSorted) xmlXPathNodeTrailingSorted__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNodeTrailingSorted xmlXPathNodeTrailingSorted__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNormalizeFunction +extern __typeof (xmlXPathNormalizeFunction) xmlXPathNormalizeFunction __attribute((alias("xmlXPathNormalizeFunction__internal_alias"))); +#else +#ifndef xmlXPathNormalizeFunction +extern __typeof (xmlXPathNormalizeFunction) xmlXPathNormalizeFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNormalizeFunction xmlXPathNormalizeFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNotEqualValues +extern __typeof (xmlXPathNotEqualValues) xmlXPathNotEqualValues __attribute((alias("xmlXPathNotEqualValues__internal_alias"))); +#else +#ifndef xmlXPathNotEqualValues +extern __typeof (xmlXPathNotEqualValues) xmlXPathNotEqualValues__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNotEqualValues xmlXPathNotEqualValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNotFunction +extern __typeof (xmlXPathNotFunction) xmlXPathNotFunction __attribute((alias("xmlXPathNotFunction__internal_alias"))); +#else +#ifndef xmlXPathNotFunction +extern __typeof (xmlXPathNotFunction) xmlXPathNotFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNotFunction xmlXPathNotFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNsLookup +extern __typeof (xmlXPathNsLookup) xmlXPathNsLookup __attribute((alias("xmlXPathNsLookup__internal_alias"))); +#else +#ifndef xmlXPathNsLookup +extern __typeof (xmlXPathNsLookup) xmlXPathNsLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNsLookup xmlXPathNsLookup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathNumberFunction +extern __typeof (xmlXPathNumberFunction) xmlXPathNumberFunction __attribute((alias("xmlXPathNumberFunction__internal_alias"))); +#else +#ifndef xmlXPathNumberFunction +extern __typeof (xmlXPathNumberFunction) xmlXPathNumberFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathNumberFunction xmlXPathNumberFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathObjectCopy +extern __typeof (xmlXPathObjectCopy) xmlXPathObjectCopy __attribute((alias("xmlXPathObjectCopy__internal_alias"))); +#else +#ifndef xmlXPathObjectCopy +extern __typeof (xmlXPathObjectCopy) xmlXPathObjectCopy__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathObjectCopy xmlXPathObjectCopy__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathOrderDocElems +extern __typeof (xmlXPathOrderDocElems) xmlXPathOrderDocElems __attribute((alias("xmlXPathOrderDocElems__internal_alias"))); +#else +#ifndef xmlXPathOrderDocElems +extern __typeof (xmlXPathOrderDocElems) xmlXPathOrderDocElems__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathOrderDocElems xmlXPathOrderDocElems__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathParseNCName +extern __typeof (xmlXPathParseNCName) xmlXPathParseNCName __attribute((alias("xmlXPathParseNCName__internal_alias"))); +#else +#ifndef xmlXPathParseNCName +extern __typeof (xmlXPathParseNCName) xmlXPathParseNCName__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathParseNCName xmlXPathParseNCName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathParseName +extern __typeof (xmlXPathParseName) xmlXPathParseName __attribute((alias("xmlXPathParseName__internal_alias"))); +#else +#ifndef xmlXPathParseName +extern __typeof (xmlXPathParseName) xmlXPathParseName__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathParseName xmlXPathParseName__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathPopBoolean +extern __typeof (xmlXPathPopBoolean) xmlXPathPopBoolean __attribute((alias("xmlXPathPopBoolean__internal_alias"))); +#else +#ifndef xmlXPathPopBoolean +extern __typeof (xmlXPathPopBoolean) xmlXPathPopBoolean__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathPopBoolean xmlXPathPopBoolean__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathPopExternal +extern __typeof (xmlXPathPopExternal) xmlXPathPopExternal __attribute((alias("xmlXPathPopExternal__internal_alias"))); +#else +#ifndef xmlXPathPopExternal +extern __typeof (xmlXPathPopExternal) xmlXPathPopExternal__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathPopExternal xmlXPathPopExternal__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathPopNodeSet +extern __typeof (xmlXPathPopNodeSet) xmlXPathPopNodeSet __attribute((alias("xmlXPathPopNodeSet__internal_alias"))); +#else +#ifndef xmlXPathPopNodeSet +extern __typeof (xmlXPathPopNodeSet) xmlXPathPopNodeSet__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathPopNodeSet xmlXPathPopNodeSet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathPopNumber +extern __typeof (xmlXPathPopNumber) xmlXPathPopNumber __attribute((alias("xmlXPathPopNumber__internal_alias"))); +#else +#ifndef xmlXPathPopNumber +extern __typeof (xmlXPathPopNumber) xmlXPathPopNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathPopNumber xmlXPathPopNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathPopString +extern __typeof (xmlXPathPopString) xmlXPathPopString __attribute((alias("xmlXPathPopString__internal_alias"))); +#else +#ifndef xmlXPathPopString +extern __typeof (xmlXPathPopString) xmlXPathPopString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathPopString xmlXPathPopString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathPositionFunction +extern __typeof (xmlXPathPositionFunction) xmlXPathPositionFunction __attribute((alias("xmlXPathPositionFunction__internal_alias"))); +#else +#ifndef xmlXPathPositionFunction +extern __typeof (xmlXPathPositionFunction) xmlXPathPositionFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathPositionFunction xmlXPathPositionFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisterAllFunctions +extern __typeof (xmlXPathRegisterAllFunctions) xmlXPathRegisterAllFunctions __attribute((alias("xmlXPathRegisterAllFunctions__internal_alias"))); +#else +#ifndef xmlXPathRegisterAllFunctions +extern __typeof (xmlXPathRegisterAllFunctions) xmlXPathRegisterAllFunctions__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisterAllFunctions xmlXPathRegisterAllFunctions__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisterFunc +extern __typeof (xmlXPathRegisterFunc) xmlXPathRegisterFunc __attribute((alias("xmlXPathRegisterFunc__internal_alias"))); +#else +#ifndef xmlXPathRegisterFunc +extern __typeof (xmlXPathRegisterFunc) xmlXPathRegisterFunc__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisterFunc xmlXPathRegisterFunc__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisterFuncLookup +extern __typeof (xmlXPathRegisterFuncLookup) xmlXPathRegisterFuncLookup __attribute((alias("xmlXPathRegisterFuncLookup__internal_alias"))); +#else +#ifndef xmlXPathRegisterFuncLookup +extern __typeof (xmlXPathRegisterFuncLookup) xmlXPathRegisterFuncLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisterFuncLookup xmlXPathRegisterFuncLookup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisterFuncNS +extern __typeof (xmlXPathRegisterFuncNS) xmlXPathRegisterFuncNS __attribute((alias("xmlXPathRegisterFuncNS__internal_alias"))); +#else +#ifndef xmlXPathRegisterFuncNS +extern __typeof (xmlXPathRegisterFuncNS) xmlXPathRegisterFuncNS__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisterFuncNS xmlXPathRegisterFuncNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisterNs +extern __typeof (xmlXPathRegisterNs) xmlXPathRegisterNs __attribute((alias("xmlXPathRegisterNs__internal_alias"))); +#else +#ifndef xmlXPathRegisterNs +extern __typeof (xmlXPathRegisterNs) xmlXPathRegisterNs__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisterNs xmlXPathRegisterNs__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisterVariable +extern __typeof (xmlXPathRegisterVariable) xmlXPathRegisterVariable __attribute((alias("xmlXPathRegisterVariable__internal_alias"))); +#else +#ifndef xmlXPathRegisterVariable +extern __typeof (xmlXPathRegisterVariable) xmlXPathRegisterVariable__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisterVariable xmlXPathRegisterVariable__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisterVariableLookup +extern __typeof (xmlXPathRegisterVariableLookup) xmlXPathRegisterVariableLookup __attribute((alias("xmlXPathRegisterVariableLookup__internal_alias"))); +#else +#ifndef xmlXPathRegisterVariableLookup +extern __typeof (xmlXPathRegisterVariableLookup) xmlXPathRegisterVariableLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisterVariableLookup xmlXPathRegisterVariableLookup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisterVariableNS +extern __typeof (xmlXPathRegisterVariableNS) xmlXPathRegisterVariableNS __attribute((alias("xmlXPathRegisterVariableNS__internal_alias"))); +#else +#ifndef xmlXPathRegisterVariableNS +extern __typeof (xmlXPathRegisterVariableNS) xmlXPathRegisterVariableNS__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisterVariableNS xmlXPathRegisterVariableNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisteredFuncsCleanup +extern __typeof (xmlXPathRegisteredFuncsCleanup) xmlXPathRegisteredFuncsCleanup __attribute((alias("xmlXPathRegisteredFuncsCleanup__internal_alias"))); +#else +#ifndef xmlXPathRegisteredFuncsCleanup +extern __typeof (xmlXPathRegisteredFuncsCleanup) xmlXPathRegisteredFuncsCleanup__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisteredFuncsCleanup xmlXPathRegisteredFuncsCleanup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisteredNsCleanup +extern __typeof (xmlXPathRegisteredNsCleanup) xmlXPathRegisteredNsCleanup __attribute((alias("xmlXPathRegisteredNsCleanup__internal_alias"))); +#else +#ifndef xmlXPathRegisteredNsCleanup +extern __typeof (xmlXPathRegisteredNsCleanup) xmlXPathRegisteredNsCleanup__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisteredNsCleanup xmlXPathRegisteredNsCleanup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRegisteredVariablesCleanup +extern __typeof (xmlXPathRegisteredVariablesCleanup) xmlXPathRegisteredVariablesCleanup __attribute((alias("xmlXPathRegisteredVariablesCleanup__internal_alias"))); +#else +#ifndef xmlXPathRegisteredVariablesCleanup +extern __typeof (xmlXPathRegisteredVariablesCleanup) xmlXPathRegisteredVariablesCleanup__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRegisteredVariablesCleanup xmlXPathRegisteredVariablesCleanup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRoot +extern __typeof (xmlXPathRoot) xmlXPathRoot __attribute((alias("xmlXPathRoot__internal_alias"))); +#else +#ifndef xmlXPathRoot +extern __typeof (xmlXPathRoot) xmlXPathRoot__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRoot xmlXPathRoot__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathRoundFunction +extern __typeof (xmlXPathRoundFunction) xmlXPathRoundFunction __attribute((alias("xmlXPathRoundFunction__internal_alias"))); +#else +#ifndef xmlXPathRoundFunction +extern __typeof (xmlXPathRoundFunction) xmlXPathRoundFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathRoundFunction xmlXPathRoundFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathSetContextNode +extern __typeof (xmlXPathSetContextNode) xmlXPathSetContextNode __attribute((alias("xmlXPathSetContextNode__internal_alias"))); +#else +#ifndef xmlXPathSetContextNode +extern __typeof (xmlXPathSetContextNode) xmlXPathSetContextNode__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathSetContextNode xmlXPathSetContextNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathStartsWithFunction +extern __typeof (xmlXPathStartsWithFunction) xmlXPathStartsWithFunction __attribute((alias("xmlXPathStartsWithFunction__internal_alias"))); +#else +#ifndef xmlXPathStartsWithFunction +extern __typeof (xmlXPathStartsWithFunction) xmlXPathStartsWithFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathStartsWithFunction xmlXPathStartsWithFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathStringEvalNumber +extern __typeof (xmlXPathStringEvalNumber) xmlXPathStringEvalNumber __attribute((alias("xmlXPathStringEvalNumber__internal_alias"))); +#else +#ifndef xmlXPathStringEvalNumber +extern __typeof (xmlXPathStringEvalNumber) xmlXPathStringEvalNumber__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathStringEvalNumber xmlXPathStringEvalNumber__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathStringFunction +extern __typeof (xmlXPathStringFunction) xmlXPathStringFunction __attribute((alias("xmlXPathStringFunction__internal_alias"))); +#else +#ifndef xmlXPathStringFunction +extern __typeof (xmlXPathStringFunction) xmlXPathStringFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathStringFunction xmlXPathStringFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathStringLengthFunction +extern __typeof (xmlXPathStringLengthFunction) xmlXPathStringLengthFunction __attribute((alias("xmlXPathStringLengthFunction__internal_alias"))); +#else +#ifndef xmlXPathStringLengthFunction +extern __typeof (xmlXPathStringLengthFunction) xmlXPathStringLengthFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathStringLengthFunction xmlXPathStringLengthFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathSubValues +extern __typeof (xmlXPathSubValues) xmlXPathSubValues __attribute((alias("xmlXPathSubValues__internal_alias"))); +#else +#ifndef xmlXPathSubValues +extern __typeof (xmlXPathSubValues) xmlXPathSubValues__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathSubValues xmlXPathSubValues__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathSubstringAfterFunction +extern __typeof (xmlXPathSubstringAfterFunction) xmlXPathSubstringAfterFunction __attribute((alias("xmlXPathSubstringAfterFunction__internal_alias"))); +#else +#ifndef xmlXPathSubstringAfterFunction +extern __typeof (xmlXPathSubstringAfterFunction) xmlXPathSubstringAfterFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathSubstringAfterFunction xmlXPathSubstringAfterFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathSubstringBeforeFunction +extern __typeof (xmlXPathSubstringBeforeFunction) xmlXPathSubstringBeforeFunction __attribute((alias("xmlXPathSubstringBeforeFunction__internal_alias"))); +#else +#ifndef xmlXPathSubstringBeforeFunction +extern __typeof (xmlXPathSubstringBeforeFunction) xmlXPathSubstringBeforeFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathSubstringBeforeFunction xmlXPathSubstringBeforeFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathSubstringFunction +extern __typeof (xmlXPathSubstringFunction) xmlXPathSubstringFunction __attribute((alias("xmlXPathSubstringFunction__internal_alias"))); +#else +#ifndef xmlXPathSubstringFunction +extern __typeof (xmlXPathSubstringFunction) xmlXPathSubstringFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathSubstringFunction xmlXPathSubstringFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathSumFunction +extern __typeof (xmlXPathSumFunction) xmlXPathSumFunction __attribute((alias("xmlXPathSumFunction__internal_alias"))); +#else +#ifndef xmlXPathSumFunction +extern __typeof (xmlXPathSumFunction) xmlXPathSumFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathSumFunction xmlXPathSumFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathTrailing +extern __typeof (xmlXPathTrailing) xmlXPathTrailing __attribute((alias("xmlXPathTrailing__internal_alias"))); +#else +#ifndef xmlXPathTrailing +extern __typeof (xmlXPathTrailing) xmlXPathTrailing__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathTrailing xmlXPathTrailing__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathTrailingSorted +extern __typeof (xmlXPathTrailingSorted) xmlXPathTrailingSorted __attribute((alias("xmlXPathTrailingSorted__internal_alias"))); +#else +#ifndef xmlXPathTrailingSorted +extern __typeof (xmlXPathTrailingSorted) xmlXPathTrailingSorted__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathTrailingSorted xmlXPathTrailingSorted__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathTranslateFunction +extern __typeof (xmlXPathTranslateFunction) xmlXPathTranslateFunction __attribute((alias("xmlXPathTranslateFunction__internal_alias"))); +#else +#ifndef xmlXPathTranslateFunction +extern __typeof (xmlXPathTranslateFunction) xmlXPathTranslateFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathTranslateFunction xmlXPathTranslateFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathTrueFunction +extern __typeof (xmlXPathTrueFunction) xmlXPathTrueFunction __attribute((alias("xmlXPathTrueFunction__internal_alias"))); +#else +#ifndef xmlXPathTrueFunction +extern __typeof (xmlXPathTrueFunction) xmlXPathTrueFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathTrueFunction xmlXPathTrueFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathValueFlipSign +extern __typeof (xmlXPathValueFlipSign) xmlXPathValueFlipSign __attribute((alias("xmlXPathValueFlipSign__internal_alias"))); +#else +#ifndef xmlXPathValueFlipSign +extern __typeof (xmlXPathValueFlipSign) xmlXPathValueFlipSign__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathValueFlipSign xmlXPathValueFlipSign__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathVariableLookup +extern __typeof (xmlXPathVariableLookup) xmlXPathVariableLookup __attribute((alias("xmlXPathVariableLookup__internal_alias"))); +#else +#ifndef xmlXPathVariableLookup +extern __typeof (xmlXPathVariableLookup) xmlXPathVariableLookup__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathVariableLookup xmlXPathVariableLookup__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathVariableLookupNS +extern __typeof (xmlXPathVariableLookupNS) xmlXPathVariableLookupNS __attribute((alias("xmlXPathVariableLookupNS__internal_alias"))); +#else +#ifndef xmlXPathVariableLookupNS +extern __typeof (xmlXPathVariableLookupNS) xmlXPathVariableLookupNS__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathVariableLookupNS xmlXPathVariableLookupNS__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathWrapCString +extern __typeof (xmlXPathWrapCString) xmlXPathWrapCString __attribute((alias("xmlXPathWrapCString__internal_alias"))); +#else +#ifndef xmlXPathWrapCString +extern __typeof (xmlXPathWrapCString) xmlXPathWrapCString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathWrapCString xmlXPathWrapCString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathWrapExternal +extern __typeof (xmlXPathWrapExternal) xmlXPathWrapExternal __attribute((alias("xmlXPathWrapExternal__internal_alias"))); +#else +#ifndef xmlXPathWrapExternal +extern __typeof (xmlXPathWrapExternal) xmlXPathWrapExternal__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathWrapExternal xmlXPathWrapExternal__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathWrapNodeSet +extern __typeof (xmlXPathWrapNodeSet) xmlXPathWrapNodeSet __attribute((alias("xmlXPathWrapNodeSet__internal_alias"))); +#else +#ifndef xmlXPathWrapNodeSet +extern __typeof (xmlXPathWrapNodeSet) xmlXPathWrapNodeSet__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathWrapNodeSet xmlXPathWrapNodeSet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPathWrapString +extern __typeof (xmlXPathWrapString) xmlXPathWrapString __attribute((alias("xmlXPathWrapString__internal_alias"))); +#else +#ifndef xmlXPathWrapString +extern __typeof (xmlXPathWrapString) xmlXPathWrapString__internal_alias __attribute((visibility("hidden"))); +#define xmlXPathWrapString xmlXPathWrapString__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPATH_ENABLED) +#ifdef bottom_xpath +#undef xmlXPatherror +extern __typeof (xmlXPatherror) xmlXPatherror __attribute((alias("xmlXPatherror__internal_alias"))); +#else +#ifndef xmlXPatherror +extern __typeof (xmlXPatherror) xmlXPatherror__internal_alias __attribute((visibility("hidden"))); +#define xmlXPatherror xmlXPatherror__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrBuildNodeList +extern __typeof (xmlXPtrBuildNodeList) xmlXPtrBuildNodeList __attribute((alias("xmlXPtrBuildNodeList__internal_alias"))); +#else +#ifndef xmlXPtrBuildNodeList +extern __typeof (xmlXPtrBuildNodeList) xmlXPtrBuildNodeList__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrBuildNodeList xmlXPtrBuildNodeList__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrEval +extern __typeof (xmlXPtrEval) xmlXPtrEval __attribute((alias("xmlXPtrEval__internal_alias"))); +#else +#ifndef xmlXPtrEval +extern __typeof (xmlXPtrEval) xmlXPtrEval__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrEval xmlXPtrEval__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrEvalRangePredicate +extern __typeof (xmlXPtrEvalRangePredicate) xmlXPtrEvalRangePredicate __attribute((alias("xmlXPtrEvalRangePredicate__internal_alias"))); +#else +#ifndef xmlXPtrEvalRangePredicate +extern __typeof (xmlXPtrEvalRangePredicate) xmlXPtrEvalRangePredicate__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrEvalRangePredicate xmlXPtrEvalRangePredicate__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrFreeLocationSet +extern __typeof (xmlXPtrFreeLocationSet) xmlXPtrFreeLocationSet __attribute((alias("xmlXPtrFreeLocationSet__internal_alias"))); +#else +#ifndef xmlXPtrFreeLocationSet +extern __typeof (xmlXPtrFreeLocationSet) xmlXPtrFreeLocationSet__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrFreeLocationSet xmlXPtrFreeLocationSet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrLocationSetAdd +extern __typeof (xmlXPtrLocationSetAdd) xmlXPtrLocationSetAdd __attribute((alias("xmlXPtrLocationSetAdd__internal_alias"))); +#else +#ifndef xmlXPtrLocationSetAdd +extern __typeof (xmlXPtrLocationSetAdd) xmlXPtrLocationSetAdd__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrLocationSetAdd xmlXPtrLocationSetAdd__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrLocationSetCreate +extern __typeof (xmlXPtrLocationSetCreate) xmlXPtrLocationSetCreate __attribute((alias("xmlXPtrLocationSetCreate__internal_alias"))); +#else +#ifndef xmlXPtrLocationSetCreate +extern __typeof (xmlXPtrLocationSetCreate) xmlXPtrLocationSetCreate__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrLocationSetCreate xmlXPtrLocationSetCreate__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrLocationSetDel +extern __typeof (xmlXPtrLocationSetDel) xmlXPtrLocationSetDel __attribute((alias("xmlXPtrLocationSetDel__internal_alias"))); +#else +#ifndef xmlXPtrLocationSetDel +extern __typeof (xmlXPtrLocationSetDel) xmlXPtrLocationSetDel__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrLocationSetDel xmlXPtrLocationSetDel__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrLocationSetMerge +extern __typeof (xmlXPtrLocationSetMerge) xmlXPtrLocationSetMerge __attribute((alias("xmlXPtrLocationSetMerge__internal_alias"))); +#else +#ifndef xmlXPtrLocationSetMerge +extern __typeof (xmlXPtrLocationSetMerge) xmlXPtrLocationSetMerge__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrLocationSetMerge xmlXPtrLocationSetMerge__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrLocationSetRemove +extern __typeof (xmlXPtrLocationSetRemove) xmlXPtrLocationSetRemove __attribute((alias("xmlXPtrLocationSetRemove__internal_alias"))); +#else +#ifndef xmlXPtrLocationSetRemove +extern __typeof (xmlXPtrLocationSetRemove) xmlXPtrLocationSetRemove__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrLocationSetRemove xmlXPtrLocationSetRemove__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewCollapsedRange +extern __typeof (xmlXPtrNewCollapsedRange) xmlXPtrNewCollapsedRange __attribute((alias("xmlXPtrNewCollapsedRange__internal_alias"))); +#else +#ifndef xmlXPtrNewCollapsedRange +extern __typeof (xmlXPtrNewCollapsedRange) xmlXPtrNewCollapsedRange__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewCollapsedRange xmlXPtrNewCollapsedRange__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewContext +extern __typeof (xmlXPtrNewContext) xmlXPtrNewContext __attribute((alias("xmlXPtrNewContext__internal_alias"))); +#else +#ifndef xmlXPtrNewContext +extern __typeof (xmlXPtrNewContext) xmlXPtrNewContext__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewContext xmlXPtrNewContext__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewLocationSetNodeSet +extern __typeof (xmlXPtrNewLocationSetNodeSet) xmlXPtrNewLocationSetNodeSet __attribute((alias("xmlXPtrNewLocationSetNodeSet__internal_alias"))); +#else +#ifndef xmlXPtrNewLocationSetNodeSet +extern __typeof (xmlXPtrNewLocationSetNodeSet) xmlXPtrNewLocationSetNodeSet__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewLocationSetNodeSet xmlXPtrNewLocationSetNodeSet__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewLocationSetNodes +extern __typeof (xmlXPtrNewLocationSetNodes) xmlXPtrNewLocationSetNodes __attribute((alias("xmlXPtrNewLocationSetNodes__internal_alias"))); +#else +#ifndef xmlXPtrNewLocationSetNodes +extern __typeof (xmlXPtrNewLocationSetNodes) xmlXPtrNewLocationSetNodes__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewLocationSetNodes xmlXPtrNewLocationSetNodes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewRange +extern __typeof (xmlXPtrNewRange) xmlXPtrNewRange __attribute((alias("xmlXPtrNewRange__internal_alias"))); +#else +#ifndef xmlXPtrNewRange +extern __typeof (xmlXPtrNewRange) xmlXPtrNewRange__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewRange xmlXPtrNewRange__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewRangeNodeObject +extern __typeof (xmlXPtrNewRangeNodeObject) xmlXPtrNewRangeNodeObject __attribute((alias("xmlXPtrNewRangeNodeObject__internal_alias"))); +#else +#ifndef xmlXPtrNewRangeNodeObject +extern __typeof (xmlXPtrNewRangeNodeObject) xmlXPtrNewRangeNodeObject__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewRangeNodeObject xmlXPtrNewRangeNodeObject__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewRangeNodePoint +extern __typeof (xmlXPtrNewRangeNodePoint) xmlXPtrNewRangeNodePoint __attribute((alias("xmlXPtrNewRangeNodePoint__internal_alias"))); +#else +#ifndef xmlXPtrNewRangeNodePoint +extern __typeof (xmlXPtrNewRangeNodePoint) xmlXPtrNewRangeNodePoint__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewRangeNodePoint xmlXPtrNewRangeNodePoint__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewRangeNodes +extern __typeof (xmlXPtrNewRangeNodes) xmlXPtrNewRangeNodes __attribute((alias("xmlXPtrNewRangeNodes__internal_alias"))); +#else +#ifndef xmlXPtrNewRangeNodes +extern __typeof (xmlXPtrNewRangeNodes) xmlXPtrNewRangeNodes__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewRangeNodes xmlXPtrNewRangeNodes__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewRangePointNode +extern __typeof (xmlXPtrNewRangePointNode) xmlXPtrNewRangePointNode __attribute((alias("xmlXPtrNewRangePointNode__internal_alias"))); +#else +#ifndef xmlXPtrNewRangePointNode +extern __typeof (xmlXPtrNewRangePointNode) xmlXPtrNewRangePointNode__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewRangePointNode xmlXPtrNewRangePointNode__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrNewRangePoints +extern __typeof (xmlXPtrNewRangePoints) xmlXPtrNewRangePoints __attribute((alias("xmlXPtrNewRangePoints__internal_alias"))); +#else +#ifndef xmlXPtrNewRangePoints +extern __typeof (xmlXPtrNewRangePoints) xmlXPtrNewRangePoints__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrNewRangePoints xmlXPtrNewRangePoints__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrRangeToFunction +extern __typeof (xmlXPtrRangeToFunction) xmlXPtrRangeToFunction __attribute((alias("xmlXPtrRangeToFunction__internal_alias"))); +#else +#ifndef xmlXPtrRangeToFunction +extern __typeof (xmlXPtrRangeToFunction) xmlXPtrRangeToFunction__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrRangeToFunction xmlXPtrRangeToFunction__internal_alias +#endif +#endif +#endif + +#if defined(LIBXML_XPTR_ENABLED) +#ifdef bottom_xpointer +#undef xmlXPtrWrapLocationSet +extern __typeof (xmlXPtrWrapLocationSet) xmlXPtrWrapLocationSet __attribute((alias("xmlXPtrWrapLocationSet__internal_alias"))); +#else +#ifndef xmlXPtrWrapLocationSet +extern __typeof (xmlXPtrWrapLocationSet) xmlXPtrWrapLocationSet__internal_alias __attribute((visibility("hidden"))); +#define xmlXPtrWrapLocationSet xmlXPtrWrapLocationSet__internal_alias +#endif +#endif +#endif + + +#endif +#endif +#endif +#endif +#endif + diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/encoding.c gettext-0.19.7/gnulib-local/lib/libxml/encoding.c --- gettext-0.19.6/gnulib-local/lib/libxml/encoding.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/encoding.c 2015-12-23 07:08:27.000000000 +0000 @@ -1,7 +1,7 @@ /* * encoding.c : implements the encoding conversion functions needed for XML * - * Related specs: + * Related specs: * rfc2044 (UTF-8 and UTF-16) F. Yergeau Alis Technologies * rfc2781 UTF-16, an encoding of ISO 10646, P. Hoffman, F. Yergeau * [ISO-10646] UTF-8 and UTF-16 in Annexes @@ -24,6 +24,7 @@ #include "libxml.h" #include +#include #ifdef HAVE_CTYPE_H #include @@ -44,6 +45,9 @@ #include #include +#include "buf.h" +#include "enc.h" + static xmlCharEncodingHandlerPtr xmlUTF16LEHandler = NULL; static xmlCharEncodingHandlerPtr xmlUTF16BEHandler = NULL; @@ -58,7 +62,7 @@ static int xmlCharEncodingAliasesNb = 0; static int xmlCharEncodingAliasesMax = 0; -#ifdef LIBXML_ICONV_ENABLED +#if defined(LIBXML_ICONV_ENABLED) || defined(LIBXML_ICU_ENABLED) #if 0 #define DEBUG_ENCODING /* Define this to get encoding traces */ #endif @@ -97,6 +101,54 @@ NULL, 0, val, NULL, NULL, 0, 0, msg, val); } +#ifdef LIBXML_ICU_ENABLED +static uconv_t* +openIcuConverter(const char* name, int toUnicode) +{ + UErrorCode status = U_ZERO_ERROR; + uconv_t *conv = (uconv_t *) xmlMalloc(sizeof(uconv_t)); + if (conv == NULL) + return NULL; + + conv->uconv = ucnv_open(name, &status); + if (U_FAILURE(status)) + goto error; + + status = U_ZERO_ERROR; + if (toUnicode) { + ucnv_setToUCallBack(conv->uconv, UCNV_TO_U_CALLBACK_STOP, + NULL, NULL, NULL, &status); + } + else { + ucnv_setFromUCallBack(conv->uconv, UCNV_FROM_U_CALLBACK_STOP, + NULL, NULL, NULL, &status); + } + if (U_FAILURE(status)) + goto error; + + status = U_ZERO_ERROR; + conv->utf8 = ucnv_open("UTF-8", &status); + if (U_SUCCESS(status)) + return conv; + +error: + if (conv->uconv) + ucnv_close(conv->uconv); + xmlFree(conv); + return NULL; +} + +static void +closeIcuConverter(uconv_t *conv) +{ + if (conv != NULL) { + ucnv_close(conv->uconv); + ucnv_close(conv->utf8); + xmlFree(conv); + } +} +#endif /* LIBXML_ICU_ENABLED */ + /************************************************************************ * * * Conversions To/From UTF8 encoding * @@ -135,12 +187,12 @@ break; if (c < 0x80) { *out++ = c; - } else { + } else { *outlen = out - outstart; *inlen = processed - base; return(-1); } - + processed = (const unsigned char*) in; } *outlen = out - outstart; @@ -206,7 +258,7 @@ if (inend - in < trailing) { break; - } + } for ( ; trailing; trailing--) { if ((in >= inend) || (((d= *in++) & 0xC0) != 0x80)) @@ -263,19 +315,19 @@ outend = out + *outlen; inend = in + (*inlen); instop = inend; - - while (in < inend && out < outend - 1) { - if (*in >= 0x80) { + + while ((in < inend) && (out < outend - 1)) { + if (*in >= 0x80) { *out++ = (((*in) >> 6) & 0x1F) | 0xC0; - *out++ = ((*in) & 0x3F) | 0x80; + *out++ = ((*in) & 0x3F) | 0x80; ++in; } - if (instop - in > outend - out) instop = in + (outend - out); - while (in < instop && *in < 0x80) { + if ((instop - in) > (outend - out)) instop = in + (outend - out); + while ((in < instop) && (*in < 0x80)) { *out++ = *in++; } - } - if (in < inend && out < outend && *in < 0x80) { + } + if ((in < inend) && (out < outend) && (*in < 0x80)) { *out++ = *in++; } *outlen = out - outstart; @@ -379,7 +431,7 @@ if (inend - in < trailing) { break; - } + } for ( ; trailing; trailing--) { if (in >= inend) @@ -487,7 +539,7 @@ else if (c < 0x800) { *out++= ((c >> 6) & 0x1F) | 0xC0; bits= 0; } else if (c < 0x10000) { *out++= ((c >> 12) & 0x0F) | 0xE0; bits= 6; } else { *out++= ((c >> 18) & 0x07) | 0xF0; bits= 12; } - + for ( ; bits >= 0; bits-= 6) { if (out >= outend) break; @@ -512,7 +564,7 @@ * block of chars out. * * Returns the number of bytes written, or -1 if lack of space, or -2 - * if the transcoding failed. + * if the transcoding failed. */ static int UTF8ToUTF16LE(unsigned char* outb, int *outlen, @@ -558,7 +610,7 @@ if (inend - in < trailing) { break; - } + } for ( ; trailing; trailing--) { if ((in >= inend) || (((d= *in++) & 0xC0) != 0x80)) @@ -621,7 +673,7 @@ * block of chars out. * * Returns the number of bytes written, or -1 if lack of space, or -2 - * if the transcoding failed. + * if the transcoding failed. */ static int UTF8ToUTF16(unsigned char* outb, int *outlen, @@ -693,7 +745,7 @@ in++; } else { c= *in++; - } + } if ((c & 0xFC00) == 0xD800) { /* surrogates */ if (in >= inend) { /* (in > inend) shouldn't happens */ *outlen = out - outstart; @@ -723,15 +775,15 @@ } /* assertion: c is a single UTF-4 value */ - if (out >= outend) + if (out >= outend) break; if (c < 0x80) { *out++= c; bits= -6; } else if (c < 0x800) { *out++= ((c >> 6) & 0x1F) | 0xC0; bits= 0; } else if (c < 0x10000) { *out++= ((c >> 12) & 0x0F) | 0xE0; bits= 6; } else { *out++= ((c >> 18) & 0x07) | 0xF0; bits= 12; } - + for ( ; bits >= 0; bits-= 6) { - if (out >= outend) + if (out >= outend) break; *out++= ((c >> bits) & 0x3F) | 0x80; } @@ -754,7 +806,7 @@ * block of chars out. * * Returns the number of byte written, or -1 by lack of space, or -2 - * if the transcoding failed. + * if the transcoding failed. */ static int UTF8ToUTF16BE(unsigned char* outb, int *outlen, @@ -800,7 +852,7 @@ if (inend - in < trailing) { break; - } + } for ( ; trailing; trailing--) { if ((in >= inend) || (((d= *in++) & 0xC0) != 0x80)) break; @@ -864,13 +916,13 @@ * * Guess the encoding of the entity using the first bytes of the entity content * according to the non-normative appendix F of the XML-1.0 recommendation. - * + * * Returns one of the XML_CHAR_ENCODING_... values. */ xmlCharEncoding xmlDetectCharEncoding(const unsigned char* in, int len) { - if (in == NULL) + if (in == NULL) return(XML_CHAR_ENCODING_NONE); if (len >= 4) { if ((in[0] == 0x00) && (in[1] == 0x00) && @@ -951,7 +1003,7 @@ * @alias: the alias name as parsed, in UTF-8 format (ASCII actually) * * Lookup an encoding name for the given alias. - * + * * Returns NULL if not found, otherwise the original name */ const char * @@ -989,7 +1041,7 @@ * * Registers an alias @alias for an encoding named @name. Existing alias * will be overwritten. - * + * * Returns 0 in case of success, -1 in case of error */ int @@ -1009,13 +1061,13 @@ if (xmlCharEncodingAliases == NULL) { xmlCharEncodingAliasesNb = 0; xmlCharEncodingAliasesMax = 20; - xmlCharEncodingAliases = (xmlCharEncodingAliasPtr) + xmlCharEncodingAliases = (xmlCharEncodingAliasPtr) xmlMalloc(xmlCharEncodingAliasesMax * sizeof(xmlCharEncodingAlias)); if (xmlCharEncodingAliases == NULL) return(-1); } else if (xmlCharEncodingAliasesNb >= xmlCharEncodingAliasesMax) { xmlCharEncodingAliasesMax *= 2; - xmlCharEncodingAliases = (xmlCharEncodingAliasPtr) + xmlCharEncodingAliases = (xmlCharEncodingAliasPtr) xmlRealloc(xmlCharEncodingAliases, xmlCharEncodingAliasesMax * sizeof(xmlCharEncodingAlias)); } @@ -1046,7 +1098,7 @@ * @alias: the alias name as parsed, in UTF-8 format (ASCII actually) * * Unregisters an encoding alias @alias - * + * * Returns 0 in case of success, -1 in case of error */ int @@ -1081,7 +1133,7 @@ * Compare the string to the encoding schemes already known. Note * that the comparison is case insensitive accordingly to the section * [XML] 4.3.3 Character Encoding in Entities. - * + * * Returns one of the XML_CHAR_ENCODING_... values or XML_CHAR_ENCODING_NONE * if not recognized. */ @@ -1118,7 +1170,7 @@ */ if (!strcmp(upper, "UTF-16")) return(XML_CHAR_ENCODING_UTF16LE); if (!strcmp(upper, "UTF16")) return(XML_CHAR_ENCODING_UTF16LE); - + if (!strcmp(upper, "ISO-10646-UCS-2")) return(XML_CHAR_ENCODING_UCS2); if (!strcmp(upper, "UCS-2")) return(XML_CHAR_ENCODING_UCS2); if (!strcmp(upper, "UCS2")) return(XML_CHAR_ENCODING_UCS2); @@ -1131,7 +1183,7 @@ if (!strcmp(upper, "UCS-4")) return(XML_CHAR_ENCODING_UCS4LE); if (!strcmp(upper, "UCS4")) return(XML_CHAR_ENCODING_UCS4LE); - + if (!strcmp(upper, "ISO-8859-1")) return(XML_CHAR_ENCODING_8859_1); if (!strcmp(upper, "ISO-LATIN-1")) return(XML_CHAR_ENCODING_8859_1); if (!strcmp(upper, "ISO LATIN 1")) return(XML_CHAR_ENCODING_8859_1); @@ -1254,7 +1306,7 @@ * Returns the xmlCharEncodingHandlerPtr created (or NULL in case of error). */ xmlCharEncodingHandlerPtr -xmlNewCharEncodingHandler(const char *name, +xmlNewCharEncodingHandler(const char *name, xmlCharEncodingInputFunc input, xmlCharEncodingOutputFunc output) { xmlCharEncodingHandlerPtr handler; @@ -1299,6 +1351,7 @@ xmlEncodingErrMemory("xmlNewCharEncodingHandler : out of memory !\n"); return(NULL); } + memset(handler, 0, sizeof(xmlCharEncodingHandler)); handler->input = input; handler->output = output; handler->name = up; @@ -1306,7 +1359,11 @@ #ifdef LIBXML_ICONV_ENABLED handler->iconv_in = NULL; handler->iconv_out = NULL; -#endif /* LIBXML_ICONV_ENABLED */ +#endif +#ifdef LIBXML_ICU_ENABLED + handler->uconv_in = NULL; + handler->uconv_out = NULL; +#endif /* * registers and returns the handler. @@ -1330,7 +1387,7 @@ void xmlInitCharEncodingHandlers(void) { unsigned short int tst = 0x1234; - unsigned char *ptr = (unsigned char *) &tst; + unsigned char *ptr = (unsigned char *) &tst; if (handlers != NULL) return; @@ -1350,9 +1407,9 @@ } xmlNewCharEncodingHandler("UTF-8", UTF8ToUTF8, UTF8ToUTF8); #ifdef LIBXML_OUTPUT_ENABLED - xmlUTF16LEHandler = + xmlUTF16LEHandler = xmlNewCharEncodingHandler("UTF-16LE", UTF16LEToUTF8, UTF8ToUTF16LE); - xmlUTF16BEHandler = + xmlUTF16BEHandler = xmlNewCharEncodingHandler("UTF-16BE", UTF16BEToUTF8, UTF8ToUTF16BE); xmlNewCharEncodingHandler("UTF-16", UTF16LEToUTF8, UTF8ToUTF16); xmlNewCharEncodingHandler("ISO-8859-1", isolat1ToUTF8, UTF8Toisolat1); @@ -1362,16 +1419,16 @@ xmlNewCharEncodingHandler("HTML", NULL, UTF8ToHtml); #endif #else - xmlUTF16LEHandler = + xmlUTF16LEHandler = xmlNewCharEncodingHandler("UTF-16LE", UTF16LEToUTF8, NULL); - xmlUTF16BEHandler = + xmlUTF16BEHandler = xmlNewCharEncodingHandler("UTF-16BE", UTF16BEToUTF8, NULL); xmlNewCharEncodingHandler("UTF-16", UTF16LEToUTF8, NULL); xmlNewCharEncodingHandler("ISO-8859-1", isolat1ToUTF8, NULL); xmlNewCharEncodingHandler("ASCII", asciiToUTF8, NULL); xmlNewCharEncodingHandler("US-ASCII", asciiToUTF8, NULL); #endif /* LIBXML_OUTPUT_ENABLED */ -#ifndef LIBXML_ICONV_ENABLED +#if !defined(LIBXML_ICONV_ENABLED) && !defined(LIBXML_ICU_ENABLED) #ifdef LIBXML_ISO8859X_ENABLED xmlRegisterCharEncodingHandlersISO8859x (); #endif @@ -1414,7 +1471,7 @@ void xmlRegisterCharEncodingHandler(xmlCharEncodingHandlerPtr handler) { if (handlers == NULL) xmlInitCharEncodingHandlers(); - if (handler == NULL) { + if ((handler == NULL) || (handlers == NULL)) { xmlEncodingErr(XML_I18N_NO_HANDLER, "xmlRegisterCharEncodingHandler: NULL handler !\n", NULL); return; @@ -1458,6 +1515,10 @@ if (handler != NULL) return(handler); handler = xmlFindCharEncodingHandler("ebcdic"); if (handler != NULL) return(handler); + handler = xmlFindCharEncodingHandler("EBCDIC-US"); + if (handler != NULL) return(handler); + handler = xmlFindCharEncodingHandler("IBM-037"); + if (handler != NULL) return(handler); break; case XML_CHAR_ENCODING_UCS4BE: handler = xmlFindCharEncodingHandler("ISO-10646-UCS-4"); @@ -1548,10 +1609,10 @@ handler = xmlFindCharEncodingHandler("EUC-JP"); if (handler != NULL) return(handler); break; - default: + default: break; } - + #ifdef DEBUG_ENCODING xmlGenericError(xmlGenericErrorContext, "No handler found for encoding %d\n", enc); @@ -1576,6 +1637,10 @@ xmlCharEncodingHandlerPtr enc; iconv_t icv_in, icv_out; #endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + xmlCharEncodingHandlerPtr encu; + uconv_t *ucv_in, *ucv_out; +#endif /* LIBXML_ICU_ENABLED */ char upper[100]; int i; @@ -1600,14 +1665,17 @@ } upper[i] = 0; - for (i = 0;i < nbCharEncodingHandler; i++) - if (!strcmp(upper, handlers[i]->name)) { + if (handlers != NULL) { + for (i = 0;i < nbCharEncodingHandler; i++) { + if (!strcmp(upper, handlers[i]->name)) { #ifdef DEBUG_ENCODING - xmlGenericError(xmlGenericErrorContext, - "Found registered handler for encoding %s\n", name); + xmlGenericError(xmlGenericErrorContext, + "Found registered handler for encoding %s\n", name); #endif - return(handlers[i]); - } + return(handlers[i]); + } + } + } #ifdef LIBXML_ICONV_ENABLED /* check whether iconv can handle this */ @@ -1627,6 +1695,7 @@ iconv_close(icv_out); return(NULL); } + memset(enc, 0, sizeof(xmlCharEncodingHandler)); enc->name = xmlMemStrdup(name); enc->input = NULL; enc->output = NULL; @@ -1642,6 +1711,36 @@ "iconv : problems with filters for '%s'\n", name); } #endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + /* check whether icu can handle this */ + ucv_in = openIcuConverter(name, 1); + ucv_out = openIcuConverter(name, 0); + if (ucv_in != NULL && ucv_out != NULL) { + encu = (xmlCharEncodingHandlerPtr) + xmlMalloc(sizeof(xmlCharEncodingHandler)); + if (encu == NULL) { + closeIcuConverter(ucv_in); + closeIcuConverter(ucv_out); + return(NULL); + } + memset(encu, 0, sizeof(xmlCharEncodingHandler)); + encu->name = xmlMemStrdup(name); + encu->input = NULL; + encu->output = NULL; + encu->uconv_in = ucv_in; + encu->uconv_out = ucv_out; +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "Found ICU converter handler for encoding %s\n", name); +#endif + return encu; + } else if (ucv_in != NULL || ucv_out != NULL) { + closeIcuConverter(ucv_in); + closeIcuConverter(ucv_out); + xmlEncodingErr(XML_ERR_INTERNAL_ERROR, + "ICU converter : problems with filters for '%s'\n", name); + } +#endif /* LIBXML_ICU_ENABLED */ #ifdef DEBUG_ENCODING xmlGenericError(xmlGenericErrorContext, @@ -1679,12 +1778,12 @@ * @in: a pointer to an array of ISO Latin 1 chars * @inlen: the length of @in * - * Returns 0 if success, or + * Returns 0 if success, or * -1 by lack of space, or * -2 if the transcoding fails (for *in is not valid utf8 string or * the result of transformation can't fit into the encoding we want), or * -3 if there the last byte can't form a single output char. - * + * * The value of @inlen after return is the number of octets consumed * as the return value is positive, else unpredictable. * The value of @outlen after return is the number of ocetes consumed. @@ -1703,7 +1802,7 @@ } icv_inlen = *inlen; icv_outlen = *outlen; - ret = iconv(cd, (char **) &icv_in, &icv_inlen, &icv_out, &icv_outlen); + ret = iconv(cd, (ICONV_CONST char **) &icv_in, &icv_inlen, &icv_out, &icv_outlen); *inlen -= icv_inlen; *outlen -= icv_outlen; if ((icv_inlen != 0) || (ret == -1)) { @@ -1732,27 +1831,97 @@ /************************************************************************ * * + * ICU based generic conversion functions * + * * + ************************************************************************/ + +#ifdef LIBXML_ICU_ENABLED +/** + * xmlUconvWrapper: + * @cd: ICU uconverter data structure + * @toUnicode : non-zero if toUnicode. 0 otherwise. + * @out: a pointer to an array of bytes to store the result + * @outlen: the length of @out + * @in: a pointer to an array of ISO Latin 1 chars + * @inlen: the length of @in + * + * Returns 0 if success, or + * -1 by lack of space, or + * -2 if the transcoding fails (for *in is not valid utf8 string or + * the result of transformation can't fit into the encoding we want), or + * -3 if there the last byte can't form a single output char. + * + * The value of @inlen after return is the number of octets consumed + * as the return value is positive, else unpredictable. + * The value of @outlen after return is the number of ocetes consumed. + */ +static int +xmlUconvWrapper(uconv_t *cd, int toUnicode, unsigned char *out, int *outlen, + const unsigned char *in, int *inlen) { + const char *ucv_in = (const char *) in; + char *ucv_out = (char *) out; + UErrorCode err = U_ZERO_ERROR; + + if ((out == NULL) || (outlen == NULL) || (inlen == NULL) || (in == NULL)) { + if (outlen != NULL) *outlen = 0; + return(-1); + } + + /* + * TODO(jungshik) + * 1. is ucnv_convert(To|From)Algorithmic better? + * 2. had we better use an explicit pivot buffer? + * 3. error returned comes from 'fromUnicode' only even + * when toUnicode is true ! + */ + if (toUnicode) { + /* encoding => UTF-16 => UTF-8 */ + ucnv_convertEx(cd->utf8, cd->uconv, &ucv_out, ucv_out + *outlen, + &ucv_in, ucv_in + *inlen, NULL, NULL, NULL, NULL, + 0, TRUE, &err); + } else { + /* UTF-8 => UTF-16 => encoding */ + ucnv_convertEx(cd->uconv, cd->utf8, &ucv_out, ucv_out + *outlen, + &ucv_in, ucv_in + *inlen, NULL, NULL, NULL, NULL, + 0, TRUE, &err); + } + *inlen = ucv_in - (const char*) in; + *outlen = ucv_out - (char *) out; + if (U_SUCCESS(err)) + return 0; + if (err == U_BUFFER_OVERFLOW_ERROR) + return -1; + if (err == U_INVALID_CHAR_FOUND || err == U_ILLEGAL_CHAR_FOUND) + return -2; + /* if (err == U_TRUNCATED_CHAR_FOUND) */ + return -3; +} +#endif /* LIBXML_ICU_ENABLED */ + +/************************************************************************ + * * * The real API used by libxml for on-the-fly conversion * * * ************************************************************************/ /** - * xmlCharEncFirstLine: + * xmlCharEncFirstLineInt: * @handler: char enconding transformation data structure * @out: an xmlBuffer for the output. * @in: an xmlBuffer for the input - * + * @len: number of bytes to convert for the first line, or -1 + * * Front-end for the encoding handler input function, but handle only * the very first line, i.e. limit itself to 45 chars. - * - * Returns the number of byte written if success, or + * + * Returns the number of byte written if success, or * -1 general error * -2 if the transcoding fails (for *in is not valid utf8 string or * the result of transformation can't fit into the encoding we want), or */ int -xmlCharEncFirstLine(xmlCharEncodingHandler *handler, xmlBufferPtr out, - xmlBufferPtr in) { +xmlCharEncFirstLineInt(xmlCharEncodingHandler *handler, xmlBufferPtr out, + xmlBufferPtr in, int len) { int ret = -2; int written; int toconv; @@ -1761,19 +1930,28 @@ if (out == NULL) return(-1); if (in == NULL) return(-1); - written = out->size - out->use; + /* calculate space available */ + written = out->size - out->use - 1; /* count '\0' */ toconv = in->use; - if (toconv * 2 >= written) { - xmlBufferGrow(out, toconv); - written = out->size - out->use - 1; - } - /* * echo '' | wc -c => 38 * 45 chars should be sufficient to reach the end of the encoding * declaration without going too far inside the document content. - */ - written = 45; + * on UTF-16 this means 90bytes, on UCS4 this means 180 + * The actual value depending on guessed encoding is passed as @len + * if provided + */ + if (len >= 0) { + if (toconv > len) + toconv = len; + } else { + if (toconv > 180) + toconv = 180; + } + if (toconv * 2 >= written) { + xmlBufferGrow(out, toconv * 2); + written = out->size - out->use - 1; + } if (handler->input != NULL) { ret = handler->input(&out->content[out->use], &written, @@ -1792,6 +1970,16 @@ if (ret == -1) ret = -3; } #endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + else if (handler->uconv_in != NULL) { + ret = xmlUconvWrapper(handler->uconv_in, 1, &out->content[out->use], + &written, in->content, &toconv); + xmlBufferShrink(in, toconv); + out->use += written; + out->content[out->use] = 0; + if (ret == -1) ret = -3; + } +#endif /* LIBXML_ICU_ENABLED */ #ifdef DEBUG_ENCODING switch (ret) { case 0: @@ -1824,14 +2012,280 @@ } /** + * xmlCharEncFirstLine: + * @handler: char enconding transformation data structure + * @out: an xmlBuffer for the output. + * @in: an xmlBuffer for the input + * + * Front-end for the encoding handler input function, but handle only + * the very first line, i.e. limit itself to 45 chars. + * + * Returns the number of byte written if success, or + * -1 general error + * -2 if the transcoding fails (for *in is not valid utf8 string or + * the result of transformation can't fit into the encoding we want), or + */ +int +xmlCharEncFirstLine(xmlCharEncodingHandler *handler, xmlBufferPtr out, + xmlBufferPtr in) { + return(xmlCharEncFirstLineInt(handler, out, in, -1)); +} + +/** + * xmlCharEncFirstLineInput: + * @input: a parser input buffer + * @len: number of bytes to convert for the first line, or -1 + * + * Front-end for the encoding handler input function, but handle only + * the very first line. Point is that this is based on autodetection + * of the encoding and once that first line is converted we may find + * out that a different decoder is needed to process the input. + * + * Returns the number of byte written if success, or + * -1 general error + * -2 if the transcoding fails (for *in is not valid utf8 string or + * the result of transformation can't fit into the encoding we want), or + */ +int +xmlCharEncFirstLineInput(xmlParserInputBufferPtr input, int len) +{ + int ret = -2; + size_t written; + size_t toconv; + int c_in; + int c_out; + xmlBufPtr in; + xmlBufPtr out; + + if ((input == NULL) || (input->encoder == NULL) || + (input->buffer == NULL) || (input->raw == NULL)) + return (-1); + out = input->buffer; + in = input->raw; + + toconv = xmlBufUse(in); + if (toconv == 0) + return (0); + written = xmlBufAvail(out) - 1; /* count '\0' */ + /* + * echo '' | wc -c => 38 + * 45 chars should be sufficient to reach the end of the encoding + * declaration without going too far inside the document content. + * on UTF-16 this means 90bytes, on UCS4 this means 180 + * The actual value depending on guessed encoding is passed as @len + * if provided + */ + if (len >= 0) { + if (toconv > (unsigned int) len) + toconv = len; + } else { + if (toconv > 180) + toconv = 180; + } + if (toconv * 2 >= written) { + xmlBufGrow(out, toconv * 2); + written = xmlBufAvail(out) - 1; + } + if (written > 360) + written = 360; + + c_in = toconv; + c_out = written; + if (input->encoder->input != NULL) { + ret = input->encoder->input(xmlBufEnd(out), &c_out, + xmlBufContent(in), &c_in); + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + } +#ifdef LIBXML_ICONV_ENABLED + else if (input->encoder->iconv_in != NULL) { + ret = xmlIconvWrapper(input->encoder->iconv_in, xmlBufEnd(out), + &c_out, xmlBufContent(in), &c_in); + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + if (ret == -1) + ret = -3; + } +#endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + else if (input->encoder->uconv_in != NULL) { + ret = xmlUconvWrapper(input->encoder->uconv_in, 1, xmlBufEnd(out), + &c_out, xmlBufContent(in), &c_in); + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + if (ret == -1) + ret = -3; + } +#endif /* LIBXML_ICU_ENABLED */ + switch (ret) { + case 0: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "converted %d bytes to %d bytes of input\n", + c_in, c_out); +#endif + break; + case -1: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "converted %d bytes to %d bytes of input, %d left\n", + c_in, c_out, (int)xmlBufUse(in)); +#endif + break; + case -3: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "converted %d bytes to %d bytes of input, %d left\n", + c_in, c_out, (int)xmlBufUse(in)); +#endif + break; + case -2: { + char buf[50]; + const xmlChar *content = xmlBufContent(in); + + snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X", + content[0], content[1], + content[2], content[3]); + buf[49] = 0; + xmlEncodingErr(XML_I18N_CONV_FAILED, + "input conversion failed due to input error, bytes %s\n", + buf); + } + } + /* + * Ignore when input buffer is not on a boundary + */ + if (ret == -3) ret = 0; + if (ret == -1) ret = 0; + return(ret); +} + +/** + * xmlCharEncInput: + * @input: a parser input buffer + * @flush: try to flush all the raw buffer + * + * Generic front-end for the encoding handler on parser input + * + * Returns the number of byte written if success, or + * -1 general error + * -2 if the transcoding fails (for *in is not valid utf8 string or + * the result of transformation can't fit into the encoding we want), or + */ +int +xmlCharEncInput(xmlParserInputBufferPtr input, int flush) +{ + int ret = -2; + size_t written; + size_t toconv; + int c_in; + int c_out; + xmlBufPtr in; + xmlBufPtr out; + + if ((input == NULL) || (input->encoder == NULL) || + (input->buffer == NULL) || (input->raw == NULL)) + return (-1); + out = input->buffer; + in = input->raw; + + toconv = xmlBufUse(in); + if (toconv == 0) + return (0); + if ((toconv > 64 * 1024) && (flush == 0)) + toconv = 64 * 1024; + written = xmlBufAvail(out); + if (written > 0) + written--; /* count '\0' */ + if (toconv * 2 >= written) { + xmlBufGrow(out, toconv * 2); + written = xmlBufAvail(out); + if (written > 0) + written--; /* count '\0' */ + } + if ((written > 128 * 1024) && (flush == 0)) + written = 128 * 1024; + + c_in = toconv; + c_out = written; + if (input->encoder->input != NULL) { + ret = input->encoder->input(xmlBufEnd(out), &c_out, + xmlBufContent(in), &c_in); + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + } +#ifdef LIBXML_ICONV_ENABLED + else if (input->encoder->iconv_in != NULL) { + ret = xmlIconvWrapper(input->encoder->iconv_in, xmlBufEnd(out), + &c_out, xmlBufContent(in), &c_in); + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + if (ret == -1) + ret = -3; + } +#endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + else if (input->encoder->uconv_in != NULL) { + ret = xmlUconvWrapper(input->encoder->uconv_in, 1, xmlBufEnd(out), + &c_out, xmlBufContent(in), &c_in); + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + if (ret == -1) + ret = -3; + } +#endif /* LIBXML_ICU_ENABLED */ + switch (ret) { + case 0: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "converted %d bytes to %d bytes of input\n", + c_in, c_out); +#endif + break; + case -1: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "converted %d bytes to %d bytes of input, %d left\n", + c_in, c_out, (int)xmlBufUse(in)); +#endif + break; + case -3: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "converted %d bytes to %d bytes of input, %d left\n", + c_in, c_out, (int)xmlBufUse(in)); +#endif + break; + case -2: { + char buf[50]; + const xmlChar *content = xmlBufContent(in); + + snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X", + content[0], content[1], + content[2], content[3]); + buf[49] = 0; + xmlEncodingErr(XML_I18N_CONV_FAILED, + "input conversion failed due to input error, bytes %s\n", + buf); + } + } + /* + * Ignore when input buffer is not on a boundary + */ + if (ret == -3) + ret = 0; + return (c_out? c_out : ret); +} + +/** * xmlCharEncInFunc: * @handler: char encoding transformation data structure * @out: an xmlBuffer for the output. * @in: an xmlBuffer for the input - * + * * Generic front-end for the encoding handler input function - * - * Returns the number of byte written if success, or + * + * Returns the number of byte written if success, or * -1 general error * -2 if the transcoding fails (for *in is not valid utf8 string or * the result of transformation can't fit into the encoding we want), or @@ -1854,7 +2308,7 @@ toconv = in->use; if (toconv == 0) return (0); - written = out->size - out->use; + written = out->size - out->use -1; /* count '\0' */ if (toconv * 2 >= written) { xmlBufferGrow(out, out->size + toconv * 2); written = out->size - out->use - 1; @@ -1877,6 +2331,17 @@ ret = -3; } #endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + else if (handler->uconv_in != NULL) { + ret = xmlUconvWrapper(handler->uconv_in, 1, &out->content[out->use], + &written, in->content, &toconv); + xmlBufferShrink(in, toconv); + out->use += written; + out->content[out->use] = 0; + if (ret == -1) + ret = -3; + } +#endif /* LIBXML_ICU_ENABLED */ switch (ret) { case 0: #ifdef DEBUG_ENCODING @@ -1902,7 +2367,7 @@ case -2: { char buf[50]; - snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X", + snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X", in->content[0], in->content[1], in->content[2], in->content[3]); buf[49] = 0; @@ -1919,20 +2384,251 @@ return (written? written : ret); } +#ifdef LIBXML_OUTPUT_ENABLED +/** + * xmlCharEncOutput: + * @output: a parser output buffer + * @init: is this an initialization call without data + * + * Generic front-end for the encoding handler on parser output + * a first call with @init == 1 has to be made first to initiate the + * output in case of non-stateless encoding needing to initiate their + * state or the output (like the BOM in UTF16). + * In case of UTF8 sequence conversion errors for the given encoder, + * the content will be automatically remapped to a CharRef sequence. + * + * Returns the number of byte written if success, or + * -1 general error + * -2 if the transcoding fails (for *in is not valid utf8 string or + * the result of transformation can't fit into the encoding we want), or + */ +int +xmlCharEncOutput(xmlOutputBufferPtr output, int init) +{ + int ret = -2; + size_t written; + size_t writtentot = 0; + size_t toconv; + int c_in; + int c_out; + xmlBufPtr in; + xmlBufPtr out; + int charref_len = 0; + + if ((output == NULL) || (output->encoder == NULL) || + (output->buffer == NULL) || (output->conv == NULL)) + return (-1); + out = output->conv; + in = output->buffer; + +retry: + + written = xmlBufAvail(out); + if (written > 0) + written--; /* count '\0' */ + + /* + * First specific handling of the initialization call + */ + if (init) { + c_in = 0; + c_out = written; + if (output->encoder->output != NULL) { + ret = output->encoder->output(xmlBufEnd(out), &c_out, + NULL, &c_in); + if (ret > 0) /* Gennady: check return value */ + xmlBufAddLen(out, c_out); + } +#ifdef LIBXML_ICONV_ENABLED + else if (output->encoder->iconv_out != NULL) { + ret = xmlIconvWrapper(output->encoder->iconv_out, xmlBufEnd(out), + &c_out, NULL, &c_in); + xmlBufAddLen(out, c_out); + } +#endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + else if (output->encoder->uconv_out != NULL) { + ret = xmlUconvWrapper(output->encoder->uconv_out, 0, xmlBufEnd(out), + &c_out, NULL, &c_in); + xmlBufAddLen(out, c_out); + } +#endif /* LIBXML_ICU_ENABLED */ +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "initialized encoder\n"); +#endif + return(0); + } + + /* + * Conversion itself. + */ + toconv = xmlBufUse(in); + if (toconv == 0) + return (0); + if (toconv > 64 * 1024) + toconv = 64 * 1024; + if (toconv * 4 >= written) { + xmlBufGrow(out, toconv * 4); + written = xmlBufAvail(out) - 1; + } + if (written > 256 * 1024) + written = 256 * 1024; + + c_in = toconv; + c_out = written; + if (output->encoder->output != NULL) { + ret = output->encoder->output(xmlBufEnd(out), &c_out, + xmlBufContent(in), &c_in); + if (c_out > 0) { + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + writtentot += c_out; + } + } +#ifdef LIBXML_ICONV_ENABLED + else if (output->encoder->iconv_out != NULL) { + ret = xmlIconvWrapper(output->encoder->iconv_out, xmlBufEnd(out), + &c_out, xmlBufContent(in), &c_in); + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + writtentot += c_out; + if (ret == -1) { + if (c_out > 0) { + /* + * Can be a limitation of iconv + */ + charref_len = 0; + goto retry; + } + ret = -3; + } + } +#endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + else if (output->encoder->uconv_out != NULL) { + ret = xmlUconvWrapper(output->encoder->uconv_out, 0, xmlBufEnd(out), + &c_out, xmlBufContent(in), &c_in); + xmlBufShrink(in, c_in); + xmlBufAddLen(out, c_out); + writtentot += c_out; + if (ret == -1) { + if (c_out > 0) { + /* + * Can be a limitation of uconv + */ + charref_len = 0; + goto retry; + } + ret = -3; + } + } +#endif /* LIBXML_ICU_ENABLED */ + else { + xmlEncodingErr(XML_I18N_NO_OUTPUT, + "xmlCharEncOutFunc: no output function !\n", NULL); + return(-1); + } + + if (ret >= 0) output += ret; + + /* + * Attempt to handle error cases + */ + switch (ret) { + case 0: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "converted %d bytes to %d bytes of output\n", + c_in, c_out); +#endif + break; + case -1: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "output conversion failed by lack of space\n"); +#endif + break; + case -3: +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext,"converted %d bytes to %d bytes of output %d left\n", + c_in, c_out, (int) xmlBufUse(in)); +#endif + break; + case -2: { + int len = (int) xmlBufUse(in); + xmlChar *content = xmlBufContent(in); + int cur; + + cur = xmlGetUTF8Char(content, &len); + if ((charref_len != 0) && (c_out < charref_len)) { + /* + * We attempted to insert a character reference and failed. + * Undo what was written and skip the remaining charref. + */ + xmlBufErase(out, c_out); + writtentot -= c_out; + xmlBufShrink(in, charref_len - c_out); + charref_len = 0; + + ret = -1; + break; + } else if (cur > 0) { + xmlChar charref[20]; + +#ifdef DEBUG_ENCODING + xmlGenericError(xmlGenericErrorContext, + "handling output conversion error\n"); + xmlGenericError(xmlGenericErrorContext, + "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n", + content[0], content[1], + content[2], content[3]); +#endif + /* + * Removes the UTF8 sequence, and replace it by a charref + * and continue the transcoding phase, hoping the error + * did not mangle the encoder state. + */ + charref_len = snprintf((char *) &charref[0], sizeof(charref), + "&#%d;", cur); + xmlBufShrink(in, len); + xmlBufAddHead(in, charref, -1); + + goto retry; + } else { + char buf[50]; + + snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X", + content[0], content[1], + content[2], content[3]); + buf[49] = 0; + xmlEncodingErr(XML_I18N_CONV_FAILED, + "output conversion failed due to conv error, bytes %s\n", + buf); + if (xmlBufGetAllocationScheme(in) != XML_BUFFER_ALLOC_IMMUTABLE) + content[0] = ' '; + } + break; + } + } + return(ret); +} +#endif + /** * xmlCharEncOutFunc: * @handler: char enconding transformation data structure * @out: an xmlBuffer for the output. * @in: an xmlBuffer for the input - * + * * Generic front-end for the encoding handler output function - * a first call with @in == NULL has to be made firs to initiate the + * a first call with @in == NULL has to be made firs to initiate the * output in case of non-stateless encoding needing to initiate their * state or the output (like the BOM in UTF16). * In case of UTF8 sequence conversion errors for the given encoder, * the content will be automatically remapped to a CharRef sequence. - * - * Returns the number of byte written if success, or + * + * Returns the number of byte written if success, or * -1 general error * -2 if the transcoding fails (for *in is not valid utf8 string or * the result of transformation can't fit into the encoding we want), or @@ -1945,12 +2641,13 @@ int writtentot = 0; int toconv; int output = 0; + int charref_len = 0; if (handler == NULL) return(-1); if (out == NULL) return(-1); retry: - + written = out->size - out->use; if (written > 0) @@ -1977,6 +2674,15 @@ out->content[out->use] = 0; } #endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + else if (handler->uconv_out != NULL) { + ret = xmlUconvWrapper(handler->uconv_out, 0, + &out->content[out->use], + &written, NULL, &toconv); + out->use += written; + out->content[out->use] = 0; + } +#endif /* LIBXML_ICU_ENABLED */ #ifdef DEBUG_ENCODING xmlGenericError(xmlGenericErrorContext, "initialized encoder\n"); @@ -1990,16 +2696,18 @@ toconv = in->use; if (toconv == 0) return(0); - if (toconv * 2 >= written) { - xmlBufferGrow(out, toconv * 2); + if (toconv * 4 >= written) { + xmlBufferGrow(out, toconv * 4); written = out->size - out->use - 1; } if (handler->output != NULL) { ret = handler->output(&out->content[out->use], &written, in->content, &toconv); - xmlBufferShrink(in, toconv); - out->use += written; - writtentot += written; + if (written > 0) { + xmlBufferShrink(in, toconv); + out->use += written; + writtentot += written; + } out->content[out->use] = 0; } #ifdef LIBXML_ICONV_ENABLED @@ -2015,12 +2723,34 @@ /* * Can be a limitation of iconv */ + charref_len = 0; goto retry; } ret = -3; } } #endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + else if (handler->uconv_out != NULL) { + ret = xmlUconvWrapper(handler->uconv_out, 0, + &out->content[out->use], + &written, in->content, &toconv); + xmlBufferShrink(in, toconv); + out->use += written; + writtentot += written; + out->content[out->use] = 0; + if (ret == -1) { + if (written > 0) { + /* + * Can be a limitation of iconv + */ + charref_len = 0; + goto retry; + } + ret = -3; + } + } +#endif /* LIBXML_ICU_ENABLED */ else { xmlEncodingErr(XML_I18N_NO_OUTPUT, "xmlCharEncOutFunc: no output function !\n", NULL); @@ -2058,7 +2788,19 @@ int cur; cur = xmlGetUTF8Char(utf, &len); - if (cur > 0) { + if ((charref_len != 0) && (written < charref_len)) { + /* + * We attempted to insert a character reference and failed. + * Undo what was written and skip the remaining charref. + */ + out->use -= written; + writtentot -= written; + xmlBufferShrink(in, charref_len - written); + charref_len = 0; + + ret = -1; + break; + } else if (cur > 0) { xmlChar charref[20]; #ifdef DEBUG_ENCODING @@ -2074,7 +2816,8 @@ * and continue the transcoding phase, hoping the error * did not mangle the encoder state. */ - snprintf((char *) &charref[0], sizeof(charref), "&#%d;", cur); + charref_len = snprintf((char *) &charref[0], sizeof(charref), + "&#%d;", cur); xmlBufferShrink(in, len); xmlBufferAddHead(in, charref, -1); @@ -2082,7 +2825,7 @@ } else { char buf[50]; - snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X", + snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X", in->content[0], in->content[1], in->content[2], in->content[3]); buf[49] = 0; @@ -2101,7 +2844,7 @@ /** * xmlCharEncCloseFunc: * @handler: char enconding transformation data structure - * + * * Generic front-end for encoding handler close function * * Returns 0 if success, or -1 in case of error @@ -2109,17 +2852,27 @@ int xmlCharEncCloseFunc(xmlCharEncodingHandler *handler) { int ret = 0; + int tofree = 0; + int i, handler_in_list = 0; + if (handler == NULL) return(-1); if (handler->name == NULL) return(-1); + if (handlers != NULL) { + for (i = 0;i < nbCharEncodingHandler; i++) { + if (handler == handlers[i]) { + handler_in_list = 1; + break; + } + } + } #ifdef LIBXML_ICONV_ENABLED /* * Iconv handlers can be used only once, free the whole block. * and the associated icon resources. */ - if ((handler->iconv_out != NULL) || (handler->iconv_in != NULL)) { - if (handler->name != NULL) - xmlFree(handler->name); - handler->name = NULL; + if ((handler_in_list == 0) && + ((handler->iconv_out != NULL) || (handler->iconv_in != NULL))) { + tofree = 1; if (handler->iconv_out != NULL) { if (iconv_close(handler->iconv_out)) ret = -1; @@ -2130,9 +2883,29 @@ ret = -1; handler->iconv_in = NULL; } - xmlFree(handler); } #endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + if ((handler_in_list == 0) && + ((handler->uconv_out != NULL) || (handler->uconv_in != NULL))) { + tofree = 1; + if (handler->uconv_out != NULL) { + closeIcuConverter(handler->uconv_out); + handler->uconv_out = NULL; + } + if (handler->uconv_in != NULL) { + closeIcuConverter(handler->uconv_in); + handler->uconv_in = NULL; + } + } +#endif + if (tofree) { + /* free up only dynamic handlers iconv/uconv */ + if (handler->name != NULL) + xmlFree(handler->name); + handler->name = NULL; + xmlFree(handler); + } #ifdef DEBUG_ENCODING if (ret) xmlGenericError(xmlGenericErrorContext, @@ -2162,7 +2935,7 @@ long xmlByteConsumed(xmlParserCtxtPtr ctxt) { xmlParserInputPtr in; - + if (ctxt == NULL) return(-1); in = ctxt->input; if (in == NULL) return(-1); @@ -2208,6 +2981,23 @@ cur += toconv; } while (ret == -2); #endif +#ifdef LIBXML_ICU_ENABLED + } else if (handler->uconv_out != NULL) { + do { + toconv = in->end - cur; + written = 32000; + ret = xmlUconvWrapper(handler->uconv_out, 0, &convbuf[0], + &written, cur, &toconv); + if (ret < 0) { + if (written > 0) + ret = -2; + else + return(-1); + } + unused += written; + cur += toconv; + } while (ret == -2); +#endif } else { /* could not find a converter */ return(-1); @@ -2220,7 +3010,7 @@ return(in->consumed + (in->cur - in->base)); } -#ifndef LIBXML_ICONV_ENABLED +#if !defined(LIBXML_ICONV_ENABLED) && !defined(LIBXML_ICU_ENABLED) #ifdef LIBXML_ISO8859X_ENABLED /** @@ -2246,6 +3036,7 @@ const unsigned char* outstart = out; const unsigned char* inend; const unsigned char* instart = in; + const unsigned char* processed = in; if ((out == NULL) || (outlen == NULL) || (inlen == NULL) || (xlattable == NULL)) @@ -2262,81 +3053,82 @@ while (in < inend) { unsigned char d = *in++; if (d < 0x80) { - *out++ = d; + *out++ = d; } else if (d < 0xC0) { /* trailing byte in leading position */ *outlen = out - outstart; - *inlen = in - instart - 1; + *inlen = processed - instart; return(-2); } else if (d < 0xE0) { unsigned char c; if (!(in < inend)) { /* trailing byte not in input buffer */ *outlen = out - outstart; - *inlen = in - instart - 1; - return(-2); + *inlen = processed - instart; + return(-3); } c = *in++; if ((c & 0xC0) != 0x80) { /* not a trailing byte */ *outlen = out - outstart; - *inlen = in - instart - 2; + *inlen = processed - instart; return(-2); } - c = c & 0x3F; + c = c & 0x3F; d = d & 0x1F; d = xlattable [48 + c + xlattable [d] * 64]; if (d == 0) { /* not in character set */ *outlen = out - outstart; - *inlen = in - instart - 2; + *inlen = processed - instart; return(-2); } - *out++ = d; + *out++ = d; } else if (d < 0xF0) { unsigned char c1; unsigned char c2; if (!(in < inend - 1)) { /* trailing bytes not in input buffer */ *outlen = out - outstart; - *inlen = in - instart - 1; - return(-2); + *inlen = processed - instart; + return(-3); } c1 = *in++; if ((c1 & 0xC0) != 0x80) { /* not a trailing byte (c1) */ *outlen = out - outstart; - *inlen = in - instart - 2; + *inlen = processed - instart; return(-2); } c2 = *in++; if ((c2 & 0xC0) != 0x80) { /* not a trailing byte (c2) */ *outlen = out - outstart; - *inlen = in - instart - 2; + *inlen = processed - instart; return(-2); } - c1 = c1 & 0x3F; - c2 = c2 & 0x3F; + c1 = c1 & 0x3F; + c2 = c2 & 0x3F; d = d & 0x0F; - d = xlattable [48 + c2 + xlattable [48 + c1 + - xlattable [32 + d] * 64] * 64]; + d = xlattable [48 + c2 + xlattable [48 + c1 + + xlattable [32 + d] * 64] * 64]; if (d == 0) { /* not in character set */ *outlen = out - outstart; - *inlen = in - instart - 3; + *inlen = processed - instart; return(-2); } - *out++ = d; + *out++ = d; } else { /* cannot transcode >= U+010000 */ *outlen = out - outstart; - *inlen = in - instart - 1; + *inlen = processed - instart; return(-2); } + processed = in; } *outlen = out - outstart; - *inlen = in - instart; + *inlen = processed - instart; return(*outlen); } @@ -2370,16 +3162,16 @@ outend = out + *outlen; inend = in + *inlen; instop = inend; - c = *in; - while (in < inend && out < outend - 1) { - if (c >= 0x80) { - c = unicodetable [c - 0x80]; + + while ((in < inend) && (out < outend - 2)) { + if (*in >= 0x80) { + c = unicodetable [*in - 0x80]; if (c == 0) { /* undefined code point */ *outlen = out - outstart; *inlen = in - instart; return (-1); - } + } if (c < 0x800) { *out++ = ((c >> 6) & 0x1F) | 0xC0; *out++ = (c & 0x3F) | 0x80; @@ -2387,48 +3179,47 @@ *out++ = ((c >> 12) & 0x0F) | 0xE0; *out++ = ((c >> 6) & 0x3F) | 0x80; *out++ = (c & 0x3F) | 0x80; - } + } ++in; - c = *in; } - if (instop - in > outend - out) instop = in + (outend - out); - while (c < 0x80 && in < instop) { - *out++ = c; - ++in; - c = *in; + if (instop - in > outend - out) instop = in + (outend - out); + while ((*in < 0x80) && (in < instop)) { + *out++ = *in++; } - } - if (in < inend && out < outend && c < 0x80) { - *out++ = c; - ++in; + } + if ((in < inend) && (out < outend) && (*in < 0x80)) { + *out++ = *in++; + } + if ((in < inend) && (out < outend) && (*in < 0x80)) { + *out++ = *in++; } *outlen = out - outstart; *inlen = in - instart; return (*outlen); } - + /************************************************************************ * Lookup tables for ISO-8859-2..ISO-8859-16 transcoding * ************************************************************************/ static unsigned short const xmlunicodetable_ISO8859_2 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7, - 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, - 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, - 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, - 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, - 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, - 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, - 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, - 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, - 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, - 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, - 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7, + 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, + 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, + 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, + 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, + 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, + 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, + 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, + 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, + 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, + 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, + 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, }; static unsigned char const xmltranscodetable_ISO8859_2 [48 + 6 * 64] = { @@ -2462,22 +3253,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_3 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0x0000, 0x0124, 0x00a7, - 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0x0000, 0x017b, - 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7, - 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0x0000, 0x017c, - 0x00c0, 0x00c1, 0x00c2, 0x0000, 0x00c4, 0x010a, 0x0108, 0x00c7, - 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, - 0x0000, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7, - 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df, - 0x00e0, 0x00e1, 0x00e2, 0x0000, 0x00e4, 0x010b, 0x0109, 0x00e7, - 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, - 0x0000, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7, - 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0x0000, 0x0124, 0x00a7, + 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0x0000, 0x017b, + 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7, + 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0x0000, 0x017c, + 0x00c0, 0x00c1, 0x00c2, 0x0000, 0x00c4, 0x010a, 0x0108, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x0000, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7, + 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x0000, 0x00e4, 0x010b, 0x0109, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x0000, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7, + 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9, }; static unsigned char const xmltranscodetable_ISO8859_3 [48 + 7 * 64] = { @@ -2515,22 +3306,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_4 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7, - 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af, - 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7, - 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b, - 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, - 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a, - 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7, - 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df, - 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, - 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, - 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7, - 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7, + 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af, + 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7, + 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b, + 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, + 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a, + 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df, + 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, + 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, + 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9, }; static unsigned char const xmltranscodetable_ISO8859_4 [48 + 6 * 64] = { @@ -2564,22 +3355,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_5 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, - 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, - 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, - 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, - 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, - 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, - 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, - 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, - 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, - 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, - 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, - 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, + 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, + 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, + 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, + 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, + 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, + 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, + 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f, }; static unsigned char const xmltranscodetable_ISO8859_5 [48 + 6 * 64] = { @@ -2613,22 +3404,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_6 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0000, 0x0000, 0x0000, 0x00a4, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x060c, 0x00ad, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x061b, 0x0000, 0x0000, 0x0000, 0x061f, - 0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, - 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, - 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, - 0x0638, 0x0639, 0x063a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, - 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, - 0x0650, 0x0651, 0x0652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0000, 0x0000, 0x0000, 0x00a4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x060c, 0x00ad, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x061b, 0x0000, 0x0000, 0x0000, 0x061f, + 0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, + 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, + 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, + 0x0638, 0x0639, 0x063a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, + 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, + 0x0650, 0x0651, 0x0652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, }; static unsigned char const xmltranscodetable_ISO8859_6 [48 + 5 * 64] = { @@ -2658,22 +3449,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_7 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x2018, 0x2019, 0x00a3, 0x0000, 0x0000, 0x00a6, 0x00a7, - 0x00a8, 0x00a9, 0x0000, 0x00ab, 0x00ac, 0x00ad, 0x0000, 0x2015, - 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7, - 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, - 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, - 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, - 0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, - 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, - 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, - 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, - 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, - 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x0000, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x2018, 0x2019, 0x00a3, 0x0000, 0x0000, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x0000, 0x00ab, 0x00ac, 0x00ad, 0x0000, 0x2015, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7, + 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, + 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, + 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, + 0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, + 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, + 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, + 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, + 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, + 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x0000, }; static unsigned char const xmltranscodetable_ISO8859_7 [48 + 7 * 64] = { @@ -2711,22 +3502,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_8 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0000, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, - 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, - 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, - 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2017, - 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, - 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, - 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, - 0x05e8, 0x05e9, 0x05ea, 0x0000, 0x0000, 0x200e, 0x200f, 0x0000, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0000, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2017, + 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, + 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, + 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, + 0x05e8, 0x05e9, 0x05ea, 0x0000, 0x0000, 0x200e, 0x200f, 0x0000, }; static unsigned char const xmltranscodetable_ISO8859_8 [48 + 7 * 64] = { @@ -2764,22 +3555,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_9 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, - 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, - 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, - 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, - 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, - 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, - 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, - 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, - 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, - 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, - 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, - 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, }; static unsigned char const xmltranscodetable_ISO8859_9 [48 + 5 * 64] = { @@ -2809,22 +3600,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_10 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7, - 0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a, - 0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7, - 0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b, - 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, - 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf, - 0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168, - 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, - 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, - 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef, - 0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169, - 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7, + 0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a, + 0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7, + 0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b, + 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, + 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168, + 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, + 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169, + 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138, }; static unsigned char const xmltranscodetable_ISO8859_10 [48 + 7 * 64] = { @@ -2862,22 +3653,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_11 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, - 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, - 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, - 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, - 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, - 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, - 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, - 0x0e38, 0x0e39, 0x0e3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e3f, - 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, - 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f, - 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, - 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, + 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, + 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, + 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, + 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, + 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, + 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, + 0x0e38, 0x0e39, 0x0e3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e3f, + 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, + 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f, + 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, + 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0x0000, 0x0000, 0x0000, 0x0000, }; static unsigned char const xmltranscodetable_ISO8859_11 [48 + 6 * 64] = { @@ -2911,22 +3702,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_13 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7, - 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6, - 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7, - 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6, - 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112, - 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b, - 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, - 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df, - 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113, - 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c, - 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, - 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7, + 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7, + 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6, + 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112, + 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b, + 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, + 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df, + 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113, + 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c, + 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, + 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019, }; static unsigned char const xmltranscodetable_ISO8859_13 [48 + 7 * 64] = { @@ -2964,22 +3755,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_14 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7, - 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178, - 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56, - 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61, - 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, - 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, - 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a, - 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df, - 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, - 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, - 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b, - 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7, + 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178, + 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56, + 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff, }; static unsigned char const xmltranscodetable_ISO8859_14 [48 + 10 * 64] = { @@ -3029,22 +3820,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_15 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7, - 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, - 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7, - 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf, - 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, - 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, - 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, - 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, - 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, - 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, - 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, - 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7, + 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7, + 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, }; static unsigned char const xmltranscodetable_ISO8859_15 [48 + 6 * 64] = { @@ -3078,22 +3869,22 @@ }; static unsigned short const xmlunicodetable_ISO8859_16 [128] = { - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x201e, 0x0160, 0x00a7, - 0x0161, 0x00a9, 0x0218, 0x00ab, 0x0179, 0x00ad, 0x017a, 0x017b, - 0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7, - 0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c, - 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7, - 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, - 0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a, - 0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df, - 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7, - 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, - 0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b, - 0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x201e, 0x0160, 0x00a7, + 0x0161, 0x00a9, 0x0218, 0x00ab, 0x0179, 0x00ad, 0x017a, 0x017b, + 0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7, + 0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c, + 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a, + 0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b, + 0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff, }; static unsigned char const xmltranscodetable_ISO8859_16 [48 + 9 * 64] = { @@ -3292,4 +4083,3 @@ #define bottom_encoding #include "elfgcchack.h" - diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/encoding.in.h gettext-0.19.7/gnulib-local/lib/libxml/encoding.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/encoding.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/encoding.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -27,6 +27,9 @@ #ifdef LIBXML_ICONV_ENABLED #include #endif +#ifdef LIBXML_ICU_ENABLED +#include +#endif #ifdef __cplusplus extern "C" { #endif @@ -125,6 +128,13 @@ * Block defining the handlers for non UTF-8 encodings. * If iconv is supported, there are two extra fields. */ +#ifdef LIBXML_ICU_ENABLED +struct _uconv_t { + UConverter *uconv; /* for conversion between an encoding and UTF-16 */ + UConverter *utf8; /* for conversion between UTF-8 and UTF-16 */ +}; +typedef struct _uconv_t uconv_t; +#endif typedef struct _xmlCharEncodingHandler xmlCharEncodingHandler; typedef xmlCharEncodingHandler *xmlCharEncodingHandlerPtr; @@ -136,6 +146,10 @@ iconv_t iconv_in; iconv_t iconv_out; #endif /* LIBXML_ICONV_ENABLED */ +#ifdef LIBXML_ICU_ENABLED + uconv_t *uconv_in; + uconv_t *uconv_out; +#endif /* LIBXML_ICU_ENABLED */ }; #ifdef __cplusplus @@ -149,32 +163,32 @@ /* * Interfaces for encoding handlers. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlInitCharEncodingHandlers (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCleanupCharEncodingHandlers (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRegisterCharEncodingHandler (xmlCharEncodingHandlerPtr handler); XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL xmlGetCharEncodingHandler (xmlCharEncoding enc); XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL xmlFindCharEncodingHandler (const char *name); XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL - xmlNewCharEncodingHandler (const char *name, - xmlCharEncodingInputFunc input, - xmlCharEncodingOutputFunc output); + xmlNewCharEncodingHandler (const char *name, + xmlCharEncodingInputFunc input, + xmlCharEncodingOutputFunc output); /* * Interfaces for encoding names and aliases. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlAddEncodingAlias (const char *name, const char *alias); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlDelEncodingAlias (const char *alias); XMLPUBFUN const char * XMLCALL xmlGetEncodingAlias (const char *alias); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCleanupEncodingAliases (void); XMLPUBFUN xmlCharEncoding XMLCALL xmlParseCharEncoding (const char *name); @@ -188,12 +202,12 @@ xmlDetectCharEncoding (const unsigned char *in, int len); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCharEncOutFunc (xmlCharEncodingHandler *handler, xmlBufferPtr out, xmlBufferPtr in); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCharEncInFunc (xmlCharEncodingHandler *handler, xmlBufferPtr out, xmlBufferPtr in); @@ -201,20 +215,20 @@ xmlCharEncFirstLine (xmlCharEncodingHandler *handler, xmlBufferPtr out, xmlBufferPtr in); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCharEncCloseFunc (xmlCharEncodingHandler *handler); /* * Export a few useful functions */ #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL UTF8Toisolat1 (unsigned char *out, int *outlen, const unsigned char *in, int *inlen); #endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL isolat1ToUTF8 (unsigned char *out, int *outlen, const unsigned char *in, diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/entities.c gettext-0.19.7/gnulib-local/lib/libxml/entities.c --- gettext-0.19.6/gnulib-local/lib/libxml/entities.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/entities.c 2015-12-23 07:08:27.000000000 +0000 @@ -22,41 +22,43 @@ #include #include +#include "save.h" + /* * The XML predefined entities. */ static xmlEntity xmlEntityLt = { NULL, XML_ENTITY_DECL, BAD_CAST "lt", - NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, BAD_CAST "<", BAD_CAST "<", 1, XML_INTERNAL_PREDEFINED_ENTITY, NULL, NULL, NULL, NULL, 0, 1 }; static xmlEntity xmlEntityGt = { NULL, XML_ENTITY_DECL, BAD_CAST "gt", - NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, BAD_CAST ">", BAD_CAST ">", 1, XML_INTERNAL_PREDEFINED_ENTITY, NULL, NULL, NULL, NULL, 0, 1 }; static xmlEntity xmlEntityAmp = { NULL, XML_ENTITY_DECL, BAD_CAST "amp", - NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, BAD_CAST "&", BAD_CAST "&", 1, XML_INTERNAL_PREDEFINED_ENTITY, NULL, NULL, NULL, NULL, 0, 1 }; static xmlEntity xmlEntityQuot = { NULL, XML_ENTITY_DECL, BAD_CAST "quot", - NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, BAD_CAST "\"", BAD_CAST "\"", 1, XML_INTERNAL_PREDEFINED_ENTITY, NULL, NULL, NULL, NULL, 0, 1 }; static xmlEntity xmlEntityApos = { NULL, XML_ENTITY_DECL, BAD_CAST "apos", - NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, BAD_CAST "'", BAD_CAST "'", 1, XML_INTERNAL_PREDEFINED_ENTITY, NULL, NULL, NULL, NULL, 0, 1 @@ -139,45 +141,19 @@ } /* - * xmlAddEntity : register a new entity for an entities table. + * xmlCreateEntity: + * + * internal routine doing the entity node strutures allocations */ static xmlEntityPtr -xmlAddEntity(xmlDtdPtr dtd, const xmlChar *name, int type, - const xmlChar *ExternalID, const xmlChar *SystemID, - const xmlChar *content) { - xmlDictPtr dict = NULL; - xmlEntitiesTablePtr table = NULL; +xmlCreateEntity(xmlDictPtr dict, const xmlChar *name, int type, + const xmlChar *ExternalID, const xmlChar *SystemID, + const xmlChar *content) { xmlEntityPtr ret; - if (name == NULL) - return(NULL); - if (dtd == NULL) - return(NULL); - if (dtd->doc != NULL) - dict = dtd->doc->dict; - - switch (type) { - case XML_INTERNAL_GENERAL_ENTITY: - case XML_EXTERNAL_GENERAL_PARSED_ENTITY: - case XML_EXTERNAL_GENERAL_UNPARSED_ENTITY: - if (dtd->entities == NULL) - dtd->entities = xmlHashCreateDict(0, dict); - table = dtd->entities; - break; - case XML_INTERNAL_PARAMETER_ENTITY: - case XML_EXTERNAL_PARAMETER_ENTITY: - if (dtd->pentities == NULL) - dtd->pentities = xmlHashCreateDict(0, dict); - table = dtd->pentities; - break; - case XML_INTERNAL_PREDEFINED_ENTITY: - return(NULL); - } - if (table == NULL) - return(NULL); ret = (xmlEntityPtr) xmlMalloc(sizeof(xmlEntity)); if (ret == NULL) { - xmlEntitiesErrMemory("xmlAddEntity:: malloc failed"); + xmlEntitiesErrMemory("xmlCreateEntity: malloc failed"); return(NULL); } memset(ret, 0, sizeof(xmlEntity)); @@ -216,6 +192,50 @@ the defining entity */ ret->orig = NULL; ret->owner = 0; + + return(ret); +} + +/* + * xmlAddEntity : register a new entity for an entities table. + */ +static xmlEntityPtr +xmlAddEntity(xmlDtdPtr dtd, const xmlChar *name, int type, + const xmlChar *ExternalID, const xmlChar *SystemID, + const xmlChar *content) { + xmlDictPtr dict = NULL; + xmlEntitiesTablePtr table = NULL; + xmlEntityPtr ret; + + if (name == NULL) + return(NULL); + if (dtd == NULL) + return(NULL); + if (dtd->doc != NULL) + dict = dtd->doc->dict; + + switch (type) { + case XML_INTERNAL_GENERAL_ENTITY: + case XML_EXTERNAL_GENERAL_PARSED_ENTITY: + case XML_EXTERNAL_GENERAL_UNPARSED_ENTITY: + if (dtd->entities == NULL) + dtd->entities = xmlHashCreateDict(0, dict); + table = dtd->entities; + break; + case XML_INTERNAL_PARAMETER_ENTITY: + case XML_EXTERNAL_PARAMETER_ENTITY: + if (dtd->pentities == NULL) + dtd->pentities = xmlHashCreateDict(0, dict); + table = dtd->pentities; + break; + case XML_INTERNAL_PREDEFINED_ENTITY: + return(NULL); + } + if (table == NULL) + return(NULL); + ret = xmlCreateEntity(dict, name, type, ExternalID, SystemID, content); + if (ret == NULL) + return(NULL); ret->doc = dtd->doc; if (xmlHashAddEntry(table, name, ret)) { @@ -363,6 +383,44 @@ } /** + * xmlNewEntity: + * @doc: the document + * @name: the entity name + * @type: the entity type XML_xxx_yyy_ENTITY + * @ExternalID: the entity external ID if available + * @SystemID: the entity system ID if available + * @content: the entity content + * + * Create a new entity, this differs from xmlAddDocEntity() that if + * the document is NULL or has no internal subset defined, then an + * unlinked entity structure will be returned, it is then the responsability + * of the caller to link it to the document later or free it when not needed + * anymore. + * + * Returns a pointer to the entity or NULL in case of error + */ +xmlEntityPtr +xmlNewEntity(xmlDocPtr doc, const xmlChar *name, int type, + const xmlChar *ExternalID, const xmlChar *SystemID, + const xmlChar *content) { + xmlEntityPtr ret; + xmlDictPtr dict; + + if ((doc != NULL) && (doc->intSubset != NULL)) { + return(xmlAddDocEntity(doc, name, type, ExternalID, SystemID, content)); + } + if (doc != NULL) + dict = doc->dict; + else + dict = NULL; + ret = xmlCreateEntity(dict, name, type, ExternalID, SystemID, content); + if (ret == NULL) + return(NULL); + ret->doc = doc; + return(ret); +} + +/** * xmlGetEntityFromTable: * @table: an entity table * @name: the entity name @@ -370,7 +428,7 @@ * * Do an entity lookup in the table. * returns the corresponding parameter entity, if found. - * + * * Returns A pointer to the entity structure or NULL if not found. */ static xmlEntityPtr @@ -385,7 +443,7 @@ * * Do an entity lookup in the internal and external subsets and * returns the corresponding parameter entity, if found. - * + * * Returns A pointer to the entity structure or NULL if not found. */ xmlEntityPtr @@ -416,7 +474,7 @@ * Do an entity lookup in the DTD entity hash table and * returns the corresponding entity, if found. * Note: the first argument is the document node, not the DTD node. - * + * * Returns A pointer to the entity structure or NULL if not found. */ xmlEntityPtr @@ -440,11 +498,11 @@ * Do an entity lookup in the document entity hash table and * returns the corresponding entity, otherwise a lookup is done * in the predefined entities too. - * + * * Returns A pointer to the entity structure or NULL if not found. */ xmlEntityPtr -xmlGetDocEntity(xmlDocPtr doc, const xmlChar *name) { +xmlGetDocEntity(const xmlDoc *doc, const xmlChar *name) { xmlEntityPtr cur; xmlEntitiesTablePtr table; @@ -472,20 +530,20 @@ * Macro used to grow the current buffer. */ #define growBufferReentrant() { \ - buffer_size *= 2; \ - buffer = (xmlChar *) \ - xmlRealloc(buffer, buffer_size * sizeof(xmlChar)); \ - if (buffer == NULL) { \ - xmlEntitiesErrMemory("xmlEncodeEntitiesReentrant: realloc failed");\ - return(NULL); \ - } \ + xmlChar *tmp; \ + size_t new_size = buffer_size * 2; \ + if (new_size < buffer_size) goto mem_error; \ + tmp = (xmlChar *) xmlRealloc(buffer, new_size); \ + if (tmp == NULL) goto mem_error; \ + buffer = tmp; \ + buffer_size = new_size; \ } - /** - * xmlEncodeEntitiesReentrant: + * xmlEncodeEntitiesInternal: * @doc: the document containing the string * @input: A string to convert to XML. + * @attr: are we handling an atrbute value * * Do a global encoding of a string, replacing the predefined entities * and non ASCII values with their entities and CharRef counterparts. @@ -494,12 +552,12 @@ * * Returns A newly allocated string with the substitution done. */ -xmlChar * -xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) { +static xmlChar * +xmlEncodeEntitiesInternal(xmlDocPtr doc, const xmlChar *input, int attr) { const xmlChar *cur = input; xmlChar *buffer = NULL; xmlChar *out = NULL; - int buffer_size = 0; + size_t buffer_size = 0; int html = 0; if (input == NULL) return(NULL); @@ -512,14 +570,14 @@ buffer_size = 1000; buffer = (xmlChar *) xmlMalloc(buffer_size * sizeof(xmlChar)); if (buffer == NULL) { - xmlEntitiesErrMemory("xmlEncodeEntitiesReentrant: malloc failed"); + xmlEntitiesErrMemory("xmlEncodeEntities: malloc failed"); return(NULL); } out = buffer; while (*cur != '\0') { - if (out - buffer > buffer_size - 100) { - int indx = out - buffer; + size_t indx = out - buffer; + if (indx + 100 > buffer_size) { growBufferReentrant(); out = &buffer[indx]; @@ -529,6 +587,27 @@ * By default one have to encode at least '<', '>', '"' and '&' ! */ if (*cur == '<') { + const xmlChar *end; + + /* + * Special handling of server side include in HTML attributes + */ + if (html && attr && + (cur[1] == '!') && (cur[2] == '-') && (cur[3] == '-') && + ((end = xmlStrstr(cur, BAD_CAST "-->")) != NULL)) { + while (cur != end) { + *out++ = *cur++; + indx = out - buffer; + if (indx + 100 > buffer_size) { + growBufferReentrant(); + out = &buffer[indx]; + } + } + *out++ = *cur++; + *out++ = *cur++; + *out++ = *cur++; + continue; + } *out++ = '&'; *out++ = 'l'; *out++ = 't'; @@ -539,6 +618,23 @@ *out++ = 't'; *out++ = ';'; } else if (*cur == '&') { + /* + * Special handling of &{...} construct from HTML 4, see + * http://www.w3.org/TR/html401/appendix/notes.html#h-B.7.1 + */ + if (html && attr && (cur[1] == '{') && + (strchr((const char *) cur, '}'))) { + while (*cur != '}') { + *out++ = *cur++; + indx = out - buffer; + if (indx + 100 > buffer_size) { + growBufferReentrant(); + out = &buffer[indx]; + } + } + *out++ = *cur++; + continue; + } *out++ = '&'; *out++ = 'a'; *out++ = 'm'; @@ -553,7 +649,7 @@ } else if (*cur >= 0x80) { if (((doc != NULL) && (doc->encoding != NULL)) || (html)) { /* - * Bjrn Reese provided the patch + * Bjørn Reese provided the patch xmlChar xc; xc = (*cur & 0x3F) << 6; if (cur[1] != 0) { @@ -571,7 +667,7 @@ if (*cur < 0xC0) { xmlEntitiesErr(XML_CHECK_NOT_UTF8, - "xmlEncodeEntitiesReentrant : input not UTF-8"); + "xmlEncodeEntities: input not UTF-8"); if (doc != NULL) doc->encoding = xmlStrdup(BAD_CAST "ISO-8859-1"); snprintf(buf, sizeof(buf), "&#%d;", *cur); @@ -604,7 +700,7 @@ } if ((l == 1) || (!IS_CHAR(val))) { xmlEntitiesErr(XML_ERR_INVALID_CHAR, - "xmlEncodeEntitiesReentrant : char out of range\n"); + "xmlEncodeEntities: char out of range\n"); if (doc != NULL) doc->encoding = xmlStrdup(BAD_CAST "ISO-8859-1"); snprintf(buf, sizeof(buf), "&#%d;", *cur); @@ -634,8 +730,46 @@ } cur++; } - *out++ = 0; + *out = 0; return(buffer); + +mem_error: + xmlEntitiesErrMemory("xmlEncodeEntities: realloc failed"); + xmlFree(buffer); + return(NULL); +} + +/** + * xmlEncodeAttributeEntities: + * @doc: the document containing the string + * @input: A string to convert to XML. + * + * Do a global encoding of a string, replacing the predefined entities + * and non ASCII values with their entities and CharRef counterparts for + * attribute values. + * + * Returns A newly allocated string with the substitution done. + */ +xmlChar * +xmlEncodeAttributeEntities(xmlDocPtr doc, const xmlChar *input) { + return xmlEncodeEntitiesInternal(doc, input, 1); +} + +/** + * xmlEncodeEntitiesReentrant: + * @doc: the document containing the string + * @input: A string to convert to XML. + * + * Do a global encoding of a string, replacing the predefined entities + * and non ASCII values with their entities and CharRef counterparts. + * Contrary to xmlEncodeEntities, this routine is reentrant, and result + * must be deallocated. + * + * Returns A newly allocated string with the substitution done. + */ +xmlChar * +xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) { + return xmlEncodeEntitiesInternal(doc, input, 0); } /** @@ -649,11 +783,11 @@ * Returns A newly allocated string with the substitution done. */ xmlChar * -xmlEncodeSpecialChars(xmlDocPtr doc ATTRIBUTE_UNUSED, const xmlChar *input) { +xmlEncodeSpecialChars(const xmlDoc *doc ATTRIBUTE_UNUSED, const xmlChar *input) { const xmlChar *cur = input; xmlChar *buffer = NULL; xmlChar *out = NULL; - int buffer_size = 0; + size_t buffer_size = 0; if (input == NULL) return(NULL); /* @@ -668,8 +802,8 @@ out = buffer; while (*cur != '\0') { - if (out - buffer > buffer_size - 10) { - int indx = out - buffer; + size_t indx = out - buffer; + if (indx + 10 > buffer_size) { growBufferReentrant(); out = &buffer[indx]; @@ -716,8 +850,13 @@ } cur++; } - *out++ = 0; + *out = 0; return(buffer); + +mem_error: + xmlEntitiesErrMemory("xmlEncodeSpecialChars: realloc failed"); + xmlFree(buffer); + return(NULL); } /** @@ -764,7 +903,7 @@ * @ent: An entity * * Build a copy of an entity - * + * * Returns the new xmlEntitiesPtr or NULL in case of error. */ static xmlEntityPtr @@ -800,7 +939,7 @@ * @table: An entity table * * Build a copy of an entity table. - * + * * Returns the new xmlEntitiesTablePtr or NULL in case of error. */ xmlEntitiesTablePtr @@ -949,7 +1088,7 @@ xmlDumpEntityDeclScan(xmlEntityPtr ent, xmlBufferPtr buf) { xmlDumpEntityDecl(buf, ent); } - + /** * xmlDumpEntitiesTable: * @buf: An XML buffer. diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/entities.in.h gettext-0.19.7/gnulib-local/lib/libxml/entities.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/entities.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/entities.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -57,6 +57,9 @@ const xmlChar *URI; /* the full URI as computed */ int owner; /* does the entity own the childrens */ int checked; /* was the entity content checked */ + /* this is also used to count entities + * references done from that entity + * and if it contains '<' */ }; /* @@ -72,9 +75,17 @@ */ #ifdef LIBXML_LEGACY_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlInitializePredefinedEntities (void); #endif /* LIBXML_LEGACY_ENABLED */ + +XMLPUBFUN xmlEntityPtr XMLCALL + xmlNewEntity (xmlDocPtr doc, + const xmlChar *name, + int type, + const xmlChar *ExternalID, + const xmlChar *SystemID, + const xmlChar *content); XMLPUBFUN xmlEntityPtr XMLCALL xmlAddDocEntity (xmlDocPtr doc, const xmlChar *name, @@ -82,53 +93,53 @@ const xmlChar *ExternalID, const xmlChar *SystemID, const xmlChar *content); -XMLPUBFUN xmlEntityPtr XMLCALL +XMLPUBFUN xmlEntityPtr XMLCALL xmlAddDtdEntity (xmlDocPtr doc, const xmlChar *name, int type, const xmlChar *ExternalID, const xmlChar *SystemID, const xmlChar *content); -XMLPUBFUN xmlEntityPtr XMLCALL +XMLPUBFUN xmlEntityPtr XMLCALL xmlGetPredefinedEntity (const xmlChar *name); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlGetDocEntity (xmlDocPtr doc, +XMLPUBFUN xmlEntityPtr XMLCALL + xmlGetDocEntity (const xmlDoc *doc, const xmlChar *name); -XMLPUBFUN xmlEntityPtr XMLCALL +XMLPUBFUN xmlEntityPtr XMLCALL xmlGetDtdEntity (xmlDocPtr doc, const xmlChar *name); -XMLPUBFUN xmlEntityPtr XMLCALL +XMLPUBFUN xmlEntityPtr XMLCALL xmlGetParameterEntity (xmlDocPtr doc, const xmlChar *name); #ifdef LIBXML_LEGACY_ENABLED -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlEncodeEntities (xmlDocPtr doc, const xmlChar *input); #endif /* LIBXML_LEGACY_ENABLED */ -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input); -XMLPUBFUN xmlChar * XMLCALL - xmlEncodeSpecialChars (xmlDocPtr doc, +XMLPUBFUN xmlChar * XMLCALL + xmlEncodeSpecialChars (const xmlDoc *doc, const xmlChar *input); -XMLPUBFUN xmlEntitiesTablePtr XMLCALL +XMLPUBFUN xmlEntitiesTablePtr XMLCALL xmlCreateEntitiesTable (void); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlEntitiesTablePtr XMLCALL +XMLPUBFUN xmlEntitiesTablePtr XMLCALL xmlCopyEntitiesTable (xmlEntitiesTablePtr table); #endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeEntitiesTable (xmlEntitiesTablePtr table); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDumpEntitiesTable (xmlBufferPtr buf, xmlEntitiesTablePtr table); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDumpEntityDecl (xmlBufferPtr buf, xmlEntityPtr ent); #endif /* LIBXML_OUTPUT_ENABLED */ #ifdef LIBXML_LEGACY_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCleanupPredefinedEntities(void); #endif /* LIBXML_LEGACY_ENABLED */ diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/error.c gettext-0.19.7/gnulib-local/lib/libxml/error.c --- gettext-0.19.6/gnulib-local/lib/libxml/error.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/error.c 2015-12-23 07:08:27.000000000 +0000 @@ -31,9 +31,9 @@ \ size = 150; \ \ - while (1) { \ + while (size < 64000) { \ va_start(ap, msg); \ - chars = vsnprintf(str, size, msg, ap); \ + chars = vsnprintf(str, size, msg, ap); \ va_end(ap); \ if ((chars > -1) && (chars < size)) { \ if (prev_size == chars) { \ @@ -54,9 +54,9 @@ } /************************************************************************ - * * - * Handling of out of context errors * - * * + * * + * Handling of out of context errors * + * * ************************************************************************/ /** @@ -64,7 +64,7 @@ * @ctx: an error context * @msg: the message to display/transmit * @...: extra parameters for the message display - * + * * Default handler for out of context error messages. */ void XMLCDECL @@ -82,7 +82,7 @@ /** * initGenericErrorDefaultFunc: * @handler: the handler - * + * * Set or reset (if NULL) the default handler for generic errors * to the builtin error function. */ @@ -132,20 +132,20 @@ */ void xmlSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler) { - xmlGenericErrorContext = ctx; + xmlStructuredErrorContext = ctx; xmlStructuredError = handler; } /************************************************************************ - * * - * Handling of parsing errors * - * * + * * + * Handling of parsing errors * + * * ************************************************************************/ /** * xmlParserPrintFileInfo: * @input: an xmlParserInputPtr input - * + * * Displays the associated file and line informations for the current input */ @@ -165,19 +165,21 @@ /** * xmlParserPrintFileContext: * @input: an xmlParserInputPtr input - * + * * Displays current context within the input content for error tracking */ static void -xmlParserPrintFileContextInternal(xmlParserInputPtr input , +xmlParserPrintFileContextInternal(xmlParserInputPtr input , xmlGenericErrorFunc channel, void *data ) { const xmlChar *cur, *base; unsigned int n, col; /* GCC warns if signed, because compared with sizeof() */ xmlChar content[81]; /* space for 80 chars + line terminator */ xmlChar *ctnt; - if (input == NULL) return; + if ((input == NULL) || (input->cur == NULL) || + (*input->cur == 0)) return; + cur = input->cur; base = input->base; /* skip backwards over any end-of-lines */ @@ -186,8 +188,8 @@ } n = 0; /* search backwards for beginning-of-line (to max buff size) */ - while ((n++ < (sizeof(content)-1)) && (cur > base) && - (*(cur) != '\n') && (*(cur) != '\r')) + while ((n++ < (sizeof(content)-1)) && (cur > base) && + (*(cur) != '\n') && (*(cur) != '\r')) cur--; if ((*(cur) == '\n') || (*(cur) == '\r')) cur++; /* calculate the error position in terms of the current position */ @@ -196,8 +198,8 @@ n = 0; ctnt = content; /* copy selected text to our buffer */ - while ((*cur != 0) && (*(cur) != '\n') && - (*(cur) != '\r') && (n < sizeof(content)-1)) { + while ((*cur != 0) && (*(cur) != '\n') && + (*(cur) != '\r') && (n < sizeof(content)-1)) { *ctnt++ = *cur++; n++; } @@ -221,7 +223,7 @@ /** * xmlParserPrintFileContext: * @input: an xmlParserInputPtr input - * + * * Displays current context within the input content for error tracking */ void @@ -292,7 +294,10 @@ } else { if (file != NULL) channel(data, "%s:%d: ", file, line); - else if ((line != 0) && (domain == XML_FROM_PARSER)) + else if ((line != 0) && + ((domain == XML_FROM_PARSER) || (domain == XML_FROM_SCHEMASV)|| + (domain == XML_FROM_SCHEMASP)||(domain == XML_FROM_DTD) || + (domain == XML_FROM_RELAXNGP)||(domain == XML_FROM_RELAXNGV))) channel(data, "Entity: line %d: ", line); } if (name != NULL) { @@ -360,6 +365,15 @@ case XML_FROM_I18N: channel(data, "encoding "); break; + case XML_FROM_SCHEMATRONV: + channel(data, "schematron "); + break; + case XML_FROM_BUFFER: + channel(data, "internal buffer "); + break; + case XML_FROM_URI: + channel(data, "URI "); + break; default: break; } @@ -429,7 +443,7 @@ * @str2: extra string info * @str3: extra string info * @int1: extra int info - * @col: column number of the error or 0 if N/A + * @col: column number of the error or 0 if N/A * @msg: the message to display/transmit * @...: extra parameters for the message display * @@ -452,6 +466,8 @@ xmlErrorPtr to = &xmlLastError; xmlNodePtr baseptr = NULL; + if (code == XML_ERR_OK) + return; if ((xmlGetWarningsDefaultValue == 0) && (level == XML_ERR_WARNING)) return; if ((domain == XML_FROM_PARSER) || (domain == XML_FROM_HTML) || @@ -459,8 +475,11 @@ (domain == XML_FROM_IO) || (domain == XML_FROM_VALID)) { ctxt = (xmlParserCtxtPtr) ctx; if ((schannel == NULL) && (ctxt != NULL) && (ctxt->sax != NULL) && - (ctxt->sax->initialized == XML_SAX2_MAGIC)) + (ctxt->sax->initialized == XML_SAX2_MAGIC) && + (ctxt->sax->serror != NULL)) { schannel = ctxt->sax->serror; + data = ctxt->userData; + } } /* * Check if structured error handler set @@ -471,18 +490,8 @@ * if user has defined handler, change data ptr to user's choice */ if (schannel != NULL) - data = xmlGenericErrorContext; + data = xmlStructuredErrorContext; } - if ((domain == XML_FROM_VALID) && - ((channel == xmlParserValidityError) || - (channel == xmlParserValidityWarning))) { - ctxt = (xmlParserCtxtPtr) ctx; - if ((schannel == NULL) && (ctxt != NULL) && (ctxt->sax != NULL) && - (ctxt->sax->initialized == XML_SAX2_MAGIC)) - schannel = ctxt->sax->serror; - } - if (code == XML_ERR_OK) - return; /* * Formatting the message */ @@ -526,6 +535,8 @@ if ((node != NULL) && (node->type == XML_ELEMENT_NODE)) line = node->line; + if ((line == 0) || (line == 65535)) + line = xmlGetLineNo(node); } /* @@ -573,7 +584,6 @@ if ((to->file == NULL) && (node != NULL) && (node->doc != NULL)) { to->file = (char *) xmlStrdup(node->doc->URL); } - file = to->file; } to->line = line; if (str1 != NULL) @@ -590,27 +600,28 @@ if (to != &xmlLastError) xmlCopyError(to,&xmlLastError); + if (schannel != NULL) { + schannel(data, to); + return; + } + /* * Find the callback channel if channel param is NULL */ - if ((ctxt != NULL) && (channel == NULL) && (xmlStructuredError == NULL) && (ctxt->sax != NULL)) { + if ((ctxt != NULL) && (channel == NULL) && + (xmlStructuredError == NULL) && (ctxt->sax != NULL)) { if (level == XML_ERR_WARNING) channel = ctxt->sax->warning; else channel = ctxt->sax->error; data = ctxt->userData; } else if (channel == NULL) { - if (xmlStructuredError != NULL) - schannel = xmlStructuredError; - else - channel = xmlGenericError; - if (!data) { - data = xmlGenericErrorContext; - } - } - if (schannel != NULL) { - schannel(data, to); - return; + channel = xmlGenericError; + if (ctxt != NULL) { + data = ctxt; + } else { + data = xmlGenericErrorContext; + } } if (channel == NULL) return; @@ -662,7 +673,7 @@ * @ctx: an XML parser context * @msg: the message to display/transmit * @...: extra parameters for the message display - * + * * Display and format an error messages, gives file, line, position and * extra parameters. */ @@ -705,7 +716,7 @@ * @ctx: an XML parser context * @msg: the message to display/transmit * @...: extra parameters for the message display - * + * * Display and format a warning messages, gives file, line, position and * extra parameters. */ @@ -726,7 +737,7 @@ } xmlParserPrintFileInfo(input); } - + xmlGenericError(xmlGenericErrorContext, "warning: "); XML_GET_VAR_STR(msg, str); xmlGenericError(xmlGenericErrorContext, "%s", str); @@ -744,9 +755,9 @@ } /************************************************************************ - * * - * Handling of validation errors * - * * + * * + * Handling of validation errors * + * * ************************************************************************/ /** @@ -754,7 +765,7 @@ * @ctx: an XML parser context * @msg: the message to display/transmit * @...: extra parameters for the message display - * + * * Display and format an validity error messages, gives file, * line, position and extra parameters. */ @@ -772,7 +783,7 @@ input = ctxt->input; if ((input->filename == NULL) && (ctxt->inputNr > 1)) input = ctxt->inputTab[ctxt->inputNr - 2]; - + if (had_info == 0) { xmlParserPrintFileInfo(input); } @@ -798,7 +809,7 @@ * @ctx: an XML parser context * @msg: the message to display/transmit * @...: extra parameters for the message display - * + * * Display and format a validity warning messages, gives file, line, * position and extra parameters. */ @@ -817,7 +828,7 @@ xmlParserPrintFileInfo(input); } - + xmlGenericError(xmlGenericErrorContext, "validity warning: "); XML_GET_VAR_STR(msg, str); xmlGenericError(xmlGenericErrorContext, "%s", str); @@ -927,6 +938,7 @@ if (ctxt == NULL) return; + ctxt->errNo = XML_ERR_OK; if (ctxt->lastError.code == XML_ERR_OK) return; xmlResetError(&ctxt->lastError); diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/globals.c gettext-0.19.7/gnulib-local/lib/libxml/globals.c --- gettext-0.19.6/gnulib-local/lib/libxml/globals.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/globals.c 2015-12-23 07:08:27.000000000 +0000 @@ -46,7 +46,8 @@ */ void xmlInitGlobals(void) { - xmlThrDefMutex = xmlNewMutex(); + if (xmlThrDefMutex == NULL) + xmlThrDefMutex = xmlNewMutex(); } /** @@ -60,12 +61,13 @@ xmlFreeMutex(xmlThrDefMutex); xmlThrDefMutex = NULL; } + __xmlGlobalInitMutexDestroy(); } /************************************************************************ - * * + * * * All the user accessible global variables of the library * - * * + * * ************************************************************************/ /* @@ -147,6 +149,7 @@ #undef xmlGenericError #undef xmlStructuredError #undef xmlGenericErrorContext +#undef xmlStructuredErrorContext #undef xmlGetWarningsDefaultValue #undef xmlIndentTreeOutput #undef xmlTreeIndentString @@ -243,7 +246,7 @@ * xmlLineNumbersDefaultValue: * * Global setting, indicate that the parser should store the line number - * in the content field of elements in the DOM tree. + * in the content field of elements in the DOM tree. * Disabled by default since this may not be safe for old classes of * applicaton. */ @@ -313,6 +316,13 @@ */ void *xmlGenericErrorContext = NULL; static void *xmlGenericErrorContextThrDef = NULL; +/** + * xmlStructuredErrorContext: + * + * Global setting passed to structured error callbacks + */ +void *xmlStructuredErrorContext = NULL; +static void *xmlStructuredErrorContextThrDef = NULL; xmlError xmlLastError; /* @@ -499,7 +509,7 @@ #if defined(LIBXML_DOCB_ENABLED) && defined(LIBXML_LEGACY_ENABLED) && defined(LIBXML_SAX1_ENABLED) initdocbDefaultSAXHandler(&gs->docbDefaultSAXHandler); #endif -#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_LEGACY_ENABLED) +#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_LEGACY_ENABLED) && defined(LIBXML_SAX1_ENABLED) inithtmlDefaultSAXHandler(&gs->htmlDefaultSAXHandler); #endif @@ -513,7 +523,7 @@ gs->xmlDefaultSAXLocator.getSystemId = xmlSAX2GetSystemId; gs->xmlDefaultSAXLocator.getLineNumber = xmlSAX2GetLineNumber; gs->xmlDefaultSAXLocator.getColumnNumber = xmlSAX2GetColumnNumber; - gs->xmlDoValidityCheckingDefaultValue = + gs->xmlDoValidityCheckingDefaultValue = xmlDoValidityCheckingDefaultValueThrDef; #if defined(DEBUG_MEMORY_LOCATION) | defined(DEBUG_MEMORY) gs->xmlFree = (xmlFreeFunc) xmlMemFree; @@ -538,12 +548,13 @@ gs->xmlParserVersion = LIBXML_VERSION_STRING; gs->xmlPedanticParserDefaultValue = xmlPedanticParserDefaultValueThrDef; gs->xmlSaveNoEmptyTags = xmlSaveNoEmptyTagsThrDef; - gs->xmlSubstituteEntitiesDefaultValue = + gs->xmlSubstituteEntitiesDefaultValue = xmlSubstituteEntitiesDefaultValueThrDef; gs->xmlGenericError = xmlGenericErrorThrDef; gs->xmlStructuredError = xmlStructuredErrorThrDef; gs->xmlGenericErrorContext = xmlGenericErrorContextThrDef; + gs->xmlStructuredErrorContext = xmlStructuredErrorContextThrDef; gs->xmlRegisterNodeDefaultValue = xmlRegisterNodeDefaultValueThrDef; gs->xmlDeregisterNodeDefaultValue = xmlDeregisterNodeDefaultValueThrDef; @@ -572,7 +583,7 @@ void xmlThrDefSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler) { xmlMutexLock(xmlThrDefMutex); - xmlGenericErrorContextThrDef = ctx; + xmlStructuredErrorContextThrDef = ctx; xmlStructuredErrorThrDef = handler; xmlMutexUnlock(xmlThrDefMutex); } @@ -589,7 +600,7 @@ xmlRegisterNodeDefault(xmlRegisterNodeFunc func) { xmlRegisterNodeFunc old = xmlRegisterNodeDefaultValue; - + __xmlRegisterCallbacks = 1; xmlRegisterNodeDefaultValue = func; return(old); @@ -599,10 +610,10 @@ xmlThrDefRegisterNodeDefault(xmlRegisterNodeFunc func) { xmlRegisterNodeFunc old; - + xmlMutexLock(xmlThrDefMutex); old = xmlRegisterNodeDefaultValueThrDef; - + __xmlRegisterCallbacks = 1; xmlRegisterNodeDefaultValueThrDef = func; xmlMutexUnlock(xmlThrDefMutex); @@ -622,7 +633,7 @@ xmlDeregisterNodeDefault(xmlDeregisterNodeFunc func) { xmlDeregisterNodeFunc old = xmlDeregisterNodeDefaultValue; - + __xmlRegisterCallbacks = 1; xmlDeregisterNodeDefaultValue = func; return(old); @@ -635,7 +646,7 @@ xmlMutexLock(xmlThrDefMutex); old = xmlDeregisterNodeDefaultValueThrDef; - + __xmlRegisterCallbacks = 1; xmlDeregisterNodeDefaultValueThrDef = func; xmlMutexUnlock(xmlThrDefMutex); @@ -647,7 +658,7 @@ xmlThrDefParserInputBufferCreateFilenameDefault(xmlParserInputBufferCreateFilenameFunc func) { xmlParserInputBufferCreateFilenameFunc old; - + xmlMutexLock(xmlThrDefMutex); old = xmlParserInputBufferCreateFilenameValueThrDef; if (old == NULL) { @@ -664,7 +675,7 @@ xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func) { xmlOutputBufferCreateFilenameFunc old; - + xmlMutexLock(xmlThrDefMutex); old = xmlOutputBufferCreateFilenameValueThrDef; #ifdef LIBXML_OUTPUT_ENABLED @@ -721,7 +732,7 @@ if (IS_MAIN_THREAD) return (&xmlMalloc); else - return (&xmlGetGlobalState()->xmlMalloc); + return (&xmlGetGlobalState()->xmlMalloc); } #undef xmlMallocAtomic @@ -875,6 +886,15 @@ return (&xmlGetGlobalState()->xmlGenericErrorContext); } +#undef xmlStructuredErrorContext +void * * +__xmlStructuredErrorContext(void) { + if (IS_MAIN_THREAD) + return (&xmlStructuredErrorContext); + else + return (&xmlGetGlobalState()->xmlStructuredErrorContext); +} + #undef xmlGetWarningsDefaultValue int * __xmlGetWarningsDefaultValue(void) { @@ -909,7 +929,7 @@ return ret; } -#undef xmlTreeIndentString +#undef xmlTreeIndentString const char * * __xmlTreeIndentString(void) { if (IS_MAIN_THREAD) diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/globals.in.h gettext-0.19.7/gnulib-local/lib/libxml/globals.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/globals.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/globals.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -28,8 +28,36 @@ XMLPUBFUN void XMLCALL xmlInitGlobals(void); XMLPUBFUN void XMLCALL xmlCleanupGlobals(void); -typedef xmlParserInputBufferPtr (*xmlParserInputBufferCreateFilenameFunc) (const char *URI, xmlCharEncoding enc); -typedef xmlOutputBufferPtr (*xmlOutputBufferCreateFilenameFunc) (const char *URI, xmlCharEncodingHandlerPtr encoder, int compression); +/** + * xmlParserInputBufferCreateFilenameFunc: + * @URI: the URI to read from + * @enc: the requested source encoding + * + * Signature for the function doing the lookup for a suitable input method + * corresponding to an URI. + * + * Returns the new xmlParserInputBufferPtr in case of success or NULL if no + * method was found. + */ +typedef xmlParserInputBufferPtr (*xmlParserInputBufferCreateFilenameFunc) (const char *URI, + xmlCharEncoding enc); + + +/** + * xmlOutputBufferCreateFilenameFunc: + * @URI: the URI to write to + * @enc: the requested target encoding + * + * Signature for the function doing the lookup for a suitable output method + * corresponding to an URI. + * + * Returns the new xmlOutputBufferPtr in case of success or NULL if no + * method was found. + */ +typedef xmlOutputBufferPtr (*xmlOutputBufferCreateFilenameFunc) (const char *URI, + xmlCharEncodingHandlerPtr encoder, + int compression); + XMLPUBFUN xmlParserInputBufferCreateFilenameFunc XMLCALL xmlParserInputBufferCreateFilenameDefault (xmlParserInputBufferCreateFilenameFunc func); XMLPUBFUN xmlOutputBufferCreateFilenameFunc @@ -52,6 +80,7 @@ #undef xmlGenericError #undef xmlStructuredError #undef xmlGenericErrorContext +#undef xmlStructuredErrorContext #undef xmlGetWarningsDefaultValue #undef xmlIndentTreeOutput #undef xmlTreeIndentString @@ -73,12 +102,24 @@ #undef xmlParserInputBufferCreateFilenameValue #undef xmlOutputBufferCreateFilenameValue +/** + * xmlRegisterNodeFunc: + * @node: the current node + * + * Signature for the registration callback of a created node + */ typedef void (*xmlRegisterNodeFunc) (xmlNodePtr node); +/** + * xmlDeregisterNodeFunc: + * @node: the current node + * + * Signature for the deregistration callback of a discarded node + */ typedef void (*xmlDeregisterNodeFunc) (xmlNodePtr node); typedef struct _xmlGlobalState xmlGlobalState; typedef xmlGlobalState *xmlGlobalStatePtr; -struct _xmlGlobalState +struct _xmlGlobalState { const char *xmlParserVersion; @@ -114,14 +155,16 @@ int xmlIndentTreeOutput; const char *xmlTreeIndentString; - xmlRegisterNodeFunc xmlRegisterNodeDefaultValue; - xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue; + xmlRegisterNodeFunc xmlRegisterNodeDefaultValue; + xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue; xmlMallocFunc xmlMallocAtomic; xmlError xmlLastError; xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue; xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue; + + void *xmlStructuredErrorContext; }; #ifdef __cplusplus @@ -143,10 +186,11 @@ XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlDeregisterNodeDefault(xmlDeregisterNodeFunc func); XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func); -XMLPUBFUN xmlOutputBufferCreateFilenameFunc XMLCALL +XMLPUBFUN xmlOutputBufferCreateFilenameFunc XMLCALL xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func); -XMLPUBFUN xmlParserInputBufferCreateFilenameFunc XMLCALL - xmlThrDefParserInputBufferCreateFilenameDefault(xmlParserInputBufferCreateFilenameFunc func); +XMLPUBFUN xmlParserInputBufferCreateFilenameFunc XMLCALL + xmlThrDefParserInputBufferCreateFilenameDefault( + xmlParserInputBufferCreateFilenameFunc func); /** DOC_DISABLE */ /* @@ -258,7 +302,8 @@ #else XMLPUBVAR xmlBufferAllocationScheme xmlBufferAllocScheme; #endif -XMLPUBFUN xmlBufferAllocationScheme XMLCALL xmlThrDefBufferAllocScheme(xmlBufferAllocationScheme v); +XMLPUBFUN xmlBufferAllocationScheme XMLCALL + xmlThrDefBufferAllocScheme(xmlBufferAllocationScheme v); XMLPUBFUN int * XMLCALL __xmlDefaultBufferSize(void); #ifdef LIBXML_THREAD_ENABLED @@ -318,6 +363,14 @@ XMLPUBVAR void * xmlGenericErrorContext; #endif +XMLPUBFUN void * * XMLCALL __xmlStructuredErrorContext(void); +#ifdef LIBXML_THREAD_ENABLED +#define xmlStructuredErrorContext \ +(*(__xmlStructuredErrorContext())) +#else +XMLPUBVAR void * xmlStructuredErrorContext; +#endif + XMLPUBFUN int * XMLCALL __xmlGetWarningsDefaultValue(void); #ifdef LIBXML_THREAD_ENABLED #define xmlGetWarningsDefaultValue \ @@ -432,7 +485,8 @@ XMLPUBVAR xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue; #endif -XMLPUBFUN xmlParserInputBufferCreateFilenameFunc * XMLCALL __xmlParserInputBufferCreateFilenameValue(void); +XMLPUBFUN xmlParserInputBufferCreateFilenameFunc * XMLCALL \ + __xmlParserInputBufferCreateFilenameValue(void); #ifdef LIBXML_THREAD_ENABLED #define xmlParserInputBufferCreateFilenameValue \ (*(__xmlParserInputBufferCreateFilenameValue())) diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/hash.c gettext-0.19.7/gnulib-local/lib/libxml/hash.c --- gettext-0.19.6/gnulib-local/lib/libxml/hash.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/hash.c 2015-12-23 07:08:27.000000000 +0000 @@ -3,7 +3,7 @@ * * Reference: Your favorite introductory book on algorithms * - * Copyright (C) 2000 Bjorn Reese and Daniel Veillard. + * Copyright (C) 2000,2012 Bjorn Reese and Daniel Veillard. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -21,6 +21,22 @@ #include "libxml.h" #include +#ifdef HAVE_STDLIB_H +#include +#endif +#ifdef HAVE_TIME_H +#include +#endif + +/* + * Following http://www.ocert.org/advisories/ocert-2011-003.html + * it seems that having hash randomization might be a good idea + * when using XML with untrusted data + */ +#if defined(HAVE_RAND) && defined(HAVE_SRAND) && defined(HAVE_TIME) +#define HASH_RANDOMIZATION +#endif + #include #include #include @@ -53,6 +69,9 @@ int size; int nbElems; xmlDictPtr dict; +#ifdef HASH_RANDOMIZATION + int random_seed; +#endif }; /* @@ -64,18 +83,23 @@ const xmlChar *name2, const xmlChar *name3) { unsigned long value = 0L; char ch; - + +#ifdef HASH_RANDOMIZATION + value = table->random_seed; +#endif if (name != NULL) { value += 30 * (*name); while ((ch = *name++) != 0) { value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch); } } + value = value ^ ((value << 5) + (value >> 3)); if (name2 != NULL) { while ((ch = *name2++) != 0) { value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch); } } + value = value ^ ((value << 5) + (value >> 3)); if (name3 != NULL) { while ((ch = *name3++) != 0) { value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch); @@ -91,7 +115,10 @@ const xmlChar *prefix3, const xmlChar *name3) { unsigned long value = 0L; char ch; - + +#ifdef HASH_RANDOMIZATION + value = table->random_seed; +#endif if (prefix != NULL) value += 30 * (*prefix); else @@ -108,6 +135,7 @@ value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch); } } + value = value ^ ((value << 5) + (value >> 3)); if (prefix2 != NULL) { while ((ch = *prefix2++) != 0) { value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch); @@ -119,6 +147,7 @@ value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch); } } + value = value ^ ((value << 5) + (value >> 3)); if (prefix3 != NULL) { while ((ch = *prefix3++) != 0) { value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch); @@ -144,10 +173,10 @@ xmlHashTablePtr xmlHashCreate(int size) { xmlHashTablePtr table; - + if (size <= 0) size = 256; - + table = xmlMalloc(sizeof(xmlHashTable)); if (table) { table->dict = NULL; @@ -155,8 +184,11 @@ table->nbElems = 0; table->table = xmlMalloc(size * sizeof(xmlHashEntry)); if (table->table) { - memset(table->table, 0, size * sizeof(xmlHashEntry)); - return(table); + memset(table->table, 0, size * sizeof(xmlHashEntry)); +#ifdef HASH_RANDOMIZATION + table->random_seed = __xmlRandom(); +#endif + return(table); } xmlFree(table); } @@ -202,7 +234,7 @@ #ifdef DEBUG_GROW unsigned long nbElem = 0; #endif - + if (table == NULL) return(-1); if (size < 8) @@ -214,7 +246,7 @@ oldtable = table->table; if (oldtable == NULL) return(-1); - + table->table = xmlMalloc(size * sizeof(xmlHashEntry)); if (table->table == NULL) { table->table = oldtable; @@ -224,13 +256,13 @@ table->size = size; /* If the two loops are merged, there would be situations where - a new entry needs to allocated and data copied into it from + a new entry needs to allocated and data copied into it from the main table. So instead, we run through the array twice, first copying all the elements in the main array (where we can't get conflicts) and then the rest, so we only free (and don't allocate) */ for (i = 0; i < oldsize; i++) { - if (oldtable[i].valid == 0) + if (oldtable[i].valid == 0) continue; key = xmlHashComputeKey(table, oldtable[i].name, oldtable[i].name2, oldtable[i].name3); @@ -254,8 +286,8 @@ table->table[key].next = NULL; xmlFree(iter); } else { - iter->next = table->table[key].next; - table->table[key].next = iter; + iter->next = table->table[key].next; + table->table[key].next = iter; } #ifdef DEBUG_GROW @@ -320,7 +352,6 @@ inside_table = 0; iter = next; } - inside_table = 0; } xmlFree(table->table); } @@ -572,7 +603,7 @@ entry->valid = 1; - if (insert != NULL) + if (insert != NULL) insert->next = entry; table->nbElems++; @@ -721,7 +752,7 @@ * Returns the a pointer to the userdata */ void * -xmlHashLookup3(xmlHashTablePtr table, const xmlChar *name, +xmlHashLookup3(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, const xmlChar *name3) { unsigned long key; xmlHashEntryPtr entry; @@ -794,14 +825,14 @@ void *data; } stubData; -static void -stubHashScannerFull (void *payload, void *data, const xmlChar *name, +static void +stubHashScannerFull (void *payload, void *data, const xmlChar *name, const xmlChar *name2 ATTRIBUTE_UNUSED, const xmlChar *name3 ATTRIBUTE_UNUSED) { stubData *stubdata = (stubData *) data; stubdata->hashscanner (payload, stubdata->data, (xmlChar *) name); -} - +} + /** * xmlHashScan: * @table: the hash table @@ -814,7 +845,7 @@ xmlHashScan(xmlHashTablePtr table, xmlHashScanner f, void *data) { stubData stubdata; stubdata.data = data; - stubdata.hashscanner = f; + stubdata.hashscanner = f; xmlHashScanFull (table, stubHashScannerFull, &stubdata); } @@ -828,7 +859,7 @@ */ void xmlHashScanFull(xmlHashTablePtr table, xmlHashScannerFull f, void *data) { - int i; + int i, nb; xmlHashEntryPtr iter; xmlHashEntryPtr next; @@ -839,15 +870,26 @@ if (table->table) { for(i = 0; i < table->size; i++) { - if (table->table[i].valid == 0) + if (table->table[i].valid == 0) continue; iter = &(table->table[i]); while (iter) { next = iter->next; + nb = table->nbElems; if ((f != NULL) && (iter->payload != NULL)) f(iter->payload, data, iter->name, iter->name2, iter->name3); - iter = next; + if (nb != table->nbElems) { + /* table was modified by the callback, be careful */ + if (iter == &(table->table[i])) { + if (table->table[i].valid == 0) + iter = NULL; + if (table->table[i].next != next) + iter = &(table->table[i]); + } else + iter = next; + } else + iter = next; } } } @@ -867,7 +909,7 @@ * the comparison is considered to match. */ void -xmlHashScan3(xmlHashTablePtr table, const xmlChar *name, +xmlHashScan3(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, const xmlChar *name3, xmlHashScanner f, void *data) { xmlHashScanFull3 (table, name, name2, name3, @@ -888,7 +930,7 @@ * the comparison is considered to match. */ void -xmlHashScanFull3(xmlHashTablePtr table, const xmlChar *name, +xmlHashScanFull3(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, const xmlChar *name3, xmlHashScannerFull f, void *data) { int i; @@ -942,6 +984,9 @@ return(NULL); ret = xmlHashCreate(table->size); + if (ret == NULL) + return(NULL); + if (table->table) { for(i = 0; i < table->size; i++) { if (table->table[i].valid == 0) diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/hash.in.h gettext-0.19.7/gnulib-local/lib/libxml/hash.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/hash.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/hash.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -1,7 +1,7 @@ /* * Summary: Chained hash tables - * Description: This module implements the hash table support used in - * various places in the library. + * Description: This module implements the hash table support used in + * various places in the library. * * Copy: See Copyright for the status of this software. * @@ -108,40 +108,40 @@ XMLPUBFUN xmlHashTablePtr XMLCALL xmlHashCreateDict(int size, xmlDictPtr dict); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlHashFree (xmlHashTablePtr table, xmlHashDeallocator f); /* * Add a new entry to the hash table. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashAddEntry (xmlHashTablePtr table, const xmlChar *name, void *userdata); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashUpdateEntry(xmlHashTablePtr table, const xmlChar *name, void *userdata, xmlHashDeallocator f); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashAddEntry2(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, void *userdata); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashUpdateEntry2(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, void *userdata, xmlHashDeallocator f); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashAddEntry3(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, const xmlChar *name3, void *userdata); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashUpdateEntry3(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, @@ -152,13 +152,13 @@ /* * Remove an entry from the hash table. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name, xmlHashDeallocator f); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, xmlHashDeallocator f); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, const xmlChar *name3, xmlHashDeallocator f); @@ -166,29 +166,29 @@ /* * Retrieve the userdata. */ -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlHashLookup (xmlHashTablePtr table, const xmlChar *name); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlHashLookup2 (xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlHashLookup3 (xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, const xmlChar *name3); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlHashQLookup (xmlHashTablePtr table, const xmlChar *name, const xmlChar *prefix); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlHashQLookup2 (xmlHashTablePtr table, const xmlChar *name, const xmlChar *prefix, const xmlChar *name2, const xmlChar *prefix2); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlHashQLookup3 (xmlHashTablePtr table, const xmlChar *name, const xmlChar *prefix, @@ -200,27 +200,27 @@ /* * Helpers. */ -XMLPUBFUN xmlHashTablePtr XMLCALL +XMLPUBFUN xmlHashTablePtr XMLCALL xmlHashCopy (xmlHashTablePtr table, xmlHashCopier f); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlHashSize (xmlHashTablePtr table); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlHashScan (xmlHashTablePtr table, xmlHashScanner f, void *data); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlHashScan3 (xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, const xmlChar *name3, xmlHashScanner f, void *data); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlHashScanFull (xmlHashTablePtr table, xmlHashScannerFull f, void *data); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlHashScanFull3(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/HTMLparser.c gettext-0.19.7/gnulib-local/lib/libxml/HTMLparser.c --- gettext-0.19.6/gnulib-local/lib/libxml/HTMLparser.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/HTMLparser.c 2015-12-23 07:08:27.000000000 +0000 @@ -44,6 +44,9 @@ #include #include +#include "buf.h" +#include "enc.h" + #define HTML_MAX_NAMELEN 1000 #define HTML_PARSER_BIG_BUFFER_SIZE 1000 #define HTML_PARSER_BUFFER_SIZE 100 @@ -59,7 +62,7 @@ /************************************************************************ * * - * Some factorized error routines * + * Some factorized error routines * * * ************************************************************************/ @@ -147,7 +150,7 @@ /************************************************************************ * * - * Parser stacks related functions and macros * + * Parser stacks related functions and macros * * * ************************************************************************/ @@ -163,6 +166,10 @@ static int htmlnamePush(htmlParserCtxtPtr ctxt, const xmlChar * value) { + if ((ctxt->html < 3) && (xmlStrEqual(value, BAD_CAST "head"))) + ctxt->html = 3; + if ((ctxt->html < 10) && (xmlStrEqual(value, BAD_CAST "body"))) + ctxt->html = 10; if (ctxt->nameNr >= ctxt->nameMax) { ctxt->nameMax *= 2; ctxt->nameTab = (const xmlChar * *) @@ -205,6 +212,59 @@ return (ret); } +/** + * htmlNodeInfoPush: + * @ctxt: an HTML parser context + * @value: the node info + * + * Pushes a new element name on top of the node info stack + * + * Returns 0 in case of error, the index in the stack otherwise + */ +static int +htmlNodeInfoPush(htmlParserCtxtPtr ctxt, htmlParserNodeInfo *value) +{ + if (ctxt->nodeInfoNr >= ctxt->nodeInfoMax) { + if (ctxt->nodeInfoMax == 0) + ctxt->nodeInfoMax = 5; + ctxt->nodeInfoMax *= 2; + ctxt->nodeInfoTab = (htmlParserNodeInfo *) + xmlRealloc((htmlParserNodeInfo *)ctxt->nodeInfoTab, + ctxt->nodeInfoMax * + sizeof(ctxt->nodeInfoTab[0])); + if (ctxt->nodeInfoTab == NULL) { + htmlErrMemory(ctxt, NULL); + return (0); + } + } + ctxt->nodeInfoTab[ctxt->nodeInfoNr] = *value; + ctxt->nodeInfo = &ctxt->nodeInfoTab[ctxt->nodeInfoNr]; + return (ctxt->nodeInfoNr++); +} + +/** + * htmlNodeInfoPop: + * @ctxt: an HTML parser context + * + * Pops the top element name from the node info stack + * + * Returns 0 in case of error, the pointer to NodeInfo otherwise + */ +static htmlParserNodeInfo * +htmlNodeInfoPop(htmlParserCtxtPtr ctxt) +{ + if (ctxt->nodeInfoNr <= 0) + return (NULL); + ctxt->nodeInfoNr--; + if (ctxt->nodeInfoNr < 0) + return (NULL); + if (ctxt->nodeInfoNr > 0) + ctxt->nodeInfo = &ctxt->nodeInfoTab[ctxt->nodeInfoNr - 1]; + else + ctxt->nodeInfo = NULL; + return &ctxt->nodeInfoTab[ctxt->nodeInfoNr]; +} + /* * Macros for accessing the content. Those should be used only by the parser, * and not exported. @@ -263,8 +323,6 @@ #define NEXT xmlNextChar(ctxt) #define RAW (ctxt->token ? -1 : (*ctxt->input->cur)) -#define NXT(val) ctxt->input->cur[(val)] -#define CUR_PTR ctxt->input->cur #define NEXTL(l) do { \ @@ -273,7 +331,7 @@ } else ctxt->input->col++; \ ctxt->token = 0; ctxt->input->cur += l; ctxt->nbChars++; \ } while (0) - + /************ \ if (*ctxt->input->cur == '%') xmlParserHandlePEReference(ctxt); \ @@ -288,6 +346,58 @@ else i += xmlCopyChar(l,&b[i],v) /** + * htmlFindEncoding: + * @the HTML parser context + * + * Ty to find and encoding in the current data available in the input + * buffer this is needed to try to switch to the proper encoding when + * one face a character error. + * That's an heuristic, since it's operating outside of parsing it could + * try to use a meta which had been commented out, that's the reason it + * should only be used in case of error, not as a default. + * + * Returns an encoding string or NULL if not found, the string need to + * be freed + */ +static xmlChar * +htmlFindEncoding(xmlParserCtxtPtr ctxt) { + const xmlChar *start, *cur, *end; + + if ((ctxt == NULL) || (ctxt->input == NULL) || + (ctxt->input->encoding != NULL) || (ctxt->input->buf == NULL) || + (ctxt->input->buf->encoder != NULL)) + return(NULL); + if ((ctxt->input->cur == NULL) || (ctxt->input->end == NULL)) + return(NULL); + + start = ctxt->input->cur; + end = ctxt->input->end; + /* we also expect the input buffer to be zero terminated */ + if (*end != 0) + return(NULL); + + cur = xmlStrcasestr(start, BAD_CAST "HTTP-EQUIV"); + if (cur == NULL) + return(NULL); + cur = xmlStrcasestr(cur, BAD_CAST "CONTENT"); + if (cur == NULL) + return(NULL); + cur = xmlStrcasestr(cur, BAD_CAST "CHARSET="); + if (cur == NULL) + return(NULL); + cur += 8; + start = cur; + while (((*cur >= 'A') && (*cur <= 'Z')) || + ((*cur >= 'a') && (*cur <= 'z')) || + ((*cur >= '0') && (*cur <= '9')) || + (*cur == '-') || (*cur == '_') || (*cur == ':') || (*cur == '/')) + cur++; + if (cur == start) + return(NULL); + return(xmlStrndup(start, cur - start)); +} + +/** * htmlCurrentChar: * @ctxt: the HTML parser context * @len: pointer to the length of the char read @@ -309,7 +419,7 @@ if (ctxt->token != 0) { *len = 0; return(ctxt->token); - } + } if (ctxt->charset == XML_CHAR_ENCODING_UTF8) { /* * We are supposed to handle UTF8, check it's valid @@ -318,7 +428,7 @@ * UCS-4 range (hex.) UTF-8 octet sequence (binary) * 0000 0000-0000 007F 0xxxxxxx * 0000 0080-0000 07FF 110xxxxx 10xxxxxx - * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx + * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx * * Check for the 0x110000 limit too */ @@ -328,19 +438,25 @@ c = *cur; if (c & 0x80) { - if (cur[1] == 0) + if (cur[1] == 0) { xmlParserInputGrow(ctxt->input, INPUT_CHUNK); + cur = ctxt->input->cur; + } if ((cur[1] & 0xc0) != 0x80) goto encoding_error; if ((c & 0xe0) == 0xe0) { - if (cur[2] == 0) + if (cur[2] == 0) { xmlParserInputGrow(ctxt->input, INPUT_CHUNK); + cur = ctxt->input->cur; + } if ((cur[2] & 0xc0) != 0x80) goto encoding_error; if ((c & 0xf0) == 0xf0) { - if (cur[3] == 0) + if (cur[3] == 0) { xmlParserInputGrow(ctxt->input, INPUT_CHUNK); + cur = ctxt->input->cur; + } if (((c & 0xf8) != 0xf0) || ((cur[3] & 0xc0) != 0x80)) goto encoding_error; @@ -366,9 +482,16 @@ if (!IS_CHAR(val)) { htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR, "Char 0x%X out of allowed range\n", val); - } + } return(val); } else { + if ((*ctxt->input->cur == 0) && + (ctxt->input->cur < ctxt->input->end)) { + htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR, + "Char 0x%X out of allowed range\n", 0); + *len = 1; + return(' '); + } /* 1-byte code */ *len = 1; return((int) *ctxt->input->cur); @@ -386,8 +509,28 @@ /* * Humm this is bad, do an automatic flow conversion */ - xmlSwitchEncoding(ctxt, XML_CHAR_ENCODING_8859_1); - ctxt->charset = XML_CHAR_ENCODING_UTF8; + { + xmlChar * guess; + xmlCharEncodingHandlerPtr handler; + + guess = htmlFindEncoding(ctxt); + if (guess == NULL) { + xmlSwitchEncoding(ctxt, XML_CHAR_ENCODING_8859_1); + } else { + if (ctxt->input->encoding != NULL) + xmlFree((xmlChar *) ctxt->input->encoding); + ctxt->input->encoding = guess; + handler = xmlFindCharEncodingHandler((const char *) guess); + if (handler != NULL) { + xmlSwitchToEncoding(ctxt, handler); + } else { + htmlParseErr(ctxt, XML_ERR_INVALID_ENCODING, + "Unsupported encoding %s", guess, NULL); + } + } + ctxt->charset = XML_CHAR_ENCODING_UTF8; + } + return(xmlCurrentChar(ctxt, len)); encoding_error: @@ -401,15 +544,19 @@ { char buffer[150]; - snprintf(buffer, 149, "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n", - ctxt->input->cur[0], ctxt->input->cur[1], - ctxt->input->cur[2], ctxt->input->cur[3]); + if (ctxt->input->end - ctxt->input->cur >= 4) { + snprintf(buffer, 149, "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n", + ctxt->input->cur[0], ctxt->input->cur[1], + ctxt->input->cur[2], ctxt->input->cur[3]); + } else { + snprintf(buffer, 149, "Bytes: 0x%02X\n", ctxt->input->cur[0]); + } htmlParseErr(ctxt, XML_ERR_INVALID_ENCODING, "Input is not proper UTF-8, indicate encoding !\n", BAD_CAST buffer, NULL); } - ctxt->charset = XML_CHAR_ENCODING_8859_1; + ctxt->charset = XML_CHAR_ENCODING_8859_1; *len = 1; return((int) *ctxt->input->cur); } @@ -449,7 +596,7 @@ /************************************************************************ * * - * The list of HTML elements and their properties * + * The list of HTML elements and their properties * * * ************************************************************************/ @@ -472,11 +619,11 @@ #define NB_FONTSTYLE 8 #define PHRASE "em", "strong", "dfn", "code", "samp", "kbd", "var", "cite", "abbr", "acronym" #define NB_PHRASE 10 -#define SPECIAL "a", "img", "applet", "object", "font", "basefont", "br", "script", "map", "q", "sub", "sup", "span", "bdo", "iframe" -#define NB_SPECIAL 15 -#define INLINE PCDATA FONTSTYLE PHRASE SPECIAL FORMCTRL +#define SPECIAL "a", "img", "applet", "embed", "object", "font", "basefont", "br", "script", "map", "q", "sub", "sup", "span", "bdo", "iframe" +#define NB_SPECIAL 16 +#define INLINE FONTSTYLE, PHRASE, SPECIAL, FORMCTRL #define NB_INLINE NB_PCDATA + NB_FONTSTYLE + NB_PHRASE + NB_SPECIAL + NB_FORMCTRL -#define BLOCK HEADING, LIST "pre", "p", "dl", "div", "center", "noscript", "noframes", "blockquote", "form", "isindex", "hr", "table", "fieldset", "address" +#define BLOCK HEADING, LIST, "pre", "p", "dl", "div", "center", "noscript", "noframes", "blockquote", "form", "isindex", "hr", "table", "fieldset", "address" #define NB_BLOCK NB_HEADING + NB_LIST + 14 #define FORMCTRL "input", "select", "textarea", "label", "button" #define NB_FORMCTRL 5 @@ -572,6 +719,7 @@ static const char* const html_content[] = { "head", "body", "frameset", NULL } ; static const char* const iframe_attrs[] = { COREATTRS, "longdesc", "name", "src", "frameborder", "marginwidth", "marginheight", "scrolling", "align", "height", "width", NULL } ; static const char* const img_attrs[] = { ATTRS, "longdesc", "name", "height", "width", "usemap", "ismap", NULL } ; +static const char* const embed_attrs[] = { COREATTRS, "align", "alt", "border", "code", "codebase", "frameborder", "height", "hidden", "hspace", "name", "palette", "pluginspace", "pluginurl", "src", "type", "units", "vspace", "width", NULL } ; static const char* const input_attrs[] = { ATTRS, "type", "name", "value", "checked", "disabled", "readonly", "size", "maxlength", "src", "alt", "usemap", "ismap", "tabindex", "accesskey", "onfocus", "onblur", "onselect", "onchange", "accept", NULL } ; static const char* const prompt_attrs[] = { COREATTRS, I18N, "prompt", NULL } ; static const char* const label_attrs[] = { ATTRS, "for", "accesskey", "onfocus", "onblur", NULL } ; @@ -582,7 +730,7 @@ static const char* const name_attr[] = { "name", NULL } ; static const char* const action_attr[] = { "action", NULL } ; static const char* const blockli_elt[] = { BLOCK, "li", NULL } ; -static const char* const meta_attrs[] = { I18N, "http-equiv", "name", "scheme", NULL } ; +static const char* const meta_attrs[] = { I18N, "http-equiv", "name", "scheme", "charset", NULL } ; static const char* const content_attr[] = { "content", NULL } ; static const char* const type_attr[] = { "type", NULL } ; static const char* const noframes_content[] = { "body", FLOW MODIFIER, NULL } ; @@ -601,7 +749,7 @@ static const char* const select_content[] = { "optgroup", "option", NULL } ; static const char* const select_attrs[] = { ATTRS, "name", "size", "multiple", "disabled", "tabindex", "onfocus", "onblur", "onchange", NULL } ; static const char* const style_attrs[] = { I18N, "media", "title", NULL } ; -static const char* const table_attrs[] = { ATTRS "summary", "width", "border", "frame", "rules", "cellspacing", "cellpadding", "datapagesize", NULL } ; +static const char* const table_attrs[] = { ATTRS, "summary", "width", "border", "frame", "rules", "cellspacing", "cellpadding", "datapagesize", NULL } ; static const char* const table_depr[] = { "align", "bgcolor", NULL } ; static const char* const table_contents[] = { "caption", "col", "colgroup", "thead", "tfoot", "tbody", "tr", NULL} ; static const char* const tr_elt[] = { "tr", NULL } ; @@ -698,7 +846,7 @@ DECL html_flow, NULL, DECL html_attrs, DECL align_attr, NULL }, { "dl", 0, 0, 0, 0, 0, 0, 0, "definition list ", - DECL dl_contents , "dd" , html_attrs, DECL compact_attr, NULL + DECL dl_contents , "dd" , DECL html_attrs, DECL compact_attr, NULL }, { "dt", 0, 1, 0, 0, 0, 0, 0, "definition term ", DECL html_inline, NULL, DECL html_attrs, NULL, NULL @@ -706,6 +854,9 @@ { "em", 0, 3, 0, 0, 0, 0, 1, "emphasis", DECL html_inline, NULL, DECL html_attrs, NULL, NULL }, +{ "embed", 0, 1, 0, 0, 1, 1, 1, "generic embedded object ", + EMPTY, NULL, DECL embed_attrs, NULL, NULL +}, { "fieldset", 0, 0, 0, 0, 0, 0, 0, "form control group ", DECL fieldset_contents , NULL, DECL html_attrs, NULL, NULL }, @@ -755,7 +906,7 @@ DECL html_flow, NULL, NULL, DECL iframe_attrs, NULL }, { "img", 0, 2, 2, 1, 0, 0, 1, "embedded image ", - EMPTY, NULL, DECL img_attrs, DECL align_attr, src_alt_attrs + EMPTY, NULL, DECL img_attrs, DECL align_attr, DECL src_alt_attrs }, { "input", 0, 2, 2, 1, 0, 0, 1, "form control ", EMPTY, NULL, DECL input_attrs , DECL align_attr, NULL @@ -782,7 +933,7 @@ EMPTY, NULL, DECL link_attrs, DECL target_attr, NULL }, { "map", 0, 0, 0, 0, 0, 0, 2, "client-side image map ", - DECL map_contents , NULL, DECL html_attrs , NULL, name_attr + DECL map_contents , NULL, DECL html_attrs , NULL, DECL name_attr }, { "menu", 0, 0, 0, 0, 1, 1, 0, "menu list ", DECL blockli_elt , NULL, NULL, DECL compact_attrs, NULL @@ -803,7 +954,7 @@ DECL li_elt , "li" , DECL html_attrs, DECL ol_attrs, NULL }, { "optgroup", 0, 0, 0, 0, 0, 0, 0, "option group ", - option_elt , "option", DECL optgroup_attrs, NULL, DECL label_attr + DECL option_elt , "option", DECL optgroup_attrs, NULL, DECL label_attr }, { "option", 0, 1, 0, 0, 0, 0, 0, "selectable choice " , DECL html_pcdata, NULL, DECL option_attrs, NULL, NULL @@ -812,7 +963,7 @@ DECL html_inline, NULL, DECL html_attrs, DECL align_attr, NULL }, { "param", 0, 2, 2, 1, 0, 0, 0, "named property value ", - EMPTY, NULL, DECL param_attrs, NULL, name_attr + EMPTY, NULL, DECL param_attrs, NULL, DECL name_attr }, { "pre", 0, 0, 0, 0, 0, 0, 0, "preformatted text ", DECL pre_content, NULL, DECL html_attrs, DECL width_attr, NULL @@ -930,18 +1081,18 @@ "listing", "xmp", NULL, "ol", "p", "head", "ul", NULL, "menu", "p", "head", "ul", NULL, -"p", "p", "head", "h1", "h2", "h3", "h4", "h5", "h6", NULL, +"p", "p", "head", "h1", "h2", "h3", "h4", "h5", "h6", FONTSTYLE, NULL, "div", "p", "head", NULL, -"noscript", "p", "head", NULL, +"noscript", "p", NULL, "center", "font", "b", "i", "p", "head", NULL, -"a", "a", NULL, +"a", "a", "head", NULL, "caption", "p", NULL, "colgroup", "caption", "colgroup", "col", "p", NULL, "col", "caption", "col", "p", NULL, "table", "p", "head", "h1", "h2", "h3", "h4", "h5", "h6", "pre", "listing", "xmp", "a", NULL, "th", "th", "td", "p", "span", "font", "a", "b", "i", "u", NULL, -"td", "th", "td", "p", "span", "font", "a", "b", "i", "u", NULL, +"td", "th", "td", "p", "span", "font", "a", "b", "i", "u", NULL, "tr", "th", "td", "tr", "caption", "col", "colgroup", "p", NULL, "thead", "caption", "col", "colgroup", NULL, "tfoot", "th", "td", "tr", "caption", "col", "colgroup", "thead", @@ -952,6 +1103,43 @@ "option", "option", NULL, "fieldset", "legend", "p", "head", "h1", "h2", "h3", "h4", "h5", "h6", "pre", "listing", "xmp", "a", NULL, +/* most tags in in FONTSTYLE, PHRASE and SPECIAL should close */ +"tt", "head", NULL, +"i", "head", NULL, +"b", "head", NULL, +"u", "head", NULL, +"s", "head", NULL, +"strike", "head", NULL, +"big", "head", NULL, +"small", "head", NULL, + +"em", "head", NULL, +"strong", "head", NULL, +"dfn", "head", NULL, +"code", "head", NULL, +"samp", "head", NULL, +"kbd", "head", NULL, +"var", "head", NULL, +"cite", "head", NULL, +"abbr", "head", NULL, +"acronym", "head", NULL, + +/* "a" */ +"img", "head", NULL, +/* "applet" */ +/* "embed" */ +/* "object" */ +"font", "head", NULL, +/* "basefont" */ +"br", "head", NULL, +/* "script" */ +"map", "head", NULL, +"q", "head", NULL, +"sub", "head", NULL, +"sup", "head", NULL, +"span", "head", NULL, +"bdo", "head", NULL, +"iframe", "head", NULL, NULL }; @@ -989,7 +1177,7 @@ "onfocus", "onblur", "onsubmit", - "onrest", + "onreset", "onchange", "onselect" }; @@ -1000,7 +1188,7 @@ * elements the parser can decide how to handle extra endtags. * Endtags are only allowed to close elements with lower or equal * priority. - */ + */ typedef struct { const char *name; @@ -1027,7 +1215,7 @@ /************************************************************************ * * - * functions to handle HTML specific data * + * functions to handle HTML specific data * * * ************************************************************************/ @@ -1077,7 +1265,7 @@ /** * htmlGetEndPriority: * @name: The name of the element to look up the priority for. - * + * * Return value: The "endtag" priority. **/ static int @@ -1156,7 +1344,7 @@ * A missplaced endtag can only close elements with lower * or equal priority, so if we find an element with higher * priority before we find an element with - * matching name, we just ignore this endtag + * matching name, we just ignore this endtag */ if (htmlGetEndPriority(ctxt->nameTab[i]) > priority) return; @@ -1207,7 +1395,7 @@ * called when a new tag has been detected and generates the * appropriates closes if possible/needed. * If newtag is NULL this mean we are at the end of the resource - * and we should check + * and we should check */ static void htmlAutoClose(htmlParserCtxtPtr ctxt, const xmlChar * newtag) @@ -1295,6 +1483,10 @@ */ static void htmlCheckImplied(htmlParserCtxtPtr ctxt, const xmlChar *newtag) { + int i; + + if (ctxt->options & HTML_PARSE_NOIMPLIED) + return; if (!htmlOmittedDefaultValue) return; if (xmlStrEqual(newtag, BAD_CAST"html")) @@ -1306,24 +1498,31 @@ } if ((xmlStrEqual(newtag, BAD_CAST"body")) || (xmlStrEqual(newtag, BAD_CAST"head"))) return; - if ((ctxt->nameNr <= 1) && + if ((ctxt->nameNr <= 1) && ((xmlStrEqual(newtag, BAD_CAST"script")) || (xmlStrEqual(newtag, BAD_CAST"style")) || (xmlStrEqual(newtag, BAD_CAST"meta")) || (xmlStrEqual(newtag, BAD_CAST"link")) || (xmlStrEqual(newtag, BAD_CAST"title")) || (xmlStrEqual(newtag, BAD_CAST"base")))) { - /* - * dropped OBJECT ... i you put it first BODY will be - * assumed ! - */ - htmlnamePush(ctxt, BAD_CAST"head"); - if ((ctxt->sax != NULL) && (ctxt->sax->startElement != NULL)) - ctxt->sax->startElement(ctxt->userData, BAD_CAST"head", NULL); + if (ctxt->html >= 3) { + /* we already saw or generated an before */ + return; + } + /* + * dropped OBJECT ... i you put it first BODY will be + * assumed ! + */ + htmlnamePush(ctxt, BAD_CAST"head"); + if ((ctxt->sax != NULL) && (ctxt->sax->startElement != NULL)) + ctxt->sax->startElement(ctxt->userData, BAD_CAST"head", NULL); } else if ((!xmlStrEqual(newtag, BAD_CAST"noframes")) && (!xmlStrEqual(newtag, BAD_CAST"frame")) && (!xmlStrEqual(newtag, BAD_CAST"frameset"))) { - int i; + if (ctxt->html >= 10) { + /* we already saw or generated a before */ + return; + } for (i = 0;i < ctxt->nameNr;i++) { if (xmlStrEqual(ctxt->nameTab[i], BAD_CAST"body")) { return; @@ -1332,7 +1531,7 @@ return; } } - + htmlnamePush(ctxt, BAD_CAST"body"); if ((ctxt->sax != NULL) && (ctxt->sax->startElement != NULL)) ctxt->sax->startElement(ctxt->userData, BAD_CAST"body", NULL); @@ -1394,12 +1593,12 @@ unsigned int i; if (name == NULL) - return(0); + return(0); /* * all script attributes start with 'on' */ if ((name[0] != 'o') || (name[1] != 'n')) - return(0); + return(0); for (i = 0; i < sizeof(htmlScriptAttributes)/sizeof(htmlScriptAttributes[0]); i++) { @@ -1411,7 +1610,7 @@ /************************************************************************ * * - * The list of HTML predefined entities * + * The list of HTML predefined entities * * * ************************************************************************/ @@ -1825,7 +2024,7 @@ if (inend - in < trailing) { break; - } + } for ( ; trailing; trailing--) { if ((in >= inend) || (((d= *in++) & 0xC0) != 0x80)) @@ -1842,6 +2041,8 @@ } else { int len; const htmlEntityDesc * ent; + const char *cp; + char nbuf[16]; /* * Try to lookup a predefined HTML entity for it @@ -1849,16 +2050,16 @@ ent = htmlEntityValueLookup(c); if (ent == NULL) { - /* no chance for this in Ascii */ - *outlen = out - outstart; - *inlen = processed - instart; - return(-2); + snprintf(nbuf, sizeof(nbuf), "#%u", c); + cp = nbuf; } - len = strlen(ent->name); + else + cp = ent->name; + len = strlen(cp); if (out + 2 + len >= outend) break; *out++ = '&'; - memcpy(out, ent->name, len); + memcpy(out, cp, len); out += len; *out++ = ';'; } @@ -2013,7 +2214,7 @@ * * ************************************************************************/ /* - * all tags allowing pc data from the html 4.01 loose dtd + * all tags allowing pc data from the html 4.01 loose dtd * NOTE: it might be more apropriate to integrate this information * into the html40ElementTable array but I don't want to risk any * binary incomptibility @@ -2073,7 +2274,7 @@ if (lastChild == NULL) { if ((ctxt->node->type != XML_ELEMENT_NODE) && (ctxt->node->content != NULL)) return(0); - /* keep ws in constructs like ... ... + /* keep ws in constructs like ... ... for all tags "b" allowing PCDATA */ for ( i = 0; i < sizeof(allowPCData)/sizeof(allowPCData[0]); i++ ) { if ( xmlStrEqual(ctxt->name, BAD_CAST allowPCData[i]) ) { @@ -2083,7 +2284,7 @@ } else if (xmlNodeIsText(lastChild)) { return(0); } else { - /* keep ws in constructs like

    xy z

    + /* keep ws in constructs like

    xy z

    for all tags "p" allowing PCDATA */ for ( i = 0; i < sizeof(allowPCData)/sizeof(allowPCData[0]); i++ ) { if ( xmlStrEqual(lastChild->name, BAD_CAST allowPCData[i]) ) { @@ -2123,7 +2324,7 @@ cur->intSubset = NULL; cur->doc = cur; cur->name = NULL; - cur->children = NULL; + cur->children = NULL; cur->extSubset = NULL; cur->oldNs = NULL; cur->encoding = NULL; @@ -2133,6 +2334,7 @@ cur->refs = NULL; cur->_private = NULL; cur->charset = XML_CHAR_ENCODING_UTF8; + cur->properties = XML_DOC_HTML | XML_DOC_USERBUILT; if ((ExternalID != NULL) || (URI != NULL)) xmlCreateIntSubset(cur, BAD_CAST "html", ExternalID, URI); @@ -2190,21 +2392,54 @@ xmlChar loc[HTML_PARSER_BUFFER_SIZE]; if (!IS_ASCII_LETTER(CUR) && (CUR != '_') && - (CUR != ':')) return(NULL); + (CUR != ':') && (CUR != '.')) return(NULL); while ((i < HTML_PARSER_BUFFER_SIZE) && ((IS_ASCII_LETTER(CUR)) || (IS_ASCII_DIGIT(CUR)) || - (CUR == ':') || (CUR == '-') || (CUR == '_'))) { + (CUR == ':') || (CUR == '-') || (CUR == '_') || + (CUR == '.'))) { if ((CUR >= 'A') && (CUR <= 'Z')) loc[i] = CUR + 0x20; else loc[i] = CUR; i++; - + NEXT; } - + + return(xmlDictLookup(ctxt->dict, loc, i)); +} + + +/** + * htmlParseHTMLName_nonInvasive: + * @ctxt: an HTML parser context + * + * parse an HTML tag or attribute name, note that we convert it to lowercase + * since HTML names are not case-sensitive, this doesn't consume the data + * from the stream, it's a look-ahead + * + * Returns the Tag Name parsed or NULL + */ + +static const xmlChar * +htmlParseHTMLName_nonInvasive(htmlParserCtxtPtr ctxt) { + int i = 0; + xmlChar loc[HTML_PARSER_BUFFER_SIZE]; + + if (!IS_ASCII_LETTER(NXT(1)) && (NXT(1) != '_') && + (NXT(1) != ':')) return(NULL); + + while ((i < HTML_PARSER_BUFFER_SIZE) && + ((IS_ASCII_LETTER(NXT(1+i))) || (IS_ASCII_DIGIT(NXT(1+i))) || + (NXT(1+i) == ':') || (NXT(1+i) == '-') || (NXT(1+i) == '_'))) { + if ((NXT(1+i) >= 'A') && (NXT(1+i) <= 'Z')) loc[i] = NXT(1+i) + 0x20; + else loc[i] = NXT(1+i); + i++; + } + return(xmlDictLookup(ctxt->dict, loc, i)); } + /** * htmlParseName: * @ctxt: an HTML parser context @@ -2268,7 +2503,7 @@ while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */ ((IS_LETTER(c)) || (IS_DIGIT(c)) || (c == '.') || (c == '-') || - (c == '_') || (c == ':') || + (c == '_') || (c == ':') || (IS_COMBINING(c)) || (IS_EXTENDER(c)))) { if (count++ > 100) { @@ -2287,7 +2522,7 @@ * htmlParseHTMLAttribute: * @ctxt: an HTML parser context * @stop: a char stop value - * + * * parse an HTML attribute value till the stop (quote), if * stop is 0 then it stops at the first space * @@ -2332,13 +2567,13 @@ { *out++ =((c >> 6) & 0x1F) | 0xC0; bits= 0; } else if (c < 0x10000) { *out++ =((c >> 12) & 0x0F) | 0xE0; bits= 6; } - else + else { *out++ =((c >> 18) & 0x07) | 0xF0; bits= 12; } - + for ( ; bits >= 0; bits-= 6) { *out++ = ((c >> bits) & 0x3F) | 0x80; } - + if (out - buffer > buffer_size - 100) { int indx = out - buffer; @@ -2384,9 +2619,9 @@ { *out++ =((c >> 6) & 0x1F) | 0xC0; bits= 0; } else if (c < 0x10000) { *out++ =((c >> 12) & 0x0F) | 0xE0; bits= 6; } - else + else { *out++ =((c >> 18) & 0x07) | 0xF0; bits= 12; } - + for ( ; bits >= 0; bits-= 6) { *out++ = ((c >> bits) & 0x3F) | 0x80; } @@ -2409,16 +2644,16 @@ { *out++ =((c >> 6) & 0x1F) | 0xC0; bits= 0; } else if (c < 0x10000) { *out++ =((c >> 12) & 0x0F) | 0xE0; bits= 6; } - else + else { *out++ =((c >> 18) & 0x07) | 0xF0; bits= 12; } - + for ( ; bits >= 0; bits-= 6) { *out++ = ((c >> bits) & 0x3F) | 0x80; } NEXT; } } - *out++ = 0; + *out = 0; return(buffer); } @@ -2479,7 +2714,7 @@ * parse a value for an attribute * Note: the parser won't do substitution of entities here, this * will be handled later in xmlStringGetNodeList, unless it was - * asked for ctxt->replaceEntities != 0 + * asked for ctxt->replaceEntities != 0 * * Returns the AttValue parsed or NULL. */ @@ -2520,7 +2755,7 @@ /** * htmlParseSystemLiteral: * @ctxt: an HTML parser context - * + * * parse an HTML Literal * * [11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'") @@ -2561,7 +2796,7 @@ htmlParseErr(ctxt, XML_ERR_LITERAL_NOT_STARTED, " or ' expected\n", NULL, NULL); } - + return(ret); } @@ -2610,7 +2845,7 @@ htmlParseErr(ctxt, XML_ERR_LITERAL_NOT_STARTED, "PubidLiteral \" or ' expected\n", NULL, NULL); } - + return(ret); } @@ -2644,23 +2879,7 @@ SHRINK; cur = CUR_CHAR(l); while (IS_CHAR_CH(cur)) { - if ((cur == '<') && (NXT(1) == '!') && (NXT(2) == '-') && - (NXT(3) == '-')) { - if ((nbchar != 0) && (ctxt->sax != NULL) && (!ctxt->disableSAX)) { - if (ctxt->sax->cdataBlock!= NULL) { - /* - * Insert as CDATA, which is the same as HTML_PRESERVE_NODE - */ - ctxt->sax->cdataBlock(ctxt->userData, buf, nbchar); - } else if (ctxt->sax->characters != NULL) { - ctxt->sax->characters(ctxt->userData, buf, nbchar); - } - } - nbchar = 0; - htmlParseComment(ctxt); - cur = CUR_CHAR(l); - continue; - } else if ((cur == '<') && (NXT(1) == '/')) { + if ((cur == '<') && (NXT(1) == '/')) { /* * One should break here, the specification is clear: * Authors should therefore escape "recovery) { - if (xmlStrncasecmp(ctxt->name, ctxt->input->cur+2, - xmlStrlen(ctxt->name)) == 0) + if (xmlStrncasecmp(ctxt->name, ctxt->input->cur+2, + xmlStrlen(ctxt->name)) == 0) { break; /* while */ } else { @@ -2684,7 +2903,7 @@ } } else { if (((NXT(2) >= 'A') && (NXT(2) <= 'Z')) || - ((NXT(2) >= 'a') && (NXT(2) <= 'z'))) + ((NXT(2) >= 'a') && (NXT(2) <= 'z'))) { break; /* while */ } @@ -2708,9 +2927,11 @@ } if ((!(IS_CHAR_CH(cur))) && (!((cur == 0) && (ctxt->progressive)))) { - htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR, - "Invalid char in CDATA 0x%X\n", cur); - NEXT; + htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR, + "Invalid char in CDATA 0x%X\n", cur); + if (ctxt->input->cur < ctxt->input->end) { + NEXT; + } } if ((nbchar != 0) && (ctxt->sax != NULL) && (!ctxt->disableSAX)) { @@ -2727,8 +2948,9 @@ /** - * htmlParseCharData: + * htmlParseCharDataInternal: * @ctxt: an HTML parser context + * @readahead: optional read ahead character in ascii range * * parse a CharData section. * if we are within a CDATA section ']]>' marks an end of section. @@ -2737,26 +2959,40 @@ */ static void -htmlParseCharData(htmlParserCtxtPtr ctxt) { - xmlChar buf[HTML_PARSER_BIG_BUFFER_SIZE + 5]; +htmlParseCharDataInternal(htmlParserCtxtPtr ctxt, int readahead) { + xmlChar buf[HTML_PARSER_BIG_BUFFER_SIZE + 6]; int nbchar = 0; int cur, l; + int chunk = 0; + + if (readahead) + buf[nbchar++] = readahead; SHRINK; cur = CUR_CHAR(l); while (((cur != '<') || (ctxt->token == '<')) && - ((cur != '&') || (ctxt->token == '&')) && - (IS_CHAR(cur))) { - COPY_BUF(l,buf,nbchar,cur); + ((cur != '&') || (ctxt->token == '&')) && + (cur != 0)) { + if (!(IS_CHAR(cur))) { + htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR, + "Invalid char in CDATA 0x%X\n", cur); + } else { + COPY_BUF(l,buf,nbchar,cur); + } if (nbchar >= HTML_PARSER_BIG_BUFFER_SIZE) { /* * Ok the segment is to be consumed as chars. */ if ((ctxt->sax != NULL) && (!ctxt->disableSAX)) { if (areBlanks(ctxt, buf, nbchar)) { - if (ctxt->sax->ignorableWhitespace != NULL) - ctxt->sax->ignorableWhitespace(ctxt->userData, - buf, nbchar); + if (ctxt->keepBlanks) { + if (ctxt->sax->characters != NULL) + ctxt->sax->characters(ctxt->userData, buf, nbchar); + } else { + if (ctxt->sax->ignorableWhitespace != NULL) + ctxt->sax->ignorableWhitespace(ctxt->userData, + buf, nbchar); + } } else { htmlCheckParagraph(ctxt); if (ctxt->sax->characters != NULL) @@ -2766,6 +3002,12 @@ nbchar = 0; } NEXTL(l); + chunk++; + if (chunk > HTML_PARSER_BUFFER_SIZE) { + chunk = 0; + SHRINK; + GROW; + } cur = CUR_CHAR(l); if (cur == 0) { SHRINK; @@ -2781,8 +3023,14 @@ */ if ((ctxt->sax != NULL) && (!ctxt->disableSAX)) { if (areBlanks(ctxt, buf, nbchar)) { - if (ctxt->sax->ignorableWhitespace != NULL) - ctxt->sax->ignorableWhitespace(ctxt->userData, buf, nbchar); + if (ctxt->keepBlanks) { + if (ctxt->sax->characters != NULL) + ctxt->sax->characters(ctxt->userData, buf, nbchar); + } else { + if (ctxt->sax->ignorableWhitespace != NULL) + ctxt->sax->ignorableWhitespace(ctxt->userData, + buf, nbchar); + } } else { htmlCheckParagraph(ctxt); if (ctxt->sax->characters != NULL) @@ -2799,6 +3047,21 @@ } /** + * htmlParseCharData: + * @ctxt: an HTML parser context + * + * parse a CharData section. + * if we are within a CDATA section ']]>' marks an end of section. + * + * [14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*) + */ + +static void +htmlParseCharData(htmlParserCtxtPtr ctxt) { + htmlParseCharDataInternal(ctxt, 0); +} + +/** * htmlParseExternalID: * @ctxt: an HTML parser context * @publicID: a xmlChar** receiving PubidLiteral @@ -2960,7 +3223,7 @@ } xmlFree(buf); } else { - htmlParseErr(ctxt, XML_ERR_PI_NOT_STARTED, + htmlParseErr(ctxt, XML_ERR_PI_NOT_STARTED, "PI is not started correctly", NULL, NULL); } ctxt->instate = state; @@ -3001,12 +3264,17 @@ ctxt->instate = state; return; } + len = 0; + buf[len] = 0; q = CUR_CHAR(ql); + if (!IS_CHAR(q)) + goto unfinished; NEXTL(ql); r = CUR_CHAR(rl); + if (!IS_CHAR(r)) + goto unfinished; NEXTL(rl); cur = CUR_CHAR(l); - len = 0; while (IS_CHAR(cur) && ((cur != '>') || (r != '-') || (q != '-'))) { @@ -3037,18 +3305,20 @@ } } buf[len] = 0; - if (!IS_CHAR(cur)) { - htmlParseErr(ctxt, XML_ERR_COMMENT_NOT_FINISHED, - "Comment not terminated \n */ - base += 2; - } - } - if (incomment) { - if (base + 3 > len) - return(-1); - if ((buf[base] == '-') && (buf[base + 1] == '-') && - (buf[base + 2] == '>')) { - incomment = 0; - base += 2; - } - continue; - } + if (third) + len -= 2; + else if (next) + len--; + for (; base < len; base++) { + if ((!incomment) && (base + 4 < len) && (!iscomment)) { + if ((buf[base] == '<') && (buf[base + 1] == '!') && + (buf[base + 2] == '-') && (buf[base + 3] == '-')) { + incomment = 1; + /* do not increment past */ + base += 2; + } + } + if (ignoreattrval) { + if (buf[base] == '"' || buf[base] == '\'') { + if (invalue) { + if (buf[base] == valdellim) { + invalue = 0; + continue; + } + } else { + valdellim = buf[base]; + invalue = 1; + continue; + } + } else if (invalue) { + continue; + } + } + if (incomment) { + if (base + 3 > len) + return (-1); + if ((buf[base] == '-') && (buf[base + 1] == '-') && + (buf[base + 2] == '>')) { + incomment = 0; + base += 2; + } + continue; + } if (buf[base] == first) { - if (third != 0) { - if ((buf[base + 1] != next) || - (buf[base + 2] != third)) continue; - } else if (next != 0) { - if (buf[base + 1] != next) continue; - } - ctxt->checkIndex = 0; + if (third != 0) { + if ((buf[base + 1] != next) || (buf[base + 2] != third)) + continue; + } else if (next != 0) { + if (buf[base + 1] != next) + continue; + } + ctxt->checkIndex = 0; #ifdef DEBUG_PUSH - if (next == 0) - xmlGenericError(xmlGenericErrorContext, - "HPP: lookup '%c' found at %d\n", - first, base); - else if (third == 0) - xmlGenericError(xmlGenericErrorContext, - "HPP: lookup '%c%c' found at %d\n", - first, next, base); - else - xmlGenericError(xmlGenericErrorContext, - "HPP: lookup '%c%c%c' found at %d\n", - first, next, third, base); + if (next == 0) + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c' found at %d\n", + first, base); + else if (third == 0) + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c%c' found at %d\n", + first, next, base); + else + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c%c%c' found at %d\n", + first, next, third, base); #endif - return(base - (in->cur - in->base)); - } + return (base - (in->cur - in->base)); + } } - ctxt->checkIndex = base; + if ((!incomment) && (!invalue)) + ctxt->checkIndex = base; #ifdef DEBUG_PUSH if (next == 0) - xmlGenericError(xmlGenericErrorContext, - "HPP: lookup '%c' failed\n", first); + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c' failed\n", first); else if (third == 0) - xmlGenericError(xmlGenericErrorContext, - "HPP: lookup '%c%c' failed\n", first, next); - else - xmlGenericError(xmlGenericErrorContext, - "HPP: lookup '%c%c%c' failed\n", first, next, third); + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c%c' failed\n", first, next); + else + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c%c%c' failed\n", first, next, + third); #endif - return(-1); + return (-1); +} + +/** + * htmlParseLookupChars: + * @ctxt: an HTML parser context + * @stop: Array of chars, which stop the lookup. + * @stopLen: Length of stop-Array + * + * Try to find if any char of the stop-Array is available in the input + * stream. + * This function has a side effect of (possibly) incrementing ctxt->checkIndex + * to avoid rescanning sequences of bytes, it DOES change the state of the + * parser, do not use liberally. + * + * Returns the index to the current parsing point if a stopChar + * is available, -1 otherwise. + */ +static int +htmlParseLookupChars(htmlParserCtxtPtr ctxt, const xmlChar * stop, + int stopLen) +{ + int base, len; + htmlParserInputPtr in; + const xmlChar *buf; + int incomment = 0; + int i; + + in = ctxt->input; + if (in == NULL) + return (-1); + + base = in->cur - in->base; + if (base < 0) + return (-1); + + if (ctxt->checkIndex > base) + base = ctxt->checkIndex; + + if (in->buf == NULL) { + buf = in->base; + len = in->length; + } else { + buf = xmlBufContent(in->buf->buffer); + len = xmlBufUse(in->buf->buffer); + } + + for (; base < len; base++) { + if (!incomment && (base + 4 < len)) { + if ((buf[base] == '<') && (buf[base + 1] == '!') && + (buf[base + 2] == '-') && (buf[base + 3] == '-')) { + incomment = 1; + /* do not increment past */ + base += 2; + } + } + if (incomment) { + if (base + 3 > len) + return (-1); + if ((buf[base] == '-') && (buf[base + 1] == '-') && + (buf[base + 2] == '>')) { + incomment = 0; + base += 2; + } + continue; + } + for (i = 0; i < stopLen; ++i) { + if (buf[base] == stop[i]) { + ctxt->checkIndex = 0; + return (base - (in->cur - in->base)); + } + } + } + ctxt->checkIndex = base; + return (-1); } /** @@ -4517,6 +5280,8 @@ int avail = 0; xmlChar cur, next; + htmlParserNodeInfo node_info; + #ifdef DEBUG_PUSH switch (ctxt->instate) { case XML_PARSER_EOF: @@ -4577,10 +5342,10 @@ if (in->buf == NULL) avail = in->length - (in->cur - in->base); else - avail = in->buf->buffer->use - (in->cur - in->base); + avail = xmlBufUse(in->buf->buffer) - (in->cur - in->base); if ((avail == 0) && (terminate)) { htmlAutoCloseOnEnd(ctxt); - if ((ctxt->nameNr == 0) && (ctxt->instate != XML_PARSER_EOF)) { + if ((ctxt->nameNr == 0) && (ctxt->instate != XML_PARSER_EOF)) { /* * SAX: end of the document processing. */ @@ -4613,7 +5378,7 @@ if (in->buf == NULL) avail = in->length - (in->cur - in->base); else - avail = in->buf->buffer->use - (in->cur - in->base); + avail = xmlBufUse(in->buf->buffer) - (in->cur - in->base); } if ((ctxt->sax) && (ctxt->sax->setDocumentLocator)) ctxt->sax->setDocumentLocator(ctxt->userData, @@ -4630,7 +5395,7 @@ (UPP(6) == 'Y') && (UPP(7) == 'P') && (UPP(8) == 'E')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4655,15 +5420,28 @@ if (in->buf == NULL) avail = in->length - (in->cur - in->base); else - avail = in->buf->buffer->use - (in->cur - in->base); - if (avail < 2) + avail = xmlBufUse(in->buf->buffer) - (in->cur - in->base); + /* + * no chars in buffer + */ + if (avail < 1) goto done; + /* + * not enouth chars in buffer + */ + if (avail < 2) { + if (!terminate) + goto done; + else + next = ' '; + } else { + next = in->cur[1]; + } cur = in->cur[0]; - next = in->cur[1]; if ((cur == '<') && (next == '!') && (in->cur[2] == '-') && (in->cur[3] == '-')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '-', '-', '>', 1) < 0)) + (htmlParseLookupSequence(ctxt, '-', '-', '>', 1, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4673,7 +5451,7 @@ ctxt->instate = XML_PARSER_MISC; } else if ((cur == '<') && (next == '?')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4687,7 +5465,7 @@ (UPP(6) == 'Y') && (UPP(7) == 'P') && (UPP(8) == 'E')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4715,15 +5493,15 @@ if (in->buf == NULL) avail = in->length - (in->cur - in->base); else - avail = in->buf->buffer->use - (in->cur - in->base); - if (avail < 2) + avail = xmlBufUse(in->buf->buffer) - (in->cur - in->base); + if (avail < 2) goto done; cur = in->cur[0]; next = in->cur[1]; if ((cur == '<') && (next == '!') && (in->cur[2] == '-') && (in->cur[3] == '-')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '-', '-', '>', 1) < 0)) + (htmlParseLookupSequence(ctxt, '-', '-', '>', 1, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4733,7 +5511,7 @@ ctxt->instate = XML_PARSER_PROLOG; } else if ((cur == '<') && (next == '?')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4756,7 +5534,7 @@ if (in->buf == NULL) avail = in->length - (in->cur - in->base); else - avail = in->buf->buffer->use - (in->cur - in->base); + avail = xmlBufUse(in->buf->buffer) - (in->cur - in->base); if (avail < 1) goto done; cur = in->cur[0]; @@ -4770,7 +5548,7 @@ if ((cur == '<') && (next == '!') && (in->cur[2] == '-') && (in->cur[3] == '-')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '-', '-', '>', 1) < 0)) + (htmlParseLookupSequence(ctxt, '-', '-', '>', 1, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4780,7 +5558,7 @@ ctxt->instate = XML_PARSER_EPILOG; } else if ((cur == '<') && (next == '?')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4809,8 +5587,22 @@ int failed; const htmlElemDesc * info; - if (avail < 2) + /* + * no chars in buffer + */ + if (avail < 1) goto done; + /* + * not enouth chars in buffer + */ + if (avail < 2) { + if (!terminate) + goto done; + else + next = ' '; + } else { + next = in->cur[1]; + } cur = in->cur[0]; if (cur != '<') { ctxt->instate = XML_PARSER_CONTENT; @@ -4820,7 +5612,7 @@ #endif break; } - if (in->cur[1] == '/') { + if (next == '/') { ctxt->instate = XML_PARSER_END_TAG; ctxt->checkIndex = 0; #ifdef DEBUG_PUSH @@ -4830,12 +5622,20 @@ break; } if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; + /* Capture start position */ + if (ctxt->record_info) { + node_info.begin_pos = ctxt->input->consumed + + (CUR_PTR - ctxt->input->base); + node_info.begin_line = ctxt->input->line; + } + + failed = htmlParseStartTag(ctxt); name = ctxt->name; - if (failed || + if ((failed == -1) || (name == NULL)) { if (CUR == '>') NEXT; @@ -4877,10 +5677,13 @@ /* * end of parsing of this node. */ - if (xmlStrEqual(name, ctxt->name)) { + if (xmlStrEqual(name, ctxt->name)) { nodePop(ctxt); htmlnamePop(ctxt); - } + } + + if (ctxt->record_info) + htmlNodeInfoPush(ctxt, &node_info); ctxt->instate = XML_PARSER_CONTENT; #ifdef DEBUG_PUSH @@ -4898,6 +5701,10 @@ ctxt->sax->endElement(ctxt->userData, name); htmlnamePop(ctxt); } + + if (ctxt->record_info) + htmlNodeInfoPush(ctxt, &node_info); + ctxt->instate = XML_PARSER_CONTENT; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -4925,14 +5732,20 @@ if ((cur != '<') && (cur != '&')) { if (ctxt->sax != NULL) { if (IS_BLANK_CH(cur)) { - if (ctxt->sax->ignorableWhitespace != NULL) - ctxt->sax->ignorableWhitespace( - ctxt->userData, &cur, 1); + if (ctxt->keepBlanks) { + if (ctxt->sax->characters != NULL) + ctxt->sax->characters( + ctxt->userData, &in->cur[0], 1); + } else { + if (ctxt->sax->ignorableWhitespace != NULL) + ctxt->sax->ignorableWhitespace( + ctxt->userData, &in->cur[0], 1); + } } else { htmlCheckParagraph(ctxt); if (ctxt->sax->characters != NULL) ctxt->sax->characters( - ctxt->userData, &cur, 1); + ctxt->userData, &in->cur[0], 1); } } ctxt->token = 0; @@ -4955,7 +5768,7 @@ int idx; xmlChar val; - idx = htmlParseLookupSequence(ctxt, '<', '/', 0, 0); + idx = htmlParseLookupSequence(ctxt, '<', '/', 0, 0, 0); if (idx < 0) goto done; val = in->cur[idx + 2]; @@ -4982,7 +5795,7 @@ (UPP(6) == 'Y') && (UPP(7) == 'P') && (UPP(8) == 'E')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; htmlParseErr(ctxt, XML_HTML_STRUCURE_ERROR, "Misplaced DOCTYPE declaration\n", @@ -4992,7 +5805,7 @@ (in->cur[2] == '-') && (in->cur[3] == '-')) { if ((!terminate) && (htmlParseLookupSequence( - ctxt, '-', '-', '>', 1) < 0)) + ctxt, '-', '-', '>', 1, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -5002,7 +5815,7 @@ ctxt->instate = XML_PARSER_CONTENT; } else if ((cur == '<') && (next == '?')) { if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -5030,7 +5843,8 @@ break; } else if (cur == '&') { if ((!terminate) && - (htmlParseLookupSequence(ctxt, ';', 0, 0, 0) < 0)) + (htmlParseLookupChars(ctxt, + BAD_CAST "; >/", 4) < 0)) goto done; #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, @@ -5046,7 +5860,7 @@ * data detection. */ if ((!terminate) && - (htmlParseLookupSequence(ctxt, '<', 0, 0, 0) < 0)) + (htmlParseLookupChars(ctxt, BAD_CAST "<&", 2) < 0)) goto done; ctxt->checkIndex = 0; #ifdef DEBUG_PUSH @@ -5072,7 +5886,7 @@ if (avail < 2) goto done; if ((!terminate) && - (htmlParseLookupSequence(ctxt, '>', 0, 0, 0) < 0)) + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) goto done; htmlParseEndTag(ctxt); if (ctxt->nameNr == 0) { @@ -5199,10 +6013,10 @@ } } -done: +done: if ((avail == 0) && (terminate)) { htmlAutoCloseOnEnd(ctxt); - if ((ctxt->nameNr == 0) && (ctxt->instate != XML_PARSER_EOF)) { + if ((ctxt->nameNr == 0) && (ctxt->instate != XML_PARSER_EOF)) { /* * SAX: end of the document processing. */ @@ -5211,14 +6025,14 @@ ctxt->sax->endDocument(ctxt->userData); } } - if ((ctxt->myDoc != NULL) && + if ((!(ctxt->options & HTML_PARSE_NODEFDTD)) && (ctxt->myDoc != NULL) && ((terminate) || (ctxt->instate == XML_PARSER_EOF) || (ctxt->instate == XML_PARSER_EPILOG))) { xmlDtdPtr dtd; dtd = xmlGetIntSubset(ctxt->myDoc); if (dtd == NULL) - ctxt->myDoc->intSubset = - xmlCreateIntSubset(ctxt->myDoc, BAD_CAST "html", + ctxt->myDoc->intSubset = + xmlCreateIntSubset(ctxt->myDoc, BAD_CAST "html", BAD_CAST "-//W3C//DTD HTML 4.0 Transitional//EN", BAD_CAST "http://www.w3.org/TR/REC-html40/loose.dtd"); } @@ -5249,20 +6063,17 @@ } if ((size > 0) && (chunk != NULL) && (ctxt->input != NULL) && (ctxt->input->buf != NULL) && (ctxt->instate != XML_PARSER_EOF)) { - int base = ctxt->input->base - ctxt->input->buf->buffer->content; - int cur = ctxt->input->cur - ctxt->input->base; + size_t base = xmlBufGetInputBase(ctxt->input->buf->buffer, ctxt->input); + size_t cur = ctxt->input->cur - ctxt->input->base; int res; - - res = xmlParserInputBufferPush(ctxt->input->buf, size, chunk); + + res = xmlParserInputBufferPush(ctxt->input->buf, size, chunk); if (res < 0) { ctxt->errNo = XML_PARSER_EOF; ctxt->disableSAX = 1; return (XML_PARSER_EOF); } - ctxt->input->base = ctxt->input->buf->buffer->content + base; - ctxt->input->cur = ctxt->input->base + cur; - ctxt->input->end = - &ctxt->input->buf->buffer->content[ctxt->input->buf->buffer->use]; + xmlBufSetInputBaseCur(ctxt->input->buf->buffer, ctxt->input, base, cur); #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, "HPP: pushed %d\n", size); #endif @@ -5277,13 +6088,16 @@ if ((in->encoder != NULL) && (in->buffer != NULL) && (in->raw != NULL)) { int nbchars; - - nbchars = xmlCharEncInFunc(in->encoder, in->buffer, in->raw); + size_t base = xmlBufGetInputBase(in->buffer, ctxt->input); + size_t current = ctxt->input->cur - ctxt->input->base; + + nbchars = xmlCharEncInput(in, terminate); if (nbchars < 0) { htmlParseErr(ctxt, XML_ERR_INVALID_ENCODING, "encoder error\n", NULL, NULL); return(XML_ERR_INVALID_ENCODING); } + xmlBufSetInputBaseCur(in->buffer, ctxt->input, base, current); } } } @@ -5294,14 +6108,14 @@ (ctxt->instate != XML_PARSER_MISC)) { ctxt->errNo = XML_ERR_DOCUMENT_END; ctxt->wellFormed = 0; - } + } if (ctxt->instate != XML_PARSER_EOF) { if ((ctxt->sax) && (ctxt->sax->endDocument != NULL)) ctxt->sax->endDocument(ctxt->userData); } ctxt->instate = XML_PARSER_EOF; } - return((xmlParserErrors) ctxt->errNo); + return((xmlParserErrors) ctxt->errNo); } /************************************************************************ @@ -5326,7 +6140,7 @@ * Returns the new parser context or NULL */ htmlParserCtxtPtr -htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax, void *user_data, +htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax, void *user_data, const char *chunk, int size, const char *filename, xmlCharEncoding enc) { htmlParserCtxtPtr ctxt; @@ -5357,7 +6171,7 @@ memcpy(ctxt->sax, sax, sizeof(htmlSAXHandler)); if (user_data != NULL) ctxt->userData = user_data; - } + } if (filename == NULL) { ctxt->directory = NULL; } else { @@ -5377,24 +6191,18 @@ inputStream->filename = (char *) xmlCanonicPath((const xmlChar *) filename); inputStream->buf = buf; - inputStream->base = inputStream->buf->buffer->content; - inputStream->cur = inputStream->buf->buffer->content; - inputStream->end = - &inputStream->buf->buffer->content[inputStream->buf->buffer->use]; + xmlBufResetInput(buf->buffer, inputStream); inputPush(ctxt, inputStream); if ((size > 0) && (chunk != NULL) && (ctxt->input != NULL) && - (ctxt->input->buf != NULL)) { - int base = ctxt->input->base - ctxt->input->buf->buffer->content; - int cur = ctxt->input->cur - ctxt->input->base; - - xmlParserInputBufferPush(ctxt->input->buf, size, chunk); - - ctxt->input->base = ctxt->input->buf->buffer->content + base; - ctxt->input->cur = ctxt->input->base + cur; - ctxt->input->end = - &ctxt->input->buf->buffer->content[ctxt->input->buf->buffer->use]; + (ctxt->input->buf != NULL)) { + size_t base = xmlBufGetInputBase(ctxt->input->buf->buffer, ctxt->input); + size_t cur = ctxt->input->cur - ctxt->input->base; + + xmlParserInputBufferPush(ctxt->input->buf, size, chunk); + + xmlBufSetInputBaseCur(ctxt->input->buf->buffer, ctxt->input, base, cur); #ifdef DEBUG_PUSH xmlGenericError(xmlGenericErrorContext, "HPP: pushed %d\n", size); #endif @@ -5410,12 +6218,12 @@ * @cur: a pointer to an array of xmlChar * @encoding: a free form C string describing the HTML document encoding, or NULL * @sax: the SAX handler block - * @userData: if using SAX, this pointer will be provided on callbacks. + * @userData: if using SAX, this pointer will be provided on callbacks. * * Parse an HTML in-memory document. If sax is not NULL, use the SAX callbacks * to handle parse events. If sax is NULL, fallback to the default DOM * behavior and return a tree. - * + * * Returns the resulting document tree unless SAX is NULL or the document is * not well formed. */ @@ -5432,7 +6240,7 @@ ctxt = htmlCreateDocParserCtxt(cur, encoding); if (ctxt == NULL) return(NULL); - if (sax != NULL) { + if (sax != NULL) { if (ctxt->sax != NULL) xmlFree (ctxt->sax); ctxt->sax = sax; ctxt->userData = userData; @@ -5445,7 +6253,7 @@ ctxt->userData = NULL; } htmlFreeParserCtxt(ctxt); - + return(ret); } @@ -5455,7 +6263,7 @@ * @encoding: a free form C string describing the HTML document encoding, or NULL * * parse an HTML in-memory document and build a tree. - * + * * Returns the resulting document tree */ @@ -5470,7 +6278,7 @@ * @filename: the filename * @encoding: a free form C string describing the HTML document encoding, or NULL * - * Create a parser context for a file content. + * Create a parser context for a file content. * Automatic support for ZLIB/Compress compressed document is provided * by default if found at compile-time. * @@ -5502,7 +6310,7 @@ xmlFreeParserCtxt(ctxt); return(NULL); } - + inputStream = xmlLoadExternalEntity(canonicFilename, NULL, ctxt); xmlFree(canonicFilename); if (inputStream == NULL) { @@ -5514,15 +6322,19 @@ /* set encoding */ if (encoding) { - content = xmlMallocAtomic (xmlStrlen(content_line) + strlen(encoding) + 1); - if (content) { - strcpy ((char *)content, (char *)content_line); - strcat ((char *)content, (char *)encoding); - htmlCheckEncoding (ctxt, content); - xmlFree (content); + size_t l = strlen(encoding); + + if (l < 1000) { + content = xmlMallocAtomic (xmlStrlen(content_line) + l + 1); + if (content) { + strcpy ((char *)content, (char *)content_line); + strcat ((char *)content, (char *)encoding); + htmlCheckEncoding (ctxt, content); + xmlFree (content); + } } } - + return(ctxt); } @@ -5531,7 +6343,7 @@ * @filename: the filename * @encoding: a free form C string describing the HTML document encoding, or NULL * @sax: the SAX handler block - * @userData: if using SAX, this pointer will be provided on callbacks. + * @userData: if using SAX, this pointer will be provided on callbacks. * * parse an HTML file and build a tree. Automatic support for ZLIB/Compress * compressed document is provided by default if found at compile-time. @@ -5543,7 +6355,7 @@ */ htmlDocPtr -htmlSAXParseFile(const char *filename, const char *encoding, htmlSAXHandlerPtr sax, +htmlSAXParseFile(const char *filename, const char *encoding, htmlSAXHandlerPtr sax, void *userData) { htmlDocPtr ret; htmlParserCtxtPtr ctxt; @@ -5567,7 +6379,7 @@ ctxt->userData = NULL; } htmlFreeParserCtxt(ctxt); - + return(ret); } @@ -5589,7 +6401,7 @@ /** * htmlHandleOmittedElem: - * @val: int 0 or 1 + * @val: int 0 or 1 * * Set and return the previous value for handling HTML omitted tags. * @@ -5729,7 +6541,7 @@ * current scope */ #define DICT_FREE(str) \ - if ((str) && ((!dict) || \ + if ((str) && ((!dict) || \ (xmlDictOwns(dict, (const xmlChar *)(str)) == 0))) \ xmlFree((char *)(str)); @@ -5744,7 +6556,7 @@ { xmlParserInputPtr input; xmlDictPtr dict; - + if (ctxt == NULL) return; @@ -5796,6 +6608,7 @@ ctxt->wellFormed = 1; ctxt->nsWellFormed = 1; + ctxt->disableSAX = 0; ctxt->valid = 1; ctxt->vctxt.userData = ctxt; ctxt->vctxt.error = xmlParserValidityError; @@ -5806,7 +6619,7 @@ ctxt->inSubset = 0; ctxt->errNo = XML_ERR_OK; ctxt->depth = 0; - ctxt->charset = XML_CHAR_ENCODING_UTF8; + ctxt->charset = XML_CHAR_ENCODING_NONE; ctxt->catalogs = NULL; xmlInitNodeInfoSeq(&ctxt->node_seq); @@ -5871,6 +6684,22 @@ ctxt->options |= HTML_PARSE_COMPACT; options -= HTML_PARSE_COMPACT; } + if (options & XML_PARSE_HUGE) { + ctxt->options |= XML_PARSE_HUGE; + options -= XML_PARSE_HUGE; + } + if (options & HTML_PARSE_NODEFDTD) { + ctxt->options |= HTML_PARSE_NODEFDTD; + options -= HTML_PARSE_NODEFDTD; + } + if (options & HTML_PARSE_IGNORE_ENC) { + ctxt->options |= HTML_PARSE_IGNORE_ENC; + options -= HTML_PARSE_IGNORE_ENC; + } + if (options & HTML_PARSE_NOIMPLIED) { + ctxt->options |= HTML_PARSE_NOIMPLIED; + options -= HTML_PARSE_NOIMPLIED; + } ctxt->dictNames = 0; return (options); } @@ -5884,7 +6713,7 @@ * @reuse: keep the context for reuse * * Common front-end for the htmlRead functions - * + * * Returns the resulting document tree or NULL */ static htmlDocPtr @@ -5892,15 +6721,19 @@ int options, int reuse) { htmlDocPtr ret; - + htmlCtxtUseOptions(ctxt, options); ctxt->html = 1; if (encoding != NULL) { xmlCharEncodingHandlerPtr hdlr; hdlr = xmlFindCharEncodingHandler(encoding); - if (hdlr != NULL) + if (hdlr != NULL) { xmlSwitchToEncoding(ctxt, hdlr); + if (ctxt->input->encoding != NULL) + xmlFree((xmlChar *) ctxt->input->encoding); + ctxt->input->encoding = xmlStrdup((xmlChar *)encoding); + } } if ((URL != NULL) && (ctxt->input != NULL) && (ctxt->input->filename == NULL)) @@ -5926,7 +6759,7 @@ * @options: a combination of htmlParserOption(s) * * parse an XML in-memory document and build a tree. - * + * * Returns the resulting document tree */ htmlDocPtr @@ -5951,7 +6784,7 @@ * @options: a combination of htmlParserOption(s) * * parse an XML file from the filesystem or the network. - * + * * Returns the resulting document tree */ htmlDocPtr @@ -5975,7 +6808,7 @@ * @options: a combination of htmlParserOption(s) * * parse an XML in-memory document and build a tree. - * + * * Returns the resulting document tree */ htmlDocPtr @@ -6001,7 +6834,7 @@ * @options: a combination of htmlParserOption(s) * * parse an XML from a file descriptor and build a tree. - * + * * Returns the resulting document tree */ htmlDocPtr @@ -6013,6 +6846,7 @@ if (fd < 0) return (NULL); + xmlInitParser(); xmlInitParser(); input = xmlParserInputBufferCreateFd(fd, XML_CHAR_ENCODING_NONE); @@ -6043,7 +6877,7 @@ * @options: a combination of htmlParserOption(s) * * parse an HTML document from I/O functions and source and build a tree. - * + * * Returns the resulting document tree */ htmlDocPtr @@ -6060,8 +6894,11 @@ input = xmlParserInputBufferCreateIO(ioread, ioclose, ioctx, XML_CHAR_ENCODING_NONE); - if (input == NULL) + if (input == NULL) { + if (ioclose != NULL) + ioclose(ioctx); return (NULL); + } ctxt = htmlNewParserCtxt(); if (ctxt == NULL) { xmlFreeParserInputBuffer(input); @@ -6087,7 +6924,7 @@ * * parse an XML in-memory document and build a tree. * This reuses the existing @ctxt parser context - * + * * Returns the resulting document tree */ htmlDocPtr @@ -6100,6 +6937,7 @@ return (NULL); if (ctxt == NULL) return (NULL); + xmlInitParser(); htmlCtxtReset(ctxt); @@ -6120,7 +6958,7 @@ * * parse an XML file from the filesystem or the network. * This reuses the existing @ctxt parser context - * + * * Returns the resulting document tree */ htmlDocPtr @@ -6133,6 +6971,7 @@ return (NULL); if (ctxt == NULL) return (NULL); + xmlInitParser(); htmlCtxtReset(ctxt); @@ -6155,7 +6994,7 @@ * * parse an XML in-memory document and build a tree. * This reuses the existing @ctxt parser context - * + * * Returns the resulting document tree */ htmlDocPtr @@ -6169,6 +7008,7 @@ return (NULL); if (buffer == NULL) return (NULL); + xmlInitParser(); htmlCtxtReset(ctxt); @@ -6197,7 +7037,7 @@ * * parse an XML from a file descriptor and build a tree. * This reuses the existing @ctxt parser context - * + * * Returns the resulting document tree */ htmlDocPtr @@ -6211,6 +7051,7 @@ return (NULL); if (ctxt == NULL) return (NULL); + xmlInitParser(); htmlCtxtReset(ctxt); @@ -6239,7 +7080,7 @@ * * parse an HTML document from I/O functions and source and build a tree. * This reuses the existing @ctxt parser context - * + * * Returns the resulting document tree */ htmlDocPtr @@ -6255,13 +7096,17 @@ return (NULL); if (ctxt == NULL) return (NULL); + xmlInitParser(); htmlCtxtReset(ctxt); input = xmlParserInputBufferCreateIO(ioread, ioclose, ioctx, XML_CHAR_ENCODING_NONE); - if (input == NULL) + if (input == NULL) { + if (ioclose != NULL) + ioclose(ioctx); return (NULL); + } stream = xmlNewIOInputStream(ctxt, input, XML_CHAR_ENCODING_NONE); if (stream == NULL) { xmlFreeParserInputBuffer(input); diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/HTMLparser.in.h gettext-0.19.7/gnulib-local/lib/libxml/HTMLparser.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/HTMLparser.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/HTMLparser.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -83,87 +83,87 @@ /* * There is only few public functions. */ -XMLPUBFUN const htmlElemDesc * XMLCALL +XMLPUBFUN const htmlElemDesc * XMLCALL htmlTagLookup (const xmlChar *tag); -XMLPUBFUN const htmlEntityDesc * XMLCALL +XMLPUBFUN const htmlEntityDesc * XMLCALL htmlEntityLookup(const xmlChar *name); -XMLPUBFUN const htmlEntityDesc * XMLCALL +XMLPUBFUN const htmlEntityDesc * XMLCALL htmlEntityValueLookup(unsigned int value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlIsAutoClosed(htmlDocPtr doc, htmlNodePtr elem); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlAutoCloseTag(htmlDocPtr doc, const xmlChar *name, htmlNodePtr elem); -XMLPUBFUN const htmlEntityDesc * XMLCALL +XMLPUBFUN const htmlEntityDesc * XMLCALL htmlParseEntityRef(htmlParserCtxtPtr ctxt, const xmlChar **str); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlParseCharRef(htmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL htmlParseElement(htmlParserCtxtPtr ctxt); -XMLPUBFUN htmlParserCtxtPtr XMLCALL +XMLPUBFUN htmlParserCtxtPtr XMLCALL htmlNewParserCtxt(void); -XMLPUBFUN htmlParserCtxtPtr XMLCALL +XMLPUBFUN htmlParserCtxtPtr XMLCALL htmlCreateMemoryParserCtxt(const char *buffer, int size); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlParseDocument(htmlParserCtxtPtr ctxt); -XMLPUBFUN htmlDocPtr XMLCALL +XMLPUBFUN htmlDocPtr XMLCALL htmlSAXParseDoc (xmlChar *cur, const char *encoding, htmlSAXHandlerPtr sax, void *userData); -XMLPUBFUN htmlDocPtr XMLCALL +XMLPUBFUN htmlDocPtr XMLCALL htmlParseDoc (xmlChar *cur, const char *encoding); -XMLPUBFUN htmlDocPtr XMLCALL +XMLPUBFUN htmlDocPtr XMLCALL htmlSAXParseFile(const char *filename, const char *encoding, htmlSAXHandlerPtr sax, void *userData); -XMLPUBFUN htmlDocPtr XMLCALL +XMLPUBFUN htmlDocPtr XMLCALL htmlParseFile (const char *filename, const char *encoding); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL UTF8ToHtml (unsigned char *out, int *outlen, const unsigned char *in, int *inlen); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlEncodeEntities(unsigned char *out, int *outlen, const unsigned char *in, int *inlen, int quoteChar); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlIsScriptAttribute(const xmlChar *name); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlHandleOmittedElem(int val); #ifdef LIBXML_PUSH_ENABLED /** * Interfaces for the Push mode. */ -XMLPUBFUN htmlParserCtxtPtr XMLCALL +XMLPUBFUN htmlParserCtxtPtr XMLCALL htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax, void *user_data, const char *chunk, int size, const char *filename, xmlCharEncoding enc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlParseChunk (htmlParserCtxtPtr ctxt, const char *chunk, int size, int terminate); #endif /* LIBXML_PUSH_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL htmlFreeParserCtxt (htmlParserCtxtPtr ctxt); /* @@ -177,12 +177,15 @@ */ typedef enum { HTML_PARSE_RECOVER = 1<<0, /* Relaxed parsing */ + HTML_PARSE_NODEFDTD = 1<<2, /* do not default a doctype if not found */ HTML_PARSE_NOERROR = 1<<5, /* suppress error reports */ HTML_PARSE_NOWARNING= 1<<6, /* suppress warning reports */ HTML_PARSE_PEDANTIC = 1<<7, /* pedantic error reporting */ HTML_PARSE_NOBLANKS = 1<<8, /* remove blank nodes */ HTML_PARSE_NONET = 1<<11,/* Forbid network access */ - HTML_PARSE_COMPACT = 1<<16 /* compact small text nodes */ + HTML_PARSE_NOIMPLIED= 1<<13,/* Do not add implied html/body... elements */ + HTML_PARSE_COMPACT = 1<<16,/* compact small text nodes */ + HTML_PARSE_IGNORE_ENC=1<<21 /* ignore internal document encoding hint */ } htmlParserOption; XMLPUBFUN void XMLCALL diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/HTMLtree.c gettext-0.19.7/gnulib-local/lib/libxml/HTMLtree.c --- gettext-0.19.6/gnulib-local/lib/libxml/HTMLtree.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/HTMLtree.c 2015-12-23 07:08:27.000000000 +0000 @@ -30,16 +30,18 @@ #include #include +#include "buf.h" + /************************************************************************ * * - * Getting/Setting encoding meta tags * + * Getting/Setting encoding meta tags * * * ************************************************************************/ /** * htmlGetMetaEncoding: * @doc: the document - * + * * Encoding definition lookup in the Meta tags * * Returns the current encoding as flagged in the HTML source @@ -126,17 +128,17 @@ found_content: encoding = xmlStrstr(content, BAD_CAST"charset="); - if (encoding == NULL) + if (encoding == NULL) encoding = xmlStrstr(content, BAD_CAST"Charset="); - if (encoding == NULL) + if (encoding == NULL) encoding = xmlStrstr(content, BAD_CAST"CHARSET="); if (encoding != NULL) { encoding += 8; } else { encoding = xmlStrstr(content, BAD_CAST"charset ="); - if (encoding == NULL) + if (encoding == NULL) encoding = xmlStrstr(content, BAD_CAST"Charset ="); - if (encoding == NULL) + if (encoding == NULL) encoding = xmlStrstr(content, BAD_CAST"CHARSET ="); if (encoding != NULL) encoding += 9; @@ -151,7 +153,7 @@ * htmlSetMetaEncoding: * @doc: the document * @encoding: the encoding string - * + * * Sets the current encoding in the Meta tags * NOTE: this will not change the document content encoding, just * the META flag associated. @@ -160,14 +162,19 @@ */ int htmlSetMetaEncoding(htmlDocPtr doc, const xmlChar *encoding) { - htmlNodePtr cur, meta; - const xmlChar *content; + htmlNodePtr cur, meta = NULL, head = NULL; + const xmlChar *content = NULL; char newcontent[100]; + newcontent[0] = 0; if (doc == NULL) return(-1); + /* html isn't a real encoding it's just libxml2 way to get entities */ + if (!xmlStrcasecmp(encoding, BAD_CAST "html")) + return(-1); + if (encoding != NULL) { snprintf(newcontent, sizeof(newcontent), "text/html; charset=%s", (char *)encoding); @@ -201,39 +208,24 @@ if ((cur->type == XML_ELEMENT_NODE) && (cur->name != NULL)) { if (xmlStrcasecmp(cur->name, BAD_CAST"head") == 0) break; - if (xmlStrcasecmp(cur->name, BAD_CAST"meta") == 0) + if (xmlStrcasecmp(cur->name, BAD_CAST"meta") == 0) { + head = cur->parent; goto found_meta; + } } cur = cur->next; } if (cur == NULL) return(-1); found_head: - if (cur->children == NULL) { - if (encoding == NULL) - return(0); - meta = xmlNewDocNode(doc, NULL, BAD_CAST"meta", NULL); - xmlAddChild(cur, meta); - xmlNewProp(meta, BAD_CAST"http-equiv", BAD_CAST"Content-Type"); - xmlNewProp(meta, BAD_CAST"content", BAD_CAST newcontent); - return(0); - } + head = cur; + if (cur->children == NULL) + goto create; cur = cur->children; found_meta: - if (encoding != NULL) { - /* - * Create a new Meta element with the right attributes - */ - - meta = xmlNewDocNode(doc, NULL, BAD_CAST"meta", NULL); - xmlAddPrevSibling(cur, meta); - xmlNewProp(meta, BAD_CAST"http-equiv", BAD_CAST"Content-Type"); - xmlNewProp(meta, BAD_CAST"content", BAD_CAST newcontent); - } - /* - * Search and destroy all the remaining the meta elements carrying + * Search and update all the remaining the meta elements carrying * encoding informations */ while (cur != NULL) { @@ -253,11 +245,11 @@ if ((!xmlStrcasecmp(attr->name, BAD_CAST"http-equiv")) && (!xmlStrcasecmp(value, BAD_CAST"Content-Type"))) http = 1; - else + else { - if ((value != NULL) && - (!xmlStrcasecmp(attr->name, BAD_CAST"content"))) - content = value; + if ((value != NULL) && + (!xmlStrcasecmp(attr->name, BAD_CAST"content"))) + content = value; } if ((http != 0) && (content != NULL)) break; @@ -266,16 +258,41 @@ } if ((http != 0) && (content != NULL)) { meta = cur; - cur = cur->next; - xmlUnlinkNode(meta); - xmlFreeNode(meta); - continue; + break; } } } cur = cur->next; } +create: + if (meta == NULL) { + if ((encoding != NULL) && (head != NULL)) { + /* + * Create a new Meta element with the right attributes + */ + + meta = xmlNewDocNode(doc, NULL, BAD_CAST"meta", NULL); + if (head->children == NULL) + xmlAddChild(head, meta); + else + xmlAddPrevSibling(head->children, meta); + xmlNewProp(meta, BAD_CAST"http-equiv", BAD_CAST"Content-Type"); + xmlNewProp(meta, BAD_CAST"content", BAD_CAST newcontent); + } + } else { + /* remove the meta tag if NULL is passed */ + if (encoding == NULL) { + xmlUnlinkNode(meta); + xmlFreeNode(meta); + } + /* change the document only if there is a real encoding change */ + else if (xmlStrcasestr(content, encoding) == NULL) { + xmlSetProp(meta, BAD_CAST"content", BAD_CAST newcontent); + } + } + + return(0); } @@ -299,7 +316,7 @@ * @name: the name of the attribute to check * * Determine if a given attribute is a boolean attribute. - * + * * returns: false if the attribute is not boolean, true otherwise. */ int @@ -316,9 +333,14 @@ } #ifdef LIBXML_OUTPUT_ENABLED +/* + * private routine exported from xmlIO.c + */ +xmlOutputBufferPtr +xmlAllocOutputBufferInternal(xmlCharEncodingHandlerPtr encoder); /************************************************************************ * * - * Output error handlers * + * Output error handlers * * * ************************************************************************/ /** @@ -367,17 +389,13 @@ /************************************************************************ * * - * Dumping HTML tree content to a simple buffer * + * Dumping HTML tree content to a simple buffer * * * ************************************************************************/ -static int -htmlNodeDumpFormat(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, - int format); - /** - * htmlNodeDumpFormat: - * @buf: the HTML buffer output + * htmlBufNodeDumpFormat: + * @buf: the xmlBufPtr output * @doc: the document * @cur: the current node * @format: should formatting spaces been added @@ -386,10 +404,10 @@ * * Returns the number of byte written or -1 in case of error */ -static int -htmlNodeDumpFormat(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, +static size_t +htmlBufNodeDumpFormat(xmlBufPtr buf, xmlDocPtr doc, xmlNodePtr cur, int format) { - unsigned int use; + size_t use; int ret; xmlOutputBufferPtr outbuf; @@ -412,10 +430,10 @@ outbuf->context = NULL; outbuf->written = 0; - use = buf->use; + use = xmlBufUse(buf); htmlNodeDumpFormatOutput(outbuf, doc, cur, NULL, format); xmlFree(outbuf); - ret = buf->use - use; + ret = xmlBufUse(buf) - use; return (ret); } @@ -432,9 +450,24 @@ */ int htmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur) { + xmlBufPtr buffer; + size_t ret; + + if ((buf == NULL) || (cur == NULL)) + return(-1); + xmlInitParser(); + buffer = xmlBufFromBuffer(buf); + if (buffer == NULL) + return(-1); + + ret = htmlBufNodeDumpFormat(buffer, doc, cur, 1); - return(htmlNodeDumpFormat(buf, doc, cur, 1)); + xmlBufBackToBuffer(buffer); + + if (ret > INT_MAX) + return(-1); + return((int) ret); } /** @@ -467,7 +500,7 @@ if (enc != XML_CHAR_ENCODING_UTF8) { handler = xmlFindCharEncodingHandler(encoding); if (handler == NULL) - return(-1); + htmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, encoding); } } @@ -479,7 +512,7 @@ if (handler == NULL) handler = xmlFindCharEncodingHandler("ascii"); - /* + /* * save the content to a temp buffer. */ buf = xmlOutputBufferCreateFile(out, handler); @@ -548,11 +581,9 @@ } handler = xmlFindCharEncodingHandler(encoding); - if (handler == NULL) { - *mem = NULL; - *size = 0; - return; - } + if (handler == NULL) + htmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, encoding); + } else { handler = xmlFindCharEncodingHandler(encoding); } @@ -566,22 +597,22 @@ if (handler == NULL) handler = xmlFindCharEncodingHandler("ascii"); - buf = xmlAllocOutputBuffer(handler); + buf = xmlAllocOutputBufferInternal(handler); if (buf == NULL) { *mem = NULL; *size = 0; return; } - htmlDocContentDumpFormatOutput(buf, cur, NULL, format); + htmlDocContentDumpFormatOutput(buf, cur, NULL, format); xmlOutputBufferFlush(buf); if (buf->conv != NULL) { - *size = buf->conv->use; - *mem = xmlStrndup(buf->conv->content, *size); + *size = xmlBufUse(buf->conv); + *mem = xmlStrndup(xmlBufContent(buf->conv), *size); } else { - *size = buf->buffer->use; - *mem = xmlStrndup(buf->buffer->content, *size); + *size = xmlBufUse(buf->buffer); + *mem = xmlStrndup(xmlBufContent(buf->buffer), *size); } (void)xmlOutputBufferClose(buf); } @@ -603,7 +634,7 @@ /************************************************************************ * * - * Dumping HTML tree content to an I/O output buffer * + * Dumping HTML tree content to an I/O output buffer * * * ************************************************************************/ @@ -614,7 +645,7 @@ * @buf: the HTML buffer output * @doc: the document * @encoding: the encoding string - * + * * TODO: check whether encoding is needed * * Dump the HTML document DTD, if any. @@ -632,14 +663,15 @@ xmlOutputBufferWriteString(buf, (const char *)cur->name); if (cur->ExternalID != NULL) { xmlOutputBufferWriteString(buf, " PUBLIC "); - xmlBufferWriteQuotedString(buf->buffer, cur->ExternalID); + xmlBufWriteQuotedString(buf->buffer, cur->ExternalID); if (cur->SystemID != NULL) { xmlOutputBufferWriteString(buf, " "); - xmlBufferWriteQuotedString(buf->buffer, cur->SystemID); - } - } else if (cur->SystemID != NULL) { + xmlBufWriteQuotedString(buf->buffer, cur->SystemID); + } + } else if (cur->SystemID != NULL && + xmlStrcmp(cur->SystemID, BAD_CAST "about:legacy-compat")) { xmlOutputBufferWriteString(buf, " SYSTEM "); - xmlBufferWriteQuotedString(buf->buffer, cur->SystemID); + xmlBufWriteQuotedString(buf->buffer, cur->SystemID); } xmlOutputBufferWriteString(buf, ">\n"); } @@ -659,9 +691,10 @@ xmlChar *value; /* - * TODO: The html output method should not escape a & character - * occurring in an attribute value immediately followed by - * a { character (see Section B.7.1 of the HTML 4.0 Recommendation). + * The html output method should not escape a & character + * occurring in an attribute value immediately followed by + * a { character (see Section B.7.1 of the HTML 4.0 Recommendation). + * This is implemented in xmlEncodeEntitiesReentrant */ if (cur == NULL) { @@ -684,20 +717,51 @@ (!xmlStrcasecmp(cur->name, BAD_CAST "src")) || ((!xmlStrcasecmp(cur->name, BAD_CAST "name")) && (!xmlStrcasecmp(cur->parent->name, BAD_CAST "a"))))) { - xmlChar *escaped; xmlChar *tmp = value; + /* xmlURIEscapeStr() escapes '"' so it can be safely used. */ + xmlBufCCat(buf->buffer, "\""); while (IS_BLANK_CH(*tmp)) tmp++; - escaped = xmlURIEscapeStr(tmp, BAD_CAST"@/:=?;#%&,+"); - if (escaped != NULL) { - xmlBufferWriteQuotedString(buf->buffer, escaped); - xmlFree(escaped); - } else { - xmlBufferWriteQuotedString(buf->buffer, value); + /* URI Escape everything, except server side includes. */ + for ( ; ; ) { + xmlChar *escaped; + xmlChar endChar; + xmlChar *end = NULL; + xmlChar *start = (xmlChar *)xmlStrstr(tmp, BAD_CAST ""); + if (end != NULL) { + *start = '\0'; + } + } + + /* Escape the whole string, or until start (set to '\0'). */ + escaped = xmlURIEscapeStr(tmp, BAD_CAST"@/:=?;#%&,+"); + if (escaped != NULL) { + xmlBufCat(buf->buffer, escaped); + xmlFree(escaped); + } else { + xmlBufCat(buf->buffer, tmp); + } + + if (end == NULL) { /* Everything has been written. */ + break; + } + + /* Do not escape anything within server side includes. */ + *start = '<'; /* Restore the first character of "") */ + endChar = *end; + *end = '\0'; + xmlBufCat(buf->buffer, start); + *end = endChar; + tmp = end; } + + xmlBufCCat(buf->buffer, "\""); } else { - xmlBufferWriteQuotedString(buf->buffer, value); + xmlBufWriteQuotedString(buf->buffer, value); } xmlFree(value); } else { @@ -780,6 +844,10 @@ htmlDocContentDumpOutput(buf, (xmlDocPtr) cur, encoding); return; } + if (cur->type == XML_ATTRIBUTE_NODE) { + htmlAttrDumpOutput(buf, doc, (xmlAttrPtr) cur, encoding); + return; + } if (cur->type == HTML_TEXT_NODE) { if (cur->content != NULL) { if (((cur->name == (const xmlChar *)xmlStringText) || @@ -1043,7 +1111,7 @@ handler = xmlFindCharEncodingHandler(encoding); if (handler == NULL) - return(-1); + htmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, encoding); } else { handler = xmlFindCharEncodingHandler(encoding); } @@ -1083,7 +1151,7 @@ if ((cur == NULL) || (filename == NULL)) return(-1); - + xmlInitParser(); encoding = (const char *) htmlGetMetaEncoding(cur); @@ -1102,7 +1170,7 @@ handler = xmlFindCharEncodingHandler(encoding); if (handler == NULL) - return(-1); + htmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, encoding); } } @@ -1114,7 +1182,7 @@ if (handler == NULL) handler = xmlFindCharEncodingHandler("ascii"); - /* + /* * save the content to a temp buffer. */ buf = xmlOutputBufferCreateFilename(filename, handler, cur->compression); @@ -1134,7 +1202,7 @@ * @encoding: the document encoding * * Dump an HTML document to a file using a given encoding. - * + * * returns: the number of byte written or -1 in case of failure. */ int @@ -1146,7 +1214,7 @@ if ((cur == NULL) || (filename == NULL)) return(-1); - + xmlInitParser(); if (encoding != NULL) { @@ -1163,9 +1231,9 @@ handler = xmlFindCharEncodingHandler(encoding); if (handler == NULL) - return(-1); - htmlSetMetaEncoding(cur, (const xmlChar *) encoding); + htmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, encoding); } + htmlSetMetaEncoding(cur, (const xmlChar *) encoding); } else { htmlSetMetaEncoding(cur, (const xmlChar *) "UTF-8"); } @@ -1178,7 +1246,7 @@ if (handler == NULL) handler = xmlFindCharEncodingHandler("ascii"); - /* + /* * save the content to a temp buffer. */ buf = xmlOutputBufferCreateFilename(filename, handler, 0); @@ -1198,7 +1266,7 @@ * * Dump an HTML document to a file using a given encoding * and formatting returns/spaces are added. - * + * * returns: the number of byte written or -1 in case of failure. */ int diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/HTMLtree.in.h gettext-0.19.7/gnulib-local/lib/libxml/HTMLtree.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/HTMLtree.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/HTMLtree.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -62,78 +62,78 @@ XMLPUBFUN htmlDocPtr XMLCALL htmlNewDoc (const xmlChar *URI, const xmlChar *ExternalID); -XMLPUBFUN htmlDocPtr XMLCALL +XMLPUBFUN htmlDocPtr XMLCALL htmlNewDocNoDtD (const xmlChar *URI, const xmlChar *ExternalID); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL htmlGetMetaEncoding (htmlDocPtr doc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlSetMetaEncoding (htmlDocPtr doc, const xmlChar *encoding); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL htmlDocDumpMemory (xmlDocPtr cur, xmlChar **mem, int *size); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL htmlDocDumpMemoryFormat (xmlDocPtr cur, xmlChar **mem, int *size, int format); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlDocDump (FILE *f, xmlDocPtr cur); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlSaveFile (const char *filename, xmlDocPtr cur); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlNodeDump (xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL htmlNodeDumpFile (FILE *out, xmlDocPtr doc, xmlNodePtr cur); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlNodeDumpFileFormat (FILE *out, xmlDocPtr doc, xmlNodePtr cur, const char *encoding, int format); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlSaveFileEnc (const char *filename, xmlDocPtr cur, const char *encoding); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlSaveFileFormat (const char *filename, xmlDocPtr cur, const char *encoding, int format); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, const char *encoding, int format); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL htmlDocContentDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr cur, const char *encoding); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL htmlDocContentDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr cur, const char *encoding, int format); -XMLPUBFUN void XMLCALL - htmlNodeDumpOutput (xmlOutputBufferPtr buf, +XMLPUBFUN void XMLCALL + htmlNodeDumpOutput (xmlOutputBufferPtr buf, xmlDocPtr doc, - xmlNodePtr cur, + xmlNodePtr cur, const char *encoding); #endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL htmlIsBooleanAttr (const xmlChar *name); diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/legacy.c gettext-0.19.7/gnulib-local/lib/libxml/legacy.c --- gettext-0.19.6/gnulib-local/lib/libxml/legacy.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/legacy.c 2015-12-23 07:08:27.000000000 +0000 @@ -393,7 +393,7 @@ * @end: an end marker xmlChar, 0 if none * @end2: an end marker xmlChar, 0 if none * @end3: an end marker xmlChar, 0 if none - * + * * This function is deprecated, we now always process entities content * through xmlStringDecodeEntities * @@ -456,7 +456,7 @@ /** * xmlNamespaceParseQName: * @ctxt: an XML parser context - * @prefix: a xmlChar ** + * @prefix: a xmlChar ** * * TODO: this seems not in use anymore, the namespace handling is done on * top of the SAX interfaces, i.e. not on raw input. @@ -603,7 +603,7 @@ /** * xmlParserHandleReference: * @ctxt: the parser context - * + * * TODO: Remove, now deprecated ... the test is done directly in the * content parsing * routines. @@ -615,7 +615,7 @@ * [ WFC: Entity Declared ] * the Name given in the entity reference must match that in an entity * declaration, except that well-formed documents need not declare any - * of the following entities: amp, lt, gt, apos, quot. + * of the following entities: amp, lt, gt, apos, quot. * * [ WFC: Parsed Entity ] * An entity reference must not contain the name of an unparsed entity @@ -624,7 +624,7 @@ * '&#x' [0-9a-fA-F]+ ';' * * A PEReference may have been detected in the current input stream - * the handling is done accordingly to + * the handling is done accordingly to * http://www.w3.org/TR/REC-xml#entproc */ void @@ -693,7 +693,7 @@ /** * xmlUpgradeOldNs: * @doc: a document pointer - * + * * Upgrade old style Namespaces (PI) and move them to the root of the document. * DEPRECATED */ @@ -719,7 +719,7 @@ * * People must migrate their code to xmlEncodeEntitiesReentrant ! * This routine will issue a warning when encountered. - * + * * Returns NULL */ const xmlChar * @@ -740,7 +740,7 @@ /************************************************************************ * * - * Old set of SAXv1 functions * + * Old set of SAXv1 functions * * * ************************************************************************/ static int deprecated_v1_msg = 0; @@ -961,8 +961,8 @@ /** * entityDecl: * @ctx: the user data (XML parser context) - * @name: the entity name - * @type: the entity type + * @name: the entity name + * @type: the entity type * @publicId: The public ID of the entity * @systemId: The system ID of the entity * @content: the entity value (without processing). @@ -983,8 +983,8 @@ * attributeDecl: * @ctx: the user data (XML parser context) * @elem: the name of the element - * @fullname: the attribute name - * @type: the attribute type + * @fullname: the attribute name + * @type: the attribute type * @def: the type of default value * @defaultValue: the attribute default value * @tree: the tree of enumerated value set @@ -1005,8 +1005,8 @@ /** * elementDecl: * @ctx: the user data (XML parser context) - * @name: the element name - * @type: the element type + * @name: the element name + * @type: the element type * @content: the element value tree * * An element definition has been parsed @@ -1151,7 +1151,7 @@ endElement(void *ctx, const xmlChar * name ATTRIBUTE_UNUSED) { DEPRECATED("endElement") - xmlSAX2EndElement(ctx, name); + xmlSAX2EndElement(ctx, name); } /** @@ -1159,7 +1159,7 @@ * @ctx: the user data (XML parser context) * @name: The entity name * - * called when an entity reference is detected. + * called when an entity reference is detected. * DEPRECATED: use xmlSAX2Reference() */ void diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/libxml.h gettext-0.19.7/gnulib-local/lib/libxml/libxml.h --- gettext-0.19.6/gnulib-local/lib/libxml/libxml.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/libxml.h 2015-12-23 07:08:27.000000000 +0000 @@ -20,7 +20,20 @@ #if defined(macintosh) #include "config-mac.h" +#elif defined(_WIN32_WCE) +/* + * Windows CE compatibility definitions and functions + * This is needed to compile libxml2 for Windows CE. + * At least I tested it with WinCE 5.0 for Emulator and WinCE 4.2/SH4 target + */ +#include +#include #else +/* + * Currently supported platforms use either autoconf or + * copy to config.h own "preset" configuration file. + * As result ifdef HAVE_CONFIG_H is omited here. + */ #include "config.h" #include #endif @@ -64,6 +77,23 @@ void __htmlParseContent(void *ctx); #endif +/* + * internal global initialization critical section routines. + */ +void __xmlGlobalInitMutexLock(void); +void __xmlGlobalInitMutexUnlock(void); +void __xmlGlobalInitMutexDestroy(void); + +int __xmlInitializeDict(void); + +#if defined(HAVE_RAND) && defined(HAVE_SRAND) && defined(HAVE_TIME) +/* + * internal thread safe random function + */ +int __xmlRandom(void); +#endif + +int xmlNop(void); #ifdef IN_LIBXML #ifdef __GNUC__ @@ -76,4 +106,7 @@ #endif #endif #endif +#if !defined(PIC) && !defined(NOLIBTOOL) +# define LIBXML_STATIC +#endif #endif /* ! __XML_LIBXML_H__ */ diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/list.c gettext-0.19.7/gnulib-local/lib/libxml/list.c --- gettext-0.19.6/gnulib-local/lib/libxml/list.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/list.c 2015-12-23 07:08:27.000000000 +0000 @@ -94,15 +94,15 @@ * * Returns the link containing the data or NULL */ -static xmlLinkPtr -xmlListLowerSearch(xmlListPtr l, void *data) +static xmlLinkPtr +xmlListLowerSearch(xmlListPtr l, void *data) { xmlLinkPtr lk; if (l == NULL) return(NULL); for(lk = l->sentinel->next;lk != l->sentinel && l->linkCompare(lk->data, data) <0 ;lk = lk->next); - return lk; + return lk; } /** @@ -114,15 +114,15 @@ * * Returns the link containing the data or NULL */ -static xmlLinkPtr -xmlListHigherSearch(xmlListPtr l, void *data) +static xmlLinkPtr +xmlListHigherSearch(xmlListPtr l, void *data) { xmlLinkPtr lk; if (l == NULL) return(NULL); for(lk = l->sentinel->prev;lk != l->sentinel && l->linkCompare(lk->data, data) >0 ;lk = lk->prev); - return lk; + return lk; } /** @@ -134,8 +134,8 @@ * * Returns the link containing the data or NULL */ -static xmlLinkPtr -xmlListLinkSearch(xmlListPtr l, void *data) +static xmlLinkPtr +xmlListLinkSearch(xmlListPtr l, void *data) { xmlLinkPtr lk; if (l == NULL) @@ -159,8 +159,8 @@ * * Returns the link containing the data or NULL */ -static xmlLinkPtr -xmlListLinkReverseSearch(xmlListPtr l, void *data) +static xmlLinkPtr +xmlListLinkReverseSearch(xmlListPtr l, void *data) { xmlLinkPtr lk; if (l == NULL) @@ -189,16 +189,16 @@ { xmlListPtr l; if (NULL == (l = (xmlListPtr )xmlMalloc( sizeof(xmlList)))) { - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "Cannot initialize memory for list"); return (NULL); } /* Initialize the list to NULL */ memset(l, 0, sizeof(xmlList)); - + /* Add the sentinel */ if (NULL ==(l->sentinel = (xmlLinkPtr )xmlMalloc(sizeof(xmlLink)))) { - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "Cannot initialize memory for sentinel"); xmlFree(l); return (NULL); @@ -206,7 +206,7 @@ l->sentinel->next = l->sentinel; l->sentinel->prev = l->sentinel; l->sentinel->data = NULL; - + /* If there is a link deallocator, use it */ if (deallocator != NULL) l->linkDeallocator = deallocator; @@ -217,7 +217,7 @@ l->linkCompare = xmlLinkCompare; return l; } - + /** * xmlListSearch: * @l: a list @@ -228,7 +228,7 @@ * Returns the value associated to @data or NULL in case of error */ void * -xmlListSearch(xmlListPtr l, void *data) +xmlListSearch(xmlListPtr l, void *data) { xmlLinkPtr lk; if (l == NULL) @@ -249,7 +249,7 @@ * Returns the value associated to @data or NULL in case of error */ void * -xmlListReverseSearch(xmlListPtr l, void *data) +xmlListReverseSearch(xmlListPtr l, void *data) { xmlLinkPtr lk; if (l == NULL) @@ -270,7 +270,7 @@ * Returns 0 in case of success, 1 in case of failure */ int -xmlListInsert(xmlListPtr l, void *data) +xmlListInsert(xmlListPtr l, void *data) { xmlLinkPtr lkPlace, lkNew; @@ -280,7 +280,7 @@ /* Add the new link */ lkNew = (xmlLinkPtr) xmlMalloc(sizeof(xmlLink)); if (lkNew == NULL) { - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "Cannot initialize memory for new link"); return (1); } @@ -302,7 +302,7 @@ * * Returns 0 in case of success, 1 in case of failure */ -int xmlListAppend(xmlListPtr l, void *data) +int xmlListAppend(xmlListPtr l, void *data) { xmlLinkPtr lkPlace, lkNew; @@ -312,16 +312,16 @@ /* Add the new link */ lkNew = (xmlLinkPtr) xmlMalloc(sizeof(xmlLink)); if (lkNew == NULL) { - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "Cannot initialize memory for new link"); - return (0); + return (1); } lkNew->data = data; lkNew->next = lkPlace->next; (lkPlace->next)->prev = lkNew; lkPlace->next = lkNew; lkNew->prev = lkPlace; - return 1; + return 0; } /** @@ -353,7 +353,7 @@ xmlListRemoveFirst(xmlListPtr l, void *data) { xmlLinkPtr lk; - + if (l == NULL) return(0); /*Find the first instance of this data */ @@ -378,7 +378,7 @@ xmlListRemoveLast(xmlListPtr l, void *data) { xmlLinkPtr lk; - + if (l == NULL) return(0); /*Find the last instance of this data */ @@ -403,7 +403,7 @@ xmlListRemoveAll(xmlListPtr l, void *data) { int count=0; - + if (l == NULL) return(0); @@ -422,7 +422,7 @@ xmlListClear(xmlListPtr l) { xmlLinkPtr lk; - + if (l == NULL) return; lk = l->sentinel->next; @@ -458,14 +458,14 @@ * * Returns the first element in the list, or NULL */ -xmlLinkPtr +xmlLinkPtr xmlListFront(xmlListPtr l) { if (l == NULL) return(NULL); return (l->sentinel->next); } - + /** * xmlListEnd: * @l: a list @@ -474,14 +474,14 @@ * * Returns the last element in the list, or NULL */ -xmlLinkPtr +xmlLinkPtr xmlListEnd(xmlListPtr l) { if (l == NULL) return(NULL); return (l->sentinel->prev); } - + /** * xmlListSize: * @l: a list @@ -539,7 +539,7 @@ * Returns 1 if successful, 0 otherwise */ int -xmlListPushFront(xmlListPtr l, void *data) +xmlListPushFront(xmlListPtr l, void *data) { xmlLinkPtr lkPlace, lkNew; @@ -549,7 +549,7 @@ /* Add the new link */ lkNew = (xmlLinkPtr) xmlMalloc(sizeof(xmlLink)); if (lkNew == NULL) { - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "Cannot initialize memory for new link"); return (0); } @@ -571,7 +571,7 @@ * Returns 1 if successful, 0 otherwise */ int -xmlListPushBack(xmlListPtr l, void *data) +xmlListPushBack(xmlListPtr l, void *data) { xmlLinkPtr lkPlace, lkNew; @@ -580,7 +580,7 @@ lkPlace = l->sentinel->prev; /* Add the new link */ if (NULL ==(lkNew = (xmlLinkPtr )xmlMalloc(sizeof(xmlLink)))) { - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "Cannot initialize memory for new link"); return (0); } @@ -643,7 +643,7 @@ xmlListSort(xmlListPtr l) { xmlListPtr lTemp; - + if (l == NULL) return; if(xmlListEmpty(l)) @@ -725,10 +725,10 @@ * @old: the list * * Duplicate the list - * + * * Returns a new copy of the list or NULL in case of error */ -xmlListPtr +xmlListPtr xmlListDup(const xmlListPtr old) { xmlListPtr cur; @@ -754,7 +754,7 @@ * @old: the old list * * Move all the element from the old list in the new list - * + * * Returns 0 in case of success 1 in case of error */ int @@ -771,7 +771,7 @@ return (1); } } - return (0); + return (0); } /* xmlListUnique() */ /* xmlListSwap */ diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/list.in.h gettext-0.19.7/gnulib-local/lib/libxml/list.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/list.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/list.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -1,6 +1,6 @@ /* * Summary: lists interfaces - * Description: this module implement the list support used in + * Description: this module implement the list support used in * various place in the library. * * Copy: See Copyright for the status of this software. @@ -55,76 +55,76 @@ XMLPUBFUN xmlListPtr XMLCALL xmlListCreate (xmlListDeallocator deallocator, xmlListDataCompare compare); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListDelete (xmlListPtr l); /* Basic Operators */ -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlListSearch (xmlListPtr l, void *data); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlListReverseSearch (xmlListPtr l, void *data); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListInsert (xmlListPtr l, void *data) ; -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListAppend (xmlListPtr l, void *data) ; -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListRemoveFirst (xmlListPtr l, void *data); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListRemoveLast (xmlListPtr l, void *data); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListRemoveAll (xmlListPtr l, void *data); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListClear (xmlListPtr l); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListEmpty (xmlListPtr l); -XMLPUBFUN xmlLinkPtr XMLCALL +XMLPUBFUN xmlLinkPtr XMLCALL xmlListFront (xmlListPtr l); -XMLPUBFUN xmlLinkPtr XMLCALL +XMLPUBFUN xmlLinkPtr XMLCALL xmlListEnd (xmlListPtr l); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListSize (xmlListPtr l); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListPopFront (xmlListPtr l); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListPopBack (xmlListPtr l); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListPushFront (xmlListPtr l, void *data); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListPushBack (xmlListPtr l, void *data); /* Advanced Operators */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListReverse (xmlListPtr l); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListSort (xmlListPtr l); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListWalk (xmlListPtr l, xmlListWalker walker, const void *user); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListReverseWalk (xmlListPtr l, xmlListWalker walker, const void *user); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlListMerge (xmlListPtr l1, xmlListPtr l2); -XMLPUBFUN xmlListPtr XMLCALL +XMLPUBFUN xmlListPtr XMLCALL xmlListDup (const xmlListPtr old); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlListCopy (xmlListPtr cur, const xmlListPtr old); /* Link operators */ -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlLinkGetData (xmlLinkPtr lk); /* xmlListUnique() */ diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/nanoftp.c gettext-0.19.7/gnulib-local/lib/libxml/nanoftp.c --- gettext-0.19.6/gnulib-local/lib/libxml/nanoftp.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/nanoftp.c 2015-12-23 07:08:27.000000000 +0000 @@ -41,7 +41,7 @@ #include #endif #ifdef HAVE_FCNTL_H -#include +#include #endif #ifdef HAVE_ERRNO_H #include @@ -77,8 +77,10 @@ #endif -#ifdef __MINGW32__ +#if defined(__MINGW32__) || defined(_WIN32_WCE) +#ifndef _WINSOCKAPI_ #define _WINSOCKAPI_ +#endif #include #include #undef XML_SOCKLEN_T @@ -89,10 +91,9 @@ * A couple portability macros */ #ifndef _WINSOCKAPI_ -#ifndef __BEOS__ +#if !defined(__BEOS__) || defined(__HAIKU__) #define closesocket(s) close(s) #endif -#define SOCKET int #endif #ifdef __BEOS__ @@ -102,8 +103,10 @@ #endif #ifdef _AIX +#ifdef HAVE_BROKEN_SS_FAMILY #define ss_family __ss_family #endif +#endif #ifndef XML_SOCKLEN_T #define XML_SOCKLEN_T unsigned int @@ -185,7 +188,7 @@ xmlNanoFTPInit(void) { const char *env; #ifdef _WINSOCKAPI_ - WSADATA wsaData; + WSADATA wsaData; #endif if (initialized) @@ -302,15 +305,15 @@ /* * Clear any existing data from the context */ - if (ctxt->protocol != NULL) { + if (ctxt->protocol != NULL) { xmlFree(ctxt->protocol); ctxt->protocol = NULL; } - if (ctxt->hostname != NULL) { + if (ctxt->hostname != NULL) { xmlFree(ctxt->hostname); ctxt->hostname = NULL; } - if (ctxt->path != NULL) { + if (ctxt->path != NULL) { xmlFree(ctxt->path); ctxt->path = NULL; } @@ -324,7 +327,7 @@ xmlFreeURI(uri); return; } - + ctxt->protocol = xmlMemStrdup(uri->scheme); ctxt->hostname = xmlMemStrdup(uri->server); if (uri->path != NULL) @@ -355,7 +358,7 @@ * @URL: The URL used to update the context * * Update an FTP context by parsing the URL and finding - * new path it indicates. If there is an error in the + * new path it indicates. If there is an error in the * protocol, hostname, port or other information, the * error is raised. It indicates a new connection has to * be established. @@ -400,7 +403,7 @@ ctxt->path = NULL; } - if (uri->path == NULL) + if (uri->path == NULL) ctxt->path = xmlMemStrdup("/"); else ctxt->path = xmlMemStrdup(uri->path); @@ -424,7 +427,7 @@ xmlNanoFTPScanProxy(const char *URL) { xmlURIPtr uri; - if (proxy != NULL) { + if (proxy != NULL) { xmlFree(proxy); proxy = NULL; } @@ -448,7 +451,7 @@ xmlFreeURI(uri); return; } - + proxy = xmlMemStrdup(uri->server); if (uri->port != 0) proxyPort = uri->port; @@ -482,7 +485,7 @@ ret->returnValue = 0; ret->controlBufIndex = 0; ret->controlBufUsed = 0; - ret->controlFd = -1; + ret->controlFd = INVALID_SOCKET; unescaped = xmlURIUnescapeString(URL, 0, NULL); if (unescaped != NULL) { @@ -509,8 +512,8 @@ if (ctxt->protocol != NULL) xmlFree(ctxt->protocol); if (ctxt->path != NULL) xmlFree(ctxt->path); ctxt->passive = 1; - if (ctxt->controlFd >= 0) closesocket(ctxt->controlFd); - ctxt->controlFd = -1; + if (ctxt->controlFd != INVALID_SOCKET) closesocket(ctxt->controlFd); + ctxt->controlFd = INVALID_SOCKET; ctxt->controlBufIndex = -1; ctxt->controlBufUsed = -1; xmlFree(ctxt); @@ -520,7 +523,7 @@ * xmlNanoFTPParseResponse: * @buf: the buffer containing the response * @len: the buffer length - * + * * Parsing of the server answer, we just extract the code. * * returns 0 for errors @@ -532,22 +535,22 @@ int val = 0; if (len < 3) return(-1); - if ((*buf >= '0') && (*buf <= '9')) + if ((*buf >= '0') && (*buf <= '9')) val = val * 10 + (*buf - '0'); else return(0); buf++; - if ((*buf >= '0') && (*buf <= '9')) + if ((*buf >= '0') && (*buf <= '9')) val = val * 10 + (*buf - '0'); else return(0); buf++; - if ((*buf >= '0') && (*buf <= '9')) + if ((*buf >= '0') && (*buf <= '9')) val = val * 10 + (*buf - '0'); else return(0); buf++; - if (*buf == '-') + if (*buf == '-') return(-val); return(val); } @@ -565,7 +568,7 @@ int len; int size; - if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1); + if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1); if ((ctxt->controlBufIndex < 0) || (ctxt->controlBufIndex > FTP_BUF_SIZE)) { #ifdef DEBUG_FTP @@ -617,8 +620,8 @@ if ((len = recv(ctxt->controlFd, &ctxt->controlBuf[ctxt->controlBufIndex], size, 0)) < 0) { __xmlIOErr(XML_FROM_FTP, 0, "recv failed"); - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } #ifdef DEBUG_FTP @@ -646,7 +649,7 @@ int len; int res = -1, cur = -1; - if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1); + if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1); get_more: /* @@ -735,7 +738,7 @@ fd_set rfd; struct timeval tv; - if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1); + if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1); tv.tv_sec = 0; tv.tv_usec = 0; FD_ZERO(&rfd); @@ -746,7 +749,7 @@ case -1: __xmlIOErr(XML_FROM_FTP, 0, "select"); return(-1); - + } return(xmlNanoFTPReadResponse(ctx)); @@ -772,7 +775,7 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); return(res); @@ -800,7 +803,7 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); return(res); @@ -824,14 +827,14 @@ char buf[200]; int len, res; - if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1); + if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1); snprintf(buf, sizeof(buf), "QUIT\r\n"); len = strlen(buf); #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); /* Just to be consistent, even though we know it can't have a % in it */ #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); return(res); @@ -905,6 +908,8 @@ return (-1); } if (tmp->ai_addrlen > sizeof(ctxt->ftpAddr)) { + if (result) + freeaddrinfo (result); __xmlIOErr(XML_FROM_FTP, 0, "gethostbyname address mismatch"); return (-1); } @@ -925,9 +930,9 @@ #endif { if (proxy) - hp = gethostbyname (proxy); + hp = gethostbyname (GETHOSTBYNAME_ARG_CAST proxy); else - hp = gethostbyname (ctxt->hostname); + hp = gethostbyname (GETHOSTBYNAME_ARG_CAST ctxt->hostname); if (hp == NULL) { __xmlIOErr(XML_FROM_FTP, 0, "gethostbyname failed"); return (-1); @@ -944,12 +949,13 @@ ((struct sockaddr_in *)&ctxt->ftpAddr)->sin_family = AF_INET; memcpy (&((struct sockaddr_in *)&ctxt->ftpAddr)->sin_addr, hp->h_addr_list[0], hp->h_length); - ((struct sockaddr_in *)&ctxt->ftpAddr)->sin_port = (u_short)htons ((unsigned short)port); + ((struct sockaddr_in *)&ctxt->ftpAddr)->sin_port = + (unsigned short)htons ((unsigned short)port); ctxt->controlFd = socket (AF_INET, SOCK_STREAM, 0); addrlen = sizeof (struct sockaddr_in); } - if (ctxt->controlFd < 0) { + if (ctxt->controlFd == INVALID_SOCKET) { __xmlIOErr(XML_FROM_FTP, 0, "socket failed"); return(-1); } @@ -960,8 +966,8 @@ if (connect(ctxt->controlFd, (struct sockaddr *) &ctxt->ftpAddr, addrlen) < 0) { __xmlIOErr(XML_FROM_FTP, 0, "Failed to create a connection"); - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } @@ -970,8 +976,8 @@ */ res = xmlNanoFTPGetResponse(ctxt); if (res != 2) { - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } @@ -1024,11 +1030,11 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); closesocket(ctxt->controlFd); - ctxt->controlFd = -1; + ctxt->controlFd = INVALID_SOCKET; return(res); } res = xmlNanoFTPGetResponse(ctxt); @@ -1046,17 +1052,17 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); closesocket(ctxt->controlFd); - ctxt->controlFd = -1; + ctxt->controlFd = INVALID_SOCKET; return(res); } res = xmlNanoFTPGetResponse(ctxt); if (res > 3) { closesocket(ctxt->controlFd); - ctxt->controlFd = -1; + ctxt->controlFd = INVALID_SOCKET; return(-1); } break; @@ -1067,7 +1073,7 @@ case -1: default: closesocket(ctxt->controlFd); - ctxt->controlFd = -1; + ctxt->controlFd = INVALID_SOCKET; return(-1); } } @@ -1087,11 +1093,11 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(res); } res = xmlNanoFTPGetResponse(ctxt); @@ -1099,10 +1105,10 @@ /* we assume it worked :-\ 1 is error for SITE command */ proxyType = 1; break; - } + } if (proxyType == 1) { - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } case 2: @@ -1118,11 +1124,11 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(res); } res = xmlNanoFTPGetResponse(ctxt); @@ -1130,7 +1136,7 @@ /* we assume it worked :-\ */ proxyType = 2; return(0); - } + } if (ctxt->passwd == NULL) snprintf(buf, sizeof(buf), "PASS anonymous@\r\n"); else @@ -1140,11 +1146,11 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(res); } res = xmlNanoFTPGetResponse(ctxt); @@ -1154,8 +1160,8 @@ return(0); } if (proxyType == 2) { - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } case 3: @@ -1164,8 +1170,8 @@ * send the code or at least the sequence in use. */ default: - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } } @@ -1174,8 +1180,8 @@ */ res = xmlNanoFTPSendUser(ctxt); if (res < 0) { - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } res = xmlNanoFTPGetResponse(ctxt); @@ -1189,14 +1195,14 @@ case 5: case -1: default: - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } res = xmlNanoFTPSendPasswd(ctxt); if (res < 0) { - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } res = xmlNanoFTPGetResponse(ctxt); @@ -1211,8 +1217,8 @@ case 5: case -1: default: - closesocket(ctxt->controlFd); ctxt->controlFd = -1; - ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; + ctxt->controlFd = INVALID_SOCKET; return(-1); } @@ -1235,12 +1241,18 @@ int res; xmlNanoFTPInit(); - if (server == NULL) + if (server == NULL) return(NULL); if (port <= 0) return(NULL); ctxt = (xmlNanoFTPCtxtPtr) xmlNanoFTPNewCtxt(NULL); + if (ctxt == NULL) + return(NULL); ctxt->hostname = xmlMemStrdup(server); + if (ctxt->hostname == NULL) { + xmlNanoFTPFreeCtxt(ctxt); + return(NULL); + } if (port != 0) ctxt->port = port; res = xmlNanoFTPConnect(ctxt); @@ -1268,7 +1280,7 @@ int len; int res; - if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1); + if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1); if (directory == NULL) return 0; /* @@ -1284,7 +1296,7 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); return(res); @@ -1317,8 +1329,8 @@ int len; int res; - if ((ctxt == NULL) || (ctxt->controlFd < 0) || (file == NULL)) return(-1); - if (file == NULL) return (0); + if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET) || + (file == NULL)) return(-1); /* * Expected response code for DELE: @@ -1328,14 +1340,14 @@ * 450, 550 * 500, 501, 502, 421, 530 */ - + snprintf(buf, sizeof(buf), "DELE %s\r\n", file); buf[sizeof(buf) - 1] = 0; len = strlen(buf); #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); return(res); @@ -1360,7 +1372,7 @@ * Returns -1 incase of error, 0 otherwise */ -int +SOCKET xmlNanoFTPGetConnection(void *ctx) { xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx; char buf[200], *cur; @@ -1375,7 +1387,7 @@ #endif XML_SOCKLEN_T dataAddrLen; - if (ctxt == NULL) return(-1); + if (ctxt == NULL) return INVALID_SOCKET; memset (&dataAddr, 0, sizeof(dataAddr)); #ifdef SUPPORT_IP6 @@ -1391,9 +1403,9 @@ dataAddrLen = sizeof (struct sockaddr_in); } - if (ctxt->dataFd < 0) { + if (ctxt->dataFd == INVALID_SOCKET) { __xmlIOErr(XML_FROM_FTP, 0, "socket failed"); - return (-1); + return INVALID_SOCKET; } if (ctxt->passive) { @@ -1407,36 +1419,36 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return(res); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } res = xmlNanoFTPReadResponse(ctx); if (res != 2) { if (res == 5) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return(-1); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } else { /* * retry with an active connection */ - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; ctxt->passive = 0; } } - cur = &ctxt->controlBuf[ctxt->controlBufAnswer]; + cur = &ctxt->controlBuf[ctxt->controlBufAnswer]; while (((*cur < '0') || (*cur > '9')) && *cur != '\0') cur++; #ifdef SUPPORT_IP6 if ((ctxt->ftpAddr).ss_family == AF_INET6) { if (sscanf (cur, "%u", &temp[0]) != 1) { __xmlIOErr(XML_FROM_FTP, XML_FTP_EPSV_ANSWER, "Invalid answer to EPSV\n"); - if (ctxt->dataFd != -1) { - closesocket (ctxt->dataFd); ctxt->dataFd = -1; + if (ctxt->dataFd != INVALID_SOCKET) { + closesocket (ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; } - return (-1); + return INVALID_SOCKET; } memcpy (&((struct sockaddr_in6 *)&dataAddr)->sin6_addr, &((struct sockaddr_in6 *)&ctxt->ftpAddr)->sin6_addr, sizeof(struct in6_addr)); ((struct sockaddr_in6 *)&dataAddr)->sin6_port = htons (temp[0]); @@ -1448,10 +1460,10 @@ &temp[3], &temp[4], &temp[5]) != 6) { __xmlIOErr(XML_FROM_FTP, XML_FTP_PASV_ANSWER, "Invalid answer to PASV\n"); - if (ctxt->dataFd != -1) { - closesocket (ctxt->dataFd); ctxt->dataFd = -1; + if (ctxt->dataFd != INVALID_SOCKET) { + closesocket (ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; } - return (-1); + return INVALID_SOCKET; } for (i=0; i<6; i++) ad[i] = (unsigned char) (temp[i] & 0xff); memcpy (&((struct sockaddr_in *)&dataAddr)->sin_addr, &ad[0], 4); @@ -1460,8 +1472,8 @@ if (connect(ctxt->dataFd, (struct sockaddr *) &dataAddr, dataAddrLen) < 0) { __xmlIOErr(XML_FROM_FTP, 0, "Failed to create a data connection"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return (-1); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } } else { getsockname(ctxt->dataFd, (struct sockaddr *) &dataAddr, &dataAddrLen); @@ -1474,15 +1486,15 @@ if (bind(ctxt->dataFd, (struct sockaddr *) &dataAddr, dataAddrLen) < 0) { __xmlIOErr(XML_FROM_FTP, 0, "bind failed"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return (-1); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } getsockname(ctxt->dataFd, (struct sockaddr *) &dataAddr, &dataAddrLen); if (listen(ctxt->dataFd, 1) < 0) { __xmlIOErr(XML_FROM_FTP, 0, "listen failed"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return (-1); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } #ifdef SUPPORT_IP6 if ((ctxt->ftpAddr).ss_family == AF_INET6) { @@ -1508,20 +1520,20 @@ xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return(res); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } res = xmlNanoFTPGetResponse(ctxt); if (res != 2) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return(-1); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } } return(ctxt->dataFd); - + } /** @@ -1540,9 +1552,9 @@ fd_set rfd, efd; struct timeval tv; - if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1); + if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; tv.tv_sec = 15; tv.tv_usec = 0; FD_ZERO(&rfd); @@ -1554,7 +1566,7 @@ #ifdef DEBUG_FTP perror("select"); #endif - closesocket(ctxt->controlFd); ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; return(-1); } if (res == 0) { @@ -1562,11 +1574,11 @@ xmlGenericError(xmlGenericErrorContext, "xmlNanoFTPCloseConnection: timeout\n"); #endif - closesocket(ctxt->controlFd); ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; } else { res = xmlNanoFTPGetResponse(ctxt); if (res != 2) { - closesocket(ctxt->controlFd); ctxt->controlFd = -1; + closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET; return(-1); } } @@ -1579,7 +1591,7 @@ * @callback: the user callback * @userData: the user callback data * - * Parse at most one entry from the listing. + * Parse at most one entry from the listing. * * Returns -1 incase of error, the length of data parsed otherwise */ @@ -1616,7 +1628,7 @@ if (*cur == 0) return(0); i = 0; while (*cur != ' ') { - if (i < 10) + if (i < 10) attrib[i++] = *cur; cur++; if (*cur == 0) return(0); @@ -1630,7 +1642,7 @@ if (*cur == 0) return(0); i = 0; while (*cur != ' ') { - if (i < 10) + if (i < 10) owner[i++] = *cur; cur++; if (*cur == 0) return(0); @@ -1640,7 +1652,7 @@ if (*cur == 0) return(0); i = 0; while (*cur != ' ') { - if (i < 10) + if (i < 10) group[i++] = *cur; cur++; if (*cur == 0) return(0); @@ -1727,7 +1739,7 @@ if (xmlNanoFTPCwd(ctxt, ctxt->path) < 1) return(-1); ctxt->dataFd = xmlNanoFTPGetConnection(ctxt); - if (ctxt->dataFd == -1) + if (ctxt->dataFd == INVALID_SOCKET) return(-1); snprintf(buf, sizeof(buf), "LIST -L\r\n"); } else { @@ -1736,7 +1748,7 @@ return(-1); } ctxt->dataFd = xmlNanoFTPGetConnection(ctxt); - if (ctxt->dataFd == -1) + if (ctxt->dataFd == INVALID_SOCKET) return(-1); snprintf(buf, sizeof(buf), "LIST -L %s\r\n", filename); } @@ -1745,15 +1757,15 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; return(res); } res = xmlNanoFTPReadResponse(ctxt); if (res != 1) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; return(-res); } @@ -1769,18 +1781,18 @@ #ifdef DEBUG_FTP perror("select"); #endif - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; return(-1); } if (res == 0) { res = xmlNanoFTPCheckResponse(ctxt); if (res < 0) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + ctxt->dataFd = INVALID_SOCKET; return(-1); } if (res == 2) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; return(0); } @@ -1789,8 +1801,8 @@ if ((len = recv(ctxt->dataFd, &buf[indx], sizeof(buf) - (indx + 1), 0)) < 0) { __xmlIOErr(XML_FROM_FTP, 0, "recv"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + ctxt->dataFd = INVALID_SOCKET; return(-1); } #ifdef DEBUG_FTP @@ -1822,34 +1834,34 @@ */ -int +SOCKET xmlNanoFTPGetSocket(void *ctx, const char *filename) { xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx; char buf[300]; int res, len; if (ctx == NULL) - return(-1); + return INVALID_SOCKET; if ((filename == NULL) && (ctxt->path == NULL)) - return(-1); + return INVALID_SOCKET; ctxt->dataFd = xmlNanoFTPGetConnection(ctxt); - if (ctxt->dataFd == -1) - return(-1); + if (ctxt->dataFd == INVALID_SOCKET) + return INVALID_SOCKET; snprintf(buf, sizeof(buf), "TYPE I\r\n"); len = strlen(buf); #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return(res); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } res = xmlNanoFTPReadResponse(ctxt); if (res != 2) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return(-res); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } if (filename == NULL) snprintf(buf, sizeof(buf), "RETR %s\r\n", ctxt->path); @@ -1860,16 +1872,16 @@ #ifdef DEBUG_FTP xmlGenericError(xmlGenericErrorContext, "%s", buf); #endif - res = send(ctxt->controlFd, buf, len, 0); + res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0); if (res < 0) { __xmlIOErr(XML_FROM_FTP, 0, "send failed"); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return(res); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } res = xmlNanoFTPReadResponse(ctxt); if (res != 1) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - return(-res); + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + return INVALID_SOCKET; } return(ctxt->dataFd); } @@ -1901,7 +1913,7 @@ return(-1); if (callback == NULL) return(-1); - if (xmlNanoFTPGetSocket(ctxt, filename) < 0) + if (xmlNanoFTPGetSocket(ctxt, filename) == INVALID_SOCKET) return(-1); do { @@ -1914,18 +1926,18 @@ #ifdef DEBUG_FTP perror("select"); #endif - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; return(-1); } if (res == 0) { res = xmlNanoFTPCheckResponse(ctxt); if (res < 0) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; - ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; + ctxt->dataFd = INVALID_SOCKET; return(-1); } if (res == 2) { - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; return(0); } @@ -1934,7 +1946,7 @@ if ((len = recv(ctxt->dataFd, buf, sizeof(buf), 0)) < 0) { __xmlIOErr(XML_FROM_FTP, 0, "recv failed"); callback(userData, buf, len); - closesocket(ctxt->dataFd); ctxt->dataFd = -1; + closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET; return(-1); } callback(userData, buf, len); @@ -1960,7 +1972,7 @@ xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx; if (ctx == NULL) return(-1); - if (ctxt->dataFd < 0) return(0); + if (ctxt->dataFd == INVALID_SOCKET) return(0); if (dest == NULL) return(-1); if (len <= 0) return(0); @@ -1982,13 +1994,13 @@ * * Start to fetch the given ftp:// resource * - * Returns an FTP context, or NULL + * Returns an FTP context, or NULL */ void* xmlNanoFTPOpen(const char *URL) { xmlNanoFTPCtxtPtr ctxt; - int sock; + SOCKET sock; xmlNanoFTPInit(); if (URL == NULL) return(NULL); @@ -2001,7 +2013,7 @@ return(NULL); } sock = xmlNanoFTPGetSocket(ctxt, ctxt->path); - if (sock < 0) { + if (sock == INVALID_SOCKET) { xmlNanoFTPFreeCtxt(ctxt); return(NULL); } @@ -2024,14 +2036,14 @@ if (ctxt == NULL) return(-1); - if (ctxt->dataFd >= 0) { + if (ctxt->dataFd != INVALID_SOCKET) { closesocket(ctxt->dataFd); - ctxt->dataFd = -1; + ctxt->dataFd = INVALID_SOCKET; } - if (ctxt->controlFd >= 0) { + if (ctxt->controlFd != INVALID_SOCKET) { xmlNanoFTPQuit(ctxt); closesocket(ctxt->controlFd); - ctxt->controlFd = -1; + ctxt->controlFd = INVALID_SOCKET; } xmlNanoFTPFreeCtxt(ctxt); return(0); @@ -2039,9 +2051,9 @@ #ifdef STANDALONE /************************************************************************ - * * - * Basic test in Standalone mode * - * * + * * + * Basic test in Standalone mode * + * * ************************************************************************/ static void ftpList(void *userData, const char *filename, const char* attrib, @@ -2056,7 +2068,7 @@ if (len <= 0) { fclose((FILE*)userData); return; - } + } fwrite(data, len, 1, (FILE*)userData); } @@ -2088,7 +2100,7 @@ if (xmlNanoFTPGet(ctxt, ftpData, (void *) output, tstfile) < 0) xmlGenericError(xmlGenericErrorContext, "Failed to get file\n"); - + } xmlNanoFTPClose(ctxt); xmlMemoryDump(); diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/nanoftp.in.h gettext-0.19.7/gnulib-local/lib/libxml/nanoftp.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/nanoftp.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/nanoftp.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -7,7 +7,7 @@ * * Author: Daniel Veillard */ - + #ifndef __NANO_FTP_H__ #define __NANO_FTP_H__ @@ -15,12 +15,32 @@ #ifdef LIBXML_FTP_ENABLED +/* Needed for portability to Windows 64 bits */ +#if defined(__MINGW32__) || defined(_WIN32_WCE) +#include +#else +/** + * SOCKET: + * + * macro used to provide portability of code to windows sockets + */ +#define SOCKET int +/** + * INVALID_SOCKET: + * + * macro used to provide portability of code to windows sockets + * the value to be used when the socket is not valid + */ +#undef INVALID_SOCKET +#define INVALID_SOCKET (-1) +#endif + #ifdef __cplusplus extern "C" { #endif /** - * ftpListCallback: + * ftpListCallback: * @userData: user provided data for the callback * @filename: the file name (including "->" when links are shown) * @attrib: the attribute string @@ -44,7 +64,7 @@ const char *month, int day, int hour, int minute); /** - * ftpDataCallback: + * ftpDataCallback: * @userData: the user provided context * @data: the data received * @len: its size in bytes @@ -60,78 +80,78 @@ */ XMLPUBFUN void XMLCALL xmlNanoFTPInit (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNanoFTPCleanup (void); /* * Creating/freeing contexts. */ -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlNanoFTPNewCtxt (const char *URL); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNanoFTPFreeCtxt (void * ctx); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlNanoFTPConnectTo (const char *server, int port); /* * Opening/closing session connections. */ -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlNanoFTPOpen (const char *URL); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPConnect (void *ctx); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPClose (void *ctx); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPQuit (void *ctx); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNanoFTPScanProxy (const char *URL); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNanoFTPProxy (const char *host, int port, const char *user, const char *passwd, int type); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPUpdateURL (void *ctx, const char *URL); /* * Rather internal commands. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPGetResponse (void *ctx); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPCheckResponse (void *ctx); /* * CD/DIR/GET handlers. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPCwd (void *ctx, const char *directory); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPDele (void *ctx, const char *file); -XMLPUBFUN int XMLCALL +XMLPUBFUN SOCKET XMLCALL xmlNanoFTPGetConnection (void *ctx); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPCloseConnection(void *ctx); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPList (void *ctx, ftpListCallback callback, void *userData, const char *filename); -XMLPUBFUN int XMLCALL +XMLPUBFUN SOCKET XMLCALL xmlNanoFTPGetSocket (void *ctx, const char *filename); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPGet (void *ctx, ftpDataCallback callback, void *userData, const char *filename); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoFTPRead (void *ctx, void *dest, int len); diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/nanohttp.c gettext-0.19.7/gnulib-local/lib/libxml/nanohttp.c --- gettext-0.19.6/gnulib-local/lib/libxml/nanohttp.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/nanohttp.c 2015-12-23 07:08:27.000000000 +0000 @@ -10,7 +10,7 @@ * * daniel@veillard.com */ - + #define NEED_SOCKETS #define IN_LIBXML #include "libxml.h" @@ -46,7 +46,7 @@ #include #endif #ifdef HAVE_FCNTL_H -#include +#include #endif #ifdef HAVE_ERRNO_H #include @@ -54,15 +54,16 @@ #ifdef HAVE_SYS_TIME_H #include #endif +#ifndef HAVE_POLL_H #ifdef HAVE_SYS_SELECT_H #include #endif +#else +#include +#endif #ifdef HAVE_STRINGS_H #include #endif -#ifdef SUPPORT_IP6 -#include -#endif #ifdef HAVE_ZLIB_H #include #endif @@ -71,19 +72,18 @@ #ifdef VMS #include #define XML_SOCKLEN_T unsigned int -#define SOCKET int #endif - -#ifdef __MINGW32__ +#if defined(__MINGW32__) || defined(_WIN32_WCE) +#ifndef _WINSOCKAPI_ #define _WINSOCKAPI_ +#endif #include #include #undef XML_SOCKLEN_T #define XML_SOCKLEN_T unsigned int #endif - #include #include #include @@ -96,10 +96,11 @@ * A couple portability macros */ #ifndef _WINSOCKAPI_ -#ifndef __BEOS__ +#if !defined(__BEOS__) || defined(__HAIKU__) #define closesocket(s) close(s) #endif #define SOCKET int +#define INVALID_SOCKET (-1) #endif #ifdef __BEOS__ @@ -111,9 +112,6 @@ #ifndef XML_SOCKLEN_T #define XML_SOCKLEN_T unsigned int #endif -#ifndef SOCKET -#define SOCKET int -#endif #ifdef STANDALONE #define DEBUG_HTTP @@ -147,6 +145,7 @@ int inlen; /* len of the input buffer */ int last; /* return code for last operation */ int returnValue; /* the protocol return value */ + int version; /* the protocol version */ int ContentLength; /* specified content length from HTTP header */ char *contentType; /* the MIME type for the input */ char *location; /* the new URL in case of redirect */ @@ -192,10 +191,10 @@ #ifdef SUPPORT_IP6 static int have_ipv6(void) { - int s; + SOCKET s; s = socket (AF_INET6, SOCK_STREAM, 0); - if (s != -1) { + if (s != INVALID_SOCKET) { close (s); return (1); } @@ -214,7 +213,7 @@ xmlNanoHTTPInit(void) { const char *env; #ifdef _WINSOCKAPI_ - WSADATA wsaData; + WSADATA wsaData; #endif if (initialized) @@ -277,22 +276,24 @@ static void xmlNanoHTTPScanURL(xmlNanoHTTPCtxtPtr ctxt, const char *URL) { xmlURIPtr uri; + int len; + /* * Clear any existing data from the context */ - if (ctxt->protocol != NULL) { + if (ctxt->protocol != NULL) { xmlFree(ctxt->protocol); ctxt->protocol = NULL; } - if (ctxt->hostname != NULL) { + if (ctxt->hostname != NULL) { xmlFree(ctxt->hostname); ctxt->hostname = NULL; } - if (ctxt->path != NULL) { + if (ctxt->path != NULL) { xmlFree(ctxt->path); ctxt->path = NULL; } - if (ctxt->query != NULL) { + if (ctxt->query != NULL) { xmlFree(ctxt->query); ctxt->query = NULL; } @@ -306,9 +307,17 @@ xmlFreeURI(uri); return; } - + ctxt->protocol = xmlMemStrdup(uri->scheme); - ctxt->hostname = xmlMemStrdup(uri->server); + /* special case of IPv6 addresses, the [] need to be removed */ + if ((uri->server != NULL) && (*uri->server == '[')) { + len = strlen(uri->server); + if ((len > 2) && (uri->server[len - 1] == ']')) { + ctxt->hostname = (char *) xmlCharStrndup(uri->server + 1, len -2); + } else + ctxt->hostname = xmlMemStrdup(uri->server); + } else + ctxt->hostname = xmlMemStrdup(uri->server); if (uri->path != NULL) ctxt->path = xmlMemStrdup(uri->path); else @@ -335,7 +344,7 @@ xmlNanoHTTPScanProxy(const char *URL) { xmlURIPtr uri; - if (proxy != NULL) { + if (proxy != NULL) { xmlFree(proxy); proxy = NULL; } @@ -359,7 +368,7 @@ xmlFreeURI(uri); return; } - + proxy = xmlMemStrdup(uri->server); if (uri->port != 0) proxyPort = uri->port; @@ -389,7 +398,7 @@ memset(ret, 0, sizeof(xmlNanoHTTPCtxt)); ret->port = 80; ret->returnValue = 0; - ret->fd = -1; + ret->fd = INVALID_SOCKET; ret->ContentLength = -1; xmlNanoHTTPScanURL(ret, URL); @@ -426,8 +435,8 @@ #endif ctxt->state = XML_NANO_HTTP_NONE; - if (ctxt->fd >= 0) closesocket(ctxt->fd); - ctxt->fd = -1; + if (ctxt->fd != INVALID_SOCKET) closesocket(ctxt->fd); + ctxt->fd = INVALID_SOCKET; xmlFree(ctxt); } @@ -440,51 +449,64 @@ */ static int -xmlNanoHTTPSend(xmlNanoHTTPCtxtPtr ctxt, const char * xmt_ptr, int outlen) { - - int total_sent = 0; +xmlNanoHTTPSend(xmlNanoHTTPCtxtPtr ctxt, const char *xmt_ptr, int outlen) +{ + int total_sent = 0; +#ifdef HAVE_POLL_H + struct pollfd p; +#else + struct timeval tv; + fd_set wfd; +#endif - if ( (ctxt->state & XML_NANO_HTTP_WRITE) && (xmt_ptr != NULL ) ) { + if ((ctxt->state & XML_NANO_HTTP_WRITE) && (xmt_ptr != NULL)) { while (total_sent < outlen) { - int nsent = send(ctxt->fd, xmt_ptr + total_sent, - outlen - total_sent, 0); - if (nsent>0) + int nsent = send(ctxt->fd, SEND_ARG2_CAST (xmt_ptr + total_sent), + outlen - total_sent, 0); + + if (nsent > 0) total_sent += nsent; - else if ( ( nsent == -1 ) && + else if ((nsent == -1) && #if defined(EAGAIN) && EAGAIN != EWOULDBLOCK - ( socket_errno( ) != EAGAIN ) && + (socket_errno() != EAGAIN) && #endif - ( socket_errno( ) != EWOULDBLOCK ) ) { - __xmlIOErr(XML_FROM_HTTP, 0, "send failed\n"); - if ( total_sent == 0 ) - total_sent = -1; - break; - } - else { - /* - ** No data sent - ** Since non-blocking sockets are used, wait for - ** socket to be writable or default timeout prior - ** to retrying. - */ - - struct timeval tv; - fd_set wfd; - - tv.tv_sec = timeout; - tv.tv_usec = 0; - FD_ZERO( &wfd ); + (socket_errno() != EWOULDBLOCK)) { + __xmlIOErr(XML_FROM_HTTP, 0, "send failed\n"); + if (total_sent == 0) + total_sent = -1; + break; + } else { + /* + * No data sent + * Since non-blocking sockets are used, wait for + * socket to be writable or default timeout prior + * to retrying. + */ +#ifndef HAVE_POLL_H +#ifndef _WINSOCKAPI_ + if (ctxt->fd > FD_SETSIZE) + return -1; +#endif + + tv.tv_sec = timeout; + tv.tv_usec = 0; + FD_ZERO(&wfd); #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4018) #endif - FD_SET( ctxt->fd, &wfd ); + FD_SET(ctxt->fd, &wfd); #ifdef _MSC_VER #pragma warning(pop) #endif - (void)select( ctxt->fd + 1, NULL, &wfd, NULL, &tv ); - } - } + (void) select(ctxt->fd + 1, NULL, &wfd, NULL, &tv); +#else + p.fd = ctxt->fd; + p.events = POLLOUT; + (void) poll(&p, 1, timeout * 1000); +#endif /* !HAVE_POLL_H */ + } + } } return total_sent; @@ -501,96 +523,119 @@ */ static int -xmlNanoHTTPRecv(xmlNanoHTTPCtxtPtr ctxt) { +xmlNanoHTTPRecv(xmlNanoHTTPCtxtPtr ctxt) +{ +#ifdef HAVE_POLL_H + struct pollfd p; +#else fd_set rfd; struct timeval tv; +#endif while (ctxt->state & XML_NANO_HTTP_READ) { - if (ctxt->in == NULL) { - ctxt->in = (char *) xmlMallocAtomic(65000 * sizeof(char)); - if (ctxt->in == NULL) { - xmlHTTPErrMemory("allocating input"); - ctxt->last = -1; - return(-1); - } - ctxt->inlen = 65000; - ctxt->inptr = ctxt->content = ctxt->inrptr = ctxt->in; - } - if (ctxt->inrptr > ctxt->in + XML_NANO_HTTP_CHUNK) { - int delta = ctxt->inrptr - ctxt->in; - int len = ctxt->inptr - ctxt->inrptr; - - memmove(ctxt->in, ctxt->inrptr, len); - ctxt->inrptr -= delta; - ctxt->content -= delta; - ctxt->inptr -= delta; - } + if (ctxt->in == NULL) { + ctxt->in = (char *) xmlMallocAtomic(65000 * sizeof(char)); + if (ctxt->in == NULL) { + xmlHTTPErrMemory("allocating input"); + ctxt->last = -1; + return (-1); + } + ctxt->inlen = 65000; + ctxt->inptr = ctxt->content = ctxt->inrptr = ctxt->in; + } + if (ctxt->inrptr > ctxt->in + XML_NANO_HTTP_CHUNK) { + int delta = ctxt->inrptr - ctxt->in; + int len = ctxt->inptr - ctxt->inrptr; + + memmove(ctxt->in, ctxt->inrptr, len); + ctxt->inrptr -= delta; + ctxt->content -= delta; + ctxt->inptr -= delta; + } if ((ctxt->in + ctxt->inlen) < (ctxt->inptr + XML_NANO_HTTP_CHUNK)) { - int d_inptr = ctxt->inptr - ctxt->in; - int d_content = ctxt->content - ctxt->in; - int d_inrptr = ctxt->inrptr - ctxt->in; - char * tmp_ptr = ctxt->in; + int d_inptr = ctxt->inptr - ctxt->in; + int d_content = ctxt->content - ctxt->in; + int d_inrptr = ctxt->inrptr - ctxt->in; + char *tmp_ptr = ctxt->in; - ctxt->inlen *= 2; + ctxt->inlen *= 2; ctxt->in = (char *) xmlRealloc(tmp_ptr, ctxt->inlen); - if (ctxt->in == NULL) { - xmlHTTPErrMemory("allocating input buffer"); - xmlFree( tmp_ptr ); - ctxt->last = -1; - return(-1); - } + if (ctxt->in == NULL) { + xmlHTTPErrMemory("allocating input buffer"); + xmlFree(tmp_ptr); + ctxt->last = -1; + return (-1); + } ctxt->inptr = ctxt->in + d_inptr; ctxt->content = ctxt->in + d_content; ctxt->inrptr = ctxt->in + d_inrptr; - } - ctxt->last = recv(ctxt->fd, ctxt->inptr, XML_NANO_HTTP_CHUNK, 0); - if (ctxt->last > 0) { - ctxt->inptr += ctxt->last; - return(ctxt->last); - } - if (ctxt->last == 0) { - return(0); - } - if (ctxt->last == -1) { - switch (socket_errno()) { - case EINPROGRESS: - case EWOULDBLOCK: + } + ctxt->last = recv(ctxt->fd, ctxt->inptr, XML_NANO_HTTP_CHUNK, 0); + if (ctxt->last > 0) { + ctxt->inptr += ctxt->last; + return (ctxt->last); + } + if (ctxt->last == 0) { + return (0); + } + if (ctxt->last == -1) { + switch (socket_errno()) { + case EINPROGRESS: + case EWOULDBLOCK: #if defined(EAGAIN) && EAGAIN != EWOULDBLOCK - case EAGAIN: + case EAGAIN: #endif - break; + break; - case ECONNRESET: - case ESHUTDOWN: - return ( 0 ); + case ECONNRESET: + case ESHUTDOWN: + return (0); + + default: + __xmlIOErr(XML_FROM_HTTP, 0, "recv failed\n"); + return (-1); + } + } +#ifdef HAVE_POLL_H + p.fd = ctxt->fd; + p.events = POLLIN; + if ((poll(&p, 1, timeout * 1000) < 1) +#if defined(EINTR) + && (errno != EINTR) +#endif + ) + return (0); +#else /* !HAVE_POLL_H */ +#ifndef _WINSOCKAPI_ + if (ctxt->fd > FD_SETSIZE) + return 0; +#endif - default: - __xmlIOErr(XML_FROM_HTTP, 0, "recv failed\n"); - return(-1); - } - } + tv.tv_sec = timeout; + tv.tv_usec = 0; + FD_ZERO(&rfd); - tv.tv_sec = timeout; - tv.tv_usec = 0; - FD_ZERO(&rfd); #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4018) #endif - FD_SET(ctxt->fd, &rfd); + + FD_SET(ctxt->fd, &rfd); + #ifdef _MSC_VER #pragma warning(pop) #endif - - if ( (select(ctxt->fd+1, &rfd, NULL, NULL, &tv)<1) + + if ((select(ctxt->fd + 1, &rfd, NULL, NULL, &tv) < 1) #if defined(EINTR) - && (errno != EINTR) + && (errno != EINTR) #endif - ) - return(0); + ) + return (0); +#endif /* !HAVE_POLL_H */ } - return(0); + return (0); } /** @@ -609,7 +654,7 @@ char buf[4096]; char *bp = buf; int rc; - + while (bp - buf < 4095) { if (ctxt->inrptr == ctxt->inptr) { if ( (rc = xmlNanoHTTPRecv(ctxt)) == 0) { @@ -687,6 +732,7 @@ } if ((*cur != 0) && (*cur != ' ') && (*cur != '\t')) return; ctxt->returnValue = ret; + ctxt->version = version; } else if (!xmlStrncasecmp(BAD_CAST line, BAD_CAST"Content-Type:", 13)) { const xmlChar *charset, *last, *mime; cur += 13; @@ -745,9 +791,9 @@ xmlFree(ctxt->location); if (*cur == '/') { xmlChar *tmp_http = xmlStrdup(BAD_CAST "http://"); - xmlChar *tmp_loc = + xmlChar *tmp_loc = xmlStrcat(tmp_http, (const xmlChar *) ctxt->hostname); - ctxt->location = + ctxt->location = (char *) xmlStrcat (tmp_loc, (const xmlChar *) cur); } else { ctxt->location = xmlMemStrdup(cur); @@ -801,90 +847,99 @@ * Returns -1 in case of failure, the file descriptor number otherwise */ -static int +static SOCKET xmlNanoHTTPConnectAttempt(struct sockaddr *addr) { +#ifndef HAVE_POLL_H fd_set wfd; #ifdef _WINSOCKAPI_ fd_set xfd; #endif struct timeval tv; +#else /* !HAVE_POLL_H */ + struct pollfd p; +#endif /* !HAVE_POLL_H */ int status; + int addrlen; + SOCKET s; - + #ifdef SUPPORT_IP6 if (addr->sa_family == AF_INET6) { - s = socket (PF_INET6, SOCK_STREAM, IPPROTO_TCP); - addrlen = sizeof (struct sockaddr_in6); - } - else + s = socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP); + addrlen = sizeof(struct sockaddr_in6); + } else #endif { - s = socket (PF_INET, SOCK_STREAM, IPPROTO_TCP); - addrlen = sizeof (struct sockaddr_in); + s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); + addrlen = sizeof(struct sockaddr_in); } - if (s==-1) { + if (s == INVALID_SOCKET) { #ifdef DEBUG_HTTP - perror("socket"); + perror("socket"); #endif - __xmlIOErr(XML_FROM_HTTP, 0, "socket failed\n"); - return(-1); + __xmlIOErr(XML_FROM_HTTP, 0, "socket failed\n"); + return INVALID_SOCKET; } - #ifdef _WINSOCKAPI_ { - u_long one = 1; + u_long one = 1; - status = ioctlsocket(s, FIONBIO, &one) == SOCKET_ERROR ? -1 : 0; + status = ioctlsocket(s, FIONBIO, &one) == SOCKET_ERROR ? -1 : 0; } #else /* _WINSOCKAPI_ */ #if defined(VMS) { - int enable = 1; - status = ioctl(s, FIONBIO, &enable); + int enable = 1; + + status = ioctl(s, FIONBIO, &enable); } #else /* VMS */ -#if defined(__BEOS__) - { - bool noblock = true; - status = setsockopt(s, SOL_SOCKET, SO_NONBLOCK, &noblock, sizeof(noblock)); - } +#if defined(__BEOS__) && !defined(__HAIKU__) + { + bool noblock = true; + + status = + setsockopt(s, SOL_SOCKET, SO_NONBLOCK, &noblock, + sizeof(noblock)); + } #else /* __BEOS__ */ if ((status = fcntl(s, F_GETFL, 0)) != -1) { #ifdef O_NONBLOCK - status |= O_NONBLOCK; + status |= O_NONBLOCK; #else /* O_NONBLOCK */ #ifdef F_NDELAY - status |= F_NDELAY; + status |= F_NDELAY; #endif /* F_NDELAY */ #endif /* !O_NONBLOCK */ - status = fcntl(s, F_SETFL, status); + status = fcntl(s, F_SETFL, status); } if (status < 0) { #ifdef DEBUG_HTTP - perror("nonblocking"); + perror("nonblocking"); #endif - __xmlIOErr(XML_FROM_HTTP, 0, "error setting non-blocking IO\n"); - closesocket(s); - return(-1); + __xmlIOErr(XML_FROM_HTTP, 0, "error setting non-blocking IO\n"); + closesocket(s); + return INVALID_SOCKET; } #endif /* !__BEOS__ */ #endif /* !VMS */ #endif /* !_WINSOCKAPI_ */ - if (connect (s, addr, addrlen) == -1) { - switch (socket_errno()) { - case EINPROGRESS: - case EWOULDBLOCK: - break; - default: - __xmlIOErr(XML_FROM_HTTP, 0, "error connecting to HTTP server"); - closesocket(s); - return(-1); - } - } - + if (connect(s, addr, addrlen) == -1) { + switch (socket_errno()) { + case EINPROGRESS: + case EWOULDBLOCK: + break; + default: + __xmlIOErr(XML_FROM_HTTP, 0, + "error connecting to HTTP server"); + closesocket(s); + return INVALID_SOCKET; + } + } +#ifndef HAVE_POLL_H tv.tv_sec = timeout; tv.tv_usec = 0; @@ -892,63 +947,83 @@ #pragma warning(push) #pragma warning(disable: 4018) #endif +#ifndef _WINSOCKAPI_ + if (s > FD_SETSIZE) + return INVALID_SOCKET; +#endif FD_ZERO(&wfd); FD_SET(s, &wfd); -#ifdef _WINSOCKAPI_ +#ifdef _WINSOCKAPI_ FD_ZERO(&xfd); FD_SET(s, &xfd); - - switch(select(s+1, NULL, &wfd, &xfd, &tv)) + + switch (select(s + 1, NULL, &wfd, &xfd, &tv)) #else - switch(select(s+1, NULL, &wfd, NULL, &tv)) + switch (select(s + 1, NULL, &wfd, NULL, &tv)) #endif #ifdef _MSC_VER #pragma warning(pop) #endif + +#else /* !HAVE_POLL_H */ + p.fd = s; + p.events = POLLOUT; + switch (poll(&p, 1, timeout * 1000)) +#endif /* !HAVE_POLL_H */ + { - case 0: - /* Time out */ - __xmlIOErr(XML_FROM_HTTP, 0, "Connect attempt timed out"); - closesocket(s); - return(-1); - case -1: - /* Ermm.. ?? */ - __xmlIOErr(XML_FROM_HTTP, 0, "Connect failed"); - closesocket(s); - return(-1); + case 0: + /* Time out */ + __xmlIOErr(XML_FROM_HTTP, 0, "Connect attempt timed out"); + closesocket(s); + return INVALID_SOCKET; + case -1: + /* Ermm.. ?? */ + __xmlIOErr(XML_FROM_HTTP, 0, "Connect failed"); + closesocket(s); + return INVALID_SOCKET; } - if ( FD_ISSET(s, &wfd) +#ifndef HAVE_POLL_H + if (FD_ISSET(s, &wfd) #ifdef _WINSOCKAPI_ - || FD_ISSET(s, &xfd) + || FD_ISSET(s, &xfd) #endif - ) { - XML_SOCKLEN_T len; - len = sizeof(status); + ) +#else /* !HAVE_POLL_H */ + if (p.revents == POLLOUT) +#endif /* !HAVE_POLL_H */ + { + XML_SOCKLEN_T len; + + len = sizeof(status); #ifdef SO_ERROR - if (getsockopt(s, SOL_SOCKET, SO_ERROR, (char*)&status, &len) < 0 ) { - /* Solaris error code */ - __xmlIOErr(XML_FROM_HTTP, 0, "getsockopt failed\n"); - return (-1); - } -#endif - if ( status ) { - __xmlIOErr(XML_FROM_HTTP, 0, "Error connecting to remote host"); - closesocket(s); - errno = status; - return (-1); - } + if (getsockopt(s, SOL_SOCKET, SO_ERROR, (char *) &status, &len) < + 0) { + /* Solaris error code */ + __xmlIOErr(XML_FROM_HTTP, 0, "getsockopt failed\n"); + closesocket(s); + return INVALID_SOCKET; + } +#endif + if (status) { + __xmlIOErr(XML_FROM_HTTP, 0, + "Error connecting to remote host"); + closesocket(s); + errno = status; + return INVALID_SOCKET; + } } else { - /* pbm */ - __xmlIOErr(XML_FROM_HTTP, 0, "select failed\n"); - closesocket(s); - return (-1); + /* pbm */ + __xmlIOErr(XML_FROM_HTTP, 0, "select failed\n"); + closesocket(s); + return INVALID_SOCKET; } - - return(s); + + return (s); } - + /** * xmlNanoHTTPConnectHost: * @host: the host name @@ -960,7 +1035,7 @@ * Returns -1 in case of failure, the file descriptor number otherwise */ -static int +static SOCKET xmlNanoHTTPConnectHost(const char *host, int port) { struct hostent *h; @@ -973,7 +1048,7 @@ struct sockaddr_in6 sockin6; #endif int i; - int s; + SOCKET s; memset (&sockin, 0, sizeof(sockin)); #ifdef SUPPORT_IP6 @@ -1004,7 +1079,7 @@ status = getaddrinfo (host, NULL, &hints, &result); if (status) { __xmlIOErr(XML_FROM_HTTP, 0, "getaddrinfo failed\n"); - return (-1); + return INVALID_SOCKET; } for (res = result; res; res = res->ai_next) { @@ -1012,7 +1087,7 @@ if (res->ai_addrlen > sizeof(sockin)) { __xmlIOErr(XML_FROM_HTTP, 0, "address size mismatch\n"); freeaddrinfo (result); - return (-1); + return INVALID_SOCKET; } memcpy (&sockin, res->ai_addr, res->ai_addrlen); sockin.sin_port = htons (port); @@ -1022,7 +1097,7 @@ if (res->ai_addrlen > sizeof(sockin6)) { __xmlIOErr(XML_FROM_HTTP, 0, "address size mismatch\n"); freeaddrinfo (result); - return (-1); + return INVALID_SOCKET; } memcpy (&sockin6, res->ai_addr, res->ai_addrlen); sockin6.sin6_port = htons (port); @@ -1032,7 +1107,7 @@ continue; /* for */ s = xmlNanoHTTPConnectAttempt (addr); - if (s != -1) { + if (s != INVALID_SOCKET) { freeaddrinfo (result); return (s); } @@ -1047,7 +1122,7 @@ #endif #if !defined(HAVE_GETADDRINFO) || !defined(_WIN32) { - h = gethostbyname (host); + h = gethostbyname (GETHOSTBYNAME_ARG_CAST host); if (h == NULL) { /* @@ -1073,10 +1148,12 @@ "Non-recoverable errors: FORMERR, REFUSED, or NOTIMP."; break; +#ifdef NO_ADDRESS case NO_ADDRESS: h_err_txt = "Valid name, no data record of requested type."; break; +#endif default: h_err_txt = "No error text defined."; @@ -1086,7 +1163,7 @@ #else __xmlIOErr(XML_FROM_HTTP, 0, "Failed to resolve host"); #endif - return (-1); + return INVALID_SOCKET; } for (i = 0; h->h_addr_list[i]; i++) { @@ -1094,19 +1171,19 @@ /* A records (IPv4) */ if ((unsigned int) h->h_length > sizeof(ia)) { __xmlIOErr(XML_FROM_HTTP, 0, "address size mismatch\n"); - return (-1); + return INVALID_SOCKET; } memcpy (&ia, h->h_addr_list[i], h->h_length); sockin.sin_family = h->h_addrtype; sockin.sin_addr = ia; - sockin.sin_port = (u_short)htons ((unsigned short)port); + sockin.sin_port = (unsigned short)htons ((unsigned short)port); addr = (struct sockaddr *) &sockin; #ifdef SUPPORT_IP6 } else if (have_ipv6 () && (h->h_addrtype == AF_INET6)) { /* AAAA records (IPv6) */ if ((unsigned int) h->h_length > sizeof(ia6)) { __xmlIOErr(XML_FROM_HTTP, 0, "address size mismatch\n"); - return (-1); + return INVALID_SOCKET; } memcpy (&ia6, h->h_addr_list[i], h->h_length); sockin6.sin6_family = h->h_addrtype; @@ -1118,7 +1195,7 @@ break; /* for */ s = xmlNanoHTTPConnectAttempt (addr); - if (s != -1) + if (s != INVALID_SOCKET) return (s); } } @@ -1129,7 +1206,7 @@ "xmlNanoHTTPConnectHost: unable to connect to '%s'.\n", host); #endif - return (-1); + return INVALID_SOCKET; } @@ -1201,19 +1278,22 @@ #ifdef HAVE_ZLIB_H if (ctxt->usesGzip == 1) { if (ctxt->strm == NULL) return(0); - + ctxt->strm->next_out = dest; ctxt->strm->avail_out = len; + ctxt->strm->avail_in = ctxt->inptr - ctxt->inrptr; - do { - orig_avail_in = ctxt->strm->avail_in = ctxt->inptr - ctxt->inrptr - bytes_read; + while (ctxt->strm->avail_out > 0 && + (ctxt->strm->avail_in > 0 || xmlNanoHTTPRecv(ctxt) > 0)) { + orig_avail_in = ctxt->strm->avail_in = + ctxt->inptr - ctxt->inrptr - bytes_read; ctxt->strm->next_in = BAD_CAST (ctxt->inrptr + bytes_read); z_ret = inflate(ctxt->strm, Z_NO_FLUSH); bytes_read += orig_avail_in - ctxt->strm->avail_in; if (z_ret != Z_OK) break; - } while (ctxt->strm->avail_out > 0 && xmlNanoHTTPRecv(ctxt) > 0); + } ctxt->inrptr += bytes_read; return(len - ctxt->strm->avail_out); @@ -1270,30 +1350,30 @@ const char *headers, int ilen ) { xmlNanoHTTPCtxtPtr ctxt; char *bp, *p; - int blen, ret; - int head; + int blen; + SOCKET ret; int nbRedirects = 0; char *redirURL = NULL; #ifdef DEBUG_HTTP int xmt_bytes; #endif - + if (URL == NULL) return(NULL); if (method == NULL) method = "GET"; xmlNanoHTTPInit(); retry: - if (redirURL == NULL) + if (redirURL == NULL) { ctxt = xmlNanoHTTPNewCtxt(URL); - else { + if (ctxt == NULL) + return(NULL); + } else { ctxt = xmlNanoHTTPNewCtxt(redirURL); + if (ctxt == NULL) + return(NULL); ctxt->location = xmlMemStrdup(redirURL); } - if ( ctxt == NULL ) { - return ( NULL ); - } - if ((ctxt->protocol == NULL) || (strcmp(ctxt->protocol, "http"))) { __xmlIOErr(XML_FROM_HTTP, XML_HTTP_URL_SYNTAX, "Not a valid HTTP URI"); xmlNanoHTTPFreeCtxt(ctxt); @@ -1315,7 +1395,7 @@ blen = strlen(ctxt->hostname); ret = xmlNanoHTTPConnectHost(ctxt->hostname, ctxt->port); } - if (ret < 0) { + if (ret == INVALID_SOCKET) { xmlNanoHTTPFreeCtxt(ctxt); if (redirURL != NULL) xmlFree(redirURL); return(NULL); @@ -1330,13 +1410,23 @@ if (headers != NULL) blen += strlen(headers) + 2; if (contentType && *contentType) + /* reserve for string plus 'Content-Type: \r\n" */ blen += strlen(*contentType) + 16; if (ctxt->query != NULL) + /* 1 for '?' */ blen += strlen(ctxt->query) + 1; blen += strlen(method) + strlen(ctxt->path) + 24; #ifdef HAVE_ZLIB_H + /* reserve for possible 'Accept-Encoding: gzip' string */ blen += 23; #endif + if (ctxt->port != 80) { + /* reserve space for ':xxxxx', incl. potential proxy */ + if (proxy) + blen += 12; + else + blen += 6; + } bp = (char*)xmlMallocAtomic(blen); if ( bp == NULL ) { xmlNanoHTTPFreeCtxt( ctxt ); @@ -1348,13 +1438,13 @@ if (proxy) { if (ctxt->port != 80) { - p += snprintf( p, blen - (p - bp), "%s http://%s:%d%s", + p += snprintf( p, blen - (p - bp), "%s http://%s:%d%s", method, ctxt->hostname, - ctxt->port, ctxt->path ); + ctxt->port, ctxt->path ); } - else + else p += snprintf( p, blen - (p - bp), "%s http://%s%s", method, - ctxt->hostname, ctxt->path); + ctxt->hostname, ctxt->path); } else p += snprintf( p, blen - (p - bp), "%s %s", method, ctxt->path); @@ -1362,14 +1452,19 @@ if (ctxt->query != NULL) p += snprintf( p, blen - (p - bp), "?%s", ctxt->query); - p += snprintf( p, blen - (p - bp), " HTTP/1.0\r\nHost: %s\r\n", + if (ctxt->port == 80) { + p += snprintf( p, blen - (p - bp), " HTTP/1.0\r\nHost: %s\r\n", ctxt->hostname); + } else { + p += snprintf( p, blen - (p - bp), " HTTP/1.0\r\nHost: %s:%d\r\n", + ctxt->hostname, ctxt->port); + } #ifdef HAVE_ZLIB_H p += snprintf(p, blen - (p - bp), "Accept-Encoding: gzip\r\n"); #endif - if (contentType != NULL && *contentType) + if (contentType != NULL && *contentType) p += snprintf(p, blen - (p - bp), "Content-Type: %s\r\n", *contentType); if (headers != NULL) @@ -1408,7 +1503,7 @@ if ( xmt_bytes != ilen ) xmlGenericError( xmlGenericErrorContext, - "xmlNanoHTTPMethodRedir: Only %d of %d %s %s\n", + "xmlNanoHTTPMethodRedir: Only %d of %d %s %s\n", xmt_bytes, ilen, "bytes of HTTP content sent to host", ctxt->hostname ); @@ -1418,11 +1513,9 @@ } ctxt->state = XML_NANO_HTTP_READ; - head = 1; while ((p = xmlNanoHTTPReadLine(ctxt)) != NULL) { - if (head && (*p == 0)) { - head = 0; + if (*p == 0) { ctxt->content = ctxt->inrptr; xmlFree(p); break; @@ -1532,12 +1625,13 @@ char *buf = NULL; int fd; int len; - + int ret = 0; + if (filename == NULL) return(-1); ctxt = xmlNanoHTTPOpen(URL, contentType); if (ctxt == NULL) return(-1); - if (!strcmp(filename, "-")) + if (!strcmp(filename, "-")) fd = 0; else { fd = open(filename, O_CREAT | O_WRONLY, 00644); @@ -1553,12 +1647,14 @@ xmlNanoHTTPFetchContent( ctxt, &buf, &len ); if ( len > 0 ) { - write(fd, buf, len); + if (write(fd, buf, len) == -1) { + ret = -1; + } } xmlNanoHTTPClose(ctxt); close(fd); - return(0); + return(ret); } #ifdef LIBXML_OUTPUT_ENABLED @@ -1577,13 +1673,14 @@ char *buf = NULL; int fd; int len; - + int ret = 0; + if ((ctxt == NULL) || (filename == NULL)) return(-1); - if (!strcmp(filename, "-")) + if (!strcmp(filename, "-")) fd = 0; else { - fd = open(filename, O_CREAT | O_WRONLY); + fd = open(filename, O_CREAT | O_WRONLY, 0666); if (fd < 0) { xmlNanoHTTPClose(ctxt); return(-1); @@ -1592,12 +1689,14 @@ xmlNanoHTTPFetchContent( ctxt, &buf, &len ); if ( len > 0 ) { - write(fd, buf, len); + if (write(fd, buf, len) == -1) { + ret = -1; + } } xmlNanoHTTPClose(ctxt); close(fd); - return(0); + return(ret); } #endif /* LIBXML_OUTPUT_ENABLED */ @@ -1707,7 +1806,7 @@ * Check if all the content was read * * Returns 0 if all the content was read and available, returns - * -1 if received content length was less than specified or an error + * -1 if received content length was less than specified or an error * occurred. */ static int @@ -1761,7 +1860,7 @@ char *contentType = NULL; if (argv[1] != NULL) { - if (argv[2] != NULL) + if (argv[2] != NULL) xmlNanoHTTPFetch(argv[1], argv[2], &contentType); else xmlNanoHTTPFetch(argv[1], "-", &contentType); diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/nanohttp.in.h gettext-0.19.7/gnulib-local/lib/libxml/nanohttp.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/nanohttp.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/nanohttp.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -7,7 +7,7 @@ * * Author: Daniel Veillard */ - + #ifndef __NANO_HTTP_H__ #define __NANO_HTTP_H__ @@ -20,22 +20,22 @@ #endif XMLPUBFUN void XMLCALL xmlNanoHTTPInit (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNanoHTTPCleanup (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNanoHTTPScanProxy (const char *URL); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoHTTPFetch (const char *URL, const char *filename, char **contentType); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlNanoHTTPMethod (const char *URL, const char *method, const char *input, char **contentType, const char *headers, int ilen); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlNanoHTTPMethodRedir (const char *URL, const char *method, const char *input, @@ -43,16 +43,16 @@ char **redir, const char *headers, int ilen); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlNanoHTTPOpen (const char *URL, char **contentType); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlNanoHTTPOpenRedir (const char *URL, char **contentType, char **redir); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoHTTPReturnCode (void *ctx); -XMLPUBFUN const char * XMLCALL +XMLPUBFUN const char * XMLCALL xmlNanoHTTPAuthHeader (void *ctx); XMLPUBFUN const char * XMLCALL xmlNanoHTTPRedir (void *ctx); @@ -62,16 +62,16 @@ xmlNanoHTTPEncoding (void *ctx); XMLPUBFUN const char * XMLCALL xmlNanoHTTPMimeType (void *ctx); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoHTTPRead (void *ctx, void *dest, int len); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNanoHTTPSave (void *ctxt, const char *filename); #endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNanoHTTPClose (void *ctx); #ifdef __cplusplus } diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/parser.c gettext-0.19.7/gnulib-local/lib/libxml/parser.c --- gettext-0.19.6/gnulib-local/lib/libxml/parser.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/parser.c 2015-12-23 07:08:27.000000000 +0000 @@ -17,7 +17,7 @@ * parserInternals.c to reduce this file size. * As much as possible the functions are associated with their relative * production in the XML specification. A few productions defining the - * different ranges of character are actually implanted either in + * different ranges of character are actually implanted either in * parserInternals.h or parserInternals.c * The DOM tree build is realized from the default SAX callbacks in * the module SAX.c. @@ -40,6 +40,7 @@ #endif #include +#include #include #include #include @@ -79,36 +80,193 @@ #ifdef HAVE_ZLIB_H #include #endif +#ifdef HAVE_LZMA_H +#include +#endif + +#include "buf.h" +#include "enc.h" + +static void +xmlFatalErr(xmlParserCtxtPtr ctxt, xmlParserErrors error, const char *info); + +static xmlParserCtxtPtr +xmlCreateEntityParserCtxtInternal(const xmlChar *URL, const xmlChar *ID, + const xmlChar *base, xmlParserCtxtPtr pctx); + +static void xmlHaltParser(xmlParserCtxtPtr ctxt); + +/************************************************************************ + * * + * Arbitrary limits set in the parser. See XML_PARSE_HUGE * + * * + ************************************************************************/ + +#define XML_PARSER_BIG_ENTITY 1000 +#define XML_PARSER_LOT_ENTITY 5000 + +/* + * XML_PARSER_NON_LINEAR is the threshold where the ratio of parsed entity + * replacement over the size in byte of the input indicates that you have + * and eponential behaviour. A value of 10 correspond to at least 3 entity + * replacement per byte of input. + */ +#define XML_PARSER_NON_LINEAR 10 + +/* + * xmlParserEntityCheck + * + * Function to check non-linear entity expansion behaviour + * This is here to detect and stop exponential linear entity expansion + * This is not a limitation of the parser but a safety + * boundary feature. It can be disabled with the XML_PARSE_HUGE + * parser option. + */ +static int +xmlParserEntityCheck(xmlParserCtxtPtr ctxt, size_t size, + xmlEntityPtr ent, size_t replacement) +{ + size_t consumed = 0; + + if ((ctxt == NULL) || (ctxt->options & XML_PARSE_HUGE)) + return (0); + if (ctxt->lastError.code == XML_ERR_ENTITY_LOOP) + return (1); + + /* + * This may look absurd but is needed to detect + * entities problems + */ + if ((ent != NULL) && (ent->etype != XML_INTERNAL_PREDEFINED_ENTITY) && + (ent->content != NULL) && (ent->checked == 0)) { + unsigned long oldnbent = ctxt->nbentities; + xmlChar *rep; + + ent->checked = 1; + + rep = xmlStringDecodeEntities(ctxt, ent->content, + XML_SUBSTITUTE_REF, 0, 0, 0); + + ent->checked = (ctxt->nbentities - oldnbent + 1) * 2; + if (rep != NULL) { + if (xmlStrchr(rep, '<')) + ent->checked |= 1; + xmlFree(rep); + rep = NULL; + } + } + if (replacement != 0) { + if (replacement < XML_MAX_TEXT_LENGTH) + return(0); + + /* + * If the volume of entity copy reaches 10 times the + * amount of parsed data and over the large text threshold + * then that's very likely to be an abuse. + */ + if (ctxt->input != NULL) { + consumed = ctxt->input->consumed + + (ctxt->input->cur - ctxt->input->base); + } + consumed += ctxt->sizeentities; + + if (replacement < XML_PARSER_NON_LINEAR * consumed) + return(0); + } else if (size != 0) { + /* + * Do the check based on the replacement size of the entity + */ + if (size < XML_PARSER_BIG_ENTITY) + return(0); + + /* + * A limit on the amount of text data reasonably used + */ + if (ctxt->input != NULL) { + consumed = ctxt->input->consumed + + (ctxt->input->cur - ctxt->input->base); + } + consumed += ctxt->sizeentities; + + if ((size < XML_PARSER_NON_LINEAR * consumed) && + (ctxt->nbentities * 3 < XML_PARSER_NON_LINEAR * consumed)) + return (0); + } else if (ent != NULL) { + /* + * use the number of parsed entities in the replacement + */ + size = ent->checked / 2; + + /* + * The amount of data parsed counting entities size only once + */ + if (ctxt->input != NULL) { + consumed = ctxt->input->consumed + + (ctxt->input->cur - ctxt->input->base); + } + consumed += ctxt->sizeentities; + + /* + * Check the density of entities for the amount of data + * knowing an entity reference will take at least 3 bytes + */ + if (size * 3 < consumed * XML_PARSER_NON_LINEAR) + return (0); + } else { + /* + * strange we got no data for checking + */ + if (((ctxt->lastError.code != XML_ERR_UNDECLARED_ENTITY) && + (ctxt->lastError.code != XML_WAR_UNDECLARED_ENTITY)) || + (ctxt->nbentities <= 10000)) + return (0); + } + xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL); + return (1); +} /** * xmlParserMaxDepth: * - * arbitrary depth limit for the XML documents that we allow to - * process. This is not a limitation of the parser but a safety - * boundary feature. + * arbitrary depth limit for the XML documents that we allow to + * process. This is not a limitation of the parser but a safety + * boundary feature. It can be disabled with the XML_PARSE_HUGE + * parser option. */ -unsigned int xmlParserMaxDepth = 1024; +unsigned int xmlParserMaxDepth = 256; -#define SAX2 1 + +#define SAX2 1 #define XML_PARSER_BIG_BUFFER_SIZE 300 #define XML_PARSER_BUFFER_SIZE 100 - #define SAX_COMPAT_MODE BAD_CAST "SAX compatibility mode document" +/** + * XML_PARSER_CHUNK_SIZE + * + * When calling GROW that's the minimal amount of data + * the parser expected to have received. It is not a hard + * limit but an optimization when reading strings like Names + * It is not strictly needed as long as inputs available characters + * are followed by 0, which should be provided by the I/O level + */ +#define XML_PARSER_CHUNK_SIZE 100 + /* * List of XML prefixed PI allowed by W3C specs */ static const char *xmlW3CPIs[] = { "xml-stylesheet", + "xml-model", NULL }; /* DEPR void xmlParserHandleReference(xmlParserCtxtPtr ctxt); */ -xmlEntityPtr xmlParseStringPEReference(xmlParserCtxtPtr ctxt, - const xmlChar **str); +static xmlEntityPtr xmlParseStringPEReference(xmlParserCtxtPtr ctxt, + const xmlChar **str); static xmlParserErrors xmlParseExternalEntityPrivate(xmlDocPtr doc, xmlParserCtxtPtr oldctxt, @@ -116,6 +274,9 @@ void *user_data, int depth, const xmlChar *URL, const xmlChar *ID, xmlNodePtr *list); +static int +xmlCtxtUseOptionsInternal(xmlParserCtxtPtr ctxt, int options, + const char *encoding); #ifdef LIBXML_LEGACY_ENABLED static void xmlAddEntityReference(xmlEntityPtr ent, xmlNodePtr firstNode, @@ -126,9 +287,12 @@ xmlParseBalancedChunkMemoryInternal(xmlParserCtxtPtr oldctxt, const xmlChar *string, void *user_data, xmlNodePtr *lst); +static int +xmlLoadEntityContent(xmlParserCtxtPtr ctxt, xmlEntityPtr entity); + /************************************************************************ * * - * Some factorized error routines * + * Some factorized error routines * * * ************************************************************************/ @@ -149,14 +313,15 @@ return; if (ctxt != NULL) ctxt->errNo = XML_ERR_ATTRIBUTE_REDEFINED; + if (prefix == NULL) __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, - ctxt->errNo, XML_ERR_FATAL, NULL, 0, + XML_ERR_ATTRIBUTE_REDEFINED, XML_ERR_FATAL, NULL, 0, (const char *) localname, NULL, NULL, 0, 0, "Attribute %s redefined\n", localname); else __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, - ctxt->errNo, XML_ERR_FATAL, NULL, 0, + XML_ERR_ATTRIBUTE_REDEFINED, XML_ERR_FATAL, NULL, 0, (const char *) prefix, (const char *) localname, NULL, 0, 0, "Attribute %s:%s redefined\n", prefix, localname); @@ -179,193 +344,201 @@ xmlFatalErr(xmlParserCtxtPtr ctxt, xmlParserErrors error, const char *info) { const char *errmsg; + char errstr[129] = ""; if ((ctxt != NULL) && (ctxt->disableSAX != 0) && (ctxt->instate == XML_PARSER_EOF)) return; switch (error) { case XML_ERR_INVALID_HEX_CHARREF: - errmsg = "CharRef: invalid hexadecimal value\n"; + errmsg = "CharRef: invalid hexadecimal value"; break; case XML_ERR_INVALID_DEC_CHARREF: - errmsg = "CharRef: invalid decimal value\n"; + errmsg = "CharRef: invalid decimal value"; break; case XML_ERR_INVALID_CHARREF: - errmsg = "CharRef: invalid value\n"; + errmsg = "CharRef: invalid value"; break; case XML_ERR_INTERNAL_ERROR: errmsg = "internal error"; break; case XML_ERR_PEREF_AT_EOF: - errmsg = "PEReference at end of document\n"; + errmsg = "PEReference at end of document"; break; case XML_ERR_PEREF_IN_PROLOG: - errmsg = "PEReference in prolog\n"; + errmsg = "PEReference in prolog"; break; case XML_ERR_PEREF_IN_EPILOG: - errmsg = "PEReference in epilog\n"; + errmsg = "PEReference in epilog"; break; case XML_ERR_PEREF_NO_NAME: - errmsg = "PEReference: no name\n"; + errmsg = "PEReference: no name"; break; case XML_ERR_PEREF_SEMICOL_MISSING: - errmsg = "PEReference: expecting ';'\n"; + errmsg = "PEReference: expecting ';'"; break; case XML_ERR_ENTITY_LOOP: - errmsg = "Detected an entity reference loop\n"; + errmsg = "Detected an entity reference loop"; break; case XML_ERR_ENTITY_NOT_STARTED: - errmsg = "EntityValue: \" or ' expected\n"; + errmsg = "EntityValue: \" or ' expected"; break; case XML_ERR_ENTITY_PE_INTERNAL: - errmsg = "PEReferences forbidden in internal subset\n"; + errmsg = "PEReferences forbidden in internal subset"; break; case XML_ERR_ENTITY_NOT_FINISHED: - errmsg = "EntityValue: \" or ' expected\n"; + errmsg = "EntityValue: \" or ' expected"; break; case XML_ERR_ATTRIBUTE_NOT_STARTED: - errmsg = "AttValue: \" or ' expected\n"; + errmsg = "AttValue: \" or ' expected"; break; case XML_ERR_LT_IN_ATTRIBUTE: - errmsg = "Unescaped '<' not allowed in attributes values\n"; + errmsg = "Unescaped '<' not allowed in attributes values"; break; case XML_ERR_LITERAL_NOT_STARTED: - errmsg = "SystemLiteral \" or ' expected\n"; + errmsg = "SystemLiteral \" or ' expected"; break; case XML_ERR_LITERAL_NOT_FINISHED: - errmsg = "Unfinished System or Public ID \" or ' expected\n"; + errmsg = "Unfinished System or Public ID \" or ' expected"; break; case XML_ERR_MISPLACED_CDATA_END: - errmsg = "Sequence ']]>' not allowed in content\n"; + errmsg = "Sequence ']]>' not allowed in content"; break; case XML_ERR_URI_REQUIRED: - errmsg = "SYSTEM or PUBLIC, the URI is missing\n"; + errmsg = "SYSTEM or PUBLIC, the URI is missing"; break; case XML_ERR_PUBID_REQUIRED: - errmsg = "PUBLIC, the Public Identifier is missing\n"; + errmsg = "PUBLIC, the Public Identifier is missing"; break; case XML_ERR_HYPHEN_IN_COMMENT: - errmsg = "Comment must not contain '--' (double-hyphen)\n"; + errmsg = "Comment must not contain '--' (double-hyphen)"; break; case XML_ERR_PI_NOT_STARTED: - errmsg = "xmlParsePI : no target name\n"; + errmsg = "xmlParsePI : no target name"; break; case XML_ERR_RESERVED_XML_NAME: - errmsg = "Invalid PI name\n"; + errmsg = "Invalid PI name"; break; case XML_ERR_NOTATION_NOT_STARTED: - errmsg = "NOTATION: Name expected here\n"; + errmsg = "NOTATION: Name expected here"; break; case XML_ERR_NOTATION_NOT_FINISHED: - errmsg = "'>' required to close NOTATION declaration\n"; + errmsg = "'>' required to close NOTATION declaration"; break; case XML_ERR_VALUE_REQUIRED: - errmsg = "Entity value required\n"; + errmsg = "Entity value required"; break; case XML_ERR_URI_FRAGMENT: errmsg = "Fragment not allowed"; break; case XML_ERR_ATTLIST_NOT_STARTED: - errmsg = "'(' required to start ATTLIST enumeration\n"; + errmsg = "'(' required to start ATTLIST enumeration"; break; case XML_ERR_NMTOKEN_REQUIRED: - errmsg = "NmToken expected in ATTLIST enumeration\n"; + errmsg = "NmToken expected in ATTLIST enumeration"; break; case XML_ERR_ATTLIST_NOT_FINISHED: - errmsg = "')' required to finish ATTLIST enumeration\n"; + errmsg = "')' required to finish ATTLIST enumeration"; break; case XML_ERR_MIXED_NOT_STARTED: - errmsg = "MixedContentDecl : '|' or ')*' expected\n"; + errmsg = "MixedContentDecl : '|' or ')*' expected"; break; case XML_ERR_PCDATA_REQUIRED: - errmsg = "MixedContentDecl : '#PCDATA' expected\n"; + errmsg = "MixedContentDecl : '#PCDATA' expected"; break; case XML_ERR_ELEMCONTENT_NOT_STARTED: - errmsg = "ContentDecl : Name or '(' expected\n"; + errmsg = "ContentDecl : Name or '(' expected"; break; case XML_ERR_ELEMCONTENT_NOT_FINISHED: - errmsg = "ContentDecl : ',' '|' or ')' expected\n"; + errmsg = "ContentDecl : ',' '|' or ')' expected"; break; case XML_ERR_PEREF_IN_INT_SUBSET: errmsg = - "PEReference: forbidden within markup decl in internal subset\n"; + "PEReference: forbidden within markup decl in internal subset"; break; case XML_ERR_GT_REQUIRED: - errmsg = "expected '>'\n"; + errmsg = "expected '>'"; break; case XML_ERR_CONDSEC_INVALID: - errmsg = "XML conditional section '[' expected\n"; + errmsg = "XML conditional section '[' expected"; break; case XML_ERR_EXT_SUBSET_NOT_FINISHED: - errmsg = "Content error in the external subset\n"; + errmsg = "Content error in the external subset"; break; case XML_ERR_CONDSEC_INVALID_KEYWORD: errmsg = - "conditional section INCLUDE or IGNORE keyword expected\n"; + "conditional section INCLUDE or IGNORE keyword expected"; break; case XML_ERR_CONDSEC_NOT_FINISHED: - errmsg = "XML conditional section not closed\n"; + errmsg = "XML conditional section not closed"; break; case XML_ERR_XMLDECL_NOT_STARTED: - errmsg = "Text declaration '' expected\n"; + errmsg = "parsing XML declaration: '?>' expected"; break; case XML_ERR_EXT_ENTITY_STANDALONE: - errmsg = "external parsed entities cannot be standalone\n"; + errmsg = "external parsed entities cannot be standalone"; break; case XML_ERR_ENTITYREF_SEMICOL_MISSING: - errmsg = "EntityRef: expecting ';'\n"; + errmsg = "EntityRef: expecting ';'"; break; case XML_ERR_DOCTYPE_NOT_FINISHED: - errmsg = "DOCTYPE improperly terminated\n"; + errmsg = "DOCTYPE improperly terminated"; break; case XML_ERR_LTSLASH_REQUIRED: - errmsg = "EndTag: 'errNo = error; __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, error, - XML_ERR_FATAL, NULL, 0, info, NULL, NULL, 0, 0, errmsg, + XML_ERR_FATAL, NULL, 0, info, NULL, NULL, 0, 0, &errstr[0], info); if (ctxt != NULL) { ctxt->wellFormed = 0; @@ -392,7 +565,7 @@ if (ctxt != NULL) ctxt->errNo = error; __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, error, - XML_ERR_FATAL, NULL, 0, NULL, NULL, NULL, 0, 0, msg); + XML_ERR_FATAL, NULL, 0, NULL, NULL, NULL, 0, 0, "%s", msg); if (ctxt != NULL) { ctxt->wellFormed = 0; if (ctxt->recovery == 0) @@ -415,20 +588,28 @@ const char *msg, const xmlChar *str1, const xmlChar *str2) { xmlStructuredErrorFunc schannel = NULL; - + if ((ctxt != NULL) && (ctxt->disableSAX != 0) && (ctxt->instate == XML_PARSER_EOF)) return; if ((ctxt != NULL) && (ctxt->sax != NULL) && (ctxt->sax->initialized == XML_SAX2_MAGIC)) schannel = ctxt->sax->serror; - __xmlRaiseError(schannel, + if (ctxt != NULL) { + __xmlRaiseError(schannel, (ctxt->sax) ? ctxt->sax->warning : NULL, ctxt->userData, ctxt, NULL, XML_FROM_PARSER, error, XML_ERR_WARNING, NULL, 0, (const char *) str1, (const char *) str2, NULL, 0, 0, msg, (const char *) str1, (const char *) str2); + } else { + __xmlRaiseError(schannel, NULL, NULL, + ctxt, NULL, XML_FROM_PARSER, error, + XML_ERR_WARNING, NULL, 0, + (const char *) str1, (const char *) str2, NULL, 0, 0, + msg, (const char *) str1, (const char *) str2); + } } /** @@ -442,7 +623,7 @@ */ static void xmlValidityError(xmlParserCtxtPtr ctxt, xmlParserErrors error, - const char *msg, const xmlChar *str1) + const char *msg, const xmlChar *str1, const xmlChar *str2) { xmlStructuredErrorFunc schannel = NULL; @@ -454,14 +635,20 @@ if ((ctxt->sax != NULL) && (ctxt->sax->initialized == XML_SAX2_MAGIC)) schannel = ctxt->sax->serror; } - __xmlRaiseError(schannel, + if (ctxt != NULL) { + __xmlRaiseError(schannel, ctxt->vctxt.error, ctxt->vctxt.userData, ctxt, NULL, XML_FROM_DTD, error, XML_ERR_ERROR, NULL, 0, (const char *) str1, - NULL, NULL, 0, 0, - msg, (const char *) str1); - if (ctxt != NULL) { + (const char *) str2, NULL, 0, 0, + msg, (const char *) str1, (const char *) str2); ctxt->valid = 0; + } else { + __xmlRaiseError(schannel, NULL, NULL, + ctxt, NULL, XML_FROM_DTD, error, + XML_ERR_ERROR, NULL, 0, (const char *) str1, + (const char *) str2, NULL, 0, 0, + msg, (const char *) str1, (const char *) str2); } } @@ -506,7 +693,7 @@ */ static void xmlFatalErrMsgStrIntStr(xmlParserCtxtPtr ctxt, xmlParserErrors error, - const char *msg, const xmlChar *str1, int val, + const char *msg, const xmlChar *str1, int val, const xmlChar *str2) { if ((ctxt != NULL) && (ctxt->disableSAX != 0) && @@ -607,9 +794,34 @@ ctxt->nsWellFormed = 0; } +/** + * xmlNsWarn + * @ctxt: an XML parser context + * @error: the error number + * @msg: the message + * @info1: extra information string + * @info2: extra information string + * + * Handle a namespace warning error + */ +static void +xmlNsWarn(xmlParserCtxtPtr ctxt, xmlParserErrors error, + const char *msg, + const xmlChar * info1, const xmlChar * info2, + const xmlChar * info3) +{ + if ((ctxt != NULL) && (ctxt->disableSAX != 0) && + (ctxt->instate == XML_PARSER_EOF)) + return; + __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_NAMESPACE, error, + XML_ERR_WARNING, NULL, 0, (const char *) info1, + (const char *) info2, (const char *) info3, 0, 0, msg, + info1, info2, info3); +} + /************************************************************************ * * - * Library wide options * + * Library wide options * * * ************************************************************************/ @@ -806,13 +1018,25 @@ return(1); #else return(0); -#endif +#endif case XML_WITH_ZLIB: #ifdef LIBXML_ZLIB_ENABLED return(1); #else return(0); #endif + case XML_WITH_LZMA: +#ifdef LIBXML_LZMA_ENABLED + return(1); +#else + return(0); +#endif + case XML_WITH_ICU: +#ifdef LIBXML_ICU_ENABLED + return(1); +#else + return(0); +#endif default: break; } @@ -821,7 +1045,7 @@ /************************************************************************ * * - * SAX2 defaulted attributes handling * + * SAX2 defaulted attributes handling * * * ************************************************************************/ @@ -845,8 +1069,8 @@ ctxt->str_xml = xmlDictLookup(ctxt->dict, BAD_CAST "xml", 3); ctxt->str_xmlns = xmlDictLookup(ctxt->dict, BAD_CAST "xmlns", 5); ctxt->str_xml_ns = xmlDictLookup(ctxt->dict, XML_XML_NAMESPACE, 36); - if ((ctxt->str_xml==NULL) || (ctxt->str_xmlns==NULL) || - (ctxt->str_xml_ns == NULL)) { + if ((ctxt->str_xml==NULL) || (ctxt->str_xmlns==NULL) || + (ctxt->str_xml_ns == NULL)) { xmlErrMemory(ctxt, NULL); } } @@ -856,10 +1080,108 @@ struct _xmlDefAttrs { int nbAttrs; /* number of defaulted attributes on that element */ int maxAttrs; /* the size of the array */ - const xmlChar *values[4]; /* array of localname/prefix/values */ + const xmlChar *values[5]; /* array of localname/prefix/values/external */ }; /** + * xmlAttrNormalizeSpace: + * @src: the source string + * @dst: the target string + * + * Normalize the space in non CDATA attribute values: + * If the attribute type is not CDATA, then the XML processor MUST further + * process the normalized attribute value by discarding any leading and + * trailing space (#x20) characters, and by replacing sequences of space + * (#x20) characters by a single space (#x20) character. + * Note that the size of dst need to be at least src, and if one doesn't need + * to preserve dst (and it doesn't come from a dictionary or read-only) then + * passing src as dst is just fine. + * + * Returns a pointer to the normalized value (dst) or NULL if no conversion + * is needed. + */ +static xmlChar * +xmlAttrNormalizeSpace(const xmlChar *src, xmlChar *dst) +{ + if ((src == NULL) || (dst == NULL)) + return(NULL); + + while (*src == 0x20) src++; + while (*src != 0) { + if (*src == 0x20) { + while (*src == 0x20) src++; + if (*src != 0) + *dst++ = 0x20; + } else { + *dst++ = *src++; + } + } + *dst = 0; + if (dst == src) + return(NULL); + return(dst); +} + +/** + * xmlAttrNormalizeSpace2: + * @src: the source string + * + * Normalize the space in non CDATA attribute values, a slightly more complex + * front end to avoid allocation problems when running on attribute values + * coming from the input. + * + * Returns a pointer to the normalized value (dst) or NULL if no conversion + * is needed. + */ +static const xmlChar * +xmlAttrNormalizeSpace2(xmlParserCtxtPtr ctxt, xmlChar *src, int *len) +{ + int i; + int remove_head = 0; + int need_realloc = 0; + const xmlChar *cur; + + if ((ctxt == NULL) || (src == NULL) || (len == NULL)) + return(NULL); + i = *len; + if (i <= 0) + return(NULL); + + cur = src; + while (*cur == 0x20) { + cur++; + remove_head++; + } + while (*cur != 0) { + if (*cur == 0x20) { + cur++; + if ((*cur == 0x20) || (*cur == 0)) { + need_realloc = 1; + break; + } + } else + cur++; + } + if (need_realloc) { + xmlChar *ret; + + ret = xmlStrndup(src + remove_head, i - remove_head + 1); + if (ret == NULL) { + xmlErrMemory(ctxt, NULL); + return(NULL); + } + xmlAttrNormalizeSpace(ret, ret); + *len = (int) strlen((const char *)ret); + return(ret); + } else if (remove_head) { + *len -= remove_head; + memmove(src, src + remove_head, 1 + *len); + return(src); + } + return(NULL); +} + +/** * xmlAddDefAttrs: * @ctxt: an XML parser context * @fullname: the element fullname @@ -878,6 +1200,14 @@ const xmlChar *name; const xmlChar *prefix; + /* + * Allows to detect attribute redefinitions + */ + if (ctxt->attsSpecial != NULL) { + if (xmlHashLookup2(ctxt->attsSpecial, fullname, fullattr) != NULL) + return; + } + if (ctxt->attsDefault == NULL) { ctxt->attsDefault = xmlHashCreateDict(10, ctxt->dict); if (ctxt->attsDefault == NULL) @@ -903,22 +1233,30 @@ defaults = xmlHashLookup2(ctxt->attsDefault, name, prefix); if (defaults == NULL) { defaults = (xmlDefAttrsPtr) xmlMalloc(sizeof(xmlDefAttrs) + - (4 * 4) * sizeof(const xmlChar *)); + (4 * 5) * sizeof(const xmlChar *)); if (defaults == NULL) goto mem_error; defaults->nbAttrs = 0; defaults->maxAttrs = 4; - xmlHashUpdateEntry2(ctxt->attsDefault, name, prefix, defaults, NULL); + if (xmlHashUpdateEntry2(ctxt->attsDefault, name, prefix, + defaults, NULL) < 0) { + xmlFree(defaults); + goto mem_error; + } } else if (defaults->nbAttrs >= defaults->maxAttrs) { xmlDefAttrsPtr temp; temp = (xmlDefAttrsPtr) xmlRealloc(defaults, sizeof(xmlDefAttrs) + - (2 * defaults->maxAttrs * 4) * sizeof(const xmlChar *)); + (2 * defaults->maxAttrs * 5) * sizeof(const xmlChar *)); if (temp == NULL) goto mem_error; defaults = temp; defaults->maxAttrs *= 2; - xmlHashUpdateEntry2(ctxt->attsDefault, name, prefix, defaults, NULL); + if (xmlHashUpdateEntry2(ctxt->attsDefault, name, prefix, + defaults, NULL) < 0) { + xmlFree(defaults); + goto mem_error; + } } /* @@ -934,13 +1272,17 @@ prefix = xmlDictLookup(ctxt->dict, fullattr, len); } - defaults->values[4 * defaults->nbAttrs] = name; - defaults->values[4 * defaults->nbAttrs + 1] = prefix; + defaults->values[5 * defaults->nbAttrs] = name; + defaults->values[5 * defaults->nbAttrs + 1] = prefix; /* intern the string and precompute the end */ len = xmlStrlen(value); value = xmlDictLookup(ctxt->dict, value, len); - defaults->values[4 * defaults->nbAttrs + 2] = value; - defaults->values[4 * defaults->nbAttrs + 3] = value + len; + defaults->values[5 * defaults->nbAttrs + 2] = value; + defaults->values[5 * defaults->nbAttrs + 3] = value + len; + if (ctxt->external) + defaults->values[5 * defaults->nbAttrs + 4] = BAD_CAST "external"; + else + defaults->values[5 * defaults->nbAttrs + 4] = NULL; defaults->nbAttrs++; return; @@ -957,7 +1299,7 @@ * @fullattr: the attribute fullname * @type: the attribute type * - * Register that this attribute is not CDATA + * Register this attribute type */ static void xmlAddSpecialAttr(xmlParserCtxtPtr ctxt, @@ -971,6 +1313,9 @@ goto mem_error; } + if (xmlHashLookup2(ctxt->attsSpecial, fullname, fullattr) != NULL) + return; + xmlHashAddEntry2(ctxt->attsSpecial, fullname, fullattr, (void *) (long) type); return; @@ -981,6 +1326,45 @@ } /** + * xmlCleanSpecialAttrCallback: + * + * Removes CDATA attributes from the special attribute table + */ +static void +xmlCleanSpecialAttrCallback(void *payload, void *data, + const xmlChar *fullname, const xmlChar *fullattr, + const xmlChar *unused ATTRIBUTE_UNUSED) { + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) data; + + if (((long) payload) == XML_ATTRIBUTE_CDATA) { + xmlHashRemoveEntry2(ctxt->attsSpecial, fullname, fullattr, NULL); + } +} + +/** + * xmlCleanSpecialAttr: + * @ctxt: an XML parser context + * + * Trim the list of attributes defined to remove all those of type + * CDATA as they are not special. This call should be done when finishing + * to parse the DTD and before starting to parse the document root. + */ +static void +xmlCleanSpecialAttr(xmlParserCtxtPtr ctxt) +{ + if (ctxt->attsSpecial == NULL) + return; + + xmlHashScanFull(ctxt->attsSpecial, xmlCleanSpecialAttrCallback, ctxt); + + if (xmlHashSize(ctxt->attsSpecial) == 0) { + xmlHashFree(ctxt->attsSpecial, NULL); + ctxt->attsSpecial = NULL; + } + return; +} + +/** * xmlCheckLanguageID: * @lang: pointer to the string value * @@ -996,70 +1380,192 @@ * [37] UserCode ::= ('x' | 'X') '-' ([a-z] | [A-Z])+ * [38] Subcode ::= ([a-z] | [A-Z])+ * + * The current REC reference the sucessors of RFC 1766, currently 5646 + * + * http://www.rfc-editor.org/rfc/rfc5646.txt + * langtag = language + * ["-" script] + * ["-" region] + * *("-" variant) + * *("-" extension) + * ["-" privateuse] + * language = 2*3ALPHA ; shortest ISO 639 code + * ["-" extlang] ; sometimes followed by + * ; extended language subtags + * / 4ALPHA ; or reserved for future use + * / 5*8ALPHA ; or registered language subtag + * + * extlang = 3ALPHA ; selected ISO 639 codes + * *2("-" 3ALPHA) ; permanently reserved + * + * script = 4ALPHA ; ISO 15924 code + * + * region = 2ALPHA ; ISO 3166-1 code + * / 3DIGIT ; UN M.49 code + * + * variant = 5*8alphanum ; registered variants + * / (DIGIT 3alphanum) + * + * extension = singleton 1*("-" (2*8alphanum)) + * + * ; Single alphanumerics + * ; "x" reserved for private use + * singleton = DIGIT ; 0 - 9 + * / %x41-57 ; A - W + * / %x59-5A ; Y - Z + * / %x61-77 ; a - w + * / %x79-7A ; y - z + * + * it sounds right to still allow Irregular i-xxx IANA and user codes too + * The parser below doesn't try to cope with extension or privateuse + * that could be added but that's not interoperable anyway + * * Returns 1 if correct 0 otherwise **/ int xmlCheckLanguageID(const xmlChar * lang) { - const xmlChar *cur = lang; + const xmlChar *cur = lang, *nxt; if (cur == NULL) return (0); if (((cur[0] == 'i') && (cur[1] == '-')) || - ((cur[0] == 'I') && (cur[1] == '-'))) { - /* - * IANA code - */ - cur += 2; - while (((cur[0] >= 'A') && (cur[0] <= 'Z')) || /* non input consuming */ - ((cur[0] >= 'a') && (cur[0] <= 'z'))) - cur++; - } else if (((cur[0] == 'x') && (cur[1] == '-')) || - ((cur[0] == 'X') && (cur[1] == '-'))) { + ((cur[0] == 'I') && (cur[1] == '-')) || + ((cur[0] == 'x') && (cur[1] == '-')) || + ((cur[0] == 'X') && (cur[1] == '-'))) { /* - * User code + * Still allow IANA code and user code which were coming + * from the previous version of the XML-1.0 specification + * it's deprecated but we should not fail */ cur += 2; - while (((cur[0] >= 'A') && (cur[0] <= 'Z')) || /* non input consuming */ + while (((cur[0] >= 'A') && (cur[0] <= 'Z')) || ((cur[0] >= 'a') && (cur[0] <= 'z'))) cur++; - } else if (((cur[0] >= 'A') && (cur[0] <= 'Z')) || - ((cur[0] >= 'a') && (cur[0] <= 'z'))) { + return(cur[0] == 0); + } + nxt = cur; + while (((nxt[0] >= 'A') && (nxt[0] <= 'Z')) || + ((nxt[0] >= 'a') && (nxt[0] <= 'z'))) + nxt++; + if (nxt - cur >= 4) { /* - * ISO639 + * Reserved */ - cur++; - if (((cur[0] >= 'A') && (cur[0] <= 'Z')) || - ((cur[0] >= 'a') && (cur[0] <= 'z'))) - cur++; - else - return (0); - } else - return (0); - while (cur[0] != 0) { /* non input consuming */ - if (cur[0] != '-') - return (0); - cur++; - if (((cur[0] >= 'A') && (cur[0] <= 'Z')) || - ((cur[0] >= 'a') && (cur[0] <= 'z'))) - cur++; - else - return (0); - while (((cur[0] >= 'A') && (cur[0] <= 'Z')) || /* non input consuming */ - ((cur[0] >= 'a') && (cur[0] <= 'z'))) - cur++; + if ((nxt - cur > 8) || (nxt[0] != 0)) + return(0); + return(1); } + if (nxt - cur < 2) + return(0); + /* we got an ISO 639 code */ + if (nxt[0] == 0) + return(1); + if (nxt[0] != '-') + return(0); + + nxt++; + cur = nxt; + /* now we can have extlang or script or region or variant */ + if ((nxt[0] >= '0') && (nxt[0] <= '9')) + goto region_m49; + + while (((nxt[0] >= 'A') && (nxt[0] <= 'Z')) || + ((nxt[0] >= 'a') && (nxt[0] <= 'z'))) + nxt++; + if (nxt - cur == 4) + goto script; + if (nxt - cur == 2) + goto region; + if ((nxt - cur >= 5) && (nxt - cur <= 8)) + goto variant; + if (nxt - cur != 3) + return(0); + /* we parsed an extlang */ + if (nxt[0] == 0) + return(1); + if (nxt[0] != '-') + return(0); + + nxt++; + cur = nxt; + /* now we can have script or region or variant */ + if ((nxt[0] >= '0') && (nxt[0] <= '9')) + goto region_m49; + + while (((nxt[0] >= 'A') && (nxt[0] <= 'Z')) || + ((nxt[0] >= 'a') && (nxt[0] <= 'z'))) + nxt++; + if (nxt - cur == 2) + goto region; + if ((nxt - cur >= 5) && (nxt - cur <= 8)) + goto variant; + if (nxt - cur != 4) + return(0); + /* we parsed a script */ +script: + if (nxt[0] == 0) + return(1); + if (nxt[0] != '-') + return(0); + + nxt++; + cur = nxt; + /* now we can have region or variant */ + if ((nxt[0] >= '0') && (nxt[0] <= '9')) + goto region_m49; + + while (((nxt[0] >= 'A') && (nxt[0] <= 'Z')) || + ((nxt[0] >= 'a') && (nxt[0] <= 'z'))) + nxt++; + + if ((nxt - cur >= 5) && (nxt - cur <= 8)) + goto variant; + if (nxt - cur != 2) + return(0); + /* we parsed a region */ +region: + if (nxt[0] == 0) + return(1); + if (nxt[0] != '-') + return(0); + + nxt++; + cur = nxt; + /* now we can just have a variant */ + while (((nxt[0] >= 'A') && (nxt[0] <= 'Z')) || + ((nxt[0] >= 'a') && (nxt[0] <= 'z'))) + nxt++; + + if ((nxt - cur < 5) || (nxt - cur > 8)) + return(0); + + /* we parsed a variant */ +variant: + if (nxt[0] == 0) + return(1); + if (nxt[0] != '-') + return(0); + /* extensions and private use subtags not checked */ return (1); + +region_m49: + if (((nxt[1] >= '0') && (nxt[1] <= '9')) && + ((nxt[2] >= '0') && (nxt[2] <= '9'))) { + nxt += 3; + goto region; + } + return(0); } /************************************************************************ * * - * Parser stacks related functions and macros * + * Parser stacks related functions and macros * * * ************************************************************************/ -xmlEntityPtr xmlParseStringEntityRef(xmlParserCtxtPtr ctxt, - const xmlChar ** str); +static xmlEntityPtr xmlParseStringEntityRef(xmlParserCtxtPtr ctxt, + const xmlChar ** str); #ifdef SAX2 /** @@ -1078,7 +1584,7 @@ { if (ctxt->options & XML_PARSE_NSCLEAN) { int i; - for (i = 0;i < ctxt->nsNr;i += 2) { + for (i = ctxt->nsNr - 2;i >= 0;i -= 2) { if (ctxt->nsTab[i] == prefix) { /* in scope */ if (ctxt->nsTab[i + 1] == URL) @@ -1099,15 +1605,16 @@ return (-1); } } else if (ctxt->nsNr >= ctxt->nsMax) { + const xmlChar ** tmp; ctxt->nsMax *= 2; - ctxt->nsTab = (const xmlChar **) - xmlRealloc((char *) ctxt->nsTab, - ctxt->nsMax * sizeof(ctxt->nsTab[0])); - if (ctxt->nsTab == NULL) { + tmp = (const xmlChar **) xmlRealloc((char *) ctxt->nsTab, + ctxt->nsMax * sizeof(ctxt->nsTab[0])); + if (tmp == NULL) { xmlErrMemory(ctxt, NULL); ctxt->nsMax /= 2; return (-1); } + ctxt->nsTab = tmp; } ctxt->nsTab[ctxt->nsNr++] = prefix; ctxt->nsTab[ctxt->nsNr++] = URL; @@ -1134,7 +1641,7 @@ } if (ctxt->nsNr <= 0) return (0); - + for (i = 0;i < nr;i++) { ctxt->nsNr--; ctxt->nsTab[ctxt->nsNr] = NULL; @@ -1184,13 +1691,13 @@ * * Pushes a new parser input on top of the input stack * - * Returns 0 in case of error, the index in the stack otherwise + * Returns -1 in case of error, the index in the stack otherwise */ int inputPush(xmlParserCtxtPtr ctxt, xmlParserInputPtr value) { if ((ctxt == NULL) || (value == NULL)) - return(0); + return(-1); if (ctxt->inputNr >= ctxt->inputMax) { ctxt->inputMax *= 2; ctxt->inputTab = @@ -1199,7 +1706,10 @@ sizeof(ctxt->inputTab[0])); if (ctxt->inputTab == NULL) { xmlErrMemory(ctxt, NULL); - return (0); + xmlFreeInputStream(value); + ctxt->inputMax /= 2; + value = NULL; + return (-1); } } ctxt->inputTab[ctxt->inputNr] = value; @@ -1239,7 +1749,7 @@ * * Pushes a new element node on top of the node stack * - * Returns 0 in case of error, the index in the stack otherwise + * Returns -1 in case of error, the index in the stack otherwise */ int nodePush(xmlParserCtxtPtr ctxt, xmlNodePtr value) @@ -1253,22 +1763,24 @@ sizeof(ctxt->nodeTab[0])); if (tmp == NULL) { xmlErrMemory(ctxt, NULL); - return (0); + return (-1); } ctxt->nodeTab = tmp; ctxt->nodeMax *= 2; } - if (((unsigned int) ctxt->nodeNr) > xmlParserMaxDepth) { + if ((((unsigned int) ctxt->nodeNr) > xmlParserMaxDepth) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { xmlFatalErrMsgInt(ctxt, XML_ERR_INTERNAL_ERROR, - "Excessive depth in document: change xmlParserMaxDepth = %d\n", + "Excessive depth in document: %d use XML_PARSE_HUGE option\n", xmlParserMaxDepth); - ctxt->instate = XML_PARSER_EOF; - return(0); + xmlHaltParser(ctxt); + return(-1); } ctxt->nodeTab[ctxt->nodeNr] = value; ctxt->node = value; return (ctxt->nodeNr++); } + /** * nodePop: * @ctxt: an XML parser context @@ -1384,15 +1896,14 @@ if (ctxt->nameNr >= ctxt->nameMax) { const xmlChar * *tmp; - ctxt->nameMax *= 2; tmp = (const xmlChar * *) xmlRealloc((xmlChar * *)ctxt->nameTab, - ctxt->nameMax * + ctxt->nameMax * 2 * sizeof(ctxt->nameTab[0])); if (tmp == NULL) { - ctxt->nameMax /= 2; goto mem_error; } ctxt->nameTab = tmp; + ctxt->nameMax *= 2; } ctxt->nameTab[ctxt->nameNr] = value; ctxt->name = value; @@ -1428,13 +1939,17 @@ static int spacePush(xmlParserCtxtPtr ctxt, int val) { if (ctxt->spaceNr >= ctxt->spaceMax) { + int *tmp; + ctxt->spaceMax *= 2; - ctxt->spaceTab = (int *) xmlRealloc(ctxt->spaceTab, - ctxt->spaceMax * sizeof(ctxt->spaceTab[0])); - if (ctxt->spaceTab == NULL) { + tmp = (int *) xmlRealloc(ctxt->spaceTab, + ctxt->spaceMax * sizeof(ctxt->spaceTab[0])); + if (tmp == NULL) { xmlErrMemory(ctxt, NULL); - return(0); + ctxt->spaceMax /=2; + return(-1); } + ctxt->spaceTab = tmp; } ctxt->spaceTab[ctxt->spaceNr] = val; ctxt->space = &ctxt->spaceTab[ctxt->spaceNr]; @@ -1474,7 +1989,7 @@ * to compare on ASCII based substring. * SKIP(n) Skip n xmlChar, and must also be used only to skip ASCII defined * strings without newlines within the parser. - * NEXT1(l) Skip 1 xmlChar, and must also be used only to skip 1 non-newline ASCII + * NEXT1(l) Skip 1 xmlChar, and must also be used only to skip 1 non-newline ASCII * defined char within the parser. * Clean macros, not dependent of an ASCII context, expect UTF-8 encoding * @@ -1523,10 +2038,10 @@ #define SKIPL(val) do { \ int skipl; \ for(skipl=0; skiplinput->cur) == '\n') { \ + if (*(ctxt->input->cur) == '\n') { \ ctxt->input->line++; ctxt->input->col = 1; \ - } else ctxt->input->col++; \ - ctxt->nbChars++; \ + } else ctxt->input->col++; \ + ctxt->nbChars++; \ ctxt->input->cur++; \ } \ if (*ctxt->input->cur == '%') xmlParserHandlePEReference(ctxt); \ @@ -1552,8 +2067,25 @@ xmlGROW (ctxt); static void xmlGROW (xmlParserCtxtPtr ctxt) { + unsigned long curEnd = ctxt->input->end - ctxt->input->cur; + unsigned long curBase = ctxt->input->cur - ctxt->input->base; + + if (((curEnd > (unsigned long) XML_MAX_LOOKUP_LIMIT) || + (curBase > (unsigned long) XML_MAX_LOOKUP_LIMIT)) && + ((ctxt->input->buf) && (ctxt->input->buf->readcallback != (xmlInputReadCallback) xmlNop)) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_INTERNAL_ERROR, "Huge input lookup"); + xmlHaltParser(ctxt); + return; + } xmlParserInputGrow(ctxt->input, INPUT_CHUNK); - if ((*ctxt->input->cur == 0) && + if ((ctxt->input->cur > ctxt->input->end) || + (ctxt->input->cur < ctxt->input->base)) { + xmlHaltParser(ctxt); + xmlFatalErr(ctxt, XML_ERR_INTERNAL_ERROR, "cur index out of bound"); + return; + } + if ((ctxt->input->cur != NULL) && (*ctxt->input->cur == 0) && (xmlParserInputGrow(ctxt->input, INPUT_CHUNK) <= 0)) xmlPopInput(ctxt); } @@ -1612,6 +2144,8 @@ while (IS_BLANK_CH(*cur)) { if (*cur == '\n') { ctxt->input->line++; ctxt->input->col = 1; + } else { + ctxt->input->col++; } cur++; res++; @@ -1626,7 +2160,8 @@ int cur; do { cur = CUR; - while (IS_BLANK_CH(cur)) { /* CHECKED tstblanks.xml */ + while ((IS_BLANK_CH(cur) && /* CHECKED tstblanks.xml */ + (ctxt->instate != XML_PARSER_EOF))) { NEXT; cur = CUR; res++; @@ -1640,7 +2175,8 @@ * Need to handle support of entities branching here */ if (*ctxt->input->cur == '%') xmlParserHandlePEReference(ctxt); - } while (IS_BLANK(cur)); /* CHECKED tstblanks.xml */ + } while ((IS_BLANK(cur)) && /* CHECKED tstblanks.xml */ + (ctxt->instate != XML_PARSER_EOF)); } return(res); } @@ -1680,10 +2216,12 @@ * * xmlPushInput: switch to a new input stream which is stacked on top * of the previous one(s). + * Returns -1 in case of error or the index in the input stack */ -void +int xmlPushInput(xmlParserCtxtPtr ctxt, xmlParserInputPtr input) { - if (input == NULL) return; + int ret; + if (input == NULL) return(-1); if (xmlParserDebugEntities) { if ((ctxt->input != NULL) && (ctxt->input->filename)) @@ -1693,8 +2231,11 @@ xmlGenericError(xmlGenericErrorContext, "Pushing input %d : %.30s\n", ctxt->inputNr+1, input->cur); } - inputPush(ctxt, input); + ret = inputPush(ctxt, input); + if (ctxt->instate == XML_PARSER_EOF) + return(-1); GROW; + return(ret); } /** @@ -1708,7 +2249,7 @@ * * [ WFC: Legal Character ] * Characters referred to using character references must match the - * production for Char. + * production for Char. * * Returns the value parsed (as an int), 0 in case of error */ @@ -1729,8 +2270,10 @@ if (count++ > 20) { count = 0; GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(0); } - if ((RAW >= '0') && (RAW <= '9')) + if ((RAW >= '0') && (RAW <= '9')) val = val * 16 + (CUR - '0'); else if ((RAW >= 'a') && (RAW <= 'f') && (count < 20)) val = val * 16 + (CUR - 'a') + 10; @@ -1760,8 +2303,10 @@ if (count++ > 20) { count = 0; GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(0); } - if ((RAW >= '0') && (RAW <= '9')) + if ((RAW >= '0') && (RAW <= '9')) val = val * 10 + (CUR - '0'); else { xmlFatalErr(ctxt, XML_ERR_INVALID_DEC_CHARREF, NULL); @@ -1787,7 +2332,7 @@ /* * [ WFC: Legal Character ] * Characters referred to using character references must match the - * production for Char. + * production for Char. */ if ((IS_CHAR(val) && (outofrange == 0))) { return(val); @@ -1812,7 +2357,7 @@ * * [ WFC: Legal Character ] * Characters referred to using character references must match the - * production for Char. + * production for Char. * * Returns the value parsed (as an int), 0 in case of error, str will be * updated to the current value of the index @@ -1831,7 +2376,7 @@ ptr += 3; cur = *ptr; while (cur != ';') { /* Non input consuming loop */ - if ((cur >= '0') && (cur <= '9')) + if ((cur >= '0') && (cur <= '9')) val = val * 16 + (cur - '0'); else if ((cur >= 'a') && (cur <= 'f')) val = val * 16 + (cur - 'a') + 10; @@ -1854,7 +2399,7 @@ ptr += 2; cur = *ptr; while (cur != ';') { /* Non input consuming loops */ - if ((cur >= '0') && (cur <= '9')) + if ((cur >= '0') && (cur <= '9')) val = val * 10 + (cur - '0'); else { xmlFatalErr(ctxt, XML_ERR_INVALID_DEC_CHARREF, NULL); @@ -1878,7 +2423,7 @@ /* * [ WFC: Legal Character ] * Characters referred to using character references must match the - * production for Char. + * production for Char. */ if ((IS_CHAR(val) && (outofrange == 0))) { return(val); @@ -1900,9 +2445,9 @@ * * Returns the new input stream or NULL */ - + static void deallocblankswrapper (xmlChar *str) {xmlFree(str);} - + static xmlParserInputPtr xmlNewBlanksWrapperInputStream(xmlParserCtxtPtr ctxt, xmlEntityPtr entity) { xmlParserInputPtr input; @@ -1924,7 +2469,8 @@ buffer = xmlMallocAtomic(length); if (buffer == NULL) { xmlErrMemory(ctxt, NULL); - return(NULL); + xmlFree(input); + return(NULL); } buffer [0] = ' '; buffer [1] = '%'; @@ -1943,12 +2489,12 @@ /** * xmlParserHandlePEReference: * @ctxt: the parser context - * + * * [69] PEReference ::= '%' Name ';' * * [ WFC: No Recursion ] * A parsed entity must not contain a recursive - * reference to itself, either directly or indirectly. + * reference to itself, either directly or indirectly. * * [ WFC: Entity Declared ] * In a document without any DTD, a document with only an internal DTD @@ -1966,9 +2512,9 @@ * NOTE: misleading but this is handled. * * A PEReference may have been detected in the current input stream - * the handling is done accordingly to + * the handling is done accordingly to * http://www.w3.org/TR/REC-xml#entproc - * i.e. + * i.e. * - Included in literal in entity values * - Included as Parameter Entity reference within DTDs */ @@ -2045,8 +2591,10 @@ NEXT; if ((ctxt->sax != NULL) && (ctxt->sax->getParameterEntity != NULL)) entity = ctxt->sax->getParameterEntity(ctxt->userData, name); + if (ctxt->instate == XML_PARSER_EOF) + return; if (entity == NULL) { - + /* * [ WFC: Entity Declared ] * In a document without any DTD, a document with only an @@ -2071,16 +2619,18 @@ if ((ctxt->validate) && (ctxt->vctxt.error != NULL)) { xmlValidityError(ctxt, XML_WAR_UNDECLARED_ENTITY, "PEReference: %%%s; not found\n", - name); - } else + name, NULL); + } else xmlWarningMsg(ctxt, XML_WAR_UNDECLARED_ENTITY, "PEReference: %%%s; not found\n", name, NULL); ctxt->valid = 0; } + xmlParserEntityCheck(ctxt, 0, NULL, 0); } else if (ctxt->input->free != deallocblankswrapper) { input = xmlNewBlanksWrapperInputStream(ctxt, entity); - xmlPushInput(ctxt, input); + if (xmlPushInput(ctxt, input) < 0) + return; } else { if ((entity->etype == XML_INTERNAL_PARAMETER_ENTITY) || (entity->etype == XML_EXTERNAL_PARAMETER_ENTITY)) { @@ -2088,14 +2638,32 @@ xmlCharEncoding enc; /* + * Note: external parameter entities will not be loaded, it + * is not required for a non-validating parser, unless the + * option of validating, or substituting entities were + * given. Doing so is far more secure as the parser will + * only process data coming from the document entity by + * default. + */ + if ((entity->etype == XML_EXTERNAL_PARAMETER_ENTITY) && + ((ctxt->options & XML_PARSE_NOENT) == 0) && + ((ctxt->options & XML_PARSE_DTDVALID) == 0) && + ((ctxt->options & XML_PARSE_DTDLOAD) == 0) && + ((ctxt->options & XML_PARSE_DTDATTR) == 0) && + (ctxt->replaceEntities == 0) && + (ctxt->validate == 0)) + return; + + /* * handle the extra spaces added before and after * c.f. http://www.w3.org/TR/REC-xml#as-PE * this is done independently. */ input = xmlNewEntityInputStream(ctxt, entity); - xmlPushInput(ctxt, input); + if (xmlPushInput(ctxt, input) < 0) + return; - /* + /* * Get the 4 first bytes and decode the charset * if enc != XML_CHAR_ENCODING_NONE * plug some encoding conversion routines. @@ -2105,6 +2673,8 @@ * the amount of data in the buffer. */ GROW + if (ctxt->instate == XML_PARSER_EOF) + return; if ((ctxt->input->end - ctxt->input->cur)>=4) { start[0] = RAW; start[1] = NXT(1); @@ -2135,14 +2705,17 @@ /* * Macro used to grow the current buffer. + * buffer##_size is expected to be a size_t + * mem_error: is expected to handle memory allocation failures */ -#define growBuffer(buffer) { \ +#define growBuffer(buffer, n) { \ xmlChar *tmp; \ - buffer##_size *= 2; \ - tmp = (xmlChar *) \ - xmlRealloc(buffer, buffer##_size * sizeof(xmlChar)); \ + size_t new_size = buffer##_size * 2 + n; \ + if (new_size < buffer##_size) goto mem_error; \ + tmp = (xmlChar *) xmlRealloc(buffer, new_size); \ if (tmp == NULL) goto mem_error; \ buffer = tmp; \ + buffer##_size = new_size; \ } /** @@ -2154,7 +2727,7 @@ * @end: an end marker xmlChar, 0 if none * @end2: an end marker xmlChar, 0 if none * @end3: an end marker xmlChar, 0 if none - * + * * Takes a entity string content and process to do the adequate substitutions. * * [67] Reference ::= EntityRef | CharRef @@ -2168,19 +2741,22 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len, int what, xmlChar end, xmlChar end2, xmlChar end3) { xmlChar *buffer = NULL; - int buffer_size = 0; + size_t buffer_size = 0; + size_t nbchars = 0; xmlChar *current = NULL; + xmlChar *rep = NULL; const xmlChar *last; xmlEntityPtr ent; int c,l; - int nbchars = 0; if ((ctxt == NULL) || (str == NULL) || (len < 0)) return(NULL); last = str + len; - if (ctxt->depth > 40) { + if (((ctxt->depth > 40) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) || + (ctxt->depth > 1024)) { xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL); return(NULL); } @@ -2189,7 +2765,7 @@ * allocate a translation buffer. */ buffer_size = XML_PARSER_BIG_BUFFER_SIZE; - buffer = (xmlChar *) xmlMallocAtomic(buffer_size * sizeof(xmlChar)); + buffer = (xmlChar *) xmlMallocAtomic(buffer_size); if (buffer == NULL) goto mem_error; /* @@ -2209,8 +2785,8 @@ if (val != 0) { COPY_BUF(0,buffer,nbchars,val); } - if (nbchars > buffer_size - XML_PARSER_BUFFER_SIZE) { - growBuffer(buffer); + if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) { + growBuffer(buffer, XML_PARSER_BUFFER_SIZE); } } else if ((c == '&') && (what & XML_SUBSTITUTE_REF)) { if (xmlParserDebugEntities) @@ -2218,42 +2794,53 @@ "String decoding Entity Reference: %.30s\n", str); ent = xmlParseStringEntityRef(ctxt, &str); + if ((ctxt->lastError.code == XML_ERR_ENTITY_LOOP) || + (ctxt->lastError.code == XML_ERR_INTERNAL_ERROR)) + goto int_error; + xmlParserEntityCheck(ctxt, 0, ent, 0); + if (ent != NULL) + ctxt->nbentities += ent->checked / 2; if ((ent != NULL) && (ent->etype == XML_INTERNAL_PREDEFINED_ENTITY)) { if (ent->content != NULL) { COPY_BUF(0,buffer,nbchars,ent->content[0]); - if (nbchars > buffer_size - XML_PARSER_BUFFER_SIZE) { - growBuffer(buffer); + if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) { + growBuffer(buffer, XML_PARSER_BUFFER_SIZE); } } else { xmlFatalErrMsg(ctxt, XML_ERR_INTERNAL_ERROR, "predefined entity has no content\n"); } } else if ((ent != NULL) && (ent->content != NULL)) { - xmlChar *rep; - ctxt->depth++; rep = xmlStringDecodeEntities(ctxt, ent->content, what, 0, 0, 0); ctxt->depth--; + + if ((ctxt->lastError.code == XML_ERR_ENTITY_LOOP) || + (ctxt->lastError.code == XML_ERR_INTERNAL_ERROR)) + goto int_error; + if (rep != NULL) { current = rep; while (*current != 0) { /* non input consuming loop */ buffer[nbchars++] = *current++; - if (nbchars > - buffer_size - XML_PARSER_BUFFER_SIZE) { - growBuffer(buffer); + if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) { + if (xmlParserEntityCheck(ctxt, nbchars, ent, 0)) + goto int_error; + growBuffer(buffer, XML_PARSER_BUFFER_SIZE); } } xmlFree(rep); + rep = NULL; } } else if (ent != NULL) { int i = xmlStrlen(ent->name); const xmlChar *cur = ent->name; buffer[nbchars++] = '&'; - if (nbchars > buffer_size - i - XML_PARSER_BUFFER_SIZE) { - growBuffer(buffer); + if (nbchars + i + XML_PARSER_BUFFER_SIZE > buffer_size) { + growBuffer(buffer, i + XML_PARSER_BUFFER_SIZE); } for (;i > 0;i--) buffer[nbchars++] = *cur++; @@ -2264,9 +2851,15 @@ xmlGenericError(xmlGenericErrorContext, "String decoding PE Reference: %.30s\n", str); ent = xmlParseStringPEReference(ctxt, &str); + if (ctxt->lastError.code == XML_ERR_ENTITY_LOOP) + goto int_error; + xmlParserEntityCheck(ctxt, 0, ent, 0); + if (ent != NULL) + ctxt->nbentities += ent->checked / 2; if (ent != NULL) { - xmlChar *rep; - + if (ent->content == NULL) { + xmlLoadEntityContent(ctxt, ent); + } ctxt->depth++; rep = xmlStringDecodeEntities(ctxt, ent->content, what, 0, 0, 0); @@ -2275,19 +2868,21 @@ current = rep; while (*current != 0) { /* non input consuming loop */ buffer[nbchars++] = *current++; - if (nbchars > - buffer_size - XML_PARSER_BUFFER_SIZE) { - growBuffer(buffer); + if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) { + if (xmlParserEntityCheck(ctxt, nbchars, ent, 0)) + goto int_error; + growBuffer(buffer, XML_PARSER_BUFFER_SIZE); } } xmlFree(rep); + rep = NULL; } } } else { COPY_BUF(l,buffer,nbchars,c); str += l; - if (nbchars > buffer_size - XML_PARSER_BUFFER_SIZE) { - growBuffer(buffer); + if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) { + growBuffer(buffer, XML_PARSER_BUFFER_SIZE); } } if (str < last) @@ -2295,11 +2890,16 @@ else c = 0; } - buffer[nbchars++] = 0; + buffer[nbchars] = 0; return(buffer); mem_error: xmlErrMemory(ctxt, NULL); +int_error: + if (rep != NULL) + xmlFree(rep); + if (buffer != NULL) + xmlFree(buffer); return(NULL); } @@ -2311,7 +2911,7 @@ * @end: an end marker xmlChar, 0 if none * @end2: an end marker xmlChar, 0 if none * @end3: an end marker xmlChar, 0 if none - * + * * Takes a entity string content and process to do the adequate substitutions. * * [67] Reference ::= EntityRef | CharRef @@ -2414,7 +3014,7 @@ * xmlSplitQName: * @ctxt: an XML parser context * @name: an XML parser context - * @prefix: a xmlChar ** + * @prefix: a xmlChar ** * * parse an UTF8 encoded XML qualified name string * @@ -2465,7 +3065,7 @@ * for the processing speed. */ max = len * 2; - + buffer = (xmlChar *) xmlMallocAtomic(max * sizeof(xmlChar)); if (buffer == NULL) { xmlErrMemory(ctxt, NULL); @@ -2480,7 +3080,7 @@ tmp = (xmlChar *) xmlRealloc(buffer, max * sizeof(xmlChar)); if (tmp == NULL) { - xmlFree(tmp); + xmlFree(buffer); xmlErrMemory(ctxt, NULL); return(NULL); } @@ -2491,7 +3091,7 @@ } buffer[len] = 0; } - + if ((c == ':') && (*cur == 0)) { if (buffer != NULL) xmlFree(buffer); @@ -2544,7 +3144,7 @@ * for the processing speed. */ max = len * 2; - + buffer = (xmlChar *) xmlMallocAtomic(max * sizeof(xmlChar)); if (buffer == NULL) { xmlErrMemory(ctxt, NULL); @@ -2570,7 +3170,7 @@ } buffer[len] = 0; } - + if (buffer == NULL) ret = xmlStrndup(buf, len); else { @@ -2588,10 +3188,221 @@ * * ************************************************************************/ -static const xmlChar * xmlParseNameComplex(xmlParserCtxtPtr ctxt); +/************************************************************************ + * * + * Routines to parse Name, NCName and NmToken * + * * + ************************************************************************/ +#ifdef DEBUG +static unsigned long nbParseName = 0; +static unsigned long nbParseNmToken = 0; +static unsigned long nbParseNCName = 0; +static unsigned long nbParseNCNameComplex = 0; +static unsigned long nbParseNameComplex = 0; +static unsigned long nbParseStringName = 0; +#endif + +/* + * The two following functions are related to the change of accepted + * characters for Name and NmToken in the Revision 5 of XML-1.0 + * They correspond to the modified production [4] and the new production [4a] + * changes in that revision. Also note that the macros used for the + * productions Letter, Digit, CombiningChar and Extender are not needed + * anymore. + * We still keep compatibility to pre-revision5 parsing semantic if the + * new XML_PARSE_OLD10 option is given to the parser. + */ +static int +xmlIsNameStartChar(xmlParserCtxtPtr ctxt, int c) { + if ((ctxt->options & XML_PARSE_OLD10) == 0) { + /* + * Use the new checks of production [4] [4a] amd [5] of the + * Update 5 of XML-1.0 + */ + if ((c != ' ') && (c != '>') && (c != '/') && /* accelerators */ + (((c >= 'a') && (c <= 'z')) || + ((c >= 'A') && (c <= 'Z')) || + (c == '_') || (c == ':') || + ((c >= 0xC0) && (c <= 0xD6)) || + ((c >= 0xD8) && (c <= 0xF6)) || + ((c >= 0xF8) && (c <= 0x2FF)) || + ((c >= 0x370) && (c <= 0x37D)) || + ((c >= 0x37F) && (c <= 0x1FFF)) || + ((c >= 0x200C) && (c <= 0x200D)) || + ((c >= 0x2070) && (c <= 0x218F)) || + ((c >= 0x2C00) && (c <= 0x2FEF)) || + ((c >= 0x3001) && (c <= 0xD7FF)) || + ((c >= 0xF900) && (c <= 0xFDCF)) || + ((c >= 0xFDF0) && (c <= 0xFFFD)) || + ((c >= 0x10000) && (c <= 0xEFFFF)))) + return(1); + } else { + if (IS_LETTER(c) || (c == '_') || (c == ':')) + return(1); + } + return(0); +} + +static int +xmlIsNameChar(xmlParserCtxtPtr ctxt, int c) { + if ((ctxt->options & XML_PARSE_OLD10) == 0) { + /* + * Use the new checks of production [4] [4a] amd [5] of the + * Update 5 of XML-1.0 + */ + if ((c != ' ') && (c != '>') && (c != '/') && /* accelerators */ + (((c >= 'a') && (c <= 'z')) || + ((c >= 'A') && (c <= 'Z')) || + ((c >= '0') && (c <= '9')) || /* !start */ + (c == '_') || (c == ':') || + (c == '-') || (c == '.') || (c == 0xB7) || /* !start */ + ((c >= 0xC0) && (c <= 0xD6)) || + ((c >= 0xD8) && (c <= 0xF6)) || + ((c >= 0xF8) && (c <= 0x2FF)) || + ((c >= 0x300) && (c <= 0x36F)) || /* !start */ + ((c >= 0x370) && (c <= 0x37D)) || + ((c >= 0x37F) && (c <= 0x1FFF)) || + ((c >= 0x200C) && (c <= 0x200D)) || + ((c >= 0x203F) && (c <= 0x2040)) || /* !start */ + ((c >= 0x2070) && (c <= 0x218F)) || + ((c >= 0x2C00) && (c <= 0x2FEF)) || + ((c >= 0x3001) && (c <= 0xD7FF)) || + ((c >= 0xF900) && (c <= 0xFDCF)) || + ((c >= 0xFDF0) && (c <= 0xFFFD)) || + ((c >= 0x10000) && (c <= 0xEFFFF)))) + return(1); + } else { + if ((IS_LETTER(c)) || (IS_DIGIT(c)) || + (c == '.') || (c == '-') || + (c == '_') || (c == ':') || + (IS_COMBINING(c)) || + (IS_EXTENDER(c))) + return(1); + } + return(0); +} + static xmlChar * xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *len, int *alloc, int normalize); +static const xmlChar * +xmlParseNameComplex(xmlParserCtxtPtr ctxt) { + int len = 0, l; + int c; + int count = 0; + +#ifdef DEBUG + nbParseNameComplex++; +#endif + + /* + * Handler for more complex cases + */ + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + c = CUR_CHAR(l); + if ((ctxt->options & XML_PARSE_OLD10) == 0) { + /* + * Use the new checks of production [4] [4a] amd [5] of the + * Update 5 of XML-1.0 + */ + if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */ + (!(((c >= 'a') && (c <= 'z')) || + ((c >= 'A') && (c <= 'Z')) || + (c == '_') || (c == ':') || + ((c >= 0xC0) && (c <= 0xD6)) || + ((c >= 0xD8) && (c <= 0xF6)) || + ((c >= 0xF8) && (c <= 0x2FF)) || + ((c >= 0x370) && (c <= 0x37D)) || + ((c >= 0x37F) && (c <= 0x1FFF)) || + ((c >= 0x200C) && (c <= 0x200D)) || + ((c >= 0x2070) && (c <= 0x218F)) || + ((c >= 0x2C00) && (c <= 0x2FEF)) || + ((c >= 0x3001) && (c <= 0xD7FF)) || + ((c >= 0xF900) && (c <= 0xFDCF)) || + ((c >= 0xFDF0) && (c <= 0xFFFD)) || + ((c >= 0x10000) && (c <= 0xEFFFF))))) { + return(NULL); + } + len += l; + NEXTL(l); + c = CUR_CHAR(l); + while ((c != ' ') && (c != '>') && (c != '/') && /* accelerators */ + (((c >= 'a') && (c <= 'z')) || + ((c >= 'A') && (c <= 'Z')) || + ((c >= '0') && (c <= '9')) || /* !start */ + (c == '_') || (c == ':') || + (c == '-') || (c == '.') || (c == 0xB7) || /* !start */ + ((c >= 0xC0) && (c <= 0xD6)) || + ((c >= 0xD8) && (c <= 0xF6)) || + ((c >= 0xF8) && (c <= 0x2FF)) || + ((c >= 0x300) && (c <= 0x36F)) || /* !start */ + ((c >= 0x370) && (c <= 0x37D)) || + ((c >= 0x37F) && (c <= 0x1FFF)) || + ((c >= 0x200C) && (c <= 0x200D)) || + ((c >= 0x203F) && (c <= 0x2040)) || /* !start */ + ((c >= 0x2070) && (c <= 0x218F)) || + ((c >= 0x2C00) && (c <= 0x2FEF)) || + ((c >= 0x3001) && (c <= 0xD7FF)) || + ((c >= 0xF900) && (c <= 0xFDCF)) || + ((c >= 0xFDF0) && (c <= 0xFFFD)) || + ((c >= 0x10000) && (c <= 0xEFFFF)) + )) { + if (count++ > XML_PARSER_CHUNK_SIZE) { + count = 0; + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + } + len += l; + NEXTL(l); + c = CUR_CHAR(l); + } + } else { + if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */ + (!IS_LETTER(c) && (c != '_') && + (c != ':'))) { + return(NULL); + } + len += l; + NEXTL(l); + c = CUR_CHAR(l); + + while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */ + ((IS_LETTER(c)) || (IS_DIGIT(c)) || + (c == '.') || (c == '-') || + (c == '_') || (c == ':') || + (IS_COMBINING(c)) || + (IS_EXTENDER(c)))) { + if (count++ > XML_PARSER_CHUNK_SIZE) { + count = 0; + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + } + len += l; + NEXTL(l); + c = CUR_CHAR(l); + if (c == 0) { + count = 0; + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + c = CUR_CHAR(l); + } + } + } + if ((len > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "Name"); + return(NULL); + } + if ((*ctxt->input->cur == '\n') && (ctxt->input->cur[-1] == '\r')) + return(xmlDictLookup(ctxt->dict, ctxt->input->cur - (len + 1), len)); + return(xmlDictLookup(ctxt->dict, ctxt->input->cur - len, len)); +} + /** * xmlParseName: * @ctxt: an XML parser context @@ -2616,6 +3427,10 @@ GROW; +#ifdef DEBUG + nbParseName++; +#endif + /* * Accelerator for simple ASCII names */ @@ -2632,6 +3447,11 @@ in++; if ((*in > 0) && (*in < 0x80)) { count = in - ctxt->input->cur; + if ((count > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "Name"); + return(NULL); + } ret = xmlDictLookup(ctxt->dict, ctxt->input->cur, count); ctxt->input->cur = in; ctxt->nbChars += count; @@ -2641,9 +3461,136 @@ return(ret); } } + /* accelerator for special cases */ return(xmlParseNameComplex(ctxt)); } +static const xmlChar * +xmlParseNCNameComplex(xmlParserCtxtPtr ctxt) { + int len = 0, l; + int c; + int count = 0; + const xmlChar *end; /* needed because CUR_CHAR() can move cur on \r\n */ + +#ifdef DEBUG + nbParseNCNameComplex++; +#endif + + /* + * Handler for more complex cases + */ + GROW; + end = ctxt->input->cur; + c = CUR_CHAR(l); + if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */ + (!xmlIsNameStartChar(ctxt, c) || (c == ':'))) { + return(NULL); + } + + while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */ + (xmlIsNameChar(ctxt, c) && (c != ':'))) { + if (count++ > XML_PARSER_CHUNK_SIZE) { + if ((len > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName"); + return(NULL); + } + count = 0; + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + } + len += l; + NEXTL(l); + end = ctxt->input->cur; + c = CUR_CHAR(l); + if (c == 0) { + count = 0; + /* + * when shrinking to extend the buffer we really need to preserve + * the part of the name we already parsed. Hence rolling back + * by current lenght. + */ + ctxt->input->cur -= l; + GROW; + ctxt->input->cur += l; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + end = ctxt->input->cur; + c = CUR_CHAR(l); + } + } + if ((len > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName"); + return(NULL); + } + return(xmlDictLookup(ctxt->dict, end - len, len)); +} + +/** + * xmlParseNCName: + * @ctxt: an XML parser context + * @len: length of the string parsed + * + * parse an XML name. + * + * [4NS] NCNameChar ::= Letter | Digit | '.' | '-' | '_' | + * CombiningChar | Extender + * + * [5NS] NCName ::= (Letter | '_') (NCNameChar)* + * + * Returns the Name parsed or NULL + */ + +static const xmlChar * +xmlParseNCName(xmlParserCtxtPtr ctxt) { + const xmlChar *in, *e; + const xmlChar *ret; + int count = 0; + +#ifdef DEBUG + nbParseNCName++; +#endif + + /* + * Accelerator for simple ASCII names + */ + in = ctxt->input->cur; + e = ctxt->input->end; + if ((((*in >= 0x61) && (*in <= 0x7A)) || + ((*in >= 0x41) && (*in <= 0x5A)) || + (*in == '_')) && (in < e)) { + in++; + while ((((*in >= 0x61) && (*in <= 0x7A)) || + ((*in >= 0x41) && (*in <= 0x5A)) || + ((*in >= 0x30) && (*in <= 0x39)) || + (*in == '_') || (*in == '-') || + (*in == '.')) && (in < e)) + in++; + if (in >= e) + goto complex; + if ((*in > 0) && (*in < 0x80)) { + count = in - ctxt->input->cur; + if ((count > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName"); + return(NULL); + } + ret = xmlDictLookup(ctxt->dict, ctxt->input->cur, count); + ctxt->input->cur = in; + ctxt->nbChars += count; + ctxt->input->col += count; + if (ret == NULL) { + xmlErrMemory(ctxt, NULL); + } + return(ret); + } + } +complex: + return(xmlParseNCNameComplex(ctxt)); +} + /** * xmlParseNameAndCompare: * @ctxt: an XML parser context @@ -2662,15 +3609,17 @@ const xmlChar *ret; GROW; - + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + in = ctxt->input->cur; while (*in != 0 && *in == *cmp) { - ++in; + ++in; ++cmp; ctxt->input->col++; } if (*cmp == 0 && (*in == '>' || IS_BLANK_CH (*in))) { - /* success */ + /* success */ ctxt->input->cur = in; return (const xmlChar*) 1; } @@ -2683,42 +3632,6 @@ return ret; } -static const xmlChar * -xmlParseNameComplex(xmlParserCtxtPtr ctxt) { - int len = 0, l; - int c; - int count = 0; - - /* - * Handler for more complex cases - */ - GROW; - c = CUR_CHAR(l); - if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */ - (!IS_LETTER(c) && (c != '_') && - (c != ':'))) { - return(NULL); - } - - while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */ - ((IS_LETTER(c)) || (IS_DIGIT(c)) || - (c == '.') || (c == '-') || - (c == '_') || (c == ':') || - (IS_COMBINING(c)) || - (IS_EXTENDER(c)))) { - if (count++ > 100) { - count = 0; - GROW; - } - len += l; - NEXTL(l); - c = CUR_CHAR(l); - } - if ((*ctxt->input->cur == '\n') && (ctxt->input->cur[-1] == '\r')) - return(xmlDictLookup(ctxt->dict, ctxt->input->cur - (len + 1), len)); - return(xmlDictLookup(ctxt->dict, ctxt->input->cur - len, len)); -} - /** * xmlParseStringName: * @ctxt: an XML parser context @@ -2733,7 +3646,7 @@ * * [6] Names ::= Name (#x20 Name)* * - * Returns the Name parsed or NULL. The @str pointer + * Returns the Name parsed or NULL. The @str pointer * is updated to the current location in the string. */ @@ -2744,17 +3657,19 @@ int len = 0, l; int c; +#ifdef DEBUG + nbParseStringName++; +#endif + c = CUR_SCHAR(cur, l); - if (!IS_LETTER(c) && (c != '_') && - (c != ':')) { + if (!xmlIsNameStartChar(ctxt, c)) { return(NULL); } - while ((IS_LETTER(c)) || (IS_DIGIT(c)) || /* test bigentname.xml */ - (c == '.') || (c == '-') || - (c == '_') || (c == ':') || - (IS_COMBINING(c)) || - (IS_EXTENDER(c))) { + COPY_BUF(l,buf,len,c); + cur += l; + c = CUR_SCHAR(cur, l); + while (xmlIsNameChar(ctxt, c)) { COPY_BUF(l,buf,len,c); cur += l; c = CUR_SCHAR(cur, l); @@ -2765,21 +3680,23 @@ */ xmlChar *buffer; int max = len * 2; - + buffer = (xmlChar *) xmlMallocAtomic(max * sizeof(xmlChar)); if (buffer == NULL) { xmlErrMemory(ctxt, NULL); return(NULL); } memcpy(buffer, buf, len); - while ((IS_LETTER(c)) || (IS_DIGIT(c)) || - /* test bigentname.xml */ - (c == '.') || (c == '-') || - (c == '_') || (c == ':') || - (IS_COMBINING(c)) || - (IS_EXTENDER(c))) { + while (xmlIsNameChar(ctxt, c)) { if (len + 10 > max) { xmlChar *tmp; + + if ((len > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName"); + xmlFree(buffer); + return(NULL); + } max *= 2; tmp = (xmlChar *) xmlRealloc(buffer, max * sizeof(xmlChar)); @@ -2799,6 +3716,11 @@ return(buffer); } } + if ((len > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName"); + return(NULL); + } *str = cur; return(xmlStrndup(buf, len)); } @@ -2806,7 +3728,7 @@ /** * xmlParseNmtoken: * @ctxt: an XML parser context - * + * * parse an XML Nmtoken. * * [7] Nmtoken ::= (NameChar)+ @@ -2823,21 +3745,30 @@ int c; int count = 0; +#ifdef DEBUG + nbParseNmToken++; +#endif + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); c = CUR_CHAR(l); - while ((IS_LETTER(c)) || (IS_DIGIT(c)) || /* test bigtoken.xml */ - (c == '.') || (c == '-') || - (c == '_') || (c == ':') || - (IS_COMBINING(c)) || - (IS_EXTENDER(c))) { - if (count++ > 100) { + while (xmlIsNameChar(ctxt, c)) { + if (count++ > XML_PARSER_CHUNK_SIZE) { count = 0; GROW; } COPY_BUF(l,buf,len,c); NEXTL(l); c = CUR_CHAR(l); + if (c == 0) { + count = 0; + GROW; + if (ctxt->instate == XML_PARSER_EOF) + return(NULL); + c = CUR_CHAR(l); + } if (len >= XML_MAX_NAMELEN) { /* * Okay someone managed to make a huge token, so he's ready to pay @@ -2845,25 +3776,31 @@ */ xmlChar *buffer; int max = len * 2; - + buffer = (xmlChar *) xmlMallocAtomic(max * sizeof(xmlChar)); if (buffer == NULL) { xmlErrMemory(ctxt, NULL); return(NULL); } memcpy(buffer, buf, len); - while ((IS_LETTER(c)) || (IS_DIGIT(c)) || /* test bigtoken.xml */ - (c == '.') || (c == '-') || - (c == '_') || (c == ':') || - (IS_COMBINING(c)) || - (IS_EXTENDER(c))) { - if (count++ > 100) { + while (xmlIsNameChar(ctxt, c)) { + if (count++ > XML_PARSER_CHUNK_SIZE) { count = 0; GROW; + if (ctxt->instate == XML_PARSER_EOF) { + xmlFree(buffer); + return(NULL); + } } if (len + 10 > max) { xmlChar *tmp; + if ((max > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NmToken"); + xmlFree(buffer); + return(NULL); + } max *= 2; tmp = (xmlChar *) xmlRealloc(buffer, max * sizeof(xmlChar)); @@ -2884,6 +3821,11 @@ } if (len == 0) return(NULL); + if ((len > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NmToken"); + return(NULL); + } return(xmlStrndup(buf, len)); } @@ -2930,6 +3872,10 @@ ctxt->instate = XML_PARSER_ENTITY_VALUE; input = ctxt->input; GROW; + if (ctxt->instate == XML_PARSER_EOF) { + xmlFree(buf); + return(NULL); + } NEXT; c = CUR_CHAR(l); /* @@ -2937,12 +3883,12 @@ * When a parameter entity reference appears in a literal entity * value, ... a single or double quote character in the replacement * text is always treated as a normal data character and will not - * terminate the literal. + * terminate the literal. * In practice it means we stop the loop only when back at parsing * the initial entity and the quote is found */ - while ((IS_CHAR(c)) && ((c != stop) || /* checked */ - (ctxt->input != input))) { + while (((IS_CHAR(c)) && ((c != stop) || /* checked */ + (ctxt->input != input))) && (ctxt->instate != XML_PARSER_EOF)) { if (len + 5 >= size) { xmlChar *tmp; @@ -2971,6 +3917,10 @@ } } buf[len] = 0; + if (ctxt->instate == XML_PARSER_EOF) { + xmlFree(buf); + return(NULL); + } /* * Raise problem w.r.t. '&' and '%' being used in non-entities @@ -3018,12 +3968,12 @@ */ ret = xmlStringDecodeEntities(ctxt, buf, XML_SUBSTITUTE_PEREF, 0, 0, 0); - if (orig != NULL) + if (orig != NULL) *orig = buf; else xmlFree(buf); } - + return(ret); } @@ -3043,8 +3993,9 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) { xmlChar limit = 0; xmlChar *buf = NULL; - int len = 0; - int buf_size = 0; + xmlChar *rep = NULL; + size_t len = 0; + size_t buf_size = 0; int c, l, in_space = 0; xmlChar *current = NULL; xmlEntityPtr ent; @@ -3061,20 +4012,31 @@ xmlFatalErr(ctxt, XML_ERR_ATTRIBUTE_NOT_STARTED, NULL); return(NULL); } - + /* * allocate a translation buffer. */ buf_size = XML_PARSER_BUFFER_SIZE; - buf = (xmlChar *) xmlMallocAtomic(buf_size * sizeof(xmlChar)); + buf = (xmlChar *) xmlMallocAtomic(buf_size); if (buf == NULL) goto mem_error; /* * OK loop until we reach one of the ending char or a size limit. */ c = CUR_CHAR(l); - while ((NXT(0) != limit) && /* checked */ - (c != '<')) { + while (((NXT(0) != limit) && /* checked */ + (IS_CHAR(c)) && (c != '<')) && + (ctxt->instate != XML_PARSER_EOF)) { + /* + * Impose a reasonable limit on attribute size, unless XML_PARSE_HUGE + * special option is given + */ + if ((len > XML_MAX_TEXT_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, + "AttValue length too long\n"); + goto mem_error; + } if (c == 0) break; if (c == '&') { in_space = 0; @@ -3083,8 +4045,8 @@ if (val == '&') { if (ctxt->replaceEntities) { - if (len > buf_size - 10) { - growBuffer(buf); + if (len + 10 > buf_size) { + growBuffer(buf, 10); } buf[len++] = '&'; } else { @@ -3092,8 +4054,8 @@ * The reparsing will be done in xmlStringGetNodeList() * called by the attribute() function in SAX.c */ - if (len > buf_size - 10) { - growBuffer(buf); + if (len + 10 > buf_size) { + growBuffer(buf, 10); } buf[len++] = '&'; buf[len++] = '#'; @@ -3101,18 +4063,21 @@ buf[len++] = '8'; buf[len++] = ';'; } - } else { - if (len > buf_size - 10) { - growBuffer(buf); + } else if (val != 0) { + if (len + 10 > buf_size) { + growBuffer(buf, 10); } len += xmlCopyChar(0, &buf[len], val); } } else { ent = xmlParseEntityRef(ctxt); + ctxt->nbentities++; + if (ent != NULL) + ctxt->nbentities += ent->owner; if ((ent != NULL) && (ent->etype == XML_INTERNAL_PREDEFINED_ENTITY)) { - if (len > buf_size - 10) { - growBuffer(buf); + if (len + 10 > buf_size) { + growBuffer(buf, 10); } if ((ctxt->replaceEntities == 0) && (ent->content[0] == '&')) { @@ -3124,10 +4089,8 @@ } else { buf[len++] = ent->content[0]; } - } else if ((ent != NULL) && + } else if ((ent != NULL) && (ctxt->replaceEntities != 0)) { - xmlChar *rep; - if (ent->etype != XML_INTERNAL_PREDEFINED_ENTITY) { rep = xmlStringDecodeEntities(ctxt, ent->content, XML_SUBSTITUTE_REF, @@ -3135,16 +4098,22 @@ if (rep != NULL) { current = rep; while (*current != 0) { /* non input consuming */ - buf[len++] = *current++; - if (len > buf_size - 10) { - growBuffer(buf); + if ((*current == 0xD) || (*current == 0xA) || + (*current == 0x9)) { + buf[len++] = 0x20; + current++; + } else + buf[len++] = *current++; + if (len + 10 > buf_size) { + growBuffer(buf, 10); } } xmlFree(rep); + rep = NULL; } } else { - if (len > buf_size - 10) { - growBuffer(buf); + if (len + 10 > buf_size) { + growBuffer(buf, 10); } if (ent->content != NULL) buf[len++] = ent->content[0]; @@ -3158,20 +4127,27 @@ * entities problems */ if ((ent->etype != XML_INTERNAL_PREDEFINED_ENTITY) && - (ent->content != NULL)) { - xmlChar *rep; + (ent->content != NULL) && (ent->checked == 0)) { + unsigned long oldnbent = ctxt->nbentities; + rep = xmlStringDecodeEntities(ctxt, ent->content, - XML_SUBSTITUTE_REF, 0, 0, 0); - if (rep != NULL) + XML_SUBSTITUTE_REF, 0, 0, 0); + + ent->checked = (ctxt->nbentities - oldnbent + 1) * 2; + if (rep != NULL) { + if (xmlStrchr(rep, '<')) + ent->checked |= 1; xmlFree(rep); + rep = NULL; + } } /* * Just output the reference */ buf[len++] = '&'; - if (len > buf_size - i - 10) { - growBuffer(buf); + while (len + i + 10 > buf_size) { + growBuffer(buf, i + 10); } for (;i > 0;i--) buf[len++] = *cur++; @@ -3183,8 +4159,8 @@ if ((len != 0) || (!normalize)) { if ((!normalize) || (!in_space)) { COPY_BUF(l,buf,len,0x20); - if (len > buf_size - 10) { - growBuffer(buf); + while (len + 10 > buf_size) { + growBuffer(buf, 10); } } in_space = 1; @@ -3192,8 +4168,8 @@ } else { in_space = 0; COPY_BUF(l,buf,len,c); - if (len > buf_size - 10) { - growBuffer(buf); + if (len + 10 > buf_size) { + growBuffer(buf, 10); } } NEXTL(l); @@ -3201,22 +4177,46 @@ GROW; c = CUR_CHAR(l); } + if (ctxt->instate == XML_PARSER_EOF) + goto error; + if ((in_space) && (normalize)) { - while (buf[len - 1] == 0x20) len--; + while ((len > 0) && (buf[len - 1] == 0x20)) len--; } buf[len] = 0; if (RAW == '<') { xmlFatalErr(ctxt, XML_ERR_LT_IN_ATTRIBUTE, NULL); } else if (RAW != limit) { - xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, - "AttValue: ' expected\n"); + if ((c != 0) && (!IS_CHAR(c))) { + xmlFatalErrMsg(ctxt, XML_ERR_INVALID_CHAR, + "invalid character in attribute value\n"); + } else { + xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, + "AttValue: ' expected\n"); + } } else NEXT; - if (attlen != NULL) *attlen = len; + + /* + * There we potentially risk an overflow, don't allow attribute value of + * length more than INT_MAX it is a very reasonnable assumption ! + */ + if (len >= INT_MAX) { + xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, + "AttValue length too long\n"); + goto mem_error; + } + + if (attlen != NULL) *attlen = (int) len; return(buf); mem_error: xmlErrMemory(ctxt, NULL); +error: + if (buf != NULL) + xmlFree(buf); + if (rep != NULL) + xmlFree(rep); return(NULL); } @@ -3233,20 +4233,20 @@ * * 3.3.3 Attribute-Value Normalization: * Before the value of an attribute is passed to the application or - * checked for validity, the XML processor must normalize it as follows: + * checked for validity, the XML processor must normalize it as follows: * - a character reference is processed by appending the referenced * character to the attribute value * - an entity reference is processed by recursively processing the - * replacement text of the entity + * replacement text of the entity * - a whitespace character (#x20, #xD, #xA, #x9) is processed by * appending #x20 to the normalized value, except that only a single * #x20 is appended for a "#xD#xA" sequence that is part of an external - * parsed entity or the literal entity value of an internal parsed entity - * - other characters are processed by appending them to the normalized value + * parsed entity or the literal entity value of an internal parsed entity + * - other characters are processed by appending them to the normalized value * If the declared value is not CDATA, then the XML processor must further * process the normalized attribute value by discarding any leading and * trailing space (#x20) characters, and by replacing sequences of space - * (#x20) characters by a single space (#x20) character. + * (#x20) characters by a single space (#x20) character. * All attributes for which no declaration has been read should be treated * by a non-validating parser as if declared CDATA. * @@ -3263,7 +4263,7 @@ /** * xmlParseSystemLiteral: * @ctxt: an XML parser context - * + * * parse an XML Literal * * [11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'") @@ -3292,7 +4292,7 @@ xmlFatalErr(ctxt, XML_ERR_LITERAL_NOT_STARTED, NULL); return(NULL); } - + buf = (xmlChar *) xmlMallocAtomic(size * sizeof(xmlChar)); if (buf == NULL) { xmlErrMemory(ctxt, NULL); @@ -3304,6 +4304,13 @@ if (len + 5 >= size) { xmlChar *tmp; + if ((size > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "SystemLiteral"); + xmlFree(buf); + ctxt->instate = (xmlParserInputState) state; + return(NULL); + } size *= 2; tmp = (xmlChar *) xmlRealloc(buf, size * sizeof(xmlChar)); if (tmp == NULL) { @@ -3318,6 +4325,10 @@ if (count > 50) { GROW; count = 0; + if (ctxt->instate == XML_PARSER_EOF) { + xmlFree(buf); + return(NULL); + } } COPY_BUF(l,buf,len,cur); NEXTL(l); @@ -3381,6 +4392,12 @@ if (len + 1 >= size) { xmlChar *tmp; + if ((size > XML_MAX_NAME_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "Public ID"); + xmlFree(buf); + return(NULL); + } size *= 2; tmp = (xmlChar *) xmlRealloc(buf, size * sizeof(xmlChar)); if (tmp == NULL) { @@ -3395,6 +4412,10 @@ if (count > 50) { GROW; count = 0; + if (ctxt->instate == XML_PARSER_EOF) { + xmlFree(buf); + return(NULL); + } } NEXT; cur = CUR; @@ -3414,7 +4435,7 @@ return(buf); } -void xmlParseCharDataComplex(xmlParserCtxtPtr ctxt, int cdata); +static void xmlParseCharDataComplex(xmlParserCtxtPtr ctxt, int cdata); /* * used for the test in the inner loop of the char data testing @@ -3465,7 +4486,7 @@ * The right angle bracket (>) may be represented using the string ">", * and must, for compatibility, be escaped using ">" or a character * reference when it appears in the string "]]>" in content, when that - * string is not marking the end of a CDATA section. + * string is not marking the end of a CDATA section. * * [14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*) */ @@ -3488,7 +4509,7 @@ in = ctxt->input->cur; do { get_more_space: - while (*in == 0x20) in++; + while (*in == 0x20) { in++; ctxt->input->col++; } if (*in == 0xA) { do { ctxt->input->line++; ctxt->input->col = 1; @@ -3578,6 +4599,9 @@ line = ctxt->input->line; col = ctxt->input->col; } + /* something really bad happened in the SAX callback */ + if (ctxt->instate != XML_PARSER_CONTENT) + return; } ctxt->input->cur = in; if (*in == 0xD) { @@ -3598,6 +4622,8 @@ } SHRINK; GROW; + if (ctxt->instate == XML_PARSER_EOF) + return; in = ctxt->input->cur; } while (((*in >= 0x20) && (*in <= 0x7F)) || (*in == 0x09)); nbchar = 0; @@ -3616,7 +4642,7 @@ * of xmlParseCharData() when the parsing requires handling * of non-ASCII characters. */ -void +static void xmlParseCharDataComplex(xmlParserCtxtPtr ctxt, int cdata) { xmlChar buf[XML_PARSER_BIG_BUFFER_SIZE + 5]; int nbchar = 0; @@ -3627,7 +4653,7 @@ GROW; cur = CUR_CHAR(l); while ((cur != '<') && /* checked */ - (cur != '&') && + (cur != '&') && (IS_CHAR(cur))) /* test also done in xmlCurrentChar() */ { if ((cur == ']') && (NXT(1) == ']') && (NXT(2) == '>')) { @@ -3658,11 +4684,16 @@ } } nbchar = 0; + /* something really bad happened in the SAX callback */ + if (ctxt->instate != XML_PARSER_CONTENT) + return; } count++; if (count > 50) { GROW; count = 0; + if (ctxt->instate == XML_PARSER_EOF) + return; } NEXTL(l); cur = CUR_CHAR(l); @@ -3755,7 +4786,7 @@ } } else { /* - * We handle [83] so we return immediately, if + * We handle [83] so we return immediately, if * "S SystemLiteral" is not detected. From a purely parsing * point of view that's a nice mess. */ @@ -3764,7 +4795,7 @@ ptr = CUR_PTR; if (!IS_BLANK_CH(*ptr)) return(NULL); - + while (IS_BLANK_CH(*ptr)) ptr++; /* TODO: dangerous, fix ! */ if ((*ptr != '\'') && (*ptr != '"')) return(NULL); } @@ -3792,12 +4823,15 @@ * [15] Comment ::= '' */ static void -xmlParseCommentComplex(xmlParserCtxtPtr ctxt, xmlChar *buf, int len, int size) { +xmlParseCommentComplex(xmlParserCtxtPtr ctxt, xmlChar *buf, + size_t len, size_t size) { int q, ql; int r, rl; int cur, l; - xmlParserInputPtr input = ctxt->input; - int count = 0; + size_t count = 0; + int inputid; + + inputid = ctxt->input->id; if (buf == NULL) { len = 0; @@ -3808,13 +4842,28 @@ return; } } + GROW; /* Assure there's enough input data */ q = CUR_CHAR(ql); if (q == 0) goto not_terminated; + if (!IS_CHAR(q)) { + xmlFatalErrMsgInt(ctxt, XML_ERR_INVALID_CHAR, + "xmlParseComment: invalid xmlChar value %d\n", + q); + xmlFree (buf); + return; + } NEXTL(ql); r = CUR_CHAR(rl); if (r == 0) goto not_terminated; + if (!IS_CHAR(r)) { + xmlFatalErrMsgInt(ctxt, XML_ERR_INVALID_CHAR, + "xmlParseComment: invalid xmlChar value %d\n", + q); + xmlFree (buf); + return; + } NEXTL(rl); cur = CUR_CHAR(l); if (cur == 0) @@ -3825,16 +4874,26 @@ if ((r == '-') && (q == '-')) { xmlFatalErr(ctxt, XML_ERR_HYPHEN_IN_COMMENT, NULL); } + if ((len > XML_MAX_TEXT_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlFatalErrMsgStr(ctxt, XML_ERR_COMMENT_NOT_FINISHED, + "Comment too big found", NULL); + xmlFree (buf); + return; + } if (len + 5 >= size) { xmlChar *new_buf; - size *= 2; - new_buf = (xmlChar *) xmlRealloc(buf, size * sizeof(xmlChar)); + size_t new_size; + + new_size = size * 2; + new_buf = (xmlChar *) xmlRealloc(buf, new_size); if (new_buf == NULL) { xmlFree (buf); xmlErrMemory(ctxt, NULL); return; } buf = new_buf; + size = new_size; } COPY_BUF(ql,buf,len,q); q = r; @@ -3846,6 +4905,10 @@ if (count > 50) { GROW; count = 0; + if (ctxt->instate == XML_PARSER_EOF) { + xmlFree(buf); + return; + } } NEXTL(l); cur = CUR_CHAR(l); @@ -3856,12 +4919,15 @@ } } buf[len] = 0; - if (!IS_CHAR(cur)) { + if (cur == 0) { xmlFatalErrMsgStr(ctxt, XML_ERR_COMMENT_NOT_FINISHED, "Comment not terminated \n next; */ @@ -9246,14 +9827,14 @@ } else { /* This is for attributes only. */ clone = clone->parent; - parentClone = clone->parent; + parentClone = clone->parent; /* * Process parent-element --> children. */ cur = cur->parent; - goto into_content; + goto into_content; } - } + } goto exit; internal_error: @@ -9274,7 +9855,7 @@ nsMap->pool = nsMap->first; nsMap->first = NULL; } - } else + } else xmlDOMWrapNsMapFree(nsMap); } /* @@ -9314,7 +9895,7 @@ if ((attr == NULL) || (destDoc == NULL)) return (-1); - + attr->doc = destDoc; if (attr->ns != NULL) { xmlNsPtr ns = NULL; @@ -9341,13 +9922,13 @@ ns = xmlDOMWrapNSNormDeclareNsForced(destDoc, destParent, attr->ns->href, attr->ns->prefix, 1); } - } + } if (ns == NULL) goto internal_error; attr->ns = ns; - } - - XML_TREE_ADOPT_STR(attr->name); + } + + XML_TREE_ADOPT_STR(attr->name); attr->atype = 0; attr->psvi = NULL; /* @@ -9356,13 +9937,15 @@ if (attr->children == NULL) return (0); cur = attr->children; + if ((cur != NULL) && (cur->type == XML_NAMESPACE_DECL)) + goto internal_error; while (cur != NULL) { cur->doc = destDoc; switch (cur->type) { case XML_TEXT_NODE: case XML_CDATA_SECTION_NODE: XML_TREE_ADOPT_STR_2(cur->content) - break; + break; case XML_ENTITY_REF_NODE: /* * Remove reference to the entitity-node. @@ -9380,7 +9963,7 @@ cur->content = ent->content; cur->children = (xmlNodePtr) ent; cur->last = (xmlNodePtr) ent; - } + } } break; default: @@ -9417,9 +10000,9 @@ * References of out-of scope ns-decls are remapped to point to @destDoc: * 1) If @destParent is given, then nsDef entries on element-nodes are used * 2) If *no* @destParent is given, then @destDoc->oldNs entries are used -* This is the case when you have an unliked node and just want to move it -* to the context of -* +* This is the case when you have an unlinked node and just want to move it +* to the context of +* * If @destParent is given, it ensures that the tree is namespace * wellformed by creating additional ns-decls where needed. * Note that, since prefixes of already existent ns-decls can be @@ -9436,16 +10019,17 @@ xmlDOMWrapAdoptNode(xmlDOMWrapCtxtPtr ctxt, xmlDocPtr sourceDoc, xmlNodePtr node, - xmlDocPtr destDoc, + xmlDocPtr destDoc, xmlNodePtr destParent, int options) { - if ((node == NULL) || (destDoc == NULL) || + if ((node == NULL) || (node->type == XML_NAMESPACE_DECL) || + (destDoc == NULL) || ((destParent != NULL) && (destParent->doc != destDoc))) return(-1); /* * Check node->doc sanity. - */ + */ if ((node->doc != NULL) && (sourceDoc != NULL) && (node->doc != sourceDoc)) { /* @@ -9458,7 +10042,7 @@ if (sourceDoc == destDoc) return (-1); switch (node->type) { - case XML_ELEMENT_NODE: + case XML_ELEMENT_NODE: case XML_ATTRIBUTE_NODE: case XML_TEXT_NODE: case XML_CDATA_SECTION_NODE: @@ -9484,7 +10068,7 @@ } else if (node->type == XML_ATTRIBUTE_NODE) { return (xmlDOMWrapAdoptAttr(ctxt, sourceDoc, (xmlAttrPtr) node, destDoc, destParent, options)); - } else { + } else { xmlNodePtr cur = node; int adoptStr = 1; @@ -9496,7 +10080,7 @@ (sourceDoc->dict == destDoc->dict)) adoptStr = 0; switch (node->type) { - case XML_TEXT_NODE: + case XML_TEXT_NODE: case XML_CDATA_SECTION_NODE: XML_TREE_ADOPT_STR_2(node->content) break; @@ -9529,7 +10113,7 @@ default: break; } - } + } return (0); } diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/tree.in.h gettext-0.19.7/gnulib-local/lib/libxml/tree.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/tree.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/tree.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -13,6 +13,7 @@ #define __XML_TREE_H__ #include +#include #include #include @@ -71,15 +72,19 @@ */ typedef enum { - XML_BUFFER_ALLOC_DOUBLEIT, - XML_BUFFER_ALLOC_EXACT, - XML_BUFFER_ALLOC_IMMUTABLE + XML_BUFFER_ALLOC_DOUBLEIT, /* double each time one need to grow */ + XML_BUFFER_ALLOC_EXACT, /* grow only to the minimal size */ + XML_BUFFER_ALLOC_IMMUTABLE, /* immutable buffer */ + XML_BUFFER_ALLOC_IO, /* special allocation scheme used for I/O */ + XML_BUFFER_ALLOC_HYBRID, /* exact up to a threshold, and doubleit thereafter */ + XML_BUFFER_ALLOC_BOUNDED /* limit the upper size of the buffer */ } xmlBufferAllocationScheme; /** * xmlBuffer: * - * A buffer structure. + * A buffer structure, this old construct is limited to 2GB and + * is being deprecated, use API with xmlBuf instead */ typedef struct _xmlBuffer xmlBuffer; typedef xmlBuffer *xmlBufferPtr; @@ -88,9 +93,45 @@ unsigned int use; /* The buffer size used */ unsigned int size; /* The buffer size */ xmlBufferAllocationScheme alloc; /* The realloc method */ + xmlChar *contentIO; /* in IO mode we may have a different base */ }; /** + * xmlBuf: + * + * A buffer structure, new one, the actual structure internals are not public + */ + +typedef struct _xmlBuf xmlBuf; + +/** + * xmlBufPtr: + * + * A pointer to a buffer structure, the actual structure internals are not + * public + */ + +typedef xmlBuf *xmlBufPtr; + +/* + * A few public routines for xmlBuf. As those are expected to be used + * mostly internally the bulk of the routines are internal in buf.h + */ +XMLPUBFUN xmlChar* XMLCALL xmlBufContent (const xmlBuf* buf); +XMLPUBFUN xmlChar* XMLCALL xmlBufEnd (xmlBufPtr buf); +XMLPUBFUN size_t XMLCALL xmlBufUse (const xmlBufPtr buf); +XMLPUBFUN size_t XMLCALL xmlBufShrink (xmlBufPtr buf, size_t len); + +/* + * LIBXML2_NEW_BUFFER: + * + * Macro used to express that the API use the new buffers for + * xmlParserInputBuffer and xmlOutputBuffer. The change was + * introduced in 2.9.0. + */ +#define LIBXML2_NEW_BUFFER + +/** * XML_XML_NAMESPACE: * * This is the namespace for the special xml: prefix predefined in the @@ -477,11 +518,28 @@ /** * XML_GET_LINE: * - * Macro to extract the line number of an element node. + * Macro to extract the line number of an element node. */ #define XML_GET_LINE(n) \ (xmlGetLineNo(n)) +/** + * xmlDocProperty + * + * Set of properties of the document as found by the parser + * Some of them are linked to similary named xmlParserOption + */ +typedef enum { + XML_DOC_WELLFORMED = 1<<0, /* document is XML well formed */ + XML_DOC_NSVALID = 1<<1, /* document is Namespace valid */ + XML_DOC_OLD10 = 1<<2, /* parsed with old XML-1.0 parser */ + XML_DOC_DTDVALID = 1<<3, /* DTD validation was successful */ + XML_DOC_XINCLUDE = 1<<4, /* XInclude substitution was done */ + XML_DOC_USERBUILT = 1<<5, /* Document was built using the API + and not by parsing an instance */ + XML_DOC_INTERNAL = 1<<6, /* built for internal processing */ + XML_DOC_HTML = 1<<7 /* parsed or built HTML document */ +} xmlDocProperties; /** * xmlDoc: @@ -503,7 +561,12 @@ /* End of common part */ int compression;/* level of zlib compression */ - int standalone; /* standalone document (no external refs) */ + int standalone; /* standalone document (no external refs) + 1 if standalone="yes" + 0 if standalone="no" + -1 if there is no XML declaration + -2 if there is an XML declaration, but no + standalone attribute was specified */ struct _xmlDtd *intSubset; /* the document internal subset */ struct _xmlDtd *extSubset; /* the document external subset */ struct _xmlNs *oldNs; /* Global namespace, the old way */ @@ -516,6 +579,10 @@ actually an xmlCharEncoding */ struct _xmlDict *dict; /* dict used to allocate names or NULL */ void *psvi; /* for type/PSVI informations */ + int parseFlags; /* set of xmlParserOption used to parse the + document */ + int properties; /* set of xmlDocProperties for this document + set at the end of parsing */ }; @@ -525,9 +592,9 @@ /** * xmlDOMWrapAcquireNsFunction: * @ctxt: a DOM wrapper context - * @node: the context node (element or attribute) + * @node: the context node (element or attribute) * @nsName: the requested namespace name - * @nsPrefix: the requested namespace prefix + * @nsPrefix: the requested namespace prefix * * A function called to acquire namespaces (xmlNs) from the wrapper. * @@ -574,7 +641,7 @@ /** * xmlRootNode: * - * Macro for compatibility naming layer with libxml1. Maps + * Macro for compatibility naming layer with libxml1. Maps * to "children". */ #ifndef xmlRootNode @@ -588,436 +655,450 @@ /* * Some helper functions */ -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || \ + defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || \ + defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || \ + defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || \ + defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED) XMLPUBFUN int XMLCALL xmlValidateNCName (const xmlChar *value, int space); #endif #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateQName (const xmlChar *value, int space); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateName (const xmlChar *value, int space); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateNMToken (const xmlChar *value, int space); #endif -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlBuildQName (const xmlChar *ncname, const xmlChar *prefix, xmlChar *memory, int len); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlSplitQName2 (const xmlChar *name, xmlChar **prefix); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlSplitQName3 (const xmlChar *name, int *len); /* - * Handling Buffers. + * Handling Buffers, the old ones see @xmlBuf for the new ones. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme); -XMLPUBFUN xmlBufferAllocationScheme XMLCALL +XMLPUBFUN xmlBufferAllocationScheme XMLCALL xmlGetBufferAllocationScheme(void); -XMLPUBFUN xmlBufferPtr XMLCALL +XMLPUBFUN xmlBufferPtr XMLCALL xmlBufferCreate (void); -XMLPUBFUN xmlBufferPtr XMLCALL +XMLPUBFUN xmlBufferPtr XMLCALL xmlBufferCreateSize (size_t size); -XMLPUBFUN xmlBufferPtr XMLCALL +XMLPUBFUN xmlBufferPtr XMLCALL xmlBufferCreateStatic (void *mem, size_t size); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlBufferResize (xmlBufferPtr buf, unsigned int size); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlBufferFree (xmlBufferPtr buf); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlBufferDump (FILE *file, xmlBufferPtr buf); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlBufferAdd (xmlBufferPtr buf, const xmlChar *str, int len); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlBufferAddHead (xmlBufferPtr buf, const xmlChar *str, int len); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlBufferCat (xmlBufferPtr buf, const xmlChar *str); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlBufferCCat (xmlBufferPtr buf, const char *str); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlBufferShrink (xmlBufferPtr buf, unsigned int len); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlBufferGrow (xmlBufferPtr buf, unsigned int len); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlBufferEmpty (xmlBufferPtr buf); -XMLPUBFUN const xmlChar* XMLCALL - xmlBufferContent (const xmlBufferPtr buf); -XMLPUBFUN void XMLCALL +XMLPUBFUN const xmlChar* XMLCALL + xmlBufferContent (const xmlBuffer *buf); +XMLPUBFUN xmlChar* XMLCALL + xmlBufferDetach (xmlBufferPtr buf); +XMLPUBFUN void XMLCALL xmlBufferSetAllocationScheme(xmlBufferPtr buf, xmlBufferAllocationScheme scheme); -XMLPUBFUN int XMLCALL - xmlBufferLength (const xmlBufferPtr buf); +XMLPUBFUN int XMLCALL + xmlBufferLength (const xmlBuffer *buf); /* * Creating/freeing new structures. */ -XMLPUBFUN xmlDtdPtr XMLCALL +XMLPUBFUN xmlDtdPtr XMLCALL xmlCreateIntSubset (xmlDocPtr doc, const xmlChar *name, const xmlChar *ExternalID, const xmlChar *SystemID); -XMLPUBFUN xmlDtdPtr XMLCALL +XMLPUBFUN xmlDtdPtr XMLCALL xmlNewDtd (xmlDocPtr doc, const xmlChar *name, const xmlChar *ExternalID, const xmlChar *SystemID); -XMLPUBFUN xmlDtdPtr XMLCALL - xmlGetIntSubset (xmlDocPtr doc); -XMLPUBFUN void XMLCALL +XMLPUBFUN xmlDtdPtr XMLCALL + xmlGetIntSubset (const xmlDoc *doc); +XMLPUBFUN void XMLCALL xmlFreeDtd (xmlDtdPtr cur); #ifdef LIBXML_LEGACY_ENABLED -XMLPUBFUN xmlNsPtr XMLCALL +XMLPUBFUN xmlNsPtr XMLCALL xmlNewGlobalNs (xmlDocPtr doc, const xmlChar *href, const xmlChar *prefix); #endif /* LIBXML_LEGACY_ENABLED */ -XMLPUBFUN xmlNsPtr XMLCALL +XMLPUBFUN xmlNsPtr XMLCALL xmlNewNs (xmlNodePtr node, const xmlChar *href, const xmlChar *prefix); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeNs (xmlNsPtr cur); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeNsList (xmlNsPtr cur); -XMLPUBFUN xmlDocPtr XMLCALL +XMLPUBFUN xmlDocPtr XMLCALL xmlNewDoc (const xmlChar *version); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeDoc (xmlDocPtr cur); -XMLPUBFUN xmlAttrPtr XMLCALL +XMLPUBFUN xmlAttrPtr XMLCALL xmlNewDocProp (xmlDocPtr doc, const xmlChar *name, const xmlChar *value); #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlAttrPtr XMLCALL +XMLPUBFUN xmlAttrPtr XMLCALL xmlNewProp (xmlNodePtr node, const xmlChar *name, const xmlChar *value); #endif -XMLPUBFUN xmlAttrPtr XMLCALL +XMLPUBFUN xmlAttrPtr XMLCALL xmlNewNsProp (xmlNodePtr node, xmlNsPtr ns, const xmlChar *name, const xmlChar *value); -XMLPUBFUN xmlAttrPtr XMLCALL +XMLPUBFUN xmlAttrPtr XMLCALL xmlNewNsPropEatName (xmlNodePtr node, xmlNsPtr ns, xmlChar *name, const xmlChar *value); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreePropList (xmlAttrPtr cur); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeProp (xmlAttrPtr cur); -XMLPUBFUN xmlAttrPtr XMLCALL +XMLPUBFUN xmlAttrPtr XMLCALL xmlCopyProp (xmlNodePtr target, xmlAttrPtr cur); -XMLPUBFUN xmlAttrPtr XMLCALL +XMLPUBFUN xmlAttrPtr XMLCALL xmlCopyPropList (xmlNodePtr target, xmlAttrPtr cur); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlDtdPtr XMLCALL +XMLPUBFUN xmlDtdPtr XMLCALL xmlCopyDtd (xmlDtdPtr dtd); #endif /* LIBXML_TREE_ENABLED */ #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlDocPtr XMLCALL +XMLPUBFUN xmlDocPtr XMLCALL xmlCopyDoc (xmlDocPtr doc, int recursive); #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */ /* * Creating new nodes. */ -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocNode (xmlDocPtr doc, xmlNsPtr ns, const xmlChar *name, const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocNodeEatName (xmlDocPtr doc, xmlNsPtr ns, xmlChar *name, const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewNode (xmlNsPtr ns, const xmlChar *name); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewNodeEatName (xmlNsPtr ns, xmlChar *name); #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewChild (xmlNodePtr parent, xmlNsPtr ns, const xmlChar *name, const xmlChar *content); #endif -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocText (xmlDocPtr doc, +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewDocText (const xmlDoc *doc, const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewText (const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocPI (xmlDocPtr doc, const xmlChar *name, const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewPI (const xmlChar *name, const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocTextLen (xmlDocPtr doc, const xmlChar *content, int len); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewTextLen (const xmlChar *content, int len); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocComment (xmlDocPtr doc, const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewComment (const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewCDataBlock (xmlDocPtr doc, const xmlChar *content, int len); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewCharRef (xmlDocPtr doc, const xmlChar *name); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewReference (xmlDocPtr doc, +XMLPUBFUN xmlNodePtr XMLCALL + xmlNewReference (const xmlDoc *doc, const xmlChar *name); -XMLPUBFUN xmlNodePtr XMLCALL - xmlCopyNode (const xmlNodePtr node, +XMLPUBFUN xmlNodePtr XMLCALL + xmlCopyNode (xmlNodePtr node, int recursive); -XMLPUBFUN xmlNodePtr XMLCALL - xmlDocCopyNode (const xmlNodePtr node, +XMLPUBFUN xmlNodePtr XMLCALL + xmlDocCopyNode (xmlNodePtr node, xmlDocPtr doc, int recursive); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlDocCopyNodeList (xmlDocPtr doc, - const xmlNodePtr node); -XMLPUBFUN xmlNodePtr XMLCALL - xmlCopyNodeList (const xmlNodePtr node); + xmlNodePtr node); +XMLPUBFUN xmlNodePtr XMLCALL + xmlCopyNodeList (xmlNodePtr node); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewTextChild (xmlNodePtr parent, xmlNsPtr ns, const xmlChar *name, const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocRawNode (xmlDocPtr doc, xmlNsPtr ns, const xmlChar *name, const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocFragment (xmlDocPtr doc); #endif /* LIBXML_TREE_ENABLED */ /* * Navigating. */ -XMLPUBFUN long XMLCALL - xmlGetLineNo (xmlNodePtr node); +XMLPUBFUN long XMLCALL + xmlGetLineNo (const xmlNode *node); #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) -XMLPUBFUN xmlChar * XMLCALL - xmlGetNodePath (xmlNodePtr node); +XMLPUBFUN xmlChar * XMLCALL + xmlGetNodePath (const xmlNode *node); #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) */ -XMLPUBFUN xmlNodePtr XMLCALL - xmlDocGetRootElement (xmlDocPtr doc); -XMLPUBFUN xmlNodePtr XMLCALL - xmlGetLastChild (xmlNodePtr parent); -XMLPUBFUN int XMLCALL - xmlNodeIsText (xmlNodePtr node); -XMLPUBFUN int XMLCALL - xmlIsBlankNode (xmlNodePtr node); +XMLPUBFUN xmlNodePtr XMLCALL + xmlDocGetRootElement (const xmlDoc *doc); +XMLPUBFUN xmlNodePtr XMLCALL + xmlGetLastChild (const xmlNode *parent); +XMLPUBFUN int XMLCALL + xmlNodeIsText (const xmlNode *node); +XMLPUBFUN int XMLCALL + xmlIsBlankNode (const xmlNode *node); /* * Changing the structure. */ #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlDocSetRootElement (xmlDocPtr doc, xmlNodePtr root); #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */ #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeSetName (xmlNodePtr cur, const xmlChar *name); #endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlAddChild (xmlNodePtr parent, xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlAddChildList (xmlNodePtr parent, xmlNodePtr cur); #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlReplaceNode (xmlNodePtr old, xmlNodePtr cur); #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */ #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ - defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlNodePtr XMLCALL + defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) +XMLPUBFUN xmlNodePtr XMLCALL xmlAddPrevSibling (xmlNodePtr cur, xmlNodePtr elem); #endif /* LIBXML_TREE_ENABLED || LIBXML_HTML_ENABLED || LIBXML_SCHEMAS_ENABLED */ -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlAddSibling (xmlNodePtr cur, xmlNodePtr elem); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlAddNextSibling (xmlNodePtr cur, xmlNodePtr elem); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlUnlinkNode (xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlTextMerge (xmlNodePtr first, xmlNodePtr second); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextConcat (xmlNodePtr node, const xmlChar *content, int len); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeNodeList (xmlNodePtr cur); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeNode (xmlNodePtr cur); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSetTreeDoc (xmlNodePtr tree, xmlDocPtr doc); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSetListDoc (xmlNodePtr list, xmlDocPtr doc); /* * Namespaces. */ -XMLPUBFUN xmlNsPtr XMLCALL +XMLPUBFUN xmlNsPtr XMLCALL xmlSearchNs (xmlDocPtr doc, xmlNodePtr node, const xmlChar *nameSpace); -XMLPUBFUN xmlNsPtr XMLCALL +XMLPUBFUN xmlNsPtr XMLCALL xmlSearchNsByHref (xmlDocPtr doc, xmlNodePtr node, const xmlChar *href); -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlNsPtr * XMLCALL - xmlGetNsList (xmlDocPtr doc, - xmlNodePtr node); +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || \ + defined(LIBXML_SCHEMAS_ENABLED) +XMLPUBFUN xmlNsPtr * XMLCALL + xmlGetNsList (const xmlDoc *doc, + const xmlNode *node); #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSetNs (xmlNodePtr node, xmlNsPtr ns); -XMLPUBFUN xmlNsPtr XMLCALL +XMLPUBFUN xmlNsPtr XMLCALL xmlCopyNamespace (xmlNsPtr cur); -XMLPUBFUN xmlNsPtr XMLCALL +XMLPUBFUN xmlNsPtr XMLCALL xmlCopyNamespaceList (xmlNsPtr cur); /* * Changing the content. */ -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) -XMLPUBFUN xmlAttrPtr XMLCALL +#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || \ + defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) +XMLPUBFUN xmlAttrPtr XMLCALL xmlSetProp (xmlNodePtr node, const xmlChar *name, const xmlChar *value); -XMLPUBFUN xmlAttrPtr XMLCALL +XMLPUBFUN xmlAttrPtr XMLCALL xmlSetNsProp (xmlNodePtr node, xmlNsPtr ns, const xmlChar *name, const xmlChar *value); -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */ -XMLPUBFUN xmlChar * XMLCALL - xmlGetNoNsProp (xmlNodePtr node, +#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || \ + defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */ +XMLPUBFUN xmlChar * XMLCALL + xmlGetNoNsProp (const xmlNode *node, const xmlChar *name); -XMLPUBFUN xmlChar * XMLCALL - xmlGetProp (xmlNodePtr node, +XMLPUBFUN xmlChar * XMLCALL + xmlGetProp (const xmlNode *node, const xmlChar *name); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlHasProp (xmlNodePtr node, +XMLPUBFUN xmlAttrPtr XMLCALL + xmlHasProp (const xmlNode *node, const xmlChar *name); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlHasNsProp (xmlNodePtr node, +XMLPUBFUN xmlAttrPtr XMLCALL + xmlHasNsProp (const xmlNode *node, const xmlChar *name, const xmlChar *nameSpace); -XMLPUBFUN xmlChar * XMLCALL - xmlGetNsProp (xmlNodePtr node, +XMLPUBFUN xmlChar * XMLCALL + xmlGetNsProp (const xmlNode *node, const xmlChar *name, const xmlChar *nameSpace); -XMLPUBFUN xmlNodePtr XMLCALL - xmlStringGetNodeList (xmlDocPtr doc, +XMLPUBFUN xmlNodePtr XMLCALL + xmlStringGetNodeList (const xmlDoc *doc, const xmlChar *value); -XMLPUBFUN xmlNodePtr XMLCALL - xmlStringLenGetNodeList (xmlDocPtr doc, +XMLPUBFUN xmlNodePtr XMLCALL + xmlStringLenGetNodeList (const xmlDoc *doc, const xmlChar *value, int len); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlNodeListGetString (xmlDocPtr doc, - xmlNodePtr list, + const xmlNode *list, int inLine); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlChar * XMLCALL - xmlNodeListGetRawString (xmlDocPtr doc, - xmlNodePtr list, +XMLPUBFUN xmlChar * XMLCALL + xmlNodeListGetRawString (const xmlDoc *doc, + const xmlNode *list, int inLine); #endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeSetContent (xmlNodePtr cur, const xmlChar *content); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeSetContentLen (xmlNodePtr cur, const xmlChar *content, int len); #endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeAddContent (xmlNodePtr cur, const xmlChar *content); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeAddContentLen (xmlNodePtr cur, const xmlChar *content, int len); -XMLPUBFUN xmlChar * XMLCALL - xmlNodeGetContent (xmlNodePtr cur); +XMLPUBFUN xmlChar * XMLCALL + xmlNodeGetContent (const xmlNode *cur); + XMLPUBFUN int XMLCALL xmlNodeBufGetContent (xmlBufferPtr buffer, - xmlNodePtr cur); -XMLPUBFUN xmlChar * XMLCALL - xmlNodeGetLang (xmlNodePtr cur); -XMLPUBFUN int XMLCALL - xmlNodeGetSpacePreserve (xmlNodePtr cur); + const xmlNode *cur); +XMLPUBFUN int XMLCALL + xmlBufGetNodeContent (xmlBufPtr buf, + const xmlNode *cur); + +XMLPUBFUN xmlChar * XMLCALL + xmlNodeGetLang (const xmlNode *cur); +XMLPUBFUN int XMLCALL + xmlNodeGetSpacePreserve (const xmlNode *cur); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeSetLang (xmlNodePtr cur, const xmlChar *lang); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeSetSpacePreserve (xmlNodePtr cur, int val); #endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN xmlChar * XMLCALL - xmlNodeGetBase (xmlDocPtr doc, - xmlNodePtr cur); +XMLPUBFUN xmlChar * XMLCALL + xmlNodeGetBase (const xmlDoc *doc, + const xmlNode *cur); #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeSetBase (xmlNodePtr cur, const xmlChar *uri); #endif @@ -1025,14 +1106,14 @@ /* * Removing content. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRemoveProp (xmlAttrPtr cur); #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlUnsetNsProp (xmlNodePtr node, xmlNsPtr ns, const xmlChar *name); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlUnsetProp (xmlNodePtr node, const xmlChar *name); #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */ @@ -1040,13 +1121,13 @@ /* * Internal, don't use. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlBufferWriteCHAR (xmlBufferPtr buf, const xmlChar *string); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlBufferWriteChar (xmlBufferPtr buf, const char *string); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlBufferWriteQuotedString(xmlBufferPtr buf, const xmlChar *string); @@ -1061,7 +1142,7 @@ /* * Namespace handling. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlReconciliateNs (xmlDocPtr doc, xmlNodePtr tree); #endif @@ -1070,61 +1151,67 @@ /* * Saving. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDocDumpFormatMemory (xmlDocPtr cur, xmlChar **mem, int *size, int format); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDocDumpMemory (xmlDocPtr cur, xmlChar **mem, int *size); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDocDumpMemoryEnc (xmlDocPtr out_doc, xmlChar **doc_txt_ptr, int * doc_txt_len, const char *txt_encoding); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc, xmlChar **doc_txt_ptr, int * doc_txt_len, const char *txt_encoding, int format); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlDocFormatDump (FILE *f, xmlDocPtr cur, int format); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlDocDump (FILE *f, xmlDocPtr cur); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlElemDump (FILE *f, xmlDocPtr doc, xmlNodePtr cur); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSaveFile (const char *filename, xmlDocPtr cur); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSaveFormatFile (const char *filename, xmlDocPtr cur, int format); -XMLPUBFUN int XMLCALL +XMLPUBFUN size_t XMLCALL + xmlBufNodeDump (xmlBufPtr buf, + xmlDocPtr doc, + xmlNodePtr cur, + int level, + int format); +XMLPUBFUN int XMLCALL xmlNodeDump (xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level, int format); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSaveFileTo (xmlOutputBufferPtr buf, xmlDocPtr cur, const char *encoding); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSaveFormatFileTo (xmlOutputBufferPtr buf, xmlDocPtr cur, const char *encoding, int format); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlNodeDumpOutput (xmlOutputBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, @@ -1132,13 +1219,13 @@ int format, const char *encoding); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSaveFormatFileEnc (const char *filename, xmlDocPtr cur, const char *encoding, int format); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSaveFileEnc (const char *filename, xmlDocPtr cur, const char *encoding); @@ -1147,21 +1234,21 @@ /* * XHTML */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlIsXHTML (const xmlChar *systemID, const xmlChar *publicID); /* * Compression. */ -XMLPUBFUN int XMLCALL - xmlGetDocCompressMode (xmlDocPtr doc); -XMLPUBFUN void XMLCALL +XMLPUBFUN int XMLCALL + xmlGetDocCompressMode (const xmlDoc *doc); +XMLPUBFUN void XMLCALL xmlSetDocCompressMode (xmlDocPtr doc, int mode); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlGetCompressMode (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSetCompressMode (int mode); /* @@ -1179,7 +1266,7 @@ xmlDOMWrapAdoptNode (xmlDOMWrapCtxtPtr ctxt, xmlDocPtr sourceDoc, xmlNodePtr node, - xmlDocPtr destDoc, + xmlDocPtr destDoc, xmlNodePtr destParent, int options); XMLPUBFUN int XMLCALL @@ -1197,6 +1284,22 @@ int deep, int options); +#ifdef LIBXML_TREE_ENABLED +/* + * 5 interfaces from DOM ElementTraversal, but different in entities + * traversal. + */ +XMLPUBFUN unsigned long XMLCALL + xmlChildElementCount (xmlNodePtr parent); +XMLPUBFUN xmlNodePtr XMLCALL + xmlNextElementSibling (xmlNodePtr node); +XMLPUBFUN xmlNodePtr XMLCALL + xmlFirstElementChild (xmlNodePtr parent); +XMLPUBFUN xmlNodePtr XMLCALL + xmlLastElementChild (xmlNodePtr parent); +XMLPUBFUN xmlNodePtr XMLCALL + xmlPreviousElementSibling (xmlNodePtr node); +#endif #ifdef __cplusplus } #endif diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/uri.c gettext-0.19.7/gnulib-local/lib/libxml/uri.c --- gettext-0.19.6/gnulib-local/lib/libxml/uri.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/uri.c 2015-12-23 07:08:27.000000000 +0000 @@ -1,7 +1,7 @@ /** - * uri.c: set of generic URI related routines + * uri.c: set of generic URI related routines * - * Reference: RFCs 2396, 2732 and 2373 + * Reference: RFCs 3986, 2732 and 2373 * * See Copyright for the status of this software. * @@ -18,14 +18,41 @@ #include #include -/************************************************************************ - * * - * Macros to differentiate various character type * - * directly extracted from RFC 2396 * - * * - ************************************************************************/ +/** + * MAX_URI_LENGTH: + * + * The definition of the URI regexp in the above RFC has no size limit + * In practice they are usually relativey short except for the + * data URI scheme as defined in RFC 2397. Even for data URI the usual + * maximum size before hitting random practical limits is around 64 KB + * and 4KB is usually a maximum admitted limit for proper operations. + * The value below is more a security limit than anything else and + * really should never be hit by 'normal' operations + * Set to 1 MByte in 2012, this is only enforced on output + */ +#define MAX_URI_LENGTH 1024 * 1024 + +static void +xmlURIErrMemory(const char *extra) +{ + if (extra) + __xmlRaiseError(NULL, NULL, NULL, + NULL, NULL, XML_FROM_URI, + XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0, + extra, NULL, NULL, 0, 0, + "Memory allocation failed : %s\n", extra); + else + __xmlRaiseError(NULL, NULL, NULL, + NULL, NULL, XML_FROM_URI, + XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0, + NULL, NULL, NULL, 0, 0, + "Memory allocation failed\n"); +} + +static void xmlCleanURI(xmlURIPtr uri); /* + * Old rule from 2396 used in legacy handling code * alpha = lowalpha | upalpha */ #define IS_ALPHA(x) (IS_LOWALPHA(x) || IS_UPALPHA(x)) @@ -61,31 +88,30 @@ #define IS_ALPHANUM(x) (IS_ALPHA(x) || IS_DIGIT(x)) /* - * hex = digit | "A" | "B" | "C" | "D" | "E" | "F" | - * "a" | "b" | "c" | "d" | "e" | "f" - */ - -#define IS_HEX(x) ((IS_DIGIT(x)) || (((x) >= 'a') && ((x) <= 'f')) || \ - (((x) >= 'A') && ((x) <= 'F'))) - -/* * mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")" */ -#define IS_MARK(x) (((x) == '-') || ((x) == '_') || ((x) == '.') || \ - ((x) == '!') || ((x) == '~') || ((x) == '*') || ((x) == '\'') || \ +#define IS_MARK(x) (((x) == '-') || ((x) == '_') || ((x) == '.') || \ + ((x) == '!') || ((x) == '~') || ((x) == '*') || ((x) == '\'') || \ ((x) == '(') || ((x) == ')')) +/* + * unwise = "{" | "}" | "|" | "\" | "^" | "`" + */ +#define IS_UNWISE(p) \ + (((*(p) == '{')) || ((*(p) == '}')) || ((*(p) == '|')) || \ + ((*(p) == '\\')) || ((*(p) == '^')) || ((*(p) == '[')) || \ + ((*(p) == ']')) || ((*(p) == '`'))) /* * reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," | - * "[" | "]" + * "[" | "]" */ -#define IS_RESERVED(x) (((x) == ';') || ((x) == '/') || ((x) == '?') || \ - ((x) == ':') || ((x) == '@') || ((x) == '&') || ((x) == '=') || \ - ((x) == '+') || ((x) == '$') || ((x) == ',') || ((x) == '[') || \ - ((x) == ']')) +#define IS_RESERVED(x) (((x) == ';') || ((x) == '/') || ((x) == '?') || \ + ((x) == ':') || ((x) == '@') || ((x) == '&') || ((x) == '=') || \ + ((x) == '+') || ((x) == '$') || ((x) == ',') || ((x) == '[') || \ + ((x) == ']')) /* * unreserved = alphanum | mark @@ -94,1741 +120,1740 @@ #define IS_UNRESERVED(x) (IS_ALPHANUM(x) || IS_MARK(x)) /* - * escaped = "%" hex hex + * Skip to next pointer char, handle escaped sequences */ -#define IS_ESCAPED(p) ((*(p) == '%') && (IS_HEX((p)[1])) && \ - (IS_HEX((p)[2]))) +#define NEXT(p) ((*p == '%')? p += 3 : p++) /* - * uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" | - * "&" | "=" | "+" | "$" | "," + * Productions from the spec. + * + * authority = server | reg_name + * reg_name = 1*( unreserved | escaped | "$" | "," | + * ";" | ":" | "@" | "&" | "=" | "+" ) + * + * path = [ abs_path | opaque_part ] */ -#define IS_URIC_NO_SLASH(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) ||\ - ((*(p) == ';')) || ((*(p) == '?')) || ((*(p) == ':')) ||\ - ((*(p) == '@')) || ((*(p) == '&')) || ((*(p) == '=')) ||\ - ((*(p) == '+')) || ((*(p) == '$')) || ((*(p) == ','))) + +#define STRNDUP(s, n) (char *) xmlStrndup((const xmlChar *)(s), (n)) + +/************************************************************************ + * * + * RFC 3986 parser * + * * + ************************************************************************/ + +#define ISA_DIGIT(p) ((*(p) >= '0') && (*(p) <= '9')) +#define ISA_ALPHA(p) (((*(p) >= 'a') && (*(p) <= 'z')) || \ + ((*(p) >= 'A') && (*(p) <= 'Z'))) +#define ISA_HEXDIG(p) \ + (ISA_DIGIT(p) || ((*(p) >= 'a') && (*(p) <= 'f')) || \ + ((*(p) >= 'A') && (*(p) <= 'F'))) /* - * pchar = unreserved | escaped | ":" | "@" | "&" | "=" | "+" | "$" | "," + * sub-delims = "!" / "$" / "&" / "'" / "(" / ")" + * / "*" / "+" / "," / ";" / "=" */ -#define IS_PCHAR(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) || \ - ((*(p) == ':')) || ((*(p) == '@')) || ((*(p) == '&')) ||\ - ((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) ||\ - ((*(p) == ','))) +#define ISA_SUB_DELIM(p) \ + (((*(p) == '!')) || ((*(p) == '$')) || ((*(p) == '&')) || \ + ((*(p) == '(')) || ((*(p) == ')')) || ((*(p) == '*')) || \ + ((*(p) == '+')) || ((*(p) == ',')) || ((*(p) == ';')) || \ + ((*(p) == '=')) || ((*(p) == '\''))) /* - * rel_segment = 1*( unreserved | escaped | - * ";" | "@" | "&" | "=" | "+" | "$" | "," ) + * gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@" */ - -#define IS_SEGMENT(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) || \ - ((*(p) == ';')) || ((*(p) == '@')) || ((*(p) == '&')) || \ - ((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) || \ - ((*(p) == ','))) +#define ISA_GEN_DELIM(p) \ + (((*(p) == ':')) || ((*(p) == '/')) || ((*(p) == '?')) || \ + ((*(p) == '#')) || ((*(p) == '[')) || ((*(p) == ']')) || \ + ((*(p) == '@'))) /* - * scheme = alpha *( alpha | digit | "+" | "-" | "." ) + * reserved = gen-delims / sub-delims */ - -#define IS_SCHEME(x) ((IS_ALPHA(x)) || (IS_DIGIT(x)) || \ - ((x) == '+') || ((x) == '-') || ((x) == '.')) +#define ISA_RESERVED(p) (ISA_GEN_DELIM(p) || (ISA_SUB_DELIM(p))) /* - * reg_name = 1*( unreserved | escaped | "$" | "," | - * ";" | ":" | "@" | "&" | "=" | "+" ) + * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" */ - -#define IS_REG_NAME(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) || \ - ((*(p) == '$')) || ((*(p) == ',')) || ((*(p) == ';')) || \ - ((*(p) == ':')) || ((*(p) == '@')) || ((*(p) == '&')) || \ - ((*(p) == '=')) || ((*(p) == '+'))) +#define ISA_UNRESERVED(p) \ + ((ISA_ALPHA(p)) || (ISA_DIGIT(p)) || ((*(p) == '-')) || \ + ((*(p) == '.')) || ((*(p) == '_')) || ((*(p) == '~'))) /* - * userinfo = *( unreserved | escaped | ";" | ":" | "&" | "=" | - * "+" | "$" | "," ) + * pct-encoded = "%" HEXDIG HEXDIG */ -#define IS_USERINFO(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) || \ - ((*(p) == ';')) || ((*(p) == ':')) || ((*(p) == '&')) || \ - ((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) || \ - ((*(p) == ','))) +#define ISA_PCT_ENCODED(p) \ + ((*(p) == '%') && (ISA_HEXDIG(p + 1)) && (ISA_HEXDIG(p + 2))) /* - * uric = reserved | unreserved | escaped + * pchar = unreserved / pct-encoded / sub-delims / ":" / "@" */ +#define ISA_PCHAR(p) \ + (ISA_UNRESERVED(p) || ISA_PCT_ENCODED(p) || ISA_SUB_DELIM(p) || \ + ((*(p) == ':')) || ((*(p) == '@'))) -#define IS_URIC(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) || \ - (IS_RESERVED(*(p)))) +/** + * xmlParse3986Scheme: + * @uri: pointer to an URI structure + * @str: pointer to the string to analyze + * + * Parse an URI scheme + * + * ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) + * + * Returns 0 or the error code + */ +static int +xmlParse3986Scheme(xmlURIPtr uri, const char **str) { + const char *cur; -/* -* unwise = "{" | "}" | "|" | "\" | "^" | "`" -*/ + if (str == NULL) + return(-1); -#define IS_UNWISE(p) \ - (((*(p) == '{')) || ((*(p) == '}')) || ((*(p) == '|')) || \ - ((*(p) == '\\')) || ((*(p) == '^')) || ((*(p) == '[')) || \ - ((*(p) == ']')) || ((*(p) == '`'))) + cur = *str; + if (!ISA_ALPHA(cur)) + return(2); + cur++; + while (ISA_ALPHA(cur) || ISA_DIGIT(cur) || + (*cur == '+') || (*cur == '-') || (*cur == '.')) cur++; + if (uri != NULL) { + if (uri->scheme != NULL) xmlFree(uri->scheme); + uri->scheme = STRNDUP(*str, cur - *str); + } + *str = cur; + return(0); +} -/* - * Skip to next pointer char, handle escaped sequences +/** + * xmlParse3986Fragment: + * @uri: pointer to an URI structure + * @str: pointer to the string to analyze + * + * Parse the query part of an URI + * + * fragment = *( pchar / "/" / "?" ) + * NOTE: the strict syntax as defined by 3986 does not allow '[' and ']' + * in the fragment identifier but this is used very broadly for + * xpointer scheme selection, so we are allowing it here to not break + * for example all the DocBook processing chains. + * + * Returns 0 or the error code */ +static int +xmlParse3986Fragment(xmlURIPtr uri, const char **str) +{ + const char *cur; -#define NEXT(p) ((*p == '%')? p += 3 : p++) + if (str == NULL) + return (-1); -/* - * Productions from the spec. + cur = *str; + + while ((ISA_PCHAR(cur)) || (*cur == '/') || (*cur == '?') || + (*cur == '[') || (*cur == ']') || + ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) + NEXT(cur); + if (uri != NULL) { + if (uri->fragment != NULL) + xmlFree(uri->fragment); + if (uri->cleanup & 2) + uri->fragment = STRNDUP(*str, cur - *str); + else + uri->fragment = xmlURIUnescapeString(*str, cur - *str, NULL); + } + *str = cur; + return (0); +} + +/** + * xmlParse3986Query: + * @uri: pointer to an URI structure + * @str: pointer to the string to analyze * - * authority = server | reg_name - * reg_name = 1*( unreserved | escaped | "$" | "," | - * ";" | ":" | "@" | "&" | "=" | "+" ) + * Parse the query part of an URI * - * path = [ abs_path | opaque_part ] + * query = *uric + * + * Returns 0 or the error code */ +static int +xmlParse3986Query(xmlURIPtr uri, const char **str) +{ + const char *cur; -#define STRNDUP(s, n) (char *) xmlStrndup((const xmlChar *)(s), (n)) + if (str == NULL) + return (-1); -/************************************************************************ - * * - * Generic URI structure functions * - * * - ************************************************************************/ + cur = *str; + + while ((ISA_PCHAR(cur)) || (*cur == '/') || (*cur == '?') || + ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) + NEXT(cur); + if (uri != NULL) { + if (uri->query != NULL) + xmlFree(uri->query); + if (uri->cleanup & 2) + uri->query = STRNDUP(*str, cur - *str); + else + uri->query = xmlURIUnescapeString(*str, cur - *str, NULL); + + /* Save the raw bytes of the query as well. + * See: http://mail.gnome.org/archives/xml/2007-April/thread.html#00114 + */ + if (uri->query_raw != NULL) + xmlFree (uri->query_raw); + uri->query_raw = STRNDUP (*str, cur - *str); + } + *str = cur; + return (0); +} /** - * xmlCreateURI: + * xmlParse3986Port: + * @uri: pointer to an URI structure + * @str: the string to analyze * - * Simply creates an empty xmlURI + * Parse a port part and fills in the appropriate fields + * of the @uri structure * - * Returns the new structure or NULL in case of error + * port = *DIGIT + * + * Returns 0 or the error code */ -xmlURIPtr -xmlCreateURI(void) { - xmlURIPtr ret; +static int +xmlParse3986Port(xmlURIPtr uri, const char **str) +{ + const char *cur = *str; - ret = (xmlURIPtr) xmlMalloc(sizeof(xmlURI)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlCreateURI: out of memory\n"); - return(NULL); + if (ISA_DIGIT(cur)) { + if (uri != NULL) + uri->port = 0; + while (ISA_DIGIT(cur)) { + if (uri != NULL) + uri->port = uri->port * 10 + (*cur - '0'); + cur++; + } + *str = cur; + return(0); } - memset(ret, 0, sizeof(xmlURI)); - return(ret); + return(1); } /** - * xmlSaveUri: - * @uri: pointer to an xmlURI + * xmlParse3986Userinfo: + * @uri: pointer to an URI structure + * @str: the string to analyze * - * Save the URI as an escaped string + * Parse an user informations part and fills in the appropriate fields + * of the @uri structure * - * Returns a new string (to be deallocated by caller) + * userinfo = *( unreserved / pct-encoded / sub-delims / ":" ) + * + * Returns 0 or the error code */ -xmlChar * -xmlSaveUri(xmlURIPtr uri) { - xmlChar *ret = NULL; - const char *p; - int len; - int max; +static int +xmlParse3986Userinfo(xmlURIPtr uri, const char **str) +{ + const char *cur; - if (uri == NULL) return(NULL); + cur = *str; + while (ISA_UNRESERVED(cur) || ISA_PCT_ENCODED(cur) || + ISA_SUB_DELIM(cur) || (*cur == ':')) + NEXT(cur); + if (*cur == '@') { + if (uri != NULL) { + if (uri->user != NULL) xmlFree(uri->user); + if (uri->cleanup & 2) + uri->user = STRNDUP(*str, cur - *str); + else + uri->user = xmlURIUnescapeString(*str, cur - *str, NULL); + } + *str = cur; + return(0); + } + return(1); +} +/** + * xmlParse3986DecOctet: + * @str: the string to analyze + * + * dec-octet = DIGIT ; 0-9 + * / %x31-39 DIGIT ; 10-99 + * / "1" 2DIGIT ; 100-199 + * / "2" %x30-34 DIGIT ; 200-249 + * / "25" %x30-35 ; 250-255 + * + * Skip a dec-octet. + * + * Returns 0 if found and skipped, 1 otherwise + */ +static int +xmlParse3986DecOctet(const char **str) { + const char *cur = *str; - max = 80; - ret = (xmlChar *) xmlMallocAtomic((max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - len = 0; + if (!(ISA_DIGIT(cur))) + return(1); + if (!ISA_DIGIT(cur+1)) + cur++; + else if ((*cur != '0') && (ISA_DIGIT(cur + 1)) && (!ISA_DIGIT(cur+2))) + cur += 2; + else if ((*cur == '1') && (ISA_DIGIT(cur + 1)) && (ISA_DIGIT(cur + 2))) + cur += 3; + else if ((*cur == '2') && (*(cur + 1) >= '0') && + (*(cur + 1) <= '4') && (ISA_DIGIT(cur + 2))) + cur += 3; + else if ((*cur == '2') && (*(cur + 1) == '5') && + (*(cur + 2) >= '0') && (*(cur + 1) <= '5')) + cur += 3; + else + return(1); + *str = cur; + return(0); +} +/** + * xmlParse3986Host: + * @uri: pointer to an URI structure + * @str: the string to analyze + * + * Parse an host part and fills in the appropriate fields + * of the @uri structure + * + * host = IP-literal / IPv4address / reg-name + * IP-literal = "[" ( IPv6address / IPvFuture ) "]" + * IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet + * reg-name = *( unreserved / pct-encoded / sub-delims ) + * + * Returns 0 or the error code + */ +static int +xmlParse3986Host(xmlURIPtr uri, const char **str) +{ + const char *cur = *str; + const char *host; - if (uri->scheme != NULL) { - p = uri->scheme; - while (*p != 0) { - if (len >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = *p++; - } - if (len >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = ':'; + host = cur; + /* + * IPv6 and future adressing scheme are enclosed between brackets + */ + if (*cur == '[') { + cur++; + while ((*cur != ']') && (*cur != 0)) + cur++; + if (*cur != ']') + return(1); + cur++; + goto found; } - if (uri->opaque != NULL) { - p = uri->opaque; - while (*p != 0) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - if (IS_RESERVED(*(p)) || IS_UNRESERVED(*(p))) - ret[len++] = *p++; - else { - int val = *(unsigned char *)p++; - int hi = val / 0x10, lo = val % 0x10; - ret[len++] = '%'; - ret[len++] = hi + (hi > 9? 'A'-10 : '0'); - ret[len++] = lo + (lo > 9? 'A'-10 : '0'); - } - } - } else { - if (uri->server != NULL) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = '/'; - ret[len++] = '/'; - if (uri->user != NULL) { - p = uri->user; - while (*p != 0) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - if ((IS_UNRESERVED(*(p))) || - ((*(p) == ';')) || ((*(p) == ':')) || - ((*(p) == '&')) || ((*(p) == '=')) || - ((*(p) == '+')) || ((*(p) == '$')) || - ((*(p) == ','))) - ret[len++] = *p++; - else { - int val = *(unsigned char *)p++; - int hi = val / 0x10, lo = val % 0x10; - ret[len++] = '%'; - ret[len++] = hi + (hi > 9? 'A'-10 : '0'); - ret[len++] = lo + (lo > 9? 'A'-10 : '0'); - } - } - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = '@'; - } - p = uri->server; - while (*p != 0) { - if (len >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = *p++; - } - if (uri->port > 0) { - if (len + 10 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - len += snprintf((char *) &ret[len], max - len, ":%d", uri->port); - } - } else if (uri->authority != NULL) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = '/'; - ret[len++] = '/'; - p = uri->authority; - while (*p != 0) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - if ((IS_UNRESERVED(*(p))) || - ((*(p) == '$')) || ((*(p) == ',')) || ((*(p) == ';')) || - ((*(p) == ':')) || ((*(p) == '@')) || ((*(p) == '&')) || - ((*(p) == '=')) || ((*(p) == '+'))) - ret[len++] = *p++; - else { - int val = *(unsigned char *)p++; - int hi = val / 0x10, lo = val % 0x10; - ret[len++] = '%'; - ret[len++] = hi + (hi > 9? 'A'-10 : '0'); - ret[len++] = lo + (lo > 9? 'A'-10 : '0'); - } - } - } else if (uri->scheme != NULL) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = '/'; - ret[len++] = '/'; - } - if (uri->path != NULL) { - p = uri->path; - while (*p != 0) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - if ((IS_UNRESERVED(*(p))) || ((*(p) == '/')) || - ((*(p) == ';')) || ((*(p) == '@')) || ((*(p) == '&')) || - ((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) || - ((*(p) == ','))) - ret[len++] = *p++; - else { - int val = *(unsigned char *)p++; - int hi = val / 0x10, lo = val % 0x10; - ret[len++] = '%'; - ret[len++] = hi + (hi > 9? 'A'-10 : '0'); - ret[len++] = lo + (lo > 9? 'A'-10 : '0'); - } - } - } - if (uri->query != NULL) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = '?'; - p = uri->query; - while (*p != 0) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) - ret[len++] = *p++; - else { - int val = *(unsigned char *)p++; - int hi = val / 0x10, lo = val % 0x10; - ret[len++] = '%'; - ret[len++] = hi + (hi > 9? 'A'-10 : '0'); - ret[len++] = lo + (lo > 9? 'A'-10 : '0'); - } - } - } - } - if (uri->fragment != NULL) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - ret[len++] = '#'; - p = uri->fragment; - while (*p != 0) { - if (len + 3 >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, - (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } - } - if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) - ret[len++] = *p++; - else { - int val = *(unsigned char *)p++; - int hi = val / 0x10, lo = val % 0x10; - ret[len++] = '%'; - ret[len++] = hi + (hi > 9? 'A'-10 : '0'); - ret[len++] = lo + (lo > 9? 'A'-10 : '0'); - } - } + /* + * try to parse an IPv4 + */ + if (ISA_DIGIT(cur)) { + if (xmlParse3986DecOctet(&cur) != 0) + goto not_ipv4; + if (*cur != '.') + goto not_ipv4; + cur++; + if (xmlParse3986DecOctet(&cur) != 0) + goto not_ipv4; + if (*cur != '.') + goto not_ipv4; + if (xmlParse3986DecOctet(&cur) != 0) + goto not_ipv4; + if (*cur != '.') + goto not_ipv4; + if (xmlParse3986DecOctet(&cur) != 0) + goto not_ipv4; + goto found; +not_ipv4: + cur = *str; } - if (len >= max) { - max *= 2; - ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlSaveUri: out of memory\n"); - return(NULL); - } + /* + * then this should be a hostname which can be empty + */ + while (ISA_UNRESERVED(cur) || ISA_PCT_ENCODED(cur) || ISA_SUB_DELIM(cur)) + NEXT(cur); +found: + if (uri != NULL) { + if (uri->authority != NULL) xmlFree(uri->authority); + uri->authority = NULL; + if (uri->server != NULL) xmlFree(uri->server); + if (cur != host) { + if (uri->cleanup & 2) + uri->server = STRNDUP(host, cur - host); + else + uri->server = xmlURIUnescapeString(host, cur - host, NULL); + } else + uri->server = NULL; } - ret[len++] = 0; - return(ret); + *str = cur; + return(0); } /** - * xmlPrintURI: - * @stream: a FILE* for the output - * @uri: pointer to an xmlURI + * xmlParse3986Authority: + * @uri: pointer to an URI structure + * @str: the string to analyze * - * Prints the URI in the stream @stream. + * Parse an authority part and fills in the appropriate fields + * of the @uri structure + * + * authority = [ userinfo "@" ] host [ ":" port ] + * + * Returns 0 or the error code */ -void -xmlPrintURI(FILE *stream, xmlURIPtr uri) { - xmlChar *out; +static int +xmlParse3986Authority(xmlURIPtr uri, const char **str) +{ + const char *cur; + int ret; - out = xmlSaveUri(uri); - if (out != NULL) { - fprintf(stream, "%s", (char *) out); - xmlFree(out); + cur = *str; + /* + * try to parse an userinfo and check for the trailing @ + */ + ret = xmlParse3986Userinfo(uri, &cur); + if ((ret != 0) || (*cur != '@')) + cur = *str; + else + cur++; + ret = xmlParse3986Host(uri, &cur); + if (ret != 0) return(ret); + if (*cur == ':') { + cur++; + ret = xmlParse3986Port(uri, &cur); + if (ret != 0) return(ret); } + *str = cur; + return(0); } /** - * xmlCleanURI: - * @uri: pointer to an xmlURI + * xmlParse3986Segment: + * @str: the string to analyze + * @forbid: an optional forbidden character + * @empty: allow an empty segment * - * Make sure the xmlURI struct is free of content + * Parse a segment and fills in the appropriate fields + * of the @uri structure + * + * segment = *pchar + * segment-nz = 1*pchar + * segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" ) + * ; non-zero-length segment without any colon ":" + * + * Returns 0 or the error code */ -static void -xmlCleanURI(xmlURIPtr uri) { - if (uri == NULL) return; +static int +xmlParse3986Segment(const char **str, char forbid, int empty) +{ + const char *cur; - if (uri->scheme != NULL) xmlFree(uri->scheme); - uri->scheme = NULL; - if (uri->server != NULL) xmlFree(uri->server); - uri->server = NULL; - if (uri->user != NULL) xmlFree(uri->user); - uri->user = NULL; - if (uri->path != NULL) xmlFree(uri->path); - uri->path = NULL; - if (uri->fragment != NULL) xmlFree(uri->fragment); - uri->fragment = NULL; - if (uri->opaque != NULL) xmlFree(uri->opaque); - uri->opaque = NULL; - if (uri->authority != NULL) xmlFree(uri->authority); - uri->authority = NULL; - if (uri->query != NULL) xmlFree(uri->query); - uri->query = NULL; + cur = *str; + if (!ISA_PCHAR(cur)) { + if (empty) + return(0); + return(1); + } + while (ISA_PCHAR(cur) && (*cur != forbid)) + NEXT(cur); + *str = cur; + return (0); } /** - * xmlFreeURI: - * @uri: pointer to an xmlURI + * xmlParse3986PathAbEmpty: + * @uri: pointer to an URI structure + * @str: the string to analyze * - * Free up the xmlURI struct + * Parse an path absolute or empty and fills in the appropriate fields + * of the @uri structure + * + * path-abempty = *( "/" segment ) + * + * Returns 0 or the error code */ -void -xmlFreeURI(xmlURIPtr uri) { - if (uri == NULL) return; +static int +xmlParse3986PathAbEmpty(xmlURIPtr uri, const char **str) +{ + const char *cur; + int ret; - if (uri->scheme != NULL) xmlFree(uri->scheme); - if (uri->server != NULL) xmlFree(uri->server); - if (uri->user != NULL) xmlFree(uri->user); - if (uri->path != NULL) xmlFree(uri->path); - if (uri->fragment != NULL) xmlFree(uri->fragment); - if (uri->opaque != NULL) xmlFree(uri->opaque); - if (uri->authority != NULL) xmlFree(uri->authority); - if (uri->query != NULL) xmlFree(uri->query); - xmlFree(uri); -} + cur = *str; -/************************************************************************ - * * - * Helper functions * - * * - ************************************************************************/ + while (*cur == '/') { + cur++; + ret = xmlParse3986Segment(&cur, 0, 1); + if (ret != 0) return(ret); + } + if (uri != NULL) { + if (uri->path != NULL) xmlFree(uri->path); + if (*str != cur) { + if (uri->cleanup & 2) + uri->path = STRNDUP(*str, cur - *str); + else + uri->path = xmlURIUnescapeString(*str, cur - *str, NULL); + } else { + uri->path = NULL; + } + } + *str = cur; + return (0); +} /** - * xmlNormalizeURIPath: - * @path: pointer to the path string + * xmlParse3986PathAbsolute: + * @uri: pointer to an URI structure + * @str: the string to analyze * - * Applies the 5 normalization steps to a path string--that is, RFC 2396 - * Section 5.2, steps 6.c through 6.g. + * Parse an path absolute and fills in the appropriate fields + * of the @uri structure * - * Normalization occurs directly on the string, no new allocation is done + * path-absolute = "/" [ segment-nz *( "/" segment ) ] * - * Returns 0 or an error code + * Returns 0 or the error code */ -int -xmlNormalizeURIPath(char *path) { - char *cur, *out; - - if (path == NULL) - return(-1); - - /* Skip all initial "/" chars. We want to get to the beginning of the - * first non-empty segment. - */ - cur = path; - while (cur[0] == '/') - ++cur; - if (cur[0] == '\0') - return(0); - - /* Keep everything we've seen so far. */ - out = cur; - - /* - * Analyze each segment in sequence for cases (c) and (d). - */ - while (cur[0] != '\0') { - /* - * c) All occurrences of "./", where "." is a complete path segment, - * are removed from the buffer string. - */ - if ((cur[0] == '.') && (cur[1] == '/')) { - cur += 2; - /* '//' normalization should be done at this point too */ - while (cur[0] == '/') - cur++; - continue; - } +static int +xmlParse3986PathAbsolute(xmlURIPtr uri, const char **str) +{ + const char *cur; + int ret; - /* - * d) If the buffer string ends with "." as a complete path segment, - * that "." is removed. - */ - if ((cur[0] == '.') && (cur[1] == '\0')) - break; + cur = *str; - /* Otherwise keep the segment. */ - while (cur[0] != '/') { - if (cur[0] == '\0') - goto done_cd; - (out++)[0] = (cur++)[0]; - } - /* nomalize // */ - while ((cur[0] == '/') && (cur[1] == '/')) + if (*cur != '/') + return(1); + cur++; + ret = xmlParse3986Segment(&cur, 0, 0); + if (ret == 0) { + while (*cur == '/') { cur++; - - (out++)[0] = (cur++)[0]; + ret = xmlParse3986Segment(&cur, 0, 1); + if (ret != 0) return(ret); + } } - done_cd: - out[0] = '\0'; - - /* Reset to the beginning of the first segment for the next sequence. */ - cur = path; - while (cur[0] == '/') - ++cur; - if (cur[0] == '\0') - return(0); - - /* - * Analyze each segment in sequence for cases (e) and (f). - * - * e) All occurrences of "/../", where is a - * complete path segment not equal to "..", are removed from the - * buffer string. Removal of these path segments is performed - * iteratively, removing the leftmost matching pattern on each - * iteration, until no matching pattern remains. - * - * f) If the buffer string ends with "/..", where - * is a complete path segment not equal to "..", that - * "/.." is removed. - * - * To satisfy the "iterative" clause in (e), we need to collapse the - * string every time we find something that needs to be removed. Thus, - * we don't need to keep two pointers into the string: we only need a - * "current position" pointer. - */ - while (1) { - char *segp, *tmp; - - /* At the beginning of each iteration of this loop, "cur" points to - * the first character of the segment we want to examine. - */ + if (uri != NULL) { + if (uri->path != NULL) xmlFree(uri->path); + if (cur != *str) { + if (uri->cleanup & 2) + uri->path = STRNDUP(*str, cur - *str); + else + uri->path = xmlURIUnescapeString(*str, cur - *str, NULL); + } else { + uri->path = NULL; + } + } + *str = cur; + return (0); +} - /* Find the end of the current segment. */ - segp = cur; - while ((segp[0] != '/') && (segp[0] != '\0')) - ++segp; +/** + * xmlParse3986PathRootless: + * @uri: pointer to an URI structure + * @str: the string to analyze + * + * Parse an path without root and fills in the appropriate fields + * of the @uri structure + * + * path-rootless = segment-nz *( "/" segment ) + * + * Returns 0 or the error code + */ +static int +xmlParse3986PathRootless(xmlURIPtr uri, const char **str) +{ + const char *cur; + int ret; - /* If this is the last segment, we're done (we need at least two - * segments to meet the criteria for the (e) and (f) cases). - */ - if (segp[0] == '\0') - break; + cur = *str; - /* If the first segment is "..", or if the next segment _isn't_ "..", - * keep this segment and try the next one. - */ - ++segp; - if (((cur[0] == '.') && (cur[1] == '.') && (segp == cur+3)) - || ((segp[0] != '.') || (segp[1] != '.') - || ((segp[2] != '/') && (segp[2] != '\0')))) { - cur = segp; - continue; + ret = xmlParse3986Segment(&cur, 0, 0); + if (ret != 0) return(ret); + while (*cur == '/') { + cur++; + ret = xmlParse3986Segment(&cur, 0, 1); + if (ret != 0) return(ret); + } + if (uri != NULL) { + if (uri->path != NULL) xmlFree(uri->path); + if (cur != *str) { + if (uri->cleanup & 2) + uri->path = STRNDUP(*str, cur - *str); + else + uri->path = xmlURIUnescapeString(*str, cur - *str, NULL); + } else { + uri->path = NULL; } + } + *str = cur; + return (0); +} - /* If we get here, remove this segment and the next one and back up - * to the previous segment (if there is one), to implement the - * "iteratively" clause. It's pretty much impossible to back up - * while maintaining two pointers into the buffer, so just compact - * the whole buffer now. - */ - - /* If this is the end of the buffer, we're done. */ - if (segp[2] == '\0') { - cur[0] = '\0'; - break; - } - /* Valgrind complained, strcpy(cur, segp + 3); */ - /* string will overlap, do not use strcpy */ - tmp = cur; - segp += 3; - while ((*tmp++ = *segp++) != 0); +/** + * xmlParse3986PathNoScheme: + * @uri: pointer to an URI structure + * @str: the string to analyze + * + * Parse an path which is not a scheme and fills in the appropriate fields + * of the @uri structure + * + * path-noscheme = segment-nz-nc *( "/" segment ) + * + * Returns 0 or the error code + */ +static int +xmlParse3986PathNoScheme(xmlURIPtr uri, const char **str) +{ + const char *cur; + int ret; - /* If there are no previous segments, then keep going from here. */ - segp = cur; - while ((segp > path) && ((--segp)[0] == '/')) - ; - if (segp == path) - continue; + cur = *str; - /* "segp" is pointing to the end of a previous segment; find it's - * start. We need to back up to the previous segment and start - * over with that to handle things like "foo/bar/../..". If we - * don't do this, then on the first pass we'll remove the "bar/..", - * but be pointing at the second ".." so we won't realize we can also - * remove the "foo/..". - */ - cur = segp; - while ((cur > path) && (cur[-1] != '/')) - --cur; + ret = xmlParse3986Segment(&cur, ':', 0); + if (ret != 0) return(ret); + while (*cur == '/') { + cur++; + ret = xmlParse3986Segment(&cur, 0, 1); + if (ret != 0) return(ret); } - out[0] = '\0'; - - /* - * g) If the resulting buffer string still begins with one or more - * complete path segments of "..", then the reference is - * considered to be in error. Implementations may handle this - * error by retaining these components in the resolved path (i.e., - * treating them as part of the final URI), by removing them from - * the resolved path (i.e., discarding relative levels above the - * root), or by avoiding traversal of the reference. - * - * We discard them from the final path. - */ - if (path[0] == '/') { - cur = path; - while ((cur[0] == '/') && (cur[1] == '.') && (cur[2] == '.') - && ((cur[3] == '/') || (cur[3] == '\0'))) - cur += 3; - - if (cur != path) { - out = path; - while (cur[0] != '\0') - (out++)[0] = (cur++)[0]; - out[0] = 0; - } + if (uri != NULL) { + if (uri->path != NULL) xmlFree(uri->path); + if (cur != *str) { + if (uri->cleanup & 2) + uri->path = STRNDUP(*str, cur - *str); + else + uri->path = xmlURIUnescapeString(*str, cur - *str, NULL); + } else { + uri->path = NULL; + } } - - return(0); -} - -static int is_hex(char c) { - if (((c >= '0') && (c <= '9')) || - ((c >= 'a') && (c <= 'f')) || - ((c >= 'A') && (c <= 'F'))) - return(1); - return(0); + *str = cur; + return (0); } /** - * xmlURIUnescapeString: - * @str: the string to unescape - * @len: the length in bytes to unescape (or <= 0 to indicate full string) - * @target: optional destination buffer + * xmlParse3986HierPart: + * @uri: pointer to an URI structure + * @str: the string to analyze * - * Unescaping routine, does not do validity checks ! - * Output is direct unsigned char translation of %XX values (no encoding) + * Parse an hierarchical part and fills in the appropriate fields + * of the @uri structure + * + * hier-part = "//" authority path-abempty + * / path-absolute + * / path-rootless + * / path-empty * - * Returns an copy of the string, but unescaped + * Returns 0 or the error code */ -char * -xmlURIUnescapeString(const char *str, int len, char *target) { - char *ret, *out; - const char *in; +static int +xmlParse3986HierPart(xmlURIPtr uri, const char **str) +{ + const char *cur; + int ret; - if (str == NULL) - return(NULL); - if (len <= 0) len = strlen(str); - if (len < 0) return(NULL); + cur = *str; - if (target == NULL) { - ret = (char *) xmlMallocAtomic(len + 1); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlURIUnescapeString: out of memory\n"); - return(NULL); - } - } else - ret = target; - in = str; - out = ret; - while(len > 0) { - if ((len > 2) && (*in == '%') && (is_hex(in[1])) && (is_hex(in[2]))) { - in++; - if ((*in >= '0') && (*in <= '9')) - *out = (*in - '0'); - else if ((*in >= 'a') && (*in <= 'f')) - *out = (*in - 'a') + 10; - else if ((*in >= 'A') && (*in <= 'F')) - *out = (*in - 'A') + 10; - in++; - if ((*in >= '0') && (*in <= '9')) - *out = *out * 16 + (*in - '0'); - else if ((*in >= 'a') && (*in <= 'f')) - *out = *out * 16 + (*in - 'a') + 10; - else if ((*in >= 'A') && (*in <= 'F')) - *out = *out * 16 + (*in - 'A') + 10; - in++; - len -= 3; - out++; - } else { - *out++ = *in++; - len--; + if ((*cur == '/') && (*(cur + 1) == '/')) { + cur += 2; + ret = xmlParse3986Authority(uri, &cur); + if (ret != 0) return(ret); + if (uri->server == NULL) + uri->port = -1; + ret = xmlParse3986PathAbEmpty(uri, &cur); + if (ret != 0) return(ret); + *str = cur; + return(0); + } else if (*cur == '/') { + ret = xmlParse3986PathAbsolute(uri, &cur); + if (ret != 0) return(ret); + } else if (ISA_PCHAR(cur)) { + ret = xmlParse3986PathRootless(uri, &cur); + if (ret != 0) return(ret); + } else { + /* path-empty is effectively empty */ + if (uri != NULL) { + if (uri->path != NULL) xmlFree(uri->path); + uri->path = NULL; } } - *out = 0; - return(ret); + *str = cur; + return (0); } /** - * xmlURIEscapeStr: - * @str: string to escape - * @list: exception list string of chars not to escape + * xmlParse3986RelativeRef: + * @uri: pointer to an URI structure + * @str: the string to analyze * - * This routine escapes a string to hex, ignoring reserved characters (a-z) - * and the characters in the exception list. + * Parse an URI string and fills in the appropriate fields + * of the @uri structure * - * Returns a new escaped string or NULL in case of error. + * relative-ref = relative-part [ "?" query ] [ "#" fragment ] + * relative-part = "//" authority path-abempty + * / path-absolute + * / path-noscheme + * / path-empty + * + * Returns 0 or the error code */ -xmlChar * -xmlURIEscapeStr(const xmlChar *str, const xmlChar *list) { - xmlChar *ret, ch; - const xmlChar *in; +static int +xmlParse3986RelativeRef(xmlURIPtr uri, const char *str) { + int ret; - unsigned int len, out; + if ((*str == '/') && (*(str + 1) == '/')) { + str += 2; + ret = xmlParse3986Authority(uri, &str); + if (ret != 0) return(ret); + ret = xmlParse3986PathAbEmpty(uri, &str); + if (ret != 0) return(ret); + } else if (*str == '/') { + ret = xmlParse3986PathAbsolute(uri, &str); + if (ret != 0) return(ret); + } else if (ISA_PCHAR(str)) { + ret = xmlParse3986PathNoScheme(uri, &str); + if (ret != 0) return(ret); + } else { + /* path-empty is effectively empty */ + if (uri != NULL) { + if (uri->path != NULL) xmlFree(uri->path); + uri->path = NULL; + } + } - if (str == NULL) - return(NULL); - if (str[0] == 0) - return(xmlStrdup(str)); - len = xmlStrlen(str); - if (!(len > 0)) return(NULL); + if (*str == '?') { + str++; + ret = xmlParse3986Query(uri, &str); + if (ret != 0) return(ret); + } + if (*str == '#') { + str++; + ret = xmlParse3986Fragment(uri, &str); + if (ret != 0) return(ret); + } + if (*str != 0) { + xmlCleanURI(uri); + return(1); + } + return(0); +} - len += 20; - ret = (xmlChar *) xmlMallocAtomic(len); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlURIEscapeStr: out of memory\n"); - return(NULL); + +/** + * xmlParse3986URI: + * @uri: pointer to an URI structure + * @str: the string to analyze + * + * Parse an URI string and fills in the appropriate fields + * of the @uri structure + * + * scheme ":" hier-part [ "?" query ] [ "#" fragment ] + * + * Returns 0 or the error code + */ +static int +xmlParse3986URI(xmlURIPtr uri, const char *str) { + int ret; + + ret = xmlParse3986Scheme(uri, &str); + if (ret != 0) return(ret); + if (*str != ':') { + return(1); } - in = (const xmlChar *) str; - out = 0; - while(*in != 0) { - if (len - out <= 3) { - len += 20; - ret = (xmlChar *) xmlRealloc(ret, len); - if (ret == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlURIEscapeStr: out of memory\n"); - return(NULL); - } - } + str++; + ret = xmlParse3986HierPart(uri, &str); + if (ret != 0) return(ret); + if (*str == '?') { + str++; + ret = xmlParse3986Query(uri, &str); + if (ret != 0) return(ret); + } + if (*str == '#') { + str++; + ret = xmlParse3986Fragment(uri, &str); + if (ret != 0) return(ret); + } + if (*str != 0) { + xmlCleanURI(uri); + return(1); + } + return(0); +} - ch = *in; +/** + * xmlParse3986URIReference: + * @uri: pointer to an URI structure + * @str: the string to analyze + * + * Parse an URI reference string and fills in the appropriate fields + * of the @uri structure + * + * URI-reference = URI / relative-ref + * + * Returns 0 or the error code + */ +static int +xmlParse3986URIReference(xmlURIPtr uri, const char *str) { + int ret; - if ((ch != '@') && (!IS_UNRESERVED(ch)) && (!xmlStrchr(list, ch))) { - unsigned char val; - ret[out++] = '%'; - val = ch >> 4; - if (val <= 9) - ret[out++] = '0' + val; - else - ret[out++] = 'A' + val - 0xA; - val = ch & 0xF; - if (val <= 9) - ret[out++] = '0' + val; - else - ret[out++] = 'A' + val - 0xA; - in++; - } else { - ret[out++] = *in++; - } + if (str == NULL) + return(-1); + xmlCleanURI(uri); + /* + * Try first to parse absolute refs, then fallback to relative if + * it fails. + */ + ret = xmlParse3986URI(uri, str); + if (ret != 0) { + xmlCleanURI(uri); + ret = xmlParse3986RelativeRef(uri, str); + if (ret != 0) { + xmlCleanURI(uri); + return(ret); + } } - ret[out] = 0; - return(ret); + return(0); } /** - * xmlURIEscape: - * @str: the string of the URI to escape + * xmlParseURI: + * @str: the URI string to analyze * - * Escaping routine, does not do validity checks ! - * It will try to escape the chars needing this, but this is heuristic - * based it's impossible to be sure. + * Parse an URI based on RFC 3986 * - * Returns an copy of the string, but escaped + * URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ] * - * 25 May 2001 - * Uses xmlParseURI and xmlURIEscapeStr to try to escape correctly - * according to RFC2396. - * - Carl Douglas + * Returns a newly built xmlURIPtr or NULL in case of error */ -xmlChar * -xmlURIEscape(const xmlChar * str) -{ - xmlChar *ret, *segment = NULL; +xmlURIPtr +xmlParseURI(const char *str) { xmlURIPtr uri; - int ret2; - -#define NULLCHK(p) if(!p) { \ - xmlGenericError(xmlGenericErrorContext, \ - "xmlURIEscape: out of memory\n"); \ - return NULL; } + int ret; if (str == NULL) - return (NULL); - + return(NULL); uri = xmlCreateURI(); if (uri != NULL) { - /* - * Allow escaping errors in the unescaped form - */ - uri->cleanup = 1; - ret2 = xmlParseURIReference(uri, (const char *)str); - if (ret2) { - xmlFreeURI(uri); - return (NULL); - } + ret = xmlParse3986URIReference(uri, str); + if (ret) { + xmlFreeURI(uri); + return(NULL); + } } + return(uri); +} - if (!uri) - return NULL; +/** + * xmlParseURIReference: + * @uri: pointer to an URI structure + * @str: the string to analyze + * + * Parse an URI reference string based on RFC 3986 and fills in the + * appropriate fields of the @uri structure + * + * URI-reference = URI / relative-ref + * + * Returns 0 or the error code + */ +int +xmlParseURIReference(xmlURIPtr uri, const char *str) { + return(xmlParse3986URIReference(uri, str)); +} - ret = NULL; +/** + * xmlParseURIRaw: + * @str: the URI string to analyze + * @raw: if 1 unescaping of URI pieces are disabled + * + * Parse an URI but allows to keep intact the original fragments. + * + * URI-reference = URI / relative-ref + * + * Returns a newly built xmlURIPtr or NULL in case of error + */ +xmlURIPtr +xmlParseURIRaw(const char *str, int raw) { + xmlURIPtr uri; + int ret; - if (uri->scheme) { - segment = xmlURIEscapeStr(BAD_CAST uri->scheme, BAD_CAST "+-."); - NULLCHK(segment) - ret = xmlStrcat(ret, segment); - ret = xmlStrcat(ret, BAD_CAST ":"); - xmlFree(segment); - } - - if (uri->authority) { - segment = - xmlURIEscapeStr(BAD_CAST uri->authority, BAD_CAST "/?;:@"); - NULLCHK(segment) - ret = xmlStrcat(ret, BAD_CAST "//"); - ret = xmlStrcat(ret, segment); - xmlFree(segment); - } - - if (uri->user) { - segment = xmlURIEscapeStr(BAD_CAST uri->user, BAD_CAST ";:&=+$,"); - NULLCHK(segment) - ret = xmlStrcat(ret,BAD_CAST "//"); - ret = xmlStrcat(ret, segment); - ret = xmlStrcat(ret, BAD_CAST "@"); - xmlFree(segment); - } - - if (uri->server) { - segment = xmlURIEscapeStr(BAD_CAST uri->server, BAD_CAST "/?;:@"); - NULLCHK(segment) - if (uri->user == NULL) - ret = xmlStrcat(ret, BAD_CAST "//"); - ret = xmlStrcat(ret, segment); - xmlFree(segment); + if (str == NULL) + return(NULL); + uri = xmlCreateURI(); + if (uri != NULL) { + if (raw) { + uri->cleanup |= 2; + } + ret = xmlParseURIReference(uri, str); + if (ret) { + xmlFreeURI(uri); + return(NULL); + } } + return(uri); +} - if (uri->port) { - xmlChar port[10]; +/************************************************************************ + * * + * Generic URI structure functions * + * * + ************************************************************************/ - snprintf((char *) port, 10, "%d", uri->port); - ret = xmlStrcat(ret, BAD_CAST ":"); - ret = xmlStrcat(ret, port); - } +/** + * xmlCreateURI: + * + * Simply creates an empty xmlURI + * + * Returns the new structure or NULL in case of error + */ +xmlURIPtr +xmlCreateURI(void) { + xmlURIPtr ret; - if (uri->path) { - segment = - xmlURIEscapeStr(BAD_CAST uri->path, BAD_CAST ":@&=+$,/?;"); - NULLCHK(segment) - ret = xmlStrcat(ret, segment); - xmlFree(segment); + ret = (xmlURIPtr) xmlMalloc(sizeof(xmlURI)); + if (ret == NULL) { + xmlURIErrMemory("creating URI structure\n"); + return(NULL); } + memset(ret, 0, sizeof(xmlURI)); + return(ret); +} - if (uri->query) { - segment = - xmlURIEscapeStr(BAD_CAST uri->query, BAD_CAST ";/?:@&=+,$"); - NULLCHK(segment) - ret = xmlStrcat(ret, BAD_CAST "?"); - ret = xmlStrcat(ret, segment); - xmlFree(segment); - } +/** + * xmlSaveUriRealloc: + * + * Function to handle properly a reallocation when saving an URI + * Also imposes some limit on the length of an URI string output + */ +static xmlChar * +xmlSaveUriRealloc(xmlChar *ret, int *max) { + xmlChar *temp; + int tmp; - if (uri->opaque) { - segment = xmlURIEscapeStr(BAD_CAST uri->opaque, BAD_CAST ""); - NULLCHK(segment) - ret = xmlStrcat(ret, segment); - xmlFree(segment); + if (*max > MAX_URI_LENGTH) { + xmlURIErrMemory("reaching arbitrary MAX_URI_LENGTH limit\n"); + return(NULL); } - - if (uri->fragment) { - segment = xmlURIEscapeStr(BAD_CAST uri->fragment, BAD_CAST "#"); - NULLCHK(segment) - ret = xmlStrcat(ret, BAD_CAST "#"); - ret = xmlStrcat(ret, segment); - xmlFree(segment); + tmp = *max * 2; + temp = (xmlChar *) xmlRealloc(ret, (tmp + 1)); + if (temp == NULL) { + xmlURIErrMemory("saving URI\n"); + return(NULL); } - - xmlFreeURI(uri); -#undef NULLCHK - - return (ret); + *max = tmp; + return(temp); } -/************************************************************************ - * * - * Escaped URI parsing * - * * - ************************************************************************/ - /** - * xmlParseURIFragment: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze + * xmlSaveUri: + * @uri: pointer to an xmlURI * - * Parse an URI fragment string and fills in the appropriate fields - * of the @uri structure. - * - * fragment = *uric + * Save the URI as an escaped string * - * Returns 0 or the error code + * Returns a new string (to be deallocated by caller) */ -static int -xmlParseURIFragment(xmlURIPtr uri, const char **str) -{ - const char *cur; - - if (str == NULL) - return (-1); +xmlChar * +xmlSaveUri(xmlURIPtr uri) { + xmlChar *ret = NULL; + xmlChar *temp; + const char *p; + int len; + int max; - cur = *str; + if (uri == NULL) return(NULL); - while (IS_URIC(cur) || IS_UNWISE(cur)) - NEXT(cur); - if (uri != NULL) { - if (uri->fragment != NULL) - xmlFree(uri->fragment); - if (uri->cleanup & 2) - uri->fragment = STRNDUP(*str, cur - *str); - else - uri->fragment = xmlURIUnescapeString(*str, cur - *str, NULL); + + max = 80; + ret = (xmlChar *) xmlMallocAtomic((max + 1) * sizeof(xmlChar)); + if (ret == NULL) { + xmlURIErrMemory("saving URI\n"); + return(NULL); + } + len = 0; + + if (uri->scheme != NULL) { + p = uri->scheme; + while (*p != 0) { + if (len >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = *p++; + } + if (len >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = ':'; + } + if (uri->opaque != NULL) { + p = uri->opaque; + while (*p != 0) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + if (IS_RESERVED(*(p)) || IS_UNRESERVED(*(p))) + ret[len++] = *p++; + else { + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; + ret[len++] = '%'; + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); + } + } + } else { + if ((uri->server != NULL) || (uri->port == -1)) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = '/'; + ret[len++] = '/'; + if (uri->user != NULL) { + p = uri->user; + while (*p != 0) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + if ((IS_UNRESERVED(*(p))) || + ((*(p) == ';')) || ((*(p) == ':')) || + ((*(p) == '&')) || ((*(p) == '=')) || + ((*(p) == '+')) || ((*(p) == '$')) || + ((*(p) == ','))) + ret[len++] = *p++; + else { + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; + ret[len++] = '%'; + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); + } + } + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = '@'; + } + if (uri->server != NULL) { + p = uri->server; + while (*p != 0) { + if (len >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = *p++; + } + if (uri->port > 0) { + if (len + 10 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + len += snprintf((char *) &ret[len], max - len, ":%d", uri->port); + } + } + } else if (uri->authority != NULL) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = '/'; + ret[len++] = '/'; + p = uri->authority; + while (*p != 0) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + if ((IS_UNRESERVED(*(p))) || + ((*(p) == '$')) || ((*(p) == ',')) || ((*(p) == ';')) || + ((*(p) == ':')) || ((*(p) == '@')) || ((*(p) == '&')) || + ((*(p) == '=')) || ((*(p) == '+'))) + ret[len++] = *p++; + else { + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; + ret[len++] = '%'; + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); + } + } + } else if (uri->scheme != NULL) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + } + if (uri->path != NULL) { + p = uri->path; + /* + * the colon in file:///d: should not be escaped or + * Windows accesses fail later. + */ + if ((uri->scheme != NULL) && + (p[0] == '/') && + (((p[1] >= 'a') && (p[1] <= 'z')) || + ((p[1] >= 'A') && (p[1] <= 'Z'))) && + (p[2] == ':') && + (xmlStrEqual(BAD_CAST uri->scheme, BAD_CAST "file"))) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = *p++; + ret[len++] = *p++; + ret[len++] = *p++; + } + while (*p != 0) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + if ((IS_UNRESERVED(*(p))) || ((*(p) == '/')) || + ((*(p) == ';')) || ((*(p) == '@')) || ((*(p) == '&')) || + ((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) || + ((*(p) == ','))) + ret[len++] = *p++; + else { + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; + ret[len++] = '%'; + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); + } + } + } + if (uri->query_raw != NULL) { + if (len + 1 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = '?'; + p = uri->query_raw; + while (*p != 0) { + if (len + 1 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = *p++; + } + } else if (uri->query != NULL) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = '?'; + p = uri->query; + while (*p != 0) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) + ret[len++] = *p++; + else { + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; + ret[len++] = '%'; + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); + } + } + } + } + if (uri->fragment != NULL) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + ret[len++] = '#'; + p = uri->fragment; + while (*p != 0) { + if (len + 3 >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; + } + if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) + ret[len++] = *p++; + else { + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; + ret[len++] = '%'; + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); + } + } + } + if (len >= max) { + temp = xmlSaveUriRealloc(ret, &max); + if (temp == NULL) goto mem_error; + ret = temp; } - *str = cur; - return (0); + ret[len] = 0; + return(ret); + +mem_error: + xmlFree(ret); + return(NULL); } /** - * xmlParseURIQuery: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze - * - * Parse the query part of an URI - * - * query = *uric + * xmlPrintURI: + * @stream: a FILE* for the output + * @uri: pointer to an xmlURI * - * Returns 0 or the error code + * Prints the URI in the stream @stream. */ -static int -xmlParseURIQuery(xmlURIPtr uri, const char **str) -{ - const char *cur; - - if (str == NULL) - return (-1); - - cur = *str; +void +xmlPrintURI(FILE *stream, xmlURIPtr uri) { + xmlChar *out; - while ((IS_URIC(cur)) || - ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) - NEXT(cur); - if (uri != NULL) { - if (uri->query != NULL) - xmlFree(uri->query); - if (uri->cleanup & 2) - uri->query = STRNDUP(*str, cur - *str); - else - uri->query = xmlURIUnescapeString(*str, cur - *str, NULL); + out = xmlSaveUri(uri); + if (out != NULL) { + fprintf(stream, "%s", (char *) out); + xmlFree(out); } - *str = cur; - return (0); } /** - * xmlParseURIScheme: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze - * - * Parse an URI scheme - * - * scheme = alpha *( alpha | digit | "+" | "-" | "." ) + * xmlCleanURI: + * @uri: pointer to an xmlURI * - * Returns 0 or the error code + * Make sure the xmlURI struct is free of content */ -static int -xmlParseURIScheme(xmlURIPtr uri, const char **str) { - const char *cur; +static void +xmlCleanURI(xmlURIPtr uri) { + if (uri == NULL) return; - if (str == NULL) - return(-1); - - cur = *str; - if (!IS_ALPHA(*cur)) - return(2); - cur++; - while (IS_SCHEME(*cur)) cur++; - if (uri != NULL) { - if (uri->scheme != NULL) xmlFree(uri->scheme); - uri->scheme = STRNDUP(*str, cur - *str); - } - *str = cur; - return(0); + if (uri->scheme != NULL) xmlFree(uri->scheme); + uri->scheme = NULL; + if (uri->server != NULL) xmlFree(uri->server); + uri->server = NULL; + if (uri->user != NULL) xmlFree(uri->user); + uri->user = NULL; + if (uri->path != NULL) xmlFree(uri->path); + uri->path = NULL; + if (uri->fragment != NULL) xmlFree(uri->fragment); + uri->fragment = NULL; + if (uri->opaque != NULL) xmlFree(uri->opaque); + uri->opaque = NULL; + if (uri->authority != NULL) xmlFree(uri->authority); + uri->authority = NULL; + if (uri->query != NULL) xmlFree(uri->query); + uri->query = NULL; + if (uri->query_raw != NULL) xmlFree(uri->query_raw); + uri->query_raw = NULL; } /** - * xmlParseURIOpaquePart: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze - * - * Parse an URI opaque part - * - * opaque_part = uric_no_slash *uric + * xmlFreeURI: + * @uri: pointer to an xmlURI * - * Returns 0 or the error code + * Free up the xmlURI struct */ -static int -xmlParseURIOpaquePart(xmlURIPtr uri, const char **str) -{ - const char *cur; - - if (str == NULL) - return (-1); +void +xmlFreeURI(xmlURIPtr uri) { + if (uri == NULL) return; - cur = *str; - if (!((IS_URIC_NO_SLASH(cur)) || - ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur))))) { - return (3); - } - NEXT(cur); - while ((IS_URIC(cur)) || - ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) - NEXT(cur); - if (uri != NULL) { - if (uri->opaque != NULL) - xmlFree(uri->opaque); - if (uri->cleanup & 2) - uri->opaque = STRNDUP(*str, cur - *str); - else - uri->opaque = xmlURIUnescapeString(*str, cur - *str, NULL); - } - *str = cur; - return (0); + if (uri->scheme != NULL) xmlFree(uri->scheme); + if (uri->server != NULL) xmlFree(uri->server); + if (uri->user != NULL) xmlFree(uri->user); + if (uri->path != NULL) xmlFree(uri->path); + if (uri->fragment != NULL) xmlFree(uri->fragment); + if (uri->opaque != NULL) xmlFree(uri->opaque); + if (uri->authority != NULL) xmlFree(uri->authority); + if (uri->query != NULL) xmlFree(uri->query); + if (uri->query_raw != NULL) xmlFree(uri->query_raw); + xmlFree(uri); } +/************************************************************************ + * * + * Helper functions * + * * + ************************************************************************/ + /** - * xmlParseURIServer: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze + * xmlNormalizeURIPath: + * @path: pointer to the path string + * + * Applies the 5 normalization steps to a path string--that is, RFC 2396 + * Section 5.2, steps 6.c through 6.g. * - * Parse a server subpart of an URI, it's a finer grain analysis - * of the authority part. - * - * server = [ [ userinfo "@" ] hostport ] - * userinfo = *( unreserved | escaped | - * ";" | ":" | "&" | "=" | "+" | "$" | "," ) - * hostport = host [ ":" port ] - * host = hostname | IPv4address | IPv6reference - * hostname = *( domainlabel "." ) toplabel [ "." ] - * domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum - * toplabel = alpha | alpha *( alphanum | "-" ) alphanum - * IPv6reference = "[" IPv6address "]" - * IPv6address = hexpart [ ":" IPv4address ] - * IPv4address = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit - * hexpart = hexseq | hexseq "::" [ hexseq ]| "::" [ hexseq ] - * hexseq = hex4 *( ":" hex4) - * hex4 = 1*4hexdig - * port = *digit + * Normalization occurs directly on the string, no new allocation is done * - * Returns 0 or the error code + * Returns 0 or an error code */ -static int -xmlParseURIServer(xmlURIPtr uri, const char **str) { - const char *cur; - const char *host, *tmp; - const int IPV4max = 4; - const int IPV6max = 8; - int oct; +int +xmlNormalizeURIPath(char *path) { + char *cur, *out; - if (str == NULL) + if (path == NULL) return(-1); - - cur = *str; - /* - * is there a userinfo ? - */ - while (IS_USERINFO(cur)) NEXT(cur); - if (*cur == '@') { - if (uri != NULL) { - if (uri->user != NULL) xmlFree(uri->user); - if (uri->cleanup & 2) - uri->path = STRNDUP(*str, cur - *str); - else - uri->user = xmlURIUnescapeString(*str, cur - *str, NULL); - } - cur++; - } else { - if (uri != NULL) { - if (uri->user != NULL) xmlFree(uri->user); - uri->user = NULL; - } - cur = *str; - } - /* - * This can be empty in the case where there is no server + /* Skip all initial "/" chars. We want to get to the beginning of the + * first non-empty segment. */ - host = cur; - if (*cur == '/') { - if (uri != NULL) { - if (uri->authority != NULL) xmlFree(uri->authority); - uri->authority = NULL; - if (uri->server != NULL) xmlFree(uri->server); - uri->server = NULL; - uri->port = 0; - } - return(0); - } + cur = path; + while (cur[0] == '/') + ++cur; + if (cur[0] == '\0') + return(0); + + /* Keep everything we've seen so far. */ + out = cur; + /* - * host part of hostport can denote an IPV4 address, an IPV6 address - * or an unresolved name. Check the IP first, its easier to detect - * errors if wrong one. - * An IPV6 address must start with a '[' and end with a ']'. + * Analyze each segment in sequence for cases (c) and (d). */ - if (*cur == '[') { - int compress=0; - cur++; - for (oct = 0; oct < IPV6max; ++oct) { - if (*cur == ':') { - if (compress) - return(3); /* multiple compression attempted */ - if (!oct) { /* initial char is compression */ - if (*++cur != ':') - return(3); - } - compress = 1; /* set compression-encountered flag */ - cur++; /* skip over the second ':' */ - continue; - } - while(IS_HEX(*cur)) cur++; - if (oct == (IPV6max-1)) - continue; - if (*cur != ':') - break; - cur++; - } - if ((!compress) && (oct != IPV6max)) - return(3); - if (*cur != ']') - return(3); - if (uri != NULL) { - if (uri->server != NULL) xmlFree(uri->server); - uri->server = (char *)xmlStrndup((xmlChar *)host+1, - (cur-host)-1); - } - cur++; - } else { + while (cur[0] != '\0') { /* - * Not IPV6, maybe IPV4 + * c) All occurrences of "./", where "." is a complete path segment, + * are removed from the buffer string. */ - for (oct = 0; oct < IPV4max; ++oct) { - if (*cur == '.') - return(3); /* e.g. http://.xml/ or http://18.29..30/ */ - while(IS_DIGIT(*cur)) cur++; - if (oct == (IPV4max-1)) - continue; - if (*cur != '.') - break; - cur++; - } - } - if ((host[0] != '[') && (oct < IPV4max || (*cur == '.' && cur++) || - IS_ALPHA(*cur))) { - /* maybe host_name */ - if (!IS_ALPHANUM(*cur)) - return(4); /* e.g. http://xml.$oft */ - do { - do ++cur; while (IS_ALPHANUM(*cur)); - if (*cur == '-') { - --cur; - if (*cur == '.') - return(5); /* e.g. http://xml.-soft */ - ++cur; - continue; - } - if (*cur == '.') { - --cur; - if (*cur == '-') - return(6); /* e.g. http://xml-.soft */ - if (*cur == '.') - return(7); /* e.g. http://xml..soft */ - ++cur; - continue; - } - break; - } while (1); - tmp = cur; - if (tmp[-1] == '.') - --tmp; /* e.g. http://xml.$Oft/ */ - do --tmp; while (tmp >= host && IS_ALPHANUM(*tmp)); - if ((++tmp == host || tmp[-1] == '.') && !IS_ALPHA(*tmp)) - return(8); /* e.g. http://xmlsOft.0rg/ */ - } - if (uri != NULL) { - if (uri->authority != NULL) xmlFree(uri->authority); - uri->authority = NULL; - if (host[0] != '[') { /* it's not an IPV6 addr */ - if (uri->server != NULL) xmlFree(uri->server); - if (uri->cleanup & 2) - uri->server = STRNDUP(host, cur - host); - else - uri->server = xmlURIUnescapeString(host, cur - host, NULL); - } - } - /* - * finish by checking for a port presence. - */ - if (*cur == ':') { - cur++; - if (IS_DIGIT(*cur)) { - if (uri != NULL) - uri->port = 0; - while (IS_DIGIT(*cur)) { - if (uri != NULL) - uri->port = uri->port * 10 + (*cur - '0'); + if ((cur[0] == '.') && (cur[1] == '/')) { + cur += 2; + /* '//' normalization should be done at this point too */ + while (cur[0] == '/') cur++; - } + continue; } - } - *str = cur; - return(0); -} -/** - * xmlParseURIRelSegment: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze - * - * Parse an URI relative segment - * - * rel_segment = 1*( unreserved | escaped | ";" | "@" | "&" | "=" | - * "+" | "$" | "," ) - * - * Returns 0 or the error code - */ -static int -xmlParseURIRelSegment(xmlURIPtr uri, const char **str) -{ - const char *cur; + /* + * d) If the buffer string ends with "." as a complete path segment, + * that "." is removed. + */ + if ((cur[0] == '.') && (cur[1] == '\0')) + break; - if (str == NULL) - return (-1); + /* Otherwise keep the segment. */ + while (cur[0] != '/') { + if (cur[0] == '\0') + goto done_cd; + (out++)[0] = (cur++)[0]; + } + /* nomalize // */ + while ((cur[0] == '/') && (cur[1] == '/')) + cur++; - cur = *str; - if (!((IS_SEGMENT(cur)) || - ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur))))) { - return (3); - } - NEXT(cur); - while ((IS_SEGMENT(cur)) || - ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) - NEXT(cur); - if (uri != NULL) { - if (uri->path != NULL) - xmlFree(uri->path); - if (uri->cleanup & 2) - uri->path = STRNDUP(*str, cur - *str); - else - uri->path = xmlURIUnescapeString(*str, cur - *str, NULL); + (out++)[0] = (cur++)[0]; } - *str = cur; - return (0); -} + done_cd: + out[0] = '\0'; -/** - * xmlParseURIPathSegments: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze - * @slash: should we add a leading slash - * - * Parse an URI set of path segments - * - * path_segments = segment *( "/" segment ) - * segment = *pchar *( ";" param ) - * param = *pchar - * - * Returns 0 or the error code - */ -static int -xmlParseURIPathSegments(xmlURIPtr uri, const char **str, int slash) -{ - const char *cur; + /* Reset to the beginning of the first segment for the next sequence. */ + cur = path; + while (cur[0] == '/') + ++cur; + if (cur[0] == '\0') + return(0); - if (str == NULL) - return (-1); + /* + * Analyze each segment in sequence for cases (e) and (f). + * + * e) All occurrences of "/../", where is a + * complete path segment not equal to "..", are removed from the + * buffer string. Removal of these path segments is performed + * iteratively, removing the leftmost matching pattern on each + * iteration, until no matching pattern remains. + * + * f) If the buffer string ends with "/..", where + * is a complete path segment not equal to "..", that + * "/.." is removed. + * + * To satisfy the "iterative" clause in (e), we need to collapse the + * string every time we find something that needs to be removed. Thus, + * we don't need to keep two pointers into the string: we only need a + * "current position" pointer. + */ + while (1) { + char *segp, *tmp; - cur = *str; + /* At the beginning of each iteration of this loop, "cur" points to + * the first character of the segment we want to examine. + */ - do { - while ((IS_PCHAR(cur)) || - ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) - NEXT(cur); - while (*cur == ';') { - cur++; - while ((IS_PCHAR(cur)) || - ((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur)))) - NEXT(cur); - } - if (*cur != '/') - break; - cur++; - } while (1); - if (uri != NULL) { - int len, len2 = 0; - char *path; + /* Find the end of the current segment. */ + segp = cur; + while ((segp[0] != '/') && (segp[0] != '\0')) + ++segp; - /* - * Concat the set of path segments to the current path + /* If this is the last segment, we're done (we need at least two + * segments to meet the criteria for the (e) and (f) cases). */ - len = cur - *str; - if (slash) - len++; - - if (uri->path != NULL) { - len2 = strlen(uri->path); - len += len2; - } - path = (char *) xmlMallocAtomic(len + 1); - if (path == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlParseURIPathSegments: out of memory\n"); - *str = cur; - return (-1); + if (segp[0] == '\0') + break; + + /* If the first segment is "..", or if the next segment _isn't_ "..", + * keep this segment and try the next one. + */ + ++segp; + if (((cur[0] == '.') && (cur[1] == '.') && (segp == cur+3)) + || ((segp[0] != '.') || (segp[1] != '.') + || ((segp[2] != '/') && (segp[2] != '\0')))) { + cur = segp; + continue; } - if (uri->path != NULL) - memcpy(path, uri->path, len2); - if (slash) { - path[len2] = '/'; - len2++; + + /* If we get here, remove this segment and the next one and back up + * to the previous segment (if there is one), to implement the + * "iteratively" clause. It's pretty much impossible to back up + * while maintaining two pointers into the buffer, so just compact + * the whole buffer now. + */ + + /* If this is the end of the buffer, we're done. */ + if (segp[2] == '\0') { + cur[0] = '\0'; + break; } - path[len2] = 0; - if (cur - *str > 0) { - if (uri->cleanup & 2) { - memcpy(&path[len2], *str, cur - *str); - path[len2 + (cur - *str)] = 0; - } else - xmlURIUnescapeString(*str, cur - *str, &path[len2]); - } - if (uri->path != NULL) - xmlFree(uri->path); - uri->path = path; - } - *str = cur; - return (0); -} + /* Valgrind complained, strcpy(cur, segp + 3); */ + /* string will overlap, do not use strcpy */ + tmp = cur; + segp += 3; + while ((*tmp++ = *segp++) != 0) + ; -/** - * xmlParseURIAuthority: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze - * - * Parse the authority part of an URI. - * - * authority = server | reg_name - * server = [ [ userinfo "@" ] hostport ] - * reg_name = 1*( unreserved | escaped | "$" | "," | ";" | ":" | - * "@" | "&" | "=" | "+" ) - * - * Note : this is completely ambiguous since reg_name is allowed to - * use the full set of chars in use by server: - * - * 3.2.1. Registry-based Naming Authority - * - * The structure of a registry-based naming authority is specific - * to the URI scheme, but constrained to the allowed characters - * for an authority component. - * - * Returns 0 or the error code - */ -static int -xmlParseURIAuthority(xmlURIPtr uri, const char **str) { - const char *cur; - int ret; + /* If there are no previous segments, then keep going from here. */ + segp = cur; + while ((segp > path) && ((--segp)[0] == '/')) + ; + if (segp == path) + continue; - if (str == NULL) - return(-1); - - cur = *str; + /* "segp" is pointing to the end of a previous segment; find it's + * start. We need to back up to the previous segment and start + * over with that to handle things like "foo/bar/../..". If we + * don't do this, then on the first pass we'll remove the "bar/..", + * but be pointing at the second ".." so we won't realize we can also + * remove the "foo/..". + */ + cur = segp; + while ((cur > path) && (cur[-1] != '/')) + --cur; + } + out[0] = '\0'; /* - * try first to parse it as a server string. + * g) If the resulting buffer string still begins with one or more + * complete path segments of "..", then the reference is + * considered to be in error. Implementations may handle this + * error by retaining these components in the resolved path (i.e., + * treating them as part of the final URI), by removing them from + * the resolved path (i.e., discarding relative levels above the + * root), or by avoiding traversal of the reference. + * + * We discard them from the final path. */ - ret = xmlParseURIServer(uri, str); - if ((ret == 0) && (*str != NULL) && - ((**str == 0) || (**str == '/') || (**str == '?'))) - return(0); - *str = cur; + if (path[0] == '/') { + cur = path; + while ((cur[0] == '/') && (cur[1] == '.') && (cur[2] == '.') + && ((cur[3] == '/') || (cur[3] == '\0'))) + cur += 3; - /* - * failed, fallback to reg_name - */ - if (!IS_REG_NAME(cur)) { - return(5); - } - NEXT(cur); - while (IS_REG_NAME(cur)) NEXT(cur); - if (uri != NULL) { - if (uri->server != NULL) xmlFree(uri->server); - uri->server = NULL; - if (uri->user != NULL) xmlFree(uri->user); - uri->user = NULL; - if (uri->authority != NULL) xmlFree(uri->authority); - if (uri->cleanup & 2) - uri->authority = STRNDUP(*str, cur - *str); - else - uri->authority = xmlURIUnescapeString(*str, cur - *str, NULL); + if (cur != path) { + out = path; + while (cur[0] != '\0') + (out++)[0] = (cur++)[0]; + out[0] = 0; + } } - *str = cur; - return(0); -} - -/** - * xmlParseURIHierPart: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze - * - * Parse an URI hierarchical part - * - * hier_part = ( net_path | abs_path ) [ "?" query ] - * abs_path = "/" path_segments - * net_path = "//" authority [ abs_path ] - * - * Returns 0 or the error code - */ -static int -xmlParseURIHierPart(xmlURIPtr uri, const char **str) { - int ret; - const char *cur; - - if (str == NULL) - return(-1); - - cur = *str; - if ((cur[0] == '/') && (cur[1] == '/')) { - cur += 2; - ret = xmlParseURIAuthority(uri, &cur); - if (ret != 0) - return(ret); - if (cur[0] == '/') { - cur++; - ret = xmlParseURIPathSegments(uri, &cur, 1); - } - } else if (cur[0] == '/') { - cur++; - ret = xmlParseURIPathSegments(uri, &cur, 1); - } else { - return(4); - } - if (ret != 0) - return(ret); - if (*cur == '?') { - cur++; - ret = xmlParseURIQuery(uri, &cur); - if (ret != 0) - return(ret); - } - *str = cur; return(0); } -/** - * xmlParseAbsoluteURI: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze - * - * Parse an URI reference string and fills in the appropriate fields - * of the @uri structure - * - * absoluteURI = scheme ":" ( hier_part | opaque_part ) - * - * Returns 0 or the error code - */ -static int -xmlParseAbsoluteURI(xmlURIPtr uri, const char **str) { - int ret; - const char *cur; - - if (str == NULL) - return(-1); - - cur = *str; - - ret = xmlParseURIScheme(uri, str); - if (ret != 0) return(ret); - if (**str != ':') { - *str = cur; +static int is_hex(char c) { + if (((c >= '0') && (c <= '9')) || + ((c >= 'a') && (c <= 'f')) || + ((c >= 'A') && (c <= 'F'))) return(1); - } - (*str)++; - if (**str == '/') - return(xmlParseURIHierPart(uri, str)); - return(xmlParseURIOpaquePart(uri, str)); + return(0); } /** - * xmlParseRelativeURI: - * @uri: pointer to an URI structure - * @str: pointer to the string to analyze + * xmlURIUnescapeString: + * @str: the string to unescape + * @len: the length in bytes to unescape (or <= 0 to indicate full string) + * @target: optional destination buffer * - * Parse an relative URI string and fills in the appropriate fields - * of the @uri structure - * - * relativeURI = ( net_path | abs_path | rel_path ) [ "?" query ] - * abs_path = "/" path_segments - * net_path = "//" authority [ abs_path ] - * rel_path = rel_segment [ abs_path ] + * Unescaping routine, but does not check that the string is an URI. The + * output is a direct unsigned char translation of %XX values (no encoding) + * Note that the length of the result can only be smaller or same size as + * the input string. * - * Returns 0 or the error code + * Returns a copy of the string, but unescaped, will return NULL only in case + * of error */ -static int -xmlParseRelativeURI(xmlURIPtr uri, const char **str) { - int ret = 0; - const char *cur; +char * +xmlURIUnescapeString(const char *str, int len, char *target) { + char *ret, *out; + const char *in; if (str == NULL) - return(-1); - - cur = *str; - if ((cur[0] == '/') && (cur[1] == '/')) { - cur += 2; - ret = xmlParseURIAuthority(uri, &cur); - if (ret != 0) - return(ret); - if (cur[0] == '/') { - cur++; - ret = xmlParseURIPathSegments(uri, &cur, 1); + return(NULL); + if (len <= 0) len = strlen(str); + if (len < 0) return(NULL); + + if (target == NULL) { + ret = (char *) xmlMallocAtomic(len + 1); + if (ret == NULL) { + xmlURIErrMemory("unescaping URI value\n"); + return(NULL); } - } else if (cur[0] == '/') { - cur++; - ret = xmlParseURIPathSegments(uri, &cur, 1); - } else if (cur[0] != '#' && cur[0] != '?') { - ret = xmlParseURIRelSegment(uri, &cur); - if (ret != 0) - return(ret); - if (cur[0] == '/') { - cur++; - ret = xmlParseURIPathSegments(uri, &cur, 1); + } else + ret = target; + in = str; + out = ret; + while(len > 0) { + if ((len > 2) && (*in == '%') && (is_hex(in[1])) && (is_hex(in[2]))) { + in++; + if ((*in >= '0') && (*in <= '9')) + *out = (*in - '0'); + else if ((*in >= 'a') && (*in <= 'f')) + *out = (*in - 'a') + 10; + else if ((*in >= 'A') && (*in <= 'F')) + *out = (*in - 'A') + 10; + in++; + if ((*in >= '0') && (*in <= '9')) + *out = *out * 16 + (*in - '0'); + else if ((*in >= 'a') && (*in <= 'f')) + *out = *out * 16 + (*in - 'a') + 10; + else if ((*in >= 'A') && (*in <= 'F')) + *out = *out * 16 + (*in - 'A') + 10; + in++; + len -= 3; + out++; + } else { + *out++ = *in++; + len--; } } - if (ret != 0) - return(ret); - if (*cur == '?') { - cur++; - ret = xmlParseURIQuery(uri, &cur); - if (ret != 0) - return(ret); - } - *str = cur; + *out = 0; return(ret); } /** - * xmlParseURIReference: - * @uri: pointer to an URI structure - * @str: the string to analyze + * xmlURIEscapeStr: + * @str: string to escape + * @list: exception list string of chars not to escape * - * Parse an URI reference string and fills in the appropriate fields - * of the @uri structure - * - * URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ] + * This routine escapes a string to hex, ignoring reserved characters (a-z) + * and the characters in the exception list. * - * Returns 0 or the error code + * Returns a new escaped string or NULL in case of error. */ -int -xmlParseURIReference(xmlURIPtr uri, const char *str) { - int ret; - const char *tmp = str; +xmlChar * +xmlURIEscapeStr(const xmlChar *str, const xmlChar *list) { + xmlChar *ret, ch; + xmlChar *temp; + const xmlChar *in; + int len, out; if (str == NULL) - return(-1); - xmlCleanURI(uri); + return(NULL); + if (str[0] == 0) + return(xmlStrdup(str)); + len = xmlStrlen(str); + if (!(len > 0)) return(NULL); - /* - * Try first to parse absolute refs, then fallback to relative if - * it fails. - */ - ret = xmlParseAbsoluteURI(uri, &str); - if (ret != 0) { - xmlCleanURI(uri); - str = tmp; - ret = xmlParseRelativeURI(uri, &str); - } - if (ret != 0) { - xmlCleanURI(uri); - return(ret); + len += 20; + ret = (xmlChar *) xmlMallocAtomic(len); + if (ret == NULL) { + xmlURIErrMemory("escaping URI value\n"); + return(NULL); } + in = (const xmlChar *) str; + out = 0; + while(*in != 0) { + if (len - out <= 3) { + temp = xmlSaveUriRealloc(ret, &len); + if (temp == NULL) { + xmlURIErrMemory("escaping URI value\n"); + xmlFree(ret); + return(NULL); + } + ret = temp; + } + + ch = *in; + + if ((ch != '@') && (!IS_UNRESERVED(ch)) && (!xmlStrchr(list, ch))) { + unsigned char val; + ret[out++] = '%'; + val = ch >> 4; + if (val <= 9) + ret[out++] = '0' + val; + else + ret[out++] = 'A' + val - 0xA; + val = ch & 0xF; + if (val <= 9) + ret[out++] = '0' + val; + else + ret[out++] = 'A' + val - 0xA; + in++; + } else { + ret[out++] = *in++; + } - if (*str == '#') { - str++; - ret = xmlParseURIFragment(uri, &str); - if (ret != 0) return(ret); - } - if (*str != 0) { - xmlCleanURI(uri); - return(1); } - return(0); + ret[out] = 0; + return(ret); } /** - * xmlParseURI: - * @str: the URI string to analyze + * xmlURIEscape: + * @str: the string of the URI to escape * - * Parse an URI - * - * URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ] + * Escaping routine, does not do validity checks ! + * It will try to escape the chars needing this, but this is heuristic + * based it's impossible to be sure. * - * Returns a newly built xmlURIPtr or NULL in case of error + * Returns an copy of the string, but escaped + * + * 25 May 2001 + * Uses xmlParseURI and xmlURIEscapeStr to try to escape correctly + * according to RFC2396. + * - Carl Douglas */ -xmlURIPtr -xmlParseURI(const char *str) { +xmlChar * +xmlURIEscape(const xmlChar * str) +{ + xmlChar *ret, *segment = NULL; xmlURIPtr uri; - int ret; + int ret2; + +#define NULLCHK(p) if(!p) { \ + xmlURIErrMemory("escaping URI value\n"); \ + xmlFreeURI(uri); \ + return NULL; } \ if (str == NULL) - return(NULL); + return (NULL); + uri = xmlCreateURI(); if (uri != NULL) { - ret = xmlParseURIReference(uri, str); - if (ret) { - xmlFreeURI(uri); - return(NULL); - } + /* + * Allow escaping errors in the unescaped form + */ + uri->cleanup = 1; + ret2 = xmlParseURIReference(uri, (const char *)str); + if (ret2) { + xmlFreeURI(uri); + return (NULL); + } } - return(uri); -} -/** - * xmlParseURIRaw: - * @str: the URI string to analyze - * @raw: if 1 unescaping of URI pieces are disabled - * - * Parse an URI but allows to keep intact the original fragments. - * - * URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ] - * - * Returns a newly built xmlURIPtr or NULL in case of error - */ -xmlURIPtr -xmlParseURIRaw(const char *str, int raw) { - xmlURIPtr uri; - int ret; + if (!uri) + return NULL; - if (str == NULL) - return(NULL); - uri = xmlCreateURI(); - if (uri != NULL) { - if (raw) { - uri->cleanup |= 2; - } - ret = xmlParseURIReference(uri, str); - if (ret) { - xmlFreeURI(uri); - return(NULL); - } + ret = NULL; + + if (uri->scheme) { + segment = xmlURIEscapeStr(BAD_CAST uri->scheme, BAD_CAST "+-."); + NULLCHK(segment) + ret = xmlStrcat(ret, segment); + ret = xmlStrcat(ret, BAD_CAST ":"); + xmlFree(segment); } - return(uri); + + if (uri->authority) { + segment = + xmlURIEscapeStr(BAD_CAST uri->authority, BAD_CAST "/?;:@"); + NULLCHK(segment) + ret = xmlStrcat(ret, BAD_CAST "//"); + ret = xmlStrcat(ret, segment); + xmlFree(segment); + } + + if (uri->user) { + segment = xmlURIEscapeStr(BAD_CAST uri->user, BAD_CAST ";:&=+$,"); + NULLCHK(segment) + ret = xmlStrcat(ret,BAD_CAST "//"); + ret = xmlStrcat(ret, segment); + ret = xmlStrcat(ret, BAD_CAST "@"); + xmlFree(segment); + } + + if (uri->server) { + segment = xmlURIEscapeStr(BAD_CAST uri->server, BAD_CAST "/?;:@"); + NULLCHK(segment) + if (uri->user == NULL) + ret = xmlStrcat(ret, BAD_CAST "//"); + ret = xmlStrcat(ret, segment); + xmlFree(segment); + } + + if (uri->port) { + xmlChar port[10]; + + snprintf((char *) port, 10, "%d", uri->port); + ret = xmlStrcat(ret, BAD_CAST ":"); + ret = xmlStrcat(ret, port); + } + + if (uri->path) { + segment = + xmlURIEscapeStr(BAD_CAST uri->path, BAD_CAST ":@&=+$,/?;"); + NULLCHK(segment) + ret = xmlStrcat(ret, segment); + xmlFree(segment); + } + + if (uri->query_raw) { + ret = xmlStrcat(ret, BAD_CAST "?"); + ret = xmlStrcat(ret, BAD_CAST uri->query_raw); + } + else if (uri->query) { + segment = + xmlURIEscapeStr(BAD_CAST uri->query, BAD_CAST ";/?:@&=+,$"); + NULLCHK(segment) + ret = xmlStrcat(ret, BAD_CAST "?"); + ret = xmlStrcat(ret, segment); + xmlFree(segment); + } + + if (uri->opaque) { + segment = xmlURIEscapeStr(BAD_CAST uri->opaque, BAD_CAST ""); + NULLCHK(segment) + ret = xmlStrcat(ret, segment); + xmlFree(segment); + } + + if (uri->fragment) { + segment = xmlURIEscapeStr(BAD_CAST uri->fragment, BAD_CAST "#"); + NULLCHK(segment) + ret = xmlStrcat(ret, BAD_CAST "#"); + ret = xmlStrcat(ret, segment); + xmlFree(segment); + } + + xmlFreeURI(uri); +#undef NULLCHK + + return (ret); } /************************************************************************ @@ -1844,7 +1869,7 @@ * * Computes he final URI of the reference done by checking that * the given URI is valid, and building the final URI using the - * base URI. This is processed according to section 5.2 of the + * base URI. This is processed according to section 5.2 of the * RFC 2396 * * 5.2. Resolving Relative References to Absolute Form @@ -1868,7 +1893,7 @@ * as a reference to "." rather than as a synonym for the current * URI. Should we do that here? */ - if (URI == NULL) + if (URI == NULL) ret = -1; else { if (*URI) { @@ -1939,12 +1964,16 @@ res->server = xmlMemStrdup(bas->server); if (bas->user != NULL) res->user = xmlMemStrdup(bas->user); - res->port = bas->port; + res->port = bas->port; } if (bas->path != NULL) res->path = xmlMemStrdup(bas->path); - if (ref->query != NULL) + if (ref->query_raw != NULL) + res->query_raw = xmlMemStrdup (ref->query_raw); + else if (ref->query != NULL) res->query = xmlMemStrdup(ref->query); + else if (bas->query_raw != NULL) + res->query_raw = xmlMemStrdup(bas->query_raw); else if (bas->query != NULL) res->query = xmlMemStrdup(bas->query); if (ref->fragment != NULL) @@ -1964,8 +1993,10 @@ } if (bas->scheme != NULL) res->scheme = xmlMemStrdup(bas->scheme); - - if (ref->query != NULL) + + if (ref->query_raw != NULL) + res->query_raw = xmlMemStrdup(ref->query_raw); + else if (ref->query != NULL) res->query = xmlMemStrdup(ref->query); if (ref->fragment != NULL) res->fragment = xmlMemStrdup(ref->fragment); @@ -1984,7 +2015,7 @@ res->server = xmlMemStrdup(ref->server); if (ref->user != NULL) res->user = xmlMemStrdup(ref->user); - res->port = ref->port; + res->port = ref->port; } if (ref->path != NULL) res->path = xmlMemStrdup(ref->path); @@ -1996,7 +2027,7 @@ res->server = xmlMemStrdup(bas->server); if (bas->user != NULL) res->user = xmlMemStrdup(bas->user); - res->port = bas->port; + res->port = bas->port; } /* @@ -2024,8 +2055,7 @@ len += strlen(bas->path); res->path = (char *) xmlMallocAtomic(len); if (res->path == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlBuildURI: out of memory\n"); + xmlURIErrMemory("resolving URI against base\n"); goto done; } res->path[0] = 0; @@ -2209,7 +2239,8 @@ uptr = (xmlChar *) ref->path; if (*uptr == '/') uptr++; - val = xmlStrdup(uptr); + /* exception characters from xmlSaveUri */ + val = xmlURIEscapeStr(uptr, BAD_CAST "/;&=+$,"); } goto done; } @@ -2270,10 +2301,11 @@ } len = xmlStrlen (uptr) + 1; } - + if (nbslash == 0) { if (uptr != NULL) - val = xmlStrdup (uptr); + /* exception characters from xmlSaveUri */ + val = xmlURIEscapeStr(uptr, BAD_CAST "/;&=+$,"); goto done; } @@ -2284,8 +2316,7 @@ */ val = (xmlChar *) xmlMalloc (len + 3 * nbslash); if (val == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlBuildRelativeURI: out of memory\n"); + xmlURIErrMemory("building relative URI\n"); goto done; } vptr = val; @@ -2313,6 +2344,12 @@ vptr[len - 1] = 0; } + /* escape the freshly-built path */ + vptr = val; + /* exception characters from xmlSaveUri */ + val = xmlURIEscapeStr(vptr, BAD_CAST "/;&=+$,"); + xmlFree(vptr); + done: /* * Free the working variables @@ -2331,14 +2368,14 @@ * xmlCanonicPath: * @path: the resource locator in a filesystem notation * - * Constructs a canonic path from the specified path. + * Constructs a canonic path from the specified path. * - * Returns a new canonic path, or a duplicate of the path parameter if the + * Returns a new canonic path, or a duplicate of the path parameter if the * construction fails. The caller is responsible for freeing the memory occupied - * by the returned string. If there is insufficient memory available, or the + * by the returned string. If there is insufficient memory available, or the * argument is NULL, the function returns NULL. */ -#define IS_WINDOWS_PATH(p) \ +#define IS_WINDOWS_PATH(p) \ ((p != NULL) && \ (((p[0] >= 'a') && (p[0] <= 'z')) || \ ((p[0] >= 'A') && (p[0] <= 'Z'))) && \ @@ -2346,7 +2383,11 @@ xmlChar * xmlCanonicPath(const xmlChar *path) { -#if defined(_WIN32) && !defined(__CYGWIN__) +/* + * For Windows implementations, additional work needs to be done to + * replace backslashes in pathnames with "forward slashes" + */ +#if defined(_WIN32) && !defined(__CYGWIN__) int len = 0; int i = 0; xmlChar *p = NULL; @@ -2357,11 +2398,30 @@ if (path == NULL) return(NULL); + +#if defined(_WIN32) + /* + * We must not change the backslashes to slashes if the the path + * starts with \\?\ + * Those paths can be up to 32k characters long. + * Was added specifically for OpenOffice, those paths can't be converted + * to URIs anyway. + */ + if ((path[0] == '\\') && (path[1] == '\\') && (path[2] == '?') && + (path[3] == '\\') ) + return xmlStrdup((const xmlChar *) path); +#endif + + /* sanitize filename starting with // so it can be used as URI */ + if ((path[0] == '/') && (path[1] == '/') && (path[2] != '/')) + path++; + if ((uri = xmlParseURI((const char *) path)) != NULL) { xmlFreeURI(uri); return xmlStrdup(path); } + /* Check if this is an "absolute uri" */ absuri = xmlStrstr(path, BAD_CAST "://"); if (absuri != NULL) { int l, j; @@ -2370,47 +2430,55 @@ /* * this looks like an URI where some parts have not been - * escaped leading to a parsing problem check that the first + * escaped leading to a parsing problem. Check that the first * part matches a protocol. */ l = absuri - path; + /* Bypass if first part (part before the '://') is > 20 chars */ if ((l <= 0) || (l > 20)) goto path_processing; + /* Bypass if any non-alpha characters are present in first part */ for (j = 0;j < l;j++) { c = path[j]; if (!(((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z')))) goto path_processing; } + /* Escape all except the characters specified in the supplied path */ escURI = xmlURIEscapeStr(path, BAD_CAST ":/?_.#&;="); if (escURI != NULL) { + /* Try parsing the escaped path */ uri = xmlParseURI((const char *) escURI); + /* If successful, return the escaped string */ if (uri != NULL) { xmlFreeURI(uri); return escURI; } - xmlFreeURI(uri); } } path_processing: -#if defined(_WIN32) && !defined(__CYGWIN__) +/* For Windows implementations, replace backslashes with 'forward slashes' */ +#if defined(_WIN32) && !defined(__CYGWIN__) /* - * This really need to be cleaned up by someone with a Windows box + * Create a URI structure */ uri = xmlCreateURI(); - if (uri == NULL) { + if (uri == NULL) { /* Guard against 'out of memory' */ return(NULL); } len = xmlStrlen(path); if ((len > 2) && IS_WINDOWS_PATH(path)) { + /* make the scheme 'file' */ uri->scheme = xmlStrdup(BAD_CAST "file"); + /* allocate space for leading '/' + path + string terminator */ uri->path = xmlMallocAtomic(len + 2); if (uri->path == NULL) { - xmlFreeURI(uri); + xmlFreeURI(uri); /* Guard agains 'out of memory' */ return(NULL); } + /* Put in leading '/' plus path */ uri->path[0] = '/'; p = uri->path + 1; strncpy(p, path, len + 1); @@ -2422,18 +2490,15 @@ } p = uri->path; } + /* Now change all occurences of '\' to '/' */ while (*p != '\0') { if (*p == '\\') *p = '/'; p++; } - if (uri->path == NULL) { - xmlFreeURI(uri); - return(NULL); - } if (uri->scheme == NULL) { - ret = xmlStrdup((const xmlChar *) path); + ret = xmlStrdup((const xmlChar *) uri->path); } else { ret = xmlSaveUri(uri); } @@ -2451,7 +2516,7 @@ * * Constructs an URI expressing the existing path * - * Returns a new URI, or a duplicate of the path parameter if the + * Returns a new URI, or a duplicate of the path parameter if the * construction fails. The caller is responsible for freeing the memory * occupied by the returned string. If there is insufficient memory available, * or the argument is NULL, the function returns NULL. @@ -2473,6 +2538,24 @@ cal = xmlCanonicPath(path); if (cal == NULL) return(NULL); +#if defined(_WIN32) && !defined(__CYGWIN__) + /* xmlCanonicPath can return an URI on Windows (is that the intended behaviour?) + If 'cal' is a valid URI allready then we are done here, as continuing would make + it invalid. */ + if ((uri = xmlParseURI((const char *) cal)) != NULL) { + xmlFreeURI(uri); + return cal; + } + /* 'cal' can contain a relative path with backslashes. If that is processed + by xmlSaveURI, they will be escaped and the external entity loader machinery + will fail. So convert them to slashes. Misuse 'ret' for walking. */ + ret = cal; + while (*ret != '\0') { + if (*ret == '\\') + *ret = '/'; + ret++; + } +#endif memset(&temp, 0, sizeof(temp)); temp.path = (char *) cal; ret = xmlSaveUri(&temp); diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/uri.in.h gettext-0.19.7/gnulib-local/lib/libxml/uri.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/uri.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/uri.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -23,6 +23,10 @@ * * A parsed URI reference. This is a struct containing the various fields * as described in RFC 2396 but separated for further processing. + * + * Note: query is a deprecated field which is incorrectly unescaped. + * query_raw takes precedence over query if the former is set. + * See: http://mail.gnome.org/archives/xml/2007-April/thread.html#00127 */ typedef struct _xmlURI xmlURI; typedef xmlURI *xmlURIPtr; @@ -34,9 +38,10 @@ char *user; /* the user part */ int port; /* the port number */ char *path; /* the path string */ - char *query; /* the query string */ + char *query; /* the query string (deprecated - use with caution) */ char *fragment; /* the fragment identifier */ int cleanup; /* parsing potentially unclean URI */ + char *query_raw; /* the query string (as it appears in the URI) */ }; /* @@ -44,43 +49,43 @@ * xmlChar * xmlNodeGetBase (xmlDocPtr doc, * xmlNodePtr cur); */ -XMLPUBFUN xmlURIPtr XMLCALL +XMLPUBFUN xmlURIPtr XMLCALL xmlCreateURI (void); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlBuildURI (const xmlChar *URI, - const xmlChar *base); -XMLPUBFUN xmlChar * XMLCALL + const xmlChar *base); +XMLPUBFUN xmlChar * XMLCALL xmlBuildRelativeURI (const xmlChar *URI, - const xmlChar *base); -XMLPUBFUN xmlURIPtr XMLCALL + const xmlChar *base); +XMLPUBFUN xmlURIPtr XMLCALL xmlParseURI (const char *str); -XMLPUBFUN xmlURIPtr XMLCALL +XMLPUBFUN xmlURIPtr XMLCALL xmlParseURIRaw (const char *str, int raw); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlParseURIReference (xmlURIPtr uri, const char *str); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlSaveUri (xmlURIPtr uri); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlPrintURI (FILE *stream, xmlURIPtr uri); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlURIEscapeStr (const xmlChar *str, - const xmlChar *list); -XMLPUBFUN char * XMLCALL + const xmlChar *list); +XMLPUBFUN char * XMLCALL xmlURIUnescapeString (const char *str, int len, char *target); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlNormalizeURIPath (char *path); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlURIEscape (const xmlChar *str); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeURI (xmlURIPtr uri); -XMLPUBFUN xmlChar* XMLCALL +XMLPUBFUN xmlChar* XMLCALL xmlCanonicPath (const xmlChar *path); -XMLPUBFUN xmlChar* XMLCALL +XMLPUBFUN xmlChar* XMLCALL xmlPathToURI (const xmlChar *path); #ifdef __cplusplus diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/valid.c gettext-0.19.7/gnulib-local/lib/libxml/valid.c --- gettext-0.19.6/gnulib-local/lib/libxml/valid.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/valid.c 2015-12-23 07:08:27.000000000 +0000 @@ -31,11 +31,16 @@ /* #define DEBUG_VALID_ALGO */ /* #define DEBUG_REGEXP_ALGO */ -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); +#ifdef LIBXML_VALID_ENABLED +static int +xmlValidateAttributeValueInternal(xmlDocPtr doc, xmlAttributeType type, + const xmlChar *value); +#endif /************************************************************************ * * * Error handling routines * @@ -117,7 +122,7 @@ __xmlRaiseError(NULL, channel, data, pctxt, NULL, XML_FROM_VALID, error, XML_ERR_ERROR, NULL, 0, NULL, NULL, NULL, 0, 0, - msg); + "%s", msg); } #if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) @@ -296,7 +301,7 @@ if (elemDecl->contModel == NULL) xmlValidBuildContentModel(ctxt, elemDecl); if (elemDecl->contModel != NULL) { - ctxt->vstateTab[ctxt->vstateNr].exec = + ctxt->vstateTab[ctxt->vstateNr].exec = xmlRegNewExecCtxt(elemDecl->contModel, NULL, NULL); } else { ctxt->vstateTab[ctxt->vstateNr].exec = NULL; @@ -618,7 +623,7 @@ #define DEBUG_VALID_STATE(n,c) xmlValidStateDebug(ctxt); #define DEBUG_VALID_MSG(m) \ xmlGenericError(xmlGenericErrorContext, "%s\n", m); - + #else #define DEBUG_VALID_STATE(n,c) #define DEBUG_VALID_MSG(m) @@ -632,8 +637,6 @@ else if ((doc->intSubset == NULL) && \ (doc->extSubset == NULL)) return(0) -xmlAttributePtr xmlScanAttributeDecl(xmlDtdPtr dtd, const xmlChar *elem); - #ifdef LIBXML_REGEXP_ENABLED /************************************************************************ @@ -673,7 +676,7 @@ xmlAutomataStatePtr oldstate = ctxt->state; xmlChar fn[50]; xmlChar *fullname; - + fullname = xmlBuildQName(content->name, content->prefix, fn, 50); if (fullname == NULL) { xmlVErrMemory(ctxt, "Building content model"); @@ -698,9 +701,9 @@ break; case XML_ELEMENT_CONTENT_MULT: ctxt->state = xmlAutomataNewEpsilon(ctxt->am, - ctxt->state, NULL); + ctxt->state, NULL); xmlAutomataNewTransition(ctxt->am, - ctxt->state, ctxt->state, fullname, NULL); + ctxt->state, ctxt->state, fullname, NULL); break; } if ((fullname != fn) && (fullname != content->name)) @@ -749,7 +752,7 @@ xmlElementContentOccur ocur; ocur = content->ocur; - if ((ocur == XML_ELEMENT_CONTENT_PLUS) || + if ((ocur == XML_ELEMENT_CONTENT_PLUS) || (ocur == XML_ELEMENT_CONTENT_MULT)) { ctxt->state = xmlAutomataNewEpsilon(ctxt->am, ctxt->state, NULL); @@ -941,7 +944,7 @@ } break; default: - xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, + xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, "Internal: ELEMENT content corrupted invalid type\n", NULL); return(NULL); @@ -998,7 +1001,7 @@ * @cur: An element content pointer. * * Build a copy of an element content description. - * + * * Returns the new xmlElementContentPtr or NULL in case of error. */ xmlElementContentPtr @@ -1025,7 +1028,7 @@ else ret->name = xmlStrdup(cur->name); } - + if (cur->prefix != NULL) { if (dict) ret->prefix = xmlDictLookup(dict, cur->prefix, -1); @@ -1055,7 +1058,7 @@ else tmp->name = xmlStrdup(cur->name); } - + if (cur->prefix != NULL) { if (dict) tmp->prefix = xmlDictLookup(dict, cur->prefix, -1); @@ -1079,7 +1082,7 @@ * * Build a copy of an element content description. * Deprecated, use xmlCopyDocElementContent instead - * + * * Returns the new xmlElementContentPtr or NULL in case of error. */ xmlElementContentPtr @@ -1111,7 +1114,7 @@ case XML_ELEMENT_CONTENT_OR: break; default: - xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, + xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, "Internal: ELEMENT content corrupted invalid type\n", NULL); return; @@ -1197,7 +1200,7 @@ xmlDumpElementContent(buf, content->c2, 0); break; default: - xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, + xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, "Internal: ELEMENT content corrupted invalid type\n", NULL); } @@ -1394,7 +1397,7 @@ switch (type) { case XML_ELEMENT_TYPE_EMPTY: if (content != NULL) { - xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, + xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, "xmlAddElementDecl: content != NULL for EMPTY\n", NULL); return(NULL); @@ -1402,7 +1405,7 @@ break; case XML_ELEMENT_TYPE_ANY: if (content != NULL) { - xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, + xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, "xmlAddElementDecl: content != NULL for ANY\n", NULL); return(NULL); @@ -1410,7 +1413,7 @@ break; case XML_ELEMENT_TYPE_MIXED: if (content == NULL) { - xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, + xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, "xmlAddElementDecl: content == NULL for MIXED\n", NULL); return(NULL); @@ -1418,14 +1421,14 @@ break; case XML_ELEMENT_TYPE_ELEMENT: if (content == NULL) { - xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, + xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, "xmlAddElementDecl: content == NULL for ELEMENT\n", NULL); return(NULL); } break; default: - xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, + xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, "Internal: ELEMENT decl corrupted invalid type\n", NULL); return(NULL); @@ -1605,7 +1608,7 @@ * @elem: An element * * Build a copy of an element. - * + * * Returns the new xmlElementPtr or NULL in case of error. */ static xmlElementPtr @@ -1639,7 +1642,7 @@ * @table: An element table * * Build a copy of an element table. - * + * * Returns the new xmlElementTablePtr or NULL in case of error. */ xmlElementTablePtr @@ -1704,7 +1707,7 @@ xmlBufferWriteChar(buf, ">\n"); break; default: - xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, + xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, "Internal: ELEMENT struct corrupted invalid type\n", NULL); } @@ -1795,6 +1798,7 @@ if (cur == NULL) return(NULL); ret = xmlCreateEnumeration((xmlChar *) cur->name); + if (ret == NULL) return(NULL); if (cur->next != NULL) ret->next = xmlCopyEnumeration(cur->next); else ret->next = NULL; @@ -1815,7 +1819,7 @@ xmlDumpEnumeration(xmlBufferPtr buf, xmlEnumerationPtr cur) { if ((buf == NULL) || (cur == NULL)) return; - + xmlBufferWriteCHAR(buf, cur->name); if (cur->next == NULL) xmlBufferWriteChar(buf, ")"); @@ -1828,53 +1832,6 @@ #ifdef LIBXML_VALID_ENABLED /** - * xmlScanAttributeDeclCallback: - * @attr: the attribute decl - * @list: the list to update - * - * Callback called by xmlScanAttributeDecl when a new attribute - * has to be entered in the list. - */ -static void -xmlScanAttributeDeclCallback(xmlAttributePtr attr, xmlAttributePtr *list, - const xmlChar* name ATTRIBUTE_UNUSED) { - attr->nexth = *list; - *list = attr; -} - -/** - * xmlScanAttributeDecl: - * @dtd: pointer to the DTD - * @elem: the element name - * - * When inserting a new element scan the DtD for existing attributes - * for that element and initialize the Attribute chain - * - * Returns the pointer to the first attribute decl in the chain, - * possibly NULL. - */ -xmlAttributePtr -xmlScanAttributeDecl(xmlDtdPtr dtd, const xmlChar *elem) { - xmlAttributePtr ret = NULL; - xmlAttributeTablePtr table; - - if (dtd == NULL) { - return(NULL); - } - if (elem == NULL) { - return(NULL); - } - table = (xmlAttributeTablePtr) dtd->attributes; - if (table == NULL) - return(NULL); - - /* WRONG !!! */ - xmlHashScan3(table, NULL, NULL, elem, - (xmlHashScanner) xmlScanAttributeDeclCallback, &ret); - return(ret); -} - -/** * xmlScanIDAttributeDecl: * @ctxt: the validation context * @elem: the element name @@ -2017,14 +1974,14 @@ case XML_ATTRIBUTE_NOTATION: break; default: - xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, + xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR, "Internal: ATTRIBUTE struct corrupted invalid type\n", NULL); xmlFreeEnumeration(tree); return(NULL); } - if ((defaultValue != NULL) && - (!xmlValidateAttributeValue(type, defaultValue))) { + if ((defaultValue != NULL) && + (!xmlValidateAttributeValueInternal(dtd->doc, type, defaultValue))) { xmlErrValidNode(ctxt, (xmlNodePtr) dtd, XML_DTD_ATTRIBUTE_DEFAULT, "Attribute %s of %s: invalid default value\n", elem, name, defaultValue); @@ -2042,8 +1999,10 @@ (dtd->doc->intSubset != NULL) && (dtd->doc->intSubset->attributes != NULL)) { ret = xmlHashLookup3(dtd->doc->intSubset->attributes, name, ns, elem); - if (ret != NULL) + if (ret != NULL) { + xmlFreeEnumeration(tree); return(NULL); + } } /* @@ -2057,6 +2016,7 @@ if (table == NULL) { xmlVErrMemory(ctxt, "xmlAddAttributeDecl: Table creation failed!\n"); + xmlFreeEnumeration(tree); return(NULL); } @@ -2064,6 +2024,7 @@ ret = (xmlAttributePtr) xmlMalloc(sizeof(xmlAttribute)); if (ret == NULL) { xmlVErrMemory(ctxt, "malloc failed"); + xmlFreeEnumeration(tree); return(NULL); } memset(ret, 0, sizeof(xmlAttribute)); @@ -2193,7 +2154,7 @@ * @attr: An attribute * * Build a copy of an attribute. - * + * * Returns the new xmlAttributePtr or NULL in case of error. */ static xmlAttributePtr @@ -2226,7 +2187,7 @@ * @table: An attribute table * * Build a copy of an attribute table. - * + * * Returns the new xmlAttributeTablePtr or NULL in case of error. */ xmlAttributeTablePtr @@ -2291,7 +2252,7 @@ xmlDumpEnumeration(buf, attr->tree); break; default: - xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, + xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, "Internal: ATTRIBUTE struct corrupted invalid type\n", NULL); } @@ -2308,7 +2269,7 @@ xmlBufferWriteChar(buf, " #FIXED"); break; default: - xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, + xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, "Internal: ATTRIBUTE struct corrupted invalid def\n", NULL); } @@ -2438,7 +2399,7 @@ */ if (xmlHashAddEntry(table, name, ret)) { #ifdef LIBXML_VALID_ENABLED - xmlErrValid(NULL, XML_DTD_NOTATION_REDEFINED, + xmlErrValid(NULL, XML_DTD_NOTATION_REDEFINED, "xmlAddNotationDecl: %s already defined\n", (const char *) name); #endif /* LIBXML_VALID_ENABLED */ @@ -2465,7 +2426,7 @@ * @nota: A notation * * Build a copy of a notation. - * + * * Returns the new xmlNotationPtr or NULL in case of error. */ static xmlNotationPtr @@ -2497,7 +2458,7 @@ * @table: A notation table * * Build a copy of a notation table. - * + * * Returns the new xmlNotationTablePtr or NULL in case of error. */ xmlNotationTablePtr @@ -2575,7 +2536,7 @@ * current scope */ #define DICT_FREE(str) \ - if ((str) && ((!dict) || \ + if ((str) && ((!dict) || \ (xmlDictOwns(dict, (const xmlChar *)(str)) == 0))) \ xmlFree((char *)(str)); @@ -2613,7 +2574,7 @@ * * Returns NULL if not, otherwise the new xmlIDPtr */ -xmlIDPtr +xmlIDPtr xmlAddID(xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value, xmlAttrPtr attr) { xmlIDPtr ret; @@ -2673,10 +2634,9 @@ /* * The id is already defined in this DTD. */ - if ((ctxt != NULL) && (ctxt->error != NULL)) { + if (ctxt != NULL) { xmlErrValidNode(ctxt, attr->parent, XML_DTD_ID_REDEFINED, - "ID %s already defined\n", - value, NULL, NULL); + "ID %s already defined\n", value, NULL, NULL); } #endif /* LIBXML_VALID_ENABLED */ xmlFreeID(ret); @@ -2719,14 +2679,15 @@ (!strcmp((char *) attr->ns->prefix, "xml"))) return(1); if (doc == NULL) return(0); - if ((doc->intSubset == NULL) && (doc->extSubset == NULL)) { + if ((doc->intSubset == NULL) && (doc->extSubset == NULL) && + (doc->type != XML_HTML_DOCUMENT_NODE)) { return(0); } else if (doc->type == XML_HTML_DOCUMENT_NODE) { if ((xmlStrEqual(BAD_CAST "id", attr->name)) || ((xmlStrEqual(BAD_CAST "name", attr->name)) && - ((elem == NULL) || (!xmlStrEqual(elem->name, BAD_CAST "input"))))) + ((elem == NULL) || (xmlStrEqual(elem->name, BAD_CAST "a"))))) return(1); - return(0); + return(0); } else if (elem == NULL) { return(0); } else { @@ -2779,23 +2740,24 @@ if (doc == NULL) return(-1); if (attr == NULL) return(-1); + table = (xmlIDTablePtr) doc->ids; - if (table == NULL) + if (table == NULL) return(-1); - if (attr == NULL) - return(-1); ID = xmlNodeListGetString(doc, attr->children, 1); if (ID == NULL) - return(-1); + return(-1); + id = xmlHashLookup(table, ID); if (id == NULL || id->attr != attr) { - xmlFree(ID); - return(-1); + xmlFree(ID); + return(-1); } + xmlHashRemoveEntry(table, ID, (xmlHashDeallocator) xmlFreeID); xmlFree(ID); - attr->atype = 0; + attr->atype = 0; return(0); } @@ -2808,7 +2770,7 @@ * * Returns NULL if not found, otherwise the xmlAttrPtr defining the ID */ -xmlAttrPtr +xmlAttrPtr xmlGetID(xmlDocPtr doc, const xmlChar *ID) { xmlIDTablePtr table; xmlIDPtr id; @@ -2822,7 +2784,7 @@ } table = (xmlIDTablePtr) doc->ids; - if (table == NULL) + if (table == NULL) return(NULL); id = xmlHashLookup(table, ID); @@ -2843,7 +2805,7 @@ * Refs * * * ************************************************************************/ -typedef struct xmlRemoveMemo_t +typedef struct xmlRemoveMemo_t { xmlListPtr l; xmlAttrPtr ap; @@ -2851,7 +2813,7 @@ typedef xmlRemoveMemo *xmlRemoveMemoPtr; -typedef struct xmlValidateMemo_t +typedef struct xmlValidateMemo_t { xmlValidCtxtPtr ctxt; const xmlChar *name; @@ -2934,7 +2896,7 @@ * * Returns NULL if not, otherwise the new xmlRefPtr */ -xmlRefPtr +xmlRefPtr xmlAddRef(xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value, xmlAttrPtr attr) { xmlRefPtr ret; @@ -2998,19 +2960,32 @@ xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, "xmlAddRef: Reference list creation failed!\n", NULL); - return(NULL); + goto failed; } if (xmlHashAddEntry(table, value, ref_list) < 0) { xmlListDelete(ref_list); xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, "xmlAddRef: Reference list insertion failed!\n", NULL); - return(NULL); + goto failed; } } -/* xmlListInsert(ref_list, ret); */ - xmlListAppend(ref_list, ret); + if (xmlListAppend(ref_list, ret) != 0) { + xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR, + "xmlAddRef: Reference list insertion failed!\n", + NULL); + goto failed; + } return(ret); +failed: + if (ret != NULL) { + if (ret->value != NULL) + xmlFree((char *)ret->value); + if (ret->name != NULL) + xmlFree((char *)ret->name); + xmlFree(ret); + } + return(NULL); } /** @@ -3049,7 +3024,7 @@ return(0); } else if (doc->type == XML_HTML_DOCUMENT_NODE) { /* TODO @@@ */ - return(0); + return(0); } else { xmlAttributePtr attrDecl; @@ -3085,21 +3060,21 @@ if (doc == NULL) return(-1); if (attr == NULL) return(-1); + table = (xmlRefTablePtr) doc->refs; - if (table == NULL) + if (table == NULL) return(-1); - if (attr == NULL) - return(-1); ID = xmlNodeListGetString(doc, attr->children, 1); if (ID == NULL) return(-1); - ref_list = xmlHashLookup(table, ID); + ref_list = xmlHashLookup(table, ID); if(ref_list == NULL) { xmlFree(ID); return (-1); } + /* At this point, ref_list refers to a list of references which * have the same key as the supplied attr. Our list of references * is ordered by reference address and we don't have that information @@ -3112,7 +3087,7 @@ */ target.l = ref_list; target.ap = attr; - + /* Remove the supplied attr from our list */ xmlListWalk(ref_list, xmlWalkRemoveRef, &target); @@ -3129,11 +3104,11 @@ * @doc: pointer to the document * @ID: the ID value * - * Find the set of references for the supplied ID. + * Find the set of references for the supplied ID. * * Returns NULL if not found, otherwise node set for the ID. */ -xmlListPtr +xmlListPtr xmlGetRefs(xmlDocPtr doc, const xmlChar *ID) { xmlRefTablePtr table; @@ -3146,7 +3121,7 @@ } table = (xmlRefTablePtr) doc->refs; - if (table == NULL) + if (table == NULL) return(NULL); return (xmlHashLookup(table, ID)); @@ -3211,7 +3186,7 @@ if (dtd->doc != NULL) dict = dtd->doc->dict; - if (!create) + if (!create) return(NULL); /* * Create the Element table if needed. @@ -3377,7 +3352,8 @@ xmlValidateNotationUse(xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *notationName) { xmlNotationPtr notaDecl; - if ((doc == NULL) || (doc->intSubset == NULL)) return(-1); + if ((doc == NULL) || (doc->intSubset == NULL) || + (notationName == NULL)) return(-1); notaDecl = xmlGetDtdNotationDesc(doc->intSubset, notationName); if ((notaDecl == NULL) && (doc->extSubset != NULL)) @@ -3432,8 +3408,78 @@ } #ifdef LIBXML_VALID_ENABLED + +static int +xmlIsDocNameStartChar(xmlDocPtr doc, int c) { + if ((doc == NULL) || (doc->properties & XML_DOC_OLD10) == 0) { + /* + * Use the new checks of production [4] [4a] amd [5] of the + * Update 5 of XML-1.0 + */ + if (((c >= 'a') && (c <= 'z')) || + ((c >= 'A') && (c <= 'Z')) || + (c == '_') || (c == ':') || + ((c >= 0xC0) && (c <= 0xD6)) || + ((c >= 0xD8) && (c <= 0xF6)) || + ((c >= 0xF8) && (c <= 0x2FF)) || + ((c >= 0x370) && (c <= 0x37D)) || + ((c >= 0x37F) && (c <= 0x1FFF)) || + ((c >= 0x200C) && (c <= 0x200D)) || + ((c >= 0x2070) && (c <= 0x218F)) || + ((c >= 0x2C00) && (c <= 0x2FEF)) || + ((c >= 0x3001) && (c <= 0xD7FF)) || + ((c >= 0xF900) && (c <= 0xFDCF)) || + ((c >= 0xFDF0) && (c <= 0xFFFD)) || + ((c >= 0x10000) && (c <= 0xEFFFF))) + return(1); + } else { + if (IS_LETTER(c) || (c == '_') || (c == ':')) + return(1); + } + return(0); +} + +static int +xmlIsDocNameChar(xmlDocPtr doc, int c) { + if ((doc == NULL) || (doc->properties & XML_DOC_OLD10) == 0) { + /* + * Use the new checks of production [4] [4a] amd [5] of the + * Update 5 of XML-1.0 + */ + if (((c >= 'a') && (c <= 'z')) || + ((c >= 'A') && (c <= 'Z')) || + ((c >= '0') && (c <= '9')) || /* !start */ + (c == '_') || (c == ':') || + (c == '-') || (c == '.') || (c == 0xB7) || /* !start */ + ((c >= 0xC0) && (c <= 0xD6)) || + ((c >= 0xD8) && (c <= 0xF6)) || + ((c >= 0xF8) && (c <= 0x2FF)) || + ((c >= 0x300) && (c <= 0x36F)) || /* !start */ + ((c >= 0x370) && (c <= 0x37D)) || + ((c >= 0x37F) && (c <= 0x1FFF)) || + ((c >= 0x200C) && (c <= 0x200D)) || + ((c >= 0x203F) && (c <= 0x2040)) || /* !start */ + ((c >= 0x2070) && (c <= 0x218F)) || + ((c >= 0x2C00) && (c <= 0x2FEF)) || + ((c >= 0x3001) && (c <= 0xD7FF)) || + ((c >= 0xF900) && (c <= 0xFDCF)) || + ((c >= 0xFDF0) && (c <= 0xFFFD)) || + ((c >= 0x10000) && (c <= 0xEFFFF))) + return(1); + } else { + if ((IS_LETTER(c)) || (IS_DIGIT(c)) || + (c == '.') || (c == '-') || + (c == '_') || (c == ':') || + (IS_COMBINING(c)) || + (IS_EXTENDER(c))) + return(1); + } + return(0); +} + /** * xmlValidateNameValue: + * @doc: pointer to the document or NULL * @value: an Name value * * Validate that the given value match Name production @@ -3441,8 +3487,8 @@ * returns 1 if valid or 0 otherwise */ -int -xmlValidateNameValue(const xmlChar *value) { +static int +xmlValidateNameValueInternal(xmlDocPtr doc, const xmlChar *value) { const xmlChar *cur; int val, len; @@ -3450,18 +3496,12 @@ cur = value; val = xmlStringCurrentChar(NULL, cur, &len); cur += len; - if (!IS_LETTER(val) && (val != '_') && - (val != ':')) { + if (!xmlIsDocNameStartChar(doc, val)) return(0); - } val = xmlStringCurrentChar(NULL, cur, &len); cur += len; - while ((IS_LETTER(val)) || (IS_DIGIT(val)) || - (val == '.') || (val == '-') || - (val == '_') || (val == ':') || - (IS_COMBINING(val)) || - (IS_EXTENDER(val))) { + while (xmlIsDocNameChar(doc, val)) { val = xmlStringCurrentChar(NULL, cur, &len); cur += len; } @@ -3472,7 +3512,22 @@ } /** - * xmlValidateNamesValue: + * xmlValidateNameValue: + * @value: an Name value + * + * Validate that the given value match Name production + * + * returns 1 if valid or 0 otherwise + */ + +int +xmlValidateNameValue(const xmlChar *value) { + return(xmlValidateNameValueInternal(NULL, value)); +} + +/** + * xmlValidateNamesValueInternal: + * @doc: pointer to the document or NULL * @value: an Names value * * Validate that the given value match Names production @@ -3480,8 +3535,8 @@ * returns 1 if valid or 0 otherwise */ -int -xmlValidateNamesValue(const xmlChar *value) { +static int +xmlValidateNamesValueInternal(xmlDocPtr doc, const xmlChar *value) { const xmlChar *cur; int val, len; @@ -3489,19 +3544,13 @@ cur = value; val = xmlStringCurrentChar(NULL, cur, &len); cur += len; - - if (!IS_LETTER(val) && (val != '_') && - (val != ':')) { + + if (!xmlIsDocNameStartChar(doc, val)) return(0); - } val = xmlStringCurrentChar(NULL, cur, &len); cur += len; - while ((IS_LETTER(val)) || (IS_DIGIT(val)) || - (val == '.') || (val == '-') || - (val == '_') || (val == ':') || - (IS_COMBINING(val)) || - (IS_EXTENDER(val))) { + while (xmlIsDocNameChar(doc, val)) { val = xmlStringCurrentChar(NULL, cur, &len); cur += len; } @@ -3513,18 +3562,13 @@ cur += len; } - if (!IS_LETTER(val) && (val != '_') && - (val != ':')) { + if (!xmlIsDocNameStartChar(doc, val)) return(0); - } + val = xmlStringCurrentChar(NULL, cur, &len); cur += len; - while ((IS_LETTER(val)) || (IS_DIGIT(val)) || - (val == '.') || (val == '-') || - (val == '_') || (val == ':') || - (IS_COMBINING(val)) || - (IS_EXTENDER(val))) { + while (xmlIsDocNameChar(doc, val)) { val = xmlStringCurrentChar(NULL, cur, &len); cur += len; } @@ -3536,18 +3580,33 @@ } /** - * xmlValidateNmtokenValue: + * xmlValidateNamesValue: + * @value: an Names value + * + * Validate that the given value match Names production + * + * returns 1 if valid or 0 otherwise + */ + +int +xmlValidateNamesValue(const xmlChar *value) { + return(xmlValidateNamesValueInternal(NULL, value)); +} + +/** + * xmlValidateNmtokenValueInternal: + * @doc: pointer to the document or NULL * @value: an Nmtoken value * * Validate that the given value match Nmtoken production * * [ VC: Name Token ] - * + * * returns 1 if valid or 0 otherwise */ -int -xmlValidateNmtokenValue(const xmlChar *value) { +static int +xmlValidateNmtokenValueInternal(xmlDocPtr doc, const xmlChar *value) { const xmlChar *cur; int val, len; @@ -3555,19 +3614,13 @@ cur = value; val = xmlStringCurrentChar(NULL, cur, &len); cur += len; - - if (!IS_LETTER(val) && !IS_DIGIT(val) && - (val != '.') && (val != '-') && - (val != '_') && (val != ':') && - (!IS_COMBINING(val)) && - (!IS_EXTENDER(val))) + + if (!xmlIsDocNameChar(doc, val)) return(0); - while ((IS_LETTER(val)) || (IS_DIGIT(val)) || - (val == '.') || (val == '-') || - (val == '_') || (val == ':') || - (IS_COMBINING(val)) || - (IS_EXTENDER(val))) { + val = xmlStringCurrentChar(NULL, cur, &len); + cur += len; + while (xmlIsDocNameChar(doc, val)) { val = xmlStringCurrentChar(NULL, cur, &len); cur += len; } @@ -3578,18 +3631,35 @@ } /** - * xmlValidateNmtokensValue: + * xmlValidateNmtokenValue: + * @value: an Nmtoken value + * + * Validate that the given value match Nmtoken production + * + * [ VC: Name Token ] + * + * returns 1 if valid or 0 otherwise + */ + +int +xmlValidateNmtokenValue(const xmlChar *value) { + return(xmlValidateNmtokenValueInternal(NULL, value)); +} + +/** + * xmlValidateNmtokensValueInternal: + * @doc: pointer to the document or NULL * @value: an Nmtokens value * * Validate that the given value match Nmtokens production * * [ VC: Name Token ] - * + * * returns 1 if valid or 0 otherwise */ -int -xmlValidateNmtokensValue(const xmlChar *value) { +static int +xmlValidateNmtokensValueInternal(xmlDocPtr doc, const xmlChar *value) { const xmlChar *cur; int val, len; @@ -3597,24 +3667,16 @@ cur = value; val = xmlStringCurrentChar(NULL, cur, &len); cur += len; - + while (IS_BLANK(val)) { val = xmlStringCurrentChar(NULL, cur, &len); cur += len; } - if (!IS_LETTER(val) && !IS_DIGIT(val) && - (val != '.') && (val != '-') && - (val != '_') && (val != ':') && - (!IS_COMBINING(val)) && - (!IS_EXTENDER(val))) + if (!xmlIsDocNameChar(doc, val)) return(0); - while ((IS_LETTER(val)) || (IS_DIGIT(val)) || - (val == '.') || (val == '-') || - (val == '_') || (val == ':') || - (IS_COMBINING(val)) || - (IS_EXTENDER(val))) { + while (xmlIsDocNameChar(doc, val)) { val = xmlStringCurrentChar(NULL, cur, &len); cur += len; } @@ -3627,18 +3689,13 @@ } if (val == 0) return(1); - if (!IS_LETTER(val) && !IS_DIGIT(val) && - (val != '.') && (val != '-') && - (val != '_') && (val != ':') && - (!IS_COMBINING(val)) && - (!IS_EXTENDER(val))) + if (!xmlIsDocNameChar(doc, val)) return(0); - while ((IS_LETTER(val)) || (IS_DIGIT(val)) || - (val == '.') || (val == '-') || - (val == '_') || (val == ':') || - (IS_COMBINING(val)) || - (IS_EXTENDER(val))) { + val = xmlStringCurrentChar(NULL, cur, &len); + cur += len; + + while (xmlIsDocNameChar(doc, val)) { val = xmlStringCurrentChar(NULL, cur, &len); cur += len; } @@ -3650,6 +3707,22 @@ } /** + * xmlValidateNmtokensValue: + * @value: an Nmtokens value + * + * Validate that the given value match Nmtokens production + * + * [ VC: Name Token ] + * + * returns 1 if valid or 0 otherwise + */ + +int +xmlValidateNmtokensValue(const xmlChar *value) { + return(xmlValidateNmtokensValueInternal(NULL, value)); +} + +/** * xmlValidateNotationDecl: * @ctxt: the validation context * @doc: a document instance @@ -3673,6 +3746,40 @@ } /** + * xmlValidateAttributeValueInternal: + * @doc: the document + * @type: an attribute type + * @value: an attribute value + * + * Validate that the given attribute value match the proper production + * + * returns 1 if valid or 0 otherwise + */ + +static int +xmlValidateAttributeValueInternal(xmlDocPtr doc, xmlAttributeType type, + const xmlChar *value) { + switch (type) { + case XML_ATTRIBUTE_ENTITIES: + case XML_ATTRIBUTE_IDREFS: + return(xmlValidateNamesValueInternal(doc, value)); + case XML_ATTRIBUTE_ENTITY: + case XML_ATTRIBUTE_IDREF: + case XML_ATTRIBUTE_ID: + case XML_ATTRIBUTE_NOTATION: + return(xmlValidateNameValueInternal(doc, value)); + case XML_ATTRIBUTE_NMTOKENS: + case XML_ATTRIBUTE_ENUMERATION: + return(xmlValidateNmtokensValueInternal(doc, value)); + case XML_ATTRIBUTE_NMTOKEN: + return(xmlValidateNmtokenValueInternal(doc, value)); + case XML_ATTRIBUTE_CDATA: + break; + } + return(1); +} + +/** * xmlValidateAttributeValue: * @type: an attribute type * @value: an attribute value @@ -3692,31 +3799,13 @@ * * [ VC: Name Token ] * Values of type NMTOKEN must match the Nmtoken production; values - * of type NMTOKENS must match Nmtokens. + * of type NMTOKENS must match Nmtokens. * * returns 1 if valid or 0 otherwise */ - int xmlValidateAttributeValue(xmlAttributeType type, const xmlChar *value) { - switch (type) { - case XML_ATTRIBUTE_ENTITIES: - case XML_ATTRIBUTE_IDREFS: - return(xmlValidateNamesValue(value)); - case XML_ATTRIBUTE_ENTITY: - case XML_ATTRIBUTE_IDREF: - case XML_ATTRIBUTE_ID: - case XML_ATTRIBUTE_NOTATION: - return(xmlValidateNameValue(value)); - case XML_ATTRIBUTE_NMTOKENS: - case XML_ATTRIBUTE_ENUMERATION: - return(xmlValidateNmtokensValue(value)); - case XML_ATTRIBUTE_NMTOKEN: - return(xmlValidateNmtokenValue(value)); - case XML_ATTRIBUTE_CDATA: - break; - } - return(1); + return(xmlValidateAttributeValueInternal(NULL, type, value)); } /** @@ -3769,7 +3858,7 @@ if ((ent == NULL) && (doc->standalone == 1)) { doc->standalone = 0; ent = xmlGetDocEntity(doc, value); - } + } if (ent == NULL) { xmlErrValidNode(ctxt, (xmlNodePtr) doc, XML_DTD_UNKNOWN_ENTITY, @@ -3880,7 +3969,7 @@ if ((elem->ns != NULL) && (elem->ns->prefix != NULL)) { xmlChar fn[50]; xmlChar *fullname; - + fullname = xmlBuildQName(elem->name, elem->ns->prefix, fn, 50); if (fullname == NULL) return(NULL); @@ -3965,13 +4054,10 @@ if ((elem->ns != NULL) && (elem->ns->prefix != NULL)) { xmlChar fn[50]; xmlChar *fullname; - + fullname = xmlBuildQName(elem->name, elem->ns->prefix, fn, 50); if (fullname == NULL) return(NULL); - attrDecl = xmlGetDtdAttrDesc(doc->intSubset, fullname, name); - if ((attrDecl == NULL) && (doc->extSubset != NULL)) - attrDecl = xmlGetDtdAttrDesc(doc->extSubset, fullname, name); if ((fullname != fn) && (fullname != elem->name)) xmlFree(fullname); } @@ -4034,11 +4120,12 @@ int val; CHECK_DTD; if(attr == NULL) return(1); - + /* Attribute Default Legal */ /* Enumeration */ if (attr->defaultValue != NULL) { - val = xmlValidateAttributeValue(attr->atype, attr->defaultValue); + val = xmlValidateAttributeValueInternal(doc, attr->atype, + attr->defaultValue); if (val == 0) { xmlErrValidNode(ctxt, (xmlNodePtr) attr, XML_DTD_ATTRIBUTE_DEFAULT, "Syntax of default value for attribute %s of %s is not valid\n", @@ -4081,7 +4168,7 @@ } } if (nbId > 1) { - + xmlErrValidNodeNr(ctxt, (xmlNodePtr) attr, XML_DTD_ID_SUBSET, "Element %s has %d ID attribute defined in the internal subset : %s\n", attr->elem, nbId, attr->name); @@ -4144,7 +4231,7 @@ xmlElementPtr tst; CHECK_DTD; - + if (elem == NULL) return(1); #if 0 @@ -4169,15 +4256,15 @@ while (next != NULL) { if (next->type == XML_ELEMENT_CONTENT_ELEMENT) { if ((xmlStrEqual(next->name, name)) && - (xmlStrEqual(next->prefix, cur->prefix))) { - if (cur->prefix == NULL) { + (xmlStrEqual(next->prefix, cur->c1->prefix))) { + if (cur->c1->prefix == NULL) { xmlErrValidNode(ctxt, (xmlNodePtr) elem, XML_DTD_CONTENT_ERROR, "Definition of %s has duplicate references of %s\n", elem->name, name, NULL); } else { xmlErrValidNode(ctxt, (xmlNodePtr) elem, XML_DTD_CONTENT_ERROR, "Definition of %s has duplicate references of %s:%s\n", - elem->name, cur->prefix, name); + elem->name, cur->c1->prefix, name); } ret = 0; } @@ -4186,15 +4273,15 @@ if (next->c1 == NULL) break; if (next->c1->type != XML_ELEMENT_CONTENT_ELEMENT) break; if ((xmlStrEqual(next->c1->name, name)) && - (xmlStrEqual(next->c1->prefix, cur->prefix))) { - if (cur->prefix == NULL) { + (xmlStrEqual(next->c1->prefix, cur->c1->prefix))) { + if (cur->c1->prefix == NULL) { xmlErrValidNode(ctxt, (xmlNodePtr) elem, XML_DTD_CONTENT_ERROR, "Definition of %s has duplicate references to %s\n", elem->name, name, NULL); } else { xmlErrValidNode(ctxt, (xmlNodePtr) elem, XML_DTD_CONTENT_ERROR, "Definition of %s has duplicate references to %s:%s\n", - elem->name, cur->prefix, name); + elem->name, cur->c1->prefix, name); } ret = 0; } @@ -4261,7 +4348,7 @@ int xmlValidateOneAttribute(xmlValidCtxtPtr ctxt, xmlDocPtr doc, - xmlNodePtr elem, xmlAttrPtr attr, const xmlChar *value) + xmlNodePtr elem, xmlAttrPtr attr, const xmlChar *value) { xmlAttributePtr attrDecl = NULL; int val; @@ -4274,7 +4361,7 @@ if ((elem->ns != NULL) && (elem->ns->prefix != NULL)) { xmlChar fn[50]; xmlChar *fullname; - + fullname = xmlBuildQName(elem->name, elem->ns->prefix, fn, 50); if (fullname == NULL) return(0); @@ -4319,7 +4406,7 @@ } attr->atype = attrDecl->atype; - val = xmlValidateAttributeValue(attrDecl->atype, value); + val = xmlValidateAttributeValueInternal(doc, attrDecl->atype, value); if (val == 0) { xmlErrValidNode(ctxt, elem, XML_DTD_ATTRIBUTE_VALUE, "Syntax of value for attribute %s of %s is not valid\n", @@ -4358,7 +4445,7 @@ nota = xmlGetDtdNotationDesc(doc->intSubset, value); if (nota == NULL) nota = xmlGetDtdNotationDesc(doc->extSubset, value); - + if (nota == NULL) { xmlErrValidNode(ctxt, elem, XML_DTD_UNKNOWN_NOTATION, "Value \"%s\" for attribute %s of %s is not a declared Notation\n", @@ -4451,7 +4538,7 @@ if (prefix != NULL) { xmlChar fn[50]; xmlChar *fullname; - + fullname = xmlBuildQName(elem->name, prefix, fn, 50); if (fullname == NULL) { xmlVErrMemory(ctxt, "Validating namespace"); @@ -4504,7 +4591,7 @@ return(0); } - val = xmlValidateAttributeValue(attrDecl->atype, value); + val = xmlValidateAttributeValueInternal(doc, attrDecl->atype, value); if (val == 0) { if (ns->prefix != NULL) { xmlErrValidNode(ctxt, elem, XML_DTD_INVALID_DEFAULT, @@ -4555,7 +4642,7 @@ nota = xmlGetDtdNotationDesc(doc->intSubset, value); if (nota == NULL) nota = xmlGetDtdNotationDesc(doc->extSubset, value); - + if (nota == NULL) { if (ns->prefix != NULL) { xmlErrValidNode(ctxt, elem, XML_DTD_UNKNOWN_NOTATION, @@ -4691,7 +4778,7 @@ NODE = xmlValidateSkipIgnorable(NODE); if ((NODE == NULL) && (CONT == NULL)) return(1); - if ((NODE == NULL) && + if ((NODE == NULL) && ((CONT->ocur == XML_ELEMENT_CONTENT_MULT) || (CONT->ocur == XML_ELEMENT_CONTENT_OPT))) { return(1); @@ -5150,7 +5237,7 @@ xmlElementContentPtr cont; const xmlChar *name; - if (elemDecl == NULL) + if ((elemDecl == NULL) || (parent == NULL) || (ctxt == NULL)) return(-1); cont = elemDecl->content; name = elemDecl->name; @@ -5200,7 +5287,7 @@ if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) { xmlChar fn[50]; xmlChar *fullname; - + fullname = xmlBuildQName(cur->name, cur->ns->prefix, fn, 50); if (fullname == NULL) { @@ -5314,7 +5401,7 @@ last = tmp; } if (cur->type == XML_CDATA_SECTION_NODE) { - /* + /* * E59 spaces in CDATA does not match the * nonterminal S */ @@ -5431,7 +5518,8 @@ int ret = 1; xmlNodePtr cur, child; - if ((ctxt == NULL) || (doc == NULL) || (elem == NULL)) + if ((ctxt == NULL) || (doc == NULL) || (elem == NULL) || + (elem->type != XML_ELEMENT_NODE)) return(0); child = elem->children; @@ -5512,7 +5600,7 @@ } else if ((cont->type != XML_ELEMENT_CONTENT_OR) || (cont->c1 == NULL) || (cont->c1->type != XML_ELEMENT_CONTENT_PCDATA)){ - xmlErrValid(NULL, XML_DTD_MIXED_CORRUPT, + xmlErrValid(NULL, XML_DTD_MIXED_CORRUPT, "Internal: MIXED struct corrupted\n", NULL); break; @@ -5536,7 +5624,7 @@ } else if ((cont->type != XML_ELEMENT_CONTENT_OR) || (cont->c1 == NULL) || (cont->c1->type != XML_ELEMENT_CONTENT_PCDATA)){ - xmlErrValid(ctxt, XML_DTD_MIXED_CORRUPT, + xmlErrValid(ctxt, XML_DTD_MIXED_CORRUPT, "Internal: MIXED struct corrupted\n", NULL); break; @@ -5565,7 +5653,7 @@ xmlElementPtr elemDecl = NULL; const xmlChar *prefix = NULL; - if ((ctxt == NULL) || (doc == NULL) || + if ((ctxt == NULL) || (doc == NULL) || (elem == NULL) || (elem->name == NULL)) return(NULL); if (extsubset != NULL) @@ -5709,7 +5797,7 @@ * xmlValidatePushCData: * @ctxt: the validation context * @data: some character data read - * @len: the lenght of the data + * @len: the length of the data * * check the CData parsed for validation in the current stack * @@ -5931,7 +6019,7 @@ return(0); /* - * If vstateNr is not zero that means continuous validation is + * If vstateNr is not zero that means continuous validation is * activated, do not try to check the content model at that level. */ if (ctxt->vstateNr == 0) { @@ -5974,7 +6062,7 @@ if ((child->ns != NULL) && (child->ns->prefix != NULL)) { xmlChar fn[50]; xmlChar *fullname; - + fullname = xmlBuildQName(child->name, child->ns->prefix, fn, 50); if (fullname == NULL) @@ -5992,7 +6080,7 @@ } else if ((cont->type != XML_ELEMENT_CONTENT_OR) || (cont->c1 == NULL) || (cont->c1->type != XML_ELEMENT_CONTENT_PCDATA)){ - xmlErrValid(NULL, XML_DTD_MIXED_CORRUPT, + xmlErrValid(NULL, XML_DTD_MIXED_CORRUPT, "Internal: MIXED struct corrupted\n", NULL); break; @@ -6015,7 +6103,7 @@ } else if ((cont->type != XML_ELEMENT_CONTENT_OR) || (cont->c1 == NULL) || (cont->c1->type != XML_ELEMENT_CONTENT_PCDATA)) { - xmlErrValid(ctxt, XML_DTD_MIXED_CORRUPT, + xmlErrValid(ctxt, XML_DTD_MIXED_CORRUPT, "Internal: MIXED struct corrupted\n", NULL); break; @@ -6095,7 +6183,7 @@ } } else { xmlAttrPtr attrib; - + attrib = elem->properties; while (attrib != NULL) { if (xmlStrEqual(attrib->name, attr->name)) { @@ -6110,18 +6198,18 @@ * allow to define the URI instead of the prefix :-( */ if (nameSpace == NULL) { - if (qualified < 0) + if (qualified < 0) qualified = 0; } else if (!xmlStrEqual(nameSpace->prefix, attr->prefix)) { - if (qualified < 1) + if (qualified < 1) qualified = 1; } else goto found; } else { /* * We should allow applications to define namespaces - * for their application even if the DTD doesn't + * for their application even if the DTD doesn't * carry one, otherwise, basically we would always * break. */ @@ -6194,7 +6282,7 @@ } } } -found: +found: attr = attr->nexth; } return(ret); @@ -6241,7 +6329,7 @@ if ((root->ns != NULL) && (root->ns->prefix != NULL)) { xmlChar fn[50]; xmlChar *fullname; - + fullname = xmlBuildQName(root->name, root->ns->prefix, fn, 50); if (fullname == NULL) { xmlVErrMemory(ctxt, NULL); @@ -6252,7 +6340,7 @@ xmlFree(fullname); if (ret == 1) goto name_ok; - } + } if ((xmlStrEqual(doc->intSubset->name, BAD_CAST "HTML")) && (xmlStrEqual(root->name, BAD_CAST "html"))) goto name_ok; @@ -6273,7 +6361,7 @@ * @doc: a document instance * @elem: an element instance * - * Try to validate the subtree under an element + * Try to validate the subtree under an element * * returns 1 if valid or 0 otherwise */ @@ -6293,7 +6381,8 @@ * they don't really mean anything validation wise. */ if ((elem->type == XML_XINCLUDE_START) || - (elem->type == XML_XINCLUDE_END)) + (elem->type == XML_XINCLUDE_END) || + (elem->type == XML_NAMESPACE_DECL)) return(1); CHECK_DTD; @@ -6452,7 +6541,7 @@ memo.name = name; xmlListWalk(ref_list, xmlWalkValidateList, &memo); - + } /** @@ -6464,7 +6553,7 @@ * incremental validation steps have been completed * * basically it does the following checks described by the XML Rec - * + * * Check all the IDREF/IDREFS attributes definition for validity * * returns 1 if valid or 0 otherwise @@ -6473,15 +6562,20 @@ int xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt, xmlDocPtr doc) { xmlRefTablePtr table; + unsigned int save; if (ctxt == NULL) return(0); if (doc == NULL) { - xmlErrValid(ctxt, XML_DTD_NO_DOC, + xmlErrValid(ctxt, XML_DTD_NO_DOC, "xmlValidateDocumentFinal: doc == NULL\n", NULL); return(0); } + /* trick to get correct line id report */ + save = ctxt->finishDtd; + ctxt->finishDtd = 0; + /* * Check all the NOTATION/NOTATIONS attributes */ @@ -6495,6 +6589,8 @@ ctxt->doc = doc; ctxt->valid = 1; xmlHashScan(table, (xmlHashScanner) xmlValidateCheckRefCallback, ctxt); + + ctxt->finishDtd = save; return(ctxt->valid); } @@ -6589,7 +6685,7 @@ case XML_ATTRIBUTE_ENTITIES: case XML_ATTRIBUTE_NOTATION: if (cur->defaultValue != NULL) { - + ret = xmlValidateAttributeValue2(ctxt, ctxt->doc, cur->name, cur->atype, cur->defaultValue); if ((ret == 0) && (ctxt->valid == 1)) @@ -6646,9 +6742,9 @@ * subsets have been parsed * * basically it does the following checks described by the XML Rec - * - check that ENTITY and ENTITIES type attributes default or + * - check that ENTITY and ENTITIES type attributes default or * possible values matches one of the defined entities. - * - check that NOTATION type attributes default or + * - check that NOTATION type attributes default or * possible values matches one of the defined notations. * * returns 1 if valid or 0 if invalid and -1 if not well-formed @@ -6660,7 +6756,7 @@ xmlAttributeTablePtr table; xmlEntitiesTablePtr entities; - if (doc == NULL) return(0); + if ((doc == NULL) || (ctxt == NULL)) return(0); if ((doc->intSubset == NULL) && (doc->extSubset == NULL)) return(0); ctxt->doc = doc; @@ -6719,7 +6815,7 @@ xmlChar *sysID; if (doc->intSubset->SystemID != NULL) { sysID = xmlBuildURI(doc->intSubset->SystemID, - doc->URL); + doc->URL); if (sysID == NULL) { xmlErrValid(ctxt, XML_DTD_LOAD_ERROR, "Could not build URI for external subset \"%s\"\n", @@ -6792,17 +6888,17 @@ if (*len >= max) return(*len); switch (ctree->type) { - case XML_ELEMENT_CONTENT_PCDATA: + case XML_ELEMENT_CONTENT_PCDATA: for (i = 0; i < *len;i++) if (xmlStrEqual(BAD_CAST "#PCDATA", names[i])) return(*len); names[(*len)++] = BAD_CAST "#PCDATA"; break; - case XML_ELEMENT_CONTENT_ELEMENT: + case XML_ELEMENT_CONTENT_ELEMENT: for (i = 0; i < *len;i++) if (xmlStrEqual(ctree->name, names[i])) return(*len); names[(*len)++] = ctree->name; break; - case XML_ELEMENT_CONTENT_SEQ: + case XML_ELEMENT_CONTENT_SEQ: xmlValidGetPotentialChildren(ctree->c1, names, len, max); xmlValidGetPotentialChildren(ctree->c2, names, len, max); break; @@ -6811,7 +6907,7 @@ xmlValidGetPotentialChildren(ctree->c2, names, len, max); break; } - + return(*len); } @@ -6853,19 +6949,19 @@ int max) { xmlValidCtxt vctxt; int nb_valid_elements = 0; - const xmlChar *elements[256]; + const xmlChar *elements[256]={0}; int nb_elements = 0, i; const xmlChar *name; - + xmlNode *ref_node; xmlNode *parent; xmlNode *test_node; - + xmlNode *prev_next; xmlNode *next_prev; xmlNode *parent_childs; xmlNode *parent_last; - + xmlElement *element_desc; if (prev == NULL && next == NULL) @@ -6890,7 +6986,7 @@ element_desc = xmlGetDtdElementDesc(parent->doc->extSubset, parent->name); if (element_desc == NULL) return(-1); - + /* * Do a backup of the current tree structure */ @@ -6901,16 +6997,19 @@ /* * Creates a dummy node and insert it into the tree - */ + */ test_node = xmlNewDocNode (ref_node->doc, NULL, BAD_CAST "", NULL); + if (test_node == NULL) + return(-1); + test_node->parent = parent; test_node->prev = prev; test_node->next = next; name = test_node->name; - + if (prev) prev->next = test_node; else parent->children = test_node; - + if (next) next->prev = test_node; else parent->last = test_node; @@ -6920,7 +7019,7 @@ */ nb_elements = xmlValidGetPotentialChildren(element_desc->content, elements, &nb_elements, 256); - + for (i = 0;i < nb_elements;i++) { test_node->name = elements[i]; if (xmlValidateOneElement(&vctxt, parent->doc, parent)) { diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/valid.in.h gettext-0.19.7/gnulib-local/lib/libxml/valid.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/valid.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/valid.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -41,7 +41,7 @@ */ typedef void (XMLCDECL *xmlValidityErrorFunc) (void *ctx, const char *msg, - ...); + ...) LIBXML_ATTR_FORMAT(2,3); /** * xmlValidityWarningFunc: @@ -56,7 +56,7 @@ */ typedef void (XMLCDECL *xmlValidityWarningFunc) (void *ctx, const char *msg, - ...); + ...) LIBXML_ATTR_FORMAT(2,3); #ifdef IN_LIBXML /** @@ -150,55 +150,55 @@ typedef xmlRefTable *xmlRefTablePtr; /* Notation */ -XMLPUBFUN xmlNotationPtr XMLCALL +XMLPUBFUN xmlNotationPtr XMLCALL xmlAddNotationDecl (xmlValidCtxtPtr ctxt, xmlDtdPtr dtd, const xmlChar *name, const xmlChar *PublicID, const xmlChar *SystemID); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlNotationTablePtr XMLCALL +XMLPUBFUN xmlNotationTablePtr XMLCALL xmlCopyNotationTable (xmlNotationTablePtr table); #endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeNotationTable (xmlNotationTablePtr table); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDumpNotationDecl (xmlBufferPtr buf, xmlNotationPtr nota); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDumpNotationTable (xmlBufferPtr buf, xmlNotationTablePtr table); #endif /* LIBXML_OUTPUT_ENABLED */ /* Element Content */ /* the non Doc version are being deprecated */ -XMLPUBFUN xmlElementContentPtr XMLCALL +XMLPUBFUN xmlElementContentPtr XMLCALL xmlNewElementContent (const xmlChar *name, xmlElementContentType type); -XMLPUBFUN xmlElementContentPtr XMLCALL +XMLPUBFUN xmlElementContentPtr XMLCALL xmlCopyElementContent (xmlElementContentPtr content); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeElementContent (xmlElementContentPtr cur); /* the new versions with doc argument */ -XMLPUBFUN xmlElementContentPtr XMLCALL +XMLPUBFUN xmlElementContentPtr XMLCALL xmlNewDocElementContent (xmlDocPtr doc, const xmlChar *name, xmlElementContentType type); -XMLPUBFUN xmlElementContentPtr XMLCALL +XMLPUBFUN xmlElementContentPtr XMLCALL xmlCopyDocElementContent(xmlDocPtr doc, xmlElementContentPtr content); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeDocElementContent(xmlDocPtr doc, xmlElementContentPtr cur); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSnprintfElementContent(char *buf, int size, xmlElementContentPtr content, int englob); #ifdef LIBXML_OUTPUT_ENABLED /* DEPRECATED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSprintfElementContent(char *buf, xmlElementContentPtr content, int englob); @@ -206,39 +206,39 @@ /* DEPRECATED */ /* Element */ -XMLPUBFUN xmlElementPtr XMLCALL +XMLPUBFUN xmlElementPtr XMLCALL xmlAddElementDecl (xmlValidCtxtPtr ctxt, xmlDtdPtr dtd, const xmlChar *name, xmlElementTypeVal type, xmlElementContentPtr content); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlElementTablePtr XMLCALL +XMLPUBFUN xmlElementTablePtr XMLCALL xmlCopyElementTable (xmlElementTablePtr table); #endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeElementTable (xmlElementTablePtr table); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDumpElementTable (xmlBufferPtr buf, xmlElementTablePtr table); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDumpElementDecl (xmlBufferPtr buf, xmlElementPtr elem); #endif /* LIBXML_OUTPUT_ENABLED */ /* Enumeration */ -XMLPUBFUN xmlEnumerationPtr XMLCALL +XMLPUBFUN xmlEnumerationPtr XMLCALL xmlCreateEnumeration (const xmlChar *name); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeEnumeration (xmlEnumerationPtr cur); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlEnumerationPtr XMLCALL +XMLPUBFUN xmlEnumerationPtr XMLCALL xmlCopyEnumeration (xmlEnumerationPtr cur); #endif /* LIBXML_TREE_ENABLED */ /* Attribute */ -XMLPUBFUN xmlAttributePtr XMLCALL +XMLPUBFUN xmlAttributePtr XMLCALL xmlAddAttributeDecl (xmlValidCtxtPtr ctxt, xmlDtdPtr dtd, const xmlChar *elem, @@ -249,55 +249,55 @@ const xmlChar *defaultValue, xmlEnumerationPtr tree); #ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlAttributeTablePtr XMLCALL +XMLPUBFUN xmlAttributeTablePtr XMLCALL xmlCopyAttributeTable (xmlAttributeTablePtr table); #endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeAttributeTable (xmlAttributeTablePtr table); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDumpAttributeTable (xmlBufferPtr buf, xmlAttributeTablePtr table); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlDumpAttributeDecl (xmlBufferPtr buf, xmlAttributePtr attr); #endif /* LIBXML_OUTPUT_ENABLED */ /* IDs */ -XMLPUBFUN xmlIDPtr XMLCALL +XMLPUBFUN xmlIDPtr XMLCALL xmlAddID (xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value, xmlAttrPtr attr); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeIDTable (xmlIDTablePtr table); -XMLPUBFUN xmlAttrPtr XMLCALL +XMLPUBFUN xmlAttrPtr XMLCALL xmlGetID (xmlDocPtr doc, const xmlChar *ID); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlIsID (xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr); -XMLPUBFUN int XMLCALL - xmlRemoveID (xmlDocPtr doc, +XMLPUBFUN int XMLCALL + xmlRemoveID (xmlDocPtr doc, xmlAttrPtr attr); /* IDREFs */ -XMLPUBFUN xmlRefPtr XMLCALL +XMLPUBFUN xmlRefPtr XMLCALL xmlAddRef (xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value, xmlAttrPtr attr); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeRefTable (xmlRefTablePtr table); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlIsRef (xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr); -XMLPUBFUN int XMLCALL - xmlRemoveRef (xmlDocPtr doc, +XMLPUBFUN int XMLCALL + xmlRemoveRef (xmlDocPtr doc, xmlAttrPtr attr); -XMLPUBFUN xmlListPtr XMLCALL +XMLPUBFUN xmlListPtr XMLCALL xmlGetRefs (xmlDocPtr doc, const xmlChar *ID); @@ -306,146 +306,146 @@ */ #ifdef LIBXML_VALID_ENABLED /* Allocate/Release Validation Contexts */ -XMLPUBFUN xmlValidCtxtPtr XMLCALL +XMLPUBFUN xmlValidCtxtPtr XMLCALL xmlNewValidCtxt(void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeValidCtxt(xmlValidCtxtPtr); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateRoot (xmlValidCtxtPtr ctxt, xmlDocPtr doc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateElementDecl (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlElementPtr elem); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlValidNormalizeAttributeValue(xmlDocPtr doc, xmlNodePtr elem, const xmlChar *name, const xmlChar *value); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem, const xmlChar *name, const xmlChar *value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlAttributePtr attr); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateAttributeValue(xmlAttributeType type, const xmlChar *value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateNotationDecl (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNotationPtr nota); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateDtd (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlDtdPtr dtd); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateDtdFinal (xmlValidCtxtPtr ctxt, xmlDocPtr doc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateDocument (xmlValidCtxtPtr ctxt, xmlDocPtr doc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateElement (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateOneElement (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateOneAttribute (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr, const xmlChar *value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateOneNamespace (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem, const xmlChar *prefix, xmlNsPtr ns, const xmlChar *value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt, xmlDocPtr doc); #endif /* LIBXML_VALID_ENABLED */ #if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateNotationUse (xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *notationName); #endif /* LIBXML_VALID_ENABLED or LIBXML_SCHEMAS_ENABLED */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlIsMixedElement (xmlDocPtr doc, const xmlChar *name); -XMLPUBFUN xmlAttributePtr XMLCALL +XMLPUBFUN xmlAttributePtr XMLCALL xmlGetDtdAttrDesc (xmlDtdPtr dtd, const xmlChar *elem, const xmlChar *name); -XMLPUBFUN xmlAttributePtr XMLCALL +XMLPUBFUN xmlAttributePtr XMLCALL xmlGetDtdQAttrDesc (xmlDtdPtr dtd, const xmlChar *elem, const xmlChar *name, const xmlChar *prefix); -XMLPUBFUN xmlNotationPtr XMLCALL +XMLPUBFUN xmlNotationPtr XMLCALL xmlGetDtdNotationDesc (xmlDtdPtr dtd, const xmlChar *name); -XMLPUBFUN xmlElementPtr XMLCALL +XMLPUBFUN xmlElementPtr XMLCALL xmlGetDtdQElementDesc (xmlDtdPtr dtd, const xmlChar *name, const xmlChar *prefix); -XMLPUBFUN xmlElementPtr XMLCALL +XMLPUBFUN xmlElementPtr XMLCALL xmlGetDtdElementDesc (xmlDtdPtr dtd, const xmlChar *name); #ifdef LIBXML_VALID_ENABLED -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidGetPotentialChildren(xmlElementContent *ctree, const xmlChar **names, int *len, int max); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidGetValidElements(xmlNode *prev, xmlNode *next, const xmlChar **names, int max); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateNameValue (const xmlChar *value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateNamesValue (const xmlChar *value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateNmtokenValue (const xmlChar *value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidateNmtokensValue(const xmlChar *value); #ifdef LIBXML_REGEXP_ENABLED /* * Validation based on the regexp support */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidBuildContentModel(xmlValidCtxtPtr ctxt, xmlElementPtr elem); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidatePushElement (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem, const xmlChar *qname); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidatePushCData (xmlValidCtxtPtr ctxt, const xmlChar *data, int len); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlValidatePopElement (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem, diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xinclude.c gettext-0.19.7/gnulib-local/lib/libxml/xinclude.c --- gettext-0.19.6/gnulib-local/lib/libxml/xinclude.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xinclude.c 2015-12-23 07:08:27.000000000 +0000 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -26,6 +27,7 @@ #ifdef LIBXML_XINCLUDE_ENABLED #include +#include "buf.h" #define XINCLUDE_MAX_DEPTH 40 @@ -92,7 +94,7 @@ /************************************************************************ * * - * XInclude error handler * + * XInclude error handler * * * ************************************************************************/ @@ -412,14 +414,13 @@ * xmlXIncludeParseFile: * @ctxt: the XInclude context * @URL: the URL or file path - * + * * parse a document for XInclude */ static xmlDocPtr xmlXIncludeParseFile(xmlXIncludeCtxtPtr ctxt, const char *URL) { xmlDocPtr ret; xmlParserCtxtPtr pctxt; - char *directory = NULL; xmlParserInputPtr inputStream; xmlInitParser(); @@ -434,20 +435,20 @@ * pass in the application data to the parser context. */ pctxt->_private = ctxt->_private; - + /* * try to ensure that new documents included are actually * built with the same dictionary as the including document. */ - if ((ctxt->doc != NULL) && (ctxt->doc->dict != NULL) && - (pctxt->dict != NULL)) { - xmlDictFree(pctxt->dict); + if ((ctxt->doc != NULL) && (ctxt->doc->dict != NULL)) { + if (pctxt->dict != NULL) + xmlDictFree(pctxt->dict); pctxt->dict = ctxt->doc->dict; xmlDictReference(pctxt->dict); } xmlCtxtUseOptions(pctxt, ctxt->parseFlags | XML_PARSE_DTDLOAD); - + inputStream = xmlLoadExternalEntity(URL, NULL, pctxt); if (inputStream == NULL) { xmlFreeParserCtxt(pctxt); @@ -456,10 +457,8 @@ inputPush(pctxt, inputStream); - if ((pctxt->directory == NULL) && (directory == NULL)) - directory = xmlParserGetDirectory(URL); - if ((pctxt->directory == NULL) && (directory != NULL)) - pctxt->directory = (char *) xmlStrdup((xmlChar *) directory); + if (pctxt->directory == NULL) + pctxt->directory = xmlParserGetDirectory(URL); pctxt->loadsubset |= XML_DETECT_IDS; @@ -475,7 +474,7 @@ pctxt->myDoc = NULL; } xmlFreeParserCtxt(pctxt); - + return(ret); } @@ -483,7 +482,7 @@ * xmlXIncludeAddNode: * @ctxt: the XInclude context * @cur: the new node - * + * * Add a new node to process to an XInclude context */ static int @@ -514,11 +513,10 @@ href = xmlXIncludeGetProp(ctxt, cur, XINCLUDE_HREF); if (href == NULL) { href = xmlStrdup(BAD_CAST ""); /* @@@@ href is now optional */ - if (href == NULL) + if (href == NULL) return(-1); - local = 1; } - if (href[0] == '#') + if ((href[0] == '#') || (href[0] == 0)) local = 1; parse = xmlXIncludeGetProp(ctxt, cur, XINCLUDE_PARSE); if (parse != NULL) { @@ -617,6 +615,19 @@ } /* + * If local and xml then we need a fragment + */ + if ((local == 1) && (xml == 1) && + ((fragment == NULL) || (fragment[0] == 0))) { + xmlXIncludeErr(ctxt, cur, XML_XINCLUDE_RECURSION, + "detected a local recursion with no xpointer in %s\n", + URL); + if (fragment != NULL) + xmlFree(fragment); + return(-1); + } + + /* * Check the URL against the stack for recursions */ if ((!local) && (xml == 1)) { @@ -646,7 +657,7 @@ * @ctxt: the XInclude context * @doc: the new document * @url: the associated URL - * + * * The XInclude recursive nature is handled at this point. */ static void @@ -673,6 +684,10 @@ newctxt = xmlXIncludeNewContext(doc); if (newctxt != NULL) { /* + * Copy the private user data + */ + newctxt->_private = ctxt->_private; + /* * Copy the existing document set */ newctxt->incMax = ctxt->incMax; @@ -736,7 +751,7 @@ * @ctxt: the XInclude context * @txt: the new text node * @url: the associated URL - * + * * Add a new txtument to the list */ static void @@ -785,13 +800,17 @@ * * ************************************************************************/ +static xmlNodePtr +xmlXIncludeCopyNodeList(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target, + xmlDocPtr source, xmlNodePtr elem); + /** * xmlXIncludeCopyNode: * @ctxt: the XInclude context * @target: the document target * @source: the document source * @elem: the element - * + * * Make a copy of the node while preserving the XInclude semantic * of the Infoset copy */ @@ -805,7 +824,10 @@ return(NULL); if (elem->type == XML_DTD_NODE) return(NULL); - result = xmlDocCopyNode(elem, target, 1); + if (elem->type == XML_DOCUMENT_NODE) + result = xmlXIncludeCopyNodeList(ctxt, target, source, elem->children); + else + result = xmlDocCopyNode(elem, target, 1); return(result); } @@ -815,7 +837,7 @@ * @target: the document target * @source: the document source * @elem: the element list - * + * * Make a copy of the node list while preserving the XInclude semantic * of the Infoset copy */ @@ -854,11 +876,11 @@ static xmlNodePtr xmlXIncludeGetNthChild(xmlNodePtr cur, int no) { int i; - if (cur == NULL) - return(cur); + if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) + return(NULL); cur = cur->children; for (i = 0;i <= no;cur = cur->next) { - if (cur == NULL) + if (cur == NULL) return(cur); if ((cur->type == XML_ELEMENT_NODE) || (cur->type == XML_DOCUMENT_NODE) || @@ -902,11 +924,13 @@ return(NULL); start = (xmlNodePtr) range->user; - if (start == NULL) + if ((start == NULL) || (start->type == XML_NAMESPACE_DECL)) return(NULL); end = range->user2; if (end == NULL) return(xmlDocCopyNode(start, target, 1)); + if (end->type == XML_NAMESPACE_DECL) + return(NULL); cur = start; index1 = range->index; @@ -954,7 +978,6 @@ if ((cur == start) && (index1 > 1)) { content += (index1 - 1); len -= (index1 - 1); - index1 = 0; } else { len = index2; } @@ -966,7 +989,7 @@ /* prune and return full set */ if (level == lastLevel) xmlAddNextSibling(last, tmp); - else + else xmlAddChild(last, tmp); return(list); } else { /* ending node not a text node */ @@ -1185,6 +1208,7 @@ } break; } +#ifdef LIBXML_XPTR_ENABLED case XPATH_LOCATIONSET: { xmlLocationSetPtr set = (xmlLocationSetPtr) obj->user; if (set == NULL) @@ -1204,7 +1228,6 @@ } break; } -#ifdef LIBXML_XPTR_ENABLED case XPATH_RANGE: return(xmlXIncludeCopyRange(ctxt, target, source, obj)); #endif @@ -1270,7 +1293,7 @@ if (prev != NULL) { if (ent->etype != prev->etype) goto error; - + if ((ent->SystemID != NULL) && (prev->SystemID != NULL)) { if (!xmlStrEqual(ent->SystemID, prev->SystemID)) goto error; @@ -1370,7 +1393,7 @@ * @ctxt: the XInclude context * @url: the associated URL * @nr: the xinclude node number - * + * * Load the document, and store the result in the XInclude context * * Returns 0 in case of success, -1 in case of failure @@ -1394,7 +1417,7 @@ */ uri = xmlParseURI((const char *)url); if (uri == NULL) { - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_HREF_URI, "invalid value URI %s\n", url); return(-1); @@ -1412,7 +1435,7 @@ xmlFreeURI(uri); if (URL == NULL) { if (ctxt->incTab != NULL) - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_HREF_URI, "invalid value URI %s\n", url); else @@ -1531,7 +1554,7 @@ ctxt->incTab[nr]->inc = xmlXIncludeCopyNodeList(ctxt, ctxt->doc, doc, doc->children); } - } + } #ifdef LIBXML_XPTR_ENABLED else { /* @@ -1549,7 +1572,7 @@ xptrctxt = xmlXPtrNewContext(doc, NULL, NULL); } if (xptrctxt == NULL) { - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_XPTR_FAILED, "could not create XPointer context\n", NULL); xmlFree(URL); @@ -1575,7 +1598,7 @@ case XPATH_POINT: case XPATH_USERS: case XPATH_XSLT_TREE: - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_XPTR_RESULT, "XPointer is not a range: #%s\n", fragment); @@ -1602,6 +1625,7 @@ if (set->nodeTab[i] == NULL) continue; switch (set->nodeTab[i]->type) { + case XML_ELEMENT_NODE: case XML_TEXT_NODE: case XML_CDATA_SECTION_NODE: case XML_ENTITY_REF_NODE: @@ -1614,28 +1638,16 @@ case XML_DOCB_DOCUMENT_NODE: #endif continue; - case XML_ELEMENT_NODE: { - xmlChar *nodeBase; - xmlNodePtr el = set->nodeTab[i]; - - nodeBase = xmlNodeGetBase(el->doc, el); - if (nodeBase != NULL) { - if (!xmlStrEqual(nodeBase, el->doc->URL)) - xmlNodeSetBase(el, nodeBase); - xmlFree(nodeBase); - } - continue; - } case XML_ATTRIBUTE_NODE: - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_XPTR_RESULT, "XPointer selects an attribute: #%s\n", fragment); set->nodeTab[i] = NULL; continue; case XML_NAMESPACE_DECL: - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_XPTR_RESULT, "XPointer selects a namespace: #%s\n", fragment); @@ -1650,7 +1662,7 @@ case XML_ENTITY_DECL: case XML_XINCLUDE_START: case XML_XINCLUDE_END: - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_XPTR_RESULT, "XPointer selects unexpected nodes: #%s\n", fragment); @@ -1676,7 +1688,9 @@ /* * Do the xml:base fixup if needed */ - if ((doc != NULL) && (URL != NULL) && (xmlStrchr(URL, (xmlChar) '/'))) { + if ((doc != NULL) && (URL != NULL) && + (!(ctxt->parseFlags & XML_PARSE_NOBASEFIX)) && + (!(doc->parseFlags & XML_PARSE_NOBASEFIX))) { xmlNodePtr node; xmlChar *base; xmlChar *curBase; @@ -1694,7 +1708,7 @@ */ curBase = xmlBuildRelativeURI(URL, ctxt->base); if (curBase == NULL) { /* Error return */ - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_HREF_URI, "trying to build relative URI from %s\n", URL); } else { @@ -1735,7 +1749,7 @@ xmlChar *relBase; relBase = xmlBuildURI(xmlBase, base); if (relBase == NULL) { /* error */ - xmlXIncludeErr(ctxt, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_HREF_URI, "trying to rebuild base from %s\n", @@ -1772,7 +1786,7 @@ * @ctxt: the XInclude context * @url: the associated URL * @nr: the xinclude node number - * + * * Load the content, and store the result in the XInclude context * * Returns 0 in case of success, -1 in case of failure @@ -1786,6 +1800,9 @@ int i; xmlChar *encoding = NULL; xmlCharEncoding enc = (xmlCharEncoding) 0; + xmlParserCtxtPtr pctxt; + xmlParserInputPtr inputStream; + int xinclude_multibyte_fallback_used = 0; /* * Check the URL and remove any fragment identifier @@ -1816,7 +1833,7 @@ * directly through ctxt->doc. */ if (URL[0] == 0) { - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_TEXT_DOCUMENT, "text serialization of document not available\n", NULL); xmlFree(URL); @@ -1860,40 +1877,65 @@ /* * Load it. */ - buf = xmlParserInputBufferCreateFilename((const char *)URL, enc); + pctxt = xmlNewParserCtxt(); + inputStream = xmlLoadExternalEntity((const char*)URL, NULL, pctxt); + if(inputStream == NULL) { + xmlFreeParserCtxt(pctxt); + xmlFree(URL); + return(-1); + } + buf = inputStream->buf; if (buf == NULL) { + xmlFreeInputStream (inputStream); + xmlFreeParserCtxt(pctxt); xmlFree(URL); return(-1); } + if (buf->encoder) + xmlCharEncCloseFunc(buf->encoder); + buf->encoder = xmlGetCharEncodingHandler(enc); node = xmlNewText(NULL); /* * Scan all chars from the resource and add the to the node */ +xinclude_multibyte_fallback: while (xmlParserInputBufferRead(buf, 128) > 0) { int len; const xmlChar *content; - content = xmlBufferContent(buf->buffer); - len = xmlBufferLength(buf->buffer); + content = xmlBufContent(buf->buffer); + len = xmlBufLength(buf->buffer); for (i = 0;i < len;) { int cur; int l; cur = xmlStringCurrentChar(NULL, &content[i], &l); if (!IS_CHAR(cur)) { - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, - XML_XINCLUDE_INVALID_CHAR, - "%s contains invalid char\n", URL); + /* Handle splitted multibyte char at buffer boundary */ + if (((len - i) < 4) && (!xinclude_multibyte_fallback_used)) { + xinclude_multibyte_fallback_used = 1; + xmlBufShrink(buf->buffer, i); + goto xinclude_multibyte_fallback; + } else { + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + XML_XINCLUDE_INVALID_CHAR, + "%s contains invalid char\n", URL); + xmlFreeParserInputBuffer(buf); + xmlFree(URL); + return(-1); + } } else { + xinclude_multibyte_fallback_used = 0; xmlNodeAddContentLen(node, &content[i], l); } i += l; } - xmlBufferShrink(buf->buffer, len); + xmlBufShrink(buf->buffer, len); } - xmlFreeParserInputBuffer(buf); + xmlFreeParserCtxt(pctxt); xmlXIncludeAddTxt(ctxt, node, URL); + xmlFreeInputStream(inputStream); loaded: /* @@ -1909,7 +1951,7 @@ * @ctxt: the XInclude context * @fallback: the fallback node * @nr: the xinclude node number - * + * * Load the content of the fallback node, and store the result * in the XInclude context * @@ -1919,8 +1961,9 @@ xmlXIncludeLoadFallback(xmlXIncludeCtxtPtr ctxt, xmlNodePtr fallback, int nr) { xmlXIncludeCtxtPtr newctxt; int ret = 0; - - if ((fallback == NULL) || (ctxt == NULL)) + + if ((fallback == NULL) || (fallback->type == XML_NAMESPACE_DECL) || + (ctxt == NULL)) return(-1); if (fallback->children != NULL) { /* @@ -1930,6 +1973,7 @@ newctxt = xmlXIncludeNewContext(ctxt->doc); if (newctxt == NULL) return (-1); + newctxt->_private = ctxt->_private; newctxt->base = xmlStrdup(ctxt->base); /* Inherit the base from the existing context */ xmlXIncludeSetFlags(newctxt, ctxt->parseFlags); ret = xmlXIncludeDoProcess(newctxt, ctxt->doc, fallback->children); @@ -2004,7 +2048,7 @@ href = xmlXIncludeGetProp(ctxt, cur, XINCLUDE_HREF); if (href == NULL) { href = xmlStrdup(BAD_CAST ""); /* @@@@ href is now optional */ - if (href == NULL) + if (href == NULL) return(-1); } parse = xmlXIncludeGetProp(ctxt, cur, XINCLUDE_PARSE); @@ -2049,7 +2093,7 @@ xmlFree(eschref); } if (URI == NULL) { - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_HREF_URI, "failed build URL\n", NULL); if (parse != NULL) xmlFree(parse); @@ -2082,7 +2126,7 @@ * Restore the original base before checking for fallback */ ctxt->base = oldBase; - + if (ret < 0) { xmlNodePtr children; @@ -2100,14 +2144,14 @@ ((xmlStrEqual(children->ns->href, XINCLUDE_NS)) || (xmlStrEqual(children->ns->href, XINCLUDE_OLD_NS)))) { ret = xmlXIncludeLoadFallback(ctxt, children, nr); - if (ret == 0) + if (ret == 0) break; } children = children->next; } } if (ret < 0) { - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_NO_FALLBACK, "could not load %s, and no fallback was found\n", URI); @@ -2145,7 +2189,7 @@ if ((nr < 0) || (nr >= ctxt->incNr)) return(-1); cur = ctxt->incTab[nr]->ref; - if (cur == NULL) + if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) return(-1); /* @@ -2176,7 +2220,7 @@ tmp = tmp->next; } if (nb_elem > 1) { - xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, + xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref, XML_XINCLUDE_MULTIPLE_ROOT, "XInclude error: would result in multiple root nodes\n", NULL); @@ -2223,7 +2267,7 @@ } } - + return(0); } @@ -2320,7 +2364,7 @@ int ret = 0; int i, start; - if ((doc == NULL) || (tree == NULL)) + if ((doc == NULL) || (tree == NULL) || (tree->type == XML_NAMESPACE_DECL)) return(-1); if (ctxt == NULL) return(-1); @@ -2415,7 +2459,43 @@ ctxt->parseFlags = flags; return(0); } - + +/** + * xmlXIncludeProcessTreeFlagsData: + * @tree: an XML node + * @flags: a set of xmlParserOption used for parsing XML includes + * @data: application data that will be passed to the parser context + * in the _private field of the parser context(s) + * + * Implement the XInclude substitution on the XML node @tree + * + * Returns 0 if no substitution were done, -1 if some processing failed + * or the number of substitutions done. + */ + +int +xmlXIncludeProcessTreeFlagsData(xmlNodePtr tree, int flags, void *data) { + xmlXIncludeCtxtPtr ctxt; + int ret = 0; + + if ((tree == NULL) || (tree->type == XML_NAMESPACE_DECL) || + (tree->doc == NULL)) + return(-1); + + ctxt = xmlXIncludeNewContext(tree->doc); + if (ctxt == NULL) + return(-1); + ctxt->_private = data; + ctxt->base = xmlStrdup((xmlChar *)tree->doc->URL); + xmlXIncludeSetFlags(ctxt, flags); + ret = xmlXIncludeDoProcess(ctxt, tree->doc, tree); + if ((ret >= 0) && (ctxt->nbErrors > 0)) + ret = -1; + + xmlXIncludeFreeContext(ctxt); + return(ret); +} + /** * xmlXIncludeProcessFlagsData: * @doc: an XML document @@ -2430,27 +2510,14 @@ */ int xmlXIncludeProcessFlagsData(xmlDocPtr doc, int flags, void *data) { - xmlXIncludeCtxtPtr ctxt; xmlNodePtr tree; - int ret = 0; if (doc == NULL) return(-1); tree = xmlDocGetRootElement(doc); if (tree == NULL) return(-1); - ctxt = xmlXIncludeNewContext(doc); - if (ctxt == NULL) - return(-1); - ctxt->_private = data; - ctxt->base = xmlStrdup((xmlChar *)doc->URL); - xmlXIncludeSetFlags(ctxt, flags); - ret = xmlXIncludeDoProcess(ctxt, doc, tree); - if ((ret >= 0) && (ctxt->nbErrors > 0)) - ret = -1; - - xmlXIncludeFreeContext(ctxt); - return(ret); + return(xmlXIncludeProcessTreeFlagsData(tree, flags, data)); } /** @@ -2497,7 +2564,8 @@ xmlXIncludeCtxtPtr ctxt; int ret = 0; - if ((tree == NULL) || (tree->doc == NULL)) + if ((tree == NULL) || (tree->type == XML_NAMESPACE_DECL) || + (tree->doc == NULL)) return(-1); ctxt = xmlXIncludeNewContext(tree->doc); if (ctxt == NULL) @@ -2541,7 +2609,8 @@ xmlXIncludeProcessNode(xmlXIncludeCtxtPtr ctxt, xmlNodePtr node) { int ret = 0; - if ((node == NULL) || (node->doc == NULL) || (ctxt == NULL)) + if ((node == NULL) || (node->type == XML_NAMESPACE_DECL) || + (node->doc == NULL) || (ctxt == NULL)) return(-1); ret = xmlXIncludeDoProcess(ctxt, node->doc, node); if ((ret >= 0) && (ctxt->nbErrors > 0)) diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xinclude.in.h gettext-0.19.7/gnulib-local/lib/libxml/xinclude.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xinclude.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xinclude.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -89,18 +89,22 @@ /* * standalone processing */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXIncludeProcess (xmlDocPtr doc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXIncludeProcessFlags (xmlDocPtr doc, int flags); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXIncludeProcessFlagsData(xmlDocPtr doc, int flags, void *data); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL + xmlXIncludeProcessTreeFlagsData(xmlNodePtr tree, + int flags, + void *data); +XMLPUBFUN int XMLCALL xmlXIncludeProcessTree (xmlNodePtr tree); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXIncludeProcessTreeFlags(xmlNodePtr tree, int flags); /* diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xlink.c gettext-0.19.7/gnulib-local/lib/libxml/xlink.c --- gettext-0.19.6/gnulib-local/lib/libxml/xlink.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xlink.c 2015-12-23 07:08:27.000000000 +0000 @@ -47,7 +47,7 @@ * Default setting and related functions * * * ****************************************************************/ - + static xlinkHandlerPtr xlinkDefaultHandler = NULL; static xlinkNodeDetectFunc xlinkDefaultDetect = NULL; @@ -93,7 +93,7 @@ * * Set the default xlink detection routine */ -void +void xlinkSetDefaultDetect (xlinkNodeDetectFunc func) { xlinkDefaultDetect = func; } @@ -104,7 +104,7 @@ * * ****************************************************************/ - + /** * xlinkIsLink: * @doc: the document containing the node @@ -119,7 +119,7 @@ * Returns the xlinkType of the node (XLINK_TYPE_NONE if there is no * link detected. */ -xlinkType +xlinkType xlinkIsLink (xmlDocPtr doc, xmlNodePtr node) { xmlChar *type = NULL, *role = NULL; xlinkType ret = XLINK_TYPE_NONE; @@ -150,14 +150,14 @@ if (type != NULL) { if (xmlStrEqual(type, BAD_CAST "simple")) { ret = XLINK_TYPE_SIMPLE; - } if (xmlStrEqual(type, BAD_CAST "extended")) { + } else if (xmlStrEqual(type, BAD_CAST "extended")) { role = xmlGetNsProp(node, BAD_CAST "role", XLINK_NAMESPACE); if (role != NULL) { xmlNsPtr xlink; xlink = xmlSearchNs(doc, node, XLINK_NAMESPACE); if (xlink == NULL) { /* Humm, fallback method */ - if (xmlStrEqual(role, BAD_CAST"xlink:external-linkset")) + if (xmlStrEqual(role, BAD_CAST"xlink:external-linkset")) ret = XLINK_TYPE_EXTENDED_SET; } else { xmlChar buf[200]; diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xlink.in.h gettext-0.19.7/gnulib-local/lib/libxml/xlink.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xlink.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xlink.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -57,7 +57,7 @@ * xlinkNodeDetectFunc: * @ctx: user data pointer * @node: the node to check - * + * * This is the prototype for the link detection routine. * It calls the default link detection callbacks upon link detection. */ @@ -157,26 +157,26 @@ /* * The default detection routine, can be overridden, they call the default - * detection callbacks. + * detection callbacks. */ -XMLPUBFUN xlinkNodeDetectFunc XMLCALL +XMLPUBFUN xlinkNodeDetectFunc XMLCALL xlinkGetDefaultDetect (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xlinkSetDefaultDetect (xlinkNodeDetectFunc func); /* * Routines to set/get the default handlers. */ -XMLPUBFUN xlinkHandlerPtr XMLCALL +XMLPUBFUN xlinkHandlerPtr XMLCALL xlinkGetDefaultHandler (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xlinkSetDefaultHandler (xlinkHandlerPtr handler); /* * Link detection module itself. */ -XMLPUBFUN xlinkType XMLCALL +XMLPUBFUN xlinkType XMLCALL xlinkIsLink (xmlDocPtr doc, xmlNodePtr node); diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlautomata.in.h gettext-0.19.7/gnulib-local/lib/libxml/xmlautomata.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xmlautomata.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlautomata.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -40,25 +40,25 @@ /* * Building API */ -XMLPUBFUN xmlAutomataPtr XMLCALL +XMLPUBFUN xmlAutomataPtr XMLCALL xmlNewAutomata (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeAutomata (xmlAutomataPtr am); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataGetInitState (xmlAutomataPtr am); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlAutomataSetFinalState (xmlAutomataPtr am, xmlAutomataStatePtr state); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewState (xmlAutomataPtr am); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewTransition (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to, const xmlChar *token, void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewTransition2 (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to, @@ -73,7 +73,7 @@ const xmlChar *token2, void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewCountTrans (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to, @@ -81,7 +81,7 @@ int min, int max, void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewCountTrans2 (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to, @@ -90,7 +90,7 @@ int min, int max, void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewOnceTrans (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to, @@ -99,46 +99,46 @@ int max, void *data); XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewOnceTrans2 (xmlAutomataPtr am, + xmlAutomataNewOnceTrans2 (xmlAutomataPtr am, xmlAutomataStatePtr from, - xmlAutomataStatePtr to, + xmlAutomataStatePtr to, const xmlChar *token, const xmlChar *token2, - int min, - int max, + int min, + int max, void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewAllTrans (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to, int lax); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewEpsilon (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewCountedTrans (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to, int counter); -XMLPUBFUN xmlAutomataStatePtr XMLCALL +XMLPUBFUN xmlAutomataStatePtr XMLCALL xmlAutomataNewCounterTrans (xmlAutomataPtr am, xmlAutomataStatePtr from, xmlAutomataStatePtr to, int counter); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlAutomataNewCounter (xmlAutomataPtr am, int min, int max); -XMLPUBFUN xmlRegexpPtr XMLCALL +XMLPUBFUN xmlRegexpPtr XMLCALL xmlAutomataCompile (xmlAutomataPtr am); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlAutomataIsDeterminist (xmlAutomataPtr am); #ifdef __cplusplus } -#endif +#endif #endif /* LIBXML_AUTOMATA_ENABLED */ #endif /* LIBXML_REGEXP_ENABLED */ diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlerror.in.h gettext-0.19.7/gnulib-local/lib/libxml/xmlerror.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xmlerror.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlerror.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -61,7 +61,10 @@ XML_FROM_CHECK, /* The error checking module */ XML_FROM_WRITER, /* The xmlwriter module */ XML_FROM_MODULE, /* The dynamically loaded module module*/ - XML_FROM_I18N /* The module handling character conversion */ + XML_FROM_I18N, /* The module handling character conversion */ + XML_FROM_SCHEMATRONV,/* The Schematron validator module */ + XML_FROM_BUFFER, /* The buffers module */ + XML_FROM_URI /* The URI module */ } xmlErrorDomain; /** @@ -83,7 +86,7 @@ char *str2; /* extra string information */ char *str3; /* extra string information */ int int1; /* extra number information */ - int int2; /* column number of the error or 0 if N/A (todo: rename this field when we would break ABI) */ + int int2; /* error column # or 0 if N/A (todo: rename field when we would brk ABI) */ void *ctxt; /* the parser context if available */ void *node; /* the node in the tree */ }; @@ -202,11 +205,16 @@ XML_ERR_NOTATION_PROCESSING, /* 105 */ XML_WAR_NS_COLUMN, /* 106 */ XML_WAR_ENTITY_REDEFINED, /* 107 */ + XML_ERR_UNKNOWN_VERSION, /* 108 */ + XML_ERR_VERSION_MISMATCH, /* 109 */ + XML_ERR_NAME_TOO_LONG, /* 110 */ + XML_ERR_USER_STOP, /* 111 */ XML_NS_ERR_XML_NAMESPACE = 200, XML_NS_ERR_UNDEFINED_NAMESPACE, /* 201 */ XML_NS_ERR_QNAME, /* 202 */ XML_NS_ERR_ATTRIBUTE_REDEFINED, /* 203 */ XML_NS_ERR_EMPTY, /* 204 */ + XML_NS_ERR_COLON, /* 205 */ XML_DTD_ATTRIBUTE_DEFAULT = 500, XML_DTD_ATTRIBUTE_REDEFINED, /* 501 */ XML_DTD_ATTRIBUTE_VALUE, /* 502 */ @@ -248,6 +256,7 @@ XML_DTD_STANDALONE_DEFAULTED, /* 538 */ XML_DTD_XMLID_VALUE, /* 539 */ XML_DTD_XMLID_TYPE, /* 540 */ + XML_DTD_DUP_TOKEN, /* 541 */ XML_HTML_STRUCURE_ERROR = 800, XML_HTML_UNKNOWN_TAG, /* 801 */ XML_RNGP_ANYNAME_ATTR_ANCESTOR = 1000, @@ -398,6 +407,7 @@ XML_TREE_INVALID_HEX = 1300, XML_TREE_INVALID_DEC, /* 1301 */ XML_TREE_UNTERMINATED_ENTITY, /* 1302 */ + XML_TREE_NOT_UTF8, /* 1303 */ XML_SAVE_NOT_UTF8 = 1400, XML_SAVE_CHAR_INVALID, /* 1401 */ XML_SAVE_NO_DOCTYPE, /* 1402 */ @@ -639,7 +649,7 @@ XML_SCHEMAV_CVC_ELT_4_3, /* 1852 */ XML_SCHEMAV_CVC_ELT_5_1_1, /* 1853 */ XML_SCHEMAV_CVC_ELT_5_1_2, /* 1854 */ - XML_SCHEMAV_CVC_ELT_5_2_1, /* 1855 */ + XML_SCHEMAV_CVC_ELT_5_2_1, /* 1855 */ XML_SCHEMAV_CVC_ELT_5_2_2_1, /* 1856 */ XML_SCHEMAV_CVC_ELT_5_2_2_2_1, /* 1857 */ XML_SCHEMAV_CVC_ELT_5_2_2_2_2, /* 1858 */ @@ -664,7 +674,7 @@ XML_SCHEMAV_CVC_IDC, /* 1877 */ XML_SCHEMAV_CVC_WILDCARD, /* 1878 */ XML_SCHEMAV_MISC, /* 1879 */ - XML_XPTR_UNKNOWN_SCHEME = 1900, + XML_XPTR_UNKNOWN_SCHEME = 1900, XML_XPTR_CHILDSEQ_START, /* 1901 */ XML_XPTR_EVAL_FAILED, /* 1902 */ XML_XPTR_EXTRA_OBJECTS, /* 1903 */ @@ -685,15 +695,15 @@ XML_SCHEMAP_SRC_SIMPLE_TYPE_2, /* 3001 */ XML_SCHEMAP_SRC_SIMPLE_TYPE_3, /* 3002 */ XML_SCHEMAP_SRC_SIMPLE_TYPE_4, /* 3003 */ - XML_SCHEMAP_SRC_RESOLVE, /* 3004 */ + XML_SCHEMAP_SRC_RESOLVE, /* 3004 */ XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE, /* 3005 */ XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE, /* 3006 */ XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES, /* 3007 */ XML_SCHEMAP_ST_PROPS_CORRECT_1, /* 3008 */ XML_SCHEMAP_ST_PROPS_CORRECT_2, /* 3009 */ - XML_SCHEMAP_ST_PROPS_CORRECT_3, /* 3010 */ + XML_SCHEMAP_ST_PROPS_CORRECT_3, /* 3010 */ XML_SCHEMAP_COS_ST_RESTRICTS_1_1, /* 3011 */ - XML_SCHEMAP_COS_ST_RESTRICTS_1_2, /* 3012 */ + XML_SCHEMAP_COS_ST_RESTRICTS_1_2, /* 3012 */ XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1, /* 3013 */ XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2, /* 3014 */ XML_SCHEMAP_COS_ST_RESTRICTS_2_1, /* 3015 */ @@ -712,7 +722,7 @@ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3, /* 3028 */ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4, /* 3029 */ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5, /* 3030 */ - XML_SCHEMAP_COS_ST_DERIVED_OK_2_1, /* 3031 */ + XML_SCHEMAP_COS_ST_DERIVED_OK_2_1, /* 3031 */ XML_SCHEMAP_COS_ST_DERIVED_OK_2_2, /* 3032 */ XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, /* 3033 */ XML_SCHEMAP_S4S_ELEM_MISSING, /* 3034 */ @@ -731,14 +741,14 @@ XML_SCHEMAP_E_PROPS_CORRECT_4, /* 3047 */ XML_SCHEMAP_E_PROPS_CORRECT_5, /* 3048 */ XML_SCHEMAP_E_PROPS_CORRECT_6, /* 3049 */ - XML_SCHEMAP_SRC_INCLUDE, /* 3050 */ + XML_SCHEMAP_SRC_INCLUDE, /* 3050 */ XML_SCHEMAP_SRC_ATTRIBUTE_1, /* 3051 */ XML_SCHEMAP_SRC_ATTRIBUTE_2, /* 3052 */ XML_SCHEMAP_SRC_ATTRIBUTE_3_1, /* 3053 */ XML_SCHEMAP_SRC_ATTRIBUTE_3_2, /* 3054 */ XML_SCHEMAP_SRC_ATTRIBUTE_4, /* 3055 */ XML_SCHEMAP_NO_XMLNS, /* 3056 */ - XML_SCHEMAP_NO_XSI, /* 3057 */ + XML_SCHEMAP_NO_XSI, /* 3057 */ XML_SCHEMAP_COS_VALID_DEFAULT_1, /* 3058 */ XML_SCHEMAP_COS_VALID_DEFAULT_2_1, /* 3059 */ XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1, /* 3060 */ @@ -773,6 +783,8 @@ XML_SCHEMAP_AU_PROPS_CORRECT, /* 3088 */ XML_SCHEMAP_A_PROPS_CORRECT_3, /* 3089 */ XML_SCHEMAP_COS_ALL_LIMITED, /* 3090 */ + XML_SCHEMATRONV_ASSERT = 4000, /* 4000 */ + XML_SCHEMATRONV_REPORT, XML_MODULE_OPEN = 4900, /* 4900 */ XML_MODULE_CLOSE, /* 4901 */ XML_CHECK_FOUND_ELEMENT = 5000, @@ -817,11 +829,8 @@ XML_I18N_NO_HANDLER, /* 6001 */ XML_I18N_EXCESS_HANDLER, /* 6002 */ XML_I18N_CONV_FAILED, /* 6003 */ - XML_I18N_NO_OUTPUT /* 6004 */ -#if 0 - XML_CHECK_, /* 5033 */ - XML_CHECK_X /* 503 */ -#endif + XML_I18N_NO_OUTPUT, /* 6004 */ + XML_BUF_OVERFLOW = 7000 } xmlParserErrors; /** @@ -835,7 +844,7 @@ */ typedef void (XMLCDECL *xmlGenericErrorFunc) (void *ctx, const char *msg, - ...); + ...) LIBXML_ATTR_FORMAT(2,3); /** * xmlStructuredErrorFunc: * @userData: user provided data for the error callback @@ -850,38 +859,38 @@ * Use the following function to reset the two global variables * xmlGenericError and xmlGenericErrorContext. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSetGenericErrorFunc (void *ctx, xmlGenericErrorFunc handler); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL initGenericErrorDefaultFunc (xmlGenericErrorFunc *handler); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSetStructuredErrorFunc (void *ctx, xmlStructuredErrorFunc handler); /* * Default message routines used by SAX and Valid context for error * and warning reporting. */ -XMLPUBFUN void XMLCDECL +XMLPUBFUN void XMLCDECL xmlParserError (void *ctx, const char *msg, - ...); -XMLPUBFUN void XMLCDECL + ...) LIBXML_ATTR_FORMAT(2,3); +XMLPUBFUN void XMLCDECL xmlParserWarning (void *ctx, const char *msg, - ...); -XMLPUBFUN void XMLCDECL + ...) LIBXML_ATTR_FORMAT(2,3); +XMLPUBFUN void XMLCDECL xmlParserValidityError (void *ctx, const char *msg, - ...); -XMLPUBFUN void XMLCDECL + ...) LIBXML_ATTR_FORMAT(2,3); +XMLPUBFUN void XMLCDECL xmlParserValidityWarning (void *ctx, const char *msg, - ...); -XMLPUBFUN void XMLCALL + ...) LIBXML_ATTR_FORMAT(2,3); +XMLPUBFUN void XMLCALL xmlParserPrintFileInfo (xmlParserInputPtr input); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlParserPrintFileContext (xmlParserInputPtr input); /* @@ -899,19 +908,19 @@ xmlResetError (xmlErrorPtr err); XMLPUBFUN int XMLCALL xmlCopyError (xmlErrorPtr from, - xmlErrorPtr to); + xmlErrorPtr to); #ifdef IN_LIBXML /* * Internal callback reporting routine */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL __xmlRaiseError (xmlStructuredErrorFunc schannel, - xmlGenericErrorFunc channel, - void *data, + xmlGenericErrorFunc channel, + void *data, void *ctx, - void *node, - int domain, + void *node, + int domain, int code, xmlErrorLevel level, const char *file, @@ -922,10 +931,10 @@ int int1, int col, const char *msg, - ...); -XMLPUBFUN void XMLCALL + ...) LIBXML_ATTR_FORMAT(16,17); +XMLPUBFUN void XMLCALL __xmlSimpleError (int domain, - int code, + int code, xmlNodePtr node, const char *msg, const char *extra); diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlexports.in.h gettext-0.19.7/gnulib-local/lib/libxml/xmlexports.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xmlexports.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlexports.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -43,7 +43,7 @@ /** * XMLCDECL: * - * Macro which declares the calling convention for exported functions that + * Macro which declares the calling convention for exported functions that * use '...'. */ #define XMLCDECL @@ -108,9 +108,14 @@ #undef XMLPUBVAR #undef XMLCALL #undef XMLCDECL + /* + * if defined(IN_LIBXML) this raises problems on mingw with msys + * _imp__xmlFree listed as missing. Try to workaround the problem + * by also making that declaration when compiling client code. + */ #if defined(IN_LIBXML) && !defined(LIBXML_STATIC) #define XMLPUBFUN __declspec(dllexport) - #define XMLPUBVAR __declspec(dllexport) + #define XMLPUBVAR __declspec(dllexport) extern #else #define XMLPUBFUN #if !defined(LIBXML_STATIC) diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlIO.c gettext-0.19.7/gnulib-local/lib/libxml/xmlIO.c --- gettext-0.19.6/gnulib-local/lib/libxml/xmlIO.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlIO.c 2015-12-23 07:08:27.000000000 +0000 @@ -35,11 +35,18 @@ #ifdef HAVE_ZLIB_H #include #endif +#ifdef HAVE_LZMA_H +#include +#endif -#ifdef WIN32 +#if defined(WIN32) || defined(_WIN32) #include #endif +#if defined(_WIN32_WCE) +#include /* for CP_UTF8 */ +#endif + /* Figure a portable way to know if a file is a directory. */ #ifndef HAVE_STAT # ifdef HAVE__STAT @@ -89,6 +96,9 @@ #endif #include +#include "buf.h" +#include "enc.h" + /* #define VERBOSE_FAILURE */ /* #define DEBUG_EXTERNAL_ENTITIES */ /* #define DEBUG_INPUT */ @@ -131,11 +141,14 @@ static xmlOutputCallback xmlOutputCallbackTable[MAX_OUTPUT_CALLBACK]; static int xmlOutputCallbackNr = 0; static int xmlOutputCallbackInitialized = 0; + +xmlOutputBufferPtr +xmlAllocOutputBufferInternal(xmlCharEncodingHandlerPtr encoder); #endif /* LIBXML_OUTPUT_ENABLED */ /************************************************************************ * * - * Tree memory error handler * + * Tree memory error handler * * * ************************************************************************/ @@ -418,7 +431,7 @@ idx = 0; if (code >= XML_IO_UNKNOWN) idx = code - XML_IO_UNKNOWN; if (idx >= (sizeof(IOerr) / sizeof(IOerr[0]))) idx = 0; - + __xmlSimpleError(domain, code, NULL, IOerr[idx], extra); } @@ -470,12 +483,12 @@ XML_IO_LOAD_ERROR, level, NULL, 0, filename, NULL, NULL, 0, 0, msg, filename); - + } /************************************************************************ * * - * Tree memory error handler * + * Tree memory error handler * * * ************************************************************************/ /** @@ -497,7 +510,7 @@ * xmlCleanupInputCallbacks: * * clears the entire input callback table. this includes the - * compiled-in I/O. + * compiled-in I/O. */ void xmlCleanupInputCallbacks(void) @@ -522,7 +535,7 @@ * xmlPopInputCallbacks: * * Clear the top input callback from the input stack. this includes the - * compiled-in I/O. + * compiled-in I/O. * * Returns the number of input callback registered or -1 in case of error. */ @@ -534,7 +547,7 @@ if (xmlInputCallbackNr <= 0) return(-1); - + xmlInputCallbackNr--; xmlInputCallbackTable[xmlInputCallbackNr].matchcallback = NULL; xmlInputCallbackTable[xmlInputCallbackNr].opencallback = NULL; @@ -549,7 +562,7 @@ * xmlCleanupOutputCallbacks: * * clears the entire output callback table. this includes the - * compiled-in I/O callbacks. + * compiled-in I/O callbacks. */ void xmlCleanupOutputCallbacks(void) @@ -606,6 +619,34 @@ return fd; } +#ifdef HAVE_ZLIB_H +static gzFile +xmlWrapGzOpenUtf8(const char *path, const char *mode) +{ + gzFile fd; + wchar_t *wPath; + + fd = gzopen (path, mode); + if (fd) + return fd; + + wPath = __xmlIOWin32UTF8ToWChar(path); + if(wPath) + { + int d, m = (strstr(mode, "r") ? O_RDONLY : O_RDWR); +#ifdef _O_BINARY + m |= (strstr(mode, "b") ? _O_BINARY : 0); +#endif + d = _wopen(wPath, m); + if (d >= 0) + fd = gzdopen(d, mode); + xmlFree(wPath); + } + + return fd; +} +#endif + /** * xmlWrapStatUtf8: * @path: the path in utf-8 encoding @@ -672,7 +713,10 @@ static xmlWrapStatFunc xmlWrapStat = xmlWrapStatNative; typedef FILE* (* xmlWrapOpenFunc)(const char *f,int mode); static xmlWrapOpenFunc xmlWrapOpen = xmlWrapOpenNative; - +#ifdef HAVE_ZLIB_H +typedef gzFile (* xmlWrapGzOpenFunc) (const char *f, const char *mode); +static xmlWrapGzOpenFunc xmlWrapGzOpen = gzopen; +#endif /** * xmlInitPlatformSpecificIo: * @@ -692,9 +736,15 @@ if(GetVersionEx(&osvi) && (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT)) { xmlWrapStat = xmlWrapStatUtf8; xmlWrapOpen = xmlWrapOpenUtf8; +#ifdef HAVE_ZLIB_H + xmlWrapGzOpen = xmlWrapGzOpenUtf8; +#endif } else { xmlWrapStat = xmlWrapStatNative; xmlWrapOpen = xmlWrapOpenNative; +#ifdef HAVE_ZLIB_H + xmlWrapGzOpen = gzopen; +#endif } xmlPlatformIoInitialized = 1; @@ -721,13 +771,21 @@ xmlCheckFilename (const char *path) { #ifdef HAVE_STAT - struct stat stat_buffer; + struct stat stat_buffer; #endif - if (path == NULL) - return(0); + if (path == NULL) + return(0); #ifdef HAVE_STAT #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) + /* + * On Windows stat and wstat do not work with long pathname, + * which start with '\\?\' + */ + if ((path[0] == '\\') && (path[1] == '\\') && (path[2] == '?') && + (path[3] == '\\') ) + return 1; + if (xmlWrapStat(path, &stat_buffer) == -1) return 0; #else @@ -742,7 +800,14 @@ return 1; } -static int +/** + * xmlNop: + * + * No Operation function, does nothing, no input + * + * Returns zero + */ +int xmlNop(void) { return(0); } @@ -829,7 +894,7 @@ */ static void * xmlFileOpen_real (const char *filename) { - const char *path = NULL; + const char *path = filename; FILE *fd; if (filename == NULL) @@ -840,23 +905,27 @@ return((void *) fd); } - if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "file://localhost/", 17)) + if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "file://localhost/", 17)) { #if defined (_WIN32) || defined (__DJGPP__) && !defined(__CYGWIN__) path = &filename[17]; #else path = &filename[16]; #endif - else if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "file:///", 8)) { + } else if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "file:///", 8)) { #if defined (_WIN32) || defined (__DJGPP__) && !defined(__CYGWIN__) path = &filename[8]; #else path = &filename[7]; #endif - } else - path = filename; + } else if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "file:/", 6)) { + /* lots of generators seems to lazy to read RFC 1738 */ +#if defined (_WIN32) || defined (__DJGPP__) && !defined(__CYGWIN__) + path = &filename[6]; +#else + path = &filename[5]; +#endif + } - if (path == NULL) - return(NULL); if (!xmlCheckFilename(path)) return(NULL); @@ -883,13 +952,15 @@ char *unescaped; void *retval; - unescaped = xmlURIUnescapeString(filename, 0, NULL); - if (unescaped != NULL) { - retval = xmlFileOpen_real(unescaped); - xmlFree(unescaped); - } else { - retval = xmlFileOpen_real(filename); + retval = xmlFileOpen_real(filename); + if (retval == NULL) { + unescaped = xmlURIUnescapeString(filename, 0, NULL); + if (unescaped != NULL) { + retval = xmlFileOpen_real(unescaped); + xmlFree(unescaped); + } } + return retval; } @@ -925,7 +996,7 @@ #else path = &filename[7]; #endif - } else + } else path = filename; if (path == NULL) @@ -934,7 +1005,7 @@ #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) fd = xmlWrapOpen(path, 1); #else - fd = fopen(path, "wb"); + fd = fopen(path, "wb"); #endif /* WIN32 */ if (fd == NULL) xmlIOErr(0, path); @@ -955,7 +1026,7 @@ int xmlFileRead (void * context, char * buffer, int len) { int ret; - if ((context == NULL) || (buffer == NULL)) + if ((context == NULL) || (buffer == NULL)) return(-1); ret = fread(&buffer[0], 1, len, (FILE *) context); if (ret < 0) xmlIOErr(0, "fread()"); @@ -977,7 +1048,7 @@ xmlFileWrite (void * context, const char * buffer, int len) { int items; - if ((context == NULL) || (buffer == NULL)) + if ((context == NULL) || (buffer == NULL)) return(-1); items = fwrite(&buffer[0], len, 1, (FILE *) context); if ((items == 0) && (ferror((FILE *) context))) { @@ -1092,7 +1163,12 @@ gzFile fd; if (!strcmp(filename, "-")) { - fd = gzdopen(dup(0), "rb"); + int duped_fd = dup(fileno(stdin)); + fd = gzdopen(duped_fd, "rb"); + if (fd == Z_NULL && duped_fd >= 0) { + close(duped_fd); /* gzdOpen() does not close on failure */ + } + return((void *) fd); } @@ -1108,7 +1184,7 @@ #else path = &filename[7]; #endif - } else + } else path = filename; if (path == NULL) @@ -1116,7 +1192,11 @@ if (!xmlCheckFilename(path)) return(NULL); +#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) + fd = xmlWrapGzOpen(path, "rb"); +#else fd = gzopen(path, "rb"); +#endif return((void *) fd); } @@ -1162,7 +1242,12 @@ snprintf(mode, sizeof(mode), "wb%d", compression); if (!strcmp(filename, "-")) { - fd = gzdopen(dup(1), mode); + int duped_fd = dup(fileno(stdout)); + fd = gzdopen(duped_fd, "rb"); + if (fd == Z_NULL && duped_fd >= 0) { + close(duped_fd); /* gzdOpen() does not close on failure */ + } + return((void *) fd); } @@ -1178,13 +1263,17 @@ #else path = &filename[7]; #endif - } else + } else path = filename; if (path == NULL) return(NULL); +#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) + fd = xmlWrapGzOpen(path, mode); +#else fd = gzopen(path, mode); +#endif return((void *) fd); } #endif /* LIBXML_OUTPUT_ENABLED */ @@ -1245,6 +1334,125 @@ } #endif /* HAVE_ZLIB_H */ +#ifdef LIBXML_LZMA_ENABLED +/************************************************************************ + * * + * I/O for compressed file accesses * + * * + ************************************************************************/ +#include "xzlib.h" +/** + * xmlXzfileMatch: + * @filename: the URI for matching + * + * input from compressed file test + * + * Returns 1 if matches, 0 otherwise + */ +static int +xmlXzfileMatch (const char *filename ATTRIBUTE_UNUSED) { + return(1); +} + +/** + * xmlXzFileOpen_real: + * @filename: the URI for matching + * + * input from compressed file open + * if @filename is " " then the standard input is used + * + * Returns an I/O context or NULL in case of error + */ +static void * +xmlXzfileOpen_real (const char *filename) { + const char *path = NULL; + xzFile fd; + + if (!strcmp(filename, "-")) { + fd = __libxml2_xzdopen(dup(fileno(stdin)), "rb"); + return((void *) fd); + } + + if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "file://localhost/", 17)) { + path = &filename[16]; + } else if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "file:///", 8)) { + path = &filename[7]; + } else if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "file:/", 6)) { + /* lots of generators seems to lazy to read RFC 1738 */ + path = &filename[5]; + } else + path = filename; + + if (path == NULL) + return(NULL); + if (!xmlCheckFilename(path)) + return(NULL); + + fd = __libxml2_xzopen(path, "rb"); + return((void *) fd); +} + +/** + * xmlXzfileOpen: + * @filename: the URI for matching + * + * Wrapper around xmlXzfileOpen_real that try it with an unescaped + * version of @filename, if this fails fallback to @filename + * + * Returns a handler or NULL in case or failure + */ +static void * +xmlXzfileOpen (const char *filename) { + char *unescaped; + void *retval; + + retval = xmlXzfileOpen_real(filename); + if (retval == NULL) { + unescaped = xmlURIUnescapeString(filename, 0, NULL); + if (unescaped != NULL) { + retval = xmlXzfileOpen_real(unescaped); + } + xmlFree(unescaped); + } + + return retval; +} + +/** + * xmlXzfileRead: + * @context: the I/O context + * @buffer: where to drop data + * @len: number of bytes to write + * + * Read @len bytes to @buffer from the compressed I/O channel. + * + * Returns the number of bytes written + */ +static int +xmlXzfileRead (void * context, char * buffer, int len) { + int ret; + + ret = __libxml2_xzread((xzFile) context, &buffer[0], len); + if (ret < 0) xmlIOErr(0, "xzread()"); + return(ret); +} + +/** + * xmlXzfileClose: + * @context: the I/O context + * + * Close a compressed I/O channel + */ +static int +xmlXzfileClose (void * context) { + int ret; + + ret = (__libxml2_xzclose((xzFile) context) == LZMA_OK ) ? 0 : -1; + if (ret < 0) xmlIOErr(0, "xzclose()"); + return(ret); +} +#endif /* LIBXML_LZMA_ENABLED */ + #ifdef LIBXML_HTTP_ENABLED /************************************************************************ * * @@ -1306,7 +1514,7 @@ /* ** This is plagiarized from putLong in gzio.c (zlib source) where - ** the number "4" is hardcoded. If zlib is ever patched to + ** the number "4" is hardcoded. If zlib is ever patched to ** support 64 bit file sizes, this code would need to be patched ** as well. */ @@ -1358,7 +1566,7 @@ * * Create a memory buffer to hold the compressed XML document. The * compressed document in memory will end up being identical to what - * would be created if gzopen/gzwrite/gzclose were being used to + * would be created if gzopen/gzwrite/gzclose were being used to * write the document to disk. The code for the header/trailer data to * the compression is plagiarized from the zlib source files. */ @@ -1407,7 +1615,7 @@ buff->crc = crc32( 0L, NULL, 0 ); hdr_lgth = snprintf( (char *)buff->zbuff, buff->size, "%c%c%c%c%c%c%c%c%c%c", - GZ_MAGIC1, GZ_MAGIC2, Z_DEFLATED, + GZ_MAGIC1, GZ_MAGIC2, Z_DEFLATED, 0, 0, 0, 0, 0, 0, LXML_ZLIB_OS_CODE ); buff->zctrl.next_out = buff->zbuff + hdr_lgth; buff->zctrl.avail_out = buff->size - hdr_lgth; @@ -1445,11 +1653,11 @@ new_size = buff->size + ext_amt; #ifdef DEBUG_HTTP - if ( cur_used > new_size ) + if ( cur_used > new_size ) xmlGenericError( xmlGenericErrorContext, "xmlZMemBuffExtend: %s\n%s %d bytes.\n", "Buffer overwrite detected during compressed memory", - "buffer extension. Overflowed by", + "buffer extension. Overflowed by", (cur_used - new_size ) ); #endif @@ -1587,7 +1795,7 @@ "Error flushing zlib buffers. Error code", z_err ); xmlIOErr(XML_IO_WRITE, (const char *) msg); } - + return ( zlgth ); } #endif /* LIBXML_OUTPUT_ENABLED */ @@ -1707,7 +1915,7 @@ { /* Any character conversions should have been done before this */ - ctxt->doc_buff = xmlAllocOutputBuffer(NULL); + ctxt->doc_buff = xmlAllocOutputBufferInternal(NULL); } if (ctxt->doc_buff == NULL) { @@ -1718,7 +1926,7 @@ return (ctxt); } #endif /* LIBXML_OUTPUT_ENABLED */ - + #ifdef LIBXML_OUTPUT_ENABLED /** * xmlIOHTTPDfltOpenW @@ -1746,7 +1954,7 @@ * * Returns the number of bytes written */ -int +int xmlIOHTTPRead(void * context, char * buffer, int len) { if ((buffer == NULL) || (len < 0)) return(-1); return(xmlNanoHTTPRead(context, &buffer[0], len)); @@ -1766,7 +1974,7 @@ */ static int -xmlIOHTTPWrite( void * context, const char * buffer, int len ) { +xmlIOHTTPWrite( void * context, const char * buffer, int len ) { xmlIOHTTPWriteCtxtPtr ctxt = context; @@ -1778,7 +1986,7 @@ /* Use gzwrite or fwrite as previously setup in the open call */ #ifdef HAVE_ZLIB_H - if ( ctxt->compression > 0 ) + if ( ctxt->compression > 0 ) len = xmlZMemBuffAppend( ctxt->doc_buff, buffer, len ); else @@ -1853,8 +2061,8 @@ /* Pull the data out of the memory output buffer */ xmlOutputBufferPtr dctxt = ctxt->doc_buff; - http_content = (char *)dctxt->buffer->content; - content_lgth = dctxt->buffer->use; + http_content = (char *) xmlBufContent(dctxt->buffer); + content_lgth = xmlBufUse(dctxt->buffer); } if ( http_content == NULL ) { @@ -1869,7 +2077,7 @@ else { http_ctxt = xmlNanoHTTPMethod( ctxt->uri, http_mthd, http_content, - &content_type, content_encoding, + &content_type, content_encoding, content_lgth ); if ( http_ctxt != NULL ) { @@ -1888,7 +2096,7 @@ /* ** Since either content or reply may be gzipped, - ** dump them to separate files instead of the + ** dump them to separate files instead of the ** standard error context. */ @@ -2025,7 +2233,7 @@ * * Returns the number of bytes written */ -int +int xmlIOFTPRead(void * context, char * buffer, int len) { if ((buffer == NULL) || (len < 0)) return(-1); return(xmlNanoFTPRead(context, &buffer[0], len)); @@ -2088,7 +2296,7 @@ xmlRegisterOutputCallbacks(xmlOutputMatchCallback matchFunc, xmlOutputOpenCallback openFunc, xmlOutputWriteCallback writeFunc, xmlOutputCloseCallback closeFunc) { - if (xmlOutputCallbackNr >= MAX_INPUT_CALLBACK) { + if (xmlOutputCallbackNr >= MAX_OUTPUT_CALLBACK) { return(-1); } xmlOutputCallbackTable[xmlOutputCallbackNr].matchcallback = matchFunc; @@ -2120,6 +2328,10 @@ xmlRegisterInputCallbacks(xmlGzfileMatch, xmlGzfileOpen, xmlGzfileRead, xmlGzfileClose); #endif /* HAVE_ZLIB_H */ +#ifdef LIBXML_LZMA_ENABLED + xmlRegisterInputCallbacks(xmlXzfileMatch, xmlXzfileOpen, + xmlXzfileRead, xmlXzfileClose); +#endif /* LIBXML_LZMA_ENABLED */ #ifdef LIBXML_HTTP_ENABLED xmlRegisterInputCallbacks(xmlIOHTTPMatch, xmlIOHTTPOpen, @@ -2217,15 +2429,15 @@ return(NULL); } memset(ret, 0, (size_t) sizeof(xmlParserInputBuffer)); - ret->buffer = xmlBufferCreateSize(2 * xmlDefaultBufferSize); + ret->buffer = xmlBufCreateSize(2 * xmlDefaultBufferSize); if (ret->buffer == NULL) { xmlFree(ret); return(NULL); } - ret->buffer->alloc = XML_BUFFER_ALLOC_DOUBLEIT; + xmlBufSetAllocationScheme(ret->buffer, XML_BUFFER_ALLOC_DOUBLEIT); ret->encoder = xmlGetCharEncodingHandler(enc); if (ret->encoder != NULL) - ret->raw = xmlBufferCreateSize(2 * xmlDefaultBufferSize); + ret->raw = xmlBufCreateSize(2 * xmlDefaultBufferSize); else ret->raw = NULL; ret->readcallback = NULL; @@ -2256,19 +2468,28 @@ return(NULL); } memset(ret, 0, (size_t) sizeof(xmlOutputBuffer)); - ret->buffer = xmlBufferCreate(); + ret->buffer = xmlBufCreate(); if (ret->buffer == NULL) { xmlFree(ret); return(NULL); } - ret->buffer->alloc = XML_BUFFER_ALLOC_DOUBLEIT; + + /* try to avoid a performance problem with Windows realloc() */ + if (xmlBufGetAllocationScheme(ret->buffer) == XML_BUFFER_ALLOC_EXACT) + xmlBufSetAllocationScheme(ret->buffer, XML_BUFFER_ALLOC_DOUBLEIT); + ret->encoder = encoder; if (encoder != NULL) { - ret->conv = xmlBufferCreateSize(4000); + ret->conv = xmlBufCreateSize(4000); + if (ret->conv == NULL) { + xmlFree(ret); + return(NULL); + } + /* * This call is designed to initiate the encoder state */ - xmlCharEncOutFunc(encoder, ret->conv, NULL); + xmlCharEncOutput(ret, 1); } else ret->conv = NULL; ret->writecallback = NULL; @@ -2278,6 +2499,59 @@ return(ret); } + +/** + * xmlAllocOutputBufferInternal: + * @encoder: the encoding converter or NULL + * + * Create a buffered parser output + * + * Returns the new parser output or NULL + */ +xmlOutputBufferPtr +xmlAllocOutputBufferInternal(xmlCharEncodingHandlerPtr encoder) { + xmlOutputBufferPtr ret; + + ret = (xmlOutputBufferPtr) xmlMalloc(sizeof(xmlOutputBuffer)); + if (ret == NULL) { + xmlIOErrMemory("creating output buffer"); + return(NULL); + } + memset(ret, 0, (size_t) sizeof(xmlOutputBuffer)); + ret->buffer = xmlBufCreate(); + if (ret->buffer == NULL) { + xmlFree(ret); + return(NULL); + } + + + /* + * For conversion buffers we use the special IO handling + */ + xmlBufSetAllocationScheme(ret->buffer, XML_BUFFER_ALLOC_IO); + + ret->encoder = encoder; + if (encoder != NULL) { + ret->conv = xmlBufCreateSize(4000); + if (ret->conv == NULL) { + xmlFree(ret); + return(NULL); + } + + /* + * This call is designed to initiate the encoder state + */ + xmlCharEncOutput(ret, 1); + } else + ret->conv = NULL; + ret->writecallback = NULL; + ret->closecallback = NULL; + ret->context = NULL; + ret->written = 0; + + return(ret); +} + #endif /* LIBXML_OUTPUT_ENABLED */ /** @@ -2291,7 +2565,7 @@ if (in == NULL) return; if (in->raw) { - xmlBufferFree(in->raw); + xmlBufFree(in->raw); in->raw = NULL; } if (in->encoder != NULL) { @@ -2301,7 +2575,7 @@ in->closecallback(in->context); } if (in->buffer != NULL) { - xmlBufferFree(in->buffer); + xmlBufFree(in->buffer); in->buffer = NULL; } @@ -2333,14 +2607,14 @@ } written = out->written; if (out->conv) { - xmlBufferFree(out->conv); + xmlBufFree(out->conv); out->conv = NULL; } if (out->encoder != NULL) { xmlCharEncCloseFunc(out->encoder); } if (out->buffer != NULL) { - xmlBufferFree(out->buffer); + xmlBufFree(out->buffer); out->buffer = NULL; } @@ -2392,6 +2666,9 @@ #ifdef HAVE_ZLIB_H if ((xmlInputCallbackTable[i].opencallback == xmlGzfileOpen) && (strcmp(URI, "-") != 0)) { +#if defined(ZLIB_VERNUM) && ZLIB_VERNUM >= 0x1230 + ret->compressed = !gzdirect(context); +#else if (((z_stream *)context)->avail_in > 4) { char *cptr, buff4[4]; cptr = (char *) ((z_stream *)context)->next_in; @@ -2403,6 +2680,13 @@ gzrewind(context); } } +#endif + } +#endif +#ifdef LIBXML_LZMA_ENABLED + if ((xmlInputCallbackTable[i].opencallback == xmlXzfileOpen) && + (strcmp(URI, "-") != 0)) { + ret->compressed = __libxml2_xzcompressed(context); } #endif } @@ -2478,7 +2762,7 @@ if ((compression > 0) && (compression <= 9) && (is_file_uri == 1)) { context = xmlGzfileOpenW(unescaped, compression); if (context != NULL) { - ret = xmlAllocOutputBuffer(encoder); + ret = xmlAllocOutputBufferInternal(encoder); if (ret != NULL) { ret->context = context; ret->writecallback = xmlGzfileWrite; @@ -2515,7 +2799,7 @@ if ((compression > 0) && (compression <= 9) && (is_file_uri == 1)) { context = xmlGzfileOpenW(URI, compression); if (context != NULL) { - ret = xmlAllocOutputBuffer(encoder); + ret = xmlAllocOutputBufferInternal(encoder); if (ret != NULL) { ret->context = context; ret->writecallback = xmlGzfileWrite; @@ -2548,7 +2832,7 @@ /* * Allocate the Output buffer front-end. */ - ret = xmlAllocOutputBuffer(encoder); + ret = xmlAllocOutputBufferInternal(encoder); if (ret != NULL) { ret->context = context; ret->writecallback = xmlOutputCallbackTable[i].writecallback; @@ -2585,7 +2869,7 @@ /** * xmlParserInputBufferCreateFile: - * @file: a FILE* + * @file: a FILE* * @enc: the charset encoding if known * * Create a buffered parser input for the progressive parsing of a FILE * @@ -2615,7 +2899,7 @@ #ifdef LIBXML_OUTPUT_ENABLED /** * xmlOutputBufferCreateFile: - * @file: a FILE* + * @file: a FILE* * @encoder: the encoding converter or NULL * * Create a buffered output for the progressive saving to a FILE * @@ -2632,7 +2916,7 @@ if (file == NULL) return(NULL); - ret = xmlAllocOutputBuffer(encoder); + ret = xmlAllocOutputBufferInternal(encoder); if (ret != NULL) { ret->context = file; ret->writecallback = xmlFileWrite; @@ -2666,6 +2950,39 @@ return(ret); } +/** + * xmlOutputBufferGetContent: + * @out: an xmlOutputBufferPtr + * + * Gives a pointer to the data currently held in the output buffer + * + * Returns a pointer to the data or NULL in case of error + */ +const xmlChar * +xmlOutputBufferGetContent(xmlOutputBufferPtr out) { + if ((out == NULL) || (out->buffer == NULL)) + return(NULL); + + return(xmlBufContent(out->buffer)); +} + +/** + * xmlOutputBufferGetSize: + * @out: an xmlOutputBufferPtr + * + * Gives the length of the data currently held in the output buffer + * + * Returns 0 in case or error or no data is held, the size otherwise + */ +size_t +xmlOutputBufferGetSize(xmlOutputBufferPtr out) { + if ((out == NULL) || (out->buffer == NULL)) + return(0); + + return(xmlBufUse(out->buffer)); +} + + #endif /* LIBXML_OUTPUT_ENABLED */ /** @@ -2718,7 +3035,7 @@ ret->context = (void *) mem; ret->readcallback = (xmlInputReadCallback) xmlNop; ret->closecallback = NULL; - errcode = xmlBufferAdd(ret->buffer, (const xmlChar *) mem, size); + errcode = xmlBufAdd(ret->buffer, (const xmlChar *) mem, size); if (errcode != 0) { xmlFree(ret); return(NULL); @@ -2755,14 +3072,14 @@ return(NULL); } memset(ret, 0, (size_t) sizeof(xmlParserInputBuffer)); - ret->buffer = xmlBufferCreateStatic((void *)mem, (size_t) size); + ret->buffer = xmlBufCreateStatic((void *)mem, (size_t) size); if (ret->buffer == NULL) { xmlFree(ret); return(NULL); } ret->encoder = xmlGetCharEncodingHandler(enc); if (ret->encoder != NULL) - ret->raw = xmlBufferCreateSize(2 * xmlDefaultBufferSize); + ret->raw = xmlBufCreateSize(2 * xmlDefaultBufferSize); else ret->raw = NULL; ret->compressed = -1; @@ -2779,7 +3096,7 @@ * @fd: a file descriptor number * @encoder: the encoding converter or NULL * - * Create a buffered output for the progressive saving + * Create a buffered output for the progressive saving * to a file descriptor * * Returns the new parser output or NULL @@ -2790,7 +3107,7 @@ if (fd < 0) return(NULL); - ret = xmlAllocOutputBuffer(encoder); + ret = xmlAllocOutputBufferInternal(encoder); if (ret != NULL) { ret->context = (void *) (long) fd; ret->writecallback = xmlFdWrite; @@ -2851,7 +3168,7 @@ if (iowrite == NULL) return(NULL); - ret = xmlAllocOutputBuffer(encoder); + ret = xmlAllocOutputBufferInternal(encoder); if (ret != NULL) { ret->context = (void *) ioctx; ret->writecallback = iowrite; @@ -2931,33 +3248,33 @@ * Store the data in the incoming raw buffer */ if (in->raw == NULL) { - in->raw = xmlBufferCreate(); + in->raw = xmlBufCreate(); } - ret = xmlBufferAdd(in->raw, (const xmlChar *) buf, len); + ret = xmlBufAdd(in->raw, (const xmlChar *) buf, len); if (ret != 0) return(-1); /* * convert as much as possible to the parser reading buffer. */ - use = in->raw->use; - nbchars = xmlCharEncInFunc(in->encoder, in->buffer, in->raw); + use = xmlBufUse(in->raw); + nbchars = xmlCharEncInput(in, 1); if (nbchars < 0) { xmlIOErr(XML_IO_ENCODER, NULL); in->error = XML_IO_ENCODER; return(-1); } - in->rawconsumed += (use - in->raw->use); + in->rawconsumed += (use - xmlBufUse(in->raw)); } else { nbchars = len; - ret = xmlBufferAdd(in->buffer, (xmlChar *) buf, nbchars); + ret = xmlBufAdd(in->buffer, (xmlChar *) buf, nbchars); if (ret != 0) return(-1); } #ifdef DEBUG_INPUT xmlGenericError(xmlGenericErrorContext, "I/O: pushed %d chars, buffer %d/%d\n", - nbchars, in->buffer->use, in->buffer->size); + nbchars, xmlBufUse(in->buffer), xmlBufLength(in->buffer)); #endif return(nbchars); } @@ -2995,29 +3312,23 @@ char *buffer = NULL; int res = 0; int nbchars = 0; - int buffree; - unsigned int needSize; if ((in == NULL) || (in->error)) return(-1); if ((len <= MINLEN) && (len != 4)) len = MINLEN; - buffree = in->buffer->size - in->buffer->use; - if (buffree <= 0) { + if (xmlBufAvail(in->buffer) <= 0) { xmlIOErr(XML_IO_BUFFER_FULL, NULL); in->error = XML_IO_BUFFER_FULL; return(-1); } - needSize = in->buffer->use + len + 1; - if (needSize > in->buffer->size){ - if (!xmlBufferResize(in->buffer, needSize)){ - xmlIOErrMemory("growing input buffer"); - in->error = XML_ERR_NO_MEMORY; - return(-1); - } + if (xmlBufGrow(in->buffer, len + 1) < 0) { + xmlIOErrMemory("growing input buffer"); + in->error = XML_ERR_NO_MEMORY; + return(-1); } - buffer = (char *)&in->buffer->content[in->buffer->use]; + buffer = (char *)xmlBufEnd(in->buffer); /* * Call the read method for this I/O type. @@ -3034,6 +3345,17 @@ if (res < 0) { return(-1); } + + /* + * try to establish compressed status of input if not done already + */ + if (in->compressed == -1) { +#ifdef LIBXML_LZMA_ENABLED + if (in->readcallback == xmlXzfileRead) + in->compressed = __libxml2_xzcompressed(in->context); +#endif + } + len = res; if (in->encoder != NULL) { unsigned int use; @@ -3042,32 +3364,31 @@ * Store the data in the incoming raw buffer */ if (in->raw == NULL) { - in->raw = xmlBufferCreate(); + in->raw = xmlBufCreate(); } - res = xmlBufferAdd(in->raw, (const xmlChar *) buffer, len); + res = xmlBufAdd(in->raw, (const xmlChar *) buffer, len); if (res != 0) return(-1); /* * convert as much as possible to the parser reading buffer. */ - use = in->raw->use; - nbchars = xmlCharEncInFunc(in->encoder, in->buffer, in->raw); + use = xmlBufUse(in->raw); + nbchars = xmlCharEncInput(in, 1); if (nbchars < 0) { xmlIOErr(XML_IO_ENCODER, NULL); in->error = XML_IO_ENCODER; return(-1); } - in->rawconsumed += (use - in->raw->use); + in->rawconsumed += (use - xmlBufUse(in->raw)); } else { nbchars = len; - in->buffer->use += nbchars; - buffer[nbchars] = 0; + xmlBufAddLen(in->buffer, nbchars); } #ifdef DEBUG_INPUT xmlGenericError(xmlGenericErrorContext, - "I/O: read %d chars, buffer %d/%d\n", - nbchars, in->buffer->use, in->buffer->size); + "I/O: read %d chars, buffer %d\n", + nbchars, xmlBufUse(in->buffer)); #endif return(nbchars); } @@ -3089,8 +3410,7 @@ if ((in == NULL) || (in->error)) return(-1); if (in->readcallback != NULL) return(xmlParserInputBufferGrow(in, len)); - else if ((in->buffer != NULL) && - (in->buffer->alloc == XML_BUFFER_ALLOC_IMMUTABLE)) + else if (xmlBufGetAllocationScheme(in->buffer) == XML_BUFFER_ALLOC_IMMUTABLE) return(0); else return(-1); @@ -3135,30 +3455,30 @@ * Store the data in the incoming raw buffer */ if (out->conv == NULL) { - out->conv = xmlBufferCreate(); + out->conv = xmlBufCreate(); } - ret = xmlBufferAdd(out->buffer, (const xmlChar *) buf, chunk); + ret = xmlBufAdd(out->buffer, (const xmlChar *) buf, chunk); if (ret != 0) return(-1); - if ((out->buffer->use < MINLEN) && (chunk == len)) + if ((xmlBufUse(out->buffer) < MINLEN) && (chunk == len)) goto done; /* * convert as much as possible to the parser reading buffer. */ - ret = xmlCharEncOutFunc(out->encoder, out->conv, out->buffer); + ret = xmlCharEncOutput(out, 0); if ((ret < 0) && (ret != -3)) { xmlIOErr(XML_IO_ENCODER, NULL); out->error = XML_IO_ENCODER; return(-1); } - nbchars = out->conv->use; + nbchars = xmlBufUse(out->conv); } else { - ret = xmlBufferAdd(out->buffer, (const xmlChar *) buf, chunk); + ret = xmlBufAdd(out->buffer, (const xmlChar *) buf, chunk); if (ret != 0) return(-1); - nbchars = out->buffer->use; + nbchars = xmlBufUse(out->buffer); } buf += chunk; len -= chunk; @@ -3171,15 +3491,15 @@ * second write the stuff to the I/O channel */ if (out->encoder != NULL) { - ret = out->writecallback(out->context, - (const char *)out->conv->content, nbchars); + ret = out->writecallback(out->context, + (const char *)xmlBufContent(out->conv), nbchars); if (ret >= 0) - xmlBufferShrink(out->conv, ret); + xmlBufShrink(out->conv, ret); } else { - ret = out->writecallback(out->context, - (const char *)out->buffer->content, nbchars); + ret = out->writecallback(out->context, + (const char *)xmlBufContent(out->buffer), nbchars); if (ret >= 0) - xmlBufferShrink(out->buffer, ret); + xmlBufShrink(out->buffer, ret); } if (ret < 0) { xmlIOErr(XML_IO_WRITE, NULL); @@ -3221,9 +3541,9 @@ const unsigned char* inend; inend = in + (*inlen); - + while ((in < inend) && (out < outend)) { - if (*in == '<') { + if (*in == '<') { if (outend - out < 4) break; *out++ = '&'; *out++ = 'l'; @@ -3253,7 +3573,7 @@ *out++ = (unsigned char) *in; } ++in; - } + } *outlen = out - outstart; *inlen = in - base; return(0); @@ -3287,7 +3607,8 @@ if ((out == NULL) || (out->error) || (str == NULL) || (out->buffer == NULL) || - (out->buffer->alloc == XML_BUFFER_ALLOC_IMMUTABLE)) return(-1); + (xmlBufGetAllocationScheme(out->buffer) == XML_BUFFER_ALLOC_IMMUTABLE)) + return(-1); len = strlen((const char *)str); if (len < 0) return(0); if (out->error) return(-1); @@ -3300,7 +3621,18 @@ * how many bytes to consume and how many bytes to store. */ cons = len; - chunk = (out->buffer->size - out->buffer->use) - 1; + chunk = xmlBufAvail(out->buffer) - 1; + + /* + * make sure we have enough room to save first, if this is + * not the case force a flush, but make sure we stay in the loop + */ + if (chunk < 40) { + if (xmlBufGrow(out->buffer, 100) < 0) + return(-1); + oldwritten = -1; + continue; + } /* * first handle encoding stuff. @@ -3310,36 +3642,33 @@ * Store the data in the incoming raw buffer */ if (out->conv == NULL) { - out->conv = xmlBufferCreate(); + out->conv = xmlBufCreate(); } - ret = escaping(out->buffer->content + out->buffer->use , + ret = escaping(xmlBufEnd(out->buffer) , &chunk, str, &cons); if ((ret < 0) || (chunk == 0)) /* chunk==0 => nothing done */ return(-1); - out->buffer->use += chunk; - out->buffer->content[out->buffer->use] = 0; + xmlBufAddLen(out->buffer, chunk); - if ((out->buffer->use < MINLEN) && (cons == len)) + if ((xmlBufUse(out->buffer) < MINLEN) && (cons == len)) goto done; /* * convert as much as possible to the output buffer. */ - ret = xmlCharEncOutFunc(out->encoder, out->conv, out->buffer); + ret = xmlCharEncOutput(out, 0); if ((ret < 0) && (ret != -3)) { xmlIOErr(XML_IO_ENCODER, NULL); out->error = XML_IO_ENCODER; return(-1); } - nbchars = out->conv->use; + nbchars = xmlBufUse(out->conv); } else { - ret = escaping(out->buffer->content + out->buffer->use , - &chunk, str, &cons); + ret = escaping(xmlBufEnd(out->buffer), &chunk, str, &cons); if ((ret < 0) || (chunk == 0)) /* chunk==0 => nothing done */ return(-1); - out->buffer->use += chunk; - out->buffer->content[out->buffer->use] = 0; - nbchars = out->buffer->use; + xmlBufAddLen(out->buffer, chunk); + nbchars = xmlBufUse(out->buffer); } str += cons; len -= cons; @@ -3352,15 +3681,15 @@ * second write the stuff to the I/O channel */ if (out->encoder != NULL) { - ret = out->writecallback(out->context, - (const char *)out->conv->content, nbchars); + ret = out->writecallback(out->context, + (const char *)xmlBufContent(out->conv), nbchars); if (ret >= 0) - xmlBufferShrink(out->conv, ret); + xmlBufShrink(out->conv, ret); } else { - ret = out->writecallback(out->context, - (const char *)out->buffer->content, nbchars); + ret = out->writecallback(out->context, + (const char *)xmlBufContent(out->buffer), nbchars); if (ret >= 0) - xmlBufferShrink(out->buffer, ret); + xmlBufShrink(out->buffer, ret); } if (ret < 0) { xmlIOErr(XML_IO_WRITE, NULL); @@ -3368,8 +3697,8 @@ return(ret); } out->written += ret; - } else if (out->buffer->size - out->buffer->use < MINLEN) { - xmlBufferResize(out->buffer, out->buffer->size + MINLEN); + } else if (xmlBufAvail(out->buffer) < MINLEN) { + xmlBufGrow(out->buffer, MINLEN); } written += nbchars; } while ((len > 0) && (oldwritten != written)); @@ -3398,7 +3727,7 @@ int xmlOutputBufferWriteString(xmlOutputBufferPtr out, const char *str) { int len; - + if ((out == NULL) || (out->error)) return(-1); if (str == NULL) return(-1); @@ -3427,14 +3756,16 @@ */ if ((out->conv != NULL) && (out->encoder != NULL)) { /* - * convert as much as possible to the parser reading buffer. + * convert as much as possible to the parser output buffer. */ - nbchars = xmlCharEncOutFunc(out->encoder, out->conv, out->buffer); - if (nbchars < 0) { - xmlIOErr(XML_IO_ENCODER, NULL); - out->error = XML_IO_ENCODER; - return(-1); - } + do { + nbchars = xmlCharEncOutput(out, 0); + if (nbchars < 0) { + xmlIOErr(XML_IO_ENCODER, NULL); + out->error = XML_IO_ENCODER; + return(-1); + } + } while (nbchars); } /* @@ -3443,14 +3774,16 @@ if ((out->conv != NULL) && (out->encoder != NULL) && (out->writecallback != NULL)) { ret = out->writecallback(out->context, - (const char *)out->conv->content, out->conv->use); + (const char *)xmlBufContent(out->conv), + xmlBufUse(out->conv)); if (ret >= 0) - xmlBufferShrink(out->conv, ret); + xmlBufShrink(out->conv, ret); } else if (out->writecallback != NULL) { ret = out->writecallback(out->context, - (const char *)out->buffer->content, out->buffer->use); + (const char *)xmlBufContent(out->buffer), + xmlBufUse(out->buffer)); if (ret >= 0) - xmlBufferShrink(out->buffer, ret); + xmlBufShrink(out->buffer, ret); } if (ret < 0) { xmlIOErr(XML_IO_FLUSH, NULL); @@ -3480,7 +3813,6 @@ char *ret = NULL; char dir[1024]; char *cur; - char sep = '/'; #ifdef _WIN32_WCE /* easy way by now ... wince does not have dirs! */ return NULL; @@ -3490,18 +3822,21 @@ xmlRegisterDefaultInputCallbacks(); if (filename == NULL) return(NULL); + #if defined(WIN32) && !defined(__CYGWIN__) - sep = '\\'; +# define IS_XMLPGD_SEP(ch) ((ch=='/')||(ch=='\\')) +#else +# define IS_XMLPGD_SEP(ch) (ch=='/') #endif strncpy(dir, filename, 1023); dir[1023] = 0; cur = &dir[strlen(dir)]; while (cur > dir) { - if (*cur == sep) break; + if (IS_XMLPGD_SEP(*cur)) break; cur --; } - if (*cur == sep) { + if (IS_XMLPGD_SEP(*cur)) { if (cur == dir) dir[1] = 0; else *cur = 0; ret = xmlMemStrdup(dir); @@ -3512,6 +3847,7 @@ } } return(ret); +#undef IS_XMLPGD_SEP } /**************************************************************** @@ -3612,9 +3948,9 @@ #else path = &URL[7]; #endif - } else + } else path = URL; - + return xmlCheckFilename(path); } @@ -3632,7 +3968,7 @@ * * Returns a new allocated URL, or NULL. */ -xmlChar * +static xmlChar * xmlResolveResourceFromCatalog(const char *URL, const char *ID, xmlParserCtxtPtr ctxt) { xmlChar *resource = NULL; @@ -3802,9 +4138,9 @@ } /************************************************************************ - * * - * Disabling Network access * - * * + * * + * Disabling Network access * + * * ************************************************************************/ /** diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlIO.in.h gettext-0.19.7/gnulib-local/lib/libxml/xmlIO.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xmlIO.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlIO.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -26,7 +26,7 @@ * xmlInputMatchCallback: * @filename: the filename or URI * - * Callback used in the I/O Input API to detect if the current handler + * Callback used in the I/O Input API to detect if the current handler * can provide input fonctionnalities for this resource. * * Returns 1 if yes and 0 if another Input module should be used @@ -72,7 +72,7 @@ * xmlOutputMatchCallback: * @filename: the filename or URI * - * Callback used in the I/O Output API to detect if the current handler + * Callback used in the I/O Output API to detect if the current handler * can provide output fonctionnalities for this resource. * * Returns 1 if yes and 0 if another Output module should be used @@ -126,11 +126,11 @@ void* context; xmlInputReadCallback readcallback; xmlInputCloseCallback closecallback; - + xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ - - xmlBufferPtr buffer; /* Local buffer encoded in UTF-8 */ - xmlBufferPtr raw; /* if encoder != NULL buffer for raw input */ + + xmlBufPtr buffer; /* Local buffer encoded in UTF-8 */ + xmlBufPtr raw; /* if encoder != NULL buffer for raw input */ int compressed; /* -1=unknown, 0=not compressed, 1=compressed */ int error; unsigned long rawconsumed;/* amount consumed from raw */ @@ -142,11 +142,11 @@ void* context; xmlOutputWriteCallback writecallback; xmlOutputCloseCallback closecallback; - + xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ - - xmlBufferPtr buffer; /* Local buffer encoded in UTF-8 or ISOLatin */ - xmlBufferPtr conv; /* if encoder != NULL buffer for output */ + + xmlBufPtr buffer; /* Local buffer encoded in UTF-8 or ISOLatin */ + xmlBufPtr conv; /* if encoder != NULL buffer for output */ int written; /* total number of byte written */ int error; }; @@ -155,13 +155,13 @@ /* * Interfaces for input */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCleanupInputCallbacks (void); XMLPUBFUN int XMLCALL xmlPopInputCallbacks (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRegisterDefaultInputCallbacks (void); XMLPUBFUN xmlParserInputBufferPtr XMLCALL xmlAllocParserInputBuffer (xmlCharEncoding enc); @@ -186,22 +186,22 @@ xmlInputCloseCallback ioclose, void *ioctx, xmlCharEncoding enc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlParserInputBufferRead (xmlParserInputBufferPtr in, int len); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlParserInputBufferGrow (xmlParserInputBufferPtr in, int len); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlParserInputBufferPush (xmlParserInputBufferPtr in, int len, const char *buf); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlFreeParserInputBuffer (xmlParserInputBufferPtr in); -XMLPUBFUN char * XMLCALL +XMLPUBFUN char * XMLCALL xmlParserGetDirectory (const char *filename); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRegisterInputCallbacks (xmlInputMatchCallback matchFunc, xmlInputOpenCallback openFunc, xmlInputReadCallback readFunc, @@ -209,15 +209,15 @@ xmlParserInputBufferPtr __xmlParserInputBufferCreateFilename(const char *URI, - xmlCharEncoding enc); + xmlCharEncoding enc); #ifdef LIBXML_OUTPUT_ENABLED /* * Interfaces for output */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCleanupOutputCallbacks (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRegisterDefaultOutputCallbacks(void); XMLPUBFUN xmlOutputBufferPtr XMLCALL xmlAllocOutputBuffer (xmlCharEncodingHandlerPtr encoder); @@ -245,24 +245,30 @@ void *ioctx, xmlCharEncodingHandlerPtr encoder); -XMLPUBFUN int XMLCALL +/* Couple of APIs to get the output without digging into the buffers */ +XMLPUBFUN const xmlChar * XMLCALL + xmlOutputBufferGetContent (xmlOutputBufferPtr out); +XMLPUBFUN size_t XMLCALL + xmlOutputBufferGetSize (xmlOutputBufferPtr out); + +XMLPUBFUN int XMLCALL xmlOutputBufferWrite (xmlOutputBufferPtr out, int len, const char *buf); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlOutputBufferWriteString (xmlOutputBufferPtr out, const char *str); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlOutputBufferWriteEscape (xmlOutputBufferPtr out, const xmlChar *str, xmlCharEncodingOutputFunc escaping); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlOutputBufferFlush (xmlOutputBufferPtr out); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlOutputBufferClose (xmlOutputBufferPtr out); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRegisterOutputCallbacks (xmlOutputMatchCallback matchFunc, xmlOutputOpenCallback openFunc, xmlOutputWriteCallback writeFunc, @@ -275,10 +281,10 @@ #ifdef LIBXML_HTTP_ENABLED /* This function only exists if HTTP support built into the library */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRegisterHTTPPostCallbacks (void ); #endif /* LIBXML_HTTP_ENABLED */ - + #endif /* LIBXML_OUTPUT_ENABLED */ XMLPUBFUN xmlParserInputPtr XMLCALL @@ -288,69 +294,69 @@ /* * A predefined entity loader disabling network accesses */ -XMLPUBFUN xmlParserInputPtr XMLCALL +XMLPUBFUN xmlParserInputPtr XMLCALL xmlNoNetExternalEntityLoader (const char *URL, const char *ID, xmlParserCtxtPtr ctxt); -/* - * xmlNormalizeWindowsPath is obsolete, don't use it. +/* + * xmlNormalizeWindowsPath is obsolete, don't use it. * Check xmlCanonicPath in uri.h for a better alternative. */ -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlNormalizeWindowsPath (const xmlChar *path); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlCheckFilename (const char *path); /** - * Default 'file://' protocol callbacks + * Default 'file://' protocol callbacks */ -XMLPUBFUN int XMLCALL - xmlFileMatch (const char *filename); -XMLPUBFUN void * XMLCALL - xmlFileOpen (const char *filename); -XMLPUBFUN int XMLCALL - xmlFileRead (void * context, - char * buffer, +XMLPUBFUN int XMLCALL + xmlFileMatch (const char *filename); +XMLPUBFUN void * XMLCALL + xmlFileOpen (const char *filename); +XMLPUBFUN int XMLCALL + xmlFileRead (void * context, + char * buffer, int len); -XMLPUBFUN int XMLCALL - xmlFileClose (void * context); +XMLPUBFUN int XMLCALL + xmlFileClose (void * context); /** - * Default 'http://' protocol callbacks + * Default 'http://' protocol callbacks */ #ifdef LIBXML_HTTP_ENABLED -XMLPUBFUN int XMLCALL - xmlIOHTTPMatch (const char *filename); -XMLPUBFUN void * XMLCALL - xmlIOHTTPOpen (const char *filename); +XMLPUBFUN int XMLCALL + xmlIOHTTPMatch (const char *filename); +XMLPUBFUN void * XMLCALL + xmlIOHTTPOpen (const char *filename); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL xmlIOHTTPOpenW (const char * post_uri, int compression ); #endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN int XMLCALL - xmlIOHTTPRead (void * context, - char * buffer, +XMLPUBFUN int XMLCALL + xmlIOHTTPRead (void * context, + char * buffer, int len); -XMLPUBFUN int XMLCALL - xmlIOHTTPClose (void * context); +XMLPUBFUN int XMLCALL + xmlIOHTTPClose (void * context); #endif /* LIBXML_HTTP_ENABLED */ /** - * Default 'ftp://' protocol callbacks + * Default 'ftp://' protocol callbacks */ -#ifdef LIBXML_FTP_ENABLED -XMLPUBFUN int XMLCALL - xmlIOFTPMatch (const char *filename); -XMLPUBFUN void * XMLCALL - xmlIOFTPOpen (const char *filename); -XMLPUBFUN int XMLCALL - xmlIOFTPRead (void * context, - char * buffer, +#ifdef LIBXML_FTP_ENABLED +XMLPUBFUN int XMLCALL + xmlIOFTPMatch (const char *filename); +XMLPUBFUN void * XMLCALL + xmlIOFTPOpen (const char *filename); +XMLPUBFUN int XMLCALL + xmlIOFTPRead (void * context, + char * buffer, int len); -XMLPUBFUN int XMLCALL - xmlIOFTPClose (void * context); +XMLPUBFUN int XMLCALL + xmlIOFTPClose (void * context); #endif /* LIBXML_FTP_ENABLED */ #ifdef __cplusplus diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlmemory.c gettext-0.19.7/gnulib-local/lib/libxml/xmlmemory.c --- gettext-0.19.6/gnulib-local/lib/libxml/xmlmemory.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlmemory.c 2015-12-23 07:08:27.000000000 +0000 @@ -34,7 +34,7 @@ /** * MEM_LIST: * - * keep track of all allocated blocks for error reporting + * keep track of all allocated blocks for error reporting * Always build the memory list ! */ #ifdef DEBUG_MEMORY_LOCATION @@ -58,7 +58,7 @@ /************************************************************************ * * - * Macros, variables and associated types * + * Macros, variables and associated types * * * ************************************************************************/ @@ -162,7 +162,7 @@ { MEMHDR *p; void *ret; - + if (!xmlMemInitialized) xmlInitMemory(); #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, @@ -170,7 +170,7 @@ #endif TEST_POINT - + p = (MEMHDR *) malloc(RESERVE_SIZE+size); if (!p) { @@ -178,7 +178,7 @@ "xmlMallocLoc : Out of free space\n"); xmlMemoryDump(); return(NULL); - } + } p->mh_tag = MEMTAG; p->mh_size = size; p->mh_type = MALLOC_TYPE; @@ -193,19 +193,20 @@ debugmem_list_add(p); #endif xmlMutexUnlock(xmlMemMutex); - + #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "Malloc(%d) Ok\n",size); #endif - + if (xmlMemStopAtBlock == p->mh_number) xmlMallocBreakpoint(); ret = HDR_2_CLIENT(p); if (xmlMemTraceBlockAt == ret) { xmlGenericError(xmlGenericErrorContext, - "%p : Malloc(%d) Ok\n", xmlMemTraceBlockAt, size); + "%p : Malloc(%lu) Ok\n", xmlMemTraceBlockAt, + (long unsigned)size); xmlMallocBreakpoint(); } @@ -230,7 +231,7 @@ { MEMHDR *p; void *ret; - + if (!xmlMemInitialized) xmlInitMemory(); #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, @@ -238,7 +239,7 @@ #endif TEST_POINT - + p = (MEMHDR *) malloc(RESERVE_SIZE+size); if (!p) { @@ -246,7 +247,7 @@ "xmlMallocLoc : Out of free space\n"); xmlMemoryDump(); return(NULL); - } + } p->mh_tag = MEMTAG; p->mh_size = size; p->mh_type = MALLOC_ATOMIC_TYPE; @@ -266,14 +267,15 @@ xmlGenericError(xmlGenericErrorContext, "Malloc(%d) Ok\n",size); #endif - + if (xmlMemStopAtBlock == p->mh_number) xmlMallocBreakpoint(); ret = HDR_2_CLIENT(p); if (xmlMemTraceBlockAt == ret) { xmlGenericError(xmlGenericErrorContext, - "%p : Malloc(%d) Ok\n", xmlMemTraceBlockAt, size); + "%p : Malloc(%lu) Ok\n", xmlMemTraceBlockAt, + (long unsigned)size); xmlMallocBreakpoint(); } @@ -311,7 +313,7 @@ void * xmlReallocLoc(void *ptr,size_t size, const char * file, int line) { - MEMHDR *p; + MEMHDR *p, *tmp; unsigned long number; #ifdef DEBUG_MEMORY size_t oldsize; @@ -341,15 +343,18 @@ debugmem_list_delete(p); #endif xmlMutexUnlock(xmlMemMutex); - - p = (MEMHDR *) realloc(p,RESERVE_SIZE+size); - if (!p) { + + tmp = (MEMHDR *) realloc(p,RESERVE_SIZE+size); + if (!tmp) { + free(p); goto error; } + p = tmp; if (xmlMemTraceBlockAt == ptr) { xmlGenericError(xmlGenericErrorContext, - "%p : Realloced(%d -> %d) Ok\n", - xmlMemTraceBlockAt, p->mh_size, size); + "%p : Realloced(%lu -> %lu) Ok\n", + xmlMemTraceBlockAt, (long unsigned)p->mh_size, + (long unsigned)size); xmlMallocBreakpoint(); } p->mh_tag = MEMTAG; @@ -374,8 +379,8 @@ "Realloced(%d to %d) Ok\n", oldsize, size); #endif return(HDR_2_CLIENT(p)); - -error: + +error: return(NULL); } @@ -409,6 +414,9 @@ size_t size; #endif + if (ptr == NULL) + return; + if (ptr == (void *) -1) { xmlGenericError(xmlGenericErrorContext, "trying to free pointer from freed area\n"); @@ -452,10 +460,10 @@ xmlGenericError(xmlGenericErrorContext, "Freed(%d) Ok\n", size); #endif - + return; - -error: + +error: xmlGenericError(xmlGenericErrorContext, "xmlMemFree(%lX) error\n", (unsigned long) ptr); xmlMallocBreakpoint(); @@ -501,16 +509,13 @@ debugmem_list_add(p); #endif xmlMutexUnlock(xmlMemMutex); - + s = (char *) HDR_2_CLIENT(p); - + if (xmlMemStopAtBlock == p->mh_number) xmlMallocBreakpoint(); - if (s != NULL) - strcpy(s,str); - else - goto error; - + strcpy(s,str); + TEST_POINT if (xmlMemTraceBlockAt == s) { @@ -549,7 +554,12 @@ int xmlMemUsed(void) { - return(debugMemSize); + int res; + + xmlMutexLock(xmlMemMutex); + res = debugMemSize; + xmlMutexUnlock(xmlMemMutex); + return(res); } /** @@ -562,7 +572,12 @@ int xmlMemBlocks(void) { - return(debugMemBlocks); + int res; + + xmlMutexLock(xmlMemMutex); + res = debugMemBlocks; + xmlMutexUnlock(xmlMemMutex); + return(res); } #ifdef MEM_LIST @@ -577,13 +592,15 @@ static void xmlMemContentShow(FILE *fp, MEMHDR *p) { - int i,j,k,len = p->mh_size; - const char *buf = (const char *) HDR_2_CLIENT(p); + int i,j,k,len; + const char *buf; if (p == NULL) { fprintf(fp, " NULL"); return; } + len = p->mh_size; + buf = (const char *) HDR_2_CLIENT(p); for (i = 0;i < len;i++) { if (buf[i] == 0) break; @@ -614,7 +631,7 @@ } else if ((i == 0) && (buf[i] == 0)) { fprintf(fp," null"); } else { - if (buf[i] == 0) fprintf(fp," \"%.25s\"", buf); + if (buf[i] == 0) fprintf(fp," \"%.25s\"", buf); else { fprintf(fp," ["); for (j = 0;j < i;j++) @@ -626,6 +643,79 @@ #endif /** + * xmlMemDisplayLast: + * @fp: a FILE descriptor used as the output file, if NULL, the result is + * written to the file .memorylist + * @nbBytes: the amount of memory to dump + * + * the last nbBytes of memory allocated and not freed, useful for dumping + * the memory left allocated between two places at runtime. + */ + +void +xmlMemDisplayLast(FILE *fp, long nbBytes) +{ +#ifdef MEM_LIST + MEMHDR *p; + unsigned idx; + int nb = 0; +#endif + FILE *old_fp = fp; + + if (nbBytes <= 0) + return; + + if (fp == NULL) { + fp = fopen(".memorylist", "w"); + if (fp == NULL) + return; + } + +#ifdef MEM_LIST + fprintf(fp," Last %li MEMORY ALLOCATED : %lu, MAX was %lu\n", + nbBytes, debugMemSize, debugMaxMemSize); + fprintf(fp,"BLOCK NUMBER SIZE TYPE\n"); + idx = 0; + xmlMutexLock(xmlMemMutex); + p = memlist; + while ((p) && (nbBytes > 0)) { + fprintf(fp,"%-5u %6lu %6lu ",idx++,p->mh_number, + (unsigned long)p->mh_size); + switch (p->mh_type) { + case STRDUP_TYPE:fprintf(fp,"strdup() in ");break; + case MALLOC_TYPE:fprintf(fp,"malloc() in ");break; + case REALLOC_TYPE:fprintf(fp,"realloc() in ");break; + case MALLOC_ATOMIC_TYPE:fprintf(fp,"atomicmalloc() in ");break; + case REALLOC_ATOMIC_TYPE:fprintf(fp,"atomicrealloc() in ");break; + default: + fprintf(fp,"Unknown memory block, may be corrupted"); + xmlMutexUnlock(xmlMemMutex); + if (old_fp == NULL) + fclose(fp); + return; + } + if (p->mh_file != NULL) fprintf(fp,"%s(%u)", p->mh_file, p->mh_line); + if (p->mh_tag != MEMTAG) + fprintf(fp," INVALID"); + nb++; + if (nb < 100) + xmlMemContentShow(fp, p); + else + fprintf(fp," skip"); + + fprintf(fp,"\n"); + nbBytes -= (unsigned long)p->mh_size; + p = p->mh_next; + } + xmlMutexUnlock(xmlMemMutex); +#else + fprintf(fp,"Memory list not compiled (MEM_LIST not defined !)\n"); +#endif + if (old_fp == NULL) + fclose(fp); +} + +/** * xmlMemDisplay: * @fp: a FILE descriptor used as the output file, if NULL, the result is * written to the file .memorylist @@ -662,7 +752,7 @@ fprintf(fp," %s\n\n", buf); #endif - + fprintf(fp," MEMORY ALLOCATED : %lu, MAX was %lu\n", debugMemSize, debugMaxMemSize); fprintf(fp,"BLOCK NUMBER SIZE TYPE\n"); @@ -739,7 +829,7 @@ * * internal error function. */ - + static void debugmem_tag_error(void *p) { xmlGenericError(xmlGenericErrorContext, @@ -799,7 +889,7 @@ } } xmlMutexUnlock(xmlMemMutex); -#endif /* MEM_LIST */ +#endif /* MEM_LIST */ } /** @@ -846,11 +936,11 @@ { #ifdef HAVE_STDLIB_H char *breakpoint; -#endif +#endif #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "xmlInitMemory()\n"); -#endif +#endif /* This is really not good code (see Bug 130419). Suggestions for improvement will be welcome! @@ -864,18 +954,18 @@ if (breakpoint != NULL) { sscanf(breakpoint, "%ud", &xmlMemStopAtBlock); } -#endif +#endif #ifdef HAVE_STDLIB_H breakpoint = getenv("XML_MEM_TRACE"); if (breakpoint != NULL) { sscanf(breakpoint, "%p", &xmlMemTraceBlockAt); } -#endif - +#endif + #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "xmlInitMemory() Ok\n"); -#endif +#endif return(0); } @@ -890,7 +980,7 @@ #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "xmlCleanupMemory()\n"); -#endif +#endif if (xmlMemInitialized == 0) return; @@ -900,7 +990,7 @@ #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "xmlCleanupMemory() Ok\n"); -#endif +#endif } /** @@ -924,7 +1014,7 @@ #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "xmlMemSetup()\n"); -#endif +#endif if (freeFunc == NULL) return(-1); if (mallocFunc == NULL) @@ -941,7 +1031,7 @@ #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "xmlMemSetup() Ok\n"); -#endif +#endif return(0); } @@ -991,7 +1081,7 @@ #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "xmlGcMemSetup()\n"); -#endif +#endif if (freeFunc == NULL) return(-1); if (mallocFunc == NULL) @@ -1010,7 +1100,7 @@ #ifdef DEBUG_MEMORY xmlGenericError(xmlGenericErrorContext, "xmlGcMemSetup() Ok\n"); -#endif +#endif return(0); } diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlmemory.in.h gettext-0.19.7/gnulib-local/lib/libxml/xmlmemory.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xmlmemory.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlmemory.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -20,7 +20,7 @@ * * DEBUG_MEMORY replaces the allocator with a collect and debug * shell to the libc allocator. - * DEBUG_MEMORY should only be activated when debugging + * DEBUG_MEMORY should only be activated when debugging * libxml i.e. if libxml has been configured with --with-debug-mem too. */ /* #define DEBUG_MEMORY_FREED */ @@ -35,7 +35,7 @@ /** * DEBUG_MEMORY_LOCATION: * - * DEBUG_MEMORY_LOCATION should be activated only when debugging + * DEBUG_MEMORY_LOCATION should be activated only when debugging * libxml i.e. if libxml has been configured with --with-debug-mem too. */ #ifdef DEBUG_MEMORY_LOCATION @@ -63,7 +63,7 @@ * * Returns a pointer to the newly allocated block or NULL in case of error. */ -typedef void *(XMLCALL *xmlMallocFunc)(size_t size); +typedef void *(LIBXML_ATTR_ALLOC_SIZE(1) XMLCALL *xmlMallocFunc)(size_t size); /** * xmlReallocFunc: @@ -88,11 +88,11 @@ /* * The 4 interfaces used for all memory handling within libxml. -LIBXML_DLL_IMPORT extern xmlFreeFunc xmlFree; -LIBXML_DLL_IMPORT extern xmlMallocFunc xmlMalloc; -LIBXML_DLL_IMPORT extern xmlMallocFunc xmlMallocAtomic; -LIBXML_DLL_IMPORT extern xmlReallocFunc xmlRealloc; -LIBXML_DLL_IMPORT extern xmlStrdupFunc xmlMemStrdup; +LIBXML_DLL_IMPORT xmlFreeFunc xmlFree; +LIBXML_DLL_IMPORT xmlMallocFunc xmlMalloc; +LIBXML_DLL_IMPORT xmlMallocFunc xmlMallocAtomic; +LIBXML_DLL_IMPORT xmlReallocFunc xmlRealloc; +LIBXML_DLL_IMPORT xmlStrdupFunc xmlMemStrdup; */ /* @@ -105,18 +105,18 @@ xmlMallocFunc mallocFunc, xmlReallocFunc reallocFunc, xmlStrdupFunc strdupFunc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlMemGet (xmlFreeFunc *freeFunc, xmlMallocFunc *mallocFunc, xmlReallocFunc *reallocFunc, xmlStrdupFunc *strdupFunc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlGcMemSetup (xmlFreeFunc freeFunc, xmlMallocFunc mallocFunc, xmlMallocFunc mallocAtomicFunc, xmlReallocFunc reallocFunc, xmlStrdupFunc strdupFunc); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlGcMemGet (xmlFreeFunc *freeFunc, xmlMallocFunc *mallocFunc, xmlMallocFunc *mallocAtomicFunc, @@ -126,42 +126,44 @@ /* * Initialization of the memory layer. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlInitMemory (void); -/* +/* * Cleanup of the memory layer. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlCleanupMemory (void); /* * These are specific to the XML debug memory wrapper. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlMemUsed (void); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlMemBlocks (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlMemDisplay (FILE *fp); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL + xmlMemDisplayLast(FILE *fp, long nbBytes); +XMLPUBFUN void XMLCALL xmlMemShow (FILE *fp, int nr); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlMemoryDump (void); -XMLPUBFUN void * XMLCALL - xmlMemMalloc (size_t size); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL + xmlMemMalloc (size_t size) LIBXML_ATTR_ALLOC_SIZE(1); +XMLPUBFUN void * XMLCALL xmlMemRealloc (void *ptr,size_t size); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlMemFree (void *ptr); -XMLPUBFUN char * XMLCALL +XMLPUBFUN char * XMLCALL xmlMemoryStrdup (const char *str); -XMLPUBFUN void * XMLCALL - xmlMallocLoc (size_t size, const char *file, int line); -XMLPUBFUN void * XMLCALL +XMLPUBFUN void * XMLCALL + xmlMallocLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1); +XMLPUBFUN void * XMLCALL xmlReallocLoc (void *ptr, size_t size, const char *file, int line); -XMLPUBFUN void * XMLCALL - xmlMallocAtomicLoc (size_t size, const char *file, int line); -XMLPUBFUN char * XMLCALL +XMLPUBFUN void * XMLCALL + xmlMallocAtomicLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1); +XMLPUBFUN char * XMLCALL xmlMemStrdupLoc (const char *str, const char *file, int line); diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlmodule.c gettext-0.19.7/gnulib-local/lib/libxml/xmlmodule.c --- gettext-0.19.6/gnulib-local/lib/libxml/xmlmodule.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlmodule.c 2015-12-23 07:08:27.000000000 +0000 @@ -30,7 +30,7 @@ /************************************************************************ * * - * module memory error handler * + * module memory error handler * * * ************************************************************************/ @@ -61,6 +61,10 @@ * @options: a set of xmlModuleOption * * Opens a module/shared library given its name or path + * NOTE: that due to portability issues, behaviour can only be + * guaranteed with @name using ASCII. We canot guarantee that + * an UTF-8 string would work, which is why name is a const char * + * and not a const xmlChar * . * TODO: options are not yet implemented. * * Returns a handle for the module or NULL in case of error @@ -99,6 +103,10 @@ * @symbol: the resulting symbol address * * Lookup for a symbol address in the given module + * NOTE: that due to portability issues, behaviour can only be + * guaranteed with @name using ASCII. We canot guarantee that + * an UTF-8 string would work, which is why name is a const char * + * and not a const xmlChar * . * * Returns 0 if the symbol was found, or -1 in case of error */ @@ -106,8 +114,8 @@ xmlModuleSymbol(xmlModulePtr module, const char *name, void **symbol) { int rc = -1; - - if ((NULL == module) || (symbol == NULL)) { + + if ((NULL == module) || (symbol == NULL) || (name == NULL)) { __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_MODULE, XML_MODULE_OPEN, XML_ERR_FATAL, NULL, 0, 0, NULL, NULL, 0, 0, "null parameter\n"); @@ -190,7 +198,7 @@ return (0); } -#ifdef HAVE_DLOPEN +#if defined(HAVE_DLOPEN) && !defined(_WIN32) #ifdef HAVE_DLFCN_H #include #endif @@ -300,7 +308,7 @@ static void * xmlModulePlatformOpen(const char *name) { - return LoadLibrary(name); + return LoadLibraryA(name); } /* @@ -326,7 +334,14 @@ static int xmlModulePlatformSymbol(void *handle, const char *name, void **symbol) { +#ifdef _WIN32_WCE + /* + * GetProcAddressA seems only available on WinCE + */ + *symbol = GetProcAddressA(handle, name); +#else *symbol = GetProcAddress(handle, name); +#endif return (NULL == *symbol) ? -1 : 0; } diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlmodule.in.h gettext-0.19.7/gnulib-local/lib/libxml/xmlmodule.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xmlmodule.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlmodule.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -50,7 +50,7 @@ #ifdef __cplusplus } -#endif +#endif #endif /* LIBXML_MODULES_ENABLED */ diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlreader.c gettext-0.19.7/gnulib-local/lib/libxml/xmlreader.c --- gettext-0.19.6/gnulib-local/lib/libxml/xmlreader.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlreader.c 2015-12-23 07:08:27.000000000 +0000 @@ -1,7 +1,7 @@ /* * xmlreader.c: implements the xmlTextReader streaming node API * - * NOTE: + * NOTE: * XmlTextReader.Normalization Property won't be supported, since * it makes the parser non compliant to the XML recommendation * @@ -44,6 +44,33 @@ #include #endif +#include "buf.h" + +#define MAX_ERR_MSG_SIZE 64000 + +/* + * The following VA_COPY was coded following an example in + * the Samba project. It may not be sufficient for some + * esoteric implementations of va_list but (hopefully) will + * be sufficient for libxml2. + */ +#ifndef VA_COPY + #ifdef HAVE_VA_COPY + #define VA_COPY(dest, src) va_copy(dest, src) + #else + #ifdef HAVE___VA_COPY + #define VA_COPY(dest,src) __va_copy(dest, src) + #else + #ifndef VA_LIST_IS_ARRAY + #define VA_COPY(dest,src) (dest) = (src) + #else + #include + #define VA_COPY(dest,src) memcpy((char *)(dest),(char *)(src),sizeof(va_list)) + #endif + #endif + #endif +#endif + /* #define DEBUG_CALLBACKS */ /* #define DEBUG_READER */ @@ -52,7 +79,7 @@ * * macro to flag unimplemented blocks */ -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); @@ -107,14 +134,14 @@ endElementNsSAX2Func endElementNs; /* idem */ charactersSAXFunc characters; cdataBlockSAXFunc cdataBlock; - unsigned int base; /* base of the segment in the input */ - unsigned int cur; /* current position in the input */ + unsigned int base; /* base of the segment in the input */ + unsigned int cur; /* current position in the input */ xmlNodePtr node; /* current node */ xmlNodePtr curnode;/* current attribute node */ int depth; /* depth of the current node */ xmlNodePtr faketext;/* fake xmlNs chld */ int preserve;/* preserve the resulting document */ - xmlBufferPtr buffer; /* used to return const xmlChar * */ + xmlBufPtr buffer; /* used to return const xmlChar * */ xmlDictPtr dict; /* the context dictionnary */ /* entity stack when traversing entities content */ @@ -131,6 +158,7 @@ /* Handling of RelaxNG validation */ xmlRelaxNGPtr rngSchemas; /* The Relax NG schemas */ xmlRelaxNGValidCtxtPtr rngValidCtxt;/* The Relax NG validation context */ + int rngPreserveCtxt; /* 1 if the context was provided by the user */ int rngValidErrors;/* The number of errors detected */ xmlNodePtr rngFullNode; /* the node if RNG not progressive */ /* Handling of Schemas validation */ @@ -186,7 +214,7 @@ * current scope */ #define DICT_FREE(str) \ - if ((str) && ((!dict) || \ + if ((str) && ((!dict) || \ (xmlDictOwns(dict, (const xmlChar *)(str)) == 0))) \ xmlFree((char *)(str)); @@ -231,11 +259,9 @@ if (doc == NULL) return(-1); if (attr == NULL) return(-1); table = (xmlIDTablePtr) doc->ids; - if (table == NULL) + if (table == NULL) return(-1); - if (attr == NULL) - return(-1); ID = xmlNodeListGetString(doc, attr->children, 1); if (ID == NULL) return(-1); @@ -260,7 +286,10 @@ xmlTextReaderFreeProp(xmlTextReaderPtr reader, xmlAttrPtr cur) { xmlDictPtr dict; - dict = reader->ctxt->dict; + if ((reader != NULL) && (reader->ctxt != NULL)) + dict = reader->ctxt->dict; + else + dict = NULL; if (cur == NULL) return; if ((__xmlRegisterCallbacks) && (xmlDeregisterNodeDefaultValue)) @@ -297,7 +326,7 @@ static void xmlTextReaderFreePropList(xmlTextReaderPtr reader, xmlAttrPtr cur) { xmlAttrPtr next; - if (cur == NULL) return; + while (cur != NULL) { next = cur->next; xmlTextReaderFreeProp(reader, cur); @@ -318,7 +347,10 @@ xmlNodePtr next; xmlDictPtr dict; - dict = reader->ctxt->dict; + if ((reader != NULL) && (reader->ctxt != NULL)) + dict = reader->ctxt->dict; + else + dict = NULL; if (cur == NULL) return; if (cur->type == XML_NAMESPACE_DECL) { xmlFreeNsList((xmlNsPtr) cur); @@ -395,7 +427,10 @@ xmlTextReaderFreeNode(xmlTextReaderPtr reader, xmlNodePtr cur) { xmlDictPtr dict; - dict = reader->ctxt->dict; + if ((reader != NULL) && (reader->ctxt != NULL)) + dict = reader->ctxt->dict; + else + dict = NULL; if (cur->type == XML_DTD_NODE) { xmlFreeDtd((xmlDtdPtr) cur); return; @@ -787,9 +822,10 @@ */ static int xmlTextReaderPushData(xmlTextReaderPtr reader) { - xmlBufferPtr inbuf; + xmlBufPtr inbuf; int val, s; xmlTextReaderState oldstate; + int alloc; if ((reader->input == NULL) || (reader->input->buffer == NULL)) return(-1); @@ -797,17 +833,18 @@ oldstate = reader->state; reader->state = XML_TEXTREADER_NONE; inbuf = reader->input->buffer; + alloc = xmlBufGetAllocationScheme(inbuf); while (reader->state == XML_TEXTREADER_NONE) { - if (inbuf->use < reader->cur + CHUNK_SIZE) { + if (xmlBufUse(inbuf) < reader->cur + CHUNK_SIZE) { /* * Refill the buffer unless we are at the end of the stream */ if (reader->mode != XML_TEXTREADER_MODE_EOF) { val = xmlParserInputBufferRead(reader->input, 4096); if ((val == 0) && - (inbuf->alloc == XML_BUFFER_ALLOC_IMMUTABLE)) { - if (inbuf->use == reader->cur) { + (alloc == XML_BUFFER_ALLOC_IMMUTABLE)) { + if (xmlBufUse(inbuf) == reader->cur) { reader->mode = XML_TEXTREADER_MODE_EOF; reader->state = oldstate; } @@ -823,28 +860,30 @@ break; } - } else + } else break; } /* * parse by block of CHUNK_SIZE bytes, various tests show that * it's the best tradeoff at least on a 1.2GH Duron */ - if (inbuf->use >= reader->cur + CHUNK_SIZE) { + if (xmlBufUse(inbuf) >= reader->cur + CHUNK_SIZE) { val = xmlParseChunk(reader->ctxt, - (const char *) &inbuf->content[reader->cur], - CHUNK_SIZE, 0); + (const char *) xmlBufContent(inbuf) + reader->cur, + CHUNK_SIZE, 0); reader->cur += CHUNK_SIZE; - if ((val != 0) || (reader->ctxt->wellFormed == 0)) - return(-1); + if (val != 0) + reader->ctxt->wellFormed = 0; + if (reader->ctxt->wellFormed == 0) + break; } else { - s = inbuf->use - reader->cur; + s = xmlBufUse(inbuf) - reader->cur; val = xmlParseChunk(reader->ctxt, - (const char *) &inbuf->content[reader->cur], - s, 0); + (const char *) xmlBufContent(inbuf) + reader->cur, + s, 0); reader->cur += s; - if ((val != 0) || (reader->ctxt->wellFormed == 0)) - return(-1); + if (val != 0) + reader->ctxt->wellFormed = 0; break; } } @@ -853,10 +892,10 @@ * Discard the consumed input when needed and possible */ if (reader->mode == XML_TEXTREADER_MODE_INTERACTIVE) { - if (inbuf->alloc != XML_BUFFER_ALLOC_IMMUTABLE) { + if (alloc != XML_BUFFER_ALLOC_IMMUTABLE) { if ((reader->cur >= 4096) && - (inbuf->use - reader->cur <= CHUNK_SIZE)) { - val = xmlBufferShrink(inbuf, reader->cur); + (xmlBufUse(inbuf) - reader->cur <= CHUNK_SIZE)) { + val = xmlBufShrink(inbuf, reader->cur); if (val >= 0) { reader->cur -= val; } @@ -869,18 +908,27 @@ * parser. */ else if (reader->mode == XML_TEXTREADER_MODE_EOF) { - if (reader->mode != XML_TEXTREADER_DONE) { - s = inbuf->use - reader->cur; + if (reader->state != XML_TEXTREADER_DONE) { + s = xmlBufUse(inbuf) - reader->cur; val = xmlParseChunk(reader->ctxt, - (const char *) &inbuf->content[reader->cur], - s, 1); - reader->cur = inbuf->use; - reader->mode = XML_TEXTREADER_DONE; - if ((val != 0) || (reader->ctxt->wellFormed == 0)) - return(-1); + (const char *) xmlBufContent(inbuf) + reader->cur, + s, 1); + reader->cur = xmlBufUse(inbuf); + reader->state = XML_TEXTREADER_DONE; + if (val != 0) { + if (reader->ctxt->wellFormed) + reader->ctxt->wellFormed = 0; + else + return(-1); + } } } reader->state = oldstate; + if (reader->ctxt->wellFormed == 0) { + reader->mode = XML_TEXTREADER_MODE_EOF; + return(-1); + } + return(0); } @@ -949,7 +997,7 @@ * xmlTextReaderValidateCData: * @reader: the xmlTextReaderPtr used * @data: pointer to the CData - * @len: lenght of the CData block in bytes. + * @len: length of the CData block in bytes. * * Push some CData for validation */ @@ -1012,7 +1060,7 @@ int ret; if (reader->rngFullNode != NULL) { - if (node == reader->rngFullNode) + if (node == reader->rngFullNode) reader->rngFullNode = NULL; return; } @@ -1047,7 +1095,7 @@ */ if ((node->children == NULL) && (ctxt->sax != NULL) && (ctxt->sax->getEntity != NULL)) { - node->children = (xmlNodePtr) + node->children = (xmlNodePtr) ctxt->sax->getEntity(ctxt, node->name); } @@ -1169,8 +1217,10 @@ if (reader->mode == XML_TEXTREADER_MODE_EOF) return(1); val = xmlTextReaderPushData(reader); - if (val < 0) + if (val < 0){ + reader->mode = XML_TEXTREADER_MODE_ERROR; return(-1); + } } while(reader->mode != XML_TEXTREADER_MODE_EOF); return(1); } @@ -1191,6 +1241,9 @@ xmlBufferPtr buffer; xmlChar *ret; + if ((node == NULL) || (node->type == XML_NAMESPACE_DECL)) + return(NULL); + buffer = xmlBufferCreate(); if (buffer == NULL) return NULL; @@ -1235,7 +1288,7 @@ xmlTextReaderState oldstate = XML_TEXTREADER_START; xmlNodePtr oldnode = NULL; - + if (reader == NULL) return(-1); reader->curnode = NULL; @@ -1243,8 +1296,6 @@ return(xmlTextReaderReadTree(reader)); if (reader->ctxt == NULL) return(-1); - if (reader->ctxt->wellFormed != 1) - return(-1); #ifdef DEBUG_READER fprintf(stderr, "\nREAD "); @@ -1257,17 +1308,23 @@ */ do { val = xmlTextReaderPushData(reader); - if (val < 0) + if (val < 0){ + reader->mode = XML_TEXTREADER_MODE_ERROR; + reader->state = XML_TEXTREADER_ERROR; return(-1); + } } while ((reader->ctxt->node == NULL) && ((reader->mode != XML_TEXTREADER_MODE_EOF) && - (reader->mode != XML_TEXTREADER_DONE))); + (reader->state != XML_TEXTREADER_DONE))); if (reader->ctxt->node == NULL) { if (reader->ctxt->myDoc != NULL) { reader->node = reader->ctxt->myDoc->children; } - if (reader->node == NULL) + if (reader->node == NULL){ + reader->mode = XML_TEXTREADER_MODE_ERROR; + reader->state = XML_TEXTREADER_ERROR; return(-1); + } reader->state = XML_TEXTREADER_ELEMENT; } else { if (reader->ctxt->myDoc != NULL) { @@ -1287,7 +1344,7 @@ get_next_node: if (reader->node == NULL) { - if (reader->mode == XML_TEXTREADER_DONE) + if (reader->mode == XML_TEXTREADER_MODE_EOF) return(0); else return(-1); @@ -1314,8 +1371,11 @@ (reader->ctxt->node == reader->node->parent)) && (reader->ctxt->instate != XML_PARSER_EOF)) { val = xmlTextReaderPushData(reader); - if (val < 0) + if (val < 0){ + reader->mode = XML_TEXTREADER_MODE_ERROR; + reader->state = XML_TEXTREADER_ERROR; return(-1); + } if (reader->node == NULL) goto node_end; } @@ -1362,8 +1422,7 @@ #endif (reader->entNr == 0) && (reader->node->prev != NULL) && - (reader->node->prev->type != XML_DTD_NODE) && - (reader->entNr == 0)) { + (reader->node->prev->type != XML_DTD_NODE)) { xmlNodePtr tmp = reader->node->prev; if ((tmp->extra & NODE_IS_PRESERVED) == 0) { xmlUnlinkNode(tmp); @@ -1381,7 +1440,7 @@ goto node_found; } #ifdef LIBXML_REGEXP_ENABLED - if ((reader->validate) && (reader->node->type == XML_ELEMENT_NODE)) + if ((reader->validate != XML_TEXTREADER_NOT_VALIDATE) && (reader->node->type == XML_ELEMENT_NODE)) xmlTextReaderValidatePop(reader); #endif /* LIBXML_REGEXP_ENABLED */ if ((reader->preserves > 0) && @@ -1394,9 +1453,9 @@ (reader->node->type == XML_DOCB_DOCUMENT_NODE) || #endif (reader->node->type == XML_HTML_DOCUMENT_NODE)) { - if (reader->mode != XML_TEXTREADER_DONE) { + if (reader->mode != XML_TEXTREADER_MODE_EOF) { val = xmlParseChunk(reader->ctxt, "", 0, 1); - reader->mode = XML_TEXTREADER_DONE; + reader->state = XML_TEXTREADER_DONE; if (val != 0) return(-1); } @@ -1406,14 +1465,13 @@ /* * Cleanup of the old node */ - if ((reader->preserves == 0) && + if ((oldnode != NULL) && (reader->preserves == 0) && #ifdef LIBXML_XINCLUDE_ENABLED (reader->in_xinclude == 0) && #endif (reader->entNr == 0) && (oldnode->type != XML_DTD_NODE) && - ((oldnode->extra & NODE_IS_PRESERVED) == 0) && - (reader->entNr == 0)) { + ((oldnode->extra & NODE_IS_PRESERVED) == 0)) { xmlUnlinkNode(oldnode); xmlTextReaderFreeNode(reader, oldnode); } @@ -1459,7 +1517,7 @@ (xmlStrEqual(reader->node->ns->href, XINCLUDE_OLD_NS)))) { if (reader->xincctxt == NULL) { reader->xincctxt = xmlXIncludeNewContext(reader->ctxt->myDoc); - xmlXIncludeSetFlags(reader->xincctxt, + xmlXIncludeSetFlags(reader->xincctxt, reader->parserFlags & (~XML_PARSE_NOXINCNODE)); } /* @@ -1472,7 +1530,7 @@ if ((reader->node != NULL) && (reader->node->type == XML_XINCLUDE_START)) { reader->in_xinclude++; goto get_next_node; - } + } if ((reader->node != NULL) && (reader->node->type == XML_XINCLUDE_END)) { reader->in_xinclude--; goto get_next_node; @@ -1490,7 +1548,7 @@ */ if ((reader->node->children == NULL) && (reader->ctxt->sax != NULL) && (reader->ctxt->sax->getEntity != NULL)) { - reader->node->children = (xmlNodePtr) + reader->node->children = (xmlNodePtr) reader->ctxt->sax->getEntity(reader->ctxt, reader->node->name); } @@ -1515,10 +1573,10 @@ goto get_next_node; } #ifdef LIBXML_REGEXP_ENABLED - if ((reader->validate) && (reader->node != NULL)) { + if ((reader->validate != XML_TEXTREADER_NOT_VALIDATE) && (reader->node != NULL)) { xmlNodePtr node = reader->node; - if ((node->type == XML_ELEMENT_NODE) && + if ((node->type == XML_ELEMENT_NODE) && ((reader->state != XML_TEXTREADER_END) && (reader->state != XML_TEXTREADER_BACKTRACK))) { xmlTextReaderValidatePush(reader); @@ -1543,14 +1601,14 @@ #endif /* LIBXML_PATTERN_ENABLED */ #ifdef LIBXML_SCHEMAS_ENABLED if ((reader->validate == XML_TEXTREADER_VALIDATE_XSD) && - (reader->xsdValidErrors == 0) && + (reader->xsdValidErrors == 0) && (reader->xsdValidCtxt != NULL)) { reader->xsdValidErrors = !xmlSchemaIsValid(reader->xsdValidCtxt); } #endif /* LIBXML_PATTERN_ENABLED */ return(1); node_end: - reader->mode = XML_TEXTREADER_DONE; + reader->state = XML_TEXTREADER_DONE; return(0); } @@ -1634,7 +1692,7 @@ * Reads the contents of the current node, including child nodes and markup. * * Returns a string containing the XML content, or NULL if the current node - * is neither an element nor attribute, or has no child nodes. The + * is neither an element nor attribute, or has no child nodes. The * string must be deallocated by the caller. */ xmlChar * @@ -1679,9 +1737,9 @@ * * Reads the contents of the current node, including child nodes and markup. * - * Returns a string containing the XML content, or NULL if the current node - * is neither an element nor attribute, or has no child nodes. The - * string must be deallocated by the caller. + * Returns a string containing the node and any XML content, or NULL if the + * current node cannot be serialized. The string must be deallocated + * by the caller. */ xmlChar * xmlTextReaderReadOuterXml(xmlTextReaderPtr reader ATTRIBUTE_UNUSED) @@ -1696,7 +1754,11 @@ if (xmlTextReaderExpand(reader) == NULL) { return NULL; } - node = xmlDocCopyNode(node, doc, 1); + if (node->type == XML_DTD_NODE) { + node = (xmlNodePtr) xmlCopyDtd((xmlDtdPtr) node); + } else { + node = xmlDocCopyNode(node, doc, 1); + } buff = xmlBufferCreate(); if (xmlNodeDump(buff, doc, node, 0, 0) == -1) { xmlFreeNode(node); @@ -1741,6 +1803,7 @@ if (xmlTextReaderDoExpand(reader) != -1) { return xmlTextReaderCollectSiblings(node->children); } + break; case XML_ATTRIBUTE_NODE: TODO break; @@ -1838,17 +1901,22 @@ } if (reader->state != XML_TEXTREADER_BACKTRACK) { - if (reader->node->children != 0) { - reader->node = reader->node->children; - reader->depth++; + /* Here removed traversal to child, because we want to skip the subtree, + replace with traversal to sibling to skip subtree */ + if (reader->node->next != 0) { + /* Move to sibling if present,skipping sub-tree */ + reader->node = reader->node->next; reader->state = XML_TEXTREADER_START; return(1); } + /* if reader->node->next is NULL mean no subtree for current node, + so need to move to sibling of parent node if present */ if ((reader->node->type == XML_ELEMENT_NODE) || (reader->node->type == XML_ATTRIBUTE_NODE)) { reader->state = XML_TEXTREADER_BACKTRACK; - return(1); + /* This will move to parent if present */ + xmlTextReaderRead(reader); } } @@ -1867,7 +1935,8 @@ reader->node = reader->node->parent; reader->depth--; reader->state = XML_TEXTREADER_BACKTRACK; - return(1); + /* Repeat process to move to sibling of parent node if present */ + xmlTextReaderNextTree(reader); } reader->state = XML_TEXTREADER_END; @@ -2015,16 +2084,19 @@ ret->entMax = 0; ret->entNr = 0; ret->input = input; - ret->buffer = xmlBufferCreateSize(100); + ret->buffer = xmlBufCreateSize(100); if (ret->buffer == NULL) { xmlFree(ret); xmlGenericError(xmlGenericErrorContext, "xmlNewTextReader : malloc failed\n"); return(NULL); } + /* no operation on a reader should require a huge buffer */ + xmlBufSetAllocationScheme(ret->buffer, + XML_BUFFER_ALLOC_BOUNDED); ret->sax = (xmlSAXHandler *) xmlMalloc(sizeof(xmlSAXHandler)); if (ret->sax == NULL) { - xmlBufferFree(ret->buffer); + xmlBufFree(ret->buffer); xmlFree(ret); xmlGenericError(xmlGenericErrorContext, "xmlNewTextReader : malloc failed\n"); @@ -2057,12 +2129,13 @@ ret->mode = XML_TEXTREADER_MODE_INITIAL; ret->node = NULL; ret->curnode = NULL; - if (ret->input->buffer->use < 4) { + if (xmlBufUse(ret->input->buffer) < 4) { xmlParserInputBufferRead(input, 4); } - if (ret->input->buffer->use >= 4) { + if (xmlBufUse(ret->input->buffer) >= 4) { ret->ctxt = xmlCreatePushParserCtxt(ret->sax, NULL, - (const char *) ret->input->buffer->content, 4, URI); + (const char *) xmlBufContent(ret->input->buffer), + 4, URI); ret->base = 0; ret->cur = 4; } else { @@ -2070,11 +2143,11 @@ ret->base = 0; ret->cur = 0; } - + if (ret->ctxt == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlNewTextReader : malloc failed\n"); - xmlBufferFree(ret->buffer); + xmlBufFree(ret->buffer); xmlFree(ret->sax); xmlFree(ret); return(NULL); @@ -2147,7 +2220,8 @@ reader->rngSchemas = NULL; } if (reader->rngValidCtxt != NULL) { - xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); + if (! reader->rngPreserveCtxt) + xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); reader->rngValidCtxt = NULL; } if (reader->xsdPlug != NULL) { @@ -2178,6 +2252,9 @@ xmlFree(reader->patternTab); } #endif + if (reader->faketext != NULL) { + xmlFreeNode(reader->faketext); + } if (reader->ctxt != NULL) { if (reader->dict == reader->ctxt->dict) reader->dict = NULL; @@ -2199,11 +2276,8 @@ xmlFree(reader->sax); if ((reader->input != NULL) && (reader->allocs & XML_TEXTREADER_INPUT)) xmlFreeParserInputBuffer(reader->input); - if (reader->faketext != NULL) { - xmlFreeNode(reader->faketext); - } if (reader->buffer != NULL) - xmlBufferFree(reader->buffer); + xmlBufFree(reader->buffer); if (reader->entTab != NULL) xmlFree(reader->entTab); if (reader->dict != NULL) @@ -2272,7 +2346,7 @@ if (reader->curnode != NULL) return(NULL); /* TODO: handle the xmlDecl */ - if (reader->node->type != XML_ELEMENT_NODE) + if (reader->node->type != XML_ELEMENT_NODE) return(NULL); ns = reader->node->nsDef; @@ -2402,7 +2476,7 @@ } ns = reader->node->nsDef; while (ns != NULL) { - if ((prefix == NULL && ns->prefix == NULL) || + if ((prefix == NULL && ns->prefix == NULL) || ((ns->prefix != NULL) && (xmlStrEqual(ns->prefix, localName)))) { return xmlStrdup(ns->href); } @@ -2514,7 +2588,7 @@ if (reader->node == NULL) return(-1); /* TODO: handle the xmlDecl */ - if (reader->node->type != XML_ELEMENT_NODE) + if (reader->node->type != XML_ELEMENT_NODE) return(-1); reader->curnode = NULL; @@ -2601,7 +2675,7 @@ } return(0); } - + /* * Namespace default decl */ @@ -2678,7 +2752,7 @@ } ns = reader->node->nsDef; while (ns != NULL) { - if ((prefix == NULL && ns->prefix == NULL) || + if ((prefix == NULL && ns->prefix == NULL) || ((ns->prefix != NULL) && (xmlStrEqual(ns->prefix, localName)))) { reader->curnode = (xmlNodePtr) ns; return(1); @@ -2824,7 +2898,7 @@ xmlNsPtr ns = (xmlNsPtr) reader->curnode; if (reader->faketext == NULL) { - reader->faketext = xmlNewDocText(reader->node->doc, + reader->faketext = xmlNewDocText(reader->node->doc, ns->href); } else { if ((reader->faketext->content != NULL) && @@ -2862,7 +2936,7 @@ doc = reader->ctxt->myDoc; if (doc == NULL) return(NULL); - + if (doc->encoding == NULL) return(NULL); else @@ -2894,7 +2968,7 @@ return(-1); if (reader->node == NULL) return(0); - + if (reader->curnode != NULL) node = reader->curnode; else @@ -2925,14 +2999,14 @@ * * Get the node type of the current node * Reference: - * http://dotgnu.org/pnetlib-doc/System/Xml/XmlNodeType.html + * http://www.gnu.org/software/dotgnu/pnetlib-doc/System/Xml/XmlNodeType.html * * Returns the xmlNodeType of the current node or -1 in case of error */ int xmlTextReaderNodeType(xmlTextReaderPtr reader) { xmlNodePtr node; - + if (reader == NULL) return(-1); if (reader->node == NULL) @@ -3028,7 +3102,8 @@ * * The local name of the node. * - * Returns the local name or NULL if not available + * Returns the local name or NULL if not available, + * if non NULL it need to be freed by the caller. */ xmlChar * xmlTextReaderLocalName(xmlTextReaderPtr reader) { @@ -3089,7 +3164,8 @@ * * The qualified name of the node, equal to Prefix :LocalName. * - * Returns the local name or NULL if not available + * Returns the local name or NULL if not available, + * if non NULL it need to be freed by the caller. */ xmlChar * xmlTextReaderName(xmlTextReaderPtr reader) { @@ -3108,7 +3184,7 @@ if ((node->ns == NULL) || (node->ns->prefix == NULL)) return(xmlStrdup(node->name)); - + ret = xmlStrdup(node->ns->prefix); ret = xmlStrcat(ret, BAD_CAST ":"); ret = xmlStrcat(ret, node->name); @@ -3232,7 +3308,8 @@ * * A shorthand reference to the namespace associated with the node. * - * Returns the prefix or NULL if not available + * Returns the prefix or NULL if not available, + * if non NULL it need to be freed by the caller. */ xmlChar * xmlTextReaderPrefix(xmlTextReaderPtr reader) { @@ -3295,7 +3372,8 @@ * * The URI defining the namespace associated with the node. * - * Returns the namespace URI or NULL if not available + * Returns the namespace URI or NULL if not available, + * if non NULL it need to be freed by the caller. */ xmlChar * xmlTextReaderNamespaceUri(xmlTextReaderPtr reader) { @@ -3350,7 +3428,8 @@ * * The base URI of the node. * - * Returns the base URI or NULL if not available + * Returns the base URI or NULL if not available, + * if non NULL it need to be freed by the caller. */ xmlChar * xmlTextReaderBaseUri(xmlTextReaderPtr reader) { @@ -3540,22 +3619,35 @@ return(((xmlNsPtr) node)->href); case XML_ATTRIBUTE_NODE:{ xmlAttrPtr attr = (xmlAttrPtr) node; + const xmlChar *ret; if ((attr->children != NULL) && (attr->children->type == XML_TEXT_NODE) && (attr->children->next == NULL)) return(attr->children->content); else { - if (reader->buffer == NULL) - reader->buffer = xmlBufferCreateSize(100); if (reader->buffer == NULL) { - xmlGenericError(xmlGenericErrorContext, - "xmlTextReaderSetup : malloc failed\n"); - return (NULL); + reader->buffer = xmlBufCreateSize(100); + if (reader->buffer == NULL) { + xmlGenericError(xmlGenericErrorContext, + "xmlTextReaderSetup : malloc failed\n"); + return (NULL); + } + xmlBufSetAllocationScheme(reader->buffer, + XML_BUFFER_ALLOC_BOUNDED); + } else + xmlBufEmpty(reader->buffer); + xmlBufGetNodeContent(reader->buffer, node); + ret = xmlBufContent(reader->buffer); + if (ret == NULL) { + /* error on the buffer best to reallocate */ + xmlBufFree(reader->buffer); + reader->buffer = xmlBufCreateSize(100); + xmlBufSetAllocationScheme(reader->buffer, + XML_BUFFER_ALLOC_BOUNDED); + ret = BAD_CAST ""; } - reader->buffer->use = 0; - xmlNodeBufGetContent(reader->buffer, node); - return(reader->buffer->content); + return(ret); } break; } @@ -3608,7 +3700,8 @@ * * The xml:lang scope within which the node resides. * - * Returns the xml:lang value or NULL if none exists. + * Returns the xml:lang value or NULL if none exists., + * if non NULL it need to be freed by the caller. */ xmlChar * xmlTextReaderXmlLang(xmlTextReaderPtr reader) { @@ -3833,7 +3926,7 @@ xmlTextReaderCurrentNode(xmlTextReaderPtr reader) { if (reader == NULL) return(NULL); - + if (reader->curnode != NULL) return(reader->curnode); return(reader->node); @@ -3855,7 +3948,7 @@ if (reader == NULL) return(NULL); - + if (reader->curnode != NULL) cur = reader->curnode; else @@ -3868,7 +3961,7 @@ cur->extra |= NODE_IS_SPRESERVED; } reader->preserves++; - + parent = cur->parent;; while (parent != NULL) { if (parent->type == XML_ELEMENT_NODE) @@ -3884,7 +3977,7 @@ * @reader: the xmlTextReaderPtr used * @pattern: an XPath subset pattern * @namespaces: the prefix definitions, array of [URI, prefix] or NULL - * + * * This tells the XML Reader to preserve all nodes matched by the * pattern. The caller must also use xmlTextReaderCurrentDoc() to * keep an handle on the resulting document once parsing has finished @@ -3899,7 +3992,7 @@ if ((reader == NULL) || (pattern == NULL)) return(-1); - + comp = xmlPatterncompile(pattern, reader->dict, 0, namespaces); if (comp == NULL) return(-1); @@ -3936,7 +4029,7 @@ * @reader: the xmlTextReaderPtr used * * Hacking interface allowing to get the xmlDocPtr correponding to the - * current document being accessed by the xmlTextReader. + * current document being accessed by the xmlTextReader. * NOTE: as a result of this call, the reader will not destroy the * associated XML document and calling xmlFreeDoc() on the result * is needed once the reader parsing has finished. @@ -3949,75 +4042,82 @@ return(NULL); if (reader->doc != NULL) return(reader->doc); - if ((reader == NULL) || (reader->ctxt == NULL) || - (reader->ctxt->myDoc == NULL)) + if ((reader->ctxt == NULL) || (reader->ctxt->myDoc == NULL)) return(NULL); - + reader->preserve = 1; return(reader->ctxt->myDoc); } #ifdef LIBXML_SCHEMAS_ENABLED +static char *xmlTextReaderBuildMessage(const char *msg, va_list ap); -static char * -xmlTextReaderBuildMessage(const char *msg, va_list ap); - -static void XMLCDECL +static void XMLCDECL xmlTextReaderValidityError(void *ctxt, const char *msg, ...); -static void XMLCDECL +static void XMLCDECL xmlTextReaderValidityWarning(void *ctxt, const char *msg, ...); -static void XMLCDECL xmlTextReaderValidityErrorRelay(void *ctx, const char *msg, ...) +static void XMLCDECL +xmlTextReaderValidityErrorRelay(void *ctx, const char *msg, ...) { - xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx; - char * str; - va_list ap; - - va_start(ap,msg); - str = xmlTextReaderBuildMessage(msg,ap); - if (!reader->errorFunc) { - xmlTextReaderValidityError(ctx, "%s", str); - } else { - reader->errorFunc(reader->errorFuncArg, str, XML_PARSER_SEVERITY_VALIDITY_ERROR, NULL /* locator */); - } - if (str != NULL) - xmlFree(str); - va_end(ap); + xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx; + + char *str; + + va_list ap; + + va_start(ap, msg); + str = xmlTextReaderBuildMessage(msg, ap); + if (!reader->errorFunc) { + xmlTextReaderValidityError(ctx, "%s", str); + } else { + reader->errorFunc(reader->errorFuncArg, str, + XML_PARSER_SEVERITY_VALIDITY_ERROR, + NULL /* locator */ ); + } + if (str != NULL) + xmlFree(str); + va_end(ap); } -static void XMLCDECL xmlTextReaderValidityWarningRelay(void *ctx, const char *msg, ...) +static void XMLCDECL +xmlTextReaderValidityWarningRelay(void *ctx, const char *msg, ...) { - xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx; - char * str; - va_list ap; + xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx; - va_start(ap,msg); - str = xmlTextReaderBuildMessage(msg,ap); - if (!reader->errorFunc) { - xmlTextReaderValidityWarning(ctx, "%s", str); - } else { - reader->errorFunc(reader->errorFuncArg, str, XML_PARSER_SEVERITY_VALIDITY_WARNING, NULL /* locator */); - } - if (str != NULL) - xmlFree(str); - va_end(ap); + char *str; + + va_list ap; + + va_start(ap, msg); + str = xmlTextReaderBuildMessage(msg, ap); + if (!reader->errorFunc) { + xmlTextReaderValidityWarning(ctx, "%s", str); + } else { + reader->errorFunc(reader->errorFuncArg, str, + XML_PARSER_SEVERITY_VALIDITY_WARNING, + NULL /* locator */ ); + } + if (str != NULL) + xmlFree(str); + va_end(ap); } -static void -xmlTextReaderStructuredError(void *ctxt, xmlErrorPtr error); +static void + xmlTextReaderStructuredError(void *ctxt, xmlErrorPtr error); -static void xmlTextReaderValidityStructuredRelay(void * userData, xmlErrorPtr error) +static void +xmlTextReaderValidityStructuredRelay(void *userData, xmlErrorPtr error) { - xmlTextReaderPtr reader = (xmlTextReaderPtr) userData; + xmlTextReaderPtr reader = (xmlTextReaderPtr) userData; - if (reader->sErrorFunc) { - reader->sErrorFunc(reader->errorFuncArg, error); - } else { - xmlTextReaderStructuredError(reader, error); - } + if (reader->sErrorFunc) { + reader->sErrorFunc(reader->errorFuncArg, error); + } else { + xmlTextReaderStructuredError(reader, error); + } } - /** * xmlTextReaderRelaxNGSetSchema: * @reader: the xmlTextReaderPtr used @@ -4042,9 +4142,11 @@ reader->rngSchemas = NULL; } if (reader->rngValidCtxt != NULL) { - xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); + if (! reader->rngPreserveCtxt) + xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); reader->rngValidCtxt = NULL; } + reader->rngPreserveCtxt = 0; return(0); } if (reader->mode != XML_TEXTREADER_MODE_INITIAL) @@ -4054,9 +4156,11 @@ reader->rngSchemas = NULL; } if (reader->rngValidCtxt != NULL) { - xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); + if (! reader->rngPreserveCtxt) + xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); reader->rngValidCtxt = NULL; } + reader->rngPreserveCtxt = 0; reader->rngValidCtxt = xmlRelaxNGNewValidCtxt(schema); if (reader->rngValidCtxt == NULL) return(-1); @@ -4067,7 +4171,7 @@ reader); } if (reader->sErrorFunc != NULL) { - xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, xmlTextReaderValidityStructuredRelay, reader); } @@ -4078,6 +4182,60 @@ } /** + * xmlTextReaderLocator: + * @ctx: the xmlTextReaderPtr used + * @file: returned file information + * @line: returned line information + * + * Internal locator function for the readers + * + * Returns 0 in case the Schema validation could be (des)activated and + * -1 in case of error. + */ +static int +xmlTextReaderLocator(void *ctx, const char **file, unsigned long *line) { + xmlTextReaderPtr reader; + + if ((ctx == NULL) || ((file == NULL) && (line == NULL))) + return(-1); + + if (file != NULL) + *file = NULL; + if (line != NULL) + *line = 0; + + reader = (xmlTextReaderPtr) ctx; + if ((reader->ctxt != NULL) && (reader->ctxt->input != NULL)) { + if (file != NULL) + *file = reader->ctxt->input->filename; + if (line != NULL) + *line = reader->ctxt->input->line; + return(0); + } + if (reader->node != NULL) { + long res; + int ret = 0; + + if (line != NULL) { + res = xmlGetLineNo(reader->node); + if (res > 0) + *line = (unsigned long) res; + else + ret = -1; + } + if (file != NULL) { + xmlDocPtr doc = reader->node->doc; + if ((doc != NULL) && (doc->URL != NULL)) + *file = (const char *) doc->URL; + else + ret = -1; + } + return(ret); + } + return(-1); +} + +/** * xmlTextReaderSetSchema: * @reader: the xmlTextReaderPtr used * @schema: a precompiled Schema schema @@ -4103,15 +4261,15 @@ if (reader->xsdValidCtxt != NULL) { if (! reader->xsdPreserveCtxt) xmlSchemaFreeValidCtxt(reader->xsdValidCtxt); - reader->xsdValidCtxt = NULL; + reader->xsdValidCtxt = NULL; } reader->xsdPreserveCtxt = 0; if (reader->xsdSchemas != NULL) { xmlSchemaFree(reader->xsdSchemas); reader->xsdSchemas = NULL; - } + } return(0); - } + } if (reader->mode != XML_TEXTREADER_MODE_INITIAL) return(-1); if (reader->xsdPlug != NULL) { @@ -4120,7 +4278,7 @@ } if (reader->xsdValidCtxt != NULL) { if (! reader->xsdPreserveCtxt) - xmlSchemaFreeValidCtxt(reader->xsdValidCtxt); + xmlSchemaFreeValidCtxt(reader->xsdValidCtxt); reader->xsdValidCtxt = NULL; } reader->xsdPreserveCtxt = 0; @@ -4144,6 +4302,10 @@ reader->xsdValidCtxt = NULL; return(-1); } + xmlSchemaValidateSetLocator(reader->xsdValidCtxt, + xmlTextReaderLocator, + (void *) reader); + if (reader->errorFunc != NULL) { xmlSchemaSetValidErrors(reader->xsdValidCtxt, xmlTextReaderValidityErrorRelay, @@ -4161,67 +4323,91 @@ } /** - * xmlTextReaderRelaxNGValidate: + * xmlTextReaderRelaxNGValidateInternal: * @reader: the xmlTextReaderPtr used * @rng: the path to a RelaxNG schema or NULL + * @ctxt: the RelaxNG schema validation context or NULL + * @options: options (not yet used) * * Use RelaxNG to validate the document as it is processed. * Activation is only possible before the first Read(). - * if @rng is NULL, then RelaxNG validation is desactivated. + * If both @rng and @ctxt are NULL, then RelaxNG validation is deactivated. * - * Returns 0 in case the RelaxNG validation could be (des)activated and - * -1 in case of error. + * Returns 0 in case the RelaxNG validation could be (de)activated and + * -1 in case of error. */ -int -xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader, const char *rng) { - xmlRelaxNGParserCtxtPtr ctxt; - +static int +xmlTextReaderRelaxNGValidateInternal(xmlTextReaderPtr reader, + const char *rng, + xmlRelaxNGValidCtxtPtr ctxt, + int options ATTRIBUTE_UNUSED) +{ if (reader == NULL) - return(-1); - - if (rng == NULL) { - if (reader->rngValidCtxt != NULL) { + return(-1); + + if ((rng != NULL) && (ctxt != NULL)) + return (-1); + + if (((rng != NULL) || (ctxt != NULL)) && + ((reader->mode != XML_TEXTREADER_MODE_INITIAL) || + (reader->ctxt == NULL))) + return(-1); + + /* Cleanup previous validation stuff. */ + if (reader->rngValidCtxt != NULL) { + if ( !reader->rngPreserveCtxt) xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); - reader->rngValidCtxt = NULL; - } - if (reader->rngSchemas != NULL) { - xmlRelaxNGFree(reader->rngSchemas); - reader->rngSchemas = NULL; - } - return(0); + reader->rngValidCtxt = NULL; } - if (reader->mode != XML_TEXTREADER_MODE_INITIAL) - return(-1); + reader->rngPreserveCtxt = 0; if (reader->rngSchemas != NULL) { xmlRelaxNGFree(reader->rngSchemas); reader->rngSchemas = NULL; } - if (reader->rngValidCtxt != NULL) { - xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); - reader->rngValidCtxt = NULL; - } - ctxt = xmlRelaxNGNewParserCtxt(rng); - if (reader->errorFunc != NULL) { - xmlRelaxNGSetParserErrors(ctxt, - xmlTextReaderValidityErrorRelay, - xmlTextReaderValidityWarningRelay, - reader); + + if ((rng == NULL) && (ctxt == NULL)) { + /* We just want to deactivate the validation, so get out. */ + return(0); } + + + if (rng != NULL) { + xmlRelaxNGParserCtxtPtr pctxt; + /* Parse the schema and create validation environment. */ + + pctxt = xmlRelaxNGNewParserCtxt(rng); + if (reader->errorFunc != NULL) { + xmlRelaxNGSetParserErrors(pctxt, + xmlTextReaderValidityErrorRelay, + xmlTextReaderValidityWarningRelay, + reader); + } if (reader->sErrorFunc != NULL) { - xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, - xmlTextReaderValidityStructuredRelay, - reader); - } - reader->rngSchemas = xmlRelaxNGParse(ctxt); - xmlRelaxNGFreeParserCtxt(ctxt); - if (reader->rngSchemas == NULL) - return(-1); - reader->rngValidCtxt = xmlRelaxNGNewValidCtxt(reader->rngSchemas); - if (reader->rngValidCtxt == NULL) { - xmlRelaxNGFree(reader->rngSchemas); - reader->rngSchemas = NULL; - return(-1); + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, + xmlTextReaderValidityStructuredRelay, + reader); + } + reader->rngSchemas = xmlRelaxNGParse(pctxt); + xmlRelaxNGFreeParserCtxt(pctxt); + if (reader->rngSchemas == NULL) + return(-1); + reader->rngValidCtxt = xmlRelaxNGNewValidCtxt(reader->rngSchemas); + if (reader->rngValidCtxt == NULL) { + xmlRelaxNGFree(reader->rngSchemas); + reader->rngSchemas = NULL; + return(-1); + } + } else { + /* Use the given validation context. */ + reader->rngValidCtxt = ctxt; + reader->rngPreserveCtxt = 1; } + /* + * Redirect the validation context's error channels to use + * the reader channels. + * TODO: In case the user provides the validation context we + * could make this redirection optional. + */ if (reader->errorFunc != NULL) { xmlRelaxNGSetValidErrors(reader->rngValidCtxt, xmlTextReaderValidityErrorRelay, @@ -4229,7 +4415,7 @@ reader); } if (reader->sErrorFunc != NULL) { - xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, xmlTextReaderValidityStructuredRelay, reader); } @@ -4258,7 +4444,7 @@ const char *xsd, xmlSchemaValidCtxtPtr ctxt, int options ATTRIBUTE_UNUSED) -{ +{ if (reader == NULL) return(-1); @@ -4269,7 +4455,7 @@ ((reader->mode != XML_TEXTREADER_MODE_INITIAL) || (reader->ctxt == NULL))) return(-1); - + /* Cleanup previous validation stuff. */ if (reader->xsdPlug != NULL) { xmlSchemaSAXUnplug(reader->xsdPlug); @@ -4277,20 +4463,20 @@ } if (reader->xsdValidCtxt != NULL) { if (! reader->xsdPreserveCtxt) - xmlSchemaFreeValidCtxt(reader->xsdValidCtxt); + xmlSchemaFreeValidCtxt(reader->xsdValidCtxt); reader->xsdValidCtxt = NULL; } reader->xsdPreserveCtxt = 0; if (reader->xsdSchemas != NULL) { xmlSchemaFree(reader->xsdSchemas); reader->xsdSchemas = NULL; - } + } if ((xsd == NULL) && (ctxt == NULL)) { /* We just want to deactivate the validation, so get out. */ return(0); - } - + } + if (xsd != NULL) { xmlSchemaParserCtxtPtr pctxt; /* Parse the schema and create validation environment. */ @@ -4322,18 +4508,21 @@ return(-1); } } else { - /* Use the given validation context. */ + /* Use the given validation context. */ reader->xsdValidCtxt = ctxt; reader->xsdPreserveCtxt = 1; reader->xsdPlug = xmlSchemaSAXPlug(reader->xsdValidCtxt, &(reader->ctxt->sax), &(reader->ctxt->userData)); - if (reader->xsdPlug == NULL) { + if (reader->xsdPlug == NULL) { reader->xsdValidCtxt = NULL; reader->xsdPreserveCtxt = 0; return(-1); } } + xmlSchemaValidateSetLocator(reader->xsdValidCtxt, + xmlTextReaderLocator, + (void *) reader); /* * Redirect the validation context's error channels to use * the reader channels. @@ -4347,7 +4536,7 @@ reader); } if (reader->sErrorFunc != NULL) { - xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, + xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, xmlTextReaderValidityStructuredRelay, reader); } @@ -4394,6 +4583,46 @@ { return(xmlTextReaderSchemaValidateInternal(reader, xsd, NULL, 0)); } + +/** + * xmlTextReaderRelaxNGValidateCtxt: + * @reader: the xmlTextReaderPtr used + * @ctxt: the RelaxNG schema validation context or NULL + * @options: options (not used yet) + * + * Use RelaxNG schema context to validate the document as it is processed. + * Activation is only possible before the first Read(). + * If @ctxt is NULL, then RelaxNG schema validation is deactivated. + * + * Returns 0 in case the schemas validation could be (de)activated and + * -1 in case of error. + */ +int +xmlTextReaderRelaxNGValidateCtxt(xmlTextReaderPtr reader, + xmlRelaxNGValidCtxtPtr ctxt, + int options) +{ + return(xmlTextReaderRelaxNGValidateInternal(reader, NULL, ctxt, options)); +} + +/** + * xmlTextReaderRelaxNGValidate: + * @reader: the xmlTextReaderPtr used + * @rng: the path to a RelaxNG schema or NULL + * + * Use RelaxNG schema to validate the document as it is processed. + * Activation is only possible before the first Read(). + * If @rng is NULL, then RelaxNG schema validation is deactivated. + * + * Returns 0 in case the schemas validation could be (de)activated and + * -1 in case of error. + */ +int +xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader, const char *rng) +{ + return(xmlTextReaderRelaxNGValidateInternal(reader, rng, NULL, 0)); +} + #endif /** @@ -4418,7 +4647,7 @@ node = reader->curnode; else node = reader->node; - + if (XML_NAMESPACE_DECL == node->type) return(1); else @@ -4442,10 +4671,10 @@ if (reader->doc != NULL) doc = reader->doc; else if (reader->ctxt != NULL) - doc = reader->ctxt->myDoc; + doc = reader->ctxt->myDoc; if (doc == NULL) return(NULL); - + if (doc->version == NULL) return(NULL); else @@ -4486,30 +4715,32 @@ /* helper to build a xmlMalloc'ed string from a format and va_list */ static char * xmlTextReaderBuildMessage(const char *msg, va_list ap) { - int size; + int size = 0; int chars; char *larger; - char *str; - - str = (char *) xmlMallocAtomic(150); - if (str == NULL) { - xmlGenericError(xmlGenericErrorContext, "xmlMalloc failed !\n"); - return NULL; - } - - size = 150; + char *str = NULL; + va_list aq; while (1) { - chars = vsnprintf(str, size, msg, ap); - if ((chars > -1) && (chars < size)) + VA_COPY(aq, ap); + chars = vsnprintf(str, size, msg, aq); + va_end(aq); + if (chars < 0) { + xmlGenericError(xmlGenericErrorContext, "vsnprintf failed !\n"); + if (str) + xmlFree(str); + return NULL; + } + if ((chars < size) || (size == MAX_ERR_MSG_SIZE)) break; - if (chars > -1) - size += chars + 1; - else - size += 100; + if (chars < MAX_ERR_MSG_SIZE) + size = chars + 1; + else + size = MAX_ERR_MSG_SIZE; if ((larger = (char *) xmlRealloc(str, size)) == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlRealloc failed !\n"); - xmlFree(str); + if (str) + xmlFree(str); return NULL; } str = larger; @@ -4545,7 +4776,7 @@ input = ctx->inputTab[ctx->inputNr - 2]; if (input != NULL) { ret = input->line; - } + } else { ret = -1; } @@ -4560,7 +4791,8 @@ * * Obtain the base URI for the given locator. * - * Returns the base URI or NULL in case of error. + * Returns the base URI or NULL in case of error, + * if non NULL it need to be freed by the caller. */ xmlChar * xmlTextReaderLocatorBaseURI(xmlTextReaderLocatorPtr locator) { @@ -4581,7 +4813,7 @@ input = ctx->inputTab[ctx->inputNr - 2]; if (input != NULL) { ret = xmlStrdup(BAD_CAST input->filename); - } + } else { ret = NULL; } @@ -4591,87 +4823,95 @@ } static void -xmlTextReaderGenericError(void *ctxt, xmlParserSeverities severity, char *str) { - xmlParserCtxtPtr ctx = (xmlParserCtxtPtr)ctxt; - xmlTextReaderPtr reader = (xmlTextReaderPtr)ctx->_private; +xmlTextReaderGenericError(void *ctxt, xmlParserSeverities severity, + char *str) +{ + xmlParserCtxtPtr ctx = (xmlParserCtxtPtr) ctxt; + + xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx->_private; if (str != NULL) { - if (reader->errorFunc) - reader->errorFunc(reader->errorFuncArg, - str, - severity, - (xmlTextReaderLocatorPtr)ctx); - xmlFree(str); + if (reader->errorFunc) + reader->errorFunc(reader->errorFuncArg, str, severity, + (xmlTextReaderLocatorPtr) ctx); + xmlFree(str); } } -static void -xmlTextReaderStructuredError(void *ctxt, xmlErrorPtr error) { - xmlParserCtxtPtr ctx = (xmlParserCtxtPtr) ctxt; - xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx->_private; +static void +xmlTextReaderStructuredError(void *ctxt, xmlErrorPtr error) +{ + xmlParserCtxtPtr ctx = (xmlParserCtxtPtr) ctxt; + + xmlTextReaderPtr reader = (xmlTextReaderPtr) ctx->_private; - if (error && reader->sErrorFunc) { - reader->sErrorFunc(reader->errorFuncArg, - (xmlErrorPtr) error); - } + if (error && reader->sErrorFunc) { + reader->sErrorFunc(reader->errorFuncArg, (xmlErrorPtr) error); + } } -static void XMLCDECL -xmlTextReaderError(void *ctxt, const char *msg, ...) { +static void XMLCDECL +xmlTextReaderError(void *ctxt, const char *msg, ...) +{ va_list ap; - va_start(ap,msg); + va_start(ap, msg); xmlTextReaderGenericError(ctxt, XML_PARSER_SEVERITY_ERROR, - xmlTextReaderBuildMessage(msg,ap)); + xmlTextReaderBuildMessage(msg, ap)); va_end(ap); } -static void XMLCDECL -xmlTextReaderWarning(void *ctxt, const char *msg, ...) { +static void XMLCDECL +xmlTextReaderWarning(void *ctxt, const char *msg, ...) +{ va_list ap; - va_start(ap,msg); + va_start(ap, msg); xmlTextReaderGenericError(ctxt, XML_PARSER_SEVERITY_WARNING, - xmlTextReaderBuildMessage(msg,ap)); + xmlTextReaderBuildMessage(msg, ap)); va_end(ap); } -static void XMLCDECL -xmlTextReaderValidityError(void *ctxt, const char *msg, ...) { +static void XMLCDECL +xmlTextReaderValidityError(void *ctxt, const char *msg, ...) +{ va_list ap; + int len = xmlStrlen((const xmlChar *) msg); if ((len > 1) && (msg[len - 2] != ':')) { - /* - * some callbacks only report locator information: - * skip them (mimicking behaviour in error.c) - */ - va_start(ap,msg); - xmlTextReaderGenericError(ctxt, - XML_PARSER_SEVERITY_VALIDITY_ERROR, - xmlTextReaderBuildMessage(msg,ap)); - va_end(ap); + /* + * some callbacks only report locator information: + * skip them (mimicking behaviour in error.c) + */ + va_start(ap, msg); + xmlTextReaderGenericError(ctxt, + XML_PARSER_SEVERITY_VALIDITY_ERROR, + xmlTextReaderBuildMessage(msg, ap)); + va_end(ap); } } -static void XMLCDECL -xmlTextReaderValidityWarning(void *ctxt, const char *msg, ...) { +static void XMLCDECL +xmlTextReaderValidityWarning(void *ctxt, const char *msg, ...) +{ va_list ap; + int len = xmlStrlen((const xmlChar *) msg); if ((len != 0) && (msg[len - 1] != ':')) { - /* - * some callbacks only report locator information: - * skip them (mimicking behaviour in error.c) - */ - va_start(ap,msg); - xmlTextReaderGenericError(ctxt, - XML_PARSER_SEVERITY_VALIDITY_WARNING, - xmlTextReaderBuildMessage(msg,ap)); - va_end(ap); + /* + * some callbacks only report locator information: + * skip them (mimicking behaviour in error.c) + */ + va_start(ap, msg); + xmlTextReaderGenericError(ctxt, + XML_PARSER_SEVERITY_VALIDITY_WARNING, + xmlTextReaderBuildMessage(msg, ap)); + va_end(ap); } } @@ -4686,53 +4926,58 @@ * If @f is NULL, the default error and warning handlers are restored. */ void -xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader, - xmlTextReaderErrorFunc f, - void *arg) { +xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader, + xmlTextReaderErrorFunc f, void *arg) +{ if (f != NULL) { - reader->ctxt->sax->error = xmlTextReaderError; - reader->ctxt->sax->serror = NULL; - reader->ctxt->vctxt.error = xmlTextReaderValidityError; - reader->ctxt->sax->warning = xmlTextReaderWarning; - reader->ctxt->vctxt.warning = xmlTextReaderValidityWarning; - reader->errorFunc = f; - reader->sErrorFunc = NULL; - reader->errorFuncArg = arg; + reader->ctxt->sax->error = xmlTextReaderError; + reader->ctxt->sax->serror = NULL; + reader->ctxt->vctxt.error = xmlTextReaderValidityError; + reader->ctxt->sax->warning = xmlTextReaderWarning; + reader->ctxt->vctxt.warning = xmlTextReaderValidityWarning; + reader->errorFunc = f; + reader->sErrorFunc = NULL; + reader->errorFuncArg = arg; #ifdef LIBXML_SCHEMAS_ENABLED - if (reader->rngValidCtxt) { - xmlRelaxNGSetValidErrors(reader->rngValidCtxt, - xmlTextReaderValidityErrorRelay, - xmlTextReaderValidityWarningRelay, - reader); - xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, reader); - } - if (reader->xsdValidCtxt) { - xmlSchemaSetValidErrors(reader->xsdValidCtxt, - xmlTextReaderValidityErrorRelay, - xmlTextReaderValidityWarningRelay, - reader); - xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, reader); - } + if (reader->rngValidCtxt) { + xmlRelaxNGSetValidErrors(reader->rngValidCtxt, + xmlTextReaderValidityErrorRelay, + xmlTextReaderValidityWarningRelay, + reader); + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, + reader); + } + if (reader->xsdValidCtxt) { + xmlSchemaSetValidErrors(reader->xsdValidCtxt, + xmlTextReaderValidityErrorRelay, + xmlTextReaderValidityWarningRelay, + reader); + xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, + reader); + } #endif - } - else { - /* restore defaults */ - reader->ctxt->sax->error = xmlParserError; - reader->ctxt->vctxt.error = xmlParserValidityError; - reader->ctxt->sax->warning = xmlParserWarning; - reader->ctxt->vctxt.warning = xmlParserValidityWarning; - reader->errorFunc = NULL; - reader->sErrorFunc = NULL; - reader->errorFuncArg = NULL; + } else { + /* restore defaults */ + reader->ctxt->sax->error = xmlParserError; + reader->ctxt->vctxt.error = xmlParserValidityError; + reader->ctxt->sax->warning = xmlParserWarning; + reader->ctxt->vctxt.warning = xmlParserValidityWarning; + reader->errorFunc = NULL; + reader->sErrorFunc = NULL; + reader->errorFuncArg = NULL; #ifdef LIBXML_SCHEMAS_ENABLED - if (reader->rngValidCtxt) { - xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, reader); - xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, reader); - } - if (reader->xsdValidCtxt) { - xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, reader); - xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, reader); - } + if (reader->rngValidCtxt) { + xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, + reader); + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, + reader); + } + if (reader->xsdValidCtxt) { + xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, + reader); + xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, + reader); + } #endif } } @@ -4748,54 +4993,59 @@ * If @f is NULL, the default error and warning handlers are restored. */ void -xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader, - xmlStructuredErrorFunc f, - void *arg) { - if (f != NULL) { - reader->ctxt->sax->error = NULL; - reader->ctxt->sax->serror = xmlTextReaderStructuredError; - reader->ctxt->vctxt.error = xmlTextReaderValidityError; - reader->ctxt->sax->warning = xmlTextReaderWarning; - reader->ctxt->vctxt.warning = xmlTextReaderValidityWarning; - reader->sErrorFunc = f; - reader->errorFunc = NULL; - reader->errorFuncArg = arg; +xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader, + xmlStructuredErrorFunc f, void *arg) +{ + if (f != NULL) { + reader->ctxt->sax->error = NULL; + reader->ctxt->sax->serror = xmlTextReaderStructuredError; + reader->ctxt->vctxt.error = xmlTextReaderValidityError; + reader->ctxt->sax->warning = xmlTextReaderWarning; + reader->ctxt->vctxt.warning = xmlTextReaderValidityWarning; + reader->sErrorFunc = f; + reader->errorFunc = NULL; + reader->errorFuncArg = arg; #ifdef LIBXML_SCHEMAS_ENABLED - if (reader->rngValidCtxt) { - xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, reader); - xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, - xmlTextReaderValidityStructuredRelay, - reader); - } - if (reader->xsdValidCtxt) { - xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, reader); - xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, - xmlTextReaderValidityStructuredRelay, - reader); - } + if (reader->rngValidCtxt) { + xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, + reader); + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, + xmlTextReaderValidityStructuredRelay, + reader); + } + if (reader->xsdValidCtxt) { + xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, + reader); + xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, + xmlTextReaderValidityStructuredRelay, + reader); + } #endif - } - else { - /* restore defaults */ - reader->ctxt->sax->error = xmlParserError; - reader->ctxt->sax->serror = NULL; - reader->ctxt->vctxt.error = xmlParserValidityError; - reader->ctxt->sax->warning = xmlParserWarning; - reader->ctxt->vctxt.warning = xmlParserValidityWarning; - reader->errorFunc = NULL; - reader->sErrorFunc = NULL; - reader->errorFuncArg = NULL; + } else { + /* restore defaults */ + reader->ctxt->sax->error = xmlParserError; + reader->ctxt->sax->serror = NULL; + reader->ctxt->vctxt.error = xmlParserValidityError; + reader->ctxt->sax->warning = xmlParserWarning; + reader->ctxt->vctxt.warning = xmlParserValidityWarning; + reader->errorFunc = NULL; + reader->sErrorFunc = NULL; + reader->errorFuncArg = NULL; #ifdef LIBXML_SCHEMAS_ENABLED - if (reader->rngValidCtxt) { - xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, reader); - xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, reader); - } - if (reader->xsdValidCtxt) { - xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, reader); - xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, reader); - } + if (reader->rngValidCtxt) { + xmlRelaxNGSetValidErrors(reader->rngValidCtxt, NULL, NULL, + reader); + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, NULL, + reader); + } + if (reader->xsdValidCtxt) { + xmlSchemaSetValidErrors(reader->xsdValidCtxt, NULL, NULL, + reader); + xmlSchemaSetValidStructuredErrors(reader->xsdValidCtxt, NULL, + reader); + } #endif - } + } } /** @@ -4807,17 +5057,19 @@ * Returns the flag value 1 if valid, 0 if no, and -1 in case of error */ int -xmlTextReaderIsValid(xmlTextReaderPtr reader) { - if (reader == NULL) return(-1); +xmlTextReaderIsValid(xmlTextReaderPtr reader) +{ + if (reader == NULL) + return (-1); #ifdef LIBXML_SCHEMAS_ENABLED if (reader->validate == XML_TEXTREADER_VALIDATE_RNG) - return(reader->rngValidErrors == 0); + return (reader->rngValidErrors == 0); if (reader->validate == XML_TEXTREADER_VALIDATE_XSD) - return(reader->xsdValidErrors == 0); + return (reader->xsdValidErrors == 0); #endif if ((reader->ctxt != NULL) && (reader->ctxt->validate == 1)) - return(reader->ctxt->valid); - return(0); + return (reader->ctxt->valid); + return (0); } /** @@ -4829,14 +5081,14 @@ * Retrieve the error callback function and user argument. */ void -xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader, - xmlTextReaderErrorFunc *f, - void **arg) { - if (f != NULL) *f = reader->errorFunc; - if (arg != NULL) *arg = reader->errorFuncArg; +xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader, + xmlTextReaderErrorFunc * f, void **arg) +{ + if (f != NULL) + *f = reader->errorFunc; + if (arg != NULL) + *arg = reader->errorFuncArg; } - - /************************************************************************ * * * New set (2.6.0) of simpler and more flexible APIs * @@ -4846,22 +5098,26 @@ /** * xmlTextReaderSetup: * @reader: an XML reader + * @input: xmlParserInputBufferPtr used to feed the reader, will + * be destroyed with it. * @URL: the base URL to use for the document * @encoding: the document encoding, or NULL * @options: a combination of xmlParserOption - * @reuse: keep the context for reuse * * Setup an XML reader with new options - * + * * Returns 0 in case of success and -1 in case of error. */ -static int +int xmlTextReaderSetup(xmlTextReaderPtr reader, xmlParserInputBufferPtr input, const char *URL, const char *encoding, int options) { - if (reader == NULL) + if (reader == NULL) { + if (input != NULL) + xmlFreeParserInputBuffer(input); return (-1); + } /* * we force the generation of compact text nodes on the reader @@ -4884,12 +5140,15 @@ reader->allocs |= XML_TEXTREADER_INPUT; } if (reader->buffer == NULL) - reader->buffer = xmlBufferCreateSize(100); + reader->buffer = xmlBufCreateSize(100); if (reader->buffer == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlTextReaderSetup : malloc failed\n"); return (-1); } + /* no operation on a reader should require a huge buffer */ + xmlBufSetAllocationScheme(reader->buffer, + XML_BUFFER_ALLOC_BOUNDED); if (reader->sax == NULL) reader->sax = (xmlSAXHandler *) xmlMalloc(sizeof(xmlSAXHandler)); if (reader->sax == NULL) { @@ -4925,13 +5184,14 @@ reader->node = NULL; reader->curnode = NULL; if (input != NULL) { - if (reader->input->buffer->use < 4) { + if (xmlBufUse(reader->input->buffer) < 4) { xmlParserInputBufferRead(input, 4); } if (reader->ctxt == NULL) { - if (reader->input->buffer->use >= 4) { + if (xmlBufUse(reader->input->buffer) >= 4) { reader->ctxt = xmlCreatePushParserCtxt(reader->sax, NULL, - (const char *) reader->input->buffer->content, 4, URL); + (const char *) xmlBufContent(reader->input->buffer), + 4, URL); reader->base = 0; reader->cur = 4; } else { @@ -4960,10 +5220,7 @@ inputStream->filename = (char *) xmlCanonicPath((const xmlChar *) URL); inputStream->buf = buf; - inputStream->base = inputStream->buf->buffer->content; - inputStream->cur = inputStream->buf->buffer->content; - inputStream->end = - &inputStream->buf->buffer->content[inputStream->buf->buffer->use]; + xmlBufResetInput(buf->buffer, inputStream); inputPush(reader->ctxt, inputStream); reader->cur = 0; @@ -5064,14 +5321,14 @@ return(-1); return(xmlByteConsumed(reader->ctxt)); } - + /** * xmlReaderWalker: * @doc: a preparsed document * * Create an xmltextReader for a preparsed document. - * + * * Returns the new reader or NULL in case of error. */ xmlTextReaderPtr @@ -5112,7 +5369,7 @@ * * Create an xmltextReader for an XML in-memory document. * The parsing flags @options are a combination of xmlParserOption. - * + * * Returns the new reader or NULL in case of error. */ xmlTextReaderPtr @@ -5137,7 +5394,7 @@ * * parse an XML file from the filesystem or the network. * The parsing flags @options are a combination of xmlParserOption. - * + * * Returns the new reader or NULL in case of error. */ xmlTextReaderPtr @@ -5162,7 +5419,7 @@ * * Create an xmltextReader for an XML in-memory document. * The parsing flags @options are a combination of xmlParserOption. - * + * * Returns the new reader or NULL in case of error. */ xmlTextReaderPtr @@ -5198,7 +5455,7 @@ * The parsing flags @options are a combination of xmlParserOption. * NOTE that the file descriptor will not be closed when the * reader is closed or reset. - * + * * Returns the new reader or NULL in case of error. */ xmlTextReaderPtr @@ -5235,7 +5492,7 @@ * * Create an xmltextReader for an XML document from I/O functions and source. * The parsing flags @options are a combination of xmlParserOption. - * + * * Returns the new reader or NULL in case of error. */ xmlTextReaderPtr @@ -5251,8 +5508,11 @@ input = xmlParserInputBufferCreateIO(ioread, ioclose, ioctx, XML_CHAR_ENCODING_NONE); - if (input == NULL) + if (input == NULL) { + if (ioclose != NULL) + ioclose(ioctx); return (NULL); + } reader = xmlNewTextReader(input, URL); if (reader == NULL) { xmlFreeParserInputBuffer(input); @@ -5270,7 +5530,7 @@ * * Setup an xmltextReader to parse a preparsed XML document. * This reuses the existing @reader xmlTextReader. - * + * * Returns 0 in case of success and -1 in case of error */ int @@ -5318,7 +5578,7 @@ * Setup an xmltextReader to parse an XML in-memory document. * The parsing flags @options are a combination of xmlParserOption. * This reuses the existing @reader xmlTextReader. - * + * * Returns 0 in case of success and -1 in case of error */ int @@ -5348,7 +5608,7 @@ * parse an XML file from the filesystem or the network. * The parsing flags @options are a combination of xmlParserOption. * This reuses the existing @reader xmlTextReader. - * + * * Returns 0 in case of success and -1 in case of error */ int @@ -5382,7 +5642,7 @@ * Setup an xmltextReader to parse an XML in-memory document. * The parsing flags @options are a combination of xmlParserOption. * This reuses the existing @reader xmlTextReader. - * + * * Returns 0 in case of success and -1 in case of error */ int @@ -5417,7 +5677,7 @@ * reader is closed or reset. * The parsing flags @options are a combination of xmlParserOption. * This reuses the existing @reader xmlTextReader. - * + * * Returns 0 in case of success and -1 in case of error */ int @@ -5452,7 +5712,7 @@ * and source. * The parsing flags @options are a combination of xmlParserOption. * This reuses the existing @reader xmlTextReader. - * + * * Returns 0 in case of success and -1 in case of error */ int @@ -5469,16 +5729,21 @@ input = xmlParserInputBufferCreateIO(ioread, ioclose, ioctx, XML_CHAR_ENCODING_NONE); - if (input == NULL) + if (input == NULL) { + if (ioclose != NULL) + ioclose(ioctx); return (-1); + } return (xmlTextReaderSetup(reader, input, URL, encoding, options)); } + /************************************************************************ * * * Utilities * * * ************************************************************************/ #ifdef NOT_USED_YET + /** * xmlBase64Decode: * @in: the input buffer @@ -5494,22 +5759,34 @@ */ static int xmlBase64Decode(const unsigned char *in, unsigned long *inlen, - unsigned char *to, unsigned long *tolen) { - unsigned long incur; /* current index in in[] */ - unsigned long inblk; /* last block index in in[] */ - unsigned long outcur; /* current index in out[] */ - unsigned long inmax; /* size of in[] */ - unsigned long outmax; /* size of out[] */ - unsigned char cur; /* the current value read from in[] */ - unsigned char intmp[4], outtmp[4]; /* temporary buffers for the convert */ - int nbintmp; /* number of byte in intmp[] */ - int is_ignore; /* cur should be ignored */ - int is_end = 0; /* the end of the base64 was found */ + unsigned char *to, unsigned long *tolen) +{ + unsigned long incur; /* current index in in[] */ + + unsigned long inblk; /* last block index in in[] */ + + unsigned long outcur; /* current index in out[] */ + + unsigned long inmax; /* size of in[] */ + + unsigned long outmax; /* size of out[] */ + + unsigned char cur; /* the current value read from in[] */ + + unsigned char intmp[4], outtmp[4]; /* temporary buffers for the convert */ + + int nbintmp; /* number of byte in intmp[] */ + + int is_ignore; /* cur should be ignored */ + + int is_end = 0; /* the end of the base64 was found */ + int retval = 1; + int i; if ((in == NULL) || (inlen == NULL) || (to == NULL) || (tolen == NULL)) - return(-1); + return (-1); incur = 0; inblk = 0; @@ -5535,16 +5812,17 @@ cur = 63; else if (cur == '.') cur = 0; - else if (cur == '=') /*no op , end of the base64 stream */ + else if (cur == '=') /*no op , end of the base64 stream */ is_end = 1; else { is_ignore = 1; - if (nbintmp == 0) - inblk = incur; - } + if (nbintmp == 0) + inblk = incur; + } if (!is_ignore) { int nbouttmp = 3; + int is_break = 0; if (is_end) { @@ -5558,30 +5836,30 @@ is_break = 1; } intmp[nbintmp++] = cur; - /* - * if intmp is full, push the 4byte sequence as a 3 byte - * sequence out - */ + /* + * if intmp is full, push the 4byte sequence as a 3 byte + * sequence out + */ if (nbintmp == 4) { nbintmp = 0; outtmp[0] = (intmp[0] << 2) | ((intmp[1] & 0x30) >> 4); outtmp[1] = ((intmp[1] & 0x0F) << 4) | ((intmp[2] & 0x3C) >> 2); outtmp[2] = ((intmp[2] & 0x03) << 6) | (intmp[3] & 0x3F); - if (outcur + 3 >= outmax) { - retval = 2; - break; - } + if (outcur + 3 >= outmax) { + retval = 2; + break; + } for (i = 0; i < nbouttmp; i++) - to[outcur++] = outtmp[i]; - inblk = incur; + to[outcur++] = outtmp[i]; + inblk = incur; } if (is_break) { - retval = 0; + retval = 0; break; - } + } } } @@ -5594,14 +5872,23 @@ * Test routine for the xmlBase64Decode function */ #if 0 -int main(int argc, char **argv) { +int +main(int argc, char **argv) +{ char *input = " VW4 gcGV0 \n aXQgdGVzdCAuCg== "; + char output[100]; + char output2[100]; + char output3[100]; + unsigned long inlen = strlen(input); + unsigned long outlen = 100; + int ret; + unsigned long cons, tmp, tmp2, prod; /* @@ -5610,25 +5897,28 @@ ret = xmlBase64Decode(input, &inlen, output, &outlen); output[outlen] = 0; - printf("ret: %d, inlen: %ld , outlen: %ld, output: '%s'\n", ret, inlen, outlen, output); - + printf("ret: %d, inlen: %ld , outlen: %ld, output: '%s'\n", ret, inlen, + outlen, output)indent: Standard input:179: Error:Unmatched #endif +; + /* * output chunking */ cons = 0; prod = 0; while (cons < inlen) { - tmp = 5; - tmp2 = inlen - cons; + tmp = 5; + tmp2 = inlen - cons; - printf("%ld %ld\n", cons, prod); - ret = xmlBase64Decode(&input[cons], &tmp2, &output2[prod], &tmp); - cons += tmp2; - prod += tmp; - printf("%ld %ld\n", cons, prod); + printf("%ld %ld\n", cons, prod); + ret = xmlBase64Decode(&input[cons], &tmp2, &output2[prod], &tmp); + cons += tmp2; + prod += tmp; + printf("%ld %ld\n", cons, prod); } output2[outlen] = 0; - printf("ret: %d, cons: %ld , prod: %ld, output: '%s'\n", ret, cons, prod, output2); + printf("ret: %d, cons: %ld , prod: %ld, output: '%s'\n", ret, cons, + prod, output2); /* * input chunking @@ -5636,20 +5926,21 @@ cons = 0; prod = 0; while (cons < inlen) { - tmp = 100 - prod; - tmp2 = inlen - cons; - if (tmp2 > 5) - tmp2 = 5; - - printf("%ld %ld\n", cons, prod); - ret = xmlBase64Decode(&input[cons], &tmp2, &output3[prod], &tmp); - cons += tmp2; - prod += tmp; - printf("%ld %ld\n", cons, prod); + tmp = 100 - prod; + tmp2 = inlen - cons; + if (tmp2 > 5) + tmp2 = 5; + + printf("%ld %ld\n", cons, prod); + ret = xmlBase64Decode(&input[cons], &tmp2, &output3[prod], &tmp); + cons += tmp2; + prod += tmp; + printf("%ld %ld\n", cons, prod); } output3[outlen] = 0; - printf("ret: %d, cons: %ld , prod: %ld, output: '%s'\n", ret, cons, prod, output3); - return(0); + printf("ret: %d, cons: %ld , prod: %ld, output: '%s'\n", ret, cons, + prod, output3); + return (0); } #endif diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlreader.in.h gettext-0.19.7/gnulib-local/lib/libxml/xmlreader.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xmlreader.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlreader.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -18,13 +18,26 @@ #include #endif -#ifdef LIBXML_READER_ENABLED - #ifdef __cplusplus extern "C" { #endif /** + * xmlParserSeverities: + * + * How severe an error callback is when the per-reader error callback API + * is used. + */ +typedef enum { + XML_PARSER_SEVERITY_VALIDITY_WARNING = 1, + XML_PARSER_SEVERITY_VALIDITY_ERROR = 2, + XML_PARSER_SEVERITY_WARNING = 3, + XML_PARSER_SEVERITY_ERROR = 4 +} xmlParserSeverities; + +#ifdef LIBXML_READER_ENABLED + +/** * xmlTextReaderMode: * * Internal state values for the reader. @@ -42,7 +55,7 @@ * xmlParserProperties: * * Some common options to use with xmlTextReaderSetParserProp, but it - * is better to use xmlParserOption and the xmlReaderNewxxx and + * is better to use xmlParserOption and the xmlReaderNewxxx and * xmlReaderForxxx APIs now. */ typedef enum { @@ -53,19 +66,6 @@ } xmlParserProperties; /** - * xmlParserSeverities: - * - * How severe an error callback is when the per-reader error callback API - * is used. - */ -typedef enum { - XML_PARSER_SEVERITY_VALIDITY_WARNING = 1, - XML_PARSER_SEVERITY_VALIDITY_ERROR = 2, - XML_PARSER_SEVERITY_WARNING = 3, - XML_PARSER_SEVERITY_ERROR = 4 -} xmlParserSeverities; - -/** * xmlReaderTypes: * * Predefined constants for the different types of nodes. @@ -111,128 +111,134 @@ XMLPUBFUN xmlTextReaderPtr XMLCALL xmlNewTextReader (xmlParserInputBufferPtr input, const char *URI); -XMLPUBFUN xmlTextReaderPtr XMLCALL +XMLPUBFUN xmlTextReaderPtr XMLCALL xmlNewTextReaderFilename(const char *URI); -XMLPUBFUN void XMLCALL + +XMLPUBFUN void XMLCALL xmlFreeTextReader (xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderSetup(xmlTextReaderPtr reader, + xmlParserInputBufferPtr input, const char *URL, + const char *encoding, int options); + /* * Iterators */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderRead (xmlTextReaderPtr reader); #ifdef LIBXML_WRITER_ENABLED -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderReadInnerXml (xmlTextReaderPtr reader); - -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderReadOuterXml (xmlTextReaderPtr reader); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderReadInnerXml(xmlTextReaderPtr reader); + +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderReadOuterXml(xmlTextReaderPtr reader); #endif -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderReadString (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderReadAttributeValue (xmlTextReaderPtr reader); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderReadString (xmlTextReaderPtr reader); +XMLPUBFUN int XMLCALL + xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader); /* * Attributes of the node */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderAttributeCount(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderDepth (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderHasAttributes(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderHasValue(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderIsDefault (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderNodeType (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderQuoteChar (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderReadState (xmlTextReaderPtr reader); XMLPUBFUN int XMLCALL xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstBaseUri (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstLocalName (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstName (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstPrefix (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstXmlLang (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstString (xmlTextReaderPtr reader, - const xmlChar *str); -XMLPUBFUN const xmlChar * XMLCALL + const xmlChar *str); +XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstValue (xmlTextReaderPtr reader); /* * use the Const version of the routine for * better performance and simpler code */ -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderBaseUri (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderLocalName (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderName (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderNamespaceUri(xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderPrefix (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderXmlLang (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderValue (xmlTextReaderPtr reader); /* * Methods of the XmlTextReader */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderClose (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderGetAttributeNo (xmlTextReaderPtr reader, int no); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderGetAttribute (xmlTextReaderPtr reader, const xmlChar *name); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderGetAttributeNs (xmlTextReaderPtr reader, const xmlChar *localName, const xmlChar *namespaceURI); -XMLPUBFUN xmlParserInputBufferPtr XMLCALL +XMLPUBFUN xmlParserInputBufferPtr XMLCALL xmlTextReaderGetRemainder (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlTextReaderLookupNamespace(xmlTextReaderPtr reader, const xmlChar *prefix); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader, int no); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader, const xmlChar *name); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader, const xmlChar *localName, const xmlChar *namespaceURI); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderMoveToElement (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderNormalization (xmlTextReaderPtr reader); XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstEncoding (xmlTextReaderPtr reader); @@ -240,14 +246,14 @@ /* * Extensions */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderSetParserProp (xmlTextReaderPtr reader, int prop, int value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderGetParserProp (xmlTextReaderPtr reader, int prop); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlTextReaderCurrentNode (xmlTextReaderPtr reader); XMLPUBFUN int XMLCALL @@ -256,41 +262,46 @@ XMLPUBFUN int XMLCALL xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlTextReaderPreserve (xmlTextReaderPtr reader); #ifdef LIBXML_PATTERN_ENABLED -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderPreservePattern(xmlTextReaderPtr reader, - const xmlChar *pattern, + const xmlChar *pattern, const xmlChar **namespaces); #endif /* LIBXML_PATTERN_ENABLED */ -XMLPUBFUN xmlDocPtr XMLCALL +XMLPUBFUN xmlDocPtr XMLCALL xmlTextReaderCurrentDoc (xmlTextReaderPtr reader); -XMLPUBFUN xmlNodePtr XMLCALL +XMLPUBFUN xmlNodePtr XMLCALL xmlTextReaderExpand (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderNext (xmlTextReaderPtr reader); XMLPUBFUN int XMLCALL xmlTextReaderNextSibling (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderIsValid (xmlTextReaderPtr reader); #ifdef LIBXML_SCHEMAS_ENABLED -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader, const char *rng); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL + xmlTextReaderRelaxNGValidateCtxt(xmlTextReaderPtr reader, + xmlRelaxNGValidCtxtPtr ctxt, + int options); + +XMLPUBFUN int XMLCALL xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader, xmlRelaxNGPtr schema); XMLPUBFUN int XMLCALL xmlTextReaderSchemaValidate (xmlTextReaderPtr reader, - const char *xsd); + const char *xsd); XMLPUBFUN int XMLCALL xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader, xmlSchemaValidCtxtPtr ctxt, int options); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlTextReaderSetSchema (xmlTextReaderPtr reader, - xmlSchemaPtr schema); + xmlSchemaPtr schema); #endif XMLPUBFUN const xmlChar * XMLCALL xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader); @@ -376,33 +387,42 @@ * Error handling extensions */ typedef void * xmlTextReaderLocatorPtr; -typedef void (XMLCALL *xmlTextReaderErrorFunc) (void *arg, - const char *msg, - xmlParserSeverities severity, - xmlTextReaderLocatorPtr locator); -XMLPUBFUN int XMLCALL - xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator); -/*int xmlTextReaderLocatorLinePosition(xmlTextReaderLocatorPtr locator);*/ -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator); -XMLPUBFUN void XMLCALL - xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader, - xmlTextReaderErrorFunc f, - void *arg); + +/** + * xmlTextReaderErrorFunc: + * @arg: the user argument + * @msg: the message + * @severity: the severity of the error + * @locator: a locator indicating where the error occured + * + * Signature of an error callback from a reader parser + */ +typedef void (XMLCALL *xmlTextReaderErrorFunc)(void *arg, + const char *msg, + xmlParserSeverities severity, + xmlTextReaderLocatorPtr locator); +XMLPUBFUN int XMLCALL + xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator); +XMLPUBFUN xmlChar * XMLCALL + xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator); +XMLPUBFUN void XMLCALL + xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader, + xmlTextReaderErrorFunc f, + void *arg); XMLPUBFUN void XMLCALL - xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader, - xmlStructuredErrorFunc f, - void *arg); -XMLPUBFUN void XMLCALL - xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader, - xmlTextReaderErrorFunc *f, - void **arg); + xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader, + xmlStructuredErrorFunc f, + void *arg); +XMLPUBFUN void XMLCALL + xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader, + xmlTextReaderErrorFunc *f, + void **arg); + +#endif /* LIBXML_READER_ENABLED */ #ifdef __cplusplus } #endif -#endif /* LIBXML_READER_ENABLED */ - #endif /* __XML_XMLREADER_H__ */ diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlregexp.c gettext-0.19.7/gnulib-local/lib/libxml/xmlregexp.c --- gettext-0.19.6/gnulib-local/lib/libxml/xmlregexp.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlregexp.c 2015-12-23 07:08:27.000000000 +0000 @@ -1,7 +1,7 @@ /* * regexp.c: generic and extensible Regular Expression engine * - * Basically designed with the purpose of compiling regexps for + * Basically designed with the purpose of compiling regexps for * the variety of validation/shemas mechanisms now available in * XML related specifications these include: * - XML-1.0 DTD validation @@ -44,6 +44,9 @@ #define MAX_PUSH 10000000 +#ifdef ERROR +#undef ERROR +#endif #define ERROR(str) \ ctxt->error = XML_REGEXP_COMPILE_ERROR; \ xmlRegexpErrCompile(ctxt, str); @@ -54,21 +57,26 @@ #define CUR_SCHAR(s, l) xmlStringCurrentChar(NULL, s, &l) #define NEXTL(l) ctxt->cur += l; #define XML_REG_STRING_SEPARATOR '|' +/* + * Need PREV to check on a '-' within a Character Group. May only be used + * when it's guaranteed that cur is not at the beginning of ctxt->string! + */ +#define PREV (ctxt->cur[-1]) /** * TODO: * * macro to flag unimplemented blocks */ -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); /************************************************************************ - * * - * Datatypes and structures * - * * + * * + * Datatypes and structures * + * * ************************************************************************/ /* @@ -145,7 +153,8 @@ XML_REGEXP_START_STATE = 1, XML_REGEXP_FINAL_STATE, XML_REGEXP_TRANS_STATE, - XML_REGEXP_SINK_STATE + XML_REGEXP_SINK_STATE, + XML_REGEXP_UNREACH_STATE } xmlRegStateType; typedef enum { @@ -183,6 +192,7 @@ int neg; int codepoint; xmlRegStatePtr start; + xmlRegStatePtr start0; xmlRegStatePtr stop; int maxRanges; int nbRanges; @@ -212,6 +222,7 @@ struct _xmlAutomataState { xmlRegStateType type; xmlRegMarkedType mark; + xmlRegMarkedType markd; xmlRegMarkedType reached; int no; int maxTrans; @@ -226,6 +237,8 @@ typedef struct _xmlAutomata xmlRegParserCtxt; typedef xmlRegParserCtxt *xmlRegParserCtxtPtr; +#define AM_AUTOMATA_RNG 1 + struct _xmlAutomata { xmlChar *string; xmlChar *cur; @@ -253,6 +266,7 @@ int determinist; int negs; + int flags; }; struct _xmlRegexp { @@ -264,6 +278,7 @@ int nbCounters; xmlRegCounter *counters; int determinist; + int flags; /* * That's the compact form for determinists automatas */ @@ -346,9 +361,11 @@ static int xmlRegCheckCharacterRange(xmlRegAtomType type, int codepoint, int neg, int start, int end, const xmlChar *blockName); +void xmlAutomataSetFlags(xmlAutomataPtr am, int flags); + /************************************************************************ * * - * Regexp memory error handler * + * Regexp memory error handler * * * ************************************************************************/ /** @@ -395,9 +412,9 @@ } /************************************************************************ - * * - * Allocation/Deallocation * - * * + * * + * Allocation/Deallocation * + * * ************************************************************************/ static int xmlFAComputesDeterminism(xmlRegParserCtxtPtr ctxt); @@ -427,6 +444,7 @@ ret->nbCounters = ctxt->nbCounters; ret->counters = ctxt->counters; ret->determinist = ctxt->determinist; + ret->flags = ctxt->flags; if (ret->determinist == -1) { xmlRegexpIsDeterminist(ret); } @@ -727,11 +745,41 @@ } /** + * xmlRegCopyRange: + * @range: the regexp range + * + * Copy a regexp range + * + * Returns the new copy or NULL in case of error. + */ +static xmlRegRangePtr +xmlRegCopyRange(xmlRegParserCtxtPtr ctxt, xmlRegRangePtr range) { + xmlRegRangePtr ret; + + if (range == NULL) + return(NULL); + + ret = xmlRegNewRange(ctxt, range->neg, range->type, range->start, + range->end); + if (ret == NULL) + return(NULL); + if (range->blockName != NULL) { + ret->blockName = xmlStrdup(range->blockName); + if (ret->blockName == NULL) { + xmlRegexpErrMemory(ctxt, "allocating range"); + xmlRegFreeRange(ret); + return(NULL); + } + } + return(ret); +} + +/** * xmlRegNewAtom: * @ctxt: the regexp parser context * @type: the type of atom * - * Allocate a new regexp range + * Allocate a new atom * * Returns the new atom or NULL in case of error */ @@ -778,6 +826,52 @@ xmlFree(atom); } +/** + * xmlRegCopyAtom: + * @ctxt: the regexp parser context + * @atom: the oiginal atom + * + * Allocate a new regexp range + * + * Returns the new atom or NULL in case of error + */ +static xmlRegAtomPtr +xmlRegCopyAtom(xmlRegParserCtxtPtr ctxt, xmlRegAtomPtr atom) { + xmlRegAtomPtr ret; + + ret = (xmlRegAtomPtr) xmlMalloc(sizeof(xmlRegAtom)); + if (ret == NULL) { + xmlRegexpErrMemory(ctxt, "copying atom"); + return(NULL); + } + memset(ret, 0, sizeof(xmlRegAtom)); + ret->type = atom->type; + ret->quant = atom->quant; + ret->min = atom->min; + ret->max = atom->max; + if (atom->nbRanges > 0) { + int i; + + ret->ranges = (xmlRegRangePtr *) xmlMalloc(sizeof(xmlRegRangePtr) * + atom->nbRanges); + if (ret->ranges == NULL) { + xmlRegexpErrMemory(ctxt, "copying atom"); + goto error; + } + for (i = 0;i < atom->nbRanges;i++) { + ret->ranges[i] = xmlRegCopyRange(ctxt, atom->ranges[i]); + if (ret->ranges[i] == NULL) + goto error; + ret->nbRanges = i + 1; + } + } + return(ret); + +error: + xmlRegFreeAtom(ret); + return(NULL); +} + static xmlRegStatePtr xmlRegNewState(xmlRegParserCtxtPtr ctxt) { xmlRegStatePtr ret; @@ -841,9 +935,9 @@ } /************************************************************************ - * * - * Display of Data structures * - * * + * * + * Display of Data structures * + * * ************************************************************************/ static void @@ -1050,7 +1144,7 @@ fprintf(output, "char %c ", trans->atom->codepoint); fprintf(output, "atom %d, to %d\n", trans->atom->no, trans->to); } - + static void xmlRegPrintState(FILE *output, xmlRegStatePtr state) { int i; @@ -1064,7 +1158,7 @@ fprintf(output, "START "); if (state->type == XML_REGEXP_FINAL_STATE) fprintf(output, "FINAL "); - + fprintf(output, "%d, %d transitions:\n", state->no, state->nbTrans); for (i = 0;i < state->nbTrans; i++) { xmlRegPrintTrans(output, &(state->trans[i])); @@ -1114,12 +1208,12 @@ #endif /************************************************************************ - * * + * * * Finite Automata structures manipulations * - * * + * * ************************************************************************/ -static void +static void xmlRegAtomAddRange(xmlRegParserCtxtPtr ctxt, xmlRegAtomPtr atom, int neg, xmlRegAtomType type, int start, int end, xmlChar *blockName) { @@ -1159,7 +1253,7 @@ return; range->blockName = blockName; atom->ranges[atom->nbRanges++] = range; - + } static int @@ -1190,7 +1284,7 @@ return(ctxt->nbCounters++); } -static int +static int xmlRegAtomPush(xmlRegParserCtxtPtr ctxt, xmlRegAtomPtr atom) { if (atom == NULL) { ERROR("atom push: atom is NULL"); @@ -1222,7 +1316,7 @@ return(0); } -static void +static void xmlRegStateAddTransTo(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr target, int from) { if (target->maxTransTo == 0) { @@ -1250,7 +1344,7 @@ target->nbTransTo++; } -static void +static void xmlRegStateAddTrans(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr state, xmlRegAtomPtr atom, xmlRegStatePtr target, int counter, int count) { @@ -1316,7 +1410,7 @@ printf("counted %d\n", counter); else if (atom == NULL) printf("epsilon transition\n"); - else if (atom != NULL) + else if (atom != NULL) xmlRegPrintAtom(stdout, atom); #endif @@ -1449,6 +1543,8 @@ static int xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from, xmlRegStatePtr to, xmlRegAtomPtr atom) { + xmlRegStatePtr end; + if (atom == NULL) { ERROR("genrate transition: atom == NULL"); return(-1); @@ -1468,7 +1564,7 @@ */ xmlFAGenerateEpsilonTransition(ctxt, atom->stop, to); #ifdef DV - } else if ((to == NULL) && (atom->quant != XML_REGEXP_QUANT_RANGE) && + } else if ((to == NULL) && (atom->quant != XML_REGEXP_QUANT_RANGE) && (atom->quant != XML_REGEXP_QUANT_ONCE)) { to = xmlRegNewState(ctxt); xmlRegStatePush(ctxt, to); @@ -1482,10 +1578,15 @@ /* * transition done to the state after end of atom. * 1. set transition from atom start to new state - * 2. set transition from atom end to this state. + * 2. set transition from atom end to this state. */ - xmlFAGenerateEpsilonTransition(ctxt, atom->start, 0); - xmlFAGenerateEpsilonTransition(ctxt, atom->stop, ctxt->state); + if (to == NULL) { + xmlFAGenerateEpsilonTransition(ctxt, atom->start, 0); + xmlFAGenerateEpsilonTransition(ctxt, atom->stop, + ctxt->state); + } else { + xmlFAGenerateEpsilonTransition(ctxt, atom->start, to); + } break; case XML_REGEXP_QUANT_MULT: atom->quant = XML_REGEXP_QUANT_ONCE; @@ -1498,58 +1599,89 @@ break; case XML_REGEXP_QUANT_RANGE: { int counter; - xmlRegStatePtr newstate; + xmlRegStatePtr inter, newstate; /* - * This one is nasty: - * 1/ if range has minOccurs == 0, create a new state - * and create epsilon transitions from atom->start - * to atom->stop, as well as atom->start to the new - * state - * 2/ register a new counter - * 3/ register an epsilon transition associated to - * this counter going from atom->stop to atom->start - * 4/ create a new state - * 5/ generate a counted transition from atom->stop to - * that state + * create the final state now if needed */ - if (atom->min == 0) { - xmlFAGenerateEpsilonTransition(ctxt, atom->start, - atom->stop); + if (to != NULL) { + newstate = to; + } else { newstate = xmlRegNewState(ctxt); xmlRegStatePush(ctxt, newstate); - ctxt->state = newstate; + } + + /* + * The principle here is to use counted transition + * to avoid explosion in the number of states in the + * graph. This is clearly more complex but should not + * be exploitable at runtime. + */ + if ((atom->min == 0) && (atom->start0 == NULL)) { + xmlRegAtomPtr copy; + /* + * duplicate a transition based on atom to count next + * occurences after 1. We cannot loop to atom->start + * directly because we need an epsilon transition to + * newstate. + */ + /* ???? For some reason it seems we never reach that + case, I suppose this got optimized out before when + building the automata */ + copy = xmlRegCopyAtom(ctxt, atom); + if (copy == NULL) + return(-1); + copy->quant = XML_REGEXP_QUANT_ONCE; + copy->min = 0; + copy->max = 0; + + if (xmlFAGenerateTransitions(ctxt, atom->start, NULL, copy) + < 0) + return(-1); + inter = ctxt->state; + counter = xmlRegGetCounter(ctxt); + ctxt->counters[counter].min = atom->min - 1; + ctxt->counters[counter].max = atom->max - 1; + /* count the number of times we see it again */ + xmlFAGenerateCountedEpsilonTransition(ctxt, inter, + atom->stop, counter); + /* allow a way out based on the count */ + xmlFAGenerateCountedTransition(ctxt, inter, + newstate, counter); + /* and also allow a direct exit for 0 */ xmlFAGenerateEpsilonTransition(ctxt, atom->start, - newstate); + newstate); + } else { + /* + * either we need the atom at least once or there + * is an atom->start0 allowing to easilly plug the + * epsilon transition. + */ + counter = xmlRegGetCounter(ctxt); + ctxt->counters[counter].min = atom->min - 1; + ctxt->counters[counter].max = atom->max - 1; + /* count the number of times we see it again */ + xmlFAGenerateCountedEpsilonTransition(ctxt, atom->stop, + atom->start, counter); + /* allow a way out based on the count */ + xmlFAGenerateCountedTransition(ctxt, atom->stop, + newstate, counter); + /* and if needed allow a direct exit for 0 */ + if (atom->min == 0) + xmlFAGenerateEpsilonTransition(ctxt, atom->start0, + newstate); + } - counter = xmlRegGetCounter(ctxt); - ctxt->counters[counter].min = atom->min - 1; - ctxt->counters[counter].max = atom->max - 1; atom->min = 0; atom->max = 0; atom->quant = XML_REGEXP_QUANT_ONCE; - if (to != NULL) { - newstate = to; - } else { - newstate = xmlRegNewState(ctxt); - xmlRegStatePush(ctxt, newstate); - } ctxt->state = newstate; - xmlFAGenerateCountedTransition(ctxt, atom->stop, - newstate, counter); - - /* - * first check count and if OK jump forward; - * if checking fail increment count and jump back - */ - xmlFAGenerateCountedEpsilonTransition(ctxt, atom->stop, - atom->start, counter); } default: break; } return(0); - } + } if ((atom->min == 0) && (atom->max == 0) && (atom->quant == XML_REGEXP_QUANT_RANGE)) { /* @@ -1576,11 +1708,30 @@ return(-1); } } + end = to; + if ((atom->quant == XML_REGEXP_QUANT_MULT) || + (atom->quant == XML_REGEXP_QUANT_PLUS)) { + /* + * Do not pollute the target state by adding transitions from + * it as it is likely to be the shared target of multiple branches. + * So isolate with an epsilon transition. + */ + xmlRegStatePtr tmp; + + tmp = xmlRegNewState(ctxt); + if (tmp != NULL) + xmlRegStatePush(ctxt, tmp); + else { + return(-1); + } + xmlFAGenerateEpsilonTransition(ctxt, tmp, to); + to = tmp; + } if (xmlRegAtomPush(ctxt, atom) < 0) { return(-1); } xmlRegStateAddTrans(ctxt, from, atom, to, -1, -1); - ctxt->state = to; + ctxt->state = end; switch (atom->quant) { case XML_REGEXP_QUANT_OPT: atom->quant = XML_REGEXP_QUANT_ONCE; @@ -1595,6 +1746,13 @@ atom->quant = XML_REGEXP_QUANT_ONCE; xmlRegStateAddTrans(ctxt, to, atom, to, -1, -1); break; + case XML_REGEXP_QUANT_RANGE: +#if DV_test + if (atom->min == 0) { + xmlFAGenerateEpsilonTransition(ctxt, from, to); + } +#endif + break; default: break; } @@ -1605,7 +1763,7 @@ * xmlFAReduceEpsilonTransitions: * @ctxt: a regexp parser context * @fromnr: the from state - * @tonr: the to state + * @tonr: the to state * @counter: should that transition be associated to a counted * */ @@ -1649,7 +1807,7 @@ int newto = to->trans[transnr].to; xmlRegStateAddTrans(ctxt, from, NULL, - ctxt->states[newto], + ctxt->states[newto], -1, to->trans[transnr].count); } else { #ifdef DEBUG_REGEXP_GRAPH @@ -1671,11 +1829,11 @@ int newto = to->trans[transnr].to; if (to->trans[transnr].counter >= 0) { - xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom, - ctxt->states[newto], + xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom, + ctxt->states[newto], to->trans[transnr].counter, -1); } else { - xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom, + xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom, ctxt->states[newto], counter, -1); } } @@ -1687,7 +1845,7 @@ * xmlFAEliminateSimpleEpsilonTransitions: * @ctxt: a regexp parser context * - * Eliminating general epsilon transitions can get costly in the general + * Eliminating general epsilon transitions can get costly in the general * algorithm due to the large amount of generated new transitions and * associated comparisons. However for simple epsilon transition used just * to separate building blocks when generating the automata this can be @@ -1709,6 +1867,8 @@ continue; if (state->nbTrans != 1) continue; + if (state->type == XML_REGEXP_UNREACH_STATE) + continue; /* is the only transition out a basic transition */ if ((state->trans[0].atom == NULL) && (state->trans[0].to >= 0) && @@ -1721,48 +1881,37 @@ #ifdef DEBUG_REGEXP_GRAPH printf("Found simple epsilon trans from start %d to %d\n", statenr, newto); -#endif +#endif } else { #ifdef DEBUG_REGEXP_GRAPH printf("Found simple epsilon trans from %d to %d\n", statenr, newto); -#endif +#endif for (i = 0;i < state->nbTransTo;i++) { tmp = ctxt->states[state->transTo[i]]; for (j = 0;j < tmp->nbTrans;j++) { if (tmp->trans[j].to == statenr) { - tmp->trans[j].to = newto; -#ifdef DEBUG_REGEXP_GRAPH - printf("Changed transition %d on %d to go to %d\n", - j, tmp->no, newto); -#endif - xmlRegStateAddTransTo(ctxt, ctxt->states[newto], - tmp->no); - } - } - } -#if 0 - for (i = 0;i < ctxt->nbStates;i++) { - tmp = ctxt->states[i]; - for (j = 0;j < tmp->nbTrans;j++) { - if (tmp->trans[j].to == statenr) { - tmp->trans[j].to = newto; #ifdef DEBUG_REGEXP_GRAPH printf("Changed transition %d on %d to go to %d\n", j, tmp->no, newto); -#endif +#endif + tmp->trans[j].to = -1; + xmlRegStateAddTrans(ctxt, tmp, tmp->trans[j].atom, + ctxt->states[newto], + tmp->trans[j].counter, + tmp->trans[j].count); } } } -#endif if (state->type == XML_REGEXP_FINAL_STATE) ctxt->states[newto]->type = XML_REGEXP_FINAL_STATE; /* eliminate the transition completely */ state->nbTrans = 0; + state->type = XML_REGEXP_UNREACH_STATE; } - + } } } @@ -1779,16 +1928,33 @@ if (ctxt->states == NULL) return; + /* + * Eliminate simple epsilon transition and the associated unreachable + * states. + */ xmlFAEliminateSimpleEpsilonTransitions(ctxt); + for (statenr = 0;statenr < ctxt->nbStates;statenr++) { + state = ctxt->states[statenr]; + if ((state != NULL) && (state->type == XML_REGEXP_UNREACH_STATE)) { +#ifdef DEBUG_REGEXP_GRAPH + printf("Removed unreachable state %d\n", statenr); +#endif + xmlRegFreeState(state); + ctxt->states[statenr] = NULL; + } + } has_epsilon = 0; /* - * build the completed transitions bypassing the epsilons + * Build the completed transitions bypassing the epsilons * Use a marking algorithm to avoid loops - * mark sink states too. + * Mark sink states too. + * Process from the latests states backward to the start when + * there is long cascading epsilon chains this minimize the + * recursions and transition compares when adding the new ones */ - for (statenr = 0;statenr < ctxt->nbStates;statenr++) { + for (statenr = ctxt->nbStates - 1;statenr >= 0;statenr--) { state = ctxt->states[statenr]; if (state == NULL) continue; @@ -1812,8 +1978,9 @@ printf("Found epsilon trans %d from %d to %d\n", transnr, statenr, newto); #endif - state->mark = XML_REGEXP_MARK_START; has_epsilon = 1; + state->trans[transnr].to = -2; + state->mark = XML_REGEXP_MARK_START; xmlFAReduceEpsilonTransitions(ctxt, statenr, newto, state->trans[transnr].counter); state->mark = XML_REGEXP_MARK_NORMAL; @@ -1932,12 +2099,13 @@ (range2->type == XML_REGEXP_EPSILON)) { return(0); } else if (range1->type == range2->type) { - if ((range1->type != XML_REGEXP_CHARVAL) || - (range1->end < range2->start) || - (range2->end < range1->start)) - ret = 1; - else + if (range1->type != XML_REGEXP_CHARVAL) + ret = 1; + else if ((range1->end < range2->start) || + (range2->end < range1->start)) ret = 0; + else + ret = 1; } else if (range1->type == XML_REGEXP_CHARVAL) { int codepoint; int neg = 0; @@ -1945,7 +2113,7 @@ /* * just check all codepoints in the range for acceptance, * this is usually way cheaper since done only once at - * compilation than testing over and over at runtime or + * compilation than testing over and over at runtime or * pushing too many states when evaluating. */ if (((range1->neg == 0) && (range2->neg != 0)) || @@ -2064,7 +2232,7 @@ if (((range1->neg == 0) && (range2->neg != 0)) || ((range1->neg != 0) && (range2->neg == 0))) ret = !ret; - return(1); + return(ret); } /** @@ -2272,6 +2440,7 @@ * xmlFAEqualAtoms: * @atom1: an atom * @atom2: an atom + * @deep: if not set only compare string pointers * * Compares two atoms to check whether they are the same exactly * this is used to remove equivalent transitions @@ -2279,7 +2448,7 @@ * Returns 1 if same and 0 otherwise */ static int -xmlFAEqualAtoms(xmlRegAtomPtr atom1, xmlRegAtomPtr atom2) { +xmlFAEqualAtoms(xmlRegAtomPtr atom1, xmlRegAtomPtr atom2, int deep) { int ret = 0; if (atom1 == atom2) @@ -2294,8 +2463,11 @@ ret = 0; break; case XML_REGEXP_STRING: - ret = xmlStrEqual((xmlChar *)atom1->valuep, - (xmlChar *)atom2->valuep); + if (!deep) + ret = (atom1->valuep == atom2->valuep); + else + ret = xmlStrEqual((xmlChar *)atom1->valuep, + (xmlChar *)atom2->valuep); break; case XML_REGEXP_CHARVAL: ret = (atom1->codepoint == atom2->codepoint); @@ -2313,6 +2485,7 @@ * xmlFACompareAtoms: * @atom1: an atom * @atom2: an atom + * @deep: if not set only compare string pointers * * Compares two atoms to check whether they intersect in some ways, * this is used by xmlFAComputesDeterminism and xmlFARecurseDeterminism only @@ -2320,7 +2493,7 @@ * Returns 1 if yes and 0 otherwise */ static int -xmlFACompareAtoms(xmlRegAtomPtr atom1, xmlRegAtomPtr atom2) { +xmlFACompareAtoms(xmlRegAtomPtr atom1, xmlRegAtomPtr atom2, int deep) { int ret = 1; if (atom1 == atom2) @@ -2346,8 +2519,11 @@ } switch (atom1->type) { case XML_REGEXP_STRING: - ret = xmlRegStrEqualWildcard((xmlChar *)atom1->valuep, - (xmlChar *)atom2->valuep); + if (!deep) + ret = (atom1->valuep != atom2->valuep); + else + ret = xmlRegStrEqualWildcard((xmlChar *)atom1->valuep, + (xmlChar *)atom2->valuep); break; case XML_REGEXP_EPSILON: goto not_determinist; @@ -2410,9 +2586,16 @@ int res; int transnr, nbTrans; xmlRegTransPtr t1; + int deep = 1; if (state == NULL) return(ret); + if (state->markd == XML_REGEXP_MARK_VISITED) + return(ret); + + if (ctxt->flags & AM_AUTOMATA_RNG) + deep = 0; + /* * don't recurse on transitions potentially added in the course of * the elimination. @@ -2424,10 +2607,12 @@ * check transitions conflicting with the one looked at */ if (t1->atom == NULL) { - if (t1->to == -1) + if (t1->to < 0) continue; + state->markd = XML_REGEXP_MARK_VISITED; res = xmlFARecurseDeterminism(ctxt, ctxt->states[t1->to], to, atom); + state->markd = 0; if (res == 0) { ret = 0; /* t1->nd = 1; */ @@ -2436,7 +2621,7 @@ } if (t1->to != to) continue; - if (xmlFACompareAtoms(t1->atom, atom)) { + if (xmlFACompareAtoms(t1->atom, atom, deep)) { ret = 0; /* mark the transition as non-deterministic */ t1->nd = 1; @@ -2460,6 +2645,7 @@ xmlRegTransPtr t1, t2, last; int i; int ret = 1; + int deep = 1; #ifdef DEBUG_REGEXP_GRAPH printf("xmlFAComputesDeterminism\n"); @@ -2468,6 +2654,9 @@ if (ctxt->determinist != -1) return(ctxt->determinist); + if (ctxt->flags & AM_AUTOMATA_RNG) + deep = 0; + /* * First cleanup the automata removing cancelled transitions */ @@ -2495,7 +2684,13 @@ continue; if (t2->atom != NULL) { if (t1->to == t2->to) { - if (xmlFAEqualAtoms(t1->atom, t2->atom)) + /* + * Here we use deep because we want to keep the + * transitions which indicate a conflict + */ + if (xmlFAEqualAtoms(t1->atom, t2->atom, deep) && + (t1->counter == t2->counter) && + (t1->count == t2->count)) t2->to = -1; /* eliminated */ } } @@ -2530,8 +2725,11 @@ if (t2->to == -1) /* eliminated */ continue; if (t2->atom != NULL) { - /* not determinist ! */ - if (xmlFACompareAtoms(t1->atom, t2->atom)) { + /* + * But here we don't use deep because we want to + * find transitions which indicate a conflict + */ + if (xmlFACompareAtoms(t1->atom, t2->atom, 1)) { ret = 0; /* mark the transitions as non-deterministic ones */ t1->nd = 1; @@ -2583,9 +2781,9 @@ } /************************************************************************ - * * + * * * Routines to check input against transition atoms * - * * + * * ************************************************************************/ static int @@ -2614,7 +2812,7 @@ case XML_REGEXP_NOTINITNAME: neg = !neg; case XML_REGEXP_INITNAME: - ret = (IS_LETTER(codepoint) || + ret = (IS_LETTER(codepoint) || (codepoint == '_') || (codepoint == ':')); break; case XML_REGEXP_NOTNAMECHAR: @@ -2862,9 +3060,9 @@ } /************************************************************************ - * * + * * * Saving and restoring state of an execution context * - * * + * * ************************************************************************/ #ifdef DEBUG_REGEXP_EXEC @@ -2875,7 +3073,8 @@ int i; printf(": "); for (i = 0;(i < 3) && (i < exec->inputStackNr);i++) - printf("%s ", exec->inputStack[exec->inputStackNr - (i + 1)]); + printf("%s ", (const char *) + exec->inputStack[exec->inputStackNr - (i + 1)].value); } else { printf(": %s", &(exec->inputString[exec->index])); } @@ -2963,8 +3162,10 @@ exec->status = -6; return; } - memcpy(exec->counts, exec->rollbacks[exec->nbRollbacks].counts, + if (exec->counts) { + memcpy(exec->counts, exec->rollbacks[exec->nbRollbacks].counts, exec->comp->nbCounters * sizeof(int)); + } } #ifdef DEBUG_REGEXP_EXEC @@ -2974,9 +3175,9 @@ } /************************************************************************ - * * + * * * Verifier, running an input against a compiled regexp * - * * + * * ************************************************************************/ static int @@ -3008,9 +3209,10 @@ memset(exec->counts, 0, comp->nbCounters * sizeof(int)); } else exec->counts = NULL; - while ((exec->status == 0) && + while ((exec->status == 0) && (exec->state != NULL) && ((exec->inputString[exec->index] != 0) || - (exec->state->type != XML_REGEXP_FINAL_STATE))) { + ((exec->state != NULL) && + (exec->state->type != XML_REGEXP_FINAL_STATE)))) { xmlRegTransPtr trans; xmlRegAtomPtr atom; @@ -3081,12 +3283,22 @@ * this is a multiple input sequence * If there is a counter associated increment it now. * before potentially saving and rollback + * do not increment if the counter is already over the + * maximum limit in which case get to next transition */ if (trans->counter >= 0) { - if (exec->counts == NULL) { + xmlRegCounterPtr counter; + + if ((exec->counts == NULL) || + (exec->comp == NULL) || + (exec->comp->counters == NULL)) { exec->status = -1; goto error; } + counter = &exec->comp->counters[trans->counter]; + if (exec->counts[trans->counter] >= counter->max) + continue; /* for loop on transitions */ + #ifdef DEBUG_REGEXP_EXEC printf("Increasing count %d\n", trans->counter); #endif @@ -3182,10 +3394,18 @@ xmlFARegExecSave(exec); } if (trans->counter >= 0) { - if (exec->counts == NULL) { - exec->status = -1; + xmlRegCounterPtr counter; + + /* make sure we don't go over the counter maximum value */ + if ((exec->counts == NULL) || + (exec->comp == NULL) || + (exec->comp->counters == NULL)) { + exec->status = -1; goto error; } + counter = &exec->comp->counters[trans->counter]; + if (exec->counts[trans->counter] >= counter->max) + continue; /* for loop on transitions */ #ifdef DEBUG_REGEXP_EXEC printf("Increasing count %d\n", trans->counter); #endif @@ -3243,6 +3463,8 @@ } xmlFree(exec->rollbacks); } + if (exec->state == NULL) + return(-1); if (exec->counts != NULL) xmlFree(exec->counts); if (exec->status == 0) @@ -3256,9 +3478,9 @@ } /************************************************************************ - * * + * * * Progressive interface to the verifier one atom at a time * - * * + * * ************************************************************************/ #ifdef DEBUG_ERR static void testerr(xmlRegExecCtxtPtr exec); @@ -3375,7 +3597,7 @@ #endif if (exec->inputStackMax == 0) { exec->inputStackMax = 4; - exec->inputStack = (xmlRegInputTokenPtr) + exec->inputStack = (xmlRegInputTokenPtr) xmlMalloc(exec->inputStackMax * sizeof(xmlRegInputToken)); if (exec->inputStack == NULL) { xmlRegexpErrMemory(NULL, "pushing input string"); @@ -3404,11 +3626,11 @@ /** * xmlRegStrEqualWildcard: - * @expStr: the string to be evaluated + * @expStr: the string to be evaluated * @valStr: the validation string * * Checks if both strings are equal or have the same content. "*" - * can be used as a wildcard in @valStr; "|" is used as a seperator of + * can be used as a wildcard in @valStr; "|" is used as a seperator of * substrings in both @expStr and @valStr. * * Returns 1 if the comparison is satisfied and the number of substrings @@ -3474,7 +3696,7 @@ if ((comp == NULL) || (comp->compact == NULL) || (comp->stringMap == NULL)) return(-1); - + if (value == NULL) { /* * are we at a final state ? @@ -3495,9 +3717,9 @@ for (i = 0;i < comp->nbstrings;i++) { target = comp->compact[state * (comp->nbstrings + 1) + i + 1]; if ((target > 0) && (target <= comp->nbstates)) { - target--; /* to avoid 0 */ + target--; /* to avoid 0 */ if (xmlRegStrEqualWildcard(comp->stringMap[i], value)) { - exec->index = target; + exec->index = target; if ((exec->callback != NULL) && (comp->transdata != NULL)) { exec->callback(exec->data, value, comp->transdata[state * comp->nbstrings + i], data); @@ -3631,7 +3853,7 @@ continue; counter = &exec->comp->counters[t->counter]; count = exec->counts[t->counter]; - if ((count < counter->max) && + if ((count < counter->max) && (t->atom != NULL) && (xmlStrEqual(value, t->atom->valuep))) { ret = 0; @@ -3871,7 +4093,7 @@ */ exec->determinist = 0; xmlFARegExecRollBack(exec); - if (exec->status == 0) { + if ((exec->inputStack != NULL ) && (exec->status == 0)) { value = exec->inputStack[exec->index].value; data = exec->inputStack[exec->index].data; #ifdef DEBUG_PUSH @@ -3989,7 +4211,7 @@ int maxval; int nb = 0; - if ((exec == NULL) || (nbval == NULL) || (nbneg == NULL) || + if ((exec == NULL) || (nbval == NULL) || (nbneg == NULL) || (values == NULL) || (*nbval <= 0)) return(-1); @@ -4086,7 +4308,7 @@ (*nbval)++; } } else { - if ((exec->comp->states[trans->to] != NULL) && + if ((exec->comp != NULL) && (exec->comp->states[trans->to] != NULL) && (exec->comp->states[trans->to]->type != XML_REGEXP_SINK_STATE)) { if (atom->neg) @@ -4095,7 +4317,7 @@ values[nb++] = (xmlChar *) atom->valuep; (*nbval)++; } - } + } } for (transno = 0; (transno < state->nbTrans) && (nb < maxval); @@ -4122,7 +4344,7 @@ values[nb++] = (xmlChar *) atom->valuep; (*nbneg)++; } - } + } } } return(0); @@ -4353,10 +4575,10 @@ } #endif /************************************************************************ - * * + * * * Parser for the Schemas Datatype Regular Expressions * * http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#regexs * - * * + * * ************************************************************************/ /** @@ -4385,7 +4607,7 @@ * * [27] charProp ::= IsCategory | IsBlock * [28] IsCategory ::= Letters | Marks | Numbers | Punctuation | - * Separators | Symbols | Others + * Separators | Symbols | Others * [29] Letters ::= 'L' [ultmo]? * [30] Marks ::= 'M' [nce]? * [31] Numbers ::= 'N' [dlo]? @@ -4400,7 +4622,7 @@ int cur; xmlRegAtomType type = (xmlRegAtomType) 0; xmlChar *blockName = NULL; - + cur = CUR; if (cur == 'L') { NEXT; @@ -4572,15 +4794,15 @@ NEXT; start = ctxt->cur; cur = CUR; - if (((cur >= 'a') && (cur <= 'z')) || - ((cur >= 'A') && (cur <= 'Z')) || - ((cur >= '0') && (cur <= '9')) || + if (((cur >= 'a') && (cur <= 'z')) || + ((cur >= 'A') && (cur <= 'Z')) || + ((cur >= '0') && (cur <= '9')) || (cur == 0x2D)) { NEXT; cur = CUR; - while (((cur >= 'a') && (cur <= 'z')) || - ((cur >= 'A') && (cur <= 'Z')) || - ((cur >= '0') && (cur <= '9')) || + while (((cur >= 'a') && (cur <= 'z')) || + ((cur >= 'A') && (cur <= 'Z')) || + ((cur >= '0') && (cur <= '9')) || (cur == 0x2D)) { NEXT; cur = CUR; @@ -4606,7 +4828,7 @@ * xmlFAParseCharClassEsc: * @ctxt: a regexp parser context * - * [23] charClassEsc ::= ( SingleCharEsc | MultiCharEsc | catEsc | complEsc ) + * [23] charClassEsc ::= ( SingleCharEsc | MultiCharEsc | catEsc | complEsc ) * [24] SingleCharEsc ::= '\' [nrt\|.?*+(){}#x2D#x5B#x5D#x5E] * [25] catEsc ::= '\p{' charProp '}' * [26] complEsc ::= '\P{' charProp '}' @@ -4682,6 +4904,17 @@ } } } else if (ctxt->atom->type == XML_REGEXP_RANGES) { + switch (cur) { + case 'n': + cur = '\n'; + break; + case 'r': + cur = '\r'; + break; + case 't': + cur = '\t'; + break; + } xmlRegAtomAddRange(ctxt, ctxt->atom, ctxt->neg, XML_REGEXP_CHARVAL, cur, cur, NULL); } @@ -4692,34 +4925,34 @@ xmlRegAtomType type = XML_REGEXP_ANYSPACE; switch (cur) { - case 's': + case 's': type = XML_REGEXP_ANYSPACE; break; - case 'S': + case 'S': type = XML_REGEXP_NOTSPACE; break; - case 'i': + case 'i': type = XML_REGEXP_INITNAME; break; - case 'I': + case 'I': type = XML_REGEXP_NOTINITNAME; break; - case 'c': + case 'c': type = XML_REGEXP_NAMECHAR; break; - case 'C': + case 'C': type = XML_REGEXP_NOTNAMECHAR; break; - case 'd': + case 'd': type = XML_REGEXP_DECIMAL; break; - case 'D': + case 'D': type = XML_REGEXP_NOTDECIMAL; break; - case 'w': + case 'w': type = XML_REGEXP_REALCHAR; break; - case 'W': + case 'W': type = XML_REGEXP_NOTREALCHAR; break; } @@ -4730,72 +4963,16 @@ xmlRegAtomAddRange(ctxt, ctxt->atom, ctxt->neg, type, 0, 0, NULL); } - } -} - -/** - * xmlFAParseCharRef: - * @ctxt: a regexp parser context - * - * [19] XmlCharRef ::= ( '&#' [0-9]+ ';' ) | (' &#x' [0-9a-fA-F]+ ';' ) - */ -static int -xmlFAParseCharRef(xmlRegParserCtxtPtr ctxt) { - int ret = 0, cur; - - if ((CUR != '&') || (NXT(1) != '#')) - return(-1); - NEXT; - NEXT; - cur = CUR; - if (cur == 'x') { - NEXT; - cur = CUR; - if (((cur >= '0') && (cur <= '9')) || - ((cur >= 'a') && (cur <= 'f')) || - ((cur >= 'A') && (cur <= 'F'))) { - while (((cur >= '0') && (cur <= '9')) || - ((cur >= 'a') && (cur <= 'f')) || - ((cur >= 'A') && (cur <= 'F'))) { - if ((cur >= '0') && (cur <= '9')) - ret = ret * 16 + cur - '0'; - else if ((cur >= 'a') && (cur <= 'f')) - ret = ret * 16 + 10 + (cur - 'a'); - else - ret = ret * 16 + 10 + (cur - 'A'); - NEXT; - cur = CUR; - } - } else { - ERROR("Char ref: expecting [0-9A-F]"); - return(-1); - } - } else { - if ((cur >= '0') && (cur <= '9')) { - while ((cur >= '0') && (cur <= '9')) { - ret = ret * 10 + cur - '0'; - NEXT; - cur = CUR; - } - } else { - ERROR("Char ref: expecting [0-9]"); - return(-1); - } - } - if (cur != ';') { - ERROR("Char ref: expecting ';'"); - return(-1); } else { - NEXT; + ERROR("Wrong escape sequence, misuse of character '\\'"); } - return(ret); } /** * xmlFAParseCharRange: * @ctxt: a regexp parser context * - * [17] charRange ::= seRange | XmlCharRef | XmlCharIncDash + * [17] charRange ::= seRange | XmlCharRef | XmlCharIncDash * [18] seRange ::= charOrEsc '-' charOrEsc * [20] charOrEsc ::= XmlChar | SingleCharEsc * [21] XmlChar ::= [^\#x2D#x5B#x5D] @@ -4812,12 +4989,6 @@ return; } - if ((CUR == '&') && (NXT(1) == '#')) { - end = start = xmlFAParseCharRef(ctxt); - xmlRegAtomAddRange(ctxt, ctxt->atom, ctxt->neg, - XML_REGEXP_CHARVAL, start, end, NULL); - return; - } cur = CUR; if (cur == '\\') { NEXT; @@ -4842,10 +5013,15 @@ ERROR("Expecting a char range"); return; } - NEXTL(len); - if (start == '-') { + /* + * Since we are "inside" a range, we can assume ctxt->cur is past + * the start of ctxt->string, and PREV should be safe + */ + if ((start == '-') && (NXT(1) != ']') && (PREV != '[') && (PREV != '^')) { + NEXTL(len); return; } + NEXTL(len); cur = CUR; if ((cur != '-') || (NXT(1) == ']')) { xmlRegAtomAddRange(ctxt, ctxt->atom, ctxt->neg, @@ -4896,7 +5072,7 @@ static void xmlFAParsePosCharGroup(xmlRegParserCtxtPtr ctxt) { do { - if ((CUR == '\\') || (CUR == '.')) { + if (CUR == '\\') { xmlFAParseCharClassEsc(ctxt); } else { xmlFAParseCharRange(ctxt); @@ -4911,7 +5087,7 @@ * * [13] charGroup ::= posCharGroup | negCharGroup | charClassSub * [15] negCharGroup ::= '^' posCharGroup - * [16] charClassSub ::= ( posCharGroup | negCharGroup ) '-' charClassExpr + * [16] charClassSub ::= ( posCharGroup | negCharGroup ) '-' charClassExpr * [12] charClassExpr ::= '[' charGroup ']' */ static void @@ -5085,9 +5261,15 @@ } else if (CUR == ')') { return(0); } else if (CUR == '(') { - xmlRegStatePtr start, oldend; + xmlRegStatePtr start, oldend, start0; NEXT; + /* + * this extra Epsilon transition is needed if we count with 0 allowed + * unfortunately this can't be known at that point + */ + xmlFAGenerateEpsilonTransition(ctxt, ctxt->state, NULL); + start0 = ctxt->state; xmlFAGenerateEpsilonTransition(ctxt, ctxt->state, NULL); start = ctxt->state; oldend = ctxt->end; @@ -5103,6 +5285,7 @@ if (ctxt->atom == NULL) return(-1); ctxt->atom->start = start; + ctxt->atom->start0 = start0; ctxt->atom->stop = ctxt->state; ctxt->end = oldend; return(1); @@ -5152,7 +5335,7 @@ previous = ctxt->state; ret = xmlFAParsePiece(ctxt); if (ret != 0) { - if (xmlFAGenerateTransitions(ctxt, previous, + if (xmlFAGenerateTransitions(ctxt, previous, (CUR=='|' || CUR==')') ? to : NULL, ctxt->atom) < 0) return(-1); previous = ctxt->state; @@ -5161,7 +5344,7 @@ while ((ret != 0) && (ctxt->error == 0)) { ret = xmlFAParsePiece(ctxt); if (ret != 0) { - if (xmlFAGenerateTransitions(ctxt, previous, + if (xmlFAGenerateTransitions(ctxt, previous, (CUR=='|' || CUR==')') ? to : NULL, ctxt->atom) < 0) return(-1); previous = ctxt->state; @@ -5199,6 +5382,10 @@ end = ctxt->state; while ((CUR == '|') && (ctxt->error == 0)) { NEXT; + if (CUR == 0) { + ERROR("expecting a branch after |") + return; + } ctxt->state = start; ctxt->end = NULL; xmlFAParseBranch(ctxt, end); @@ -5210,9 +5397,9 @@ } /************************************************************************ - * * - * The basic API * - * * + * * + * The basic API * + * * ************************************************************************/ /** @@ -5281,6 +5468,10 @@ if (CUR != 0) { ERROR("xmlFAParseRegExp: extra characters"); } + if (ctxt->error != 0) { + xmlRegFreeParserCtxt(ctxt); + return(NULL); + } ctxt->end = ctxt->state; ctxt->start->type = XML_REGEXP_START_STATE; ctxt->end->type = XML_REGEXP_FINAL_STATE; @@ -5345,10 +5536,12 @@ am->nbStates = comp->nbStates; am->states = comp->states; am->determinist = -1; + am->flags = comp->flags; ret = xmlFAComputesDeterminism(am); am->atoms = NULL; am->states = NULL; xmlFreeAutomata(am); + comp->determinist = ret; return(ret); } @@ -5393,9 +5586,9 @@ #ifdef LIBXML_AUTOMATA_ENABLED /************************************************************************ - * * - * The Automata interface * - * * + * * + * The Automata interface * + * * ************************************************************************/ /** @@ -5426,6 +5619,7 @@ xmlFreeAutomata(ctxt); return(NULL); } + ctxt->flags = 0; return(ctxt); } @@ -5444,6 +5638,20 @@ } /** + * xmlAutomataSetFlags: + * @am: an automata + * @flags: a set of internal flags + * + * Set some flags on the automata + */ +void +xmlAutomataSetFlags(xmlAutomataPtr am, int flags) { + if (am == NULL) + return; + am->flags |= flags; +} + +/** * xmlAutomataGetInitState: * @am: an automata * @@ -5501,8 +5709,6 @@ if (atom == NULL) return(NULL); atom->data = data; - if (atom == NULL) - return(NULL); atom->valuep = xmlStrdup(token); if (xmlFAGenerateTransitions(am, from, to, atom) < 0) { @@ -5651,7 +5857,7 @@ * * If @to is NULL, this creates first a new target state in the automata * and then adds a transition from the @from state to the target state - * activated by a succession of input of value @token and @token2 and + * activated by a succession of input of value @token and @token2 and * whose number is between @min and @max * * Returns the target state or NULL in case of error @@ -5805,8 +6011,8 @@ * * If @to is NULL, this creates first a new target state in the automata * and then adds a transition from the @from state to the target state - * activated by a succession of input of value @token and @token2 and whose - * number is between @min and @max, moreover that transition can only be + * activated by a succession of input of value @token and @token2 and whose + * number is between @min and @max, moreover that transition can only be * crossed once. * * Returns the target state or NULL in case of error @@ -5848,7 +6054,7 @@ str[lenn + lenp + 1] = 0; atom->valuep = str; - } + } atom->data = data; atom->quant = XML_REGEXP_QUANT_ONCEONLY; atom->min = min; @@ -5871,7 +6077,7 @@ return(to); } - + /** * xmlAutomataNewOnceTrans: @@ -5940,7 +6146,7 @@ */ xmlAutomataStatePtr xmlAutomataNewState(xmlAutomataPtr am) { - xmlAutomataStatePtr to; + xmlAutomataStatePtr to; if (am == NULL) return(NULL); @@ -6007,7 +6213,7 @@ * * Returns the counter number or -1 in case of error */ -int +int xmlAutomataNewCounter(xmlAutomataPtr am, int min, int max) { int ret; @@ -6079,7 +6285,7 @@ * * Returns the compiled regexp or NULL in case of error */ -xmlRegexpPtr +xmlRegexpPtr xmlAutomataCompile(xmlAutomataPtr am) { xmlRegexpPtr ret; @@ -6099,7 +6305,7 @@ * * Returns 1 if true, 0 if not, and -1 in case of error */ -int +int xmlAutomataIsDeterminist(xmlAutomataPtr am) { int ret; @@ -6129,6 +6335,7 @@ int size; int nbElems; int nb_nodes; + int maxNodes; const char *expr; const char *cur; int nb_cons; @@ -6151,13 +6358,14 @@ if (maxNodes <= 4096) maxNodes = 4096; - + ret = (xmlExpCtxtPtr) xmlMalloc(sizeof(xmlExpCtxt)); if (ret == NULL) return(NULL); memset(ret, 0, sizeof(xmlExpCtxt)); ret->size = size; ret->nbElems = 0; + ret->maxNodes = maxNodes; ret->table = xmlMalloc(size * sizeof(xmlExpNodePtr)); if (ret->table == NULL) { xmlFree(ret); @@ -6204,7 +6412,7 @@ /* #define DEBUG_DERIV */ /* - * TODO: + * TODO: * - Wildcards * - public API for creation * @@ -6272,7 +6480,7 @@ xmlExpHashNameComputeKey(const xmlChar *name) { unsigned short value = 0L; char ch; - + if (name != NULL) { value += 30 * (*name); while ((ch = *name++) != 0) { @@ -6291,7 +6499,7 @@ xmlExpNodePtr right) { unsigned long value; unsigned short ret; - + switch (type) { case XML_EXP_SEQ: value = left->key; @@ -6432,7 +6640,7 @@ left->exp_left->ref++; tmp = xmlExpHashGetEntry(ctxt, XML_EXP_OR, left->exp_left, tmp, NULL, 0, 0); - + xmlExpFree(ctxt, left); return(tmp); } @@ -6489,7 +6697,7 @@ return(right); } kbase = xmlExpHashComputeKey(type, left, right); - } else + } else return(NULL); key = kbase % ctxt->size; @@ -6630,7 +6838,7 @@ * xmlExpNewAtom: * @ctxt: the expression context * @name: the atom name - * @len: the atom name lenght in byte (or -1); + * @len: the atom name length in byte (or -1); * * Get the atom associated to this name from that context * @@ -6730,7 +6938,7 @@ ************************************************************************/ static int -xmlExpGetLanguageInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, +xmlExpGetLanguageInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, const xmlChar**list, int len, int nb) { int tmp, tmp2; tail: @@ -6743,7 +6951,7 @@ return(0); if (nb >= len) return(-2); - list[nb++] = exp->exp_str; + list[nb] = exp->exp_str; return(1); case XML_EXP_COUNT: exp = exp->exp_left; @@ -6767,7 +6975,7 @@ * @ctxt: the expression context * @exp: the expression * @langList: where to store the tokens - * @len: the allocated lenght of @list + * @len: the allocated length of @list * * Find all the strings used in @exp and store them in @list * @@ -6775,7 +6983,7 @@ * -2 if there is more than @len strings */ int -xmlExpGetLanguage(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, +xmlExpGetLanguage(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, const xmlChar**langList, int len) { if ((ctxt == NULL) || (exp == NULL) || (langList == NULL) || (len <= 0)) return(-1); @@ -6783,7 +6991,7 @@ } static int -xmlExpGetStartInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, +xmlExpGetStartInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, const xmlChar**list, int len, int nb) { int tmp, tmp2; tail: @@ -6798,7 +7006,7 @@ return(0); if (nb >= len) return(-2); - list[nb++] = exp->exp_str; + list[nb] = exp->exp_str; return(1); case XML_EXP_COUNT: exp = exp->exp_left; @@ -6833,7 +7041,7 @@ * @ctxt: the expression context * @exp: the expression * @tokList: where to store the tokens - * @len: the allocated lenght of @list + * @len: the allocated length of @list * * Find all the strings that appears at the start of the languages * accepted by @exp and store them in @list. E.g. for (a, b) | c @@ -6843,7 +7051,7 @@ * -2 if there is more than @len strings */ int -xmlExpGetStart(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, +xmlExpGetStart(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, const xmlChar**tokList, int len) { if ((ctxt == NULL) || (exp == NULL) || (tokList == NULL) || (len <= 0)) return(-1); @@ -7540,7 +7748,7 @@ xmlFree((xmlChar **) tab); return(ret); } - + /** * xmlExpExpDerive: * @ctxt: the expressions context @@ -7592,7 +7800,7 @@ int xmlExpSubsume(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub) { xmlExpNodePtr tmp; - + if ((exp == NULL) || (ctxt == NULL) || (sub == NULL)) return(-1); @@ -7636,7 +7844,7 @@ /************************************************************************ * * - * Parsing expression * + * Parsing expression * * * ************************************************************************/ @@ -7740,7 +7948,7 @@ ret = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, ret, NULL, NULL, 0, -1); SKIP_BLANKS - } + } return(ret); } @@ -7862,7 +8070,7 @@ break; case XML_EXP_COUNT: { char rep[40]; - + c = expr->exp_left; if ((c->type == XML_EXP_SEQ) || (c->type == XML_EXP_OR)) xmlExpDumpInt(buf, c, 1); diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlregexp.in.h gettext-0.19.7/gnulib-local/lib/libxml/xmlregexp.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xmlregexp.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlregexp.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -38,7 +38,7 @@ #ifdef __cplusplus } -#endif +#endif #include #include #ifdef __cplusplus @@ -51,16 +51,22 @@ XMLPUBFUN xmlRegexpPtr XMLCALL xmlRegexpCompile (const xmlChar *regexp); XMLPUBFUN void XMLCALL xmlRegFreeRegexp(xmlRegexpPtr regexp); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRegexpExec (xmlRegexpPtr comp, const xmlChar *value); -XMLPUBFUN void XMLCALL - xmlRegexpPrint (FILE *output, +XMLPUBFUN void XMLCALL + xmlRegexpPrint (FILE *output, xmlRegexpPtr regexp); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRegexpIsDeterminist(xmlRegexpPtr comp); -/* +/** + * xmlRegExecCallbacks: + * @exec: the regular expression context + * @token: the current token string + * @transdata: transition data + * @inputdata: input data + * * Callback function when doing a transition in the automata */ typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxtPtr exec, @@ -71,17 +77,17 @@ /* * The progressive API */ -XMLPUBFUN xmlRegExecCtxtPtr XMLCALL - xmlRegNewExecCtxt (xmlRegexpPtr comp, +XMLPUBFUN xmlRegExecCtxtPtr XMLCALL + xmlRegNewExecCtxt (xmlRegexpPtr comp, xmlRegExecCallbacks callback, void *data); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRegFreeExecCtxt (xmlRegExecCtxtPtr exec); -XMLPUBFUN int XMLCALL - xmlRegExecPushString(xmlRegExecCtxtPtr exec, +XMLPUBFUN int XMLCALL + xmlRegExecPushString(xmlRegExecCtxtPtr exec, const xmlChar *value, void *data); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRegExecPushString2(xmlRegExecCtxtPtr exec, const xmlChar *value, const xmlChar *value2, @@ -89,15 +95,15 @@ XMLPUBFUN int XMLCALL xmlRegExecNextValues(xmlRegExecCtxtPtr exec, - int *nbval, - int *nbneg, + int *nbval, + int *nbneg, xmlChar **values, int *terminal); XMLPUBFUN int XMLCALL xmlRegExecErrInfo (xmlRegExecCtxtPtr exec, - const xmlChar **string, + const xmlChar **string, int *nbval, - int *nbneg, + int *nbneg, xmlChar **values, int *terminal); #ifdef LIBXML_EXPR_ENABLED @@ -135,7 +141,7 @@ } xmlExpNodeType; /* - * 2 core expressions shared by all for the empty language set + * 2 core expressions shared by all for the empty language set * and for the set with just the empty token */ XMLPUBVAR xmlExpNodePtr forbiddenExp; @@ -209,7 +215,7 @@ #endif /* LIBXML_EXPR_ENABLED */ #ifdef __cplusplus } -#endif +#endif #endif /* LIBXML_REGEXP_ENABLED */ diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlsave.c gettext-0.19.7/gnulib-local/lib/libxml/xmlsave.c --- gettext-0.19.6/gnulib-local/lib/libxml/xmlsave.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlsave.c 2015-12-23 07:08:27.000000000 +0000 @@ -19,6 +19,10 @@ #include +#include "buf.h" +#include "enc.h" +#include "save.h" + /************************************************************************ * * * XHTML detection * @@ -66,7 +70,7 @@ #ifdef LIBXML_OUTPUT_ENABLED -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); @@ -92,7 +96,7 @@ /************************************************************************ * * - * Output error handlers * + * Output error handlers * * * ************************************************************************/ /** @@ -210,9 +214,9 @@ int val; inend = in + (*inlen); - + while ((in < inend) && (out < outend)) { - if (*in == '<') { + if (*in == '<') { if (outend - out < 4) break; *out++ = '&'; *out++ = 'l'; @@ -248,7 +252,7 @@ /* * We assume we have UTF-8 input. */ - if (outend - out < 10) break; + if (outend - out < 11) break; if (*in < 0xC0) { xmlSaveErr(XML_SAVE_NOT_UTF8, NULL, NULL); @@ -408,13 +412,15 @@ ret->options = options; if (options & XML_SAVE_FORMAT) ret->format = 1; + else if (options & XML_SAVE_WSNONSIG) + ret->format = 2; return(ret); } /************************************************************************ * * - * Dumping XML tree content to a simple buffer * + * Dumping XML tree content to a simple buffer * * * ************************************************************************/ /** @@ -434,14 +440,14 @@ while (children != NULL) { switch (children->type) { case XML_TEXT_NODE: - xmlAttrSerializeTxtContent(buf->buffer, attr->doc, - attr, children->content); + xmlBufAttrSerializeTxtContent(buf->buffer, attr->doc, + attr, children->content); break; case XML_ENTITY_REF_NODE: - xmlBufferAdd(buf->buffer, BAD_CAST "&", 1); - xmlBufferAdd(buf->buffer, children->name, + xmlBufAdd(buf->buffer, BAD_CAST "&", 1); + xmlBufAdd(buf->buffer, children->name, xmlStrlen(children->name)); - xmlBufferAdd(buf->buffer, BAD_CAST ";", 1); + xmlBufAdd(buf->buffer, BAD_CAST ";", 1); break; default: /* should not happen unless we have a badly built tree */ @@ -451,12 +457,136 @@ } } +/** + * xmlBufDumpNotationTable: + * @buf: an xmlBufPtr output + * @table: A notation table + * + * This will dump the content of the notation table as an XML DTD definition + */ +void +xmlBufDumpNotationTable(xmlBufPtr buf, xmlNotationTablePtr table) { + xmlBufferPtr buffer; + + buffer = xmlBufferCreate(); + if (buffer == NULL) { + /* + * TODO set the error in buf + */ + return; + } + xmlDumpNotationTable(buffer, table); + xmlBufMergeBuffer(buf, buffer); +} + +/** + * xmlBufDumpElementDecl: + * @buf: an xmlBufPtr output + * @elem: An element table + * + * This will dump the content of the element declaration as an XML + * DTD definition + */ +void +xmlBufDumpElementDecl(xmlBufPtr buf, xmlElementPtr elem) { + xmlBufferPtr buffer; + + buffer = xmlBufferCreate(); + if (buffer == NULL) { + /* + * TODO set the error in buf + */ + return; + } + xmlDumpElementDecl(buffer, elem); + xmlBufMergeBuffer(buf, buffer); +} + +/** + * xmlBufDumpAttributeDecl: + * @buf: an xmlBufPtr output + * @attr: An attribute declaration + * + * This will dump the content of the attribute declaration as an XML + * DTD definition + */ +void +xmlBufDumpAttributeDecl(xmlBufPtr buf, xmlAttributePtr attr) { + xmlBufferPtr buffer; + + buffer = xmlBufferCreate(); + if (buffer == NULL) { + /* + * TODO set the error in buf + */ + return; + } + xmlDumpAttributeDecl(buffer, attr); + xmlBufMergeBuffer(buf, buffer); +} + +/** + * xmlBufDumpEntityDecl: + * @buf: an xmlBufPtr output + * @ent: An entity table + * + * This will dump the content of the entity table as an XML DTD definition + */ +void +xmlBufDumpEntityDecl(xmlBufPtr buf, xmlEntityPtr ent) { + xmlBufferPtr buffer; + + buffer = xmlBufferCreate(); + if (buffer == NULL) { + /* + * TODO set the error in buf + */ + return; + } + xmlDumpEntityDecl(buffer, ent); + xmlBufMergeBuffer(buf, buffer); +} + /************************************************************************ * * - * Dumping XML tree content to an I/O output buffer * + * Dumping XML tree content to an I/O output buffer * * * ************************************************************************/ +static int xmlSaveSwitchEncoding(xmlSaveCtxtPtr ctxt, const char *encoding) { + xmlOutputBufferPtr buf = ctxt->buf; + + if ((encoding != NULL) && (buf->encoder == NULL) && (buf->conv == NULL)) { + buf->encoder = xmlFindCharEncodingHandler((const char *)encoding); + if (buf->encoder == NULL) { + xmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, + (const char *)encoding); + return(-1); + } + buf->conv = xmlBufCreate(); + if (buf->conv == NULL) { + xmlCharEncCloseFunc(buf->encoder); + xmlSaveErrMemory("creating encoding buffer"); + return(-1); + } + /* + * initialize the state, e.g. if outputting a BOM + */ + xmlCharEncOutput(buf, 1); + } + return(0); +} + +static int xmlSaveClearEncoding(xmlSaveCtxtPtr ctxt) { + xmlOutputBufferPtr buf = ctxt->buf; + xmlOutputBufferFlush(buf); + xmlCharEncCloseFunc(buf->encoder); + xmlBufFree(buf->conv); + buf->encoder = NULL; + buf->conv = NULL; + return(0); +} + #ifdef LIBXML_HTML_ENABLED static void xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur); @@ -467,28 +597,86 @@ static int xmlDocContentDumpOutput(xmlSaveCtxtPtr ctxt, xmlDocPtr cur); /** + * xmlOutputBufferWriteWSNonSig: + * @ctxt: The save context + * @extra: Number of extra indents to apply to ctxt->level + * + * Write out formatting for non-significant whitespace output. + */ +static void +xmlOutputBufferWriteWSNonSig(xmlSaveCtxtPtr ctxt, int extra) +{ + int i; + if ((ctxt == NULL) || (ctxt->buf == NULL)) + return; + xmlOutputBufferWrite(ctxt->buf, 1, "\n"); + for (i = 0; i < (ctxt->level + extra); i += ctxt->indent_nr) { + xmlOutputBufferWrite(ctxt->buf, ctxt->indent_size * + ((ctxt->level + extra - i) > ctxt->indent_nr ? + ctxt->indent_nr : (ctxt->level + extra - i)), + ctxt->indent); + } +} + +/** * xmlNsDumpOutput: * @buf: the XML buffer output * @cur: a namespace + * @ctxt: the output save context. Optional. * * Dump a local Namespace definition. * Should be called in the context of attributes dumps. + * If @ctxt is supplied, @buf should be its buffer. */ static void -xmlNsDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur) { +xmlNsDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur, xmlSaveCtxtPtr ctxt) { if ((cur == NULL) || (buf == NULL)) return; if ((cur->type == XML_LOCAL_NAMESPACE) && (cur->href != NULL)) { if (xmlStrEqual(cur->prefix, BAD_CAST "xml")) return; + if (ctxt != NULL && ctxt->format == 2) + xmlOutputBufferWriteWSNonSig(ctxt, 2); + else + xmlOutputBufferWrite(buf, 1, " "); + /* Within the context of an element attributes */ if (cur->prefix != NULL) { - xmlOutputBufferWrite(buf, 7, " xmlns:"); + xmlOutputBufferWrite(buf, 6, "xmlns:"); xmlOutputBufferWriteString(buf, (const char *)cur->prefix); } else - xmlOutputBufferWrite(buf, 6, " xmlns"); + xmlOutputBufferWrite(buf, 5, "xmlns"); xmlOutputBufferWrite(buf, 1, "="); - xmlBufferWriteQuotedString(buf->buffer, cur->href); + xmlBufWriteQuotedString(buf->buffer, cur->href); + } +} + +/** + * xmlNsDumpOutputCtxt + * @ctxt: the save context + * @cur: a namespace + * + * Dump a local Namespace definition to a save context. + * Should be called in the context of attribute dumps. + */ +static void +xmlNsDumpOutputCtxt(xmlSaveCtxtPtr ctxt, xmlNsPtr cur) { + xmlNsDumpOutput(ctxt->buf, cur, ctxt); +} + +/** + * xmlNsListDumpOutputCtxt + * @ctxt: the save context + * @cur: the first namespace + * + * Dump a list of local namespace definitions to a save context. + * Should be called in the context of attribute dumps. + */ +static void +xmlNsListDumpOutputCtxt(xmlSaveCtxtPtr ctxt, xmlNsPtr cur) { + while (cur != NULL) { + xmlNsDumpOutput(ctxt->buf, cur, ctxt); + cur = cur->next; } } @@ -503,7 +691,7 @@ void xmlNsListDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur) { while (cur != NULL) { - xmlNsDumpOutput(buf, cur); + xmlNsDumpOutput(buf, cur, NULL); cur = cur->next; } } @@ -512,7 +700,7 @@ * xmlDtdDumpOutput: * @buf: the XML buffer output * @dtd: the pointer to the DTD - * + * * Dump the XML document DTD, if any. */ static void @@ -529,12 +717,12 @@ xmlOutputBufferWriteString(buf, (const char *)dtd->name); if (dtd->ExternalID != NULL) { xmlOutputBufferWrite(buf, 8, " PUBLIC "); - xmlBufferWriteQuotedString(buf->buffer, dtd->ExternalID); + xmlBufWriteQuotedString(buf->buffer, dtd->ExternalID); xmlOutputBufferWrite(buf, 1, " "); - xmlBufferWriteQuotedString(buf->buffer, dtd->SystemID); + xmlBufWriteQuotedString(buf->buffer, dtd->SystemID); } else if (dtd->SystemID != NULL) { xmlOutputBufferWrite(buf, 8, " SYSTEM "); - xmlBufferWriteQuotedString(buf->buffer, dtd->SystemID); + xmlBufWriteQuotedString(buf->buffer, dtd->SystemID); } if ((dtd->entities == NULL) && (dtd->elements == NULL) && (dtd->attributes == NULL) && (dtd->notations == NULL) && @@ -549,7 +737,8 @@ */ if ((dtd->notations != NULL) && ((dtd->doc == NULL) || (dtd->doc->intSubset == dtd))) { - xmlDumpNotationTable(buf->buffer, (xmlNotationTablePtr) dtd->notations); + xmlBufDumpNotationTable(buf->buffer, + (xmlNotationTablePtr) dtd->notations); } format = ctxt->format; level = ctxt->level; @@ -578,7 +767,10 @@ if (cur == NULL) return; buf = ctxt->buf; if (buf == NULL) return; - xmlOutputBufferWrite(buf, 1, " "); + if (ctxt->format == 2) + xmlOutputBufferWriteWSNonSig(ctxt, 2); + else + xmlOutputBufferWrite(buf, 1, " "); if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) { xmlOutputBufferWriteString(buf, (const char *)cur->ns->prefix); xmlOutputBufferWrite(buf, 1, ":"); @@ -622,20 +814,82 @@ if (cur == NULL) return; buf = ctxt->buf; while (cur != NULL) { - if ((ctxt->format) && (xmlIndentTreeOutput) && - (cur->type == XML_ELEMENT_NODE)) + if ((ctxt->format == 1) && (xmlIndentTreeOutput) && + ((cur->type == XML_ELEMENT_NODE) || + (cur->type == XML_COMMENT_NODE) || + (cur->type == XML_PI_NODE))) xmlOutputBufferWrite(buf, ctxt->indent_size * - (ctxt->level > ctxt->indent_nr ? + (ctxt->level > ctxt->indent_nr ? ctxt->indent_nr : ctxt->level), ctxt->indent); xmlNodeDumpOutputInternal(ctxt, cur); - if (ctxt->format) { + if (ctxt->format == 1) { xmlOutputBufferWrite(buf, 1, "\n"); } cur = cur->next; } } +#ifdef LIBXML_HTML_ENABLED +/** + * xmlNodeDumpOutputInternal: + * @cur: the current node + * + * Dump an HTML node, recursive behaviour, children are printed too. + */ +static int +htmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { + const xmlChar *oldenc = NULL; + const xmlChar *oldctxtenc = ctxt->encoding; + const xmlChar *encoding = ctxt->encoding; + xmlOutputBufferPtr buf = ctxt->buf; + int switched_encoding = 0; + xmlDocPtr doc; + + xmlInitParser(); + + doc = cur->doc; + if (doc != NULL) { + oldenc = doc->encoding; + if (ctxt->encoding != NULL) { + doc->encoding = BAD_CAST ctxt->encoding; + } else if (doc->encoding != NULL) { + encoding = doc->encoding; + } + } + + if ((encoding != NULL) && (doc != NULL)) + htmlSetMetaEncoding(doc, (const xmlChar *) encoding); + if ((encoding == NULL) && (doc != NULL)) + encoding = htmlGetMetaEncoding(doc); + if (encoding == NULL) + encoding = BAD_CAST "HTML"; + if ((encoding != NULL) && (oldctxtenc == NULL) && + (buf->encoder == NULL) && (buf->conv == NULL)) { + if (xmlSaveSwitchEncoding(ctxt, (const char*) encoding) < 0) { + doc->encoding = oldenc; + return(-1); + } + switched_encoding = 1; + } + if (ctxt->options & XML_SAVE_FORMAT) + htmlNodeDumpFormatOutput(buf, doc, cur, + (const char *)encoding, 1); + else + htmlNodeDumpFormatOutput(buf, doc, cur, + (const char *)encoding, 0); + /* + * Restore the state of the saving context at the end of the document + */ + if ((switched_encoding) && (oldctxtenc == NULL)) { + xmlSaveClearEncoding(ctxt); + } + if (doc != NULL) + doc->encoding = oldenc; + return(0); +} +#endif + /** * xmlNodeDumpOutputInternal: * @cur: the current node @@ -660,6 +914,19 @@ xmlDocContentDumpOutput(ctxt, (xmlDocPtr) cur); return; } +#ifdef LIBXML_HTML_ENABLED + if (ctxt->options & XML_SAVE_XHTML) { + xhtmlNodeDumpOutput(ctxt, cur); + return; + } + if (((cur->type != XML_NAMESPACE_DECL) && (cur->doc != NULL) && + (cur->doc->type == XML_HTML_DOCUMENT_NODE) && + ((ctxt->options & XML_SAVE_AS_XML) == 0)) || + (ctxt->options & XML_SAVE_AS_HTML)) { + htmlNodeDumpOutputInternal(ctxt, cur); + return; + } +#endif if (cur->type == XML_DTD_NODE) { xmlDtdDumpOutput(ctxt, (xmlDtdPtr) cur); return; @@ -669,15 +936,15 @@ return; } if (cur->type == XML_ELEMENT_DECL) { - xmlDumpElementDecl(buf->buffer, (xmlElementPtr) cur); + xmlBufDumpElementDecl(buf->buffer, (xmlElementPtr) cur); return; } if (cur->type == XML_ATTRIBUTE_DECL) { - xmlDumpAttributeDecl(buf->buffer, (xmlAttributePtr) cur); + xmlBufDumpAttributeDecl(buf->buffer, (xmlAttributePtr) cur); return; } if (cur->type == XML_ENTITY_DECL) { - xmlDumpEntityDecl(buf->buffer, (xmlEntityPtr) cur); + xmlBufDumpEntityDecl(buf->buffer, (xmlEntityPtr) cur); return; } if (cur->type == XML_TEXT_NODE) { @@ -699,13 +966,18 @@ xmlOutputBufferWrite(buf, 2, "name); if (cur->content != NULL) { - xmlOutputBufferWrite(buf, 1, " "); + if (ctxt->format == 2) + xmlOutputBufferWriteWSNonSig(ctxt, 0); + else + xmlOutputBufferWrite(buf, 1, " "); xmlOutputBufferWriteString(buf, (const char *)cur->content); } xmlOutputBufferWrite(buf, 2, "?>"); } else { xmlOutputBufferWrite(buf, 2, "name); + if (ctxt->format == 2) + xmlOutputBufferWriteWSNonSig(ctxt, 0); xmlOutputBufferWrite(buf, 2, "?>"); } return; @@ -725,8 +997,8 @@ return; } if (cur->type == XML_CDATA_SECTION_NODE) { - if (cur->content == NULL) { - xmlOutputBufferWrite(buf, 12, ""); + if (cur->content == NULL || *cur->content == '\0') { + xmlOutputBufferWrite(buf, 12, ""); } else { start = end = cur->content; while (*end != '\0') { @@ -753,7 +1025,7 @@ return; } if (cur->type == XML_NAMESPACE_DECL) { - xmlNsDumpOutput(buf, (xmlNsPtr) cur); + xmlNsDumpOutputCtxt(ctxt, (xmlNsPtr) cur); return; } @@ -778,28 +1050,32 @@ xmlOutputBufferWriteString(buf, (const char *)cur->name); if (cur->nsDef) - xmlNsListDumpOutput(buf, cur->nsDef); + xmlNsListDumpOutputCtxt(ctxt, cur->nsDef); if (cur->properties != NULL) xmlAttrListDumpOutput(ctxt, cur->properties); if (((cur->type == XML_ELEMENT_NODE) || (cur->content == NULL)) && (cur->children == NULL) && ((ctxt->options & XML_SAVE_NO_EMPTY) == 0)) { + if (ctxt->format == 2) + xmlOutputBufferWriteWSNonSig(ctxt, 0); xmlOutputBufferWrite(buf, 2, "/>"); ctxt->format = format; return; } + if (ctxt->format == 2) + xmlOutputBufferWriteWSNonSig(ctxt, 1); xmlOutputBufferWrite(buf, 1, ">"); if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) { xmlOutputBufferWriteEscape(buf, cur->content, ctxt->escape); } if (cur->children != NULL) { - if (ctxt->format) xmlOutputBufferWrite(buf, 1, "\n"); + if (ctxt->format == 1) xmlOutputBufferWrite(buf, 1, "\n"); if (ctxt->level >= 0) ctxt->level++; xmlNodeListDumpOutput(ctxt, cur->children); if (ctxt->level > 0) ctxt->level--; - if ((xmlIndentTreeOutput) && (ctxt->format)) + if ((xmlIndentTreeOutput) && (ctxt->format == 1)) xmlOutputBufferWrite(buf, ctxt->indent_size * - (ctxt->level > ctxt->indent_nr ? + (ctxt->level > ctxt->indent_nr ? ctxt->indent_nr : ctxt->level), ctxt->indent); } @@ -810,6 +1086,8 @@ } xmlOutputBufferWriteString(buf, (const char *)cur->name); + if (ctxt->format == 2) + xmlOutputBufferWriteWSNonSig(ctxt, 0); xmlOutputBufferWrite(buf, 1, ">"); ctxt->format = format; } @@ -832,11 +1110,15 @@ xmlCharEncodingOutputFunc oldescape = ctxt->escape; xmlCharEncodingOutputFunc oldescapeAttr = ctxt->escapeAttr; xmlOutputBufferPtr buf = ctxt->buf; - xmlCharEncodingHandlerPtr handler = NULL; xmlCharEncoding enc; + int switched_encoding = 0; xmlInitParser(); + if ((cur->type != XML_HTML_DOCUMENT_NODE) && + (cur->type != XML_DOCUMENT_NODE)) + return(-1); + if (ctxt->encoding != NULL) { cur->encoding = BAD_CAST ctxt->encoding; } else if (cur->encoding != NULL) { @@ -846,110 +1128,125 @@ xmlGetCharEncodingName((xmlCharEncoding) cur->charset); } - enc = xmlParseCharEncoding((const char*) encoding); - if ((encoding != NULL) && (oldctxtenc == NULL) && - (buf->encoder == NULL) && (buf->conv == NULL) && - ((ctxt->options & XML_SAVE_NO_DECL) == 0)) { - if ((enc != XML_CHAR_ENCODING_UTF8) && - (enc != XML_CHAR_ENCODING_NONE) && - (enc != XML_CHAR_ENCODING_ASCII)) { - /* - * we need to switch to this encoding but just for this document - * since we output the XMLDecl the conversion must be done to not - * generate not well formed documents. - */ - buf->encoder = xmlFindCharEncodingHandler((const char *)encoding); - if (buf->encoder == NULL) { - xmlSaveErr(XML_SAVE_UNKNOWN_ENCODING, NULL, - (const char *)encoding); + if (((cur->type == XML_HTML_DOCUMENT_NODE) && + ((ctxt->options & XML_SAVE_AS_XML) == 0) && + ((ctxt->options & XML_SAVE_XHTML) == 0)) || + (ctxt->options & XML_SAVE_AS_HTML)) { +#ifdef LIBXML_HTML_ENABLED + if (encoding != NULL) + htmlSetMetaEncoding(cur, (const xmlChar *) encoding); + if (encoding == NULL) + encoding = htmlGetMetaEncoding(cur); + if (encoding == NULL) + encoding = BAD_CAST "HTML"; + if ((encoding != NULL) && (oldctxtenc == NULL) && + (buf->encoder == NULL) && (buf->conv == NULL)) { + if (xmlSaveSwitchEncoding(ctxt, (const char*) encoding) < 0) { + cur->encoding = oldenc; return(-1); } - buf->conv = xmlBufferCreate(); - if (buf->conv == NULL) { - xmlCharEncCloseFunc(buf->encoder); - xmlSaveErrMemory("creating encoding buffer"); - return(-1); + } + if (ctxt->options & XML_SAVE_FORMAT) + htmlDocContentDumpFormatOutput(buf, cur, + (const char *)encoding, 1); + else + htmlDocContentDumpFormatOutput(buf, cur, + (const char *)encoding, 0); + if (ctxt->encoding != NULL) + cur->encoding = oldenc; + return(0); +#else + return(-1); +#endif + } else if ((cur->type == XML_DOCUMENT_NODE) || + (ctxt->options & XML_SAVE_AS_XML) || + (ctxt->options & XML_SAVE_XHTML)) { + enc = xmlParseCharEncoding((const char*) encoding); + if ((encoding != NULL) && (oldctxtenc == NULL) && + (buf->encoder == NULL) && (buf->conv == NULL) && + ((ctxt->options & XML_SAVE_NO_DECL) == 0)) { + if ((enc != XML_CHAR_ENCODING_UTF8) && + (enc != XML_CHAR_ENCODING_NONE) && + (enc != XML_CHAR_ENCODING_ASCII)) { + /* + * we need to switch to this encoding but just for this + * document since we output the XMLDecl the conversion + * must be done to not generate not well formed documents. + */ + if (xmlSaveSwitchEncoding(ctxt, (const char*) encoding) < 0) { + cur->encoding = oldenc; + return(-1); + } + switched_encoding = 1; } - /* - * initialize the state, e.g. if outputting a BOM - */ - xmlCharEncOutFunc(buf->encoder, buf->conv, NULL); + if (ctxt->escape == xmlEscapeEntities) + ctxt->escape = NULL; + if (ctxt->escapeAttr == xmlEscapeEntities) + ctxt->escapeAttr = NULL; } - if (ctxt->escape == xmlEscapeEntities) - ctxt->escape = NULL; - if (ctxt->escapeAttr == xmlEscapeEntities) - ctxt->escapeAttr = NULL; - } - /* - * Save the XML declaration - */ - if ((ctxt->options & XML_SAVE_NO_DECL) == 0) { - xmlOutputBufferWrite(buf, 14, "version != NULL) - xmlBufferWriteQuotedString(buf->buffer, cur->version); - else - xmlOutputBufferWrite(buf, 5, "\"1.0\""); - if (encoding != NULL) { - xmlOutputBufferWrite(buf, 10, " encoding="); - xmlBufferWriteQuotedString(buf->buffer, (xmlChar *) encoding); - } - switch (cur->standalone) { - case 0: - xmlOutputBufferWrite(buf, 16, " standalone=\"no\""); - break; - case 1: - xmlOutputBufferWrite(buf, 17, " standalone=\"yes\""); - break; + /* + * Save the XML declaration + */ + if ((ctxt->options & XML_SAVE_NO_DECL) == 0) { + xmlOutputBufferWrite(buf, 14, "version != NULL) + xmlBufWriteQuotedString(buf->buffer, cur->version); + else + xmlOutputBufferWrite(buf, 5, "\"1.0\""); + if (encoding != NULL) { + xmlOutputBufferWrite(buf, 10, " encoding="); + xmlBufWriteQuotedString(buf->buffer, (xmlChar *) encoding); + } + switch (cur->standalone) { + case 0: + xmlOutputBufferWrite(buf, 16, " standalone=\"no\""); + break; + case 1: + xmlOutputBufferWrite(buf, 17, " standalone=\"yes\""); + break; + } + xmlOutputBufferWrite(buf, 3, "?>\n"); } - xmlOutputBufferWrite(buf, 3, "?>\n"); - } #ifdef LIBXML_HTML_ENABLED - if ((ctxt->options & XML_SAVE_NO_XHTML) == 0) { - dtd = xmlGetIntSubset(cur); - if (dtd != NULL) { - is_xhtml = xmlIsXHTML(dtd->SystemID, dtd->ExternalID); - if (is_xhtml < 0) is_xhtml = 0; + if (ctxt->options & XML_SAVE_XHTML) + is_xhtml = 1; + if ((ctxt->options & XML_SAVE_NO_XHTML) == 0) { + dtd = xmlGetIntSubset(cur); + if (dtd != NULL) { + is_xhtml = xmlIsXHTML(dtd->SystemID, dtd->ExternalID); + if (is_xhtml < 0) is_xhtml = 0; + } } - } #endif - if (cur->children != NULL) { - xmlNodePtr child = cur->children; + if (cur->children != NULL) { + xmlNodePtr child = cur->children; - while (child != NULL) { - ctxt->level = 0; + while (child != NULL) { + ctxt->level = 0; #ifdef LIBXML_HTML_ENABLED - if (is_xhtml) - xhtmlNodeDumpOutput(ctxt, child); - else + if (is_xhtml) + xhtmlNodeDumpOutput(ctxt, child); + else #endif - xmlNodeDumpOutputInternal(ctxt, child); - xmlOutputBufferWrite(buf, 1, "\n"); - child = child->next; + xmlNodeDumpOutputInternal(ctxt, child); + xmlOutputBufferWrite(buf, 1, "\n"); + child = child->next; + } } } - if (ctxt->encoding != NULL) - cur->encoding = oldenc; - + /* * Restore the state of the saving context at the end of the document */ - if ((encoding != NULL) && (oldctxtenc == NULL) && - ((ctxt->options & XML_SAVE_NO_DECL) == 0)) { - if ((enc != XML_CHAR_ENCODING_UTF8) && - (enc != XML_CHAR_ENCODING_NONE) && - (enc != XML_CHAR_ENCODING_ASCII)) { - xmlOutputBufferFlush(buf); - xmlCharEncCloseFunc(buf->encoder); - xmlBufferFree(buf->conv); - buf->encoder = NULL; - buf->conv = NULL; - } + if ((switched_encoding) && (oldctxtenc == NULL)) { + xmlSaveClearEncoding(ctxt); ctxt->escape = oldescape; ctxt->escapeAttr = oldescapeAttr; } + cur->encoding = oldenc; return(0); } @@ -1058,7 +1355,7 @@ if ((cur->ns != NULL) && (xmlStrEqual(cur->name, BAD_CAST "lang")) && (xmlStrEqual(cur->ns->prefix, BAD_CAST "xml"))) xml_lang = cur; - else if ((cur->ns == NULL) && + else if ((cur->ns == NULL) && ((cur->children == NULL) || (cur->children->content == NULL) || (cur->children->content[0] == 0)) && @@ -1098,7 +1395,7 @@ xmlOutputBufferWrite(buf, 11, " xml:lang=\""); xmlAttrSerializeContent(buf, lang); xmlOutputBufferWrite(buf, 1, "\""); - } else + } else if ((xml_lang != NULL) && (lang == NULL)) { xmlOutputBufferWrite(buf, 7, " lang=\""); xmlAttrSerializeContent(buf, xml_lang); @@ -1126,14 +1423,14 @@ if (cur == NULL) return; buf = ctxt->buf; while (cur != NULL) { - if ((ctxt->format) && (xmlIndentTreeOutput) && + if ((ctxt->format == 1) && (xmlIndentTreeOutput) && (cur->type == XML_ELEMENT_NODE)) xmlOutputBufferWrite(buf, ctxt->indent_size * - (ctxt->level > ctxt->indent_nr ? + (ctxt->level > ctxt->indent_nr ? ctxt->indent_nr : ctxt->level), ctxt->indent); xhtmlNodeDumpOutput(ctxt, cur); - if (ctxt->format) { + if (ctxt->format == 1) { xmlOutputBufferWrite(buf, 1, "\n"); } cur = cur->next; @@ -1168,6 +1465,10 @@ return; if (cur->type == XML_XINCLUDE_END) return; + if (cur->type == XML_NAMESPACE_DECL) { + xmlNsDumpOutputCtxt(ctxt, (xmlNsPtr) cur); + return; + } if (cur->type == XML_DTD_NODE) { xmlDtdDumpOutput(ctxt, (xmlDtdPtr) cur); return; @@ -1178,15 +1479,15 @@ } buf = ctxt->buf; if (cur->type == XML_ELEMENT_DECL) { - xmlDumpElementDecl(buf->buffer, (xmlElementPtr) cur); + xmlBufDumpElementDecl(buf->buffer, (xmlElementPtr) cur); return; } if (cur->type == XML_ATTRIBUTE_DECL) { - xmlDumpAttributeDecl(buf->buffer, (xmlAttributePtr) cur); + xmlBufDumpAttributeDecl(buf->buffer, (xmlAttributePtr) cur); return; } if (cur->type == XML_ENTITY_DECL) { - xmlDumpEntityDecl(buf->buffer, (xmlEntityPtr) cur); + xmlBufDumpEntityDecl(buf->buffer, (xmlEntityPtr) cur); return; } if (cur->type == XML_TEXT_NODE) { @@ -1235,30 +1536,38 @@ return; } if (cur->type == XML_CDATA_SECTION_NODE) { - start = end = cur->content; - while (*end != '\0') { - if (*end == ']' && *(end + 1) == ']' && *(end + 2) == '>') { - end = end + 2; + if (cur->content == NULL || *cur->content == '\0') { + xmlOutputBufferWrite(buf, 12, ""); + } else { + start = end = cur->content; + while (*end != '\0') { + if (*end == ']' && *(end + 1) == ']' && *(end + 2) == '>') { + end = end + 2; + xmlOutputBufferWrite(buf, 9, ""); + start = end; + } + end++; + } + if (start != end) { xmlOutputBufferWrite(buf, 9, ""); - start = end; } - end++; - } - if (start != end) { - xmlOutputBufferWrite(buf, 9, ""); } return; } + if (cur->type == XML_ATTRIBUTE_NODE) { + xmlAttrDumpOutput(ctxt, (xmlAttrPtr) cur); + return; + } format = ctxt->format; if (format == 1) { tmp = cur->children; while (tmp != NULL) { - if ((tmp->type == XML_TEXT_NODE) || + if ((tmp->type == XML_TEXT_NODE) || (tmp->type == XML_ENTITY_REF_NODE)) { format = 0; break; @@ -1274,7 +1583,7 @@ xmlOutputBufferWriteString(buf, (const char *)cur->name); if (cur->nsDef) - xmlNsListDumpOutput(buf, cur->nsDef); + xmlNsListDumpOutputCtxt(ctxt, cur->nsDef); if ((xmlStrEqual(cur->name, BAD_CAST "html") && (cur->ns == NULL) && (cur->nsDef == NULL))) { /* @@ -1286,10 +1595,10 @@ if (cur->properties != NULL) xhtmlAttrListDumpOutput(ctxt, cur->properties); - if ((cur->type == XML_ELEMENT_NODE) && - (cur->parent != NULL) && - (cur->parent->parent == (xmlNodePtr) cur->doc) && - xmlStrEqual(cur->name, BAD_CAST"head") && + if ((cur->type == XML_ELEMENT_NODE) && + (cur->parent != NULL) && + (cur->parent->parent == (xmlNodePtr) cur->doc) && + xmlStrEqual(cur->name, BAD_CAST"head") && xmlStrEqual(cur->parent->name, BAD_CAST"html")) { tmp = cur->children; @@ -1322,11 +1631,11 @@ } else { if (addmeta == 1) { xmlOutputBufferWrite(buf, 1, ">"); - if (ctxt->format) { + if (ctxt->format == 1) { xmlOutputBufferWrite(buf, 1, "\n"); if (xmlIndentTreeOutput) xmlOutputBufferWrite(buf, ctxt->indent_size * - (ctxt->level + 1 > ctxt->indent_nr ? + (ctxt->level + 1 > ctxt->indent_nr ? ctxt->indent_nr : ctxt->level + 1), ctxt->indent); } xmlOutputBufferWriteString(buf, @@ -1337,7 +1646,7 @@ xmlOutputBufferWrite(buf, 5, "UTF-8"); } xmlOutputBufferWrite(buf, 4, "\" />"); - if (ctxt->format) + if (ctxt->format == 1) xmlOutputBufferWrite(buf, 1, "\n"); } else { xmlOutputBufferWrite(buf, 1, ">"); @@ -1357,11 +1666,11 @@ } xmlOutputBufferWrite(buf, 1, ">"); if (addmeta == 1) { - if (ctxt->format) { + if (ctxt->format == 1) { xmlOutputBufferWrite(buf, 1, "\n"); if (xmlIndentTreeOutput) xmlOutputBufferWrite(buf, ctxt->indent_size * - (ctxt->level + 1 > ctxt->indent_nr ? + (ctxt->level + 1 > ctxt->indent_nr ? ctxt->indent_nr : ctxt->level + 1), ctxt->indent); } xmlOutputBufferWriteString(buf, @@ -1451,16 +1760,16 @@ if (cur->children != NULL) { int indent = ctxt->format; - - if (format) xmlOutputBufferWrite(buf, 1, "\n"); + + if (format == 1) xmlOutputBufferWrite(buf, 1, "\n"); if (ctxt->level >= 0) ctxt->level++; ctxt->format = format; xhtmlNodeListDumpOutput(ctxt, cur->children); if (ctxt->level > 0) ctxt->level--; ctxt->format = indent; - if ((xmlIndentTreeOutput) && (format)) + if ((xmlIndentTreeOutput) && (format == 1)) xmlOutputBufferWrite(buf, ctxt->indent_size * - (ctxt->level > ctxt->indent_nr ? + (ctxt->level > ctxt->indent_nr ? ctxt->indent_nr : ctxt->level), ctxt->indent); } @@ -1726,18 +2035,19 @@ * Public entry points based on buffers * * * ************************************************************************/ + /** - * xmlAttrSerializeTxtContent: - * @buf: the XML buffer output + * xmlBufAttrSerializeTxtContent: + * @buf: and xmlBufPtr output * @doc: the document * @attr: the attribute node * @string: the text content * - * Serialize text attribute values to an xml simple buffer + * Serialize text attribute values to an xmlBufPtr */ void -xmlAttrSerializeTxtContent(xmlBufferPtr buf, xmlDocPtr doc, - xmlAttrPtr attr, const xmlChar * string) +xmlBufAttrSerializeTxtContent(xmlBufPtr buf, xmlDocPtr doc, + xmlAttrPtr attr, const xmlChar * string) { xmlChar *base, *cur; @@ -1747,44 +2057,44 @@ while (*cur != 0) { if (*cur == '\n') { if (base != cur) - xmlBufferAdd(buf, base, cur - base); - xmlBufferAdd(buf, BAD_CAST " ", 5); + xmlBufAdd(buf, base, cur - base); + xmlBufAdd(buf, BAD_CAST " ", 5); cur++; base = cur; } else if (*cur == '\r') { if (base != cur) - xmlBufferAdd(buf, base, cur - base); - xmlBufferAdd(buf, BAD_CAST " ", 5); + xmlBufAdd(buf, base, cur - base); + xmlBufAdd(buf, BAD_CAST " ", 5); cur++; base = cur; } else if (*cur == '\t') { if (base != cur) - xmlBufferAdd(buf, base, cur - base); - xmlBufferAdd(buf, BAD_CAST " ", 4); + xmlBufAdd(buf, base, cur - base); + xmlBufAdd(buf, BAD_CAST " ", 4); cur++; base = cur; } else if (*cur == '"') { if (base != cur) - xmlBufferAdd(buf, base, cur - base); - xmlBufferAdd(buf, BAD_CAST """, 6); + xmlBufAdd(buf, base, cur - base); + xmlBufAdd(buf, BAD_CAST """, 6); cur++; base = cur; } else if (*cur == '<') { if (base != cur) - xmlBufferAdd(buf, base, cur - base); - xmlBufferAdd(buf, BAD_CAST "<", 4); + xmlBufAdd(buf, base, cur - base); + xmlBufAdd(buf, BAD_CAST "<", 4); cur++; base = cur; } else if (*cur == '>') { if (base != cur) - xmlBufferAdd(buf, base, cur - base); - xmlBufferAdd(buf, BAD_CAST ">", 4); + xmlBufAdd(buf, base, cur - base); + xmlBufAdd(buf, BAD_CAST ">", 4); cur++; base = cur; } else if (*cur == '&') { if (base != cur) - xmlBufferAdd(buf, base, cur - base); - xmlBufferAdd(buf, BAD_CAST "&", 5); + xmlBufAdd(buf, base, cur - base); + xmlBufAdd(buf, BAD_CAST "&", 5); cur++; base = cur; } else if ((*cur >= 0x80) && ((doc == NULL) || @@ -1792,17 +2102,17 @@ /* * We assume we have UTF-8 content. */ - unsigned char tmp[10]; + unsigned char tmp[12]; int val = 0, l = 1; if (base != cur) - xmlBufferAdd(buf, base, cur - base); + xmlBufAdd(buf, base, cur - base); if (*cur < 0xC0) { xmlSaveErr(XML_SAVE_NOT_UTF8, (xmlNodePtr) attr, NULL); if (doc != NULL) doc->encoding = xmlStrdup(BAD_CAST "ISO-8859-1"); xmlSerializeHexCharRef(tmp, *cur); - xmlBufferAdd(buf, (xmlChar *) tmp, -1); + xmlBufAdd(buf, (xmlChar *) tmp, -1); cur++; base = cur; continue; @@ -1832,9 +2142,9 @@ xmlSaveErr(XML_SAVE_CHAR_INVALID, (xmlNodePtr) attr, NULL); if (doc != NULL) doc->encoding = xmlStrdup(BAD_CAST "ISO-8859-1"); - + xmlSerializeHexCharRef(tmp, *cur); - xmlBufferAdd(buf, (xmlChar *) tmp, -1); + xmlBufAdd(buf, (xmlChar *) tmp, -1); cur++; base = cur; continue; @@ -1844,7 +2154,7 @@ * as a char ref */ xmlSerializeHexCharRef(tmp, val); - xmlBufferAdd(buf, (xmlChar *) tmp, -1); + xmlBufAdd(buf, (xmlChar *) tmp, -1); cur += l; base = cur; } else { @@ -1852,7 +2162,31 @@ } } if (base != cur) - xmlBufferAdd(buf, base, cur - base); + xmlBufAdd(buf, base, cur - base); +} + +/** + * xmlAttrSerializeTxtContent: + * @buf: the XML buffer output + * @doc: the document + * @attr: the attribute node + * @string: the text content + * + * Serialize text attribute values to an xml simple buffer + */ +void +xmlAttrSerializeTxtContent(xmlBufferPtr buf, xmlDocPtr doc, + xmlAttrPtr attr, const xmlChar * string) +{ + xmlBufPtr buffer; + + if ((buf == NULL) || (string == NULL)) + return; + buffer = xmlBufFromBuffer(buf); + if (buffer == NULL) + return; + xmlBufAttrSerializeTxtContent(buffer, doc, attr, string); + xmlBufBackToBuffer(buffer); } /** @@ -1866,6 +2200,8 @@ * Dump an XML node, recursive behaviour,children are printed too. * Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 * or xmlKeepBlanksDefault(0) was called + * Since this is using xmlBuffer structures it is limited to 2GB and somehow + * deprecated, use xmlBufNodeDump() instead. * * Returns the number of bytes written to the buffer or -1 in case of error */ @@ -1873,9 +2209,45 @@ xmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level, int format) { - unsigned int use; + xmlBufPtr buffer; + int ret; + + if ((buf == NULL) || (cur == NULL)) + return(-1); + buffer = xmlBufFromBuffer(buf); + if (buffer == NULL) + return(-1); + ret = xmlBufNodeDump(buffer, doc, cur, level, format); + xmlBufBackToBuffer(buffer); + if (ret > INT_MAX) + return(-1); + return((int) ret); +} + +/** + * xmlBufNodeDump: + * @buf: the XML buffer output + * @doc: the document + * @cur: the current node + * @level: the imbrication level for indenting + * @format: is formatting allowed + * + * Dump an XML node, recursive behaviour,children are printed too. + * Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 + * or xmlKeepBlanksDefault(0) was called + * + * Returns the number of bytes written to the buffer, in case of error 0 + * is returned or @buf stores the error + */ + +size_t +xmlBufNodeDump(xmlBufPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level, + int format) +{ + size_t use; int ret; xmlOutputBufferPtr outbuf; + int oldalloc; xmlInitParser(); @@ -1906,10 +2278,13 @@ outbuf->context = NULL; outbuf->written = 0; - use = buf->use; + use = xmlBufUse(buf); + oldalloc = xmlBufGetAllocationScheme(buf); + xmlBufSetAllocationScheme(buf, XML_BUFFER_ALLOC_DOUBLEIT); xmlNodeDumpOutput(outbuf, doc, cur, level, format, NULL); + xmlBufSetAllocationScheme(buf, oldalloc); xmlFree(outbuf); - ret = buf->use - use; + ret = xmlBufUse(buf) - use; return (ret); } @@ -1996,9 +2371,10 @@ ctxt.doc = doc; ctxt.buf = buf; ctxt.level = level; - ctxt.format = format; + ctxt.format = format ? 1 : 0; ctxt.encoding = (const xmlChar *) encoding; xmlSaveCtxtInit(&ctxt); + ctxt.options |= XML_SAVE_AS_XML; #ifdef LIBXML_HTML_ENABLED dtd = xmlGetIntSubset(doc); @@ -2081,17 +2457,18 @@ ctxt.doc = out_doc; ctxt.buf = out_buff; ctxt.level = 0; - ctxt.format = format; + ctxt.format = format ? 1 : 0; ctxt.encoding = (const xmlChar *) txt_encoding; xmlSaveCtxtInit(&ctxt); + ctxt.options |= XML_SAVE_AS_XML; xmlDocContentDumpOutput(&ctxt, out_doc); xmlOutputBufferFlush(out_buff); if (out_buff->conv != NULL) { - *doc_txt_len = out_buff->conv->use; - *doc_txt_ptr = xmlStrndup(out_buff->conv->content, *doc_txt_len); + *doc_txt_len = xmlBufUse(out_buff->conv); + *doc_txt_ptr = xmlStrndup(xmlBufContent(out_buff->conv), *doc_txt_len); } else { - *doc_txt_len = out_buff->buffer->use; - *doc_txt_ptr = xmlStrndup(out_buff->buffer->content, *doc_txt_len); + *doc_txt_len = xmlBufUse(out_buff->buffer); + *doc_txt_ptr = xmlStrndup(xmlBufContent(out_buff->buffer),*doc_txt_len); } (void)xmlOutputBufferClose(out_buff); @@ -2186,21 +2563,23 @@ encoding = (const char *) cur->encoding; if (encoding != NULL) { - handler = xmlFindCharEncodingHandler(encoding); - if (handler == NULL) { - xmlFree((char *) cur->encoding); - cur->encoding = NULL; - } + handler = xmlFindCharEncodingHandler(encoding); + if (handler == NULL) { + xmlFree((char *) cur->encoding); + cur->encoding = NULL; + encoding = NULL; } + } buf = xmlOutputBufferCreateFile(f, handler); if (buf == NULL) return(-1); memset(&ctxt, 0, sizeof(ctxt)); ctxt.doc = cur; ctxt.buf = buf; ctxt.level = 0; - ctxt.format = format; + ctxt.format = format ? 1 : 0; ctxt.encoding = (const xmlChar *) encoding; xmlSaveCtxtInit(&ctxt); + ctxt.options |= XML_SAVE_AS_XML; xmlDocContentDumpOutput(&ctxt, cur); ret = xmlOutputBufferClose(buf); @@ -2250,6 +2629,7 @@ ctxt.format = 0; ctxt.encoding = (const xmlChar *) encoding; xmlSaveCtxtInit(&ctxt); + ctxt.options |= XML_SAVE_AS_XML; xmlDocContentDumpOutput(&ctxt, cur); ret = xmlOutputBufferClose(buf); return(ret); @@ -2286,9 +2666,10 @@ ctxt.doc = cur; ctxt.buf = buf; ctxt.level = 0; - ctxt.format = format; + ctxt.format = format ? 1 : 0; ctxt.encoding = (const xmlChar *) encoding; xmlSaveCtxtInit(&ctxt); + ctxt.options |= XML_SAVE_AS_XML; xmlDocContentDumpOutput(&ctxt, cur); ret = xmlOutputBufferClose(buf); return (ret); @@ -2331,7 +2712,7 @@ #ifdef HAVE_ZLIB_H if (cur->compression < 0) cur->compression = xmlGetCompressMode(); #endif - /* + /* * save the content to a temp buffer. */ buf = xmlOutputBufferCreateFilename(filename, handler, cur->compression); @@ -2340,9 +2721,10 @@ ctxt.doc = cur; ctxt.buf = buf; ctxt.level = 0; - ctxt.format = format; + ctxt.format = format ? 1 : 0; ctxt.encoding = (const xmlChar *) encoding; xmlSaveCtxtInit(&ctxt); + ctxt.options |= XML_SAVE_AS_XML; xmlDocContentDumpOutput(&ctxt, cur); diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlsave.in.h gettext-0.19.7/gnulib-local/lib/libxml/xmlsave.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xmlsave.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlsave.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -30,7 +30,11 @@ XML_SAVE_FORMAT = 1<<0, /* format save output */ XML_SAVE_NO_DECL = 1<<1, /* drop the xml declaration */ XML_SAVE_NO_EMPTY = 1<<2, /* no empty tags */ - XML_SAVE_NO_XHTML = 1<<3 /* disable XHTML1 specific rules */ + XML_SAVE_NO_XHTML = 1<<3, /* disable XHTML1 specific rules */ + XML_SAVE_XHTML = 1<<4, /* force XHTML1 specific rules */ + XML_SAVE_AS_XML = 1<<5, /* force XML serialization on HTML doc */ + XML_SAVE_AS_HTML = 1<<6, /* force HTML serialization on XML doc */ + XML_SAVE_WSNONSIG = 1<<7 /* format with non-significant whitespace */ } xmlSaveOption; diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlschemas.c gettext-0.19.7/gnulib-local/lib/libxml/xmlschemas.c --- gettext-0.19.6/gnulib-local/lib/libxml/xmlschemas.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlschemas.c 2015-12-23 07:08:27.000000000 +0000 @@ -90,7 +90,7 @@ #ifndef DEBUG_IDC_NODE_TABLE #define DEBUG_IDC_NODE_TABLE #endif -#endif +#endif /* #define ENABLE_PARTICLE_RESTRICTION 1 */ @@ -107,7 +107,7 @@ #endif #define UNBOUNDED (1 << 30) -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); @@ -374,7 +374,7 @@ #define XML_SCHEMA_SCHEMA_REDEFINE 3 /** - * xmlSchemaSchemaRelation: + * xmlSchemaSchemaRelation: * * Used to create a graph of schema relationships. */ @@ -402,12 +402,12 @@ int parsed; int imported; int preserveDoc; - xmlSchemaItemListPtr globals; /* Global components. */ + xmlSchemaItemListPtr globals; /* Global components. */ xmlSchemaItemListPtr locals; /* Local components. */ }; /** - * xmlSchemaImport: + * xmlSchemaImport: * (extends xmlSchemaBucket) * * Reflects a schema. Holds some information @@ -422,9 +422,9 @@ const xmlChar *schemaLocation; /* The URI of the schema document. */ /* For chameleon includes, @origTargetNamespace will be NULL */ const xmlChar *origTargetNamespace; - /* + /* * For chameleon includes, @targetNamespace will be the - * targetNamespace of the including schema. + * targetNamespace of the including schema. */ const xmlChar *targetNamespace; xmlDocPtr doc; /* The schema node-tree. */ @@ -457,7 +457,7 @@ int parsed; int imported; int preserveDoc; - xmlSchemaItemListPtr globals; /* Global components. */ + xmlSchemaItemListPtr globals; /* Global components. */ xmlSchemaItemListPtr locals; /* Local components. */ /* The owning main or import schema bucket. */ @@ -517,7 +517,7 @@ xmlSchemaTypeType type; xmlSchemaAnnotPtr annot; xmlSchemaAttributeUsePtr next; /* The next attr. use. */ - /* + /* * The attr. decl. OR a QName-ref. to an attr. decl. OR * a QName-ref. to an attribute group definition. */ @@ -573,7 +573,7 @@ xmlDictPtr dict; xmlSchemaItemListPtr buckets; /* List of schema buckets. */ /* xmlSchemaItemListPtr relations; */ /* List of schema relations. */ - xmlSchemaBucketPtr bucket; /* The current schema bucket */ + xmlSchemaBucketPtr bucket; /* The current schema bucket */ xmlSchemaItemListPtr pending; /* All Components of all schemas that need to be fixed. */ xmlHashTablePtr substGroups; @@ -629,7 +629,7 @@ xmlSchemaBucketPtr redefined; /* The schema to be redefined. */ xmlSchemaRedefPtr redef; /* Used for redefinitions. */ - int redefCounter; /* Used for redefinitions. */ + int redefCounter; /* Used for redefinitions. */ xmlSchemaItemListPtr attrProhibs; }; @@ -783,7 +783,7 @@ xmlNodePtr node; xmlSchemaPSVIIDCKeyPtr *keys; int nodeLine; - int nodeQNameID; + int nodeQNameID; }; @@ -879,7 +879,7 @@ struct _xmlSchemaNodeInfo { int nodeType; xmlNodePtr node; - int nodeLine; + int nodeLine; const xmlChar *localName; const xmlChar *nsName; const xmlChar *value; @@ -901,7 +901,7 @@ const xmlChar **nsBindings; /* Namespace bindings on this element */ int nbNsBindings; - int sizeNsBindings; + int sizeNsBindings; int hasKeyrefs; int appliedXPath; /* Indicates that an XPath has been applied. */ @@ -938,7 +938,7 @@ struct _xmlSchemaAttrInfo { int nodeType; xmlNodePtr node; - int nodeLine; + int nodeLine; const xmlChar *localName; const xmlChar *nsName; const xmlChar *value; @@ -975,6 +975,7 @@ xmlSAXHandlerPtr sax; xmlParserCtxtPtr parserCtxt; void *user_data; /* TODO: What is this for? */ + char *filename; int err; int nberrors; @@ -1028,6 +1029,10 @@ int hasKeyrefs; int createIDCNodeTables; int psviExposeIDCNodeTables; + + /* Locator for error reporting in streaming mode */ + xmlSchemaValidityLocatorFunc locFunc; + void *locCtxt; }; /** @@ -1043,9 +1048,9 @@ }; /************************************************************************ - * * - * Some predeclarations * - * * + * * + * Some predeclarations * + * * ************************************************************************/ static int xmlSchemaParseInclude(xmlSchemaParserCtxtPtr ctxt, @@ -1098,7 +1103,7 @@ /************************************************************************ * * - * Helper functions * + * Helper functions * * * ************************************************************************/ @@ -1172,7 +1177,7 @@ if (WXS_IS_COMPLEX(WXS_TYPE_CAST item)) return(BAD_CAST "complex type definition"); else - return(BAD_CAST "simple type definition"); + return(BAD_CAST "simple type definition"); default: return(xmlSchemaItemTypeToStr(item->type)); } @@ -1300,11 +1305,11 @@ *buf = xmlStrcat(*buf, localName); } else { *buf = xmlStrcat(*buf, BAD_CAST "(NULL)"); - } + } return ((const xmlChar *) *buf); } -static const xmlChar* +static const xmlChar* xmlSchemaFormatQNameNs(xmlChar **buf, xmlNsPtr ns, const xmlChar *localName) { if (ns != NULL) @@ -1466,7 +1471,7 @@ * @retValue: the returned value * @ws: the whitespace type of the value * - * Get a the cononical representation of the value. + * Get a the canonical representation of the value. * The caller has to free the returned retValue. * * Returns 0 if the value could be built and -1 in case of @@ -1480,16 +1485,16 @@ int list; xmlSchemaValType valType; const xmlChar *value, *value2 = NULL; - + if ((retValue == NULL) || (val == NULL)) return (-1); list = xmlSchemaValueGetNext(val) ? 1 : 0; *retValue = NULL; do { - value = NULL; - valType = xmlSchemaGetValType(val); - switch (valType) { + value = NULL; + valType = xmlSchemaGetValType(val); + switch (valType) { case XML_SCHEMAS_STRING: case XML_SCHEMAS_NORMSTRING: case XML_SCHEMAS_ANYSIMPLETYPE: @@ -1502,7 +1507,7 @@ if (value2 != NULL) value = value2; } - break; + break; default: if (xmlSchemaGetCanonValue(val, &value2) == -1) { if (value2 != NULL) @@ -1540,29 +1545,29 @@ * @buf: the string buffer * @itemDes: the designation of the item * @itemName: the name of the item - * @item: the item as an object + * @item: the item as an object * @itemNode: the node of the item * @local: the local name * @parsing: if the function is used during the parse * * Returns a representation of the given item used - * for error reports. + * for error reports. * - * The following order is used to build the resulting + * The following order is used to build the resulting * designation if the arguments are not NULL: * 1a. If itemDes not NULL -> itemDes * 1b. If (itemDes not NULL) and (itemName not NULL) * -> itemDes + itemName * 2. If the preceding was NULL and (item not NULL) -> item * 3. If the preceding was NULL and (itemNode not NULL) -> itemNode - * + * * If the itemNode is an attribute node, the name of the attribute * will be appended to the result. * * Returns the formatted string and sets @buf to the resulting value. - */ -static xmlChar* -xmlSchemaFormatItemForReport(xmlChar **buf, + */ +static xmlChar* +xmlSchemaFormatItemForReport(xmlChar **buf, const xmlChar *itemDes, xmlSchemaBasicItemPtr item, xmlNodePtr itemNode) @@ -1574,9 +1579,9 @@ xmlFree(*buf); *buf = NULL; } - + if (itemDes != NULL) { - *buf = xmlStrdup(itemDes); + *buf = xmlStrdup(itemDes); } else if (item != NULL) { switch (item->type) { case XML_SCHEMA_TYPE_BASIC: { @@ -1634,7 +1639,7 @@ break; case XML_SCHEMA_TYPE_ATTRIBUTE_USE: { xmlSchemaAttributeUsePtr ause; - + ause = WXS_ATTR_USE_CAST item; *buf = xmlStrdup(BAD_CAST "attribute use "); if (WXS_ATTRUSE_DECL(ause) != NULL) { @@ -1650,7 +1655,7 @@ break; case XML_SCHEMA_TYPE_ATTRIBUTE: { xmlSchemaAttributePtr attr; - + attr = (xmlSchemaAttributePtr) item; *buf = xmlStrdup(BAD_CAST "attribute decl."); *buf = xmlStrcat(*buf, BAD_CAST " '"); @@ -1666,7 +1671,7 @@ case XML_SCHEMA_TYPE_ELEMENT: { xmlSchemaElementPtr elem; - elem = (xmlSchemaElementPtr) item; + elem = (xmlSchemaElementPtr) item; *buf = xmlStrdup(BAD_CAST "element decl."); *buf = xmlStrcat(*buf, BAD_CAST " '"); *buf = xmlStrcat(*buf, xmlSchemaFormatQName(&str, @@ -1676,7 +1681,7 @@ break; case XML_SCHEMA_TYPE_IDC_UNIQUE: case XML_SCHEMA_TYPE_IDC_KEY: - case XML_SCHEMA_TYPE_IDC_KEYREF: + case XML_SCHEMA_TYPE_IDC_KEYREF: if (item->type == XML_SCHEMA_TYPE_IDC_UNIQUE) *buf = xmlStrdup(BAD_CAST "unique '"); else if (item->type == XML_SCHEMA_TYPE_IDC_KEY) @@ -1732,7 +1737,7 @@ default: named = 0; } - } else + } else named = 0; if ((named == 0) && (itemNode != NULL)) { @@ -1740,7 +1745,7 @@ if (itemNode->type == XML_ATTRIBUTE_NODE) elem = itemNode->parent; - else + else elem = itemNode; *buf = xmlStrdup(BAD_CAST "Element '"); if (elem->ns != NULL) { @@ -1750,7 +1755,7 @@ } else *buf = xmlStrcat(*buf, elem->name); *buf = xmlStrcat(*buf, BAD_CAST "'"); - + } if ((itemNode != NULL) && (itemNode->type == XML_ATTRIBUTE_NODE)) { *buf = xmlStrcat(*buf, BAD_CAST ", attribute '"); @@ -1763,7 +1768,7 @@ *buf = xmlStrcat(*buf, BAD_CAST "'"); } FREE_AND_NULL(str) - + return (*buf); } @@ -1786,13 +1791,13 @@ int res, found = 0; if (*buf != NULL) - xmlFree(*buf); + xmlFree(*buf); *buf = NULL; do { /* * Use the whitespace type of the base type. - */ + */ ws = xmlSchemaGetWhiteSpaceFacetValue(type->baseType); for (facet = type->facets; facet != NULL; facet = facet->next) { if (facet->type != XML_SCHEMA_FACET_ENUMERATION) @@ -1836,7 +1841,7 @@ /************************************************************************ * * - * Error functions * + * Error functions * * * ************************************************************************/ @@ -1881,7 +1886,7 @@ * @msg: the error message * @str1: extra data * @str2: extra data - * + * * Handle a parser error */ static void @@ -1914,7 +1919,7 @@ * @msg: the error message * @str1: extra data * @str2: extra data - * + * * Handle a parser error */ static void @@ -1933,7 +1938,7 @@ * xmlSchemaPErrExt: * @ctxt: the parsing context * @node: the context node - * @error: the error code + * @error: the error code * @strData1: extra data * @strData2: extra data * @strData3: extra data @@ -1943,13 +1948,13 @@ * @str3: extra parameter for the message display * @str4: extra parameter for the message display * @str5: extra parameter for the message display - * + * * Handle a parser error */ static void xmlSchemaPErrExt(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node, int error, - const xmlChar * strData1, const xmlChar * strData2, - const xmlChar * strData3, const char *msg, const xmlChar * str1, + const xmlChar * strData1, const xmlChar * strData2, + const xmlChar * strData3, const char *msg, const xmlChar * str1, const xmlChar * str2, const xmlChar * str3, const xmlChar * str4, const xmlChar * str5) { @@ -1967,14 +1972,14 @@ } __xmlRaiseError(schannel, channel, data, ctxt, node, XML_FROM_SCHEMASP, error, XML_ERR_ERROR, NULL, 0, - (const char *) strData1, (const char *) strData2, - (const char *) strData3, 0, 0, msg, str1, str2, + (const char *) strData1, (const char *) strData2, + (const char *) strData3, 0, 0, msg, str1, str2, str3, str4, str5); } /************************************************************************ * * - * Allround error functions * + * Allround error functions * * * ************************************************************************/ @@ -2016,7 +2021,7 @@ * @str1: extra data * @str2: extra data * @str3: extra data - * + * * Handle a validation error */ static void @@ -2028,16 +2033,17 @@ { xmlStructuredErrorFunc schannel = NULL; xmlGenericErrorFunc channel = NULL; - void *data = NULL; - + void *data = NULL; + if (ctxt != NULL) { if (ctxt->type == XML_SCHEMA_CTXT_VALIDATOR) { xmlSchemaValidCtxtPtr vctxt = (xmlSchemaValidCtxtPtr) ctxt; const char *file = NULL; + int col = 0; if (errorLevel != XML_ERR_WARNING) { vctxt->nberrors++; vctxt->err = error; - channel = vctxt->error; + channel = vctxt->error; } else { channel = vctxt->warning; } @@ -2062,6 +2068,7 @@ (vctxt->parserCtxt->input != NULL)) { file = vctxt->parserCtxt->input->filename; line = vctxt->parserCtxt->input->line; + col = vctxt->parserCtxt->input->col; } } else { /* @@ -2077,19 +2084,33 @@ else if ((vctxt->parserCtxt != NULL) && (vctxt->parserCtxt->input != NULL)) file = vctxt->parserCtxt->input->filename; - } + } + if (vctxt->locFunc != NULL) { + if ((file == NULL) || (line == 0)) { + unsigned long l; + const char *f; + vctxt->locFunc(vctxt->locCtxt, &f, &l); + if (file == NULL) + file = f; + if (line == 0) + line = (int) l; + } + } + if ((file == NULL) && (vctxt->filename != NULL)) + file = vctxt->filename; + __xmlRaiseError(schannel, channel, data, ctxt, node, XML_FROM_SCHEMASV, error, errorLevel, file, line, (const char *) str1, (const char *) str2, - (const char *) str3, 0, 0, msg, str1, str2, str3, str4); + (const char *) str3, 0, col, msg, str1, str2, str3, str4); } else if (ctxt->type == XML_SCHEMA_CTXT_PARSER) { xmlSchemaParserCtxtPtr pctxt = (xmlSchemaParserCtxtPtr) ctxt; if (errorLevel != XML_ERR_WARNING) { pctxt->nberrors++; pctxt->err = error; - channel = pctxt->error; + channel = pctxt->error; } else { channel = pctxt->warning; } @@ -2115,11 +2136,11 @@ * @str1: extra data * @str2: extra data * @str3: extra data - * + * * Handle a validation error */ static void -xmlSchemaErr3(xmlSchemaAbstractCtxtPtr actxt, +xmlSchemaErr3(xmlSchemaAbstractCtxtPtr actxt, int error, xmlNodePtr node, const char *msg, const xmlChar *str1, const xmlChar *str2, const xmlChar *str3) { @@ -2128,7 +2149,7 @@ } static void -xmlSchemaErr4(xmlSchemaAbstractCtxtPtr actxt, +xmlSchemaErr4(xmlSchemaAbstractCtxtPtr actxt, int error, xmlNodePtr node, const char *msg, const xmlChar *str1, const xmlChar *str2, const xmlChar *str3, const xmlChar *str4) @@ -2157,7 +2178,7 @@ (node->type != XML_ELEMENT_NODE) && (node->type != XML_ATTRIBUTE_NODE)) { - /* + /* * Don't try to format other nodes than element and * attribute nodes. * Play save and return an empty string. @@ -2171,7 +2192,7 @@ */ if (node->type == XML_ATTRIBUTE_NODE) { xmlNodePtr elem = node->parent; - + *msg = xmlStrdup(BAD_CAST "Element '"); if (elem->ns != NULL) *msg = xmlStrcat(*msg, xmlSchemaFormatQName(&str, @@ -2181,7 +2202,7 @@ NULL, elem->name)); FREE_AND_NULL(str); *msg = xmlStrcat(*msg, BAD_CAST "', "); - *msg = xmlStrcat(*msg, BAD_CAST "attribute '"); + *msg = xmlStrcat(*msg, BAD_CAST "attribute '"); } else { *msg = xmlStrdup(BAD_CAST "Element '"); } @@ -2197,7 +2218,7 @@ xmlSchemaValidCtxtPtr vctxt = (xmlSchemaValidCtxtPtr) actxt; /* * Work on node infos. - */ + */ if (vctxt->inode->nodeType == XML_ATTRIBUTE_NODE) { xmlSchemaNodeInfoPtr ielem = vctxt->elemInfos[vctxt->depth]; @@ -2207,7 +2228,7 @@ ielem->nsName, ielem->localName)); FREE_AND_NULL(str); *msg = xmlStrcat(*msg, BAD_CAST "', "); - *msg = xmlStrcat(*msg, BAD_CAST "attribute '"); + *msg = xmlStrcat(*msg, BAD_CAST "attribute '"); } else { *msg = xmlStrdup(BAD_CAST "Element '"); } @@ -2216,7 +2237,7 @@ FREE_AND_NULL(str); *msg = xmlStrcat(*msg, BAD_CAST "': "); } else if (actxt->type == XML_SCHEMA_CTXT_PARSER) { - /* + /* * Hmm, no node while parsing? * Return an empty string, in case NULL will break something. */ @@ -2254,7 +2275,7 @@ return; msg = xmlStrdup(BAD_CAST "Internal error: "); msg = xmlStrcat(msg, BAD_CAST funcName); - msg = xmlStrcat(msg, BAD_CAST ", "); + msg = xmlStrcat(msg, BAD_CAST ", "); msg = xmlStrcat(msg, BAD_CAST message); msg = xmlStrcat(msg, BAD_CAST ".\n"); @@ -2262,7 +2283,7 @@ xmlSchemaErr(actxt, XML_SCHEMAV_INTERNAL, NULL, (const char *) msg, str1, str2); - else if (actxt->type == XML_SCHEMA_CTXT_PARSER) + else if (actxt->type == XML_SCHEMA_CTXT_PARSER) xmlSchemaErr(actxt, XML_SCHEMAP_INTERNAL, NULL, (const char *) msg, str1, str2); @@ -2309,7 +2330,7 @@ } else xmlSchemaFormatNodeForError(&msg, actxt, node); msg = xmlStrcat(msg, (const xmlChar *) message); - msg = xmlStrcat(msg, BAD_CAST ".\n"); + msg = xmlStrcat(msg, BAD_CAST ".\n"); xmlSchemaErr4(actxt, error, node, (const char *) msg, str1, str2, str3, str4); FREE_AND_NULL(msg) @@ -2325,7 +2346,7 @@ const xmlChar *str2) { xmlSchemaCustomErr4(actxt, error, node, item, - message, str1, str2, NULL, NULL); + message, str1, str2, NULL, NULL); } @@ -2344,8 +2365,8 @@ xmlSchemaFormatNodeForError(&msg, actxt, node); msg = xmlStrcat(msg, (const xmlChar *) message); - msg = xmlStrcat(msg, BAD_CAST ".\n"); - + msg = xmlStrcat(msg, BAD_CAST ".\n"); + /* URGENT TODO: Set the error code to something sane. */ xmlSchemaErr4Line(actxt, XML_ERR_WARNING, error, node, 0, (const char *) msg, str1, str2, str3, NULL); @@ -2365,15 +2386,15 @@ const xmlChar *str2) { xmlChar *msg = NULL, *qname = NULL; - - msg = xmlStrdup(BAD_CAST "Element '%s': "); + + msg = xmlStrdup(BAD_CAST "Element '%s': "); msg = xmlStrcat(msg, (const xmlChar *) message); msg = xmlStrcat(msg, BAD_CAST ".\n"); xmlSchemaErr4Line(ACTXT_CAST vctxt, XML_ERR_ERROR, error, NULL, idcNode->nodeLine, (const char *) msg, xmlSchemaFormatQName(&qname, vctxt->nodeQNames->items[idcNode->nodeQNameID +1], - vctxt->nodeQNames->items[idcNode->nodeQNameID]), + vctxt->nodeQNames->items[idcNode->nodeQNameID]), str1, str2, NULL); FREE_AND_NULL(qname); FREE_AND_NULL(msg); @@ -2456,7 +2477,7 @@ if (type->builtInType != 0) { msg = xmlStrcat(msg, BAD_CAST "xs:"); msg = xmlStrcat(msg, type->name); - } else + } else msg = xmlStrcat(msg, xmlSchemaFormatQName(&str, type->targetNamespace, type->name)); @@ -2494,12 +2515,12 @@ xmlNodePtr node) { xmlChar *msg = NULL, *str = NULL; - + xmlSchemaFormatNodeForError(&msg, actxt, node); msg = xmlStrcat(msg, BAD_CAST "The attribute '%s' is not allowed.\n"); xmlSchemaErr(actxt, error, node, (const char *) msg, xmlSchemaFormatErrorNodeQName(&str, (xmlSchemaNodeInfoPtr) ni, node), - NULL); + NULL); FREE_AND_NULL(str) FREE_AND_NULL(msg) } @@ -2518,7 +2539,7 @@ xmlChar *localName, *nsName; const xmlChar *cur, *end; int i; - + xmlSchemaFormatNodeForError(&msg, actxt, node); msg = xmlStrcat(msg, (const xmlChar *) message); msg = xmlStrcat(msg, BAD_CAST "."); @@ -2533,7 +2554,7 @@ } else str = xmlStrdup(BAD_CAST " Expected is ( "); nsName = NULL; - + for (i = 0; i < nbval + nbneg; i++) { cur = values[i]; if (cur == NULL) @@ -2547,7 +2568,7 @@ * Get the local name. */ localName = NULL; - + end = cur; if (*end == '*') { localName = xmlStrdup(BAD_CAST "*"); @@ -2556,8 +2577,8 @@ while ((*end != 0) && (*end != '|')) end++; localName = xmlStrncat(localName, BAD_CAST cur, end - cur); - } - if (*end != 0) { + } + if (*end != 0) { end++; /* * Skip "*|*" if they come with negated expressions, since @@ -2573,12 +2594,12 @@ } else { while (*end != 0) end++; - + if (i >= nbval) nsName = xmlStrdup(BAD_CAST "{##other:"); else nsName = xmlStrdup(BAD_CAST "{"); - + nsName = xmlStrncat(nsName, BAD_CAST cur, end - cur); nsName = xmlStrcat(nsName, BAD_CAST "}"); } @@ -2588,13 +2609,13 @@ FREE_AND_NULL(localName); continue; } - } + } str = xmlStrcat(str, BAD_CAST localName); FREE_AND_NULL(localName); - + if (i < nbval + nbneg -1) str = xmlStrcat(str, BAD_CAST ", "); - } + } str = xmlStrcat(str, BAD_CAST " ).\n"); msg = xmlStrcat(msg, BAD_CAST str); FREE_AND_NULL(str) @@ -2626,8 +2647,8 @@ /* * If enumerations are validated, one must not expect the * facet to be given. - */ - } else + */ + } else facetType = facet->type; msg = xmlStrcat(msg, BAD_CAST "["); msg = xmlStrcat(msg, BAD_CAST "facet '"); @@ -2655,31 +2676,31 @@ snprintf(actLen, 24, "%lu", length); if (facetType == XML_SCHEMA_FACET_LENGTH) - msg = xmlStrcat(msg, - BAD_CAST "this differs from the allowed length of '%s'.\n"); + msg = xmlStrcat(msg, + BAD_CAST "this differs from the allowed length of '%s'.\n"); else if (facetType == XML_SCHEMA_FACET_MAXLENGTH) - msg = xmlStrcat(msg, + msg = xmlStrcat(msg, BAD_CAST "this exceeds the allowed maximum length of '%s'.\n"); else if (facetType == XML_SCHEMA_FACET_MINLENGTH) - msg = xmlStrcat(msg, + msg = xmlStrcat(msg, BAD_CAST "this underruns the allowed minimum length of '%s'.\n"); - + if (nodeType == XML_ATTRIBUTE_NODE) xmlSchemaErr3(actxt, error, node, (const char *) msg, value, (const xmlChar *) actLen, (const xmlChar *) len); - else + else xmlSchemaErr(actxt, error, node, (const char *) msg, (const xmlChar *) actLen, (const xmlChar *) len); - + } else if (facetType == XML_SCHEMA_FACET_ENUMERATION) { msg = xmlStrcat(msg, BAD_CAST "The value '%s' is not an element " "of the set {%s}.\n"); - xmlSchemaErr(actxt, error, node, (const char *) msg, value, + xmlSchemaErr(actxt, error, node, (const char *) msg, value, xmlSchemaFormatFacetEnumSet(actxt, &str, type)); } else if (facetType == XML_SCHEMA_FACET_PATTERN) { msg = xmlStrcat(msg, BAD_CAST "The value '%s' is not accepted " "by the pattern '%s'.\n"); - xmlSchemaErr(actxt, error, node, (const char *) msg, value, + xmlSchemaErr(actxt, error, node, (const char *) msg, value, facet->value); } else if (facetType == XML_SCHEMA_FACET_MININCLUSIVE) { msg = xmlStrcat(msg, BAD_CAST "The value '%s' is less than the " @@ -2711,10 +2732,10 @@ "digits than are allowed ('%s').\n"); xmlSchemaErr(actxt, error, node, (const char*) msg, value, facet->value); - } else if (nodeType == XML_ATTRIBUTE_NODE) { + } else if (nodeType == XML_ATTRIBUTE_NODE) { msg = xmlStrcat(msg, BAD_CAST "The value '%s' is not facet-valid.\n"); - xmlSchemaErr(actxt, error, node, (const char *) msg, value, NULL); - } else { + xmlSchemaErr(actxt, error, node, (const char *) msg, value, NULL); + } else { msg = xmlStrcat(msg, BAD_CAST "The value is not facet-valid.\n"); xmlSchemaErr(actxt, error, node, (const char *) msg, NULL, NULL); } @@ -2722,7 +2743,7 @@ msg = xmlStrcat(msg, (const xmlChar *) message); msg = xmlStrcat(msg, BAD_CAST ".\n"); xmlSchemaErr(actxt, error, node, (const char *) msg, str1, str2); - } + } FREE_AND_NULL(str) xmlFree(msg); } @@ -2967,9 +2988,9 @@ const xmlChar *str3,const xmlChar *str4) { xmlChar *str = NULL, *msg = NULL; - + xmlSchemaFormatItemForReport(&msg, NULL, ownerItem, NULL); - msg = xmlStrcat(msg, BAD_CAST ", "); + msg = xmlStrcat(msg, BAD_CAST ", "); msg = xmlStrcat(msg, BAD_CAST xmlSchemaFormatItemForReport(&str, NULL, WXS_BASIC_CAST attruse, NULL)); @@ -2977,7 +2998,7 @@ msg = xmlStrcat(msg, BAD_CAST ": "); msg = xmlStrcat(msg, (const xmlChar *) message); msg = xmlStrcat(msg, BAD_CAST ".\n"); - xmlSchemaErr4(ACTXT_CAST ctxt, error, node, + xmlSchemaErr4(ACTXT_CAST ctxt, error, node, (const char *) msg, str1, str2, str3, str4); xmlFree(msg); } @@ -3071,7 +3092,7 @@ * @error: the error code * @type: the type specifier * @ownerDes: the designation of the owner - * @ownerItem: the schema object if existent + * @ownerItem: the schema object if existent * @node: the validated node * @value: the validated value * @@ -3079,7 +3100,7 @@ * TODO: Should this report the value of an element as well? */ static void -xmlSchemaPSimpleTypeErr(xmlSchemaParserCtxtPtr ctxt, +xmlSchemaPSimpleTypeErr(xmlSchemaParserCtxtPtr ctxt, xmlParserErrors error, xmlSchemaBasicItemPtr ownerItem ATTRIBUTE_UNUSED, xmlNodePtr node, @@ -3091,37 +3112,37 @@ const xmlChar *str2) { xmlChar *msg = NULL; - + xmlSchemaFormatNodeForError(&msg, ACTXT_CAST ctxt, node); if (message == NULL) { /* * Use default messages. - */ + */ if (type != NULL) { if (node->type == XML_ATTRIBUTE_NODE) msg = xmlStrcat(msg, BAD_CAST "'%s' is not a valid value of "); else msg = xmlStrcat(msg, BAD_CAST "The character content is not a " - "valid value of "); + "valid value of "); if (! xmlSchemaIsGlobalItem(type)) msg = xmlStrcat(msg, BAD_CAST "the local "); else msg = xmlStrcat(msg, BAD_CAST "the "); - + if (WXS_IS_ATOMIC(type)) msg = xmlStrcat(msg, BAD_CAST "atomic type"); else if (WXS_IS_LIST(type)) msg = xmlStrcat(msg, BAD_CAST "list type"); else if (WXS_IS_UNION(type)) msg = xmlStrcat(msg, BAD_CAST "union type"); - + if (xmlSchemaIsGlobalItem(type)) { xmlChar *str = NULL; msg = xmlStrcat(msg, BAD_CAST " '"); if (type->builtInType != 0) { msg = xmlStrcat(msg, BAD_CAST "xs:"); msg = xmlStrcat(msg, type->name); - } else + } else msg = xmlStrcat(msg, xmlSchemaFormatQName(&str, type->targetNamespace, type->name)); @@ -3134,7 +3155,7 @@ else msg = xmlStrcat(msg, BAD_CAST "The character content is not " "valid."); - } + } if (expected) { msg = xmlStrcat(msg, BAD_CAST " Expected is '"); msg = xmlStrcat(msg, BAD_CAST expected); @@ -3151,7 +3172,7 @@ xmlSchemaPErrExt(ctxt, node, error, NULL, NULL, NULL, (const char*) msg, str1, str2, NULL, NULL, NULL); } - /* Cleanup. */ + /* Cleanup. */ FREE_AND_NULL(msg) } @@ -3199,25 +3220,25 @@ } /************************************************************************ - * * - * Streamable error functions * - * * + * * + * Streamable error functions * + * * ************************************************************************/ /************************************************************************ - * * - * Validation helper functions * - * * + * * + * Validation helper functions * + * * ************************************************************************/ /************************************************************************ - * * - * Allocation functions * - * * + * * + * Allocation functions * + * * ************************************************************************/ /** @@ -3372,7 +3393,7 @@ static int xmlSchemaItemListInsert(xmlSchemaItemListPtr list, void *item, int idx) -{ +{ if (list->items == NULL) { list->items = (void **) xmlMalloc( 20 * sizeof(void *)); @@ -3412,7 +3433,7 @@ int initialSize, void *item, int idx) -{ +{ if (list->items == NULL) { if (initialSize <= 0) initialSize = 1; @@ -3467,7 +3488,7 @@ list->sizeItems = 0; } else if (list->nbItems -1 == idx) { list->nbItems--; - } else { + } else { for (i = idx; i < list->nbItems -1; i++) list->items[i] = list->items[i+1]; list->nbItems--; @@ -3502,19 +3523,19 @@ } if (bucket->locals != NULL) { xmlSchemaComponentListFree(bucket->locals); - xmlSchemaItemListFree(bucket->locals); + xmlSchemaItemListFree(bucket->locals); } if (bucket->relations != NULL) { xmlSchemaSchemaRelationPtr prev, cur = bucket->relations; do { - prev = cur; + prev = cur; cur = cur->next; xmlFree(prev); } while (cur != NULL); } if ((! bucket->preserveDoc) && (bucket->doc != NULL)) { xmlFreeDoc(bucket->doc); - } + } if (bucket->type == XML_SCHEMA_SCHEMA_IMPORT) { if (WXS_IMPBUCKET(bucket)->schema != NULL) xmlSchemaFree(WXS_IMPBUCKET(bucket)->schema); @@ -3559,7 +3580,7 @@ xmlFree(ret); return(NULL); } - /* + /* * The following will assure that only the first bucket is marked as * XML_SCHEMA_SCHEMA_MAIN and it points to the *main* schema. * For each following import buckets an xmlSchema will be created. @@ -3573,7 +3594,7 @@ xmlSchemaBucketFree(ret); return(NULL); } - /* Force the type to be XML_SCHEMA_SCHEMA_MAIN. */ + /* Force the type to be XML_SCHEMA_SCHEMA_MAIN. */ ret->type = XML_SCHEMA_SCHEMA_MAIN; /* Point to the *main* schema. */ WXS_CONSTRUCTOR(pctxt)->mainBucket = ret; @@ -3583,12 +3604,12 @@ */ mainSchema->targetNamespace = targetNamespace; } else { - if (type == XML_SCHEMA_SCHEMA_MAIN) { + if (type == XML_SCHEMA_SCHEMA_MAIN) { PERROR_INT("xmlSchemaBucketCreate", "main bucket but it's not the first one"); xmlSchemaBucketFree(ret); return(NULL); - } else if (type == XML_SCHEMA_SCHEMA_IMPORT) { + } else if (type == XML_SCHEMA_SCHEMA_IMPORT) { /* * Create a schema for imports and assign the * targetNamespace. @@ -3600,7 +3621,7 @@ } WXS_IMPBUCKET(ret)->schema->targetNamespace = targetNamespace; } - } + } if (WXS_IS_BUCKET_IMPMAIN(type)) { int res; /* @@ -3643,11 +3664,11 @@ if (mainSchema->includes == NULL) { xmlSchemaBucketFree(ret); return(NULL); - } + } } xmlSchemaItemListAdd(mainSchema->includes, ret); } - /* + /* * Add to list of all buckets; this is used for lookup * during schema construction time only. */ @@ -4015,7 +4036,7 @@ for (i = 0; i < list->nbItems; i++) { item = items[i]; if (item == NULL) - continue; + continue; switch (item->type) { case XML_SCHEMA_TYPE_SIMPLE: case XML_SCHEMA_TYPE_COMPLEX: @@ -4122,7 +4143,7 @@ xmlSchemaItemListPtr list = (xmlSchemaItemListPtr) schema->includes; int i; for (i = 0; i < list->nbItems; i++) { - xmlSchemaBucketFree((xmlSchemaBucketPtr) list->items[i]); + xmlSchemaBucketFree((xmlSchemaBucketPtr) list->items[i]); } xmlSchemaItemListFree(list); } @@ -4135,9 +4156,9 @@ } /************************************************************************ - * * - * Debug functions * - * * + * * + * Debug functions * + * * ************************************************************************/ #ifdef LIBXML_OUTPUT_ENABLED @@ -4274,7 +4295,7 @@ for (i = 0;((i < depth) && (i < 25));i++) shift[2 * i] = shift[2 * i + 1] = ' '; shift[2 * i] = shift[2 * i + 1] = 0; - fprintf(output, shift); + fprintf(output, "%s", shift); if (particle->children == NULL) { fprintf(output, "MISSING particle term\n"); return; @@ -4330,7 +4351,7 @@ /** * xmlSchemaAttrUsesDump: * @uses: attribute uses list - * @output: the file output + * @output: the file output * * Dumps a list of attribute use components. */ @@ -4347,7 +4368,7 @@ if ((uses == NULL) || (uses->nbItems == 0)) return; - fprintf(output, " attributes:\n"); + fprintf(output, " attributes:\n"); for (i = 0; i < uses->nbItems; i++) { use = uses->items[i]; if (use->type == XML_SCHEMA_EXTRA_ATTR_USE_PROHIB) { @@ -4533,7 +4554,7 @@ return; do { fprintf(output, "IDC: BINDING '%s' (%d)\n", - xmlSchemaGetComponentQName(&str, + xmlSchemaGetComponentQName(&str, bind->definition), bind->nbNodes); FREE_AND_NULL(str) for (i = 0; i < bind->nbNodes; i++) { @@ -4587,7 +4608,7 @@ /************************************************************************ * * - * Utilities * + * Utilities * * * ************************************************************************/ @@ -4634,7 +4655,7 @@ xmlAttrPtr prop; if ((node == NULL) || (name == NULL)) - return(NULL); + return(NULL); prop = node->properties; while (prop != NULL) { if ((prop->ns != NULL) && @@ -4692,9 +4713,9 @@ } /************************************************************************ - * * - * Parsing functions * - * * + * * + * Parsing functions * + * * ************************************************************************/ #define WXS_FIND_GLOBAL_ITEM(slot) \ @@ -4729,12 +4750,12 @@ const xmlChar * nsName) { xmlSchemaElementPtr ret = NULL; - + if ((name == NULL) || (schema == NULL)) return(NULL); if (schema != NULL) { WXS_FIND_GLOBAL_ITEM(elemDecl) - } + } exit: #ifdef DEBUG if (ret == NULL) { @@ -4765,9 +4786,9 @@ xmlSchemaTypePtr ret = NULL; if (name == NULL) - return (NULL); + return (NULL); /* First try the built-in types. */ - if ((nsName != NULL) && xmlStrEqual(nsName, xmlSchemaNs)) { + if ((nsName != NULL) && xmlStrEqual(nsName, xmlSchemaNs)) { ret = xmlSchemaGetPredefinedType(name, nsName); if (ret != NULL) goto exit; @@ -4780,7 +4801,7 @@ } if (schema != NULL) { WXS_FIND_GLOBAL_ITEM(typeDecl) - } + } exit: #ifdef DEBUG @@ -4891,7 +4912,7 @@ WXS_FIND_GLOBAL_ITEM(groupDecl) } exit: - + #ifdef DEBUG if (ret == NULL) { if (nsName == NULL) @@ -4966,9 +4987,9 @@ } /************************************************************************ - * * - * Parsing functions * - * * + * * + * Parsing functions * + * * ************************************************************************/ #define IS_BLANK_NODE(n) \ @@ -5000,7 +5021,7 @@ str++; len--; } - + return (1); } @@ -5061,7 +5082,7 @@ default: /* Should not be hit. */ return(NULL); - } + } } } subschemas: @@ -5209,7 +5230,7 @@ * resolve references to the redefined components and to check constraints. */ static xmlSchemaRedefPtr -xmlSchemaAddRedef(xmlSchemaParserCtxtPtr pctxt, +xmlSchemaAddRedef(xmlSchemaParserCtxtPtr pctxt, xmlSchemaBucketPtr targetBucket, void *item, const xmlChar *refName, @@ -5272,7 +5293,7 @@ ret->type = XML_SCHEMA_TYPE_ATTRIBUTEGROUP; ret->name = name; ret->targetNamespace = nsName; - ret->node = node; + ret->node = node; /* TODO: Remove the flag. */ ret->flags |= XML_SCHEMAS_ATTRGROUP_GLOBAL; @@ -5282,7 +5303,7 @@ if (pctxt->redef == NULL) { xmlFree(ret); return(NULL); - } + } pctxt->redefCounter = 0; } WXS_ADD_GLOBAL(pctxt, ret); @@ -5371,13 +5392,13 @@ if (ctxt->redef == NULL) { xmlFree(ret); return(NULL); - } + } ctxt->redefCounter = 0; } WXS_ADD_GLOBAL(ctxt, ret); } else WXS_ADD_LOCAL(ctxt, ret); - WXS_ADD_PENDING(ctxt, ret); + WXS_ADD_PENDING(ctxt, ret); return (ret); } @@ -5509,7 +5530,7 @@ ret->children = NULL; WXS_ADD_LOCAL(ctxt, ret); - /* + /* * Note that addition to pending components will be done locally * to the specific parsing function, since the most particles * need not to be fixed up (i.e. the reference to be resolved). @@ -5558,7 +5579,7 @@ if (ctxt->redef == NULL) { xmlFree(ret); return(NULL); - } + } ctxt->redefCounter = 0; } WXS_ADD_GLOBAL(ctxt, ret); @@ -5595,7 +5616,7 @@ const xmlChar *name, const xmlChar *nsName, int category, xmlNodePtr node) { - xmlSchemaIDCPtr ret = NULL; + xmlSchemaIDCPtr ret = NULL; if ((ctxt == NULL) || (schema == NULL) || (name == NULL)) return (NULL); @@ -5611,8 +5632,8 @@ ret->targetNamespace = nsName; ret->name = name; ret->type = category; - ret->node = node; - + ret->node = node; + WXS_ADD_GLOBAL(ctxt, ret); /* * Only keyrefs need to be fixup up. @@ -5648,7 +5669,7 @@ } memset(ret, 0, sizeof(xmlSchemaWildcard)); ret->type = type; - ret->node = node; + ret->node = node; WXS_ADD_LOCAL(ctxt, ret); return (ret); } @@ -5704,7 +5725,7 @@ static xmlSchemaSubstGroupPtr xmlSchemaSubstGroupGet(xmlSchemaParserCtxtPtr pctxt, xmlSchemaElementPtr head) -{ +{ if (WXS_SUBST_GROUPS(pctxt) == NULL) return(NULL); return(xmlHashLookup2(WXS_SUBST_GROUPS(pctxt), @@ -5743,9 +5764,9 @@ } /************************************************************************ - * * + * * * Utilities for parsing * - * * + * * ************************************************************************/ /** @@ -5939,7 +5960,7 @@ xmlFree((xmlChar *) value); value = strip; } - res = xmlAddID(NULL, attr->doc, value, attr); + res = xmlAddID(NULL, attr->doc, value, attr); if (res == NULL) { ret = XML_SCHEMAP_S4S_ATTR_INVALID_VALUE; xmlSchemaPSimpleTypeErr(ctxt, @@ -6120,7 +6141,7 @@ value = xmlNodeGetContent(node); /* * 3.2.2.1 Lexical representation - * An instance of a datatype that is defined as boolean + * An instance of a datatype that is defined as `boolean` * can have the following legal literals {true, false, 1, 0}. */ if (xmlStrEqual(BAD_CAST value, BAD_CAST "true")) @@ -6168,7 +6189,7 @@ return (def); /* * 3.2.2.1 Lexical representation - * An instance of a datatype that is defined as boolean + * An instance of a datatype that is defined as `boolean` * can have the following legal literals {true, false, 1, 0}. */ if (xmlStrEqual(val, BAD_CAST "true")) @@ -6191,9 +6212,9 @@ } /************************************************************************ - * * + * * * Shema extraction from an Infoset * - * * + * * ************************************************************************/ static xmlSchemaTypePtr xmlSchemaParseSimpleType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, @@ -6288,7 +6309,7 @@ ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2; else ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1; - xmlSchemaPSimpleTypeErr(pctxt, + xmlSchemaPSimpleTypeErr(pctxt, ret, ownerItem, (xmlNodePtr) attr, type, NULL, value, NULL, NULL, NULL); } @@ -6352,7 +6373,7 @@ * number otherwise and -1 in case of an internal or API error. */ static int -xmlSchemaPValAttr(xmlSchemaParserCtxtPtr ctxt, +xmlSchemaPValAttr(xmlSchemaParserCtxtPtr ctxt, xmlSchemaBasicItemPtr ownerItem, xmlNodePtr ownerElem, const char *name, @@ -6442,7 +6463,7 @@ * @type: the hosting type where the attributes will be anchored * * Parses attribute uses and attribute declarations and - * attribute group references. + * attribute group references. */ static int xmlSchemaParseLocalAttributes(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema, @@ -6797,7 +6818,7 @@ tmp->next = NULL; if (wildc->nsSet == NULL) wildc->nsSet = tmp; - else + else if (lastNs != NULL) lastNs->next = tmp; lastNs = tmp; } @@ -7085,7 +7106,7 @@ int parentType) { const xmlChar *attrValue, *name = NULL, *ns = NULL; - xmlSchemaAttributeUsePtr use = NULL; + xmlSchemaAttributeUsePtr use = NULL; xmlNodePtr child = NULL; xmlAttrPtr attr; const xmlChar *tmpNs = NULL, *tmpName = NULL, *defValue = NULL; @@ -7139,7 +7160,7 @@ /* * Evaluate the target namespace */ - hasForm = 1; + hasForm = 1; attrValue = xmlSchemaGetNodeContent(pctxt, (xmlNodePtr) attr); if (xmlStrEqual(attrValue, BAD_CAST "qualified")) { @@ -7210,7 +7231,7 @@ attr_next: attr = attr->next; - } + } /* * 3.2.3 : 2 * If default and use are both present, use must have @@ -7236,7 +7257,7 @@ /* TODO: move XML_SCHEMAS_QUALIF_ATTR to the parser. */ if ((! hasForm) && (schema->flags & XML_SCHEMAS_QUALIF_ATTR)) - ns = pctxt->targetNamespace; + ns = pctxt->targetNamespace; /* * 3.2.6 Schema Component Constraint: xsi: Not Allowed * TODO: Move this to the component layer. @@ -7293,7 +7314,7 @@ use->attrDecl = attrDecl; /* * Value constraint. - */ + */ if (defValue != NULL) { attrDecl->defValue = defValue; if (defValueType == WXS_ATTR_DEF_VAL_FIXED) @@ -7333,14 +7354,14 @@ if (defValueType == WXS_ATTR_DEF_VAL_FIXED) use->flags |= XML_SCHEMA_ATTR_USE_FIXED; } - + check_children: /* * And now for the children... */ child = node->children; if (occurs == XML_SCHEMAS_ATTR_USE_PROHIBITED) { - xmlSchemaAttributeUseProhibPtr prohib; + xmlSchemaAttributeUseProhibPtr prohib; if (IS_SCHEMA(child, "annotation")) { xmlSchemaParseAnnotation(pctxt, child, 0); @@ -7355,7 +7376,7 @@ /* * Check for pointlessness of attribute prohibitions. */ - if (parentType == XML_SCHEMA_TYPE_ATTRIBUTEGROUP) { + if (parentType == XML_SCHEMA_TYPE_ATTRIBUTEGROUP) { xmlSchemaCustomWarning(ACTXT_CAST pctxt, XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH, node, NULL, @@ -7373,7 +7394,7 @@ return(NULL); } if (! isRef) { - tmpName = name; + tmpName = name; tmpNs = ns; } /* @@ -7381,7 +7402,7 @@ */ if (uses) { int i; - + for (i = 0; i < uses->nbItems; i++) { use = uses->items[i]; if ((use->type == XML_SCHEMA_EXTRA_ATTR_USE_PROHIB) && @@ -7389,16 +7410,16 @@ (tmpNs == (WXS_ATTR_PROHIB_CAST use)->targetNamespace)) { xmlChar *str = NULL; - + xmlSchemaCustomWarning(ACTXT_CAST pctxt, XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH, node, NULL, "Skipping duplicate attribute use prohibition '%s'", xmlSchemaFormatQName(&str, tmpNs, tmpName), NULL, NULL); - FREE_AND_NULL(str) + FREE_AND_NULL(str) return(NULL); - } + } } } /* @@ -7417,7 +7438,7 @@ WXS_ADD_PENDING(pctxt, prohib); } return(WXS_BASIC_CAST prohib); - } else { + } else { if (IS_SCHEMA(child, "annotation")) { /* * TODO: Should this go into the attr decl? @@ -7464,7 +7485,7 @@ NULL, node, child, NULL, "(annotation?, simpleType?)"); } - } + } return (WXS_BASIC_CAST use); } @@ -7486,7 +7507,7 @@ * 3.2.3 Constraints on XML Representations of Attribute Declarations */ if ((pctxt == NULL) || (schema == NULL) || (node == NULL)) - return (NULL); + return (NULL); /* * 3.2.3 : 3.1 * One of ref or name must be present, but not both @@ -7532,7 +7553,7 @@ if (ret == NULL) return (NULL); ret->flags |= XML_SCHEMAS_ATTR_GLOBAL; - + /* * Check for illegal attributes. */ @@ -7546,7 +7567,7 @@ (!xmlStrEqual(attr->name, BAD_CAST "type"))) { xmlSchemaPIllegalAttrErr(pctxt, - XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, NULL, attr); + XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, NULL, attr); } } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) { xmlSchemaPIllegalAttrErr(pctxt, @@ -7556,7 +7577,7 @@ } xmlSchemaPValAttrQName(pctxt, schema, NULL, node, "type", &ret->typeNs, &ret->typeName); - + xmlSchemaPValAttrID(pctxt, node, BAD_CAST "id"); /* * Attribute "fixed". @@ -7641,12 +7662,12 @@ XML_SCHEMAP_S4S_ATTR_MISSING, NULL, node, "ref", NULL); return (NULL); - } + } xmlSchemaPValAttrNodeQName(pctxt, schema, NULL, attr, &refNs, &ref); if (xmlSchemaCheckReference(pctxt, schema, node, attr, refNs) != 0) return(NULL); - + /* * Check for illegal attributes. */ @@ -7698,13 +7719,13 @@ /* * SPEC src-redefine: * (7.1) "If it has an among its contents - * the actual value of whose ref [attribute] is the same - * as the actual value of its own name attribute plus + * the `actual value` of whose ref [attribute] is the same + * as the `actual value` of its own name attribute plus * target namespace, then it must have exactly one such group." */ if (pctxt->redefCounter != 0) { xmlChar *str = NULL; - + xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_SRC_REDEFINE, node, NULL, "The redefining attribute group definition " @@ -7738,7 +7759,7 @@ ret->node = node; /* Add to pending items, to be able to resolve the reference. */ WXS_ADD_PENDING(pctxt, ret); - } + } return (ret); } @@ -7785,7 +7806,7 @@ ret = xmlSchemaAddAttributeGroupDefinition(pctxt, schema, name, pctxt->targetNamespace, node); if (ret == NULL) - return (NULL); + return (NULL); /* * Check for illegal attributes. */ @@ -8185,7 +8206,7 @@ * Returns the parsed identity-constraint definition. */ static xmlSchemaIDCSelectPtr -xmlSchemaParseIDCSelectorAndField(xmlSchemaParserCtxtPtr ctxt, +xmlSchemaParseIDCSelectorAndField(xmlSchemaParserCtxtPtr ctxt, xmlSchemaIDCPtr idc, xmlNodePtr node, int isField) @@ -8227,7 +8248,7 @@ */ attr = xmlSchemaGetPropNode(node, "xpath"); if (attr == NULL) { - xmlSchemaPMissingAttrErr(ctxt, + xmlSchemaPMissingAttrErr(ctxt, XML_SCHEMAP_S4S_ATTR_MISSING, NULL, node, "name", NULL); @@ -8848,7 +8869,7 @@ type->flags |= XML_SCHEMAS_TYPE_VARIETY_UNION; /* * SPEC (Base type) (2) "If the or alternative is chosen, - * then the simple ur-type definition." + * then the `simple ur-type definition`." */ type->baseType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYSIMPLETYPE); /* @@ -9016,7 +9037,7 @@ type->flags |= XML_SCHEMAS_TYPE_VARIETY_LIST; /* * SPEC (Base type) (2) "If the or alternative is chosen, - * then the simple ur-type definition." + * then the `simple ur-type definition`." */ type->baseType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYSIMPLETYPE); /* @@ -9161,9 +9182,9 @@ } /* * TargetNamespace: - * SPEC "The actual value of the targetNamespace [attribute] + * SPEC "The `actual value` of the targetNamespace [attribute] * of the ancestor element information item if present, - * otherwise absent. + * otherwise `absent`. */ if (topLevel == 0) { #ifdef ENABLE_NAMED_LOCALS @@ -9195,7 +9216,7 @@ if (attr->ns == NULL) { if (!xmlStrEqual(attr->name, BAD_CAST "id")) { xmlSchemaPIllegalAttrErr(ctxt, - XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, NULL, attr); + XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, NULL, attr); } } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) { xmlSchemaPIllegalAttrErr(ctxt, @@ -9266,9 +9287,9 @@ * And now for the children... */ oldCtxtType = ctxt->ctxtType; - + ctxt->ctxtType = type; - + child = node->children; if (IS_SCHEMA(child, "annotation")) { type->annot = xmlSchemaParseAnnotation(ctxt, child, 1); @@ -9278,10 +9299,10 @@ xmlSchemaPContentErr(ctxt, XML_SCHEMAP_S4S_ELEM_MISSING, NULL, node, child, NULL, "(annotation?, (restriction | list | union))"); - } else if (IS_SCHEMA(child, "restriction")) { + } else if (IS_SCHEMA(child, "restriction")) { xmlSchemaParseRestriction(ctxt, schema, child, - XML_SCHEMA_TYPE_SIMPLE); - hasRestriction = 1; + XML_SCHEMA_TYPE_SIMPLE); + hasRestriction = 1; child = child->next; } else if (IS_SCHEMA(child, "list")) { xmlSchemaParseList(ctxt, schema, child); @@ -9298,8 +9319,8 @@ /* * REDEFINE: SPEC src-redefine (5) * "Within the [children], each must have a - * among its [children] ... the actual value of whose - * base [attribute] must be the same as the actual value of its own + * among its [children] ... the `actual value` of whose + * base [attribute] must be the same as the `actual value` of its own * name attribute plus target namespace;" */ if (topLevel && ctxt->isRedefine && (! hasRestriction)) { @@ -9307,7 +9328,7 @@ NULL, node, "This is a redefinition, thus the " " must have a child", NULL); } - + ctxt->ctxtType = oldCtxtType; return (type); } @@ -9373,13 +9394,13 @@ xmlSchemaPValAttrID(ctxt, node, BAD_CAST "id"); item = xmlSchemaAddParticle(ctxt, node, min, max); if (item == NULL) - return (NULL); + return (NULL); /* * Create a qname-reference and set as the term; it will be substituted * for the model group after the reference has been resolved. */ item->children = (xmlSchemaTreeItemPtr) - xmlSchemaNewQNameRef(ctxt, XML_SCHEMA_TYPE_GROUP, ref, refNs); + xmlSchemaNewQNameRef(ctxt, XML_SCHEMA_TYPE_GROUP, ref, refNs); xmlSchemaPCheckParticleCorrect_2(ctxt, item, node, min, max); /* * And now for the children... @@ -9419,7 +9440,7 @@ * Note that the contraint src-redefine (6.2) can't be applied until * references have been resolved. So we will do this at the * component fixup level. - * + * * *WARNING* this interface is highly subject to change * * Returns -1 in case of error, 0 if the declaration is improper and @@ -9493,7 +9514,7 @@ child = child->next; } - + if (child != NULL) { xmlSchemaPContentErr(ctxt, @@ -9631,7 +9652,7 @@ attr = xmlSchemaGetPropNode(node, "version"); if (attr != NULL) { res = xmlSchemaPValAttrNode(ctxt, NULL, NULL, attr, - xmlSchemaGetBuiltInType(XML_SCHEMAS_TOKEN), &val); + xmlSchemaGetBuiltInType(XML_SCHEMAS_TOKEN), &val); HFAILURE; } */ @@ -9691,7 +9712,7 @@ } attr = xmlSchemaGetPropNode(node, "blockDefault"); if (attr != NULL) { - val = xmlSchemaGetNodeContent(ctxt, (xmlNodePtr) attr); + val = xmlSchemaGetNodeContent(ctxt, (xmlNodePtr) attr); res = xmlSchemaPValAttrBlockFinal(val, &(schema->flags), -1, XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION, XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION, @@ -9752,14 +9773,14 @@ HFAILURE; HSTOP(ctxt); if (tmpOldErrs != ctxt->nberrors) - goto exit; + goto exit; } else if (IS_SCHEMA(child, "include")) { tmpOldErrs = ctxt->nberrors; res = xmlSchemaParseInclude(ctxt, schema, child); HFAILURE; HSTOP(ctxt); if (tmpOldErrs != ctxt->nberrors) - goto exit; + goto exit; } else if (IS_SCHEMA(child, "redefine")) { tmpOldErrs = ctxt->nberrors; res = xmlSchemaParseRedefine(ctxt, schema, child); @@ -9884,7 +9905,7 @@ xmlFree(con); } -static xmlSchemaConstructionCtxtPtr +static xmlSchemaConstructionCtxtPtr xmlSchemaConstructionCtxtCreate(xmlDictPtr dict) { xmlSchemaConstructionCtxtPtr ret; @@ -9954,10 +9975,10 @@ xmlSchemaParserCtxtPtr ret; ret = xmlSchemaParserCtxtCreate(); - if (ret == NULL) + if (ret == NULL) return (NULL); ret->dict = dict; - xmlDictReference(dict); + xmlDictReference(dict); if (URL != NULL) ret->URL = xmlDictLookup(dict, (const xmlChar *) URL, -1); return (ret); @@ -10082,8 +10103,8 @@ xmlNodePtr node; int ret, oldErrs; xmlSchemaBucketPtr oldbucket = pctxt->constructor->bucket; - - /* + + /* * Save old values; reset the *main* schema. * URGENT TODO: This is not good; move the per-document information * to the parser. Get rid of passing the main schema to the @@ -10093,9 +10114,9 @@ oldDoc = schema->doc; if (schema->flags != 0) xmlSchemaClearSchemaDefaults(schema); - schema->doc = bucket->doc; + schema->doc = bucket->doc; pctxt->schema = schema; - /* + /* * Keep the current target namespace on the parser *not* on the * main schema. */ @@ -10108,7 +10129,7 @@ * We are parsing the schema for schemas! */ pctxt->isS4S = 1; - } + } /* Mark it as parsed, even if parsing fails. */ bucket->parsed++; /* Compile the schema doc. */ @@ -10132,7 +10153,7 @@ ret = pctxt->err; goto exit; } - + exit: WXS_CONSTRUCTOR(pctxt)->bucket = oldbucket; /* Restore schema values. */ @@ -10165,7 +10186,7 @@ PERROR_INT("xmlSchemaParseNewDoc", "no constructor"); return(-1); - } + } /* Create and init the temporary parser context. */ newpctxt = xmlSchemaNewParserCtxtUseDict( (const char *) bucket->schemaLocation, pctxt->dict); @@ -10173,7 +10194,7 @@ return(-1); newpctxt->constructor = pctxt->constructor; /* - * TODO: Can we avoid that the parser knows about the main schema? + * TODO: Can we avoid that the parser knows about the main schema? * It would be better if he knows about the current schema bucket * only. */ @@ -10183,16 +10204,16 @@ xmlSchemaSetParserStructuredErrors(newpctxt, pctxt->serror, pctxt->errCtxt); newpctxt->counter = pctxt->counter; - + res = xmlSchemaParseNewDocWithContext(newpctxt, schema, bucket); - + /* Channel back errors and cleanup the temporary parser context. */ if (res != 0) pctxt->err = res; pctxt->nberrors += newpctxt->nberrors; pctxt->counter = newpctxt->counter; - newpctxt->constructor = NULL; + newpctxt->constructor = NULL; /* Free the parser context. */ xmlSchemaFreeParserCtxt(newpctxt); return(res); @@ -10217,11 +10238,11 @@ static const xmlChar * xmlSchemaBuildAbsoluteURI(xmlDictPtr dict, const xmlChar* location, xmlNodePtr ctxtNode) -{ +{ /* * Build an absolue location URI. */ - if (location != NULL) { + if (location != NULL) { if (ctxtNode == NULL) return(location); else { @@ -10244,7 +10265,7 @@ } return(NULL); } - + /** @@ -10267,8 +10288,8 @@ const char *schemaBuffer, int schemaBufferLen, xmlNodePtr invokingNode, - const xmlChar *sourceTargetNamespace, - const xmlChar *importNamespace, + const xmlChar *sourceTargetNamespace, + const xmlChar *importNamespace, xmlSchemaBucketPtr *bucket) { const xmlChar *targetNamespace = NULL; @@ -10279,7 +10300,7 @@ if (bucket != NULL) *bucket = NULL; - + switch (type) { case XML_SCHEMA_SCHEMA_IMPORT: case XML_SCHEMA_SCHEMA_MAIN: @@ -10291,23 +10312,23 @@ case XML_SCHEMA_SCHEMA_REDEFINE: err = XML_SCHEMAP_SRC_REDEFINE; break; - } - + } + /* Special handling for the main schema: * skip the location and relation logic and just parse the doc. * We need just a bucket to be returned in this case. - */ + */ if ((type == XML_SCHEMA_SCHEMA_MAIN) || (! WXS_HAS_BUCKETS(pctxt))) - goto doc_load; + goto doc_load; - /* Note that we expect the location to be an absulute URI. */ + /* Note that we expect the location to be an absulute URI. */ if (schemaLocation != NULL) { bkt = xmlSchemaGetSchemaBucket(pctxt, schemaLocation); if ((bkt != NULL) && (pctxt->constructor->bucket == bkt)) { /* Report self-imports/inclusions/redefinitions. */ - + xmlSchemaCustomErr(ACTXT_CAST pctxt, err, invokingNode, NULL, "The schema must not import/include/redefine itself", @@ -10320,7 +10341,7 @@ */ relation = xmlSchemaSchemaRelationCreate(); if (relation == NULL) - return(-1); + return(-1); xmlSchemaSchemaRelationAddChild(pctxt->constructor->bucket, relation); relation->type = type; @@ -10329,7 +10350,7 @@ * Save the namespace import information. */ if (WXS_IS_BUCKET_IMPMAIN(type)) { - relation->importNamespace = importNamespace; + relation->importNamespace = importNamespace; if (schemaLocation == NULL) { /* * No location; this is just an import of the namespace. @@ -10342,32 +10363,48 @@ } /* Did we already fetch the doc? */ - if (bkt != NULL) { - /* TODO: The following nasty cases will produce an error. */ + if (bkt != NULL) { if ((WXS_IS_BUCKET_IMPMAIN(type)) && (! bkt->imported)) { - /* We included/redefined and then try to import a schema. */ - xmlSchemaCustomErr(ACTXT_CAST pctxt, err, - invokingNode, NULL, - "The schema document '%s' cannot be imported, since " - "it was already included or redefined", - schemaLocation, NULL); - goto exit; + /* + * We included/redefined and then try to import a schema, + * but the new location provided for import was different. + */ + if (schemaLocation == NULL) + schemaLocation = BAD_CAST "in_memory_buffer"; + if (!xmlStrEqual(schemaLocation, + bkt->schemaLocation)) { + xmlSchemaCustomErr(ACTXT_CAST pctxt, err, + invokingNode, NULL, + "The schema document '%s' cannot be imported, since " + "it was already included or redefined", + schemaLocation, NULL); + goto exit; + } } else if ((! WXS_IS_BUCKET_IMPMAIN(type)) && (bkt->imported)) { - /* We imported and then try to include/redefine a schema. */ - xmlSchemaCustomErr(ACTXT_CAST pctxt, err, - invokingNode, NULL, - "The schema document '%s' cannot be included or " - "redefined, since it was already imported", - schemaLocation, NULL); - goto exit; - } + /* + * We imported and then try to include/redefine a schema, + * but the new location provided for the include/redefine + * was different. + */ + if (schemaLocation == NULL) + schemaLocation = BAD_CAST "in_memory_buffer"; + if (!xmlStrEqual(schemaLocation, + bkt->schemaLocation)) { + xmlSchemaCustomErr(ACTXT_CAST pctxt, err, + invokingNode, NULL, + "The schema document '%s' cannot be included or " + "redefined, since it was already imported", + schemaLocation, NULL); + goto exit; + } + } } - + if (WXS_IS_BUCKET_IMPMAIN(type)) { /* * Given that the schemaLocation [attribute] is only a hint, it is open * to applications to ignore all but the first for a given - * namespace, regardless of the actual value of schemaLocation, but + * namespace, regardless of the `actual value` of schemaLocation, but * such a strategy risks missing useful information when new * schemaLocations are offered. * @@ -10383,7 +10420,7 @@ * 5 Attempt to resolve the namespace name to locate such a resource. * * NOTE: (3) and (5) are not supported. - */ + */ if (bkt != NULL) { relation->bucket = bkt; goto exit; @@ -10391,7 +10428,7 @@ bkt = xmlSchemaGetSchemaBucketByTNS(pctxt, importNamespace, 1); - if (bkt != NULL) { + if (bkt != NULL) { relation->bucket = bkt; if (bkt->schemaLocation == NULL) { /* First given location of the schema; load the doc. */ @@ -10404,6 +10441,9 @@ * URGENT TODO: We should report a warning here. * res = XML_SCHEMAP_SRC_IMPORT; */ + if (schemaLocation == NULL) + schemaLocation = BAD_CAST "in_memory_buffer"; + xmlSchemaCustomWarning(ACTXT_CAST pctxt, XML_SCHEMAP_WARN_SKIP_SCHEMA, invokingNode, NULL, @@ -10414,19 +10454,19 @@ } goto exit; } - } - /* + } + /* * No bucket + first location: load the doc and create a * bucket. */ } else { /* and */ if (bkt != NULL) { - + if ((bkt->origTargetNamespace == NULL) && (bkt->targetNamespace != sourceTargetNamespace)) { xmlSchemaBucketPtr chamel; - + /* * Chameleon include/redefine: skip loading only if it was * aleady build for the targetNamespace of the including @@ -10451,7 +10491,7 @@ relation->bucket = chamel; goto exit; } - /* + /* * We need to parse the chameleon again for a different * targetNamespace. * CHAMELEON TODO: Optimize this by only parsing the @@ -10462,7 +10502,7 @@ } else { relation->bucket = bkt; goto exit; - } + } } } if ((bkt != NULL) && (bkt->doc != NULL)) { @@ -10484,7 +10524,8 @@ if (schemaDoc->URL != NULL) schemaLocation = xmlDictLookup(pctxt->dict, schemaDoc->URL, -1); - + else + schemaLocation = BAD_CAST "in_memory_buffer"; } else if ((schemaLocation != NULL) || (schemaBuffer != NULL)) { xmlParserCtxtPtr parserCtxt; @@ -10511,9 +10552,9 @@ /* Parse from memory buffer. */ doc = xmlCtxtReadMemory(parserCtxt, schemaBuffer, schemaBufferLen, NULL, NULL, SCHEMAS_PARSE_OPTIONS); - schemaLocation = xmlStrdup(BAD_CAST "in_memory_buffer"); + schemaLocation = BAD_CAST "in_memory_buffer"; if (doc != NULL) - doc->URL = schemaLocation; + doc->URL = xmlStrdup(schemaLocation); } /* * For : @@ -10547,7 +10588,7 @@ xmlSchemaCustomErr(ACTXT_CAST pctxt, res, invokingNode, NULL, "Failed to parse the XML resource '%s'", - schemaLocation, NULL); + schemaLocation, NULL); } } xmlFreeParserCtxt(parserCtxt); @@ -10567,11 +10608,11 @@ if (doc != NULL) { xmlNodePtr docElem = NULL; - located = 1; + located = 1; docElem = xmlDocGetRootElement(doc); if (docElem == NULL) { xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_NOROOT, - invokingNode, NULL, + invokingNode, NULL, "The document '%s' has no document element", schemaLocation, NULL); goto exit_error; @@ -10590,14 +10631,14 @@ schemaLocation, NULL); goto exit_error; } - /* + /* * Note that we don't apply a type check for the * targetNamespace value here. */ targetNamespace = xmlSchemaGetProp(pctxt, docElem, "targetNamespace"); } - + /* after_doc_loading: */ if ((bkt == NULL) && located) { /* Only create a bucket if the schema was located. */ @@ -10624,14 +10665,14 @@ if (relation != NULL) relation->bucket = bkt; } - + exit: /* * Return the bucket explicitely; this is needed for the * main schema. */ if (bucket != NULL) - *bucket = bkt; + *bucket = bkt; return (0); exit_error: @@ -10647,7 +10688,7 @@ xmlFreeDoc(doc); if (bkt != NULL) bkt->doc = NULL; - } + } return (-1); } @@ -10716,7 +10757,7 @@ XML_SCHEMAP_S4S_ATTR_INVALID_VALUE, NULL, node, xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYURI), - NULL, namespaceName, NULL, NULL, NULL); + NULL, schemaLocation, NULL, NULL, NULL); return (pctxt->err); } /* @@ -10747,8 +10788,8 @@ thisTargetNamespace = WXS_BUCKET(pctxt)->origTargetNamespace; if (namespaceName != NULL) { /* - * 1.1 If the namespace [attribute] is present, then its actual value - * must not match the actual value of the enclosing 's + * 1.1 If the namespace [attribute] is present, then its `actual value` + * must not match the `actual value` of the enclosing 's * targetNamespace [attribute]. */ if (xmlStrEqual(thisTargetNamespace, namespaceName)) { @@ -10802,11 +10843,11 @@ "Failed to locate a schema at location '%s'. " "Skipping the import", schemaLocation, NULL, NULL); } - - if ((bucket != NULL) && CAN_PARSE_SCHEMA(bucket)) { + + if ((bucket != NULL) && CAN_PARSE_SCHEMA(bucket)) { ret = xmlSchemaParseNewDoc(pctxt, schema, bucket); } - + return (ret); } @@ -10888,7 +10929,7 @@ XML_SCHEMAP_SRC_REDEFINE, NULL, node, "The schema document '%s' cannot redefine itself.", - *schemaLocation); + *schemaLocation); } else { xmlSchemaPCustomErr(pctxt, XML_SCHEMAP_SRC_INCLUDE, @@ -10898,7 +10939,7 @@ } goto exit_error; } - + return(0); exit_error: return(pctxt->err); @@ -10928,19 +10969,19 @@ res = xmlSchemaParseIncludeOrRedefineAttrs(pctxt, schema, node, (xmlChar **) (&schemaLocation), type); if (res != 0) - return(res); + return(res); /* * Load and add the schema document. */ res = xmlSchemaAddSchemaDoc(pctxt, type, schemaLocation, NULL, NULL, 0, node, pctxt->targetNamespace, NULL, &bucket); if (res != 0) - return(res); + return(res); /* * If we get no schema bucket back, then this means that the schema * document could not be located or was broken XML or was not * a schema document. - */ + */ if ((bucket == NULL) || (bucket->doc == NULL)) { if (type == XML_SCHEMA_SCHEMA_INCLUDE) { /* @@ -10949,7 +10990,7 @@ * for inclusions, since the that was the feedback from the * schema people. I.e. the following spec piece will *not* be * satisfied: - * SPEC src-include: "It is not an error for the actual value of the + * SPEC src-include: "It is not an error for the `actual value` of the * schemaLocation [attribute] to fail to resolve it all, in which * case no corresponding inclusion is performed. * So do we need a warning report here?" @@ -10966,7 +11007,7 @@ * * SPEC src-redefine (1) * "If there are any element information items among the [children] - * other than then the actual value of the + * other than then the `actual value` of the * schemaLocation [attribute] must successfully resolve." * TODO: Ask the WG if a the location has always to resolve * here as well! @@ -10982,13 +11023,13 @@ * Check targetNamespace sanity before parsing the new schema. * TODO: Note that we won't check further content if the * targetNamespace was bad. - */ - if (bucket->origTargetNamespace != NULL) { + */ + if (bucket->origTargetNamespace != NULL) { /* * SPEC src-include (2.1) - * "SII has a targetNamespace [attribute], and its actual - * value is identical to the actual value of the targetNamespace - * [attribute] of SII (which must have such an [attribute])." + * "SII has a targetNamespace [attribute], and its `actual + * value` is identical to the `actual value` of the targetNamespace + * [attribute] of SII' (which must have such an [attribute])." */ if (pctxt->targetNamespace == NULL) { xmlSchemaCustomErr(ACTXT_CAST pctxt, @@ -11012,28 +11053,29 @@ pctxt->targetNamespace); goto exit_error; } - } else if (pctxt->targetNamespace != NULL) { + } else if (pctxt->targetNamespace != NULL) { /* * Chameleons: the original target namespace will * differ from the resulting namespace. */ isChameleon = 1; if (bucket->parsed && - (bucket->targetNamespace != pctxt->targetNamespace)) { - /* - * This is a sanity check, I dunno yet if this can happen. - */ - PERROR_INT("xmlSchemaParseIncludeOrRedefine", - "trying to use an already parsed schema for a " - "different targetNamespace"); - return(-1); + bucket->origTargetNamespace != NULL) { + xmlSchemaCustomErr(ACTXT_CAST pctxt, + XML_SCHEMAP_SRC_INCLUDE, + node, NULL, + "The target namespace of the included/redefined schema " + "'%s' has to be absent or the same as the " + "including/redefining schema's target namespace", + schemaLocation, NULL); + goto exit_error; } bucket->targetNamespace = pctxt->targetNamespace; } - } + } /* * Parse the schema. - */ + */ if (bucket && (!bucket->parsed) && (bucket->doc != NULL)) { if (isChameleon) { /* TODO: Get rid of this flag on the schema itself. */ @@ -11050,8 +11092,8 @@ /* * And now for the children... */ - child = node->children; - if (type == XML_SCHEMA_SCHEMA_REDEFINE) { + child = node->children; + if (type == XML_SCHEMA_SCHEMA_REDEFINE) { /* * Parse (simpleType | complexType | group | attributeGroup))* */ @@ -11074,7 +11116,7 @@ } else if (IS_SCHEMA(child, "complexType")) { xmlSchemaParseComplexType(pctxt, schema, child, 1); /* hasRedefinitions = 1; */ - } else if (IS_SCHEMA(child, "group")) { + } else if (IS_SCHEMA(child, "group")) { /* hasRedefinitions = 1; */ xmlSchemaParseModelGroupDefinition(pctxt, schema, child); @@ -11094,7 +11136,7 @@ */ child = child->next; } - } + } if (child != NULL) { res = XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED; if (type == XML_SCHEMA_SCHEMA_REDEFINE) { @@ -11105,8 +11147,8 @@ xmlSchemaPContentErr(pctxt, res, NULL, node, child, NULL, "(annotation?)"); - } - } + } + } return(res); exit_error: @@ -11156,7 +11198,7 @@ * Redefinition Constraints and Semantics (src-redefine) * (6.1), (6.1.1), (6.1.2) * - * Schema Component Constraint: + * Schema Component Constraint: * All Group Limited (cos-all-limited) (2) * TODO: Actually this should go to component-level checks, * but is done here due to performance. Move it to an other layer @@ -11335,8 +11377,8 @@ /* * SPEC src-redefine: * (6.1) "If it has a among its contents at - * some level the actual value of whose ref - * [attribute] is the same as the actual value of + * some level the `actual value` of whose ref + * [attribute] is the same as the `actual value` of * its own name attribute plus target namespace, then * all of the following must be true:" * (6.1.1) "It must have exactly one such group." @@ -11361,9 +11403,9 @@ xmlChar *str = NULL; /* * SPEC src-redefine: - * (6.1.2) "The actual value of both that + * (6.1.2) "The `actual value` of both that * group's minOccurs and maxOccurs [attribute] - * must be 1 (or absent). + * must be 1 (or `absent`). */ xmlSchemaCustomErr(ACTXT_CAST ctxt, XML_SCHEMAP_SRC_REDEFINE, child, NULL, @@ -11380,7 +11422,7 @@ } ctxt->redef->reference = WXS_BASIC_CAST part; ctxt->redefCounter++; - } + } } } else if (IS_SCHEMA(child, "any")) { part = (xmlSchemaTreeItemPtr) @@ -11417,7 +11459,7 @@ WXS_ADD_PENDING(ctxt, item); } if (withParticle) - return ((xmlSchemaTreeItemPtr) particle); + return ((xmlSchemaTreeItemPtr) particle); else return ((xmlSchemaTreeItemPtr) item); } @@ -11469,7 +11511,7 @@ */ xmlSchemaPValAttrID(ctxt, node, BAD_CAST "id"); /* - * Attribute + * Attribute */ /* * Extract the base type. The "base" attribute is mandatory if inside @@ -11477,8 +11519,8 @@ * * SPEC (1.2) "...otherwise ( has no " * among its [children]), the simple type definition which is - * the {content type} of the type definition resolved to by - * the actual value of the base [attribute]" + * the {content type} of the type definition `resolved` to by + * the `actual value` of the base [attribute]" */ if (xmlSchemaPValAttrQName(ctxt, schema, NULL, node, "base", &(type->baseNs), &(type->base)) == 0) @@ -11501,8 +11543,8 @@ /* * REDEFINE: SPEC src-redefine (5) * "Within the [children], each must have a - * among its [children] ... the actual value of - * whose base [attribute] must be the same as the actual value + * among its [children] ... the `actual value` of + * whose base [attribute] must be the same as the `actual value` * of its own name attribute plus target namespace;" */ xmlSchemaPCustomErrExt(ctxt, XML_SCHEMAP_SRC_REDEFINE, @@ -11518,7 +11560,7 @@ type->base = NULL; type->baseNs = NULL; } - } + } } /* * And now for the children... @@ -11585,7 +11627,7 @@ /* * Model group reference . */ - } else if (IS_SCHEMA(child, "group")) { + } else if (IS_SCHEMA(child, "group")) { type->subtypes = (xmlSchemaTypePtr) xmlSchemaParseModelGroupDefRef(ctxt, schema, child); /* @@ -11923,13 +11965,13 @@ xmlSchemaPContentErr(ctxt, XML_SCHEMAP_S4S_ELEM_MISSING, NULL, node, NULL, NULL, - "(annotation?, (restriction | extension))"); + "(annotation?, (restriction | extension))"); } if (child == NULL) { xmlSchemaPContentErr(ctxt, XML_SCHEMAP_S4S_ELEM_MISSING, NULL, node, NULL, NULL, - "(annotation?, (restriction | extension))"); + "(annotation?, (restriction | extension))"); } if (IS_SCHEMA(child, "restriction")) { xmlSchemaParseRestriction(ctxt, schema, child, @@ -12086,7 +12128,7 @@ } else if (xmlSchemaPValAttrNode(ctxt, NULL, attr, xmlSchemaGetBuiltInType(XML_SCHEMAS_NCNAME), &name) != 0) { return (NULL); - } + } } if (topLevel == 0) { @@ -12175,7 +12217,7 @@ NULL, (xmlNodePtr) attr, NULL, "(#all | List of (extension | restriction))", attrValue, NULL, NULL, NULL); - } else + } else final = 1; } else if (xmlStrEqual(attr->name, BAD_CAST "block")) { /* @@ -12193,7 +12235,7 @@ NULL, (xmlNodePtr) attr, NULL, "(#all | List of (extension | restriction)) ", attrValue, NULL, NULL, NULL); - } else + } else block = 1; } else { xmlSchemaPIllegalAttrErr(ctxt, @@ -12204,7 +12246,7 @@ XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, NULL, attr); } } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) { - xmlSchemaPIllegalAttrErr(ctxt, + xmlSchemaPIllegalAttrErr(ctxt, XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, NULL, attr); } attr = attr->next; @@ -12263,7 +12305,7 @@ * SPEC * "...the third alternative (neither nor * ) is chosen. This case is understood as shorthand - * for complex content restricting the ur-type definition, and the + * for complex content restricting the `ur-type definition`, and the * details of the mappings should be modified as necessary. */ type->baseType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYTYPE); @@ -12332,15 +12374,15 @@ } /************************************************************************ - * * - * Validating using Schemas * - * * + * * + * Validating using Schemas * + * * ************************************************************************/ /************************************************************************ - * * - * Reading/Writing Schemas * - * * + * * + * Reading/Writing Schemas * + * * ************************************************************************/ #if 0 /* Will be enabled if it is clear what options are needed. */ @@ -12440,7 +12482,7 @@ return(NULL); ret->buffer = buffer; ret->size = size; - ret->dict = xmlDictCreate(); + ret->dict = xmlDictCreate(); return (ret); } @@ -12483,7 +12525,7 @@ if (ctxt == NULL) return; if (ctxt->doc != NULL && !ctxt->preserve) - xmlFreeDoc(ctxt->doc); + xmlFreeDoc(ctxt->doc); if (ctxt->vctxt != NULL) { xmlSchemaFreeValidCtxt(ctxt->vctxt); } @@ -12504,7 +12546,12 @@ * * ************************************************************************/ -static void +/** + * xmlSchemaBuildContentModelForSubstGroup: + * + * Returns 1 if nillable, 0 otherwise + */ +static int xmlSchemaBuildContentModelForSubstGroup(xmlSchemaParserCtxtPtr pctxt, xmlSchemaParticlePtr particle, int counter, xmlAutomataStatePtr end) { @@ -12512,6 +12559,7 @@ xmlSchemaElementPtr elemDecl, member; xmlSchemaSubstGroupPtr substGroup; int i; + int ret = 0; elemDecl = (xmlSchemaElementPtr) particle->children; /* @@ -12527,7 +12575,7 @@ "Internal error: xmlSchemaBuildContentModelForSubstGroup, " "declaration is marked having a subst. group but none " "available.\n", elemDecl->name, NULL); - return; + return(0); } if (counter >= 0) { /* @@ -12565,7 +12613,7 @@ * was incorrectly used instead of xmlAutomataNewTransition2() * (seems like a copy&paste bug from the XML_SCHEMA_TYPE_ALL * section in xmlSchemaBuildAContentModel() ). - * TODO: Check if xmlAutomataNewOnceTrans2() was instead + * TODO: Check if xmlAutomataNewOnceTrans2() was instead * intended for the above "counter" section originally. I.e., * check xs:all with subst-groups. * @@ -12574,7 +12622,7 @@ * 1, 1, member); */ tmp = xmlAutomataNewTransition2(pctxt->am, start, NULL, - member->name, member->targetNamespace, member); + member->name, member->targetNamespace, member); xmlAutomataNewEpsilon(pctxt->am, tmp, end); } } else { @@ -12607,21 +12655,31 @@ xmlAutomataNewCountedTrans(pctxt->am, hop, start, counter); xmlAutomataNewCounterTrans(pctxt->am, hop, end, counter); } - if (particle->minOccurs == 0) + if (particle->minOccurs == 0) { xmlAutomataNewEpsilon(pctxt->am, start, end); + ret = 1; + } pctxt->state = end; + return(ret); } -static void +/** + * xmlSchemaBuildContentModelForElement: + * + * Returns 1 if nillable, 0 otherwise + */ +static int xmlSchemaBuildContentModelForElement(xmlSchemaParserCtxtPtr ctxt, xmlSchemaParticlePtr particle) { + int ret = 0; + if (((xmlSchemaElementPtr) particle->children)->flags & XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD) { /* * Substitution groups. */ - xmlSchemaBuildContentModelForSubstGroup(ctxt, particle, -1, NULL); + ret = xmlSchemaBuildContentModelForSubstGroup(ctxt, particle, -1, NULL); } else { xmlSchemaElementPtr elemDecl; xmlAutomataStatePtr start; @@ -12629,7 +12687,7 @@ elemDecl = (xmlSchemaElementPtr) particle->children; if (elemDecl->flags & XML_SCHEMAS_ELEM_ABSTRACT) - return; + return(0); if (particle->maxOccurs == 1) { start = ctxt->state; ctxt->state = xmlAutomataNewTransition2(ctxt->am, start, NULL, @@ -12637,11 +12695,11 @@ } else if ((particle->maxOccurs >= UNBOUNDED) && (particle->minOccurs < 2)) { /* Special case. */ - start = ctxt->state; + start = ctxt->state; ctxt->state = xmlAutomataNewTransition2(ctxt->am, start, NULL, - elemDecl->name, elemDecl->targetNamespace, elemDecl); + elemDecl->name, elemDecl->targetNamespace, elemDecl); ctxt->state = xmlAutomataNewTransition2(ctxt->am, ctxt->state, ctxt->state, - elemDecl->name, elemDecl->targetNamespace, elemDecl); + elemDecl->name, elemDecl->targetNamespace, elemDecl); } else { int counter; int maxOccurs = particle->maxOccurs == UNBOUNDED ? @@ -12657,9 +12715,12 @@ ctxt->state = xmlAutomataNewCounterTrans(ctxt->am, ctxt->state, NULL, counter); } - if (particle->minOccurs == 0) + if (particle->minOccurs == 0) { xmlAutomataNewEpsilon(ctxt->am, start, ctxt->state); + ret = 1; + } } + return(ret); } /** @@ -12670,21 +12731,24 @@ * * Create the automaton for the {content type} of a complex type. * + * Returns 1 if the content is nillable, 0 otherwise */ -static void +static int xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr pctxt, xmlSchemaParticlePtr particle) { + int ret = 0, tmp2; + if (particle == NULL) { - PERROR_INT("xmlSchemaBuildAContentModel", "particle is NULL"); - return; + PERROR_INT("xmlSchemaBuildAContentModel", "particle is NULL"); + return(1); } if (particle->children == NULL) { /* * Just return in this case. A missing "term" of the particle * might arise due to an invalid "term" component. */ - return; + return(1); } switch (particle->children->type) { @@ -12736,7 +12800,8 @@ int counter; xmlAutomataStatePtr hop; int maxOccurs = - particle->maxOccurs == UNBOUNDED ? UNBOUNDED : particle->maxOccurs - 1; + particle->maxOccurs == UNBOUNDED ? UNBOUNDED : + particle->maxOccurs - 1; int minOccurs = particle->minOccurs < 1 ? 0 : particle->minOccurs - 1; @@ -12771,243 +12836,282 @@ } if (particle->minOccurs == 0) { xmlAutomataNewEpsilon(pctxt->am, start, end); + ret = 1; } pctxt->state = end; break; } case XML_SCHEMA_TYPE_ELEMENT: - xmlSchemaBuildContentModelForElement(pctxt, particle); + ret = xmlSchemaBuildContentModelForElement(pctxt, particle); break; case XML_SCHEMA_TYPE_SEQUENCE:{ - xmlSchemaTreeItemPtr sub; + xmlSchemaTreeItemPtr sub; - /* - * If max and min occurances are default (1) then - * simply iterate over the particles of the . - */ - if ((particle->minOccurs == 1) && (particle->maxOccurs == 1)) { - sub = particle->children->children; - while (sub != NULL) { - xmlSchemaBuildAContentModel(pctxt, - (xmlSchemaParticlePtr) sub); - sub = sub->next; - } - } else { - xmlAutomataStatePtr oldstate = pctxt->state; + ret = 1; + /* + * If max and min occurances are default (1) then + * simply iterate over the particles of the . + */ + if ((particle->minOccurs == 1) && (particle->maxOccurs == 1)) { + sub = particle->children->children; - if (particle->maxOccurs >= UNBOUNDED) { - if (particle->minOccurs > 1) { - xmlAutomataStatePtr tmp; - int counter; - - pctxt->state = xmlAutomataNewEpsilon(pctxt->am, - oldstate, NULL); - oldstate = pctxt->state; - - counter = xmlAutomataNewCounter(pctxt->am, - particle->minOccurs - 1, UNBOUNDED); - - sub = particle->children->children; - while (sub != NULL) { - xmlSchemaBuildAContentModel(pctxt, - (xmlSchemaParticlePtr) sub); - sub = sub->next; - } - tmp = pctxt->state; - xmlAutomataNewCountedTrans(pctxt->am, tmp, - oldstate, counter); - pctxt->state = - xmlAutomataNewCounterTrans(pctxt->am, tmp, - NULL, counter); - - } else { - pctxt->state = xmlAutomataNewEpsilon(pctxt->am, - oldstate, NULL); - oldstate = pctxt->state; - - sub = particle->children->children; - while (sub != NULL) { - xmlSchemaBuildAContentModel(pctxt, - (xmlSchemaParticlePtr) sub); - sub = sub->next; - } - xmlAutomataNewEpsilon(pctxt->am, pctxt->state, - oldstate); - /* - * epsilon needed to block previous trans from - * being allowed to enter back from another - * construct - */ - pctxt->state = xmlAutomataNewEpsilon(pctxt->am, - pctxt->state, NULL); - if (particle->minOccurs == 0) { - xmlAutomataNewEpsilon(pctxt->am, - oldstate, pctxt->state); - } - } - } else if ((particle->maxOccurs > 1) - || (particle->minOccurs > 1)) { + while (sub != NULL) { + tmp2 = xmlSchemaBuildAContentModel(pctxt, + (xmlSchemaParticlePtr) sub); + if (tmp2 != 1) ret = 0; + sub = sub->next; + } + } else { + xmlAutomataStatePtr oldstate = pctxt->state; + + if (particle->maxOccurs >= UNBOUNDED) { + if (particle->minOccurs > 1) { xmlAutomataStatePtr tmp; int counter; pctxt->state = xmlAutomataNewEpsilon(pctxt->am, - oldstate, NULL); + oldstate, NULL); oldstate = pctxt->state; counter = xmlAutomataNewCounter(pctxt->am, - particle->minOccurs - 1, - particle->maxOccurs - 1); + particle->minOccurs - 1, UNBOUNDED); sub = particle->children->children; while (sub != NULL) { - xmlSchemaBuildAContentModel(pctxt, - (xmlSchemaParticlePtr) sub); + tmp2 = xmlSchemaBuildAContentModel(pctxt, + (xmlSchemaParticlePtr) sub); + if (tmp2 != 1) ret = 0; sub = sub->next; } tmp = pctxt->state; - xmlAutomataNewCountedTrans(pctxt->am, - tmp, oldstate, counter); + xmlAutomataNewCountedTrans(pctxt->am, tmp, + oldstate, counter); pctxt->state = - xmlAutomataNewCounterTrans(pctxt->am, tmp, NULL, - counter); - if (particle->minOccurs == 0) { + xmlAutomataNewCounterTrans(pctxt->am, tmp, + NULL, counter); + if (ret == 1) xmlAutomataNewEpsilon(pctxt->am, - oldstate, pctxt->state); - } + oldstate, pctxt->state); + } else { + pctxt->state = xmlAutomataNewEpsilon(pctxt->am, + oldstate, NULL); + oldstate = pctxt->state; + sub = particle->children->children; while (sub != NULL) { - xmlSchemaBuildAContentModel(pctxt, - (xmlSchemaParticlePtr) sub); + tmp2 = xmlSchemaBuildAContentModel(pctxt, + (xmlSchemaParticlePtr) sub); + if (tmp2 != 1) ret = 0; sub = sub->next; } + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, + oldstate); + /* + * epsilon needed to block previous trans from + * being allowed to enter back from another + * construct + */ + pctxt->state = xmlAutomataNewEpsilon(pctxt->am, + pctxt->state, NULL); if (particle->minOccurs == 0) { - xmlAutomataNewEpsilon(pctxt->am, oldstate, - pctxt->state); + xmlAutomataNewEpsilon(pctxt->am, + oldstate, pctxt->state); + ret = 1; } } - } - break; - } - case XML_SCHEMA_TYPE_CHOICE:{ - xmlSchemaTreeItemPtr sub; - xmlAutomataStatePtr start, end; + } else if ((particle->maxOccurs > 1) + || (particle->minOccurs > 1)) { + xmlAutomataStatePtr tmp; + int counter; - start = pctxt->state; - end = xmlAutomataNewState(pctxt->am); + pctxt->state = xmlAutomataNewEpsilon(pctxt->am, + oldstate, NULL); + oldstate = pctxt->state; + + counter = xmlAutomataNewCounter(pctxt->am, + particle->minOccurs - 1, + particle->maxOccurs - 1); - /* - * iterate over the subtypes and remerge the end with an - * epsilon transition - */ - if (particle->maxOccurs == 1) { - sub = particle->children->children; + sub = particle->children->children; while (sub != NULL) { - pctxt->state = start; - xmlSchemaBuildAContentModel(pctxt, - (xmlSchemaParticlePtr) sub); - xmlAutomataNewEpsilon(pctxt->am, pctxt->state, end); + tmp2 = xmlSchemaBuildAContentModel(pctxt, + (xmlSchemaParticlePtr) sub); + if (tmp2 != 1) ret = 0; sub = sub->next; } + tmp = pctxt->state; + xmlAutomataNewCountedTrans(pctxt->am, + tmp, oldstate, counter); + pctxt->state = + xmlAutomataNewCounterTrans(pctxt->am, tmp, NULL, + counter); + if ((particle->minOccurs == 0) || (ret == 1)) { + xmlAutomataNewEpsilon(pctxt->am, + oldstate, pctxt->state); + ret = 1; + } } else { - int counter; - xmlAutomataStatePtr hop, base; - int maxOccurs = particle->maxOccurs == UNBOUNDED ? - UNBOUNDED : particle->maxOccurs - 1; - int minOccurs = - particle->minOccurs < 1 ? 0 : particle->minOccurs - 1; - - /* - * use a counter to keep track of the number of transtions - * which went through the choice. - */ - counter = - xmlAutomataNewCounter(pctxt->am, minOccurs, maxOccurs); - hop = xmlAutomataNewState(pctxt->am); - base = xmlAutomataNewState(pctxt->am); - - sub = particle->children->children; + sub = particle->children->children; while (sub != NULL) { - pctxt->state = base; - xmlSchemaBuildAContentModel(pctxt, - (xmlSchemaParticlePtr) sub); - xmlAutomataNewEpsilon(pctxt->am, pctxt->state, hop); + tmp2 = xmlSchemaBuildAContentModel(pctxt, + (xmlSchemaParticlePtr) sub); + if (tmp2 != 1) ret = 0; sub = sub->next; } - xmlAutomataNewEpsilon(pctxt->am, start, base); - xmlAutomataNewCountedTrans(pctxt->am, hop, base, counter); - xmlAutomataNewCounterTrans(pctxt->am, hop, end, counter); - } - if (particle->minOccurs == 0) { - xmlAutomataNewEpsilon(pctxt->am, start, end); + + /* + * epsilon needed to block previous trans from + * being allowed to enter back from another + * construct + */ + pctxt->state = xmlAutomataNewEpsilon(pctxt->am, + pctxt->state, NULL); + + if (particle->minOccurs == 0) { + xmlAutomataNewEpsilon(pctxt->am, oldstate, + pctxt->state); + ret = 1; + } } - pctxt->state = end; - break; } - case XML_SCHEMA_TYPE_ALL:{ - xmlAutomataStatePtr start; - xmlSchemaParticlePtr sub; - xmlSchemaElementPtr elemDecl; - int lax; - - sub = (xmlSchemaParticlePtr) particle->children->children; - if (sub == NULL) - break; - start = pctxt->state; + break; + } + case XML_SCHEMA_TYPE_CHOICE:{ + xmlSchemaTreeItemPtr sub; + xmlAutomataStatePtr start, end; + + ret = 0; + start = pctxt->state; + end = xmlAutomataNewState(pctxt->am); + + /* + * iterate over the subtypes and remerge the end with an + * epsilon transition + */ + if (particle->maxOccurs == 1) { + sub = particle->children->children; while (sub != NULL) { pctxt->state = start; + tmp2 = xmlSchemaBuildAContentModel(pctxt, + (xmlSchemaParticlePtr) sub); + if (tmp2 == 1) ret = 1; + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, end); + sub = sub->next; + } + } else { + int counter; + xmlAutomataStatePtr hop, base; + int maxOccurs = particle->maxOccurs == UNBOUNDED ? + UNBOUNDED : particle->maxOccurs - 1; + int minOccurs = + particle->minOccurs < 1 ? 0 : particle->minOccurs - 1; - elemDecl = (xmlSchemaElementPtr) sub->children; - if (elemDecl == NULL) { - PERROR_INT("xmlSchemaBuildAContentModel", - " particle has no term"); - return; - }; - /* - * NOTE: The {max occurs} of all the particles in the - * {particles} of the group must be 0 or 1; this is - * already ensured during the parse of the content of - * . - */ - if (elemDecl->flags & XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD) { - int counter; + /* + * use a counter to keep track of the number of transtions + * which went through the choice. + */ + counter = + xmlAutomataNewCounter(pctxt->am, minOccurs, maxOccurs); + hop = xmlAutomataNewState(pctxt->am); + base = xmlAutomataNewState(pctxt->am); - /* - * This is an abstract group, we need to share - * the same counter for all the element transitions - * derived from the group - */ - counter = xmlAutomataNewCounter(pctxt->am, - sub->minOccurs, sub->maxOccurs); - xmlSchemaBuildContentModelForSubstGroup(pctxt, - sub, counter, pctxt->state); - } else { - if ((sub->minOccurs == 1) && - (sub->maxOccurs == 1)) { - xmlAutomataNewOnceTrans2(pctxt->am, pctxt->state, - pctxt->state, - elemDecl->name, - elemDecl->targetNamespace, - 1, 1, elemDecl); - } else if ((sub->minOccurs == 0) && - (sub->maxOccurs == 1)) { - - xmlAutomataNewCountTrans2(pctxt->am, pctxt->state, - pctxt->state, - elemDecl->name, - elemDecl->targetNamespace, - 0, - 1, - elemDecl); - } - } - sub = (xmlSchemaParticlePtr) sub->next; + sub = particle->children->children; + while (sub != NULL) { + pctxt->state = base; + tmp2 = xmlSchemaBuildAContentModel(pctxt, + (xmlSchemaParticlePtr) sub); + if (tmp2 == 1) ret = 1; + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, hop); + sub = sub->next; } - lax = particle->minOccurs == 0; - pctxt->state = - xmlAutomataNewAllTrans(pctxt->am, pctxt->state, NULL, lax); + xmlAutomataNewEpsilon(pctxt->am, start, base); + xmlAutomataNewCountedTrans(pctxt->am, hop, base, counter); + xmlAutomataNewCounterTrans(pctxt->am, hop, end, counter); + if (ret == 1) + xmlAutomataNewEpsilon(pctxt->am, base, end); + } + if (particle->minOccurs == 0) { + xmlAutomataNewEpsilon(pctxt->am, start, end); + ret = 1; + } + pctxt->state = end; + break; + } + case XML_SCHEMA_TYPE_ALL:{ + xmlAutomataStatePtr start, tmp; + xmlSchemaParticlePtr sub; + xmlSchemaElementPtr elemDecl; + + ret = 1; + + sub = (xmlSchemaParticlePtr) particle->children->children; + if (sub == NULL) break; + + ret = 0; + + start = pctxt->state; + tmp = xmlAutomataNewState(pctxt->am); + xmlAutomataNewEpsilon(pctxt->am, pctxt->state, tmp); + pctxt->state = tmp; + while (sub != NULL) { + pctxt->state = tmp; + + elemDecl = (xmlSchemaElementPtr) sub->children; + if (elemDecl == NULL) { + PERROR_INT("xmlSchemaBuildAContentModel", + " particle has no term"); + return(ret); + }; + /* + * NOTE: The {max occurs} of all the particles in the + * {particles} of the group must be 0 or 1; this is + * already ensured during the parse of the content of + * . + */ + if (elemDecl->flags & XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD) { + int counter; + + /* + * This is an abstract group, we need to share + * the same counter for all the element transitions + * derived from the group + */ + counter = xmlAutomataNewCounter(pctxt->am, + sub->minOccurs, sub->maxOccurs); + xmlSchemaBuildContentModelForSubstGroup(pctxt, + sub, counter, pctxt->state); + } else { + if ((sub->minOccurs == 1) && + (sub->maxOccurs == 1)) { + xmlAutomataNewOnceTrans2(pctxt->am, pctxt->state, + pctxt->state, + elemDecl->name, + elemDecl->targetNamespace, + 1, 1, elemDecl); + } else if ((sub->minOccurs == 0) && + (sub->maxOccurs == 1)) { + + xmlAutomataNewCountTrans2(pctxt->am, pctxt->state, + pctxt->state, + elemDecl->name, + elemDecl->targetNamespace, + 0, + 1, + elemDecl); + } + } + sub = (xmlSchemaParticlePtr) sub->next; } + pctxt->state = + xmlAutomataNewAllTrans(pctxt->am, pctxt->state, NULL, 0); + if (particle->minOccurs == 0) { + xmlAutomataNewEpsilon(pctxt->am, start, pctxt->state); + ret = 1; + } + break; + } case XML_SCHEMA_TYPE_GROUP: /* * If we hit a model group definition, then this means that @@ -13016,14 +13120,16 @@ * TODO: But the group should be substituted and not occur at * all in the content model at this point. Fix this. */ + ret = 1; break; default: xmlSchemaInternalErr2(ACTXT_CAST pctxt, "xmlSchemaBuildAContentModel", "found unexpected term of type '%s' in content model", WXS_ITEM_TYPE_NAME(particle->children), NULL); - return; + return(ret); } + return(ret); } /** @@ -13107,8 +13213,8 @@ if ((elemDecl->subtypes == NULL) && (elemDecl->namedType != NULL)) { xmlSchemaTypePtr type; - /* (type definition) ... otherwise the type definition resolved - * to by the actual value of the type [attribute] ... + /* (type definition) ... otherwise the type definition `resolved` + * to by the `actual value` of the type [attribute] ... */ type = xmlSchemaGetType(ctxt->schema, elemDecl->namedType, elemDecl->namedTypeNs); @@ -13146,7 +13252,7 @@ /* * The type definitions is set to: * SPEC "...the {type definition} of the element - * declaration resolved to by the actual value + * declaration `resolved` to by the `actual value` * of the substitutionGroup [attribute], if present" */ if (elemDecl->subtypes == NULL) @@ -13184,8 +13290,8 @@ /* * SPEC (1) "If the alternative is chosen, then [Definition:] - * define the explicit members as the type definitions resolved - * to by the items in the actual value of the memberTypes [attribute], + * define the explicit members as the type definitions `resolved` + * to by the items in the `actual value` of the memberTypes [attribute], * if any, followed by the type definitions corresponding to the * s among the [children] of , if any." */ @@ -13298,7 +13404,6 @@ return (0); } -#endif static xmlSchemaTypePtr xmlSchemaQueryBuiltInType(xmlSchemaTypePtr type) @@ -13311,6 +13416,7 @@ return(type); return(xmlSchemaQueryBuiltInType(type->subtypes)); } +#endif /** * xmlSchemaGetPrimitiveType: @@ -13480,7 +13586,7 @@ return (0); } /* - * 3 If both O1 and O2 are sets of (namespace names or absent), + * 3 If both O1 and O2 are sets of (namespace names or `absent`), * then the union of those sets must be the value. */ if ((completeWild->nsSet != NULL) && (curWild->nsSet != NULL)) { @@ -13514,7 +13620,7 @@ } /* * 4 If the two are negations of different values (namespace names - * or absent), then a pair of not and absent must be the value. + * or `absent`), then a pair of not and `absent` must be the value. */ if ((completeWild->negNsSet != NULL) && (curWild->negNsSet != NULL) && @@ -13556,7 +13662,7 @@ if (nsFound && absentFound) { /* * 5.1 If the set S includes both the negated namespace - * name and absent, then any must be the value. + * name and `absent`, then any must be the value. */ completeWild->any = 1; if (completeWild->nsSet != NULL) { @@ -13570,7 +13676,7 @@ } else if (nsFound && (!absentFound)) { /* * 5.2 If the set S includes the negated namespace name - * but not absent, then a pair of not and absent must + * but not `absent`, then a pair of not and `absent` must * be the value. */ if (completeWild->nsSet != NULL) { @@ -13585,7 +13691,7 @@ completeWild->negNsSet->value = NULL; } else if ((!nsFound) && absentFound) { /* - * 5.3 If the set S includes absent but not the negated + * 5.3 If the set S includes `absent` but not the negated * namespace name, then the union is not expressible. */ xmlSchemaPErr(ctxt, completeWild->node, @@ -13596,7 +13702,7 @@ } else if ((!nsFound) && (!absentFound)) { /* * 5.4 If the set S does not include either the negated namespace - * name or absent, then whichever of O1 or O2 is a pair of not + * name or `absent`, then whichever of O1 or O2 is a pair of not * and a namespace name must be the value. */ if (completeWild->negNsSet == NULL) { @@ -13630,7 +13736,7 @@ while (cur != NULL) { if (cur->value == NULL) { /* - * 6.1 If the set S includes absent, then any must be the + * 6.1 If the set S includes `absent`, then any must be the * value. */ completeWild->any = 1; @@ -13648,8 +13754,8 @@ } if (completeWild->negNsSet == NULL) { /* - * 6.2 If the set S does not include absent, then a pair of not - * and absent must be the value. + * 6.2 If the set S does not include `absent`, then a pair of not + * and `absent` must be the value. */ if (completeWild->nsSet != NULL) { xmlSchemaFreeWildcardNsSet(completeWild->nsSet); @@ -13732,9 +13838,9 @@ } /* * 3 If either O1 or O2 is a pair of not and a value (a namespace - * name or absent) and the other is a set of (namespace names or - * absent), then that set, minus the negated value if it was in - * the set, minus absent if it was in the set, must be the value. + * name or `absent`) and the other is a set of (namespace names or + * `absent`), then that set, minus the negated value if it was in + * the set, minus `absent` if it was in the set, must be the value. */ if (((completeWild->negNsSet != NULL) && (curWild->nsSet != NULL)) || ((curWild->negNsSet != NULL) && (completeWild->nsSet != NULL))) { @@ -13783,7 +13889,7 @@ return(0); } /* - * 4 If both O1 and O2 are sets of (namespace names or absent), + * 4 If both O1 and O2 are sets of (namespace names or `absent`), * then the intersection of those sets must be the value. */ if ((completeWild->nsSet != NULL) && (curWild->nsSet != NULL)) { @@ -13833,7 +13939,7 @@ } /* * 6 If the one is a negation of a namespace name and the other - * is a negation of absent, then the one which is the negation + * is a negation of `absent`, then the one which is the negation * of a namespace name must be the value. */ if ((completeWild->negNsSet != NULL) && (curWild->negNsSet != NULL) && @@ -13865,15 +13971,15 @@ if (super->any) return (0); /* - * 2.1 sub must be a pair of not and a namespace name or absent. + * 2.1 sub must be a pair of not and a namespace name or `absent`. * 2.2 super must be a pair of not and the same value. */ if ((sub->negNsSet != NULL) && (super->negNsSet != NULL) && - (sub->negNsSet->value == sub->negNsSet->value)) + (sub->negNsSet->value == super->negNsSet->value)) return (0); /* - * 3.1 sub must be a set whose members are either namespace names or absent. + * 3.1 sub must be a set whose members are either namespace names or `absent`. */ if (sub->nsSet != NULL) { /* @@ -13904,7 +14010,7 @@ xmlSchemaWildcardNsPtr cur; /* * 3.2.2 super must be a pair of not and a namespace name or - * absent and that value must not be in sub's set. + * `absent` and that value must not be in sub's set. */ cur = sub->nsSet; while (cur != NULL) { @@ -13929,7 +14035,7 @@ if (val != 0) *val = NULL; - if (attruse->defValue != NULL) { + if (attruse->defValue != NULL) { *value = attruse->defValue; if (val != NULL) *val = attruse->defVal; @@ -14009,12 +14115,12 @@ xmlSchemaItemListPtr baseUses, xmlSchemaWildcardPtr wild, xmlSchemaWildcardPtr baseWild) -{ +{ xmlSchemaAttributeUsePtr cur = NULL, bcur; int i, j, found; /* err = 0; */ const xmlChar *bEffValue; int effFixed; - + if (uses != NULL) { for (i = 0; i < uses->nbItems; i++) { cur = uses->items[i]; @@ -14022,7 +14128,7 @@ if (baseUses == NULL) goto not_found; for (j = 0; j < baseUses->nbItems; j++) { - bcur = baseUses->items[j]; + bcur = baseUses->items[j]; if ((WXS_ATTRUSE_DECL_NAME(cur) == WXS_ATTRUSE_DECL_NAME(bcur)) && (WXS_ATTRUSE_DECL_TNS(cur) == @@ -14035,7 +14141,7 @@ * namespace}, then all of the following must be true:" */ found = 1; - + if ((cur->occurs == XML_SCHEMAS_ATTR_USE_OPTIONAL) && (bcur->occurs == XML_SCHEMAS_ATTR_USE_REQUIRED)) { @@ -14061,12 +14167,12 @@ WXS_ATTRUSE_TYPEDEF(bcur), 0) != 0) { xmlChar *strA = NULL, *strB = NULL, *strC = NULL; - + /* * SPEC (2.1.2) "R's {attribute declaration}'s * {type definition} must be validly derived from * B's {type definition} given the empty set as - * defined in Type Derivation OK (Simple) (3.14.6)." + * defined in Type Derivation OK (Simple) ($3.14.6)." */ xmlSchemaPAttrUseErr4(pctxt, XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2, @@ -14098,17 +14204,17 @@ /* * 2.1.3 ... one of the following must be true * - * 2.1.3.1 B's effective value constraint is - * absent or default. + * 2.1.3.1 B's `effective value constraint` is + * `absent` or default. */ if ((bEffValue != NULL) && (effFixed == 1)) { const xmlChar *rEffValue = NULL; - + xmlSchemaGetEffectiveValueConstraint(bcur, &effFixed, &rEffValue, NULL); /* - * 2.1.3.2 R's effective value constraint is + * 2.1.3.2 R's `effective value constraint` is * fixed with the same string as B's. * MAYBE TODO: Compare the computed values. * Hmm, it says "same string" so @@ -14118,7 +14224,7 @@ (! WXS_ARE_DEFAULT_STR_EQUAL(rEffValue, bEffValue))) { xmlChar *str = NULL; - + xmlSchemaPAttrUseErr4(pctxt, XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3, WXS_ITEM_NODE(item), item, cur, @@ -14137,21 +14243,21 @@ break; } } -not_found: +not_found: if (!found) { /* * (2.2) "otherwise the {base type definition} must have an * {attribute wildcard} and the {target namespace} of the - * R's {attribute declaration} must be valid with respect + * R's {attribute declaration} must be `valid` with respect * to that wildcard, as defined in Wildcard allows Namespace - * Name (3.10.4)." + * Name ($3.10.4)." */ if ((baseWild == NULL) || (xmlSchemaCheckCVCWildcardNamespace(baseWild, (WXS_ATTRUSE_DECL(cur))->targetNamespace) != 0)) { xmlChar *str = NULL; - + xmlSchemaPAttrUseErr4(pctxt, XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2, WXS_ITEM_NODE(item), item, cur, @@ -14167,7 +14273,7 @@ } } /* - * SPEC derivation-ok-restriction (3): + * SPEC derivation-ok-restriction (3): * (3) "For each attribute use in the {attribute uses} of the {base type * definition} whose {required} is true, there must be an attribute * use with an {attribute declaration} with the same {name} and @@ -14182,7 +14288,7 @@ found = 0; if (uses != NULL) { for (i = 0; i < uses->nbItems; i++) { - cur = uses->items[i]; + cur = uses->items[i]; if ((WXS_ATTRUSE_DECL_NAME(cur) == WXS_ATTRUSE_DECL_NAME(bcur)) && (WXS_ATTRUSE_DECL_TNS(cur) == @@ -14194,7 +14300,7 @@ } if (!found) { xmlChar *strA = NULL, *strB = NULL; - + xmlSchemaCustomErr4(ACTXT_CAST pctxt, XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3, NULL, item, @@ -14216,19 +14322,19 @@ /* * (4) "If there is an {attribute wildcard}, all of the * following must be true:" - */ + */ if (baseWild == NULL) { xmlChar *str = NULL; /* * (4.1) "The {base type definition} must also have one." - */ + */ xmlSchemaCustomErr4(ACTXT_CAST pctxt, XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1, NULL, item, "The %s has an attribute wildcard, " "but the %s %s '%s' does not have one", - WXS_ITEM_TYPE_NAME(item), + WXS_ITEM_TYPE_NAME(item), WXS_ACTION_STR(action), WXS_ITEM_TYPE_NAME(baseItem), xmlSchemaGetComponentQName(&str, baseItem)); @@ -14242,7 +14348,7 @@ * (4.2) "The complex type definition's {attribute wildcard}'s * {namespace constraint} must be a subset of the {base type * definition}'s {attribute wildcard}'s {namespace constraint}, - * as defined by Wildcard Subset (3.10.6)." + * as defined by Wildcard Subset ($3.10.6)." */ xmlSchemaCustomErr4(ACTXT_CAST pctxt, XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2, @@ -14256,8 +14362,8 @@ FREE_AND_NULL(str); return(pctxt->err); } - /* 4.3 Unless the {base type definition} is the ur-type - * definition, the complex type definition's {attribute + /* 4.3 Unless the {base type definition} is the `ur-type + * definition`, the complex type definition's {attribute * wildcard}'s {process contents} must be identical to or * stronger than the {base type definition}'s {attribute * wildcard}'s {process contents}, where strict is stronger @@ -14308,7 +14414,7 @@ xmlSchemaTypePtr type) { xmlSchemaTypePtr baseType = NULL; - xmlSchemaAttributeUsePtr use; + xmlSchemaAttributeUsePtr use; xmlSchemaItemListPtr uses, baseUses, prohibs = NULL; if (type->baseType == NULL) { @@ -14316,7 +14422,7 @@ "no base type"); return (-1); } - baseType = type->baseType; + baseType = type->baseType; if (WXS_IS_TYPE_NOT_FIXED(baseType)) if (xmlSchemaTypeFixup(baseType, ACTXT_CAST pctxt) == -1) return(-1); @@ -14328,7 +14434,7 @@ * wildcard, i.e. intersect multiple wildcards. * Move attribute prohibitions into a separate list. */ - if (uses != NULL) { + if (uses != NULL) { if (WXS_IS_RESTRICTION(type)) { /* * This one will transfer all attr. prohibitions @@ -14362,7 +14468,7 @@ if (WXS_IS_RESTRICTION(type)) { int usesCount; - xmlSchemaAttributeUsePtr tmp; + xmlSchemaAttributeUsePtr tmp; if (uses != NULL) usesCount = uses->nbItems; @@ -14412,15 +14518,15 @@ } } else { /* Extension. */ - for (i = 0; i < baseUses->nbItems; i++) { - use = baseUses->items[i]; + for (i = 0; i < baseUses->nbItems; i++) { + use = baseUses->items[i]; if (uses == NULL) { type->attrUses = xmlSchemaItemListCreate(); if (type->attrUses == NULL) goto exit_failure; uses = type->attrUses; } - xmlSchemaItemListAddSize(uses, baseUses->nbItems, use); + xmlSchemaItemListAddSize(uses, baseUses->nbItems, use); } } } @@ -14440,10 +14546,10 @@ /* * Compute the complete wildcard. */ - if (WXS_IS_EXTENSION(type)) { + if (WXS_IS_EXTENSION(type)) { if (baseType->attributeWildcard != NULL) { /* - * (3.2.2.1) "If the base wildcard is non-absent, then + * (3.2.2.1) "If the `base wildcard` is non-`absent`, then * the appropriate case among the following:" */ if (type->attributeWildcard != NULL) { @@ -14451,26 +14557,26 @@ * Union the complete wildcard with the base wildcard. * SPEC {attribute wildcard} * (3.2.2.1.2) "otherwise a wildcard whose {process contents} - * and {annotation} are those of the complete wildcard, + * and {annotation} are those of the `complete wildcard`, * and whose {namespace constraint} is the intensional union - * of the {namespace constraint} of the complete wildcard - * and of the base wildcard, as defined in Attribute - * Wildcard Union (3.10.6)." + * of the {namespace constraint} of the `complete wildcard` + * and of the `base wildcard`, as defined in Attribute + * Wildcard Union ($3.10.6)." */ if (xmlSchemaUnionWildcards(pctxt, type->attributeWildcard, baseType->attributeWildcard) == -1) - goto exit_failure; + goto exit_failure; } else { /* - * (3.2.2.1.1) "If the complete wildcard is absent, - * then the base wildcard." + * (3.2.2.1.1) "If the `complete wildcard` is `absent`, + * then the `base wildcard`." */ type->attributeWildcard = baseType->attributeWildcard; - } + } } else { /* - * (3.2.2.2) "otherwise (the base wildcard is absent) the - * complete wildcard" + * (3.2.2.2) "otherwise (the `base wildcard` is `absent`) the + * `complete wildcard`" * NOOP */ } @@ -14478,11 +14584,11 @@ /* * SPEC {attribute wildcard} * (3.1) "If the alternative is chosen, then the - * complete wildcard;" + * `complete wildcard`;" * NOOP */ } - + return (0); exit_failure: @@ -14586,6 +14692,7 @@ } } +#if 0 /** * xmlSchemaGetParticleTotalRangeMax: * @particle: the particle @@ -14645,6 +14752,7 @@ return (particle->maxOccurs * sum); } } +#endif /** * xmlSchemaIsParticleEmptiable: @@ -14725,12 +14833,12 @@ /* 2.2 */ if (type->baseType == baseType) { /* - * 2.2.1 D's base type definition is B. + * 2.2.1 D's `base type definition` is B. */ return (0); } /* - * 2.2.2 D's base type definition is not the ur-type definition + * 2.2.2 D's `base type definition` is not the `ur-type definition` * and is validly derived from B given the subset, as defined by this * constraint. */ @@ -14740,8 +14848,8 @@ return (0); } /* - * 2.2.3 D's {variety} is list or union and B is the simple ur-type - * definition. + * 2.2.3 D's {variety} is list or union and B is the `simple ur-type + * definition`. */ if (WXS_IS_ANY_SIMPLE_TYPE(baseType) && (WXS_IS_LIST(type) || WXS_IS_UNION(type))) { @@ -14857,10 +14965,10 @@ xmlSchemaCheckUnionTypeDefCircularRecur(xmlSchemaParserCtxtPtr pctxt, xmlSchemaTypePtr ctxType, xmlSchemaTypeLinkPtr members) -{ +{ xmlSchemaTypeLinkPtr member; xmlSchemaTypePtr memberType; - + member = members; while (member != NULL) { memberType = member->type; @@ -14961,7 +15069,7 @@ } return; } - } + } /* * The ball of letters below means, that if we have a particle * which has a QName-helper component as its {term}, we want @@ -15004,7 +15112,7 @@ * particle's {term}. */ WXS_TYPE_PARTICLE_TERM(typeDef) = WXS_MODELGROUPDEF_MODEL(groupDef); - + if (WXS_MODELGROUPDEF_MODEL(groupDef)->type == XML_SCHEMA_TYPE_ALL) { /* * SPEC cos-all-limited (1.2) @@ -15053,14 +15161,14 @@ * NOTE: This is somehow redundant, since we actually built a simple type * to have all the needed information; this acts as an self test. */ - /* Base type: If the datatype has been derived by restriction - * then the Simple Type Definition component from which it is derived, - * otherwise the Simple Type Definition for anySimpleType (4.1.6). + /* Base type: If the datatype has been `derived` by `restriction` + * then the Simple Type Definition component from which it is `derived`, + * otherwise the Simple Type Definition for anySimpleType ($4.1.6). */ if (baseType == NULL) { /* * TODO: Think about: "modulo the impact of Missing - * Sub-components (5.3)." + * Sub-components ($5.3)." */ xmlSchemaPCustomErr(ctxt, XML_SCHEMAP_ST_PROPS_CORRECT_1, @@ -15078,13 +15186,14 @@ FREE_AND_NULL(str) return (XML_SCHEMAP_ST_PROPS_CORRECT_1); } - if ( (WXS_IS_LIST(type) || WXS_IS_UNION(type)) && - (WXS_IS_RESTRICTION(type) == 0) && - (! WXS_IS_ANY_SIMPLE_TYPE(baseType))) { + if ((WXS_IS_LIST(type) || WXS_IS_UNION(type)) && + (WXS_IS_RESTRICTION(type) == 0) && + ((! WXS_IS_ANY_SIMPLE_TYPE(baseType)) && + (baseType->type != XML_SCHEMA_TYPE_SIMPLE))) { xmlSchemaPCustomErr(ctxt, XML_SCHEMAP_ST_PROPS_CORRECT_1, WXS_BASIC_CAST type, NULL, - "A type, derived by list or union, must have" + "A type, derived by list or union, must have " "the simple ur-type definition as base type, not '%s'", xmlSchemaGetComponentQName(&str, baseType)); FREE_AND_NULL(str) @@ -15119,10 +15228,10 @@ } /* - * 2 All simple type definitions must be derived ultimately from the simple - * ur-type definition (so circular definitions are disallowed). That is, it - * must be possible to reach a built-in primitive datatype or the simple - * ur-type definition by repeatedly following the {base type definition}. + * 2 All simple type definitions must be derived ultimately from the `simple + * ur-type definition` (so circular definitions are disallowed). That is, it + * must be possible to reach a built-in primitive datatype or the `simple + * ur-type definition` by repeatedly following the {base type definition}. * * NOTE: this is done in xmlSchemaCheckTypeDefCircular(). */ @@ -15306,10 +15415,10 @@ } /* * MAYBE TODO: (Hmm, not really) Datatypes states: - * A list datatype can be derived from an atomic datatype - * whose lexical space allows space (such as string or anyURI)or - * a union datatype any of whose {member type definitions}'s - * lexical space allows space. + * A `list` datatype can be `derived` from an `atomic` datatype + * whose `lexical space` allows space (such as string or anyURI)or + * a `union` datatype any of whose {member type definitions}'s + * `lexical space` allows space. */ } else { /* @@ -15346,7 +15455,7 @@ /* * 2.3.2.3 The {item type definition} must be validly derived * from the {base type definition}'s {item type definition} given - * the empty set, as defined in Type Derivation OK (Simple) (3.14.6). + * the empty set, as defined in Type Derivation OK (Simple) ($3.14.6). */ { xmlSchemaTypePtr baseItemType; @@ -15393,7 +15502,7 @@ case XML_SCHEMA_FACET_WHITESPACE: /* * TODO: 2.5.1.2 List datatypes - * The value of whiteSpace is fixed to the value collapse. + * The value of `whiteSpace` is fixed to the value collapse. */ case XML_SCHEMA_FACET_PATTERN: case XML_SCHEMA_FACET_ENUMERATION: @@ -15446,8 +15555,8 @@ member = member->next; } /* - * 3.3.1 If the {base type definition} is the simple ur-type - * definition + * 3.3.1 If the {base type definition} is the `simple ur-type + * definition` */ if (type->baseType->builtInType == XML_SCHEMAS_ANYSIMPLETYPE) { /* @@ -15509,7 +15618,7 @@ * 3.3.2.3 The {member type definitions}, in order, must be validly * derived from the corresponding type definitions in the {base * type definition}'s {member type definitions} given the empty set, - * as defined in Type Derivation OK (Simple) (3.14.6). + * as defined in Type Derivation OK (Simple) ($3.14.6). */ { xmlSchemaTypeLinkPtr baseMember; @@ -15557,7 +15666,8 @@ return (XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3); } member = member->next; - baseMember = baseMember->next; + if (baseMember != NULL) + baseMember = baseMember->next; } } } @@ -15601,7 +15711,7 @@ * @ctxt: the schema parser context * @type: the simple type definition * - * Checks crc-simple-type constraints. + * Checks crc-simple-type constraints. * * Returns 0 if the constraints are satisfied, * if not a positive error code and -1 on internal @@ -15615,8 +15725,8 @@ /* * src-simple-type.1 The corresponding simple type definition, if any, * must satisfy the conditions set out in Constraints on Simple Type - * Definition Schema Components (3.14.6). - */ + * Definition Schema Components ($3.14.6). + */ if (WXS_IS_RESTRICTION(type)) { /* * src-simple-type.2 "If the alternative is chosen, @@ -15625,7 +15735,7 @@ * NOTE: This is checked in the parse function of . */ /* - * + * */ } else if (WXS_IS_LIST(type)) { /* src-simple-type.3 "If the alternative is chosen, either it must have @@ -15634,8 +15744,8 @@ * * NOTE: This is checked in the parse function of . */ - } else if (WXS_IS_UNION(type)) { - /* + } else if (WXS_IS_UNION(type)) { + /* * src-simple-type.4 is checked in xmlSchemaCheckUnionTypeDefCircular(). */ } @@ -15713,8 +15823,8 @@ * SPEC (2.1) "its {content type} must be a simple type definition * or mixed." * SPEC (2.2.2) "If the {content type} is mixed, then the {content - * type}'s particle must be emptiable as defined by - * Particle Emptiable (3.9.6)." + * type}'s particle must be `emptiable` as defined by + * Particle Emptiable ($3.9.6)." */ if ((! WXS_HAS_SIMPLE_CONTENT(type)) && ((! WXS_HAS_MIXED_CONTENT(type)) || (! WXS_EMPTIABLE(type)))) { @@ -15730,14 +15840,14 @@ } /* * 1 If the type definition is a simple type definition, then the string - * must be valid with respect to that definition as defined by String - * Valid (3.14.4). + * must be `valid` with respect to that definition as defined by String + * Valid ($3.14.4). * * AND * * 2.2.1 If the {content type} is a simple type definition, then the - * string must be valid with respect to that simple type definition - * as defined by String Valid (3.14.4). + * string must be `valid` with respect to that simple type definition + * as defined by String Valid ($3.14.4). */ if (WXS_IS_SIMPLE(type)) ret = xmlSchemaVCheckCVCSimpleType(ACTXT_CAST pctxt, node, @@ -15778,8 +15888,8 @@ * * SPEC (1) "The values of the properties of a complex type definition must * be as described in the property tableau in The Complex Type Definition - * Schema Component (3.4.1), modulo the impact of Missing - * Sub-components (5.3)." + * Schema Component ($3.4.1), modulo the impact of Missing + * Sub-components ($5.3)." */ if ((type->baseType != NULL) && (WXS_IS_SIMPLE(type->baseType)) && @@ -15790,15 +15900,15 @@ */ xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_SRC_CT_1, - NULL, WXS_BASIC_CAST type, + NULL, WXS_BASIC_CAST type, "If the base type is a simple type, the derivation method must be " "'extension'", NULL, NULL); return (XML_SCHEMAP_SRC_CT_1); } /* - * SPEC (3) "Circular definitions are disallowed, except for the ur-type - * definition. That is, it must be possible to reach the ur-type - * definition by repeatedly following the {base type definition}." + * SPEC (3) "Circular definitions are disallowed, except for the `ur-type + * definition`. That is, it must be possible to reach the `ur-type + * definition` by repeatedly following the {base type definition}." * * NOTE (3) is done in xmlSchemaCheckTypeDefCircular(). */ @@ -15807,7 +15917,7 @@ * - attribute uses need to be already inherited (apply attr. prohibitions) * - attribute group references need to be expanded already * - simple types need to be typefixed already - */ + */ if (type->attrUses && (((xmlSchemaItemListPtr) type->attrUses)->nbItems > 1)) { @@ -15817,8 +15927,8 @@ for (i = uses->nbItems -1; i >= 0; i--) { use = uses->items[i]; - - /* + + /* * SPEC ct-props-correct * (4) "Two distinct attribute declarations in the * {attribute uses} must not have identical {name}s and @@ -15859,10 +15969,10 @@ if (WXS_ATTRUSE_TYPEDEF(use) != NULL) { if (xmlSchemaIsDerivedFromBuiltInType( WXS_ATTRUSE_TYPEDEF(use), XML_SCHEMAS_ID)) - { + { if (hasId) { xmlChar *str = NULL; - + xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_AG_PROPS_CORRECT, NULL, WXS_BASIC_CAST type, @@ -15876,7 +15986,7 @@ if (xmlSchemaItemListRemove(uses, i) == -1) goto exit_failure; } - + hasId = 1; } } @@ -15950,8 +16060,8 @@ if (type->baseType == baseType) return (0); /* - * SPEC (2.3.1) "D's {base type definition} must not be the ur-type - * definition." + * SPEC (2.3.1) "D's {base type definition} must not be the `ur-type + * definition`." */ if (WXS_IS_ANYTYPE(type->baseType)) return (1); @@ -15968,7 +16078,7 @@ /* * SPEC (2.3.2.2) "If D's {base type definition} is simple, then it * must be validly derived from B given the subset as defined in Type - * Derivation OK (Simple) (3.14.6). + * Derivation OK (Simple) ($3.14.6). */ return (xmlSchemaCheckCOSSTDerivedOK(actxt, type->baseType, baseType, set)); @@ -16029,7 +16139,7 @@ * SPEC (1) "If the {base type definition} is a complex type definition, * then all of the following must be true:" */ - if (WXS_IS_COMPLEX(base)) { + if (WXS_IS_COMPLEX(base)) { /* * SPEC (1.1) "The {final} of the {base type definition} must not * contain extension." @@ -16042,7 +16152,7 @@ "contains 'extension'", NULL); return (XML_SCHEMAP_COS_CT_EXTENDS_1_1); } - + /* * ATTENTION: The constrains (1.2) and (1.3) are not applied, * since they are automatically satisfied through the @@ -16086,11 +16196,11 @@ } if (! found) { xmlChar *str = NULL; - + xmlSchemaCustomErr(ACTXT_CAST ctxt, XML_SCHEMAP_COS_CT_EXTENDS_1_2, NULL, WXS_BASIC_CAST type, - /* + /* * TODO: The report does not indicate that also the * type needs to be the same. */ @@ -16108,9 +16218,9 @@ * definition must also have one, and the base type definition's * {attribute wildcard}'s {namespace constraint} must be a subset * of the complex type definition's {attribute wildcard}'s {namespace - * constraint}, as defined by Wildcard Subset (3.10.6)." + * constraint}, as defined by Wildcard Subset ($3.10.6)." */ - + /* * MAYBE TODO: Enable if ever needed. But this will be needed only * if created the type via a schema construction API. @@ -16118,7 +16228,7 @@ if (base->attributeWildcard != NULL) { if (type->attributeWilcard == NULL) { xmlChar *str = NULL; - + xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_COS_CT_EXTENDS_1_3, NULL, type, @@ -16131,7 +16241,7 @@ base->attributeWildcard, type->attributeWildcard)) { xmlChar *str = NULL; - + xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_COS_CT_EXTENDS_1_3, NULL, type, @@ -16205,9 +16315,9 @@ } /* * URGENT TODO SPEC (1.4.3.2.2.2) "The particle of the - * complex type definition must be a valid extension + * complex type definition must be a `valid extension` * of the {base type definition}'s particle, as defined - * in Particle Valid (Extension) (3.9.6)." + * in Particle Valid (Extension) ($3.9.6)." * * NOTE that we won't check "Particle Valid (Extension)", * since it is ensured by the derivation process in @@ -16285,7 +16395,7 @@ */ base = type->baseType; if (! WXS_IS_COMPLEX(base)) { - xmlSchemaCustomErr(ACTXT_CAST ctxt, + xmlSchemaCustomErr(ACTXT_CAST ctxt, XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1, type->node, WXS_BASIC_CAST type, "The base type must be a complex type", NULL, NULL); @@ -16296,7 +16406,7 @@ * SPEC (1) "The {base type definition} must be a complex type * definition whose {final} does not contain restriction." */ - xmlSchemaCustomErr(ACTXT_CAST ctxt, + xmlSchemaCustomErr(ACTXT_CAST ctxt, XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1, type->node, WXS_BASIC_CAST type, "The 'final' of the base type definition " @@ -16324,7 +16434,7 @@ if (base->builtInType == XML_SCHEMAS_ANYTYPE) { /* * SPEC (5.1) "The {base type definition} must be the - * ur-type definition." + * `ur-type definition`." * PASS */ } else if ((type->contentType == XML_SCHEMA_CONTENT_SIMPLE) || @@ -16343,11 +16453,11 @@ * SPEC (5.2.2.1) "The {content type} of the {base type * definition} must be a simple type definition from which * the {content type} is validly derived given the empty - * set as defined in Type Derivation OK (Simple) (3.14.6)." + * set as defined in Type Derivation OK (Simple) ($3.14.6)." * * ATTENTION TODO: This seems not needed if the type implicitely * derived from the base type. - * + * */ err = xmlSchemaCheckCOSSTDerivedOK(ACTXT_CAST ctxt, type->contentTypeDef, base->contentTypeDef, 0); @@ -16374,8 +16484,8 @@ (xmlSchemaParticlePtr) base->subtypes))) { /* * SPEC (5.2.2.2) "The {base type definition} must be mixed - * and have a particle which is emptiable as defined in - * Particle Emptiable (3.9.6)." + * and have a particle which is `emptiable` as defined in + * Particle Emptiable ($3.9.6)." * PASS */ } else { @@ -16404,7 +16514,7 @@ /* * SPEC (5.3.2.2) "The {content type} of the {base type * definition} must be elementOnly or mixed and have a particle - * which is emptiable as defined in Particle Emptiable (3.9.6)." + * which is `emptiable` as defined in Particle Emptiable ($3.9.6)." * PASS */ } else { @@ -16421,7 +16531,7 @@ /* * SPEC (5.4.1.1) "The {content type} of the complex type definition * itself must be element-only" - */ + */ if (WXS_HAS_MIXED_CONTENT(type) && (! WXS_HAS_MIXED_CONTENT(base))) { /* * SPEC (5.4.1.2) "The {content type} of the complex type @@ -16437,9 +16547,9 @@ } /* * SPEC (5.4.2) "The particle of the complex type definition itself - * must be a valid restriction of the particle of the {content + * must be a `valid restriction` of the particle of the {content * type} of the {base type definition} as defined in Particle Valid - * (Restriction) (3.9.6). + * (Restriction) ($3.9.6). * * URGENT TODO: (5.4.2) */ @@ -16508,7 +16618,7 @@ if (! WXS_HAS_SIMPLE_CONTENT(type)) { /* * 1 If the alternative is chosen, the type definition - * resolved to by the actual value of the base [attribute] + * `resolved` to by the `actual value` of the base [attribute] * must be a complex type definition; */ if (! WXS_IS_COMPLEX(base)) { @@ -16528,7 +16638,7 @@ * SPEC * 2 If the alternative is chosen, all of the * following must be true: - * 2.1 The type definition resolved to by the actual value of the + * 2.1 The type definition `resolved` to by the `actual value` of the * base [attribute] must be one of the following: */ if (WXS_IS_SIMPLE(base)) { @@ -16578,11 +16688,11 @@ if (! xmlSchemaIsParticleEmptiable( (xmlSchemaParticlePtr) base->subtypes)) { ret = XML_SCHEMAP_SRC_CT_1; - } else + } else /* * Attention: at this point the child is in * ->contentTypeDef (put there during parsing). - */ + */ if (type->contentTypeDef == NULL) { xmlChar *str = NULL; /* @@ -16634,14 +16744,14 @@ /* * SPEC (3) "The corresponding complex type definition component must * satisfy the conditions set out in Constraints on Complex Type - * Definition Schema Components (3.4.6);" + * Definition Schema Components ($3.4.6);" * NOTE (3) will be done in xmlSchemaTypeFixup(). */ /* * SPEC (4) If clause 2.2.1 or clause 2.2.2 in the correspondence specification * above for {attribute wildcard} is satisfied, the intensional * intersection must be expressible, as defined in Attribute Wildcard - * Intersection (3.10.6). + * Intersection ($3.10.6). * NOTE (4) is done in xmlSchemaFixupTypeAttributeUses(). */ return (ret); @@ -16712,7 +16822,7 @@ return (1); /* * SPEC (2) "R's occurrence range is a valid restriction of B's - * occurrence range as defined by Occurrence Range OK (3.9.6)." + * occurrence range as defined by Occurrence Range OK ($3.9.6)." */ if (xmlSchemaCheckParticleRangeOK(r->minOccurs, r->maxOccurs, b->minOccurs, b->maxOccurs) != 0) @@ -16804,19 +16914,19 @@ { /* TODO:Error codes (rcase-NSCompat). */ /* - * SPEC "For an element declaration particle to be a valid restriction + * SPEC "For an element declaration particle to be a `valid restriction` * of a wildcard particle all of the following must be true:" * - * SPEC (1) "The element declaration's {target namespace} is valid + * SPEC (1) "The element declaration's {target namespace} is `valid` * with respect to the wildcard's {namespace constraint} as defined by - * Wildcard allows Namespace Name (3.10.4)." + * Wildcard allows Namespace Name ($3.10.4)." */ if (xmlSchemaCheckCVCWildcardNamespace((xmlSchemaWildcardPtr) b->children, ((xmlSchemaElementPtr) r->children)->targetNamespace) != 0) return (1); /* * SPEC (2) "R's occurrence range is a valid restriction of B's - * occurrence range as defined by Occurrence Range OK (3.9.6)." + * occurrence range as defined by Occurrence Range OK ($3.9.6)." */ if (xmlSchemaCheckParticleRangeOK(r->minOccurs, r->maxOccurs, b->minOccurs, b->maxOccurs) != 0) @@ -16876,21 +16986,21 @@ /* TODO: Error codes (rcase-NSSubset). */ /* * SPEC (1) "R's occurrence range is a valid restriction of B's - * occurrence range as defined by Occurrence Range OK (3.9.6)." + * occurrence range as defined by Occurrence Range OK ($3.9.6)." */ if (xmlSchemaCheckParticleRangeOK(r->minOccurs, r->maxOccurs, b->minOccurs, b->maxOccurs)) return (1); /* * SPEC (2) "R's {namespace constraint} must be an intensional subset - * of B's {namespace constraint} as defined by Wildcard Subset (3.10.6)." + * of B's {namespace constraint} as defined by Wildcard Subset ($3.10.6)." */ if (xmlSchemaCheckCOSNSSubset((xmlSchemaWildcardPtr) r->children, (xmlSchemaWildcardPtr) b->children)) return (1); /* - * SPEC (3) "Unless B is the content model wildcard of the ur-type - * definition, R's {process contents} must be identical to or stronger + * SPEC (3) "Unless B is the content model wildcard of the `ur-type + * definition`, R's {process contents} must be identical to or stronger * than B's {process contents}, where strict is stronger than lax is * stronger than skip." */ @@ -16940,6 +17050,7 @@ return (0); } +#if 0 /** * xmlSchemaCheckRCaseNSRecurseCheckCardinality: * @ctxt: the schema parser context @@ -16967,12 +17078,12 @@ if ((r->children == NULL) || (r->children->children == NULL)) return (-1); /* - * SPEC "For a group particle to be a valid restriction of a + * SPEC "For a group particle to be a `valid restriction` of a * wildcard particle..." * - * SPEC (1) "Every member of the {particles} of the group is a valid - * restriction of the wildcard as defined by - * Particle Valid (Restriction) (3.9.6)." + * SPEC (1) "Every member of the {particles} of the group is a `valid + * restriction` of the wildcard as defined by + * Particle Valid (Restriction) ($3.9.6)." */ part = (xmlSchemaParticlePtr) r->children->children; do { @@ -16983,7 +17094,7 @@ /* * SPEC (2) "The effective total range of the group [...] is a * valid restriction of B's occurrence range as defined by - * Occurrence Range OK (3.9.6)." + * Occurrence Range OK ($3.9.6)." */ if (xmlSchemaCheckParticleRangeOK( xmlSchemaGetParticleTotalRangeMin(r), @@ -16992,6 +17103,7 @@ return (1); return (0); } +#endif /** * xmlSchemaCheckRCaseRecurse: @@ -17022,11 +17134,11 @@ (r->children->type != b->children->type)) return (-1); /* - * SPEC "For an all or sequence group particle to be a valid - * restriction of another group particle with the same {compositor}..." + * SPEC "For an all or sequence group particle to be a `valid + * restriction` of another group particle with the same {compositor}..." * * SPEC (1) "R's occurrence range is a valid restriction of B's - * occurrence range as defined by Occurrence Range OK (3.9.6)." + * occurrence range as defined by Occurrence Range OK ($3.9.6)." */ if (xmlSchemaCheckParticleRangeOK(r->minOccurs, r->maxOccurs, b->minOccurs, b->maxOccurs)) @@ -17123,7 +17235,7 @@ /* * SPEC st-restrict-facets 1: - * "The {variety} of R is the same as that of B." + * "The {variety} of R is the same as that of B." */ /* * SPEC st-restrict-facets 2: @@ -17277,7 +17389,7 @@ flength = bflength; if (flength) { if (! fminlen) - flength = bflength; + fminlen = bfminlen; if (fminlen) { /* (1.1) length >= minLength */ res = xmlSchemaCompareValues(flength->val, fminlen->val); @@ -17595,7 +17707,7 @@ * The whitespace must be stronger. */ if (facet->whitespace < bfacet->whitespace) { - FACET_RESTR_ERR(flength, + FACET_RESTR_ERR(facet, "The 'whitespace' value has to be equal to " "or stronger than the 'whitespace' value of " "the base type") @@ -17650,7 +17762,7 @@ xmlSchemaTypeLinkPtr link, lastLink, prevLink, subLink, newLink; /* * The actual value is then formed by replacing any union type - * definition in the explicit members with the members of their + * definition in the `explicit members` with the members of their * {member type definitions}, in order. * * TODO: There's a bug entry at @@ -17696,7 +17808,7 @@ static void xmlSchemaTypeFixupOptimFacets(xmlSchemaTypePtr type) -{ +{ int has = 0, needVal = 0, normVal = 0; has = (type->baseType->flags & XML_SCHEMAS_TYPE_HAS_FACETS) ? 1 : 0; @@ -17708,7 +17820,7 @@ } if (type->facets != NULL) { xmlSchemaFacetPtr fac; - + for (fac = type->facets; fac != NULL; fac = fac->next) { switch (fac->type) { case XML_SCHEMA_FACET_WHITESPACE: @@ -17726,7 +17838,7 @@ has = 1; break; } - } + } } if (normVal) type->flags |= XML_SCHEMAS_TYPE_NORMVALUENEEDED; @@ -17743,24 +17855,24 @@ if ((prim->builtInType != XML_SCHEMAS_ANYSIMPLETYPE) && (prim->builtInType != XML_SCHEMAS_STRING)) { type->flags |= XML_SCHEMAS_TYPE_FACETSNEEDVALUE; - } - } + } + } } static int xmlSchemaTypeFixupWhitespace(xmlSchemaTypePtr type) { - - + + /* * Evaluate the whitespace-facet value. - */ + */ if (WXS_IS_LIST(type)) { type->flags |= XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE; return (0); } else if (WXS_IS_UNION(type)) return (0); - + if (type->facetSet != NULL) { xmlSchemaFacetLinkPtr lin; @@ -17784,23 +17896,23 @@ } } /* - * For all atomic datatypes other than string (and types derived - * by restriction from it) the value of whiteSpace is fixed to + * For all `atomic` datatypes other than string (and types `derived` + * by `restriction` from it) the value of whiteSpace is fixed to * collapse */ { xmlSchemaTypePtr anc; - for (anc = type->baseType; anc != NULL && + for (anc = type->baseType; anc != NULL && anc->builtInType != XML_SCHEMAS_ANYTYPE; anc = anc->baseType) { if (anc->type == XML_SCHEMA_TYPE_BASIC) { - if (anc->builtInType == XML_SCHEMAS_NORMSTRING) { + if (anc->builtInType == XML_SCHEMAS_NORMSTRING) { type->flags |= XML_SCHEMAS_TYPE_WHITESPACE_REPLACE; } else if ((anc->builtInType == XML_SCHEMAS_STRING) || - (anc->builtInType == XML_SCHEMAS_ANYSIMPLETYPE)) { + (anc->builtInType == XML_SCHEMAS_ANYSIMPLETYPE)) { type->flags |= XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE; } else @@ -17837,7 +17949,7 @@ } else if (WXS_IS_UNION(type)) { /* * Corresponds to ... - */ + */ if (type->memberTypes == NULL) { /* * This one is really needed, so get out. @@ -17845,8 +17957,8 @@ PERROR_INT("xmlSchemaFixupSimpleTypeStageOne", "union type has no member-types assigned"); return(-1); - } - } else { + } + } else { /* * Corresponds to ... */ @@ -17961,7 +18073,7 @@ } if (WXS_IS_TYPE_NOT_FIXED(type->baseType)) xmlSchemaTypeFixup(type->baseType, ACTXT_CAST pctxt); - /* + /* * If a member type of a union is a union itself, we need to substitute * that member type for its member types. * NOTE that this might change in WXS 1.1; i.e. we will keep the union @@ -17969,12 +18081,12 @@ */ if ((type->memberTypes != NULL) && (xmlSchemaFinishMemberTypeDefinitionsProperty(pctxt, type) == -1)) - return(-1); + return(-1); /* - * SPEC src-simple-type 1 + * SPEC src-simple-type 1 * "The corresponding simple type definition, if any, must satisfy * the conditions set out in Constraints on Simple Type Definition - * Schema Components (3.14.6)." + * Schema Components ($3.14.6)." */ /* * Schema Component Constraint: Simple Type Definition Properties Correct @@ -17982,7 +18094,7 @@ */ res = xmlSchemaCheckSTPropsCorrect(pctxt, type); HFAILURE HERROR - /* + /* * Schema Component Constraint: Derivation Valid (Restriction, Simple) * (cos-st-restricts) */ @@ -18015,7 +18127,7 @@ */ res = xmlSchemaTypeFixupWhitespace(type); HFAILURE HERROR - xmlSchemaTypeFixupOptimFacets(type); + xmlSchemaTypeFixupOptimFacets(type); exit_error: #ifdef DEBUG_TYPE @@ -18046,7 +18158,7 @@ PERROR_INT("xmlSchemaFixupComplexType", "missing baseType"); goto exit_failure; - } + } /* * Fixup the base type. */ @@ -18058,12 +18170,12 @@ * TODO: Generate a warning! */ return(0); - } + } /* * This basically checks if the base type can be derived. */ res = xmlSchemaCheckSRCCT(pctxt, type); - HFAILURE HERROR + HFAILURE HERROR /* * Fixup the content type. */ @@ -18137,7 +18249,7 @@ type->facets = NULL; content->facetSet = type->facetSet; type->facetSet = NULL; - + type->contentTypeDef = content; if (WXS_IS_TYPE_NOT_FIXED(contentBase)) xmlSchemaTypeFixup(contentBase, ACTXT_CAST pctxt); @@ -18146,10 +18258,10 @@ * for circularity here. */ res = xmlSchemaFixupSimpleTypeStageOne(pctxt, content); - HFAILURE HERROR + HFAILURE HERROR res = xmlSchemaFixupSimpleTypeStageTwo(pctxt, content); - HFAILURE HERROR - + HFAILURE HERROR + } else if ((WXS_IS_COMPLEX(baseType)) && (baseType->contentType == XML_SCHEMA_CONTENT_MIXED) && (WXS_IS_RESTRICTION(type))) { @@ -18234,7 +18346,7 @@ ( ((xmlSchemaTreeItemPtr) particle->children)->children == NULL))) { if (type->flags & XML_SCHEMAS_TYPE_MIXED) { /* - * SPEC (2.1.4) "If the effective mixed is true, then + * SPEC (2.1.4) "If the `effective mixed` is true, then * a particle whose properties are as follows:..." * * Empty sequence model group with @@ -18259,7 +18371,7 @@ XML_SCHEMA_TYPE_SEQUENCE, type->node); if (particle->children == NULL) goto exit_failure; - + type->subtypes = (xmlSchemaTypePtr) particle; } dummySequence = 1; @@ -18296,7 +18408,7 @@ if (type->contentType == XML_SCHEMA_CONTENT_EMPTY) { /* * SPEC (3.2.1) - * "If the effective content is empty, then the + * "If the `effective content` is empty, then the * {content type} of the [...] base ..." */ type->contentType = baseType->contentType; @@ -18394,8 +18506,8 @@ particle->children->children = (xmlSchemaTreeItemPtr) xmlSchemaAddParticle(pctxt, type->node, - ((xmlSchemaParticlePtr) type->subtypes)->minOccurs, - ((xmlSchemaParticlePtr) type->subtypes)->maxOccurs); + ((xmlSchemaParticlePtr) baseType->subtypes)->minOccurs, + ((xmlSchemaParticlePtr) baseType->subtypes)->maxOccurs); if (particle->children->children == NULL) goto exit_failure; particle = (xmlSchemaParticlePtr) @@ -18403,7 +18515,7 @@ particle->children = ((xmlSchemaParticlePtr) baseType->subtypes)->children; /* - * SPEC "followed by the effective content." + * SPEC "followed by the `effective content`." */ particle->next = effectiveContent; /* @@ -18547,12 +18659,12 @@ /* 4.3.5.5 Constraints on enumeration Schema Components * Schema Component Constraint: enumeration valid restriction - * It is an error if any member of {value} is not in the - * value space of {base type definition}. + * It is an `error` if any member of {value} is not in the + * `value space` of {base type definition}. * * minInclusive, maxInclusive, minExclusive, maxExclusive: - * The value must be in the - * value space of the base type. + * The value `must` be in the + * `value space` of the `base type`. */ /* * This function is intended to deliver a compiled value @@ -18572,11 +18684,11 @@ } } else base = typeDecl; - + if (! ctxtGiven) { /* * A context is needed if called from RelaxNG. - */ + */ pctxt = xmlSchemaNewParserCtxt("*"); if (pctxt == NULL) return (-1); @@ -18587,17 +18699,17 @@ * facet->node is just the node holding the facet * definition, *not* the attribute holding the *value* * of the facet. - */ + */ ret = xmlSchemaVCheckCVCSimpleType( ACTXT_CAST pctxt, facet->node, base, facet->value, &(facet->val), 1, 1, 0); if (ret != 0) { if (ret < 0) { /* No error message for RelaxNG. */ - if (ctxtGiven) { + if (ctxtGiven) { xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_INTERNAL, facet->node, NULL, - "Internal error: xmlSchemaCheckFacet, " + "Internal error: xmlSchemaCheckFacet, " "failed to validate the value '%s' of the " "facet '%s' against the base type", facet->value, xmlSchemaFacetTypeToString(facet->type)); @@ -18672,17 +18784,17 @@ /* error code */ xmlSchemaCustomErr4(ACTXT_CAST pctxt, ret, facet->node, WXS_BASIC_CAST typeDecl, - "The value '%s' of the facet '%s' is not a valid '%s'", + "The value '%s' of the facet '%s' is not a valid '%s'", facet->value, xmlSchemaFacetTypeToString(facet->type), - (facet->type != XML_SCHEMA_FACET_TOTALDIGITS) ? + (facet->type != XML_SCHEMA_FACET_TOTALDIGITS) ? BAD_CAST "nonNegativeInteger" : BAD_CAST "positiveInteger", NULL); } } break; - + case XML_SCHEMA_FACET_WHITESPACE:{ if (xmlStrEqual(facet->value, BAD_CAST "preserve")) { facet->whitespace = XML_SCHEMAS_FACET_PRESERVE; @@ -18895,7 +19007,7 @@ { particle = WXS_PTC_CAST particle->next; continue; - } + } if (WXS_MODELGROUPDEF_MODEL(WXS_PARTICLE_TERM(particle)) == NULL) { /* * TODO: Remove the particle. @@ -18945,7 +19057,7 @@ if (gr == ctxtGr) return(ref); if (gr->flags & XML_SCHEMAS_ATTRGROUP_MARKED) - continue; + continue; /* * Mark as visited to avoid infinite recursion on * circular references not yet examined. @@ -18955,12 +19067,12 @@ { gr->flags |= XML_SCHEMAS_ATTRGROUP_MARKED; circ = xmlSchemaCheckAttrGroupCircularRecur(ctxtGr, - (xmlSchemaItemListPtr) gr->attrUses); + (xmlSchemaItemListPtr) gr->attrUses); gr->flags ^= XML_SCHEMAS_ATTRGROUP_MARKED; if (circ != NULL) return (circ); } - + } } return (NULL); @@ -18987,9 +19099,9 @@ * not be an with ref [attribute] which resolves * to the component corresponding to this . Indirect * circularity is also ruled out. That is, when QName resolution - * (Schema Document) (3.15.3) is applied to a QName arising from + * (Schema Document) ($3.15.3) is applied to a `QName` arising from * any s with a ref [attribute] among the [children], - * it must not be the case that a QName is encountered at any depth + * it must not be the case that a `QName` is encountered at any depth * which resolves to the component corresponding to this . */ if (attrGr->attrUses == NULL) @@ -18998,9 +19110,9 @@ return(0); else { xmlSchemaQNameRefPtr circ; - + circ = xmlSchemaCheckAttrGroupCircularRecur(attrGr, - (xmlSchemaItemListPtr) attrGr->attrUses); + (xmlSchemaItemListPtr) attrGr->attrUses); if (circ != NULL) { xmlChar *str = NULL; /* @@ -19032,7 +19144,7 @@ * xmlSchemaExpandAttributeGroupRefs: * @pctxt: the parser context * @node: the node of the component holding the attribute uses - * @completeWild: the intersected wildcard to be returned + * @completeWild: the intersected wildcard to be returned * @list: the attribute uses * * Substitutes contained attribute group references @@ -19061,7 +19173,7 @@ for (i = 0; i < list->nbItems; i++) { use = list->items[i]; - if (use->type == XML_SCHEMA_EXTRA_ATTR_USE_PROHIB) { + if (use->type == XML_SCHEMA_EXTRA_ATTR_USE_PROHIB) { if (prohibs == NULL) { PERROR_INT("xmlSchemaExpandAttributeGroupRefs", "unexpected attr prohibition found"); @@ -19076,7 +19188,7 @@ /* * Note that duplicate prohibitions were already * handled at parsing time. - */ + */ /* * Add to list of prohibitions. */ @@ -19129,7 +19241,7 @@ *completeWild = tmpWild; created = 1; } - + if (xmlSchemaIntersectWildcards(pctxt, *completeWild, gr->attributeWildcard) == -1) return(-1); @@ -19139,7 +19251,8 @@ * Just remove the reference if the referenced group does not * contain any attribute uses. */ - if (gr->attrUses == NULL) { + sublist = ((xmlSchemaItemListPtr) gr->attrUses); + if ((sublist == NULL) || sublist->nbItems == 0) { if (xmlSchemaItemListRemove(list, i) == -1) return(-1); i--; @@ -19148,18 +19261,15 @@ /* * Add the attribute uses. */ - sublist = ((xmlSchemaItemListPtr) gr->attrUses); - if (sublist->nbItems != 0) { - list->items[i] = sublist->items[0]; - if (sublist->nbItems != 1) { - for (j = 1; j < sublist->nbItems; j++) { - i++; - if (xmlSchemaItemListInsert(list, - sublist->items[j], i) == -1) - return(-1); - } + list->items[i] = sublist->items[0]; + if (sublist->nbItems != 1) { + for (j = 1; j < sublist->nbItems; j++) { + i++; + if (xmlSchemaItemListInsert(list, + sublist->items[j], i) == -1) + return(-1); } - } + } } } @@ -19205,7 +19315,7 @@ /** * xmlSchemaAttributeGroupExpandRefs: * @pctxt: the parser context - * @attrGr: the attribute group definition + * @attrGr: the attribute group definition * * Computation of: * {attribute uses} property @@ -19217,7 +19327,7 @@ static int xmlSchemaAttributeGroupExpandRefs(xmlSchemaParserCtxtPtr pctxt, xmlSchemaAttributeGroupPtr attrGr) -{ +{ if ((attrGr->attrUses == NULL) || (attrGr->flags & XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED)) return(0); @@ -19225,33 +19335,33 @@ attrGr->flags |= XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED; if (xmlSchemaExpandAttributeGroupRefs(pctxt, WXS_BASIC_CAST attrGr, &(attrGr->attributeWildcard), attrGr->attrUses, NULL) == -1) - return(-1); + return(-1); return(0); } /** * xmlSchemaAttributeGroupExpandRefs: * @pctxt: the parser context - * @attrGr: the attribute group definition + * @attrGr: the attribute group definition * * Substitutes contained attribute group references * for their attribute uses. Wilcards are intersected. - * + * * Schema Component Constraint: - * Attribute Group Definition Properties Correct (ag-props-correct) + * Attribute Group Definition Properties Correct (ag-props-correct) */ static int xmlSchemaCheckAGPropsCorrect(xmlSchemaParserCtxtPtr pctxt, xmlSchemaAttributeGroupPtr attrGr) -{ +{ /* * SPEC ag-props-correct * (1) "The values of the properties of an attribute group definition * must be as described in the property tableau in The Attribute - * Group Definition Schema Component (3.6.1), modulo the impact of - * Missing Sub-components (5.3);" + * Group Definition Schema Component ($3.6.1), modulo the impact of + * Missing Sub-components ($5.3);" */ - + if ((attrGr->attrUses != NULL) && (WXS_LIST_CAST attrGr->attrUses)->nbItems > 1) { @@ -19260,7 +19370,7 @@ int i, j, hasId = 0; for (i = uses->nbItems -1; i >= 0; i--) { - use = uses->items[i]; + use = uses->items[i]; /* * SPEC ag-props-correct * (2) "Two distinct members of the {attribute uses} must not have @@ -19276,7 +19386,7 @@ WXS_ATTRUSE_DECL_TNS(tmp))) { xmlChar *str = NULL; - + xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_AG_PROPS_CORRECT, attrGr->node, WXS_BASIC_CAST attrGr, @@ -19300,13 +19410,13 @@ * are derived from ID." * TODO: Does 'derived' include member-types of unions? */ - if (WXS_ATTRUSE_TYPEDEF(use) != NULL) { + if (WXS_ATTRUSE_TYPEDEF(use) != NULL) { if (xmlSchemaIsDerivedFromBuiltInType( WXS_ATTRUSE_TYPEDEF(use), XML_SCHEMAS_ID)) - { + { if (hasId) { xmlChar *str = NULL; - + xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_AG_PROPS_CORRECT, attrGr->node, WXS_BASIC_CAST attrGr, @@ -19319,7 +19429,7 @@ FREE_AND_NULL(str); if (xmlSchemaItemListRemove(uses, i) == -1) return(-1); - } + } hasId = 1; } } @@ -19383,10 +19493,10 @@ * SPEC a-props-correct (1) * "The values of the properties of an attribute declaration must * be as described in the property tableau in The Attribute - * Declaration Schema Component (3.2.1), modulo the impact of - * Missing Sub-components (5.3)." + * Declaration Schema Component ($3.2.1), modulo the impact of + * Missing Sub-components ($5.3)." */ - + if (WXS_ATTR_TYPEDEF(attr) == NULL) return(0); @@ -19412,9 +19522,9 @@ /* * SPEC a-props-correct (2) * "if there is a {value constraint}, the canonical lexical - * representation of its value must be valid with respect - * to the {type definition} as defined in String Valid (3.14.4)." - * TODO: Don't care about the *cononical* stuff here, this requirement + * representation of its value must be `valid` with respect + * to the {type definition} as defined in String Valid ($3.14.4)." + * TODO: Don't care about the *canonical* stuff here, this requirement * will be removed in WXS 1.1 anyway. */ ret = xmlSchemaVCheckCVCSimpleType(ACTXT_CAST pctxt, @@ -19435,7 +19545,7 @@ return(pctxt->err); } } - + return(0); } @@ -19481,15 +19591,15 @@ /* * SPEC (1) "The values of the properties of an element declaration * must be as described in the property tableau in The Element - * Declaration Schema Component (3.3.1), modulo the impact of Missing - * Sub-components (5.3)." + * Declaration Schema Component ($3.3.1), modulo the impact of Missing + * Sub-components ($5.3)." */ if (WXS_SUBST_HEAD(elemDecl) != NULL) { xmlSchemaElementPtr head = WXS_SUBST_HEAD(elemDecl), circ; xmlSchemaCheckElementDeclComponent(head, pctxt); /* - * SPEC (3) "If there is a non-absent {substitution group + * SPEC (3) "If there is a non-`absent` {substitution group * affiliation}, then {scope} must be global." */ if ((elemDecl->flags & XML_SCHEMAS_ELEM_GLOBAL) == 0) { @@ -19533,9 +19643,9 @@ * of the element declaration must be validly derived from the {type * definition} of the {substitution group affiliation}, given the value * of the {substitution group exclusions} of the {substitution group - * affiliation}, as defined in Type Derivation OK (Complex) (3.4.6) + * affiliation}, as defined in Type Derivation OK (Complex) ($3.4.6) * (if the {type definition} is complex) or as defined in - * Type Derivation OK (Simple) (3.14.6) (if the {type definition} is + * Type Derivation OK (Simple) ($3.14.6) (if the {type definition} is * simple)." * * NOTE: {substitution group exclusions} means the values of the @@ -19599,9 +19709,9 @@ /* * SPEC (2) "If there is a {value constraint}, the canonical lexical - * representation of its value must be valid with respect to the + * representation of its value must be `valid` with respect to the * {type definition} as defined in Element Default Valid (Immediate) - * (3.3.6)." + * ($3.3.6)." */ if (typeDef == NULL) { xmlSchemaPErr(pctxt, elemDecl->node, @@ -19669,7 +19779,7 @@ /* * SPEC (2) "It is validly substitutable for HEAD subject to HEAD's * {disallowed substitutions} as the blocking constraint, as defined in - * Substitution Group OK (Transitive) (3.3.6)." + * Substitution Group OK (Transitive) ($3.3.6)." */ for (head = WXS_SUBST_HEAD(elemDecl); head != NULL; head = WXS_SUBST_HEAD(head)) { @@ -19761,12 +19871,12 @@ * @ctxtParticle: the first particle of the context component * @searchParticle: the element declaration particle to be analysed * - * Schema Component Constraint: Element Declarations Consistent + * Schema Component Constraint: Element Declarations Consistent */ static int xmlSchemaCheckElementDeclConsistent(xmlSchemaParserCtxtPtr pctxt, xmlSchemaBasicItemPtr ctxtComponent, - xmlSchemaParticlePtr ctxtParticle, + xmlSchemaParticlePtr ctxtParticle, xmlSchemaParticlePtr searchParticle, xmlSchemaParticlePtr curParticle, int search) @@ -19775,7 +19885,7 @@ int ret = 0; xmlSchemaParticlePtr cur = curParticle; - if (curParticle == NULL) { + if (curParticle == NULL) { return(0); } if (WXS_PARTICLE_TERM(curParticle) == NULL) { @@ -19784,7 +19894,7 @@ * might arise due to an invalid "term" component. */ return(0); - } + } while (cur != NULL) { switch (WXS_PARTICLE_TERM(cur)->type) { case XML_SCHEMA_TYPE_ANY: @@ -19794,7 +19904,7 @@ ret = xmlSchemaCheckElementDeclConsistent(pctxt, ctxtComponent, ctxtParticle, cur, ctxtParticle, 1); if (ret != 0) - return(ret); + return(ret); } else { xmlSchemaElementPtr elem = WXS_ELEM_CAST(WXS_PARTICLE_TERM(cur)); @@ -19802,7 +19912,7 @@ * SPEC Element Declarations Consistent: * "If the {particles} contains, either directly, * indirectly (that is, within the {particles} of a - * contained model group, recursively) or implicitly + * contained model group, recursively) or `implicitly` * two or more element declaration particles with * the same {name} and {target namespace}, then * all their type definitions must be the same @@ -19814,7 +19924,7 @@ WXS_PARTICLE_TERM_AS_ELEM(searchParticle)->targetNamespace)) { xmlChar *strA = NULL, *strB = NULL; - + xmlSchemaCustomErr(ACTXT_CAST pctxt, /* TODO: error code */ XML_SCHEMAP_COS_NONAMBIG, @@ -19831,16 +19941,16 @@ FREE_AND_NULL(strB); return(XML_SCHEMAP_COS_NONAMBIG); } - } + } break; - case XML_SCHEMA_TYPE_SEQUENCE: { + case XML_SCHEMA_TYPE_SEQUENCE: { break; } case XML_SCHEMA_TYPE_CHOICE:{ /* xmlSchemaTreeItemPtr sub; - - sub = WXS_PARTICLE_TERM(particle)->children; (xmlSchemaParticlePtr) + + sub = WXS_PARTICLE_TERM(particle)->children; (xmlSchemaParticlePtr) while (sub != NULL) { ret = xmlSchemaCheckElementDeclConsistent(pctxt, ctxtComponent, ctxtParticle, ctxtElem); @@ -19877,7 +19987,7 @@ * @name: the name of the attribute * * Validates the value constraints of an element declaration. - * Adds substitution group members. + * Adds substitution group members. */ static void xmlSchemaCheckElementDeclComponent(xmlSchemaElementPtr elemDecl, @@ -19892,7 +20002,7 @@ /* * Adds substitution group members. */ - xmlSchemaCheckElemSubstGroup(ctxt, elemDecl); + xmlSchemaCheckElemSubstGroup(ctxt, elemDecl); } } @@ -19922,7 +20032,7 @@ XML_SCHEMA_EXTRA_QNAMEREF)) { goto next_particle; - } + } ref = WXS_QNAME_CAST WXS_PARTICLE_TERM(particle); /* * Resolve the reference. @@ -19938,7 +20048,7 @@ ref->targetNamespace, ref->itemType, NULL); /* TODO: remove the particle. */ goto next_particle; - } + } if (refItem->type == XML_SCHEMA_TYPE_GROUP) { if (WXS_MODELGROUPDEF_MODEL(refItem) == NULL) /* TODO: remove the particle. */ @@ -19988,9 +20098,9 @@ static int xmlSchemaAreValuesEqual(xmlSchemaValPtr x, - xmlSchemaValPtr y) -{ - xmlSchemaTypePtr tx, ty, ptx, pty; + xmlSchemaValPtr y) +{ + xmlSchemaTypePtr tx, ty, ptx, pty; int ret; while (x != NULL) { @@ -20000,12 +20110,12 @@ ptx = xmlSchemaGetPrimitiveType(tx); pty = xmlSchemaGetPrimitiveType(ty); /* - * (1) if a datatype T' is derived by restriction from an - * atomic datatype T then the value space of T' is a subset of - * the value space of T. */ + * (1) if a datatype T' is `derived` by `restriction` from an + * atomic datatype T then the `value space` of T' is a subset of + * the `value space` of T. */ /* - * (2) if datatypes T' and T'' are derived by restriction - * from a common atomic ancestor T then the value spaces of T' + * (2) if datatypes T' and T'' are `derived` by `restriction` + * from a common atomic ancestor T then the `value space`s of T' * and T'' may overlap. */ if (ptx != pty) @@ -20036,7 +20146,7 @@ if (x != NULL) { y = xmlSchemaValueGetNext(y); if (y == NULL) - return (0); + return (0); } else if (xmlSchemaValueGetNext(y) != NULL) return (0); else @@ -20073,7 +20183,7 @@ ref->name, ref->targetNamespace); if (ause->attrDecl == NULL) { xmlSchemaPResCompAttrErr(ctxt, - XML_SCHEMAP_SRC_RESOLVE, + XML_SCHEMAP_SRC_RESOLVE, WXS_BASIC_CAST ause, ause->node, "ref", ref->name, ref->targetNamespace, XML_SCHEMA_TYPE_ATTRIBUTE, NULL); @@ -20086,11 +20196,11 @@ /** * xmlSchemaCheckAttrUsePropsCorrect: * @ctxt: a parser context - * @use: an attribute use + * @use: an attribute use * * Schema Component Constraint: * Attribute Use Correct (au-props-correct) - * + * */ static int xmlSchemaCheckAttrUsePropsCorrect(xmlSchemaParserCtxtPtr ctxt, @@ -20100,16 +20210,16 @@ return(-1); if ((use->defValue == NULL) || (WXS_ATTRUSE_DECL(use) == NULL) || ((WXS_ATTRUSE_DECL(use))->type != XML_SCHEMA_TYPE_ATTRIBUTE)) - return(0); + return(0); /* * SPEC au-props-correct (1) * "The values of the properties of an attribute use must be as * described in the property tableau in The Attribute Use Schema - * Component (3.5.1), modulo the impact of Missing - * Sub-components (5.3)." + * Component ($3.5.1), modulo the impact of Missing + * Sub-components ($5.3)." */ - + if (((WXS_ATTRUSE_DECL(use))->defValue != NULL) && ((WXS_ATTRUSE_DECL(use))->flags & XML_SCHEMAS_ATTR_FIXED) && ((use->flags & XML_SCHEMA_ATTR_USE_FIXED) == 0)) @@ -20129,7 +20239,7 @@ if ((use->defVal != NULL) && (WXS_ATTRUSE_TYPEDEF(use) != NULL)) { int ret; /* - * TODO: The spec seems to be missing a check of the + * TODO: The spec seems to be missing a check of the * value constraint of the attribute use. We will do it here. */ /* @@ -20146,7 +20256,7 @@ NULL, NULL); return(ctxt->err); } - + ret = xmlSchemaVCheckCVCSimpleType(ACTXT_CAST ctxt, use->node, WXS_ATTRUSE_TYPEDEF(use), use->defValue, &(use->defVal), @@ -20197,7 +20307,7 @@ /** * xmlSchemaResolveAttrTypeReferences: * @item: an attribute declaration - * @ctxt: a parser context + * @ctxt: a parser context * * Resolves the referenced type definition component. */ @@ -20208,8 +20318,8 @@ /* * The simple type definition corresponding to the element * information item in the [children], if present, otherwise the simple - * type definition resolved to by the actual value of the type - * [attribute], if present, otherwise the simple ur-type definition. + * type definition `resolved` to by the `actual value` of the type + * [attribute], if present, otherwise the `simple ur-type definition`. */ if (item->flags & XML_SCHEMAS_ATTR_INTERNAL_RESOLVED) return(0); @@ -20288,7 +20398,7 @@ ((xmlSchemaIDCPtr) idc->ref->item)->nbFields) { xmlChar *str = NULL; xmlSchemaIDCPtr refer; - + refer = (xmlSchemaIDCPtr) idc->ref->item; /* * SPEC c-props-correct(2) @@ -20347,7 +20457,7 @@ int wasRedefined; if (redef == NULL) - return(0); + return(0); do { item = redef->item; @@ -20362,7 +20472,7 @@ * d schema. Currenlty we latter approach is used. * SUPPLEMENT: It seems that the WG moves towards the latter * approach, so we are doing it right. - * + * */ prev = xmlSchemaFindRedefCompInGraph( redef->targetBucket, item->type, @@ -20373,11 +20483,11 @@ /* * SPEC src-redefine: - * (6.2.1) "The actual value of its own name attribute plus - * target namespace must successfully resolve to a model + * (6.2.1) "The `actual value` of its own name attribute plus + * target namespace must successfully `resolve` to a model * group definition in I." - * (7.2.1) "The actual value of its own name attribute plus - * target namespace must successfully resolve to an attribute + * (7.2.1) "The `actual value` of its own name attribute plus + * target namespace must successfully `resolve` to an attribute * group definition in I." * @@ -20394,7 +20504,7 @@ /* * TODO: error code. * Probably XML_SCHEMAP_SRC_RESOLVE, if this is using the - * reference kind. + * reference kind. */ XML_SCHEMAP_SRC_REDEFINE, node, NULL, "The %s '%s' to be redefined could not be found in " @@ -20402,7 +20512,7 @@ WXS_ITEM_TYPE_NAME(item), xmlSchemaFormatQName(&str, redef->refTargetNs, redef->refName)); - FREE_AND_NULL(str); + FREE_AND_NULL(str); err = pctxt->err; redef = redef->next; continue; @@ -20428,7 +20538,7 @@ * base type of the redefining type. * TODO: How */ - ((xmlSchemaTypePtr) item)->baseType = + ((xmlSchemaTypePtr) item)->baseType = (xmlSchemaTypePtr) prev; break; case XML_SCHEMA_TYPE_GROUP: @@ -20483,7 +20593,7 @@ default: PERROR_INT("xmlSchemaResolveRedefReferences", "Unexpected redefined component type"); - return(-1); + return(-1); } if (wasRedefined) { xmlChar *str = NULL; @@ -20493,7 +20603,7 @@ node = WXS_ITEM_NODE(redef->reference); else node = WXS_ITEM_NODE(redef->item); - + xmlSchemaCustomErr(ACTXT_CAST pctxt, /* TODO: error code. */ XML_SCHEMAP_SRC_REDEFINE, @@ -20502,12 +20612,12 @@ "redefinition of the same component is not supported", xmlSchemaGetComponentDesignation(&str, prev), NULL); - FREE_AND_NULL(str) + FREE_AND_NULL(str) err = pctxt->err; redef = redef->next; continue; } - redef = redef->next; + redef = redef->next; } while (redef != NULL); return(err); @@ -20521,7 +20631,7 @@ xmlSchemaBasicItemPtr item; if (redef == NULL) - return(0); + return(0); do { if (redef->target == NULL) { @@ -20529,7 +20639,7 @@ continue; } item = redef->item; - + switch (item->type) { case XML_SCHEMA_TYPE_SIMPLE: case XML_SCHEMA_TYPE_COMPLEX: @@ -20538,7 +20648,7 @@ * type to be 'absent', we'll NULL it. */ (WXS_TYPE_CAST redef->target)->name = NULL; - + /* * TODO: Seems like there's nothing more to do. The normal * inheritance mechanism is used. But not 100% sure. @@ -20550,10 +20660,10 @@ * SPEC src-redefine: * (6.2.2) "The {model group} of the model group definition * which corresponds to it per XML Representation of Model - * Group Definition Schema Components (3.7.2) must be a - * valid restriction of the {model group} of that model + * Group Definition Schema Components ($3.7.2) must be a + * `valid restriction` of the {model group} of that model * group definition in I, as defined in Particle Valid - * (Restriction) (3.9.6)." + * (Restriction) ($3.9.6)." */ break; case XML_SCHEMA_TYPE_ATTRIBUTEGROUP: @@ -20562,11 +20672,11 @@ * (7.2.2) "The {attribute uses} and {attribute wildcard} of * the attribute group definition which corresponds to it * per XML Representation of Attribute Group Definition Schema - * Components (3.6.2) must be valid restrictions of the + * Components ($3.6.2) must be `valid restrictions` of the * {attribute uses} and {attribute wildcard} of that attribute * group definition in I, as defined in clause 2, clause 3 and * clause 4 of Derivation Valid (Restriction, Complex) - * (3.4.6) (where references to the base type definition are + * ($3.4.6) (where references to the base type definition are * understood as references to the attribute group definition * in I)." */ @@ -20587,7 +20697,7 @@ } while (redef != NULL); return(0); } - + static int xmlSchemaAddComponents(xmlSchemaParserCtxtPtr pctxt, @@ -20621,8 +20731,8 @@ return(-1); if (bucket->flags & XML_SCHEMA_BUCKET_COMPS_ADDED) return(0); - bucket->flags |= XML_SCHEMA_BUCKET_COMPS_ADDED; - + bucket->flags |= XML_SCHEMA_BUCKET_COMPS_ADDED; + for (i = 0; i < bucket->globals->nbItems; i++) { item = bucket->globals->items[i]; table = NULL; @@ -20663,12 +20773,12 @@ case XML_SCHEMA_TYPE_NOTATION: name = ((xmlSchemaNotationPtr) item)->name; WXS_GET_GLOBAL_HASH(bucket, notaDecl) - break; + break; default: PERROR_INT("xmlSchemaAddComponents", "Unexpected global component type"); - continue; - } + continue; + } if (*table == NULL) { *table = xmlHashCreateDict(10, pctxt->dict); if (*table == NULL) { @@ -20676,11 +20786,11 @@ "failed to create a component hash table"); return(-1); } - } + } err = xmlHashAddEntry(*table, name, item); - if (err != 0) { + if (err != 0) { xmlChar *str = NULL; - + xmlSchemaCustomErr(ACTXT_CAST pctxt, XML_SCHEMAP_REDEFINED_TYPE, WXS_ITEM_NODE(item), @@ -20688,7 +20798,7 @@ "A global %s '%s' does already exist", WXS_ITEM_TYPE_NAME(item), xmlSchemaGetComponentQName(&str, item)); - FREE_AND_NULL(str); + FREE_AND_NULL(str); } } /* @@ -20722,34 +20832,34 @@ if ((con->pending == NULL) || (con->pending->nbItems == 0)) - return(0); + return(0); /* * Since xmlSchemaFixupComplexType() will create new particles * (local components), and those particle components need a bucket * on the constructor, we'll assure here that the constructor has * a bucket. - * TODO: Think about storing locals _only_ on the main bucket. - */ + * TODO: Think about storing locals _only_ on the main bucket. + */ if (con->bucket == NULL) - con->bucket = rootBucket; + con->bucket = rootBucket; /* TODO: * SPEC (src-redefine): * (6.2) "If it has no such self-reference, then all of the * following must be true:" - + * (6.2.2) The {model group} of the model group definition which * corresponds to it per XML Representation of Model Group - * Definition Schema Components (3.7.2) must be a valid - * restriction of the {model group} of that model group definition - * in I, as defined in Particle Valid (Restriction) (3.9.6)." + * Definition Schema Components ($3.7.2) must be a `valid + * restriction` of the {model group} of that model group definition + * in I, as defined in Particle Valid (Restriction) ($3.9.6)." */ xmlSchemaCheckSRCRedefineFirst(pctxt); /* * Add global components to the schemata's hash tables. - */ + */ xmlSchemaAddComponents(pctxt, rootBucket); pctxt->ctxtType = NULL; @@ -20759,7 +20869,7 @@ * Now that we have parsed *all* the schema document(s) and converted * them to schema components, we can resolve references, apply component * constraints, create the FSA from the content model, etc. - */ + */ /* * Resolve references of.. * @@ -20780,7 +20890,7 @@ * 6. IDC key-references: * - the referenced IDC 'key' or 'unique' definition * 7. Attribute prohibitions which had a "ref" attribute. - */ + */ for (i = 0; i < nbItems; i++) { item = items[i]; switch (item->type) { @@ -20806,7 +20916,7 @@ FIXHFAILURE; break; case XML_SCHEMA_EXTRA_QNAMEREF: - if ((WXS_QNAME_CAST item)->itemType == + if ((WXS_QNAME_CAST item)->itemType == XML_SCHEMA_TYPE_ATTRIBUTEGROUP) { xmlSchemaResolveAttrGroupReferences( @@ -20843,11 +20953,11 @@ } if (pctxt->nberrors != 0) goto exit_error; - + /* * Now that all references are resolved we * can check for circularity of... - * 1. the base axis of type definitions + * 1. the base axis of type definitions * 2. nested model group definitions * 3. nested attribute group definitions * TODO: check for circual substitution groups. @@ -20882,7 +20992,7 @@ break; default: break; - } + } } if (pctxt->nberrors != 0) goto exit_error; @@ -20898,7 +21008,7 @@ item = items[i]; switch (item->type) { case XML_SCHEMA_TYPE_SEQUENCE: - case XML_SCHEMA_TYPE_CHOICE: + case XML_SCHEMA_TYPE_CHOICE: xmlSchemaModelGroupToModelGroupDefFixup(pctxt, WXS_MODEL_GROUP_CAST item); break; @@ -20929,7 +21039,7 @@ } if (pctxt->nberrors != 0) goto exit_error; - /* + /* * First compute the variety of simple types. This is needed as * a seperate step, since otherwise we won't be able to detect * circular union types in all cases. @@ -20959,7 +21069,7 @@ switch (item->type) { case XML_SCHEMA_TYPE_SIMPLE: if (((xmlSchemaTypePtr) item)->memberTypes != NULL) { - xmlSchemaCheckUnionTypeDefCircular(pctxt, + xmlSchemaCheckUnionTypeDefCircular(pctxt, (xmlSchemaTypePtr) item); FIXHFAILURE; } @@ -20970,7 +21080,7 @@ } if (pctxt->nberrors != 0) goto exit_error; - + /* * Do the complete type fixup for simple types. */ @@ -20998,10 +21108,10 @@ for (i = 0; i < nbItems; i++) { item = items[i]; switch (item->type) { - case XML_SCHEMA_TYPE_ATTRIBUTE: + case XML_SCHEMA_TYPE_ATTRIBUTE: xmlSchemaCheckAttrPropsCorrect(pctxt, WXS_ATTR_CAST item); FIXHFAILURE; - break; + break; default: break; } @@ -21010,7 +21120,7 @@ goto exit_error; /* * Apply constraints for attribute uses. - */ + */ for (i = 0; i < nbItems; i++) { item = items[i]; switch (item->type) { @@ -21057,7 +21167,7 @@ if (pctxt->nberrors != 0) goto exit_error; - /* + /* * Complex types are builded and checked. */ for (i = 0; i < nbItems; i++) { @@ -21081,8 +21191,8 @@ * will create particles and model groups in some cases. */ items = (xmlSchemaTreeItemPtr *) con->pending->items; - nbItems = con->pending->nbItems; - + nbItems = con->pending->nbItems; + /* * Apply some constraints for element declarations. */ @@ -21091,7 +21201,7 @@ switch (item->type) { case XML_SCHEMA_TYPE_ELEMENT: elemDecl = (xmlSchemaElementPtr) item; - + if ((elemDecl->flags & XML_SCHEMAS_ELEM_INTERNAL_CHECKED) == 0) { xmlSchemaCheckElementDeclComponent( @@ -21121,7 +21231,7 @@ } if (pctxt->nberrors != 0) goto exit_error; - + /* * Finally we can build the automaton from the content model of * complex types. @@ -21142,10 +21252,10 @@ goto exit_error; /* * URGENT TODO: cos-element-consistent - */ - goto exit; + */ + goto exit; -exit_error: +exit_error: ret = pctxt->err; goto exit; @@ -21159,12 +21269,12 @@ * if not cleared here. */ con->bucket = oldbucket; - con->pending->nbItems = 0; + con->pending->nbItems = 0; if (con->substGroups != NULL) { xmlHashFree(con->substGroups, (xmlHashDeallocator) xmlSchemaSubstGroupFree); con->substGroups = NULL; - } + } if (con->redefs != NULL) { xmlSchemaRedefListFree(con->redefs); con->redefs = NULL; @@ -21227,11 +21337,11 @@ if (res == -1) goto exit_failure; if (res != 0) - goto exit; + goto exit; if (bucket == NULL) { /* TODO: Error code, actually we failed to *locate* the schema. */ - if (ctxt->URL) + if (ctxt->URL) xmlSchemaCustomErr(ACTXT_CAST ctxt, XML_SCHEMAP_FAILED_LOAD, NULL, NULL, "Failed to locate the main schema resource at '%s'", @@ -21242,16 +21352,16 @@ "Failed to locate the main schema resource", NULL, NULL); goto exit; - } + } /* Then do the parsing for good. */ if (xmlSchemaParseNewDocWithContext(ctxt, mainSchema, bucket) == -1) goto exit_failure; if (ctxt->nberrors != 0) goto exit; - + mainSchema->doc = bucket->doc; mainSchema->preserve = ctxt->preserve; - + ctxt->schema = mainSchema; if (xmlSchemaFixupComponents(ctxt, WXS_CONSTRUCTOR(ctxt)->mainBucket) == -1) @@ -21261,8 +21371,8 @@ * TODO: This is not nice, since we cannot distinguish from the * result if there was an internal error or not. */ -exit: - if (ctxt->nberrors != 0) { +exit: + if (ctxt->nberrors != 0) { if (mainSchema) { xmlSchemaFree(mainSchema); mainSchema = NULL; @@ -21276,7 +21386,7 @@ ctxt->schema = NULL; return(mainSchema); exit_failure: - /* + /* * Quite verbose, but should catch internal errors, which were * not communitated. */ @@ -21290,7 +21400,7 @@ ctxt->ownsConstructor = 0; } PERROR_INT2("xmlSchemaParse", - "An internal error occured"); + "An internal error occured"); ctxt->schema = NULL; return(NULL); } @@ -21427,8 +21537,8 @@ return(XML_SCHEMA_WHITESPACE_REPLACE); else { /* - * For all atomic datatypes other than string (and types derived - * by restriction from it) the value of whiteSpace is fixed to + * For all `atomic` datatypes other than string (and types `derived` + * by `restriction` from it) the value of whiteSpace is fixed to * collapse * Note that this includes built-in list datatypes. */ @@ -21453,16 +21563,16 @@ } /************************************************************************ - * * - * Simple type validation * - * * + * * + * Simple type validation * + * * ************************************************************************/ /************************************************************************ - * * - * DOM Validation code * - * * + * * + * DOM Validation code * + * * ************************************************************************/ /** @@ -21515,11 +21625,11 @@ * XML_SCHEMA_SCHEMA_MAIN if it is the first schema document. */ ret = xmlSchemaAddSchemaDoc(pctxt, XML_SCHEMA_SCHEMA_IMPORT, - location, NULL, NULL, 0, node, NULL, nsName, + location, NULL, NULL, 0, node, NULL, nsName, &bucket); if (ret != 0) - return(ret); - if (bucket == NULL) { + return(ret); + if (bucket == NULL) { /* * Generate a warning that the document could not be located. */ @@ -21549,17 +21659,17 @@ pctxt->nberrors = 0; pctxt->err = 0; pctxt->doc = bucket->doc; - - ret = xmlSchemaParseNewDocWithContext(pctxt, schema, bucket); + + ret = xmlSchemaParseNewDocWithContext(pctxt, schema, bucket); if (ret == -1) { pctxt->doc = NULL; goto exit_failure; } /* Paranoid error channelling. */ if ((ret == 0) && (pctxt->nberrors != 0)) - ret = pctxt->err; - if (pctxt->nberrors == 0) { - /* + ret = pctxt->err; + if (pctxt->nberrors == 0) { + /* * Only bother to fixup pending components, if there was * no error yet. * For every XSI acquired schema (and its sub-schemata) we will @@ -21575,7 +21685,7 @@ vctxt->err = ret; vctxt->nberrors += pctxt->nberrors; } else { - /* Add to validation error sum. */ + /* Add to validation error sum. */ vctxt->nberrors += pctxt->nberrors; } pctxt->doc = NULL; @@ -21586,7 +21696,7 @@ } static xmlSchemaAttrInfoPtr -xmlSchemaGetMetaAttrInfo(xmlSchemaValidCtxtPtr vctxt, +xmlSchemaGetMetaAttrInfo(xmlSchemaValidCtxtPtr vctxt, int metaType) { if (vctxt->nbAttrInfos == 0) @@ -21676,7 +21786,7 @@ /* * If using @schemaLocation then tuples are expected. * I.e. the namespace name *and* the document's URI. - */ + */ xmlSchemaCustomWarning(ACTXT_CAST vctxt, XML_SCHEMAV_MISC, iattr->node, NULL, "The value must consist of tuples: the target namespace " @@ -21705,7 +21815,7 @@ if (vctxt->sax != NULL) { int i, j; xmlSchemaNodeInfoPtr inode; - + for (i = vctxt->depth; i >= 0; i--) { if (vctxt->elemInfos[i]->nbNsBindings != 0) { inode = vctxt->elemInfos[i]; @@ -21719,16 +21829,16 @@ * Note that the namespace bindings are already * in a string dict. */ - return (inode->nsBindings[j+1]); + return (inode->nsBindings[j+1]); } } } } return (NULL); -#ifdef LIBXML_WRITER_ENABLED +#ifdef LIBXML_READER_ENABLED } else if (vctxt->reader != NULL) { xmlChar *nsName; - + nsName = xmlTextReaderLookupNamespace(vctxt->reader, prefix); if (nsName != NULL) { const xmlChar *ret; @@ -21760,7 +21870,7 @@ * This one works on the schema of the validation context. */ static int -xmlSchemaValidateNotation(xmlSchemaValidCtxtPtr vctxt, +xmlSchemaValidateNotation(xmlSchemaValidCtxtPtr vctxt, xmlSchemaPtr schema, xmlNodePtr node, const xmlChar *value, @@ -21785,7 +21895,7 @@ if (prefix != NULL) { const xmlChar *nsName = NULL; - if (vctxt != NULL) + if (vctxt != NULL) nsName = xmlSchemaLookupNamespace(vctxt, BAD_CAST prefix); else if (node != NULL) { xmlNsPtr ns = xmlSearchNs(node->doc, node, prefix); @@ -21802,9 +21912,9 @@ return (1); } if (xmlSchemaGetNotation(schema, localName, nsName) != NULL) { - if (valNeeded && (val != NULL)) { - (*val) = xmlSchemaNewNOTATIONValue(BAD_CAST localName, - BAD_CAST xmlStrdup(nsName)); + if ((valNeeded) && (val != NULL)) { + (*val) = xmlSchemaNewNOTATIONValue(xmlStrdup(localName), + xmlStrdup(nsName)); if (*val == NULL) ret = -1; } @@ -21856,9 +21966,9 @@ } /************************************************************************ - * * + * * * Validation of identity-constraints (IDC) * - * * + * * ************************************************************************/ /** @@ -21900,6 +22010,20 @@ } /** + * xmlSchemaAugmentImportedIDC: + * @imported: the imported schema + * + * Creates an augmented IDC definition for the imported schema. + */ +static void +xmlSchemaAugmentImportedIDC(xmlSchemaImportPtr imported, xmlSchemaValidCtxtPtr vctxt) { + if (imported->schema->idcDef != NULL) { + xmlHashScan(imported->schema->idcDef , + (xmlHashScanner) xmlSchemaAugmentIDC, vctxt); + } +} + +/** * xmlSchemaIDCNewBinding: * @idcDef: the IDC definition of this binding * @@ -22123,7 +22247,7 @@ if (bind->nodeTable != NULL) xmlFree(bind->nodeTable); if (bind->dupls != NULL) - xmlSchemaItemListFree(bind->dupls); + xmlSchemaItemListFree(bind->dupls); xmlFree(bind); } @@ -22158,12 +22282,12 @@ while (matcher != NULL) { next = matcher->next; - if (matcher->keySeqs != NULL) { + if (matcher->keySeqs != NULL) { int i; for (i = 0; i < matcher->sizeKeySeqs; i++) if (matcher->keySeqs[i] != NULL) xmlFree(matcher->keySeqs[i]); - xmlFree(matcher->keySeqs); + xmlFree(matcher->keySeqs); } if (matcher->targets != NULL) { if (matcher->idcType == XML_SCHEMA_TYPE_IDC_KEYREF) { @@ -22203,7 +22327,7 @@ while (matcher != NULL) { next = matcher->next; - if (matcher->keySeqs != NULL) { + if (matcher->keySeqs != NULL) { int i; /* * Don't free the array, but only the content. @@ -22232,7 +22356,7 @@ } xmlSchemaItemListFree(matcher->targets); matcher->targets = NULL; - } + } matcher->next = NULL; /* * Cache the matcher. @@ -22274,7 +22398,7 @@ sto = vctxt->xpathStatePool; vctxt->xpathStatePool = sto->next; sto->next = NULL; - } else { + } else { /* * Create a new state object. */ @@ -22285,10 +22409,10 @@ return (-1); } memset(sto, 0, sizeof(xmlSchemaIDCStateObj)); - } + } /* - * Add to global list. - */ + * Add to global list. + */ if (vctxt->xpathStates != NULL) sto->next = vctxt->xpathStates; vctxt->xpathStates = sto; @@ -22308,13 +22432,13 @@ VERROR_INT("xmlSchemaIDCAddStateObject", "failed to create an XPath validation context"); return (-1); - } + } sto->type = type; sto->depth = vctxt->depth; sto->matcher = matcher; sto->sel = sel; sto->nbHistory = 0; - + #ifdef DEBUG_IDC xmlGenericError(xmlGenericErrorContext, "IDC: STO push '%s'\n", sto->sel->xpath); @@ -22338,7 +22462,7 @@ { xmlSchemaIDCStateObjPtr sto, head = NULL, first; int res, resolved = 0, depth = vctxt->depth; - + if (vctxt->xpathStates == NULL) return (0); @@ -22347,8 +22471,8 @@ #ifdef DEBUG_IDC { xmlChar *str = NULL; - xmlGenericError(xmlGenericErrorContext, - "IDC: EVAL on %s, depth %d, type %d\n", + xmlGenericError(xmlGenericErrorContext, + "IDC: EVAL on %s, depth %d, type %d\n", xmlSchemaFormatQName(&str, vctxt->inode->nsName, vctxt->inode->localName), depth, nodeType); FREE_AND_NULL(str) @@ -22362,10 +22486,10 @@ while (sto != head) { #ifdef DEBUG_IDC if (sto->type == XPATH_STATE_OBJ_TYPE_IDC_SELECTOR) - xmlGenericError(xmlGenericErrorContext, "IDC: ['%s'] selector '%s'\n", + xmlGenericError(xmlGenericErrorContext, "IDC: ['%s'] selector '%s'\n", sto->matcher->aidc->def->name, sto->sel->xpath); else - xmlGenericError(xmlGenericErrorContext, "IDC: ['%s'] field '%s'\n", + xmlGenericError(xmlGenericErrorContext, "IDC: ['%s'] field '%s'\n", sto->matcher->aidc->def->name, sto->sel->xpath); #endif if (nodeType == XML_ELEMENT_NODE) @@ -22395,7 +22519,7 @@ if (sto->history == NULL) { sto->history = (int *) xmlMalloc(5 * sizeof(int)); if (sto->history == NULL) { - xmlSchemaVErrMemory(NULL, + xmlSchemaVErrMemory(NULL, "allocating the state object history", NULL); return(-1); } @@ -22405,11 +22529,11 @@ sto->history = (int *) xmlRealloc(sto->history, sto->sizeHistory * sizeof(int)); if (sto->history == NULL) { - xmlSchemaVErrMemory(NULL, + xmlSchemaVErrMemory(NULL, "re-allocating the state object history", NULL); return(-1); } - } + } sto->history[sto->nbHistory++] = depth; #ifdef DEBUG_IDC @@ -22478,7 +22602,7 @@ *buf = xmlStrdup(BAD_CAST "["); for (i = 0; i < count; i++) { *buf = xmlStrcat(*buf, BAD_CAST "'"); - res = xmlSchemaGetCanonValueWhtspExt(seq[i]->val, + res = xmlSchemaGetCanonValueWhtspExt(seq[i]->val, xmlSchemaGetWhiteSpaceFacetValue(seq[i]->type), &value); if (res == 0) @@ -22536,7 +22660,7 @@ * * Processes and pops the history items of the IDC state objects. * IDC key-sequences are validated/created on IDC bindings. - * + * * Returns 0 on success and -1 on internal errors. */ static int @@ -22555,13 +22679,13 @@ #ifdef DEBUG_IDC { xmlChar *str = NULL; - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "IDC: BACK on %s, depth %d\n", xmlSchemaFormatQName(&str, vctxt->inode->nsName, vctxt->inode->localName), vctxt->depth); FREE_AND_NULL(str) } -#endif +#endif /* * Evaluate the state objects. */ @@ -22587,14 +22711,14 @@ if (matchDepth != depth) { sto = sto->next; continue; - } + } if (sto->type == XPATH_STATE_OBJ_TYPE_IDC_FIELD) { /* * NOTE: According to * http://www.w3.org/Bugs/Public/show_bug.cgi?id=2198 * ... the simple-content of complex types is also allowed. */ - + if (WXS_IS_COMPLEX(type)) { if (WXS_HAS_SIMPLE_CONTENT(type)) { /* @@ -22609,17 +22733,17 @@ } } else simpleType = NULL; - } else + } else simpleType = type; if (simpleType == NULL) { xmlChar *str = NULL; - + /* * Not qualified if the field resolves to a node of non * simple type. - */ + */ xmlSchemaCustomErr(ACTXT_CAST vctxt, - XML_SCHEMAV_CVC_IDC, NULL, + XML_SCHEMAV_CVC_IDC, NULL, WXS_BASIC_CAST sto->matcher->aidc->def, "The XPath '%s' of a field of %s does evaluate to a node of " "non-simple type", @@ -22629,7 +22753,7 @@ sto->nbHistory--; goto deregister_check; } - + if ((key == NULL) && (vctxt->inode->val == NULL)) { /* * Failed to provide the normalized value; maybe @@ -22645,13 +22769,13 @@ xmlSchemaIDCMatcherPtr matcher = sto->matcher; xmlSchemaPSVIIDCKeyPtr *keySeq; int pos, idx; - + /* * The key will be anchored on the matcher's list of * key-sequences. The position in this list is determined * by the target node's depth relative to the matcher's * depth of creation (i.e. the depth of the scope element). - * + * * Element Depth Pos List-entries * 0 NULL * 1 NULL @@ -22662,23 +22786,23 @@ * The size of the list is only dependant on the depth of * the tree. * An entry will be NULLed in selector_leave, i.e. when - * we hit the target's - */ + * we hit the target's + */ pos = sto->depth - matcher->depth; idx = sto->sel->index; - + /* * Create/grow the array of key-sequences. */ if (matcher->keySeqs == NULL) { - if (pos > 9) + if (pos > 9) matcher->sizeKeySeqs = pos * 2; else matcher->sizeKeySeqs = 10; - matcher->keySeqs = (xmlSchemaPSVIIDCKeyPtr **) + matcher->keySeqs = (xmlSchemaPSVIIDCKeyPtr **) xmlMalloc(matcher->sizeKeySeqs * - sizeof(xmlSchemaPSVIIDCKeyPtr *)); - if (matcher->keySeqs == NULL) { + sizeof(xmlSchemaPSVIIDCKeyPtr *)); + if (matcher->keySeqs == NULL) { xmlSchemaVErrMemory(NULL, "allocating an array of key-sequences", NULL); @@ -22687,9 +22811,9 @@ memset(matcher->keySeqs, 0, matcher->sizeKeySeqs * sizeof(xmlSchemaPSVIIDCKeyPtr *)); - } else if (pos >= matcher->sizeKeySeqs) { + } else if (pos >= matcher->sizeKeySeqs) { int i = matcher->sizeKeySeqs; - + matcher->sizeKeySeqs *= 2; matcher->keySeqs = (xmlSchemaPSVIIDCKeyPtr **) xmlRealloc(matcher->keySeqs, @@ -22705,29 +22829,29 @@ * The array needs to be NULLed. * TODO: Use memset? */ - for (; i < matcher->sizeKeySeqs; i++) - matcher->keySeqs[i] = NULL; + for (; i < matcher->sizeKeySeqs; i++) + matcher->keySeqs[i] = NULL; } - + /* * Get/create the key-sequence. */ - keySeq = matcher->keySeqs[pos]; - if (keySeq == NULL) { + keySeq = matcher->keySeqs[pos]; + if (keySeq == NULL) { goto create_sequence; } else if (keySeq[idx] != NULL) { xmlChar *str = NULL; /* * cvc-identity-constraint: - * 3 For each node in the target node set all + * 3 For each node in the `target node set` all * of the {fields}, with that node as the context * node, evaluate to either an empty node-set or * a node-set with exactly one member, which must * have a simple type. - * + * * The key was already set; report an error. */ - xmlSchemaCustomErr(ACTXT_CAST vctxt, + xmlSchemaCustomErr(ACTXT_CAST vctxt, XML_SCHEMAV_CVC_IDC, NULL, WXS_BASIC_CAST matcher->aidc->def, "The XPath '%s' of a field of %s evaluates to a " @@ -22738,27 +22862,27 @@ sto->nbHistory--; goto deregister_check; } else - goto create_key; - + goto create_key; + create_sequence: /* * Create a key-sequence. */ keySeq = (xmlSchemaPSVIIDCKeyPtr *) xmlMalloc( - matcher->aidc->def->nbFields * + matcher->aidc->def->nbFields * sizeof(xmlSchemaPSVIIDCKeyPtr)); if (keySeq == NULL) { - xmlSchemaVErrMemory(NULL, + xmlSchemaVErrMemory(NULL, "allocating an IDC key-sequence", NULL); - return(-1); - } - memset(keySeq, 0, matcher->aidc->def->nbFields * + return(-1); + } + memset(keySeq, 0, matcher->aidc->def->nbFields * sizeof(xmlSchemaPSVIIDCKeyPtr)); matcher->keySeqs[pos] = keySeq; create_key: /* * Create a key once per node only. - */ + */ if (key == NULL) { key = (xmlSchemaPSVIIDCKeyPtr) xmlMalloc( sizeof(xmlSchemaPSVIIDCKey)); @@ -22767,7 +22891,7 @@ "allocating a IDC key", NULL); xmlFree(keySeq); matcher->keySeqs[pos] = NULL; - return(-1); + return(-1); } /* * Consume the compiled value. @@ -22783,10 +22907,10 @@ return (-1); } } - keySeq[idx] = key; + keySeq[idx] = key; } } else if (sto->type == XPATH_STATE_OBJ_TYPE_IDC_SELECTOR) { - + xmlSchemaPSVIIDCKeyPtr **keySeq = NULL; /* xmlSchemaPSVIIDCBindingPtr bind; */ xmlSchemaPSVIIDCNodePtr ntItem; @@ -22797,22 +22921,22 @@ /* * Here we have the following scenario: * An IDC 'selector' state object resolved to a target node, - * during the time this target node was in the - * ancestor-or-self axis, the 'field' state object(s) looked - * out for matching nodes to create a key-sequence for this + * during the time this target node was in the + * ancestor-or-self axis, the 'field' state object(s) looked + * out for matching nodes to create a key-sequence for this * target node. Now we are back to this target node and need - * to put the key-sequence, together with the target node - * itself, into the node-table of the corresponding IDC + * to put the key-sequence, together with the target node + * itself, into the node-table of the corresponding IDC * binding. */ matcher = sto->matcher; idc = matcher->aidc->def; nbKeys = idc->nbFields; - pos = depth - matcher->depth; + pos = depth - matcher->depth; /* * Check if the matcher has any key-sequences at all, plus * if it has a key-sequence for the current target node. - */ + */ if ((matcher->keySeqs == NULL) || (matcher->sizeKeySeqs <= pos)) { if (idc->type == XML_SCHEMA_TYPE_IDC_KEY) @@ -22820,15 +22944,15 @@ else goto selector_leave; } - - keySeq = &(matcher->keySeqs[pos]); + + keySeq = &(matcher->keySeqs[pos]); if (*keySeq == NULL) { if (idc->type == XML_SCHEMA_TYPE_IDC_KEY) goto selector_key_error; else goto selector_leave; } - + for (i = 0; i < nbKeys; i++) { if ((*keySeq)[i] == NULL) { /* @@ -22839,18 +22963,18 @@ * All fields of a "key" IDC must resolve. */ goto selector_key_error; - } + } goto selector_leave; } } /* * All fields did resolve. */ - + /* * 4.1 If the {identity-constraint category} is unique(/key), - * then no two members of the qualified node set have - * key-sequences whose members are pairwise equal, as + * then no two members of the `qualified node set` have + * `key-sequences` whose members are pairwise equal, as * defined by Equal in [XML Schemas: Datatypes]. * * Get the IDC binding from the matcher and check for @@ -22860,10 +22984,10 @@ bind = xmlSchemaIDCAcquireBinding(vctxt, matcher); #endif targets = xmlSchemaIDCAcquireTargetList(vctxt, matcher); - if ((idc->type != XML_SCHEMA_TYPE_IDC_KEYREF) && + if ((idc->type != XML_SCHEMA_TYPE_IDC_KEYREF) && (targets->nbItems != 0)) { xmlSchemaPSVIIDCKeyPtr ckey, bkey, *bkeySeq; - + i = 0; res = 0; /* @@ -22874,7 +22998,7 @@ ((xmlSchemaPSVIIDCNodePtr) targets->items[i])->keys; for (j = 0; j < nbKeys; j++) { ckey = (*keySeq)[j]; - bkey = bkeySeq[j]; + bkey = bkeySeq[j]; res = xmlSchemaAreValuesEqual(ckey->val, bkey->val); if (res == -1) { return (-1); @@ -22896,10 +23020,10 @@ } while (i < targets->nbItems); if (i != targets->nbItems) { xmlChar *str = NULL, *strB = NULL; - /* + /* * TODO: Try to report the key-sequence. */ - xmlSchemaCustomErr(ACTXT_CAST vctxt, + xmlSchemaCustomErr(ACTXT_CAST vctxt, XML_SCHEMAV_CVC_IDC, NULL, WXS_BASIC_CAST idc, "Duplicate key-sequence %s in %s", @@ -22917,15 +23041,15 @@ ntItem = (xmlSchemaPSVIIDCNodePtr) xmlMalloc( sizeof(xmlSchemaPSVIIDCNode)); if (ntItem == NULL) { - xmlSchemaVErrMemory(NULL, + xmlSchemaVErrMemory(NULL, "allocating an IDC node-table item", NULL); xmlFree(*keySeq); *keySeq = NULL; return(-1); - } + } memset(ntItem, 0, sizeof(xmlSchemaPSVIIDCNode)); - - /* + + /* * Store the node-table item in a global list. */ if (idc->type != XML_SCHEMA_TYPE_IDC_KEYREF) { @@ -22947,7 +23071,7 @@ xmlFree(ntItem); xmlFree(*keySeq); *keySeq = NULL; - return (-1); + return (-1); } } /* @@ -22959,11 +23083,11 @@ ntItem->keys = *keySeq; *keySeq = NULL; #if 0 - if (xmlSchemaIDCAppendNodeTableItem(bind, ntItem) == -1) { + if (xmlSchemaIDCAppendNodeTableItem(bind, ntItem) == -1) #endif if (xmlSchemaItemListAdd(targets, ntItem) == -1) { if (idc->type == XML_SCHEMA_TYPE_IDC_KEYREF) { - /* + /* * Free the item, since keyref items won't be * put on a global list. */ @@ -22972,18 +23096,18 @@ } return (-1); } - + goto selector_leave; selector_key_error: { xmlChar *str = NULL; /* - * 4.2.1 (KEY) The target node set and the - * qualified node set are equal, that is, every - * member of the target node set is also a member - * of the qualified node set and vice versa. + * 4.2.1 (KEY) The `target node set` and the + * `qualified node set` are equal, that is, every + * member of the `target node set` is also a member + * of the `qualified node set` and vice versa. */ - xmlSchemaCustomErr(ACTXT_CAST vctxt, + xmlSchemaCustomErr(ACTXT_CAST vctxt, XML_SCHEMAV_CVC_IDC, NULL, WXS_BASIC_CAST idc, "Not all fields of %s evaluate to a node", @@ -22999,7 +23123,7 @@ *keySeq = NULL; } } /* if selector */ - + sto->nbHistory--; deregister_check: @@ -23050,15 +23174,15 @@ xmlSchemaIDCMatcherPtr matcher, last = NULL; xmlSchemaIDCPtr idc, refIdc; xmlSchemaIDCAugPtr aidc; - + idc = (xmlSchemaIDCPtr) elemDecl->idcs; if (idc == NULL) return (0); - + #ifdef DEBUG_IDC { xmlChar *str = NULL; - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "IDC: REGISTER on %s, depth %d\n", (char *) xmlSchemaFormatQName(&str, vctxt->inode->nsName, vctxt->inode->localName), vctxt->depth); @@ -23099,7 +23223,7 @@ "Could not find an augmented IDC item for an IDC " "definition"); return (-1); - } + } if ((aidc->keyrefDepth == -1) || (vctxt->depth < aidc->keyrefDepth)) aidc->keyrefDepth = vctxt->depth; @@ -23130,10 +23254,10 @@ vctxt->idcMatcherCache = matcher->nextCached; matcher->nextCached = NULL; } else { - matcher = (xmlSchemaIDCMatcherPtr) + matcher = (xmlSchemaIDCMatcherPtr) xmlMalloc(sizeof(xmlSchemaIDCMatcher)); if (matcher == NULL) { - xmlSchemaVErrMemory(vctxt, + xmlSchemaVErrMemory(vctxt, "allocating an IDC matcher", NULL); return (-1); } @@ -23146,16 +23270,16 @@ last = matcher; matcher->type = IDC_MATCHER; - matcher->depth = vctxt->depth; + matcher->depth = vctxt->depth; matcher->aidc = aidc; matcher->idcType = aidc->def->type; -#ifdef DEBUG_IDC +#ifdef DEBUG_IDC xmlGenericError(xmlGenericErrorContext, "IDC: register matcher\n"); -#endif +#endif /* - * Init the automaton state object. + * Init the automaton state object. */ - if (xmlSchemaIDCAddStateObject(vctxt, matcher, + if (xmlSchemaIDCAddStateObject(vctxt, matcher, idc->selector, XPATH_STATE_OBJ_TYPE_IDC_SELECTOR) == -1) return (-1); @@ -23172,7 +23296,7 @@ int res, i, j, k, nbTargets, nbFields, nbDupls, nbNodeTable; xmlSchemaPSVIIDCKeyPtr *keys, *ntkeys; xmlSchemaPSVIIDCNodePtr *targets, *dupls; - + xmlSchemaIDCMatcherPtr matcher = ielem->idcMatchers; /* vctxt->createIDCNodeTables */ while (matcher != NULL) { @@ -23206,7 +23330,7 @@ nbDupls = bind->dupls->nbItems; } else { dupls = NULL; - nbDupls = 0; + nbDupls = 0; } if (bind->nodeTable != NULL) { nbNodeTable = bind->nbNodes; @@ -23219,29 +23343,29 @@ * Transfer all IDC target-nodes to the IDC node-table. */ bind->nodeTable = - (xmlSchemaPSVIIDCNodePtr *) matcher->targets->items; + (xmlSchemaPSVIIDCNodePtr *) matcher->targets->items; bind->sizeNodes = matcher->targets->sizeItems; bind->nbNodes = matcher->targets->nbItems; matcher->targets->items = NULL; matcher->targets->sizeItems = 0; - matcher->targets->nbItems = 0; + matcher->targets->nbItems = 0; } else { /* * Compare the key-sequences and add to the IDC node-table. */ nbTargets = matcher->targets->nbItems; - targets = (xmlSchemaPSVIIDCNodePtr *) matcher->targets->items; + targets = (xmlSchemaPSVIIDCNodePtr *) matcher->targets->items; nbFields = matcher->aidc->def->nbFields; i = 0; do { keys = targets[i]->keys; - if (nbDupls) { + if (nbDupls) { /* * Search in already found duplicates first. */ j = 0; - do { + do { if (nbFields == 1) { res = xmlSchemaAreValuesEqual(keys[0]->val, dupls[j]->keys[0]->val); @@ -23276,11 +23400,11 @@ } } j++; - } while (j < nbDupls); + } while (j < nbDupls); } if (nbNodeTable) { j = 0; - do { + do { if (nbFields == 1) { res = xmlSchemaAreValuesEqual(keys[0]->val, bind->nodeTable[j]->keys[0]->val); @@ -23307,7 +23431,7 @@ goto next_node_table_entry; } } - } + } /* * Add the duplicate to the list of duplicates. */ @@ -23315,7 +23439,7 @@ bind->dupls = xmlSchemaItemListCreate(); if (bind->dupls == NULL) goto internal_error; - } + } if (xmlSchemaItemListAdd(bind->dupls, bind->nodeTable[j]) == -1) goto internal_error; /* @@ -23350,12 +23474,12 @@ } /** - * xmlSchemaBubbleIDCNodeTables: + * xmlSchemaBubbleIDCNodeTables: * @depth: the current tree depth * - * Merges IDC bindings of an element at @depth into the corresponding IDC - * bindings of its parent element. If a duplicate note-table entry is found, - * both, the parent node-table entry and child entry are discarded from the + * Merges IDC bindings of an element at @depth into the corresponding IDC + * bindings of its parent element. If a duplicate note-table entry is found, + * both, the parent node-table entry and child entry are discarded from the * node-table of the parent. * * Returns 0 if OK and -1 on internal errors. @@ -23369,19 +23493,19 @@ xmlSchemaIDCAugPtr aidc; int i, j, k, ret = 0, nbFields, oldNum, oldDupls; - bind = vctxt->inode->idcTable; + bind = vctxt->inode->idcTable; if (bind == NULL) { /* Fine, no table, no bubbles. */ return (0); } - + parTable = &(vctxt->elemInfos[vctxt->depth -1]->idcTable); /* * Walk all bindings; create new or add to existing bindings. * Remove duplicate key-sequences. */ while (bind != NULL) { - + if ((bind->nbNodes == 0) && WXS_ILIST_IS_EMPTY(bind->dupls)) goto next_binding; /* @@ -23391,7 +23515,7 @@ aidc = vctxt->aidcs; do { if (aidc->def == bind->definition) { - if ((aidc->keyrefDepth == -1) || + if ((aidc->keyrefDepth == -1) || (aidc->keyrefDepth >= vctxt->depth)) { goto next_binding; } @@ -23407,7 +23531,7 @@ * Search a matching parent binding for the * IDC definition. */ - while (parBind != NULL) { + while (parBind != NULL) { if (parBind->definition == bind->definition) break; parBind = parBind->next; @@ -23415,7 +23539,7 @@ if (parBind != NULL) { /* - * Compare every node-table entry of the child node, + * Compare every node-table entry of the child node, * i.e. the key-sequence within, ... */ oldNum = parBind->nbNodes; /* Skip newly added items. */ @@ -23425,12 +23549,12 @@ dupls = (xmlSchemaPSVIIDCNodePtr *) parBind->dupls->items; } else { dupls = NULL; - oldDupls = 0; + oldDupls = 0; } - + parNodes = parBind->nodeTable; nbFields = bind->definition->nbFields; - + for (i = 0; i < bind->nbNodes; i++) { node = bind->nodeTable[i]; if (node == NULL) @@ -23440,7 +23564,7 @@ * evaluated to be a duplicate key-sequence. */ if (oldDupls) { - j = 0; + j = 0; while (j < oldDupls) { if (nbFields == 1) { ret = xmlSchemaAreValuesEqual( @@ -23473,12 +23597,12 @@ /* Duplicate found. Skip this entry. */ continue; } - } + } /* * ... and with every key-sequence of the parent node. */ if (oldNum) { - j = 0; + j = 0; while (j < oldNum) { parNode = parNodes[j]; if (nbFields == 1) { @@ -23491,7 +23615,7 @@ j++; continue; } - } else { + } else { for (k = 0; k < nbFields; k++) { ret = xmlSchemaAreValuesEqual( node->keys[k]->val, @@ -23512,20 +23636,20 @@ * Handle duplicates. Move the duplicate in * the parent's node-table to the list of * duplicates. - */ + */ oldNum--; parBind->nbNodes--; /* * Move last old item to pos of duplicate. */ parNodes[j] = parNodes[oldNum]; - + if (parBind->nbNodes != oldNum) { /* - * If new items exist, move last new item to + * If new items exist, move last new item to * last of old items. */ - parNodes[oldNum] = + parNodes[oldNum] = parNodes[parBind->nbNodes]; } if (parBind->dupls == NULL) { @@ -23533,31 +23657,31 @@ if (parBind->dupls == NULL) goto internal_error; } - xmlSchemaItemListAdd(parBind->dupls, parNode); + xmlSchemaItemListAdd(parBind->dupls, parNode); } else { /* - * Add the node-table entry (node and key-sequence) of + * Add the node-table entry (node and key-sequence) of * the child node to the node table of the parent node. */ - if (parBind->nodeTable == NULL) { - parBind->nodeTable = (xmlSchemaPSVIIDCNodePtr *) + if (parBind->nodeTable == NULL) { + parBind->nodeTable = (xmlSchemaPSVIIDCNodePtr *) xmlMalloc(10 * sizeof(xmlSchemaPSVIIDCNodePtr)); if (parBind->nodeTable == NULL) { - xmlSchemaVErrMemory(NULL, + xmlSchemaVErrMemory(NULL, "allocating IDC list of node-table items", NULL); goto internal_error; } parBind->sizeNodes = 1; } else if (parBind->nbNodes >= parBind->sizeNodes) { parBind->sizeNodes *= 2; - parBind->nodeTable = (xmlSchemaPSVIIDCNodePtr *) - xmlRealloc(parBind->nodeTable, parBind->sizeNodes * + parBind->nodeTable = (xmlSchemaPSVIIDCNodePtr *) + xmlRealloc(parBind->nodeTable, parBind->sizeNodes * sizeof(xmlSchemaPSVIIDCNodePtr)); if (parBind->nodeTable == NULL) { - xmlSchemaVErrMemory(NULL, + xmlSchemaVErrMemory(NULL, "re-allocating IDC list of node-table items", NULL); goto internal_error; - } + } } parNodes = parBind->nodeTable; /* @@ -23567,9 +23691,9 @@ parNodes[parBind->nbNodes++] = node; } - } - - } + } + + } } else { /* * No binding for the IDC was found: create a new one and @@ -23578,7 +23702,7 @@ parBind = xmlSchemaIDCNewBinding(bind->definition); if (parBind == NULL) goto internal_error; - + /* * TODO: Hmm, how to optimize the initial number of * allocated entries? @@ -23604,11 +23728,11 @@ /* * Copy the entries. */ - parBind->nodeTable = (xmlSchemaPSVIIDCNodePtr *) + parBind->nodeTable = (xmlSchemaPSVIIDCNodePtr *) xmlMalloc(bind->nbNodes * sizeof(xmlSchemaPSVIIDCNodePtr)); if (parBind->nodeTable == NULL) { - xmlSchemaVErrMemory(NULL, + xmlSchemaVErrMemory(NULL, "allocating an array of IDC node-table " "items", NULL); xmlSchemaIDCFreeBinding(parBind); @@ -23627,15 +23751,17 @@ if (parBind->dupls != NULL) xmlSchemaItemListFree(parBind->dupls); parBind->dupls = bind->dupls; - bind->dupls = NULL; + bind->dupls = NULL; } - if (*parTable == NULL) - *parTable = parBind; - else { - parBind->next = *parTable; - *parTable = parBind; - } - } + if (parTable != NULL) { + if (*parTable == NULL) + *parTable = parBind; + else { + parBind->next = *parTable; + *parTable = parBind; + } + } + } next_binding: bind = bind->next; @@ -23658,7 +23784,7 @@ { xmlSchemaIDCMatcherPtr matcher; xmlSchemaPSVIIDCBindingPtr bind; - + matcher = vctxt->inode->idcMatchers; /* * Find a keyref. @@ -23679,7 +23805,7 @@ */ bind = vctxt->inode->idcTable; while (bind != NULL) { - if ((xmlSchemaIDCPtr) matcher->aidc->def->ref->item == + if ((xmlSchemaIDCPtr) matcher->aidc->def->ref->item == bind->definition) break; bind = bind->next; @@ -23748,7 +23874,7 @@ } } } - + if (res == 0) { xmlChar *str = NULL, *strB = NULL; xmlSchemaKeyrefErr(vctxt, @@ -23770,9 +23896,9 @@ } /************************************************************************ - * * - * XML Reader validation code * - * * + * * + * XML Reader validation code * + * * ************************************************************************/ static xmlSchemaAttrInfoPtr @@ -23832,7 +23958,7 @@ xmlNodePtr attrNode, int nodeLine, const xmlChar *localName, - const xmlChar *nsName, + const xmlChar *nsName, int ownedNames, xmlChar *value, int ownedValue) @@ -23858,7 +23984,7 @@ if (nsName != NULL) { if (xmlStrEqual(localName, BAD_CAST "nil")) { if (xmlStrEqual(attr->nsName, xmlSchemaInstanceNs)) { - attr->metaType = XML_SCHEMA_ATTR_INFO_META_XSI_NIL; + attr->metaType = XML_SCHEMA_ATTR_INFO_META_XSI_NIL; } } else if (xmlStrEqual(localName, BAD_CAST "type")) { if (xmlStrEqual(attr->nsName, xmlSchemaInstanceNs)) { @@ -24060,6 +24186,7 @@ else goto pattern_and_enum; } + /* * Whitespace handling is only of importance for string-based * types. @@ -24070,16 +24197,15 @@ ws = xmlSchemaGetWhiteSpaceFacetValue(type); } else ws = XML_SCHEMA_WHITESPACE_COLLAPSE; + /* * If the value was not computed (for string or * anySimpleType based types), then use the provided * type. */ - if (val == NULL) - valType = valType; - else + if (val != NULL) valType = xmlSchemaGetValType(val); - + ret = 0; for (facetLink = type->facetSet; facetLink != NULL; facetLink = facetLink->next) { @@ -24128,11 +24254,11 @@ ret = 0; for (facetLink = type->facetSet; facetLink != NULL; facetLink = facetLink->next) { - + switch (facetLink->facet->type) { case XML_SCHEMA_FACET_LENGTH: case XML_SCHEMA_FACET_MINLENGTH: - case XML_SCHEMA_FACET_MAXLENGTH: + case XML_SCHEMA_FACET_MAXLENGTH: ret = xmlSchemaValidateListSimpleTypeFacet(facetLink->facet, value, length, NULL); break; @@ -24144,7 +24270,7 @@ "validating against a list type facet"); return (-1); } else if (ret > 0) { - if (fireErrors) + if (fireErrors) xmlSchemaFacetErr(actxt, ret, node, value, length, type, facetLink->facet, NULL, NULL, NULL); else @@ -24221,7 +24347,7 @@ if (facetLink->facet->type != XML_SCHEMA_FACET_PATTERN) continue; found = 1; - /* + /* * NOTE that for patterns, @value needs to be the * normalized vaule. */ @@ -24233,7 +24359,7 @@ "validating against a pattern facet"); return (-1); } else { - /* + /* * Save the last non-validating facet. */ facet = facetLink->facet; @@ -24256,12 +24382,12 @@ return (error); } - + static xmlChar * xmlSchemaNormalizeValue(xmlSchemaTypePtr type, const xmlChar *value) { - switch (xmlSchemaGetWhiteSpaceFacetValue(type)) { + switch (xmlSchemaGetWhiteSpaceFacetValue(type)) { case XML_SCHEMA_WHITESPACE_COLLAPSE: return (xmlSchemaCollapseString(value)); case XML_SCHEMA_WHITESPACE_REPLACE: @@ -24280,7 +24406,7 @@ int ret; const xmlChar *nsName; xmlChar *local, *prefix = NULL; - + ret = xmlValidateQName(value, 1); if (ret != 0) { if (ret == -1) { @@ -24303,7 +24429,7 @@ * - is there a default namespace? */ nsName = xmlSchemaLookupNamespace(vctxt, prefix); - + if (prefix != NULL) { xmlFree(prefix); /* @@ -24360,7 +24486,7 @@ value = normValue; \ isNormalized = 1; \ } - + if ((retVal != NULL) && (*retVal != NULL)) { xmlSchemaFreeValue(*retVal); *retVal = NULL; @@ -24375,14 +24501,14 @@ */ /* * 2.1 If The definition is ENTITY or is validly derived from ENTITY given - * the empty set, as defined in Type Derivation OK (Simple) (3.14.6), then - * the string must be a declared entity name. + * the empty set, as defined in Type Derivation OK (Simple) ($3.14.6), then + * the string must be a `declared entity name`. */ /* * 2.2 If The definition is ENTITIES or is validly derived from ENTITIES - * given the empty set, as defined in Type Derivation OK (Simple) (3.14.6), - * then every whitespace-delimited substring of the string must be a declared - * entity name. + * given the empty set, as defined in Type Derivation OK (Simple) ($3.14.6), + * then every whitespace-delimited substring of the string must be a `declared + * entity name`. */ /* * 2.3 otherwise no further condition applies. @@ -24394,8 +24520,8 @@ if (WXS_IS_ANY_SIMPLE_TYPE(type) || WXS_IS_ATOMIC(type)) { xmlSchemaTypePtr biType; /* The built-in type. */ /* - * SPEC (1.2.1) "if {variety} is atomic then the string must match - * a literal in the lexical space of {base type definition}" + * SPEC (1.2.1) "if {variety} is `atomic` then the string must `match` + * a literal in the `lexical space` of {base type definition}" */ /* * Whitespace-normalize. @@ -24421,9 +24547,9 @@ * NOTATIONs need to be processed here, since they need * to lookup in the hashtable of NOTATION declarations of the schema. */ - if (actxt->type == XML_SCHEMA_CTXT_VALIDATOR) { - switch (biType->builtInType) { - case XML_SCHEMAS_NOTATION: + if (actxt->type == XML_SCHEMA_CTXT_VALIDATOR) { + switch (biType->builtInType) { + case XML_SCHEMAS_NOTATION: ret = xmlSchemaValidateNotation( (xmlSchemaValidCtxtPtr) actxt, ((xmlSchemaValidCtxtPtr) actxt)->schema, @@ -24437,14 +24563,14 @@ /* ws = xmlSchemaGetWhiteSpaceFacetValue(type); */ if (valNeeded) ret = xmlSchemaValPredefTypeNodeNoNorm(biType, - value, &val, NULL); + value, &val, node); else ret = xmlSchemaValPredefTypeNodeNoNorm(biType, - value, NULL, NULL); + value, NULL, node); break; } - } else if (actxt->type == XML_SCHEMA_CTXT_PARSER) { - switch (biType->builtInType) { + } else if (actxt->type == XML_SCHEMA_CTXT_PARSER) { + switch (biType->builtInType) { case XML_SCHEMAS_NOTATION: ret = xmlSchemaValidateNotation(NULL, ((xmlSchemaParserCtxtPtr) actxt)->schema, node, @@ -24459,7 +24585,7 @@ ret = xmlSchemaValPredefTypeNodeNoNorm(biType, value, NULL, node); break; - } + } } else { /* * Validation via a public API is not implemented yet. @@ -24476,7 +24602,7 @@ if (WXS_IS_LIST(type)) ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2; else - ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1; + ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1; } if ((ret == 0) && (type->flags & XML_SCHEMAS_TYPE_HAS_FACETS)) { /* @@ -24491,10 +24617,10 @@ "validating facets of atomic simple type"); goto internal_error; } - if (WXS_IS_LIST(type)) + if (WXS_IS_LIST(type)) ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2; else - ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1; + ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1; } } if (fireErrors && (ret > 0)) @@ -24506,9 +24632,9 @@ xmlChar *tmpValue = NULL; unsigned long len = 0; xmlSchemaValPtr prevVal = NULL, curVal = NULL; - /* 1.2.2 if {variety} is list then the string must be a sequence - * of white space separated tokens, each of which matches a literal - * in the lexical space of {item type definition} + /* 1.2.2 if {variety} is `list` then the string must be a sequence + * of white space separated tokens, each of which `match`es a literal + * in the `lexical space` of {item type definition} */ /* * Note that XML_SCHEMAS_TYPE_NORMVALUENEEDED will be set if @@ -24519,7 +24645,7 @@ * VAL TODO: Optimize validation of empty values. * VAL TODO: We do not have computed values for lists. */ - itemType = WXS_LIST_ITEMTYPE(type); + itemType = WXS_LIST_ITEMTYPE(type); cur = value; do { while (IS_BLANK_CH(*cur)) @@ -24558,7 +24684,7 @@ } ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2; break; - } + } cur = end; } while (*cur != 0); FREE_AND_NULL(tmpValue); @@ -24579,7 +24705,7 @@ } } if (fireErrors && (ret > 0)) { - /* + /* * Report the normalized value. */ normalize = 1; @@ -24589,10 +24715,10 @@ } else if (WXS_IS_UNION(type)) { xmlSchemaTypeLinkPtr memberLink; /* - * TODO: For all datatypes derived by union whiteSpace does - * not apply directly; however, the normalization behavior of union + * TODO: For all datatypes `derived` by `union` whiteSpace does + * not apply directly; however, the normalization behavior of `union` * types is controlled by the value of whiteSpace on that one of the - * memberTypes against which the union is successfully validated. + * `memberTypes` against which the `union` is successfully validated. * * This means that the value is normalized by the first validating * member type, then the facets of the union type are applied. This @@ -24600,8 +24726,8 @@ */ /* - * 1.2.3 if {variety} is union then the string must match a - * literal in the lexical space of at least one member of + * 1.2.3 if {variety} is `union` then the string must `match` a + * literal in the `lexical space` of at least one member of * {member type definitions} */ memberLink = xmlSchemaGetUnionSimpleTypeMemberTypes(type); @@ -24609,7 +24735,7 @@ AERROR_INT("xmlSchemaVCheckCVCSimpleType", "union simple type has no member types"); goto internal_error; - } + } /* * Always normalize union type values, since we currently * cannot store the whitespace information with the value @@ -24617,7 +24743,7 @@ * not possible. */ while (memberLink != NULL) { - if (valNeeded) + if (valNeeded) ret = xmlSchemaVCheckCVCSimpleType(actxt, node, memberLink->type, value, &val, 0, 1, 0); else @@ -24640,9 +24766,9 @@ */ if ((ret == 0) && (type->flags & XML_SCHEMAS_TYPE_HAS_FACETS)) { /* - * The normalization behavior of union types is controlled by - * the value of whiteSpace on that one of the memberTypes - * against which the union is successfully validated. + * The normalization behavior of `union` types is controlled by + * the value of whiteSpace on that one of the `memberTypes` + * against which the `union` is successfully validated. */ NORMALIZE(memberLink->type); ret = xmlSchemaValidateFacets(actxt, node, type, @@ -24654,7 +24780,7 @@ "validating facets of union simple type"); goto internal_error; } - ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3; + ret = XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3; } } if (fireErrors && (ret > 0)) @@ -24802,14 +24928,14 @@ /* * SPEC cvc-elt (3.3.4) : (4.3) (Type Derivation OK) - * "The local type definition must be validly + * "The `local type definition` must be validly * derived from the {type definition} given the union of * the {disallowed substitutions} and the {type definition}'s * {prohibited substitutions}, as defined in - * Type Derivation OK (Complex) (3.4.6) + * Type Derivation OK (Complex) ($3.4.6) * (if it is a complex type definition), * or given {disallowed substitutions} as defined in Type - * Derivation OK (Simple) (3.14.6) (if it is a simple type + * Derivation OK (Simple) ($3.14.6) (if it is a simple type * definition)." * * {disallowed substitutions}: the "block" on the element decl. @@ -24892,9 +25018,9 @@ return (vctxt->err); } if (actualType == NULL) { - VERROR(XML_SCHEMAV_CVC_TYPE_1, NULL, - "The type definition is absent"); - return (XML_SCHEMAV_CVC_TYPE_1); + VERROR(XML_SCHEMAV_CVC_TYPE_1, NULL, + "The type definition is absent"); + return (XML_SCHEMAV_CVC_TYPE_1); } if (vctxt->nbAttrInfos != 0) { int ret; @@ -24984,9 +25110,9 @@ * No actual type definition. */ if (actualType == NULL) { - VERROR(XML_SCHEMAV_CVC_TYPE_1, NULL, - "The type definition is absent"); - return (XML_SCHEMAV_CVC_TYPE_1); + VERROR(XML_SCHEMAV_CVC_TYPE_1, NULL, + "The type definition is absent"); + return (XML_SCHEMAV_CVC_TYPE_1); } /* * Remember the actual type definition. @@ -25069,19 +25195,19 @@ static int xmlSchemaVAttributesComplex(xmlSchemaValidCtxtPtr vctxt) { - xmlSchemaTypePtr type = vctxt->inode->typeDef; + xmlSchemaTypePtr type = vctxt->inode->typeDef; xmlSchemaItemListPtr attrUseList; xmlSchemaAttributeUsePtr attrUse = NULL; xmlSchemaAttributePtr attrDecl = NULL; - xmlSchemaAttrInfoPtr iattr, tmpiattr; + xmlSchemaAttrInfoPtr iattr, tmpiattr; int i, j, found, nbAttrs, nbUses; int xpathRes = 0, res, wildIDs = 0, fixed; xmlNodePtr defAttrOwnerElem = NULL; /* * SPEC (cvc-attribute) - * (1) "The declaration must not be absent (see Missing - * Sub-components (5.3) for how this can fail to be + * (1) "The declaration must not be `absent` (see Missing + * Sub-components ($5.3) for how this can fail to be * the case)." * (2) "Its {type definition} must not be absent." * @@ -25131,15 +25257,15 @@ * use with an {attribute declaration} whose {name} matches * the attribute information item's [local name] and whose * {target namespace} is identical to the attribute information - * item's [namespace name] (where an absent {target namespace} + * item's [namespace name] (where an `absent` {target namespace} * is taken to be identical to a [namespace name] with no value), - * then the attribute information must be valid with respect + * then the attribute information must be `valid` with respect * to that attribute use as per Attribute Locally Valid (Use) - * (3.5.4). In this case the {attribute declaration} of that - * attribute use is the context-determined declaration for the + * ($3.5.4). In this case the {attribute declaration} of that + * attribute use is the `context-determined declaration` for the * attribute information item with respect to Schema-Validity - * Assessment (Attribute) (3.2.4) and - * Assessment Outcome (Attribute) (3.2.5). + * Assessment (Attribute) ($3.2.4) and + * Assessment Outcome (Attribute) ($3.2.5). */ iattr->state = XML_SCHEMAS_ATTR_ASSESSED; iattr->use = attrUse; @@ -25173,7 +25299,7 @@ } tmpiattr->state = XML_SCHEMAS_ATTR_ERR_MISSING; tmpiattr->use = attrUse; - tmpiattr->decl = attrDecl; + tmpiattr->decl = attrDecl; } else if ((attrUse->occurs == XML_SCHEMAS_ATTR_USE_OPTIONAL) && ((attrUse->defValue != NULL) || (attrDecl->defValue != NULL))) { @@ -25198,7 +25324,6 @@ if (vctxt->nbAttrInfos == 0) return (0); - nbUses = vctxt->nbAttrInfos; /* * Validate against the wildcard. */ @@ -25217,13 +25342,13 @@ continue; /* * SPEC (cvc-complex-type) - * (3.2.2) "The attribute information item must be valid with - * respect to it as defined in Item Valid (Wildcard) (3.10.4)." + * (3.2.2) "The attribute information item must be `valid` with + * respect to it as defined in Item Valid (Wildcard) ($3.10.4)." * * SPEC Item Valid (Wildcard) (cvc-wildcard) - * "... its [namespace name] must be valid with respect to + * "... its [namespace name] must be `valid` with respect to * the wildcard constraint, as defined in Wildcard allows - * Namespace Name (3.10.4)." + * Namespace Name ($3.10.4)." */ if (xmlSchemaCheckCVCWildcardNamespace(type->attributeWildcard, iattr->nsName) == 0) { @@ -25259,11 +25384,11 @@ * SPEC (cvc-complex-type) * (5) "Let [Definition:] the wild IDs be the set of * all attribute information item to which clause 3.2 - * applied and whose validation resulted in a - * context-determined declaration of mustFind or no - * context-determined declaration at all, and whose + * applied and whose `validation` resulted in a + * `context-determined declaration` of mustFind or no + * `context-determined declaration` at all, and whose * [local name] and [namespace name] resolve (as - * defined by QName resolution (Instance) (3.15.4)) to + * defined by QName resolution (Instance) ($3.15.4)) to * an attribute declaration whose {type definition} is * or is derived from ID. Then all of the following * must be true:" @@ -25273,7 +25398,7 @@ iattr->typeDef, XML_SCHEMAS_ID)) { /* * SPEC (5.1) "There must be no more than one - * item in wild IDs." + * item in `wild IDs`." */ if (wildIDs != 0) { /* VAL TODO */ @@ -25284,21 +25409,23 @@ wildIDs++; /* * SPEC (cvc-complex-type) - * (5.2) "If wild IDs is non-empty, there must not + * (5.2) "If `wild IDs` is non-empty, there must not * be any attribute uses among the {attribute uses} * whose {attribute declaration}'s {type definition} * is or is derived from ID." */ - for (j = 0; j < attrUseList->nbItems; j++) { - if (xmlSchemaIsDerivedFromBuiltInType( - WXS_ATTRUSE_TYPEDEF(attrUseList->items[j]), - XML_SCHEMAS_ID)) { - /* URGENT VAL TODO: implement */ - iattr->state = XML_SCHEMAS_ATTR_ERR_WILD_AND_USE_ID; - TODO - break; - } - } + if (attrUseList != NULL) { + for (j = 0; j < attrUseList->nbItems; j++) { + if (xmlSchemaIsDerivedFromBuiltInType( + WXS_ATTRUSE_TYPEDEF(attrUseList->items[j]), + XML_SCHEMAS_ID)) { + /* URGENT VAL TODO: implement */ + iattr->state = XML_SCHEMAS_ATTR_ERR_WILD_AND_USE_ID; + TODO + break; + } + } + } } } else if (type->attributeWildcard->processContents == XML_SCHEMAS_ANY_LAX) { @@ -25401,7 +25528,7 @@ * VAL TODO: Should we use the *normalized* value? This currently * uses the *initial* value. */ - + if (defAttrOwnerElem) { xmlChar *normValue; const xmlChar *value; @@ -25419,7 +25546,7 @@ if (xmlNewProp(defAttrOwnerElem, iattr->localName, value) == NULL) { VERROR_INT("xmlSchemaVAttributesComplex", - "callling xmlNewProp()"); + "calling xmlNewProp()"); if (normValue != NULL) xmlFree(normValue); goto internal_error; @@ -25492,9 +25619,9 @@ fixed = 0; /* * SPEC (cvc-attribute) - * (3) "The item's normalized value must be locally valid - * with respect to that {type definition} as per - * String Valid (3.14.4)." + * (3) "The item's `normalized value` must be locally `valid` + * with respect to that {type definition} as per + * String Valid ($3.14.4)." * * VAL TODO: Do we already have the * "normalized attribute value" here? @@ -25514,7 +25641,7 @@ iattr->node, iattr->typeDef, iattr->value, NULL, 1, 0, 0); } - + if (res != 0) { if (res == -1) { VERROR_INT("xmlSchemaVAttributesComplex", @@ -25529,12 +25656,12 @@ goto eval_idcs; } - if (fixed) { + if (fixed) { /* * SPEC Attribute Locally Valid (Use) (cvc-au) - * "For an attribute information item to bevalid + * "For an attribute information item to be `valid` * with respect to an attribute use its *normalized* - * value must match the *canonical* lexical + * value must match the *canonical* lexical * representation of the attribute use's {value * constraint}value, if it is present and fixed." * @@ -25543,7 +25670,7 @@ */ /* * SPEC Attribute Locally Valid (cvc-attribute) - * (4) "The item's *actual* value must match the *value* of + * (4) "The item's *actual* value must match the *value* of * the {value constraint}, if it is present and fixed." */ if (iattr->val == NULL) { @@ -25635,8 +25762,8 @@ xmlSchemaCustomErr(ACTXT_CAST vctxt, XML_SCHEMAV_CVC_AU, NULL, NULL, "The value '%s' does not match the fixed " - "value constraint '%s'", - iattr->value, iattr->vcValue); + "value constraint '%s'", + iattr->value, iattr->vcValue); break; case XML_SCHEMAS_ATTR_ERR_WILD_STRICT_NO_DECL: VERROR(XML_SCHEMAV_CVC_WILDCARD, NULL, @@ -25698,7 +25825,7 @@ xmlSchemaElementPtr decl = NULL; decl = xmlSchemaGetElem(vctxt->schema, - vctxt->inode->localName, vctxt->inode->nsName); + vctxt->inode->localName, vctxt->inode->nsName); if (decl != NULL) { vctxt->inode->decl = decl; return (0); @@ -25756,16 +25883,16 @@ xmlSchemaCheckCOSValidDefault(xmlSchemaValidCtxtPtr vctxt, const xmlChar *value, xmlSchemaValPtr *val) -{ +{ int ret = 0; xmlSchemaNodeInfoPtr inode = vctxt->inode; /* * cos-valid-default: * Schema Component Constraint: Element Default Valid (Immediate) - * For a string to be a valid default with respect to a type + * For a string to be a valid default with respect to a type * definition the appropriate case among the following must be true: - */ + */ if WXS_IS_COMPLEX(inode->typeDef) { /* * Complex type. @@ -25773,8 +25900,8 @@ * SPEC (2.1) "its {content type} must be a simple type definition * or mixed." * SPEC (2.2.2) "If the {content type} is mixed, then the {content - * type}'s particle must be emptiable as defined by - * Particle Emptiable (3.9.6)." + * type}'s particle must be `emptiable` as defined by + * Particle Emptiable ($3.9.6)." */ if ((! WXS_HAS_SIMPLE_CONTENT(inode->typeDef)) && ((! WXS_HAS_MIXED_CONTENT(inode->typeDef)) || @@ -25787,18 +25914,18 @@ "or mixed content and a particle emptiable"); return(ret); } - } + } /* - * 1 If the type definition is a simple type definition, then the string - * must be valid with respect to that definition as defined by String - * Valid (3.14.4). + * 1 If the type definition is a simple type definition, then the string + * must be `valid` with respect to that definition as defined by String + * Valid ($3.14.4). * * AND * - * 2.2.1 If the {content type} is a simple type definition, then the - * string must be valid with respect to that simple type definition - * as defined by String Valid (3.14.4). - */ + * 2.2.1 If the {content type} is a simple type definition, then the + * string must be `valid` with respect to that simple type definition + * as defined by String Valid ($3.14.4). + */ if (WXS_IS_SIMPLE(inode->typeDef)) { ret = xmlSchemaVCheckCVCSimpleType(ACTXT_CAST vctxt, @@ -25812,7 +25939,7 @@ if (ret < 0) { VERROR_INT("xmlSchemaCheckCOSValidDefault", "calling xmlSchemaVCheckCVCSimpleType()"); - } + } return (ret); } @@ -25846,13 +25973,13 @@ static int xmlSchemaValidatorPushElem(xmlSchemaValidCtxtPtr vctxt) -{ +{ vctxt->inode = xmlSchemaGetFreshElemInfo(vctxt); if (vctxt->inode == NULL) { VERROR_INT("xmlSchemaValidatorPushElem", "calling xmlSchemaGetFreshElemInfo()"); return (-1); - } + } vctxt->nbAttrInfos = 0; return (0); } @@ -25875,7 +26002,7 @@ -/* +/* * Process END of element. */ static int @@ -25894,7 +26021,7 @@ */ vctxt->skipDepth = vctxt->depth -1; goto end_elem; - } + } if ((inode->typeDef == NULL) || (inode->flags & XML_SCHEMA_NODE_INFO_ERR_BAD_TYPE)) { /* @@ -25914,8 +26041,8 @@ * Workaround for "anyType". */ if (inode->typeDef->builtInType == XML_SCHEMAS_ANYTYPE) - goto character_content; - + goto character_content; + if ((inode->flags & XML_SCHEMA_ELEM_INFO_ERR_BAD_CONTENT) == 0) { xmlChar *values[10]; int terminal, nbval = 10, nbneg; @@ -25936,16 +26063,30 @@ #ifdef DEBUG_AUTOMATA xmlGenericError(xmlGenericErrorContext, "AUTOMATON create on '%s'\n", inode->localName); -#endif +#endif + } + + /* + * Do not check further content if the node has been nilled + */ + if (INODE_NILLED(inode)) { + ret = 0; +#ifdef DEBUG_AUTOMATA + xmlGenericError(xmlGenericErrorContext, + "AUTOMATON succeeded on nilled '%s'\n", + inode->localName); +#endif + goto skip_nilled; } + /* * Get hold of the still expected content, since a further * call to xmlRegExecPushString() will loose this information. - */ + */ xmlRegExecNextValues(inode->regexCtxt, &nbval, &nbneg, &values[0], &terminal); ret = xmlRegExecPushString(inode->regexCtxt, NULL, NULL); - if (ret <= 0) { + if ((ret<0) || ((ret==0) && (!INODE_NILLED(inode)))) { /* * Still missing something. */ @@ -25975,6 +26116,9 @@ } } + +skip_nilled: + if (inode->typeDef->contentType == XML_SCHEMA_CONTENT_ELEMENTS) goto end_elem; @@ -25991,14 +26135,14 @@ /* * Speedup if no declaration exists. */ - if (WXS_IS_SIMPLE(inode->typeDef)) { + if (WXS_IS_SIMPLE(inode->typeDef)) { ret = xmlSchemaVCheckINodeDataType(vctxt, inode, inode->typeDef, inode->value); } else if (WXS_HAS_SIMPLE_CONTENT(inode->typeDef)) { ret = xmlSchemaVCheckINodeDataType(vctxt, inode, inode->typeDef->contentTypeDef, inode->value); - } + } if (ret < 0) { VERROR_INT("xmlSchemaValidatorPopElem", "calling xmlSchemaVCheckCVCSimpleType()"); @@ -26007,26 +26151,26 @@ goto end_elem; } /* - * cvc-elt (3.3.4) : 5 + * cvc-elt (3.3.4) : 5 * The appropriate case among the following must be true: */ /* - * cvc-elt (3.3.4) : 5.1 - * If the declaration has a {value constraint}, - * the item has neither element nor character [children] and + * cvc-elt (3.3.4) : 5.1 + * If the declaration has a {value constraint}, + * the item has neither element nor character [children] and * clause 3.2 has not applied, then all of the following must be true: */ if ((inode->decl->value != NULL) && - (inode->flags & XML_SCHEMA_ELEM_INFO_EMPTY) && + (inode->flags & XML_SCHEMA_ELEM_INFO_EMPTY) && (! INODE_NILLED(inode))) { /* - * cvc-elt (3.3.4) : 5.1.1 - * If the actual type definition is a local type definition + * cvc-elt (3.3.4) : 5.1.1 + * If the `actual type definition` is a `local type definition` * then the canonical lexical representation of the {value constraint} - * value must be a valid default for the actual type definition as - * defined in Element Default Valid (Immediate) (3.3.6). + * value must be a valid default for the `actual type definition` as + * defined in Element Default Valid (Immediate) ($3.3.6). */ - /* + /* * NOTE: 'local' above means types acquired by xsi:type. * NOTE: Although the *canonical* value is stated, it is not * relevant if canonical or not. Additionally XML Schema 1.1 @@ -26049,22 +26193,22 @@ * (see following). */ goto default_psvi; - } + } /* - * cvc-elt (3.3.4) : 5.1.2 - * The element information item with the canonical lexical - * representation of the {value constraint} value used as its - * normalized value must be valid with respect to the - * actual type definition as defined by Element Locally Valid (Type) - * (3.3.4). - */ + * cvc-elt (3.3.4) : 5.1.2 + * The element information item with the canonical lexical + * representation of the {value constraint} value used as its + * `normalized value` must be `valid` with respect to the + * `actual type definition` as defined by Element Locally Valid (Type) + * ($3.3.4). + */ if (WXS_IS_SIMPLE(inode->typeDef)) { ret = xmlSchemaVCheckINodeDataType(vctxt, inode, inode->typeDef, inode->decl->value); } else if (WXS_HAS_SIMPLE_CONTENT(inode->typeDef)) { ret = xmlSchemaVCheckINodeDataType(vctxt, inode, inode->typeDef->contentTypeDef, - inode->decl->value); + inode->decl->value); } if (ret != 0) { if (ret < 0) { @@ -26085,7 +26229,7 @@ xmlChar *normValue; /* * VAL TODO: Normalize the value. - */ + */ normValue = xmlSchemaNormalizeValue(inode->typeDef, inode->decl->value); if (normValue != NULL) { @@ -26098,42 +26242,42 @@ "calling xmlNewText()"); goto internal_error; } else - xmlAddChild(inode->node, textChild); + xmlAddChild(inode->node, textChild); } - - } else if (! INODE_NILLED(inode)) { + + } else if (! INODE_NILLED(inode)) { /* - * 5.2.1 The element information item must be valid with respect - * to the actual type definition as defined by Element Locally - * Valid (Type) (3.3.4). - */ + * 5.2.1 The element information item must be `valid` with respect + * to the `actual type definition` as defined by Element Locally + * Valid (Type) ($3.3.4). + */ if (WXS_IS_SIMPLE(inode->typeDef)) { /* * SPEC (cvc-type) (3.1) * "If the type definition is a simple type definition, ..." * (3.1.3) "If clause 3.2 of Element Locally Valid - * (Element) (3.3.4) did not apply, then the normalized value - * must be valid with respect to the type definition as defined - * by String Valid (3.14.4). - */ + * (Element) ($3.3.4) did not apply, then the `normalized value` + * must be `valid` with respect to the type definition as defined + * by String Valid ($3.14.4). + */ ret = xmlSchemaVCheckINodeDataType(vctxt, inode, inode->typeDef, inode->value); } else if (WXS_HAS_SIMPLE_CONTENT(inode->typeDef)) { /* * SPEC (cvc-type) (3.2) "If the type definition is a complex type * definition, then the element information item must be - * valid with respect to the type definition as per - * Element Locally Valid (Complex Type) (3.4.4);" + * `valid` with respect to the type definition as per + * Element Locally Valid (Complex Type) ($3.4.4);" * * SPEC (cvc-complex-type) (2.2) - * "If the {content type} is a simple type definition, ... - * the normalized value of the element information item is - * valid with respect to that simple type definition as - * defined by String Valid (3.14.4)." + * "If the {content type} is a simple type definition, ... + * the `normalized value` of the element information item is + * `valid` with respect to that simple type definition as + * defined by String Valid ($3.14.4)." */ ret = xmlSchemaVCheckINodeDataType(vctxt, inode, inode->typeDef->contentTypeDef, inode->value); - } + } if (ret != 0) { if (ret < 0) { VERROR_INT("xmlSchemaValidatorPopElem", @@ -26143,7 +26287,7 @@ goto end_elem; } /* - * 5.2.2 If there is a fixed {value constraint} and clause 3.2 has + * 5.2.2 If there is a fixed {value constraint} and clause 3.2 has * not applied, all of the following must be true: */ if ((inode->decl->value != NULL) && @@ -26154,7 +26298,7 @@ * done on computed values. */ /* - * 5.2.2.1 The element information item must have no element + * 5.2.2.1 The element information item must have no element * information item [children]. */ if (inode->flags & @@ -26166,28 +26310,28 @@ goto end_elem; } else { /* - * 5.2.2.2 The appropriate case among the following must + * 5.2.2.2 The appropriate case among the following must * be true: - */ + */ if (WXS_HAS_MIXED_CONTENT(inode->typeDef)) { /* - * 5.2.2.2.1 If the {content type} of the actual type - * definition is mixed, then the *initial value* of the - * item must match the canonical lexical representation + * 5.2.2.2.1 If the {content type} of the `actual type + * definition` is mixed, then the *initial value* of the + * item must match the canonical lexical representation * of the {value constraint} value. * - * ... the *initial value* of an element information - * item is the string composed of, in order, the - * [character code] of each character information item in + * ... the *initial value* of an element information + * item is the string composed of, in order, the + * [character code] of each character information item in * the [children] of that element information item. - */ + */ if (! xmlStrEqual(inode->value, inode->decl->value)){ - /* + /* * VAL TODO: Report invalid & expected values as well. * VAL TODO: Implement the canonical stuff. */ ret = XML_SCHEMAV_CVC_ELT_5_2_2_2_1; - xmlSchemaCustomErr(ACTXT_CAST vctxt, + xmlSchemaCustomErr(ACTXT_CAST vctxt, ret, NULL, NULL, "The initial value '%s' does not match the fixed " "value constraint '%s'", @@ -26196,9 +26340,9 @@ } } else if (WXS_HAS_SIMPLE_CONTENT(inode->typeDef)) { /* - * 5.2.2.2.2 If the {content type} of the actual type - * definition is a simple type definition, then the - * *actual value* of the item must match the canonical + * 5.2.2.2.2 If the {content type} of the `actual type + * definition` is a simple type definition, then the + * *actual value* of the item must match the canonical * lexical representation of the {value constraint} value. */ /* @@ -26213,16 +26357,16 @@ xmlSchemaCustomErr(ACTXT_CAST vctxt, ret, NULL, NULL, "The actual value '%s' does not match the fixed " - "value constraint '%s'", + "value constraint '%s'", inode->value, inode->decl->value); goto end_elem; - } + } } - } + } } } - + end_elem: if (vctxt->depth < 0) { /* TODO: raise error? */ @@ -26232,15 +26376,15 @@ vctxt->skipDepth = -1; /* * Evaluate the history of XPath state objects. - */ + */ if (inode->appliedXPath && (xmlSchemaXPathProcessHistory(vctxt, vctxt->depth) == -1)) goto internal_error; /* * MAYBE TODO: - * SPEC (6) "The element information item must be valid with + * SPEC (6) "The element information item must be `valid` with * respect to each of the {identity-constraint definitions} as per - * Identity-constraint Satisfied (3.11.4)." + * Identity-constraint Satisfied ($3.11.4)." */ /* * PSVI TODO: If we expose IDC node-tables via PSVI then the tables @@ -26248,7 +26392,7 @@ * We will currently build IDC node-tables and bubble them only if * keyrefs do exist. */ - + /* * Add the current IDC target-nodes to the IDC node-tables. */ @@ -26282,7 +26426,7 @@ */ if (xmlSchemaBubbleIDCNodeTables(vctxt) == -1) goto internal_error; - } + } } /* * Clear the current ielem. @@ -26315,11 +26459,11 @@ aidc = aidc->next; } while (aidc != NULL); } - vctxt->depth--; + vctxt->depth--; vctxt->inode = vctxt->elemInfos[vctxt->depth]; /* - * VAL TODO: 7 If the element information item is the validation root, it must be - * valid per Validation Root Valid (ID/IDREF) (3.3.4). + * VAL TODO: 7 If the element information item is the `validation root`, it must be + * `valid` per Validation Root Valid (ID/IDREF) ($3.3.4). */ return (ret); @@ -26400,11 +26544,11 @@ * Fallback to "anyType". * * SPEC (cvc-assess-elt) - * "If the item cannot be strictly assessed, [...] + * "If the item cannot be `strictly assessed`, [...] * an element information item's schema validity may be laxly - * assessed if its context-determined declaration is not - * skip by validating with respect to the ur-type - * definition as per Element Locally Valid (Type) (3.3.4)." + * assessed if its `context-determined declaration` is not + * skip by `validating` with respect to the `ur-type + * definition` as per Element Locally Valid (Type) ($3.3.4)." */ vctxt->inode->typeDef = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYTYPE); @@ -26476,9 +26620,9 @@ * SPEC (2.4) "If the {content type} is element-only or mixed, * then the sequence of the element information item's * element information item [children], if any, taken in - * order, is valid with respect to the {content type}'s + * order, is `valid` with respect to the {content type}'s * particle, as defined in Element Sequence Locally Valid - * (Particle) (3.9.4)." + * (Particle) ($3.9.4)." */ ret = xmlRegExecPushString2(regexCtxt, vctxt->inode->localName, @@ -26575,7 +26719,7 @@ if (consumed != NULL) *consumed = 0; if (INODE_NILLED(vctxt->inode)) { - /* + /* * SPEC cvc-elt (3.3.4 - 3.2.1) * "The element information item must have no character or * element information item [children]." @@ -26591,7 +26735,7 @@ * information item [children]." */ if (vctxt->inode->typeDef->contentType == - XML_SCHEMA_CONTENT_EMPTY) { + XML_SCHEMA_CONTENT_EMPTY) { VERROR(XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1, NULL, "Character content is not allowed, " "because the content type is empty"); @@ -26602,12 +26746,12 @@ XML_SCHEMA_CONTENT_ELEMENTS) { if ((nodeType != XML_TEXT_NODE) || (! xmlSchemaIsBlank((xmlChar *) value, len))) { - /* - * SPEC cvc-complex-type (2.3) - * "If the {content type} is element-only, then the - * element information item has no character information - * item [children] other than those whose [character - * code] is defined as a white space in [XML 1.0 (Second + /* + * SPEC cvc-complex-type (2.3) + * "If the {content type} is element-only, then the + * element information item has no character information + * item [children] other than those whose [character + * code] is defined as a white space in [XML 1.0 (Second * Edition)]." */ VERROR(XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3, NULL, @@ -26617,7 +26761,7 @@ } return (0); } - + if ((value == NULL) || (value[0] == 0)) return (0); /* @@ -26629,7 +26773,7 @@ ((vctxt->inode->decl == NULL) || (vctxt->inode->decl->value == NULL))) return (0); - + if (vctxt->inode->value == NULL) { /* * Set the value. @@ -26672,7 +26816,7 @@ len = xmlStrlen(value); /* * Concat the value. - */ + */ if (vctxt->inode->flags & XML_SCHEMA_NODE_INFO_FLAG_OWNED_VALUES) { vctxt->inode->value = BAD_CAST xmlStrncat( (xmlChar *) vctxt->inode->value, value, len); @@ -26681,7 +26825,7 @@ BAD_CAST xmlStrncatNew(vctxt->inode->value, value, len); vctxt->inode->flags |= XML_SCHEMA_NODE_INFO_FLAG_OWNED_VALUES; } - } + } return (0); } @@ -26698,7 +26842,7 @@ goto internal_error; } if (vctxt->xsiAssemble) { - /* + /* * We will stop validation if there was an error during * dynamic schema construction. * Note that we simply set @skipDepth to 0, this could @@ -26715,6 +26859,11 @@ vctxt->skipDepth = 0; return(ret); } + /* + * Augment the IDC definitions for the main schema and all imported ones + * NOTE: main schema is the first in the imported list + */ + xmlHashScan(vctxt->schema->schemasImports,(xmlHashScanner)xmlSchemaAugmentImportedIDC, vctxt); } if (vctxt->depth > 0) { /* @@ -26808,15 +26957,15 @@ if (vctxt->inode->typeDef == NULL) { vctxt->inode->flags |= XML_SCHEMA_NODE_INFO_ERR_BAD_TYPE; ret = XML_SCHEMAV_CVC_TYPE_1; - VERROR(ret, NULL, - "The type definition is absent"); + VERROR(ret, NULL, + "The type definition is absent"); goto exit; - } + } if (vctxt->inode->typeDef->flags & XML_SCHEMAS_TYPE_ABSTRACT) { vctxt->inode->flags |= XML_SCHEMA_NODE_INFO_ERR_BAD_TYPE; ret = XML_SCHEMAV_CVC_TYPE_2; - VERROR(ret, NULL, - "The type definition is abstract"); + VERROR(ret, NULL, + "The type definition is abstract"); goto exit; } /* @@ -26897,7 +27046,7 @@ nodeType = xmlTextReaderNodeType(vctxt->reader); if (nodeType == XML_ELEMENT_NODE) { - + vctxt->depth++; if (xmlSchemaValidatorPushElem(vctxt) == -1) { VERROR_INT("xmlSchemaVReaderWalk", @@ -27063,17 +27212,17 @@ #endif /************************************************************************ - * * - * SAX validation handlers * - * * + * * + * SAX validation handlers * + * * ************************************************************************/ /* * Process text content. */ static void -xmlSchemaSAXHandleText(void *ctx, - const xmlChar * ch, +xmlSchemaSAXHandleText(void *ctx, + const xmlChar * ch, int len) { xmlSchemaValidCtxtPtr vctxt = (xmlSchemaValidCtxtPtr) ctx; @@ -27097,10 +27246,10 @@ * Process CDATA content. */ static void -xmlSchemaSAXHandleCDataSection(void *ctx, - const xmlChar * ch, +xmlSchemaSAXHandleCDataSection(void *ctx, + const xmlChar * ch, int len) -{ +{ xmlSchemaValidCtxtPtr vctxt = (xmlSchemaValidCtxtPtr) ctx; if (vctxt->depth < 0) @@ -27134,20 +27283,20 @@ static void xmlSchemaSAXHandleStartElementNs(void *ctx, - const xmlChar * localname, - const xmlChar * prefix ATTRIBUTE_UNUSED, - const xmlChar * URI, - int nb_namespaces, - const xmlChar ** namespaces, - int nb_attributes, - int nb_defaulted ATTRIBUTE_UNUSED, + const xmlChar * localname, + const xmlChar * prefix ATTRIBUTE_UNUSED, + const xmlChar * URI, + int nb_namespaces, + const xmlChar ** namespaces, + int nb_attributes, + int nb_defaulted ATTRIBUTE_UNUSED, const xmlChar ** attributes) -{ +{ xmlSchemaValidCtxtPtr vctxt = (xmlSchemaValidCtxtPtr) ctx; int ret; xmlSchemaNodeInfoPtr ielem; int i, j; - + /* * SAX VAL TODO: What to do with nb_defaulted? */ @@ -27175,16 +27324,16 @@ ielem->flags |= XML_SCHEMA_ELEM_INFO_EMPTY; /* * Register namespaces on the elem info. - */ + */ if (nb_namespaces != 0) { /* * Although the parser builds its own namespace list, * we have no access to it, so we'll use an own one. */ - for (i = 0, j = 0; i < nb_namespaces; i++, j += 2) { + for (i = 0, j = 0; i < nb_namespaces; i++, j += 2) { /* * Store prefix and namespace name. - */ + */ if (ielem->nsBindings == NULL) { ielem->nsBindings = (const xmlChar **) xmlMalloc(10 * @@ -27220,7 +27369,7 @@ } else ielem->nsBindings[ielem->nbNsBindings * 2 + 1] = namespaces[j+1]; - ielem->nbNsBindings++; + ielem->nbNsBindings++; } } /* @@ -27234,7 +27383,7 @@ for (j = 0, i = 0; i < nb_attributes; i++, j += 5) { /* * Duplicate the value. - */ + */ value = xmlStrndup(attributes[j+3], attributes[j+4] - attributes[j+3]); /* @@ -27261,7 +27410,7 @@ goto internal_error; } goto exit; - } + } exit: return; @@ -27316,9 +27465,9 @@ } /************************************************************************ - * * - * Validation interfaces * - * * + * * + * Validation interfaces * + * * ************************************************************************/ /** @@ -27348,8 +27497,28 @@ } /** + * xmlSchemaValidateSetFilename: + * @vctxt: the schema validation context + * @filename: the file name + * + * Workaround to provide file error reporting information when this is + * not provided by current APIs + */ +void +xmlSchemaValidateSetFilename(xmlSchemaValidCtxtPtr vctxt, const char *filename) { + if (vctxt == NULL) + return; + if (vctxt->filename != NULL) + xmlFree(vctxt->filename); + if (filename != NULL) + vctxt->filename = (char *) xmlStrdup((const xmlChar *) filename); + else + vctxt->filename = NULL; +} + +/** * xmlSchemaClearValidCtxt: - * @ctxt: the schema validation context + * @vctxt: the schema validation context * * Free the resources associated to the schema validation context; * leaves some fields alive intended for reuse of the context. @@ -27371,7 +27540,7 @@ #ifdef LIBXML_READER_ENABLED vctxt->reader = NULL; #endif - vctxt->hasKeyrefs = 0; + vctxt->hasKeyrefs = 0; if (vctxt->value != NULL) { xmlSchemaFreeValue(vctxt->value); @@ -27441,7 +27610,7 @@ break; xmlSchemaClearElemInfo(vctxt, ei); } - } + } xmlSchemaItemListClear(vctxt->nodeQNames); /* Recreate the dict. */ xmlDictFree(vctxt->dict); @@ -27450,6 +27619,11 @@ * where the user provides the dict? */ vctxt->dict = xmlDictCreate(); + + if (vctxt->filename != NULL) { + xmlFree(vctxt->filename); + vctxt->filename = NULL; + } } /** @@ -27535,6 +27709,8 @@ xmlSchemaItemListFree(ctxt->nodeQNames); if (ctxt->dict != NULL) xmlDictFree(ctxt->dict); + if (ctxt->filename != NULL) + xmlFree(ctxt->filename); xmlFree(ctxt); } @@ -27543,7 +27719,7 @@ * @ctxt: the schema validation context * * Check if any error was detected during validation. - * + * * Returns 1 if valid so far, 0 if errors were detected, and -1 in case * of internal error. */ @@ -27602,7 +27778,7 @@ /** * xmlSchemaGetValidErrors: - * @ctxt: a XML-Schema validation context + * @ctxt: a XML-Schema validation context * @err: the error function result * @warn: the warning function result * @ctx: the functions context result @@ -27663,7 +27839,7 @@ /** * xmlSchemaValidCtxtGetOptions: - * @ctxt: a schema validation context + * @ctxt: a schema validation context * * Get the validation context options. * @@ -27689,7 +27865,10 @@ const xmlChar *nsName; /* DOC VAL TODO: Move this to the start function. */ - valRoot = xmlDocGetRootElement(vctxt->doc); + if (vctxt->validationRoot != NULL) + valRoot = vctxt->validationRoot; + else + valRoot = xmlDocGetRootElement(vctxt->doc); if (valRoot == NULL) { /* VAL TODO: Error code? */ VERROR(1, NULL, "The document has no document element"); @@ -27731,7 +27910,7 @@ nsName = NULL; ret = xmlSchemaValidatorPushAttribute(vctxt, (xmlNodePtr) attr, - /* + /* * Note that we give it the line number of the * parent element. */ @@ -27787,7 +27966,7 @@ (node->type == XML_ENTITY_REF_NODE)) { /* * DOC VAL TODO: What to do with entities? - */ + */ VERROR_INT("xmlSchemaVDocWalk", "there is at least one entity reference in the node-tree " "currently being validated. Processing of entities with " @@ -27847,7 +28026,7 @@ xmlSchemaPreRun(xmlSchemaValidCtxtPtr vctxt) { /* * Some initialization. - */ + */ vctxt->err = 0; vctxt->nberrors = 0; vctxt->depth = -1; @@ -27864,9 +28043,9 @@ */ if (vctxt->schema == NULL) { xmlSchemaParserCtxtPtr pctxt; - + vctxt->xsiAssemble = 1; - /* + /* * If not schema was given then we will create a schema * dynamically using XSI schema locations. * @@ -27882,8 +28061,8 @@ */ vctxt->schema = xmlSchemaNewSchema(pctxt); if (vctxt->schema == NULL) - return (-1); - /* + return (-1); + /* * Create the schema construction context. */ pctxt->constructor = xmlSchemaConstructionCtxtCreate(pctxt->dict); @@ -27894,14 +28073,13 @@ * Take ownership of the constructor to be able to free it. */ pctxt->ownsConstructor = 1; - } + } /* - * Augment the IDC definitions. + * Augment the IDC definitions for the main schema and all imported ones + * NOTE: main schema if the first in the imported list */ - if (vctxt->schema->idcDef != NULL) { - xmlHashScan(vctxt->schema->idcDef, - (xmlHashScanner) xmlSchemaAugmentIDC, vctxt); - } + xmlHashScan(vctxt->schema->schemasImports,(xmlHashScanner)xmlSchemaAugmentImportedIDC, vctxt); + return(0); } @@ -28011,9 +28189,9 @@ /************************************************************************ - * * - * Function and data for SAX streaming API * - * * + * * + * Function and data for SAX streaming API * + * * ************************************************************************/ typedef struct _xmlSchemaSplitSAXData xmlSchemaSplitSAXData; typedef xmlSchemaSplitSAXData *xmlSchemaSplitSAXDataPtr; @@ -28089,8 +28267,8 @@ { xmlSchemaSAXPlugPtr ctxt = (xmlSchemaSAXPlugPtr) ctx; if ((ctxt != NULL) && (ctxt->user_sax != NULL) && - (ctxt->user_sax->internalSubset != NULL)) - ctxt->user_sax->internalSubset(ctxt->user_data, name, ExternalID, + (ctxt->user_sax->externalSubset != NULL)) + ctxt->user_sax->externalSubset(ctxt->user_data, name, ExternalID, SystemID); } @@ -28296,8 +28474,8 @@ if (ctxt == NULL) return; if ((ctxt->user_sax != NULL) && - (ctxt->user_sax->ignorableWhitespace != NULL)) - ctxt->user_sax->ignorableWhitespace(ctxt->user_data, value, len); + (ctxt->user_sax->cdataBlock != NULL)) + ctxt->user_sax->cdataBlock(ctxt->user_data, value, len); if (ctxt->ctxt != NULL) xmlSchemaSAXHandleCDataSection(ctxt->ctxt, value, len); } @@ -28316,10 +28494,10 @@ } static void -startElementNsSplit(void *ctx, const xmlChar * localname, - const xmlChar * prefix, const xmlChar * URI, - int nb_namespaces, const xmlChar ** namespaces, - int nb_attributes, int nb_defaulted, +startElementNsSplit(void *ctx, const xmlChar * localname, + const xmlChar * prefix, const xmlChar * URI, + int nb_namespaces, const xmlChar ** namespaces, + int nb_attributes, int nb_defaulted, const xmlChar ** attributes) { xmlSchemaSAXPlugPtr ctxt = (xmlSchemaSAXPlugPtr) ctx; if (ctxt == NULL) @@ -28338,7 +28516,7 @@ } static void -endElementNsSplit(void *ctx, const xmlChar * localname, +endElementNsSplit(void *ctx, const xmlChar * localname, const xmlChar * prefix, const xmlChar * URI) { xmlSchemaSAXPlugPtr ctxt = (xmlSchemaSAXPlugPtr) ctx; if (ctxt == NULL) @@ -28379,7 +28557,7 @@ old_sax = *sax; if ((old_sax != NULL) && (old_sax->initialized != XML_SAX2_MAGIC)) return(NULL); - if ((old_sax != NULL) && + if ((old_sax != NULL) && (old_sax->startElementNs == NULL) && (old_sax->endElementNs == NULL) && ((old_sax->startElement != NULL) || (old_sax->endElement != NULL))) return(NULL); @@ -28397,7 +28575,7 @@ ret->ctxt = ctxt; ret->user_sax_ptr = sax; ret->user_sax = old_sax; - if (old_sax == NULL) { + if (old_sax == NULL) { /* * go direct, no need for the split block and functions. */ @@ -28418,7 +28596,7 @@ } else { /* * for each callback unused by Schemas initialize it to the Split - * routine only if non NULL in the user block, this can speed up + * routine only if non NULL in the user block, this can speed up * things at the SAX level. */ if (old_sax->internalSubset != NULL) @@ -28530,6 +28708,63 @@ } /** + * xmlSchemaValidateSetLocator: + * @vctxt: a schema validation context + * @f: the locator function pointer + * @ctxt: the locator context + * + * Allows to set a locator function to the validation context, + * which will be used to provide file and line information since + * those are not provided as part of the SAX validation flow + * Setting @f to NULL disable the locator. + */ + +void +xmlSchemaValidateSetLocator(xmlSchemaValidCtxtPtr vctxt, + xmlSchemaValidityLocatorFunc f, + void *ctxt) +{ + if (vctxt == NULL) return; + vctxt->locFunc = f; + vctxt->locCtxt = ctxt; +} + +/** + * xmlSchemaValidateStreamLocator: + * @ctx: the xmlTextReaderPtr used + * @file: returned file information + * @line: returned line information + * + * Internal locator function for the readers + * + * Returns 0 in case the Schema validation could be (des)activated and + * -1 in case of error. + */ +static int +xmlSchemaValidateStreamLocator(void *ctx, const char **file, + unsigned long *line) { + xmlParserCtxtPtr ctxt; + + if ((ctx == NULL) || ((file == NULL) && (line == NULL))) + return(-1); + + if (file != NULL) + *file = NULL; + if (line != NULL) + *line = 0; + + ctxt = (xmlParserCtxtPtr) ctx; + if (ctxt->input != NULL) { + if (file != NULL) + *file = ctxt->input->filename; + if (line != NULL) + *line = ctxt->input->line; + return(0); + } + return(-1); +} + +/** * xmlSchemaValidateStream: * @ctxt: a schema validation context * @input: the input to use for reading the data @@ -28571,7 +28806,8 @@ if (options) xmlCtxtUseOptions(pctxt, options); #endif - pctxt->linenumbers = 1; + pctxt->linenumbers = 1; + xmlSchemaValidateSetLocator(ctxt, xmlSchemaValidateStreamLocator, pctxt); inputStream = xmlNewIOInputStream(pctxt, input, enc);; if (inputStream == NULL) { @@ -28600,7 +28836,7 @@ ret = ctxt->parserCtxt->errNo; if (ret == 0) ret = 1; - } + } done: ctxt->parserCtxt = NULL; @@ -28639,16 +28875,33 @@ if ((ctxt == NULL) || (filename == NULL)) return (-1); - + input = xmlParserInputBufferCreateFilename(filename, XML_CHAR_ENCODING_NONE); if (input == NULL) return (-1); ret = xmlSchemaValidateStream(ctxt, input, XML_CHAR_ENCODING_NONE, - NULL, NULL); + NULL, NULL); return (ret); } +/** + * xmlSchemaValidCtxtGetParserCtxt: + * @ctxt: a schema validation context + * + * allow access to the parser context of the schema validation context + * + * Returns the parser context of the schema validation context or NULL + * in case of error. + */ +xmlParserCtxtPtr +xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxtPtr ctxt) +{ + if (ctxt == NULL) + return(NULL); + return (ctxt->parserCtxt); +} + #define bottom_xmlschemas #include "elfgcchack.h" #endif /* LIBXML_SCHEMAS_ENABLED */ diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlschemas.in.h gettext-0.19.7/gnulib-local/lib/libxml/xmlschemas.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xmlschemas.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlschemas.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -56,7 +56,7 @@ /* * ATTENTION: Change xmlSchemaSetValidOptions's check -* for invalid values, if adding to the validation +* for invalid values, if adding to the validation * options below. */ /** @@ -85,30 +85,65 @@ typedef xmlSchema *xmlSchemaPtr; /** - * A schemas validation context + * xmlSchemaValidityErrorFunc: + * @ctx: the validation context + * @msg: the message + * @...: extra arguments + * + * Signature of an error callback from an XSD validation + */ +typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) + (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); + +/** + * xmlSchemaValidityWarningFunc: + * @ctx: the validation context + * @msg: the message + * @...: extra arguments + * + * Signature of a warning callback from an XSD validation */ -typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...); -typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...); +typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) + (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); +/** + * A schemas validation context + */ typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt; typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr; typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt; typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr; +/** + * xmlSchemaValidityLocatorFunc: + * @ctx: user provided context + * @file: returned file information + * @line: returned line information + * + * A schemas validation locator, a callback called by the validator. + * This is used when file or node informations are not available + * to find out what file and line number are affected + * + * Returns: 0 in case of success and -1 in case of error + */ + +typedef int (XMLCDECL *xmlSchemaValidityLocatorFunc) (void *ctx, + const char **file, unsigned long *line); + /* * Interfaces for parsing. */ -XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL +XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL xmlSchemaNewParserCtxt (const char *URL); -XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL +XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL xmlSchemaNewMemParserCtxt (const char *buffer, int size); XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL xmlSchemaNewDocParserCtxt (xmlDocPtr doc); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSchemaFreeParserCtxt (xmlSchemaParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSchemaSetParserErrors (xmlSchemaParserCtxtPtr ctxt, xmlSchemaValidityErrorFunc err, xmlSchemaValidityWarningFunc warn, @@ -125,19 +160,19 @@ XMLPUBFUN int XMLCALL xmlSchemaIsValid (xmlSchemaValidCtxtPtr ctxt); -XMLPUBFUN xmlSchemaPtr XMLCALL +XMLPUBFUN xmlSchemaPtr XMLCALL xmlSchemaParse (xmlSchemaParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSchemaFree (xmlSchemaPtr schema); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSchemaDump (FILE *output, xmlSchemaPtr schema); #endif /* LIBXML_OUTPUT_ENABLED */ /* * Interfaces for validating */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSchemaSetValidErrors (xmlSchemaValidCtxtPtr ctxt, xmlSchemaValidityErrorFunc err, xmlSchemaValidityWarningFunc warn, @@ -154,14 +189,17 @@ XMLPUBFUN int XMLCALL xmlSchemaSetValidOptions (xmlSchemaValidCtxtPtr ctxt, int options); +XMLPUBFUN void XMLCALL + xmlSchemaValidateSetFilename(xmlSchemaValidCtxtPtr vctxt, + const char *filename); XMLPUBFUN int XMLCALL xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt); -XMLPUBFUN xmlSchemaValidCtxtPtr XMLCALL +XMLPUBFUN xmlSchemaValidCtxtPtr XMLCALL xmlSchemaNewValidCtxt (xmlSchemaPtr schema); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSchemaFreeValidCtxt (xmlSchemaValidCtxtPtr ctxt); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSchemaValidateDoc (xmlSchemaValidCtxtPtr ctxt, xmlDocPtr instance); XMLPUBFUN int XMLCALL @@ -178,8 +216,11 @@ const char * filename, int options); +XMLPUBFUN xmlParserCtxtPtr XMLCALL + xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxtPtr ctxt); + /* - * Interface to insert Schemas SAX velidation in a SAX stream + * Interface to insert Schemas SAX validation in a SAX stream */ typedef struct _xmlSchemaSAXPlug xmlSchemaSAXPlugStruct; typedef xmlSchemaSAXPlugStruct *xmlSchemaSAXPlugPtr; @@ -190,6 +231,13 @@ void **user_data); XMLPUBFUN int XMLCALL xmlSchemaSAXUnplug (xmlSchemaSAXPlugPtr plug); + + +XMLPUBFUN void XMLCALL + xmlSchemaValidateSetLocator (xmlSchemaValidCtxtPtr vctxt, + xmlSchemaValidityLocatorFunc f, + void *ctxt); + #ifdef __cplusplus } #endif diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlschemastypes.c gettext-0.19.7/gnulib-local/lib/libxml/xmlschemastypes.c --- gettext-0.19.6/gnulib-local/lib/libxml/xmlschemastypes.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlschemastypes.c 2015-12-23 07:08:27.000000000 +0000 @@ -40,7 +40,7 @@ extern double xmlXPathNINF; #endif -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); @@ -75,7 +75,7 @@ typedef xmlSchemaValDuration *xmlSchemaValDurationPtr; struct _xmlSchemaValDuration { long mon; /* mon stores years also */ - long day; + long day; double sec; /* sec stores min and hour also */ }; @@ -189,7 +189,7 @@ /************************************************************************ * * - * Datatype error handlers * + * Datatype error handlers * * * ************************************************************************/ /** @@ -206,7 +206,7 @@ /************************************************************************ * * - * Base types support * + * Base types support * * * ************************************************************************/ @@ -242,6 +242,10 @@ } ret->type = XML_SCHEMA_FACET_MINLENGTH; ret->val = xmlSchemaNewValue(XML_SCHEMAS_NNINTEGER); + if (ret->val == NULL) { + xmlFree(ret); + return(NULL); + } ret->val->value.decimal.lo = value; return (ret); } @@ -254,7 +258,7 @@ * Initialize one primitive built-in type */ static xmlSchemaTypePtr -xmlSchemaInitBasicType(const char *name, xmlSchemaValType type, +xmlSchemaInitBasicType(const char *name, xmlSchemaValType type, xmlSchemaTypePtr baseType) { xmlSchemaTypePtr ret; @@ -267,31 +271,31 @@ ret->name = (const xmlChar *)name; ret->targetNamespace = XML_SCHEMAS_NAMESPACE_NAME; ret->type = XML_SCHEMA_TYPE_BASIC; - ret->baseType = baseType; + ret->baseType = baseType; ret->contentType = XML_SCHEMA_CONTENT_BASIC; /* * Primitive types. */ - switch (type) { - case XML_SCHEMAS_STRING: - case XML_SCHEMAS_DECIMAL: - case XML_SCHEMAS_DATE: - case XML_SCHEMAS_DATETIME: - case XML_SCHEMAS_TIME: - case XML_SCHEMAS_GYEAR: - case XML_SCHEMAS_GYEARMONTH: - case XML_SCHEMAS_GMONTH: - case XML_SCHEMAS_GMONTHDAY: - case XML_SCHEMAS_GDAY: - case XML_SCHEMAS_DURATION: - case XML_SCHEMAS_FLOAT: - case XML_SCHEMAS_DOUBLE: - case XML_SCHEMAS_BOOLEAN: - case XML_SCHEMAS_ANYURI: - case XML_SCHEMAS_HEXBINARY: - case XML_SCHEMAS_BASE64BINARY: - case XML_SCHEMAS_QNAME: - case XML_SCHEMAS_NOTATION: + switch (type) { + case XML_SCHEMAS_STRING: + case XML_SCHEMAS_DECIMAL: + case XML_SCHEMAS_DATE: + case XML_SCHEMAS_DATETIME: + case XML_SCHEMAS_TIME: + case XML_SCHEMAS_GYEAR: + case XML_SCHEMAS_GYEARMONTH: + case XML_SCHEMAS_GMONTH: + case XML_SCHEMAS_GMONTHDAY: + case XML_SCHEMAS_GDAY: + case XML_SCHEMAS_DURATION: + case XML_SCHEMAS_FLOAT: + case XML_SCHEMAS_DOUBLE: + case XML_SCHEMAS_BOOLEAN: + case XML_SCHEMAS_ANYURI: + case XML_SCHEMAS_HEXBINARY: + case XML_SCHEMAS_BASE64BINARY: + case XML_SCHEMAS_QNAME: + case XML_SCHEMAS_NOTATION: ret->flags |= XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE; break; default: @@ -309,7 +313,7 @@ case XML_SCHEMAS_ENTITIES: ret->flags |= XML_SCHEMAS_TYPE_VARIETY_LIST; ret->facets = xmlSchemaNewMinLengthFacet(1); - ret->flags |= XML_SCHEMAS_TYPE_HAS_FACETS; + ret->flags |= XML_SCHEMAS_TYPE_HAS_FACETS; break; default: ret->flags |= XML_SCHEMAS_TYPE_VARIETY_ATOMIC; @@ -390,19 +394,19 @@ return; xmlSchemaTypesBank = xmlHashCreate(40); - + /* * 3.4.7 Built-in Complex Type Definition */ xmlSchemaTypeAnyTypeDef = xmlSchemaInitBasicType("anyType", - XML_SCHEMAS_ANYTYPE, + XML_SCHEMAS_ANYTYPE, NULL); xmlSchemaTypeAnyTypeDef->baseType = xmlSchemaTypeAnyTypeDef; xmlSchemaTypeAnyTypeDef->contentType = XML_SCHEMA_CONTENT_MIXED; /* * Init the content type. */ - xmlSchemaTypeAnyTypeDef->contentType = XML_SCHEMA_CONTENT_MIXED; + xmlSchemaTypeAnyTypeDef->contentType = XML_SCHEMA_CONTENT_MIXED; { xmlSchemaParticlePtr particle; xmlSchemaModelGroupPtr sequence; @@ -420,7 +424,7 @@ return; } memset(sequence, 0, sizeof(xmlSchemaModelGroup)); - sequence->type = XML_SCHEMA_TYPE_SEQUENCE; + sequence->type = XML_SCHEMA_TYPE_SEQUENCE; particle->children = (xmlSchemaTreeItemPtr) sequence; /* Second particle. */ particle = xmlSchemaAddParticle(); @@ -437,9 +441,9 @@ } memset(wild, 0, sizeof(xmlSchemaWildcard)); wild->type = XML_SCHEMA_TYPE_ANY; - wild->any = 1; - wild->processContents = XML_SCHEMAS_ANY_LAX; - particle->children = (xmlSchemaTreeItemPtr) wild; + wild->any = 1; + wild->processContents = XML_SCHEMAS_ANY_LAX; + particle->children = (xmlSchemaTreeItemPtr) wild; /* * Create the attribute wildcard. */ @@ -451,10 +455,10 @@ } memset(wild, 0, sizeof(xmlSchemaWildcard)); wild->any = 1; - wild->processContents = XML_SCHEMAS_ANY_LAX; + wild->processContents = XML_SCHEMAS_ANY_LAX; xmlSchemaTypeAnyTypeDef->attributeWildcard = wild; } - xmlSchemaTypeAnySimpleTypeDef = xmlSchemaInitBasicType("anySimpleType", + xmlSchemaTypeAnySimpleTypeDef = xmlSchemaInitBasicType("anySimpleType", XML_SCHEMAS_ANYSIMPLETYPE, xmlSchemaTypeAnyTypeDef); /* @@ -513,7 +517,7 @@ xmlSchemaTypeAnySimpleTypeDef); xmlSchemaTypeNotationDef = xmlSchemaInitBasicType("NOTATION", XML_SCHEMAS_NOTATION, - xmlSchemaTypeAnySimpleTypeDef); + xmlSchemaTypeAnySimpleTypeDef); xmlSchemaTypeQNameDef = xmlSchemaInitBasicType("QName", XML_SCHEMAS_QNAME, xmlSchemaTypeAnySimpleTypeDef); @@ -583,7 +587,7 @@ xmlSchemaTypeNCNameDef); xmlSchemaTypeIdrefDef = xmlSchemaInitBasicType("IDREF", XML_SCHEMAS_IDREF, - xmlSchemaTypeNCNameDef); + xmlSchemaTypeNCNameDef); xmlSchemaTypeEntityDef = xmlSchemaInitBasicType("ENTITY", XML_SCHEMAS_ENTITY, xmlSchemaTypeNCNameDef); @@ -615,7 +619,7 @@ * * Cleanup the default XML Schemas type library */ -void +void xmlSchemaCleanupTypes(void) { if (xmlSchemaTypesInitialized == 0) return; @@ -629,13 +633,13 @@ /* Content type. */ particle = (xmlSchemaParticlePtr) xmlSchemaTypeAnyTypeDef->subtypes; /* Wildcard. */ - xmlSchemaFreeWildcard((xmlSchemaWildcardPtr) + xmlSchemaFreeWildcard((xmlSchemaWildcardPtr) particle->children->children->children); xmlFree((xmlSchemaParticlePtr) particle->children->children); /* Sequence model group. */ xmlFree((xmlSchemaModelGroupPtr) particle->children); xmlFree((xmlSchemaParticlePtr) particle); - xmlSchemaTypeAnyTypeDef->subtypes = NULL; + xmlSchemaTypeAnyTypeDef->subtypes = NULL; } xmlHashFree(xmlSchemaTypesBank, (xmlHashDeallocator) xmlSchemaFreeType); xmlSchemaTypesInitialized = 0; @@ -665,12 +669,12 @@ (facetType == XML_SCHEMA_FACET_WHITESPACE)) return (1); else - return (0); + return (0); case XML_SCHEMAS_STRING: case XML_SCHEMAS_NOTATION: case XML_SCHEMAS_QNAME: - case XML_SCHEMAS_ANYURI: - case XML_SCHEMAS_BASE64BINARY: + case XML_SCHEMAS_ANYURI: + case XML_SCHEMAS_BASE64BINARY: case XML_SCHEMAS_HEXBINARY: if ((facetType == XML_SCHEMA_FACET_LENGTH) || (facetType == XML_SCHEMA_FACET_MINLENGTH) || @@ -693,12 +697,12 @@ (facetType == XML_SCHEMA_FACET_MINEXCLUSIVE)) return (1); else - return (0); + return (0); case XML_SCHEMAS_TIME: - case XML_SCHEMAS_GDAY: + case XML_SCHEMAS_GDAY: case XML_SCHEMAS_GMONTH: - case XML_SCHEMAS_GMONTHDAY: - case XML_SCHEMAS_GYEAR: + case XML_SCHEMAS_GMONTHDAY: + case XML_SCHEMAS_GYEAR: case XML_SCHEMAS_GYEARMONTH: case XML_SCHEMAS_DATE: case XML_SCHEMAS_DATETIME: @@ -714,7 +718,7 @@ (facetType == XML_SCHEMA_FACET_MINEXCLUSIVE)) return (1); else - return (0); + return (0); default: break; } @@ -736,7 +740,7 @@ if (xmlSchemaTypesInitialized == 0) xmlSchemaInitTypes(); switch (type) { - + case XML_SCHEMAS_ANYSIMPLETYPE: return (xmlSchemaTypeAnySimpleTypeDef); case XML_SCHEMAS_STRING: @@ -752,7 +756,7 @@ case XML_SCHEMAS_GMONTH: return (xmlSchemaTypeGMonthDef); case XML_SCHEMAS_GMONTHDAY: - return (xmlSchemaTypeGMonthDayDef); + return (xmlSchemaTypeGMonthDayDef); case XML_SCHEMAS_GYEAR: return (xmlSchemaTypeGYearDef); case XML_SCHEMAS_GYEARMONTH: @@ -828,7 +832,7 @@ case XML_SCHEMAS_BASE64BINARY: return (xmlSchemaTypeBase64BinaryDef); case XML_SCHEMAS_ANYTYPE: - return (xmlSchemaTypeAnyTypeDef); + return (xmlSchemaTypeAnyTypeDef); default: return (NULL); } @@ -880,7 +884,7 @@ */ const xmlChar * xmlSchemaValueGetAsString(xmlSchemaValPtr val) -{ +{ if (val == NULL) return (NULL); switch (val->type) { @@ -913,7 +917,7 @@ */ int xmlSchemaValueGetAsBoolean(xmlSchemaValPtr val) -{ +{ if ((val == NULL) || (val->type != XML_SCHEMAS_BOOLEAN)) return (0); return (val->value.b); @@ -924,8 +928,8 @@ * @type: the value type * @value: the value * - * Allocate a new simple type value. The type can be - * of XML_SCHEMAS_STRING. + * Allocate a new simple type value. The type can be + * of XML_SCHEMAS_STRING. * WARNING: This one is intended to be expanded for other * string based types. We need this for anySimpleType as well. * The given value is consumed and freed with the struct. @@ -1007,11 +1011,11 @@ * * Cleanup the default XML Schemas type library */ -void +void xmlSchemaFreeValue(xmlSchemaValPtr value) { xmlSchemaValPtr prev; - while (value != NULL) { + while (value != NULL) { switch (value->type) { case XML_SCHEMAS_STRING: case XML_SCHEMAS_NORMSTRING: @@ -1025,7 +1029,7 @@ case XML_SCHEMAS_IDREF: case XML_SCHEMAS_IDREFS: case XML_SCHEMAS_ENTITY: - case XML_SCHEMAS_ENTITIES: + case XML_SCHEMAS_ENTITIES: case XML_SCHEMAS_ANYURI: case XML_SCHEMAS_ANYSIMPLETYPE: if (value->value.str != NULL) @@ -1052,7 +1056,7 @@ prev = value; value = value->next; xmlFree(prev); - } + } } /** @@ -1088,9 +1092,9 @@ if ((type == NULL) || (type->type != XML_SCHEMA_TYPE_BASIC)) return (NULL); switch (type->builtInType) { - case XML_SCHEMAS_NMTOKENS: + case XML_SCHEMAS_NMTOKENS: return (xmlSchemaTypeNmtokenDef ); - case XML_SCHEMAS_IDREFS: + case XML_SCHEMAS_IDREFS: return (xmlSchemaTypeIdrefDef); case XML_SCHEMAS_ENTITIES: return (xmlSchemaTypeEntityDef); @@ -1342,13 +1346,13 @@ */ static int _xmlSchemaParseTime (xmlSchemaValDatePtr dt, const xmlChar **str) { - const xmlChar *cur = *str; + const xmlChar *cur = *str; int ret = 0; int value = 0; PARSE_2_DIGITS(value, cur, ret); if (ret != 0) - return ret; + return ret; if (*cur != ':') return 1; if (!VALID_HOUR(value)) @@ -1614,7 +1618,7 @@ const xmlChar *rewnd = cur; cur++; - ret = _xmlSchemaParseGDay(&(dt->value.date), &cur); + ret = _xmlSchemaParseGDay(&(dt->value.date), &cur); if ((ret == 0) && ((*cur == 0) || (*cur != ':'))) { /* @@ -1852,7 +1856,7 @@ } cur++; if (collapse) - while IS_WSP_BLANK_CH(*cur) cur++; + while IS_WSP_BLANK_CH(*cur) cur++; } if (isneg) { @@ -1908,13 +1912,13 @@ */ xmlChar * xmlSchemaWhiteSpaceReplace(const xmlChar *value) { - const xmlChar *cur = value; - xmlChar *ret = NULL, *mcur; + const xmlChar *cur = value; + xmlChar *ret = NULL, *mcur; - if (value == NULL) + if (value == NULL) return(NULL); - - while ((*cur != 0) && + + while ((*cur != 0) && (((*cur) != 0xd) && ((*cur) != 0x9) && ((*cur) != 0xa))) { cur++; } @@ -1927,7 +1931,7 @@ if ( ((*mcur) == 0xd) || ((*mcur) == 0x9) || ((*mcur) == 0xa) ) *mcur = ' '; mcur++; - } while (*mcur != 0); + } while (*mcur != 0); return(ret); } @@ -2063,7 +2067,7 @@ * Parse an unsigned long into 3 fields. * * Returns the number of significant digits in the number or - * -1 if overflow of the capacity + * -1 if overflow of the capacity and -2 if it's not a number. */ static int xmlSchemaParseUInt(const xmlChar **str, unsigned long *llo, @@ -2072,6 +2076,9 @@ const xmlChar *tmp, *cur = *str; int ret = 0, i = 0; + if (!((*cur >= '0') && (*cur <= '9'))) + return(-2); + while (*cur == '0') { /* ignore leading zeroes */ cur++; } @@ -2145,7 +2152,7 @@ if ((flags == 0) && (value != NULL)) { if ((type->builtInType != XML_SCHEMAS_STRING) && - (type->builtInType != XML_SCHEMAS_ANYTYPE) && + (type->builtInType != XML_SCHEMAS_ANYTYPE) && (type->builtInType != XML_SCHEMAS_ANYSIMPLETYPE)) { if (type->builtInType == XML_SCHEMAS_NORMSTRING) norm = xmlSchemaWhiteSpaceReplace(value); @@ -2157,7 +2164,7 @@ } switch (type->builtInType) { - case XML_SCHEMAS_UNKNOWN: + case XML_SCHEMAS_UNKNOWN: goto error; case XML_SCHEMAS_ANYTYPE: case XML_SCHEMAS_ANYSIMPLETYPE: @@ -2168,10 +2175,10 @@ *val = v; } else { goto error; - } + } } goto return0; - case XML_SCHEMAS_STRING: + case XML_SCHEMAS_STRING: if (! normOnTheFly) { const xmlChar *cur = value; @@ -2250,7 +2257,7 @@ const xmlChar *cur = value; unsigned int len, neg, integ, hasLeadingZeroes; xmlChar cval[25]; - xmlChar *cptr = cval; + xmlChar *cptr = cval; if ((cur == NULL) || (*cur == 0)) goto return1; @@ -2324,10 +2331,10 @@ v = xmlSchemaNewValue(XML_SCHEMAS_DECIMAL); if (v != NULL) { /* - * Now evaluate the significant digits of the number - */ + * Now evaluate the significant digits of the number + */ if (len != 0) { - + if (integ != ~0u) { /* * Get rid of trailing zeroes in the @@ -2342,9 +2349,9 @@ * Terminate the (preparsed) string. */ if (len != 0) { - *cptr = 0; + *cptr = 0; cptr = cval; - + xmlSchemaParseUInt((const xmlChar **)&cptr, &v->value.decimal.lo, &v->value.decimal.mi, @@ -2386,9 +2393,11 @@ normOnTheFly); break; case XML_SCHEMAS_FLOAT: - case XML_SCHEMAS_DOUBLE:{ + case XML_SCHEMAS_DOUBLE: { const xmlChar *cur = value; int neg = 0; + int digits_before = 0; + int digits_after = 0; if (normOnTheFly) while IS_WSP_BLANK_CH(*cur) cur++; @@ -2461,12 +2470,17 @@ goto return1; while ((*cur >= '0') && (*cur <= '9')) { cur++; + digits_before++; } if (*cur == '.') { cur++; - while ((*cur >= '0') && (*cur <= '9')) + while ((*cur >= '0') && (*cur <= '9')) { cur++; + digits_after++; + } } + if ((digits_before == 0) && (digits_after == 0)) + goto return1; if ((*cur == 'e') || (*cur == 'E')) { cur++; if ((*cur == '-') || (*cur == '+')) @@ -2594,8 +2608,8 @@ } else { cur++; } - } - } + } + } if (val != NULL) { v = xmlSchemaNewValue(XML_SCHEMAS_TOKEN); if (v != NULL) { @@ -2608,7 +2622,7 @@ goto return0; } case XML_SCHEMAS_LANGUAGE: - if (normOnTheFly) { + if (normOnTheFly) { norm = xmlSchemaCollapseString(value); if (norm != NULL) value = norm; @@ -2893,15 +2907,26 @@ } goto done; } - case XML_SCHEMAS_ANYURI:{ + case XML_SCHEMAS_ANYURI:{ if (*value != 0) { xmlURIPtr uri; - if (normOnTheFly) { + xmlChar *tmpval, *cur; + if (normOnTheFly) { norm = xmlSchemaCollapseString(value); if (norm != NULL) value = norm; } - uri = xmlParseURI((const char *) value); + tmpval = xmlStrdup(value); + for (cur = tmpval; *cur; ++cur) { + if (*cur < 32 || *cur >= 127 || *cur == ' ' || + *cur == '<' || *cur == '>' || *cur == '"' || + *cur == '{' || *cur == '}' || *cur == '|' || + *cur == '\\' || *cur == '^' || *cur == '`' || + *cur == '\'') + *cur = '_'; + } + uri = xmlParseURI((const char *) tmpval); + xmlFree(tmpval); if (uri == NULL) goto return1; xmlFreeURI(uri); @@ -2975,12 +3000,12 @@ } case XML_SCHEMAS_BASE64BINARY:{ /* ISSUE: - * + * * Ignore all stray characters? (yes, currently) * Worry about long lines? (no, currently) - * + * * rfc2045.txt: - * + * * "The encoded output stream must be represented in lines of * no more than 76 characters each. All line breaks or other * characters not found in Table 1 must be ignored by decoding @@ -3116,7 +3141,7 @@ } else if (*cur == '+') cur++; ret = xmlSchemaParseUInt(&cur, &lo, &mi, &hi); - if (ret == -1) + if (ret < 0) goto return1; if (normOnTheFly) while IS_WSP_BLANK_CH(*cur) cur++; @@ -3161,7 +3186,7 @@ case XML_SCHEMAS_BYTE: case XML_SCHEMAS_SHORT: case XML_SCHEMAS_INT:{ - const xmlChar *cur = value; + const xmlChar *cur = value; unsigned long lo, mi, hi; int sign = 0; @@ -3391,7 +3416,7 @@ /* * First test: If x is -ve and not zero */ - if ((x->value.decimal.sign) && + if ((x->value.decimal.sign) && ((x->value.decimal.lo != 0) || (x->value.decimal.mi != 0) || (x->value.decimal.hi != 0))) { @@ -3548,8 +3573,8 @@ /* seconds */ sec = x->value.dur.sec - y->value.dur.sec; - carry = (long)sec / SECS_PER_DAY; - sec -= (double)(carry * SECS_PER_DAY); + carry = (long)(sec / SECS_PER_DAY); + sec -= ((double)carry) * SECS_PER_DAY; /* days */ day = x->value.dur.day - y->value.dur.day + carry; @@ -3632,7 +3657,7 @@ xmlSchemaValPtr ret = xmlSchemaNewValue(v->type); if (ret == NULL) return NULL; - + memcpy(ret, v, sizeof(xmlSchemaVal)); ret->next = NULL; return ret; @@ -3678,7 +3703,7 @@ if (val->value.str != NULL) cur->value.str = xmlStrdup(BAD_CAST val->value.str); break; - case XML_SCHEMAS_QNAME: + case XML_SCHEMAS_QNAME: case XML_SCHEMAS_NOTATION: cur = xmlSchemaDupVal(val); if (val->value.qname.name != NULL) @@ -3820,16 +3845,17 @@ if (tyr == 0) tyr--; /* - * Coverity detected an overrun in daysInMonth + * Coverity detected an overrun in daysInMonth * of size 12 at position 12 with index variable "((r)->mon - 1)" */ - if (tmon < 0) - tmon = 0; + if (tmon < 1) + tmon = 1; if (tmon > 12) tmon = 12; tempdays += MAX_DAYINMONTH(tyr, tmon); carry = -1; - } else if (tempdays > (long) MAX_DAYINMONTH(r->year, r->mon)) { + } else if (VALID_YEAR(r->year) && VALID_MONTH(r->mon) && + tempdays > (long) MAX_DAYINMONTH(r->year, r->mon)) { tempdays = tempdays - MAX_DAYINMONTH(r->year, r->mon); carry = 1; } else @@ -3845,7 +3871,7 @@ r->year++; } } - + r->day = tempdays; /* @@ -3910,7 +3936,7 @@ * _xmlSchemaDateCastYMToDays: * @dt: an #xmlSchemaValPtr * - * Convert mon and year of @dt to total number of days. Take the + * Convert mon and year of @dt to total number of days. Take the * number of years since (or before) 1 AD and add the number of leap * years. This is a function because negative * years must be handled a little differently and there is no zero year. @@ -4090,7 +4116,7 @@ ret = -1; else if (sec > 0.0) ret = 1; - + } xmlSchemaFreeValue(p1); xmlSchemaFreeValue(q1); @@ -4231,7 +4257,7 @@ int invert) { int tmp; - + while ((*x != 0) && (*y != 0)) { if (IS_WSP_REPLACE_CH(*y)) { if (! IS_WSP_SPACE_CH(*x)) { @@ -4246,7 +4272,7 @@ else return(1); } - } + } } else { tmp = *x - *y; if (tmp < 0) { @@ -4300,7 +4326,7 @@ { int tmp; - /* + /* * Skip leading blank chars of the collapsed string. */ while IS_WSP_BLANK_CH(*y) @@ -4389,12 +4415,12 @@ { int tmp; - /* + /* * Skip leading blank chars of the collapsed string. */ while IS_WSP_BLANK_CH(*y) y++; - + while ((*x != 0) && (*y != 0)) { if IS_WSP_BLANK_CH(*y) { if (! IS_WSP_BLANK_CH(*x)) { @@ -4414,8 +4440,8 @@ } } x++; - y++; - /* + y++; + /* * Skip contiguous blank chars of the collapsed string. */ while IS_WSP_BLANK_CH(*y) @@ -4449,7 +4475,7 @@ return(-1); else return(1); - } + } if (*y != 0) { /* * Skip trailing blank chars of the collapsed string. @@ -4482,27 +4508,27 @@ const xmlChar *y) { int tmp; - + while ((*x != 0) && (*y != 0)) { if IS_WSP_BLANK_CH(*y) { if (! IS_WSP_BLANK_CH(*x)) { if ((*x - 0x20) < 0) - return(-1); + return(-1); else return(1); - } + } } else { if IS_WSP_BLANK_CH(*x) { if ((0x20 - *y) < 0) - return(-1); + return(-1); else return(1); } tmp = *x - *y; if (tmp < 0) - return(-1); + return(-1); if (tmp > 0) - return(1); + return(1); } x++; y++; @@ -4528,7 +4554,7 @@ xmlSchemaCompareNormStrings(const xmlChar *x, const xmlChar *y) { int tmp; - + while (IS_BLANK_CH(*x)) x++; while (IS_BLANK_CH(*y)) y++; while ((*x != 0) && (*y != 0)) { @@ -4721,13 +4747,13 @@ (ytype == XML_SCHEMAS_GYEARMONTH)) return (xmlSchemaCompareDates(x, y)); return (-2); - /* + /* * Note that we will support comparison of string types against * anySimpleType as well. */ case XML_SCHEMAS_ANYSIMPLETYPE: case XML_SCHEMAS_STRING: - case XML_SCHEMAS_NORMSTRING: + case XML_SCHEMAS_NORMSTRING: case XML_SCHEMAS_TOKEN: case XML_SCHEMAS_LANGUAGE: case XML_SCHEMAS_NMTOKEN: @@ -4751,10 +4777,10 @@ /* * TODO: Compare those against QName. */ - if (ytype == XML_SCHEMAS_QNAME) { + if (ytype == XML_SCHEMAS_QNAME) { TODO if (y == NULL) - return(-2); + return(-2); return (-2); } if ((ytype == XML_SCHEMAS_ANYSIMPLETYPE) || @@ -4776,7 +4802,7 @@ /* TODO: What about x < y or x > y. */ if (xmlStrEqual(xv, yv)) return (0); - else + else return (2); } else if (yws == XML_SCHEMA_WHITESPACE_REPLACE) return (xmlSchemaComparePreserveReplaceStrings(xv, yv, 0)); @@ -4802,7 +4828,7 @@ return (xmlSchemaCompareNormStrings(xv, yv)); } else return (-2); - + } return (-2); } @@ -4873,7 +4899,7 @@ else return(-1); } - return (-2); + return (-2); case XML_SCHEMAS_IDREFS: case XML_SCHEMAS_ENTITIES: case XML_SCHEMAS_NMTOKENS: @@ -4908,7 +4934,7 @@ if (y->type == XML_SCHEMAS_STRING) yws = XML_SCHEMA_WHITESPACE_PRESERVE; - else if (x->type == XML_SCHEMAS_NORMSTRING) + else if (y->type == XML_SCHEMAS_NORMSTRING) yws = XML_SCHEMA_WHITESPACE_REPLACE; else yws = XML_SCHEMA_WHITESPACE_COLLAPSE; @@ -5061,7 +5087,7 @@ if (expectedLen != NULL) *expectedLen = facet->val->value.decimal.lo; return (XML_SCHEMAV_CVC_LENGTH_VALID); - } + } } else if (facet->type == XML_SCHEMA_FACET_MINLENGTH) { if (actualLen < facet->val->value.decimal.lo) { if (expectedLen != NULL) @@ -5075,12 +5101,12 @@ return (XML_SCHEMAV_CVC_MAXLENGTH_VALID); } } else - /* - * NOTE: That we can pass NULL as xmlSchemaValPtr to + /* + * NOTE: That we can pass NULL as xmlSchemaValPtr to * xmlSchemaValidateFacet, since the remaining facet types - * are: XML_SCHEMA_FACET_PATTERN, XML_SCHEMA_FACET_ENUMERATION. + * are: XML_SCHEMA_FACET_PATTERN, XML_SCHEMA_FACET_ENUMERATION. */ - return(xmlSchemaValidateFacet(NULL, facet, value, NULL)); + return(xmlSchemaValidateFacet(NULL, facet, value, NULL)); return (0); } @@ -5093,7 +5119,7 @@ * @ws: the whitespace type of the value * @length: the actual length of the value * - * Checka a value against a "length", "minLength" and "maxLength" + * Checka a value against a "length", "minLength" and "maxLength" * facet; sets @length to the computed length of @value. * * Returns 0 if the value is valid, a positive error code @@ -5101,11 +5127,11 @@ */ static int xmlSchemaValidateLengthFacetInternal(xmlSchemaFacetPtr facet, - xmlSchemaTypeType valType, + xmlSchemaValType valType, const xmlChar *value, - xmlSchemaValPtr val, + xmlSchemaValPtr val, unsigned long *length, - xmlSchemaWhitespaceValueType ws) + xmlSchemaWhitespaceValueType ws) { unsigned int len = 0; @@ -5116,7 +5142,7 @@ (facet->type != XML_SCHEMA_FACET_MAXLENGTH) && (facet->type != XML_SCHEMA_FACET_MINLENGTH)) return (-1); - + /* * TODO: length, maxLength and minLength must be of type * nonNegativeInteger only. Check if decimal is used somehow. @@ -5150,7 +5176,7 @@ if (ws == XML_SCHEMA_WHITESPACE_COLLAPSE) len = xmlSchemaNormLen(value); else - /* + /* * Should be OK for "preserve" as well. */ len = xmlUTF8Strlen(value); @@ -5162,7 +5188,7 @@ case XML_SCHEMAS_NMTOKEN: case XML_SCHEMAS_NAME: case XML_SCHEMAS_NCNAME: - case XML_SCHEMAS_ID: + case XML_SCHEMAS_ID: /* * FIXME: What exactly to do with anyURI? */ @@ -5171,11 +5197,11 @@ len = xmlSchemaNormLen(value); break; case XML_SCHEMAS_QNAME: - case XML_SCHEMAS_NOTATION: - /* + case XML_SCHEMAS_NOTATION: + /* * For QName and NOTATION, those facets are * deprecated and should be ignored. - */ + */ return (0); default: TODO @@ -5195,7 +5221,7 @@ if (len > facet->val->value.decimal.lo) return(XML_SCHEMAV_CVC_MAXLENGTH_VALID); } - + return (0); } @@ -5207,18 +5233,18 @@ * @val: the precomputed value * @length: the actual length of the value * - * Checka a value against a "length", "minLength" and "maxLength" + * Checka a value against a "length", "minLength" and "maxLength" * facet; sets @length to the computed length of @value. * * Returns 0 if the value is valid, a positive error code * otherwise and -1 in case of an internal or API error. */ int -xmlSchemaValidateLengthFacet(xmlSchemaTypePtr type, +xmlSchemaValidateLengthFacet(xmlSchemaTypePtr type, xmlSchemaFacetPtr facet, const xmlChar *value, xmlSchemaValPtr val, - unsigned long *length) + unsigned long *length) { if (type == NULL) return(-1); @@ -5228,7 +5254,7 @@ } /** - * xmlSchemaValidateLengthFacetWhtsp: + * xmlSchemaValidateLengthFacetWhtsp: * @facet: the facet to check * @valType: the built-in type * @value: the lexical repr. of the value to be validated @@ -5236,7 +5262,7 @@ * @ws: the whitespace type of the value * @length: the actual length of the value * - * Checka a value against a "length", "minLength" and "maxLength" + * Checka a value against a "length", "minLength" and "maxLength" * facet; sets @length to the computed length of @value. * * Returns 0 if the value is valid, a positive error code @@ -5271,7 +5297,7 @@ static int xmlSchemaValidateFacetInternal(xmlSchemaFacetPtr facet, xmlSchemaWhitespaceValueType fws, - xmlSchemaValType valType, + xmlSchemaValType valType, const xmlChar *value, xmlSchemaValPtr val, xmlSchemaWhitespaceValueType ws) @@ -5283,7 +5309,7 @@ switch (facet->type) { case XML_SCHEMA_FACET_PATTERN: - /* + /* * NOTE that for patterns, the @value needs to be the normalized * value, *not* the lexical initial value or the canonical value. */ @@ -5384,7 +5410,7 @@ else { switch (valType) { case XML_SCHEMAS_STRING: - case XML_SCHEMAS_NORMSTRING: + case XML_SCHEMAS_NORMSTRING: if (ws == XML_SCHEMA_WHITESPACE_UNKNOWN) { /* * This is to ensure API compatibility with the old @@ -5400,13 +5426,13 @@ if (ws == XML_SCHEMA_WHITESPACE_COLLAPSE) len = xmlSchemaNormLen(value); else - /* + /* * Should be OK for "preserve" as well. */ len = xmlUTF8Strlen(value); } break; - case XML_SCHEMAS_IDREF: + case XML_SCHEMAS_IDREF: case XML_SCHEMAS_TOKEN: case XML_SCHEMAS_LANGUAGE: case XML_SCHEMAS_NMTOKEN: @@ -5415,11 +5441,11 @@ case XML_SCHEMAS_ID: case XML_SCHEMAS_ANYURI: if (value != NULL) - len = xmlSchemaNormLen(value); - break; + len = xmlSchemaNormLen(value); + break; default: TODO - } + } } if (facet->type == XML_SCHEMA_FACET_LENGTH) { if (len != facet->val->value.decimal.lo) @@ -5529,7 +5555,7 @@ int xmlSchemaValidateFacetWhtsp(xmlSchemaFacetPtr facet, xmlSchemaWhitespaceValueType fws, - xmlSchemaValType valType, + xmlSchemaValType valType, const xmlChar *value, xmlSchemaValPtr val, xmlSchemaWhitespaceValueType ws) @@ -5590,13 +5616,13 @@ /* * Result is in work, and after_fraction points * just past the fractional part. - * Use scientific notation + * Use scientific notation */ integer_place = DBL_DIG + EXPONENT_DIGITS + 1; fraction_place = DBL_DIG - 1; snprintf(work, sizeof(work),"%*.*e", integer_place, fraction_place, number); - after_fraction = strchr(work + DBL_DIG, 'e'); + after_fraction = strchr(work + DBL_DIG, 'e'); /* Remove fractional trailing zeroes */ ptr = after_fraction; while (*(--ptr) == '0') @@ -5623,12 +5649,12 @@ * @val: the precomputed value * @retValue: the returned value * - * Get a the cononical lexical representation of the value. + * Get the canonical lexical representation of the value. * The caller has to FREE the returned retValue. * * WARNING: Some value types are not supported yet, resulting * in a @retValue of "???". - * + * * TODO: XML Schema 1.0 does not define canonical representations * for: duration, gYearMonth, gYear, gMonthDay, gMonth, gDay, * anyURI, QName, NOTATION. This will be fixed in XML Schema 1.1. @@ -5648,7 +5674,7 @@ if (val->value.str == NULL) *retValue = BAD_CAST xmlStrdup(BAD_CAST ""); else - *retValue = + *retValue = BAD_CAST xmlStrdup((const xmlChar *) val->value.str); break; case XML_SCHEMAS_NORMSTRING: @@ -5665,7 +5691,7 @@ case XML_SCHEMAS_TOKEN: case XML_SCHEMAS_LANGUAGE: case XML_SCHEMAS_NMTOKEN: - case XML_SCHEMAS_NAME: + case XML_SCHEMAS_NAME: case XML_SCHEMAS_NCNAME: case XML_SCHEMAS_ID: case XML_SCHEMAS_IDREF: @@ -5674,10 +5700,10 @@ case XML_SCHEMAS_ANYURI: /* Unclear */ if (val->value.str == NULL) return (-1); - *retValue = + *retValue = BAD_CAST xmlSchemaCollapseString(BAD_CAST val->value.str); if (*retValue == NULL) - *retValue = + *retValue = BAD_CAST xmlStrdup((const xmlChar *) val->value.str); break; case XML_SCHEMAS_QNAME: @@ -5699,7 +5725,7 @@ /* * TODO: Lookout for a more simple implementation. */ - if ((val->value.decimal.total == 1) && + if ((val->value.decimal.total == 1) && (val->value.decimal.lo == 0)) { *retValue = xmlStrdup(BAD_CAST "0.0"); } else { @@ -5733,7 +5759,7 @@ else snprintf(offs, bufsize - (offs - buf), "%lu", dec.lo); - + if (dec.frac != 0) { if (dec.frac != dec.total) { int diff = dec.total - dec.frac; @@ -5746,7 +5772,7 @@ unsigned int i = 0; /* * Insert missing zeroes behind the decimal point. - */ + */ while (*(offs + i) != 0) i++; if (i < dec.total) { @@ -5883,7 +5909,7 @@ snprintf((char *) *retValue, 6, "---%02u", val->value.date.day); } - break; + break; case XML_SCHEMAS_GMONTHDAY: { /* TODO: Unclear in XML Schema 1.0 */ /* TODO: What to do with the timezone? */ @@ -5900,14 +5926,14 @@ /* TODO: What to do with the timezone? */ if (val->value.date.year < 0) snprintf(buf, 35, "-%04ld-%02u", - labs(val->value.date.year), + labs(val->value.date.year), val->value.date.mon); else snprintf(buf, 35, "%04ld-%02u", val->value.date.year, val->value.date.mon); *retValue = BAD_CAST xmlStrdup(BAD_CAST buf); } - break; + break; case XML_SCHEMAS_TIME: { char buf[30]; @@ -5918,8 +5944,8 @@ norm = xmlSchemaDateNormalize(val, 0); if (norm == NULL) return (-1); - /* - * TODO: Check if "%.14g" is portable. + /* + * TODO: Check if "%.14g" is portable. */ snprintf(buf, 30, "%02u:%02u:%02.14gZ", @@ -5935,7 +5961,7 @@ val->value.date.sec); } *retValue = BAD_CAST xmlStrdup(BAD_CAST buf); - } + } break; case XML_SCHEMAS_DATE: { @@ -5963,7 +5989,7 @@ val->value.date.day); } *retValue = BAD_CAST xmlStrdup(BAD_CAST buf); - } + } break; case XML_SCHEMAS_DATETIME: { @@ -6007,8 +6033,8 @@ *retValue = BAD_CAST xmlStrdup(BAD_CAST val->value.base64.str); break; case XML_SCHEMAS_FLOAT: { - char buf[30]; - /* + char buf[30]; + /* * |m| < 16777216, -149 <= e <= 104. * TODO: Handle, NaN, INF, -INF. The format is not * yet conformant. The c type float does not cover @@ -6029,7 +6055,7 @@ snprintf(buf, 40, "%01.14e", val->value.d); *retValue = BAD_CAST xmlStrdup(BAD_CAST buf); } - break; + break; default: *retValue = BAD_CAST xmlStrdup(BAD_CAST "???"); return (1); @@ -6045,7 +6071,7 @@ * @retValue: the returned value * @ws: the whitespace type of the value * - * Get a the cononical representation of the value. + * Get the canonical representation of the value. * The caller has to free the returned @retValue. * * Returns 0 if the value could be built, 1 if the value type is @@ -6088,7 +6114,7 @@ break; default: return (xmlSchemaGetCanonValue(val, retValue)); - } + } return (0); } diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlschemastypes.in.h gettext-0.19.7/gnulib-local/lib/libxml/xmlschemastypes.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xmlschemastypes.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlschemastypes.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -30,23 +30,23 @@ XML_SCHEMA_WHITESPACE_COLLAPSE = 3 } xmlSchemaWhitespaceValueType; -XMLPUBFUN void XMLCALL - xmlSchemaInitTypes (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL + xmlSchemaInitTypes (void); +XMLPUBFUN void XMLCALL xmlSchemaCleanupTypes (void); -XMLPUBFUN xmlSchemaTypePtr XMLCALL +XMLPUBFUN xmlSchemaTypePtr XMLCALL xmlSchemaGetPredefinedType (const xmlChar *name, const xmlChar *ns); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSchemaValidatePredefinedType (xmlSchemaTypePtr type, const xmlChar *value, xmlSchemaValPtr *val); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSchemaValPredefTypeNode (xmlSchemaTypePtr type, const xmlChar *value, xmlSchemaValPtr *val, xmlNodePtr node); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSchemaValidateFacet (xmlSchemaTypePtr base, xmlSchemaFacetPtr facet, const xmlChar *value, @@ -54,25 +54,25 @@ XMLPUBFUN int XMLCALL xmlSchemaValidateFacetWhtsp (xmlSchemaFacetPtr facet, xmlSchemaWhitespaceValueType fws, - xmlSchemaValType valType, + xmlSchemaValType valType, const xmlChar *value, xmlSchemaValPtr val, xmlSchemaWhitespaceValueType ws); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSchemaFreeValue (xmlSchemaValPtr val); -XMLPUBFUN xmlSchemaFacetPtr XMLCALL +XMLPUBFUN xmlSchemaFacetPtr XMLCALL xmlSchemaNewFacet (void); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSchemaCheckFacet (xmlSchemaFacetPtr facet, xmlSchemaTypePtr typeDecl, xmlSchemaParserCtxtPtr ctxt, const xmlChar *name); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSchemaFreeFacet (xmlSchemaFacetPtr facet); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlSchemaCompareValues (xmlSchemaValPtr x, xmlSchemaValPtr y); -XMLPUBFUN xmlSchemaTypePtr XMLCALL +XMLPUBFUN xmlSchemaTypePtr XMLCALL xmlSchemaGetBuiltInListSimpleTypeItemType (xmlSchemaTypePtr type); XMLPUBFUN int XMLCALL xmlSchemaValidateListSimpleTypeFacet (xmlSchemaFacetPtr facet, @@ -82,7 +82,7 @@ XMLPUBFUN xmlSchemaTypePtr XMLCALL xmlSchemaGetBuiltInType (xmlSchemaValType type); XMLPUBFUN int XMLCALL - xmlSchemaIsBuiltInTypeFacet (xmlSchemaTypePtr type, + xmlSchemaIsBuiltInTypeFacet (xmlSchemaTypePtr type, int facetType); XMLPUBFUN xmlChar * XMLCALL xmlSchemaCollapseString (const xmlChar *value); @@ -91,7 +91,7 @@ XMLPUBFUN unsigned long XMLCALL xmlSchemaGetFacetValueAsULong (xmlSchemaFacetPtr facet); XMLPUBFUN int XMLCALL - xmlSchemaValidateLengthFacet (xmlSchemaTypePtr type, + xmlSchemaValidateLengthFacet (xmlSchemaTypePtr type, xmlSchemaFacetPtr facet, const xmlChar *value, xmlSchemaValPtr val, @@ -100,19 +100,19 @@ xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacetPtr facet, xmlSchemaValType valType, const xmlChar *value, - xmlSchemaValPtr val, + xmlSchemaValPtr val, unsigned long *length, xmlSchemaWhitespaceValueType ws); XMLPUBFUN int XMLCALL - xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type, + xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type, const xmlChar *value, - xmlSchemaValPtr *val, + xmlSchemaValPtr *val, xmlNodePtr node); XMLPUBFUN int XMLCALL xmlSchemaGetCanonValue (xmlSchemaValPtr val, const xmlChar **retValue); XMLPUBFUN int XMLCALL - xmlSchemaGetCanonValueWhtsp (xmlSchemaValPtr val, + xmlSchemaGetCanonValueWhtsp (xmlSchemaValPtr val, const xmlChar **retValue, xmlSchemaWhitespaceValueType ws); XMLPUBFUN int XMLCALL diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlstring.c gettext-0.19.7/gnulib-local/lib/libxml/xmlstring.c --- gettext-0.19.6/gnulib-local/lib/libxml/xmlstring.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlstring.c 2015-12-23 07:08:27.000000000 +0000 @@ -3,7 +3,7 @@ * * This module provides various utility functions for manipulating * the xmlChar* type. All functions named xmlStr* have been moved here - * from the parser.c file (their original home). + * from the parser.c file (their original home). * * See Copyright for the status of this software. * @@ -40,7 +40,7 @@ xmlChar * xmlStrndup(const xmlChar *cur, int len) { xmlChar *ret; - + if ((cur == NULL) || (len < 0)) return(NULL); ret = (xmlChar *) xmlMallocAtomic((len + 1) * sizeof(xmlChar)); if (ret == NULL) { @@ -85,7 +85,7 @@ xmlCharStrndup(const char *cur, int len) { int i; xmlChar *ret; - + if ((cur == NULL) || (len < 0)) return(NULL); ret = (xmlChar *) xmlMallocAtomic((len + 1) * sizeof(xmlChar)); if (ret == NULL) { @@ -170,7 +170,7 @@ * @name: the localname of the QName * @str: the second xmlChar * * - * Check if a QName is Equal to a given string + * Check if a QName is Equal to a given string * * Returns 1 if they are equal, 0 if they are different */ @@ -340,7 +340,7 @@ const xmlChar * xmlStrstr(const xmlChar *str, const xmlChar *val) { int n; - + if (str == NULL) return(NULL); if (val == NULL) return(NULL); n = xmlStrlen(val); @@ -366,9 +366,9 @@ */ const xmlChar * -xmlStrcasestr(const xmlChar *str, xmlChar *val) { +xmlStrcasestr(const xmlChar *str, const xmlChar *val) { int n; - + if (str == NULL) return(NULL); if (val == NULL) return(NULL); n = xmlStrlen(val); @@ -396,7 +396,7 @@ xmlChar * xmlStrsub(const xmlChar *str, int start, int len) { int i; - + if (str == NULL) return(NULL); if (start < 0) return(NULL); if (len < 0) return(NULL); @@ -519,7 +519,7 @@ const xmlChar *p = add; if (add == NULL) return(cur); - if (cur == NULL) + if (cur == NULL) return(xmlStrdup(add)); while (*p != 0) p++; /* non input consuming */ @@ -537,20 +537,20 @@ * * Returns the number of characters written to @buf or -1 if an error occurs. */ -int XMLCDECL +int XMLCDECL xmlStrPrintf(xmlChar *buf, int len, const xmlChar *msg, ...) { va_list args; int ret; - + if((buf == NULL) || (msg == NULL)) { return(-1); } - + va_start(args, msg); ret = vsnprintf((char *) buf, len, (const char *) msg, args); va_end(args); buf[len - 1] = 0; /* be safe ! */ - + return(ret); } @@ -565,17 +565,17 @@ * * Returns the number of characters written to @buf or -1 if an error occurs. */ -int +int xmlStrVPrintf(xmlChar *buf, int len, const xmlChar *msg, va_list ap) { int ret; - + if((buf == NULL) || (msg == NULL)) { return(-1); } - + ret = vsnprintf((char *) buf, len, (const char *) msg, ap); buf[len - 1] = 0; /* be safe ! */ - + return(ret); } @@ -858,7 +858,7 @@ xmlUTF8Strndup(const xmlChar *utf, int len) { xmlChar *ret; int i; - + if ((utf == NULL) || (len < 0)) return(NULL); i = xmlUTF8Strsize(utf, len); ret = (xmlChar *) xmlMallocAtomic((i + 1) * sizeof(xmlChar)); diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlstring.in.h gettext-0.19.7/gnulib-local/lib/libxml/xmlstring.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xmlstring.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlstring.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -59,7 +59,7 @@ const xmlChar *val); XMLPUBFUN const xmlChar * XMLCALL xmlStrcasestr (const xmlChar *str, - xmlChar *val); + const xmlChar *val); XMLPUBFUN int XMLCALL xmlStrcmp (const xmlChar *str1, const xmlChar *str2); @@ -113,16 +113,16 @@ XMLPUBFUN int XMLCALL xmlUTF8Strsize (const xmlChar *utf, int len); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlUTF8Strndup (const xmlChar *utf, int len); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlUTF8Strpos (const xmlChar *utf, int pos); XMLPUBFUN int XMLCALL xmlUTF8Strloc (const xmlChar *utf, const xmlChar *utfchar); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlUTF8Strsub (const xmlChar *utf, int start, int len); diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlunicode.c gettext-0.19.7/gnulib-local/lib/libxml/xmlunicode.c --- gettext-0.19.6/gnulib-local/lib/libxml/xmlunicode.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlunicode.c 2015-12-23 07:08:27.000000000 +0000 @@ -204,729 +204,729 @@ {"Zp", xmlUCSIsCatZp}, {"Zs", xmlUCSIsCatZs}}; -static const xmlChSRange xmlCS[] = {{0x0, 0x1f}, {0x7f, 0x9f}, - {0xad, 0xad}, {0x600, 0x603}, {0x6dd, 0x6dd}, {0x70f, 0x70f}, - {0x17b4, 0x17b5}, {0x200b, 0x200f}, {0x202a, 0x202e}, {0x2060, 0x2063}, - {0x206a, 0x206f}, {0xd800, 0xd800}, {0xdb7f, 0xdb80}, {0xdbff, 0xdc00}, +static const xmlChSRange xmlCS[] = {{0x0, 0x1f}, {0x7f, 0x9f}, + {0xad, 0xad}, {0x600, 0x603}, {0x6dd, 0x6dd}, {0x70f, 0x70f}, + {0x17b4, 0x17b5}, {0x200b, 0x200f}, {0x202a, 0x202e}, {0x2060, 0x2063}, + {0x206a, 0x206f}, {0xd800, 0xd800}, {0xdb7f, 0xdb80}, {0xdbff, 0xdc00}, {0xdfff, 0xe000}, {0xf8ff, 0xf8ff}, {0xfeff, 0xfeff}, {0xfff9, 0xfffb} }; -static const xmlChLRange xmlCL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001}, - {0xe0020, 0xe007f}, {0xf0000, 0xf0000}, {0xffffd, 0xffffd}, +static const xmlChLRange xmlCL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001}, + {0xe0020, 0xe007f}, {0xf0000, 0xf0000}, {0xffffd, 0xffffd}, {0x100000, 0x100000}, {0x10fffd, 0x10fffd} }; static xmlChRangeGroup xmlCG = {18,7,xmlCS,xmlCL}; -static const xmlChSRange xmlCfS[] = {{0xad, 0xad}, {0x600, 0x603}, - {0x6dd, 0x6dd}, {0x70f, 0x70f}, {0x17b4, 0x17b5}, {0x200b, 0x200f}, - {0x202a, 0x202e}, {0x2060, 0x2063}, {0x206a, 0x206f}, {0xfeff, 0xfeff}, +static const xmlChSRange xmlCfS[] = {{0xad, 0xad}, {0x600, 0x603}, + {0x6dd, 0x6dd}, {0x70f, 0x70f}, {0x17b4, 0x17b5}, {0x200b, 0x200f}, + {0x202a, 0x202e}, {0x2060, 0x2063}, {0x206a, 0x206f}, {0xfeff, 0xfeff}, {0xfff9, 0xfffb} }; -static const xmlChLRange xmlCfL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001}, +static const xmlChLRange xmlCfL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001}, {0xe0020, 0xe007f} }; static xmlChRangeGroup xmlCfG = {11,3,xmlCfS,xmlCfL}; -static const xmlChSRange xmlLS[] = {{0x41, 0x5a}, {0x61, 0x7a}, - {0xaa, 0xaa}, {0xb5, 0xb5}, {0xba, 0xba}, {0xc0, 0xd6}, {0xd8, 0xf6}, - {0xf8, 0x236}, {0x250, 0x2c1}, {0x2c6, 0x2d1}, {0x2e0, 0x2e4}, - {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x386, 0x386}, {0x388, 0x38a}, - {0x38c, 0x38c}, {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3f5}, - {0x3f7, 0x3fb}, {0x400, 0x481}, {0x48a, 0x4ce}, {0x4d0, 0x4f5}, - {0x4f8, 0x4f9}, {0x500, 0x50f}, {0x531, 0x556}, {0x559, 0x559}, - {0x561, 0x587}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, - {0x640, 0x64a}, {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5}, - {0x6e5, 0x6e6}, {0x6ee, 0x6ef}, {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, - {0x710, 0x710}, {0x712, 0x72f}, {0x74d, 0x74f}, {0x780, 0x7a5}, - {0x7b1, 0x7b1}, {0x904, 0x939}, {0x93d, 0x93d}, {0x950, 0x950}, - {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990}, {0x993, 0x9a8}, - {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, {0x9bd, 0x9bd}, - {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a}, - {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33}, - {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e}, - {0xa72, 0xa74}, {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8}, - {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9}, {0xabd, 0xabd}, - {0xad0, 0xad0}, {0xae0, 0xae1}, {0xb05, 0xb0c}, {0xb0f, 0xb10}, - {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb35, 0xb39}, - {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb71, 0xb71}, - {0xb83, 0xb83}, {0xb85, 0xb8a}, {0xb8e, 0xb90}, {0xb92, 0xb95}, - {0xb99, 0xb9a}, {0xb9c, 0xb9c}, {0xb9e, 0xb9f}, {0xba3, 0xba4}, - {0xba8, 0xbaa}, {0xbae, 0xbb5}, {0xbb7, 0xbb9}, {0xc05, 0xc0c}, - {0xc0e, 0xc10}, {0xc12, 0xc28}, {0xc2a, 0xc33}, {0xc35, 0xc39}, - {0xc60, 0xc61}, {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8}, - {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xcbd, 0xcbd}, {0xcde, 0xcde}, - {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10}, {0xd12, 0xd28}, - {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xd85, 0xd96}, {0xd9a, 0xdb1}, - {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, {0xdc0, 0xdc6}, {0xe01, 0xe30}, - {0xe32, 0xe33}, {0xe40, 0xe46}, {0xe81, 0xe82}, {0xe84, 0xe84}, - {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d}, {0xe94, 0xe97}, - {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5}, {0xea7, 0xea7}, - {0xeaa, 0xeab}, {0xead, 0xeb0}, {0xeb2, 0xeb3}, {0xebd, 0xebd}, - {0xec0, 0xec4}, {0xec6, 0xec6}, {0xedc, 0xedd}, {0xf00, 0xf00}, - {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b}, {0x1000, 0x1021}, - {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055}, {0x10a0, 0x10c5}, - {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9}, - {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d}, - {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286}, - {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0}, - {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5}, - {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e}, - {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346}, - {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676}, - {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711}, - {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770}, - {0x1780, 0x17b3}, {0x17d7, 0x17d7}, {0x17dc, 0x17dc}, {0x1820, 0x1877}, - {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974}, - {0x1d00, 0x1d6b}, {0x1e00, 0x1e9b}, {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15}, - {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, - {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, - {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, - {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, - {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x2071, 0x2071}, {0x207f, 0x207f}, - {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210a, 0x2113}, {0x2115, 0x2115}, - {0x2119, 0x211d}, {0x2124, 0x2124}, {0x2126, 0x2126}, {0x2128, 0x2128}, - {0x212a, 0x212d}, {0x212f, 0x2131}, {0x2133, 0x2139}, {0x213d, 0x213f}, - {0x2145, 0x2149}, {0x3005, 0x3006}, {0x3031, 0x3035}, {0x303b, 0x303c}, - {0x3041, 0x3096}, {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff}, - {0x3105, 0x312c}, {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff}, - {0x3400, 0x3400}, {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5}, - {0xa000, 0xa48c}, {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d}, - {0xfa30, 0xfa6a}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb1d}, - {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e}, - {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d}, - {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, {0xfe70, 0xfe74}, - {0xfe76, 0xfefc}, {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xffbe}, +static const xmlChSRange xmlLS[] = {{0x41, 0x5a}, {0x61, 0x7a}, + {0xaa, 0xaa}, {0xb5, 0xb5}, {0xba, 0xba}, {0xc0, 0xd6}, {0xd8, 0xf6}, + {0xf8, 0x236}, {0x250, 0x2c1}, {0x2c6, 0x2d1}, {0x2e0, 0x2e4}, + {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x386, 0x386}, {0x388, 0x38a}, + {0x38c, 0x38c}, {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3f5}, + {0x3f7, 0x3fb}, {0x400, 0x481}, {0x48a, 0x4ce}, {0x4d0, 0x4f5}, + {0x4f8, 0x4f9}, {0x500, 0x50f}, {0x531, 0x556}, {0x559, 0x559}, + {0x561, 0x587}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, + {0x640, 0x64a}, {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5}, + {0x6e5, 0x6e6}, {0x6ee, 0x6ef}, {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, + {0x710, 0x710}, {0x712, 0x72f}, {0x74d, 0x74f}, {0x780, 0x7a5}, + {0x7b1, 0x7b1}, {0x904, 0x939}, {0x93d, 0x93d}, {0x950, 0x950}, + {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990}, {0x993, 0x9a8}, + {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, {0x9bd, 0x9bd}, + {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a}, + {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33}, + {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e}, + {0xa72, 0xa74}, {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8}, + {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9}, {0xabd, 0xabd}, + {0xad0, 0xad0}, {0xae0, 0xae1}, {0xb05, 0xb0c}, {0xb0f, 0xb10}, + {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb35, 0xb39}, + {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb71, 0xb71}, + {0xb83, 0xb83}, {0xb85, 0xb8a}, {0xb8e, 0xb90}, {0xb92, 0xb95}, + {0xb99, 0xb9a}, {0xb9c, 0xb9c}, {0xb9e, 0xb9f}, {0xba3, 0xba4}, + {0xba8, 0xbaa}, {0xbae, 0xbb5}, {0xbb7, 0xbb9}, {0xc05, 0xc0c}, + {0xc0e, 0xc10}, {0xc12, 0xc28}, {0xc2a, 0xc33}, {0xc35, 0xc39}, + {0xc60, 0xc61}, {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8}, + {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xcbd, 0xcbd}, {0xcde, 0xcde}, + {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10}, {0xd12, 0xd28}, + {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xd85, 0xd96}, {0xd9a, 0xdb1}, + {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, {0xdc0, 0xdc6}, {0xe01, 0xe30}, + {0xe32, 0xe33}, {0xe40, 0xe46}, {0xe81, 0xe82}, {0xe84, 0xe84}, + {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d}, {0xe94, 0xe97}, + {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5}, {0xea7, 0xea7}, + {0xeaa, 0xeab}, {0xead, 0xeb0}, {0xeb2, 0xeb3}, {0xebd, 0xebd}, + {0xec0, 0xec4}, {0xec6, 0xec6}, {0xedc, 0xedd}, {0xf00, 0xf00}, + {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b}, {0x1000, 0x1021}, + {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055}, {0x10a0, 0x10c5}, + {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9}, + {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d}, + {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286}, + {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0}, + {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5}, + {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e}, + {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346}, + {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676}, + {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711}, + {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770}, + {0x1780, 0x17b3}, {0x17d7, 0x17d7}, {0x17dc, 0x17dc}, {0x1820, 0x1877}, + {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974}, + {0x1d00, 0x1d6b}, {0x1e00, 0x1e9b}, {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15}, + {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, + {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, + {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, + {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, + {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x2071, 0x2071}, {0x207f, 0x207f}, + {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210a, 0x2113}, {0x2115, 0x2115}, + {0x2119, 0x211d}, {0x2124, 0x2124}, {0x2126, 0x2126}, {0x2128, 0x2128}, + {0x212a, 0x212d}, {0x212f, 0x2131}, {0x2133, 0x2139}, {0x213d, 0x213f}, + {0x2145, 0x2149}, {0x3005, 0x3006}, {0x3031, 0x3035}, {0x303b, 0x303c}, + {0x3041, 0x3096}, {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff}, + {0x3105, 0x312c}, {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff}, + {0x3400, 0x3400}, {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5}, + {0xa000, 0xa48c}, {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d}, + {0xfa30, 0xfa6a}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb1d}, + {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e}, + {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d}, + {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, {0xfe70, 0xfe74}, + {0xfe76, 0xfefc}, {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc} }; -static const xmlChLRange xmlLL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026}, - {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d}, - {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e}, - {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10400, 0x1049d}, - {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835}, - {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f}, - {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f}, - {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, - {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3}, - {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, - {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, - {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550}, - {0x1d552, 0x1d6a3}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da}, - {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, - {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788}, - {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9}, +static const xmlChLRange xmlLL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026}, + {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d}, + {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e}, + {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10400, 0x1049d}, + {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835}, + {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f}, + {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f}, + {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, + {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3}, + {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, + {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, + {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550}, + {0x1d552, 0x1d6a3}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da}, + {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, + {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788}, + {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9}, {0x20000, 0x20000}, {0x2a6d6, 0x2a6d6}, {0x2f800, 0x2fa1d} }; static xmlChRangeGroup xmlLG = {279,50,xmlLS,xmlLL}; -static const xmlChSRange xmlLlS[] = {{0x61, 0x7a}, {0xaa, 0xaa}, - {0xb5, 0xb5}, {0xba, 0xba}, {0xdf, 0xf6}, {0xf8, 0xff}, {0x101, 0x101}, - {0x103, 0x103}, {0x105, 0x105}, {0x107, 0x107}, {0x109, 0x109}, - {0x10b, 0x10b}, {0x10d, 0x10d}, {0x10f, 0x10f}, {0x111, 0x111}, - {0x113, 0x113}, {0x115, 0x115}, {0x117, 0x117}, {0x119, 0x119}, - {0x11b, 0x11b}, {0x11d, 0x11d}, {0x11f, 0x11f}, {0x121, 0x121}, - {0x123, 0x123}, {0x125, 0x125}, {0x127, 0x127}, {0x129, 0x129}, - {0x12b, 0x12b}, {0x12d, 0x12d}, {0x12f, 0x12f}, {0x131, 0x131}, - {0x133, 0x133}, {0x135, 0x135}, {0x137, 0x138}, {0x13a, 0x13a}, - {0x13c, 0x13c}, {0x13e, 0x13e}, {0x140, 0x140}, {0x142, 0x142}, - {0x144, 0x144}, {0x146, 0x146}, {0x148, 0x149}, {0x14b, 0x14b}, - {0x14d, 0x14d}, {0x14f, 0x14f}, {0x151, 0x151}, {0x153, 0x153}, - {0x155, 0x155}, {0x157, 0x157}, {0x159, 0x159}, {0x15b, 0x15b}, - {0x15d, 0x15d}, {0x15f, 0x15f}, {0x161, 0x161}, {0x163, 0x163}, - {0x165, 0x165}, {0x167, 0x167}, {0x169, 0x169}, {0x16b, 0x16b}, - {0x16d, 0x16d}, {0x16f, 0x16f}, {0x171, 0x171}, {0x173, 0x173}, - {0x175, 0x175}, {0x177, 0x177}, {0x17a, 0x17a}, {0x17c, 0x17c}, - {0x17e, 0x180}, {0x183, 0x183}, {0x185, 0x185}, {0x188, 0x188}, - {0x18c, 0x18d}, {0x192, 0x192}, {0x195, 0x195}, {0x199, 0x19b}, - {0x19e, 0x19e}, {0x1a1, 0x1a1}, {0x1a3, 0x1a3}, {0x1a5, 0x1a5}, - {0x1a8, 0x1a8}, {0x1aa, 0x1ab}, {0x1ad, 0x1ad}, {0x1b0, 0x1b0}, - {0x1b4, 0x1b4}, {0x1b6, 0x1b6}, {0x1b9, 0x1ba}, {0x1bd, 0x1bf}, - {0x1c6, 0x1c6}, {0x1c9, 0x1c9}, {0x1cc, 0x1cc}, {0x1ce, 0x1ce}, - {0x1d0, 0x1d0}, {0x1d2, 0x1d2}, {0x1d4, 0x1d4}, {0x1d6, 0x1d6}, - {0x1d8, 0x1d8}, {0x1da, 0x1da}, {0x1dc, 0x1dd}, {0x1df, 0x1df}, - {0x1e1, 0x1e1}, {0x1e3, 0x1e3}, {0x1e5, 0x1e5}, {0x1e7, 0x1e7}, - {0x1e9, 0x1e9}, {0x1eb, 0x1eb}, {0x1ed, 0x1ed}, {0x1ef, 0x1f0}, - {0x1f3, 0x1f3}, {0x1f5, 0x1f5}, {0x1f9, 0x1f9}, {0x1fb, 0x1fb}, - {0x1fd, 0x1fd}, {0x1ff, 0x1ff}, {0x201, 0x201}, {0x203, 0x203}, - {0x205, 0x205}, {0x207, 0x207}, {0x209, 0x209}, {0x20b, 0x20b}, - {0x20d, 0x20d}, {0x20f, 0x20f}, {0x211, 0x211}, {0x213, 0x213}, - {0x215, 0x215}, {0x217, 0x217}, {0x219, 0x219}, {0x21b, 0x21b}, - {0x21d, 0x21d}, {0x21f, 0x21f}, {0x221, 0x221}, {0x223, 0x223}, - {0x225, 0x225}, {0x227, 0x227}, {0x229, 0x229}, {0x22b, 0x22b}, - {0x22d, 0x22d}, {0x22f, 0x22f}, {0x231, 0x231}, {0x233, 0x236}, - {0x250, 0x2af}, {0x390, 0x390}, {0x3ac, 0x3ce}, {0x3d0, 0x3d1}, - {0x3d5, 0x3d7}, {0x3d9, 0x3d9}, {0x3db, 0x3db}, {0x3dd, 0x3dd}, - {0x3df, 0x3df}, {0x3e1, 0x3e1}, {0x3e3, 0x3e3}, {0x3e5, 0x3e5}, - {0x3e7, 0x3e7}, {0x3e9, 0x3e9}, {0x3eb, 0x3eb}, {0x3ed, 0x3ed}, - {0x3ef, 0x3f3}, {0x3f5, 0x3f5}, {0x3f8, 0x3f8}, {0x3fb, 0x3fb}, - {0x430, 0x45f}, {0x461, 0x461}, {0x463, 0x463}, {0x465, 0x465}, - {0x467, 0x467}, {0x469, 0x469}, {0x46b, 0x46b}, {0x46d, 0x46d}, - {0x46f, 0x46f}, {0x471, 0x471}, {0x473, 0x473}, {0x475, 0x475}, - {0x477, 0x477}, {0x479, 0x479}, {0x47b, 0x47b}, {0x47d, 0x47d}, - {0x47f, 0x47f}, {0x481, 0x481}, {0x48b, 0x48b}, {0x48d, 0x48d}, - {0x48f, 0x48f}, {0x491, 0x491}, {0x493, 0x493}, {0x495, 0x495}, - {0x497, 0x497}, {0x499, 0x499}, {0x49b, 0x49b}, {0x49d, 0x49d}, - {0x49f, 0x49f}, {0x4a1, 0x4a1}, {0x4a3, 0x4a3}, {0x4a5, 0x4a5}, - {0x4a7, 0x4a7}, {0x4a9, 0x4a9}, {0x4ab, 0x4ab}, {0x4ad, 0x4ad}, - {0x4af, 0x4af}, {0x4b1, 0x4b1}, {0x4b3, 0x4b3}, {0x4b5, 0x4b5}, - {0x4b7, 0x4b7}, {0x4b9, 0x4b9}, {0x4bb, 0x4bb}, {0x4bd, 0x4bd}, - {0x4bf, 0x4bf}, {0x4c2, 0x4c2}, {0x4c4, 0x4c4}, {0x4c6, 0x4c6}, - {0x4c8, 0x4c8}, {0x4ca, 0x4ca}, {0x4cc, 0x4cc}, {0x4ce, 0x4ce}, - {0x4d1, 0x4d1}, {0x4d3, 0x4d3}, {0x4d5, 0x4d5}, {0x4d7, 0x4d7}, - {0x4d9, 0x4d9}, {0x4db, 0x4db}, {0x4dd, 0x4dd}, {0x4df, 0x4df}, - {0x4e1, 0x4e1}, {0x4e3, 0x4e3}, {0x4e5, 0x4e5}, {0x4e7, 0x4e7}, - {0x4e9, 0x4e9}, {0x4eb, 0x4eb}, {0x4ed, 0x4ed}, {0x4ef, 0x4ef}, - {0x4f1, 0x4f1}, {0x4f3, 0x4f3}, {0x4f5, 0x4f5}, {0x4f9, 0x4f9}, - {0x501, 0x501}, {0x503, 0x503}, {0x505, 0x505}, {0x507, 0x507}, - {0x509, 0x509}, {0x50b, 0x50b}, {0x50d, 0x50d}, {0x50f, 0x50f}, - {0x561, 0x587}, {0x1d00, 0x1d2b}, {0x1d62, 0x1d6b}, {0x1e01, 0x1e01}, - {0x1e03, 0x1e03}, {0x1e05, 0x1e05}, {0x1e07, 0x1e07}, {0x1e09, 0x1e09}, - {0x1e0b, 0x1e0b}, {0x1e0d, 0x1e0d}, {0x1e0f, 0x1e0f}, {0x1e11, 0x1e11}, - {0x1e13, 0x1e13}, {0x1e15, 0x1e15}, {0x1e17, 0x1e17}, {0x1e19, 0x1e19}, - {0x1e1b, 0x1e1b}, {0x1e1d, 0x1e1d}, {0x1e1f, 0x1e1f}, {0x1e21, 0x1e21}, - {0x1e23, 0x1e23}, {0x1e25, 0x1e25}, {0x1e27, 0x1e27}, {0x1e29, 0x1e29}, - {0x1e2b, 0x1e2b}, {0x1e2d, 0x1e2d}, {0x1e2f, 0x1e2f}, {0x1e31, 0x1e31}, - {0x1e33, 0x1e33}, {0x1e35, 0x1e35}, {0x1e37, 0x1e37}, {0x1e39, 0x1e39}, - {0x1e3b, 0x1e3b}, {0x1e3d, 0x1e3d}, {0x1e3f, 0x1e3f}, {0x1e41, 0x1e41}, - {0x1e43, 0x1e43}, {0x1e45, 0x1e45}, {0x1e47, 0x1e47}, {0x1e49, 0x1e49}, - {0x1e4b, 0x1e4b}, {0x1e4d, 0x1e4d}, {0x1e4f, 0x1e4f}, {0x1e51, 0x1e51}, - {0x1e53, 0x1e53}, {0x1e55, 0x1e55}, {0x1e57, 0x1e57}, {0x1e59, 0x1e59}, - {0x1e5b, 0x1e5b}, {0x1e5d, 0x1e5d}, {0x1e5f, 0x1e5f}, {0x1e61, 0x1e61}, - {0x1e63, 0x1e63}, {0x1e65, 0x1e65}, {0x1e67, 0x1e67}, {0x1e69, 0x1e69}, - {0x1e6b, 0x1e6b}, {0x1e6d, 0x1e6d}, {0x1e6f, 0x1e6f}, {0x1e71, 0x1e71}, - {0x1e73, 0x1e73}, {0x1e75, 0x1e75}, {0x1e77, 0x1e77}, {0x1e79, 0x1e79}, - {0x1e7b, 0x1e7b}, {0x1e7d, 0x1e7d}, {0x1e7f, 0x1e7f}, {0x1e81, 0x1e81}, - {0x1e83, 0x1e83}, {0x1e85, 0x1e85}, {0x1e87, 0x1e87}, {0x1e89, 0x1e89}, - {0x1e8b, 0x1e8b}, {0x1e8d, 0x1e8d}, {0x1e8f, 0x1e8f}, {0x1e91, 0x1e91}, - {0x1e93, 0x1e93}, {0x1e95, 0x1e9b}, {0x1ea1, 0x1ea1}, {0x1ea3, 0x1ea3}, - {0x1ea5, 0x1ea5}, {0x1ea7, 0x1ea7}, {0x1ea9, 0x1ea9}, {0x1eab, 0x1eab}, - {0x1ead, 0x1ead}, {0x1eaf, 0x1eaf}, {0x1eb1, 0x1eb1}, {0x1eb3, 0x1eb3}, - {0x1eb5, 0x1eb5}, {0x1eb7, 0x1eb7}, {0x1eb9, 0x1eb9}, {0x1ebb, 0x1ebb}, - {0x1ebd, 0x1ebd}, {0x1ebf, 0x1ebf}, {0x1ec1, 0x1ec1}, {0x1ec3, 0x1ec3}, - {0x1ec5, 0x1ec5}, {0x1ec7, 0x1ec7}, {0x1ec9, 0x1ec9}, {0x1ecb, 0x1ecb}, - {0x1ecd, 0x1ecd}, {0x1ecf, 0x1ecf}, {0x1ed1, 0x1ed1}, {0x1ed3, 0x1ed3}, - {0x1ed5, 0x1ed5}, {0x1ed7, 0x1ed7}, {0x1ed9, 0x1ed9}, {0x1edb, 0x1edb}, - {0x1edd, 0x1edd}, {0x1edf, 0x1edf}, {0x1ee1, 0x1ee1}, {0x1ee3, 0x1ee3}, - {0x1ee5, 0x1ee5}, {0x1ee7, 0x1ee7}, {0x1ee9, 0x1ee9}, {0x1eeb, 0x1eeb}, - {0x1eed, 0x1eed}, {0x1eef, 0x1eef}, {0x1ef1, 0x1ef1}, {0x1ef3, 0x1ef3}, - {0x1ef5, 0x1ef5}, {0x1ef7, 0x1ef7}, {0x1ef9, 0x1ef9}, {0x1f00, 0x1f07}, - {0x1f10, 0x1f15}, {0x1f20, 0x1f27}, {0x1f30, 0x1f37}, {0x1f40, 0x1f45}, - {0x1f50, 0x1f57}, {0x1f60, 0x1f67}, {0x1f70, 0x1f7d}, {0x1f80, 0x1f87}, - {0x1f90, 0x1f97}, {0x1fa0, 0x1fa7}, {0x1fb0, 0x1fb4}, {0x1fb6, 0x1fb7}, - {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fc7}, {0x1fd0, 0x1fd3}, - {0x1fd6, 0x1fd7}, {0x1fe0, 0x1fe7}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ff7}, - {0x2071, 0x2071}, {0x207f, 0x207f}, {0x210a, 0x210a}, {0x210e, 0x210f}, - {0x2113, 0x2113}, {0x212f, 0x212f}, {0x2134, 0x2134}, {0x2139, 0x2139}, - {0x213d, 0x213d}, {0x2146, 0x2149}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, +static const xmlChSRange xmlLlS[] = {{0x61, 0x7a}, {0xaa, 0xaa}, + {0xb5, 0xb5}, {0xba, 0xba}, {0xdf, 0xf6}, {0xf8, 0xff}, {0x101, 0x101}, + {0x103, 0x103}, {0x105, 0x105}, {0x107, 0x107}, {0x109, 0x109}, + {0x10b, 0x10b}, {0x10d, 0x10d}, {0x10f, 0x10f}, {0x111, 0x111}, + {0x113, 0x113}, {0x115, 0x115}, {0x117, 0x117}, {0x119, 0x119}, + {0x11b, 0x11b}, {0x11d, 0x11d}, {0x11f, 0x11f}, {0x121, 0x121}, + {0x123, 0x123}, {0x125, 0x125}, {0x127, 0x127}, {0x129, 0x129}, + {0x12b, 0x12b}, {0x12d, 0x12d}, {0x12f, 0x12f}, {0x131, 0x131}, + {0x133, 0x133}, {0x135, 0x135}, {0x137, 0x138}, {0x13a, 0x13a}, + {0x13c, 0x13c}, {0x13e, 0x13e}, {0x140, 0x140}, {0x142, 0x142}, + {0x144, 0x144}, {0x146, 0x146}, {0x148, 0x149}, {0x14b, 0x14b}, + {0x14d, 0x14d}, {0x14f, 0x14f}, {0x151, 0x151}, {0x153, 0x153}, + {0x155, 0x155}, {0x157, 0x157}, {0x159, 0x159}, {0x15b, 0x15b}, + {0x15d, 0x15d}, {0x15f, 0x15f}, {0x161, 0x161}, {0x163, 0x163}, + {0x165, 0x165}, {0x167, 0x167}, {0x169, 0x169}, {0x16b, 0x16b}, + {0x16d, 0x16d}, {0x16f, 0x16f}, {0x171, 0x171}, {0x173, 0x173}, + {0x175, 0x175}, {0x177, 0x177}, {0x17a, 0x17a}, {0x17c, 0x17c}, + {0x17e, 0x180}, {0x183, 0x183}, {0x185, 0x185}, {0x188, 0x188}, + {0x18c, 0x18d}, {0x192, 0x192}, {0x195, 0x195}, {0x199, 0x19b}, + {0x19e, 0x19e}, {0x1a1, 0x1a1}, {0x1a3, 0x1a3}, {0x1a5, 0x1a5}, + {0x1a8, 0x1a8}, {0x1aa, 0x1ab}, {0x1ad, 0x1ad}, {0x1b0, 0x1b0}, + {0x1b4, 0x1b4}, {0x1b6, 0x1b6}, {0x1b9, 0x1ba}, {0x1bd, 0x1bf}, + {0x1c6, 0x1c6}, {0x1c9, 0x1c9}, {0x1cc, 0x1cc}, {0x1ce, 0x1ce}, + {0x1d0, 0x1d0}, {0x1d2, 0x1d2}, {0x1d4, 0x1d4}, {0x1d6, 0x1d6}, + {0x1d8, 0x1d8}, {0x1da, 0x1da}, {0x1dc, 0x1dd}, {0x1df, 0x1df}, + {0x1e1, 0x1e1}, {0x1e3, 0x1e3}, {0x1e5, 0x1e5}, {0x1e7, 0x1e7}, + {0x1e9, 0x1e9}, {0x1eb, 0x1eb}, {0x1ed, 0x1ed}, {0x1ef, 0x1f0}, + {0x1f3, 0x1f3}, {0x1f5, 0x1f5}, {0x1f9, 0x1f9}, {0x1fb, 0x1fb}, + {0x1fd, 0x1fd}, {0x1ff, 0x1ff}, {0x201, 0x201}, {0x203, 0x203}, + {0x205, 0x205}, {0x207, 0x207}, {0x209, 0x209}, {0x20b, 0x20b}, + {0x20d, 0x20d}, {0x20f, 0x20f}, {0x211, 0x211}, {0x213, 0x213}, + {0x215, 0x215}, {0x217, 0x217}, {0x219, 0x219}, {0x21b, 0x21b}, + {0x21d, 0x21d}, {0x21f, 0x21f}, {0x221, 0x221}, {0x223, 0x223}, + {0x225, 0x225}, {0x227, 0x227}, {0x229, 0x229}, {0x22b, 0x22b}, + {0x22d, 0x22d}, {0x22f, 0x22f}, {0x231, 0x231}, {0x233, 0x236}, + {0x250, 0x2af}, {0x390, 0x390}, {0x3ac, 0x3ce}, {0x3d0, 0x3d1}, + {0x3d5, 0x3d7}, {0x3d9, 0x3d9}, {0x3db, 0x3db}, {0x3dd, 0x3dd}, + {0x3df, 0x3df}, {0x3e1, 0x3e1}, {0x3e3, 0x3e3}, {0x3e5, 0x3e5}, + {0x3e7, 0x3e7}, {0x3e9, 0x3e9}, {0x3eb, 0x3eb}, {0x3ed, 0x3ed}, + {0x3ef, 0x3f3}, {0x3f5, 0x3f5}, {0x3f8, 0x3f8}, {0x3fb, 0x3fb}, + {0x430, 0x45f}, {0x461, 0x461}, {0x463, 0x463}, {0x465, 0x465}, + {0x467, 0x467}, {0x469, 0x469}, {0x46b, 0x46b}, {0x46d, 0x46d}, + {0x46f, 0x46f}, {0x471, 0x471}, {0x473, 0x473}, {0x475, 0x475}, + {0x477, 0x477}, {0x479, 0x479}, {0x47b, 0x47b}, {0x47d, 0x47d}, + {0x47f, 0x47f}, {0x481, 0x481}, {0x48b, 0x48b}, {0x48d, 0x48d}, + {0x48f, 0x48f}, {0x491, 0x491}, {0x493, 0x493}, {0x495, 0x495}, + {0x497, 0x497}, {0x499, 0x499}, {0x49b, 0x49b}, {0x49d, 0x49d}, + {0x49f, 0x49f}, {0x4a1, 0x4a1}, {0x4a3, 0x4a3}, {0x4a5, 0x4a5}, + {0x4a7, 0x4a7}, {0x4a9, 0x4a9}, {0x4ab, 0x4ab}, {0x4ad, 0x4ad}, + {0x4af, 0x4af}, {0x4b1, 0x4b1}, {0x4b3, 0x4b3}, {0x4b5, 0x4b5}, + {0x4b7, 0x4b7}, {0x4b9, 0x4b9}, {0x4bb, 0x4bb}, {0x4bd, 0x4bd}, + {0x4bf, 0x4bf}, {0x4c2, 0x4c2}, {0x4c4, 0x4c4}, {0x4c6, 0x4c6}, + {0x4c8, 0x4c8}, {0x4ca, 0x4ca}, {0x4cc, 0x4cc}, {0x4ce, 0x4ce}, + {0x4d1, 0x4d1}, {0x4d3, 0x4d3}, {0x4d5, 0x4d5}, {0x4d7, 0x4d7}, + {0x4d9, 0x4d9}, {0x4db, 0x4db}, {0x4dd, 0x4dd}, {0x4df, 0x4df}, + {0x4e1, 0x4e1}, {0x4e3, 0x4e3}, {0x4e5, 0x4e5}, {0x4e7, 0x4e7}, + {0x4e9, 0x4e9}, {0x4eb, 0x4eb}, {0x4ed, 0x4ed}, {0x4ef, 0x4ef}, + {0x4f1, 0x4f1}, {0x4f3, 0x4f3}, {0x4f5, 0x4f5}, {0x4f9, 0x4f9}, + {0x501, 0x501}, {0x503, 0x503}, {0x505, 0x505}, {0x507, 0x507}, + {0x509, 0x509}, {0x50b, 0x50b}, {0x50d, 0x50d}, {0x50f, 0x50f}, + {0x561, 0x587}, {0x1d00, 0x1d2b}, {0x1d62, 0x1d6b}, {0x1e01, 0x1e01}, + {0x1e03, 0x1e03}, {0x1e05, 0x1e05}, {0x1e07, 0x1e07}, {0x1e09, 0x1e09}, + {0x1e0b, 0x1e0b}, {0x1e0d, 0x1e0d}, {0x1e0f, 0x1e0f}, {0x1e11, 0x1e11}, + {0x1e13, 0x1e13}, {0x1e15, 0x1e15}, {0x1e17, 0x1e17}, {0x1e19, 0x1e19}, + {0x1e1b, 0x1e1b}, {0x1e1d, 0x1e1d}, {0x1e1f, 0x1e1f}, {0x1e21, 0x1e21}, + {0x1e23, 0x1e23}, {0x1e25, 0x1e25}, {0x1e27, 0x1e27}, {0x1e29, 0x1e29}, + {0x1e2b, 0x1e2b}, {0x1e2d, 0x1e2d}, {0x1e2f, 0x1e2f}, {0x1e31, 0x1e31}, + {0x1e33, 0x1e33}, {0x1e35, 0x1e35}, {0x1e37, 0x1e37}, {0x1e39, 0x1e39}, + {0x1e3b, 0x1e3b}, {0x1e3d, 0x1e3d}, {0x1e3f, 0x1e3f}, {0x1e41, 0x1e41}, + {0x1e43, 0x1e43}, {0x1e45, 0x1e45}, {0x1e47, 0x1e47}, {0x1e49, 0x1e49}, + {0x1e4b, 0x1e4b}, {0x1e4d, 0x1e4d}, {0x1e4f, 0x1e4f}, {0x1e51, 0x1e51}, + {0x1e53, 0x1e53}, {0x1e55, 0x1e55}, {0x1e57, 0x1e57}, {0x1e59, 0x1e59}, + {0x1e5b, 0x1e5b}, {0x1e5d, 0x1e5d}, {0x1e5f, 0x1e5f}, {0x1e61, 0x1e61}, + {0x1e63, 0x1e63}, {0x1e65, 0x1e65}, {0x1e67, 0x1e67}, {0x1e69, 0x1e69}, + {0x1e6b, 0x1e6b}, {0x1e6d, 0x1e6d}, {0x1e6f, 0x1e6f}, {0x1e71, 0x1e71}, + {0x1e73, 0x1e73}, {0x1e75, 0x1e75}, {0x1e77, 0x1e77}, {0x1e79, 0x1e79}, + {0x1e7b, 0x1e7b}, {0x1e7d, 0x1e7d}, {0x1e7f, 0x1e7f}, {0x1e81, 0x1e81}, + {0x1e83, 0x1e83}, {0x1e85, 0x1e85}, {0x1e87, 0x1e87}, {0x1e89, 0x1e89}, + {0x1e8b, 0x1e8b}, {0x1e8d, 0x1e8d}, {0x1e8f, 0x1e8f}, {0x1e91, 0x1e91}, + {0x1e93, 0x1e93}, {0x1e95, 0x1e9b}, {0x1ea1, 0x1ea1}, {0x1ea3, 0x1ea3}, + {0x1ea5, 0x1ea5}, {0x1ea7, 0x1ea7}, {0x1ea9, 0x1ea9}, {0x1eab, 0x1eab}, + {0x1ead, 0x1ead}, {0x1eaf, 0x1eaf}, {0x1eb1, 0x1eb1}, {0x1eb3, 0x1eb3}, + {0x1eb5, 0x1eb5}, {0x1eb7, 0x1eb7}, {0x1eb9, 0x1eb9}, {0x1ebb, 0x1ebb}, + {0x1ebd, 0x1ebd}, {0x1ebf, 0x1ebf}, {0x1ec1, 0x1ec1}, {0x1ec3, 0x1ec3}, + {0x1ec5, 0x1ec5}, {0x1ec7, 0x1ec7}, {0x1ec9, 0x1ec9}, {0x1ecb, 0x1ecb}, + {0x1ecd, 0x1ecd}, {0x1ecf, 0x1ecf}, {0x1ed1, 0x1ed1}, {0x1ed3, 0x1ed3}, + {0x1ed5, 0x1ed5}, {0x1ed7, 0x1ed7}, {0x1ed9, 0x1ed9}, {0x1edb, 0x1edb}, + {0x1edd, 0x1edd}, {0x1edf, 0x1edf}, {0x1ee1, 0x1ee1}, {0x1ee3, 0x1ee3}, + {0x1ee5, 0x1ee5}, {0x1ee7, 0x1ee7}, {0x1ee9, 0x1ee9}, {0x1eeb, 0x1eeb}, + {0x1eed, 0x1eed}, {0x1eef, 0x1eef}, {0x1ef1, 0x1ef1}, {0x1ef3, 0x1ef3}, + {0x1ef5, 0x1ef5}, {0x1ef7, 0x1ef7}, {0x1ef9, 0x1ef9}, {0x1f00, 0x1f07}, + {0x1f10, 0x1f15}, {0x1f20, 0x1f27}, {0x1f30, 0x1f37}, {0x1f40, 0x1f45}, + {0x1f50, 0x1f57}, {0x1f60, 0x1f67}, {0x1f70, 0x1f7d}, {0x1f80, 0x1f87}, + {0x1f90, 0x1f97}, {0x1fa0, 0x1fa7}, {0x1fb0, 0x1fb4}, {0x1fb6, 0x1fb7}, + {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fc7}, {0x1fd0, 0x1fd3}, + {0x1fd6, 0x1fd7}, {0x1fe0, 0x1fe7}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ff7}, + {0x2071, 0x2071}, {0x207f, 0x207f}, {0x210a, 0x210a}, {0x210e, 0x210f}, + {0x2113, 0x2113}, {0x212f, 0x212f}, {0x2134, 0x2134}, {0x2139, 0x2139}, + {0x213d, 0x213d}, {0x2146, 0x2149}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xff41, 0xff5a} }; -static const xmlChLRange xmlLlL[] = {{0x10428, 0x1044f}, {0x1d41a, 0x1d433}, - {0x1d44e, 0x1d454}, {0x1d456, 0x1d467}, {0x1d482, 0x1d49b}, - {0x1d4b6, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3}, - {0x1d4c5, 0x1d4cf}, {0x1d4ea, 0x1d503}, {0x1d51e, 0x1d537}, - {0x1d552, 0x1d56b}, {0x1d586, 0x1d59f}, {0x1d5ba, 0x1d5d3}, - {0x1d5ee, 0x1d607}, {0x1d622, 0x1d63b}, {0x1d656, 0x1d66f}, - {0x1d68a, 0x1d6a3}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6e1}, - {0x1d6fc, 0x1d714}, {0x1d716, 0x1d71b}, {0x1d736, 0x1d74e}, - {0x1d750, 0x1d755}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d78f}, +static const xmlChLRange xmlLlL[] = {{0x10428, 0x1044f}, {0x1d41a, 0x1d433}, + {0x1d44e, 0x1d454}, {0x1d456, 0x1d467}, {0x1d482, 0x1d49b}, + {0x1d4b6, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3}, + {0x1d4c5, 0x1d4cf}, {0x1d4ea, 0x1d503}, {0x1d51e, 0x1d537}, + {0x1d552, 0x1d56b}, {0x1d586, 0x1d59f}, {0x1d5ba, 0x1d5d3}, + {0x1d5ee, 0x1d607}, {0x1d622, 0x1d63b}, {0x1d656, 0x1d66f}, + {0x1d68a, 0x1d6a3}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6e1}, + {0x1d6fc, 0x1d714}, {0x1d716, 0x1d71b}, {0x1d736, 0x1d74e}, + {0x1d750, 0x1d755}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d78f}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9} }; static xmlChRangeGroup xmlLlG = {396,28,xmlLlS,xmlLlL}; -static const xmlChSRange xmlLmS[] = {{0x2b0, 0x2c1}, {0x2c6, 0x2d1}, - {0x2e0, 0x2e4}, {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x559, 0x559}, - {0x640, 0x640}, {0x6e5, 0x6e6}, {0xe46, 0xe46}, {0xec6, 0xec6}, - {0x17d7, 0x17d7}, {0x1843, 0x1843}, {0x1d2c, 0x1d61}, {0x3005, 0x3005}, - {0x3031, 0x3035}, {0x303b, 0x303b}, {0x309d, 0x309e}, {0x30fc, 0x30fe}, +static const xmlChSRange xmlLmS[] = {{0x2b0, 0x2c1}, {0x2c6, 0x2d1}, + {0x2e0, 0x2e4}, {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x559, 0x559}, + {0x640, 0x640}, {0x6e5, 0x6e6}, {0xe46, 0xe46}, {0xec6, 0xec6}, + {0x17d7, 0x17d7}, {0x1843, 0x1843}, {0x1d2c, 0x1d61}, {0x3005, 0x3005}, + {0x3031, 0x3035}, {0x303b, 0x303b}, {0x309d, 0x309e}, {0x30fc, 0x30fe}, {0xff70, 0xff70}, {0xff9e, 0xff9f} }; static xmlChRangeGroup xmlLmG = {20,0,xmlLmS,NULL}; -static const xmlChSRange xmlLoS[] = {{0x1bb, 0x1bb}, {0x1c0, 0x1c3}, - {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, {0x641, 0x64a}, - {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5}, {0x6ee, 0x6ef}, - {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, {0x710, 0x710}, {0x712, 0x72f}, - {0x74d, 0x74f}, {0x780, 0x7a5}, {0x7b1, 0x7b1}, {0x904, 0x939}, - {0x93d, 0x93d}, {0x950, 0x950}, {0x958, 0x961}, {0x985, 0x98c}, - {0x98f, 0x990}, {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, - {0x9b6, 0x9b9}, {0x9bd, 0x9bd}, {0x9dc, 0x9dd}, {0x9df, 0x9e1}, - {0x9f0, 0x9f1}, {0xa05, 0xa0a}, {0xa0f, 0xa10}, {0xa13, 0xa28}, - {0xa2a, 0xa30}, {0xa32, 0xa33}, {0xa35, 0xa36}, {0xa38, 0xa39}, - {0xa59, 0xa5c}, {0xa5e, 0xa5e}, {0xa72, 0xa74}, {0xa85, 0xa8d}, - {0xa8f, 0xa91}, {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, - {0xab5, 0xab9}, {0xabd, 0xabd}, {0xad0, 0xad0}, {0xae0, 0xae1}, - {0xb05, 0xb0c}, {0xb0f, 0xb10}, {0xb13, 0xb28}, {0xb2a, 0xb30}, - {0xb32, 0xb33}, {0xb35, 0xb39}, {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, - {0xb5f, 0xb61}, {0xb71, 0xb71}, {0xb83, 0xb83}, {0xb85, 0xb8a}, - {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c}, - {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5}, - {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28}, - {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c}, - {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, - {0xcbd, 0xcbd}, {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c}, - {0xd0e, 0xd10}, {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61}, - {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, - {0xdc0, 0xdc6}, {0xe01, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45}, - {0xe81, 0xe82}, {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a}, - {0xe8d, 0xe8d}, {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3}, - {0xea5, 0xea5}, {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeb0}, - {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xedc, 0xedd}, - {0xf00, 0xf00}, {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b}, - {0x1000, 0x1021}, {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055}, - {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9}, - {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d}, - {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286}, - {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0}, - {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5}, - {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e}, - {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346}, - {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676}, - {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711}, - {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770}, - {0x1780, 0x17b3}, {0x17dc, 0x17dc}, {0x1820, 0x1842}, {0x1844, 0x1877}, - {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974}, - {0x2135, 0x2138}, {0x3006, 0x3006}, {0x303c, 0x303c}, {0x3041, 0x3096}, - {0x309f, 0x309f}, {0x30a1, 0x30fa}, {0x30ff, 0x30ff}, {0x3105, 0x312c}, - {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff}, {0x3400, 0x3400}, - {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5}, {0xa000, 0xa48c}, - {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d}, {0xfa30, 0xfa6a}, - {0xfb1d, 0xfb1d}, {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, - {0xfb3e, 0xfb3e}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, - {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, - {0xfe70, 0xfe74}, {0xfe76, 0xfefc}, {0xff66, 0xff6f}, {0xff71, 0xff9d}, - {0xffa0, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, +static const xmlChSRange xmlLoS[] = {{0x1bb, 0x1bb}, {0x1c0, 0x1c3}, + {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, {0x641, 0x64a}, + {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5}, {0x6ee, 0x6ef}, + {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, {0x710, 0x710}, {0x712, 0x72f}, + {0x74d, 0x74f}, {0x780, 0x7a5}, {0x7b1, 0x7b1}, {0x904, 0x939}, + {0x93d, 0x93d}, {0x950, 0x950}, {0x958, 0x961}, {0x985, 0x98c}, + {0x98f, 0x990}, {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, + {0x9b6, 0x9b9}, {0x9bd, 0x9bd}, {0x9dc, 0x9dd}, {0x9df, 0x9e1}, + {0x9f0, 0x9f1}, {0xa05, 0xa0a}, {0xa0f, 0xa10}, {0xa13, 0xa28}, + {0xa2a, 0xa30}, {0xa32, 0xa33}, {0xa35, 0xa36}, {0xa38, 0xa39}, + {0xa59, 0xa5c}, {0xa5e, 0xa5e}, {0xa72, 0xa74}, {0xa85, 0xa8d}, + {0xa8f, 0xa91}, {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, + {0xab5, 0xab9}, {0xabd, 0xabd}, {0xad0, 0xad0}, {0xae0, 0xae1}, + {0xb05, 0xb0c}, {0xb0f, 0xb10}, {0xb13, 0xb28}, {0xb2a, 0xb30}, + {0xb32, 0xb33}, {0xb35, 0xb39}, {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, + {0xb5f, 0xb61}, {0xb71, 0xb71}, {0xb83, 0xb83}, {0xb85, 0xb8a}, + {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c}, + {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5}, + {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28}, + {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c}, + {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, + {0xcbd, 0xcbd}, {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c}, + {0xd0e, 0xd10}, {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61}, + {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, + {0xdc0, 0xdc6}, {0xe01, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45}, + {0xe81, 0xe82}, {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a}, + {0xe8d, 0xe8d}, {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3}, + {0xea5, 0xea5}, {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeb0}, + {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xedc, 0xedd}, + {0xf00, 0xf00}, {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b}, + {0x1000, 0x1021}, {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055}, + {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9}, + {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d}, + {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286}, + {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0}, + {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5}, + {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e}, + {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346}, + {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676}, + {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711}, + {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770}, + {0x1780, 0x17b3}, {0x17dc, 0x17dc}, {0x1820, 0x1842}, {0x1844, 0x1877}, + {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974}, + {0x2135, 0x2138}, {0x3006, 0x3006}, {0x303c, 0x303c}, {0x3041, 0x3096}, + {0x309f, 0x309f}, {0x30a1, 0x30fa}, {0x30ff, 0x30ff}, {0x3105, 0x312c}, + {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff}, {0x3400, 0x3400}, + {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5}, {0xa000, 0xa48c}, + {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d}, {0xfa30, 0xfa6a}, + {0xfb1d, 0xfb1d}, {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, + {0xfb3e, 0xfb3e}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, + {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, + {0xfe70, 0xfe74}, {0xfe76, 0xfefc}, {0xff66, 0xff6f}, {0xff71, 0xff9d}, + {0xffa0, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc} }; -static const xmlChLRange xmlLoL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026}, - {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d}, - {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e}, - {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10450, 0x1049d}, - {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835}, - {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f}, +static const xmlChLRange xmlLoL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026}, + {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d}, + {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e}, + {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10450, 0x1049d}, + {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835}, + {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f}, {0x20000, 0x20000}, {0x2a6d6, 0x2a6d6}, {0x2f800, 0x2fa1d} }; static xmlChRangeGroup xmlLoG = {211,20,xmlLoS,xmlLoL}; -static const xmlChSRange xmlLtS[] = {{0x1c5, 0x1c5}, {0x1c8, 0x1c8}, - {0x1cb, 0x1cb}, {0x1f2, 0x1f2}, {0x1f88, 0x1f8f}, {0x1f98, 0x1f9f}, +static const xmlChSRange xmlLtS[] = {{0x1c5, 0x1c5}, {0x1c8, 0x1c8}, + {0x1cb, 0x1cb}, {0x1f2, 0x1f2}, {0x1f88, 0x1f8f}, {0x1f98, 0x1f9f}, {0x1fa8, 0x1faf}, {0x1fbc, 0x1fbc}, {0x1fcc, 0x1fcc}, {0x1ffc, 0x1ffc} }; static xmlChRangeGroup xmlLtG = {10,0,xmlLtS,NULL}; -static const xmlChSRange xmlLuS[] = {{0x41, 0x5a}, {0xc0, 0xd6}, - {0xd8, 0xde}, {0x100, 0x100}, {0x102, 0x102}, {0x104, 0x104}, - {0x106, 0x106}, {0x108, 0x108}, {0x10a, 0x10a}, {0x10c, 0x10c}, - {0x10e, 0x10e}, {0x110, 0x110}, {0x112, 0x112}, {0x114, 0x114}, - {0x116, 0x116}, {0x118, 0x118}, {0x11a, 0x11a}, {0x11c, 0x11c}, - {0x11e, 0x11e}, {0x120, 0x120}, {0x122, 0x122}, {0x124, 0x124}, - {0x126, 0x126}, {0x128, 0x128}, {0x12a, 0x12a}, {0x12c, 0x12c}, - {0x12e, 0x12e}, {0x130, 0x130}, {0x132, 0x132}, {0x134, 0x134}, - {0x136, 0x136}, {0x139, 0x139}, {0x13b, 0x13b}, {0x13d, 0x13d}, - {0x13f, 0x13f}, {0x141, 0x141}, {0x143, 0x143}, {0x145, 0x145}, - {0x147, 0x147}, {0x14a, 0x14a}, {0x14c, 0x14c}, {0x14e, 0x14e}, - {0x150, 0x150}, {0x152, 0x152}, {0x154, 0x154}, {0x156, 0x156}, - {0x158, 0x158}, {0x15a, 0x15a}, {0x15c, 0x15c}, {0x15e, 0x15e}, - {0x160, 0x160}, {0x162, 0x162}, {0x164, 0x164}, {0x166, 0x166}, - {0x168, 0x168}, {0x16a, 0x16a}, {0x16c, 0x16c}, {0x16e, 0x16e}, - {0x170, 0x170}, {0x172, 0x172}, {0x174, 0x174}, {0x176, 0x176}, - {0x178, 0x179}, {0x17b, 0x17b}, {0x17d, 0x17d}, {0x181, 0x182}, - {0x184, 0x184}, {0x186, 0x187}, {0x189, 0x18b}, {0x18e, 0x191}, - {0x193, 0x194}, {0x196, 0x198}, {0x19c, 0x19d}, {0x19f, 0x1a0}, - {0x1a2, 0x1a2}, {0x1a4, 0x1a4}, {0x1a6, 0x1a7}, {0x1a9, 0x1a9}, - {0x1ac, 0x1ac}, {0x1ae, 0x1af}, {0x1b1, 0x1b3}, {0x1b5, 0x1b5}, - {0x1b7, 0x1b8}, {0x1bc, 0x1bc}, {0x1c4, 0x1c4}, {0x1c7, 0x1c7}, - {0x1ca, 0x1ca}, {0x1cd, 0x1cd}, {0x1cf, 0x1cf}, {0x1d1, 0x1d1}, - {0x1d3, 0x1d3}, {0x1d5, 0x1d5}, {0x1d7, 0x1d7}, {0x1d9, 0x1d9}, - {0x1db, 0x1db}, {0x1de, 0x1de}, {0x1e0, 0x1e0}, {0x1e2, 0x1e2}, - {0x1e4, 0x1e4}, {0x1e6, 0x1e6}, {0x1e8, 0x1e8}, {0x1ea, 0x1ea}, - {0x1ec, 0x1ec}, {0x1ee, 0x1ee}, {0x1f1, 0x1f1}, {0x1f4, 0x1f4}, - {0x1f6, 0x1f8}, {0x1fa, 0x1fa}, {0x1fc, 0x1fc}, {0x1fe, 0x1fe}, - {0x200, 0x200}, {0x202, 0x202}, {0x204, 0x204}, {0x206, 0x206}, - {0x208, 0x208}, {0x20a, 0x20a}, {0x20c, 0x20c}, {0x20e, 0x20e}, - {0x210, 0x210}, {0x212, 0x212}, {0x214, 0x214}, {0x216, 0x216}, - {0x218, 0x218}, {0x21a, 0x21a}, {0x21c, 0x21c}, {0x21e, 0x21e}, - {0x220, 0x220}, {0x222, 0x222}, {0x224, 0x224}, {0x226, 0x226}, - {0x228, 0x228}, {0x22a, 0x22a}, {0x22c, 0x22c}, {0x22e, 0x22e}, - {0x230, 0x230}, {0x232, 0x232}, {0x386, 0x386}, {0x388, 0x38a}, - {0x38c, 0x38c}, {0x38e, 0x38f}, {0x391, 0x3a1}, {0x3a3, 0x3ab}, - {0x3d2, 0x3d4}, {0x3d8, 0x3d8}, {0x3da, 0x3da}, {0x3dc, 0x3dc}, - {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3e2}, {0x3e4, 0x3e4}, - {0x3e6, 0x3e6}, {0x3e8, 0x3e8}, {0x3ea, 0x3ea}, {0x3ec, 0x3ec}, - {0x3ee, 0x3ee}, {0x3f4, 0x3f4}, {0x3f7, 0x3f7}, {0x3f9, 0x3fa}, - {0x400, 0x42f}, {0x460, 0x460}, {0x462, 0x462}, {0x464, 0x464}, - {0x466, 0x466}, {0x468, 0x468}, {0x46a, 0x46a}, {0x46c, 0x46c}, - {0x46e, 0x46e}, {0x470, 0x470}, {0x472, 0x472}, {0x474, 0x474}, - {0x476, 0x476}, {0x478, 0x478}, {0x47a, 0x47a}, {0x47c, 0x47c}, - {0x47e, 0x47e}, {0x480, 0x480}, {0x48a, 0x48a}, {0x48c, 0x48c}, - {0x48e, 0x48e}, {0x490, 0x490}, {0x492, 0x492}, {0x494, 0x494}, - {0x496, 0x496}, {0x498, 0x498}, {0x49a, 0x49a}, {0x49c, 0x49c}, - {0x49e, 0x49e}, {0x4a0, 0x4a0}, {0x4a2, 0x4a2}, {0x4a4, 0x4a4}, - {0x4a6, 0x4a6}, {0x4a8, 0x4a8}, {0x4aa, 0x4aa}, {0x4ac, 0x4ac}, - {0x4ae, 0x4ae}, {0x4b0, 0x4b0}, {0x4b2, 0x4b2}, {0x4b4, 0x4b4}, - {0x4b6, 0x4b6}, {0x4b8, 0x4b8}, {0x4ba, 0x4ba}, {0x4bc, 0x4bc}, - {0x4be, 0x4be}, {0x4c0, 0x4c1}, {0x4c3, 0x4c3}, {0x4c5, 0x4c5}, - {0x4c7, 0x4c7}, {0x4c9, 0x4c9}, {0x4cb, 0x4cb}, {0x4cd, 0x4cd}, - {0x4d0, 0x4d0}, {0x4d2, 0x4d2}, {0x4d4, 0x4d4}, {0x4d6, 0x4d6}, - {0x4d8, 0x4d8}, {0x4da, 0x4da}, {0x4dc, 0x4dc}, {0x4de, 0x4de}, - {0x4e0, 0x4e0}, {0x4e2, 0x4e2}, {0x4e4, 0x4e4}, {0x4e6, 0x4e6}, - {0x4e8, 0x4e8}, {0x4ea, 0x4ea}, {0x4ec, 0x4ec}, {0x4ee, 0x4ee}, - {0x4f0, 0x4f0}, {0x4f2, 0x4f2}, {0x4f4, 0x4f4}, {0x4f8, 0x4f8}, - {0x500, 0x500}, {0x502, 0x502}, {0x504, 0x504}, {0x506, 0x506}, - {0x508, 0x508}, {0x50a, 0x50a}, {0x50c, 0x50c}, {0x50e, 0x50e}, - {0x531, 0x556}, {0x10a0, 0x10c5}, {0x1e00, 0x1e00}, {0x1e02, 0x1e02}, - {0x1e04, 0x1e04}, {0x1e06, 0x1e06}, {0x1e08, 0x1e08}, {0x1e0a, 0x1e0a}, - {0x1e0c, 0x1e0c}, {0x1e0e, 0x1e0e}, {0x1e10, 0x1e10}, {0x1e12, 0x1e12}, - {0x1e14, 0x1e14}, {0x1e16, 0x1e16}, {0x1e18, 0x1e18}, {0x1e1a, 0x1e1a}, - {0x1e1c, 0x1e1c}, {0x1e1e, 0x1e1e}, {0x1e20, 0x1e20}, {0x1e22, 0x1e22}, - {0x1e24, 0x1e24}, {0x1e26, 0x1e26}, {0x1e28, 0x1e28}, {0x1e2a, 0x1e2a}, - {0x1e2c, 0x1e2c}, {0x1e2e, 0x1e2e}, {0x1e30, 0x1e30}, {0x1e32, 0x1e32}, - {0x1e34, 0x1e34}, {0x1e36, 0x1e36}, {0x1e38, 0x1e38}, {0x1e3a, 0x1e3a}, - {0x1e3c, 0x1e3c}, {0x1e3e, 0x1e3e}, {0x1e40, 0x1e40}, {0x1e42, 0x1e42}, - {0x1e44, 0x1e44}, {0x1e46, 0x1e46}, {0x1e48, 0x1e48}, {0x1e4a, 0x1e4a}, - {0x1e4c, 0x1e4c}, {0x1e4e, 0x1e4e}, {0x1e50, 0x1e50}, {0x1e52, 0x1e52}, - {0x1e54, 0x1e54}, {0x1e56, 0x1e56}, {0x1e58, 0x1e58}, {0x1e5a, 0x1e5a}, - {0x1e5c, 0x1e5c}, {0x1e5e, 0x1e5e}, {0x1e60, 0x1e60}, {0x1e62, 0x1e62}, - {0x1e64, 0x1e64}, {0x1e66, 0x1e66}, {0x1e68, 0x1e68}, {0x1e6a, 0x1e6a}, - {0x1e6c, 0x1e6c}, {0x1e6e, 0x1e6e}, {0x1e70, 0x1e70}, {0x1e72, 0x1e72}, - {0x1e74, 0x1e74}, {0x1e76, 0x1e76}, {0x1e78, 0x1e78}, {0x1e7a, 0x1e7a}, - {0x1e7c, 0x1e7c}, {0x1e7e, 0x1e7e}, {0x1e80, 0x1e80}, {0x1e82, 0x1e82}, - {0x1e84, 0x1e84}, {0x1e86, 0x1e86}, {0x1e88, 0x1e88}, {0x1e8a, 0x1e8a}, - {0x1e8c, 0x1e8c}, {0x1e8e, 0x1e8e}, {0x1e90, 0x1e90}, {0x1e92, 0x1e92}, - {0x1e94, 0x1e94}, {0x1ea0, 0x1ea0}, {0x1ea2, 0x1ea2}, {0x1ea4, 0x1ea4}, - {0x1ea6, 0x1ea6}, {0x1ea8, 0x1ea8}, {0x1eaa, 0x1eaa}, {0x1eac, 0x1eac}, - {0x1eae, 0x1eae}, {0x1eb0, 0x1eb0}, {0x1eb2, 0x1eb2}, {0x1eb4, 0x1eb4}, - {0x1eb6, 0x1eb6}, {0x1eb8, 0x1eb8}, {0x1eba, 0x1eba}, {0x1ebc, 0x1ebc}, - {0x1ebe, 0x1ebe}, {0x1ec0, 0x1ec0}, {0x1ec2, 0x1ec2}, {0x1ec4, 0x1ec4}, - {0x1ec6, 0x1ec6}, {0x1ec8, 0x1ec8}, {0x1eca, 0x1eca}, {0x1ecc, 0x1ecc}, - {0x1ece, 0x1ece}, {0x1ed0, 0x1ed0}, {0x1ed2, 0x1ed2}, {0x1ed4, 0x1ed4}, - {0x1ed6, 0x1ed6}, {0x1ed8, 0x1ed8}, {0x1eda, 0x1eda}, {0x1edc, 0x1edc}, - {0x1ede, 0x1ede}, {0x1ee0, 0x1ee0}, {0x1ee2, 0x1ee2}, {0x1ee4, 0x1ee4}, - {0x1ee6, 0x1ee6}, {0x1ee8, 0x1ee8}, {0x1eea, 0x1eea}, {0x1eec, 0x1eec}, - {0x1eee, 0x1eee}, {0x1ef0, 0x1ef0}, {0x1ef2, 0x1ef2}, {0x1ef4, 0x1ef4}, - {0x1ef6, 0x1ef6}, {0x1ef8, 0x1ef8}, {0x1f08, 0x1f0f}, {0x1f18, 0x1f1d}, - {0x1f28, 0x1f2f}, {0x1f38, 0x1f3f}, {0x1f48, 0x1f4d}, {0x1f59, 0x1f59}, - {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f5f}, {0x1f68, 0x1f6f}, - {0x1fb8, 0x1fbb}, {0x1fc8, 0x1fcb}, {0x1fd8, 0x1fdb}, {0x1fe8, 0x1fec}, - {0x1ff8, 0x1ffb}, {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210b, 0x210d}, - {0x2110, 0x2112}, {0x2115, 0x2115}, {0x2119, 0x211d}, {0x2124, 0x2124}, - {0x2126, 0x2126}, {0x2128, 0x2128}, {0x212a, 0x212d}, {0x2130, 0x2131}, +static const xmlChSRange xmlLuS[] = {{0x41, 0x5a}, {0xc0, 0xd6}, + {0xd8, 0xde}, {0x100, 0x100}, {0x102, 0x102}, {0x104, 0x104}, + {0x106, 0x106}, {0x108, 0x108}, {0x10a, 0x10a}, {0x10c, 0x10c}, + {0x10e, 0x10e}, {0x110, 0x110}, {0x112, 0x112}, {0x114, 0x114}, + {0x116, 0x116}, {0x118, 0x118}, {0x11a, 0x11a}, {0x11c, 0x11c}, + {0x11e, 0x11e}, {0x120, 0x120}, {0x122, 0x122}, {0x124, 0x124}, + {0x126, 0x126}, {0x128, 0x128}, {0x12a, 0x12a}, {0x12c, 0x12c}, + {0x12e, 0x12e}, {0x130, 0x130}, {0x132, 0x132}, {0x134, 0x134}, + {0x136, 0x136}, {0x139, 0x139}, {0x13b, 0x13b}, {0x13d, 0x13d}, + {0x13f, 0x13f}, {0x141, 0x141}, {0x143, 0x143}, {0x145, 0x145}, + {0x147, 0x147}, {0x14a, 0x14a}, {0x14c, 0x14c}, {0x14e, 0x14e}, + {0x150, 0x150}, {0x152, 0x152}, {0x154, 0x154}, {0x156, 0x156}, + {0x158, 0x158}, {0x15a, 0x15a}, {0x15c, 0x15c}, {0x15e, 0x15e}, + {0x160, 0x160}, {0x162, 0x162}, {0x164, 0x164}, {0x166, 0x166}, + {0x168, 0x168}, {0x16a, 0x16a}, {0x16c, 0x16c}, {0x16e, 0x16e}, + {0x170, 0x170}, {0x172, 0x172}, {0x174, 0x174}, {0x176, 0x176}, + {0x178, 0x179}, {0x17b, 0x17b}, {0x17d, 0x17d}, {0x181, 0x182}, + {0x184, 0x184}, {0x186, 0x187}, {0x189, 0x18b}, {0x18e, 0x191}, + {0x193, 0x194}, {0x196, 0x198}, {0x19c, 0x19d}, {0x19f, 0x1a0}, + {0x1a2, 0x1a2}, {0x1a4, 0x1a4}, {0x1a6, 0x1a7}, {0x1a9, 0x1a9}, + {0x1ac, 0x1ac}, {0x1ae, 0x1af}, {0x1b1, 0x1b3}, {0x1b5, 0x1b5}, + {0x1b7, 0x1b8}, {0x1bc, 0x1bc}, {0x1c4, 0x1c4}, {0x1c7, 0x1c7}, + {0x1ca, 0x1ca}, {0x1cd, 0x1cd}, {0x1cf, 0x1cf}, {0x1d1, 0x1d1}, + {0x1d3, 0x1d3}, {0x1d5, 0x1d5}, {0x1d7, 0x1d7}, {0x1d9, 0x1d9}, + {0x1db, 0x1db}, {0x1de, 0x1de}, {0x1e0, 0x1e0}, {0x1e2, 0x1e2}, + {0x1e4, 0x1e4}, {0x1e6, 0x1e6}, {0x1e8, 0x1e8}, {0x1ea, 0x1ea}, + {0x1ec, 0x1ec}, {0x1ee, 0x1ee}, {0x1f1, 0x1f1}, {0x1f4, 0x1f4}, + {0x1f6, 0x1f8}, {0x1fa, 0x1fa}, {0x1fc, 0x1fc}, {0x1fe, 0x1fe}, + {0x200, 0x200}, {0x202, 0x202}, {0x204, 0x204}, {0x206, 0x206}, + {0x208, 0x208}, {0x20a, 0x20a}, {0x20c, 0x20c}, {0x20e, 0x20e}, + {0x210, 0x210}, {0x212, 0x212}, {0x214, 0x214}, {0x216, 0x216}, + {0x218, 0x218}, {0x21a, 0x21a}, {0x21c, 0x21c}, {0x21e, 0x21e}, + {0x220, 0x220}, {0x222, 0x222}, {0x224, 0x224}, {0x226, 0x226}, + {0x228, 0x228}, {0x22a, 0x22a}, {0x22c, 0x22c}, {0x22e, 0x22e}, + {0x230, 0x230}, {0x232, 0x232}, {0x386, 0x386}, {0x388, 0x38a}, + {0x38c, 0x38c}, {0x38e, 0x38f}, {0x391, 0x3a1}, {0x3a3, 0x3ab}, + {0x3d2, 0x3d4}, {0x3d8, 0x3d8}, {0x3da, 0x3da}, {0x3dc, 0x3dc}, + {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3e2}, {0x3e4, 0x3e4}, + {0x3e6, 0x3e6}, {0x3e8, 0x3e8}, {0x3ea, 0x3ea}, {0x3ec, 0x3ec}, + {0x3ee, 0x3ee}, {0x3f4, 0x3f4}, {0x3f7, 0x3f7}, {0x3f9, 0x3fa}, + {0x400, 0x42f}, {0x460, 0x460}, {0x462, 0x462}, {0x464, 0x464}, + {0x466, 0x466}, {0x468, 0x468}, {0x46a, 0x46a}, {0x46c, 0x46c}, + {0x46e, 0x46e}, {0x470, 0x470}, {0x472, 0x472}, {0x474, 0x474}, + {0x476, 0x476}, {0x478, 0x478}, {0x47a, 0x47a}, {0x47c, 0x47c}, + {0x47e, 0x47e}, {0x480, 0x480}, {0x48a, 0x48a}, {0x48c, 0x48c}, + {0x48e, 0x48e}, {0x490, 0x490}, {0x492, 0x492}, {0x494, 0x494}, + {0x496, 0x496}, {0x498, 0x498}, {0x49a, 0x49a}, {0x49c, 0x49c}, + {0x49e, 0x49e}, {0x4a0, 0x4a0}, {0x4a2, 0x4a2}, {0x4a4, 0x4a4}, + {0x4a6, 0x4a6}, {0x4a8, 0x4a8}, {0x4aa, 0x4aa}, {0x4ac, 0x4ac}, + {0x4ae, 0x4ae}, {0x4b0, 0x4b0}, {0x4b2, 0x4b2}, {0x4b4, 0x4b4}, + {0x4b6, 0x4b6}, {0x4b8, 0x4b8}, {0x4ba, 0x4ba}, {0x4bc, 0x4bc}, + {0x4be, 0x4be}, {0x4c0, 0x4c1}, {0x4c3, 0x4c3}, {0x4c5, 0x4c5}, + {0x4c7, 0x4c7}, {0x4c9, 0x4c9}, {0x4cb, 0x4cb}, {0x4cd, 0x4cd}, + {0x4d0, 0x4d0}, {0x4d2, 0x4d2}, {0x4d4, 0x4d4}, {0x4d6, 0x4d6}, + {0x4d8, 0x4d8}, {0x4da, 0x4da}, {0x4dc, 0x4dc}, {0x4de, 0x4de}, + {0x4e0, 0x4e0}, {0x4e2, 0x4e2}, {0x4e4, 0x4e4}, {0x4e6, 0x4e6}, + {0x4e8, 0x4e8}, {0x4ea, 0x4ea}, {0x4ec, 0x4ec}, {0x4ee, 0x4ee}, + {0x4f0, 0x4f0}, {0x4f2, 0x4f2}, {0x4f4, 0x4f4}, {0x4f8, 0x4f8}, + {0x500, 0x500}, {0x502, 0x502}, {0x504, 0x504}, {0x506, 0x506}, + {0x508, 0x508}, {0x50a, 0x50a}, {0x50c, 0x50c}, {0x50e, 0x50e}, + {0x531, 0x556}, {0x10a0, 0x10c5}, {0x1e00, 0x1e00}, {0x1e02, 0x1e02}, + {0x1e04, 0x1e04}, {0x1e06, 0x1e06}, {0x1e08, 0x1e08}, {0x1e0a, 0x1e0a}, + {0x1e0c, 0x1e0c}, {0x1e0e, 0x1e0e}, {0x1e10, 0x1e10}, {0x1e12, 0x1e12}, + {0x1e14, 0x1e14}, {0x1e16, 0x1e16}, {0x1e18, 0x1e18}, {0x1e1a, 0x1e1a}, + {0x1e1c, 0x1e1c}, {0x1e1e, 0x1e1e}, {0x1e20, 0x1e20}, {0x1e22, 0x1e22}, + {0x1e24, 0x1e24}, {0x1e26, 0x1e26}, {0x1e28, 0x1e28}, {0x1e2a, 0x1e2a}, + {0x1e2c, 0x1e2c}, {0x1e2e, 0x1e2e}, {0x1e30, 0x1e30}, {0x1e32, 0x1e32}, + {0x1e34, 0x1e34}, {0x1e36, 0x1e36}, {0x1e38, 0x1e38}, {0x1e3a, 0x1e3a}, + {0x1e3c, 0x1e3c}, {0x1e3e, 0x1e3e}, {0x1e40, 0x1e40}, {0x1e42, 0x1e42}, + {0x1e44, 0x1e44}, {0x1e46, 0x1e46}, {0x1e48, 0x1e48}, {0x1e4a, 0x1e4a}, + {0x1e4c, 0x1e4c}, {0x1e4e, 0x1e4e}, {0x1e50, 0x1e50}, {0x1e52, 0x1e52}, + {0x1e54, 0x1e54}, {0x1e56, 0x1e56}, {0x1e58, 0x1e58}, {0x1e5a, 0x1e5a}, + {0x1e5c, 0x1e5c}, {0x1e5e, 0x1e5e}, {0x1e60, 0x1e60}, {0x1e62, 0x1e62}, + {0x1e64, 0x1e64}, {0x1e66, 0x1e66}, {0x1e68, 0x1e68}, {0x1e6a, 0x1e6a}, + {0x1e6c, 0x1e6c}, {0x1e6e, 0x1e6e}, {0x1e70, 0x1e70}, {0x1e72, 0x1e72}, + {0x1e74, 0x1e74}, {0x1e76, 0x1e76}, {0x1e78, 0x1e78}, {0x1e7a, 0x1e7a}, + {0x1e7c, 0x1e7c}, {0x1e7e, 0x1e7e}, {0x1e80, 0x1e80}, {0x1e82, 0x1e82}, + {0x1e84, 0x1e84}, {0x1e86, 0x1e86}, {0x1e88, 0x1e88}, {0x1e8a, 0x1e8a}, + {0x1e8c, 0x1e8c}, {0x1e8e, 0x1e8e}, {0x1e90, 0x1e90}, {0x1e92, 0x1e92}, + {0x1e94, 0x1e94}, {0x1ea0, 0x1ea0}, {0x1ea2, 0x1ea2}, {0x1ea4, 0x1ea4}, + {0x1ea6, 0x1ea6}, {0x1ea8, 0x1ea8}, {0x1eaa, 0x1eaa}, {0x1eac, 0x1eac}, + {0x1eae, 0x1eae}, {0x1eb0, 0x1eb0}, {0x1eb2, 0x1eb2}, {0x1eb4, 0x1eb4}, + {0x1eb6, 0x1eb6}, {0x1eb8, 0x1eb8}, {0x1eba, 0x1eba}, {0x1ebc, 0x1ebc}, + {0x1ebe, 0x1ebe}, {0x1ec0, 0x1ec0}, {0x1ec2, 0x1ec2}, {0x1ec4, 0x1ec4}, + {0x1ec6, 0x1ec6}, {0x1ec8, 0x1ec8}, {0x1eca, 0x1eca}, {0x1ecc, 0x1ecc}, + {0x1ece, 0x1ece}, {0x1ed0, 0x1ed0}, {0x1ed2, 0x1ed2}, {0x1ed4, 0x1ed4}, + {0x1ed6, 0x1ed6}, {0x1ed8, 0x1ed8}, {0x1eda, 0x1eda}, {0x1edc, 0x1edc}, + {0x1ede, 0x1ede}, {0x1ee0, 0x1ee0}, {0x1ee2, 0x1ee2}, {0x1ee4, 0x1ee4}, + {0x1ee6, 0x1ee6}, {0x1ee8, 0x1ee8}, {0x1eea, 0x1eea}, {0x1eec, 0x1eec}, + {0x1eee, 0x1eee}, {0x1ef0, 0x1ef0}, {0x1ef2, 0x1ef2}, {0x1ef4, 0x1ef4}, + {0x1ef6, 0x1ef6}, {0x1ef8, 0x1ef8}, {0x1f08, 0x1f0f}, {0x1f18, 0x1f1d}, + {0x1f28, 0x1f2f}, {0x1f38, 0x1f3f}, {0x1f48, 0x1f4d}, {0x1f59, 0x1f59}, + {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f5f}, {0x1f68, 0x1f6f}, + {0x1fb8, 0x1fbb}, {0x1fc8, 0x1fcb}, {0x1fd8, 0x1fdb}, {0x1fe8, 0x1fec}, + {0x1ff8, 0x1ffb}, {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210b, 0x210d}, + {0x2110, 0x2112}, {0x2115, 0x2115}, {0x2119, 0x211d}, {0x2124, 0x2124}, + {0x2126, 0x2126}, {0x2128, 0x2128}, {0x212a, 0x212d}, {0x2130, 0x2131}, {0x2133, 0x2133}, {0x213e, 0x213f}, {0x2145, 0x2145}, {0xff21, 0xff3a} }; -static const xmlChLRange xmlLuL[] = {{0x10400, 0x10427}, {0x1d400, 0x1d419}, - {0x1d434, 0x1d44d}, {0x1d468, 0x1d481}, {0x1d49c, 0x1d49c}, - {0x1d49e, 0x1d49f}, {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, - {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b5}, {0x1d4d0, 0x1d4e9}, - {0x1d504, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, - {0x1d516, 0x1d51c}, {0x1d538, 0x1d539}, {0x1d53b, 0x1d53e}, - {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550}, - {0x1d56c, 0x1d585}, {0x1d5a0, 0x1d5b9}, {0x1d5d4, 0x1d5ed}, - {0x1d608, 0x1d621}, {0x1d63c, 0x1d655}, {0x1d670, 0x1d689}, - {0x1d6a8, 0x1d6c0}, {0x1d6e2, 0x1d6fa}, {0x1d71c, 0x1d734}, +static const xmlChLRange xmlLuL[] = {{0x10400, 0x10427}, {0x1d400, 0x1d419}, + {0x1d434, 0x1d44d}, {0x1d468, 0x1d481}, {0x1d49c, 0x1d49c}, + {0x1d49e, 0x1d49f}, {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, + {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b5}, {0x1d4d0, 0x1d4e9}, + {0x1d504, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, + {0x1d516, 0x1d51c}, {0x1d538, 0x1d539}, {0x1d53b, 0x1d53e}, + {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550}, + {0x1d56c, 0x1d585}, {0x1d5a0, 0x1d5b9}, {0x1d5d4, 0x1d5ed}, + {0x1d608, 0x1d621}, {0x1d63c, 0x1d655}, {0x1d670, 0x1d689}, + {0x1d6a8, 0x1d6c0}, {0x1d6e2, 0x1d6fa}, {0x1d71c, 0x1d734}, {0x1d756, 0x1d76e}, {0x1d790, 0x1d7a8} }; static xmlChRangeGroup xmlLuG = {390,31,xmlLuS,xmlLuL}; -static const xmlChSRange xmlMS[] = {{0x300, 0x357}, {0x35d, 0x36f}, - {0x483, 0x486}, {0x488, 0x489}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, - {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, - {0x610, 0x615}, {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc}, - {0x6de, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711}, - {0x730, 0x74a}, {0x7a6, 0x7b0}, {0x901, 0x903}, {0x93c, 0x93c}, - {0x93e, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x983}, - {0x9bc, 0x9bc}, {0x9be, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd}, - {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa01, 0xa03}, {0xa3c, 0xa3c}, - {0xa3e, 0xa42}, {0xa47, 0xa48}, {0xa4b, 0xa4d}, {0xa70, 0xa71}, - {0xa81, 0xa83}, {0xabc, 0xabc}, {0xabe, 0xac5}, {0xac7, 0xac9}, - {0xacb, 0xacd}, {0xae2, 0xae3}, {0xb01, 0xb03}, {0xb3c, 0xb3c}, - {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d}, {0xb56, 0xb57}, - {0xb82, 0xb82}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, {0xbca, 0xbcd}, - {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44}, {0xc46, 0xc48}, - {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83}, {0xcbc, 0xcbc}, - {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6}, - {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d}, - {0xd57, 0xd57}, {0xd82, 0xd83}, {0xdca, 0xdca}, {0xdcf, 0xdd4}, - {0xdd6, 0xdd6}, {0xdd8, 0xddf}, {0xdf2, 0xdf3}, {0xe31, 0xe31}, - {0xe34, 0xe3a}, {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, - {0xebb, 0xebc}, {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35}, - {0xf37, 0xf37}, {0xf39, 0xf39}, {0xf3e, 0xf3f}, {0xf71, 0xf84}, - {0xf86, 0xf87}, {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6}, - {0x102c, 0x1032}, {0x1036, 0x1039}, {0x1056, 0x1059}, {0x1712, 0x1714}, - {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773}, {0x17b6, 0x17d3}, - {0x17dd, 0x17dd}, {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x192b}, - {0x1930, 0x193b}, {0x20d0, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a}, +static const xmlChSRange xmlMS[] = {{0x300, 0x357}, {0x35d, 0x36f}, + {0x483, 0x486}, {0x488, 0x489}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, + {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, + {0x610, 0x615}, {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc}, + {0x6de, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711}, + {0x730, 0x74a}, {0x7a6, 0x7b0}, {0x901, 0x903}, {0x93c, 0x93c}, + {0x93e, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x983}, + {0x9bc, 0x9bc}, {0x9be, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd}, + {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa01, 0xa03}, {0xa3c, 0xa3c}, + {0xa3e, 0xa42}, {0xa47, 0xa48}, {0xa4b, 0xa4d}, {0xa70, 0xa71}, + {0xa81, 0xa83}, {0xabc, 0xabc}, {0xabe, 0xac5}, {0xac7, 0xac9}, + {0xacb, 0xacd}, {0xae2, 0xae3}, {0xb01, 0xb03}, {0xb3c, 0xb3c}, + {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d}, {0xb56, 0xb57}, + {0xb82, 0xb82}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, {0xbca, 0xbcd}, + {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44}, {0xc46, 0xc48}, + {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83}, {0xcbc, 0xcbc}, + {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6}, + {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d}, + {0xd57, 0xd57}, {0xd82, 0xd83}, {0xdca, 0xdca}, {0xdcf, 0xdd4}, + {0xdd6, 0xdd6}, {0xdd8, 0xddf}, {0xdf2, 0xdf3}, {0xe31, 0xe31}, + {0xe34, 0xe3a}, {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, + {0xebb, 0xebc}, {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35}, + {0xf37, 0xf37}, {0xf39, 0xf39}, {0xf3e, 0xf3f}, {0xf71, 0xf84}, + {0xf86, 0xf87}, {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6}, + {0x102c, 0x1032}, {0x1036, 0x1039}, {0x1056, 0x1059}, {0x1712, 0x1714}, + {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773}, {0x17b6, 0x17d3}, + {0x17dd, 0x17dd}, {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x192b}, + {0x1930, 0x193b}, {0x20d0, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a}, {0xfb1e, 0xfb1e}, {0xfe00, 0xfe0f}, {0xfe20, 0xfe23} }; -static const xmlChLRange xmlML[] = {{0x1d165, 0x1d169}, {0x1d16d, 0x1d172}, - {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, +static const xmlChLRange xmlML[] = {{0x1d165, 0x1d169}, {0x1d16d, 0x1d172}, + {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, {0xe0100, 0xe01ef} }; static xmlChRangeGroup xmlMG = {113,6,xmlMS,xmlML}; -static const xmlChSRange xmlMcS[] = {{0x903, 0x903}, {0x93e, 0x940}, - {0x949, 0x94c}, {0x982, 0x983}, {0x9be, 0x9c0}, {0x9c7, 0x9c8}, - {0x9cb, 0x9cc}, {0x9d7, 0x9d7}, {0xa03, 0xa03}, {0xa3e, 0xa40}, - {0xa83, 0xa83}, {0xabe, 0xac0}, {0xac9, 0xac9}, {0xacb, 0xacc}, - {0xb02, 0xb03}, {0xb3e, 0xb3e}, {0xb40, 0xb40}, {0xb47, 0xb48}, - {0xb4b, 0xb4c}, {0xb57, 0xb57}, {0xbbe, 0xbbf}, {0xbc1, 0xbc2}, - {0xbc6, 0xbc8}, {0xbca, 0xbcc}, {0xbd7, 0xbd7}, {0xc01, 0xc03}, - {0xc41, 0xc44}, {0xc82, 0xc83}, {0xcbe, 0xcbe}, {0xcc0, 0xcc4}, - {0xcc7, 0xcc8}, {0xcca, 0xccb}, {0xcd5, 0xcd6}, {0xd02, 0xd03}, - {0xd3e, 0xd40}, {0xd46, 0xd48}, {0xd4a, 0xd4c}, {0xd57, 0xd57}, - {0xd82, 0xd83}, {0xdcf, 0xdd1}, {0xdd8, 0xddf}, {0xdf2, 0xdf3}, - {0xf3e, 0xf3f}, {0xf7f, 0xf7f}, {0x102c, 0x102c}, {0x1031, 0x1031}, - {0x1038, 0x1038}, {0x1056, 0x1057}, {0x17b6, 0x17b6}, {0x17be, 0x17c5}, - {0x17c7, 0x17c8}, {0x1923, 0x1926}, {0x1929, 0x192b}, {0x1930, 0x1931}, +static const xmlChSRange xmlMcS[] = {{0x903, 0x903}, {0x93e, 0x940}, + {0x949, 0x94c}, {0x982, 0x983}, {0x9be, 0x9c0}, {0x9c7, 0x9c8}, + {0x9cb, 0x9cc}, {0x9d7, 0x9d7}, {0xa03, 0xa03}, {0xa3e, 0xa40}, + {0xa83, 0xa83}, {0xabe, 0xac0}, {0xac9, 0xac9}, {0xacb, 0xacc}, + {0xb02, 0xb03}, {0xb3e, 0xb3e}, {0xb40, 0xb40}, {0xb47, 0xb48}, + {0xb4b, 0xb4c}, {0xb57, 0xb57}, {0xbbe, 0xbbf}, {0xbc1, 0xbc2}, + {0xbc6, 0xbc8}, {0xbca, 0xbcc}, {0xbd7, 0xbd7}, {0xc01, 0xc03}, + {0xc41, 0xc44}, {0xc82, 0xc83}, {0xcbe, 0xcbe}, {0xcc0, 0xcc4}, + {0xcc7, 0xcc8}, {0xcca, 0xccb}, {0xcd5, 0xcd6}, {0xd02, 0xd03}, + {0xd3e, 0xd40}, {0xd46, 0xd48}, {0xd4a, 0xd4c}, {0xd57, 0xd57}, + {0xd82, 0xd83}, {0xdcf, 0xdd1}, {0xdd8, 0xddf}, {0xdf2, 0xdf3}, + {0xf3e, 0xf3f}, {0xf7f, 0xf7f}, {0x102c, 0x102c}, {0x1031, 0x1031}, + {0x1038, 0x1038}, {0x1056, 0x1057}, {0x17b6, 0x17b6}, {0x17be, 0x17c5}, + {0x17c7, 0x17c8}, {0x1923, 0x1926}, {0x1929, 0x192b}, {0x1930, 0x1931}, {0x1933, 0x1938} }; static const xmlChLRange xmlMcL[] = {{0x1d165, 0x1d166}, {0x1d16d, 0x1d172} }; static xmlChRangeGroup xmlMcG = {55,2,xmlMcS,xmlMcL}; -static const xmlChSRange xmlMnS[] = {{0x300, 0x357}, {0x35d, 0x36f}, - {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, {0x5bb, 0x5bd}, - {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, {0x610, 0x615}, - {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6df, 0x6e4}, - {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711}, {0x730, 0x74a}, - {0x7a6, 0x7b0}, {0x901, 0x902}, {0x93c, 0x93c}, {0x941, 0x948}, - {0x94d, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x981}, - {0x9bc, 0x9bc}, {0x9c1, 0x9c4}, {0x9cd, 0x9cd}, {0x9e2, 0x9e3}, - {0xa01, 0xa02}, {0xa3c, 0xa3c}, {0xa41, 0xa42}, {0xa47, 0xa48}, - {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa82}, {0xabc, 0xabc}, - {0xac1, 0xac5}, {0xac7, 0xac8}, {0xacd, 0xacd}, {0xae2, 0xae3}, - {0xb01, 0xb01}, {0xb3c, 0xb3c}, {0xb3f, 0xb3f}, {0xb41, 0xb43}, - {0xb4d, 0xb4d}, {0xb56, 0xb56}, {0xb82, 0xb82}, {0xbc0, 0xbc0}, - {0xbcd, 0xbcd}, {0xc3e, 0xc40}, {0xc46, 0xc48}, {0xc4a, 0xc4d}, - {0xc55, 0xc56}, {0xcbc, 0xcbc}, {0xcbf, 0xcbf}, {0xcc6, 0xcc6}, - {0xccc, 0xccd}, {0xd41, 0xd43}, {0xd4d, 0xd4d}, {0xdca, 0xdca}, - {0xdd2, 0xdd4}, {0xdd6, 0xdd6}, {0xe31, 0xe31}, {0xe34, 0xe3a}, - {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc}, - {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37}, - {0xf39, 0xf39}, {0xf71, 0xf7e}, {0xf80, 0xf84}, {0xf86, 0xf87}, - {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6}, {0x102d, 0x1030}, - {0x1032, 0x1032}, {0x1036, 0x1037}, {0x1039, 0x1039}, {0x1058, 0x1059}, - {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773}, - {0x17b7, 0x17bd}, {0x17c6, 0x17c6}, {0x17c9, 0x17d3}, {0x17dd, 0x17dd}, - {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x1922}, {0x1927, 0x1928}, - {0x1932, 0x1932}, {0x1939, 0x193b}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, - {0x20e5, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a}, {0xfb1e, 0xfb1e}, +static const xmlChSRange xmlMnS[] = {{0x300, 0x357}, {0x35d, 0x36f}, + {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, {0x5bb, 0x5bd}, + {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, {0x610, 0x615}, + {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6df, 0x6e4}, + {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711}, {0x730, 0x74a}, + {0x7a6, 0x7b0}, {0x901, 0x902}, {0x93c, 0x93c}, {0x941, 0x948}, + {0x94d, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x981}, + {0x9bc, 0x9bc}, {0x9c1, 0x9c4}, {0x9cd, 0x9cd}, {0x9e2, 0x9e3}, + {0xa01, 0xa02}, {0xa3c, 0xa3c}, {0xa41, 0xa42}, {0xa47, 0xa48}, + {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa82}, {0xabc, 0xabc}, + {0xac1, 0xac5}, {0xac7, 0xac8}, {0xacd, 0xacd}, {0xae2, 0xae3}, + {0xb01, 0xb01}, {0xb3c, 0xb3c}, {0xb3f, 0xb3f}, {0xb41, 0xb43}, + {0xb4d, 0xb4d}, {0xb56, 0xb56}, {0xb82, 0xb82}, {0xbc0, 0xbc0}, + {0xbcd, 0xbcd}, {0xc3e, 0xc40}, {0xc46, 0xc48}, {0xc4a, 0xc4d}, + {0xc55, 0xc56}, {0xcbc, 0xcbc}, {0xcbf, 0xcbf}, {0xcc6, 0xcc6}, + {0xccc, 0xccd}, {0xd41, 0xd43}, {0xd4d, 0xd4d}, {0xdca, 0xdca}, + {0xdd2, 0xdd4}, {0xdd6, 0xdd6}, {0xe31, 0xe31}, {0xe34, 0xe3a}, + {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc}, + {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37}, + {0xf39, 0xf39}, {0xf71, 0xf7e}, {0xf80, 0xf84}, {0xf86, 0xf87}, + {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6}, {0x102d, 0x1030}, + {0x1032, 0x1032}, {0x1036, 0x1037}, {0x1039, 0x1039}, {0x1058, 0x1059}, + {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773}, + {0x17b7, 0x17bd}, {0x17c6, 0x17c6}, {0x17c9, 0x17d3}, {0x17dd, 0x17dd}, + {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x1922}, {0x1927, 0x1928}, + {0x1932, 0x1932}, {0x1939, 0x193b}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, + {0x20e5, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a}, {0xfb1e, 0xfb1e}, {0xfe00, 0xfe0f}, {0xfe20, 0xfe23} }; -static const xmlChLRange xmlMnL[] = {{0x1d167, 0x1d169}, {0x1d17b, 0x1d182}, +static const xmlChLRange xmlMnL[] = {{0x1d167, 0x1d169}, {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, {0xe0100, 0xe01ef} }; static xmlChRangeGroup xmlMnG = {108,5,xmlMnS,xmlMnL}; -static const xmlChSRange xmlNS[] = {{0x30, 0x39}, {0xb2, 0xb3}, - {0xb9, 0xb9}, {0xbc, 0xbe}, {0x660, 0x669}, {0x6f0, 0x6f9}, - {0x966, 0x96f}, {0x9e6, 0x9ef}, {0x9f4, 0x9f9}, {0xa66, 0xa6f}, - {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbf2}, {0xc66, 0xc6f}, - {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9}, - {0xf20, 0xf33}, {0x1040, 0x1049}, {0x1369, 0x137c}, {0x16ee, 0x16f0}, - {0x17e0, 0x17e9}, {0x17f0, 0x17f9}, {0x1810, 0x1819}, {0x1946, 0x194f}, - {0x2070, 0x2070}, {0x2074, 0x2079}, {0x2080, 0x2089}, {0x2153, 0x2183}, - {0x2460, 0x249b}, {0x24ea, 0x24ff}, {0x2776, 0x2793}, {0x3007, 0x3007}, - {0x3021, 0x3029}, {0x3038, 0x303a}, {0x3192, 0x3195}, {0x3220, 0x3229}, +static const xmlChSRange xmlNS[] = {{0x30, 0x39}, {0xb2, 0xb3}, + {0xb9, 0xb9}, {0xbc, 0xbe}, {0x660, 0x669}, {0x6f0, 0x6f9}, + {0x966, 0x96f}, {0x9e6, 0x9ef}, {0x9f4, 0x9f9}, {0xa66, 0xa6f}, + {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbf2}, {0xc66, 0xc6f}, + {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9}, + {0xf20, 0xf33}, {0x1040, 0x1049}, {0x1369, 0x137c}, {0x16ee, 0x16f0}, + {0x17e0, 0x17e9}, {0x17f0, 0x17f9}, {0x1810, 0x1819}, {0x1946, 0x194f}, + {0x2070, 0x2070}, {0x2074, 0x2079}, {0x2080, 0x2089}, {0x2153, 0x2183}, + {0x2460, 0x249b}, {0x24ea, 0x24ff}, {0x2776, 0x2793}, {0x3007, 0x3007}, + {0x3021, 0x3029}, {0x3038, 0x303a}, {0x3192, 0x3195}, {0x3220, 0x3229}, {0x3251, 0x325f}, {0x3280, 0x3289}, {0x32b1, 0x32bf}, {0xff10, 0xff19} }; -static const xmlChLRange xmlNL[] = {{0x10107, 0x10133}, {0x10320, 0x10323}, +static const xmlChLRange xmlNL[] = {{0x10107, 0x10133}, {0x10320, 0x10323}, {0x1034a, 0x1034a}, {0x104a0, 0x104a9}, {0x1d7ce, 0x1d7ff} }; static xmlChRangeGroup xmlNG = {42,5,xmlNS,xmlNL}; -static const xmlChSRange xmlNdS[] = {{0x30, 0x39}, {0x660, 0x669}, - {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f}, - {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f}, - {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9}, - {0xf20, 0xf29}, {0x1040, 0x1049}, {0x1369, 0x1371}, {0x17e0, 0x17e9}, +static const xmlChSRange xmlNdS[] = {{0x30, 0x39}, {0x660, 0x669}, + {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f}, + {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f}, + {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9}, + {0xf20, 0xf29}, {0x1040, 0x1049}, {0x1369, 0x1371}, {0x17e0, 0x17e9}, {0x1810, 0x1819}, {0x1946, 0x194f}, {0xff10, 0xff19} }; static const xmlChLRange xmlNdL[] = {{0x104a0, 0x104a9}, {0x1d7ce, 0x1d7ff} }; static xmlChRangeGroup xmlNdG = {21,2,xmlNdS,xmlNdL}; -static const xmlChSRange xmlNoS[] = {{0xb2, 0xb3}, {0xb9, 0xb9}, - {0xbc, 0xbe}, {0x9f4, 0x9f9}, {0xbf0, 0xbf2}, {0xf2a, 0xf33}, - {0x1372, 0x137c}, {0x17f0, 0x17f9}, {0x2070, 0x2070}, {0x2074, 0x2079}, - {0x2080, 0x2089}, {0x2153, 0x215f}, {0x2460, 0x249b}, {0x24ea, 0x24ff}, - {0x2776, 0x2793}, {0x3192, 0x3195}, {0x3220, 0x3229}, {0x3251, 0x325f}, +static const xmlChSRange xmlNoS[] = {{0xb2, 0xb3}, {0xb9, 0xb9}, + {0xbc, 0xbe}, {0x9f4, 0x9f9}, {0xbf0, 0xbf2}, {0xf2a, 0xf33}, + {0x1372, 0x137c}, {0x17f0, 0x17f9}, {0x2070, 0x2070}, {0x2074, 0x2079}, + {0x2080, 0x2089}, {0x2153, 0x215f}, {0x2460, 0x249b}, {0x24ea, 0x24ff}, + {0x2776, 0x2793}, {0x3192, 0x3195}, {0x3220, 0x3229}, {0x3251, 0x325f}, {0x3280, 0x3289}, {0x32b1, 0x32bf} }; static const xmlChLRange xmlNoL[] = {{0x10107, 0x10133}, {0x10320, 0x10323} }; static xmlChRangeGroup xmlNoG = {20,2,xmlNoS,xmlNoL}; -static const xmlChSRange xmlPS[] = {{0x21, 0x23}, {0x25, 0x2a}, - {0x2c, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40}, {0x5b, 0x5d}, {0x5f, 0x5f}, - {0x7b, 0x7b}, {0x7d, 0x7d}, {0xa1, 0xa1}, {0xab, 0xab}, {0xb7, 0xb7}, - {0xbb, 0xbb}, {0xbf, 0xbf}, {0x37e, 0x37e}, {0x387, 0x387}, - {0x55a, 0x55f}, {0x589, 0x58a}, {0x5be, 0x5be}, {0x5c0, 0x5c0}, - {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d}, {0x61b, 0x61b}, - {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4}, {0x700, 0x70d}, - {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4}, {0xe4f, 0xe4f}, - {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf3a, 0xf3d}, {0xf85, 0xf85}, - {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e}, - {0x169b, 0x169c}, {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6}, - {0x17d8, 0x17da}, {0x1800, 0x180a}, {0x1944, 0x1945}, {0x2010, 0x2027}, - {0x2030, 0x2043}, {0x2045, 0x2051}, {0x2053, 0x2054}, {0x2057, 0x2057}, - {0x207d, 0x207e}, {0x208d, 0x208e}, {0x2329, 0x232a}, {0x23b4, 0x23b6}, - {0x2768, 0x2775}, {0x27e6, 0x27eb}, {0x2983, 0x2998}, {0x29d8, 0x29db}, - {0x29fc, 0x29fd}, {0x3001, 0x3003}, {0x3008, 0x3011}, {0x3014, 0x301f}, - {0x3030, 0x3030}, {0x303d, 0x303d}, {0x30a0, 0x30a0}, {0x30fb, 0x30fb}, - {0xfd3e, 0xfd3f}, {0xfe30, 0xfe52}, {0xfe54, 0xfe61}, {0xfe63, 0xfe63}, - {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff0a}, - {0xff0c, 0xff0f}, {0xff1a, 0xff1b}, {0xff1f, 0xff20}, {0xff3b, 0xff3d}, +static const xmlChSRange xmlPS[] = {{0x21, 0x23}, {0x25, 0x2a}, + {0x2c, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40}, {0x5b, 0x5d}, {0x5f, 0x5f}, + {0x7b, 0x7b}, {0x7d, 0x7d}, {0xa1, 0xa1}, {0xab, 0xab}, {0xb7, 0xb7}, + {0xbb, 0xbb}, {0xbf, 0xbf}, {0x37e, 0x37e}, {0x387, 0x387}, + {0x55a, 0x55f}, {0x589, 0x58a}, {0x5be, 0x5be}, {0x5c0, 0x5c0}, + {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d}, {0x61b, 0x61b}, + {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4}, {0x700, 0x70d}, + {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4}, {0xe4f, 0xe4f}, + {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf3a, 0xf3d}, {0xf85, 0xf85}, + {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e}, + {0x169b, 0x169c}, {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6}, + {0x17d8, 0x17da}, {0x1800, 0x180a}, {0x1944, 0x1945}, {0x2010, 0x2027}, + {0x2030, 0x2043}, {0x2045, 0x2051}, {0x2053, 0x2054}, {0x2057, 0x2057}, + {0x207d, 0x207e}, {0x208d, 0x208e}, {0x2329, 0x232a}, {0x23b4, 0x23b6}, + {0x2768, 0x2775}, {0x27e6, 0x27eb}, {0x2983, 0x2998}, {0x29d8, 0x29db}, + {0x29fc, 0x29fd}, {0x3001, 0x3003}, {0x3008, 0x3011}, {0x3014, 0x301f}, + {0x3030, 0x3030}, {0x303d, 0x303d}, {0x30a0, 0x30a0}, {0x30fb, 0x30fb}, + {0xfd3e, 0xfd3f}, {0xfe30, 0xfe52}, {0xfe54, 0xfe61}, {0xfe63, 0xfe63}, + {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff0a}, + {0xff0c, 0xff0f}, {0xff1a, 0xff1b}, {0xff1f, 0xff20}, {0xff3b, 0xff3d}, {0xff3f, 0xff3f}, {0xff5b, 0xff5b}, {0xff5d, 0xff5d}, {0xff5f, 0xff65} }; static const xmlChLRange xmlPL[] = {{0x10100, 0x10101}, {0x1039f, 0x1039f} }; static xmlChRangeGroup xmlPG = {84,2,xmlPS,xmlPL}; -static const xmlChSRange xmlPdS[] = {{0x2d, 0x2d}, {0x58a, 0x58a}, - {0x1806, 0x1806}, {0x2010, 0x2015}, {0x301c, 0x301c}, {0x3030, 0x3030}, - {0x30a0, 0x30a0}, {0xfe31, 0xfe32}, {0xfe58, 0xfe58}, {0xfe63, 0xfe63}, +static const xmlChSRange xmlPdS[] = {{0x2d, 0x2d}, {0x58a, 0x58a}, + {0x1806, 0x1806}, {0x2010, 0x2015}, {0x301c, 0x301c}, {0x3030, 0x3030}, + {0x30a0, 0x30a0}, {0xfe31, 0xfe32}, {0xfe58, 0xfe58}, {0xfe63, 0xfe63}, {0xff0d, 0xff0d} }; static xmlChRangeGroup xmlPdG = {11,0,xmlPdS,NULL}; -static const xmlChSRange xmlPeS[] = {{0x29, 0x29}, {0x5d, 0x5d}, - {0x7d, 0x7d}, {0xf3b, 0xf3b}, {0xf3d, 0xf3d}, {0x169c, 0x169c}, - {0x2046, 0x2046}, {0x207e, 0x207e}, {0x208e, 0x208e}, {0x232a, 0x232a}, - {0x23b5, 0x23b5}, {0x2769, 0x2769}, {0x276b, 0x276b}, {0x276d, 0x276d}, - {0x276f, 0x276f}, {0x2771, 0x2771}, {0x2773, 0x2773}, {0x2775, 0x2775}, - {0x27e7, 0x27e7}, {0x27e9, 0x27e9}, {0x27eb, 0x27eb}, {0x2984, 0x2984}, - {0x2986, 0x2986}, {0x2988, 0x2988}, {0x298a, 0x298a}, {0x298c, 0x298c}, - {0x298e, 0x298e}, {0x2990, 0x2990}, {0x2992, 0x2992}, {0x2994, 0x2994}, - {0x2996, 0x2996}, {0x2998, 0x2998}, {0x29d9, 0x29d9}, {0x29db, 0x29db}, - {0x29fd, 0x29fd}, {0x3009, 0x3009}, {0x300b, 0x300b}, {0x300d, 0x300d}, - {0x300f, 0x300f}, {0x3011, 0x3011}, {0x3015, 0x3015}, {0x3017, 0x3017}, - {0x3019, 0x3019}, {0x301b, 0x301b}, {0x301e, 0x301f}, {0xfd3f, 0xfd3f}, - {0xfe36, 0xfe36}, {0xfe38, 0xfe38}, {0xfe3a, 0xfe3a}, {0xfe3c, 0xfe3c}, - {0xfe3e, 0xfe3e}, {0xfe40, 0xfe40}, {0xfe42, 0xfe42}, {0xfe44, 0xfe44}, - {0xfe48, 0xfe48}, {0xfe5a, 0xfe5a}, {0xfe5c, 0xfe5c}, {0xfe5e, 0xfe5e}, - {0xff09, 0xff09}, {0xff3d, 0xff3d}, {0xff5d, 0xff5d}, {0xff60, 0xff60}, +static const xmlChSRange xmlPeS[] = {{0x29, 0x29}, {0x5d, 0x5d}, + {0x7d, 0x7d}, {0xf3b, 0xf3b}, {0xf3d, 0xf3d}, {0x169c, 0x169c}, + {0x2046, 0x2046}, {0x207e, 0x207e}, {0x208e, 0x208e}, {0x232a, 0x232a}, + {0x23b5, 0x23b5}, {0x2769, 0x2769}, {0x276b, 0x276b}, {0x276d, 0x276d}, + {0x276f, 0x276f}, {0x2771, 0x2771}, {0x2773, 0x2773}, {0x2775, 0x2775}, + {0x27e7, 0x27e7}, {0x27e9, 0x27e9}, {0x27eb, 0x27eb}, {0x2984, 0x2984}, + {0x2986, 0x2986}, {0x2988, 0x2988}, {0x298a, 0x298a}, {0x298c, 0x298c}, + {0x298e, 0x298e}, {0x2990, 0x2990}, {0x2992, 0x2992}, {0x2994, 0x2994}, + {0x2996, 0x2996}, {0x2998, 0x2998}, {0x29d9, 0x29d9}, {0x29db, 0x29db}, + {0x29fd, 0x29fd}, {0x3009, 0x3009}, {0x300b, 0x300b}, {0x300d, 0x300d}, + {0x300f, 0x300f}, {0x3011, 0x3011}, {0x3015, 0x3015}, {0x3017, 0x3017}, + {0x3019, 0x3019}, {0x301b, 0x301b}, {0x301e, 0x301f}, {0xfd3f, 0xfd3f}, + {0xfe36, 0xfe36}, {0xfe38, 0xfe38}, {0xfe3a, 0xfe3a}, {0xfe3c, 0xfe3c}, + {0xfe3e, 0xfe3e}, {0xfe40, 0xfe40}, {0xfe42, 0xfe42}, {0xfe44, 0xfe44}, + {0xfe48, 0xfe48}, {0xfe5a, 0xfe5a}, {0xfe5c, 0xfe5c}, {0xfe5e, 0xfe5e}, + {0xff09, 0xff09}, {0xff3d, 0xff3d}, {0xff5d, 0xff5d}, {0xff60, 0xff60}, {0xff63, 0xff63} }; static xmlChRangeGroup xmlPeG = {63,0,xmlPeS,NULL}; -static const xmlChSRange xmlPoS[] = {{0x21, 0x23}, {0x25, 0x27}, - {0x2a, 0x2a}, {0x2c, 0x2c}, {0x2e, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40}, - {0x5c, 0x5c}, {0xa1, 0xa1}, {0xb7, 0xb7}, {0xbf, 0xbf}, {0x37e, 0x37e}, - {0x387, 0x387}, {0x55a, 0x55f}, {0x589, 0x589}, {0x5be, 0x5be}, - {0x5c0, 0x5c0}, {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d}, - {0x61b, 0x61b}, {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4}, - {0x700, 0x70d}, {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4}, - {0xe4f, 0xe4f}, {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf85, 0xf85}, - {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e}, - {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6}, {0x17d8, 0x17da}, - {0x1800, 0x1805}, {0x1807, 0x180a}, {0x1944, 0x1945}, {0x2016, 0x2017}, - {0x2020, 0x2027}, {0x2030, 0x2038}, {0x203b, 0x203e}, {0x2041, 0x2043}, - {0x2047, 0x2051}, {0x2053, 0x2053}, {0x2057, 0x2057}, {0x23b6, 0x23b6}, - {0x3001, 0x3003}, {0x303d, 0x303d}, {0xfe30, 0xfe30}, {0xfe45, 0xfe46}, - {0xfe49, 0xfe4c}, {0xfe50, 0xfe52}, {0xfe54, 0xfe57}, {0xfe5f, 0xfe61}, - {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff07}, - {0xff0a, 0xff0a}, {0xff0c, 0xff0c}, {0xff0e, 0xff0f}, {0xff1a, 0xff1b}, +static const xmlChSRange xmlPoS[] = {{0x21, 0x23}, {0x25, 0x27}, + {0x2a, 0x2a}, {0x2c, 0x2c}, {0x2e, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40}, + {0x5c, 0x5c}, {0xa1, 0xa1}, {0xb7, 0xb7}, {0xbf, 0xbf}, {0x37e, 0x37e}, + {0x387, 0x387}, {0x55a, 0x55f}, {0x589, 0x589}, {0x5be, 0x5be}, + {0x5c0, 0x5c0}, {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d}, + {0x61b, 0x61b}, {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4}, + {0x700, 0x70d}, {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4}, + {0xe4f, 0xe4f}, {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf85, 0xf85}, + {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e}, + {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6}, {0x17d8, 0x17da}, + {0x1800, 0x1805}, {0x1807, 0x180a}, {0x1944, 0x1945}, {0x2016, 0x2017}, + {0x2020, 0x2027}, {0x2030, 0x2038}, {0x203b, 0x203e}, {0x2041, 0x2043}, + {0x2047, 0x2051}, {0x2053, 0x2053}, {0x2057, 0x2057}, {0x23b6, 0x23b6}, + {0x3001, 0x3003}, {0x303d, 0x303d}, {0xfe30, 0xfe30}, {0xfe45, 0xfe46}, + {0xfe49, 0xfe4c}, {0xfe50, 0xfe52}, {0xfe54, 0xfe57}, {0xfe5f, 0xfe61}, + {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff07}, + {0xff0a, 0xff0a}, {0xff0c, 0xff0c}, {0xff0e, 0xff0f}, {0xff1a, 0xff1b}, {0xff1f, 0xff20}, {0xff3c, 0xff3c}, {0xff61, 0xff61}, {0xff64, 0xff64} }; static const xmlChLRange xmlPoL[] = {{0x10100, 0x10101}, {0x1039f, 0x1039f} }; static xmlChRangeGroup xmlPoG = {72,2,xmlPoS,xmlPoL}; -static const xmlChSRange xmlPsS[] = {{0x28, 0x28}, {0x5b, 0x5b}, - {0x7b, 0x7b}, {0xf3a, 0xf3a}, {0xf3c, 0xf3c}, {0x169b, 0x169b}, - {0x201a, 0x201a}, {0x201e, 0x201e}, {0x2045, 0x2045}, {0x207d, 0x207d}, - {0x208d, 0x208d}, {0x2329, 0x2329}, {0x23b4, 0x23b4}, {0x2768, 0x2768}, - {0x276a, 0x276a}, {0x276c, 0x276c}, {0x276e, 0x276e}, {0x2770, 0x2770}, - {0x2772, 0x2772}, {0x2774, 0x2774}, {0x27e6, 0x27e6}, {0x27e8, 0x27e8}, - {0x27ea, 0x27ea}, {0x2983, 0x2983}, {0x2985, 0x2985}, {0x2987, 0x2987}, - {0x2989, 0x2989}, {0x298b, 0x298b}, {0x298d, 0x298d}, {0x298f, 0x298f}, - {0x2991, 0x2991}, {0x2993, 0x2993}, {0x2995, 0x2995}, {0x2997, 0x2997}, - {0x29d8, 0x29d8}, {0x29da, 0x29da}, {0x29fc, 0x29fc}, {0x3008, 0x3008}, - {0x300a, 0x300a}, {0x300c, 0x300c}, {0x300e, 0x300e}, {0x3010, 0x3010}, - {0x3014, 0x3014}, {0x3016, 0x3016}, {0x3018, 0x3018}, {0x301a, 0x301a}, - {0x301d, 0x301d}, {0xfd3e, 0xfd3e}, {0xfe35, 0xfe35}, {0xfe37, 0xfe37}, - {0xfe39, 0xfe39}, {0xfe3b, 0xfe3b}, {0xfe3d, 0xfe3d}, {0xfe3f, 0xfe3f}, - {0xfe41, 0xfe41}, {0xfe43, 0xfe43}, {0xfe47, 0xfe47}, {0xfe59, 0xfe59}, - {0xfe5b, 0xfe5b}, {0xfe5d, 0xfe5d}, {0xff08, 0xff08}, {0xff3b, 0xff3b}, +static const xmlChSRange xmlPsS[] = {{0x28, 0x28}, {0x5b, 0x5b}, + {0x7b, 0x7b}, {0xf3a, 0xf3a}, {0xf3c, 0xf3c}, {0x169b, 0x169b}, + {0x201a, 0x201a}, {0x201e, 0x201e}, {0x2045, 0x2045}, {0x207d, 0x207d}, + {0x208d, 0x208d}, {0x2329, 0x2329}, {0x23b4, 0x23b4}, {0x2768, 0x2768}, + {0x276a, 0x276a}, {0x276c, 0x276c}, {0x276e, 0x276e}, {0x2770, 0x2770}, + {0x2772, 0x2772}, {0x2774, 0x2774}, {0x27e6, 0x27e6}, {0x27e8, 0x27e8}, + {0x27ea, 0x27ea}, {0x2983, 0x2983}, {0x2985, 0x2985}, {0x2987, 0x2987}, + {0x2989, 0x2989}, {0x298b, 0x298b}, {0x298d, 0x298d}, {0x298f, 0x298f}, + {0x2991, 0x2991}, {0x2993, 0x2993}, {0x2995, 0x2995}, {0x2997, 0x2997}, + {0x29d8, 0x29d8}, {0x29da, 0x29da}, {0x29fc, 0x29fc}, {0x3008, 0x3008}, + {0x300a, 0x300a}, {0x300c, 0x300c}, {0x300e, 0x300e}, {0x3010, 0x3010}, + {0x3014, 0x3014}, {0x3016, 0x3016}, {0x3018, 0x3018}, {0x301a, 0x301a}, + {0x301d, 0x301d}, {0xfd3e, 0xfd3e}, {0xfe35, 0xfe35}, {0xfe37, 0xfe37}, + {0xfe39, 0xfe39}, {0xfe3b, 0xfe3b}, {0xfe3d, 0xfe3d}, {0xfe3f, 0xfe3f}, + {0xfe41, 0xfe41}, {0xfe43, 0xfe43}, {0xfe47, 0xfe47}, {0xfe59, 0xfe59}, + {0xfe5b, 0xfe5b}, {0xfe5d, 0xfe5d}, {0xff08, 0xff08}, {0xff3b, 0xff3b}, {0xff5b, 0xff5b}, {0xff5f, 0xff5f}, {0xff62, 0xff62} }; static xmlChRangeGroup xmlPsG = {65,0,xmlPsS,NULL}; -static const xmlChSRange xmlSS[] = {{0x24, 0x24}, {0x2b, 0x2b}, - {0x3c, 0x3e}, {0x5e, 0x5e}, {0x60, 0x60}, {0x7c, 0x7c}, {0x7e, 0x7e}, - {0xa2, 0xa9}, {0xac, 0xac}, {0xae, 0xb1}, {0xb4, 0xb4}, {0xb6, 0xb6}, - {0xb8, 0xb8}, {0xd7, 0xd7}, {0xf7, 0xf7}, {0x2c2, 0x2c5}, - {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375}, - {0x384, 0x385}, {0x3f6, 0x3f6}, {0x482, 0x482}, {0x60e, 0x60f}, - {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9f2, 0x9f3}, {0x9fa, 0x9fa}, - {0xaf1, 0xaf1}, {0xb70, 0xb70}, {0xbf3, 0xbfa}, {0xe3f, 0xe3f}, - {0xf01, 0xf03}, {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34}, - {0xf36, 0xf36}, {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc}, - {0xfcf, 0xfcf}, {0x17db, 0x17db}, {0x1940, 0x1940}, {0x19e0, 0x19ff}, - {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, {0x1fdd, 0x1fdf}, - {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x2044, 0x2044}, {0x2052, 0x2052}, - {0x207a, 0x207c}, {0x208a, 0x208c}, {0x20a0, 0x20b1}, {0x2100, 0x2101}, - {0x2103, 0x2106}, {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118}, - {0x211e, 0x2123}, {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129}, - {0x212e, 0x212e}, {0x2132, 0x2132}, {0x213a, 0x213b}, {0x2140, 0x2144}, - {0x214a, 0x214b}, {0x2190, 0x2328}, {0x232b, 0x23b3}, {0x23b7, 0x23d0}, - {0x2400, 0x2426}, {0x2440, 0x244a}, {0x249c, 0x24e9}, {0x2500, 0x2617}, - {0x2619, 0x267d}, {0x2680, 0x2691}, {0x26a0, 0x26a1}, {0x2701, 0x2704}, - {0x2706, 0x2709}, {0x270c, 0x2727}, {0x2729, 0x274b}, {0x274d, 0x274d}, - {0x274f, 0x2752}, {0x2756, 0x2756}, {0x2758, 0x275e}, {0x2761, 0x2767}, - {0x2794, 0x2794}, {0x2798, 0x27af}, {0x27b1, 0x27be}, {0x27d0, 0x27e5}, - {0x27f0, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2b0d}, - {0x2e80, 0x2e99}, {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, - {0x3004, 0x3004}, {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037}, - {0x303e, 0x303f}, {0x309b, 0x309c}, {0x3190, 0x3191}, {0x3196, 0x319f}, - {0x3200, 0x321e}, {0x322a, 0x3243}, {0x3250, 0x3250}, {0x3260, 0x327d}, - {0x327f, 0x327f}, {0x328a, 0x32b0}, {0x32c0, 0x32fe}, {0x3300, 0x33ff}, - {0x4dc0, 0x4dff}, {0xa490, 0xa4c6}, {0xfb29, 0xfb29}, {0xfdfc, 0xfdfd}, - {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xfe69, 0xfe69}, {0xff04, 0xff04}, - {0xff0b, 0xff0b}, {0xff1c, 0xff1e}, {0xff3e, 0xff3e}, {0xff40, 0xff40}, - {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe0, 0xffe6}, {0xffe8, 0xffee}, +static const xmlChSRange xmlSS[] = {{0x24, 0x24}, {0x2b, 0x2b}, + {0x3c, 0x3e}, {0x5e, 0x5e}, {0x60, 0x60}, {0x7c, 0x7c}, {0x7e, 0x7e}, + {0xa2, 0xa9}, {0xac, 0xac}, {0xae, 0xb1}, {0xb4, 0xb4}, {0xb6, 0xb6}, + {0xb8, 0xb8}, {0xd7, 0xd7}, {0xf7, 0xf7}, {0x2c2, 0x2c5}, + {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375}, + {0x384, 0x385}, {0x3f6, 0x3f6}, {0x482, 0x482}, {0x60e, 0x60f}, + {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9f2, 0x9f3}, {0x9fa, 0x9fa}, + {0xaf1, 0xaf1}, {0xb70, 0xb70}, {0xbf3, 0xbfa}, {0xe3f, 0xe3f}, + {0xf01, 0xf03}, {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34}, + {0xf36, 0xf36}, {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc}, + {0xfcf, 0xfcf}, {0x17db, 0x17db}, {0x1940, 0x1940}, {0x19e0, 0x19ff}, + {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, {0x1fdd, 0x1fdf}, + {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x2044, 0x2044}, {0x2052, 0x2052}, + {0x207a, 0x207c}, {0x208a, 0x208c}, {0x20a0, 0x20b1}, {0x2100, 0x2101}, + {0x2103, 0x2106}, {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118}, + {0x211e, 0x2123}, {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129}, + {0x212e, 0x212e}, {0x2132, 0x2132}, {0x213a, 0x213b}, {0x2140, 0x2144}, + {0x214a, 0x214b}, {0x2190, 0x2328}, {0x232b, 0x23b3}, {0x23b7, 0x23d0}, + {0x2400, 0x2426}, {0x2440, 0x244a}, {0x249c, 0x24e9}, {0x2500, 0x2617}, + {0x2619, 0x267d}, {0x2680, 0x2691}, {0x26a0, 0x26a1}, {0x2701, 0x2704}, + {0x2706, 0x2709}, {0x270c, 0x2727}, {0x2729, 0x274b}, {0x274d, 0x274d}, + {0x274f, 0x2752}, {0x2756, 0x2756}, {0x2758, 0x275e}, {0x2761, 0x2767}, + {0x2794, 0x2794}, {0x2798, 0x27af}, {0x27b1, 0x27be}, {0x27d0, 0x27e5}, + {0x27f0, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2b0d}, + {0x2e80, 0x2e99}, {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, + {0x3004, 0x3004}, {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037}, + {0x303e, 0x303f}, {0x309b, 0x309c}, {0x3190, 0x3191}, {0x3196, 0x319f}, + {0x3200, 0x321e}, {0x322a, 0x3243}, {0x3250, 0x3250}, {0x3260, 0x327d}, + {0x327f, 0x327f}, {0x328a, 0x32b0}, {0x32c0, 0x32fe}, {0x3300, 0x33ff}, + {0x4dc0, 0x4dff}, {0xa490, 0xa4c6}, {0xfb29, 0xfb29}, {0xfdfc, 0xfdfd}, + {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xfe69, 0xfe69}, {0xff04, 0xff04}, + {0xff0b, 0xff0b}, {0xff1c, 0xff1e}, {0xff3e, 0xff3e}, {0xff40, 0xff40}, + {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe0, 0xffe6}, {0xffe8, 0xffee}, {0xfffc, 0xfffd} }; -static const xmlChLRange xmlSL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f}, - {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164}, - {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9}, - {0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356}, {0x1d6c1, 0x1d6c1}, - {0x1d6db, 0x1d6db}, {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715}, - {0x1d735, 0x1d735}, {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f}, +static const xmlChLRange xmlSL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f}, + {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164}, + {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9}, + {0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356}, {0x1d6c1, 0x1d6c1}, + {0x1d6db, 0x1d6db}, {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715}, + {0x1d735, 0x1d735}, {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f}, {0x1d789, 0x1d789}, {0x1d7a9, 0x1d7a9}, {0x1d7c3, 0x1d7c3} }; static xmlChRangeGroup xmlSG = {133,20,xmlSS,xmlSL}; -static const xmlChSRange xmlScS[] = {{0x24, 0x24}, {0xa2, 0xa5}, - {0x9f2, 0x9f3}, {0xaf1, 0xaf1}, {0xbf9, 0xbf9}, {0xe3f, 0xe3f}, - {0x17db, 0x17db}, {0x20a0, 0x20b1}, {0xfdfc, 0xfdfc}, {0xfe69, 0xfe69}, +static const xmlChSRange xmlScS[] = {{0x24, 0x24}, {0xa2, 0xa5}, + {0x9f2, 0x9f3}, {0xaf1, 0xaf1}, {0xbf9, 0xbf9}, {0xe3f, 0xe3f}, + {0x17db, 0x17db}, {0x20a0, 0x20b1}, {0xfdfc, 0xfdfc}, {0xfe69, 0xfe69}, {0xff04, 0xff04}, {0xffe0, 0xffe1}, {0xffe5, 0xffe6} }; static xmlChRangeGroup xmlScG = {13,0,xmlScS,NULL}; -static const xmlChSRange xmlSkS[] = {{0x5e, 0x5e}, {0x60, 0x60}, - {0xa8, 0xa8}, {0xaf, 0xaf}, {0xb4, 0xb4}, {0xb8, 0xb8}, {0x2c2, 0x2c5}, - {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375}, - {0x384, 0x385}, {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, - {0x1fdd, 0x1fdf}, {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x309b, 0x309c}, +static const xmlChSRange xmlSkS[] = {{0x5e, 0x5e}, {0x60, 0x60}, + {0xa8, 0xa8}, {0xaf, 0xaf}, {0xb4, 0xb4}, {0xb8, 0xb8}, {0x2c2, 0x2c5}, + {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375}, + {0x384, 0x385}, {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, + {0x1fdd, 0x1fdf}, {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x309b, 0x309c}, {0xff3e, 0xff3e}, {0xff40, 0xff40}, {0xffe3, 0xffe3} }; static xmlChRangeGroup xmlSkG = {22,0,xmlSkS,NULL}; -static const xmlChSRange xmlSmS[] = {{0x2b, 0x2b}, {0x3c, 0x3e}, - {0x7c, 0x7c}, {0x7e, 0x7e}, {0xac, 0xac}, {0xb1, 0xb1}, {0xd7, 0xd7}, - {0xf7, 0xf7}, {0x3f6, 0x3f6}, {0x2044, 0x2044}, {0x2052, 0x2052}, - {0x207a, 0x207c}, {0x208a, 0x208c}, {0x2140, 0x2144}, {0x214b, 0x214b}, - {0x2190, 0x2194}, {0x219a, 0x219b}, {0x21a0, 0x21a0}, {0x21a3, 0x21a3}, - {0x21a6, 0x21a6}, {0x21ae, 0x21ae}, {0x21ce, 0x21cf}, {0x21d2, 0x21d2}, - {0x21d4, 0x21d4}, {0x21f4, 0x22ff}, {0x2308, 0x230b}, {0x2320, 0x2321}, - {0x237c, 0x237c}, {0x239b, 0x23b3}, {0x25b7, 0x25b7}, {0x25c1, 0x25c1}, - {0x25f8, 0x25ff}, {0x266f, 0x266f}, {0x27d0, 0x27e5}, {0x27f0, 0x27ff}, - {0x2900, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2aff}, - {0xfb29, 0xfb29}, {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xff0b, 0xff0b}, - {0xff1c, 0xff1e}, {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe2, 0xffe2}, +static const xmlChSRange xmlSmS[] = {{0x2b, 0x2b}, {0x3c, 0x3e}, + {0x7c, 0x7c}, {0x7e, 0x7e}, {0xac, 0xac}, {0xb1, 0xb1}, {0xd7, 0xd7}, + {0xf7, 0xf7}, {0x3f6, 0x3f6}, {0x2044, 0x2044}, {0x2052, 0x2052}, + {0x207a, 0x207c}, {0x208a, 0x208c}, {0x2140, 0x2144}, {0x214b, 0x214b}, + {0x2190, 0x2194}, {0x219a, 0x219b}, {0x21a0, 0x21a0}, {0x21a3, 0x21a3}, + {0x21a6, 0x21a6}, {0x21ae, 0x21ae}, {0x21ce, 0x21cf}, {0x21d2, 0x21d2}, + {0x21d4, 0x21d4}, {0x21f4, 0x22ff}, {0x2308, 0x230b}, {0x2320, 0x2321}, + {0x237c, 0x237c}, {0x239b, 0x23b3}, {0x25b7, 0x25b7}, {0x25c1, 0x25c1}, + {0x25f8, 0x25ff}, {0x266f, 0x266f}, {0x27d0, 0x27e5}, {0x27f0, 0x27ff}, + {0x2900, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2aff}, + {0xfb29, 0xfb29}, {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xff0b, 0xff0b}, + {0xff1c, 0xff1e}, {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe2, 0xffe2}, {0xffe9, 0xffec} }; -static const xmlChLRange xmlSmL[] = {{0x1d6c1, 0x1d6c1}, {0x1d6db, 0x1d6db}, - {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715}, {0x1d735, 0x1d735}, - {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f}, {0x1d789, 0x1d789}, +static const xmlChLRange xmlSmL[] = {{0x1d6c1, 0x1d6c1}, {0x1d6db, 0x1d6db}, + {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715}, {0x1d735, 0x1d735}, + {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f}, {0x1d789, 0x1d789}, {0x1d7a9, 0x1d7a9}, {0x1d7c3, 0x1d7c3} }; static xmlChRangeGroup xmlSmG = {48,10,xmlSmS,xmlSmL}; -static const xmlChSRange xmlSoS[] = {{0xa6, 0xa7}, {0xa9, 0xa9}, - {0xae, 0xae}, {0xb0, 0xb0}, {0xb6, 0xb6}, {0x482, 0x482}, - {0x60e, 0x60f}, {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9fa, 0x9fa}, - {0xb70, 0xb70}, {0xbf3, 0xbf8}, {0xbfa, 0xbfa}, {0xf01, 0xf03}, - {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34}, {0xf36, 0xf36}, - {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc}, {0xfcf, 0xfcf}, - {0x1940, 0x1940}, {0x19e0, 0x19ff}, {0x2100, 0x2101}, {0x2103, 0x2106}, - {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118}, {0x211e, 0x2123}, - {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129}, {0x212e, 0x212e}, - {0x2132, 0x2132}, {0x213a, 0x213b}, {0x214a, 0x214a}, {0x2195, 0x2199}, - {0x219c, 0x219f}, {0x21a1, 0x21a2}, {0x21a4, 0x21a5}, {0x21a7, 0x21ad}, - {0x21af, 0x21cd}, {0x21d0, 0x21d1}, {0x21d3, 0x21d3}, {0x21d5, 0x21f3}, - {0x2300, 0x2307}, {0x230c, 0x231f}, {0x2322, 0x2328}, {0x232b, 0x237b}, - {0x237d, 0x239a}, {0x23b7, 0x23d0}, {0x2400, 0x2426}, {0x2440, 0x244a}, - {0x249c, 0x24e9}, {0x2500, 0x25b6}, {0x25b8, 0x25c0}, {0x25c2, 0x25f7}, - {0x2600, 0x2617}, {0x2619, 0x266e}, {0x2670, 0x267d}, {0x2680, 0x2691}, - {0x26a0, 0x26a1}, {0x2701, 0x2704}, {0x2706, 0x2709}, {0x270c, 0x2727}, - {0x2729, 0x274b}, {0x274d, 0x274d}, {0x274f, 0x2752}, {0x2756, 0x2756}, - {0x2758, 0x275e}, {0x2761, 0x2767}, {0x2794, 0x2794}, {0x2798, 0x27af}, - {0x27b1, 0x27be}, {0x2800, 0x28ff}, {0x2b00, 0x2b0d}, {0x2e80, 0x2e99}, - {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, {0x3004, 0x3004}, - {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037}, {0x303e, 0x303f}, - {0x3190, 0x3191}, {0x3196, 0x319f}, {0x3200, 0x321e}, {0x322a, 0x3243}, - {0x3250, 0x3250}, {0x3260, 0x327d}, {0x327f, 0x327f}, {0x328a, 0x32b0}, - {0x32c0, 0x32fe}, {0x3300, 0x33ff}, {0x4dc0, 0x4dff}, {0xa490, 0xa4c6}, - {0xfdfd, 0xfdfd}, {0xffe4, 0xffe4}, {0xffe8, 0xffe8}, {0xffed, 0xffee}, +static const xmlChSRange xmlSoS[] = {{0xa6, 0xa7}, {0xa9, 0xa9}, + {0xae, 0xae}, {0xb0, 0xb0}, {0xb6, 0xb6}, {0x482, 0x482}, + {0x60e, 0x60f}, {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9fa, 0x9fa}, + {0xb70, 0xb70}, {0xbf3, 0xbf8}, {0xbfa, 0xbfa}, {0xf01, 0xf03}, + {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34}, {0xf36, 0xf36}, + {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc}, {0xfcf, 0xfcf}, + {0x1940, 0x1940}, {0x19e0, 0x19ff}, {0x2100, 0x2101}, {0x2103, 0x2106}, + {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118}, {0x211e, 0x2123}, + {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129}, {0x212e, 0x212e}, + {0x2132, 0x2132}, {0x213a, 0x213b}, {0x214a, 0x214a}, {0x2195, 0x2199}, + {0x219c, 0x219f}, {0x21a1, 0x21a2}, {0x21a4, 0x21a5}, {0x21a7, 0x21ad}, + {0x21af, 0x21cd}, {0x21d0, 0x21d1}, {0x21d3, 0x21d3}, {0x21d5, 0x21f3}, + {0x2300, 0x2307}, {0x230c, 0x231f}, {0x2322, 0x2328}, {0x232b, 0x237b}, + {0x237d, 0x239a}, {0x23b7, 0x23d0}, {0x2400, 0x2426}, {0x2440, 0x244a}, + {0x249c, 0x24e9}, {0x2500, 0x25b6}, {0x25b8, 0x25c0}, {0x25c2, 0x25f7}, + {0x2600, 0x2617}, {0x2619, 0x266e}, {0x2670, 0x267d}, {0x2680, 0x2691}, + {0x26a0, 0x26a1}, {0x2701, 0x2704}, {0x2706, 0x2709}, {0x270c, 0x2727}, + {0x2729, 0x274b}, {0x274d, 0x274d}, {0x274f, 0x2752}, {0x2756, 0x2756}, + {0x2758, 0x275e}, {0x2761, 0x2767}, {0x2794, 0x2794}, {0x2798, 0x27af}, + {0x27b1, 0x27be}, {0x2800, 0x28ff}, {0x2b00, 0x2b0d}, {0x2e80, 0x2e99}, + {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, {0x3004, 0x3004}, + {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037}, {0x303e, 0x303f}, + {0x3190, 0x3191}, {0x3196, 0x319f}, {0x3200, 0x321e}, {0x322a, 0x3243}, + {0x3250, 0x3250}, {0x3260, 0x327d}, {0x327f, 0x327f}, {0x328a, 0x32b0}, + {0x32c0, 0x32fe}, {0x3300, 0x33ff}, {0x4dc0, 0x4dff}, {0xa490, 0xa4c6}, + {0xfdfd, 0xfdfd}, {0xffe4, 0xffe4}, {0xffe8, 0xffe8}, {0xffed, 0xffee}, {0xfffc, 0xfffd} }; -static const xmlChLRange xmlSoL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f}, - {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164}, - {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9}, +static const xmlChLRange xmlSoL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f}, + {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164}, + {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9}, {0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356} }; static xmlChRangeGroup xmlSoG = {103,10,xmlSoS,xmlSoL}; -static const xmlChSRange xmlZS[] = {{0x20, 0x20}, {0xa0, 0xa0}, - {0x1680, 0x1680}, {0x180e, 0x180e}, {0x2000, 0x200a}, {0x2028, 0x2029}, +static const xmlChSRange xmlZS[] = {{0x20, 0x20}, {0xa0, 0xa0}, + {0x1680, 0x1680}, {0x180e, 0x180e}, {0x2000, 0x200a}, {0x2028, 0x2029}, {0x202f, 0x202f}, {0x205f, 0x205f}, {0x3000, 0x3000} }; static xmlChRangeGroup xmlZG = {9,0,xmlZS,NULL}; @@ -961,7 +961,7 @@ else low = mid + 1; } - return (NULL); + return (NULL); } /** diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlversion.in.h gettext-0.19.7/gnulib-local/lib/libxml/xmlversion.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xmlversion.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlversion.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -29,28 +29,28 @@ * * the version string like "1.2.3" */ -#define LIBXML_DOTTED_VERSION "2.6.27" +#define LIBXML_DOTTED_VERSION "2.9.3" /** * LIBXML_VERSION: * * the version number: 1.2.3 value is 10203 */ -#define LIBXML_VERSION 20627 +#define LIBXML_VERSION 20903 /** * LIBXML_VERSION_STRING: * * the version number string, 1.2.3 value is "10203" */ -#define LIBXML_VERSION_STRING "20627" +#define LIBXML_VERSION_STRING "20903" /** * LIBXML_VERSION_EXTRA: * * extra version information, used to show a CVS compilation */ -#define LIBXML_VERSION_EXTRA "-CVS2872" +#define LIBXML_VERSION_EXTRA "-GITCVE-2015-8242" /** * LIBXML_TEST_VERSION: @@ -58,7 +58,7 @@ * Macro to check that the libxml version in use is compatible with * the version the software has been compiled against */ -#define LIBXML_TEST_VERSION xmlCheckVersion(20627); +#define LIBXML_TEST_VERSION xmlCheckVersion(20903); #ifndef VMS #if 0 @@ -91,12 +91,22 @@ * Whether the thread support is configured in */ #if 0 -#if defined(_REENTRANT) || defined(__MT__) || (_POSIX_C_SOURCE - 0 >= 199506L) +#if defined(_REENTRANT) || defined(__MT__) || \ + (defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE - 0 >= 199506L)) #define LIBXML_THREAD_ENABLED #endif #endif /** + * LIBXML_THREAD_ALLOC_ENABLED: + * + * Whether the allocation hooks are per-thread + */ +#if 0 +#define LIBXML_THREAD_ALLOC_ENABLED +#endif + +/** * LIBXML_TREE_ENABLED: * * Whether the DOM like tree manipulation API support is configured in @@ -236,7 +246,7 @@ * * Whether XPath is configured in */ -#if 0 +#if 1 #define LIBXML_XPATH_ENABLED #endif @@ -245,7 +255,7 @@ * * Whether XPointer is configured in */ -#if 0 +#if 1 #define LIBXML_XPTR_ENABLED #endif @@ -268,6 +278,15 @@ #endif /** + * LIBXML_ICU_ENABLED: + * + * Whether icu support is available + */ +#if 0 +#define LIBXML_ICU_ENABLED +#endif + +/** * LIBXML_ISO8859X_ENABLED: * * Whether ISO-8859-* support is made available in case iconv is not @@ -382,21 +401,86 @@ #endif /** - * ATTRIBUTE_UNUSED: + * LIBXML_LZMA_ENABLED: * - * Macro used to signal to GCC unused function parameters + * Whether the Lzma support is compiled in */ +#if 0 +#define LIBXML_LZMA_ENABLED +#endif + #ifdef __GNUC__ #ifdef HAVE_ANSIDECL_H #include #endif + +/** + * ATTRIBUTE_UNUSED: + * + * Macro used to signal to GCC unused function parameters + */ + #ifndef ATTRIBUTE_UNUSED -#define ATTRIBUTE_UNUSED __attribute__((unused)) +# if ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 7))) +# define ATTRIBUTE_UNUSED __attribute__((unused)) +# else +# define ATTRIBUTE_UNUSED +# endif #endif + +/** + * LIBXML_ATTR_ALLOC_SIZE: + * + * Macro used to indicate to GCC this is an allocator function + */ + +#ifndef LIBXML_ATTR_ALLOC_SIZE +# if (!defined(__clang__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))) +# define LIBXML_ATTR_ALLOC_SIZE(x) __attribute__((alloc_size(x))) +# else +# define LIBXML_ATTR_ALLOC_SIZE(x) +# endif #else -#define ATTRIBUTE_UNUSED +# define LIBXML_ATTR_ALLOC_SIZE(x) +#endif + +/** + * LIBXML_ATTR_FORMAT: + * + * Macro used to indicate to GCC the parameter are printf like + */ + +#ifndef LIBXML_ATTR_FORMAT +# if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3))) +# define LIBXML_ATTR_FORMAT(fmt,args) __attribute__((__format__(__printf__,fmt,args))) +# else +# define LIBXML_ATTR_FORMAT(fmt,args) +# endif +#else +# define LIBXML_ATTR_FORMAT(fmt,args) #endif +#else /* ! __GNUC__ */ +/** + * ATTRIBUTE_UNUSED: + * + * Macro used to signal to GCC unused function parameters + */ +#define ATTRIBUTE_UNUSED +/** + * LIBXML_ATTR_ALLOC_SIZE: + * + * Macro used to indicate to GCC this is an allocator function + */ +#define LIBXML_ATTR_ALLOC_SIZE(x) +/** + * LIBXML_ATTR_FORMAT: + * + * Macro used to indicate to GCC the parameter are printf like + */ +#define LIBXML_ATTR_FORMAT(fmt,args) +#endif /* __GNUC__ */ + #ifdef __cplusplus } #endif /* __cplusplus */ diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlwriter.c gettext-0.19.7/gnulib-local/lib/libxml/xmlwriter.c --- gettext-0.19.6/gnulib-local/lib/libxml/xmlwriter.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlwriter.c 2015-12-23 07:08:27.000000000 +0000 @@ -10,7 +10,6 @@ #define IN_LIBXML #include "libxml.h" - #include #include @@ -22,15 +21,18 @@ #include +#include "buf.h" +#include "enc.h" +#include "save.h" + #define B64LINELEN 72 #define B64CRLF "\r\n" /* * The following VA_COPY was coded following an example in * the Samba project. It may not be sufficient for some - * esoteric implementations of va_list (i.e. it may need - * something involving a memcpy) but (hopefully) will be - * sufficient for libxml2. + * esoteric implementations of va_list but (hopefully) will + * be sufficient for libxml2. */ #ifndef VA_COPY #ifdef HAVE_VA_COPY @@ -39,7 +41,12 @@ #ifdef HAVE___VA_COPY #define VA_COPY(dest,src) __va_copy(dest, src) #else - #define VA_COPY(dest,src) (dest) = (src) + #ifndef VA_LIST_IS_ARRAY + #define VA_COPY(dest,src) (dest) = (src) + #else + #include + #define VA_COPY(dest,src) memcpy((char *)(dest),(char *)(src),sizeof(va_list)) + #endif #endif #endif #endif @@ -98,6 +105,7 @@ static void xmlFreeTextWriterStackEntry(xmlLinkPtr lk); static int xmlCmpTextWriterStackEntry(const void *data0, const void *data1); +static int xmlTextWriterOutputNSDecl(xmlTextWriterPtr writer); static void xmlFreeTextWriterNsStackEntry(xmlLinkPtr lk); static int xmlCmpTextWriterNsStackEntry(const void *data0, const void *data1); @@ -129,10 +137,10 @@ if (ctxt != NULL) { __xmlRaiseError(NULL, NULL, NULL, ctxt->ctxt, NULL, XML_FROM_WRITER, error, XML_ERR_FATAL, - NULL, 0, NULL, NULL, NULL, 0, 0, msg); + NULL, 0, NULL, NULL, NULL, 0, 0, "%s", msg); } else { __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_WRITER, error, - XML_ERR_FATAL, NULL, 0, NULL, NULL, NULL, 0, 0, msg); + XML_ERR_FATAL, NULL, 0, NULL, NULL, NULL, 0, 0, "%s", msg); } } @@ -242,8 +250,8 @@ out = xmlOutputBufferCreateFilename(uri, NULL, compression); if (out == NULL) { - xmlWriterErrMsg(NULL, XML_ERR_NO_MEMORY, - "xmlNewTextWriterFilename : out of memory!\n"); + xmlWriterErrMsg(NULL, XML_IO_EIO, + "xmlNewTextWriterFilename : cannot open uri\n"); return NULL; } @@ -370,7 +378,7 @@ ctxt = xmlCreatePushParserCtxt(&saxHandler, NULL, NULL, 0, NULL); if (ctxt == NULL) { xmlWriterErrMsg(NULL, XML_ERR_INTERNAL_ERROR, - "xmlNewTextWriterDoc : error at xmlCreatePushParserCtxt!\n"); + "xmlNewTextWriterDoc : error at xmlCreatePushParserCtxt!\n"); return NULL; } /* @@ -389,8 +397,10 @@ ret = xmlNewTextWriterPushParser(ctxt, compression); if (ret == NULL) { + xmlFreeDoc(ctxt->myDoc); + xmlFreeParserCtxt(ctxt); xmlWriterErrMsg(NULL, XML_ERR_INTERNAL_ERROR, - "xmlNewTextWriterDoc : error at xmlNewTextWriterPushParser!\n"); + "xmlNewTextWriterDoc : error at xmlNewTextWriterPushParser!\n"); return NULL; } @@ -545,8 +555,10 @@ writer->out->encoder = encoder; if (encoder != NULL) { - writer->out->conv = xmlBufferCreateSize(4000); - xmlCharEncOutFunc(encoder, writer->out->conv, NULL); + if (writer->out->conv == NULL) { + writer->out->conv = xmlBufCreateSize(4000); + } + xmlCharEncOutput(writer->out, 1); if ((writer->doc != NULL) && (writer->doc->encoding == NULL)) writer->doc->encoding = xmlStrdup((xmlChar *)writer->out->encoder->name); } else @@ -624,9 +636,10 @@ * xmlTextWriterEndDocument: * @writer: the xmlTextWriterPtr * - * End an xml document. All open elements are closed + * End an xml document. All open elements are closed, and + * the content is flushed to the output. * - * Returns the bytes written (may be 0 because of buffering) or -1 in case of error + * Returns the bytes written or -1 in case of error */ int xmlTextWriterEndDocument(xmlTextWriterPtr writer) @@ -700,6 +713,9 @@ return -1; sum += count; } + + sum += xmlTextWriterFlush(writer); + return sum; } @@ -735,6 +751,11 @@ case XML_TEXTWRITER_NONE: break; case XML_TEXTWRITER_NAME: + /* Output namespace declarations */ + count = xmlTextWriterOutputNSDecl(writer); + if (count < 0) + return -1; + sum += count; count = xmlOutputBufferWriteString(writer->out, ">"); if (count < 0) return -1; @@ -887,8 +908,8 @@ } buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteComment(writer, buf); @@ -966,6 +987,11 @@ sum += count; /* fallthrough */ case XML_TEXTWRITER_NAME: + /* Output namespace declarations */ + count = xmlTextWriterOutputNSDecl(writer); + if (count < 0) + return -1; + sum += count; count = xmlOutputBufferWriteString(writer->out, ">"); if (count < 0) return -1; @@ -1056,17 +1082,31 @@ sum += count; if (namespaceURI != 0) { + xmlTextWriterNsStackEntry *p = (xmlTextWriterNsStackEntry *) + xmlMalloc(sizeof(xmlTextWriterNsStackEntry)); + if (p == 0) { + xmlWriterErrMsg(writer, XML_ERR_NO_MEMORY, + "xmlTextWriterStartElementNS : out of memory!\n"); + return -1; + } + buf = xmlStrdup(BAD_CAST "xmlns"); if (prefix != 0) { buf = xmlStrcat(buf, BAD_CAST ":"); buf = xmlStrcat(buf, prefix); } - count = xmlTextWriterWriteAttribute(writer, buf, namespaceURI); - xmlFree(buf); - if (count < 0) + p->prefix = buf; + p->uri = xmlStrdup(namespaceURI); + if (p->uri == 0) { + xmlWriterErrMsg(writer, XML_ERR_NO_MEMORY, + "xmlTextWriterStartElementNS : out of memory!\n"); + xmlFree(p); return -1; - sum += count; + } + p->elem = xmlListFront(writer->nodes); + + xmlListPushFront(writer->nsstack, p); } return sum; @@ -1092,22 +1132,37 @@ return -1; lk = xmlListFront(writer->nodes); - if (lk == 0) + if (lk == 0) { + xmlListDelete(writer->nsstack); + writer->nsstack = NULL; return -1; + } p = (xmlTextWriterStackEntry *) xmlLinkGetData(lk); - if (p == 0) + if (p == 0) { + xmlListDelete(writer->nsstack); + writer->nsstack = NULL; return -1; + } sum = 0; switch (p->state) { case XML_TEXTWRITER_ATTRIBUTE: count = xmlTextWriterEndAttribute(writer); - if (count < 0) + if (count < 0) { + xmlListDelete(writer->nsstack); + writer->nsstack = NULL; return -1; + } sum += count; /* fallthrough */ case XML_TEXTWRITER_NAME: + /* Output namespace declarations */ + count = xmlTextWriterOutputNSDecl(writer); + if (count < 0) + return -1; + sum += count; + if (writer->indent) /* next element needs indent */ writer->doindent = 1; count = xmlOutputBufferWriteString(writer->out, "/>"); @@ -1185,12 +1240,26 @@ sum += count; /* fallthrough */ case XML_TEXTWRITER_NAME: + /* Output namespace declarations */ + count = xmlTextWriterOutputNSDecl(writer); + if (count < 0) + return -1; + sum += count; + count = xmlOutputBufferWriteString(writer->out, ">"); if (count < 0) return -1; sum += count; + if (writer->indent) + writer->doindent = 0; /* fallthrough */ case XML_TEXTWRITER_TEXT: + if ((writer->indent) && (writer->doindent)) { + count = xmlTextWriterWriteIndent(writer); + sum += count; + writer->doindent = 1; + } else + writer->doindent = 1; count = xmlOutputBufferWriteString(writer->out, "indent) { + count = xmlOutputBufferWriteString(writer->out, "\n"); + sum += count; + } + xmlListPopFront(writer->nodes); return sum; } @@ -1259,8 +1333,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteRaw(writer, buf); @@ -1388,8 +1462,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteString(writer, buf); @@ -1435,8 +1509,8 @@ break; case XML_TEXTWRITER_ATTRIBUTE: buf = NULL; - xmlAttrSerializeTxtContent(writer->out->buffer, writer->doc, - NULL, content); + xmlBufAttrSerializeTxtContent(writer->out->buffer, + writer->doc, NULL, content); break; default: break; @@ -1446,12 +1520,13 @@ if (buf != NULL) { count = xmlTextWriterWriteRaw(writer, buf); - if (count < 0) - return -1; - sum += count; if (buf != content) /* buf was allocated by us, so free it */ xmlFree(buf); + + if (count < 0) + return -1; + sum += count; } return sum; @@ -1596,7 +1671,7 @@ * Write hqx encoded data to an xmlOutputBuffer. * ::todo * - * Returns the bytes written (may be 0 because of buffering) + * Returns the bytes written (may be 0 because of buffering) * or -1 in case of error */ static int @@ -1605,8 +1680,8 @@ { int count; int sum; - static char hex[16] = - {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; + static char hex[16] = + {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; int i; if ((out == NULL) || (data == NULL) || (len < 0)) { @@ -1768,6 +1843,57 @@ if ((writer == NULL) || (name == NULL) || (*name == '\0')) return -1; + /* Handle namespace first in case of error */ + if (namespaceURI != 0) { + xmlTextWriterNsStackEntry nsentry, *curns; + + buf = xmlStrdup(BAD_CAST "xmlns"); + if (prefix != 0) { + buf = xmlStrcat(buf, BAD_CAST ":"); + buf = xmlStrcat(buf, prefix); + } + + nsentry.prefix = buf; + nsentry.uri = (xmlChar *)namespaceURI; + nsentry.elem = xmlListFront(writer->nodes); + + curns = (xmlTextWriterNsStackEntry *)xmlListSearch(writer->nsstack, + (void *)&nsentry); + if ((curns != NULL)) { + xmlFree(buf); + if (xmlStrcmp(curns->uri, namespaceURI) == 0) { + /* Namespace already defined on element skip */ + buf = NULL; + } else { + /* Prefix mismatch so error out */ + return -1; + } + } + + /* Do not add namespace decl to list - it is already there */ + if (buf != NULL) { + p = (xmlTextWriterNsStackEntry *) + xmlMalloc(sizeof(xmlTextWriterNsStackEntry)); + if (p == 0) { + xmlWriterErrMsg(writer, XML_ERR_NO_MEMORY, + "xmlTextWriterStartAttributeNS : out of memory!\n"); + return -1; + } + + p->prefix = buf; + p->uri = xmlStrdup(namespaceURI); + if (p->uri == 0) { + xmlWriterErrMsg(writer, XML_ERR_NO_MEMORY, + "xmlTextWriterStartAttributeNS : out of memory!\n"); + xmlFree(p); + return -1; + } + p->elem = xmlListFront(writer->nodes); + + xmlListPushFront(writer->nsstack, p); + } + } + buf = NULL; if (prefix != 0) { buf = xmlStrdup(prefix); @@ -1782,34 +1908,6 @@ return -1; sum += count; - if (namespaceURI != 0) { - buf = xmlStrdup(BAD_CAST "xmlns"); - if (prefix != 0) { - buf = xmlStrcat(buf, BAD_CAST ":"); - buf = xmlStrcat(buf, prefix); - } - - p = (xmlTextWriterNsStackEntry *) - xmlMalloc(sizeof(xmlTextWriterNsStackEntry)); - if (p == 0) { - xmlWriterErrMsg(writer, XML_ERR_NO_MEMORY, - "xmlTextWriterStartAttributeNS : out of memory!\n"); - return -1; - } - - p->prefix = buf; - p->uri = xmlStrdup(namespaceURI); - if (p->uri == 0) { - xmlWriterErrMsg(writer, XML_ERR_NO_MEMORY, - "xmlTextWriterStartAttributeNS : out of memory!\n"); - xmlFree(p); - return -1; - } - p->elem = xmlListFront(writer->nodes); - - xmlListPushFront(writer->nsstack, p); - } - return sum; } @@ -1828,22 +1926,17 @@ int sum; xmlLinkPtr lk; xmlTextWriterStackEntry *p; - xmlTextWriterNsStackEntry *np; if (writer == NULL) return -1; lk = xmlListFront(writer->nodes); if (lk == 0) { - xmlListDelete(writer->nsstack); - writer->nsstack = NULL; return -1; } p = (xmlTextWriterStackEntry *) xmlLinkGetData(lk); if (p == 0) { - xmlListDelete(writer->nsstack); - writer->nsstack = NULL; return -1; } @@ -1854,45 +1947,11 @@ count = xmlOutputBufferWrite(writer->out, 1, &writer->qchar); if (count < 0) { - xmlListDelete(writer->nsstack); - writer->nsstack = NULL; return -1; } sum += count; - - while (!xmlListEmpty(writer->nsstack)) { - xmlChar *namespaceURI = NULL; - xmlChar *prefix = NULL; - - lk = xmlListFront(writer->nsstack); - np = (xmlTextWriterNsStackEntry *) xmlLinkGetData(lk); - - if (np != 0) { - namespaceURI = xmlStrdup(np->uri); - prefix = xmlStrdup(np->prefix); - } - - xmlListPopFront(writer->nsstack); - - if (np != 0) { - count = - xmlTextWriterWriteAttribute(writer, prefix, - namespaceURI); - xmlFree(namespaceURI); - xmlFree(prefix); - - if (count < 0) { - xmlListDelete(writer->nsstack); - writer->nsstack = NULL; - return -1; - } - sum += count; - } - } break; - default: - xmlListClear(writer->nsstack); return -1; } @@ -1949,8 +2008,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteAttribute(writer, name, buf); @@ -2051,8 +2110,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteAttributeNS(writer, prefix, name, namespaceURI, buf); @@ -2081,38 +2140,24 @@ { int count; int sum; - xmlChar *buf; if ((writer == NULL) || (name == NULL) || (*name == '\0')) return -1; - buf = NULL; - if (prefix != NULL) { - buf = xmlStrdup(prefix); - buf = xmlStrcat(buf, BAD_CAST ":"); - } - buf = xmlStrcat(buf, name); - sum = 0; - count = xmlTextWriterWriteAttribute(writer, buf, content); - xmlFree(buf); + count = xmlTextWriterStartAttributeNS(writer, prefix, name, namespaceURI); + if (count < 0) + return -1; + sum += count; + count = xmlTextWriterWriteString(writer, content); + if (count < 0) + return -1; + sum += count; + count = xmlTextWriterEndAttribute(writer); if (count < 0) return -1; sum += count; - if (namespaceURI != NULL) { - buf = NULL; - buf = xmlStrdup(BAD_CAST "xmlns"); - if (prefix != NULL) { - buf = xmlStrcat(buf, BAD_CAST ":"); - buf = xmlStrcat(buf, prefix); - } - count = xmlTextWriterWriteAttribute(writer, buf, namespaceURI); - xmlFree(buf); - if (count < 0) - return -1; - sum += count; - } return sum; } @@ -2166,8 +2211,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteElement(writer, name, buf); @@ -2197,10 +2242,12 @@ if (count == -1) return -1; sum += count; - count = xmlTextWriterWriteString(writer, content); - if (count == -1) - return -1; - sum += count; + if (content != NULL) { + count = xmlTextWriterWriteString(writer, content); + if (count == -1) + return -1; + sum += count; + } count = xmlTextWriterEndElement(writer); if (count == -1) return -1; @@ -2268,8 +2315,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteElementNS(writer, prefix, name, namespaceURI, buf); @@ -2359,6 +2406,11 @@ sum += count; /* fallthrough */ case XML_TEXTWRITER_NAME: + /* Output namespace declarations */ + count = xmlTextWriterOutputNSDecl(writer); + if (count < 0) + return -1; + sum += count; count = xmlOutputBufferWriteString(writer->out, ">"); if (count < 0) return -1; @@ -2454,8 +2506,8 @@ if (writer->indent) { count = xmlOutputBufferWriteString(writer->out, "\n"); - if (count < 0) - return -1; + if (count < 0) + return -1; sum += count; } @@ -2512,8 +2564,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWritePI(writer, target, buf); @@ -2583,6 +2635,7 @@ if (p != 0) { switch (p->state) { case XML_TEXTWRITER_NONE: + case XML_TEXTWRITER_TEXT: case XML_TEXTWRITER_PI: case XML_TEXTWRITER_PI_TEXT: break; @@ -2593,6 +2646,11 @@ sum += count; /* fallthrough */ case XML_TEXTWRITER_NAME: + /* Output namespace declarations */ + count = xmlTextWriterOutputNSDecl(writer); + if (count < 0) + return -1; + sum += count; count = xmlOutputBufferWriteString(writer->out, ">"); if (count < 0) return -1; @@ -2719,8 +2777,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteCDATA(writer, buf); @@ -3037,8 +3095,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteDTD(writer, name, pubid, sysid, buf); @@ -3275,8 +3333,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteDTDElement(writer, name, buf); @@ -3512,8 +3570,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteDTDAttlist(writer, name, buf); @@ -3774,8 +3832,8 @@ return -1; buf = xmlTextWriterVSprintf(format, argptr); - if (buf == 0) - return 0; + if (buf == NULL) + return -1; rc = xmlTextWriterWriteDTDInternalEntity(writer, pe, name, buf); @@ -4249,6 +4307,51 @@ */ /** + * xmlTextWriterOutputNSDecl: + * @writer: the xmlTextWriterPtr + * + * Output the current namespace declarations. + */ +static int +xmlTextWriterOutputNSDecl(xmlTextWriterPtr writer) +{ + xmlLinkPtr lk; + xmlTextWriterNsStackEntry *np; + int count; + int sum; + + sum = 0; + while (!xmlListEmpty(writer->nsstack)) { + xmlChar *namespaceURI = NULL; + xmlChar *prefix = NULL; + + lk = xmlListFront(writer->nsstack); + np = (xmlTextWriterNsStackEntry *) xmlLinkGetData(lk); + + if (np != 0) { + namespaceURI = xmlStrdup(np->uri); + prefix = xmlStrdup(np->prefix); + } + + xmlListPopFront(writer->nsstack); + + if (np != 0) { + count = xmlTextWriterWriteAttribute(writer, prefix, namespaceURI); + xmlFree(namespaceURI); + xmlFree(prefix); + + if (count < 0) { + xmlListDelete(writer->nsstack); + writer->nsstack = NULL; + return -1; + } + sum += count; + } + } + return sum; +} + +/** * xmlFreeTextWriterNsStackEntry: * @lk: the xmlLinkPtr * @@ -4301,8 +4404,8 @@ rc = xmlStrcmp(p0->prefix, p1->prefix); - if (rc == 0) - rc = p0->elem == p1->elem; + if ((rc != 0) || (p0->elem != p1->elem)) + rc = -1; return rc; } @@ -4513,6 +4616,26 @@ } /** + * xmlTextWriterSetQuoteChar: + * @writer: the xmlTextWriterPtr + * @quotechar: the quote character + * + * Set the character used for quoting attributes. + * + * Returns -1 on error or 0 otherwise. + */ +int +xmlTextWriterSetQuoteChar(xmlTextWriterPtr writer, xmlChar quotechar) +{ + if ((writer == NULL) || ((quotechar != '\'') && (quotechar != '"'))) + return -1; + + writer->qchar = quotechar; + + return 0; +} + +/** * xmlTextWriterWriteIndent: * @writer: the xmlTextWriterPtr * @@ -4569,6 +4692,11 @@ sum = 0; switch (p->state) { case XML_TEXTWRITER_NAME: + /* Output namespace declarations */ + count = xmlTextWriterOutputNSDecl(writer); + if (count < 0) + return -1; + sum += count; extra[0] = '>'; p->state = XML_TEXTWRITER_TEXT; break; diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xmlwriter.in.h gettext-0.19.7/gnulib-local/lib/libxml/xmlwriter.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xmlwriter.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xmlwriter.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -1,4 +1,3 @@ - /* * Summary: text writing API for XML * Description: text writing API for XML @@ -69,11 +68,13 @@ XMLPUBFUN int XMLCALL xmlTextWriterEndComment(xmlTextWriterPtr writer); XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatComment(xmlTextWriterPtr writer, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(2,3); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(2,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteComment(xmlTextWriterPtr writer, const xmlChar * @@ -102,12 +103,14 @@ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatElement(xmlTextWriterPtr writer, const xmlChar * name, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(3,4); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer, const xmlChar * name, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(3,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteElement(xmlTextWriterPtr writer, const xmlChar * name, @@ -118,14 +121,16 @@ const xmlChar * prefix, const xmlChar * name, const xmlChar * namespaceURI, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(5,6); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer, const xmlChar * prefix, const xmlChar * name, const xmlChar * namespaceURI, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(5,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteElementNS(xmlTextWriterPtr writer, const xmlChar * @@ -141,10 +146,12 @@ */ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatRaw(xmlTextWriterPtr writer, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(2,3); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatRaw(xmlTextWriterPtr writer, - const char *format, va_list argptr); + const char *format, va_list argptr) + LIBXML_ATTR_FORMAT(2,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteRawLen(xmlTextWriterPtr writer, const xmlChar * content, int len); @@ -154,12 +161,14 @@ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatString(xmlTextWriterPtr writer, const char - *format, ...); + *format, ...) + LIBXML_ATTR_FORMAT(2,3); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatString(xmlTextWriterPtr writer, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(2,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteString(xmlTextWriterPtr writer, const xmlChar * content); @@ -193,12 +202,14 @@ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer, const xmlChar * name, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(3,4); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatAttribute(xmlTextWriterPtr writer, const xmlChar * name, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(3,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteAttribute(xmlTextWriterPtr writer, const xmlChar * name, @@ -209,14 +220,16 @@ const xmlChar * prefix, const xmlChar * name, const xmlChar * namespaceURI, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(5,6); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatAttributeNS(xmlTextWriterPtr writer, const xmlChar * prefix, const xmlChar * name, const xmlChar * namespaceURI, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(5,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteAttributeNS(xmlTextWriterPtr writer, const xmlChar * @@ -242,11 +255,13 @@ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatPI(xmlTextWriterPtr writer, const xmlChar * target, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(3,4); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatPI(xmlTextWriterPtr writer, const xmlChar * target, - const char *format, va_list argptr); + const char *format, va_list argptr) + LIBXML_ATTR_FORMAT(3,0); XMLPUBFUN int XMLCALL xmlTextWriterWritePI(xmlTextWriterPtr writer, const xmlChar * target, @@ -270,10 +285,12 @@ */ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatCDATA(xmlTextWriterPtr writer, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(2,3); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatCDATA(xmlTextWriterPtr writer, - const char *format, va_list argptr); + const char *format, va_list argptr) + LIBXML_ATTR_FORMAT(2,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteCDATA(xmlTextWriterPtr writer, const xmlChar * content); @@ -296,13 +313,15 @@ const xmlChar * name, const xmlChar * pubid, const xmlChar * sysid, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(5,6); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatDTD(xmlTextWriterPtr writer, const xmlChar * name, const xmlChar * pubid, const xmlChar * sysid, - const char *format, va_list argptr); + const char *format, va_list argptr) + LIBXML_ATTR_FORMAT(5,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteDTD(xmlTextWriterPtr writer, const xmlChar * name, @@ -332,12 +351,14 @@ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer, const xmlChar * name, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(3,4); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatDTDElement(xmlTextWriterPtr writer, const xmlChar * name, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(3,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDElement(xmlTextWriterPtr writer, const xmlChar * @@ -360,12 +381,14 @@ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer, const xmlChar * name, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(3,4); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriterPtr writer, const xmlChar * name, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(3,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDAttlist(xmlTextWriterPtr writer, const xmlChar * @@ -389,13 +412,15 @@ xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer, int pe, const xmlChar * name, - const char *format, ...); + const char *format, ...) + LIBXML_ATTR_FORMAT(4,5); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriterPtr writer, int pe, const xmlChar * name, const char *format, - va_list argptr); + va_list argptr) + LIBXML_ATTR_FORMAT(4,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDInternalEntity(xmlTextWriterPtr writer, int pe, @@ -445,6 +470,10 @@ xmlTextWriterSetIndentString(xmlTextWriterPtr writer, const xmlChar * str); + XMLPUBFUN int XMLCALL + xmlTextWriterSetQuoteChar(xmlTextWriterPtr writer, xmlChar quotechar); + + /* * misc */ diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xpath.c gettext-0.19.7/gnulib-local/lib/libxml/xpath.c --- gettext-0.19.6/gnulib-local/lib/libxml/xpath.c 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xpath.c 2015-12-23 07:08:27.000000000 +0000 @@ -55,15 +55,26 @@ #include #endif +#include "buf.h" + #ifdef LIBXML_PATTERN_ENABLED #define XPATH_STREAMING #endif -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); +/** + * WITH_TIM_SORT: + * + * Use the Timsort algorithm provided in timsort.h to sort + * nodeset as this is a great improvement over the old Shell sort + * used in xmlXPathNodeSetSort() + */ +#define WITH_TIM_SORT + /* * XP_OPTIMIZED_NON_ELEM_COMPARISON: * If defined, this will use xmlXPathCmpNodesExt() instead of @@ -79,7 +90,7 @@ * XP_OPTIMIZED_FILTER_FIRST: * If defined, this will optimize expressions like "key('foo', 'val')[b][1]" * in a way, that it stop evaluation at the first node. -*/ +*/ #define XP_OPTIMIZED_FILTER_FIRST /* @@ -90,266 +101,624 @@ /* #define XP_DEBUG_OBJ_USAGE */ /* - * TODO: - * There are a few spots where some tests are done which depend upon ascii - * data. These should be enhanced for full UTF8 support (see particularly - * any use of the macros IS_ASCII_CHARACTER and IS_ASCII_DIGIT) + * XPATH_MAX_STEPS: + * when compiling an XPath expression we arbitrary limit the maximum + * number of step operation in the compiled expression. 1000000 is + * an insanely large value which should never be reached under normal + * circumstances */ - -#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) - -/************************************************************************ - * * - * Floating point stuff * - * * - ************************************************************************/ - -#ifndef TRIO_REPLACE_STDIO -#define TRIO_PUBLIC static -#endif -#include "trionan.c" +#define XPATH_MAX_STEPS 1000000 /* - * The lack of portability of this section of the libc is annoying ! - */ -double xmlXPathNAN = 0; -double xmlXPathPINF = 1; -double xmlXPathNINF = -1; -static double xmlXPathNZERO = 0; /* not exported from headers */ -static int xmlXPathInitialized = 0; - -/** - * xmlXPathInit: - * - * Initialize the XPath environment - */ -void -xmlXPathInit(void) { - if (xmlXPathInitialized) return; - - xmlXPathPINF = trio_pinf(); - xmlXPathNINF = trio_ninf(); - xmlXPathNAN = trio_nan(); - xmlXPathNZERO = trio_nzero(); - - xmlXPathInitialized = 1; -} - -/** - * xmlXPathIsNaN: - * @val: a double value - * - * Provides a portable isnan() function to detect whether a double - * is a NotaNumber. Based on trio code - * http://sourceforge.net/projects/ctrio/ - * - * Returns 1 if the value is a NaN, 0 otherwise - */ -int -xmlXPathIsNaN(double val) { - return(trio_isnan(val)); -} - -/** - * xmlXPathIsInf: - * @val: a double value - * - * Provides a portable isinf() function to detect whether a double - * is a +Infinite or -Infinite. Based on trio code - * http://sourceforge.net/projects/ctrio/ - * - * Returns 1 vi the value is +Infinite, -1 if -Infinite, 0 otherwise - */ -int -xmlXPathIsInf(double val) { - return(trio_isinf(val)); -} - -#endif /* SCHEMAS or XPATH */ -#ifdef LIBXML_XPATH_ENABLED -/** - * xmlXPathGetSign: - * @val: a double value - * - * Provides a portable function to detect the sign of a double - * Modified from trio code - * http://sourceforge.net/projects/ctrio/ - * - * Returns 1 if the value is Negative, 0 if positive + * XPATH_MAX_STACK_DEPTH: + * when evaluating an XPath expression we arbitrary limit the maximum + * number of object allowed to be pushed on the stack. 1000000 is + * an insanely large value which should never be reached under normal + * circumstances */ -static int -xmlXPathGetSign(double val) { - return(trio_signbit(val)); -} - +#define XPATH_MAX_STACK_DEPTH 1000000 /* - * TODO: when compatibility allows remove all "fake node libxslt" strings - * the test should just be name[0] = ' ' - */ -/* #define DEBUG */ -/* #define DEBUG_STEP */ -/* #define DEBUG_STEP_NTH */ -/* #define DEBUG_EXPR */ -/* #define DEBUG_EVAL_COUNTS */ - -static xmlNs xmlXPathXMLNamespaceStruct = { - NULL, - XML_NAMESPACE_DECL, - XML_XML_NAMESPACE, - BAD_CAST "xml", - NULL -}; -static xmlNsPtr xmlXPathXMLNamespace = &xmlXPathXMLNamespaceStruct; -#ifndef LIBXML_THREAD_ENABLED -/* - * Optimizer is disabled only when threaded apps are detected while - * the library ain't compiled for thread safety. - */ -static int xmlXPathDisableOptimizer = 0; -#endif - -/************************************************************************ - * * - * Error handling routines * - * * - ************************************************************************/ - -/** - * XP_ERRORNULL: - * @X: the error code - * - * Macro to raise an XPath error and return NULL. + * XPATH_MAX_NODESET_LENGTH: + * when evaluating an XPath expression nodesets are created and we + * arbitrary limit the maximum length of those node set. 10000000 is + * an insanely large value which should never be reached under normal + * circumstances, one would first need to construct an in memory tree + * with more than 10 millions nodes. */ -#define XP_ERRORNULL(X) \ - { xmlXPathErr(ctxt, X); return(NULL); } +#define XPATH_MAX_NODESET_LENGTH 10000000 /* - * The array xmlXPathErrorMessages corresponds to the enum xmlXPathError - */ -static const char *xmlXPathErrorMessages[] = { - "Ok\n", - "Number encoding\n", - "Unfinished literal\n", - "Start of literal\n", - "Expected $ for variable reference\n", - "Undefined variable\n", - "Invalid predicate\n", - "Invalid expression\n", - "Missing closing curly brace\n", - "Unregistered function\n", - "Invalid operand\n", - "Invalid type\n", - "Invalid number of arguments\n", - "Invalid context size\n", - "Invalid context position\n", - "Memory allocation error\n", - "Syntax error\n", - "Resource error\n", - "Sub resource error\n", - "Undefined namespace prefix\n", - "Encoding error\n", - "Char out of XML range\n", - "Invalid or incomplete context\n", - "?? Unknown error ??\n" /* Must be last in the list! */ -}; -#define MAXERRNO ((int)(sizeof(xmlXPathErrorMessages) / \ - sizeof(xmlXPathErrorMessages[0])) - 1) -/** - * xmlXPathErrMemory: - * @ctxt: an XPath context - * @extra: extra informations - * - * Handle a redefinition of attribute error + * TODO: + * There are a few spots where some tests are done which depend upon ascii + * data. These should be enhanced for full UTF8 support (see particularly + * any use of the macros IS_ASCII_CHARACTER and IS_ASCII_DIGIT) */ -static void -xmlXPathErrMemory(xmlXPathContextPtr ctxt, const char *extra) -{ - if (ctxt != NULL) { - if (extra) { - xmlChar buf[200]; - - xmlStrPrintf(buf, 200, - BAD_CAST "Memory allocation failed : %s\n", - extra); - ctxt->lastError.message = (char *) xmlStrdup(buf); - } else { - ctxt->lastError.message = (char *) - xmlStrdup(BAD_CAST "Memory allocation failed\n"); - } - ctxt->lastError.domain = XML_FROM_XPATH; - ctxt->lastError.code = XML_ERR_NO_MEMORY; - if (ctxt->error != NULL) - ctxt->error(ctxt->userData, &ctxt->lastError); - } else { - if (extra) - __xmlRaiseError(NULL, NULL, NULL, - NULL, NULL, XML_FROM_XPATH, - XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0, - extra, NULL, NULL, 0, 0, - "Memory allocation failed : %s\n", extra); - else - __xmlRaiseError(NULL, NULL, NULL, - NULL, NULL, XML_FROM_XPATH, - XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0, - NULL, NULL, NULL, 0, 0, - "Memory allocation failed\n"); - } -} +#ifdef XP_OPTIMIZED_NON_ELEM_COMPARISON /** - * xmlXPathPErrMemory: - * @ctxt: an XPath parser context - * @extra: extra informations + * xmlXPathCmpNodesExt: + * @node1: the first node + * @node2: the second node * - * Handle a redefinition of attribute error - */ -static void -xmlXPathPErrMemory(xmlXPathParserContextPtr ctxt, const char *extra) -{ - if (ctxt == NULL) - xmlXPathErrMemory(NULL, extra); - else { - ctxt->error = XPATH_MEMORY_ERROR; - xmlXPathErrMemory(ctxt->context, extra); - } -} - -/** - * xmlXPathErr: - * @ctxt: a XPath parser context - * @error: the error code + * Compare two nodes w.r.t document order. + * This one is optimized for handling of non-element nodes. * - * Handle an XPath error + * Returns -2 in case of error 1 if first point < second point, 0 if + * it's the same node, -1 otherwise */ -void -xmlXPathErr(xmlXPathParserContextPtr ctxt, int error) -{ - if ((error < 0) || (error > MAXERRNO)) - error = MAXERRNO; - if (ctxt == NULL) { - __xmlRaiseError(NULL, NULL, NULL, - NULL, NULL, XML_FROM_XPATH, - error + XML_XPATH_EXPRESSION_OK - XPATH_EXPRESSION_OK, - XML_ERR_ERROR, NULL, 0, - NULL, NULL, NULL, 0, 0, - xmlXPathErrorMessages[error]); - return; - } - ctxt->error = error; - if (ctxt->context == NULL) { - __xmlRaiseError(NULL, NULL, NULL, - NULL, NULL, XML_FROM_XPATH, - error + XML_XPATH_EXPRESSION_OK - XPATH_EXPRESSION_OK, - XML_ERR_ERROR, NULL, 0, - (const char *) ctxt->base, NULL, NULL, - ctxt->cur - ctxt->base, 0, - xmlXPathErrorMessages[error]); - return; - } +static int +xmlXPathCmpNodesExt(xmlNodePtr node1, xmlNodePtr node2) { + int depth1, depth2; + int misc = 0, precedence1 = 0, precedence2 = 0; + xmlNodePtr miscNode1 = NULL, miscNode2 = NULL; + xmlNodePtr cur, root; + long l1, l2; - /* cleanup current last error */ - xmlResetError(&ctxt->context->lastError); + if ((node1 == NULL) || (node2 == NULL)) + return(-2); + + if (node1 == node2) + return(0); + + /* + * a couple of optimizations which will avoid computations in most cases + */ + switch (node1->type) { + case XML_ELEMENT_NODE: + if (node2->type == XML_ELEMENT_NODE) { + if ((0 > (long) node1->content) && /* TODO: Would a != 0 suffice here? */ + (0 > (long) node2->content) && + (node1->doc == node2->doc)) + { + l1 = -((long) node1->content); + l2 = -((long) node2->content); + if (l1 < l2) + return(1); + if (l1 > l2) + return(-1); + } else + goto turtle_comparison; + } + break; + case XML_ATTRIBUTE_NODE: + precedence1 = 1; /* element is owner */ + miscNode1 = node1; + node1 = node1->parent; + misc = 1; + break; + case XML_TEXT_NODE: + case XML_CDATA_SECTION_NODE: + case XML_COMMENT_NODE: + case XML_PI_NODE: { + miscNode1 = node1; + /* + * Find nearest element node. + */ + if (node1->prev != NULL) { + do { + node1 = node1->prev; + if (node1->type == XML_ELEMENT_NODE) { + precedence1 = 3; /* element in prev-sibl axis */ + break; + } + if (node1->prev == NULL) { + precedence1 = 2; /* element is parent */ + /* + * URGENT TODO: Are there any cases, where the + * parent of such a node is not an element node? + */ + node1 = node1->parent; + break; + } + } while (1); + } else { + precedence1 = 2; /* element is parent */ + node1 = node1->parent; + } + if ((node1 == NULL) || (node1->type != XML_ELEMENT_NODE) || + (0 <= (long) node1->content)) { + /* + * Fallback for whatever case. + */ + node1 = miscNode1; + precedence1 = 0; + } else + misc = 1; + } + break; + case XML_NAMESPACE_DECL: + /* + * TODO: why do we return 1 for namespace nodes? + */ + return(1); + default: + break; + } + switch (node2->type) { + case XML_ELEMENT_NODE: + break; + case XML_ATTRIBUTE_NODE: + precedence2 = 1; /* element is owner */ + miscNode2 = node2; + node2 = node2->parent; + misc = 1; + break; + case XML_TEXT_NODE: + case XML_CDATA_SECTION_NODE: + case XML_COMMENT_NODE: + case XML_PI_NODE: { + miscNode2 = node2; + if (node2->prev != NULL) { + do { + node2 = node2->prev; + if (node2->type == XML_ELEMENT_NODE) { + precedence2 = 3; /* element in prev-sibl axis */ + break; + } + if (node2->prev == NULL) { + precedence2 = 2; /* element is parent */ + node2 = node2->parent; + break; + } + } while (1); + } else { + precedence2 = 2; /* element is parent */ + node2 = node2->parent; + } + if ((node2 == NULL) || (node2->type != XML_ELEMENT_NODE) || + (0 <= (long) node2->content)) + { + node2 = miscNode2; + precedence2 = 0; + } else + misc = 1; + } + break; + case XML_NAMESPACE_DECL: + return(1); + default: + break; + } + if (misc) { + if (node1 == node2) { + if (precedence1 == precedence2) { + /* + * The ugly case; but normally there aren't many + * adjacent non-element nodes around. + */ + cur = miscNode2->prev; + while (cur != NULL) { + if (cur == miscNode1) + return(1); + if (cur->type == XML_ELEMENT_NODE) + return(-1); + cur = cur->prev; + } + return (-1); + } else { + /* + * Evaluate based on higher precedence wrt to the element. + * TODO: This assumes attributes are sorted before content. + * Is this 100% correct? + */ + if (precedence1 < precedence2) + return(1); + else + return(-1); + } + } + /* + * Special case: One of the helper-elements is contained by the other. + * + * + * Text-1(precedence1 == 2) + * + * Text-6(precedence2 == 3) + * + */ + if ((precedence2 == 3) && (precedence1 > 1)) { + cur = node1->parent; + while (cur) { + if (cur == node2) + return(1); + cur = cur->parent; + } + } + if ((precedence1 == 3) && (precedence2 > 1)) { + cur = node2->parent; + while (cur) { + if (cur == node1) + return(-1); + cur = cur->parent; + } + } + } + + /* + * Speedup using document order if availble. + */ + if ((node1->type == XML_ELEMENT_NODE) && + (node2->type == XML_ELEMENT_NODE) && + (0 > (long) node1->content) && + (0 > (long) node2->content) && + (node1->doc == node2->doc)) { + + l1 = -((long) node1->content); + l2 = -((long) node2->content); + if (l1 < l2) + return(1); + if (l1 > l2) + return(-1); + } + +turtle_comparison: + + if (node1 == node2->prev) + return(1); + if (node1 == node2->next) + return(-1); + /* + * compute depth to root + */ + for (depth2 = 0, cur = node2; cur->parent != NULL; cur = cur->parent) { + if (cur->parent == node1) + return(1); + depth2++; + } + root = cur; + for (depth1 = 0, cur = node1; cur->parent != NULL; cur = cur->parent) { + if (cur->parent == node2) + return(-1); + depth1++; + } + /* + * Distinct document (or distinct entities :-( ) case. + */ + if (root != cur) { + return(-2); + } + /* + * get the nearest common ancestor. + */ + while (depth1 > depth2) { + depth1--; + node1 = node1->parent; + } + while (depth2 > depth1) { + depth2--; + node2 = node2->parent; + } + while (node1->parent != node2->parent) { + node1 = node1->parent; + node2 = node2->parent; + /* should not happen but just in case ... */ + if ((node1 == NULL) || (node2 == NULL)) + return(-2); + } + /* + * Find who's first. + */ + if (node1 == node2->prev) + return(1); + if (node1 == node2->next) + return(-1); + /* + * Speedup using document order if availble. + */ + if ((node1->type == XML_ELEMENT_NODE) && + (node2->type == XML_ELEMENT_NODE) && + (0 > (long) node1->content) && + (0 > (long) node2->content) && + (node1->doc == node2->doc)) { + + l1 = -((long) node1->content); + l2 = -((long) node2->content); + if (l1 < l2) + return(1); + if (l1 > l2) + return(-1); + } + + for (cur = node1->next;cur != NULL;cur = cur->next) + if (cur == node2) + return(1); + return(-1); /* assume there is no sibling list corruption */ +} +#endif /* XP_OPTIMIZED_NON_ELEM_COMPARISON */ + +/* + * Wrapper for the Timsort argorithm from timsort.h + */ +#ifdef WITH_TIM_SORT +#define SORT_NAME libxml_domnode +#define SORT_TYPE xmlNodePtr +/** + * wrap_cmp: + * @x: a node + * @y: another node + * + * Comparison function for the Timsort implementation + * + * Returns -2 in case of error -1 if first point < second point, 0 if + * it's the same node, +1 otherwise + */ +static +int wrap_cmp( xmlNodePtr x, xmlNodePtr y ); +#ifdef XP_OPTIMIZED_NON_ELEM_COMPARISON + static int wrap_cmp( xmlNodePtr x, xmlNodePtr y ) + { + int res = xmlXPathCmpNodesExt(x, y); + return res == -2 ? res : -res; + } +#else + static int wrap_cmp( xmlNodePtr x, xmlNodePtr y ) + { + int res = xmlXPathCmpNodes(x, y); + return res == -2 ? res : -res; + } +#endif +#define SORT_CMP(x, y) (wrap_cmp(x, y)) +#include "timsort.h" +#endif /* WITH_TIM_SORT */ + +#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) + +/************************************************************************ + * * + * Floating point stuff * + * * + ************************************************************************/ + +#ifndef TRIO_REPLACE_STDIO +#define TRIO_PUBLIC static +#endif +#include "trionan.c" + +/* + * The lack of portability of this section of the libc is annoying ! + */ +double xmlXPathNAN = 0; +double xmlXPathPINF = 1; +double xmlXPathNINF = -1; +static double xmlXPathNZERO = 0; /* not exported from headers */ +static int xmlXPathInitialized = 0; + +/** + * xmlXPathInit: + * + * Initialize the XPath environment + */ +void +xmlXPathInit(void) { + if (xmlXPathInitialized) return; + + xmlXPathPINF = trio_pinf(); + xmlXPathNINF = trio_ninf(); + xmlXPathNAN = trio_nan(); + xmlXPathNZERO = trio_nzero(); + + xmlXPathInitialized = 1; +} + +/** + * xmlXPathIsNaN: + * @val: a double value + * + * Provides a portable isnan() function to detect whether a double + * is a NotaNumber. Based on trio code + * http://sourceforge.net/projects/ctrio/ + * + * Returns 1 if the value is a NaN, 0 otherwise + */ +int +xmlXPathIsNaN(double val) { + return(trio_isnan(val)); +} + +/** + * xmlXPathIsInf: + * @val: a double value + * + * Provides a portable isinf() function to detect whether a double + * is a +Infinite or -Infinite. Based on trio code + * http://sourceforge.net/projects/ctrio/ + * + * Returns 1 vi the value is +Infinite, -1 if -Infinite, 0 otherwise + */ +int +xmlXPathIsInf(double val) { + return(trio_isinf(val)); +} + +#endif /* SCHEMAS or XPATH */ +#ifdef LIBXML_XPATH_ENABLED +/** + * xmlXPathGetSign: + * @val: a double value + * + * Provides a portable function to detect the sign of a double + * Modified from trio code + * http://sourceforge.net/projects/ctrio/ + * + * Returns 1 if the value is Negative, 0 if positive + */ +static int +xmlXPathGetSign(double val) { + return(trio_signbit(val)); +} + + +/* + * TODO: when compatibility allows remove all "fake node libxslt" strings + * the test should just be name[0] = ' ' + */ +#ifdef DEBUG_XPATH_EXPRESSION +#define DEBUG_STEP +#define DEBUG_EXPR +#define DEBUG_EVAL_COUNTS +#endif + +static xmlNs xmlXPathXMLNamespaceStruct = { + NULL, + XML_NAMESPACE_DECL, + XML_XML_NAMESPACE, + BAD_CAST "xml", + NULL, + NULL +}; +static xmlNsPtr xmlXPathXMLNamespace = &xmlXPathXMLNamespaceStruct; +#ifndef LIBXML_THREAD_ENABLED +/* + * Optimizer is disabled only when threaded apps are detected while + * the library ain't compiled for thread safety. + */ +static int xmlXPathDisableOptimizer = 0; +#endif + +/************************************************************************ + * * + * Error handling routines * + * * + ************************************************************************/ + +/** + * XP_ERRORNULL: + * @X: the error code + * + * Macro to raise an XPath error and return NULL. + */ +#define XP_ERRORNULL(X) \ + { xmlXPathErr(ctxt, X); return(NULL); } + +/* + * The array xmlXPathErrorMessages corresponds to the enum xmlXPathError + */ +static const char *xmlXPathErrorMessages[] = { + "Ok\n", + "Number encoding\n", + "Unfinished literal\n", + "Start of literal\n", + "Expected $ for variable reference\n", + "Undefined variable\n", + "Invalid predicate\n", + "Invalid expression\n", + "Missing closing curly brace\n", + "Unregistered function\n", + "Invalid operand\n", + "Invalid type\n", + "Invalid number of arguments\n", + "Invalid context size\n", + "Invalid context position\n", + "Memory allocation error\n", + "Syntax error\n", + "Resource error\n", + "Sub resource error\n", + "Undefined namespace prefix\n", + "Encoding error\n", + "Char out of XML range\n", + "Invalid or incomplete context\n", + "Stack usage error\n", + "Forbidden variable\n", + "?? Unknown error ??\n" /* Must be last in the list! */ +}; +#define MAXERRNO ((int)(sizeof(xmlXPathErrorMessages) / \ + sizeof(xmlXPathErrorMessages[0])) - 1) +/** + * xmlXPathErrMemory: + * @ctxt: an XPath context + * @extra: extra informations + * + * Handle a redefinition of attribute error + */ +static void +xmlXPathErrMemory(xmlXPathContextPtr ctxt, const char *extra) +{ + if (ctxt != NULL) { + if (extra) { + xmlChar buf[200]; + + xmlStrPrintf(buf, 200, + BAD_CAST "Memory allocation failed : %s\n", + extra); + ctxt->lastError.message = (char *) xmlStrdup(buf); + } else { + ctxt->lastError.message = (char *) + xmlStrdup(BAD_CAST "Memory allocation failed\n"); + } + ctxt->lastError.domain = XML_FROM_XPATH; + ctxt->lastError.code = XML_ERR_NO_MEMORY; + if (ctxt->error != NULL) + ctxt->error(ctxt->userData, &ctxt->lastError); + } else { + if (extra) + __xmlRaiseError(NULL, NULL, NULL, + NULL, NULL, XML_FROM_XPATH, + XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0, + extra, NULL, NULL, 0, 0, + "Memory allocation failed : %s\n", extra); + else + __xmlRaiseError(NULL, NULL, NULL, + NULL, NULL, XML_FROM_XPATH, + XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0, + NULL, NULL, NULL, 0, 0, + "Memory allocation failed\n"); + } +} + +/** + * xmlXPathPErrMemory: + * @ctxt: an XPath parser context + * @extra: extra informations + * + * Handle a redefinition of attribute error + */ +static void +xmlXPathPErrMemory(xmlXPathParserContextPtr ctxt, const char *extra) +{ + if (ctxt == NULL) + xmlXPathErrMemory(NULL, extra); + else { + ctxt->error = XPATH_MEMORY_ERROR; + xmlXPathErrMemory(ctxt->context, extra); + } +} + +/** + * xmlXPathErr: + * @ctxt: a XPath parser context + * @error: the error code + * + * Handle an XPath error + */ +void +xmlXPathErr(xmlXPathParserContextPtr ctxt, int error) +{ + if ((error < 0) || (error > MAXERRNO)) + error = MAXERRNO; + if (ctxt == NULL) { + __xmlRaiseError(NULL, NULL, NULL, + NULL, NULL, XML_FROM_XPATH, + error + XML_XPATH_EXPRESSION_OK - XPATH_EXPRESSION_OK, + XML_ERR_ERROR, NULL, 0, + NULL, NULL, NULL, 0, 0, + "%s", xmlXPathErrorMessages[error]); + return; + } + ctxt->error = error; + if (ctxt->context == NULL) { + __xmlRaiseError(NULL, NULL, NULL, + NULL, NULL, XML_FROM_XPATH, + error + XML_XPATH_EXPRESSION_OK - XPATH_EXPRESSION_OK, + XML_ERR_ERROR, NULL, 0, + (const char *) ctxt->base, NULL, NULL, + ctxt->cur - ctxt->base, 0, + "%s", xmlXPathErrorMessages[error]); + return; + } + + /* cleanup current last error */ + xmlResetError(&ctxt->context->lastError); ctxt->context->lastError.domain = XML_FROM_XPATH; ctxt->context->lastError.code = error + XML_XPATH_EXPRESSION_OK - @@ -368,7 +737,7 @@ XML_ERR_ERROR, NULL, 0, (const char *) ctxt->base, NULL, NULL, ctxt->cur - ctxt->base, 0, - xmlXPathErrorMessages[error]); + "%s", xmlXPathErrorMessages[error]); } } @@ -389,9 +758,9 @@ } /************************************************************************ - * * - * Utilities * - * * + * * + * Utilities * + * * ************************************************************************/ /** @@ -411,15 +780,14 @@ * and here, we should make the functions public. */ static int -xmlPointerListAddSize(xmlPointerListPtr list, +xmlPointerListAddSize(xmlPointerListPtr list, void *item, int initialSize) { if (list->items == NULL) { if (initialSize <= 0) initialSize = 1; - list->items = (void **) xmlMalloc( - initialSize * sizeof(void *)); + list->items = (void **) xmlMalloc(initialSize * sizeof(void *)); if (list->items == NULL) { xmlXPathErrMemory(NULL, "xmlPointerListCreate: allocating item\n"); @@ -428,12 +796,17 @@ list->number = 0; list->size = initialSize; } else if (list->size <= list->number) { + if (list->size > 50000000) { + xmlXPathErrMemory(NULL, + "xmlPointerListAddSize: re-allocating item\n"); + return(-1); + } list->size *= 2; list->items = (void **) xmlRealloc(list->items, list->size * sizeof(void *)); if (list->items == NULL) { xmlXPathErrMemory(NULL, - "xmlPointerListCreate: re-allocating item\n"); + "xmlPointerListAddSize: re-allocating item\n"); list->size = 0; return(-1); } @@ -485,9 +858,9 @@ } /************************************************************************ - * * - * Parser Types * - * * + * * + * Parser Types * + * * ************************************************************************/ /* @@ -532,7 +905,7 @@ AXIS_PARENT, AXIS_PRECEDING, AXIS_PRECEDING_SIBLING, - AXIS_SELF + AXIS_SELF } xmlXPathAxisVal; typedef enum { @@ -548,11 +921,9 @@ NODE_TYPE_NODE = 0, NODE_TYPE_COMMENT = XML_COMMENT_NODE, NODE_TYPE_TEXT = XML_TEXT_NODE, - NODE_TYPE_PI = XML_PI_NODE + NODE_TYPE_PI = XML_PI_NODE } xmlXPathTypeVal; -#define XP_REWRITE_DOS_CHILD_ELEM 1 - typedef struct _xmlXPathStepOp xmlXPathStepOp; typedef xmlXPathStepOp *xmlXPathStepOpPtr; struct _xmlXPathStepOp { @@ -566,7 +937,6 @@ void *value5; void *cache; void *cacheURI; - int rewriteType; }; struct _xmlXPathCompExpr { @@ -586,9 +956,9 @@ }; /************************************************************************ - * * - * Forward declarations * - * * + * * + * Forward declarations * + * * ************************************************************************/ static void xmlXPathFreeValueTree(xmlNodeSetPtr obj); @@ -603,9 +973,9 @@ int isPredicate); /************************************************************************ - * * - * Parser Type functions * - * * + * * + * Parser Type functions * + * * ************************************************************************/ /** @@ -721,6 +1091,10 @@ if (comp->nbStep >= comp->maxStep) { xmlXPathStepOp *real; + if (comp->maxStep >= XPATH_MAX_STEPS) { + xmlXPathErrMemory(NULL, "adding step\n"); + return(-1); + } comp->maxStep *= 2; real = (xmlXPathStepOp *) xmlRealloc(comp->steps, comp->maxStep * sizeof(xmlXPathStepOp)); @@ -732,7 +1106,6 @@ comp->steps = real; } comp->last = comp->nbStep; - comp->steps[comp->nbStep].rewriteType = 0; comp->steps[comp->nbStep].ch1 = ch1; comp->steps[comp->nbStep].ch2 = ch2; comp->steps[comp->nbStep].op = op; @@ -795,19 +1168,19 @@ xmlXPathCompExprAdd(ctxt->comp, ctxt->comp->last, -1, \ (op), (val), (val2), (val3), (val4), (val5)) -#define PUSH_LEAVE_EXPR(op, val, val2) \ +#define PUSH_LEAVE_EXPR(op, val, val2) \ xmlXPathCompExprAdd(ctxt->comp, -1, -1, (op), (val), (val2), 0 ,NULL ,NULL) -#define PUSH_UNARY_EXPR(op, ch, val, val2) \ +#define PUSH_UNARY_EXPR(op, ch, val, val2) \ xmlXPathCompExprAdd(ctxt->comp, (ch), -1, (op), (val), (val2), 0 ,NULL ,NULL) -#define PUSH_BINARY_EXPR(op, ch1, ch2, val, val2) \ +#define PUSH_BINARY_EXPR(op, ch1, ch2, val, val2) \ xmlXPathCompExprAdd(ctxt->comp, (ch1), (ch2), (op), \ (val), (val2), 0 ,NULL ,NULL) /************************************************************************ * * - * XPath object cache structures * + * XPath object cache structures * * * ************************************************************************/ @@ -839,8 +1212,8 @@ int dbgCachedLocset; int dbgCachedUsers; int dbgCachedXSLTTree; - int dbgCachedUndefined; - + int dbgCachedUndefined; + int dbgReusedAll; int dbgReusedNodeset; @@ -859,11 +1232,11 @@ /************************************************************************ * * - * Debugging related functions * + * Debugging related functions * * * ************************************************************************/ -#define STRANGE \ +#define STRANGE \ xmlGenericError(xmlGenericErrorContext, \ "Internal error at %s:%d\n", \ __FILE__, __LINE__); @@ -878,15 +1251,15 @@ shift[2 * i] = shift[2 * i + 1] = ' '; shift[2 * i] = shift[2 * i + 1] = 0; if (cur == NULL) { - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "Node is NULL !\n"); return; - + } if ((cur->type == XML_DOCUMENT_NODE) || (cur->type == XML_HTML_DOCUMENT_NODE)) { - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, " /\n"); } else if (cur->type == XML_ATTRIBUTE_NODE) xmlDebugDumpAttr(output, (xmlAttrPtr)cur, depth); @@ -903,10 +1276,10 @@ shift[2 * i] = shift[2 * i + 1] = ' '; shift[2 * i] = shift[2 * i + 1] = 0; if (cur == NULL) { - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "Node is NULL !\n"); return; - + } while (cur != NULL) { @@ -926,16 +1299,16 @@ shift[2 * i] = shift[2 * i + 1] = 0; if (cur == NULL) { - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "NodeSet is NULL !\n"); return; - + } if (cur != NULL) { fprintf(output, "Set contains %d nodes:\n", cur->nodeNr); for (i = 0;i < cur->nodeNr;i++) { - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "%d", i + 1); xmlXPathDebugDumpNode(output, cur->nodeTab[i], depth + 1); } @@ -952,13 +1325,13 @@ shift[2 * i] = shift[2 * i + 1] = 0; if ((cur == NULL) || (cur->nodeNr == 0) || (cur->nodeTab[0] == NULL)) { - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "Value Tree is NULL !\n"); return; - + } - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "%d", i + 1); xmlXPathDebugDumpNodeList(output, cur->nodeTab[0]->children, depth + 1); } @@ -973,14 +1346,14 @@ shift[2 * i] = shift[2 * i + 1] = 0; if (cur == NULL) { - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "LocationSet is NULL !\n"); return; - + } for (i = 0;i < cur->locNr;i++) { - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "%d : ", i + 1); xmlXPathDebugDumpObject(output, cur->locTab[i], depth + 1); } @@ -1007,7 +1380,7 @@ shift[2 * i] = shift[2 * i + 1] = 0; - fprintf(output, shift); + fprintf(output, "%s", shift); if (cur == NULL) { fprintf(output, "Object is empty (NULL)\n"); @@ -1062,7 +1435,7 @@ if ((cur->user2 == NULL) || ((cur->user2 == cur->user) && (cur->index == cur->index2))) { fprintf(output, "Object is a collapsed range :\n"); - fprintf(output, shift); + fprintf(output, "%s", shift); if (cur->index >= 0) fprintf(output, "index %d in ", cur->index); fprintf(output, "node\n"); @@ -1070,14 +1443,14 @@ depth + 1); } else { fprintf(output, "Object is a range :\n"); - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "From "); if (cur->index >= 0) fprintf(output, "index %d in ", cur->index); fprintf(output, "node\n"); xmlXPathDebugDumpNode(output, (xmlNodePtr) cur->user, depth + 1); - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "To "); if (cur->index2 >= 0) fprintf(output, "index %d in ", cur->index2); @@ -1110,7 +1483,7 @@ shift[2 * i] = shift[2 * i + 1] = ' '; shift[2 * i] = shift[2 * i + 1] = 0; - fprintf(output, shift); + fprintf(output, "%s", shift); if (op == NULL) { fprintf(output, "Step is NULL\n"); return; @@ -1297,7 +1670,7 @@ shift[2 * i] = shift[2 * i + 1] = ' '; shift[2 * i] = shift[2 * i + 1] = 0; - fprintf(output, shift); + fprintf(output, "%s", shift); fprintf(output, "Compiled Expression : %d elements\n", comp->nbStep); @@ -1332,7 +1705,7 @@ static int xmlXPathDebugObjTotalLocset = 0; static int xmlXPathDebugObjTotalUsers = 0; static int xmlXPathDebugObjTotalXSLTTree = 0; -static int xmlXPathDebugObjTotalAll = 0; +static int xmlXPathDebugObjTotalAll = 0; static int xmlXPathDebugObjMaxUndefined = 0; static int xmlXPathDebugObjMaxNodeset = 0; @@ -1365,7 +1738,7 @@ cache->dbgCachedLocset = 0; cache->dbgCachedUsers = 0; cache->dbgCachedXSLTTree = 0; - cache->dbgCachedUndefined = 0; + cache->dbgCachedUndefined = 0; cache->dbgReusedAll = 0; cache->dbgReusedNodeset = 0; @@ -1379,7 +1752,7 @@ cache->dbgReusedXSLTTree = 0; cache->dbgReusedUndefined = 0; } - } + } xmlXPathDebugObjCounterUndefined = 0; xmlXPathDebugObjCounterNodeset = 0; @@ -1392,7 +1765,7 @@ xmlXPathDebugObjCounterUsers = 0; xmlXPathDebugObjCounterXSLTTree = 0; xmlXPathDebugObjCounterAll = 0; - + xmlXPathDebugObjTotalUndefined = 0; xmlXPathDebugObjTotalNodeset = 0; xmlXPathDebugObjTotalBool = 0; @@ -1403,7 +1776,7 @@ xmlXPathDebugObjTotalLocset = 0; xmlXPathDebugObjTotalUsers = 0; xmlXPathDebugObjTotalXSLTTree = 0; - xmlXPathDebugObjTotalAll = 0; + xmlXPathDebugObjTotalAll = 0; xmlXPathDebugObjMaxUndefined = 0; xmlXPathDebugObjMaxNodeset = 0; @@ -1429,10 +1802,10 @@ if (ctxt->cache != NULL) { xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; - + isCached = 1; - - cache->dbgReusedAll++; + + cache->dbgReusedAll++; switch (objType) { case XPATH_UNDEFINED: cache->dbgReusedUndefined++; @@ -1466,7 +1839,7 @@ break; default: break; - } + } } } @@ -1474,7 +1847,7 @@ case XPATH_UNDEFINED: if (! isCached) xmlXPathDebugObjTotalUndefined++; - xmlXPathDebugObjCounterUndefined++; + xmlXPathDebugObjCounterUndefined++; if (xmlXPathDebugObjCounterUndefined > xmlXPathDebugObjMaxUndefined) xmlXPathDebugObjMaxUndefined = @@ -1483,7 +1856,7 @@ case XPATH_NODESET: if (! isCached) xmlXPathDebugObjTotalNodeset++; - xmlXPathDebugObjCounterNodeset++; + xmlXPathDebugObjCounterNodeset++; if (xmlXPathDebugObjCounterNodeset > xmlXPathDebugObjMaxNodeset) xmlXPathDebugObjMaxNodeset = @@ -1492,7 +1865,7 @@ case XPATH_BOOLEAN: if (! isCached) xmlXPathDebugObjTotalBool++; - xmlXPathDebugObjCounterBool++; + xmlXPathDebugObjCounterBool++; if (xmlXPathDebugObjCounterBool > xmlXPathDebugObjMaxBool) xmlXPathDebugObjMaxBool = @@ -1501,7 +1874,7 @@ case XPATH_NUMBER: if (! isCached) xmlXPathDebugObjTotalNumber++; - xmlXPathDebugObjCounterNumber++; + xmlXPathDebugObjCounterNumber++; if (xmlXPathDebugObjCounterNumber > xmlXPathDebugObjMaxNumber) xmlXPathDebugObjMaxNumber = @@ -1510,7 +1883,7 @@ case XPATH_STRING: if (! isCached) xmlXPathDebugObjTotalString++; - xmlXPathDebugObjCounterString++; + xmlXPathDebugObjCounterString++; if (xmlXPathDebugObjCounterString > xmlXPathDebugObjMaxString) xmlXPathDebugObjMaxString = @@ -1519,7 +1892,7 @@ case XPATH_POINT: if (! isCached) xmlXPathDebugObjTotalPoint++; - xmlXPathDebugObjCounterPoint++; + xmlXPathDebugObjCounterPoint++; if (xmlXPathDebugObjCounterPoint > xmlXPathDebugObjMaxPoint) xmlXPathDebugObjMaxPoint = @@ -1546,7 +1919,7 @@ case XPATH_USERS: if (! isCached) xmlXPathDebugObjTotalUsers++; - xmlXPathDebugObjCounterUsers++; + xmlXPathDebugObjCounterUsers++; if (xmlXPathDebugObjCounterUsers > xmlXPathDebugObjMaxUsers) xmlXPathDebugObjMaxUsers = @@ -1555,7 +1928,7 @@ case XPATH_XSLT_TREE: if (! isCached) xmlXPathDebugObjTotalXSLTTree++; - xmlXPathDebugObjCounterXSLTTree++; + xmlXPathDebugObjCounterXSLTTree++; if (xmlXPathDebugObjCounterXSLTTree > xmlXPathDebugObjMaxXSLTTree) xmlXPathDebugObjMaxXSLTTree = @@ -1584,8 +1957,8 @@ xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; - isCached = 1; - + isCached = 1; + cache->dbgCachedAll++; switch (objType) { case XPATH_UNDEFINED: @@ -1621,7 +1994,7 @@ default: break; } - + } } switch (objType) { @@ -1657,7 +2030,7 @@ break; default: break; - } + } xmlXPathDebugObjCounterAll--; } @@ -1680,7 +2053,7 @@ reqNumber = xmlXPathDebugObjTotalNumber; reqXSLTTree = xmlXPathDebugObjTotalXSLTTree; reqUndefined = xmlXPathDebugObjTotalUndefined; - + printf("# XPath object usage:\n"); if (ctxt != NULL) { @@ -1702,7 +2075,7 @@ reqXSLTTree += reXSLTTree; reUndefined = cache->dbgReusedUndefined; reqUndefined += reUndefined; - + caAll = cache->dbgCachedAll; caBool = cache->dbgCachedBool; caNodeset = cache->dbgCachedNodeset; @@ -1710,7 +2083,7 @@ caNumber = cache->dbgCachedNumber; caXSLTTree = cache->dbgCachedXSLTTree; caUndefined = cache->dbgCachedUndefined; - + if (cache->nodesetObjs) leftObjs -= cache->nodesetObjs->number; if (cache->stringObjs) @@ -1723,8 +2096,8 @@ leftObjs -= cache->miscObjs->number; } } - - printf("# all\n"); + + printf("# all\n"); printf("# total : %d\n", reqAll); printf("# left : %d\n", leftObjs); printf("# created: %d\n", xmlXPathDebugObjTotalAll); @@ -1847,7 +2220,7 @@ if (cache->numberObjs) xmlXPathCacheFreeObjectList(cache->numberObjs); if (cache->miscObjs) - xmlXPathCacheFreeObjectList(cache->miscObjs); + xmlXPathCacheFreeObjectList(cache->miscObjs); xmlFree(cache); } @@ -1856,7 +2229,7 @@ * * @ctxt: the XPath context * @active: enables/disables (creates/frees) the cache - * @value: a value with semantics dependant on @options + * @value: a value with semantics dependant on @options * @options: options (currently only the value 0 is used) * * Creates/frees an object cache on the XPath context. @@ -1883,7 +2256,7 @@ return(-1); if (active) { xmlXPathContextCachePtr cache; - + if (ctxt->cache == NULL) { ctxt->cache = xmlXPathNewCache(); if (ctxt->cache == NULL) @@ -1918,7 +2291,7 @@ */ static xmlXPathObjectPtr xmlXPathCacheWrapNodeSet(xmlXPathContextPtr ctxt, xmlNodeSetPtr val) -{ +{ if ((ctxt != NULL) && (ctxt->cache != NULL)) { xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; @@ -1927,7 +2300,7 @@ (cache->miscObjs->number != 0)) { xmlXPathObjectPtr ret; - + ret = (xmlXPathObjectPtr) cache->miscObjs->items[--cache->miscObjs->number]; ret->type = XPATH_NODESET; @@ -1935,12 +2308,12 @@ #ifdef XP_DEBUG_OBJ_USAGE xmlXPathDebugObjUsageRequested(ctxt, XPATH_NODESET); #endif - return(ret); + return(ret); } } - + return(xmlXPathWrapNodeSet(val)); - + } /** @@ -1955,16 +2328,16 @@ */ static xmlXPathObjectPtr xmlXPathCacheWrapString(xmlXPathContextPtr ctxt, xmlChar *val) -{ +{ if ((ctxt != NULL) && (ctxt->cache != NULL)) { xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; if ((cache->stringObjs != NULL) && (cache->stringObjs->number != 0)) { - + xmlXPathObjectPtr ret; - + ret = (xmlXPathObjectPtr) cache->stringObjs->items[--cache->stringObjs->number]; ret->type = XPATH_STRING; @@ -2013,20 +2386,20 @@ if ((cache->nodesetObjs != NULL) && (cache->nodesetObjs->number != 0)) - { + { xmlXPathObjectPtr ret; /* * Use the nodset-cache. - */ + */ ret = (xmlXPathObjectPtr) cache->nodesetObjs->items[--cache->nodesetObjs->number]; ret->type = XPATH_NODESET; ret->boolval = 0; - if (val) { + if (val) { if ((ret->nodesetval->nodeMax == 0) || (val->type == XML_NAMESPACE_DECL)) { - xmlXPathNodeSetAddUnique(ret->nodesetval, val); + xmlXPathNodeSetAddUnique(ret->nodesetval, val); } else { ret->nodesetval->nodeTab[0] = val; ret->nodesetval->nodeNr = 1; @@ -2050,6 +2423,11 @@ ret->type = XPATH_NODESET; ret->boolval = 0; ret->nodesetval = xmlXPathNodeSetCreate(val); + if (ret->nodesetval == NULL) { + ctxt->lastError.domain = XML_FROM_XPATH; + ctxt->lastError.code = XML_ERR_NO_MEMORY; + return(NULL); + } #ifdef XP_DEBUG_OBJ_USAGE xmlXPathDebugObjUsageRequested(ctxt, XPATH_NODESET); #endif @@ -2071,15 +2449,15 @@ */ static xmlXPathObjectPtr xmlXPathCacheNewCString(xmlXPathContextPtr ctxt, const char *val) -{ +{ if ((ctxt != NULL) && (ctxt->cache)) { xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; if ((cache->stringObjs != NULL) && (cache->stringObjs->number != 0)) - { + { xmlXPathObjectPtr ret; - + ret = (xmlXPathObjectPtr) cache->stringObjs->items[--cache->stringObjs->number]; @@ -2120,15 +2498,15 @@ */ static xmlXPathObjectPtr xmlXPathCacheNewString(xmlXPathContextPtr ctxt, const xmlChar *val) -{ +{ if ((ctxt != NULL) && (ctxt->cache)) { xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; if ((cache->stringObjs != NULL) && (cache->stringObjs->number != 0)) - { + { xmlXPathObjectPtr ret; - + ret = (xmlXPathObjectPtr) cache->stringObjs->items[--cache->stringObjs->number]; ret->type = XPATH_STRING; @@ -2174,15 +2552,15 @@ */ static xmlXPathObjectPtr xmlXPathCacheNewBoolean(xmlXPathContextPtr ctxt, int val) -{ +{ if ((ctxt != NULL) && (ctxt->cache)) { xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; if ((cache->booleanObjs != NULL) && (cache->booleanObjs->number != 0)) - { + { xmlXPathObjectPtr ret; - + ret = (xmlXPathObjectPtr) cache->booleanObjs->items[--cache->booleanObjs->number]; ret->type = XPATH_BOOLEAN; @@ -2228,9 +2606,9 @@ if ((cache->numberObjs != NULL) && (cache->numberObjs->number != 0)) - { + { xmlXPathObjectPtr ret; - + ret = (xmlXPathObjectPtr) cache->numberObjs->items[--cache->numberObjs->number]; ret->type = XPATH_NUMBER; @@ -2272,7 +2650,7 @@ static xmlXPathObjectPtr xmlXPathCacheConvertString(xmlXPathContextPtr ctxt, xmlXPathObjectPtr val) { - xmlChar *res = NULL; + xmlChar *res = NULL; if (val == NULL) return(xmlXPathCacheNewCString(ctxt, "")); @@ -2356,7 +2734,7 @@ static xmlXPathObjectPtr xmlXPathCacheConvertBoolean(xmlXPathContextPtr ctxt, xmlXPathObjectPtr val) { xmlXPathObjectPtr ret; - + if (val == NULL) return(xmlXPathCacheNewBoolean(ctxt, 0)); if (val->type == XPATH_BOOLEAN) @@ -2380,7 +2758,7 @@ static xmlXPathObjectPtr xmlXPathCacheConvertNumber(xmlXPathContextPtr ctxt, xmlXPathObjectPtr val) { xmlXPathObjectPtr ret; - + if (val == NULL) return(xmlXPathCacheNewFloat(ctxt, 0.0)); if (val->type == XPATH_NUMBER) @@ -2392,11 +2770,47 @@ /************************************************************************ * * - * Parser stacks related functions and macros * + * Parser stacks related functions and macros * * * ************************************************************************/ /** + * xmlXPathSetFrame: + * @ctxt: an XPath parser context + * + * Set the callee evaluation frame + * + * Returns the previous frame value to be restored once done + */ +static int +xmlXPathSetFrame(xmlXPathParserContextPtr ctxt) { + int ret; + + if (ctxt == NULL) + return(0); + ret = ctxt->valueFrame; + ctxt->valueFrame = ctxt->valueNr; + return(ret); +} + +/** + * xmlXPathPopFrame: + * @ctxt: an XPath parser context + * @frame: the previous frame value + * + * Remove the callee evaluation frame + */ +static void +xmlXPathPopFrame(xmlXPathParserContextPtr ctxt, int frame) { + if (ctxt == NULL) + return; + if (ctxt->valueNr < ctxt->valueFrame) { + xmlXPatherror(ctxt, __FILE__, __LINE__, XPATH_STACK_ERROR); + } + ctxt->valueFrame = frame; +} + +/** * valuePop: * @ctxt: an XPath evaluation context * @@ -2411,6 +2825,12 @@ if ((ctxt == NULL) || (ctxt->valueNr <= 0)) return (NULL); + + if (ctxt->valueNr <= ctxt->valueFrame) { + xmlXPatherror(ctxt, __FILE__, __LINE__, XPATH_STACK_ERROR); + return (NULL); + } + ctxt->valueNr--; if (ctxt->valueNr > 0) ctxt->value = ctxt->valueTab[ctxt->valueNr - 1]; @@ -2436,11 +2856,17 @@ if (ctxt->valueNr >= ctxt->valueMax) { xmlXPathObjectPtr *tmp; + if (ctxt->valueMax >= XPATH_MAX_STACK_DEPTH) { + xmlXPathErrMemory(NULL, "XPath stack depth limit reached\n"); + ctxt->error = XPATH_MEMORY_ERROR; + return (0); + } tmp = (xmlXPathObjectPtr *) xmlRealloc(ctxt->valueTab, 2 * ctxt->valueMax * sizeof(ctxt->valueTab[0])); if (tmp == NULL) { - xmlGenericError(xmlGenericErrorContext, "realloc failed !\n"); + xmlXPathErrMemory(NULL, "pushing value\n"); + ctxt->error = XPATH_MEMORY_ERROR; return (0); } ctxt->valueMax *= 2; @@ -2631,7 +3057,7 @@ #define NEXTL(l) ctxt->cur += l -#define SKIP_BLANKS \ +#define SKIP_BLANKS \ while (IS_BLANK_CH(*(ctxt->cur))) NEXT #define CURRENT (*ctxt->cur) @@ -2647,9 +3073,10 @@ #define UPPER_DOUBLE 1E9 #define LOWER_DOUBLE 1E-5 +#define LOWER_DOUBLE_EXP 5 #define INTEGER_DIGITS DBL_DIG -#define FRACTION_DIGITS (DBL_DIG + 1) +#define FRACTION_DIGITS (DBL_DIG + 1 + (LOWER_DOUBLE_EXP)) #define EXPONENT_DIGITS (3 + 2) /** @@ -2700,8 +3127,16 @@ *ptr = 0; } } else { - /* 3 is sign, decimal point, and terminating zero */ - char work[DBL_DIG + EXPONENT_DIGITS + 3]; + /* + For the dimension of work, + DBL_DIG is number of significant digits + EXPONENT is only needed for "scientific notation" + 3 is sign, decimal point, and terminating zero + LOWER_DOUBLE_EXP is max number of leading zeroes in fraction + Note that this dimension is slightly (a few characters) + larger than actually necessary. + */ + char work[DBL_DIG + EXPONENT_DIGITS + 3 + LOWER_DOUBLE_EXP]; int integer_place, fraction_place; char *ptr; char *after_fraction; @@ -2724,24 +3159,31 @@ size = snprintf(work, sizeof(work),"%*.*e", integer_place, fraction_place, number); while ((size > 0) && (work[size] != 'e')) size--; - after_fraction = work + size; } else { /* Use regular notation */ - if (absolute_value > 0.0) - integer_place = 1 + (int)log10(absolute_value); - else - integer_place = 0; - fraction_place = (integer_place > 0) - ? DBL_DIG - integer_place - : DBL_DIG; + if (absolute_value > 0.0) { + integer_place = (int)log10(absolute_value); + if (integer_place > 0) + fraction_place = DBL_DIG - integer_place - 1; + else + fraction_place = DBL_DIG - integer_place; + } else { + fraction_place = 1; + } size = snprintf(work, sizeof(work), "%0.*f", fraction_place, number); - after_fraction = work + size; + } + + /* Remove leading spaces sometimes inserted by snprintf */ + while (work[0] == ' ') { + for (ptr = &work[0];(ptr[0] = ptr[1]);ptr++); + size--; } /* Remove fractional trailing zeroes */ + after_fraction = work + size; ptr = after_fraction; while (*(--ptr) == '0') ; @@ -2766,410 +3208,127 @@ * * * Routines to handle NodeSets * * * - ************************************************************************/ - -/** - * xmlXPathOrderDocElems: - * @doc: an input document - * - * Call this routine to speed up XPath computation on static documents. - * This stamps all the element nodes with the document order - * Like for line information, the order is kept in the element->content - * field, the value stored is actually - the node number (starting at -1) - * to be able to differentiate from line numbers. - * - * Returns the number of elements found in the document or -1 in case - * of error. - */ -long -xmlXPathOrderDocElems(xmlDocPtr doc) { - long count = 0; - xmlNodePtr cur; - - if (doc == NULL) - return(-1); - cur = doc->children; - while (cur != NULL) { - if (cur->type == XML_ELEMENT_NODE) { - cur->content = (void *) (-(++count)); - if (cur->children != NULL) { - cur = cur->children; - continue; - } - } - if (cur->next != NULL) { - cur = cur->next; - continue; - } - do { - cur = cur->parent; - if (cur == NULL) - break; - if (cur == (xmlNodePtr) doc) { - cur = NULL; - break; - } - if (cur->next != NULL) { - cur = cur->next; - break; - } - } while (cur != NULL); - } - return(count); -} - -/** - * xmlXPathCmpNodes: - * @node1: the first node - * @node2: the second node - * - * Compare two nodes w.r.t document order - * - * Returns -2 in case of error 1 if first point < second point, 0 if - * it's the same node, -1 otherwise - */ -int -xmlXPathCmpNodes(xmlNodePtr node1, xmlNodePtr node2) { - int depth1, depth2; - int attr1 = 0, attr2 = 0; - xmlNodePtr attrNode1 = NULL, attrNode2 = NULL; - xmlNodePtr cur, root; - - if ((node1 == NULL) || (node2 == NULL)) - return(-2); - /* - * a couple of optimizations which will avoid computations in most cases - */ - if (node1->type == XML_ATTRIBUTE_NODE) { - attr1 = 1; - attrNode1 = node1; - node1 = node1->parent; - } - if (node2->type == XML_ATTRIBUTE_NODE) { - attr2 = 1; - attrNode2 = node2; - node2 = node2->parent; - } - if (node1 == node2) { - if (attr1 == attr2) { - /* not required, but we keep attributes in order */ - if (attr1 != 0) { - cur = attrNode2->prev; - while (cur != NULL) { - if (cur == attrNode1) - return (1); - cur = cur->prev; - } - return (-1); - } - return(0); - } - if (attr2 == 1) - return(1); - return(-1); - } - if ((node1->type == XML_NAMESPACE_DECL) || - (node2->type == XML_NAMESPACE_DECL)) - return(1); - if (node1 == node2->prev) - return(1); - if (node1 == node2->next) - return(-1); - - /* - * Speedup using document order if availble. - */ - if ((node1->type == XML_ELEMENT_NODE) && - (node2->type == XML_ELEMENT_NODE) && - (0 > (long) node1->content) && - (0 > (long) node2->content) && - (node1->doc == node2->doc)) { - long l1, l2; + ************************************************************************/ - l1 = -((long) node1->content); - l2 = -((long) node2->content); - if (l1 < l2) - return(1); - if (l1 > l2) - return(-1); - } +/** + * xmlXPathOrderDocElems: + * @doc: an input document + * + * Call this routine to speed up XPath computation on static documents. + * This stamps all the element nodes with the document order + * Like for line information, the order is kept in the element->content + * field, the value stored is actually - the node number (starting at -1) + * to be able to differentiate from line numbers. + * + * Returns the number of elements found in the document or -1 in case + * of error. + */ +long +xmlXPathOrderDocElems(xmlDocPtr doc) { + long count = 0; + xmlNodePtr cur; - /* - * compute depth to root - */ - for (depth2 = 0, cur = node2;cur->parent != NULL;cur = cur->parent) { - if (cur == node1) - return(1); - depth2++; - } - root = cur; - for (depth1 = 0, cur = node1;cur->parent != NULL;cur = cur->parent) { - if (cur == node2) - return(-1); - depth1++; - } - /* - * Distinct document (or distinct entities :-( ) case. - */ - if (root != cur) { - return(-2); - } - /* - * get the nearest common ancestor. - */ - while (depth1 > depth2) { - depth1--; - node1 = node1->parent; - } - while (depth2 > depth1) { - depth2--; - node2 = node2->parent; - } - while (node1->parent != node2->parent) { - node1 = node1->parent; - node2 = node2->parent; - /* should not happen but just in case ... */ - if ((node1 == NULL) || (node2 == NULL)) - return(-2); - } - /* - * Find who's first. - */ - if (node1 == node2->prev) - return(1); - if (node1 == node2->next) + if (doc == NULL) return(-1); - /* - * Speedup using document order if availble. - */ - if ((node1->type == XML_ELEMENT_NODE) && - (node2->type == XML_ELEMENT_NODE) && - (0 > (long) node1->content) && - (0 > (long) node2->content) && - (node1->doc == node2->doc)) { - long l1, l2; - - l1 = -((long) node1->content); - l2 = -((long) node2->content); - if (l1 < l2) - return(1); - if (l1 > l2) - return(-1); + cur = doc->children; + while (cur != NULL) { + if (cur->type == XML_ELEMENT_NODE) { + cur->content = (void *) (-(++count)); + if (cur->children != NULL) { + cur = cur->children; + continue; + } + } + if (cur->next != NULL) { + cur = cur->next; + continue; + } + do { + cur = cur->parent; + if (cur == NULL) + break; + if (cur == (xmlNodePtr) doc) { + cur = NULL; + break; + } + if (cur->next != NULL) { + cur = cur->next; + break; + } + } while (cur != NULL); } - - for (cur = node1->next;cur != NULL;cur = cur->next) - if (cur == node2) - return(1); - return(-1); /* assume there is no sibling list corruption */ + return(count); } -#ifdef XP_OPTIMIZED_NON_ELEM_COMPARISON /** - * xmlXPathCmpNodesExt: + * xmlXPathCmpNodes: * @node1: the first node * @node2: the second node * - * Compare two nodes w.r.t document order. - * This one is optimized for handling of non-element nodes. + * Compare two nodes w.r.t document order * * Returns -2 in case of error 1 if first point < second point, 0 if * it's the same node, -1 otherwise */ -static int -xmlXPathCmpNodesExt(xmlNodePtr node1, xmlNodePtr node2) { +int +xmlXPathCmpNodes(xmlNodePtr node1, xmlNodePtr node2) { int depth1, depth2; - int misc = 0, precedence1 = 0, precedence2 = 0; - xmlNodePtr miscNode1 = NULL, miscNode2 = NULL; + int attr1 = 0, attr2 = 0; + xmlNodePtr attrNode1 = NULL, attrNode2 = NULL; xmlNodePtr cur, root; - long l1, l2; if ((node1 == NULL) || (node2 == NULL)) return(-2); - - if (node1 == node2) - return(0); - /* * a couple of optimizations which will avoid computations in most cases - */ - switch (node1->type) { - case XML_ELEMENT_NODE: - if (node2->type == XML_ELEMENT_NODE) { - if ((0 > (long) node1->content) && /* TODO: Would a != 0 suffice here? */ - (0 > (long) node2->content) && - (node1->doc == node2->doc)) - { - l1 = -((long) node1->content); - l2 = -((long) node2->content); - if (l1 < l2) - return(1); - if (l1 > l2) - return(-1); - } else - goto turtle_comparison; - } - break; - case XML_ATTRIBUTE_NODE: - precedence1 = 1; /* element is owner */ - miscNode1 = node1; - node1 = node1->parent; - misc = 1; - break; - case XML_TEXT_NODE: - case XML_CDATA_SECTION_NODE: - case XML_COMMENT_NODE: - case XML_PI_NODE: { - miscNode1 = node1; - /* - * Find nearest element node. - */ - if (node1->prev != NULL) { - do { - node1 = node1->prev; - if (node1->type == XML_ELEMENT_NODE) { - precedence1 = 3; /* element in prev-sibl axis */ - break; - } - if (node1->prev == NULL) { - precedence1 = 2; /* element is parent */ - /* - * URGENT TODO: Are there any cases, where the - * parent of such a node is not an element node? - */ - node1 = node1->parent; - break; - } - } while (1); - } else { - precedence1 = 2; /* element is parent */ - node1 = node1->parent; - } - if ((node1 == NULL) || (node1->type != XML_ELEMENT_NODE)) { - /* - * Fallback for whatever case. - */ - node1 = miscNode1; - precedence1 = 0; - } else - misc = 1; - } - break; - case XML_NAMESPACE_DECL: - /* - * TODO: why do we return 1 for namespace nodes? - */ - return(1); - default: - break; - } - switch (node2->type) { - case XML_ELEMENT_NODE: - break; - case XML_ATTRIBUTE_NODE: - precedence2 = 1; /* element is owner */ - miscNode2 = node2; - node2 = node2->parent; - misc = 1; - break; - case XML_TEXT_NODE: - case XML_CDATA_SECTION_NODE: - case XML_COMMENT_NODE: - case XML_PI_NODE: { - miscNode2 = node2; - if (node2->prev != NULL) { - do { - node2 = node2->prev; - if (node2->type == XML_ELEMENT_NODE) { - precedence2 = 3; /* element in prev-sibl axis */ - break; - } - if (node2->prev == NULL) { - precedence2 = 2; /* element is parent */ - node2 = node2->parent; - break; - } - } while (1); - } else { - precedence2 = 2; /* element is parent */ - node2 = node2->parent; - } - if ((node2 == NULL) || (node2->type != XML_ELEMENT_NODE) || - (0 <= (long) node1->content)) - { - node2 = miscNode2; - precedence2 = 0; - } else - misc = 1; - } - break; - case XML_NAMESPACE_DECL: - return(1); - default: - break; + */ + if (node1 == node2) /* trivial case */ + return(0); + if (node1->type == XML_ATTRIBUTE_NODE) { + attr1 = 1; + attrNode1 = node1; + node1 = node1->parent; } - if (misc) { - if (node1 == node2) { - if (precedence1 == precedence2) { - /* - * The ugly case; but normally there aren't many - * adjacent non-element nodes around. - */ - cur = miscNode2->prev; + if (node2->type == XML_ATTRIBUTE_NODE) { + attr2 = 1; + attrNode2 = node2; + node2 = node2->parent; + } + if (node1 == node2) { + if (attr1 == attr2) { + /* not required, but we keep attributes in order */ + if (attr1 != 0) { + cur = attrNode2->prev; while (cur != NULL) { - if (cur == miscNode1) - return(1); - if (cur->type == XML_ELEMENT_NODE) - return(-1); + if (cur == attrNode1) + return (1); cur = cur->prev; } return (-1); - } else { - /* - * Evaluate based on higher precedence wrt to the element. - * TODO: This assumes attributes are sorted before content. - * Is this 100% correct? - */ - if (precedence1 < precedence2) - return(1); - else - return(-1); - } - } - /* - * Special case: One of the helper-elements is contained by the other. - * - * - * Text-1(precedence1 == 2) - * - * Text-6(precedence2 == 3) - * - */ - if ((precedence2 == 3) && (precedence1 > 1)) { - cur = node1->parent; - while (cur) { - if (cur == node2) - return(1); - cur = cur->parent; - } - } - if ((precedence1 == 3) && (precedence2 > 1)) { - cur = node2->parent; - while (cur) { - if (cur == node1) - return(-1); - cur = cur->parent; } + return(0); } - } + if (attr2 == 1) + return(1); + return(-1); + } + if ((node1->type == XML_NAMESPACE_DECL) || + (node2->type == XML_NAMESPACE_DECL)) + return(1); + if (node1 == node2->prev) + return(1); + if (node1 == node2->next) + return(-1); /* * Speedup using document order if availble. */ - if ((node1->type == XML_ELEMENT_NODE) && + if ((node1->type == XML_ELEMENT_NODE) && (node2->type == XML_ELEMENT_NODE) && (0 > (long) node1->content) && (0 > (long) node2->content) && - (node1->doc == node2->doc)) { + (node1->doc == node2->doc)) { + long l1, l2; l1 = -((long) node1->content); l2 = -((long) node2->content); @@ -3179,12 +3338,6 @@ return(-1); } -turtle_comparison: - - if (node1 == node2->prev) - return(1); - if (node1 == node2->next) - return(-1); /* * compute depth to root */ @@ -3237,7 +3390,8 @@ (node2->type == XML_ELEMENT_NODE) && (0 > (long) node1->content) && (0 > (long) node2->content) && - (node1->doc == node2->doc)) { + (node1->doc == node2->doc)) { + long l1, l2; l1 = -((long) node1->content); l2 = -((long) node2->content); @@ -3252,7 +3406,6 @@ return(1); return(-1); /* assume there is no sibling list corruption */ } -#endif /* XP_OPTIMIZED_NON_ELEM_COMPARISON */ /** * xmlXPathNodeSetSort: @@ -3262,13 +3415,19 @@ */ void xmlXPathNodeSetSort(xmlNodeSetPtr set) { +#ifndef WITH_TIM_SORT int i, j, incr, len; xmlNodePtr tmp; +#endif if (set == NULL) return; - /* Use Shell's sort to sort the node-set */ +#ifndef WITH_TIM_SORT + /* + * Use the old Shell's sort implementation to sort the node-set + * Timsort ought to be quite faster + */ len = set->nodeNr; for (incr = len / 2; incr > 0; incr /= 2) { for (i = incr; i < len; i++) { @@ -3291,6 +3450,9 @@ } } } +#else /* WITH_TIM_SORT */ + libxml_domnode_tim_sort(set->nodeTab, set->nodeNr); +#endif /* WITH_TIM_SORT */ } #define XML_NODESET_DEFAULT 10 @@ -3325,9 +3487,9 @@ memset(cur, 0, sizeof(xmlNs)); cur->type = XML_NAMESPACE_DECL; if (ns->href != NULL) - cur->href = xmlStrdup(ns->href); + cur->href = xmlStrdup(ns->href); if (ns->prefix != NULL) - cur->prefix = xmlStrdup(ns->prefix); + cur->prefix = xmlStrdup(ns->prefix); cur->next = (xmlNsPtr) node; return((xmlNodePtr) cur); } @@ -3421,7 +3583,7 @@ return(NULL); } memset(ret->nodeTab, 0 , size * (size_t) sizeof(xmlNodePtr)); - ret->nodeMax = size; + ret->nodeMax = size; return(ret); } @@ -3469,16 +3631,18 @@ * @ns: a the namespace node * * add a new namespace node to an existing NodeSet + * + * Returns 0 in case of success and -1 in case of error */ -void +int xmlXPathNodeSetAddNs(xmlNodeSetPtr cur, xmlNodePtr node, xmlNsPtr ns) { int i; - + if ((cur == NULL) || (ns == NULL) || (node == NULL) || (ns->type != XML_NAMESPACE_DECL) || (node->type != XML_ELEMENT_NODE)) - return; + return(-1); /* @@ with_ns to check whether namespace nodes should be looked at @@ */ /* @@ -3489,7 +3653,7 @@ (cur->nodeTab[i]->type == XML_NAMESPACE_DECL) && (((xmlNsPtr)cur->nodeTab[i])->next == (xmlNsPtr) node) && (xmlStrEqual(ns->prefix, ((xmlNsPtr)cur->nodeTab[i])->prefix))) - return; + return(0); } /* @@ -3500,7 +3664,7 @@ sizeof(xmlNodePtr)); if (cur->nodeTab == NULL) { xmlXPathErrMemory(NULL, "growing nodeset\n"); - return; + return(-1); } memset(cur->nodeTab, 0 , XML_NODESET_DEFAULT * (size_t) sizeof(xmlNodePtr)); @@ -3508,16 +3672,21 @@ } else if (cur->nodeNr == cur->nodeMax) { xmlNodePtr *temp; - cur->nodeMax *= 2; - temp = (xmlNodePtr *) xmlRealloc(cur->nodeTab, cur->nodeMax * + if (cur->nodeMax >= XPATH_MAX_NODESET_LENGTH) { + xmlXPathErrMemory(NULL, "growing nodeset hit limit\n"); + return(-1); + } + temp = (xmlNodePtr *) xmlRealloc(cur->nodeTab, cur->nodeMax * 2 * sizeof(xmlNodePtr)); if (temp == NULL) { xmlXPathErrMemory(NULL, "growing nodeset\n"); - return; + return(-1); } + cur->nodeMax *= 2; cur->nodeTab = temp; } cur->nodeTab[cur->nodeNr++] = xmlXPathNodeSetDupNs(node, ns); + return(0); } /** @@ -3526,24 +3695,21 @@ * @val: a new xmlNodePtr * * add a new xmlNodePtr to an existing NodeSet + * + * Returns 0 in case of success, and -1 in case of error */ -void +int xmlXPathNodeSetAdd(xmlNodeSetPtr cur, xmlNodePtr val) { int i; - if ((cur == NULL) || (val == NULL)) return; - -#if 0 - if ((val->type == XML_ELEMENT_NODE) && (val->name[0] == ' ')) - return; /* an XSLT fake node */ -#endif + if ((cur == NULL) || (val == NULL)) return(-1); /* @@ with_ns to check whether namespace nodes should be looked at @@ */ /* * prevent duplcates */ for (i = 0;i < cur->nodeNr;i++) - if (cur->nodeTab[i] == val) return; + if (cur->nodeTab[i] == val) return(0); /* * grow the nodeTab if needed @@ -3553,7 +3719,7 @@ sizeof(xmlNodePtr)); if (cur->nodeTab == NULL) { xmlXPathErrMemory(NULL, "growing nodeset\n"); - return; + return(-1); } memset(cur->nodeTab, 0 , XML_NODESET_DEFAULT * (size_t) sizeof(xmlNodePtr)); @@ -3561,22 +3727,27 @@ } else if (cur->nodeNr == cur->nodeMax) { xmlNodePtr *temp; - cur->nodeMax *= 2; - temp = (xmlNodePtr *) xmlRealloc(cur->nodeTab, cur->nodeMax * + if (cur->nodeMax >= XPATH_MAX_NODESET_LENGTH) { + xmlXPathErrMemory(NULL, "growing nodeset hit limit\n"); + return(-1); + } + temp = (xmlNodePtr *) xmlRealloc(cur->nodeTab, cur->nodeMax * 2 * sizeof(xmlNodePtr)); if (temp == NULL) { xmlXPathErrMemory(NULL, "growing nodeset\n"); - return; + return(-1); } + cur->nodeMax *= 2; cur->nodeTab = temp; } if (val->type == XML_NAMESPACE_DECL) { xmlNsPtr ns = (xmlNsPtr) val; - cur->nodeTab[cur->nodeNr++] = + cur->nodeTab[cur->nodeNr++] = xmlXPathNodeSetDupNs((xmlNodePtr) ns->next, ns); } else cur->nodeTab[cur->nodeNr++] = val; + return(0); } /** @@ -3586,15 +3757,12 @@ * * add a new xmlNodePtr to an existing NodeSet, optimized version * when we are sure the node is not already in the set. + * + * Returns 0 in case of success and -1 in case of failure */ -void +int xmlXPathNodeSetAddUnique(xmlNodeSetPtr cur, xmlNodePtr val) { - if ((cur == NULL) || (val == NULL)) return; - -#if 0 - if ((val->type == XML_ELEMENT_NODE) && (val->name[0] == ' ')) - return; /* an XSLT fake node */ -#endif + if ((cur == NULL) || (val == NULL)) return(-1); /* @@ with_ns to check whether namespace nodes should be looked at @@ */ /* @@ -3605,7 +3773,7 @@ sizeof(xmlNodePtr)); if (cur->nodeTab == NULL) { xmlXPathErrMemory(NULL, "growing nodeset\n"); - return; + return(-1); } memset(cur->nodeTab, 0 , XML_NODESET_DEFAULT * (size_t) sizeof(xmlNodePtr)); @@ -3613,22 +3781,27 @@ } else if (cur->nodeNr == cur->nodeMax) { xmlNodePtr *temp; - cur->nodeMax *= 2; - temp = (xmlNodePtr *) xmlRealloc(cur->nodeTab, cur->nodeMax * + if (cur->nodeMax >= XPATH_MAX_NODESET_LENGTH) { + xmlXPathErrMemory(NULL, "growing nodeset hit limit\n"); + return(-1); + } + temp = (xmlNodePtr *) xmlRealloc(cur->nodeTab, cur->nodeMax * 2 * sizeof(xmlNodePtr)); if (temp == NULL) { xmlXPathErrMemory(NULL, "growing nodeset\n"); - return; + return(-1); } cur->nodeTab = temp; + cur->nodeMax *= 2; } if (val->type == XML_NAMESPACE_DECL) { xmlNsPtr ns = (xmlNsPtr) val; - cur->nodeTab[cur->nodeNr++] = + cur->nodeTab[cur->nodeNr++] = xmlXPathNodeSetDupNs((xmlNodePtr) ns->next, ns); } else cur->nodeTab[cur->nodeNr++] = val; + return(0); } /** @@ -3649,6 +3822,8 @@ if (val2 == NULL) return(val1); if (val1 == NULL) { val1 = xmlXPathNodeSetCreate(NULL); + if (val1 == NULL) + return (NULL); #if 0 /* * TODO: The optimization won't work in every case, since @@ -3658,7 +3833,7 @@ * If there was a flag on the nodesetval, indicating that * some temporary nodes are in, that would be helpfull. */ - /* + /* * Optimization: Create an equally sized node-set * and memcpy the content. */ @@ -3682,7 +3857,7 @@ initNr = val1->nodeNr; for (i = 0;i < val2->nodeNr;i++) { - n2 = val2->nodeTab[i]; + n2 = val2->nodeTab[i]; /* * check against duplicates */ @@ -3693,7 +3868,7 @@ skip = 1; break; } else if ((n1->type == XML_NAMESPACE_DECL) && - (n2->type == XML_NAMESPACE_DECL)) { + (n2->type == XML_NAMESPACE_DECL)) { if ((((xmlNsPtr) n1)->next == ((xmlNsPtr) n2)->next) && (xmlStrEqual(((xmlNsPtr) n1)->prefix, ((xmlNsPtr) n2)->prefix))) @@ -3722,14 +3897,18 @@ } else if (val1->nodeNr == val1->nodeMax) { xmlNodePtr *temp; - val1->nodeMax *= 2; - temp = (xmlNodePtr *) xmlRealloc(val1->nodeTab, val1->nodeMax * + if (val1->nodeMax >= XPATH_MAX_NODESET_LENGTH) { + xmlXPathErrMemory(NULL, "merging nodeset hit limit\n"); + return(NULL); + } + temp = (xmlNodePtr *) xmlRealloc(val1->nodeTab, val1->nodeMax * 2 * sizeof(xmlNodePtr)); if (temp == NULL) { xmlXPathErrMemory(NULL, "merging nodeset\n"); return(NULL); } val1->nodeTab = temp; + val1->nodeMax *= 2; } if (n2->type == XML_NAMESPACE_DECL) { xmlNsPtr ns = (xmlNsPtr) n2; @@ -3743,66 +3922,6 @@ return(val1); } -#if 0 /* xmlXPathNodeSetMergeUnique() is currently not used anymore */ -/** - * xmlXPathNodeSetMergeUnique: - * @val1: the first NodeSet or NULL - * @val2: the second NodeSet - * - * Merges two nodesets, all nodes from @val2 are added to @val1 - * if @val1 is NULL, a new set is created and copied from @val2 - * - * Returns @val1 once extended or NULL in case of error. - */ -static xmlNodeSetPtr -xmlXPathNodeSetMergeUnique(xmlNodeSetPtr val1, xmlNodeSetPtr val2) { - int i; - - if (val2 == NULL) return(val1); - if (val1 == NULL) { - val1 = xmlXPathNodeSetCreate(NULL); - } - - /* @@ with_ns to check whether namespace nodes should be looked at @@ */ - - for (i = 0;i < val2->nodeNr;i++) { - /* - * grow the nodeTab if needed - */ - if (val1->nodeMax == 0) { - val1->nodeTab = (xmlNodePtr *) xmlMalloc(XML_NODESET_DEFAULT * - sizeof(xmlNodePtr)); - if (val1->nodeTab == NULL) { - xmlXPathErrMemory(NULL, "merging nodeset\n"); - return(NULL); - } - memset(val1->nodeTab, 0 , - XML_NODESET_DEFAULT * (size_t) sizeof(xmlNodePtr)); - val1->nodeMax = XML_NODESET_DEFAULT; - } else if (val1->nodeNr == val1->nodeMax) { - xmlNodePtr *temp; - - val1->nodeMax *= 2; - temp = (xmlNodePtr *) xmlRealloc(val1->nodeTab, val1->nodeMax * - sizeof(xmlNodePtr)); - if (temp == NULL) { - xmlXPathErrMemory(NULL, "merging nodeset\n"); - return(NULL); - } - val1->nodeTab = temp; - } - if (val2->nodeTab[i]->type == XML_NAMESPACE_DECL) { - xmlNsPtr ns = (xmlNsPtr) val2->nodeTab[i]; - - val1->nodeTab[val1->nodeNr++] = - xmlXPathNodeSetDupNs((xmlNodePtr) ns->next, ns); - } else - val1->nodeTab[val1->nodeNr++] = val2->nodeTab[i]; - } - - return(val1); -} -#endif /* xmlXPathNodeSetMergeUnique() is currently not used anymore */ /** * xmlXPathNodeSetMergeAndClear: @@ -3838,9 +3957,11 @@ xmlNodePtr n1, n2; if (set1 == NULL) - set1 = xmlXPathNodeSetCreate(NULL); + set1 = xmlXPathNodeSetCreate(NULL); + if (set1 == NULL) + return (NULL); - initNbSet1 = set1->nodeNr; + initNbSet1 = set1->nodeNr; for (i = 0;i < set2->nodeNr;i++) { n2 = set2->nodeTab[i]; /* @@ -3853,11 +3974,11 @@ */ for (j = 0; j < initNbSet1; j++) { n1 = set1->nodeTab[j]; - if (n1 == n2) { + if (n1 == n2) { goto skip_node; } else if ((n1->type == XML_NAMESPACE_DECL) && (n2->type == XML_NAMESPACE_DECL)) - { + { if ((((xmlNsPtr) n1)->next == ((xmlNsPtr) n2)->next) && (xmlStrEqual(((xmlNsPtr) n1)->prefix, ((xmlNsPtr) n2)->prefix))) @@ -3886,19 +4007,23 @@ set1->nodeMax = XML_NODESET_DEFAULT; } else if (set1->nodeNr >= set1->nodeMax) { xmlNodePtr *temp; - - set1->nodeMax *= 2; + + if (set1->nodeMax >= XPATH_MAX_NODESET_LENGTH) { + xmlXPathErrMemory(NULL, "merging nodeset hit limit\n"); + return(NULL); + } temp = (xmlNodePtr *) xmlRealloc( - set1->nodeTab, set1->nodeMax * sizeof(xmlNodePtr)); + set1->nodeTab, set1->nodeMax * 2 * sizeof(xmlNodePtr)); if (temp == NULL) { xmlXPathErrMemory(NULL, "merging nodeset\n"); return(NULL); } set1->nodeTab = temp; + set1->nodeMax *= 2; } if (n2->type == XML_NAMESPACE_DECL) { xmlNsPtr ns = (xmlNsPtr) n2; - + set1->nodeTab[set1->nodeNr++] = xmlXPathNodeSetDupNs((xmlNodePtr) ns->next, ns); } else @@ -3926,7 +4051,7 @@ static xmlNodeSetPtr xmlXPathNodeSetMergeAndClearNoDupls(xmlNodeSetPtr set1, xmlNodeSetPtr set2, int hasNullEntries) -{ +{ if (set2 == NULL) return(set1); if ((set1 == NULL) && (hasNullEntries == 0)) { @@ -3948,14 +4073,16 @@ if (set1 == NULL) set1 = xmlXPathNodeSetCreate(NULL); - + if (set1 == NULL) + return (NULL); + for (i = 0;i < set2->nodeNr;i++) { n2 = set2->nodeTab[i]; /* * Skip NULLed entries. */ if (n2 == NULL) - continue; + continue; if (set1->nodeMax == 0) { set1->nodeTab = (xmlNodePtr *) xmlMalloc( XML_NODESET_DEFAULT * sizeof(xmlNodePtr)); @@ -3968,15 +4095,19 @@ set1->nodeMax = XML_NODESET_DEFAULT; } else if (set1->nodeNr >= set1->nodeMax) { xmlNodePtr *temp; - - set1->nodeMax *= 2; + + if (set1->nodeMax >= XPATH_MAX_NODESET_LENGTH) { + xmlXPathErrMemory(NULL, "merging nodeset hit limit\n"); + return(NULL); + } temp = (xmlNodePtr *) xmlRealloc( - set1->nodeTab, set1->nodeMax * sizeof(xmlNodePtr)); + set1->nodeTab, set1->nodeMax * 2 * sizeof(xmlNodePtr)); if (temp == NULL) { xmlXPathErrMemory(NULL, "merging nodeset\n"); return(NULL); } set1->nodeTab = temp; + set1->nodeMax *= 2; } set1->nodeTab[set1->nodeNr++] = n2; } @@ -4007,7 +4138,7 @@ if (i >= cur->nodeNr) { /* not found */ #ifdef DEBUG - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "xmlXPathNodeSetDel: Node %s wasn't found in NodeList\n", val->name); #endif @@ -4067,7 +4198,7 @@ /** * xmlXPathNodeSetClear: * @set: the node set to clear - * + * * Clears the list from all temporary XPath objects (e.g. namespace nodes * are feed), but does *not* free the list itself. Sets the length of the * list to 0. @@ -4080,13 +4211,13 @@ else if (hasNsNodes) { int i; xmlNodePtr node; - + for (i = 0; i < set->nodeNr; i++) { node = set->nodeTab[i]; if ((node != NULL) && (node->type == XML_NAMESPACE_DECL)) xmlXPathNodeSetFreeNs((xmlNsPtr) node); - } + } } set->nodeNr = 0; } @@ -4095,7 +4226,7 @@ * xmlXPathNodeSetClearFromPos: * @set: the node set to be cleared * @pos: the start position to clear from - * + * * Clears the list from temporary XPath objects (e.g. namespace nodes * are feed) starting with the entry at @pos, but does *not* free the list * itself. Sets the length of the list to @pos. @@ -4108,13 +4239,13 @@ else if ((hasNsNodes)) { int i; xmlNodePtr node; - + for (i = pos; i < set->nodeNr; i++) { node = set->nodeTab[i]; if ((node != NULL) && (node->type == XML_NAMESPACE_DECL)) xmlXPathNodeSetFreeNs((xmlNsPtr) node); - } + } } set->nodeNr = pos; } @@ -4267,8 +4398,12 @@ ret = xmlXPathNewNodeSet(NULL); else { ret = xmlXPathNewNodeSet(val->nodeTab[0]); - for (i = 1; i < val->nodeNr; ++i) - xmlXPathNodeSetAddUnique(ret->nodesetval, val->nodeTab[i]); + if (ret) { + for (i = 1; i < val->nodeNr; ++i) { + if (xmlXPathNodeSetAddUnique(ret->nodesetval, val->nodeTab[i]) + < 0) break; + } + } } return (ret); @@ -4344,8 +4479,10 @@ for (i = 0; i < l1; i++) { cur = xmlXPathNodeSetItem(nodes1, i); - if (!xmlXPathNodeSetContains(nodes2, cur)) - xmlXPathNodeSetAddUnique(ret, cur); + if (!xmlXPathNodeSetContains(nodes2, cur)) { + if (xmlXPathNodeSetAddUnique(ret, cur) < 0) + break; + } } return(ret); } @@ -4367,6 +4504,8 @@ int i, l1; xmlNodePtr cur; + if (ret == NULL) + return(ret); if (xmlXPathNodeSetIsEmpty(nodes1)) return(ret); if (xmlXPathNodeSetIsEmpty(nodes2)) @@ -4376,8 +4515,10 @@ for (i = 0; i < l1; i++) { cur = xmlXPathNodeSetItem(nodes1, i); - if (xmlXPathNodeSetContains(nodes2, cur)) - xmlXPathNodeSetAddUnique(ret, cur); + if (xmlXPathNodeSetContains(nodes2, cur)) { + if (xmlXPathNodeSetAddUnique(ret, cur) < 0) + break; + } } return(ret); } @@ -4388,7 +4529,7 @@ * * Implements the EXSLT - Sets distinct() function: * node-set set:distinct (node-set) - * + * * Returns a subset of the nodes contained in @nodes, or @nodes if * it is empty */ @@ -4404,6 +4545,8 @@ return(nodes); ret = xmlXPathNodeSetCreate(NULL); + if (ret == NULL) + return(ret); l = xmlXPathNodeSetGetLength(nodes); hash = xmlHashCreate (l); for (i = 0; i < l; i++) { @@ -4411,7 +4554,8 @@ strval = xmlXPathCastNodeToString(cur); if (xmlHashLookup(hash, strval) == NULL) { xmlHashAddEntry(hash, strval, strval); - xmlXPathNodeSetAddUnique(ret, cur); + if (xmlXPathNodeSetAddUnique(ret, cur) < 0) + break; } else { xmlFree(strval); } @@ -4492,6 +4636,8 @@ return(nodes); ret = xmlXPathNodeSetCreate(NULL); + if (ret == NULL) + return(ret); if (xmlXPathNodeSetIsEmpty(nodes) || (!xmlXPathNodeSetContains(nodes, node))) return(ret); @@ -4501,7 +4647,8 @@ cur = xmlXPathNodeSetItem(nodes, i); if (cur == node) break; - xmlXPathNodeSetAddUnique(ret, cur); + if (xmlXPathNodeSetAddUnique(ret, cur) < 0) + break; } return(ret); } @@ -4594,17 +4741,21 @@ return(nodes); ret = xmlXPathNodeSetCreate(NULL); + if (ret == NULL) + return(ret); if (xmlXPathNodeSetIsEmpty(nodes) || (!xmlXPathNodeSetContains(nodes, node))) return(ret); l = xmlXPathNodeSetGetLength(nodes); - for (i = l; i > 0; i--) { + for (i = l - 1; i >= 0; i--) { cur = xmlXPathNodeSetItem(nodes, i); if (cur == node) break; - xmlXPathNodeSetAddUnique(ret, cur); + if (xmlXPathNodeSetAddUnique(ret, cur) < 0) + break; } + xmlXPathNodeSetSort(ret); /* bug 413451 */ return(ret); } @@ -4690,7 +4841,7 @@ * * Returns 0 in case of success, -1 in case of error */ -int +int xmlXPathRegisterFunc(xmlXPathContextPtr ctxt, const xmlChar *name, xmlXPathFunction f) { return(xmlXPathRegisterFuncNS(ctxt, name, NULL, f)); @@ -4784,7 +4935,7 @@ xmlXPathFunctionLookupNS(xmlXPathContextPtr ctxt, const xmlChar *name, const xmlChar *ns_uri) { xmlXPathFunction ret; - + if (ctxt == NULL) return(NULL); if (name == NULL) @@ -4838,7 +4989,7 @@ * * Returns 0 in case of success, -1 in case of error */ -int +int xmlXPathRegisterVariable(xmlXPathContextPtr ctxt, const xmlChar *name, xmlXPathObjectPtr value) { return(xmlXPathRegisterVariableNS(ctxt, name, NULL, value)); @@ -4870,7 +5021,7 @@ if (ctxt->varHash == NULL) return(-1); if (value == NULL) - return(xmlHashRemoveEntry2(ctxt->varHash, name, ns_uri, + return(xmlHashRemoveEntry2(ctxt->varHash, name, ns_uri, (xmlHashDeallocator)xmlXPathFreeObject)); return(xmlHashUpdateEntry2(ctxt->varHash, name, ns_uri, (void *) value, @@ -4926,7 +5077,7 @@ * @ns_uri: the variable namespace URI * * Search in the Variable array of the context for the given - * variable value. + * variable value. * * Returns the a copy of the value or NULL if not found */ @@ -4971,7 +5122,7 @@ /** * xmlXPathRegisterNs: * @ctxt: the XPath context - * @prefix: the namespace prefix + * @prefix: the namespace prefix cannot be NULL or empty string * @ns_uri: the namespace name * * Register a new namespace. If @ns_uri is NULL it unregisters @@ -4986,6 +5137,8 @@ return(-1); if (prefix == NULL) return(-1); + if (prefix[0] == 0) + return(-1); if (ctxt->nsHash == NULL) ctxt->nsHash = xmlHashCreate(10); @@ -5309,7 +5462,7 @@ #endif case XPATH_USERS: ret->user = val->user; - break; + break; case XPATH_UNDEFINED: xmlGenericError(xmlGenericErrorContext, "xmlXPathObjectCopy: unsupported type %d\n", @@ -5338,7 +5491,7 @@ #endif obj->type = XPATH_XSLT_TREE; /* TODO: Just for debugging. */ if (obj->nodesetval != NULL) - xmlXPathFreeValueTree(obj->nodesetval); + xmlXPathFreeValueTree(obj->nodesetval); } else { if (obj->nodesetval != NULL) xmlXPathFreeNodeSet(obj->nodesetval); @@ -5355,7 +5508,7 @@ #ifdef XP_DEBUG_OBJ_USAGE xmlXPathDebugObjUsageReleased(NULL, obj->type); #endif - xmlFree(obj); + xmlFree(obj); } /** @@ -5378,7 +5531,7 @@ return; if ((ctxt == NULL) || (ctxt->cache == NULL)) { xmlXPathFreeObject(obj); - } else { + } else { xmlXPathContextCachePtr cache = (xmlXPathContextCachePtr) ctxt->cache; @@ -5387,7 +5540,7 @@ case XPATH_XSLT_TREE: if (obj->nodesetval != NULL) { if (obj->boolval) { - /* + /* * It looks like the @boolval is used for * evaluation if this an XSLT Result Tree Fragment. * TODO: Check if this assumption is correct. @@ -5434,7 +5587,7 @@ xmlXPtrFreeLocationSet(obj->user); } goto free_obj; -#endif +#endif default: goto free_obj; } @@ -5455,7 +5608,7 @@ if (obj->nodesetval != NULL) { xmlNodeSetPtr tmpset = obj->nodesetval; - + /* * TODO: Due to those nasty ns-nodes, we need to traverse * the list and free the ns-nodes. @@ -5478,7 +5631,7 @@ if ((tmpset->nodeTab[0] != NULL) && (tmpset->nodeTab[0]->type == XML_NAMESPACE_DECL)) xmlXPathNodeSetFreeNs((xmlNsPtr) tmpset->nodeTab[0]); - } + } tmpset->nodeNr = 0; memset(obj, 0, sizeof(xmlXPathObject)); obj->nodesetval = tmpset; @@ -5490,7 +5643,7 @@ free_obj: /* * Cache is full; free the object. - */ + */ if (obj->nodesetval != NULL) xmlXPathFreeNodeSet(obj->nodesetval); #ifdef XP_DEBUG_OBJ_USAGE @@ -5570,7 +5723,10 @@ */ xmlChar * xmlXPathCastNodeToString (xmlNodePtr node) { - return(xmlNodeGetContent(node)); +xmlChar *ret; + if ((ret = xmlNodeGetContent(node)) == NULL) + ret = xmlStrdup((const xmlChar *) ""); + return(ret); } /** @@ -5598,7 +5754,7 @@ * Converts an existing object to its string() equivalent * * Returns the allocated string value of the object, NULL in case of error. - * It's up to the caller to free the string memory with xmlFree(). + * It's up to the caller to free the string memory with xmlFree(). */ xmlChar * xmlXPathCastToString(xmlXPathObjectPtr val) { @@ -5989,7 +6145,7 @@ } #endif - xmlXPathRegisterAllFunctions(ret); + xmlXPathRegisterAllFunctions(ret); return(ret); } @@ -6020,7 +6176,7 @@ ************************************************************************/ #define CHECK_CTXT(ctxt) \ - if (ctxt == NULL) { \ + if (ctxt == NULL) { \ __xmlRaiseError(NULL, NULL, NULL, \ NULL, NULL, XML_FROM_XPATH, \ XML_ERR_INTERNAL_ERROR, XML_ERR_FATAL, \ @@ -6031,7 +6187,7 @@ } \ #define CHECK_CTXT_NEG(ctxt) \ - if (ctxt == NULL) { \ + if (ctxt == NULL) { \ __xmlRaiseError(NULL, NULL, NULL, \ NULL, NULL, XML_FROM_XPATH, \ XML_ERR_INTERNAL_ERROR, XML_ERR_FATAL, \ @@ -6044,7 +6200,7 @@ #define CHECK_CONTEXT(ctxt) \ if ((ctxt == NULL) || (ctxt->doc == NULL) || \ - (ctxt->doc->children == NULL)) { \ + (ctxt->doc->children == NULL)) { \ xmlXPatherror(ctxt, __FILE__, __LINE__, XPATH_INVALID_CTXT); \ return(NULL); \ } @@ -6107,7 +6263,7 @@ memset(ret, 0 , (size_t) sizeof(xmlXPathParserContext)); /* Allocate the value stack */ - ret->valueTab = (xmlXPathObjectPtr *) + ret->valueTab = (xmlXPathObjectPtr *) xmlMalloc(10 * sizeof(xmlXPathObjectPtr)); if (ret->valueTab == NULL) { xmlFree(ret); @@ -6117,6 +6273,7 @@ ret->valueNr = 0; ret->valueMax = 10; ret->value = NULL; + ret->valueFrame = 0; ret->context = ctxt; ret->comp = comp; @@ -6254,7 +6411,7 @@ tmp = tmp->next; continue; } - + do { tmp = tmp->parent; if (tmp == NULL) @@ -6413,7 +6570,7 @@ * If both objects to be compared are node-sets, then the comparison * will be true if and only if there is a node in the first node-set * and a node in the second node-set such that the result of performing - * the comparison on the string-values of the two nodes is true. + * the comparison on the string-values of the two nodes is true. * .... * When neither object to be compared is a node-set and the operator * is <=, <, >= or >, then the objects are compared by converting both @@ -6427,7 +6584,7 @@ * represented by the string; any other string is converted to NaN * * Conclusion all nodes need to be converted first to their string value - * and then the comparison must be done when possible + * and then the comparison must be done when possible */ static int xmlXPathCompareNodeSets(int inf, int strict, @@ -6482,7 +6639,7 @@ } if (xmlXPathIsNaN(values2[j])) continue; - if (inf && strict) + if (inf && strict) ret = (val1 < values2[j]); else if (inf && !strict) ret = (val1 <= values2[j]); @@ -6822,7 +6979,7 @@ case XPATH_STRING: if ((arg2->stringval == NULL) || (arg2->stringval[0] == 0)) ret = 0; - else + else ret = 1; ret = (arg1->boolval == ret); break; @@ -6857,7 +7014,7 @@ case XPATH_NUMBER: /* Hand check NaN and Infinity equalities */ if (xmlXPathIsNaN(arg1->floatval) || - xmlXPathIsNaN(arg2->floatval)) { + xmlXPathIsNaN(arg2->floatval)) { ret = 0; } else if (xmlXPathIsInf(arg1->floatval) == 1) { if (xmlXPathIsInf(arg2->floatval) == 1) @@ -6905,7 +7062,7 @@ case XPATH_BOOLEAN: if ((arg1->stringval == NULL) || (arg1->stringval[0] == 0)) ret = 0; - else + else ret = 1; ret = (arg2->boolval == ret); break; @@ -6918,7 +7075,7 @@ arg1 = valuePop(ctxt); /* Hand check NaN and Infinity equalities */ if (xmlXPathIsNaN(arg1->floatval) || - xmlXPathIsNaN(arg2->floatval)) { + xmlXPathIsNaN(arg2->floatval)) { ret = 0; } else if (xmlXPathIsInf(arg1->floatval) == 1) { if (xmlXPathIsInf(arg2->floatval) == 1) @@ -6984,7 +7141,7 @@ int ret = 0; if ((ctxt == NULL) || (ctxt->context == NULL)) return(0); - arg2 = valuePop(ctxt); + arg2 = valuePop(ctxt); arg1 = valuePop(ctxt); if ((arg1 == NULL) || (arg2 == NULL)) { if (arg1 != NULL) @@ -7030,7 +7187,7 @@ case XPATH_BOOLEAN: if ((arg1->nodesetval == NULL) || (arg1->nodesetval->nodeNr == 0)) ret = 0; - else + else ret = 1; ret = (ret == arg2->boolval); break; @@ -7069,7 +7226,7 @@ int ret = 0; if ((ctxt == NULL) || (ctxt->context == NULL)) return(0); - arg2 = valuePop(ctxt); + arg2 = valuePop(ctxt); arg1 = valuePop(ctxt); if ((arg1 == NULL) || (arg2 == NULL)) { if (arg1 != NULL) @@ -7115,7 +7272,7 @@ case XPATH_BOOLEAN: if ((arg1->nodesetval == NULL) || (arg1->nodesetval->nodeNr == 0)) ret = 0; - else + else ret = 1; ret = (ret != arg2->boolval); break; @@ -7146,7 +7303,7 @@ * @inf: less than (1) or greater than (0) * @strict: is the comparison strict * - * Implement the compare operation on XPath objects: + * Implement the compare operation on XPath objects: * @arg1 < @arg2 (1, 1, ... * @arg1 <= @arg2 (1, 0, ... * @arg1 > @arg2 (0, 1, ... @@ -7170,7 +7327,7 @@ xmlXPathObjectPtr arg1, arg2; if ((ctxt == NULL) || (ctxt->context == NULL)) return(0); - arg2 = valuePop(ctxt); + arg2 = valuePop(ctxt); arg1 = valuePop(ctxt); if ((arg1 == NULL) || (arg2 == NULL)) { if (arg1 != NULL) @@ -7411,7 +7568,7 @@ ctxt->value->floatval = xmlXPathPINF; else if (ctxt->value->floatval < 0) ctxt->value->floatval = xmlXPathNINF; - } else + } else ctxt->value->floatval /= val; } @@ -7619,6 +7776,7 @@ return(NULL); } +#if 0 /** * xmlXPathNextDescendantOrSelfElemParent: * @ctxt: the XPath Parser context @@ -7646,10 +7804,10 @@ #ifdef LIBXML_DOCB_ENABLED case XML_DOCB_DOCUMENT_NODE: #endif - case XML_HTML_DOCUMENT_NODE: + case XML_HTML_DOCUMENT_NODE: return(contextNode); default: - return(NULL); + return(NULL); } return(NULL); } else { @@ -7660,7 +7818,7 @@ case XML_ELEMENT_NODE: /* TODO: OK to have XInclude here? */ case XML_XINCLUDE_START: - case XML_DOCUMENT_FRAG_NODE: + case XML_DOCUMENT_FRAG_NODE: if (cur != start) return(cur); if (cur->children != NULL) { @@ -7668,9 +7826,9 @@ continue; } break; -#ifdef LIBXML_DOCB_ENABLED /* Not sure if we need those here. */ case XML_DOCUMENT_NODE: +#ifdef LIBXML_DOCB_ENABLED case XML_DOCB_DOCUMENT_NODE: #endif case XML_HTML_DOCUMENT_NODE: @@ -7679,13 +7837,13 @@ return(xmlDocGetRootElement((xmlDocPtr) cur)); default: break; - } - + } + next_sibling: if ((cur == NULL) || (cur == contextNode)) - return(NULL); + return(NULL); if (cur->next != NULL) { - cur = cur->next; + cur = cur->next; } else { cur = cur->parent; goto next_sibling; @@ -7693,7 +7851,8 @@ } } return(NULL); -} +} +#endif /** * xmlXPathNextDescendant: @@ -7721,11 +7880,13 @@ return(ctxt->context->node->children); } + if (cur->type == XML_NAMESPACE_DECL) + return(NULL); if (cur->children != NULL) { /* * Do not descend on entities declarations */ - if (cur->children->type != XML_ENTITY_DECL) { + if (cur->children->type != XML_ENTITY_DECL) { cur = cur->children; /* * Skip DTDs @@ -7743,7 +7904,7 @@ (cur->type != XML_DTD_NODE)) return(cur); } - + do { cur = cur->parent; if (cur == NULL) break; @@ -7772,14 +7933,14 @@ xmlNodePtr xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) { if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL); - if (cur == NULL) { - if (ctxt->context->node == NULL) - return(NULL); - if ((ctxt->context->node->type == XML_ATTRIBUTE_NODE) || - (ctxt->context->node->type == XML_NAMESPACE_DECL)) - return(NULL); + if (cur == NULL) return(ctxt->context->node); - } + + if (ctxt->context->node == NULL) + return(NULL); + if ((ctxt->context->node->type == XML_ATTRIBUTE_NODE) || + (ctxt->context->node->type == XML_NAMESPACE_DECL)) + return(NULL); return(xmlXPathNextDescendant(ctxt, cur)); } @@ -7842,7 +8003,7 @@ return(NULL); case XML_NAMESPACE_DECL: { xmlNsPtr ns = (xmlNsPtr) ctxt->context->node; - + if ((ns->next != NULL) && (ns->next->type != XML_NAMESPACE_DECL)) return((xmlNodePtr) ns->next); @@ -7915,7 +8076,7 @@ return(NULL); case XML_NAMESPACE_DECL: { xmlNsPtr ns = (xmlNsPtr) ctxt->context->node; - + if ((ns->next != NULL) && (ns->next->type != XML_NAMESPACE_DECL)) return((xmlNodePtr) ns->next); @@ -7959,7 +8120,7 @@ } case XML_NAMESPACE_DECL: { xmlNsPtr ns = (xmlNsPtr) ctxt->context->node; - + if ((ns->next != NULL) && (ns->next->type != XML_NAMESPACE_DECL)) return((xmlNodePtr) ns->next); @@ -8069,9 +8230,17 @@ xmlNodePtr xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) { if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL); - if (cur != NULL && cur->children != NULL) - return cur->children ; - if (cur == NULL) cur = ctxt->context->node; + if ((cur != NULL) && (cur->type != XML_ATTRIBUTE_NODE) && + (cur->type != XML_NAMESPACE_DECL) && (cur->children != NULL)) + return(cur->children); + + if (cur == NULL) { + cur = ctxt->context->node; + if (cur->type == XML_NAMESPACE_DECL) + return(NULL); + if (cur->type == XML_ATTRIBUTE_NODE) + cur = cur->parent; + } if (cur == NULL) return(NULL) ; /* ERROR */ if (cur->next != NULL) return(cur->next) ; do { @@ -8095,6 +8264,10 @@ static int xmlXPathIsAncestor(xmlNodePtr ancestor, xmlNodePtr node) { if ((ancestor == NULL) || (node == NULL)) return(0); + if (node->type == XML_NAMESPACE_DECL) + return(0); + if (ancestor->type == XML_NAMESPACE_DECL) + return(0); /* nodes need to be in the same document */ if (ancestor->doc != node->doc) return(0); /* avoid searching if ancestor or node is the root node */ @@ -8125,9 +8298,14 @@ xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) { if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL); - if (cur == NULL) + if (cur == NULL) { cur = ctxt->context->node; - if (cur == NULL) + if (cur->type == XML_NAMESPACE_DECL) + return(NULL); + if (cur->type == XML_ATTRIBUTE_NODE) + return(cur->parent); + } + if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) return (NULL); if ((cur->prev != NULL) && (cur->prev->type == XML_DTD_NODE)) cur = cur->prev; @@ -8156,7 +8334,7 @@ * node that are before the context node in document order, excluding any * ancestors and excluding attribute nodes and namespace nodes; the nodes are * ordered in reverse document order - * This is a faster implementation but internal only since it requires a + * This is a faster implementation but internal only since it requires a * state kept in the parser context: ctxt->ancestor. * * Returns the next element following that axis @@ -8170,10 +8348,12 @@ cur = ctxt->context->node; if (cur == NULL) return (NULL); - if (cur->type == XML_NAMESPACE_DECL) - cur = (xmlNodePtr)((xmlNsPtr)cur)->next; + if (cur->type == XML_NAMESPACE_DECL) + return (NULL); ctxt->ancestor = cur->parent; } + if (cur->type == XML_NAMESPACE_DECL) + return(NULL); if ((cur->prev != NULL) && (cur->prev->type == XML_DTD_NODE)) cur = cur->prev; while (cur->prev == NULL) { @@ -8213,7 +8393,7 @@ if (ctxt->context->tmpNsList == NULL && cur != (xmlNodePtr) xmlXPathXMLNamespace) { if (ctxt->context->tmpNsList != NULL) xmlFree(ctxt->context->tmpNsList); - ctxt->context->tmpNsList = + ctxt->context->tmpNsList = xmlGetNsList(ctxt->context->doc, ctxt->context->node); ctxt->context->tmpNsNr = 0; if (ctxt->context->tmpNsList != NULL) { @@ -8361,7 +8541,7 @@ xmlXPathObjectPtr cur; CHECK_ARITY(1); - if ((ctxt->value == NULL) || + if ((ctxt->value == NULL) || ((ctxt->value->type != XPATH_NODESET) && (ctxt->value->type != XPATH_XSLT_TREE))) XP_ERROR(XPATH_INVALID_TYPE); @@ -8381,7 +8561,7 @@ int i = 0; tmp = cur->nodesetval->nodeTab[0]; - if (tmp != NULL) { + if ((tmp != NULL) && (tmp->type != XML_NAMESPACE_DECL)) { tmp = tmp->children; while (tmp != NULL) { tmp = tmp->next; @@ -8414,6 +8594,8 @@ if (ids == NULL) return(NULL); ret = xmlXPathNodeSetCreate(NULL); + if (ret == NULL) + return(ret); while (IS_BLANK_CH(*cur)) cur++; while (*cur != 0) { @@ -8481,6 +8663,11 @@ int i; ret = xmlXPathNodeSetCreate(NULL); + /* + * FIXME -- in an out-of-memory condition this will behave badly. + * The solution is not clear -- we already popped an item from + * ctxt, so the object is in a corrupt state. + */ if (obj->nodesetval != NULL) { for (i = 0; i < obj->nodesetval->nodeNr; i++) { @@ -8499,7 +8686,7 @@ } obj = xmlXPathCacheConvertString(ctxt->context, obj); ret = xmlXPathGetElementsByIds(ctxt->context->doc, obj->stringval); - valuePush(ctxt, xmlXPathCacheWrapNodeSet(ctxt->context, ret)); + valuePush(ctxt, xmlXPathCacheWrapNodeSet(ctxt->context, ret)); xmlXPathReleaseObject(ctxt->context, obj); return; } @@ -8530,7 +8717,7 @@ } CHECK_ARITY(1); - if ((ctxt->value == NULL) || + if ((ctxt->value == NULL) || ((ctxt->value->type != XPATH_NODESET) && (ctxt->value->type != XPATH_XSLT_TREE))) XP_ERROR(XPATH_INVALID_TYPE); @@ -8588,7 +8775,7 @@ nargs = 1; } CHECK_ARITY(1); - if ((ctxt->value == NULL) || + if ((ctxt->value == NULL) || ((ctxt->value->type != XPATH_NODESET) && (ctxt->value->type != XPATH_XSLT_TREE))) XP_ERROR(XPATH_INVALID_TYPE); @@ -8672,7 +8859,7 @@ cur->nodesetval->nodeTab[i]->name)); } else { xmlChar *fullname; - + fullname = xmlBuildQName(cur->nodesetval->nodeTab[i]->name, cur->nodesetval->nodeTab[i]->ns->prefix, NULL, 0); @@ -8707,11 +8894,11 @@ * the node in the node-set that is first in document order. * If the node-set is empty, an empty string is returned. * - A number is converted to a string as follows - * + NaN is converted to the string NaN - * + positive zero is converted to the string 0 - * + negative zero is converted to the string 0 - * + positive infinity is converted to the string Infinity - * + negative infinity is converted to the string -Infinity + * + NaN is converted to the string NaN + * + positive zero is converted to the string 0 + * + negative zero is converted to the string 0 + * + positive infinity is converted to the string Infinity + * + negative infinity is converted to the string -Infinity * + if the number is an integer, the number is represented in * decimal form as a Number with no decimal point and no leading * zeros, preceded by a minus sign (-) if the number is negative @@ -8785,7 +8972,7 @@ CHECK_TYPE(XPATH_STRING); cur = valuePop(ctxt); valuePush(ctxt, xmlXPathCacheNewFloat(ctxt->context, - xmlUTF8Strlen(cur->stringval))); + xmlUTF8Strlen(cur->stringval))); xmlXPathReleaseObject(ctxt->context, cur); } @@ -8924,12 +9111,12 @@ * or equal to the second argument and, if the third argument is specified, * less than the sum of the second and third arguments; the comparisons * and addition used for the above follow the standard IEEE 754 rules. Thus: - * - substring("12345", 1.5, 2.6) returns "234" - * - substring("12345", 0, 3) returns "12" - * - substring("12345", 0 div 0, 3) returns "" - * - substring("12345", 1, 0 div 0) returns "" - * - substring("12345", -42, 1 div 0) returns "12345" - * - substring("12345", -1 div 0, 1 div 0) returns "" + * - substring("12345", 1.5, 2.6) returns "234" + * - substring("12345", 0, 3) returns "12" + * - substring("12345", 0 div 0, 3) returns "" + * - substring("12345", 1, 0 div 0) returns "" + * - substring("12345", -42, 1 div 0) returns "12345" + * - substring("12345", -1 div 0, 1 div 0) returns "" */ void xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs) { @@ -8970,18 +9157,18 @@ */ if (nargs != 3) { le = (double)m; - if (in < 1.0) + if (in < 1.0) in = 1.0; } - /* Need to check for the special cases where either + /* Need to check for the special cases where either * the index is NaN, the length is NaN, or both * arguments are infinity (relying on Inf + -Inf = NaN) */ - if (!xmlXPathIsNaN(in + le) && !xmlXPathIsInf(in)) { + if (!xmlXPathIsInf(in) && !xmlXPathIsNaN(in + le)) { /* * To meet the requirements of the spec, the arguments - * must be converted to integer format before + * must be converted to integer format before * initial index calculations are done * * First we go to integer form, rounding up @@ -9044,26 +9231,26 @@ xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs) { xmlXPathObjectPtr str; xmlXPathObjectPtr find; - xmlBufferPtr target; + xmlBufPtr target; const xmlChar *point; int offset; - + CHECK_ARITY(2); CAST_TO_STRING; find = valuePop(ctxt); CAST_TO_STRING; str = valuePop(ctxt); - - target = xmlBufferCreate(); + + target = xmlBufCreate(); if (target) { point = xmlStrstr(str->stringval, find->stringval); if (point) { offset = (int)(point - str->stringval); - xmlBufferAdd(target, str->stringval, offset); + xmlBufAdd(target, str->stringval, offset); } valuePush(ctxt, xmlXPathCacheNewString(ctxt->context, - xmlBufferContent(target))); - xmlBufferFree(target); + xmlBufContent(target))); + xmlBufFree(target); } xmlXPathReleaseObject(ctxt->context, str); xmlXPathReleaseObject(ctxt->context, find); @@ -9087,27 +9274,27 @@ xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs) { xmlXPathObjectPtr str; xmlXPathObjectPtr find; - xmlBufferPtr target; + xmlBufPtr target; const xmlChar *point; int offset; - + CHECK_ARITY(2); CAST_TO_STRING; find = valuePop(ctxt); CAST_TO_STRING; str = valuePop(ctxt); - - target = xmlBufferCreate(); + + target = xmlBufCreate(); if (target) { point = xmlStrstr(str->stringval, find->stringval); if (point) { offset = (int)(point - str->stringval) + xmlStrlen(find->stringval); - xmlBufferAdd(target, &str->stringval[offset], + xmlBufAdd(target, &str->stringval[offset], xmlStrlen(str->stringval) - offset); } valuePush(ctxt, xmlXPathCacheNewString(ctxt->context, - xmlBufferContent(target))); - xmlBufferFree(target); + xmlBufContent(target))); + xmlBufFree(target); } xmlXPathReleaseObject(ctxt->context, str); xmlXPathReleaseObject(ctxt->context, find); @@ -9131,9 +9318,9 @@ xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs) { xmlXPathObjectPtr obj = NULL; xmlChar *source = NULL; - xmlBufferPtr target; + xmlBufPtr target; xmlChar blank; - + if (ctxt == NULL) return; if (nargs == 0) { /* Use current context node */ @@ -9149,13 +9336,13 @@ obj = valuePop(ctxt); source = obj->stringval; - target = xmlBufferCreate(); + target = xmlBufCreate(); if (target && source) { - + /* Skip leading whitespaces */ while (IS_BLANK_CH(*source)) source++; - + /* Collapse intermediate whitespaces, and skip trailing whitespaces */ blank = 0; while (*source) { @@ -9163,16 +9350,16 @@ blank = 0x20; } else { if (blank) { - xmlBufferAdd(target, &blank, 1); + xmlBufAdd(target, &blank, 1); blank = 0; } - xmlBufferAdd(target, source, 1); + xmlBufAdd(target, source, 1); } source++; } valuePush(ctxt, xmlXPathCacheNewString(ctxt->context, - xmlBufferContent(target))); - xmlBufferFree(target); + xmlBufContent(target))); + xmlBufFree(target); } xmlXPathReleaseObject(ctxt->context, obj); } @@ -9203,7 +9390,7 @@ xmlXPathObjectPtr str; xmlXPathObjectPtr from; xmlXPathObjectPtr to; - xmlBufferPtr target; + xmlBufPtr target; int offset, max; xmlChar ch; const xmlChar *point; @@ -9218,7 +9405,7 @@ CAST_TO_STRING; str = valuePop(ctxt); - target = xmlBufferCreate(); + target = xmlBufCreate(); if (target) { max = xmlUTF8Strlen(to->stringval); for (cptr = str->stringval; (ch=*cptr); ) { @@ -9227,10 +9414,10 @@ if (offset < max) { point = xmlUTF8Strpos(to->stringval, offset); if (point) - xmlBufferAdd(target, point, xmlUTF8Strsize(point, 1)); + xmlBufAdd(target, point, xmlUTF8Strsize(point, 1)); } } else - xmlBufferAdd(target, cptr, xmlUTF8Strsize(cptr, 1)); + xmlBufAdd(target, cptr, xmlUTF8Strsize(cptr, 1)); /* Step to next character in input */ cptr++; @@ -9239,6 +9426,7 @@ if ( (ch & 0xc0) != 0xc0 ) { xmlGenericError(xmlGenericErrorContext, "xmlXPathTranslateFunction: Invalid UTF8 string\n"); + /* not asserting an XPath error is probably better */ break; } /* then skip over remaining bytes for this char */ @@ -9246,6 +9434,7 @@ if ( (*cptr++ & 0xc0) != 0x80 ) { xmlGenericError(xmlGenericErrorContext, "xmlXPathTranslateFunction: Invalid UTF8 string\n"); + /* not asserting an XPath error is probably better */ break; } if (ch & 0x80) /* must have had error encountered */ @@ -9254,8 +9443,8 @@ } } valuePush(ctxt, xmlXPathCacheNewString(ctxt->context, - xmlBufferContent(target))); - xmlBufferFree(target); + xmlBufContent(target))); + xmlBufFree(target); xmlXPathReleaseObject(ctxt->context, str); xmlXPathReleaseObject(ctxt->context, from); xmlXPathReleaseObject(ctxt->context, to); @@ -9430,7 +9619,7 @@ double res = 0.0; CHECK_ARITY(1); - if ((ctxt->value == NULL) || + if ((ctxt->value == NULL) || ((ctxt->value->type != XPATH_NODESET) && (ctxt->value->type != XPATH_XSLT_TREE))) XP_ERROR(XPATH_INVALID_TYPE); @@ -9549,14 +9738,14 @@ if (ctxt->value->floatval < 0) { if (ctxt->value->floatval < f - 0.5) ctxt->value->floatval = f - 1; - else + else ctxt->value->floatval = f; if (ctxt->value->floatval == 0) ctxt->value->floatval = xmlXPathNZERO; } else { if (ctxt->value->floatval < f + 0.5) ctxt->value->floatval = f; - else + else ctxt->value->floatval = f + 1; } } @@ -9607,7 +9796,7 @@ * UCS-4 range (hex.) UTF-8 octet sequence (binary) * 0000 0000-0000 007F 0xxxxxxx * 0000 0080-0000 07FF 110xxxxx 10xxxxxx - * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx + * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx * * Check for the 0x110000 limit too */ @@ -9644,7 +9833,7 @@ } if (!IS_CHAR(val)) { XP_ERROR0(XPATH_INVALID_CHAR_ERROR); - } + } return(val); } else { /* 1-byte code */ @@ -9716,7 +9905,7 @@ /** * xmlXPathParseQName: * @ctxt: the XPath Parser context - * @prefix: a xmlChar ** + * @prefix: a xmlChar ** * * parse an XML qualified name * @@ -9736,7 +9925,7 @@ *prefix = NULL; ret = xmlXPathParseNCName(ctxt); - if (CUR == ':') { + if (ret && CUR == ':') { *prefix = ret; NEXT; ret = xmlXPathParseNCName(ctxt); @@ -9762,7 +9951,7 @@ xmlXPathParseName(xmlXPathParserContextPtr ctxt) { const xmlChar *in; xmlChar *ret; - int count = 0; + size_t count = 0; if ((ctxt == NULL) || (ctxt->cur == NULL)) return(NULL); /* @@ -9781,6 +9970,10 @@ in++; if ((*in > 0) && (*in < 0x80)) { count = in - ctxt->cur; + if (count > XML_MAX_NAME_LENGTH) { + ctxt->cur = in; + XP_ERRORNULL(XPATH_EXPR_ERROR); + } ret = xmlStrndup(ctxt->cur, count); ctxt->cur = in; return(ret); @@ -9810,7 +10003,7 @@ while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */ ((IS_LETTER(c)) || (IS_DIGIT(c)) || (c == '.') || (c == '-') || - (c == '_') || ((qualified) && (c == ':')) || + (c == '_') || ((qualified) && (c == ':')) || (IS_COMBINING(c)) || (IS_EXTENDER(c)))) { COPY_BUF(l,buf,len,c); @@ -9823,7 +10016,10 @@ */ xmlChar *buffer; int max = len * 2; - + + if (len > XML_MAX_NAME_LENGTH) { + XP_ERRORNULL(XPATH_EXPR_ERROR); + } buffer = (xmlChar *) xmlMallocAtomic(max * sizeof(xmlChar)); if (buffer == NULL) { XP_ERRORNULL(XPATH_MEMORY_ERROR); @@ -9831,10 +10027,13 @@ memcpy(buffer, buf, len); while ((IS_LETTER(c)) || (IS_DIGIT(c)) || /* test bigname.xml */ (c == '.') || (c == '-') || - (c == '_') || ((qualified) && (c == ':')) || + (c == '_') || ((qualified) && (c == ':')) || (IS_COMBINING(c)) || (IS_EXTENDER(c))) { if (len + 10 > max) { + if (max > XML_MAX_NAME_LENGTH) { + XP_ERRORNULL(XPATH_EXPR_ERROR); + } max *= 2; buffer = (xmlChar *) xmlRealloc(buffer, max * sizeof(xmlChar)); @@ -9878,7 +10077,7 @@ * [30a] Float ::= Number ('e' Digits?)? * * [30] Number ::= Digits ('.' Digits?)? - * | '.' Digits + * | '.' Digits * [31] Digits ::= [0-9]+ * * Compile a Number in the string @@ -9977,7 +10176,7 @@ * @ctxt: the XPath Parser context * * [30] Number ::= Digits ('.' Digits?)? - * | '.' Digits + * | '.' Digits * [31] Digits ::= [0-9]+ * * Compile a Number, then push it on the stack @@ -9987,7 +10186,6 @@ xmlXPathCompNumber(xmlXPathParserContextPtr ctxt) { double ret = 0.0; - double mult = 1; int ok = 0; int exponent = 0; int is_exponent_negative = 0; @@ -10023,15 +10221,23 @@ } #endif if (CUR == '.') { + int v, frac = 0; + double fraction = 0; + NEXT; if (((CUR < '0') || (CUR > '9')) && (!ok)) { XP_ERROR(XPATH_NUMBER_ERROR); } - while ((CUR >= '0') && (CUR <= '9')) { - mult /= 10; - ret = ret + (CUR - '0') * mult; + while ((CUR >= '0') && (CUR <= '9') && (frac < MAX_FRAC)) { + v = (CUR - '0'); + fraction = fraction * 10 + v; + frac = frac + 1; NEXT; } + fraction /= my_pow10[frac]; + ret = ret + fraction; + while ((CUR >= '0') && (CUR <= '9')) + NEXT; } if ((CUR == 'e') || (CUR == 'E')) { NEXT; @@ -10157,9 +10363,9 @@ * * Early evaluation is possible since: * The variable bindings [...] used to evaluate a subexpression are - * always the same as those used to evaluate the containing expression. + * always the same as those used to evaluate the containing expression. * - * [36] VariableReference ::= '$' QName + * [36] VariableReference ::= '$' QName */ static void xmlXPathCompVariableReference(xmlXPathParserContextPtr ctxt) { @@ -10180,7 +10386,7 @@ name, prefix); SKIP_BLANKS; if ((ctxt->context != NULL) && (ctxt->context->flags & XML_XPATH_NOVAR)) { - XP_ERROR(XPATH_UNDEF_VARIABLE_ERROR); + XP_ERROR(XPATH_FORBID_VARIABLE_ERROR); } } @@ -10218,7 +10424,7 @@ * @ctxt: the XPath Parser context * * [16] FunctionCall ::= FunctionName '(' ( Argument ( ',' Argument)*)? ')' - * [17] Argument ::= Expr + * [17] Argument ::= Expr * * Compile a function call, the evaluation of all arguments are * pushed on the stack @@ -10232,6 +10438,7 @@ name = xmlXPathParseQName(ctxt, &prefix); if (name == NULL) { + xmlFree(prefix); XP_ERROR(XPATH_EXPR_ERROR); } SKIP_BLANKS; @@ -10264,7 +10471,11 @@ int op1 = ctxt->comp->last; ctxt->comp->last = -1; xmlXPathCompileExpr(ctxt, sort); - CHECK_ERROR; + if (ctxt->error != XPATH_EXPRESSION_OK) { + xmlFree(name); + xmlFree(prefix); + return; + } PUSH_BINARY_EXPR(XPATH_OP_ARG, op1, ctxt->comp->last, 0, 0); nbargs++; if (CUR == ')') break; @@ -10285,11 +10496,11 @@ * xmlXPathCompPrimaryExpr: * @ctxt: the XPath Parser context * - * [15] PrimaryExpr ::= VariableReference + * [15] PrimaryExpr ::= VariableReference * | '(' Expr ')' - * | Literal - * | Number - * | FunctionCall + * | Literal + * | Number + * | FunctionCall * * Compile a primary expression. */ @@ -10321,8 +10532,8 @@ * xmlXPathCompFilterExpr: * @ctxt: the XPath Parser context * - * [20] FilterExpr ::= PrimaryExpr - * | FilterExpr Predicate + * [20] FilterExpr ::= PrimaryExpr + * | FilterExpr Predicate * * Compile a filter expression. * Square brackets are used to filter expressions in the same way that @@ -10337,13 +10548,13 @@ xmlXPathCompPrimaryExpr(ctxt); CHECK_ERROR; SKIP_BLANKS; - + while (CUR == '[') { xmlXPathCompPredicate(ctxt, 1); SKIP_BLANKS; } - + } /** @@ -10382,7 +10593,7 @@ while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */ ((IS_LETTER(c)) || (IS_DIGIT(c)) || (c == '.') || (c == '-') || - (c == '_') || (c == ':') || + (c == '_') || (c == ':') || (IS_COMBINING(c)) || (IS_EXTENDER(c)))) { len += l; @@ -10398,10 +10609,10 @@ * xmlXPathCompPathExpr: * @ctxt: the XPath Parser context * - * [19] PathExpr ::= LocationPath - * | FilterExpr - * | FilterExpr '/' RelativeLocationPath - * | FilterExpr '//' RelativeLocationPath + * [19] PathExpr ::= LocationPath + * | FilterExpr + * | FilterExpr '/' RelativeLocationPath + * | FilterExpr '//' RelativeLocationPath * * Compile a path expression. * The / operator and // operators combine an arbitrary expression @@ -10418,8 +10629,8 @@ xmlChar *name = NULL; /* we may have to preparse a name to find out */ SKIP_BLANKS; - if ((CUR == '$') || (CUR == '(') || - (IS_ASCII_DIGIT(CUR)) || + if ((CUR == '$') || (CUR == '(') || + (IS_ASCII_DIGIT(CUR)) || (CUR == '\'') || (CUR == '"') || (CUR == '.' && IS_ASCII_DIGIT(NXT(1)))) { lc = 0; @@ -10459,7 +10670,7 @@ } else if (name != NULL) { int len =xmlStrlen(name); - + while (NXT(len) != 0) { if (NXT(len) == '/') { /* element name */ @@ -10526,7 +10737,7 @@ /* make sure all cases are covered explicitly */ XP_ERROR(XPATH_EXPR_ERROR); } - } + } if (lc) { if (CUR == '/') { @@ -10558,8 +10769,8 @@ * xmlXPathCompUnionExpr: * @ctxt: the XPath Parser context * - * [18] UnionExpr ::= PathExpr - * | UnionExpr '|' PathExpr + * [18] UnionExpr ::= PathExpr + * | UnionExpr '|' PathExpr * * Compile an union expression. */ @@ -10587,8 +10798,8 @@ * xmlXPathCompUnaryExpr: * @ctxt: the XPath Parser context * - * [27] UnaryExpr ::= UnionExpr - * | '-' UnaryExpr + * [27] UnaryExpr ::= UnionExpr + * | '-' UnaryExpr * * Compile an unary expression. */ @@ -10620,10 +10831,10 @@ * xmlXPathCompMultiplicativeExpr: * @ctxt: the XPath Parser context * - * [26] MultiplicativeExpr ::= UnaryExpr - * | MultiplicativeExpr MultiplyOperator UnaryExpr - * | MultiplicativeExpr 'div' UnaryExpr - * | MultiplicativeExpr 'mod' UnaryExpr + * [26] MultiplicativeExpr ::= UnaryExpr + * | MultiplicativeExpr MultiplyOperator UnaryExpr + * | MultiplicativeExpr 'div' UnaryExpr + * | MultiplicativeExpr 'mod' UnaryExpr * [34] MultiplyOperator ::= '*' * * Compile an Additive expression. @@ -10634,7 +10845,7 @@ xmlXPathCompUnaryExpr(ctxt); CHECK_ERROR; SKIP_BLANKS; - while ((CUR == '*') || + while ((CUR == '*') || ((CUR == 'd') && (NXT(1) == 'i') && (NXT(2) == 'v')) || ((CUR == 'm') && (NXT(1) == 'o') && (NXT(2) == 'd'))) { int op = -1; @@ -10662,9 +10873,9 @@ * xmlXPathCompAdditiveExpr: * @ctxt: the XPath Parser context * - * [25] AdditiveExpr ::= MultiplicativeExpr - * | AdditiveExpr '+' MultiplicativeExpr - * | AdditiveExpr '-' MultiplicativeExpr + * [25] AdditiveExpr ::= MultiplicativeExpr + * | AdditiveExpr '+' MultiplicativeExpr + * | AdditiveExpr '-' MultiplicativeExpr * * Compile an Additive expression. */ @@ -10694,11 +10905,11 @@ * xmlXPathCompRelationalExpr: * @ctxt: the XPath Parser context * - * [24] RelationalExpr ::= AdditiveExpr - * | RelationalExpr '<' AdditiveExpr - * | RelationalExpr '>' AdditiveExpr - * | RelationalExpr '<=' AdditiveExpr - * | RelationalExpr '>=' AdditiveExpr + * [24] RelationalExpr ::= AdditiveExpr + * | RelationalExpr '<' AdditiveExpr + * | RelationalExpr '>' AdditiveExpr + * | RelationalExpr '<=' AdditiveExpr + * | RelationalExpr '>=' AdditiveExpr * * A <= B > C is allowed ? Answer from James, yes with * (AdditiveExpr <= AdditiveExpr) > AdditiveExpr @@ -10738,9 +10949,9 @@ * xmlXPathCompEqualityExpr: * @ctxt: the XPath Parser context * - * [23] EqualityExpr ::= RelationalExpr - * | EqualityExpr '=' RelationalExpr - * | EqualityExpr '!=' RelationalExpr + * [23] EqualityExpr ::= RelationalExpr + * | EqualityExpr '=' RelationalExpr + * | EqualityExpr '!=' RelationalExpr * * A != B != C is allowed ? Answer from James, yes with * (RelationalExpr = RelationalExpr) = RelationalExpr @@ -10775,8 +10986,8 @@ * xmlXPathCompAndExpr: * @ctxt: the XPath Parser context * - * [22] AndExpr ::= EqualityExpr - * | AndExpr 'and' EqualityExpr + * [22] AndExpr ::= EqualityExpr + * | AndExpr 'and' EqualityExpr * * Compile an AND expression. * @@ -10801,9 +11012,9 @@ * xmlXPathCompileExpr: * @ctxt: the XPath Parser context * - * [14] Expr ::= OrExpr - * [21] OrExpr ::= AndExpr - * | OrExpr 'or' AndExpr + * [14] Expr ::= OrExpr + * [21] OrExpr ::= AndExpr + * | OrExpr 'or' AndExpr * * Parse and compile an expression */ @@ -10819,7 +11030,6 @@ xmlXPathCompAndExpr(ctxt); CHECK_ERROR; PUSH_BINARY_EXPR(XPATH_OP_OR, op1, ctxt->comp->last, 0, 0); - op1 = ctxt->comp->nbStep; SKIP_BLANKS; } if ((sort) && (ctxt->comp->steps[ctxt->comp->last].op != XPATH_OP_VALUE)) { @@ -10839,7 +11049,7 @@ * @filter: act as a filter * * [8] Predicate ::= '[' PredicateExpr ']' - * [9] PredicateExpr ::= Expr + * [9] PredicateExpr ::= Expr * * Compile a predicate expression */ @@ -10956,7 +11166,7 @@ } *test = NODE_TEST_TYPE; - + SKIP_BLANKS; if (*type == NODE_TYPE_PI) { /* @@ -11092,7 +11302,7 @@ * @ctxt: the XPath Parser context * * [4] Step ::= AxisSpecifier NodeTest Predicate* - * | AbbreviatedStep + * | AbbreviatedStep * * [12] AbbreviatedStep ::= '.' | '..' * @@ -11201,7 +11411,10 @@ } } - CHECK_ERROR; + if (ctxt->error != XPATH_EXPRESSION_OK) { + xmlFree(name); + return; + } name = xmlXPathCompNodeTest(ctxt, &test, &type, &prefix, name); if (test == 0) @@ -11264,10 +11477,10 @@ * xmlXPathCompRelativeLocationPath: * @ctxt: the XPath Parser context * - * [3] RelativeLocationPath ::= Step - * | RelativeLocationPath '/' Step - * | AbbreviatedRelativeLocationPath - * [11] AbbreviatedRelativeLocationPath ::= RelativeLocationPath '//' Step + * [3] RelativeLocationPath ::= Step + * | RelativeLocationPath '/' Step + * | AbbreviatedRelativeLocationPath + * [11] AbbreviatedRelativeLocationPath ::= RelativeLocationPath '//' Step * * Compile a relative location path. */ @@ -11285,6 +11498,7 @@ SKIP_BLANKS; } xmlXPathCompStep(ctxt); + CHECK_ERROR; SKIP_BLANKS; while (CUR == '/') { if ((CUR == '/') && (NXT(1) == '/')) { @@ -11306,12 +11520,12 @@ * xmlXPathCompLocationPath: * @ctxt: the XPath Parser context * - * [1] LocationPath ::= RelativeLocationPath - * | AbsoluteLocationPath + * [1] LocationPath ::= RelativeLocationPath + * | AbsoluteLocationPath * [2] AbsoluteLocationPath ::= '/' RelativeLocationPath? - * | AbbreviatedAbsoluteLocationPath - * [10] AbbreviatedAbsoluteLocationPath ::= - * '//' RelativeLocationPath + * | AbbreviatedAbsoluteLocationPath + * [10] AbbreviatedAbsoluteLocationPath ::= + * '//' RelativeLocationPath * * Compile a location path * @@ -11344,13 +11558,14 @@ (CUR == '@') || (CUR == '*'))) xmlXPathCompRelativeLocationPath(ctxt); } + CHECK_ERROR; } } } /************************************************************************ * * - * XPath precompiled expression evaluation * + * XPath precompiled expression evaluation * * * ************************************************************************/ @@ -11359,12 +11574,11 @@ #ifdef DEBUG_STEP static void -xmlXPathDebugDumpStepAxis(xmlXPathAxisVal axis, - xmlXPathTestVal test, +xmlXPathDebugDumpStepAxis(xmlXPathStepOpPtr op, int nbNodes) { xmlGenericError(xmlGenericErrorContext, "new step : "); - switch (axis) { + switch (op->value) { case AXIS_ANCESTOR: xmlGenericError(xmlGenericErrorContext, "axis 'ancestors' "); break; @@ -11411,14 +11625,14 @@ } xmlGenericError(xmlGenericErrorContext, " context contains %d nodes\n", nbNodes); - switch (test) { + switch (op->value2) { case NODE_TEST_NONE: xmlGenericError(xmlGenericErrorContext, " searching for none !!!\n"); break; case NODE_TEST_TYPE: xmlGenericError(xmlGenericErrorContext, - " searching for type %d\n", type); + " searching for type %d\n", op->value3); break; case NODE_TEST_PI: xmlGenericError(xmlGenericErrorContext, @@ -11431,14 +11645,14 @@ case NODE_TEST_NS: xmlGenericError(xmlGenericErrorContext, " searching for namespace %s\n", - prefix); + op->value5); break; case NODE_TEST_NAME: xmlGenericError(xmlGenericErrorContext, - " searching for name %s\n", name); - if (prefix != NULL) + " searching for name %s\n", op->value5); + if (op->value4) xmlGenericError(xmlGenericErrorContext, - " with namespace %s\n", prefix); + " with namespace %s\n", op->value4); break; } xmlGenericError(xmlGenericErrorContext, "Testing : "); @@ -11467,7 +11681,7 @@ CHECK_ERROR0; if (contextSize <= 0) return(0); - } + } if (op->ch2 != -1) { xmlXPathContextPtr xpctxt = ctxt->context; xmlNodePtr contextNode, oldContextNode; @@ -11511,7 +11725,7 @@ /* * Get the expression of this predicate. */ - exprOp = &ctxt->comp->steps[op->ch2]; + exprOp = &ctxt->comp->steps[op->ch2]; newContextSize = 0; for (i = 0; i < set->nodeNr; i++) { if (set->nodeTab[i] == NULL) @@ -11521,8 +11735,8 @@ xpctxt->node = contextNode; xpctxt->contextSize = contextSize; xpctxt->proximityPosition = ++contextPos; - - /* + + /* * Also set the xpath document in case things like * key() are evaluated in the predicate. */ @@ -11536,16 +11750,23 @@ */ if (contextObj == NULL) contextObj = xmlXPathCacheNewNodeSet(xpctxt, contextNode); - else - xmlXPathNodeSetAddUnique(contextObj->nodesetval, - contextNode); + else { + if (xmlXPathNodeSetAddUnique(contextObj->nodesetval, + contextNode) < 0) { + ctxt->error = XPATH_MEMORY_ERROR; + goto evaluation_exit; + } + } valuePush(ctxt, contextObj); res = xmlXPathCompOpEvalToBoolean(ctxt, exprOp, 1); - if ((ctxt->error != XPATH_EXPRESSION_OK) || (res == -1)) - goto evaluation_error; + if ((ctxt->error != XPATH_EXPRESSION_OK) || (res == -1)) { + xmlXPathNodeSetClear(set, hasNsNodes); + newContextSize = 0; + goto evaluation_exit; + } if (res != 0) { newContextSize++; @@ -11573,18 +11794,13 @@ contextObj = NULL; } } - goto evaluation_exit; - -evaluation_error: - xmlXPathNodeSetClear(set, hasNsNodes); - newContextSize = 0; -evaluation_exit: if (contextObj != NULL) { if (ctxt->value == contextObj) valuePop(ctxt); xmlXPathReleaseObject(xpctxt, contextObj); - } + } +evaluation_exit: if (exprRes != NULL) xmlXPathReleaseObject(ctxt->context, exprRes); /* @@ -11641,6 +11857,7 @@ xmlXPathObjectPtr contextObj = NULL, exprRes = NULL; xmlNodePtr oldContextNode, contextNode = NULL; xmlXPathContextPtr xpctxt = ctxt->context; + int frame; #ifdef LIBXML_XPTR_ENABLED /* @@ -11660,6 +11877,8 @@ */ exprOp = &ctxt->comp->steps[op->ch2]; for (i = 0; i < set->nodeNr; i++) { + xmlXPathObjectPtr tmp; + if (set->nodeTab[i] == NULL) continue; @@ -11667,7 +11886,7 @@ xpctxt->node = contextNode; xpctxt->contextSize = contextSize; xpctxt->proximityPosition = ++contextPos; - + /* * Initialize the new set. * Also set the xpath document in case things like @@ -11683,15 +11902,33 @@ */ if (contextObj == NULL) contextObj = xmlXPathCacheNewNodeSet(xpctxt, contextNode); - else - xmlXPathNodeSetAddUnique(contextObj->nodesetval, - contextNode); + else { + if (xmlXPathNodeSetAddUnique(contextObj->nodesetval, + contextNode) < 0) { + ctxt->error = XPATH_MEMORY_ERROR; + goto evaluation_exit; + } + } + frame = xmlXPathSetFrame(ctxt); valuePush(ctxt, contextObj); res = xmlXPathCompOpEvalToBoolean(ctxt, exprOp, 1); - - if ((ctxt->error != XPATH_EXPRESSION_OK) || (res == -1)) + tmp = valuePop(ctxt); + xmlXPathPopFrame(ctxt, frame); + + if ((ctxt->error != XPATH_EXPRESSION_OK) || (res == -1)) { + while (tmp != contextObj) { + /* + * Free up the result + * then pop off contextObj, which will be freed later + */ + xmlXPathReleaseObject(xpctxt, tmp); + tmp = valuePop(ctxt); + } goto evaluation_error; + } + /* push the result back onto the stack */ + valuePush(ctxt, tmp); if (res) pos++; @@ -11714,9 +11951,9 @@ } xmlXPathNodeSetClear(set, hasNsNodes); set->nodeNr = 1; - set->nodeTab[0] = contextNode; + set->nodeTab[0] = contextNode; goto evaluation_exit; - } + } if (pos == maxPos) { /* * We are done. @@ -11780,7 +12017,7 @@ static int xmlXPathIsPositionalPredicate(xmlXPathParserContextPtr ctxt, - xmlXPathStepOpPtr op, + xmlXPathStepOpPtr op, int *maxPos) { @@ -11789,7 +12026,7 @@ /* * BIG NOTE: This is not intended for XPATH_OP_FILTER yet! */ - + /* * If not -1, then ch1 will point to: * 1) For predicates (XPATH_OP_PREDICATE): @@ -11798,13 +12035,13 @@ * - an inner filter operater OR * - an expression selecting the node set. * E.g. "key('a', 'b')" or "(//foo | //bar)". - */ + */ if ((op->op != XPATH_OP_PREDICATE) && (op->op != XPATH_OP_FILTER)) return(0); if (op->ch2 != -1) { exprOp = &ctxt->comp->steps[op->ch2]; - } else + } else return(0); if ((exprOp != NULL) && @@ -11823,10 +12060,10 @@ * Maybe we could rewrite the AST to ease the optimization. */ *maxPos = (int) ((xmlXPathObjectPtr) exprOp->value4)->floatval; - + if (((xmlXPathObjectPtr) exprOp->value4)->floatval == (float) *maxPos) - { + { return(1); } } @@ -11843,22 +12080,25 @@ #define XP_TEST_HIT \ if (hasAxisRange != 0) { \ if (++pos == maxPos) { \ - addNode(seq, cur); \ - goto axis_range_end; } \ + if (addNode(seq, cur) < 0) \ + ctxt->error = XPATH_MEMORY_ERROR; \ + goto axis_range_end; } \ } else { \ - addNode(seq, cur); \ + if (addNode(seq, cur) < 0) \ + ctxt->error = XPATH_MEMORY_ERROR; \ if (breakOnFirstHit) goto first_hit; } #define XP_TEST_HIT_NS \ if (hasAxisRange != 0) { \ if (++pos == maxPos) { \ hasNsNodes = 1; \ - xmlXPathNodeSetAddNs(seq, xpctxt->node, (xmlNsPtr) cur); \ + if (xmlXPathNodeSetAddNs(seq, xpctxt->node, (xmlNsPtr) cur) < 0) \ + ctxt->error = XPATH_MEMORY_ERROR; \ goto axis_range_end; } \ } else { \ hasNsNodes = 1; \ - xmlXPathNodeSetAddNs(seq, \ - xpctxt->node, (xmlNsPtr) cur); \ + if (xmlXPathNodeSetAddNs(seq, xpctxt->node, (xmlNsPtr) cur) < 0) \ + ctxt->error = XPATH_MEMORY_ERROR; \ if (breakOnFirstHit) goto first_hit; } xmlXPathAxisVal axis = (xmlXPathAxisVal) op->value; @@ -11878,8 +12118,6 @@ xmlNodeSetPtr contextSeq; int contextIdx; xmlNodePtr contextNode; - /* The context node for a compound traversal */ - xmlNodePtr outerContextNode; /* The final resulting node set wrt to all context nodes */ xmlNodeSetPtr outSeq; /* @@ -11887,7 +12125,7 @@ * Used to feed predicate evaluation. */ xmlNodeSetPtr seq; - xmlNodePtr cur; + xmlNodePtr cur; /* First predicate operator */ xmlXPathStepOpPtr predOp; int maxPos; /* The requested position() (when a "[n]" predicate) */ @@ -11895,11 +12133,9 @@ int breakOnFirstHit; xmlXPathTraversalFunction next = NULL; - /* compound axis traversal */ - xmlXPathTraversalFunctionExt outerNext = NULL; - void (*addNode) (xmlNodeSetPtr, xmlNodePtr); + int (*addNode) (xmlNodeSetPtr, xmlNodePtr); xmlXPathNodeSetMergeFunction mergeAndClear; - xmlNodePtr oldContextNode; + xmlNodePtr oldContextNode; xmlXPathContextPtr xpctxt = ctxt->context; @@ -11914,7 +12150,7 @@ xmlXPathReleaseObject(xpctxt, obj); XP_ERROR0(XPATH_UNDEF_PREFIX_ERROR); } - } + } /* * Setup axis. * @@ -11928,7 +12164,6 @@ * avoid a duplicate-aware merge, if the axis to be traversed is e.g. * the descendant-or-self axis. */ - addNode = xmlXPathNodeSetAdd; mergeAndClear = xmlXPathNodeSetMergeAndClear; switch (axis) { case AXIS_ANCESTOR: @@ -11947,13 +12182,6 @@ break; case AXIS_CHILD: last = NULL; - if (op->rewriteType == XP_REWRITE_DOS_CHILD_ELEM) { - /* - * This iterator will give us only nodes which can - * hold element nodes. - */ - outerNext = xmlXPathNextDescendantOrSelfElemParent; - } if (((test == NODE_TEST_NAME) || (test == NODE_TEST_ALL)) && (type == NODE_TYPE_NODE)) { @@ -12008,20 +12236,20 @@ } #ifdef DEBUG_STEP - xmlXPathDebugDumpStepAxis(axis, test, - (obj->nodesetval != NULL) ? obj->nodsetval->nodeNr : 0); + xmlXPathDebugDumpStepAxis(op, + (obj->nodesetval != NULL) ? obj->nodesetval->nodeNr : 0); #endif if (next == NULL) { - xmlXPathReleaseObject(xpctxt, obj); + xmlXPathReleaseObject(xpctxt, obj); return(0); - } + } contextSeq = obj->nodesetval; if ((contextSeq == NULL) || (contextSeq->nodeNr <= 0)) { xmlXPathReleaseObject(xpctxt, obj); valuePush(ctxt, xmlXPathCacheWrapNodeSet(xpctxt, NULL)); return(0); - } + } /* * Predicate optimization --------------------------------------------- * If this step has a last predicate, which contains a position(), @@ -12029,7 +12257,7 @@ * the short-hand form, i.e., "[n]". * * Example - expression "/foo[parent::bar][1]": - * + * * COLLECT 'child' 'name' 'node' foo -- op (we are here) * ROOT -- op->ch1 * PREDICATE -- op->ch2 (predOp) @@ -12062,7 +12290,7 @@ */ predOp = NULL; hasAxisRange = 1; - } + } } } breakOnFirstHit = ((toBool) && (predOp == NULL)) ? 1 : 0; @@ -12071,7 +12299,7 @@ */ /* * 2.3 Node Tests - * - For the attribute axis, the principal node type is attribute. + * - For the attribute axis, the principal node type is attribute. * - For the namespace axis, the principal node type is namespace. * - For other axes, the principal node type is element. * @@ -12083,33 +12311,14 @@ addNode = xmlXPathNodeSetAddUnique; outSeq = NULL; seq = NULL; - outerContextNode = NULL; contextNode = NULL; contextIdx = 0; - while ((contextIdx < contextSeq->nodeNr) || (contextNode != NULL)) { - if (outerNext != NULL) { - /* - * This is a compound traversal. - */ - if (contextNode == NULL) { - /* - * Set the context for the outer traversal. - */ - outerContextNode = contextSeq->nodeTab[contextIdx++]; - contextNode = outerNext(NULL, outerContextNode); - } else - contextNode = outerNext(contextNode, outerContextNode); - if (contextNode == NULL) - continue; - /* - * Set the context for the main traversal. - */ - xpctxt->node = contextNode; - } else - xpctxt->node = contextSeq->nodeTab[contextIdx++]; - + while (((contextIdx < contextSeq->nodeNr) || (contextNode != NULL)) && + (ctxt->error == XPATH_EXPRESSION_OK)) { + xpctxt->node = contextSeq->nodeTab[contextIdx++]; + if (seq == NULL) { seq = xmlXPathNodeSetCreate(NULL); if (seq == NULL) { @@ -12163,6 +12372,7 @@ #ifdef DEBUG_STEP xmlGenericError(xmlGenericErrorContext, " %s", cur->name); #endif + switch (test) { case NODE_TEST_NONE: total = 0; @@ -12181,7 +12391,7 @@ #ifdef LIBXML_DOCB_ENABLED case XML_DOCB_DOCUMENT_NODE: #endif - case XML_ELEMENT_NODE: + case XML_ELEMENT_NODE: case XML_ATTRIBUTE_NODE: case XML_PI_NODE: case XML_COMMENT_NODE: @@ -12194,7 +12404,7 @@ break; } } else if (cur->type == type) { - if (type == XML_NAMESPACE_DECL) + if (cur->type == XML_NAMESPACE_DECL) XP_TEST_HIT_NS else XP_TEST_HIT @@ -12215,7 +12425,14 @@ if (axis == AXIS_ATTRIBUTE) { if (cur->type == XML_ATTRIBUTE_NODE) { - XP_TEST_HIT + if (prefix == NULL) + { + XP_TEST_HIT + } else if ((cur->ns != NULL) && + (xmlStrEqual(URI, cur->ns->href))) + { + XP_TEST_HIT + } } } else if (axis == AXIS_NAMESPACE) { if (cur->type == XML_NAMESPACE_DECL) @@ -12241,6 +12458,16 @@ break; } case NODE_TEST_NAME: + if (axis == AXIS_ATTRIBUTE) { + if (cur->type != XML_ATTRIBUTE_NODE) + break; + } else if (axis == AXIS_NAMESPACE) { + if (cur->type != XML_NAMESPACE_DECL) + break; + } else { + if (cur->type != XML_ELEMENT_NODE) + break; + } switch (cur->type) { case XML_ELEMENT_NODE: if (xmlStrEqual(name, cur->name)) { @@ -12295,11 +12522,11 @@ } break; } /* switch(test) */ - } while (cur != NULL); + } while ((cur != NULL) && (ctxt->error == XPATH_EXPRESSION_OK)); goto apply_predicates; -axis_range_end: /* ----------------------------------------------------- */ +axis_range_end: /* ----------------------------------------------------- */ /* * We have a "/foo[n]", and position() = n was reached. * Note that we can have as well "/foo/::parent::foo[1]", so @@ -12336,13 +12563,16 @@ #endif apply_predicates: /* --------------------------------------------------- */ + if (ctxt->error != XPATH_EXPRESSION_OK) + goto error; + /* * Apply predicates. - */ + */ if ((predOp != NULL) && (seq->nodeNr > 0)) { /* * E.g. when we have a "/foo[some expression][n]". - */ + */ /* * QUESTION TODO: The old predicate evaluation took into * account location-sets. @@ -12351,7 +12581,7 @@ * All what I learned now from the evaluation semantics * does not indicate that a location-set will be processed * here, so this looks OK. - */ + */ /* * Iterate over all predicates, starting with the outermost * predicate. @@ -12367,7 +12597,7 @@ * * For the moment, I'll try to solve this with a recursive * function: xmlXPathCompOpEvalPredicate(). - */ + */ size = seq->nodeNr; if (hasPredicateRange != 0) newSize = xmlXPathCompOpEvalPositionalPredicate(ctxt, @@ -12422,7 +12652,7 @@ } else { outSeq = mergeAndClear(outSeq, seq, 0); } - } + } } error: @@ -12447,10 +12677,11 @@ outSeq = seq; else outSeq = xmlXPathNodeSetCreate(NULL); + /* XXX what if xmlXPathNodeSetCreate returned NULL here? */ } if ((seq != NULL) && (seq != outSeq)) { xmlXPathFreeNodeSet(seq); - } + } /* * Hand over the result. Better to push the set also in * case of errors. @@ -12590,7 +12821,7 @@ return (total); #ifdef XP_OPTIMIZED_FILTER_FIRST case XPATH_OP_FILTER: - total =+ xmlXPathCompOpEvalFilterFirst(ctxt, op, first); + total += xmlXPathCompOpEvalFilterFirst(ctxt, op, first); return (total); #endif default: @@ -12734,9 +12965,9 @@ xmlXPathStepOpPtr op, xmlNodePtr * first) { int total = 0; - xmlXPathCompExprPtr comp; + xmlXPathCompExprPtr comp; xmlXPathObjectPtr res; - xmlXPathObjectPtr obj; + xmlXPathObjectPtr obj; xmlNodeSetPtr oldset; xmlNodePtr oldnode; xmlDocPtr oldDoc; @@ -12751,7 +12982,7 @@ (comp->steps[op->ch1].op == XPATH_OP_SORT) && (comp->steps[op->ch2].op == XPATH_OP_SORT)) { int f = comp->steps[op->ch2].ch1; - + if ((f != -1) && (comp->steps[f].op == XPATH_OP_FUNCTION) && (comp->steps[f].value5 == NULL) && @@ -12760,7 +12991,7 @@ (xmlStrEqual (comp->steps[f].value4, BAD_CAST "last"))) { xmlNodePtr last = NULL; - + total += xmlXPathCompOpEvalLast(ctxt, &comp->steps[op->ch1], @@ -12787,7 +13018,7 @@ return (total); } } - + if (op->ch1 != -1) total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]); CHECK_ERROR0; @@ -12795,7 +13026,7 @@ return (total); if (ctxt->value == NULL) return (total); - + #ifdef LIBXML_XPTR_ENABLED oldnode = ctxt->context->node; /* @@ -12805,7 +13036,7 @@ xmlXPathObjectPtr tmp = NULL; xmlLocationSetPtr newlocset = NULL; xmlLocationSetPtr oldlocset; - + /* * Extract the old locset, and then evaluate the result of the * expression for all the element in the locset. use it to grow @@ -12815,7 +13046,7 @@ obj = valuePop(ctxt); oldlocset = obj->user; ctxt->context->node = NULL; - + if ((oldlocset == NULL) || (oldlocset->locNr == 0)) { ctxt->context->contextSize = 0; ctxt->context->proximityPosition = 0; @@ -12830,7 +13061,7 @@ return (total); } newlocset = xmlXPtrLocationSetCreate(NULL); - + for (i = 0; i < oldlocset->locNr; i++) { /* * Run the evaluation with a node list made of a @@ -12843,9 +13074,11 @@ tmp = xmlXPathCacheNewNodeSet(ctxt->context, ctxt->context->node); } else { - xmlXPathNodeSetAddUnique(tmp->nodesetval, - ctxt->context->node); - } + if (xmlXPathNodeSetAddUnique(tmp->nodesetval, + ctxt->context->node) < 0) { + ctxt->error = XPATH_MEMORY_ERROR; + } + } valuePush(ctxt, tmp); if (op->ch2 != -1) total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]); @@ -12871,14 +13104,14 @@ } if (ctxt->value == tmp) { valuePop(ctxt); - xmlXPathNodeSetClear(tmp->nodesetval, 1); + xmlXPathNodeSetClear(tmp->nodesetval, 1); /* * REVISIT TODO: Don't create a temporary nodeset * for everly iteration. */ /* OLD: xmlXPathFreeObject(res); */ } else - tmp = NULL; + tmp = NULL; ctxt->context->node = NULL; /* * Only put the first node in the result, then leave. @@ -12903,7 +13136,7 @@ return (total); } #endif /* LIBXML_XPTR_ENABLED */ - + /* * Extract the old set, and then evaluate the result of the * expression for all the element in the set. use it to grow @@ -12912,11 +13145,11 @@ CHECK_TYPE0(XPATH_NODESET); obj = valuePop(ctxt); oldset = obj->nodesetval; - + oldnode = ctxt->context->node; oldDoc = ctxt->context->doc; ctxt->context->node = NULL; - + if ((oldset == NULL) || (oldset->nodeNr == 0)) { ctxt->context->contextSize = 0; ctxt->context->proximityPosition = 0; @@ -12940,9 +13173,10 @@ * Initialize the new set. * Also set the xpath document in case things like * key() evaluation are attempted on the predicate - */ + */ newset = xmlXPathNodeSetCreate(NULL); - + /* XXX what if xmlXPathNodeSetCreate returned NULL? */ + for (i = 0; i < oldset->nodeNr; i++) { /* * Run the evaluation with a node list made of @@ -12956,8 +13190,10 @@ tmp = xmlXPathCacheNewNodeSet(ctxt->context, ctxt->context->node); } else { - xmlXPathNodeSetAddUnique(tmp->nodesetval, - ctxt->context->node); + if (xmlXPathNodeSetAddUnique(tmp->nodesetval, + ctxt->context->node) < 0) { + ctxt->error = XPATH_MEMORY_ERROR; + } } valuePush(ctxt, tmp); ctxt->context->contextSize = oldset->nodeNr; @@ -12968,15 +13204,16 @@ xmlXPathFreeNodeSet(newset); xmlXPathFreeObject(obj); return(0); - } + } /* * The result of the evaluation needs to be tested to * decide whether the filter succeeded or not */ res = valuePop(ctxt); if (xmlXPathEvaluatePredicateResult(ctxt, res)) { - xmlXPathNodeSetAdd(newset, oldset->nodeTab[i]); - } + if (xmlXPathNodeSetAdd(newset, oldset->nodeTab[i]) < 0) + ctxt->error = XPATH_MEMORY_ERROR; + } /* * Cleanup */ @@ -13112,7 +13349,7 @@ total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]); CHECK_ERROR0; if (op->value) - equal = xmlXPathEqualValues(ctxt); + equal = xmlXPathEqualValues(ctxt); else equal = xmlXPathNotEqualValues(ctxt); valuePush(ctxt, xmlXPathCacheNewBoolean(ctxt->context, equal)); @@ -13265,8 +13502,9 @@ URI = xmlXPathNsLookup(ctxt->context, op->value5); if (URI == NULL) { xmlGenericError(xmlGenericErrorContext, - "xmlXPathCompOpEval: variable %s bound to undefined prefix %s\n", - op->value4, op->value5); + "xmlXPathCompOpEval: variable %s bound to undefined prefix %s\n", + (char *) op->value4, (char *)op->value5); + ctxt->error = XPATH_UNDEF_PREFIX_ERROR; return (total); } val = xmlXPathVariableLookupNS(ctxt->context, @@ -13283,23 +13521,33 @@ xmlXPathFunction func; const xmlChar *oldFunc, *oldFuncURI; int i; + int frame; - if (op->ch1 != -1) + frame = xmlXPathSetFrame(ctxt); + if (op->ch1 != -1) { total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]); - if (ctxt->valueNr < op->value) { + if (ctxt->error != XPATH_EXPRESSION_OK) { + xmlXPathPopFrame(ctxt, frame); + return (total); + } + } + if (ctxt->valueNr < ctxt->valueFrame + op->value) { xmlGenericError(xmlGenericErrorContext, "xmlXPathCompOpEval: parameter error\n"); ctxt->error = XPATH_INVALID_OPERAND; + xmlXPathPopFrame(ctxt, frame); return (total); } - for (i = 0; i < op->value; i++) + for (i = 0; i < op->value; i++) { if (ctxt->valueTab[(ctxt->valueNr - 1) - i] == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlXPathCompOpEval: parameter error\n"); ctxt->error = XPATH_INVALID_OPERAND; + xmlXPathPopFrame(ctxt, frame); return (total); } + } if (op->cache != NULL) XML_CAST_FPTR(func) = op->cache; else { @@ -13313,8 +13561,10 @@ URI = xmlXPathNsLookup(ctxt->context, op->value5); if (URI == NULL) { xmlGenericError(xmlGenericErrorContext, - "xmlXPathCompOpEval: function %s bound to undefined prefix %s\n", - op->value4, op->value5); + "xmlXPathCompOpEval: function %s bound to undefined prefix %s\n", + (char *)op->value4, (char *)op->value5); + xmlXPathPopFrame(ctxt, frame); + ctxt->error = XPATH_UNDEF_PREFIX_ERROR; return (total); } func = xmlXPathFunctionLookupNS(ctxt->context, @@ -13322,8 +13572,8 @@ } if (func == NULL) { xmlGenericError(xmlGenericErrorContext, - "xmlXPathCompOpEval: function %s not found\n", - op->value4); + "xmlXPathCompOpEval: function %s not found\n", + (char *)op->value4); XP_ERROR0(XPATH_UNKNOWN_FUNC_ERROR); } op->cache = XML_CAST_FPTR(func); @@ -13336,6 +13586,7 @@ func(ctxt, op->value); ctxt->context->function = oldFunc; ctxt->context->functionURI = oldFuncURI; + xmlXPathPopFrame(ctxt, frame); return (total); } case XPATH_OP_ARG: @@ -13343,17 +13594,20 @@ bak = ctxt->context->node; pp = ctxt->context->proximityPosition; cs = ctxt->context->contextSize; - if (op->ch1 != -1) + if (op->ch1 != -1) { total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]); - ctxt->context->contextSize = cs; - ctxt->context->proximityPosition = pp; - ctxt->context->node = bak; - ctxt->context->doc = bakd; - CHECK_ERROR0; + ctxt->context->contextSize = cs; + ctxt->context->proximityPosition = pp; + ctxt->context->node = bak; + ctxt->context->doc = bakd; + CHECK_ERROR0; + } if (op->ch2 != -1) { total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]); - ctxt->context->doc = bakd; - ctxt->context->node = bak; + ctxt->context->contextSize = cs; + ctxt->context->proximityPosition = pp; + ctxt->context->node = bak; + ctxt->context->doc = bakd; CHECK_ERROR0; } return (total); @@ -13521,7 +13775,7 @@ tmp = xmlXPathCacheNewNodeSet(ctxt->context, ctxt->context->node); valuePush(ctxt, tmp); - + if (op->ch2 != -1) total += xmlXPathCompOpEval(ctxt, @@ -13630,7 +13884,7 @@ * nC 2 * * removed the first node in the node-set, then - * the context position of the + * the context position of the */ for (i = 0; i < oldset->nodeNr; i++) { /* @@ -13645,8 +13899,10 @@ tmp = xmlXPathCacheNewNodeSet(ctxt->context, ctxt->context->node); } else { - xmlXPathNodeSetAddUnique(tmp->nodesetval, - ctxt->context->node); + if (xmlXPathNodeSetAddUnique(tmp->nodesetval, + ctxt->context->node) < 0) { + ctxt->error = XPATH_MEMORY_ERROR; + } } valuePush(ctxt, tmp); ctxt->context->contextSize = oldset->nodeNr; @@ -13676,7 +13932,9 @@ */ res = valuePop(ctxt); if (xmlXPathEvaluatePredicateResult(ctxt, res)) { - xmlXPathNodeSetAdd(newset, oldset->nodeTab[i]); + if (xmlXPathNodeSetAdd(newset, oldset->nodeTab[i]) + < 0) + ctxt->error = XPATH_MEMORY_ERROR; } /* @@ -13687,7 +13945,7 @@ } if (ctxt->value == tmp) { valuePop(ctxt); - xmlXPathNodeSetClear(tmp->nodesetval, 1); + xmlXPathNodeSetClear(tmp->nodesetval, 1); /* * Don't free the temporary nodeset * in order to avoid massive recreation inside this @@ -13790,7 +14048,7 @@ res = valuePop(ctxt); if (res->type == XPATH_LOCATIONSET) { - xmlLocationSetPtr rloc = + xmlLocationSetPtr rloc = (xmlLocationSetPtr)res->user; for (j=0; jlocNr; j++) { range = xmlXPtrNewRange( @@ -13892,6 +14150,7 @@ } xmlGenericError(xmlGenericErrorContext, "XPath: unknown precompiled operation %d\n", op->op); + ctxt->error = XPATH_INVALID_OPERAND; return (total); } @@ -13952,7 +14211,7 @@ xmlXPathCompOpEval(ctxt, op); if (ctxt->error != XPATH_EXPRESSION_OK) return(-1); - + resObj = valuePop(ctxt); if (resObj == NULL) return(-1); @@ -13973,7 +14232,7 @@ * to true if the number is equal to the context position * and will be converted to false otherwise;" */ - res = xmlXPathEvaluatePredicateResult(ctxt, resObj); + res = xmlXPathEvaluatePredicateResult(ctxt, resObj); } else { res = xmlXPathCastToBoolean(resObj); } @@ -13996,13 +14255,13 @@ xmlXPathObjectPtr *resultSeq, int toBool) { int max_depth, min_depth; - int from_root; + int from_root; int ret, depth; int eval_all_nodes; xmlNodePtr cur = NULL, limit = NULL; xmlStreamCtxtPtr patstream = NULL; - - int nb_nodes = 0; + + int nb_nodes = 0; if ((ctxt == NULL) || (comp == NULL)) return(-1); @@ -14028,7 +14287,7 @@ if (*resultSeq == NULL) return(-1); } - + /* * handle the special cases of "/" amd "." being matched */ @@ -14038,7 +14297,7 @@ if (toBool) return(1); xmlXPathNodeSetAddUnique((*resultSeq)->nodesetval, - (xmlNodePtr) ctxt->doc); + (xmlNodePtr) ctxt->doc); } else { /* Select "self::node()" */ if (toBool) @@ -14125,13 +14384,17 @@ ret = xmlStreamPushNode(patstream, NULL, NULL, cur->type); else break; - + if (ret < 0) { /* NOP. */ } else if (ret == 1) { if (toBool) goto return_1; - xmlXPathNodeSetAddUnique((*resultSeq)->nodesetval, cur); + if (xmlXPathNodeSetAddUnique((*resultSeq)->nodesetval, cur) + < 0) { + ctxt->lastError.domain = XML_FROM_XPATH; + ctxt->lastError.code = XML_ERR_NO_MEMORY; + } } if ((cur->children == NULL) || (depth >= max_depth)) { ret = xmlStreamPop(patstream); @@ -14147,9 +14410,10 @@ } scan_children: + if (cur->type == XML_NAMESPACE_DECL) break; if ((cur->children != NULL) && (depth < max_depth)) { /* - * Do not descend on entities declarations + * Do not descend on entities declarations */ if (cur->children->type != XML_ENTITY_DECL) { cur = cur->children; @@ -14171,7 +14435,7 @@ (cur->type != XML_DTD_NODE)) goto next_node; } - + do { cur = cur->parent; depth--; @@ -14230,7 +14494,7 @@ if (ctxt->valueTab == NULL) { /* Allocate the value stack */ - ctxt->valueTab = (xmlXPathObjectPtr *) + ctxt->valueTab = (xmlXPathObjectPtr *) xmlMalloc(10 * sizeof(xmlXPathObjectPtr)); if (ctxt->valueTab == NULL) { xmlXPathPErrMemory(ctxt, "creating evaluation context\n"); @@ -14239,6 +14503,7 @@ ctxt->valueNr = 0; ctxt->valueMax = 10; ctxt->value = NULL; + ctxt->valueFrame = 0; } #ifdef XPATH_STREAMING if (ctxt->comp->stream) { @@ -14253,7 +14518,7 @@ if (res != -1) return(res); } else { - xmlXPathObjectPtr resObj = NULL; + xmlXPathObjectPtr resObj = NULL; /* * Evaluation to a sequence. @@ -14266,7 +14531,7 @@ return(0); } if (resObj != NULL) - xmlXPathReleaseObject(ctxt->context, resObj); + xmlXPathReleaseObject(ctxt->context, resObj); } /* * QUESTION TODO: This falls back to normal XPath evaluation @@ -14291,7 +14556,7 @@ /************************************************************************ * * - * Public interfaces * + * Public interfaces * * * ************************************************************************/ @@ -14307,7 +14572,7 @@ * context node in the context node list (as returned by the position * function) and will be converted to false otherwise; if the result * is not a number, then the result will be converted as if by a call - * to the boolean function. + * to the boolean function. * * Returns 1 if predicate is true, 0 otherwise */ @@ -14345,12 +14610,12 @@ * context node in the context node list (as returned by the position * function) and will be converted to false otherwise; if the result * is not a number, then the result will be converted as if by a call - * to the boolean function. + * to the boolean function. * * Returns 1 if predicate is true, 0 otherwise */ int -xmlXPathEvaluatePredicateResult(xmlXPathParserContextPtr ctxt, +xmlXPathEvaluatePredicateResult(xmlXPathParserContextPtr ctxt, xmlXPathObjectPtr res) { if ((ctxt == NULL) || (res == NULL)) return(0); switch (res->type) { @@ -14423,7 +14688,7 @@ tmp = xmlStrchr(str, ':'); if ((tmp != NULL) && ((ctxt == NULL) || (ctxt->nsNr == 0) || (tmp[1] == ':'))) - return(NULL); + return(NULL); if (ctxt != NULL) { dict = ctxt->dict; @@ -14439,7 +14704,7 @@ namespaces[i++] = ns->prefix; } namespaces[i++] = NULL; - namespaces[i++] = NULL; + namespaces[i] = NULL; } } @@ -14447,7 +14712,7 @@ &namespaces[0]); if (namespaces != NULL) { xmlFree((xmlChar **)namespaces); - } + } if ((stream != NULL) && (xmlPatternStreamable(stream) == 1)) { comp = xmlXPathNewCompExpr(); if (comp == NULL) { @@ -14466,57 +14731,64 @@ } #endif /* XPATH_STREAMING */ -static int -xmlXPathCanRewriteDosExpression(xmlChar *expr) -{ - if (expr == NULL) - return(0); - do { - if ((*expr == '/') && (*(++expr) == '/')) - return(1); - } while (*expr++); - return(0); -} static void -xmlXPathRewriteDOSExpression(xmlXPathCompExprPtr comp, xmlXPathStepOpPtr op) +xmlXPathOptimizeExpression(xmlXPathCompExprPtr comp, xmlXPathStepOpPtr op) { /* * Try to rewrite "descendant-or-self::node()/foo" to an optimized * internal representation. */ - if (op->ch1 != -1) { - if ((op->op == XPATH_OP_COLLECT /* 11 */) && - ((xmlXPathAxisVal) op->value == AXIS_CHILD /* 4 */) && - ((xmlXPathTestVal) op->value2 == NODE_TEST_NAME /* 5 */) && - ((xmlXPathTypeVal) op->value3 == NODE_TYPE_NODE /* 0 */)) - { - /* - * This is a "child::foo" - */ - xmlXPathStepOpPtr prevop = &comp->steps[op->ch1]; - if ((prevop->op == XPATH_OP_COLLECT /* 11 */) && - (prevop->ch1 != -1) && - ((xmlXPathAxisVal) prevop->value == - AXIS_DESCENDANT_OR_SELF) && - (prevop->ch2 == -1) && - ((xmlXPathTestVal) prevop->value2 == NODE_TEST_TYPE) && - ((xmlXPathTypeVal) prevop->value3 == NODE_TYPE_NODE) && - (comp->steps[prevop->ch1].op == XPATH_OP_ROOT)) - { - /* - * This is a "/descendant-or-self::node()" without predicates. - * Eliminate it. - */ - op->ch1 = prevop->ch1; - op->rewriteType = XP_REWRITE_DOS_CHILD_ELEM; - } + if ((op->op == XPATH_OP_COLLECT /* 11 */) && + (op->ch1 != -1) && + (op->ch2 == -1 /* no predicate */)) + { + xmlXPathStepOpPtr prevop = &comp->steps[op->ch1]; + + if ((prevop->op == XPATH_OP_COLLECT /* 11 */) && + ((xmlXPathAxisVal) prevop->value == + AXIS_DESCENDANT_OR_SELF) && + (prevop->ch2 == -1) && + ((xmlXPathTestVal) prevop->value2 == NODE_TEST_TYPE) && + ((xmlXPathTypeVal) prevop->value3 == NODE_TYPE_NODE)) + { + /* + * This is a "descendant-or-self::node()" without predicates. + * Try to eliminate it. + */ + + switch ((xmlXPathAxisVal) op->value) { + case AXIS_CHILD: + case AXIS_DESCENDANT: + /* + * Convert "descendant-or-self::node()/child::" or + * "descendant-or-self::node()/descendant::" to + * "descendant::" + */ + op->ch1 = prevop->ch1; + op->value = AXIS_DESCENDANT; + break; + case AXIS_SELF: + case AXIS_DESCENDANT_OR_SELF: + /* + * Convert "descendant-or-self::node()/self::" or + * "descendant-or-self::node()/descendant-or-self::" to + * to "descendant-or-self::" + */ + op->ch1 = prevop->ch1; + op->value = AXIS_DESCENDANT_OR_SELF; + break; + default: + break; + } } - if (op->ch1 != -1) - xmlXPathRewriteDOSExpression(comp, &comp->steps[op->ch1]); } + + /* Recurse */ + if (op->ch1 != -1) + xmlXPathOptimizeExpression(comp, &comp->steps[op->ch1]); if (op->ch2 != -1) - xmlXPathRewriteDOSExpression(comp, &comp->steps[op->ch2]); + xmlXPathOptimizeExpression(comp, &comp->steps[op->ch2]); } /** @@ -14543,6 +14815,8 @@ xmlXPathInit(); pctxt = xmlXPathNewParserContext(str, ctxt); + if (pctxt == NULL) + return NULL; xmlXPathCompileExpr(pctxt, 1); if( pctxt->error != XPATH_EXPRESSION_OK ) @@ -14552,7 +14826,7 @@ } if (*pctxt->cur != 0) { - /* + /* * aleksey: in some cases this line prints *second* error message * (see bug #78858) and probably this should be fixed. * However, we are not sure that all error messages are printed @@ -14571,13 +14845,9 @@ #ifdef DEBUG_EVAL_COUNTS comp->string = xmlStrdup(str); comp->nb = 0; -#endif - if ((comp->expr != NULL) && - (comp->nbStep > 2) && - (comp->last >= 0) && - (xmlXPathCanRewriteDosExpression(comp->expr) == 1)) - { - xmlXPathRewriteDOSExpression(comp, &comp->steps[comp->last]); +#endif + if ((comp->nbStep > 1) && (comp->last >= 0)) { + xmlXPathOptimizeExpression(comp, &comp->steps[comp->last]); } } return(comp); @@ -14616,7 +14886,7 @@ xmlXPathObjectPtr *resObj, int toBool) { - xmlXPathParserContextPtr pctxt; + xmlXPathParserContextPtr pctxt; #ifndef LIBXML_THREAD_ENABLED static int reentance = 0; #endif @@ -14645,15 +14915,15 @@ res = xmlXPathRunEval(pctxt, toBool); if (resObj) { - if (pctxt->value == NULL) { + if (pctxt->value == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlXPathCompiledEval: evaluation failed\n"); - *resObj = NULL; + *resObj = NULL; } else { *resObj = valuePop(pctxt); } } - + /* * Pop all remaining objects from the stack. */ @@ -14664,8 +14934,7 @@ do { tmp = valuePop(pctxt); if (tmp != NULL) { - if (tmp != NULL) - stack++; + stack++; xmlXPathReleaseObject(ctxt, tmp); } } while (tmp != NULL); @@ -14677,11 +14946,11 @@ stack); } } - + if ((pctxt->error != XPATH_EXPRESSION_OK) && (resObj) && (*resObj)) { xmlXPathFreeObject(*resObj); *resObj = NULL; - } + } pctxt->comp = NULL; xmlXPathFreeParserContext(pctxt); #ifndef LIBXML_THREAD_ENABLED @@ -14742,7 +15011,7 @@ #endif if (ctxt == NULL) return; - + #ifdef XPATH_STREAMING comp = xmlXPathTryStreamCompile(ctxt->context, ctxt->base); if (comp != NULL) { @@ -14755,22 +15024,17 @@ #endif { xmlXPathCompileExpr(ctxt, 1); - /* - * In this scenario the expression string will sit in ctxt->base. - */ if ((ctxt->error == XPATH_EXPRESSION_OK) && (ctxt->comp != NULL) && - (ctxt->base != NULL) && - (ctxt->comp->nbStep > 2) && - (ctxt->comp->last >= 0) && - (xmlXPathCanRewriteDosExpression((xmlChar *) ctxt->base) == 1)) + (ctxt->comp->nbStep > 1) && + (ctxt->comp->last >= 0)) { - xmlXPathRewriteDOSExpression(ctxt->comp, + xmlXPathOptimizeExpression(ctxt->comp, &ctxt->comp->steps[ctxt->comp->last]); } } CHECK_ERROR; - xmlXPathRunEval(ctxt, 0); + xmlXPathRunEval(ctxt, 0); } /** @@ -14794,13 +15058,15 @@ xmlXPathInit(); ctxt = xmlXPathNewParserContext(str, ctx); + if (ctxt == NULL) + return NULL; xmlXPathEvalExpr(ctxt); if (ctxt->value == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlXPathEval: evaluation failed\n"); res = NULL; - } else if ((*ctxt->cur != 0) && (ctxt->comp != NULL) + } else if ((*ctxt->cur != 0) && (ctxt->comp != NULL) #ifdef XPATH_STREAMING && (ctxt->comp->stream == NULL) #endif @@ -14834,6 +15100,49 @@ } /** + * xmlXPathSetContextNode: + * @node: the node to to use as the context node + * @ctx: the XPath context + * + * Sets 'node' as the context node. The node must be in the same + * document as that associated with the context. + * + * Returns -1 in case of error or 0 if successful + */ +int +xmlXPathSetContextNode(xmlNodePtr node, xmlXPathContextPtr ctx) { + if ((node == NULL) || (ctx == NULL)) + return(-1); + + if (node->doc == ctx->doc) { + ctx->node = node; + return(0); + } + return(-1); +} + +/** + * xmlXPathNodeEval: + * @node: the node to to use as the context node + * @str: the XPath expression + * @ctx: the XPath context + * + * Evaluate the XPath Location Path in the given context. The node 'node' + * is set as the context node. The context node is not restored. + * + * Returns the xmlXPathObjectPtr resulting from the evaluation or NULL. + * the caller has to free the object. + */ +xmlXPathObjectPtr +xmlXPathNodeEval(xmlNodePtr node, const xmlChar *str, xmlXPathContextPtr ctx) { + if (str == NULL) + return(NULL); + if (xmlXPathSetContextNode(node, ctx) < 0) + return(NULL); + return(xmlXPathEval(str, ctx)); +} + +/** * xmlXPathEvalExpression: * @str: the XPath expression * @ctxt: the XPath context @@ -14854,6 +15163,8 @@ xmlXPathInit(); pctxt = xmlXPathNewParserContext(str, ctxt); + if (pctxt == NULL) + return NULL; xmlXPathEvalExpr(pctxt); if ((*pctxt->cur != 0) || (pctxt->error != XPATH_EXPRESSION_OK)) { @@ -14911,21 +15222,21 @@ * If $escape-reserved is false, the behavior differs in that characters * referred to in [RFC 2396] as reserved characters are not escaped. These * characters are ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ",". - * + * * [RFC 2396] does not define whether escaped URIs should use lower case or * upper case for hexadecimal digits. To ensure that escaped URIs can be * compared using string comparison functions, this function must always use * the upper-case letters A-F. - * + * * Generally, $escape-reserved should be set to true when escaping a string * that is to form a single part of a URI, and to false when escaping an * entire URI or URI reference. - * - * In the case of non-ascii characters, the string is encoded according to + * + * In the case of non-ascii characters, the string is encoded according to * utf-8 and then converted according to RFC 2396. * * Examples - * xf:escape-uri ("gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles#ocean"), true()) + * xf:escape-uri ("gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles#ocean"), true()) * returns "gopher%3A%2F%2Fspinaltap.micro.umn.edu%2F00%2FWeather%2FCalifornia%2FLos%20Angeles%23ocean" * xf:escape-uri ("gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles#ocean"), false()) * returns "gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles%23ocean" @@ -14935,31 +15246,31 @@ xmlXPathEscapeUriFunction(xmlXPathParserContextPtr ctxt, int nargs) { xmlXPathObjectPtr str; int escape_reserved; - xmlBufferPtr target; + xmlBufPtr target; xmlChar *cptr; xmlChar escape[4]; - + CHECK_ARITY(2); - + escape_reserved = xmlXPathPopBoolean(ctxt); - + CAST_TO_STRING; str = valuePop(ctxt); - - target = xmlBufferCreate(); - + + target = xmlBufCreate(); + escape[0] = '%'; escape[3] = 0; - + if (target) { for (cptr = str->stringval; *cptr; cptr++) { if ((*cptr >= 'A' && *cptr <= 'Z') || (*cptr >= 'a' && *cptr <= 'z') || (*cptr >= '0' && *cptr <= '9') || - *cptr == '-' || *cptr == '_' || *cptr == '.' || + *cptr == '-' || *cptr == '_' || *cptr == '.' || *cptr == '!' || *cptr == '~' || *cptr == '*' || *cptr == '\''|| *cptr == '(' || *cptr == ')' || - (*cptr == '%' && + (*cptr == '%' && ((cptr[1] >= 'A' && cptr[1] <= 'F') || (cptr[1] >= 'a' && cptr[1] <= 'f') || (cptr[1] >= '0' && cptr[1] <= '9')) && @@ -14971,7 +15282,7 @@ *cptr == ':' || *cptr == '@' || *cptr == '&' || *cptr == '=' || *cptr == '+' || *cptr == '$' || *cptr == ','))) { - xmlBufferAdd(target, cptr, 1); + xmlBufAdd(target, cptr, 1); } else { if ((*cptr >> 4) < 10) escape[1] = '0' + (*cptr >> 4); @@ -14981,14 +15292,14 @@ escape[2] = '0' + (*cptr & 0xF); else escape[2] = 'A' - 10 + (*cptr & 0xF); - - xmlBufferAdd(target, &escape[0], 3); + + xmlBufAdd(target, &escape[0], 3); } } } valuePush(ctxt, xmlXPathCacheNewString(ctxt->context, - xmlBufferContent(target))); - xmlBufferFree(target); + xmlBufContent(target))); + xmlBufFree(target); xmlXPathReleaseObject(ctxt->context, str); } diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xpath.in.h gettext-0.19.7/gnulib-local/lib/libxml/xpath.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xpath.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xpath.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -33,7 +33,7 @@ extern "C" { #endif #endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED */ - + #ifdef LIBXML_XPATH_ENABLED typedef struct _xmlXPathContext xmlXPathContext; @@ -68,7 +68,9 @@ XPATH_UNDEF_PREFIX_ERROR, XPATH_ENCODING_ERROR, XPATH_INVALID_CHAR_ERROR, - XPATH_INVALID_CTXT + XPATH_INVALID_CTXT, + XPATH_STACK_ERROR, + XPATH_FORBID_VARIABLE_ERROR } xmlXPathError; /* @@ -271,13 +273,16 @@ * * Expression evaluation occurs with respect to a context. * he context consists of: - * - a node (the context node) - * - a node list (the context node list) - * - a set of variable bindings - * - a function library - * - the set of namespace declarations in scope for the expression + * - a node (the context node) + * - a node list (the context node list) + * - a set of variable bindings + * - a function library + * - the set of namespace declarations in scope for the expression * Following the switch to hash tables, this need to be trimmed up at * the next binary incompatible release. + * The node may be modified when the context is passed to libxml2 + * for an XPath evaluation so you may need to initialize it again + * before the next call. */ struct _xmlXPathContext { @@ -310,7 +315,7 @@ int proximityPosition; /* the proximity position */ /* extra stuff for XPointer */ - int xptr; /* it this an XPointer context */ + int xptr; /* is this an XPointer context? */ xmlNodePtr here; /* for here() */ xmlNodePtr origin; /* for origin() */ @@ -332,7 +337,7 @@ /* temporary namespace lists kept for walking the namespace axis */ xmlNsPtr *tmpNsList; /* Array of namespaces */ - int tmpNsNr; /* number of namespace in scope */ + int tmpNsNr; /* number of namespaces in scope */ /* error reporting mechanism */ void *userData; /* user specific data block */ @@ -340,8 +345,8 @@ xmlError lastError; /* the last error */ xmlNodePtr debugNode; /* the source node XSLT */ - /* dictionnary */ - xmlDictPtr dict; /* dictionnary if any */ + /* dictionary */ + xmlDictPtr dict; /* dictionary if any */ int flags; /* flags to control compilation */ @@ -377,6 +382,8 @@ xmlXPathCompExprPtr comp; /* the precompiled expression */ int xptr; /* it this an XPointer expression */ xmlNodePtr ancestor; /* used for walking preceding axis */ + + int valueFrame; /* used to limit Pop on the stack */ }; /************************************************************************ @@ -414,7 +421,7 @@ * @index is out of range (0 to length-1) */ #define xmlXPathNodeSetItem(ns, index) \ - ((((ns) != NULL) && \ + ((((ns) != NULL) && \ ((index) >= 0) && ((index) < (ns)->nodeNr)) ? \ (ns)->nodeTab[(index)] \ : NULL) @@ -430,64 +437,64 @@ (((ns) == NULL) || ((ns)->nodeNr == 0) || ((ns)->nodeTab == NULL)) -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathFreeObject (xmlXPathObjectPtr obj); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathNodeSetCreate (xmlNodePtr val); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathFreeNodeSetList (xmlXPathObjectPtr obj); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathFreeNodeSet (xmlNodeSetPtr obj); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathObjectCopy (xmlXPathObjectPtr val); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathCmpNodes (xmlNodePtr node1, xmlNodePtr node2); /** * Conversion functions to basic types. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathCastNumberToBoolean (double val); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathCastStringToBoolean (const xmlChar * val); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathCastNodeSetToBoolean(xmlNodeSetPtr ns); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathCastToBoolean (xmlXPathObjectPtr val); -XMLPUBFUN double XMLCALL +XMLPUBFUN double XMLCALL xmlXPathCastBooleanToNumber (int val); -XMLPUBFUN double XMLCALL +XMLPUBFUN double XMLCALL xmlXPathCastStringToNumber (const xmlChar * val); -XMLPUBFUN double XMLCALL +XMLPUBFUN double XMLCALL xmlXPathCastNodeToNumber (xmlNodePtr node); -XMLPUBFUN double XMLCALL +XMLPUBFUN double XMLCALL xmlXPathCastNodeSetToNumber (xmlNodeSetPtr ns); -XMLPUBFUN double XMLCALL +XMLPUBFUN double XMLCALL xmlXPathCastToNumber (xmlXPathObjectPtr val); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlXPathCastBooleanToString (int val); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlXPathCastNumberToString (double val); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlXPathCastNodeToString (xmlNodePtr node); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlXPathCastNodeSetToString (xmlNodeSetPtr ns); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlXPathCastToString (xmlXPathObjectPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathConvertBoolean (xmlXPathObjectPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathConvertNumber (xmlXPathObjectPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathConvertString (xmlXPathObjectPtr val); /** * Context handling. */ -XMLPUBFUN xmlXPathContextPtr XMLCALL +XMLPUBFUN xmlXPathContextPtr XMLCALL xmlXPathNewContext (xmlDocPtr doc); XMLPUBFUN void XMLCALL xmlXPathFreeContext (xmlXPathContextPtr ctxt); @@ -499,36 +506,43 @@ /** * Evaluation functions. */ -XMLPUBFUN long XMLCALL +XMLPUBFUN long XMLCALL xmlXPathOrderDocElems (xmlDocPtr doc); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN int XMLCALL + xmlXPathSetContextNode (xmlNodePtr node, + xmlXPathContextPtr ctx); +XMLPUBFUN xmlXPathObjectPtr XMLCALL + xmlXPathNodeEval (xmlNodePtr node, + const xmlChar *str, + xmlXPathContextPtr ctx); +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathEval (const xmlChar *str, xmlXPathContextPtr ctx); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathEvalExpression (const xmlChar *str, xmlXPathContextPtr ctxt); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathEvalPredicate (xmlXPathContextPtr ctxt, xmlXPathObjectPtr res); /** * Separate compilation/evaluation entry points. */ -XMLPUBFUN xmlXPathCompExprPtr XMLCALL +XMLPUBFUN xmlXPathCompExprPtr XMLCALL xmlXPathCompile (const xmlChar *str); -XMLPUBFUN xmlXPathCompExprPtr XMLCALL +XMLPUBFUN xmlXPathCompExprPtr XMLCALL xmlXPathCtxtCompile (xmlXPathContextPtr ctxt, - const xmlChar *str); -XMLPUBFUN xmlXPathObjectPtr XMLCALL + const xmlChar *str); +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathCompiledEval (xmlXPathCompExprPtr comp, xmlXPathContextPtr ctx); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathCompiledEvalToBoolean(xmlXPathCompExprPtr comp, xmlXPathContextPtr ctxt); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathFreeCompExpr (xmlXPathCompExprPtr comp); #endif /* LIBXML_XPATH_ENABLED */ #if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathInit (void); XMLPUBFUN int XMLCALL xmlXPathIsNaN (double val); diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xpathInternals.in.h gettext-0.19.7/gnulib-local/lib/libxml/xpathInternals.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xpathInternals.in.h 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xpathInternals.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -100,16 +100,16 @@ */ #define xmlXPathGetContextNode(ctxt) ((ctxt)->context->node) -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathPopBoolean (xmlXPathParserContextPtr ctxt); -XMLPUBFUN double XMLCALL - xmlXPathPopNumber (xmlXPathParserContextPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlXPathPopString (xmlXPathParserContextPtr ctxt); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathPopNodeSet (xmlXPathParserContextPtr ctxt); -XMLPUBFUN void * XMLCALL - xmlXPathPopExternal (xmlXPathParserContextPtr ctxt); +XMLPUBFUN double XMLCALL + xmlXPathPopNumber (xmlXPathParserContextPtr ctxt); +XMLPUBFUN xmlChar * XMLCALL + xmlXPathPopString (xmlXPathParserContextPtr ctxt); +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathPopNodeSet (xmlXPathParserContextPtr ctxt); +XMLPUBFUN void * XMLCALL + xmlXPathPopExternal (xmlXPathParserContextPtr ctxt); /** * xmlXPathReturnBoolean: @@ -296,7 +296,9 @@ #define CHECK_ARITY(x) \ if (ctxt == NULL) return; \ if (nargs != (x)) \ - XP_ERROR(XPATH_INVALID_ARITY); + XP_ERROR(XPATH_INVALID_ARITY); \ + if (ctxt->valueNr < ctxt->valueFrame + (x)) \ + XP_ERROR(XPATH_STACK_ERROR); /** * CAST_TO_STRING: @@ -329,7 +331,7 @@ * Variable Lookup forwarding. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathRegisterVariableLookup (xmlXPathContextPtr ctxt, xmlXPathVariableLookupFunc f, void *data); @@ -338,7 +340,7 @@ * Function Lookup forwarding. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathRegisterFuncLookup (xmlXPathContextPtr ctxt, xmlXPathFuncLookupFunc f, void *funcCtxt); @@ -346,7 +348,7 @@ /* * Error reporting. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPatherror (xmlXPathParserContextPtr ctxt, const char *file, int line, @@ -357,11 +359,11 @@ int error); #ifdef LIBXML_DEBUG_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathDebugDumpObject (FILE *output, xmlXPathObjectPtr cur, int depth); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathDebugDumpCompExpr(FILE *output, xmlXPathCompExprPtr comp, int depth); @@ -369,48 +371,48 @@ /** * NodeSet handling. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathNodeSetContains (xmlNodeSetPtr cur, xmlNodePtr val); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathDifference (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathIntersection (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathDistinctSorted (xmlNodeSetPtr nodes); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathDistinct (xmlNodeSetPtr nodes); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathHasSameNodes (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathNodeLeadingSorted (xmlNodeSetPtr nodes, xmlNodePtr node); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathLeadingSorted (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathNodeLeading (xmlNodeSetPtr nodes, xmlNodePtr node); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathLeading (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathNodeTrailingSorted (xmlNodeSetPtr nodes, xmlNodePtr node); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathTrailingSorted (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathNodeTrailing (xmlNodeSetPtr nodes, xmlNodePtr node); -XMLPUBFUN xmlNodeSetPtr XMLCALL +XMLPUBFUN xmlNodeSetPtr XMLCALL xmlXPathTrailing (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2); @@ -419,51 +421,51 @@ * Extending a context. */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathRegisterNs (xmlXPathContextPtr ctxt, const xmlChar *prefix, const xmlChar *ns_uri); -XMLPUBFUN const xmlChar * XMLCALL +XMLPUBFUN const xmlChar * XMLCALL xmlXPathNsLookup (xmlXPathContextPtr ctxt, const xmlChar *prefix); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathRegisteredNsCleanup (xmlXPathContextPtr ctxt); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathRegisterFunc (xmlXPathContextPtr ctxt, const xmlChar *name, xmlXPathFunction f); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathRegisterFuncNS (xmlXPathContextPtr ctxt, const xmlChar *name, const xmlChar *ns_uri, xmlXPathFunction f); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathRegisterVariable (xmlXPathContextPtr ctxt, const xmlChar *name, xmlXPathObjectPtr value); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlXPathRegisterVariableNS (xmlXPathContextPtr ctxt, const xmlChar *name, const xmlChar *ns_uri, xmlXPathObjectPtr value); -XMLPUBFUN xmlXPathFunction XMLCALL +XMLPUBFUN xmlXPathFunction XMLCALL xmlXPathFunctionLookup (xmlXPathContextPtr ctxt, const xmlChar *name); -XMLPUBFUN xmlXPathFunction XMLCALL +XMLPUBFUN xmlXPathFunction XMLCALL xmlXPathFunctionLookupNS (xmlXPathContextPtr ctxt, const xmlChar *name, const xmlChar *ns_uri); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathRegisteredFuncsCleanup (xmlXPathContextPtr ctxt); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathVariableLookup (xmlXPathContextPtr ctxt, const xmlChar *name); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathVariableLookupNS (xmlXPathContextPtr ctxt, const xmlChar *name, const xmlChar *ns_uri); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt); /** @@ -471,79 +473,79 @@ */ XMLPUBFUN xmlXPathParserContextPtr XMLCALL xmlXPathNewParserContext (const xmlChar *str, - xmlXPathContextPtr ctxt); -XMLPUBFUN void XMLCALL + xmlXPathContextPtr ctxt); +XMLPUBFUN void XMLCALL xmlXPathFreeParserContext (xmlXPathParserContextPtr ctxt); /* TODO: remap to xmlXPathValuePop and Push. */ -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL valuePop (xmlXPathParserContextPtr ctxt); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL valuePush (xmlXPathParserContextPtr ctxt, - xmlXPathObjectPtr value); + xmlXPathObjectPtr value); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathNewString (const xmlChar *val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathNewCString (const char *val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathWrapString (xmlChar *val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathWrapCString (char * val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathNewFloat (double val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathNewBoolean (int val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathNewNodeSet (xmlNodePtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathNewValueTree (xmlNodePtr val); -XMLPUBFUN void XMLCALL +XMLPUBFUN int XMLCALL xmlXPathNodeSetAdd (xmlNodeSetPtr cur, xmlNodePtr val); -XMLPUBFUN void XMLCALL +XMLPUBFUN int XMLCALL xmlXPathNodeSetAddUnique (xmlNodeSetPtr cur, xmlNodePtr val); -XMLPUBFUN void XMLCALL - xmlXPathNodeSetAddNs (xmlNodeSetPtr cur, - xmlNodePtr node, +XMLPUBFUN int XMLCALL + xmlXPathNodeSetAddNs (xmlNodeSetPtr cur, + xmlNodePtr node, xmlNsPtr ns); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathNodeSetSort (xmlNodeSetPtr set); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathRoot (xmlXPathParserContextPtr ctxt); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathEvalExpr (xmlXPathParserContextPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlXPathParseName (xmlXPathParserContextPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL +XMLPUBFUN xmlChar * XMLCALL xmlXPathParseNCName (xmlXPathParserContextPtr ctxt); /* * Existing functions. */ -XMLPUBFUN double XMLCALL +XMLPUBFUN double XMLCALL xmlXPathStringEvalNumber (const xmlChar *str); -XMLPUBFUN int XMLCALL - xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt, +XMLPUBFUN int XMLCALL + xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt, xmlXPathObjectPtr res); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPathRegisterAllFunctions (xmlXPathContextPtr ctxt); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathNodeSetMerge (xmlNodeSetPtr val1, +XMLPUBFUN xmlNodeSetPtr XMLCALL + xmlXPathNodeSetMerge (xmlNodeSetPtr val1, xmlNodeSetPtr val2); -XMLPUBFUN void XMLCALL - xmlXPathNodeSetDel (xmlNodeSetPtr cur, +XMLPUBFUN void XMLCALL + xmlXPathNodeSetDel (xmlNodeSetPtr cur, xmlNodePtr val); -XMLPUBFUN void XMLCALL - xmlXPathNodeSetRemove (xmlNodeSetPtr cur, +XMLPUBFUN void XMLCALL + xmlXPathNodeSetRemove (xmlNodeSetPtr cur, int val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathNewNodeSetList (xmlNodeSetPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathWrapNodeSet (xmlNodeSetPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPathWrapExternal (void *val); XMLPUBFUN int XMLCALL xmlXPathEqualValues(xmlXPathParserContextPtr ctxt); @@ -621,7 +623,7 @@ * Really internal functions */ XMLPUBFUN void XMLCALL xmlXPathNodeSetFreeNs(xmlNsPtr ns); - + #ifdef __cplusplus } #endif diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xpointer.c gettext-0.19.7/gnulib-local/lib/libxml/xpointer.c --- gettext-0.19.6/gnulib-local/lib/libxml/xpointer.c 2015-08-21 05:48:29.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xpointer.c 2015-12-23 07:08:27.000000000 +0000 @@ -7,7 +7,7 @@ * * Added support for the element() scheme described in: * W3C Proposed Recommendation 13 November 2002 - * http://www.w3.org/TR/2002/PR-xptr-element-20021113/ + * http://www.w3.org/TR/2002/PR-xptr-element-20021113/ * * See Copyright for the status of this software. * @@ -47,19 +47,19 @@ #endif #endif -#define TODO \ +#define TODO \ xmlGenericError(xmlGenericErrorContext, \ "Unimplemented block at %s:%d\n", \ __FILE__, __LINE__); -#define STRANGE \ +#define STRANGE \ xmlGenericError(xmlGenericErrorContext, \ "Internal error at %s:%d\n", \ __FILE__, __LINE__); /************************************************************************ * * - * Some factorized error routines * + * Some factorized error routines * * * ************************************************************************/ @@ -134,7 +134,7 @@ static int xmlXPtrGetArity(xmlNodePtr cur) { int i; - if (cur == NULL) + if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) return(-1); cur = cur->children; for (i = 0;cur != NULL;cur = cur->next) { @@ -157,7 +157,7 @@ static int xmlXPtrGetIndex(xmlNodePtr cur) { int i; - if (cur == NULL) + if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) return(-1); for (i = 1;cur != NULL;cur = cur->prev) { if ((cur->type == XML_ELEMENT_NODE) || @@ -179,11 +179,11 @@ static xmlNodePtr xmlXPtrGetNthChild(xmlNodePtr cur, int no) { int i; - if (cur == NULL) + if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) return(cur); cur = cur->children; for (i = 0;i <= no;cur = cur->next) { - if (cur == NULL) + if (cur == NULL) return(cur); if ((cur->type == XML_ELEMENT_NODE) || (cur->type == XML_DOCUMENT_NODE) || @@ -553,7 +553,7 @@ break; case XPATH_NODESET: /* - * Empty set ... + * Empty set ... */ if (end->nodesetval->nodeNr <= 0) return(NULL); @@ -731,7 +731,7 @@ if (i >= cur->locNr) { #ifdef DEBUG - xmlGenericError(xmlGenericErrorContext, + xmlGenericError(xmlGenericErrorContext, "xmlXPtrLocationSetDel: Range wasn't found in RangeList\n"); #endif return; @@ -903,7 +903,7 @@ #define NXT(val) ctxt->cur[(val)] #define CUR_PTR ctxt->cur -#define SKIP_BLANKS \ +#define SKIP_BLANKS \ while (IS_BLANK_CH(*(ctxt->cur))) NEXT #define CURRENT (*ctxt->cur) @@ -945,7 +945,7 @@ * xmlXPtrEvalXPtrPart: * @ctxt: the XPointer Parser context * @name: the preparsed Scheme for the XPtrPart - * + * * XPtrPart ::= 'xpointer' '(' XPtrExpr ')' * | Scheme '(' SchemeSpecificExpr ')' * @@ -953,7 +953,7 @@ * * SchemeSpecificExpr ::= StringWithBalancedParens * - * StringWithBalancedParens ::= + * StringWithBalancedParens ::= * [^()]* ('(' StringWithBalancedParens ')' [^()]*)* * [VC: Parenthesis escaping] * @@ -971,7 +971,7 @@ * * Parse and evaluate an XPtrPart. Basically it generates the unescaped * string and if the scheme is 'xpointer' it will call the XPath interpreter. - * + * * TODO: there is no new scheme registration mechanism */ @@ -1007,21 +1007,14 @@ NEXT; break; } - *cur++ = CUR; } else if (CUR == '(') { level++; - *cur++ = CUR; } else if (CUR == '^') { - NEXT; - if ((CUR == ')') || (CUR == '(') || (CUR == '^')) { - *cur++ = CUR; - } else { - *cur++ = '^'; - *cur++ = CUR; - } - } else { - *cur++ = CUR; + if ((NXT(1) == ')') || (NXT(1) == '(') || (NXT(1) == '^')) { + NEXT; + } } + *cur++ = CUR; NEXT; } *cur = 0; @@ -1104,7 +1097,7 @@ xmlFree(name); XP_ERROR(XPATH_MEMORY_ERROR); } - + xmlXPathRegisterNs(ctxt->context, prefix, URI); CUR_PTR = left; xmlFree(URI); @@ -1152,10 +1145,12 @@ if (name == NULL) XP_ERROR(XPATH_EXPR_ERROR); while (name != NULL) { + ctxt->error = XPATH_EXPRESSION_OK; xmlXPtrEvalXPtrPart(ctxt, name); /* in case of syntax error, break here */ - if (ctxt->error != XPATH_EXPRESSION_OK) + if ((ctxt->error != XPATH_EXPRESSION_OK) && + (ctxt->error != XML_XPTR_UNKNOWN_SCHEME)) return; /* @@ -1234,7 +1229,7 @@ while (CUR == '/') { int child = 0; NEXT; - + while ((CUR >= '0') && (CUR <= '9')) { child = child * 10 + (CUR - '0'); NEXT; @@ -1258,7 +1253,7 @@ xmlXPtrEvalXPointer(xmlXPathParserContextPtr ctxt) { if (ctxt->valueTab == NULL) { /* Allocate the value stack */ - ctxt->valueTab = (xmlXPathObjectPtr *) + ctxt->valueTab = (xmlXPathObjectPtr *) xmlMalloc(10 * sizeof(xmlXPathObjectPtr)); if (ctxt->valueTab == NULL) { xmlXPtrErrMemory("allocating evaluation context"); @@ -1267,6 +1262,7 @@ ctxt->valueNr = 0; ctxt->valueMax = 10; ctxt->value = NULL; + ctxt->valueFrame = 0; } SKIP_BLANKS; if (CUR == '/') { @@ -1299,12 +1295,19 @@ * * ************************************************************************/ +static void xmlXPtrStringRangeFunction(xmlXPathParserContextPtr ctxt, int nargs); +static void xmlXPtrStartPointFunction(xmlXPathParserContextPtr ctxt, int nargs); +static void xmlXPtrEndPointFunction(xmlXPathParserContextPtr ctxt, int nargs); +static void xmlXPtrHereFunction(xmlXPathParserContextPtr ctxt, int nargs); +static void xmlXPtrOriginFunction(xmlXPathParserContextPtr ctxt, int nargs); +static void xmlXPtrRangeInsideFunction(xmlXPathParserContextPtr ctxt, int nargs); +static void xmlXPtrRangeFunction(xmlXPathParserContextPtr ctxt, int nargs); /** @@ -1372,6 +1375,8 @@ return(NULL); ctxt = xmlXPathNewParserContext(str, ctx); + if (ctxt == NULL) + return(NULL); ctxt->xptr = 1; xmlXPtrEvalXPointer(ctxt); @@ -1393,13 +1398,13 @@ /* * Evaluation may push a root nodeset which is unused */ - xmlNodeSetPtr set; + xmlNodeSetPtr set; set = tmp->nodesetval; if ((set->nodeNr != 1) || (set->nodeTab[0] != (xmlNodePtr) ctx->doc)) stack++; } else - stack++; + stack++; } xmlXPathFreeObject(tmp); } @@ -1413,7 +1418,7 @@ xmlXPathFreeObject(res); res = NULL; } - + xmlXPathFreeParserContext(ctxt); return(res); } @@ -1441,11 +1446,13 @@ return(NULL); start = (xmlNodePtr) range->user; - if (start == NULL) + if ((start == NULL) || (start->type == XML_NAMESPACE_DECL)) return(NULL); end = range->user2; if (end == NULL) return(xmlCopyNode(start, 1)); + if (end->type == XML_NAMESPACE_DECL) + return(NULL); cur = start; index1 = range->index; @@ -1475,7 +1482,7 @@ /* prune and return full set */ if (last != NULL) xmlAddNextSibling(last, tmp); - else + else xmlAddChild(parent, tmp); return(list); } else { @@ -1729,16 +1736,16 @@ * @ctxt: the XPointer Parser context * @nargs: the number of args * - * Function implementing here() operation + * Function implementing here() operation * as described in 5.4.3 */ -void +static void xmlXPtrHereFunction(xmlXPathParserContextPtr ctxt, int nargs) { CHECK_ARITY(0); if (ctxt->context->here == NULL) XP_ERROR(XPTR_SYNTAX_ERROR); - + valuePush(ctxt, xmlXPtrNewLocationSetNodes(ctxt->context->here, NULL)); } @@ -1747,16 +1754,16 @@ * @ctxt: the XPointer Parser context * @nargs: the number of args * - * Function implementing origin() operation + * Function implementing origin() operation * as described in 5.4.3 */ -void +static void xmlXPtrOriginFunction(xmlXPathParserContextPtr ctxt, int nargs) { CHECK_ARITY(0); if (ctxt->context->origin == NULL) XP_ERROR(XPTR_SYNTAX_ERROR); - + valuePush(ctxt, xmlXPtrNewLocationSetNodes(ctxt->context->origin, NULL)); } @@ -1765,7 +1772,7 @@ * @ctxt: the XPointer Parser context * @nargs: the number of args * - * Function implementing start-point() operation + * Function implementing start-point() operation * as described in 5.4.3 * ---------------- * location-set start-point(location-set) @@ -1783,7 +1790,7 @@ * ---------------- * */ -void +static void xmlXPtrStartPointFunction(xmlXPathParserContextPtr ctxt, int nargs) { xmlXPathObjectPtr tmp, obj, point; xmlLocationSetPtr newset = NULL; @@ -1802,6 +1809,8 @@ */ tmp = xmlXPtrNewLocationSetNodeSet(obj->nodesetval); xmlXPathFreeObject(obj); + if (tmp == NULL) + XP_ERROR(XPATH_MEMORY_ERROR) obj = tmp; } @@ -1857,7 +1866,7 @@ * @ctxt: the XPointer Parser context * @nargs: the number of args * - * Function implementing end-point() operation + * Function implementing end-point() operation * as described in 5.4.3 * ---------------------------- * location-set end-point(location-set) @@ -1877,7 +1886,7 @@ * syntax error. * ---------------------------- */ -void +static void xmlXPtrEndPointFunction(xmlXPathParserContextPtr ctxt, int nargs) { xmlXPathObjectPtr tmp, obj, point; xmlLocationSetPtr newset = NULL; @@ -1896,10 +1905,16 @@ */ tmp = xmlXPtrNewLocationSetNodeSet(obj->nodesetval); xmlXPathFreeObject(obj); + if (tmp == NULL) + XP_ERROR(XPATH_MEMORY_ERROR) obj = tmp; } newset = xmlXPtrLocationSetCreate(NULL); + if (newset == NULL) { + xmlXPathFreeObject(obj); + XP_ERROR(XPATH_MEMORY_ERROR); + } oldset = (xmlLocationSetPtr) obj->user; if (oldset != NULL) { int i; @@ -1993,7 +2008,7 @@ case XML_NOTATION_NODE: case XML_HTML_DOCUMENT_NODE: { int indx = xmlXPtrGetIndex(node); - + node = node->parent; return(xmlXPtrNewRange(node, indx - 1, node, indx + 1)); @@ -2022,7 +2037,7 @@ * location-set, a range location representing the covering range of * x is added to the result location-set. */ -void +static void xmlXPtrRangeFunction(xmlXPathParserContextPtr ctxt, int nargs) { int i; xmlXPathObjectPtr set; @@ -2044,6 +2059,8 @@ */ tmp = xmlXPtrNewLocationSetNodeSet(set->nodesetval); xmlXPathFreeObject(set); + if (tmp == NULL) + XP_ERROR(XPATH_MEMORY_ERROR) set = tmp; } oldset = (xmlLocationSetPtr) set->user; @@ -2052,6 +2069,10 @@ * The loop is to compute the covering range for each item and add it */ newset = xmlXPtrLocationSetCreate(NULL); + if (newset == NULL) { + xmlXPathFreeObject(set); + XP_ERROR(XPATH_MEMORY_ERROR); + } for (i = 0;i < oldset->locNr;i++) { xmlXPtrLocationSetAdd(newset, xmlXPtrCoveringRange(ctxt, oldset->locTab[i])); @@ -2168,7 +2189,7 @@ * location children of x. * */ -void +static void xmlXPtrRangeInsideFunction(xmlXPathParserContextPtr ctxt, int nargs) { int i; xmlXPathObjectPtr set; @@ -2190,6 +2211,8 @@ */ tmp = xmlXPtrNewLocationSetNodeSet(set->nodesetval); xmlXPathFreeObject(set); + if (tmp == NULL) + XP_ERROR(XPATH_MEMORY_ERROR) set = tmp; } oldset = (xmlLocationSetPtr) set->user; @@ -2198,6 +2221,10 @@ * The loop is to compute the covering range for each item and add it */ newset = xmlXPtrLocationSetCreate(NULL); + if (newset == NULL) { + xmlXPathFreeObject(set); + XP_ERROR(XPATH_MEMORY_ERROR); + } for (i = 0;i < oldset->locNr;i++) { xmlXPtrLocationSetAdd(newset, xmlXPtrInsideRange(ctxt, oldset->locTab[i])); @@ -2240,7 +2267,7 @@ cur = ctxt->cur; newset = xmlXPtrLocationSetCreate(NULL); - + for (i = 0; i < oldset->nodeNr; i++) { ctxt->cur = cur; @@ -2274,7 +2301,7 @@ res = valuePop(ctxt); xmlXPathFreeObject(res); } - + ctxt->context->node = NULL; } @@ -2294,14 +2321,14 @@ * @level: incremented/decremented to show level in tree * * Advance to the next element or text node in document order - * TODO: add a stack for entering/exiting entities + * TODO: add a stack for entering/exiting entities * * Returns -1 in case of failure, 0 otherwise */ xmlNodePtr xmlXPtrAdvanceNode(xmlNodePtr cur, int *level) { next: - if (cur == NULL) + if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) return(NULL); if (cur->children != NULL) { cur = cur->children ; @@ -2359,7 +2386,7 @@ if ((node == NULL) || (indx == NULL)) return(-1); cur = *node; - if (cur == NULL) + if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) return(-1); pos = *indx; @@ -2397,7 +2424,7 @@ return(0); } /* - * We should have a text (or cdata) node ... + * We should have a text (or cdata) node ... */ len = 0; if ((cur->type != XML_ELEMENT_NODE) && @@ -2450,13 +2477,12 @@ if (string == NULL) return(-1); - if (start == NULL) + if ((start == NULL) || (start->type == XML_NAMESPACE_DECL)) return(-1); - if ((end == NULL) || (endindex == NULL)) + if ((end == NULL) || (*end == NULL) || + ((*end)->type == XML_NAMESPACE_DECL) || (endindex == NULL)) return(-1); cur = start; - if (cur == NULL) - return(-1); pos = startindex - 1; stringlen = xmlStrlen(string); @@ -2535,13 +2561,12 @@ if (string == NULL) return(-1); - if ((start == NULL) || (startindex == NULL)) + if ((start == NULL) || (*start == NULL) || + ((*start)->type == XML_NAMESPACE_DECL) || (startindex == NULL)) return(-1); if ((end == NULL) || (endindex == NULL)) return(-1); cur = *start; - if (cur == NULL) - return(-1); pos = *startindex - 1; first = string[0]; @@ -2574,7 +2599,7 @@ /* * An empty string is considered to match before each * character of the string-value and after the final - * character. + * character. */ #ifdef DEBUG_RANGES xmlGenericError(xmlGenericErrorContext, @@ -2615,20 +2640,17 @@ xmlNodePtr cur; int pos, len = 0; - if ((node == NULL) || (indx == NULL)) + if ((node == NULL) || (*node == NULL) || + ((*node)->type == XML_NAMESPACE_DECL) || (indx == NULL)) return(-1); cur = *node; pos = *indx; - if (cur == NULL) - return(-1); - if ((cur->type == XML_ELEMENT_NODE) || (cur->type == XML_DOCUMENT_NODE) || (cur->type == XML_HTML_DOCUMENT_NODE)) { if (pos > 0) { cur = xmlXPtrGetNthChild(cur, pos); - pos = 0; } } while (cur != NULL) { @@ -2727,7 +2749,7 @@ * @nargs: the number of args * * Function implementing the string-range() function - * range as described in 5.4.2 + * range as described in 5.4.2 * * ------------------------------ * [Definition: For each location in the location-set argument, @@ -2757,7 +2779,7 @@ * all be character points. * ------------------------------ */ -void +static void xmlXPtrStringRangeFunction(xmlXPathParserContextPtr ctxt, int nargs) { int i, startindex, endindex = 0, fendindex; xmlNodePtr start, end = 0, fend; @@ -2796,6 +2818,10 @@ set = valuePop(ctxt); newset = xmlXPtrLocationSetCreate(NULL); + if (newset == NULL) { + xmlXPathFreeObject(set); + XP_ERROR(XPATH_MEMORY_ERROR); + } if (set->nodesetval == NULL) { goto error; } @@ -2807,6 +2833,8 @@ */ tmp = xmlXPtrNewLocationSetNodeSet(set->nodesetval); xmlXPathFreeObject(set); + if (tmp == NULL) + XP_ERROR(XPATH_MEMORY_ERROR) set = tmp; } oldset = (xmlLocationSetPtr) set->user; @@ -2891,7 +2919,7 @@ * @ctxt: the XPointer Parser context * * [8] Predicate ::= '[' PredicateExpr ']' - * [9] PredicateExpr ::= Expr + * [9] PredicateExpr ::= Expr * * Evaluate a predicate as in xmlXPathEvalPredicate() but for * a Location Set instead of a node set @@ -2940,7 +2968,7 @@ */ cur = ctxt->cur; newset = xmlXPtrLocationSetCreate(NULL); - + for (i = 0; i < oldset->locNr; i++) { ctxt->cur = cur; @@ -2976,7 +3004,7 @@ res = valuePop(ctxt); xmlXPathFreeObject(res); } - + ctxt->context->node = NULL; } diff -Nru gettext-0.19.6/gnulib-local/lib/libxml/xpointer.in.h gettext-0.19.7/gnulib-local/lib/libxml/xpointer.in.h --- gettext-0.19.6/gnulib-local/lib/libxml/xpointer.in.h 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/lib/libxml/xpointer.in.h 2015-12-23 07:08:27.000000000 +0000 @@ -7,7 +7,7 @@ * * Added support for the element() scheme described in: * W3C Proposed Recommendation 13 November 2002 - * http://www.w3.org/TR/2002/PR-xptr-element-20021113/ + * http://www.w3.org/TR/2002/PR-xptr-element-20021113/ * * Copy: See Copyright for the status of this software. * @@ -43,68 +43,68 @@ * Handling of location sets. */ -XMLPUBFUN xmlLocationSetPtr XMLCALL +XMLPUBFUN xmlLocationSetPtr XMLCALL xmlXPtrLocationSetCreate (xmlXPathObjectPtr val); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPtrFreeLocationSet (xmlLocationSetPtr obj); -XMLPUBFUN xmlLocationSetPtr XMLCALL +XMLPUBFUN xmlLocationSetPtr XMLCALL xmlXPtrLocationSetMerge (xmlLocationSetPtr val1, xmlLocationSetPtr val2); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewRange (xmlNodePtr start, int startindex, xmlNodePtr end, int endindex); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewRangePoints (xmlXPathObjectPtr start, xmlXPathObjectPtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewRangeNodePoint (xmlNodePtr start, xmlXPathObjectPtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewRangePointNode (xmlXPathObjectPtr start, xmlNodePtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewRangeNodes (xmlNodePtr start, xmlNodePtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewLocationSetNodes (xmlNodePtr start, xmlNodePtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewLocationSetNodeSet(xmlNodeSetPtr set); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewRangeNodeObject (xmlNodePtr start, xmlXPathObjectPtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrNewCollapsedRange (xmlNodePtr start); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPtrLocationSetAdd (xmlLocationSetPtr cur, xmlXPathObjectPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrWrapLocationSet (xmlLocationSetPtr val); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPtrLocationSetDel (xmlLocationSetPtr cur, xmlXPathObjectPtr val); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPtrLocationSetRemove (xmlLocationSetPtr cur, int val); /* * Functions. */ -XMLPUBFUN xmlXPathContextPtr XMLCALL +XMLPUBFUN xmlXPathContextPtr XMLCALL xmlXPtrNewContext (xmlDocPtr doc, xmlNodePtr here, xmlNodePtr origin); -XMLPUBFUN xmlXPathObjectPtr XMLCALL +XMLPUBFUN xmlXPathObjectPtr XMLCALL xmlXPtrEval (const xmlChar *str, xmlXPathContextPtr ctx); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPtrRangeToFunction (xmlXPathParserContextPtr ctxt, - int nargs); -XMLPUBFUN xmlNodePtr XMLCALL + int nargs); +XMLPUBFUN xmlNodePtr XMLCALL xmlXPtrBuildNodeList (xmlXPathObjectPtr obj); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlXPtrEvalRangePredicate (xmlXPathParserContextPtr ctxt); #ifdef __cplusplus } diff -Nru gettext-0.19.6/gnulib-local/m4/ChangeLog.0 gettext-0.19.7/gnulib-local/m4/ChangeLog.0 --- gettext-0.19.6/gnulib-local/m4/ChangeLog.0 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/m4/ChangeLog.0 1970-01-01 00:00:00.000000000 +0000 @@ -1,889 +0,0 @@ -2003-01-12 Bruno Haible - - * onceonly.m4: New file, from gnulib. - * alloca.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add them. - -2003-01-12 Bruno Haible - - * wint_t.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2003-01-08 Bruno Haible - - * gettext.m4 (AM_PO_SUBDIRS): Avoid warning when there are at least - two PO directories. - Reported by Alexander Turbov . - -2002-12-22 Bruno Haible - - * inttypes_h.m4 (jm_AC_HEADER_INTTYPES_H): Whitespace change, takes - advantage of autoconf >= 2.52. - * stdint_h.m4 (jm_AC_HEADER_STDINT_H): Likewise. - * uintmax_t.m4 (jm_AC_TYPE_UINTMAX_T): Define HAVE_UINTMAX_T if - uintmax_t already exists. For consistency with HAVE_INTMAX_T, defined - by intmax.m4, needed by printf-parse.c. - -2002-12-07 Bruno Haible - - Switch to autoconf-2.57 and automake-1.7.2. - * fixautomake.m4: New file, extracted from configure.in. - * Makefile.am (EXTRA_DIST): Add it. - -2002-11-19 Bruno Haible - - Switch to autoconf-2.56. - * fnmatch.m4 (gt_FUNC_FNMATCH): Use AC_LIBOBJ instead of assigning - LIBOBJS. - * getline.m4 (AM_FUNC_GETLINE): Likewise. - - * lib-ld.m4 (AC_LIB_PROG_LD_GNU): Define PATH_SEPARATOR before using - it. - -2002-11-13 Bruno Haible - - Assume ANSI C. - * c-bs-a.m4: Remove file. - * Makefile.am (EXTRA_DIST): Remove it. - -2002-11-08 Bruno Haible - - * progtest.m4 (AM_PATH_PROG_WITH_TEST): Portability to OS/2. - Reported by Andreas Buening . - -2002-11-08 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Print a message containing the macro's - main decisions. - Reported by Andreas Buening . - -2002-11-07 Bruno Haible - - * libtool.m4: Upgrade to libtool-1.4.3. - -2002-10-27 Bruno Haible - - * intmax.m4: New file. - * longlong.m4: New file. - * longdouble.m4: New file. - * wchar_t.m4: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2002-08-25 Bruno Haible - - * gettext.m4 (AM_PO_SUBDIRS): New variable POMAKEFILEDEPS. Substitute - it into Makefile. - -2002-08-06 Bruno Haible - - * gettext-0.11.5 released. - -2002-07-27 Andreas Schwab - - * gettext.m4: Avoid expanding ALL_LINGUAS in comment. - -2002-08-02 Bruno Haible - - * Makefile.am (aclocal_DATA): Add ulonglong.m4. - -2002-07-25 Bruno Haible - - * gettext-0.11.4 released. - -2002-07-24 Bruno Haible - - * javacomp.m4 (gt_JAVACOMP): Ignore all gcj versions for now. - -2002-07-23 Bruno Haible - - * inttypes-pri.m4: New file. - * gettext.m4 (AM_INTL_SUBDIR): Require gt_INTTYPES_PRI. - * Makefile.am (aclocal_DATA): Add inttypes-pri.m4. - (EXTRA_DIST): Likewise. - -2002-07-21 Bruno Haible - - * stdint_h.m4 (jm_AC_HEADER_STDINT_H): Define - HAVE_STDINT_H_WITH_UINTMAX instead of HAVE_STDINT_H. - * inttypes_h.m4 (jm_AC_HEADER_INTTYPES_H): Define - HAVE_INTTYPES_H_WITH_UINTMAX instead of HAVE_INTTYPES_H. - * inttypes.m4: New file. - * gettext.m4 (AM_GNU_GETTEXT): Accept needsymbol = - need-formatstring-macros. - (AM_INTL_SUBDIR): Require jm_AC_TYPE_UINTMAX_T, gt_HEADER_INTTYPES_H. - * Makefile.am (aclocal_DATA): Add inttypes.m4, inttypes_h.m4, - stdint_h.m4, uintmax_t.m4. - (EXTRA_DIST): Add inttypes.m4. - -2002-07-19 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT_VERSION): New macro. - Reported by Akim Demaille . - -2002-07-17 Bruno Haible - - * gettext-0.11.3 released. - -2002-07-16 Bruno Haible - - * gcj.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - * javacomp.m4 (gt_JAVACOMP): Set HAVE_GCJ_C instead of HAVE_GCJ. - -2002-07-14 Bruno Haible - - * libtool.m4 (_LT_AC_LTCONFIG_HACK): Add support for GNU/FreeBSD. - -2002-06-15 Bruno Haible - - * javacomp.m4 (gt_JAVACOMP): Ignore gcj versions that start with - "3.0" or "3.1". (gcj 3.0.4 compiles GetURL.java to invalid bytecode, - that crashes with an IllegalAccessError when executed by gij 3.0.4 or - with a VerifyError when executed by Sun Java. Likewise for gcj 3.1.) - -2002-06-14 Bruno Haible - - * lib-link.m4 (AC_LIB_RPATH): New option --disable-rpath. - (AC_LIB_LINKFLAGS_BODY): Don't hardcode library paths if - --disable-rpath was given. - -2002-06-12 Bruno Haible - - * lcmessage.m4 (AM_LC_MESSAGES): Don't test ac_cv_header_locale_h here. - * gettext.m4 (AM_INTL_SUBDIR): Test it here. - -2002-06-07 Bruno Haible - - * intdiv0.m4: New file. - * gettext.m4 (AM_INTL_SUBDIR): Require gt_INTDIV0. - * Makefile.am (aclocal_DATA): Add intdiv0.m4. - (EXTRA_DIST): Add intdiv0.m4. - -2002-05-18 Bruno Haible - - Make it possible to invoke AM_ICONV after AM_GNU_GETTEXT. - * iconv.m4 (AM_ICONV_LINKFLAGS_BODY): New macro. - (AM_ICONV_LINK): Require it. - (AM_ICONV): Invoke AM_ICONV_LINK. Requiring it is not sufficient, - because gettext.m4 invokes it inside an 'if'. - * gettext.m4 (AM_GNU_GETTEXT): Require AM_ICONV_LINKFLAGS_BODY. - -2002-05-04 Bruno Haible - - * javacomp.m4 (gt_JAVACOMP): Ignore non-digits in the first line of - the output of "gcj --version". Needed for gcj 3.1. - -2002-04-30 Bruno Haible - - * stdbool.m4 (gt_STDBOOL_H): If does not exist, check for - _Bool as a builtin primitive type. Needed for cc on OSF/1 5.1. - -2002-04-24 Bruno Haible - - * gettext-0.11.2 released. - -2002-04-08 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Don't use _nl_domain_bindings; its - linkage name has changed between gettext 0.10.35 and 0.10.36. - Reported by Albert Chin-A-Young . - - * lib-link.m4 (AC_LIB_LINKFLAGS_BODY): Handle -R options that appear - in $dependency_libs, for example on HP-UX 10.20 and OSF/1. - Reported by Albert Chin-A-Young - and Nelson H. F. Beebe . - - * javacomp.m4 (gt_JAVACOMP): Test whether "gcj -C" really works, to - protect against systems where libgcj.jar is missing or misinstalled. - -2002-03-12 Bruno Haible - - * gettext-0.11.1 released. - -2002-03-04 Bruno Haible - - * setenv.m4 (gt_FUNC_SETENV): Also check whether unsetenv is missing. - -2002-03-02 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Set LIBINTL and LTLIBINTL to empty if - no preinstalled GNU gettext was found. - Reported by Paul Eggert. - -2002-02-10 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Don't prevent installation of libintl - on NetBSD. - -2002-02-06 Bruno Haible - - * libtool.m4: Upgrade from libtool-1.4 to libtool-1.4.2. - -2002-02-02 Bruno Haible - - * fnmatch.m4 (gt_FUNC_FNMATCH): Ensure directory lib exists. - -2002-02-04 Bruno Haible - - * javacomp.m4 (gt_JAVACOMP): Use changequote to protect brackets. - Reported by Santiago Vila . - -2002-01-31 Bruno Haible - - * gettext-0.11 released. - -2002-01-30 Bruno Haible - - * error.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2002-01-24 Bruno Haible - - * lib-link.m4 (AC_LIB_LINKFLAGS_BODY): Don't use AC_LIB_APPENDTOVAR - for LIB variables. - -2002-01-24 Bruno Haible - - * lib-link.m4 (AC_LIB_LINKFLAGS): Also define LTLIB${NAME}. - (AC_LIB_HAVE_LINKFLAGS): Likewise. - (AC_LIB_LINKFLAGS_BODY): Also define LTLIB${NAME}. - * iconv.m4 (AM_ICONV_LINK): Also define LTLIBICONV. - * gettext.m4 (AM_GNU_GETTEXT): Define LIBINTL and LTLIBINTL instead - of INTLLIBS. - -2002-01-20 Bruno Haible - - * lib-link.m4 (AC_LIB_LINKFLAGS): Fix quoting so that multiple - invocations of this macro work. Also set HAVE_LIBNAME for use by - AC_LIB_LINKFLAGS_BODY. - (AC_LIB_HAVE_LINKFLAGS): Fix quoting here as well. - (AC_LIB_LINKFLAGS_BODY): If a HAVE_LIBNAME macro is already set, - use the result of the corresponding previous AC_LIB_LINKFLAGS - invocation, don't look on the filesystem. Fix typo for /usr/lib. - Fix hardcode_libdir_flag_spec evaluation. - -2002-01-20 Bruno Haible - - * libtool.m4 (_LT_AC_LTCONFIG_HACK): Remove two temporary files after - use. - -2002-01-19 Bruno Haible - - * iconv.m4 (AM_ICONV_LINK): New macro, extracted from AM_ICONV. - (AM_ICONV): Call it. - * gettext.m4 (AM_GNU_GETTEXT): Call AM_ICONV_LINK instead of AM_ICONV. - -2002-01-19 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Don't consider that -liconv is - necessary for -lintl. Instead, use the $LIBICONV value determined by - the AM_ICONV macro. - -2002-01-19 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Remove shortcut check for . - -2002-01-18 Bruno Haible - - * gettext.m4 (AM_PO_SUBDIRS): Split preprocessing of POTFILES.in into - two separate sed calls, otherwise the backslash that terminates the - last line doesn't get removed if the last line of POTFILES.in is a - comment line or a blank line. - -2002-01-18 Bruno Haible - - * gettext.m4 (AM_PO_SUBDIRS): Improve "found msgfmt program" message. - -2002-01-13 Bruno Haible - - * *.m4: Add copyright notice. - * hostname.m4: Quote first argument of AC_DEFUN. - -2002-01-13 Bruno Haible - - * lib-link.m4 (AC_LIB_LINKFLAGS): Avoid macro interaction with - AC_LIB_LINKFLAGS_BODY. Undefine the macros after use. - (AC_LIB_HAVE_LINKFLAGS): New macro. - -2002-01-13 Bruno Haible - - * lib-link.m4 (AC_LIB_LINKFLAGS): Fix mistake. - -2002-01-12 Bruno Haible - - * libtool.m4: Add support for Intel icc. - -2002-01-12 Bruno Haible - - * lib-prefix.m4 (AC_LIB_PREPARE_PREFIX): Fix shell programming mistake. - (AC_LIB_WITH_FINAL_PREFIX): New macro. - (AC_LIB_PREFIX): Use AC_LIB_WITH_FINAL_PREFIX. Remove - acl_final_exec_prefix assignment already done in AC_LIB_PREPARE_PREFIX. - * lib-link.m4 (AC_LIB_LINKFLAGS_BODY): Use AC_LIB_WITH_FINAL_PREFIX. - (AC_LIB_APPENDTOVAR): Likewise. - -2002-01-12 Bruno Haible - - * gettext.m4 (AM_PO_SUBDIRS): Exclude FreeBSD's msgfmt and xgettext - programs. They give usage messages on stderr but then terminate with - exit code 0. - -2002-01-05 Bruno Haible - - * gettext.m4 (AM_PO_SUBDIRS): Look for Rules-* files in the source dir, - not in the build dir. - -2002-01-04 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): If no intl directory exists and GNU - gettext was not found in libc or preinstalled libintl, don't define - ENABLE_NLS, and set USE_NLS to 'no'. - -2001-12-12 Bruno Haible - - * gettext.m4 (AM_PO_SUBDIRS): Reject xgettext versions that don't - support the --copyright-holder option. - -2001-12-17 Bruno Haible - - * fnmatch.m4: New file, inspired by autoconf-2.13 and autoconf-2.52. - * Makefile.am (EXTRA_DIST): Add it. - -2001-12-17 Bruno Haible - - * getline.m4 (AM_FUNC_GETLINE): Include , not , - for declaring size_t and exit(). #define getline to a different - symbol at linkage level. - -2001-12-11 Bruno Haible - - * javacomp.m4 (gt_JAVACOMP): Fix typo in jikes test. - -2001-12-11 Bruno Haible - - * gettext.m4 (AM_PO_SUBDIRS): Don't insert obsolete Rules-* files into - the Makefile. - -2001-12-03 Bruno Haible - - * gettext.m4 (AM_PO_SUBDIRS): Fix construction of Makefile if - builddir != srcdir. - -2001-12-02 Bruno Haible - - * lib-ld.m4: New file, extracted from libtool-1.4 libtool.m4. - * lib-link.m4: New file. - * lib-prefix.m4: New file. - * Makefile.am (aclocal_DATA): Add them. - (EXTRA_DIST): Likewise. - * iconv.m4 (AM_ICONV): Remove AC_ARG_WITH call. Invoke - AC_LIB_LINKFLAGS_BODY. Use $LIBICONV instead of "-lintl". Add - $INCICONV to CPPFLAGS if appropriate. - * gettext.m4 (AM_WITH_LIBINTL): Remove macro. - (AM_GNU_GETTEXT): Invoke AC_LIB_LINKFLAGS_BODY. Use $LIBINTL instead - of "-lintl $LIBICONV". Add $INCINTL to CPPFLAGS if appropriate. - -2001-12-02 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Avoid an error message if there is - no Rules-* file. - -2001-12-04 Bruno Haible - - * javacomp.m4 (gt_JAVACOMP): Exclude at.dms.kjc.Main (KOPI) versions - released in 2000, because they can't compile intl-java. Version 1.4F - [May 2000] is buggy, version 1.5B [August 2001] is OK. - -2001-11-25 Bruno Haible - - * gettext.m4 (AM_PO_SUBDIRS): Also substitute UPDATEPOFILES and - DUMMYPOFILES into Makefile. Also insert Makevars and Rules-* into - Makefile. - -2001-11-18 Bruno Haible - - * gettext.m4: Split into submacros. - (AM_GNU_GETTEXT): Allow the first argument to be 'external'. Verify - the first two arguments. Add --with-libintl-prefix option. - (AM_WITH_LIBINTL, AM_PO_SUBDIRS, AM_INTL_SUBDIR): New macros. - -2001-11-11 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): For builds with $builddir != $srcdir, - prepend $(srcdir) to all elements of POFILES and GMOFILES. - -2001-11-11 Bruno Haible - - * javaexec.m4 (gt_JAVAEXEC): Use HAVE_JAVA instead of HAVE_JAVA_JVM. - The problem seen with automake-1.4 is gone with automake-1.5. - -2001-11-05 Bruno Haible - - * stdint_h.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - * uintmax_t.m4 (jm_AC_TYPE_UINTMAX_T): Require also - jm_AC_HEADER_STDINT_H. - * mkdtemp.m4 (gt_FUNC_MKDTEMP): Call jm_AC_HEADER_INTTYPES_H instead - of testing for inttypes.h. Call jm_AC_HEADER_STDINT_H instead of - testing for stdint.h. - -2001-11-01 Bruno Haible - - * javacomp.m4 (gt_JAVACOMP): Test for the existence of gcj, javac, - jikes in $PATH. Needed because the call of a program not found in PATH - yields return code 1 with SunOS 4 /bin/sh and is thus indistinguishable - from a successful call returning 1. - * javaexec.m4 (gt_JAVAEXEC): Likewise for gij, java, jre, jview. - -2001-10-30 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Make sure "make dist" works even when - configured with --disable-nls. - -2001-10-21 Bruno Haible - - * mkdtemp.m4 (gt_FUNC_MKDTEMP): Also check for . - -2001-10-21 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): In INTLLIBS, use ${top_builddir} - instead of $(top_builddir), so that the value can also be used in - shell scripts. Note that in Makefiles both ${top_builddir} and - $(top_builddir) are equivalent. - -2001-10-09 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Add check for getc_unlocked. - -2001-09-29 Bruno Haible - - * hostname.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2001-10-10 Bruno Haible - - * javacomp.m4 (gt_JAVACOMP): Ignore gcj version 2.xx, require at least - gcj 3.0. - -2001-09-27 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Inline AM_WITH_NLS call. - (AM_WITH_NLS): Remove macro. - -2001-09-23 Bruno Haible - - * siginfo.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2001-09-18 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Test for msgmerge which understands the - --update option. - -2001-10-20 Bruno Haible - - Assume strchr() exists. - * gettext.m4 (AM_GNU_GETTEXT): Remove check for strchr. - -2001-09-17 Bruno Haible - - * backupfile.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2001-09-25 Bruno Haible - - * javacomp.m4: Recognize javac exit code 2. - -2001-09-24 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Capture not only the value of $LINGUAS, - but also whether it was set or unset. - Reported by Andreas Schwab . - -2001-08-12 Jim Meyering - - * mbrtowc.m4: Quote first arg of AC_DEFUN. - * mbstate_t.m4: Likewise. - * mbswidth.m4: Likewise. - -2001-09-02 Bruno Haible - - * signalblocking.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2001-09-08 Bruno Haible - - * javacomp.m4: New file. - * javaexec.m4: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2001-09-06 Bruno Haible - - * setenv.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2001-09-02 Bruno Haible - - * mkdtemp.m4: New file. - * tmpdir.m4: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2001-09-03 Bruno Haible - - * flex.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2001-07-22 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Remove computation of CATALOGS. - (AM_WITH_NLS): Compute ALL_LINGUAS, GMOFILES, POFILES, CATALOGS while - creating po/Makefile from po/Makefile.in. Remove computation of - GMOFILES, POFILES during configure. - -2001-07-22 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Simplify the logic. Use the same tests - for MSGFMT and XGETTEXT in the case we use a preinstalled GNU libintl - and in the case of using the included libintl. - -2001-06-30 Bruno Haible - - * stdbool.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2001-06-10 Bruno Haible - - * ssize_t.m4: New file. - * unionwait.m4: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2001-09-13 Bruno Haible - - * gettext-0.10.40 released. - -2001-09-13 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Change version determination of bison, so - that it also works with bison-1.29. - Reported by Karl Berry . - -2001-07-24 Bruno Haible - - * gettext-0.10.39 released. - -2001-06-25 Bruno Haible - - * mbswidth.m4: Also check for mbsinit. Needed for SCO 3.2v5.0.2. - -2001-06-14 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Add support for autoconf-2.50. - -2001-06-08 Bruno Haible - - * libtool.m4: Upgrade to libtool-1.4. - -2001-05-30 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Look only for GNU msgfmt and GNU xgettext. - Set the variables to ":" if not found. - * progtest.m4 (AM_PATH_PROG_WITH_TEST): If not found, print "no", not - the default value. - -2001-05-23 Bruno Haible - - * gettext-0.10.38 released. - -2001-05-23 Bruno Haible - - * iconv.m4 (AM_ICONV): Accept --with-libiconv-prefix option. - -2001-05-17 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Fix dcgettext test. Always add $LIBICONV - when using -lintl, because libintl may be a static library depending - on a (static or shared) libiconv. - -2001-05-12 Paul Eggert - - * gettext.m4 (AM_GNU_GETTEXT): Add check for strtoul. - -2001-05-14 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Create po/POTFILES right before - po/Makefile, at config.status run time. Make it work independently of - the subdir name and of the subdir level. - (AM_GNU_GETTEXT): Don't create po/POTFILES at configure time. - -2001-05-11 Bruno Haible - - * glibc21.m4: New file, from fileutils-4.1. - * gettext.m4 (AM_GNU_GETTEXT): Require jm_GLIBC21. - * Makefile.am (EXTRA_DIST): Add glibc21.m4. - (aclocal_DATA): Add glibc21.m4. - -2001-05-04 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Let the GNU gettext package install its - libintl when a GNU libintl is already preinstalled. - -2001-04-30 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Also check for the getegid, geteuid, - getgid, getuid functions. Needed for mingw32. - -2001-04-27 H. J. Lu - Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Fix $CONFIG_FILES matching so it deals - correctly with tabs. Define INSTOBJEXT and GENCAT for older Makefiles. - -2001-04-19 Bruno Haible - - * gettext-0.10.37 released. - -2001-04-17 Bruno Haible - - * mbswidth.m4: Also include ; this is where AIX 3.2.5 - declares wcwidth. - -2001-04-12 Bruno Haible - - * gettext.m4: Workaround an automake-1.4 bug: Don't write - AM_DISABLE_SHARED, even in comments, because that causes 'aclocal' - to pull in the libtool.m4 macros, which causes 'automake' to use - @LIBTOOL@ in its rules, even for packages that haven't called - AM_PROG_LIBTOOL. - -2001-04-12 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Fix syntax error in 'case'. Change - whitespace in $CONFIG_FILES to spaces for matching with 'case'. - Reported by Thorsten Kukuk . - -2001-04-11 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Even if 'msgfmt' is not found in $PATH, - set CATOBJEXT=.gmo and use the gettext in libc or libintl. - -2001-04-04 Bruno Haible - - * mbswidth.m4: New file, from textutils-2.0.13 with modifications. - * mbrtowc.m4: Likewise. - * mbstate_t.m4: Likewise. - * Makefile.am (EXTRA_DIST): Add them. - -2001-03-29 Bruno Haible - - * gettext-0.10.36 released. - -2001-03-23 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Check for bison and set INTLBISON. - -2001-03-20 Bruno Haible - - * iconv.m4 (AM_ICONV): Recommend GNU libiconv. - -2001-03-16 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Allow po/Makefile.in to be generated from - a different file than po/Makefile.in.in. - -2001-03-11 Bruno Haible - - * getline.m4: New file, from fileutils-4.0.41 with modifications. - * Makefile.am (EXTRA_DIST): Add it. - -2001-03-11 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Accept a second argument 'need-ngettext'. - If it is given, check for the presence of ngettext() as well. - -2001-03-10 Bruno Haible - - * signed.m4: Quote first argument of AC_DEFUN. - -2001-03-09 Bruno Haible - - * Makefile.am (aclocal_DATA): Add codeset.m4 and iconv.m4, both needed - by gettext.m4. - - * iconv.m4 (AM_ICONV): Cosmetic tweaks. - * setlocale.m4 (gt_SETLOCALE): Likewise. - -2001-03-06 Bruno Haible - - * signed.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2001-03-03 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Add $LIBICONV to $INTLLIBS. - -2001-02-07 Pavel Roskin - - * c-bs-a.m4: Quote first argument of AC_DEFUN. - * codeset.m4: Likewise. - * gettext.m4: Likewise. - * iconv.m4: Likewise. - * inttypes_h.m4: Likewise. - * isc-posix.m4: Likewise. - * lcmessage.m4: Likewise. - * libtool.m4: Likewise. - * progtest.m4: Likewise. - * setlocale.m4: Likewise. - * uintmax_t.m4: Likewise. - * ulonglong.m4: Likewise. - -2001-01-21 Bruno Haible - - Use libtool. - * libtool.m4: New file, from libtool-1.3.5. - * Makefile.am (EXTRA_DIST): Add it. - * gettext.m4 (AM_WITH_NLS): Accept 'use-libtool' as first argument. - New variable BUILD_INCLUDED_LIBINTL. Don't force USE_NLS, force only - BUILD_INCLUDED_LIBINTL. - Remove unused variable INTLDEPS. - Fix value of INTLLIBS to match documentation. - Avoid unwanted matches of po/Makefile.in with AC_OUTPUT argument. - (AM_GNU_GETTEXT): Accept 'use-libtool' as first argument. Rename - variable l to INTL_LIBTOOL_SUFFIX_PREFIX. - -2001-01-20 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Change computation of NEW_LINGUAS to - not include catalogs which are not present. Reported by Fredrik - Hallenberg. Also include catalogs of which a variant is requested. - -2001-01-20 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Add a third argument to AC_DEFINE. - * lcmessage.m4 (AM_LC_MESSAGES): Likewise. - -2001-01-15 Bruno Haible - - * iconv.m4 (AM_ICONV): Also check whether the iconv declaration - has const. - -2001-01-07 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Remove third argument. Don't call - AC_LINK_FILES. Now done through simple file copy in intl/Makefile.in. - (AM_GNU_GETTEXT): Remove GT_NO and GT_YES macros. - -2001-01-07 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Assume exists. - * setlocale.m4 (gt_SETLOCALE): Likewise. - -2001-01-06 Bruno Haible - - Remove catgets fallback code. - - It does not handle message clash prevention through domains and - dgettext(). - - It does not handle message catalog inheritance and the LANGUAGE - environment variable. - - It does not handle locale aliases. - - It does not handle automatic charset conversion. - - It does not handle plural form handling and ngettext(). - - It uses a slow string to integer conversion. - - It is sensitive against installation problems. - * gettext.m4 (AM_WITH_NLS): Don't look for catgets any more. Don't - define INSTOBJEXT. Don't create intl/po2msg.sed and intl/po2tbl.sed. - -2001-01-06 Bruno Haible - - * setlocale.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2001-01-06 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Look for GNU gettext in libc and libintl, - ignoring Solaris X/Open gettext. Rename cache variables. - -2000-12-30 Bruno Haible - - * ulonglong.m4: New file, from fileutils-4.0.32. - * inttypes_h.m4: Likewise. - * uintmax_t.m4: Likewise. - * Makefile.am (EXTRA_DIST): Add them. - -2000-09-14 Bruno Haible - - * gettext.m4 (AM_WITH_NLS): Make the tests for gettext in libc and - in libintl similar. If found in libintl, add "-lintl" to $LIBS during - subsequent AC_TRY_LINKs and later to INTLLIBS. - Reported by Gaël Roualland . - -2000-08-23 Bruno Haible - - * c-bs-a.m4: New file, from sh-utils-2.0j. - * Makefile.am (EXTRA_DIST): Add it. - -2000-07-29 Bruno Haible - - * Makefile.am (EXTRA_DIST): Add codeset.m4, iconv.m4. - -2000-07-28 Bruno Haible - - Drop support for old Linux specific .msg catalog format. - * gettext.m4 (AM_GNU_GETTEXT): Assume .cat is always X/Open format. - Renamed xopen-msg.sed to po2msg.sin. - -2000-07-28 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): Renamed po2tbl.sed.in to po2tbl.sin. - -2000-07-28 Bruno Haible - - * gettext.m4 (AM_GNU_GETTEXT): The sed scripts are in $srcdir/intl, - and po2msg.sed, po2tbl.sed must be created in the intl subdir. - -2000-06-16 Bruno Haible - - * codeset.m4: New file, taken from fileutils-4.0u, with prefix AM. - * iconv.m4: New file, taken from fileutils-4.0u, with prefix AM. - * gettext.m4 (AM_GNU_GETTEXT): Add check for headers , - . Add check for functions feof_unlocked, fgets_unlocked. - Invoke AM_ICONV and AM_LANGINFO_CODESET. Require AC_CANONICAL_HOST. - Bump to serial 7. - - * isc-posix.m4: Undefine the macro before calling AC_DEFUN, otherwise - with autoconf-2.13 we get lots of ***BUG in Autoconf--please report*** - errors. - -2000-05-06 Ulrich Drepper - - * gettext.m4: Add tests for tsearch, iconv, and mempcpy. - - * gettext.m4: Lots of bug fixes. - -1998-06-01 22:28 Ulrich Drepper - - * gettext.m4: Allow arguments for AM_GNU_GETTEXT to customize for - Cygnus trees. - -1998-05-01 08:47 Ulrich Drepper - - * gettext-0.10.35 released. - -1998-04-30 Ulrich Drepper - - * gettext.m4: Add AC_OUTPUT_COMMANDS in AM_GNU_GETTEXT to rewrite - the po/Makefile. - -1998-04-29 Ulrich Drepper - - * Makefile.am (EXTRA_DIST): No need to mention *.m4 files here. - - * gettext.m4: Fix test for gettext in libintl. - Patch by Guido Flohr . - -1998-04-28 Ulrich Drepper - - * gettext.m4: Don't test for values.h. - -1998-04-27 21:17 Ulrich Drepper - - * gettext.m4, lcmessage.m4, progtest.m4: Moved to here from toplevel. diff -Nru gettext-0.19.6/gnulib-local/m4/ChangeLog.1 gettext-0.19.7/gnulib-local/m4/ChangeLog.1 --- gettext-0.19.6/gnulib-local/m4/ChangeLog.1 2015-08-21 05:48:30.000000000 +0000 +++ gettext-0.19.7/gnulib-local/m4/ChangeLog.1 1970-01-01 00:00:00.000000000 +0000 @@ -1,720 +0,0 @@ -2006-07-29 Bruno Haible - - * alloca.m4 (gl_PREREQ_ALLOCA): Add a dummy statement. Avoids a sh - syntax error. - -2006-07-29 Bruno Haible - - * relocatable.m4: Add comments. - -2006-07-23 Bruno Haible - - * openmp.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2006-07-23 Bruno Haible - - * tls.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add it. - -2006-07-22 Bruno Haible - - * gl_list.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add it. - -2006-07-22 Bruno Haible - - * strtol.m4: Update from gnulib. - * strtoul.m4: Update from gnulib. - - * strerror_r.m4: Update from gnulib. - - * stdbool.m4: Update from gnulib. - - * minmax.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add it. - - * mbswidth.m4: Update from gnulib. - - * wcwidth.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add it. - - * getopt.m4: Update from gnulib. - - * fnmatch.m4: Update from gnulib. - - * error.m4: Update from gnulib. - * extensions.m4: Update from gnulib. - -2006-07-21 Bruno Haible - - * gettext-0.15 released. - -2006-07-21 Bruno Haible - - * stdarg.m4: Update from gnulib. - -2006-07-21 Bruno Haible - - * javacomp.m4 (gt_JAVACOMP): Convert target_version "null" to "1.1". - -2006-07-19 Bruno Haible - - * getline.m4 (AM_FUNC_GETLINE): When cross-compiling, assume that - getline works on glibc2 systems. Needed to avoid trouble in - relocatable.c. - Reported by Nils Magnus Larsgard . - -2006-06-28 Bruno Haible - - Assume on all Unix platforms. Assume closedir works. - * backupfile.m4 (gt_PREREQ_BACKUPFILE): Don't invoke AC_HEADER_DIRENT, - AC_FUNC_CLOSEDIR_VOID. Instead test for dirent.h. - -2006-06-27 Bruno Haible - - * Makefile.am (aclocal_DATA): Remove isc-posix.m4. - -2006-06-27 Bruno Haible - - Assume correct S_ISDIR macro. - * tmpdir.m4 (gt_TMPDIR): Remove AC_STAT_MACROS_BROKEN invocation. - -2006-06-27 Bruno Haible - - Assume working 'const'. - * fnmatch.m4 (_AC_LIBOBJ_FNMATCH): Remove AC_C_CONST invocation. - -2006-06-27 Bruno Haible - - * setlocale.m4 (gt_SETLOCALE): Assume exists. - -2006-04-14 Bruno Haible - - Assume autoconf >= 2.60. - * Makefile.am (docdir): Remove variable. - -2006-06-17 Bruno Haible - - * setenv.m4 (gl_PREREQ_SETENV, gl_PREREQ_UNSETENV): Remove test - whether errno is declared. Assume declares errno. - -2006-06-15 Eric Blake - - * ssize_t.m4 (gt_TYPE_SSIZE_T): Work in spite of -Werror. - -2006-06-04 Bruno Haible - - * Makefile.am (aclocal_DATA): Remove inttypes.m4, add inttypes-h.m4. - -2006-06-04 Bruno Haible - - * locale-fr.m4 (gt_LOCALE_FR): Require AM_LANGINFO_CODESET. Verify - that nl_langinfo(CODESET) is nonempty. Set LC_CTYPE to empty for the - test. - (gt_LOCALE_FR_UTF8): Likewise. - Needed for MacOS X 10.3.x, to make the lang-tcl test work. - -2006-05-30 Ralf Wildenhues - - * regex.m4 (gl_INCLUDED_REGEX): Fix M4 underquoting. - -2006-04-30 Bruno Haible - - * relocatable.m4 (AC_RELOCATABLE): Also test for availability of - , . _NSGetExecutablePath. - -2006-05-09 Bruno Haible - - * javaexec.m4 (gt_JAVAEXEC): On Cygwin, set CLASSPATH_SEPARATOR to a - semicolon. - * javacomp.m4 (gt_JAVACOMP): Likewise. Use CLASSPATH_SEPARATOR for - the conftestver execution. - -2006-04-30 Bruno Haible - - * stdarg.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2006-05-01 Bruno Haible - - * javacomp.m4 (gt_JAVACOMP): Accept a source-version and an optional - target-version argument. Verify that the compiler groks source of the - specified source-version, or add -source option as necessary. Verify - that the compiler produces bytecode in the specified target-version, - or add -target and -source options as necessary. Make the result of - the test available as variable CONF_JAVAC. Also log error output in - config.log. - -2006-04-23 Bruno Haible - - * unistd_h.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add it. - -2006-04-14 Bruno Haible - - Prepare for autoconf-2.60. - * regex.m4 (gl_INCLUDED_REGEX): Include , for exit() - declaration. - -2006-03-12 Bruno Haible - - * javaexec.m4 (gt_JAVAEXEC): Make the result of the test available as - variable CONF_JAVA, for subsequent autoconf tests. Also log error - output in config.log. - -2006-03-11 Bruno Haible - - * javacomp.m4 (gt_JAVACOMP): Treat gcj-4.x like gcj-3.x. - -2005-12-04 Bruno Haible - - * csharpexec.m4 (gt_CSHARPEXEC): Add support for 'clix' launcher - (untested). - -2005-12-04 Bruno Haible - - * csharpcomp.m4 (gt_CSHARPCOMP): Also set CSHARPCOMPFLAGS. - -2005-11-24 Bruno Haible - - Cygwin portability. - * relocatable.m4 (AC_RELOCATABLE): Require AC_EXEEXT. Arrange to set - RELOC_EXEEXT while invoking install-reloc. - -2005-09-20 Bruno Haible - - * bison-i18n.m4: New file, from bison-2.1. - * Makefile.am (EXTRA_DIST): Add it. - -2005-08-23 Bruno Haible - - * byteswap.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add byteswap.m4. - -2005-08-13 Bruno Haible - - * java.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2005-08-16 Bruno Haible - - * strcase.m4: Remove file. - * Makefile.am (EXTRA_DIST): Remove it. - -2005-07-24 Bruno Haible - - Tidy up exported symbols. - * Makefile.am (aclocal_DATA): Add visibility.m4. - -2005-07-16 Bruno Haible - - * Makefile.am (aclocal_DATA): Add lock.m4. - -2005-07-05 Bruno Haible - - * relocatable.m4 (AC_RELOCATABLE): On mingw, simply set - SET_RELOCATABLE to a trivial value. - -2005-07-05 Bruno Haible - - * mbrtowc.m4 (gl_FUNC_MBRTOWC): Upgrade to version from current - autoconf CVS. Needed for mingw. - -2005-05-01 Bruno Haible - - * csharpexec-test.exe: New file. - * csharpexec.m4 (gt_CSHARPEXEC): Test whether the C# engine can execute - it. - * Makefile.am (examplesbuildaux_DATA, EXTRA_DIST): Add - csharpexec-test.exe. - -2005-05-01 Bruno Haible - - * csharpcomp.m4 (gt_CSHARPCOMP): Check that cscc can actually compile - a trivial program. - Reported by Pierre . - -2006-06-21 Bruno Haible - - * gettext-0.14.6 released. - -2005-05-23 Bruno Haible - - * gettext-0.14.5 released. - -2005-04-11 Bruno Haible - - * gettext-0.14.4 released. - -2005-03-22 Bruno Haible - - * Makefile.am (examplesbuildauxdir): Renamed from examplesconfigdir. - (examplesbuildaux_DATA): Renamed from examplesconfig_DATA. - -2005-03-14 Bruno Haible - - * gettext-0.14.3 released. - -2005-03-01 Bruno Haible - - * exitfail.m4, getopt.m4, hard-locale.m4, memchr.m4, pathmax.m4: - * quote.m4, quotearg.m4, regex.m4, restrict.m4, strdup.m4, strerror.m4: - * xreadlink.m4: Update from gnulib. - -2005-02-24 Bruno Haible - - * gettext-0.14.2 released. - -2005-02-13 Bruno Haible - - * locale-fr.m4 (gt_LOCALE_FR): If no locale was found or if the OS is - Darwin7, use 'none' instead of 'fr_FR'. - (gt_LOCALE_FR_UTF8): New macro. - -2005-02-13 Bruno Haible - - * strtoul.m4: New file, from gnulib. - * strtol.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add strtol.m4, strtoul.m4. - -2005-01-28 Bruno Haible - - * stpncpy.m4 (gl_FUNC_STPNCPY): Undo the replacement here. Because of - AIX, the replacement has to be done only after is included, - therefore not in config.h. stpncpy.h does the replacement, and - stpncpy.c uses it. - -2005-01-19 Bruno Haible - - * alloca.m4, allocsa.m4, backupfile.m4, canonicalize.m4, csharpcomp.m4: - * csharpexec.m4, csharp.m4, eaccess.m4, eealloc.m4, error.m4: - * exitfail.m4, extensions.m4, fnmatch.m4, gcj.m4, getline.m4: - * getndelim2.m4, getopt.m4, hard-locale.m4, hostname.m4, javacomp.m4: - * javaexec.m4, libgrep.m4, locale-fr.m4, mbrtowc.m4, mbstate_t.m4: - * mbswidth.m4, memchr.m4, mkdtemp.m4, onceonly.m4, pathmax.m4: - * quotearg.m4, quote.m4, readlink.m4, relocatable.m4, restrict.m4: - * setenv.m4, setlocale.m4, sig_atomic_t.m4, siginfo.m4: - * signalblocking.m4, ssize_t.m4, stdbool.m4, stpncpy.m4, strcase.m4: - * strdup.m4, strerror.m4, strerror_r.m4, tmpdir.m4, unionwait.m4: - * unlocked-io.m4, xreadlink.m4: - Use an all-permissive copyright notice, recommended by RMS. - -2005-01-14 Bruno Haible - - * stpncpy.m4 (gl_FUNC_STPNCPY): Rename the replacement function to - gnu_stpncpy. Needed for AIX. - -2005-01-08 Bruno Haible - - * libgrep.m4: New file. - * hard-locale.m4: New file, from gnulib. - * memchr.m4: New file, from gnulib. - * regex.m4: New file, from gnulib. - * restrict.m4: New file, from gnulib. - * strdup.m4: New file, from gnulib. - -2005-01-06 Bruno Haible - - * strcase.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add it. - -2005-01-06 Bruno Haible - - * stpncpy.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add it. - -2005-01-06 Bruno Haible - - * error.m4: Upgrade from gnulib. - -2005-01-06 Bruno Haible - - * quote.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add quote.m4. - -2005-01-06 Bruno Haible - - * exitfail.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add exitfail.m4. - -2005-01-06 Bruno Haible - - * Makefile.am (EXTRA_DIST): Add getopt.m4. - * getopt.m4: New file, from gnulib. - -2005-01-06 Bruno Haible - - * fnmatch.m4: Upgrade from gnulib. - -2005-01-06 Bruno Haible - - * stdbool.m4: Upgrade to gnulib version. - -2004-11-02 Bruno Haible - - * setenv.m4 (gt_FUNC_SETENV): Define VOID_UNSETENV if unsetenv() - returns void. - -2004-10-04 Paul Eggert - - * unlocked-io.m4: Add copyright notice. - (gl_FUNC_GLIBC_UNLOCKED_IO): Define USE_UNLOCKED_IO. - -2004-06-01 Paul Eggert - - * quotearg.m4: Fix copyright date and/or serial number. - -2003-11-24 Bruno Haible - - * allocsa.m4 (gl_ALLOCSA): Require also gl_AC_TYPE_LONG_LONG and - gt_TYPE_LONGDOUBLE. - -2003-09-17 Paul Eggert - - * extensions.m4 (gl_USE_SYSTEM_EXTENSIONS): Call AC_BEFORE first, - to avoid spurious warnings like "AC_RUN_IFELSE was called before - gl_USE_SYSTEM_EXTENSIONS" from autoreconf. - -2003-09-12 Paul Eggert - - * extensions.m4 (gl_USE_SYSTEM_EXTENSIONS): Require AC_AIX - and AC_MINIX, too, so that their extensions are available. - -2003-09-10 Bruno Haible - - * xreadlink.m4 (gl_XREADLINK): Remove check. - -2003-09-10 Bruno Haible - - * setenv.m4 (gl_PREREQ_SETENV, gl_PREREQ_UNSETENV): Remove - and checks. - -2004-04-26 Bruno Haible - - * csharpcomp.m4 (gt_CSHARPCOMP): Avoid using !. - Reported by Alexandre Duret-Lutz. - -2004-04-19 Bruno Haible - - * error.m4: Change jm_ to gl_ in AC_DEFINE'd names. Update all uses. - -2004-04-19 Bruno Haible - - * mbrtowc.m4: Change jm_ to gl_ in cache variables as well. - -2004-04-18 Jim Meyering - - * mbswidth.m4: Change jm_ to gl_ in AC_DEFINE'd names. Update all uses. - * mkdtemp.m4: Likewise. - * unlocked-io.m4: Likewise. - * quotearg.m4: Likewise. - -2004-03-18 Paul Eggert - Bruno Haible - - * mbswidth.m4 (gl_MBSWIDTH): Also test whether declares - mbswidth. - -2004-03-08 Bruno Haible - - * csharpcomp.m4 (gt_CSHARPCOMP): Test whether csc is not the chicken - scheme's 'csc' compiler. - Reported by Colin Marquardt . - -2004-01-18 Bruno Haible - - * csharp.m4 (gt_CSHARP_CHOICE): Drop extra quoting of the # sign. - -2004-02-07 Bruno Haible - - * mbstate_t.m4: Update from gnulib. - * mbswidth.m4: Invoke AC_TYPE_MBSTATE_T instead of AC_MBSTATE_T. - * quotearg.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add quotearg.m4. - -2004-02-02 Bruno Haible - - * Makefile.am (aclocal_DATA): Add glibc2.m4. - -2004-01-29 Bruno Haible - - * gettext-0.14.1 released. - -2004-01-29 Bruno Haible - - * csharpcomp.m4 (gt_CSHARPCOMP): Fix typo. - -2004-01-28 Bruno Haible - - * gettext-0.14 released. - -2004-01-10 Bruno Haible - - * csharp.m4: New file. - * csharpcomp.m4 (gt_CSHARPCOMP): Require gt_CSHARP_CHOICE. Respect the - CSHARP_CHOICE given by the --enable-csharp option. - * csharpexec.m4 (gt_CSHARPEXEC): Require gt_CSHARP_CHOICE. Respect the - CSHARP_CHOICE given by the --enable-csharp option. - * Makefile.am (EXTRA_DIST): Add csharp.m4. - -2003-12-26 Bruno Haible - - Support for C#. - * csharpcomp.m4: New file. - * csharpexec.m4: New file. - * Makefile.am (examplesconfig_DATA): Add them. - (EXTRA_DIST): Likewise. - -2003-11-30 Bruno Haible - - * allocsa.m4: New file. - * eealloc.m4: New file. - * setenv.m4 (gl_PREREQ_SETENV): Require gl_ALLOCSA instead of - AC_FUNC_ALLOCA. - * Makefile.am (EXTRA_DIST): Add allocsa.m4, eealloc.m4. - -2003-12-17 Bruno Haible - - * gettext-0.13.1 released. - -2003-11-30 Bruno Haible - - * gettext-0.13 released. - -2003-11-23 Bruno Haible - - * ssize_t.m4: New file, moved here from ../../gettext-runtime/m4/. - * Makefile.am (aclocal_DATA): Remove ssize_t.m4. - (EXTRA_DIST): Add ssize_t.m4. - -2003-11-16 Bruno Haible - - * size_max.m4: Remove file, moved to ../../gettext-runtime/m4/. - * ssize_t.m4: Remove file, moved to ../../gettext-runtime/m4/. - * xsize.m4: Remove file, moved to ../../gettext-runtime/m4/. - * Makefile.am (aclocal_DATA): Add size_max.m4, ssize_t.m4, xsize.m4. - (EXTRA_DIST): Remove size_max.m4, ssize_t.m4, xsize.m4. - -2003-11-15 Bruno Haible - - * Makefile.am (docdir, examplesconfigdir, examplesconfig_DATA): New - variables. - -2003-11-09 Bruno Haible - - * javaexec.m4 (gt_JAVAEXEC): Accept two optional arguments, denoting - a test class to execute. - -2003-11-11 Bruno Haible - - * size_max.m4: New file, from gnulib. - * xsize,m4 (gl_XSIZE): Require gl_SIZE_MAX. - * Makefile.am (EXTRA_DIST): Add size_max.m4. - -2003-11-04 Bruno Haible - - * xsize.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2003-10-21 Bruno Haible - - * canonicalize.m4 (gl_PREREQ_CANONICALIZE): Also test for readlink(). - -2003-10-14 Bruno Haible - - * sig_atomic_t.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2003-10-04 Bruno Haible - - * flex.m4: Remove file. - * Makefile.am (EXTRA_DIST): Remove it. - -2003-09-04 Bruno Haible - - * locale-fr.m4 (gt_LOCALE_FR): Add support for Solaris 7. - -2003-08-26 Bruno Haible - - * fnmatch.m4 (_AC_LIBOBJ_FNMATCH): Remove AC_DEFINE of fnmatch here. - This avoids havoc on compilers for which '#define fnmatch rpl_fnmatch' - followed by '#define fnmatch fnmatch_posix' gives an error. - -2003-08-24 Bruno Haible - - * relocatable.m4 (AC_RELOCATABLE): Use $(host) instead of @host@, - since the substitution of @host@ may occur before the substitution of - @SET_RELOCATABLE@. - -2002-12-24 Bruno Haible - - * mbswidth.m4 (gl_MBSWIDTH): Renamed from jm_PREREQ_MBSWIDTH. Use - onceonly macros. - -2002-12-17 Bruno Haible - - * mbswidth.m4 (jm_PREREQ_MBSWIDTH): Remove checks for limits.h, - stdlib.h, string.h. - -2003-02-17 Bruno Haible - - * mkdtemp.m4 (gl_PREREQ_MKDTEMP): New macro. - (gt_FUNC_MKDTEMP): Invoke it. Invoke jm_AC_TYPE_UINTMAX_T instead of - just jm_AC_HEADER_INTTYPES_H and jm_AC_HEADER_STDINT_H. - -2003-08-23 Bruno Haible - - * getline.m4: Update from gnulib. - * getndelim2.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add getndelim2.m4. - -2003-08-23 Bruno Haible - - * fnmatch.m4: Replace with the version from gnulib. - -2002-12-24 Bruno Haible - - * setenv.m4 (gt_FUNC_SETENV): New macro. - (gt_CHECK_VAR_DECL): Fix quoting error that led to infinite loop in m4 - when invoked twice. - (gt_PREREQ_SETENV, gt_PREREQ_UNSETENV): New macros, replacing old - gt_FUNC_SETENV. - -2003-08-23 Bruno Haible - - * stdbool.m4: Replace with the version from gnulib, without - AC_HEADER_STDBOOL. - -2003-08-23 Bruno Haible - - * Makefile.am (EXTRA_DIST): Add extensions.m4. - -2003-08-08 Paul Eggert - - * extensions.m4: New file. - * unlocked-io.m4 (jm_FUNC_GLIBC_UNLOCKED_IO): - Require gl_USE_SYSTEM_EXTENSIONS rather than AC_GNU_SOURCE. - -2003-07-01 Paul Eggert - - * xreadlink.m4 (gl_XREADLINK): Don't check for sys/types.h, since - xreadlink.c now includes it unconditionally. - -2003-08-16 Paul Eggert - - * readlink.m4 (gl_PREREQ_READLINK): Renamed from gl_PREREQ_READLINE, - fixing a typo. - -2003-07-01 Bruno Haible - - * readlink.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add it. - -2003-07-01 Bruno Haible - - * ssize_t.m4 (gt_TYPE_SSIZE_T): Don't include . - should be sufficient. - Reported by Paul Eggert. - -2003-07-01 Bruno Haible - - * backupfile.m4 (gt_PREREQ_BACKUPFILE): Remove limits.h check. - -2003-05-28 Paul Eggert - - * pathmax.m4 (gl_PATHMAX): Don't check for limits.h. - * xreadlink.m4 (gl_XREADLINK): Likewise. - -2003-06-22 Bruno Haible - - Portability to mingw32. - * ssize_t.m4 (gt_TYPE_SSIZE_T): Test for unistd.h. - * xreadlink.m4 (gl_XREADLINK): Require gt_TYPE_SSIZE_T. - Reported by Jeff Bonggren . - -2003-06-19 Bruno Haible - - * Makefile.am (aclocal_DATA): Add intmax.m4, longdouble.m4, - longlong.m4, printf-posix.m4, signed.m4, wchar_t.m4, wint_t.m4. - -2003-06-19 Bruno Haible - - * locale-fr.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2003-05-22 Bruno Haible - - * gettext-0.12.1 released. - -2003-05-17 Bruno Haible - - * gettext-0.12 released. - -2003-05-09 Bruno Haible - - * strerror_r.m4: New file, from gnulib. - * unlocked-io.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add them. - -2003-04-29 Bruno Haible - - * Makefile.am (aclocal_DATA): Add nls.m4 and po.m4. - -2003-04-10 Bruno Haible - - * eaccess.m4: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2003-04-06 Bruno Haible - - * relocatable.m4 (AC_RELOCATABLE_NOP): New macro. - (AC_RELOCATABLE_LIBRARY): Use it. - -2003-04-05 Bruno Haible - - * canonicalize.m4 (gl_CANONICALIZE): Use AC_CHECK_FUNCS, so that - HAVE_CANONICALIZE_FILE_NAME gets defined. - * error.m4 (jm_PREREQ_ERROR): New macro. - (gt_FUNC_ERROR_AT_LINE): Invoke it. - -2003-04-05 Bruno Haible - - * relocatable.m4 (AC_RELOCATABLE_LIBRARY): Use the final value of - ${prefix}, not the current value. - -2003-03-18 Bruno Haible - - * onceonly.m4: Update from gnulib. - -2003-02-28 Bruno Haible - - Support for relocatable installation. - * canonicalize.m4: New file. - * relocatable.m4: New file. - * strerror.m4: New file. - * xreadlink.m4: New file. - * Makefile.am (EXTRA_DIST): Add them. - -2003-02-28 Bruno Haible - - * pathmax.m4: New file, from gnulib. - * Makefile.am (EXTRA_DIST): Add it. - -2003-02-22 Bruno Haible - - * flex.m4 (gt_PROG_LEX): Remove LEX_OUTPUT_ROOT setting, not needed - any more with automake-1.7.2. - -2003-02-19 Bruno Haible - - * stdbool.m4 (gt_STDBOOL_H): Also test for usability of 'bool' in - declarations. Needed for HP-UX 11 cc. - -2003-02-12 Bruno Haible - - * Makefile.am: Update for new directory structure. - (EXTRA_DIST): Add ChangeLog.0. - - -See ChangeLog.0 for earlier changes. diff -Nru gettext-0.19.6/gnulib-local/Makefile.am gettext-0.19.7/gnulib-local/Makefile.am --- gettext-0.19.6/gnulib-local/Makefile.am 2015-08-21 07:18:28.000000000 +0000 +++ gettext-0.19.7/gnulib-local/Makefile.am 2015-12-08 12:50:05.000000000 +0000 @@ -18,9 +18,8 @@ ## Process this file with automake to produce Makefile.in. # Generate this list with -# find . '(' -name CVS -o -name Makefile.am ')' -prune -o -type f '!' '(' -name '*.orig' -or -name '*~' ')' -printf '%P\n' | sort | tr '\012' @ | sed 's/@$/%/;s/@/ \\@/g' | tr @% '\012\012' +# find . '(' -name CVS -o -name Makefile.am ')' -prune -o -type f '!' '(' -name '*.orig' -or -name '*~' -or -name 'ChangeLog.*' ')' -printf '%P\n' | sort | tr '\012' @ | sed 's/@$/%/;s/@/ \\@/g' | tr @% '\012\012' EXTRA_DIST = \ -ChangeLog \ build-aux/moopp \ lib/addext.c \ lib/alloca.in.h \ @@ -29,8 +28,6 @@ lib/backupfile.h \ lib/basename.c \ lib/basename.h \ -lib/ChangeLog.0 \ -lib/ChangeLog.1 \ lib/closeout.c \ lib/closeout.h \ lib/error.h.diff \ @@ -250,8 +247,6 @@ lib/xstrdup.c \ m4/alloca.m4 \ m4/backupfile.m4 \ -m4/ChangeLog.0 \ -m4/ChangeLog.1 \ m4/curses.m4 \ m4/gcj.m4 \ m4/hard-locale.m4.diff \ diff -Nru gettext-0.19.6/gnulib-local/Makefile.in gettext-0.19.7/gnulib-local/Makefile.in --- gettext-0.19.6/gnulib-local/Makefile.in 2015-09-11 03:05:17.000000000 +0000 +++ gettext-0.19.7/gnulib-local/Makefile.in 2015-12-27 23:09:49.000000000 +0000 @@ -118,7 +118,7 @@ am__extra_recursive_targets = maintainer-update-po-recursive am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in \ - $(top_srcdir)/build-aux/mkinstalldirs ChangeLog + $(top_srcdir)/build-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -208,6 +208,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -219,9 +220,8 @@ top_srcdir = @top_srcdir@ # Generate this list with -# find . '(' -name CVS -o -name Makefile.am ')' -prune -o -type f '!' '(' -name '*.orig' -or -name '*~' ')' -printf '%P\n' | sort | tr '\012' @ | sed 's/@$/%/;s/@/ \\@/g' | tr @% '\012\012' +# find . '(' -name CVS -o -name Makefile.am ')' -prune -o -type f '!' '(' -name '*.orig' -or -name '*~' -or -name 'ChangeLog.*' ')' -printf '%P\n' | sort | tr '\012' @ | sed 's/@$/%/;s/@/ \\@/g' | tr @% '\012\012' EXTRA_DIST = \ -ChangeLog \ build-aux/moopp \ lib/addext.c \ lib/alloca.in.h \ @@ -230,8 +230,6 @@ lib/backupfile.h \ lib/basename.c \ lib/basename.h \ -lib/ChangeLog.0 \ -lib/ChangeLog.1 \ lib/closeout.c \ lib/closeout.h \ lib/error.h.diff \ @@ -451,8 +449,6 @@ lib/xstrdup.c \ m4/alloca.m4 \ m4/backupfile.m4 \ -m4/ChangeLog.0 \ -m4/ChangeLog.1 \ m4/curses.m4 \ m4/gcj.m4 \ m4/hard-locale.m4.diff \ diff -Nru gettext-0.19.6/gnulib-local/modules/libxml gettext-0.19.7/gnulib-local/modules/libxml --- gettext-0.19.6/gnulib-local/modules/libxml 2015-08-21 07:18:28.000000000 +0000 +++ gettext-0.19.7/gnulib-local/modules/libxml 2015-12-23 07:08:27.000000000 +0000 @@ -13,6 +13,8 @@ lib/libxml/SAX2.c lib/libxml/SAX2.in.h lib/libxml/SAX.in.h +lib/libxml/buf.c +lib/libxml/buf.h lib/libxml/c14n.c lib/libxml/c14n.in.h lib/libxml/catalog.c @@ -24,6 +26,7 @@ lib/libxml/dict.c lib/libxml/dict.in.h lib/libxml/elfgcchack.h +lib/libxml/enc.h lib/libxml/encoding.c lib/libxml/encoding.in.h lib/libxml/entities.c @@ -49,13 +52,16 @@ lib/libxml/pattern.in.h lib/libxml/relaxng.c lib/libxml/relaxng.in.h +lib/libxml/save.h lib/libxml/schemasInternals.in.h lib/libxml/schematron.c lib/libxml/schematron.in.h lib/libxml/threads.c lib/libxml/threads.in.h +lib/libxml/timsort.h lib/libxml/tree.c lib/libxml/tree.in.h +lib/libxml/trionan.c lib/libxml/uri.c lib/libxml/uri.in.h lib/libxml/valid.c @@ -104,6 +110,12 @@ snprintf vsnprintf no-c++ +isinf +isnan +signbit +pow +log10 +fabs configure.ac: gl_LIBXML @@ -121,11 +133,14 @@ libxml/HTMLtree.c \ libxml/SAX.c \ libxml/SAX2.c \ + libxml/buf.h \ + libxml/buf.c \ libxml/c14n.c \ libxml/catalog.c \ libxml/chvalid.c \ libxml/debugXML.c \ libxml/dict.c \ + libxml/enc.h \ libxml/encoding.c \ libxml/entities.c \ libxml/error.c \ @@ -139,9 +154,12 @@ libxml/parserInternals.c \ libxml/pattern.c \ libxml/relaxng.c \ + libxml/save.h \ libxml/schematron.c \ libxml/threads.c \ + libxml/timsort.h \ libxml/tree.c \ + libxml/trionan.c \ libxml/uri.c \ libxml/valid.c \ libxml/xinclude.c \ diff -Nru gettext-0.19.6/gnulib-local/modules/term-ostream-tests gettext-0.19.7/gnulib-local/modules/term-ostream-tests --- gettext-0.19.6/gnulib-local/modules/term-ostream-tests 2015-08-21 07:18:28.000000000 +0000 +++ gettext-0.19.7/gnulib-local/modules/term-ostream-tests 2015-12-23 07:09:11.000000000 +0000 @@ -5,6 +5,7 @@ tests/test-term-ostream-xterm-xf86-v32.out tests/test-term-ostream-xterm-basic.out tests/test-term-ostream-xterm-basic-italic.out +tests/test-term-ostream-xterm-freebsd101.out tests/test-term-ostream-xterm-8bit.out tests/test-term-ostream-xterm-linux-debian.out tests/test-term-ostream-xterm-linux-mandriva.out diff -Nru gettext-0.19.6/gnulib-local/tests/test-term-ostream-xterm gettext-0.19.7/gnulib-local/tests/test-term-ostream-xterm --- gettext-0.19.6/gnulib-local/tests/test-term-ostream-xterm 2015-08-21 07:18:28.000000000 +0000 +++ gettext-0.19.7/gnulib-local/tests/test-term-ostream-xterm 2015-12-23 07:09:53.000000000 +0000 @@ -23,6 +23,7 @@ || ${DIFF} ${srcdir}/test-term-ostream-xterm-xf86-v32.out out > /dev/null \ || ${DIFF} ${srcdir}/test-term-ostream-xterm-basic.out out > /dev/null \ || ${DIFF} ${srcdir}/test-term-ostream-xterm-basic-italic.out out > /dev/null \ +|| ${DIFF} ${srcdir}/test-term-ostream-xterm-freebsd101.out out > /dev/null \ || ${DIFF} ${srcdir}/test-term-ostream-xterm-8bit.out out > /dev/null \ || ${DIFF} ${srcdir}/test-term-ostream-xterm-linux-debian.out out > /dev/null \ || ${DIFF} ${srcdir}/test-term-ostream-xterm-linux-mandriva.out out > /dev/null \ diff -Nru gettext-0.19.6/HACKING gettext-0.19.7/HACKING --- gettext-0.19.6/HACKING 2013-01-09 04:01:27.000000000 +0000 +++ gettext-0.19.7/HACKING 2015-12-08 12:50:04.000000000 +0000 @@ -73,3 +73,24 @@ autogen.sh, then run "./autogen.sh"; then you can proceed with "./configure" as usual. +Submitting patches +================== + +Patches should be sent to bug-gettext@gnu.org, the bug/feature mailing +list. You can subscribe to the mailing list, or see the list +archives, by following links from +http://savannah.gnu.org/mail/?group=gettext . + +To email a patch you can use a shell command like 'git format-patch +-1' to create a file, and then attach the file to your email. + +GNU gettext development no longer stores descriptions of new changes +in ChangeLog files. Instead, a single ChangeLog file is generated +from the commit messages when a release is prepared. So changes you +commit should not touch any of the ChangeLog files in the repository, +but instead should contain the log entries in the commit message. + +For the style of a ChangeLog entry, see the "Change Logs" section of +the GNU coding standards: + + http://www.gnu.org/prep/standards/html_node/Change-Logs.html diff -Nru gettext-0.19.6/Makefile.am gettext-0.19.7/Makefile.am --- gettext-0.19.6/Makefile.am 2015-08-21 07:18:23.000000000 +0000 +++ gettext-0.19.7/Makefile.am 2015-12-08 12:50:04.000000000 +0000 @@ -21,8 +21,37 @@ SUBDIRS = gnulib-local gettext-runtime gettext-tools +changelog_etc = \ + gettext-runtime/ChangeLog.0 \ + gettext-runtime/doc/ChangeLog.0 \ + gettext-runtime/intl-csharp/ChangeLog.0 \ + gettext-runtime/intl-java/ChangeLog.0 \ + gettext-runtime/libasprintf/ChangeLog.0 \ + gettext-runtime/m4/ChangeLog.0 \ + gettext-runtime/man/ChangeLog.0 \ + gettext-runtime/src/ChangeLog.0 \ + gettext-runtime/tests/ChangeLog.0 \ + gettext-tools/ChangeLog.0 \ + gettext-tools/doc/ChangeLog.0 \ + gettext-tools/doc/ChangeLog.1 \ + gettext-tools/examples/ChangeLog.0 \ + gettext-tools/gnulib-tests/ChangeLog.0 \ + gettext-tools/libgettextpo/ChangeLog.0 \ + gettext-tools/libgrep/ChangeLog.0 \ + gettext-tools/m4/ChangeLog.0 \ + gettext-tools/man/ChangeLog.0 \ + gettext-tools/man/ChangeLog.1 \ + gettext-tools/misc/ChangeLog.0 \ + gettext-tools/projects/ChangeLog.0 \ + gettext-tools/src/ChangeLog.0 \ + gettext-tools/src/ChangeLog.1 \ + gettext-tools/styles/ChangeLog.0 \ + gettext-tools/tests/ChangeLog.0 \ + gettext-tools/tests/ChangeLog.1 \ + gnulib-local/ChangeLog.0 + EXTRA_DIST = \ - DEPENDENCIES PACKAGING HACKING ChangeLog.0 autogen.sh \ + $(changelog_etc) DEPENDENCIES PACKAGING HACKING ChangeLog.0 autogen.sh \ build-aux/ac-help.sed build-aux/moopp build-aux/git-version-gen \ m4/fixautomake.m4 m4/woe32-dll.m4 \ m4/libtool.m4 @@ -125,9 +154,32 @@ BUILT_SOURCES = $(top_srcdir)/.version $(top_srcdir)/.version: echo $(VERSION) > $@-t && mv $@-t $@ -dist-hook: +dist-hook: gen-ChangeLogs echo $(VERSION) > $(distdir)/.tarball-version +# Generate ChangeLog. + +gen_start_date = 2015-10-13 +.PHONY: gen-ChangeLogs +gen-ChangeLogs: + $(AM_V_GEN)if test -d .git; then \ + log_fix="$(srcdir)/build-aux/git-log-fix"; \ + test -e "$$log_fix" \ + && amend_git_log="--amend=$$log_fix" \ + || amend_git_log=; \ + for d in . gettext-runtime/intl gettext-runtime/po \ + gettext-tools/po; do \ + test "$$d" = "." \ + && cldir="$(distdir)" \ + || cldir="$(distdir)/$$d"; \ + $(top_srcdir)/build-aux/gitlog-to-changelog \ + $$amend_git_log --since=$(gen_start_date) -- "$$d" \ + > "$$cldir/cl-t" && \ + { rm -f "$$cldir/ChangeLog" && \ + mv "$$cldir/cl-t" "$$cldir/ChangeLog"; }; \ + done; \ + fi + # PO files update. maintainer-update-po-local: $(top_builddir)/config.status diff -Nru gettext-0.19.6/Makefile.in gettext-0.19.7/Makefile.in --- gettext-0.19.6/Makefile.in 2015-09-11 03:05:17.000000000 +0000 +++ gettext-0.19.7/Makefile.in 2015-12-27 23:09:49.000000000 +0000 @@ -164,11 +164,12 @@ $(top_srcdir)/build-aux/install-sh \ $(top_srcdir)/build-aux/missing \ $(top_srcdir)/build-aux/mkinstalldirs AUTHORS COPYING \ - ChangeLog INSTALL NEWS README THANKS build-aux/compile \ - build-aux/config.guess build-aux/config.rpath \ - build-aux/config.sub build-aux/depcomp build-aux/install-sh \ - build-aux/ltmain.sh build-aux/mdate-sh build-aux/missing \ - build-aux/mkinstalldirs build-aux/texinfo.tex build-aux/ylwrap + ChangeLog INSTALL NEWS README THANKS build-aux/ar-lib \ + build-aux/compile build-aux/config.guess \ + build-aux/config.rpath build-aux/config.sub build-aux/depcomp \ + build-aux/install-sh build-aux/ltmain.sh build-aux/mdate-sh \ + build-aux/missing build-aux/mkinstalldirs \ + build-aux/texinfo.tex build-aux/ylwrap DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -299,6 +300,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -311,6 +313,35 @@ AUTOMAKE_OPTIONS = 1.5 gnu no-dependencies ACLOCAL_AMFLAGS = -I m4 SUBDIRS = gnulib-local gettext-runtime gettext-tools +changelog_etc = \ + gettext-runtime/ChangeLog.0 \ + gettext-runtime/doc/ChangeLog.0 \ + gettext-runtime/intl-csharp/ChangeLog.0 \ + gettext-runtime/intl-java/ChangeLog.0 \ + gettext-runtime/libasprintf/ChangeLog.0 \ + gettext-runtime/m4/ChangeLog.0 \ + gettext-runtime/man/ChangeLog.0 \ + gettext-runtime/src/ChangeLog.0 \ + gettext-runtime/tests/ChangeLog.0 \ + gettext-tools/ChangeLog.0 \ + gettext-tools/doc/ChangeLog.0 \ + gettext-tools/doc/ChangeLog.1 \ + gettext-tools/examples/ChangeLog.0 \ + gettext-tools/gnulib-tests/ChangeLog.0 \ + gettext-tools/libgettextpo/ChangeLog.0 \ + gettext-tools/libgrep/ChangeLog.0 \ + gettext-tools/m4/ChangeLog.0 \ + gettext-tools/man/ChangeLog.0 \ + gettext-tools/man/ChangeLog.1 \ + gettext-tools/misc/ChangeLog.0 \ + gettext-tools/projects/ChangeLog.0 \ + gettext-tools/src/ChangeLog.0 \ + gettext-tools/src/ChangeLog.1 \ + gettext-tools/styles/ChangeLog.0 \ + gettext-tools/tests/ChangeLog.0 \ + gettext-tools/tests/ChangeLog.1 \ + gnulib-local/ChangeLog.0 + # DJGPP port. @@ -319,8 +350,8 @@ # Woe32 support. # Versioning based on Git release tags. -EXTRA_DIST = DEPENDENCIES PACKAGING HACKING ChangeLog.0 autogen.sh \ - build-aux/ac-help.sed build-aux/moopp \ +EXTRA_DIST = $(changelog_etc) DEPENDENCIES PACKAGING HACKING \ + ChangeLog.0 autogen.sh build-aux/ac-help.sed build-aux/moopp \ build-aux/git-version-gen m4/fixautomake.m4 m4/woe32-dll.m4 \ m4/libtool.m4 djgpp/COPYING.DJ djgpp/Makefile.maint \ djgpp/README.DJ djgpp/README.in djgpp/README djgpp/config.bat \ @@ -332,6 +363,9 @@ windows/windres-options windows/gettext.rc \ $(top_srcdir)/.version BUILT_SOURCES = $(top_srcdir)/.version + +# Generate ChangeLog. +gen_start_date = 2015-10-13 all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-recursive @@ -874,8 +908,27 @@ test "`sed 1,15d gnulib-local/lib/alloca.in.h | md5sum`" = "`sed 1,15d gettext-runtime/libasprintf/alloca.in.h | md5sum`" $(top_srcdir)/.version: echo $(VERSION) > $@-t && mv $@-t $@ -dist-hook: +dist-hook: gen-ChangeLogs echo $(VERSION) > $(distdir)/.tarball-version +.PHONY: gen-ChangeLogs +gen-ChangeLogs: + $(AM_V_GEN)if test -d .git; then \ + log_fix="$(srcdir)/build-aux/git-log-fix"; \ + test -e "$$log_fix" \ + && amend_git_log="--amend=$$log_fix" \ + || amend_git_log=; \ + for d in . gettext-runtime/intl gettext-runtime/po \ + gettext-tools/po; do \ + test "$$d" = "." \ + && cldir="$(distdir)" \ + || cldir="$(distdir)/$$d"; \ + $(top_srcdir)/build-aux/gitlog-to-changelog \ + $$amend_git_log --since=$(gen_start_date) -- "$$d" \ + > "$$cldir/cl-t" && \ + { rm -f "$$cldir/ChangeLog" && \ + mv "$$cldir/cl-t" "$$cldir/ChangeLog"; }; \ + done; \ + fi # PO files update. diff -Nru gettext-0.19.6/NEWS gettext-0.19.7/NEWS --- gettext-0.19.6/NEWS 2015-09-02 09:41:46.000000000 +0000 +++ gettext-0.19.7/NEWS 2015-12-27 22:58:08.000000000 +0000 @@ -1,3 +1,18 @@ +Version 0.19.7 - December 2015 + +* Programming languages support: + - XML: + xgettext can now load custom string extraction rules supplied by + consumer projects. The rules are written in XML, utilizing the + Internationalization Tag Set (ITS) standard. All the existing + XML-based language scanners (Glade, GSettings, and AppData) are + rewritten using ITS. In addition, msgfmt now has --xml option to + merge translations back to the original XML document. + +* Portability: + - Improve OS/2 kLIBC support (still not complete) + - Remove dependency on expat + Version 0.19.6 - September 2015 * Programming languages support: diff -Nru gettext-0.19.6/.tarball-version gettext-0.19.7/.tarball-version --- gettext-0.19.6/.tarball-version 2015-09-11 03:39:02.000000000 +0000 +++ gettext-0.19.7/.tarball-version 2015-12-28 00:06:36.000000000 +0000 @@ -1 +1 @@ -0.19.6 +0.19.7 diff -Nru gettext-0.19.6/.version gettext-0.19.7/.version --- gettext-0.19.6/.version 2015-09-11 03:06:02.000000000 +0000 +++ gettext-0.19.7/.version 2015-12-27 23:21:08.000000000 +0000 @@ -1 +1 @@ -0.19.6 +0.19.7