Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libHX for openSUSE:Factory checked in at 2026-02-01 22:01:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libHX (Old) and /work/SRC/openSUSE:Factory/.libHX.new.1995 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libHX" Sun Feb 1 22:01:44 2026 rev:86 rq:1329890 version:5.3 Changes: -------- --- /work/SRC/openSUSE:Factory/libHX/libHX.changes 2025-10-21 11:14:51.078836440 +0200 +++ /work/SRC/openSUSE:Factory/.libHX.new.1995/libHX.changes 2026-02-01 22:01:50.435532812 +0100 @@ -1,0 +2,8 @@ +Thu Jan 29 14:00:41 UTC 2026 - Jan Engelhardt <[email protected]> + +- Update to release 5.3 + * Added the <libHX/tie.hpp> header containing the + HX::unique_tie function + * Make HX_isascii work in C23 mode + +------------------------------------------------------------------- Old: ---- libHX-5.2.tar.asc libHX-5.2.tar.zst New: ---- libHX-5.3.tar.asc libHX-5.3.tar.zst ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libHX.spec ++++++ --- /var/tmp/diff_new_pack.fJuchG/_old 2026-02-01 22:01:51.575580507 +0100 +++ /var/tmp/diff_new_pack.fJuchG/_new 2026-02-01 22:01:51.579580674 +0100 @@ -1,7 +1,7 @@ # # spec file for package libHX # -# Copyright (c) 2025 SUSE LLC and contributors +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ Name: libHX %define lname libHX43 -Version: 5.2 +Version: 5.3 Release: 0 Summary: Collection of routines for C and C++ programming License: LGPL-2.1-or-later ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.fJuchG/_old 2026-02-01 22:01:51.615582180 +0100 +++ /var/tmp/diff_new_pack.fJuchG/_new 2026-02-01 22:01:51.619582348 +0100 @@ -1,4 +1,4 @@ -mtime: 1760881020 -commit: 2125e5dbdf702af1279f1e0c8cd9f4bd0e0a1f535452a948bf740c7474653df1 +mtime: 1769712899 +commit: badff71bc18875f34d89596e1f4acf1900a02bb0cda72412d462310be2ec8e99 url: https://src.opensuse.org/jengelh/libHX ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-01-29 19:55:17.000000000 +0100 @@ -0,0 +1 @@ +.osc ++++++ libHX-5.2.tar.zst -> libHX-5.3.tar.zst ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-5.2/Makefile.am new/libHX-5.3/Makefile.am --- old/libHX-5.2/Makefile.am 2025-03-07 23:14:35.738385244 +0100 +++ new/libHX-5.3/Makefile.am 2025-11-17 10:20:17.506840894 +0100 @@ -5,6 +5,6 @@ SUBDIRS = include src pkgconfig_DATA = libHX.pc -EXTRA_DIST = doc/api.rst doc/assorted.txt doc/bitmaps.rst doc/changelog.rst doc/const_cast.c doc/dirstamp.rst doc/files_and_dirs.rst doc/generator.cpp doc/helper_headers.rst doc/history.rst doc/init.rst doc/inline_clist.rst doc/inline_list.rst doc/install.rst doc/libHX_Documentation.rst doc/linked_list.rst doc/macros.rst doc/maps.rst doc/memory_container.rst doc/misc_functions.rst doc/option_parsing.rst doc/process_management.rst doc/random_numbers.rst doc/scope.rst doc/shconfig.rst doc/socket_functions.rst doc/string_formatter.rst doc/string_ops.rst doc/strlcpy-timing.rst doc/time_functions.rst doc/typecheck_casts.rst doc/ux-file.rst doc/ux-mmap.rst +EXTRA_DIST = doc/api.rst doc/assorted.txt doc/bitmaps.rst doc/changelog.rst doc/const_cast.c doc/dirstamp.rst doc/files_and_dirs.rst doc/generator.cpp doc/helper_headers.rst doc/history.rst doc/init.rst doc/inline_clist.rst doc/inline_list.rst doc/install.rst doc/libHX_Documentation.rst doc/linked_list.rst doc/macros.rst doc/maps.rst doc/memory_container.rst doc/misc_functions.rst doc/option_parsing.rst doc/process_management.rst doc/random_numbers.rst doc/scope.rst doc/shconfig.rst doc/socket_functions.rst doc/string_formatter.rst doc/string_ops.rst doc/strlcpy-timing.rst doc/tie.rst doc/time_functions.rst doc/typecheck_casts.rst doc/ux-file.rst doc/ux-mmap.rst ${pkgconfig_DATA}: ${top_builddir}/config.status diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-5.2/Makefile.in new/libHX-5.3/Makefile.in --- old/libHX-5.2/Makefile.in 2025-10-19 15:26:15.670930917 +0200 +++ new/libHX-5.3/Makefile.in 2026-01-29 13:15:38.383793451 +0100 @@ -199,8 +199,7 @@ $(top_srcdir)/build-aux/ltmain.sh \ $(top_srcdir)/build-aux/missing COPYING build-aux/ar-lib \ build-aux/compile build-aux/config.guess build-aux/config.sub \ - build-aux/depcomp build-aux/install-sh build-aux/ltmain.sh \ - build-aux/missing + build-aux/install-sh build-aux/ltmain.sh build-aux/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -384,7 +383,7 @@ ACLOCAL_AMFLAGS = -I m4 SUBDIRS = include src pkgconfig_DATA = libHX.pc -EXTRA_DIST = doc/api.rst doc/assorted.txt doc/bitmaps.rst doc/changelog.rst doc/const_cast.c doc/dirstamp.rst doc/files_and_dirs.rst doc/generator.cpp doc/helper_headers.rst doc/history.rst doc/init.rst doc/inline_clist.rst doc/inline_list.rst doc/install.rst doc/libHX_Documentation.rst doc/linked_list.rst doc/macros.rst doc/maps.rst doc/memory_container.rst doc/misc_functions.rst doc/option_parsing.rst doc/process_management.rst doc/random_numbers.rst doc/scope.rst doc/shconfig.rst doc/socket_functions.rst doc/string_formatter.rst doc/string_ops.rst doc/strlcpy-timing.rst doc/time_functions.rst doc/typecheck_casts.rst doc/ux-file.rst doc/ux-mmap.rst +EXTRA_DIST = doc/api.rst doc/assorted.txt doc/bitmaps.rst doc/changelog.rst doc/const_cast.c doc/dirstamp.rst doc/files_and_dirs.rst doc/generator.cpp doc/helper_headers.rst doc/history.rst doc/init.rst doc/inline_clist.rst doc/inline_list.rst doc/install.rst doc/libHX_Documentation.rst doc/linked_list.rst doc/macros.rst doc/maps.rst doc/memory_container.rst doc/misc_functions.rst doc/option_parsing.rst doc/process_management.rst doc/random_numbers.rst doc/scope.rst doc/shconfig.rst doc/socket_functions.rst doc/string_formatter.rst doc/string_ops.rst doc/strlcpy-timing.rst doc/tie.rst doc/time_functions.rst doc/typecheck_casts.rst doc/ux-file.rst doc/ux-mmap.rst all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-5.2/configure new/libHX-5.3/configure --- old/libHX-5.2/configure 2025-10-19 15:26:16.032387905 +0200 +++ new/libHX-5.3/configure 2026-01-29 13:15:37.990053066 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for libHX 5.2. +# Generated by GNU Autoconf 2.72 for libHX 5.3. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, @@ -611,8 +611,8 @@ # Identity of this package. PACKAGE_NAME='libHX' PACKAGE_TARNAME='libhx' -PACKAGE_VERSION='5.2' -PACKAGE_STRING='libHX 5.2' +PACKAGE_VERSION='5.3' +PACKAGE_STRING='libHX 5.3' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1374,7 +1374,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 5.2 to adapt to many kinds of systems. +'configure' configures libHX 5.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1445,7 +1445,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libHX 5.2:";; + short | recursive ) echo "Configuration of libHX 5.3:";; esac cat <<\_ACEOF @@ -1560,7 +1560,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libHX configure 5.2 +libHX configure 5.3 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. @@ -2213,7 +2213,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 5.2, which was +It was created by libHX $as_me 5.3, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -3910,7 +3910,7 @@ # Define the identity of the package. PACKAGE='libhx' - VERSION='5.2' + VERSION='5.3' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -20393,7 +20393,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 5.2, which was +This file was extended by libHX $as_me 5.3, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -20461,7 +20461,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -libHX config.status 5.2 +libHX config.status 5.3 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-5.2/configure.ac new/libHX-5.3/configure.ac --- old/libHX-5.2/configure.ac 2025-10-19 15:24:57.194642068 +0200 +++ new/libHX-5.3/configure.ac 2026-01-26 20:33:28.886918202 +0100 @@ -1,4 +1,4 @@ -AC_INIT([libHX], [5.2]) +AC_INIT([libHX], [5.3]) 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-5.2/doc/api.rst new/libHX-5.3/doc/api.rst --- old/libHX-5.2/doc/api.rst 2025-10-19 15:14:37.346683105 +0200 +++ new/libHX-5.3/doc/api.rst 2025-11-17 10:07:15.113167251 +0100 @@ -9,6 +9,7 @@ ====== ====== ====== ======================================== RMV MinVer FirstA Name ====== ====== ====== ======================================== +5.3 5.3 5.3 HX::unique_tie 5.0 5.0 4.28 HXdeque_to_vecx 5.2 4.28 4.28 HX_getopt6 4.28 4.28 4.28 HX_getopt6_clean diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-5.2/doc/changelog.rst new/libHX-5.3/doc/changelog.rst --- old/libHX-5.2/doc/changelog.rst 2025-10-19 15:28:11.689862053 +0200 +++ new/libHX-5.3/doc/changelog.rst 2026-01-29 13:15:17.812153285 +0100 @@ -1,3 +1,18 @@ +v5.3 (2026-01-29) +================= + +Enhancements: + +* Added the ``<libHX/tie.hpp>`` include together with the + ``HX::unique_tie`` function + +Fixes: + +* Make ``HX_isascii`` work in C23 mode +* Drop symbols from libHX.map that no longer exist, + these caused a build failure with llvm-ld (lld) + + v5.2 (2025-10-19) ================= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-5.2/doc/tie.rst new/libHX-5.3/doc/tie.rst --- old/libHX-5.2/doc/tie.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/libHX-5.3/doc/tie.rst 2025-12-07 16:57:13.309634712 +0100 @@ -0,0 +1,56 @@ +============== +Memory helpers +============== + +``unique_tie`` +============== + +``unique_tie`` creates a proxy object for ``std::unique_ptr<T,D>`` instances to +interact with foreign functions that output a value through a ``T**`` pointer. + +Normally, for functions which return their result through an argument pointer, +a temporary variable may be necessary when one wishes to use unique_ptr: + +.. code-block: c++ + + struct mydel { void operator()(void *x) const { free(x); } }; + + unique_ptr<char[], mydel> u; + char *x; + bla_alloc(&x); + u.reset(x); + +With ``unique_tie``, this can be shortened to: + +.. code-block: c++ + + unique_ptr<char[], mydel> u; + bla_alloc(&unique_tie(u)); + +This is similar to C++23's ``std::out_ptr`` and ``std::in_out_ptr``. +``unique_tie`` has subtle differences, though: + +* Only usable to ``unique_ptr``, not ``shared_ptr`` or raw pointers. +* No implict conversions / No user-defined conversion operators. +* No ``void **`` conversion. +* Clearing is explicit, with ``~``. +* Address-taking is explicit in text, i.e. you have to type a ``&`` in source + code. This is a deliberate choice for helping trivial text grepping for + pointer-taking. +* There is higher memory use for when using a unique_ptr with custom deleter + function, but the optimizer might just optimize it away anyway. + +Repeated use of a variable with clearing inbetween works like so: + +.. code-block: c++ + + unique_ptr<char[], mydel> u; + iconvxx("utf-8", "utf-16", &unique_tie(u), srctext1); + printf("%s\n", u.get()); + iconvxx("utf-8", "utf-16", &~unique_tie(u), srctext2); + printf("%s\n", u.get()); + iconvxx("utf-8", "utf-16", &~unique_tie(u), srctext3); + printf("%s\n", u.get()); + +It is acceptable to employ/enforce ``&~`` in all uses – even the +first – of unique_tie in your project to guard against human error. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-5.2/include/Makefile.am new/libHX-5.3/include/Makefile.am --- old/libHX-5.2/include/Makefile.am 2025-03-11 01:48:59.471976632 +0100 +++ new/libHX-5.3/include/Makefile.am 2025-11-17 10:06:29.325266435 +0100 @@ -5,5 +5,5 @@ libHX/endian.h libHX/endian_float.h libHX/init.h \ libHX/intdiff.hpp libHX/io.h libHX/list.h \ libHX/map.h libHX/misc.h libHX/option.h libHX/proc.h \ - libHX/scope.hpp libHX/socket.h libHX/string.h \ + libHX/scope.hpp libHX/socket.h libHX/string.h libHX/tie.hpp \ libHX/libxml_helper.h libHX/wx_helper.hpp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-5.2/include/Makefile.in new/libHX-5.3/include/Makefile.in --- old/libHX-5.2/include/Makefile.in 2025-10-19 15:26:15.680648386 +0200 +++ new/libHX-5.3/include/Makefile.in 2026-01-29 13:15:38.393401446 +0100 @@ -311,7 +311,7 @@ libHX/endian.h libHX/endian_float.h libHX/init.h \ libHX/intdiff.hpp libHX/io.h libHX/list.h \ libHX/map.h libHX/misc.h libHX/option.h libHX/proc.h \ - libHX/scope.hpp libHX/socket.h libHX/string.h \ + libHX/scope.hpp libHX/socket.h libHX/string.h libHX/tie.hpp \ libHX/libxml_helper.h libHX/wx_helper.hpp all: all-am diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-5.2/include/libHX/ctype_helper.h new/libHX-5.3/include/libHX/ctype_helper.h --- old/libHX-5.2/include/libHX/ctype_helper.h 2025-03-07 23:14:35.739385239 +0100 +++ new/libHX-5.3/include/libHX/ctype_helper.h 2026-01-05 14:54:22.772292496 +0100 @@ -41,7 +41,7 @@ static __inline__ bool HX_isascii(unsigned char c) { - return isascii(c); + return c < 128; } static __inline__ bool HX_isdigit(unsigned char c) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-5.2/include/libHX/tie.hpp new/libHX-5.3/include/libHX/tie.hpp --- old/libHX-5.2/include/libHX/tie.hpp 1970-01-01 01:00:00.000000000 +0100 +++ new/libHX-5.3/include/libHX/tie.hpp 2025-11-17 10:20:01.662895001 +0100 @@ -0,0 +1,23 @@ +#pragma once +#include <memory> + +namespace HX { + +template<typename T, typename D> class unique_proxy { + public: + unique_proxy(std::unique_ptr<T, D> &a) : u(a), p(u.get()) {} + ~unique_proxy() { u.reset(p); } + typename std::unique_ptr<T, D>::pointer *operator&() { return &p; } + unique_proxy &operator~() { u.reset(); p = nullptr; return *this; } + private: + std::unique_ptr<T, D> &u; + typename std::unique_ptr<T, D>::pointer p; +}; + +template<typename T, typename D> unique_proxy<T, D> +unique_tie(std::unique_ptr<T, D> &u) +{ + return unique_proxy<T, D>(u); +} + +} /* namespace */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-5.2/src/internal.h new/libHX-5.3/src/internal.h --- old/libHX-5.2/src/internal.h 2025-10-19 15:06:56.147293516 +0200 +++ new/libHX-5.3/src/internal.h 2026-01-05 13:48:39.279764458 +0100 @@ -40,7 +40,7 @@ #define MAXLNLEN 1024 /* max length for usual line */ #define HXMC_IDENT 0x200571AF -#if !defined(__cplusplus) +#if !defined(__cplusplus) && __STDC_VERSION__ < 202300L # define nullptr NULL #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-5.2/src/libHX.map new/libHX-5.3/src/libHX.map --- old/libHX-5.2/src/libHX.map 2025-10-19 15:06:56.147293516 +0200 +++ new/libHX-5.3/src/libHX.map 2025-12-07 16:55:46.695918144 +0100 @@ -46,7 +46,6 @@ HX_strltrim; HX_strmid; HX_strndup; - HX_strnlen; HX_strquote; HX_strrcspn; HX_strrev;
