Hello community,

here is the log from the commit of package libHX for openSUSE:Factory checked 
in at 2020-05-16 22:26:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libHX (Old)
 and      /work/SRC/openSUSE:Factory/.libHX.new.2738 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libHX"

Sat May 16 22:26:12 2020 rev:60 rq:805794 version:3.25

Changes:
--------
--- /work/SRC/openSUSE:Factory/libHX/libHX.changes      2018-10-25 
08:09:04.932316190 +0200
+++ /work/SRC/openSUSE:Factory/.libHX.new.2738/libHX.changes    2020-05-16 
22:26:23.229279628 +0200
@@ -1,0 +2,9 @@
+Thu May 14 11:10:45 UTC 2020 - Jan Engelhardt <jeng...@inai.de>
+
+- Update to release 3.25
+  * fix out-of-bounds access when calling HX_strlcpy(x,y,0)
+  * HX_split4 renamed to HX_split_inplace
+  * HX_split5 renamed to HX_split_fixed
+  * remove excess header inclusion
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ libHX.spec ++++++
--- /var/tmp/diff_new_pack.7INyWX/_old  2020-05-16 22:26:24.417282066 +0200
+++ /var/tmp/diff_new_pack.7INyWX/_new  2020-05-16 22:26:24.421282074 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package libHX
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,19 +17,18 @@
 
 
 Name:           libHX
-%define lname   libHX28
+%define lname   libHX32
+Version:        3.25
+Release:        0
 Summary:        Collection of routines for C and C++ programming
 License:        LGPL-2.1-or-later
 Group:          Development/Libraries/C and C++
-Version:        3.24
-Release:        0
-Url:            http://libhx.sf.net/
+URL:            https://inai.de/projects/libhx/
 
-Source:         http://downloads.sf.net/libhx/libHX-%version.tar.xz
-Source2:        http://downloads.sf.net/libhx/libHX-%version.tar.asc
+Source:         https://inai.de/files/libhx/libHX-%version.tar.xz
+Source2:        https://inai.de/files/libhx/libHX-%version.tar.asc
 Source3:        baselibs.conf
 Source4:        %name.keyring
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  gcc-c++
 BuildRequires:  pkg-config
 BuildRequires:  xz
@@ -64,7 +63,7 @@
 This subpackage contains the header files.
 
 %prep
-%setup -q
+%autosetup -p1
 
 %build
 mkdir obj
@@ -89,11 +88,9 @@
 %postun -n %lname -p /sbin/ldconfig
 
 %files -n %lname
-%defattr(-,root,root)
-%_libdir/libHX*.so.28*
+%_libdir/libHX*.so.32*
 
 %files devel
-%defattr(-,root,root)
 %_docdir/%name/
 %_includedir/%name/
 %_libdir/libHX*.so

++++++ baselibs.conf ++++++
--- /var/tmp/diff_new_pack.7INyWX/_old  2020-05-16 22:26:24.461282156 +0200
+++ /var/tmp/diff_new_pack.7INyWX/_new  2020-05-16 22:26:24.465282164 +0200
@@ -1,4 +1,4 @@
-libHX28
+libHX32
 libHX-devel
        requires -libHX-<targettype>
-       requires "libHX28-<targettype> = <version>"
+       requires "libHX32-<targettype> = <version>"

