diff --git a/gnulib-ppc64le.patch b/gnulib-ppc64le.patch
deleted file mode 100644
index c583485..0000000
--- a/gnulib-ppc64le.patch
+++ /dev/null
@@ -1,598 +0,0 @@
----
- gl/lib/cdefs.h | 337 ++++++++++++++++++++++++++++++++++++++++++++-------------
- 1 file changed, 264 insertions(+), 73 deletions(-)
-
---- gl/lib/cdefs.h
-+++ gl/lib/cdefs.h 2022-08-11 11:50:49.057218734 +0000
-@@ -1,17 +1,18 @@
--/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
-+/* Copyright (C) 1992-2022 Free Software Foundation, Inc.
-+ Copyright The GNU Toolchain Authors.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU General Public
-+ modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
-- version 3 of the License, or (at your option) any later version.
-+ version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- General Public License for more details.
-+ Lesser General Public License for more details.
-
-- You should have received a copy of the GNU General Public
-+ You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-@@ -25,7 +26,7 @@
-
- /* The GNU libc does not support any K&R compilers or the traditional mode
- of ISO C compilers anymore. Check for some of the combinations not
-- anymore supported. */
-+ supported anymore. */
- #if defined __GNUC__ && !defined __STDC__
- # error "You need a ISO C conforming compiler to use the glibc headers"
- #endif
-@@ -34,7 +35,29 @@
- #undef __P
- #undef __PMT
-
--#ifdef __GNUC__
-+/* Compilers that lack __has_attribute may object to
-+ #if defined __has_attribute && __has_attribute (...)
-+ even though they do not need to evaluate the right-hand side of the &&.
-+ Similarly for __has_builtin, etc. */
-+#if (defined __has_attribute \
-+ && (!defined __clang_minor__ \
-+ || 3 < __clang_major__ + (5 <= __clang_minor__)))
-+# define __glibc_has_attribute(attr) __has_attribute (attr)
-+#else
-+# define __glibc_has_attribute(attr) 0
-+#endif
-+#ifdef __has_builtin
-+# define __glibc_has_builtin(name) __has_builtin (name)
-+#else
-+# define __glibc_has_builtin(name) 0
-+#endif
-+#ifdef __has_extension
-+# define __glibc_has_extension(ext) __has_extension (ext)
-+#else
-+# define __glibc_has_extension(ext) 0
-+#endif
-+
-+#if defined __GNUC__ || defined __clang__
-
- /* All functions, except those with callbacks or those that
- synchronize memory, are leaf functions. */
-@@ -47,21 +70,26 @@
- # endif
-
- /* GCC can always grok prototypes. For C++ programs we add throw()
-- to help it optimize the function calls. But this works only with
-- gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions
-+ to help it optimize the function calls. But this only works with
-+ gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
- as non-throwing using a function attribute since programs can use
- the -fexceptions options for C code as well. */
--# if !defined __cplusplus && __GNUC_PREREQ (3, 3)
-+# if !defined __cplusplus \
-+ && (__GNUC_PREREQ (3, 4) || __glibc_has_attribute (__nothrow__))
- # define __THROW __attribute__ ((__nothrow__ __LEAF))
- # define __THROWNL __attribute__ ((__nothrow__))
- # define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct
- # define __NTHNL(fct) __attribute__ ((__nothrow__)) fct
- # else
--# if defined __cplusplus && __GNUC_PREREQ (2,8)
--# define __THROW throw ()
--# define __THROWNL throw ()
--# define __NTH(fct) __LEAF_ATTR fct throw ()
--# define __NTHNL(fct) fct throw ()
-+# if defined __cplusplus && (__GNUC_PREREQ (2,8) || __clang_major >= 4)
-+# if __cplusplus >= 201103L
-+# define __THROW noexcept (true)
-+# else
-+# define __THROW throw ()
-+# endif
-+# define __THROWNL __THROW
-+# define __NTH(fct) __LEAF_ATTR fct __THROW
-+# define __NTHNL(fct) fct __THROW
- # else
- # define __THROW
- # define __THROWNL
-@@ -70,7 +98,7 @@
- # endif
- # endif
-
--#else /* Not GCC. */
-+#else /* Not GCC or clang. */
-
- # if (defined __cplusplus \
- || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
-@@ -83,16 +111,7 @@
- # define __THROWNL
- # define __NTH(fct) fct
-
--#endif /* GCC. */
--
--/* Compilers that are not clang may object to
-- #if defined __clang__ && __has_extension(...)
-- even though they do not need to evaluate the right-hand side of the &&. */
--#if defined __clang__ && defined __has_extension
--# define __glibc_clang_has_extension(ext) __has_extension (ext)
--#else
--# define __glibc_clang_has_extension(ext) 0
--#endif
-+#endif /* GCC || clang. */
-
- /* These two macros are not used in glibc anymore. They are kept here
- only because some other projects expect the macros to be defined. */
-@@ -123,14 +142,68 @@
- #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
- #define __bos0(ptr) __builtin_object_size (ptr, 0)
-
-+/* Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available. */
-+#if __USE_FORTIFY_LEVEL == 3 && (__glibc_clang_prereq (9, 0) \
-+ || __GNUC_PREREQ (12, 0))
-+# define __glibc_objsize0(__o) __builtin_dynamic_object_size (__o, 0)
-+# define __glibc_objsize(__o) __builtin_dynamic_object_size (__o, 1)
-+#else
-+# define __glibc_objsize0(__o) __bos0 (__o)
-+# define __glibc_objsize(__o) __bos (__o)
-+#endif
-+
-+/* Compile time conditions to choose between the regular, _chk and _chk_warn
-+ variants. These conditions should get evaluated to constant and optimized
-+ away. */
-+
-+#define __glibc_safe_len_cond(__l, __s, __osz) ((__l) <= (__osz) / (__s))
-+#define __glibc_unsigned_or_positive(__l) \
-+ ((__typeof (__l)) 0 < (__typeof (__l)) -1 \
-+ || (__builtin_constant_p (__l) && (__l) > 0))
-+
-+/* Length is known to be safe at compile time if the __L * __S <= __OBJSZ
-+ condition can be folded to a constant and if it is true. The -1 check is
-+ redundant because since it implies that __glibc_safe_len_cond is true. */
-+#define __glibc_safe_or_unknown_len(__l, __s, __osz) \
-+ (__glibc_unsigned_or_positive (__l) \
-+ && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \
-+ __s, __osz)) \
-+ && __glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz))
-+
-+/* Conversely, we know at compile time that the length is unsafe if the
-+ __L * __S <= __OBJSZ condition can be folded to a constant and if it is
-+ false. */
-+#define __glibc_unsafe_len(__l, __s, __osz) \
-+ (__glibc_unsigned_or_positive (__l) \
-+ && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \
-+ __s, __osz)) \
-+ && !__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz))
-+
-+/* Fortify function f. __f_alias, __f_chk and __f_chk_warn must be
-+ declared. */
-+
-+#define __glibc_fortify(f, __l, __s, __osz, ...) \
-+ (__glibc_safe_or_unknown_len (__l, __s, __osz) \
-+ ? __ ## f ## _alias (__VA_ARGS__) \
-+ : (__glibc_unsafe_len (__l, __s, __osz) \
-+ ? __ ## f ## _chk_warn (__VA_ARGS__, __osz) \
-+ : __ ## f ## _chk (__VA_ARGS__, __osz))) \
-+
-+/* Fortify function f, where object size argument passed to f is the number of
-+ elements and not total size. */
-+
-+#define __glibc_fortify_n(f, __l, __s, __osz, ...) \
-+ (__glibc_safe_or_unknown_len (__l, __s, __osz) \
-+ ? __ ## f ## _alias (__VA_ARGS__) \
-+ : (__glibc_unsafe_len (__l, __s, __osz) \
-+ ? __ ## f ## _chk_warn (__VA_ARGS__, (__osz) / (__s)) \
-+ : __ ## f ## _chk (__VA_ARGS__, (__osz) / (__s)))) \
-+
- #if __GNUC_PREREQ (4,3)
--# define __warndecl(name, msg) \
-- extern void name (void) __attribute__((__warning__ (msg)))
- # define __warnattr(msg) __attribute__((__warning__ (msg)))
- # define __errordecl(name, msg) \
- extern void name (void) __attribute__((__error__ (msg)))
- #else
--# define __warndecl(name, msg) extern void name (void)
- # define __warnattr(msg)
- # define __errordecl(name, msg) extern void name (void)
- #endif
-@@ -142,8 +215,8 @@
- #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L && !defined __HP_cc
- # define __flexarr []
- # define __glibc_c99_flexarr_available 1
--#elif __GNUC_PREREQ (2,97)
--/* GCC 2.97 supports C99 flexible array members as an extension,
-+#elif __GNUC_PREREQ (2,97) || defined __clang__
-+/* GCC 2.97 and clang support C99 flexible array members as an extension,
- even when in C89 mode or compiling C++ (any version). */
- # define __flexarr []
- # define __glibc_c99_flexarr_available 1
-@@ -169,7 +242,7 @@
- Example:
- int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); */
-
--#if defined __GNUC__ && __GNUC__ >= 2
-+#if (defined __GNUC__ && __GNUC__ >= 2) || (__clang_major__ >= 4)
-
- # define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias))
- # ifdef __cplusplus
-@@ -194,17 +267,17 @@
- */
- #endif
-
--/* GCC has various useful declarations that can be made with the
-- `__attribute__' syntax. All of the ways we use this do fine if
-- they are omitted for compilers that don't understand it. */
--#if !defined __GNUC__ || __GNUC__ < 2
-+/* GCC and clang have various useful declarations that can be made with
-+ the '__attribute__' syntax. All of the ways we use this do fine if
-+ they are omitted for compilers that don't understand it. */
-+#if !(defined __GNUC__ || defined __clang__)
- # define __attribute__(xyz) /* Ignore */
- #endif
-
- /* At some point during the gcc 2.96 development the `malloc' attribute
- for functions was introduced. We don't want to use it unconditionally
- (although this would be possible) since it generates warnings. */
--#if __GNUC_PREREQ (2,96)
-+#if __GNUC_PREREQ (2,96) || __glibc_has_attribute (__malloc__)
- # define __attribute_malloc__ __attribute__ ((__malloc__))
- #else
- # define __attribute_malloc__ /* Ignore */
-@@ -219,26 +292,41 @@
- # define __attribute_alloc_size__(params) /* Ignore. */
- #endif
-
-+/* Tell the compiler which argument to an allocation function
-+ indicates the alignment of the allocation. */
-+#if __GNUC_PREREQ (4, 9) || __glibc_has_attribute (__alloc_align__)
-+# define __attribute_alloc_align__(param) \
-+ __attribute__ ((__alloc_align__ param))
-+#else
-+# define __attribute_alloc_align__(param) /* Ignore. */
-+#endif
-+
- /* At some point during the gcc 2.96 development the `pure' attribute
- for functions was introduced. We don't want to use it unconditionally
- (although this would be possible) since it generates warnings. */
--#if __GNUC_PREREQ (2,96)
-+#if __GNUC_PREREQ (2,96) || __glibc_has_attribute (__pure__)
- # define __attribute_pure__ __attribute__ ((__pure__))
- #else
- # define __attribute_pure__ /* Ignore */
- #endif
-
- /* This declaration tells the compiler that the value is constant. */
--#if __GNUC_PREREQ (2,5)
-+#if __GNUC_PREREQ (2,5) || __glibc_has_attribute (__const__)
- # define __attribute_const__ __attribute__ ((__const__))
- #else
- # define __attribute_const__ /* Ignore */
- #endif
-
-+#if __GNUC_PREREQ (2,7) || __glibc_has_attribute (__unused__)
-+# define __attribute_maybe_unused__ __attribute__ ((__unused__))
-+#else
-+# define __attribute_maybe_unused__ /* Ignore */
-+#endif
-+
- /* At some point during the gcc 3.1 development the `used' attribute
- for functions was introduced. We don't want to use it unconditionally
- (although this would be possible) since it generates warnings. */
--#if __GNUC_PREREQ (3,1)
-+#if __GNUC_PREREQ (3,1) || __glibc_has_attribute (__used__)
- # define __attribute_used__ __attribute__ ((__used__))
- # define __attribute_noinline__ __attribute__ ((__noinline__))
- #else
-@@ -247,7 +335,7 @@
- #endif
-
- /* Since version 3.2, gcc allows marking deprecated functions. */
--#if __GNUC_PREREQ (3,2)
-+#if __GNUC_PREREQ (3,2) || __glibc_has_attribute (__deprecated__)
- # define __attribute_deprecated__ __attribute__ ((__deprecated__))
- #else
- # define __attribute_deprecated__ /* Ignore */
-@@ -256,8 +344,8 @@
- /* Since version 4.5, gcc also allows one to specify the message printed
- when a deprecated function is used. clang claims to be gcc 4.2, but
- may also support this feature. */
--#if __GNUC_PREREQ (4,5) || \
-- __glibc_clang_has_extension (__attribute_deprecated_with_message__)
-+#if __GNUC_PREREQ (4,5) \
-+ || __glibc_has_extension (__attribute_deprecated_with_message__)
- # define __attribute_deprecated_msg__(msg) \
- __attribute__ ((__deprecated__ (msg)))
- #else
-@@ -270,7 +358,7 @@
- If several `format_arg' attributes are given for the same function, in
- gcc-3.0 and older, all but the last one are ignored. In newer gccs,
- all designated arguments are considered. */
--#if __GNUC_PREREQ (2,8)
-+#if __GNUC_PREREQ (2,8) || __glibc_has_attribute (__format_arg__)
- # define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
- #else
- # define __attribute_format_arg__(x) /* Ignore */
-@@ -280,7 +368,7 @@
- attribute for functions was introduced. We don't want to use it
- unconditionally (although this would be possible) since it
- generates warnings. */
--#if __GNUC_PREREQ (2,97)
-+#if __GNUC_PREREQ (2,97) || __glibc_has_attribute (__format__)
- # define __attribute_format_strfmon__(a,b) \
- __attribute__ ((__format__ (__strfmon__, a, b)))
- #else
-@@ -288,19 +376,33 @@
- #endif
-
- /* The nonnull function attribute marks pointer parameters that
-- must not be NULL. Do not define __nonnull if it is already defined,
-- for portability when this file is used in Gnulib. */
-+ must not be NULL. This has the name __nonnull in glibc,
-+ and __attribute_nonnull__ in files shared with Gnulib to avoid
-+ collision with a different __nonnull in DragonFlyBSD 5.9. */
-+#ifndef __attribute_nonnull__
-+# if __GNUC_PREREQ (3,3) || __glibc_has_attribute (__nonnull__)
-+# define __attribute_nonnull__(params) __attribute__ ((__nonnull__ params))
-+# else
-+# define __attribute_nonnull__(params)
-+# endif
-+#endif
- #ifndef __nonnull
--# if __GNUC_PREREQ (3,3)
--# define __nonnull(params) __attribute__ ((__nonnull__ params))
-+# define __nonnull(params) __attribute_nonnull__ (params)
-+#endif
-+
-+/* The returns_nonnull function attribute marks the return type of the function
-+ as always being non-null. */
-+#ifndef __returns_nonnull
-+# if __GNUC_PREREQ (4, 9) || __glibc_has_attribute (__returns_nonnull__)
-+# define __returns_nonnull __attribute__ ((__returns_nonnull__))
- # else
--# define __nonnull(params)
-+# define __returns_nonnull
- # endif
- #endif
-
- /* If fortification mode, we warn about unused results of certain
- function calls which can lead to problems. */
--#if __GNUC_PREREQ (3,4)
-+#if __GNUC_PREREQ (3,4) || __glibc_has_attribute (__warn_unused_result__)
- # define __attribute_warn_unused_result__ \
- __attribute__ ((__warn_unused_result__))
- # if defined __USE_FORTIFY_LEVEL && __USE_FORTIFY_LEVEL > 0
-@@ -314,7 +416,7 @@
- #endif
-
- /* Forces a function to be always inlined. */
--#if __GNUC_PREREQ (3,2)
-+#if __GNUC_PREREQ (3,2) || __glibc_has_attribute (__always_inline__)
- /* The Linux kernel defines __always_inline in stddef.h (283d7573), and
- it conflicts with this definition. Therefore undefine it first to
- allow either header to be included first. */
-@@ -327,7 +429,7 @@
-
- /* Associate error messages with the source location of the call site rather
- than with the source location inside the function. */
--#if __GNUC_PREREQ (4,3)
-+#if __GNUC_PREREQ (4,3) || __glibc_has_attribute (__artificial__)
- # define __attribute_artificial__ __attribute__ ((__artificial__))
- #else
- # define __attribute_artificial__ /* Ignore */
-@@ -370,12 +472,14 @@
- run in pedantic mode if the uses are carefully marked using the
- `__extension__' keyword. But this is not generally available before
- version 2.8. */
--#if !__GNUC_PREREQ (2,8)
-+#if !(__GNUC_PREREQ (2,8) || defined __clang__)
- # define __extension__ /* Ignore */
- #endif
-
--/* __restrict is known in EGCS 1.2 and above. */
--#if !__GNUC_PREREQ (2,92)
-+/* __restrict is known in EGCS 1.2 and above, and in clang.
-+ It works also in C++ mode (outside of arrays), but only when spelled
-+ as '__restrict', not 'restrict'. */
-+#if !(__GNUC_PREREQ (2,92) || __clang_major__ >= 3)
- # if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
- # define __restrict restrict
- # else
-@@ -385,8 +489,9 @@
-
- /* ISO C99 also allows to declare arrays as non-overlapping. The syntax is
- array_name[restrict]
-- GCC 3.1 supports this. */
--#if __GNUC_PREREQ (3,1) && !defined __GNUG__
-+ GCC 3.1 and clang support this.
-+ This syntax is not usable in C++ mode. */
-+#if (__GNUC_PREREQ (3,1) || __clang_major__ >= 3) && !defined __cplusplus
- # define __restrict_arr __restrict
- #else
- # ifdef __GNUC__
-@@ -401,7 +506,7 @@
- # endif
- #endif
-
--#if __GNUC__ >= 3
-+#if (__GNUC__ >= 3) || __glibc_has_builtin (__builtin_expect)
- # define __glibc_unlikely(cond) __builtin_expect ((cond), 0)
- # define __glibc_likely(cond) __builtin_expect ((cond), 1)
- #else
-@@ -409,15 +514,10 @@
- # define __glibc_likely(cond) (cond)
- #endif
-
--#ifdef __has_attribute
--# define __glibc_has_attribute(attr) __has_attribute (attr)
--#else
--# define __glibc_has_attribute(attr) 0
--#endif
--
- #if (!defined _Noreturn \
- && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \
-- && !__GNUC_PREREQ (4,7))
-+ && !(__GNUC_PREREQ (4,7) \
-+ || (3 < __clang_major__ + (5 <= __clang_minor__))))
- # if __GNUC_PREREQ (2,8)
- # define _Noreturn __attribute__ ((__noreturn__))
- # else
-@@ -434,22 +534,63 @@
- # define __attribute_nonstring__
- #endif
-
-+/* Undefine (also defined in libc-symbols.h). */
-+#undef __attribute_copy__
-+#if __GNUC_PREREQ (9, 0)
-+/* Copies attributes from the declaration or type referenced by
-+ the argument. */
-+# define __attribute_copy__(arg) __attribute__ ((__copy__ (arg)))
-+#else
-+# define __attribute_copy__(arg)
-+#endif
-+
- #if (!defined _Static_assert && !defined __cplusplus \
- && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \
-- && (!__GNUC_PREREQ (4, 6) || defined __STRICT_ANSI__))
-+ && (!(__GNUC_PREREQ (4, 6) || __clang_major__ >= 4) \
-+ || defined __STRICT_ANSI__))
- # define _Static_assert(expr, diagnostic) \
- extern int (*__Static_assert_function (void)) \
- [!!sizeof (struct { int __error_if_negative: (expr) ? 2 : -1; })]
- #endif
-
--/* The #ifndef lets Gnulib avoid including these on non-glibc
-- platforms, where the includes typically do not exist. */
--#ifndef __WORDSIZE
-+/* Gnulib avoids including these, as they don't work on non-glibc or
-+ older glibc platforms. */
-+#ifndef __GNULIB_CDEFS
- # include
- # include
- #endif
-
--#if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH
-+#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
-+# ifdef __REDIRECT
-+
-+/* Alias name defined automatically. */
-+# define __LDBL_REDIR(name, proto) ... unused__ldbl_redir
-+# define __LDBL_REDIR_DECL(name) \
-+ extern __typeof (name) name __asm (__ASMNAME ("__" #name "ieee128"));
-+
-+/* Alias name defined automatically, with leading underscores. */
-+# define __LDBL_REDIR2_DECL(name) \
-+ extern __typeof (__##name) __##name \
-+ __asm (__ASMNAME ("__" #name "ieee128"));
-+
-+/* Alias name defined manually. */
-+# define __LDBL_REDIR1(name, proto, alias) ... unused__ldbl_redir1
-+# define __LDBL_REDIR1_DECL(name, alias) \
-+ extern __typeof (name) name __asm (__ASMNAME (#alias));
-+
-+# define __LDBL_REDIR1_NTH(name, proto, alias) \
-+ __REDIRECT_NTH (name, proto, alias)
-+# define __REDIRECT_NTH_LDBL(name, proto, alias) \
-+ __LDBL_REDIR1_NTH (name, proto, __##alias##ieee128)
-+
-+/* Unused. */
-+# define __REDIRECT_LDBL(name, proto, alias) ... unused__redirect_ldbl
-+# define __LDBL_REDIR_NTH(name, proto) ... unused__ldbl_redir_nth
-+
-+# else
-+_Static_assert (0, "IEEE 128-bits long double requires redirection on this platform");
-+# endif
-+#elif defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH
- # define __LDBL_COMPAT 1
- # ifdef __REDIRECT
- # define __LDBL_REDIR1(name, proto, alias) __REDIRECT (name, proto, alias)
-@@ -458,6 +599,8 @@
- # define __LDBL_REDIR1_NTH(name, proto, alias) __REDIRECT_NTH (name, proto, alias)
- # define __LDBL_REDIR_NTH(name, proto) \
- __LDBL_REDIR1_NTH (name, proto, __nldbl_##name)
-+# define __LDBL_REDIR2_DECL(name) \
-+ extern __typeof (__##name) __##name __asm (__ASMNAME ("__nldbl___" #name));
- # define __LDBL_REDIR1_DECL(name, alias) \
- extern __typeof (name) name __asm (__ASMNAME (#alias));
- # define __LDBL_REDIR_DECL(name) \
-@@ -468,11 +611,13 @@
- __LDBL_REDIR1_NTH (name, proto, __nldbl_##alias)
- # endif
- #endif
--#if !defined __LDBL_COMPAT || !defined __REDIRECT
-+#if (!defined __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0) \
-+ || !defined __REDIRECT
- # define __LDBL_REDIR1(name, proto, alias) name proto
- # define __LDBL_REDIR(name, proto) name proto
- # define __LDBL_REDIR1_NTH(name, proto, alias) name proto __THROW
- # define __LDBL_REDIR_NTH(name, proto) name proto __THROW
-+# define __LDBL_REDIR2_DECL(name)
- # define __LDBL_REDIR_DECL(name)
- # ifdef __REDIRECT
- # define __REDIRECT_LDBL(name, proto, alias) __REDIRECT (name, proto, alias)
-@@ -503,7 +648,7 @@
- check is required to enable the use of generic selection. */
- #if !defined __cplusplus \
- && (__GNUC_PREREQ (4, 9) \
-- || __glibc_clang_has_extension (c_generic_selections) \
-+ || __glibc_has_extension (c_generic_selections) \
- || (!defined __GNUC__ && defined __STDC_VERSION__ \
- && __STDC_VERSION__ >= 201112L))
- # define __HAVE_GENERIC_SELECTION 1
-@@ -511,4 +656,50 @@
- # define __HAVE_GENERIC_SELECTION 0
- #endif
-
-+#if __GNUC_PREREQ (10, 0)
-+/* Designates a 1-based positional argument ref-index of pointer type
-+ that can be used to access size-index elements of the pointed-to
-+ array according to access mode, or at least one element when
-+ size-index is not provided:
-+ access (access-mode, [, ]) */
-+# define __attr_access(x) __attribute__ ((__access__ x))
-+/* For _FORTIFY_SOURCE == 3 we use __builtin_dynamic_object_size, which may
-+ use the access attribute to get object sizes from function definition
-+ arguments, so we can't use them on functions we fortify. Drop the object
-+ size hints for such functions. */
-+# if __USE_FORTIFY_LEVEL == 3
-+# define __fortified_attr_access(a, o, s) __attribute__ ((__access__ (a, o)))
-+# else
-+# define __fortified_attr_access(a, o, s) __attr_access ((a, o, s))
-+# endif
-+# if __GNUC_PREREQ (11, 0)
-+# define __attr_access_none(argno) __attribute__ ((__access__ (__none__, argno)))
-+# else
-+# define __attr_access_none(argno)
-+# endif
-+#else
-+# define __fortified_attr_access(a, o, s)
-+# define __attr_access(x)
-+# define __attr_access_none(argno)
-+#endif
-+
-+#if __GNUC_PREREQ (11, 0)
-+/* Designates dealloc as a function to call to deallocate objects
-+ allocated by the declared function. */
-+# define __attr_dealloc(dealloc, argno) \
-+ __attribute__ ((__malloc__ (dealloc, argno)))
-+# define __attr_dealloc_free __attr_dealloc (__builtin_free, 1)
-+#else
-+# define __attr_dealloc(dealloc, argno)
-+# define __attr_dealloc_free
-+#endif
-+
-+/* Specify that a function such as setjmp or vfork may return
-+ twice. */
-+#if __GNUC_PREREQ (4, 1)
-+# define __attribute_returns_twice__ __attribute__ ((__returns_twice__))
-+#else
-+# define __attribute_returns_twice__ /* Ignore. */
-+#endif
-+
- #endif /* sys/cdefs.h */
diff --git a/man-db-2.10.0.tar.xz b/man-db-2.10.0.tar.xz
new file mode 100644
index 0000000..4eca938
--- /dev/null
+++ b/man-db-2.10.0.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0a8629022f7117dc7fc6473c6fdb14913b24b106059bb056abee87dbd6070c79
+size 1888196
diff --git a/man-db-2.10.0.tar.xz.asc b/man-db-2.10.0.tar.xz.asc
new file mode 100644
index 0000000..9cfa02f
--- /dev/null
+++ b/man-db-2.10.0.tar.xz.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQIzBAABCAAdFiEErApP8SYRtvzPAcEROTWH2X2GUAsFAmH9QJ4ACgkQOTWH2X2G
+UAuKBQ/8CfdjtSaWWhtEde7f56MeuIU8W8wkl2E0g2DM+I7UUMhs3DUmD5crC9ah
+sLPcSzRr60wv9nLwG7SJSxsMAaUjAa2R78UCweRM4ikxoaBAWkKSSzxAjxeP8o0H
+5m/vWepcUHij5MuXvXVBrYa4NGRhdfJo6BXrFDZl4qCFF06UiVZqTg35JvX2zWil
+ZayQwlkN5h7ZPuNNmzTiQ8obB+f3n/GOXQ4SE4GKoImhgEvj++Moyo6PiR5CB1G4
+RaR62VoRuL4rmQS2dHMVRk7oD8VU3rg7cNpUh1QOOnyKOM0T7cjgIurXU2Z/pZ0x
+op7VCOmllOprfBJVREs7cQmfQL7CDUGTzfmFMc+MEFW6LM6tl6Wr/6+tKYpLAiH/
+s2ylyOUVCxZay5eXEIcWnSpDxPWPRIQURdqbanobJ5Eo0gP1O23cycOeypqILTPF
+t3tCAwiWbj/Je4te6paFPJ3rFYRv3xFBVr3ltaahDAj+LTbA5pYkTpPFwSqYkO3D
+EJYYvjOzX6+rdwJuLCe2Ytgy9fdT5p1o7Cm4KusUWfnHKCMNJ+1/So02LayfHMKN
+wPQmjXhPVMsXKvt88a9wfK8KVLRVw+hhGURKQMrf3f/hbYwBU8zUxNWxq8NagpER
+S9FudI2n5glV3KHawJyK0mlfdK34qMra26cC8ekL3OyJBuXJHVA=
+=rJ2k
+-----END PGP SIGNATURE-----
diff --git a/man-db-2.6.3-chinese.dif b/man-db-2.6.3-chinese.dif
index e21b047..58a396f 100644
--- a/man-db-2.6.3-chinese.dif
+++ b/man-db-2.6.3-chinese.dif
@@ -4,7 +4,7 @@
--- lib/encodings.c
+++ lib/encodings.c 2016-12-15 14:07:01.072034899 +0000
-@@ -224,6 +224,7 @@ static struct charset_entry charset_tabl
+@@ -228,6 +228,7 @@ static struct charset_entry charset_tabl
{ "EUC-CN", "nippon" },
{ "EUC-JP", "nippon" },
{ "EUC-TW", "nippon" },
@@ -12,7 +12,7 @@
{ "GBK", "nippon" },
# else /* !MULTIBYTE_GROFF */
/* If we have a smarter version of groff, this is better dealt with
-@@ -311,6 +312,7 @@ static struct less_charset_entry less_ch
+@@ -315,6 +316,7 @@ static struct less_charset_entry less_ch
#ifdef MULTIBYTE_GROFF
{ "CP1251", "windows", NULL },
@@ -20,7 +20,7 @@
{ "EUC-JP", "iso8859", "japanese-ujis" },
{ "KOI8-R", "koi8-r", NULL },
/* close enough? */
-@@ -502,6 +504,13 @@ char *get_page_encoding (const char *lan
+@@ -453,6 +455,13 @@ char *get_page_encoding (const char *lan
* roff encoding = ISO-8859-15
* output encoding = ISO-8859-15
* ISO-8859-15 -> groff -Tascii8 -> ISO-8859-15 -> iconv -> UTF-8
@@ -34,7 +34,7 @@
*/
const char *get_source_encoding (const char *lang)
{
-@@ -667,7 +676,7 @@ static int compatible_encodings (const c
+@@ -620,7 +629,7 @@ static int compatible_encodings (const c
*/
if ((STREQ (input, "BIG5") || STREQ (input, "BIG5HKSCS") ||
STREQ (input, "EUC-JP") ||
@@ -43,7 +43,7 @@
STREQ (input, "EUC-KR") ||
STREQ (input, "EUC-TW")) &&
STREQ (output, "UTF-8"))
-@@ -771,7 +780,7 @@ const char *get_roff_encoding (const cha
+@@ -724,7 +733,7 @@ const char *get_roff_encoding (const cha
STRNEQ (ctype, "zh_HK", 5) ||
STRNEQ (ctype, "zh_SG", 5) ||
STRNEQ (ctype, "zh_TW", 5))
diff --git a/man-db-2.6.3-listall.dif b/man-db-2.6.3-listall.dif
index 6d81b6a..7eda19e 100644
--- a/man-db-2.6.3-listall.dif
+++ b/man-db-2.6.3-listall.dif
@@ -1,10 +1,28 @@
---
- src/man.c | 180 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 178 insertions(+), 2 deletions(-)
+ man/man1/man.man1 | 8 ++
+ src/man.c | 180 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 186 insertions(+), 2 deletions(-)
+--- man/man1/man.man1
++++ man/man1/man.man1 2022-08-17 13:11:29.974677243 +0000
+@@ -1226,6 +1226,14 @@ However, some users want to see them any
+ .RB $ MAN_KEEP_STDERR
+ is set to any non-empty value, error output will be displayed as usual.
+ .TP
++.if !'po4a'hide' .BR MAN_POSIXLY_CORRECT
++If many man pages are available corresponding to the requested one,
++.B %man%
++will display them in a list, unless
++.RB $ MAN_POSIXLY_CORRECT
++is set, in which case the first page in the list will be displayed
++automatically.
++.TP
+ .if !'po4a'hide' .B MAN_DISABLE_SECCOMP
+ On Linux,
+ .B %man%
--- src/man.c
-+++ src/man.c 2018-11-23 13:56:09.131098574 +0000
-@@ -3573,12 +3573,141 @@ static int locate_page (const char *manp
++++ src/man.c 2022-08-17 13:10:07.436205495 +0000
+@@ -3572,12 +3572,141 @@ static int locate_page (const char *manp
return found;
}
@@ -146,7 +164,7 @@
global_manpath = is_global_mandir (candp->path);
if (!global_manpath)
drop_effective_privs ();
-@@ -3600,9 +3729,56 @@ static int display_pages (struct candida
+@@ -3599,9 +3728,56 @@ static int display_pages (struct candida
regain_effective_privs ();
if (found && !findall)
@@ -205,20 +223,3 @@
return found;
}
---- man/man1/man.man1
-+++ man/man1/man.man1 2016-12-15 14:10:47.883461034 +0000
-@@ -1344,6 +1344,14 @@ However, some users want to see them any
- .RB $ MAN_KEEP_STDERR
- is set to any non-empty value, error output will be displayed as usual.
- .TP
-+.if !'po4a'hide' .BR MAN_POSIXLY_CORRECT
-+If many man pages are available corresponding to the requested one,
-+.B %man%
-+will display them in a list, unless
-+.RB $ MAN_POSIXLY_CORRECT
-+is set, in which case the first page in the list will be displayed
-+automatically.
-+.TP
- .if !'po4a'hide' .BR LANG , " LC_MESSAGES"
- Depending on system and implementation, either or both of
- .RB $ LANG
diff --git a/man-db-2.6.3-man0.dif b/man-db-2.6.3-man0.dif
index f289aac..cd6949f 100644
--- a/man-db-2.6.3-man0.dif
+++ b/man-db-2.6.3-man0.dif
@@ -1,6 +1,6 @@
--- man/man1/man.man1
+++ man/man1/man.man1 2018-11-23 14:23:22.531297359 +0000
-@@ -186,6 +186,9 @@ numbers of the manual followed by the ty
+@@ -93,6 +93,9 @@ numbers of the manual followed by the ty
.TS
tab (@);
l lx.
diff --git a/man-db-2.7.1-security4.dif b/man-db-2.7.1-security4.dif
deleted file mode 100644
index 5f903ed..0000000
--- a/man-db-2.7.1-security4.dif
+++ /dev/null
@@ -1,43 +0,0 @@
----
- src/mandb.c | 12 +++++++++++-
- 1 file changed, 11 insertions(+), 1 deletion(-)
-
---- src/mandb.c
-+++ src/mandb.c 2018-11-23 12:50:40.139688661 +0000
-@@ -442,18 +442,27 @@ static int mandb (struct dbpaths *dbpath
- int amount;
- char *dbname;
- int should_create;
-+ int fd;
-
- dbname = mkdbname (catpath);
- database = xasprintf ("%s/%d", catpath, getpid ());
-
-+ /* Just for the case that catpath isn't a system catpath */
-+ drop_effective_privs ();
-+ fd = open (database, O_WRONLY | O_CREAT | O_EXCL, 0644);
-+ regain_effective_privs ();
-+ if (fd < 0)
-+ error (FATAL, errno, _("can't create a temporary filename"));
-+ close(fd);
-+
- if (!quiet)
- printf (_("Processing manual pages under %s...\n"), manpath);
-
- if (!STREQ (catpath, manpath)) {
- char *cachedir_tag;
-- int fd;
- int cachedir_tag_exists = 0;
-
-+ drop_effective_privs ();
- cachedir_tag = xasprintf ("%s/CACHEDIR.TAG", catpath);
- fd = open (cachedir_tag, O_RDONLY);
- if (fd < 0) {
-@@ -476,6 +485,7 @@ static int mandb (struct dbpaths *dbpath
- chown_if_possible (cachedir_tag);
- check_chmod (cachedir_tag, DBMODE);
- }
-+ regain_effective_privs ();
- free (cachedir_tag);
- }
-
diff --git a/man-db-2.7.1-zio.dif b/man-db-2.7.1-zio.dif
index 013cdcc..da26b8e 100644
--- a/man-db-2.7.1-zio.dif
+++ b/man-db-2.7.1-zio.dif
@@ -1,24 +1,24 @@
---
config.h.in | 3 ++
- configure.ac | 52 ++++++++++++++++++++++++++++++++++++++++++++
- lib/decompress.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 120 insertions(+)
+ configure.ac | 52 ++++++++++++++++++++++++++++++++++++++++
+ src/decompress.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 3 files changed, 124 insertions(+), 1 deletion(-)
--- config.h.in
-+++ config.h.in 2018-11-23 13:11:12.684900437 +0000
-@@ -896,6 +896,9 @@
++++ config.h.in 2022-08-18 06:45:49.997898305 +0000
+@@ -1003,6 +1003,9 @@
/* Define to 1 if you have the `z' library (-lz). */
#undef HAVE_LIBZ
+/* Define to 1 if you have libzio for opening compressed manuals */
+#undef HAVE_ZIO
+
- /* Define to 1 if you have the header file. */
- #undef HAVE_LIMITS_H
+ /* Define to 1 if the bcrypt library is guaranteed to be present. */
+ #undef HAVE_LIB_BCRYPT
--- configure.ac
-+++ configure.ac 2018-11-23 13:09:58.982262008 +0000
-@@ -34,6 +34,18 @@ MAN_ARG_DEVICE
++++ configure.ac 2022-08-18 06:45:49.997898305 +0000
+@@ -35,6 +35,18 @@ MAN_ARG_DEVICE
MAN_ARG_DB
MAN_ARG_CONFIG_FILE
MAN_ARG_SECTIONS
@@ -37,9 +37,9 @@
MAN_ARG_AUTOMATIC_CREATE
MAN_ARG_AUTOMATIC_UPDATE
MAN_ARG_CATS
-@@ -346,6 +358,46 @@ AC_SUBST([unxz])
- AC_SUBST([unlzip])
- AC_SUBST([unzstd])
+@@ -388,6 +400,46 @@ AC_DEFINE_UNQUOTED([PROG_UNXZ], ["$unxz"
+ AC_DEFINE_UNQUOTED([PROG_UNLZIP], ["$unlzip"], [Program to use as unlzip.])
+ AC_DEFINE_UNQUOTED([PROG_UNZSTD], ["$unzstd"], [Program to use as unzstd.])
MAN_COMPRESS_LIB([z], [gzopen])
+dnl Check for zlib and libbz2 libraries to use this together
+dnl with SUSE's libzio to open compressed info files.
@@ -85,9 +85,16 @@
# Check for various header files and associated libraries.
--- src/decompress.c
-+++ src/decompress.c 2018-11-23 13:12:59.714923151 +0000
-@@ -38,6 +38,10 @@
++++ src/decompress.c 2022-08-18 06:54:42.008671417 +0000
+@@ -38,12 +38,17 @@
+ # include "zlib.h"
+ #endif /* HAVE_LIBZ */
++#include "appendstr.h"
+ #include "attribute.h"
+ #include "minmax.h"
+ #include "xalloc.h"
+ #include "xstrndup.h"
#include "xvasprintf.h"
+#ifdef HAVE_ZIO
@@ -97,7 +104,7 @@
#include "manconfig.h"
#include "comp_src.h"
#include "pipeline.h"
-@@ -69,6 +73,32 @@ static void decompress_zlib (void *data
+@@ -183,6 +188,33 @@ static decompress *decompress_try_zlib (
#endif /* HAVE_LIBZ */
@@ -107,11 +114,11 @@
+{
+ const char *what = (const char*)data;
+ FILE *file;
-+
++
+ file = fdzopen(dup (fileno (stdin)), "r", what);
+ if (!file)
+ return;
-+
++
+ for (;;) {
+ char buffer[4096];
+ int r = fread(buffer, sizeof(char), sizeof(buffer), file);
@@ -120,17 +127,18 @@
+ if (fwrite (buffer, 1, (size_t) r, stdout) < (size_t) r)
+ break;
+ }
-+
++
+ fclose(file);
+ return;
+}
+
+#endif /* HAVE_ZIO */
++
+
extern man_sandbox *sandbox;
- pipeline *decompress_open (const char *filename)
-@@ -85,6 +115,37 @@ pipeline *decompress_open (const char *f
+ decompress *decompress_open (const char *filename, int flags)
+@@ -199,6 +231,38 @@ decompress *decompress_open (const char
if (stat (filename, &st) < 0 || S_ISDIR (st.st_mode))
return NULL;
@@ -138,7 +146,7 @@
+ ext = strrchr (filename, '.');
+ if (ext) {
+ const char *opt;
-+ char *name;
++ char *name = NULL;
+
+ if (STREQ (ext, ".gz"))
+ opt = "g";
@@ -156,11 +164,12 @@
+ goto nozio;
+
+ /* informational only; no shell quoting concerns */
-+ name = appendstr (NULL, "libzio < ", filename, NULL);
++ name = appendstr (NULL, "libzio < ", filename, (void *) 0);
+ cmd = pipecmd_new_function (name, &decompress_zio, NULL,
-+ opt);
++ (void *)opt);
++ pipecmd_pre_exec (cmd, sandbox_load, sandbox_free, sandbox);
++ p = pipeline_new_commands (cmd, (void *) 0);
+ free (name);
-+ p = pipeline_new_commands (cmd, NULL);
+ goto got_pipeline;
+ }
+#endif /* HAVE_ZIO */
@@ -168,7 +177,7 @@
#ifdef HAVE_LIBZ
filename_len = strlen (filename);
if (filename_len > 3 && STREQ (filename + filename_len - 3, ".gz")) {
-@@ -96,7 +157,11 @@ pipeline *decompress_open (const char *f
+@@ -216,7 +280,11 @@ decompress *decompress_open (const char
}
#endif /* HAVE_LIBZ */
@@ -180,3 +189,12 @@
if (ext) {
++ext;
+@@ -309,7 +377,7 @@ void decompress_inprocess_replace (decom
+
+ void decompress_start (decompress *d)
+ {
+- if (d->tag == DECOMPRESS_PIPELINE)
++ if (d && d->tag == DECOMPRESS_PIPELINE)
+ pipeline_start (d->u.p);
+ }
+
diff --git a/man-db-2.9.4-alternitive.dif b/man-db-2.9.4-alternitive.dif
index 3c3fecc..8856a46 100644
--- a/man-db-2.9.4-alternitive.dif
+++ b/man-db-2.9.4-alternitive.dif
@@ -1,6 +1,9 @@
-diff -u orig/man.c patch/man.c
---- src/man.c 2021-06-07 22:06:42.937525661 +0200
-+++ src/man.c 2021-06-08 11:46:40.369916468 +0200
+---
+ src/man.c | 23 ++++++++++++++++++++---
+ 1 file changed, 20 insertions(+), 3 deletions(-)
+
+--- src/man.c
++++ src/man.c 2022-08-17 13:59:26.937398386 +0000
@@ -57,6 +57,7 @@
#include
#include
@@ -8,34 +11,33 @@ diff -u orig/man.c patch/man.c
+#include
#include "argp.h"
- #include "dirname.h"
-@@ -4066,11 +4067,25 @@
- int *found)
+ #include "attribute.h"
+@@ -4080,9 +4081,25 @@ static void locate_page_in_manpath (cons
{
char *mp;
-+ int count = 0;
-- GL_LIST_FOREACH_START (manpathlist, mp)
+- GL_LIST_FOREACH (manpathlist, mp)
- *found += locate_page (mp, page_section, page_name,
- candidates);
-- GL_LIST_FOREACH_END (manpathlist);
-+ GL_LIST_FOREACH_START (manpathlist, mp) {
-+ count = locate_page (mp, page_section, page_name, candidates);
-+ if (count == 0) {
-+ /* Checking if there has been defined another manpage defined in the */
-+ /* priorities of libalternatives. */
-+ char **alternitives = libalts_get_default_manpages(page_name);
-+ for (char **alter = alternitives; *alter; alter++){
-+ char *p_name, *p_section;
-+ split_page_name (*alter, &p_name, &p_section);
-+ if (p_name && strlen(p_name)>0 && p_section && strlen(p_section)>0)
-+ count = locate_page (mp, p_section, p_name, candidates);
-+ free(*alter);
-+ }
-+ free(alternitives);
-+ }
-+ *found += count;
-+ } GL_LIST_FOREACH_END (manpathlist);
++ GL_LIST_FOREACH (manpathlist, mp) {
++ int count = locate_page (mp, page_section, page_name, candidates);
++ if (count == 0) {
++ /* Checking if there has been defined another manpage defined in the
++ * priorities of libalternatives.
++ */
++ char **alternitives = libalts_get_default_manpages(page_name);
++ for (char **alter = alternitives; *alter; alter++) {
++ char *p_name, *p_section;
++ split_page_name (*alter, &p_name, &p_section);
++ if (p_name && strlen(p_name) > 0 &&
++ p_section && strlen(p_section) > 0)
++ count = locate_page (mp, p_section, p_name, candidates);
++ free(*alter);
++ }
++ free(alternitives);
++ }
++ *found += count;
++ }
}
/*
diff --git a/man-db-2.9.4-no-chown.patch b/man-db-2.9.4-no-chown.patch
index 832d3bc..67968fb 100644
--- a/man-db-2.9.4-no-chown.patch
+++ b/man-db-2.9.4-no-chown.patch
@@ -1,7 +1,7 @@
diff -Nur man-db-2.9.4/src/Makefile.am new/src/Makefile.am
--- man-db-2.9.4/src/Makefile.am 2020-01-01 16:11:59.000000000 +0100
+++ new/src/Makefile.am 2021-05-31 23:36:22.062144466 +0200
-@@ -192,16 +192,7 @@
+@@ -211,16 +211,7 @@
all-am: apropos$(EXEEXT)
install-exec-hook:
diff --git a/man-db-2.9.4.patch b/man-db-2.9.4.patch
index 782b725..b0d678d 100644
--- a/man-db-2.9.4.patch
+++ b/man-db-2.9.4.patch
@@ -1,11 +1,25 @@
+---
+ configure.ac | 18 ++++++++-
+ include/comp_src.h | 2 -
+ lib/security.c | 30 ++++++++++++++++
+ mk_catdirs | 30 ++++++++++++++++
+ src/check_mandirs.c | 33 +++++++++++------
+ src/lexgrog.l | 64 +++++++++++++++++++++++++---------
+ src/man.c | 97 +++++++++++++++++++++++++++++++---------------------
+ src/man_db.conf.in | 17 +++++++--
+ src/mandb.c | 18 ++++++++-
+ src/manp.c | 2 -
+ src/straycats.c | 1
+ src/ult_src.c | 9 +++-
+ 12 files changed, 242 insertions(+), 79 deletions(-)
+
diff --git a/configure.ac b/configure.ac
-index f4fe224..89fb860 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -252,6 +252,14 @@ then
- fi
+@@ -289,6 +289,14 @@ fi
MAN_CHECK_PROGS([eqn], [EQN], [use EQN to preprocess equations], [eqn geqn])
+ AC_DEFINE_UNQUOTED([PROG_EQN], ["$eqn"], [Program to use as eqn.])
+MAN_CHECK_PROGS([geqn], [GEQN], [use GEQN to preprocess equations], [geqn])
+dnl
+dnl if geqn is found and geqn is identical with eqn we use a GNU eqn
@@ -17,7 +31,7 @@ index f4fe224..89fb860 100644
MAN_CHECK_PROGS([neqn], [NEQN], [use NEQN to preprocess equations for character devices], [neqn gneqn])
# If we fail to find an neqn, use eqn and try to force it to output for an
# ascii device. As this is only relevant for equations (?), not using latin1
-@@ -295,9 +303,15 @@ then
+@@ -339,9 +347,15 @@ then
compress_ext="gz"
fi
MAN_CHECK_PROGS([compress], [COMPRESS], [use COMPRESS as UNIX compression utility], [compress])
@@ -35,25 +49,23 @@ index f4fe224..89fb860 100644
if test -z "$gzip"
then
compressor="$compress -c"
-diff --git a/include/comp_src.h.in b/include/comp_src.h.in
-index bc5d601..39f5f0d 100644
---- a/include/comp_src.h.in
-+++ b/include/comp_src.h.in
+diff --git a/include/comp_src.h b/include/comp_src.h
+--- a/include/comp_src.h
++++ b/include/comp_src.h
@@ -51,7 +51,7 @@ struct compression comp_list[] = {
#endif /* HAVE_GZIP */
/* If we have compress, incorporate the following */
-#ifdef HAVE_COMPRESS
+#if defined(HAVE_COMPRESS) || defined(HAVE_GZIP)
- {UNCOMPRESS, "Z", NULL},
+ {PROG_UNCOMPRESS, "Z", NULL},
/* Else if we have gzip, incorporate the following */
#elif defined (HAVE_GZIP)
diff --git a/lib/security.c b/lib/security.c
-index 55f2d85..8524d1c 100644
--- a/lib/security.c
+++ b/lib/security.c
-@@ -79,6 +79,11 @@ static void gripe_set_euid (void)
- error (FATAL, errno, _("can't set effective uid"));
+@@ -82,6 +82,11 @@ static void gripe_set_euid (void)
+ fatal (errno, _("can't set effective uid"));
}
+static inline void gripe_set_egid (void)
@@ -64,7 +76,7 @@ index 55f2d85..8524d1c 100644
#endif /* MAN_OWNER */
void init_security (void)
-@@ -165,6 +170,31 @@ void regain_effective_privs (void)
+@@ -168,6 +173,31 @@ void regain_effective_privs (void)
uid = euid;
gid = egid;
}
@@ -97,9 +109,7 @@ index 55f2d85..8524d1c 100644
}
diff --git a/mk_catdirs b/mk_catdirs
-new file mode 100644
-index 0000000..47eaa25
---- /dev/null
+--- a/mk_catdirs
+++ b/mk_catdirs
@@ -0,0 +1,30 @@
+#!/bin/sh
@@ -133,10 +143,9 @@ index 0000000..47eaa25
+
+test "$(id -u)" -ne 0 || chown man:man -R ${CACHE}
diff --git a/src/check_mandirs.c b/src/check_mandirs.c
-index d28a6be..90c5d58 100644
--- a/src/check_mandirs.c
+++ b/src/check_mandirs.c
-@@ -397,7 +397,7 @@ void chown_if_possible (const char *path _GL_UNUSED)
+@@ -417,7 +417,7 @@ void chown_if_possible (const char *path
#endif /* MAN_OWNER */
/* create the catman hierarchy if it doesn't exist */
@@ -145,15 +154,15 @@ index d28a6be..90c5d58 100644
{
char *manname, *catname;
-@@ -425,9 +425,14 @@ static void mkcatdirs (const char *mandir, const char *catdir)
+@@ -445,9 +445,14 @@ static void mkcatdirs (const char *mandi
int j;
regain_effective_privs ();
debug ("creating catdir hierarchy %s ", catdir);
- for (j = 1; j <= 9; j++) {
- catname[strlen (catname) - 1] = '0' + j;
- manname[strlen (manname) - 1] = '0' + j;
-+ for (j = 1; j <= 10; j++) {
-+ unsigned int c;
++ for (j = 0; j <= 10; j++) {
++ char c;
+ if (j < 10)
+ c = '0' + j;
+ else
@@ -163,7 +172,7 @@ index d28a6be..90c5d58 100644
if ((is_directory (manname) == 1)
&& (is_directory (catname) != 1)) {
if (mkdir (catname, 0755) < 0) {
-@@ -435,7 +440,7 @@ static void mkcatdirs (const char *mandir, const char *catdir)
+@@ -455,7 +460,7 @@ static void mkcatdirs (const char *mandi
error (0, 0, _("warning: cannot create catdir %s"), catname);
debug ("warning: cannot create catdir %s\n", catname);
} else
@@ -172,7 +181,7 @@ index d28a6be..90c5d58 100644
chown_if_possible (catname);
}
}
-@@ -583,15 +588,10 @@ static int testmandirs (const char *database,
+@@ -597,15 +602,10 @@ static int testmandirs (MYDBM_FILE dbf,
}
if (!quiet) {
@@ -188,17 +197,17 @@ index d28a6be..90c5d58 100644
+ fprintf (stderr, "\n");
}
add_dir_entries (dbf, path, mandir->d_name);
- MYDBM_CLOSE (dbf);
-@@ -698,7 +698,7 @@ int update_db (const char *database, const char *manpath, const char *catpath)
- dbf = NULL;
- }
- if (!dbf) {
-- debug ("failed to open %s O_RDONLY\n", database);
-+ debug ("failed to open database %s O_RDONLY\n", database);
- return EOF;
+ amount++;
+@@ -674,7 +674,7 @@ int update_db (MYDBM_FILE dbf, const cha
+ int new;
+
+ if (!ensure_db_open (dbf) || !sanity_check_db (dbf)) {
+- debug ("failed to open %s O_RDONLY\n", dbf->name);
++ debug ("failed to open database %s O_RDONLY\n", dbf->name);
+ return -1;
}
mtime = MYDBM_GET_TIME (dbf);
-@@ -904,6 +904,7 @@ static int purge_whatis (MYDBM_FILE dbf, const char *path, int cat,
+@@ -886,6 +886,7 @@ static int purge_whatis (MYDBM_FILE dbf,
"would delete\n", name, info->ext);
return 1;
}
@@ -206,9 +215,9 @@ index d28a6be..90c5d58 100644
}
/* Check that multi keys are correctly constructed. */
-@@ -1005,6 +1006,14 @@ int purge_missing (const char *database,
- continue;
+@@ -983,6 +984,14 @@ int purge_missing (MYDBM_FILE dbf, const
}
+ #pragma GCC diagnostic pop
+ /* Ignore db identifier keys. */
+ if (*MYDBM_DPTR (key) == '.' && *(key.dptr+1) == 0) {
@@ -222,19 +231,18 @@ index d28a6be..90c5d58 100644
if (!MYDBM_DPTR (content)) {
nextkey = MYDBM_NEXTKEY (dbf, key);
diff --git a/src/lexgrog.l b/src/lexgrog.l
-index cc31a70..1e3a0d5 100644
--- a/src/lexgrog.l
+++ b/src/lexgrog.l
-@@ -64,7 +64,7 @@
-
+@@ -69,7 +69,7 @@
+ #include "manconv.h"
#include "manconv_client.h"
-#define YY_READ_BUF_SIZE 1024
+#define YY_READ_BUF_SIZE YY_BUF_SIZE
#define MAX_NAME 8192
- #define ARRAY_SIZE(array) (sizeof (array) / sizeof ((array)[0]))
-@@ -212,15 +212,15 @@ static const struct macro perldocs[] = {
+ /* defines the ordered list of filters detected by lexgrog */
+@@ -228,15 +228,15 @@ static const struct macro perldocs[] = {
{ "R\"", "\"" }
};
@@ -249,7 +257,7 @@ index cc31a70..1e3a0d5 100644
-static void newline_found (void);
+static __inline__ void add_str_to_whatis (const char *string, size_t length);
+static __inline__ void add_char_to_whatis (unsigned char c);
-+static __inline__ void add_separator_to_whatis (const char *, size_t);
++static __inline__ void add_separator_to_whatis (void);
+static __inline__ void add_wordn_to_whatis (const char *string, size_t length);
+static __inline__ void add_word_to_whatis (const char *string);
+static __inline__ void add_glyph_to_whatis (const char *string, size_t length);
@@ -259,24 +267,24 @@ index cc31a70..1e3a0d5 100644
static char newname[MAX_NAME];
static char *p_name;
-@@ -229,6 +229,7 @@ static char filters[MAX_FILTERS];
+@@ -245,6 +245,7 @@ static char filters[MAX_FILTERS];
static int fill_mode;
static int waiting_for_quote;
+static int have_separator;
- static pipeline *decomp;
+ static decompress *decomp;
-@@ -246,7 +247,7 @@ static pipeline *decomp;
+@@ -262,7 +263,7 @@ static decompress *decomp;
%}
%option ecs meta-ecs
--%option 8bit batch caseful never-interactive
+-%option 8bit batch caseful never-interactive
+%option 8bit batch caseful never-interactive align
%option nostdinit
%option warn
%option noyywrap nounput
-@@ -285,8 +286,9 @@ font_change \\f([[:upper:]1-4]|\({upper}{2})
+@@ -301,8 +302,9 @@ font_change \\f([[:upper:]1-4]|\({upper}
size_change \\s[+-]?{digit}
style_change ({font_change}{size_change}?|{size_change}{font_change}?)
typeface \.(B[IR]?|I[BR]?|R[BI]|S[BM])
@@ -287,10 +295,10 @@ index cc31a70..1e3a0d5 100644
/* Please add to this list if you know how. */
/* Note that, since flex only supports UTF-8 by accident, character classes
-@@ -325,7 +327,26 @@ vi_name TÊN
+@@ -344,7 +346,26 @@ vi_name TÊN
zh_CN_name 名{blank}?(称|字){blank}?.*
zh_TW_name (名{blank}?(稱|字)|命令名){blank}?.*
- name ({bg_name}|{cs_name}|{da_name}|{de_name}|{en_name}|{eo_name}|{es_name}|{fi_name}|{fr_name}|{hu_name}|{id_name}|{it_name}|{ja_name}|{ko_name}|{latin_name}|{lt_name}|{nl_name}|{pl_name}|{ro_name}|{ru_name}|{sk_name}|{sr_name}|{srlatin_name}|{sv_name}|{ta_name}|{tr_name}|{uk_name}|{vi_name}|{zh_CN_name}|{zh_TW_name})
+ name ({ar_name}|{bg_name}|{cs_name}|{da_name}|{de_name}|{en_name}|{eo_name}|{es_name}|{fa_name}|{fi_name}|{fr_name}|{hu_name}|{id_name}|{it_name}|{ja_name}|{ko_name}|{latin_name}|{lt_name}|{nl_name}|{pl_name}|{ro_name}|{ru_name}|{sk_name}|{sr_name}|{srlatin_name}|{sv_name}|{ta_name}|{tr_name}|{uk_name}|{vi_name}|{zh_CN_name}|{zh_TW_name})
-name_sec {dbl_quote}?{style_change}?{name}{style_change}?({blank}*{dbl_quote})?
+name_sec {dbl_quote}?{style_change}?{name}{style_change}?({blank}*{dbl_quote})?\r?
+start {sec_request}{blank_eol}+{name_sec}
@@ -315,7 +323,7 @@ index cc31a70..1e3a0d5 100644
/* eptgrv : eqn, pic, tbl, grap, refer, vgrind */
tbl_request \.TS
-@@ -339,8 +360,13 @@ vgrind_request \.vS
+@@ -358,8 +379,13 @@ vgrind_request \.vS
%%
/* begin NAME section processing */
@@ -331,7 +339,7 @@ index cc31a70..1e3a0d5 100644
/* general text matching */
{
-@@ -415,6 +441,7 @@ vgrind_request \.vS
+@@ -434,6 +460,7 @@ vgrind_request \.vS
{bol}\.sp{blank}* | /* vertical spacing */
{bol}\.ig{blank}* | /* block comment */
{bol}\.de[1i]?{blank}* | /* macro definition */
@@ -339,7 +347,7 @@ index cc31a70..1e3a0d5 100644
{bol}\.i[ef]{blank}* | /* conditional */
{empty}{bol}.+ |
<> { /* terminate the string */
-@@ -462,8 +489,8 @@ vgrind_request \.vS
+@@ -481,8 +508,8 @@ vgrind_request \.vS
/* Toggle fill mode */
{
@@ -350,7 +358,7 @@ index cc31a70..1e3a0d5 100644
}
-{eol}{blank_eol}* /* strip continuations */
-@@ -472,6 +499,9 @@ vgrind_request \.vS
+@@ -491,6 +518,9 @@ vgrind_request \.vS
{
{next}{blank}*\\\((mi|hy|em|en){blank}* |
{next}{blank}*\\\[(mi|hy|em|en)\]{blank}* |
@@ -361,7 +369,6 @@ index cc31a70..1e3a0d5 100644
{next}{blank_eol}*[-\\]-{blank}+ |
{bol}\.Nd{blank}* {
diff --git a/src/man.c b/src/man.c
-index 6d1cba7..f72867c 100644
--- a/src/man.c
+++ b/src/man.c
@@ -56,6 +56,7 @@
@@ -371,8 +378,8 @@ index 6d1cba7..f72867c 100644
+#include
#include "argp.h"
- #include "dirname.h"
-@@ -106,6 +107,8 @@
+ #include "attribute.h"
+@@ -116,6 +117,8 @@
#ifdef MAN_OWNER
extern uid_t ruid;
extern uid_t euid;
@@ -381,7 +388,7 @@ index 6d1cba7..f72867c 100644
#endif /* MAN_OWNER */
/* the default preprocessor sequence */
-@@ -136,6 +139,11 @@ char *lang;
+@@ -146,6 +149,11 @@ char *lang;
static bool global_manpath; /* global or user manual page hierarchy? */
static int skip; /* page exists but has been skipped */
@@ -393,7 +400,7 @@ index 6d1cba7..f72867c 100644
#if defined _AIX || defined __sgi
char **global_argv;
-@@ -232,10 +240,10 @@ static int found_a_stray; /* found a straycat */
+@@ -241,10 +249,10 @@ static int found_a_stray; /* found a st
#ifdef MAN_CATS
static char *tmp_cat_file; /* for open_cat_stream(), close_cat_stream() */
static int created_tmp_cat; /* dto. */
@@ -405,7 +412,7 @@ index 6d1cba7..f72867c 100644
# ifdef TROFF_IS_GROFF
static bool ditroff;
-@@ -608,36 +616,6 @@ static void gripe_no_name (const char *sect)
+@@ -614,36 +622,6 @@ static void gripe_no_name (const char *s
exit (FAIL);
}
@@ -442,7 +449,7 @@ index 6d1cba7..f72867c 100644
#if defined(TROFF_IS_GROFF) || defined(HEIRLOOM_NROFF)
static int get_roff_line_length (void)
{
-@@ -1526,6 +1504,18 @@ static void setenv_less (pipecmd *cmd, const char *title)
+@@ -1533,6 +1511,18 @@ static void setenv_less (pipecmd *cmd, c
free (less_opts);
}
@@ -461,7 +468,7 @@ index 6d1cba7..f72867c 100644
static void add_output_iconv (pipeline *p,
const char *source, const char *target)
{
-@@ -1656,6 +1646,8 @@ static pipeline *make_display_command (const char *encoding, const char *title)
+@@ -1663,6 +1653,8 @@ static pipeline *make_display_command (c
if (pager_cmd) {
setenv_less (pager_cmd, title);
@@ -470,7 +477,7 @@ index 6d1cba7..f72867c 100644
pipeline_command (p, pager_cmd);
}
pipeline_ignore_signals (p, 1);
-@@ -1666,7 +1658,7 @@ static pipeline *make_display_command (const char *encoding, const char *title)
+@@ -1673,7 +1665,7 @@ static pipeline *make_display_command (c
return p;
}
@@ -479,7 +486,7 @@ index 6d1cba7..f72867c 100644
/* return a (malloced) temporary name in cat_file's directory */
static char *tmp_cat_filename (const char *cat_file)
{
-@@ -1694,7 +1686,6 @@ static char *tmp_cat_filename (const char *cat_file)
+@@ -1701,7 +1693,6 @@ static char *tmp_cat_filename (const cha
return name;
}
@@ -487,7 +494,7 @@ index 6d1cba7..f72867c 100644
/* If delete unlink tmp_cat, else commit tmp_cat to cat_file.
Return non-zero on error.
*/
-@@ -1767,6 +1758,7 @@ static int commit_tmp_cat (const char *cat_file, const char *tmp_cat,
+@@ -1774,6 +1765,7 @@ static int commit_tmp_cat (const char *c
return status;
}
@@ -495,7 +502,7 @@ index 6d1cba7..f72867c 100644
/* TODO: This should all be refactored after work on the decompression
* library is complete.
-@@ -1803,7 +1795,6 @@ static void cleanup_unlink (void *arg)
+@@ -1810,7 +1802,6 @@ static void cleanup_unlink (void *arg)
}
#ifdef MAN_CATS
@@ -503,23 +510,23 @@ index 6d1cba7..f72867c 100644
/* Return pipeline to write formatted manual page to for saving as cat file. */
static pipeline *open_cat_stream (const char *cat_file, const char *encoding)
{
-@@ -2025,6 +2016,7 @@ static void format_display (pipeline *decomp,
+@@ -2036,6 +2027,7 @@ static void format_display (decompress *
regain_effective_privs ();
}
+#ifdef MAN_CATS
/* "Display" a page in catman mode, which amounts to saving it. */
/* TODO: merge with format_display_and_save? */
- static void display_catman (const char *cat_file, pipeline *decomp,
-@@ -2068,6 +2060,7 @@ static void display_catman (const char *cat_file, pipeline *decomp,
+ static void display_catman (const char *cat_file, decompress *d,
+@@ -2081,6 +2073,7 @@ static void display_catman (const char *
pop_cleanup (cleanup_unlink, tmpcat);
free (tmpcat);
}
+#endif /* MAN_CATS */
- static void disable_hyphenation (void *data _GL_UNUSED)
+ static void disable_hyphenation (void *data MAYBE_UNUSED)
{
-@@ -2268,7 +2261,7 @@ static int display (const char *dir, const char *man_file,
+@@ -2283,7 +2276,7 @@ static int display (const char *dir, con
format_cmd = NULL;
decomp_errno = errno;
}
@@ -528,7 +535,7 @@ index 6d1cba7..f72867c 100644
/* Get modification time, for commit_tmp_cat(). */
if (man_file && *man_file) {
struct stat stb;
-@@ -2278,7 +2271,7 @@ static int display (const char *dir, const char *man_file,
+@@ -2293,7 +2286,7 @@ static int display (const char *dir, con
} else
man_modtime = get_stat_mtime (&stb);
}
@@ -537,7 +544,7 @@ index 6d1cba7..f72867c 100644
display_to_stdout = troff;
#ifdef TROFF_IS_GROFF
if (htmlout || gxditview)
-@@ -2418,6 +2411,7 @@ static int display (const char *dir, const char *man_file,
+@@ -2434,6 +2427,7 @@ static int display (const char *dir, con
}
if (printed)
putchar ('\n');
@@ -545,7 +552,7 @@ index 6d1cba7..f72867c 100644
} else if (catman) {
if (format) {
if (!save_cat)
-@@ -2430,6 +2424,7 @@ static int display (const char *dir, const char *man_file,
+@@ -2446,6 +2440,7 @@ static int display (const char *dir, con
format_cmd,
formatted_encoding);
}
@@ -553,29 +560,16 @@ index 6d1cba7..f72867c 100644
} else if (format) {
/* no cat or out of date */
pipeline *disp_cmd;
-@@ -2491,8 +2486,10 @@ static int display (const char *dir, const char *man_file,
-
- free (formatted_encoding);
-
-- pipeline_free (format_cmd);
-- pipeline_free (decomp);
-+ if (format_cmd)
-+ pipeline_free (format_cmd);
-+ if (decomp)
-+ pipeline_free (decomp);
-
- if (!prompt)
- prompt = found;
-@@ -3324,7 +3321,7 @@ static int display_database_check (struct candidate *candp)
+@@ -3347,7 +3342,7 @@ static int display_database_check (struc
#ifdef MAN_DB_UPDATES
if (!exists && !skip) {
- debug ("dbdelete_wrapper (%s, %p)\n",
-- candp->req_name, candp->source);
-+ candp->req_name, candp->source->addr);
- dbdelete_wrapper (candp->req_name, candp->source);
+ debug ("dbdelete_wrapper (%s, %p, %s)\n",
+- candp->req_name, candp->source, candp->path);
++ candp->req_name, candp->source->addr, candp->path);
+ dbdelete_wrapper (candp->req_name, candp->source, candp->path);
}
#endif /* MAN_DB_UPDATES */
-@@ -3753,17 +3750,20 @@ static int local_man_loop (const char *argv)
+@@ -3946,17 +3941,20 @@ static int local_man_loop (const char *a
/* Check that the file exists and isn't e.g. a directory */
if (stat (argv, &st)) {
error (0, errno, "%s", argv);
@@ -596,7 +590,7 @@ index 6d1cba7..f72867c 100644
return NOT_FOUND;
}
-@@ -3826,6 +3826,11 @@ executable_out:
+@@ -4019,6 +4017,11 @@ executable_out:
argv_abs = xstrdup (argv);
}
lang = lang_dir (argv_abs);
@@ -608,7 +602,7 @@ index 6d1cba7..f72867c 100644
free (argv_abs);
if (!display (NULL, argv, NULL, argv_base, NULL)) {
if (local_mf)
-@@ -4075,7 +4080,16 @@ int main (int argc, char *argv[])
+@@ -4274,7 +4277,16 @@ int main (int argc, char *argv[])
umask (022);
init_locale ();
@@ -626,7 +620,7 @@ index 6d1cba7..f72867c 100644
/* Use LANGUAGE only when LC_MESSAGES locale category is
* neither "C" nor "POSIX". */
if (internal_locale && strcmp (internal_locale, "C") &&
-@@ -4120,7 +4134,16 @@ int main (int argc, char *argv[])
+@@ -4319,7 +4331,16 @@ int main (int argc, char *argv[])
if (external)
do_extern (argc, argv);
@@ -641,10 +635,9 @@ index 6d1cba7..f72867c 100644
get_term (); /* stores terminal settings */
+#endif
- /* close this locale and reinitialise if a new locale was
+ /* close this locale and reinitialise if a new locale was
issued as an argument or in $MANOPT */
diff --git a/src/man_db.conf.in b/src/man_db.conf.in
-index 2942000..b2751f5 100644
--- a/src/man_db.conf.in
+++ b/src/man_db.conf.in
@@ -20,6 +20,14 @@
@@ -662,7 +655,7 @@ index 2942000..b2751f5 100644
#---------------------------------------------------------
# set up PATH to MANPATH mapping
# ie. what man tree holds man pages for what binary directory.
-@@ -34,8 +42,10 @@ MANPATH_MAP /usr/local/bin /usr/local/man
+@@ -34,8 +42,10 @@ MANPATH_MAP /usr/local/bin /usr/local/m
MANPATH_MAP /usr/local/bin /usr/local/share/man
MANPATH_MAP /usr/local/sbin /usr/local/man
MANPATH_MAP /usr/local/sbin /usr/local/share/man
@@ -686,10 +679,9 @@ index 2942000..b2751f5 100644
#
#---------------------------------------------------------
diff --git a/src/mandb.c b/src/mandb.c
-index 7a63d8d..786e77b 100644
--- a/src/mandb.c
+++ b/src/mandb.c
-@@ -203,6 +203,8 @@ struct dbpaths {
+@@ -207,6 +207,8 @@ struct dbpaths {
#ifdef MAN_OWNER
extern uid_t ruid;
extern uid_t euid;
@@ -698,7 +690,7 @@ index 7a63d8d..786e77b 100644
#endif /* MAN_OWNER */
static gl_list_t manpathlist;
-@@ -554,6 +556,8 @@ out:
+@@ -576,6 +578,8 @@ static int mandb (struct dbpaths *dbpath
return amount;
}
@@ -707,25 +699,25 @@ index 7a63d8d..786e77b 100644
static int process_manpath (const char *manpath, bool global_manpath,
gl_map_t tried_catdirs)
{
-@@ -601,6 +605,8 @@ static int process_manpath (const char *manpath, bool global_manpath,
- free (database);
- }
+@@ -617,6 +621,8 @@ static int process_manpath (const char *
+ } else
+ run_mandb = true;
+ mkcatdirs (manpath, catpath);
+
dbpaths = XZALLOC (struct dbpaths);
push_cleanup (cleanup, dbpaths, 0);
push_cleanup (cleanup_sigsafe, dbpaths, 1);
-@@ -616,7 +622,7 @@ static int process_manpath (const char *manpath, bool global_manpath,
- if (!opt_test && amount)
+@@ -636,7 +642,7 @@ static int process_manpath (const char *
+ if (!opt_test && (amount || new_purged || new_strays))
finish_up (dbpaths);
#ifdef MAN_OWNER
- if (global_manpath)
-+ if (global_manpath && (euid == 0 || ruid == 0))
++ if (global_manpath && (euid == 0 || ruid == 0))
do_chown (dbpaths);
#endif /* MAN_OWNER */
-@@ -819,8 +825,14 @@ int main (int argc, char *argv[])
+@@ -835,8 +841,14 @@ int main (int argc, char *argv[])
#ifdef MAN_OWNER
man_owner = get_man_owner ();
@@ -743,10 +735,9 @@ index 7a63d8d..786e77b 100644
read_config_file (user);
diff --git a/src/manp.c b/src/manp.c
-index 5441339..ac46d3f 100644
--- a/src/manp.c
+++ b/src/manp.c
-@@ -898,7 +898,7 @@ static char *def_path (enum config_flag flag)
+@@ -906,7 +906,7 @@ static char *def_path (enum config_flag
/* If we have complete config file failure... */
if (!manpath)
@@ -756,10 +747,9 @@ index 5441339..ac46d3f 100644
return manpath;
}
diff --git a/src/straycats.c b/src/straycats.c
-index b07083c..fbc0c1b 100644
--- a/src/straycats.c
+++ b/src/straycats.c
-@@ -37,6 +37,7 @@
+@@ -38,6 +38,7 @@
#include
#include
#include
@@ -768,12 +758,11 @@ index b07083c..fbc0c1b 100644
#include "canonicalize.h"
diff --git a/src/ult_src.c b/src/ult_src.c
-index 43e7a9b..93bd30c 100644
--- a/src/ult_src.c
+++ b/src/ult_src.c
-@@ -336,10 +336,15 @@ const char *ult_src (const char *name, const char *path,
+@@ -342,10 +342,15 @@ const char *ult_src (const char *name, c
}
- pipeline_start (decomp);
+ decompress_start (decomp);
- /* make sure that we skip over any comments */
+ /*
@@ -781,7 +770,7 @@ index 43e7a9b..93bd30c 100644
+ * ... even if we handle TCL/TK manual pages
+ */
do {
- buffer = pipeline_readline (decomp);
+ buffer = decompress_readline (decomp);
- } while (buffer && STRNEQ (buffer, ".\\\"", 3));
+ } while (buffer && *buffer &&
+ (STRNEQ (buffer, ".\\\"", 3) ||
@@ -789,3 +778,14 @@ index 43e7a9b..93bd30c 100644
include = test_for_include (buffer);
if (include) {
+--- a/src/tests/get-mtime.c
++++ b/src/tests/get-mtime.c 2022-08-18 10:24:04.881594094 +0000
+@@ -69,7 +69,7 @@ int main (int argc, char **argv)
+ if (lstat (path, &st) < 0)
+ fatal (errno, "can't lstat %s", path);
+ ts = get_stat_mtime (&st);
+- printf ("%ld.%09ld\n", (long) ts.tv_sec, ts.tv_nsec);
++ printf ("%ld.%0.09ld\n", (long) ts.tv_sec, ts.tv_nsec);
+
+ exit (OK);
+ }
diff --git a/man-db-2.9.4.tar.xz b/man-db-2.9.4.tar.xz
deleted file mode 100644
index 27fb692..0000000
--- a/man-db-2.9.4.tar.xz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b66c99edfad16ad928c889f87cf76380263c1609323c280b3a9e6963fdb16756
-size 1909020
diff --git a/man-db-2.9.4.tar.xz.asc b/man-db-2.9.4.tar.xz.asc
deleted file mode 100644
index 71c56f2..0000000
--- a/man-db-2.9.4.tar.xz.asc
+++ /dev/null
@@ -1,16 +0,0 @@
------BEGIN PGP SIGNATURE-----
-
-iQIzBAABCAAdFiEErApP8SYRtvzPAcEROTWH2X2GUAsFAmAhxZ0ACgkQOTWH2X2G
-UAtvuRAAnSJCWzUDJ3588STv6CoaTr2LPqvAWYaX8TirjaBArrHAkLbtljiACDTh
-FvuzJvpm8Uy0y8H1zoZsvyaxrP0z9K+SKxPAV7WURyHIk5eXCVN6AoIlZ4WkAbcx
-lcRP12vP8pReBqgTg/wKg/qcr3avwsP5gZFlk+tZegboqjzNwgntUuWwMvNP+8GI
-/MEZFAnJ51gm4JT32RyXmGmOwwq45bZVmjo44e2fuo1Ke3jZa0whL5HpDDVCVE/J
-45bdURdIkQLPo+XroKHCqp/T9z/wI+IFsbNoqr1BtMhc/HyvJHqnEoSVZ9oN5WAf
-yyo7XkMCcYAsBz0pGC314i/G78ojrhDgpWJe1PUiMTcHR+iIIjoR/7NjSH0Zm3Z/
-/K/wsv6iDeNArwzF1aYQ8+0AK2tfWfAXOqUY8Rop7XQR+Yx9Xbz9UK3Z2mHproMJ
-y+URF1QgtEOQakzejX4TKUGN94skFn2JukDqeqoVeaujLQ2zq6b49JPGeIzBNAQ8
-iQk5RZXJejIKhBe0SauVTsCjeM7SnQ4eSL6fCCkH4q8JfWI5R8mg5JUlf+kAYh81
-EMSCy8f3xNNQpi7Skj/Mfs636E9hkmgoEjtraps59D5/gpmBmjJn3cL/d8HTz4QE
-o2Xu92t2XWYlJZfEifdOaYXrT6KnguN8aIQDv4un9xW/B8uFjn0=
-=TXm9
------END PGP SIGNATURE-----
diff --git a/man.changes b/man.changes
index 173bf74..cc46194 100644
--- a/man.changes
+++ b/man.changes
@@ -1,3 +1,67 @@
+-------------------------------------------------------------------
+Thu Aug 18 10:25:21 UTC 2022 - Dr. Werner Fink
+
+- Avoid that mandb-symlink-target-timestamp fools us
+
+-------------------------------------------------------------------
+Thu Aug 18 09:44:06 UTC 2022 - Dr. Werner Fink
+
+- Workaround missing groff-full to get refer(1), the bibliographic
+ preprocessor found
+
+-------------------------------------------------------------------
+Thu Aug 18 08:14:54 UTC 2022 - Dr. Werner Fink
+
+- Update to man-db 2.10.0 (4 February 2022)
+ * Manpath deduplication no longer mishandles the case where another entry
+ in the manpath is a suffix of a candidate path to append.
+ * Fix potential crash in path searching if `getcwd` fails for reasons other
+ than running out of memory.
+ * Fix crash in `globbing` test tool if run with no non-option arguments.
+ * `lexgrog` now produces output in the user's locale.
+ * Downgrade "malformed .lf request" warning to a debug message and rephrase
+ it somewhat, since `.lf` requests can use `*roff` arithmetic expressions
+ and we can't reasonably parse those.
+ * Avoid modifying the database without changing its mtime, which had been
+ possible since 2.7.0 if `mandb`'s purge phase found work to do but the
+ main phase didn't, and which confused some backup systems into reporting
+ possible filesystem corruption.
+ * `man` no longer inadvertently modifies the `MANSECT` environment variable
+ before passing it on to its subprocesses.
+ * `mandb` now stores the mtime of link targets as the mtime of their
+ corresponding database entries, rather than sometimes storing the mtime
+ of the link instead.
+ * Since man-db 2.4.2, `man` has behaved as if the `-l` option was given if
+ a manual page argument contains a slash. Since man-db 2.5.6, this has
+ interacted slightly poorly with the subpage feature, emitting spurious
+ error messages if given multiple manual page arguments some of which
+ include a slash. `man` no longer emits spurious error messages in this
+ case.
+ * Reduce overhead of `MAN_DISABLE_SECCOMP=1` compared to building without
+ `libseccomp`.
+ * Document `MAN_DISABLE_SECCOMP` and `PIPELINE_DEBUG` environment variables
+ in `man(1)`.
+ * Add `man-pages(7)` reference to `man(1)`.
+ * Recognize Arabic and Persian translations of the `NAME` section.
+ * Delay the `systemd` timer using `RandomizedDelaySec`, so that multiple
+ containers/VMs on the same host are less prone to running `mandb` all at
+ the same time.
+ * Significantly improve `mandb(8)` and `man -K` performance in the common
+ case where pages are of moderate size and compressed using `zlib`: `mandb
+ -c` goes from 344 seconds to 10 seconds on a test system.
+- Remove patch man-db-2.7.1-security4.dif as now upstream creates
+ any missing database
+- Remove gnulib-ppc64le.patch as gnulib is uptodate even on ppc64le
+- Port patches
+ * man-db-2.6.3-chinese.dif
+ * man-db-2.6.3-listall.dif
+ * man-db-2.6.3-man0.dif
+ * man-db-2.7.1-zio.dif
+ * man-db-2.9.4-alternitive.dif
+ * man-db-2.9.4-no-chown.patch
+ * man-db-2.9.4.patch
+ * reproducible.patch
+
-------------------------------------------------------------------
Mon Aug 15 16:48:51 UTC 2022 -
diff --git a/man.spec b/man.spec
index 4116bf1..79bba76 100644
--- a/man.spec
+++ b/man.spec
@@ -26,7 +26,7 @@
%global optflags %{optflags} %{**}
%bcond_without sdtimer
Name: man
-Version: 2.9.4
+Version: 2.10.0
Release: 0
Summary: A Program for Displaying man Pages
License: GPL-2.0-or-later
@@ -43,7 +43,6 @@ Source7: man-db-create.service
Source8: manpath.csh
Source9: manpath.sh
Patch0: man-db-2.3.19deb4.0-groff.dif
-Patch1: man-db-2.7.1-security4.dif
Patch2: man-db-2.7.1-firefox.dif
Patch3: man-db-2.6.3-chinese.dif
# PATCH-FEATURE-OPENSUSE man-db-2.7.1-zio.dif -- Allow using libzio for decompression
@@ -60,8 +59,6 @@ Patch8: man-db-2.9.4.patch
Patch9: man-db-2.6.3-man0.dif
Patch10: man-db-2.9.4-alternitive.dif
Patch11: harden_man-db.service.patch
-# PATCH-FIX-SUSE ppc64le float128 transition
-Patch12: gnulib-ppc64le.patch
BuildRequires: automake
BuildRequires: flex
BuildRequires: gdbm-devel
@@ -72,6 +69,7 @@ BuildRequires: less
BuildRequires: libalternatives-devel
BuildRequires: libpipeline-devel >= 1.5.0
BuildRequires: libzio-devel
+BuildRequires: lzip
BuildRequires: man-pages
BuildRequires: pkgconfig
BuildRequires: po4a
@@ -101,21 +99,17 @@ printer (using groff).
%prep
%setup -q -n man-db-%{version}
%patch0 -b .groff
-%patch1 -b .secu4
%patch2 -b .firefox
%patch3 -b .chinese
%patch4 -b .zio
%patch5 -b .listall
-%patch6 -p1 -b .p12
-%patch7 -p1
-%patch8 -p1
-%patch9 -b .s10
+%patch6 -p1 -b .p6
+%patch7 -p1 -b .p7
+%patch8 -p1 -b .p8
+%patch9 -b .p9
%patch10 -b .libalernative
rm -f configure
-%patch11 -p1
-%ifarch ppc64le
-%patch12
-%endif
+%patch11 -p1 -b .p11
%build
%global optflags %{optflags} -funroll-loops -pipe -Wall
@@ -150,6 +144,15 @@ done
LIBS="-lalternatives"
export LINGUAS LIBS
+# Hack as otherwise
+# BuildRequires: groff-full
+# is required
+mkdir bin
+ln -sf /bin/true bin/refer
+ln -sf /bin/true bin/w3m
+PATH=$PATH:${PWD}/bin
+export PATH
+
# Create configure
aclocal -I ${PWD} -I ${PWD}/m4 -I ${PWD}/gl/m4
autoconf -B ${PWD} -B ${PWD}/m4 -B ${PWD}/gl/m4
@@ -321,7 +324,7 @@ then
fi
%files -f man-db.lang
-%license docs/COPYING
+%license COPYING
%doc ChangeLog
%doc %{_docdir}/man/man-db-manual*
%config %{_sysconfdir}/manpath.config
diff --git a/reproducible.patch b/reproducible.patch
index c7ecd61..4e45a73 100644
--- a/reproducible.patch
+++ b/reproducible.patch
@@ -1,9 +1,13 @@
Index: man-db-2.7.1/manual/man_db.me
===================================================================
---- man-db-2.7.1.orig/manual/man_db.me
-+++ man-db-2.7.1/manual/man_db.me
+---
+ man-db-2.10.0/manual/man_db.me | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- man-db-2.10.0/manual/man_db.me
++++ man-db-2.10.0/manual/man_db.me 2022-08-17 13:19:13.782077593 +0000
@@ -8,6 +8,7 @@
- .\" Thu Sep 21 19:22:47 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk)
+ .\" Thu Sep 21 19:22:47 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk)
.\"
.so version
+.ds td -