Hello community,

here is the log from the commit of package libHX for openSUSE:Factory checked 
in at 2014-02-25 07:33:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libHX (Old)
 and      /work/SRC/openSUSE:Factory/.libHX.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libHX"

Changes:
--------
--- /work/SRC/openSUSE:Factory/libHX/libHX.changes      2014-02-18 
14:44:55.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.libHX.new/libHX.changes 2014-02-25 
07:33:18.000000000 +0100
@@ -1,0 +2,6 @@
+Fri Feb 21 19:13:11 UTC 2014 - [email protected]
+
+- Update to new upstream release 3.19
+* string: add the HXQUOTE_SQLSQUOTE quoting variant
+
+-------------------------------------------------------------------

Old:
----
  libHX-3.18.tar.xz
  libHX-3.18.tar.xz.asc

New:
----
  libHX-3.19.tar.xz
  libHX-3.19.tar.xz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libHX.spec ++++++
--- /var/tmp/diff_new_pack.3exXEH/_old  2014-02-25 07:33:19.000000000 +0100
+++ /var/tmp/diff_new_pack.3exXEH/_new  2014-02-25 07:33:19.000000000 +0100
@@ -21,7 +21,7 @@
 Summary:        Useful collection of routines for C and C++ programming
 License:        LGPL-2.1 or LGPL-3.0
 Group:          Development/Libraries/C and C++
-Version:        3.18
+Version:        3.19
 Release:        0
 Url:            http://libhx.sf.net/
 
@@ -43,18 +43,6 @@
 linked lists, string formatting and autoresizing, option and config
 file parsing, type checking casts and more.
 
-libHX aids in quickly writing up C and C++ data processing programs,
-by consolidating tasks that often happen to be open-coded, such as
-(simple) config file reading, option parsing, directory traversal,
-and others, into a library. The focus is on reducing the amount of
-time (and secondarily, the amount of code) a developer has to spend
-for otherwise implementing such.
-
-
-Authors:
---------
-       Jan Engelhardt <jengelh [at] medozas de>
-
 %package -n %lname
 Summary:        Useful collection of routines for C and C++ programming
 Group:          System/Libraries
@@ -72,11 +60,6 @@
 time (and secondarily, the amount of code) a developer has to spend
 for otherwise implementing such.
 
-
-Authors:
---------
-       Jan Engelhardt <jengelh [at] medozas de>
-
 %package devel
 Summary:        Useful collection of routines for C and C++ programming
 Group:          Development/Libraries/C and C++
@@ -88,18 +71,6 @@
 linked lists, string formatting and autoresizing, option and config
 file parsing, type checking casts and more.
 
-libHX aids in quickly writing up C and C++ data processing programs,
-by consolidating tasks that often happen to be open-coded, such as
-(simple) config file reading, option parsing, directory traversal,
-and others, into a library. The focus is on reducing the amount of
-time (and secondarily, the amount of code) a developer has to spend
-for otherwise implementing such.
-
-
-Authors:
---------
-       Jan Engelhardt <jengelh [at] medozas de>
-
 %prep
 %{?gpg_verify: %gpg_verify %{S:2}}
 %if 0%{?__xz:1}
@@ -110,23 +81,19 @@
 %endif
 
 %build
-%define _configure ../configure
-mkdir obj;
-pushd obj/
 %configure --includedir="%_includedir/pkg/%name" --docdir="%_docdir/%name"
 make %{?_smp_mflags}
-popd
 
 %install
 b="%buildroot";