++++++ libHX-3.24.tar.xz -> libHX-3.25.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/aclocal.m4 new/libHX-3.25/aclocal.m4
--- old/libHX-3.24/aclocal.m4   2018-10-17 21:17:17.442546454 +0200
+++ new/libHX-3.25/aclocal.m4   2020-05-14 11:48:36.967712020 +0200
@@ -591,7 +591,6 @@
 AC_CONFIG_COMMANDS_PRE(dnl
 [m4_provide_if([_AM_COMPILER_EXEEXT],
   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-AM_SILENT_RULES([yes])
 
 # 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
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/configure new/libHX-3.25/configure
--- old/libHX-3.24/configure    2018-10-17 21:17:18.238548254 +0200
+++ new/libHX-3.25/configure    2020-05-14 11:48:37.391713060 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libHX 3.24.
+# Generated by GNU Autoconf 2.69 for libHX 3.25.
 #
 #
 # 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.24'
-PACKAGE_STRING='libHX 3.24'
+PACKAGE_VERSION='3.25'
+PACKAGE_STRING='libHX 3.25'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1342,7 +1342,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.24 to adapt to many kinds of systems.
+\`configure' configures libHX 3.25 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1412,7 +1412,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libHX 3.24:";;
+     short | recursive ) echo "Configuration of libHX 3.25:";;
    esac
   cat <<\_ACEOF
 
@@ -1527,7 +1527,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libHX configure 3.24
+libHX configure 3.25
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2253,7 +2253,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.24, which was
+It was created by libHX $as_me 3.25, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3119,7 +3119,7 @@
 
 # Define the identity of the package.
  PACKAGE='libhx'
- VERSION='3.24'
+ VERSION='3.25'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3254,45 +3254,6 @@
 
 
 
-# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
-fi
-
-case $enable_silent_rules in # (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=0;;
-esac
-am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports 
nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if $as_echo 'TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-       @$(TRUE)
-.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 
$am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
-    AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AM_BACKSLASH='\'
-
 
 # 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
@@ -17720,7 +17681,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.24, which was
+This file was extended by libHX $as_me 3.25, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17786,7 +17747,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.24
+libHX config.status 3.25
 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.24/configure.ac new/libHX-3.25/configure.ac
--- old/libHX-3.24/configure.ac 2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/configure.ac 2020-05-14 11:48:30.000000000 +0200
@@ -1,4 +1,4 @@
-AC_INIT([libHX], [3.24])
+AC_INIT([libHX], [3.25])
 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.24/doc/api.txt new/libHX-3.25/doc/api.txt
--- old/libHX-3.24/doc/api.txt  2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/doc/api.txt  2020-05-14 11:48:30.000000000 +0200
@@ -15,6 +15,8 @@
 
 RMV    MinVer  FirstA  Name
 ----------------------------------------------------------------------
+3.25   3.25    3.25    HX_split_fixed
+3.25   3.25    3.25    HX_split_inplace
 3.22   3.22    3.22    HXQUOTE_SQLBQUOTE
 3.21   3.21    3.21    xml_getnsprop
 3.19   3.19    3.19    HXQUOTE_SQLSQUOTE
@@ -24,7 +26,6 @@
 3.16   3.16    3.16    container_of
 3.16   3.16    3.16    wxCDF
 3.16   3.16    3.16    wxDSPAN
-3.15   3.15    3.15    FIELD_SIZEOF
 3.15   3.15    3.15    HXQUOTE_URIENC
 3.15   3.15    3.15    HX_strchr2
 3.13   3.13    3.13    DEMOTE_TO_PTR
@@ -116,8 +117,6 @@
 3.0    3.0     3.0     HXMAPT_RBTREE
 3.0    3.0     3.0     HXMAP_DTRAV
 3.0    3.0     3.0     HXMAP_NOREPLACE
-3.0    3.0     3.0     HX_diff_timespec
-3.0    3.0     3.0     HX_diff_timeval
 3.0    3.0     3.0     HXhash_djb2
 3.0    3.0     3.0     HXhash_jlookup3
 3.0    3.0     3.0     HXhash_jlookup3s
@@ -145,7 +144,6 @@
 2.6    2.6     2.6     wxfv8
 2.6    2.6     2.6     wxtu8
 2.6    2.6     2.6     xml_strcasecmp
-2.3    2.0     2.0     offsetof
 2.3    1.25    1.25    HXmc_length
 2.2    2.2     2.2     HXPROC_A0
 2.2    2.2     2.2     HXPROC_EXECV
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/doc/changelog.txt 
new/libHX-3.25/doc/changelog.txt
--- old/libHX-3.24/doc/changelog.txt    2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/doc/changelog.txt    2020-05-14 11:48:30.000000000 +0200
@@ -1,4 +1,15 @@
 
+v3.25 (2020-05-14)
+==================
+Fixes:
+* string: fix out-of-bounds access when calling HX_strlcpy(x,y,0)
+Changes:
+* string: HX_split4 renamed to HX_split_inplace
+* string: HX_split5 renamed to HX_split_fixed
+* defs.h: removed partially implementation of FIELD_SIZEOF
+* defs.h: removed custom offsetof definition; you will need to include
+  <stddef.h> or <cstddef> now.
+
 
 v3.24 (2018-10-17)
 ==================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/doc/generate new/libHX-3.25/doc/generate
--- old/libHX-3.24/doc/generate 2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/doc/generate 2020-05-14 11:48:30.000000000 +0200
@@ -3,4 +3,17 @@
 if [ -z "$srcdir" ]; then
        srcdir=".";
 fi;
-exec lyx -e pdf2 "$srcdir/libHX_Documentation.lyx";
+rm -f libHX_Documentation.pdf
+lyx -e pdf2 "$srcdir/libHX_Documentation.lyx" || :
+# lyx-2.3.2 does not work with texlive-babel-2017.135.3
+# """
+# Package babel Error: You haven't specified a language option.
+# ...ry to proceed from here, type x to quit.)
+#
+# You need to specify a language, either as a global option
+# or as an optional argument to the \usepackage command;
+# You shouldn't try to proceed form here, type x to quit.
+# """
+# babel you so stupid for breaking backward comapt.
+
+test -e libHX_Documentation.pdf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/doc/libHX_Documentation.lyx 
new/libHX-3.25/doc/libHX_Documentation.lyx
--- old/libHX-3.24/doc/libHX_Documentation.lyx  2018-10-17 21:15:39.000000000 
+0200
+++ new/libHX-3.25/doc/libHX_Documentation.lyx  2020-05-14 11:48:30.000000000 
+0200
@@ -91,7 +91,7 @@
 \begin_body
 
 \begin_layout Title
-libHX 3.24
+libHX 3.25
 \begin_inset Newline newline
 \end_inset
 
@@ -2620,26 +2620,6 @@
 \end_layout
 
 \begin_layout LyX-Code
-
-\series bold
-long
-\series default
- offsetof(type, member);
-\begin_inset Index idx
-status open
-
-\begin_layout Plain Layout
-
-\family typewriter
-offsetof
-\end_layout
-
-\end_inset
-
-
-\begin_inset Newline newline
-\end_inset
-
 output_type 
 \series bold
 *
@@ -2668,14 +2648,14 @@
 \series bold
 size_t
 \series default
- FIELD_SIZEOF(struct_type, member);
+ HXsizeof_member(struct_type, member);
 \begin_inset Index idx
 status open
 
 \begin_layout Plain Layout
 
 \family typewriter
-FIELD_SIZEOF
+HXsizeof_member
 \end_layout
 
 \end_inset
@@ -2700,55 +2680,6 @@
 \end_layout
 
 \begin_layout Standard
-In case 
-\family typewriter
-offsetof
-\family default
- and 
-\family typewriter
-containerof
-\family default
- have not already defined by inclusion of another header file, libHX's defs.h
- will define these accessors.
- 
-\family typewriter
-offsetof
-\family default
- is defined in 
-\family typewriter
-stddef.h
-\family default
- (for C) or 
-\family typewriter
-cstddef
-\family default
- (C++), but inclusion of these is not necessary if you have included 
-\family typewriter
-defs.h
-\family default
-.
- 
-\family typewriter
-defs.h
-\family default
- will use GCC's 
-\family typewriter
-__builtin_\SpecialChar softhyphen
-offsetof
-\family default
- if available, which does some extra sanity checks in C++ mode.
-\end_layout
-
-\begin_layout Standard
-
-\family typewriter
-offsetof
-\family default
- calculates the offset of the specified member in the type, which needs
- to be a struct or union.
-\end_layout
-
-\begin_layout Standard
 
 \family typewriter
 containerof
@@ -2831,30 +2762,14 @@
 \begin_layout Standard
 
 \family typewriter
-FIELD_SIZEOF
-\family default
- (formerly 
-\family typewriter
 HXsizeof_member
 \family default
-
-\begin_inset Index idx
-status open
-
-\begin_layout Plain Layout
-
-\family typewriter
-HXsizeof_member
-\end_layout
-
-\end_inset
-
-) and 
+ and 
 \family typewriter
 HXtypeof_member
 \family default
- are convenient shortcuts to get the size or type of a named member in a
- given struct:
+ are shortcuts (mainly for the C language) to get the size or type of a
+ named member in a given struct:
 \end_layout
 
 \begin_layout LyX-Code
@@ -2869,6 +2784,18 @@
  foo, baz)];
 \end_layout
 
+\begin_layout Standard
+In C++, one can simply use 
+\family typewriter
+sizeof(foo::baz)
+\family default
+ and 
+\family typewriter
+decltype(foo::baz)
+\family default
+.
+\end_layout
+
 \begin_layout Subsection
 Array size
 \end_layout
@@ -12252,7 +12179,7 @@
 \series bold
 char **
 \series default
-HX_split4(
+HX_split_inplace(
 \series bold
 char *
 \series default
@@ -12277,7 +12204,7 @@
 \family typewriter
 \size normal
 \color none
-HX_split4
+HX_split_inplace
 \end_layout
 
 \end_inset
@@ -12290,7 +12217,7 @@
 \series bold
 int
 \series default
- HX_split5(
+ HX_split_fixed(
 \series bold
 char *
 \series default
@@ -12306,7 +12233,7 @@
 \series bold
 char **
 \series default
-stack);
+arr);
 \begin_inset Index idx
 status open
 
@@ -12315,7 +12242,7 @@
 \family typewriter
 \size normal
 \color none
-HX_split5
+HX_split_fixed
 \end_layout
 
 \end_inset
@@ -12456,7 +12383,7 @@
 \begin_layout Description
 
 \family typewriter
-HX_split4
+HX_split_inplace
 \family default
  Split the string 
 \family typewriter
@@ -12499,7 +12426,7 @@
 \begin_layout Description
 
 \family typewriter
-HX_split5
+HX_split_fixed
 \family default
  Split the string 
 \family typewriter
@@ -12521,7 +12448,7 @@
  The array for the substring pointers must be provided by the user through
  the 
 \family typewriter
-stack
+arr
 \family default
  argument.
  
@@ -13195,10 +13122,10 @@
 \end_layout
 
 \begin_layout Subsubsection
-Using HX_split5
+Using HX_split_fixed
 \begin_inset CommandInset label
 LatexCommand label
-name "subsec:string-ex-HX_split5"
+name "subsec:string-ex-HX_split_fixed"
 
 \end_inset
 
@@ -13208,31 +13135,10 @@
 \begin_layout Standard
 
 \family typewriter
-HX_split5
-\family default
-, where the 
-\begin_inset Quotes eld
-\end_inset
-
-5
-\begin_inset Quotes erd
-\end_inset
-
- should be interpreted (with a bit of imagination and the knowledge of 
leetspeak
-) as an 
-\begin_inset Quotes eld
-\end_inset
-
-S
-\begin_inset Quotes erd
-\end_inset
-
- for stack, as 
-\family typewriter
-HX_split5
+HX_split_fixed
 \family default
- is often used only with on-stack variables and where the field count of
- interest is fixed, as the example for parsing 
+ is often used just with scoped automatic-storage variables and where the
+ field count of interest is fixed, as the example for parsing 
 \family typewriter
 /etc/passwd
 \family default
@@ -13292,7 +13198,7 @@
 \series bold
 if
 \series default
- (HX_split5(line, ":", ARRAY_SIZE(field), field) < 7) {
+ (HX_split_fixed(line, ":", ARRAY_SIZE(field), field) < 7) {
 \begin_inset Newline newline
 \end_inset
 
@@ -13324,14 +13230,14 @@
 \end_layout
 
 \begin_layout Subsubsection
-Using HX_split4
+Using HX_split_inplace
 \end_layout
 
 \begin_layout Standard
 Where the number of fields is not previously known and/or estimatable, but
  the string can be modified in place, one uses 
 \family typewriter
-HX_split4
+HX_split_inplace
 \family default
  as follows:
 \end_layout
@@ -13377,7 +13283,7 @@
 \series bold
 char **
 \series default
-field = HX_split4(line, ":", NULL, 0);
+field = HX_split_inplace(line, ":", NULL, 0);
 \begin_inset Newline newline
 \end_inset
 
Binary files old/libHX-3.24/doc/libHX_Documentation.pdf and 
new/libHX-3.25/doc/libHX_Documentation.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/include/libHX/defs.h 
new/libHX-3.25/include/libHX/defs.h
--- old/libHX-3.24/include/libHX/defs.h 2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/include/libHX/defs.h 2020-05-14 11:48:30.000000000 +0200
@@ -2,23 +2,14 @@
 #define _LIBHX_DEFS_H 1
 
 #ifdef __cplusplus
-#      define FIELD_SIZEOF(type, member) \
-               sizeof(static_cast<type *>(NULL)->member)
-#      define HXsizeof_member(type, member) FIELD_SIZEOF(type, member)
-#      define HXtypeof_member(type, member) \
-               __typeof__(static_cast<type *>(NULL)->member)
-#      if defined(__GNUC__) && __GNUC__ >= 4 && !defined(offsetof)
-               /*
-                * This is here so most programs can skip inclusion
-                * of stddef.h just to get offsetof.
-                */
-#              define offsetof(type, member) __builtin_offsetof(type, member)
-#      endif
-#      ifndef offsetof
-#              define offsetof(type, member) \
-                       reinterpret_cast<long>(&(static_cast<type 
*>(NULL)->member))
+#      define HXsizeof_member(type, member) sizeof(type::member)
+#      if __cplusplus >= 201100L
+#              define HXtypeof_member(type, member) decltype(type::member)
+#      else
+#              define HXtypeof_member(type, member) __typeof__(type::member))
 #      endif
 #      ifndef containerof
+#              include <cstddef>
 #              define containerof(var, type, member) reinterpret_cast<type *>( 
\
                        reinterpret_cast<char *>(var) - offsetof(type, member))
 #      endif
@@ -139,14 +130,8 @@
 #      ifndef reinterpret_cast
 #              define reinterpret_cast(type, expr) ((type)(expr))
 #      endif
-#      if defined(__GNUC__) && __GNUC__ >= 4 && !defined(offsetof)
-#              define offsetof(type, member) __builtin_offsetof(type, member)
-#      endif
-#      ifndef offsetof
-#              define offsetof(type, member) \
-                       reinterpret_cast(long, &(static_cast(type *, 
NULL)->member))
-#      endif
 #      ifndef containerof
+#              include <stddef.h>
 #              define containerof(var, type, member) reinterpret_cast(type *, \
                        reinterpret_cast(char *, var) - offsetof(type, member))
 #      endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/include/libHX/libxml_helper.h 
new/libHX-3.25/include/libHX/libxml_helper.h
--- old/libHX-3.24/include/libHX/libxml_helper.h        2018-10-17 
21:15:39.000000000 +0200
+++ new/libHX-3.25/include/libHX/libxml_helper.h        2020-05-14 
11:48:30.000000000 +0200
@@ -6,7 +6,6 @@
 #else
 #      include <string.h>
 #endif
-#include <libHX/defs.h>
 #include <libxml/parser.h>
 
 #ifdef __cplusplus
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/include/libHX/misc.h 
new/libHX-3.25/include/libHX/misc.h
--- old/libHX-3.24/include/libHX/misc.h 2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/include/libHX/misc.h 2020-05-14 11:48:30.000000000 +0200
@@ -11,8 +11,6 @@
 #      include <cstdarg>
 #      include <cstdio>
 #endif
-#include <libHX/defs.h>
-#include <libHX/io.h>
 
 #ifdef __cplusplus
 extern "C" {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/include/libHX/string.h 
new/libHX-3.25/include/libHX/string.h
--- old/libHX-3.24/include/libHX/string.h       2018-10-17 21:15:39.000000000 
+0200
+++ new/libHX-3.25/include/libHX/string.h       2020-05-14 11:48:30.000000000 
+0200
@@ -66,8 +66,10 @@
 extern hxmc_t *HX_getl(hxmc_t **, FILE *);
 extern void *HX_memmem(const void *, size_t, const void *, size_t);
 extern char **HX_split(const char *, const char *, int *, int);
-extern char **HX_split4(char *, const char *, int *, int);
-extern int HX_split5(char *, const char *, int, char **);
+extern int HX_split_fixed(char *, const char *, int, char **);
+extern char **HX_split_inplace(char *, const char *, int *, int);
+#define HX_split4(a, b, c, d) HX_split_inplace((a), (b), (c), (d))
+#define HX_split5(a, b, c, d) HX_split_fixed((a), (b), (c), (d))
 extern char *HX_strbchr(const char *, const char *, char);
 extern char *HX_strchr2(const char *, const char *);
 extern char *HX_strclone(char **, const char *);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/src/Makefile.am 
new/libHX-3.25/src/Makefile.am
--- old/libHX-3.24/src/Makefile.am      2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/src/Makefile.am      2020-05-14 11:48:30.000000000 +0200
@@ -13,7 +13,7 @@
                    mc.c misc.c opt.c \
                    rand.c string.c time.c
 libHX_la_LIBADD  = ${libdl_LIBS} ${libpthread_LIBS} ${librt_LIBS}
-libHX_la_LDFLAGS = -no-undefined -version-info 31:0:3
+libHX_la_LDFLAGS = -no-undefined -version-info 32:0:0
 if WITH_GNU_LD
 libHX_la_LDFLAGS += -Wl,--version-script=${srcdir}/libHX.map
 endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/src/Makefile.in 
new/libHX-3.25/src/Makefile.in
--- old/libHX-3.24/src/Makefile.in      2018-10-17 21:17:19.970552175 +0200
+++ new/libHX-3.25/src/Makefile.in      2020-05-14 11:48:38.439715627 +0200
@@ -738,7 +738,7 @@
 libHX_la_SOURCES = deque.c dl.c format.c io.c map.c mc.c misc.c opt.c \
        rand.c string.c time.c $(am__append_3) $(am__append_4)
 libHX_la_LIBADD = ${libdl_LIBS} ${libpthread_LIBS} ${librt_LIBS}
-libHX_la_LDFLAGS = -no-undefined -version-info 31:0:3 $(am__append_2)
+libHX_la_LDFLAGS = -no-undefined -version-info 32:0:0 $(am__append_2)
 EXTRA_libHX_la_DEPENDENCIES = libHX.map
 libHX_rtcheck_la_SOURCES = rtcheck.c
 libHX_rtcheck_la_LIBADD = ${libdl_LIBS}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/src/internal.h 
new/libHX-3.25/src/internal.h
--- old/libHX-3.24/src/internal.h       2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/src/internal.h       2020-05-14 11:48:30.000000000 +0200
@@ -54,10 +54,4 @@
 
 extern hxmc_t *HXparse_dequote_fmt(const char *, const char *, const char **);
 
-/* time.c - these are obsolete, but kept for ABI */
-extern void HX_diff_timespec(struct timespec *, const struct timespec *,
-       const struct timespec *);
-extern void HX_diff_timeval(struct timeval *, const struct timeval *,
-       const struct timeval *);
-
 #endif /* LIBHX_INTERNAL_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/src/io.c new/libHX-3.25/src/io.c
--- old/libHX-3.24/src/io.c     2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/src/io.c     2020-05-14 11:48:30.000000000 +0200
@@ -13,6 +13,7 @@
 #include <limits.h>
 #include <stdarg.h>
 #include <stdbool.h>
+#include <stddef.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/src/libHX.map new/libHX-3.25/src/libHX.map
--- old/libHX-3.24/src/libHX.map        2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/src/libHX.map        2020-05-14 11:48:30.000000000 +0200
@@ -1,6 +1,7 @@
-LIBHX_1.10.0 {
+LIBHX_3.25 {
 global:
        HX_basename;
+       HX_basename_exact;
        HX_chomp;
        HX_copy_dir;
        HX_copy_file;
@@ -9,33 +10,65 @@
        HX_dlerror;
        HX_dlopen;
        HX_dlsym;
+       HX_drand;
+       HX_exit;
        HX_ffs;
+       HX_fls;
+       HX_getl;
        HX_getopt;
        HX_getopt_help;
+       HX_getopt_help_cb;
        HX_getopt_usage;
+       HX_getopt_usage_cb;
+       HX_hexdump;
+       HX_init;
        HX_irand;
+       HX_memmem;
+       HX_mkdir;
        HX_rand;
+       HX_readlink;
+       HX_realpath;
        HX_rrmdir;
        HX_shconfig;
        HX_shconfig_free;
+       HX_shconfig_map;
        HX_shconfig_pv;
-       HX_split5;
        HX_split;
+       HX_split_fixed;
+       HX_split_inplace;
+       HX_stpltrim;
        HX_strbchr;
+       HX_strchr2;
        HX_strclone;
+       HX_strdup;
+       HX_strlcat;
+       HX_strlcpy;
+       HX_strlncat;
        HX_strlower;
        HX_strltrim;
        HX_strmid;
+       HX_strndup;
+       HX_strnlen;
+       HX_strquote;
        HX_strrcspn;
        HX_strrev;
        HX_strrtrim;
        HX_strsep2;
        HX_strsep;
        HX_strupper;
+       HX_time_compare;
+       HX_timespec_add;
+       HX_timespec_isneg;
+       HX_timespec_mul;
+       HX_timespec_mulf;
+       HX_timespec_neg;
+       HX_timespec_sub;
+       HX_timeval_sub;
        HX_zvecfree;
        HXdeque_del;
        HXdeque_find;
        HXdeque_free;
+       HXdeque_genocide2;
        HXdeque_get;
        HXdeque_init;
        HXdeque_move;
@@ -47,151 +80,49 @@
        HXdir_close;
        HXdir_open;
        HXdir_read;
-local:
-       *;
-};
-
-LIBHX_1.25 {
-global:
-       HX_getl;
-       HXmc_free;
-       HXmc_length;
-       HXmc_memcat;
-       HXmc_memcpy;
-       HXmc_memdel;
-       HXmc_meminit;
-       HXmc_memins;
-       HXmc_mempcat;
-       HXmc_strcat;
-       HXmc_strcpy;
-       HXmc_strinit;
-       HXmc_strins;
-       HXmc_strpcat;
-       HXmc_trunc;
-} LIBHX_1.10.0;
-
-LIBHX_1.26 {
-global:
-       HX_hexdump;
-       HX_time_compare;
-} LIBHX_1.25;
-
-LIBHX_2.0 {
-global:
-       HXmc_setlen;
-} LIBHX_1.26;
-
-LIBHX_2.2 {
-global:
-       HX_split4;
-       HXproc_run_async;
-       HXproc_run_sync;
-       HXproc_wait;
-} LIBHX_2.0;
-
-LIBHX_2.6 {
-global:
-       HX_fls;
-} LIBHX_2.2;
-
-LIBHX_2.9 {
-global:
-       HX_basename_exact;
-} LIBHX_2.6;
-
-LIBHX_3.0 {
-global:
-       HX_diff_timespec;
-       HX_diff_timeval;
        HXformat_add;
+       HXformat_aprintf;
+       HXformat_fprintf;
        HXformat_free;
        HXformat_init;
+       HXformat_sprintf;
        HXhash_djb2;
        HXhash_jlookup3;
        HXhash_jlookup3s;
        HXhash_primes;
+       HXio_fullread;
+       HXio_fullwrite;
        HXmap_add;
        HXmap_del;
        HXmap_find;
        HXmap_free;
        HXmap_get;
+       HXmap_init5;
+       HXmap_init;
        HXmap_keysvalues;
        HXmap_qfe;
        HXmap_traverse;
        HXmap_travfree;
        HXmap_travinit;
-} LIBHX_2.9;
-
-LIBHX_3.2 {
-global:
-       HX_strquote;
-} LIBHX_3.0;
-
-LIBHX_3.3 {
-global:
-       HX_drand;
-       HX_shconfig_map;
-       HXdeque_genocide2;
+       HXmc_free;
+       HXmc_length;
+       HXmc_memcat;
+       HXmc_memcpy;
+       HXmc_memdel;
+       HXmc_meminit;
+       HXmc_memins;
+       HXmc_mempcat;
+       HXmc_setlen;
+       HXmc_strcat;
+       HXmc_strcpy;
+       HXmc_strinit;
+       HXmc_strins;
+       HXmc_strpcat;
+       HXmc_trunc;
        HXmc_zvecfree;
-} LIBHX_3.2;
-
-LIBHX_3.4 {
-global:
-       HX_exit;
-       HX_init;
-       HX_memmem;
-} LIBHX_3.3;
-
-LIBHX_3.9 {
-global:
-       HXio_fullread;
-       HXio_fullwrite;
-} LIBHX_3.4;
-
-LIBHX_3.10 {
-global:
-       HX_readlink;
-       HX_realpath;
-} LIBHX_3.9;
-
-LIBHX_3.12 {
-global:
-       HX_getopt_help_cb;
-       HX_getopt_usage_cb;
-       HX_mkdir;
-       HX_strdup;
-       HX_strlcat;
-       HX_strlcpy;
-       HX_strlncat;
-       HX_strndup;
-       HX_strnlen;
-       HXformat_aprintf;
-       HXformat_fprintf;
-       HXformat_sprintf;
-       HXmap_init5;
-       HXmap_init;
-} LIBHX_3.10;
-
-# ABI 29
-LIBHX_3.13 {
-global:
-       HX_timespec_add;
-       HX_timespec_isneg;
-       HX_timespec_mul;
-       HX_timespec_mulf;
-       HX_timespec_neg;
-       HX_timespec_sub;
-       HX_timeval_sub;
-} LIBHX_3.12;
-
-# ABI 30
-LIBHX_3.15 {
-global:
-       HX_strchr2;
-} LIBHX_3.13;
-
-# ABI 31
-LIBHX_3.18 {
-global:
-       HX_stpltrim;
-} LIBHX_3.15;
+       HXproc_run_async;
+       HXproc_run_sync;
+       HXproc_wait;
+local:
+       *;
+};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/src/map.c new/libHX-3.25/src/map.c
--- old/libHX-3.24/src/map.c    2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/src/map.c    2020-05-14 11:48:30.000000000 +0200
@@ -1236,7 +1236,7 @@
        } else {
                /* Search for the specific node to rebegin traversal at. */
                const struct HXrbnode *newpath[RBT_MAXDEP];
-               unsigned char newdir[RBT_MAXDEP];
+               unsigned char newdir[RBT_MAXDEP] = {};
                int newdepth = 0, res;
                bool found = false;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/src/misc.c new/libHX-3.25/src/misc.c
--- old/libHX-3.24/src/misc.c   2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/src/misc.c   2020-05-14 11:48:30.000000000 +0200
@@ -82,6 +82,8 @@
 EXPORT_SYMBOL void HX_zvecfree(char **args)
 {
        char **travp;
+       if (args == NULL)
+               return;
        for (travp = args; *travp != NULL; ++travp)
                free(*travp);
        free(args);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/src/rtcheck.c new/libHX-3.25/src/rtcheck.c
--- old/libHX-3.24/src/rtcheck.c        2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/src/rtcheck.c        2020-05-14 11:48:30.000000000 +0200
@@ -153,12 +153,8 @@
 stub2(HX_timespec_neg, (struct timespec *a, const struct timespec *b));
 stub3(HX_timespec_sub, (struct timespec *a, const struct timespec *b,
        const struct timespec *c));
-stub3(HX_diff_timespec, (struct timespec *a, const struct timespec *b,
-       const struct timespec *c));
 stub3(HX_timeval_sub, (struct timeval *a, const struct timeval *b,
        const struct timeval *c));
-stub3(HX_diff_timeval, (struct timeval *a, const struct timeval *b,
-       const struct timeval *c));
 stub3(HX_time_compare, (const struct stat *a, const struct stat *b, char c));
 stub1v(HX_zvecfree, (char **a));
 
@@ -255,8 +251,8 @@
 stub2(HX_getl, (hxmc_t **a, FILE *b));
 stub4(HX_memmem, (const void *a, size_t b, const void *c, size_t d));
 stub4(HX_split, (const char *a, const char *b, int *c, int d));
-stub4(HX_split4, (char *a, const char *b, int *c, int d));
-stub4(HX_split5, (char *a, const char *b, int c, char **d));
+stub4(HX_split_inplace, (char *a, const char *b, int *c, int d));
+stub4(HX_split_fixed, (char *a, const char *b, int c, char **d));
 stub1(HX_stpltrim, (const char *a));
 stub1(HX_stprtrim, (char *a));
 stub3(HX_strbchr, (const char *a, const char *b, char c));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/src/string.c new/libHX-3.25/src/string.c
--- old/libHX-3.24/src/string.c 2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/src/string.c 2020-05-14 11:48:30.000000000 +0200
@@ -232,7 +232,7 @@
        return ret;
 }
 
-EXPORT_SYMBOL char **HX_split4(char *s, const char *delim, int *fld, int max)
+EXPORT_SYMBOL char **HX_split_inplace(char *s, const char *delim, int *fld, 
int max)
 {
        char **stk;
        const char *p = s;
@@ -248,22 +248,22 @@
        if (stk == NULL)
                return NULL;
        stk[count] = NULL;
-       count = HX_split5(s, delim, count, stk);
+       count = HX_split_fixed(s, delim, count, stk);
        if (fld != NULL)
                *fld = count;
        return stk;
 }
 
-EXPORT_SYMBOL int HX_split5(char *s, const char *delim, int max, char **stk)
+EXPORT_SYMBOL int HX_split_fixed(char *s, const char *delim, int max, char 
**stk)
 {
        /*
-        * HX_split5 - the "stack split" (we try to avoid using the heap):
+        * HX_split_fixed - the "stack split" (we try to avoid using the heap):
         * Split @s (modifies it, so must be writable!) at @delim with at most
         * @max fields and putting the results into @stk[0..@max-1].
         *
         * Example on @max:
         *      char *stk[max];
-        *      HX_split5(s, delim, max, stk);
+        *      HX_split_fixed(s, delim, max, stk);
         */
        int i = 0;
        char *p;
@@ -336,6 +336,8 @@
 
 EXPORT_SYMBOL char *HX_strlcpy(char *dest, const char *src, size_t n)
 {
+       if (n == 0)
+               return dest;
        strncpy(dest, src, n);
        dest[n-1] = '\0';
        return dest;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/src/tc-dir.c new/libHX-3.25/src/tc-dir.c
--- old/libHX-3.24/src/tc-dir.c 2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/src/tc-dir.c 2020-05-14 11:48:30.000000000 +0200
@@ -13,6 +13,7 @@
 #      include <cstdlib>
 #endif
 #include <libHX/init.h>
+#include <libHX/io.h>
 #include <libHX/misc.h>
 
 static void lookatdir(const char *dname)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/src/tc-link.c new/libHX-3.25/src/tc-link.c
--- old/libHX-3.24/src/tc-link.c        2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/src/tc-link.c        2020-05-14 11:48:30.000000000 +0200
@@ -95,8 +95,8 @@
        HX_getl,
        HX_memmem,
        HX_split,
-       HX_split4,
-       HX_split5,
+       HX_split_fixed,
+       HX_split_inplace,
        HX_stpltrim,
        HX_strbchr,
        HX_strchr2,
@@ -117,12 +117,6 @@
        HX_strsep2,
        HX_strquote,
        HX_strupper,
-#ifdef HAVE_STRUCT_TIMEVAL_TV_USEC
-       HX_diff_timeval,
-#endif
-#ifdef HAVE_STRUCT_TIMESPEC_TV_NSEC
-       HX_diff_timespec,
-#endif
        HX_time_compare,
 #ifdef HAVE_STRUCT_TIMESPEC_TV_NSEC
        HX_timespec_add,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/src/tc-memmem.c 
new/libHX-3.25/src/tc-memmem.c
--- old/libHX-3.24/src/tc-memmem.c      2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/src/tc-memmem.c      2020-05-14 11:48:30.000000000 +0200
@@ -9,6 +9,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <time.h>
+#include <libHX/defs.h>
 #include <libHX/init.h>
 #include <libHX/misc.h>
 #include <libHX/string.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/src/tc-string.c 
new/libHX-3.25/src/tc-string.c
--- old/libHX-3.24/src/tc-string.c      2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/src/tc-string.c      2020-05-14 11:48:30.000000000 +0200
@@ -160,8 +160,8 @@
 
        memcpy(t2, t1, sizeof(t1));
        a0 = HX_split(t1, ":", &f0, 0);
-       a1 = HX_split4(t1, ":", &f1, 0);
-       f2 = HX_split5(t2, ":", ARRAY_SIZE(a2), a2);
+       a1 = HX_split_inplace(t1, ":", &f1, 0);
+       f2 = HX_split_fixed(t2, ":", ARRAY_SIZE(a2), a2);
 
        /* complete allocation */
        printf("HX_split1: a0[%p]:", a0);
@@ -170,7 +170,7 @@
        printf("\n");
 
        /* array allocated */
-       printf("HX_split4: a1[%p]:", a1);
+       printf("HX_split_inplace: a1[%p]:", a1);
        for (wp = a1; *wp != NULL; ++wp)
                printf(" %s[%p]", *wp, *wp);
        printf("\n");
@@ -202,6 +202,8 @@
 
 EXPORT_SYMBOL char *f_strlcpy_str(char *d, const char *s, size_t n)
 {
+       if (n == 0)
+               return d;
        strncpy(d, s, n);
        d[n-1] = '\0';
        return d;
@@ -279,6 +281,13 @@
        }
 }
 
+static void t_strlcpy2(void)
+{
+       char a[3] = {49, 49, 49};
+       HX_strlcpy(&a[1], &a[1], 0);
+       assert(a[0] == 49 && a[0] == a[1] && a[1] == a[2]);
+}
+
 int main(int argc, const char **argv)
 {
        hxmc_t *tx = NULL;
@@ -308,6 +317,7 @@
        t_split();
        t_split2();
        t_strlcpy();
+       t_strlcpy2();
        HXmc_free(tx);
        HX_exit();
        return EXIT_SUCCESS;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libHX-3.24/src/time.c new/libHX-3.25/src/time.c
--- old/libHX-3.24/src/time.c   2018-10-17 21:15:39.000000000 +0200
+++ new/libHX-3.25/src/time.c   2020-05-14 11:48:30.000000000 +0200
@@ -81,12 +81,6 @@
        return HX_timespec_add(r, a, HX_timespec_neg(&b2, b));
 }
 
-EXPORT_SYMBOL void HX_diff_timespec(struct timespec *delta,
-    const struct timespec *future, const struct timespec *past)
-{
-       HX_timespec_sub(delta, future, past);
-}
-
 EXPORT_SYMBOL struct timespec *
 HX_timespec_mul(struct timespec *r, const struct timespec *a, int f)
 {
@@ -141,12 +135,6 @@
        }
        return delta;
 }
-
-EXPORT_SYMBOL void HX_diff_timeval(struct timeval *delta,
-    const struct timeval *future, const struct timeval *past)
-{
-       HX_timeval_sub(delta, future, past);
-}
 #endif
 
 EXPORT_SYMBOL long HX_time_compare(const struct stat *a,
@@ -210,6 +198,17 @@
                return a->st_atime - b->st_atime;
        else if (sel == 'c')
                return a->st_ctime - b->st_ctime;
+#elif defined(HAVE_STRUCT_STAT_ST_MTIM)
+       if (sel == 'm')
+               return a->st_mtim - b->st_mtim;
+#ifdef HAVE_STRUCT_STAT_ST_OTIM
+       else if (sel == 'o')
+               return a->st_otim - b->st_otim;
+#endif
+       else if (sel == 'a')
+               return a->st_atim - b->st_atim;
+       else if (sel == 'c')
+               return a->st_ctim - b->st_ctim;
 #else
 #      error Tis not ending well.
 #endif

++++++ libHX.keyring ++++++
--- /var/tmp/diff_new_pack.7INyWX/_old  2020-05-16 22:26:24.725282698 +0200
+++ /var/tmp/diff_new_pack.7INyWX/_new  2020-05-16 22:26:24.729282706 +0200
@@ -1,85 +1,52 @@
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 
-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
-cCAy
-=ePMx
+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
+NGTT6x12
+=QLsa
 -----END PGP PUBLIC KEY BLOCK-----


Reply via email to