-make -C obj DESTDIR="$b" install
+make DESTDIR="$b" install
 mkdir -p "$b/%_docdir/%name"
 install -pm0644 doc/* "$b/%_docdir/%name"
 rm -f "$b/%_docdir/%name"/Makefile*
 find "$b/%_libdir" -type f -name "*.la" -delete;
 
 %check
-make -C obj check %{?_smp_mflags}
+make check %{?_smp_mflags}
 
 %post   -n %lname -p /sbin/ldconfig
 %postun -n %lname -p /sbin/ldconfig

++++++ libHX-3.18.tar.xz -> libHX-3.19.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/Makefile.in new/libHX-3.19/Makefile.in
--- old/libHX-3.18/Makefile.in  2014-01-03 10:23:31.000000000 +0100
+++ new/libHX-3.19/Makefile.in  2014-02-21 19:39:43.000000000 +0100
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -408,8 +408,8 @@
 $(am__aclocal_m4_deps):
 
 config.h: stamp-h1
-       @if test ! -f $@; then rm -f stamp-h1; else :; fi
-       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
+       @test -f $@ || rm -f stamp-h1
+       @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
 
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
        @rm -f stamp-h1
@@ -640,10 +640,16 @@
        $(am__post_remove_distdir)
 
 dist-tarZ: distdir
+       @echo WARNING: "Support for shar distribution archives is" \
+                      "deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
        $(am__post_remove_distdir)
 
 dist-shar: distdir
+       @echo WARNING: "Support for distribution archives compressed with" \
+                      "legacy program 'compress' is deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
        $(am__post_remove_distdir)
 
@@ -685,9 +691,10 @@
          && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
          && am__cwd=`pwd` \
          && $(am__cd) $(distdir)/_build \
-         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+         && ../configure \
            $(AM_DISTCHECK_CONFIGURE_FLAGS) \
            $(DISTCHECK_CONFIGURE_FLAGS) \
+           --srcdir=.. --prefix="$$dc_install_base" \
          && $(MAKE) $(AM_MAKEFLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) dvi \
          && $(MAKE) $(AM_MAKEFLAGS) check \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/aclocal.m4 new/libHX-3.19/aclocal.m4
--- old/libHX-3.18/aclocal.m4   2014-01-03 10:23:20.000000000 +0100
+++ new/libHX-3.19/aclocal.m4   2014-02-21 19:39:42.000000000 +0100
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.13.4 -*- Autoconf -*-
+# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 
@@ -32,10 +32,10 @@
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.13'
+[am__api_version='1.14'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.13.4], [],
+m4_if([$1], [1.14.1], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -51,7 +51,7 @@
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.13.4])dnl
+[AM_AUTOMAKE_VERSION([1.14.1])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@@ -76,7 +76,8 @@
 : ${AR=ar}
 
 AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface],
-  [am_cv_ar_interface=ar
+  [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])
@@ -93,7 +94,7 @@
       fi
       rm -f conftest.lib libconftest.a
      ])
-   ])
+   AC_LANG_POP([C])])
 
 case $am_cv_ar_interface in
 ar)
@@ -477,6 +478,12 @@
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 # AM_INIT_AUTOMAKE([OPTIONS])
 # -----------------------------------------------
@@ -585,6 +592,49 @@
 AC_CONFIG_COMMANDS_PRE(dnl
 [m4_provide_if([_AM_COMPILER_EXEEXT],
   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell [email protected] about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi
+
 AM_SILENT_RULES([yes])
 ])
 
@@ -594,7 +644,6 @@
 m4_define([_AC_COMPILER_EXEEXT],
 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
 
-
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
 # that is generated.  The stamp files are numbered to have different names.
@@ -706,38 +755,6 @@
 rm -f confinc confmf
 ])
 
-# Copyright (C) 1999-2013 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_CC_C_O
-# --------------
-# Like AC_PROG_CC_C_O, but changed for automake.
-AC_DEFUN([AM_PROG_CC_C_O],
-[AC_REQUIRE([AC_PROG_CC_C_O])dnl
-AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # 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__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-dnl Make sure AC_PROG_CC is never called again, or it will override our
-dnl setting of CC.
-m4_define([AC_PROG_CC],
-          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
-])
-
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
 # Copyright (C) 1997-2013 Free Software Foundation, Inc.
@@ -808,6 +825,53 @@
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
+# Copyright (C) 1999-2013 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_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # 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__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/assorted/Makefile.in 
new/libHX-3.19/assorted/Makefile.in
--- old/libHX-3.18/assorted/Makefile.in 2014-01-03 10:23:31.000000000 +0100
+++ new/libHX-3.19/assorted/Makefile.in 2014-02-21 19:39:43.000000000 +0100
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/build-aux/config.guess 
new/libHX-3.19/build-aux/config.guess
--- old/libHX-3.18/build-aux/config.guess       2014-01-03 10:23:30.000000000 
+0100
+++ new/libHX-3.19/build-aux/config.guess       2014-02-21 19:39:43.000000000 
+0100
@@ -2,7 +2,7 @@
 # Attempt to guess a canonical system name.
 #   Copyright 1992-2013 Free Software Foundation, Inc.
 
-timestamp='2013-06-10'
+timestamp='2013-11-29'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -1270,16 +1270,26 @@
        if test "$UNAME_PROCESSOR" = unknown ; then
            UNAME_PROCESSOR=powerpc
        fi
-       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-           if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               case $UNAME_PROCESSOR in
-                   i386) UNAME_PROCESSOR=x86_64 ;;
-                   powerpc) UNAME_PROCESSOR=powerpc64 ;;
-               esac
+       if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+           if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+               if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') 
| \
+                   (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+                   grep IS_64BIT_ARCH >/dev/null
+               then
+                   case $UNAME_PROCESSOR in
+                       i386) UNAME_PROCESSOR=x86_64 ;;
+                       powerpc) UNAME_PROCESSOR=powerpc64 ;;
+                   esac
+               fi
            fi
+       elif test "$UNAME_PROCESSOR" = i386 ; then
+           # Avoid executing cc on OS X 10.9, as it ships with a stub
+           # that puts up a graphical alert prompting to install
+           # developer tools.  Any system running Mac OS X 10.7 or
+           # later (Darwin 11 and later) is required to have a 64-bit
+           # processor. This is not true of the ARM version of Darwin
+           # that Apple uses in portable devices.
+           UNAME_PROCESSOR=x86_64
        fi
        echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
        exit ;;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/build-aux/config.sub 
new/libHX-3.19/build-aux/config.sub
--- old/libHX-3.18/build-aux/config.sub 2014-01-03 10:23:30.000000000 +0100
+++ new/libHX-3.19/build-aux/config.sub 2014-02-21 19:39:43.000000000 +0100
@@ -2,7 +2,7 @@
 # Configuration validation subroutine script.
 #   Copyright 1992-2013 Free Software Foundation, Inc.
 
-timestamp='2013-04-24'
+timestamp='2013-10-01'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -257,7 +257,7 @@
        | avr | avr32 \
        | be32 | be64 \
        | bfin \
-       | c4x | clipper \
+       | c4x | c8051 | clipper \
        | d10v | d30v | dlx | dsp16xx \
        | epiphany \
        | fido | fr30 | frv \
@@ -265,6 +265,7 @@
        | hexagon \
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
+       | k1om \
        | le32 | le64 \
        | lm32 \
        | m32c | m32r | m32rle | m68000 | m68k | m88k \
@@ -324,7 +325,7 @@
        c6x)
                basic_machine=tic6x-unknown
                ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
                basic_machine=$basic_machine-unknown
                os=-none
                ;;
@@ -372,7 +373,7 @@
        | be32-* | be64-* \
        | bfin-* | bs2000-* \
        | c[123]* | c30-* | [cjt]90-* | c4x-* \
-       | clipper-* | craynv-* | cydra-* \
+       | c8051-* | clipper-* | craynv-* | cydra-* \
        | d10v-* | d30v-* | dlx-* \
        | elxsi-* \
        | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
@@ -381,6 +382,7 @@
        | hexagon-* \
        | i*86-* | i860-* | i960-* | ia64-* \
        | ip2k-* | iq2000-* \
+       | k1om-* \
        | le32-* | le64-* \
        | lm32-* \
        | m32c-* | m32r-* | m32rle-* \
@@ -794,7 +796,7 @@
                os=-mingw64
                ;;
        mingw32)
-               basic_machine=i386-pc
+               basic_machine=i686-pc
                os=-mingw32
                ;;
        mingw32ce)
@@ -830,7 +832,7 @@
                basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
                ;;
        msys)
-               basic_machine=i386-pc
+               basic_machine=i686-pc
                os=-msys
                ;;
        mvs)
@@ -1546,6 +1548,9 @@
        c4x-* | tic4x-*)
                os=-coff
                ;;
+       c8051-*)
+               os=-elf
+               ;;
        hexagon-*)
                os=-elf
                ;;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/build-aux/missing 
new/libHX-3.19/build-aux/missing
--- old/libHX-3.18/build-aux/missing    2014-01-03 10:23:30.000000000 +0100
+++ new/libHX-3.19/build-aux/missing    2014-02-21 19:39:43.000000000 +0100
@@ -1,7 +1,7 @@
 #! /bin/sh
 # Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2012-06-26.16; # UTC
+scriptversion=2013-10-28.13; # UTC
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 # Originally written by Fran,cois Pinard <[email protected]>, 1996.
@@ -160,7 +160,7 @@
       ;;
    autom4te*)
       echo "You might have modified some maintainer files that require"
-      echo "the 'automa4te' program to be rebuilt."
+      echo "the 'autom4te' program to be rebuilt."
       program_details 'autom4te'
       ;;
     bison*|yacc*)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/build-aux/test-driver 
new/libHX-3.19/build-aux/test-driver
--- old/libHX-3.18/build-aux/test-driver        2014-01-03 10:23:32.000000000 
+0100
+++ new/libHX-3.19/build-aux/test-driver        2014-02-21 19:39:43.000000000 
+0100
@@ -1,7 +1,7 @@
 #! /bin/sh
 # test-driver - basic testsuite driver script.
 
-scriptversion=2012-06-27.10; # UTC
+scriptversion=2013-07-13.22; # UTC
 
 # Copyright (C) 2011-2013 Free Software Foundation, Inc.
 #
@@ -44,13 +44,12 @@
 Usage:
   test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
               [--expect-failure={yes|no}] [--color-tests={yes|no}]
-              [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
+              [--enable-hard-errors={yes|no}] [--]
+              TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
 The '--test-name', '--log-file' and '--trs-file' options are mandatory.
 END
 }
 
-# TODO: better error handling in option parsing (in particular, ensure
-# TODO: $log_file, $trs_file and $test_name are defined).
 test_name= # Used for reporting.
 log_file=  # Where to save the output of the test script.
 trs_file=  # Where to save the metadata of the test run.
@@ -69,10 +68,23 @@
   --enable-hard-errors) enable_hard_errors=$2; shift;;
   --) shift; break;;
   -*) usage_error "invalid option: '$1'";;
+   *) break;;
   esac
   shift
 done
 
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file"  = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file"  = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+  usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+  usage_error "missing argument"
+fi
+
 if test $color_tests = yes; then
   # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
   red='' # Red.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/config.h.in new/libHX-3.19/config.h.in
--- old/libHX-3.18/config.h.in  2014-01-03 10:23:27.000000000 +0100
+++ new/libHX-3.19/config.h.in  2014-02-21 19:39:43.000000000 +0100
@@ -91,9 +91,6 @@
    */
 #undef LT_OBJDIR
 
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
 /* Name of package */
 #undef PACKAGE
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/configure new/libHX-3.19/configure
--- old/libHX-3.18/configure    2014-01-03 10:23:24.000000000 +0100
+++ new/libHX-3.19/configure    2014-02-21 19:39:42.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libHX 3.18.
+# Generated by GNU Autoconf 2.69 for libHX 3.19.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@
 # Identity of this package.
 PACKAGE_NAME='libHX'
 PACKAGE_TARNAME='libhx'
-PACKAGE_VERSION='3.18'
-PACKAGE_STRING='libHX 3.18'
+PACKAGE_VERSION='3.19'
+PACKAGE_STRING='libHX 3.19'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1337,7 +1337,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 libHX 3.18 to adapt to many kinds of systems.
+\`configure' configures libHX 3.19 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1407,7 +1407,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libHX 3.18:";;
+     short | recursive ) echo "Configuration of libHX 3.19:";;
    esac
   cat <<\_ACEOF
 
@@ -1517,7 +1517,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libHX configure 3.18
+libHX configure 3.19
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2243,7 +2243,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libHX $as_me 3.18, which was
+It was created by libHX $as_me 3.19, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2716,7 +2716,7 @@
 
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
-am__api_version='1.13'
+am__api_version='1.14'
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is 
sane" >&5
 $as_echo_n "checking whether build environment is sane... " >&6; }
@@ -3109,7 +3109,7 @@
 
 # Define the identity of the package.
  PACKAGE='libhx'
- VERSION='3.18'
+ VERSION='3.19'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3244,6 +3244,49 @@
 
 
 
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell [email protected] about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
+
 # Check whether --enable-silent-rules was given.
 if test "${enable_silent_rules+set}" = set; then :
   enableval=$enable_silent_rules;
@@ -4072,6 +4115,65 @@
 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
+
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c 
and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o 
conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # 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__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+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
+
 DEPDIR="${am__leading_dot}deps"
 
 ac_config_commands="$ac_config_commands depfiles"
@@ -4264,131 +4366,6 @@
 fi
 
 
-if test "x$CC" != xcc; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc 
understand -c and -o together" >&5
-$as_echo_n "checking whether $CC and cc understand -c and -o together... " 
>&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c 
and -o together" >&5
-$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
-fi
-set dummy $CC; ac_cc=`$as_echo "$2" |
-                     sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-# Make sure it works both with $CC and with simple cc.
-# We do the test twice because some compilers refuse to overwrite an
-# existing .o file with -o, though they will create one.
-ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-rm -f conftest2.*
-if { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } &&
-   test -f conftest2.$ac_objext && { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; };
-then
-  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
-  if test "x$CC" != xcc; then
-    # Test first that cc exists at all.
-    if { ac_try='cc -c conftest.$ac_ext >&5'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-      ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-      rm -f conftest2.*
-      if { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } &&
-        test -f conftest2.$ac_objext && { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; };
-      then
-       # cc works too.
-       :
-      else
-       # cc exists but doesn't like -o.
-       eval ac_cv_prog_cc_${ac_cc}_c_o=no
-      fi
-    fi
-  fi
-else
-  eval ac_cv_prog_cc_${ac_cc}_c_o=no
-fi
-rm -f core conftest*
-
-fi
-if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
-
-fi
-
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # 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__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-
 
 ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
@@ -4922,7 +4899,13 @@
 if ${am_cv_ar_interface+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  am_cv_ar_interface=ar
+  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;
@@ -4953,6 +4936,11 @@
 
 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
@@ -17106,7 +17094,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libHX $as_me 3.18, which was
+This file was extended by libHX $as_me 3.19, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17172,7 +17160,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libHX config.status 3.18
+libHX config.status 3.19
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/configure.ac new/libHX-3.19/configure.ac
--- old/libHX-3.18/configure.ac 2014-01-03 10:22:47.000000000 +0100
+++ new/libHX-3.19/configure.ac 2014-02-21 19:39:10.000000000 +0100
@@ -1,4 +1,4 @@
-AC_INIT([libHX], [3.18])
+AC_INIT([libHX], [3.19])
 AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_MACRO_DIR([m4])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/doc/Makefile.in 
new/libHX-3.19/doc/Makefile.in
--- old/libHX-3.18/doc/Makefile.in      2014-01-03 10:23:31.000000000 +0100
+++ new/libHX-3.19/doc/Makefile.in      2014-02-21 19:39:43.000000000 +0100
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/doc/api.txt new/libHX-3.19/doc/api.txt
--- old/libHX-3.18/doc/api.txt  2014-01-03 10:22:47.000000000 +0100
+++ new/libHX-3.19/doc/api.txt  2014-02-21 19:39:10.000000000 +0100
@@ -15,6 +15,8 @@
 
 RMV    MinVer  FirstA  Name
 ----------------------------------------------------------------------
+3.19   3.19    3.19    HXQUOTE_SQLSQUOTE
+3.18   3.18    3.18    HX_stpltrim
 3.17   3.17    3.17    HX_LONGLONG_FMT
 3.17   3.17    3.17    HX_SIZET_FMT
 3.16   3.16    3.16    container_of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/doc/changelog.txt 
new/libHX-3.19/doc/changelog.txt
--- old/libHX-3.18/doc/changelog.txt    2014-01-03 10:22:47.000000000 +0100
+++ new/libHX-3.19/doc/changelog.txt    2014-02-21 19:39:10.000000000 +0100
@@ -4,6 +4,14 @@
 ====
 
 
+v3.19 (2014-02-21)
+==================
+Enhancements:
+- string: add the HXQUOTE_SQLSQUOTE quoting variant
+Internal changes:
+- format: rework function calling code to support extending with functions
+
+
 v3.18 (2014-03-01)
 ==================
 Enhancements:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/doc/libHX_Documentation.lyx 
new/libHX-3.19/doc/libHX_Documentation.lyx
--- old/libHX-3.18/doc/libHX_Documentation.lyx  2014-01-03 10:22:47.000000000 
+0100
+++ new/libHX-3.19/doc/libHX_Documentation.lyx  2014-02-21 19:39:10.000000000 
+0100
@@ -74,7 +74,7 @@
 \begin_body
 
 \begin_layout Title
-libHX 3.18
+libHX 3.19
 \begin_inset Newline newline
 \end_inset
 
@@ -11950,6 +11950,29 @@
  Escape the string so that it becomes a valid part for an URI.
 \end_layout
 
+\begin_layout Description
+
+\family typewriter
+HXQUOTE_SQLSQUOTE
+\family default
+
+\begin_inset Index idx
+status open
+
+\begin_layout Plain Layout
+
+\family typewriter
+HXQUOTE_SQLSQUOTE
+\end_layout
+
+\end_inset
+
+ Escape all single quotes in the string by double single-quotes, as required
+ for using it in a single-quoted SQL string.
+ No surrounding quotes will be generated to facilitate concatenating of
+ HX_strquote results.
+\end_layout
+
 \begin_layout Standard
 Specifying an unrecognized type will result in 
 \family typewriter
Files old/libHX-3.18/doc/libHX_Documentation.pdf and 
new/libHX-3.19/doc/libHX_Documentation.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/include/Makefile.in 
new/libHX-3.19/include/Makefile.in
--- old/libHX-3.18/include/Makefile.in  2014-01-03 10:23:31.000000000 +0100
+++ new/libHX-3.19/include/Makefile.in  2014-02-21 19:39:43.000000000 +0100
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/include/libHX/string.h 
new/libHX-3.19/include/libHX/string.h
--- old/libHX-3.18/include/libHX/string.h       2014-01-03 10:22:47.000000000 
+0100
+++ new/libHX-3.19/include/libHX/string.h       2014-02-21 19:39:10.000000000 
+0100
@@ -26,6 +26,7 @@
        HXQUOTE_LDAPRDN,
        HXQUOTE_BASE64,
        HXQUOTE_URIENC,
+       HXQUOTE_SQLSQUOTE,
        _HXQUOTE_MAX,
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/src/Makefile.in 
new/libHX-3.19/src/Makefile.in
--- old/libHX-3.18/src/Makefile.in      2014-01-03 10:23:32.000000000 +0100
+++ new/libHX-3.19/src/Makefile.in      2014-02-21 19:39:43.000000000 +0100
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/src/format.c new/libHX-3.19/src/format.c
--- old/libHX-3.18/src/format.c 2014-01-03 10:22:47.000000000 +0100
+++ new/libHX-3.19/src/format.c 2014-02-21 19:39:10.000000000 +0100
@@ -23,20 +23,39 @@
 #define S_OPEN  "("
 #define S_CLOSE ")"
 
+/**
+ * %HXFMT_ARGSEP_NONE: function takes only a single argument
+ * %HXFMT_ARGSEP_SPACE: split arguments at whitespace
+ *                     e.g. %(exec /bin/ls foo)
+ * %HXFMT_ARGSEP_COMMA:        split arguments at comma
+ *                     e.g. %(if %(this),%(then),%(else))
+ */
+enum {
+       HXFMT_ARGSEP_NONE  = 0,
+       HXFMT_ARGSEP_SPACE = 1 << 0,
+       HXFMT_ARGSEP_COMMA = 1 << 1,
+};
+
 struct fmt_entry {
        const void *ptr;
        unsigned int type;
 };
 
-static __inline__ struct HXformat_map *fmt_export(const struct HXmap *t)
-{
-       return const_cast1(void *, static_cast(const void *, t));
-}
+struct func_entry {
+       hxmc_t *(*proc)(int, const hxmc_t *const *, const struct HXformat_map 
*);
+       char delim[4];
+};
 
-static __inline__ struct HXmap *fmt_import(const struct HXformat_map *t)
-{
-       return const_cast1(void *, static_cast(const void *, t));
-}
+struct HXformat2_fd {
+       const char *name;
+       hxmc_t *(*proc)(int, const hxmc_t *const *, const struct HXformat_map 
*);
+       unsigned int flags;
+};
+
+struct HXformat_map {
+       struct HXmap *vars;
+       struct HXmap *funcs;
+};
 
 static void fmt_entry_free(void *e)
 {
@@ -51,26 +70,39 @@
        .d_free = fmt_entry_free,
 };
 
-EXPORT_SYMBOL struct HXformat_map *HXformat_init(void)
+static void *func_entry_clone(const void *data, size_t size)
 {
-       struct HXmap *table;
+       const struct HXformat2_fd *in = data;
+       struct func_entry *out;
+       unsigned int i = 0;
 
-       table = HXmap_init5(HXMAPT_DEFAULT, HXMAP_SCKEY, &fmt_entry_ops,
-               0, sizeof(struct fmt_entry));
-       if (table == NULL)
+       out = malloc(sizeof(*out));
+       if (out == NULL)
                return NULL;
-       return fmt_export(table);
+       out->proc = in->proc;
+       memset(out->delim, '\0', sizeof(out->delim));
+       out->delim[i++] = C_CLOSE;
+       if (in->flags & HXFMT_ARGSEP_COMMA)
+               out->delim[i++] = ',';
+       if (in->flags & HXFMT_ARGSEP_SPACE)
+               out->delim[i++] = ' ';
+       return out;
 }
 
-EXPORT_SYMBOL void HXformat_free(struct HXformat_map *ftable)
+static const struct HXmap_ops func_entry_ops = {
+       .d_clone = func_entry_clone,
+};
+
+EXPORT_SYMBOL void HXformat_free(struct HXformat_map *blk)
 {
-       HXmap_free(fmt_import(ftable));
+       HXmap_free(blk->vars);
+       HXmap_free(blk->funcs);
+       free(blk);
 }
 
-EXPORT_SYMBOL int HXformat_add(struct HXformat_map *ftable, const char *key,
+EXPORT_SYMBOL int HXformat_add(struct HXformat_map *blk, const char *key,
     const void *ptr, unsigned int ptr_type)
 {
-       struct HXmap *table = fmt_import(ftable);
        struct fmt_entry *entry;
        int ret;
 
@@ -92,7 +124,7 @@
                entry->ptr = ptr;
        }
 
-       ret = HXmap_add(table, key, entry);
+       ret = HXmap_add(blk->vars, key, entry);
        if (ret <= 0) {
                free(entry);
                return ret;
@@ -106,27 +138,12 @@
        char *ret = strchr(s, c);
        if (ret != NULL)
                return ret;
-       return const_cast1(char *, &s[strlen(s)]);
+       return const_cast1(char *, s) + strlen(s);
 }
 
 /*
- *     HXformat2
- *
- *     Compared to the first-generation, this variant provides make(1)-style
- *     function calls.
- */
-
-struct HXformat2_fd {
-       const char *name;
-       hxmc_t *(*proc)(int, const char *const *);
-       const char *delim;
-       bool (*check)(const struct HXmap *);
-};
-
-/*
  * Used as an unique object for "expanded to nothing", to distinguish it from
- * %NULL indicating some error. This is cheaper than allocating an empty hxmc
- * everytime.
+ * %NULL indicating some error.
  */
 static char HXformat2_nexp;
 
@@ -139,7 +156,8 @@
 /*
  * Echo input back, with markers. This is strictly for testing only.
  */
-static hxmc_t *HXformat2_echo(int argc, const hxmc_t *const *argv)
+static hxmc_t *HXformat2_echo(int argc, const hxmc_t *const *argv,
+                              const struct HXformat_map *blk)
 {
        hxmc_t *ret = HXmc_meminit(NULL, 0);
        int i;
@@ -154,7 +172,8 @@
        return ret;
 }
 
-static hxmc_t *HXformat2_env(int argc, const hxmc_t *const *argv)
+static hxmc_t *HXformat2_env(int argc, const hxmc_t *const *argv,
+                             const struct HXformat_map *blk)
 {
        const char *s;
 
@@ -164,7 +183,8 @@
        return (s == NULL) ? &HXformat2_nexp : HXmc_strinit(s);
 }
 
-static hxmc_t *HXformat2_if(int argc, const hxmc_t *const *argv)
+static hxmc_t *HXformat2_if(int argc, const hxmc_t *const *argv,
+                            const struct HXformat_map *blk)
 {
        if (argc < 2) {
                HXformat2_insuf(__func__, argc);
@@ -179,7 +199,8 @@
               HXmc_strinit(argv[2]) : &HXformat2_nexp;
 }
 
-static hxmc_t *HXformat2_lower(int argc, const hxmc_t *const *argv)
+static hxmc_t *HXformat2_lower(int argc, const hxmc_t *const *argv,
+                               const struct HXformat_map *blk)
 {
        hxmc_t *ret;
 
@@ -190,12 +211,8 @@
        return ret;
 }
 
-static bool HXformat2_execchk(const struct HXmap *table)
-{
-       return HXmap_find(table, "/libhx/exec") != NULL;
-}
-
-static hxmc_t *HXformat2_exec1(const hxmc_t *const *argv)
+static hxmc_t *HXformat2_exec1(const hxmc_t *const *argv,
+                              const struct HXformat_map *blk)
 {
        struct HXproc proc = {
                .p_flags = HXPROC_NULL_STDIN | HXPROC_STDOUT | HXPROC_VERBOSE,
@@ -203,6 +220,9 @@
        hxmc_t *slurp, *complete = NULL;
        ssize_t ret;
 
+       if (HXmap_find(blk->vars, "/libhx/exec") == NULL)
+               return &HXformat2_nexp;
+
        slurp = HXmc_meminit(NULL, BUFSIZ);
        if (slurp == NULL)
                return NULL;
@@ -226,23 +246,26 @@
        return &HXformat2_nexp;
 }
 
-static hxmc_t *HXformat2_exec(int argc, const hxmc_t *const *argv)
+static hxmc_t *HXformat2_exec(int argc, const hxmc_t *const *argv,
+                              const struct HXformat_map *blk)
 {
        if (argc == 0)
                return &HXformat2_nexp;
-       return HXformat2_exec1(argv);
+       return HXformat2_exec1(argv, blk);
 }
 
-static hxmc_t *HXformat2_shell(int argc, const hxmc_t *const *argv)
+static hxmc_t *HXformat2_shell(int argc, const hxmc_t *const *argv,
+                               const struct HXformat_map *blk)
 {
        const char *cmd[] = {"/bin/sh", "-c", NULL, NULL};
        if (argc == 0)
                return &HXformat2_nexp;
        cmd[2] = argv[0];
-       return HXformat2_exec1(cmd);
+       return HXformat2_exec1(cmd, blk);
 }
 
-static hxmc_t *HXformat2_snl(int argc, const hxmc_t *const *argv)
+static hxmc_t *HXformat2_snl(int argc, const hxmc_t *const *argv,
+                             const struct HXformat_map *blk)
 {
        hxmc_t *s;
        char *p;
@@ -258,7 +281,8 @@
        return s;
 }
 
-static hxmc_t *HXformat2_substr(int argc, const hxmc_t *const *argv)
+static hxmc_t *HXformat2_substr(int argc, const hxmc_t *const *argv,
+                                const struct HXformat_map *blk)
 {
        ssize_t offset, length, z;
        hxmc_t *ret;
@@ -313,7 +337,8 @@
        return ret;
 }
 
-static hxmc_t *HXformat2_upper(int argc, const hxmc_t *const *argv)
+static hxmc_t *HXformat2_upper(int argc, const hxmc_t *const *argv,
+                               const struct HXformat_map *blk)
 {
        hxmc_t *ret;
 
@@ -325,25 +350,17 @@
 }
 
 static const struct HXformat2_fd HXformat2_fmap[] = {
-       /* Need to be alphabetically sorted */
-       {"echo",        HXformat2_echo,         S_CLOSE " ,"},
-       {"env",         HXformat2_env,          S_CLOSE " ,"},
-       {"exec",        HXformat2_exec,         S_CLOSE " ", HXformat2_execchk},
-       {"if",          HXformat2_if,           S_CLOSE ","}, /* no sp: ok */
-       {"lower",       HXformat2_lower,        S_CLOSE},
-       {"shell",       HXformat2_shell,        S_CLOSE, HXformat2_execchk},
-       {"snl",         HXformat2_snl,          S_CLOSE},
-       {"substr",      HXformat2_substr,       S_CLOSE ","},
-       {"upper",       HXformat2_upper,        S_CLOSE},
+       {"echo",   HXformat2_echo,   HXFMT_ARGSEP_COMMA | HXFMT_ARGSEP_SPACE},
+       {"env",    HXformat2_env,    HXFMT_ARGSEP_COMMA | HXFMT_ARGSEP_SPACE},
+       {"exec",   HXformat2_exec,   HXFMT_ARGSEP_SPACE},
+       {"if",     HXformat2_if,     HXFMT_ARGSEP_COMMA},
+       {"lower",  HXformat2_lower,  HXFMT_ARGSEP_NONE},
+       {"shell",  HXformat2_shell,  HXFMT_ARGSEP_NONE},
+       {"snl",    HXformat2_snl,    HXFMT_ARGSEP_NONE},
+       {"substr", HXformat2_substr, HXFMT_ARGSEP_COMMA},
+       {"upper",  HXformat2_upper,  HXFMT_ARGSEP_NONE},
 };
 
-static int HXformat2_fmap_compare(const void *pa, const void *pb)
-{
-       const char *a_name = pa;
-       const struct HXformat2_fd *b = pb;
-       return strcmp(a_name, b->name);
-}
-
 /**
  * HXformat2_xcall - expand function call (gather args)
  * @name:      name of function
@@ -354,9 +371,9 @@
  * function.
  */
 static hxmc_t *HXformat2_xcall(const char *name, const char **pptr,
-    const struct HXmap *table)
+    const struct HXformat_map *blk)
 {
-       const struct HXformat2_fd *entry;
+       const struct func_entry *entry;
        hxmc_t *ret, *ret2, **argv;
        struct HXdeque *dq;
        const char *s, *delim;
@@ -366,8 +383,7 @@
        if (dq == NULL)
                return NULL;
 
-       entry = bsearch(name, HXformat2_fmap, ARRAY_SIZE(HXformat2_fmap),
-               sizeof(*HXformat2_fmap), HXformat2_fmap_compare);
+       entry = HXmap_get(blk->funcs, name);
        delim = (entry != NULL) ? entry->delim : S_CLOSE;
        if (**pptr == C_CLOSE)
                ++*pptr;
@@ -380,7 +396,7 @@
                        goto out_h_errno;
                if (strstr(ret, "%" S_OPEN) != NULL) {
                        ret2 = NULL;
-                       err = HXformat_aprintf(fmt_export(table), &ret2, ret);
+                       err = HXformat_aprintf(blk, &ret2, ret);
                        if (err < 0 || ret2 == NULL)
                                goto out_h_neg;
                        HXmc_free(ret);
@@ -402,10 +418,11 @@
                goto out_h_errno;
 
        ret = &HXformat2_nexp;
-       /* Unknown functions are silently expanded to nothing, like make. */
-       if (entry != NULL && (entry->check == NULL || entry->check(table)))
+       /* Unknown functions are silently expanded to nothing, like in make. */
+       if (entry != NULL)
                ret = entry->proc(dq->items,
-                     const_cast2(const hxmc_t *const *, argv));
+                     const_cast2(const hxmc_t *const *, argv),
+                     blk);
        /*
         * Pointers in argv are shared with those in dq.
         * Free only the outer shell of one.
@@ -502,7 +519,8 @@
  *
  * @*pptr has to point to the first character after the "%(" opener.
  */
-static hxmc_t *HXformat2_xany(const char **pptr, const struct HXmap *table)
+static hxmc_t *
+HXformat2_xany(const char **pptr, const struct HXformat_map *blk)
 {
        const char *s = *pptr;
        hxmc_t *name, *ret;
@@ -539,13 +557,13 @@
                int eret;
 
                *pptr = ++s;
-               eret  = HXformat_aprintf(fmt_export(table), &new_name, name);
+               eret  = HXformat_aprintf(blk, &new_name, name);
                if (eret <= 0) {
                        ret = NULL;
                } else if (*new_name == '\0') {
                        ret = &HXformat2_nexp;
                } else {
-                       entry = HXmap_get(table, new_name);
+                       entry = HXmap_get(blk->vars, new_name);
                        ret   = (entry == NULL) ? &HXformat2_nexp :
                                HXformat2_xvar(entry);
                }
@@ -559,17 +577,53 @@
                 * Note that %() is not expanded in function names. This
                 * follows make(1) behavior.
                 */
-               ret = HXformat2_xcall(name, pptr, table);
+               ret = HXformat2_xcall(name, pptr, blk);
        }
 
        HXmc_free(name);
        return ret;
 }
 
-EXPORT_SYMBOL int HXformat_aprintf(const struct HXformat_map *ftable,
+EXPORT_SYMBOL struct HXformat_map *HXformat_init(void)
+{
+       struct HXformat_map *blk;
+       unsigned int i;
+       int saved_errno, ret;
+
+       blk = calloc(1, sizeof(*blk));
+       if (blk == NULL)
+               return NULL;
+
+       blk->vars = HXmap_init5(HXMAPT_DEFAULT, HXMAP_SCKEY, &fmt_entry_ops,
+                   0, sizeof(struct fmt_entry));
+       if (blk->vars == NULL)
+               goto out;
+       blk->funcs = HXmap_init5(HXMAPT_DEFAULT, HXMAP_SCKEY, &func_entry_ops,
+                    0, sizeof(struct func_entry));
+       if (blk->funcs == NULL)
+               goto out;
+       for (i = 0; i < ARRAY_SIZE(HXformat2_fmap); ++i) {
+               ret = HXmap_add(blk->funcs, HXformat2_fmap[i].name,
+                     &HXformat2_fmap[i]);
+               if (ret < 0)
+                       goto out;
+       }
+       return blk;
+
+ out:
+       saved_errno = errno;
+       if (blk->vars != NULL)
+               HXmap_free(blk->vars);
+       if (blk->funcs != NULL)
+               HXmap_free(blk->funcs);
+       free(blk);
+       errno = saved_errno;
+       return NULL;
+}
+
+EXPORT_SYMBOL int HXformat_aprintf(const struct HXformat_map *blk,
     hxmc_t **resultp, const char *fmt)
 {
-       const struct HXmap *table = fmt_import(ftable);
        hxmc_t *ex, *ts, *out;
        const char *current;
        int ret = 0;
@@ -593,7 +647,7 @@
                }
 
                current += 2; /* skip % and opening parenthesis */
-               ex = HXformat2_xany(&current, table);
+               ex = HXformat2_xany(&current, blk);
                if (ex == NULL)
                        goto out;
                if (ex != &HXformat2_nexp) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/src/mc.c new/libHX-3.19/src/mc.c
--- old/libHX-3.18/src/mc.c     2014-01-03 10:22:47.000000000 +0100
+++ new/libHX-3.19/src/mc.c     2014-02-21 19:39:10.000000000 +0100
@@ -148,7 +148,7 @@
        if (ptr == NULL)
                return *vp = ctx->data;
 
-       memcpy(&ctx->data[ctx->length], ptr, len);
+       memcpy(ctx->data + ctx->length, ptr, len);
        ctx->length = nl;
        ctx->data[nl] = '\0';
        return *vp = ctx->data;
@@ -196,8 +196,8 @@
        if (ptr == NULL)
                return *vp = ctx->data;
 
-       memmove(&ctx->data[pos + len], &ctx->data[pos], ctx->length - pos);
-       memcpy(&ctx->data[pos], ptr, len);
+       memmove(ctx->data + pos + len, ctx->data + pos, ctx->length - pos);
+       memcpy(ctx->data + pos, ptr, len);
        ctx->length += len;
        ctx->data[ctx->length] = '\0';
        return *vp = ctx->data;
@@ -211,7 +211,7 @@
        if (pos + len > ctx->length)
                len = ctx->length - pos;
 
-       memmove(&ctx->data[pos], &ctx->data[pos + len],
+       memmove(ctx->data + pos, ctx->data + pos + len,
                ctx->length - pos - len);
        ctx->length -= len;
        ctx->data[ctx->length] = '\0';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/src/opt.c new/libHX-3.19/src/opt.c
--- old/libHX-3.18/src/opt.c    2014-01-03 10:22:47.000000000 +0100
+++ new/libHX-3.19/src/opt.c    2014-02-21 19:39:10.000000000 +0100
@@ -941,7 +941,9 @@
                return NULL;
 
        if ((fp = fopen(file, "r")) == NULL) {
-               free(map);
+               int saved_errno = errno;
+               HXmap_free(map);
+               errno = saved_errno;
                return NULL;
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/src/string.c new/libHX-3.19/src/string.c
--- old/libHX-3.18/src/string.c 2014-01-03 10:22:47.000000000 +0100
+++ new/libHX-3.19/src/string.c 2014-02-21 19:39:10.000000000 +0100
@@ -496,6 +496,7 @@
        [HXQUOTE_LDAPFLT] = {HXQUOTE_REJECT, "\n*()\\"},
        [HXQUOTE_LDAPRDN] = {HXQUOTE_REJECT, "\n \"#+,;<=>\\"},
        [HXQUOTE_URIENC]  = {HXQUOTE_ACCEPT, 
"-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~"},
+       [HXQUOTE_SQLSQUOTE] = {HXQUOTE_REJECT, "'"},
 };
 
 /**
@@ -565,6 +566,30 @@
        return ret;
 }
 
+static char *
+HX_quote_sqlbackslash(char *dest, const char *src, const char *trm)
+{
+       char *ret = dest;
+       size_t len;
+
+       while (*src != '\0') {
+               len = strcspn(src, trm);
+               if (len > 0) {
+                       memcpy(dest, src, len);
+                       dest += len;
+                       src  += len;
+                       if (*src == '\0')
+                               break;
+               }
+               *dest++ = *trm;
+               *dest++ = *trm;
+               ++src;
+       }
+
+       *dest = '\0';
+       return ret;
+}
+
 /**
  * Encode @src into BASE-64 according to RFC 4648 and write result to @dest,
  * which must be of appropriate size, plus one for a trailing NUL.
@@ -716,6 +741,7 @@
        switch (type) {
        case HXQUOTE_SQUOTE:
        case HXQUOTE_DQUOTE:
+       case HXQUOTE_SQLSQUOTE:
                return HX_qsize_bsr(s, HX_quote_rules[type].chars, 1);
        case HXQUOTE_HTML:
                return HX_qsize_html(s);
@@ -784,6 +810,8 @@
                return HX_quote_base64(*free_me, src);
        case HXQUOTE_URIENC:
                return HX_quote_urlenc(*free_me, src);
+       case HXQUOTE_SQLSQUOTE:
+               return HX_quote_sqlbackslash(*free_me, src, rule->chars);
        }
        return NULL;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.18/src/tc-strquote.c 
new/libHX-3.19/src/tc-strquote.c
--- old/libHX-3.18/src/tc-strquote.c    2014-01-03 10:22:47.000000000 +0100
+++ new/libHX-3.19/src/tc-strquote.c    2014-02-21 19:39:10.000000000 +0100
@@ -14,6 +14,7 @@
 static const char input1[]   = "\"Good\" ol' \\'escaped\\' strings";
 static const char output1a[] = "\"Good\" ol\\' \\\\\\'escaped\\\\\\' strings";
 static const char output1b[] = "\\\"Good\\\" ol' \\\\'escaped\\\\' strings";
+static const char output1c[] = "\"Good\" ol'' \\''escaped\\'' strings";
 static const char input2[]   = "<p style=\"height: 1;\">Foo &amp; \"bar\"</p>";
 static const char output2[]  =
        "&lt;p style=&quot;height: 1;&quot;&gt;Foo &amp;amp; 
&quot;bar&quot;&lt;/p&gt;";
@@ -55,6 +56,7 @@
                return EXIT_FAILURE;
        tst(input1, HXQUOTE_SQUOTE, output1a);
        tst(input1, HXQUOTE_DQUOTE, output1b);
+       tst(input1, HXQUOTE_SQLSQUOTE, output1c);
        tst(input2, HXQUOTE_HTML, output2);
        tst(input3, HXQUOTE_LDAPFLT, output3a);
        tst(input3, HXQUOTE_LDAPRDN, output3b);

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to