public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
To: git-commits@fedoraproject.org
Subject: [rpms/zsh] rawhide: rebase to the latest upstream release
Date: Thu, 04 Jun 2026 09:03:50 GMT [thread overview]
Message-ID: <178056383089.1.597879722836817490.rpms-zsh-95be2e37b5c0@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/zsh
Branch : rawhide
Commit : 95be2e37b5c0d1282c249ef938f11ab5dc470d66
Author : Lukáš Zaoral <lzaoral@redhat.com>
Date : 2026-06-04T11:03:21+02:00
Stats : +296/-2473 in 12 file(s)
URL : https://src.fedoraproject.org/rpms/zsh/c/95be2e37b5c0d1282c249ef938f11ab5dc470d66?branch=rawhide
Log:
rebase to the latest upstream release
Resolves: rhbz#2483668
---
diff --git a/0001-zsh-5.9-do-not-use-egrep-in-tests.patch b/0001-zsh-5.9-do-not-use-egrep-in-tests.patch
deleted file mode 100644
index 4d5a1cf..0000000
--- a/0001-zsh-5.9-do-not-use-egrep-in-tests.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-From 6935aa4b515fe9b782507820c77ab681136470bc Mon Sep 17 00:00:00 2001
-From: Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
-Date: Thu, 15 Sep 2022 18:56:20 +0900
-Subject: [PATCH] 50629: do not use egrep in tests
-
-Upstream-commit: 4fc5dc0292acd77f17281f451774ba2ca4203026
-Signed-off-by: Kamil Dudka <kdudka@redhat.com>
----
- Test/D07multibyte.ztst | 16 ++--------------
- Test/E01options.ztst | 2 +-
- Test/V07pcre.ztst | 16 ++--------------
- Test/X02zlevi.ztst | 11 +----------
- Test/X03zlebindkey.ztst | 11 +----------
- Test/Y01completion.ztst | 11 +----------
- Test/ztst.zsh | 15 +++++++++++++++
- 7 files changed, 23 insertions(+), 59 deletions(-)
-
-diff --git a/Test/D07multibyte.ztst b/Test/D07multibyte.ztst
-index e2e9a25..6909346 100644
---- a/Test/D07multibyte.ztst
-+++ b/Test/D07multibyte.ztst
-@@ -1,19 +1,7 @@
- %prep
-
--# Find a UTF-8 locale.
-- setopt multibyte
--# Don't let LC_* override our choice of locale.
-- unset -m LC_\*
-- mb_ok=
-- langs=(en_{US,GB}.{UTF-,utf}8 en.UTF-8
-- $(locale -a 2>/dev/null | egrep 'utf8|UTF-8'))
-- for LANG in $langs; do
-- if [[ é = ? ]]; then
-- mb_ok=1
-- break;
-- fi
-- done
-- if [[ -z $mb_ok ]]; then
-+ LANG=$(ZTST_find_UTF8)
-+ if [[ -z $LANG ]]; then
- ZTST_unimplemented="no UTF-8 locale or multibyte mode is not implemented"
- else
- print -u $ZTST_fd Testing multibyte with locale $LANG
-diff --git a/Test/E01options.ztst b/Test/E01options.ztst
-index 2acbfd3..d38fbed 100644
---- a/Test/E01options.ztst
-+++ b/Test/E01options.ztst
-@@ -651,7 +651,7 @@
- >noktarg1
- >0 1
-
-- showopt() { setopt | egrep 'localoptions|ksharrays'; }
-+ showopt() { echo ${(FM)${(@f)"$(setopt)"}:#(localoptions|ksharrays)*} }
- f1() { setopt localoptions ksharrays; showopt }
- f2() { setopt ksharrays; showopt }
- setopt kshoptionprint
-diff --git a/Test/V07pcre.ztst b/Test/V07pcre.ztst
-index c9c844d..ca13419 100644
---- a/Test/V07pcre.ztst
-+++ b/Test/V07pcre.ztst
-@@ -6,20 +6,8 @@
- return 0
- fi
- setopt rematch_pcre
--# Find a UTF-8 locale.
-- setopt multibyte
--# Don't let LC_* override our choice of locale.
-- unset -m LC_\*
-- mb_ok=
-- langs=(en_{US,GB}.{UTF-,utf}8 en.UTF-8
-- $(locale -a 2>/dev/null | egrep 'utf8|UTF-8'))
-- for LANG in $langs; do
-- if [[ é = ? ]]; then
-- mb_ok=1
-- break;
-- fi
-- done
-- if [[ -z $mb_ok ]]; then
-+ LANG=$(ZTST_find_UTF8)
-+ if [[ -z $LANG ]]; then
- ZTST_unimplemented="no UTF-8 locale or multibyte mode is not implemented"
- else
- print -u $ZTST_fd Testing PCRE multibyte with locale $LANG
-diff --git a/Test/X02zlevi.ztst b/Test/X02zlevi.ztst
-index 8146d67..203c13c 100644
---- a/Test/X02zlevi.ztst
-+++ b/Test/X02zlevi.ztst
-@@ -1,16 +1,7 @@
- # Tests of the vi mode of ZLE
-
- %prep
-- unset -m LC_\*
-- ZSH_TEST_LANG=
-- langs=(en_{US,GB}.{UTF-,utf}8 en.UTF-8
-- $(locale -a 2>/dev/null | egrep 'utf8|UTF-8'))
-- for LANG in $langs; do
-- if [[ é = ? ]]; then
-- ZSH_TEST_LANG=$LANG
-- break;
-- fi
-- done
-+ ZSH_TEST_LANG=$(ZTST_find_UTF8)
- if ( zmodload zsh/zpty 2>/dev/null ); then
- . $ZTST_srcdir/comptest
- comptestinit -v -z $ZTST_testdir/../Src/zsh
-diff --git a/Test/X03zlebindkey.ztst b/Test/X03zlebindkey.ztst
-index 43692a8..5277332 100644
---- a/Test/X03zlebindkey.ztst
-+++ b/Test/X03zlebindkey.ztst
-@@ -3,16 +3,7 @@
- # into bindings. The latter is particularly tricky with multibyte sequences.
-
- %prep
-- unset -m LC_\*
-- ZSH_TEST_LANG=
-- langs=(en_{US,GB}.{UTF-,utf}8 en.UTF-8
-- $(locale -a 2>/dev/null | egrep 'utf8|UTF-8'))
-- for LANG in $langs; do
-- if [[ é = ? ]]; then
-- ZSH_TEST_LANG=$LANG
-- break;
-- fi
-- done
-+ ZSH_TEST_LANG=$(ZTST_find_UTF8)
- if ( zmodload zsh/zpty 2>/dev/null ); then
- . $ZTST_srcdir/comptest
- comptestinit -z $ZTST_testdir/../Src/zsh
-diff --git a/Test/Y01completion.ztst b/Test/Y01completion.ztst
-index 6af0efc..f976f9f 100644
---- a/Test/Y01completion.ztst
-+++ b/Test/Y01completion.ztst
-@@ -1,16 +1,7 @@
- # Tests for completion system.
-
- %prep
-- unset -m LC_\*
-- ZSH_TEST_LANG=
-- langs=(en_{US,GB}.{UTF-,utf}8 en.UTF-8
-- $(locale -a 2>/dev/null | egrep 'utf8|UTF-8'))
-- for LANG in $langs; do
-- if [[ é = ? ]]; then
-- ZSH_TEST_LANG=$LANG
-- break;
-- fi
-- done
-+ ZSH_TEST_LANG=$(ZTST_find_UTF8)
- if ( zmodload zsh/zpty 2>/dev/null ); then
- . $ZTST_srcdir/comptest
- mkdir comp.tmp
-diff --git a/Test/ztst.zsh b/Test/ztst.zsh
-index aca275c..d95b726 100755
---- a/Test/ztst.zsh
-+++ b/Test/ztst.zsh
-@@ -37,6 +37,21 @@ emulate -R zsh
- # LANG must be passed to child zsh.
- export LANG
-
-+# find UTF-8 locale
-+ZTST_find_UTF8 () {
-+ setopt multibyte
-+ # Don't let LC_* override our choice of locale.
-+ unset -m LC_\*
-+ local langs=(en_{US,GB}.{UTF-,utf}8 en.UTF-8
-+ ${(M)$(locale -a 2>/dev/null):#*.(utf8|UTF-8)})
-+ for LANG in $langs; do
-+ if [[ é = ? ]]; then
-+ echo $LANG
-+ return
-+ fi
-+ done
-+}
-+
- # Don't propagate variables that are set by default in the shell.
- typeset +x WORDCHARS
-
---
-2.39.0
-
diff --git a/0002-zsh-Use-int-main-in-test-c-codes.patch b/0002-zsh-Use-int-main-in-test-c-codes.patch
deleted file mode 100644
index 3585cc4..0000000
--- a/0002-zsh-Use-int-main-in-test-c-codes.patch
+++ /dev/null
@@ -1,541 +0,0 @@
-commit ab4d62eb975a4c4c51dd35822665050e2ddc6918
-Author: Nicholas Vinson <nvinson234@gmail.com>
-Date: Wed Sep 21 09:22:11 2022 +0900
-
- 50641: use 'int main()' in test C-codes in configure
-
-diff --git a/aczsh.m4 b/aczsh.m4
-index 1209ac614..b31236020 100644
---- a/aczsh.m4
-+++ b/aczsh.m4
-@@ -44,6 +44,7 @@ AC_DEFUN(zsh_64_BIT_TYPE,
- #include <sys/types.h>
- #endif
-
-+int
- main()
- {
- $1 foo = 0;
-@@ -118,7 +119,6 @@ AC_TRY_COMMAND($DLLD -o conftest1.$DL_EXT $LDFLAGS $DLLDFLAGS conftest1.o $LIBS
- AC_TRY_COMMAND($CC -c $CFLAGS $CPPFLAGS $DLCFLAGS conftest2.c 1>&AS_MESSAGE_LOG_FD) &&
- AC_TRY_COMMAND($DLLD -o conftest2.$DL_EXT $LDFLAGS $DLLDFLAGS conftest2.o $LIBS 1>&AS_MESSAGE_LOG_FD); then
- AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <stdlib.h>
- #ifdef HPUX10DYNAMIC
- #include <dl.h>
- #define RTLD_LAZY BIND_DEFERRED
-@@ -146,29 +146,30 @@ char *zsh_gl_sym_addr ;
- #define RTLD_GLOBAL 0
- #endif
-
-+int
- main()
- {
- void *handle1, *handle2;
- void *(*zsh_getaddr1)(), *(*zsh_getaddr2)();
- void *sym1, *sym2;
- handle1 = dlopen("./conftest1.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
-- if(!handle1) exit(1);
-+ if(!handle1) return(1);
- handle2 = dlopen("./conftest2.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
-- if(!handle2) exit(1);
-+ if(!handle2) return(1);
- zsh_getaddr1 = (void *(*)()) dlsym(handle1, "${us}zsh_getaddr1");
- zsh_getaddr2 = (void *(*)()) dlsym(handle2, "${us}zsh_getaddr2");
- sym1 = zsh_getaddr1();
- sym2 = zsh_getaddr2();
-- if(!sym1 || !sym2) exit(1);
-- if(sym1 != sym2) exit(1);
-+ if(!sym1 || !sym2) return(1);
-+ if(sym1 != sym2) return(1);
- dlclose(handle1);
- handle1 = dlopen("./conftest1.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
-- if(!handle1) exit(1);
-+ if(!handle1) return(1);
- zsh_getaddr1 = (void *(*)()) dlsym(handle1, "${us}zsh_getaddr1");
- sym1 = zsh_getaddr1();
-- if(!sym1) exit(1);
-- if(sym1 != sym2) exit(1);
-- exit(0);
-+ if(!sym1) return(1);
-+ if(sym1 != sym2) return(1);
-+ return(0);
- }
- ]])],[zsh_cv_shared_$1=yes],
- [zsh_cv_shared_$1=no],
-@@ -200,7 +201,6 @@ AC_TRY_COMMAND($DLLD -o conftest1.$DL_EXT $LDFLAGS $DLLDFLAGS conftest1.o $LIBS
- AC_TRY_COMMAND($CC -c $CFLAGS $CPPFLAGS $DLCFLAGS conftest2.c 1>&AS_MESSAGE_LOG_FD) &&
- AC_TRY_COMMAND($DLLD -o conftest2.$DL_EXT $LDFLAGS $DLLDFLAGS conftest2.o $LIBS 1>&AS_MESSAGE_LOG_FD); then
- AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <stdlib.h>
- #ifdef HPUX10DYNAMIC
- #include <dl.h>
- #define RTLD_LAZY BIND_DEFERRED
-@@ -228,19 +228,19 @@ char *zsh_gl_sym_addr ;
- #define RTLD_GLOBAL 0
- #endif
-
--
-+int
- main()
- {
- void *handle1, *handle2;
- int (*fred1)(), (*fred2)();
- handle1 = dlopen("./conftest1.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
-- if(!handle1) exit(1);
-+ if(!handle1) return(1);
- handle2 = dlopen("./conftest2.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
-- if(!handle2) exit(1);
-+ if(!handle2) return(1);
- fred1 = (int (*)()) dlsym(handle1, "${us}fred");
- fred2 = (int (*)()) dlsym(handle2, "${us}fred");
-- if(!fred1 || !fred2) exit(1);
-- exit((*fred1)() != 42 || (*fred2)() != 69);
-+ if(!fred1 || !fred2) return(1);
-+ return((*fred1)() != 42 || (*fred2)() != 69);
- }
- ]])],[zsh_cv_sys_dynamic_clash_ok=yes],
- [zsh_cv_sys_dynamic_clash_ok=no],
-@@ -276,7 +276,6 @@ AC_TRY_COMMAND($DLLD -o conftest1.$DL_EXT $LDFLAGS $DLLDFLAGS conftest1.o $LIBS
- AC_TRY_COMMAND($CC -c $CFLAGS $CPPFLAGS $DLCFLAGS conftest2.c 1>&AS_MESSAGE_LOG_FD) &&
- AC_TRY_COMMAND($DLLD -o conftest2.$DL_EXT $LDFLAGS $DLLDFLAGS conftest2.o $LIBS 1>&AS_MESSAGE_LOG_FD); then
- AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <stdlib.h>
- #ifdef HPUX10DYNAMIC
- #include <dl.h>
- #define RTLD_LAZY BIND_DEFERRED
-@@ -304,17 +303,18 @@ char *zsh_gl_sym_addr ;
- #define RTLD_GLOBAL 0
- #endif
-
-+int
- main()
- {
- void *handle;
- int (*barneysym)();
- handle = dlopen("./conftest1.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
-- if(!handle) exit(1);
-+ if(!handle) return(1);
- handle = dlopen("./conftest2.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
-- if(!handle) exit(1);
-+ if(!handle) return(1);
- barneysym = (int (*)()) dlsym(handle, "${us}barney");
-- if(!barneysym) exit(1);
-- exit((*barneysym)() != 69);
-+ if(!barneysym) return(1);
-+ return((*barneysym)() != 69);
- }
- ]])],[zsh_cv_sys_dynamic_rtld_global=yes],
- [zsh_cv_sys_dynamic_rtld_global=no],
-@@ -346,7 +346,6 @@ AC_TRY_COMMAND($DLLD -o conftest1.$DL_EXT $LDFLAGS $DLLDFLAGS conftest1.o $LIBS
- save_ldflags=$LDFLAGS
- LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS"
- AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <stdlib.h>
- #ifdef HPUX10DYNAMIC
- #include <dl.h>
- #define RTLD_LAZY BIND_DEFERRED
-@@ -374,15 +373,16 @@ char *zsh_gl_sym_addr ;
- #define RTLD_GLOBAL 0
- #endif
-
-+int
- main()
- {
- void *handle;
- int (*barneysym)();
- handle = dlopen("./conftest1.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
-- if(!handle) exit(1);
-+ if(!handle) return(1);
- barneysym = (int (*)()) dlsym(handle, "${us}barney");
-- if(!barneysym) exit(1);
-- exit((*barneysym)() != 69);
-+ if(!barneysym) return(1);
-+ return((*barneysym)() != 69);
- }
-
- int fred () { return 42; }
-@@ -420,7 +420,6 @@ elif
- save_ldflags=$LDFLAGS
- LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS -s"
- AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <stdlib.h>
- #ifdef HPUX10DYNAMIC
- #include <dl.h>
- #define RTLD_LAZY BIND_DEFERRED
-@@ -448,15 +447,16 @@ char *zsh_gl_sym_addr ;
- #define RTLD_GLOBAL 0
- #endif
-
-+int
- main()
- {
- void *handle;
- int (*barneysym)();
- handle = dlopen("./conftest1.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
-- if(!handle) exit(1);
-+ if(!handle) return(1);
- barneysym = (int (*)()) dlsym(handle, "${us}barney");
-- if(!barneysym) exit(1);
-- exit((*barneysym)() != 69);
-+ if(!barneysym) return(1);
-+ return((*barneysym)() != 69);
- }
-
- int fred () { return 42; }
-@@ -488,7 +488,6 @@ echo 'int fred () { return 42; }' > conftest1.c
- if AC_TRY_COMMAND($CC -c $CFLAGS $CPPFLAGS $DLCFLAGS conftest1.c 1>&AS_MESSAGE_LOG_FD) &&
- AC_TRY_COMMAND($DLLD -o conftest1.$DL_EXT $LDFLAGS $DLLDFLAGS -s conftest1.o $LIBS 1>&AS_MESSAGE_LOG_FD); then
- AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <stdlib.h>
- #ifdef HPUX10DYNAMIC
- #include <dl.h>
- #define RTLD_LAZY BIND_DEFERRED
-@@ -516,15 +515,16 @@ char *zsh_gl_sym_addr ;
- #define RTLD_GLOBAL 0
- #endif
-
-+int
- main()
- {
- void *handle;
- int (*fredsym)();
- handle = dlopen("./conftest1.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
-- if(!handle) exit(1);
-+ if(!handle) return(1);
- fredsym = (int (*)()) dlsym(handle, "${us}fred");
-- if(!fredsym) exit(1);
-- exit((*fredsym)() != 42);
-+ if(!fredsym) return(1);
-+ return((*fredsym)() != 42);
- }
- ]])],[zsh_cv_sys_dynamic_strip_lib=yes],
- [zsh_cv_sys_dynamic_strip_lib=no],
-diff --git a/configure.ac b/configure.ac
-index 890ef8dd2..074141d38 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -585,7 +585,7 @@ fi
- dnl Checking if compiler correctly cast signed to unsigned.
- AC_CACHE_CHECK(if signed to unsigned casting is broken,
- zsh_cv_c_broken_signed_to_unsigned_casting,
--[AC_RUN_IFELSE([AC_LANG_SOURCE([[main(){return((int)(unsigned char)((char) -1) == 255);}]])],[zsh_cv_c_broken_signed_to_unsigned_casting=yes],[zsh_cv_c_broken_signed_to_unsigned_casting=no],[zsh_cv_c_broken_signed_to_unsigned_casting=no])])
-+[AC_RUN_IFELSE([AC_LANG_SOURCE([[int main(){return((int)(unsigned char)((char) -1) == 255);}]])],[zsh_cv_c_broken_signed_to_unsigned_casting=yes],[zsh_cv_c_broken_signed_to_unsigned_casting=no],[zsh_cv_c_broken_signed_to_unsigned_casting=no])])
- AH_TEMPLATE([BROKEN_SIGNED_TO_UNSIGNED_CASTING],
- [Define to 1 if compiler incorrectly cast signed to unsigned.])
- if test x$zsh_cv_c_broken_signed_to_unsigned_casting = xyes; then
-@@ -1046,7 +1046,7 @@ else
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <sys/types.h>
-
--main() { return sizeof(off_t) < 8; }
-+int main() { return sizeof(off_t) < 8; }
- ]])],[zsh_cv_off_t_is_64_bit=yes],[zsh_cv_off_t_is_64_bit=no],[zsh_cv_off_t_is_64_bit=no])])
- if test x$zsh_cv_off_t_is_64_bit = xyes; then
- AC_DEFINE(OFF_T_IS_64_BIT)
-@@ -1056,7 +1056,7 @@ main() { return sizeof(off_t) < 8; }
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <sys/types.h>
-
--main() { return sizeof(ino_t) < 8; }
-+int main() { return sizeof(ino_t) < 8; }
- ]])],[zsh_cv_ino_t_is_64_bit=yes],[zsh_cv_ino_t_is_64_bit=no],[zsh_cv_ino_t_is_64_bit=no])])
- if test x$zsh_cv_ino_t_is_64_bit = xyes; then
- AC_DEFINE(INO_T_IS_64_BIT)
-@@ -1369,7 +1369,7 @@ zsh_cv_func_realpath_accepts_null,
- #include <stdlib.h>
- #include <limits.h>
- ],[
--exit(!realpath("/", (char*)0));
-+return(!realpath("/", (char*)0));
- ])],
- [zsh_cv_func_realpath_accepts_null=yes],
- [zsh_cv_func_realpath_accepts_null=no],
-@@ -1393,10 +1393,9 @@ AC_CACHE_CHECK(if tgetent accepts NULL,
- zsh_cv_func_tgetent_accepts_null,
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <fcntl.h>
--#include <stdlib.h>
- int tgetent(char *, char *);
- char *tgetstr(char *, char **);
--main()
-+int main()
- {
- char buf[4096];
- int r1 = tgetent(buf, "vt100");
-@@ -1407,7 +1406,7 @@ main()
- tgetstr("cl", &u);
- creat("conftest.tgetent", 0640);
- }
-- exit((r1 != r2) || r2 == -1);
-+ return((r1 != r2) || r2 == -1);
- }
- ]])],[if test -f conftest.tgetent; then
- zsh_cv_func_tgetent_accepts_null=yes
-@@ -1421,10 +1420,9 @@ AC_CACHE_CHECK(if tgetent returns 0 on success,
- zsh_cv_func_tgetent_zero_success,
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <fcntl.h>
--#include <stdlib.h>
- int tgetent(char *, char*);
- char *tgetstr(char *, char **);
--main()
-+int main()
- {
- char buf[4096];
- int r1 = tgetent(buf, "!@#$%^&*");
-@@ -1435,7 +1433,7 @@ main()
- tgetstr("cl", &u);
- creat("conftest.tgetent0", 0640);
- }
-- exit(r1 == r2);
-+ return(r1 == r2);
- }
- ]])],[if test -f conftest.tgetent0; then
- zsh_cv_func_tgetent_zero_success=yes
-@@ -1869,8 +1867,7 @@ zsh_cv_rlim_t_is_longer,
- #include <sys/time.h>
- #endif
- #include <sys/resource.h>
--#include <stdlib.h>
--main(){struct rlimit r;exit(sizeof(r.rlim_cur) <= sizeof(long));}]])],[zsh_cv_rlim_t_is_longer=yes],[zsh_cv_rlim_t_is_longer=no],[zsh_cv_rlim_t_is_longer=yes])])
-+int main(){struct rlimit r;return(sizeof(r.rlim_cur) <= sizeof(long));}]])],[zsh_cv_rlim_t_is_longer=yes],[zsh_cv_rlim_t_is_longer=no],[zsh_cv_rlim_t_is_longer=yes])])
- if test x$zsh_cv_rlim_t_is_longer = xyes; then
- AC_CACHE_CHECK(if rlim_t is a quad,
- zsh_cv_rlim_t_is_quad_t,
-@@ -1880,13 +1877,12 @@ if test x$zsh_cv_rlim_t_is_longer = xyes; then
- #endif
- #include <stdio.h>
- #include <sys/resource.h>
--#include <stdlib.h>
--main() {
-+int main() {
- struct rlimit r;
- char buf[20];
- r.rlim_cur = 0;
- sprintf(buf, "%qd", r.rlim_cur);
-- exit(strcmp(buf, "0"));
-+ return(strcmp(buf, "0"));
- }]])],[zsh_cv_rlim_t_is_quad_t=yes],[zsh_cv_rlim_t_is_quad_t=no],[zsh_cv_rlim_t_is_quad_t=no])])
- if test x$zsh_cv_rlim_t_is_quad_t = xyes; then
- AC_DEFINE(RLIM_T_IS_QUAD_T)
-@@ -1903,8 +1899,7 @@ else
- #include <sys/time.h>
- #endif
- #include <sys/resource.h>
--#include <stdlib.h>
-- main(){struct rlimit r;r.rlim_cur=-1;exit(r.rlim_cur<0);}]])],[zsh_cv_type_rlim_t_is_unsigned=yes],[zsh_cv_type_rlim_t_is_unsigned=no],[zsh_cv_type_rlim_t_is_unsigned=no])])
-+ int main(){struct rlimit r;r.rlim_cur=-1;return(r.rlim_cur<0);}]])],[zsh_cv_type_rlim_t_is_unsigned=yes],[zsh_cv_type_rlim_t_is_unsigned=no],[zsh_cv_type_rlim_t_is_unsigned=no])])
- if test x$zsh_cv_type_rlim_t_is_unsigned = xyes; then
- AC_DEFINE(RLIM_T_IS_UNSIGNED)
- DEFAULT_RLIM_T="unsigned $DEFAULT_RLIM_T"
-@@ -2187,9 +2182,8 @@ zsh_cv_sys_fifo,
- #include <fcntl.h>
- #include <signal.h>
- #include <unistd.h>
--#include <stdlib.h>
- #include <sys/stat.h>
--main()
-+int main()
- {
- char c;
- int fd;
-@@ -2200,18 +2194,18 @@ main()
- #else
- if(mknod("/tmp/fifo$$", 0010600, 0) < 0)
- #endif
-- exit(1);
-+ return(1);
- pid = fork();
- if(pid < 0)
-- exit(1);
-+ return(1);
- if(pid) {
- fd = open("/tmp/fifo$$", O_RDONLY);
-- exit(fd < 0 || read(fd, &c, 1) != 1 || c != 'x');
-+ return(fd < 0 || read(fd, &c, 1) != 1 || c != 'x');
- }
- fd = open("/tmp/fifo$$", O_WRONLY);
- ret = (fd < 0 || write(fd, "x", 1) < 1);
- unlink("/tmp/fifo$$");
-- exit(ret);
-+ return(ret);
- }
- ]])],[zsh_cv_sys_fifo=yes],[zsh_cv_sys_fifo=no],[zsh_cv_sys_fifo=yes])
- ])
-@@ -2289,8 +2283,7 @@ zsh_cv_sys_link,
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <unistd.h>
- #include <fcntl.h>
--#include <stdlib.h>
--main()
-+int main()
- {
- int ret;
- char *tmpfile, *newfile;
-@@ -2299,11 +2292,11 @@ main()
- unlink(tmpfile);
- unlink(newfile);
- if(creat(tmpfile, 0644) < 0)
-- exit(1);
-+ return(1);
- ret = link(tmpfile, newfile);
- unlink(tmpfile);
- unlink(newfile);
-- exit(ret<0);
-+ return(ret<0);
- }
- ]])],[zsh_cv_sys_link=yes],[zsh_cv_sys_link=no],[zsh_cv_sys_link=yes])])
- AH_TEMPLATE([HAVE_LINK],
-@@ -2322,12 +2315,11 @@ zsh_cv_sys_killesrch,
- #include <unistd.h>
- #include <signal.h>
- #include <errno.h>
--#include <stdlib.h>
--main()
-+int main()
- {
- int pid = (getpid() + 10000) & 0xffffff;
- while (pid && (kill(pid, 0) == 0 || errno != ESRCH)) pid >>= 1;
-- exit(errno!=ESRCH);
-+ return(errno!=ESRCH);
- }
- ]])],[zsh_cv_sys_killesrch=yes],[zsh_cv_sys_killesrch=no],[zsh_cv_sys_killesrch=yes])])
- AH_TEMPLATE([BROKEN_KILL_ESRCH],
-@@ -2348,12 +2340,11 @@ if test x$signals_style = xPOSIX_SIGNALS; then
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <signal.h>
- #include <unistd.h>
--#include <stdlib.h>
- int child=0;
- void handler(sig)
- int sig;
- {if(sig==SIGCHLD) child=1;}
--main() {
-+int main() {
- struct sigaction act;
- sigset_t set;
- int pid, ret;
-@@ -2368,7 +2359,7 @@ main() {
- if(pid>0) {
- sigemptyset(&set);
- ret=sigsuspend(&set);
-- exit(child==0);
-+ return(child==0);
- }
- }
- ]])],[zsh_cv_sys_sigsuspend=yes],[zsh_cv_sys_sigsuspend=no],[zsh_cv_sys_sigsuspend=yes])])
-@@ -2400,15 +2391,14 @@ case "x$zsh_working_tcsetpgrp" in
- #include <sys/types.h>
- #include <unistd.h>
- #include <fcntl.h>
--#include <stdlib.h>
--main() {
-+int main() {
- int fd;
- int ret;
- fd=open("/dev/tty", O_RDWR);
-- if (fd < 0) exit(2);
-+ if (fd < 0) return(2);
- ret=tcsetpgrp(fd, tcgetpgrp(fd));
-- if (ret < 0) exit(1);
-- exit(0);
-+ if (ret < 0) return(1);
-+ return(0);
- }
- ]])],[zsh_cv_sys_tcsetpgrp=yes],[
- case $? in
-@@ -2448,7 +2438,7 @@ if test x$ac_cv_func_getpwnam = xyes; then
- #include <string.h>
- #include <stdlib.h>
- #include <unistd.h>
--main() {
-+int main() {
- struct passwd *pw1, *pw2;
- char buf[1024], name[1024];
- sprintf(buf, "%d:%d", getpid(), rand());
-@@ -2456,7 +2446,7 @@ main() {
- if (pw1) strcpy(name, pw1->pw_name);
- sprintf(buf, "%d:%d", rand(), getpid());
- pw2=getpwnam(buf);
-- exit(pw1!=0 && pw2!=0 && !strcmp(name, pw2->pw_name));
-+ return(pw1!=0 && pw2!=0 && !strcmp(name, pw2->pw_name));
- }
- ]])],[zsh_cv_sys_getpwnam_faked=no],[zsh_cv_sys_getpwnam_faked=yes],[zsh_cv_sys_getpwnam_faked=no])])
- if test x$zsh_cv_sys_getpwnam_faked = xyes; then
-@@ -2775,20 +2765,17 @@ elif test "x$dynamic" = xyes; then
- zsh_cv_sys_elf,
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[/* Test for whether ELF binaries are produced */
- #include <fcntl.h>
--#include <stdlib.h>
- #include <unistd.h>
--main(argc, argv)
--int argc;
--char *argv[];
-+int main(int argc, char *argv[])
- {
- char b[4];
- int i = open(argv[0],O_RDONLY);
- if(i == -1)
-- exit(1); /* fail */
-+ return(1); /* fail */
- if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
-- exit(0); /* succeed (yes, it's ELF) */
-+ return(0); /* succeed (yes, it's ELF) */
- else
-- exit(1); /* fail */
-+ return(1); /* fail */
- }]])],[zsh_cv_sys_elf=yes],[zsh_cv_sys_elf=no],[zsh_cv_sys_elf=yes])])
-
- # We use [0-9]* in case statements, so need to change quoting
-@@ -2924,13 +2911,12 @@ LDFLAGS="$old_LDFLAGS")
- AC_CACHE_CHECK(if your dlsym() needs a leading underscore,
- zsh_cv_func_dlsym_needs_underscore,
- [echo failed >conftestval && cat >conftest.c <<EOM
--fred () { }
-+void fred () { }
- EOM
- AC_TRY_COMMAND($CC -c $CFLAGS $CPPFLAGS $DLCFLAGS conftest.c 1>&AS_MESSAGE_LOG_FD) &&
- AC_TRY_COMMAND($DLLD $LDFLAGS $DLLDFLAGS -o conftest.$DL_EXT conftest.o 1>&AS_MESSAGE_LOG_FD) &&
- AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <stdio.h>
--#include <stdlib.h>
- #ifdef HPUX10DYNAMIC
- #include <dl.h>
- #define RTLD_LAZY BIND_DEFERRED
-@@ -2957,16 +2943,16 @@ char *zsh_gl_sym_addr ;
-
- extern int fred() ;
-
--main()
-+int main()
- {
- void * handle ;
- void * symbol ;
- FILE *f=fopen("conftestval", "w");
-- if (!f) exit(1);
-+ if (!f) return(1);
- handle = dlopen("./conftest.$DL_EXT", RTLD_LAZY) ;
- if (handle == NULL) {
- fprintf (f, "dlopen failed") ;
-- exit(1);
-+ return(1);
- }
- symbol = dlsym(handle, "fred") ;
- if (symbol == NULL) {
-@@ -2974,13 +2960,13 @@ main()
- symbol = dlsym(handle, "_fred") ;
- if (symbol == NULL) {
- fprintf (f, "dlsym failed") ;
-- exit(1);
-+ return(1);
- }
- fprintf (f, "yes") ;
- }
- else
- fprintf (f, "no") ;
-- exit(0);
-+ return(0);
- }]])],[zsh_cv_func_dlsym_needs_underscore=`cat conftestval`],[zsh_cv_func_dlsym_needs_underscore=failed
- dynamic=no],[zsh_cv_func_dlsym_needs_underscore=no])])
- if test "x$zsh_cv_func_dlsym_needs_underscore" = xyes; then
diff --git a/0004-zsh-enable-PCRE-locale-switching.patch b/0004-zsh-enable-PCRE-locale-switching.patch
deleted file mode 100644
index a6f03bf..0000000
--- a/0004-zsh-enable-PCRE-locale-switching.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 1b421e4978440234fb73117c8505dad1ccc68d46 Mon Sep 17 00:00:00 2001
-From: Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
-Date: Mon, 26 Sep 2022 10:52:50 +0900
-Subject: [PATCH] 50658 + test: Enable to switch between C/UTF-8 locales in
- PCRE
-
----
- Src/Modules/pcre.c | 10 ++--------
- Test/V07pcre.ztst | 11 +++++++++++
- 2 files changed, 13 insertions(+), 8 deletions(-)
-
-diff --git a/Src/Modules/pcre.c b/Src/Modules/pcre.c
-index 6289e003e..46875a59b 100644
---- a/Src/Modules/pcre.c
-+++ b/Src/Modules/pcre.c
-@@ -47,8 +47,6 @@ zpcre_utf8_enabled(void)
- #if defined(MULTIBYTE_SUPPORT) && defined(HAVE_NL_LANGINFO) && defined(CODESET)
- static int have_utf8_pcre = -1;
-
-- /* value can toggle based on MULTIBYTE, so don't
-- * be too eager with caching */
- if (have_utf8_pcre < -1)
- return 0;
-
-@@ -56,15 +54,11 @@ zpcre_utf8_enabled(void)
- return 0;
-
- if ((have_utf8_pcre == -1) &&
-- (!strcmp(nl_langinfo(CODESET), "UTF-8"))) {
--
-- if (pcre_config(PCRE_CONFIG_UTF8, &have_utf8_pcre))
-+ (pcre_config(PCRE_CONFIG_UTF8, &have_utf8_pcre))) {
- have_utf8_pcre = -2; /* erk, failed to ask */
- }
-
-- if (have_utf8_pcre < 0)
-- return 0;
-- return have_utf8_pcre;
-+ return (have_utf8_pcre == 1) && (!strcmp(nl_langinfo(CODESET), "UTF-8"));
-
- #else
- return 0;
-diff --git a/Test/V07pcre.ztst b/Test/V07pcre.ztst
-index ca13419e5..22a0b64c7 100644
---- a/Test/V07pcre.ztst
-+++ b/Test/V07pcre.ztst
-@@ -162,3 +162,14 @@
- echo $match[2] )
- 0:regression for segmentation fault, workers/38307
- >test
-+
-+ LANG_SAVE=$LANG
-+ [[ é =~ '^.\z' ]]; echo $?
-+ LANG=C
-+ [[ é =~ '^..\z' ]]; echo $?
-+ LANG=$LANG_SAVE
-+ [[ é =~ '^.\z' ]]; echo $?
-+0:swich between C/UTF-8 locales
-+>0
-+>0
-+>0
---
-2.41.0
-
diff --git a/0005-zsh-port-to-pcre2.patch b/0005-zsh-port-to-pcre2.patch
deleted file mode 100644
index fd8ea0e..0000000
--- a/0005-zsh-port-to-pcre2.patch
+++ /dev/null
@@ -1,641 +0,0 @@
-From b62e911341c8ec7446378b477c47da4256053dc0 Mon Sep 17 00:00:00 2001
-From: Oliver Kiddle <opk@zsh.org>
-Date: Sat, 13 May 2023 00:53:32 +0200
-Subject: [PATCH] 51723: migrate pcre module to pcre2
-
- Cherry-picked-by: Lukáš Zaoral <lzaoral@redhat.com>
----
- Src/Modules/pcre.c | 223 ++++++++++++++++++---------------------------
- Test/V07pcre.ztst | 13 ++-
- configure.ac | 20 ++--
- 3 files changed, 109 insertions(+), 149 deletions(-)
-
-diff --git a/Src/Modules/pcre.c b/Src/Modules/pcre.c
-index 46875a59b..079ecc2c5 100644
---- a/Src/Modules/pcre.c
-+++ b/Src/Modules/pcre.c
-@@ -34,11 +34,11 @@
- #define CPCRE_PLAIN 0
-
- /**/
--#if defined(HAVE_PCRE_COMPILE) && defined(HAVE_PCRE_EXEC)
--#include <pcre.h>
-+#if defined(HAVE_PCRE2_COMPILE_8) && defined(HAVE_PCRE2_H)
-+#define PCRE2_CODE_UNIT_WIDTH 8
-+#include <pcre2.h>
-
--static pcre *pcre_pattern;
--static pcre_extra *pcre_hints;
-+static pcre2_code *pcre_pattern;
-
- /**/
- static int
-@@ -54,8 +54,8 @@ zpcre_utf8_enabled(void)
- return 0;
-
- if ((have_utf8_pcre == -1) &&
-- (pcre_config(PCRE_CONFIG_UTF8, &have_utf8_pcre))) {
-- have_utf8_pcre = -2; /* erk, failed to ask */
-+ (pcre2_config(PCRE2_CONFIG_UNICODE, &have_utf8_pcre))) {
-+ have_utf8_pcre = -2; /* erk, failed to ask */
- }
-
- return (have_utf8_pcre == 1) && (!strcmp(nl_langinfo(CODESET), "UTF-8"));
-@@ -69,115 +69,87 @@ zpcre_utf8_enabled(void)
- static int
- bin_pcre_compile(char *nam, char **args, Options ops, UNUSED(int func))
- {
-- int pcre_opts = 0, pcre_errptr, target_len;
-- const char *pcre_error;
-+ uint32_t pcre_opts = 0;
-+ int target_len;
-+ int pcre_error;
-+ PCRE2_SIZE pcre_offset;
- char *target;
-
-- if(OPT_ISSET(ops,'a')) pcre_opts |= PCRE_ANCHORED;
-- if(OPT_ISSET(ops,'i')) pcre_opts |= PCRE_CASELESS;
-- if(OPT_ISSET(ops,'m')) pcre_opts |= PCRE_MULTILINE;
-- if(OPT_ISSET(ops,'x')) pcre_opts |= PCRE_EXTENDED;
-- if(OPT_ISSET(ops,'s')) pcre_opts |= PCRE_DOTALL;
-+ if (OPT_ISSET(ops, 'a')) pcre_opts |= PCRE2_ANCHORED;
-+ if (OPT_ISSET(ops, 'i')) pcre_opts |= PCRE2_CASELESS;
-+ if (OPT_ISSET(ops, 'm')) pcre_opts |= PCRE2_MULTILINE;
-+ if (OPT_ISSET(ops, 'x')) pcre_opts |= PCRE2_EXTENDED;
-+ if (OPT_ISSET(ops, 's')) pcre_opts |= PCRE2_DOTALL;
-
- if (zpcre_utf8_enabled())
-- pcre_opts |= PCRE_UTF8;
--
--#ifdef HAVE_PCRE_STUDY
-- if (pcre_hints)
--#ifdef PCRE_CONFIG_JIT
-- pcre_free_study(pcre_hints);
--#else
-- pcre_free(pcre_hints);
--#endif
-- pcre_hints = NULL;
--#endif
-+ pcre_opts |= PCRE2_UTF;
-
- if (pcre_pattern)
-- pcre_free(pcre_pattern);
-+ pcre2_code_free(pcre_pattern);
- pcre_pattern = NULL;
-
- target = ztrdup(*args);
- unmetafy(target, &target_len);
-
-- if ((int)strlen(target) != target_len) {
-- zwarnnam(nam, "embedded NULs in PCRE pattern terminate pattern");
-- }
--
-- pcre_pattern = pcre_compile(target, pcre_opts, &pcre_error, &pcre_errptr, NULL);
-+ pcre_pattern = pcre2_compile((PCRE2_SPTR) target, (PCRE2_SIZE) target_len,
-+ pcre_opts, &pcre_error, &pcre_offset, NULL);
-
- free(target);
-
- if (pcre_pattern == NULL)
- {
-- zwarnnam(nam, "error in regex: %s", pcre_error);
-+ PCRE2_UCHAR buffer[256];
-+ pcre2_get_error_message(pcre_error, buffer, sizeof(buffer));
-+ zwarnnam(nam, "error in regex: %s", buffer);
- return 1;
- }
-
- return 0;
- }
-
--/**/
--#ifdef HAVE_PCRE_STUDY
--
- /**/
- static int
- bin_pcre_study(char *nam, UNUSED(char **args), UNUSED(Options ops), UNUSED(int func))
- {
-- const char *pcre_error;
--
- if (pcre_pattern == NULL)
- {
- zwarnnam(nam, "no pattern has been compiled for study");
- return 1;
- }
--
-- if (pcre_hints)
--#ifdef PCRE_CONFIG_JIT
-- pcre_free_study(pcre_hints);
--#else
-- pcre_free(pcre_hints);
--#endif
-- pcre_hints = NULL;
-
-- pcre_hints = pcre_study(pcre_pattern, 0, &pcre_error);
-- if (pcre_error != NULL)
-- {
-- zwarnnam(nam, "error while studying regex: %s", pcre_error);
-- return 1;
-+ int jit = 0;
-+ if (!pcre2_config(PCRE2_CONFIG_JIT, &jit) && jit) {
-+ if (pcre2_jit_compile(pcre_pattern, PCRE2_JIT_COMPLETE) < 0) {
-+ zwarnnam(nam, "error while studying regex");
-+ return 1;
-+ }
- }
-
- return 0;
- }
-
--/**/
--#else /* !HAVE_PCRE_STUDY */
--
--# define bin_pcre_study bin_notavail
--
--/**/
--#endif /* !HAVE_PCRE_STUDY */
--
--/**/
- static int
--zpcre_get_substrings(char *arg, int *ovec, int captured_count, char *matchvar,
-- char *substravar, int want_offset_pair, int matchedinarr,
-- int want_begin_end)
-+zpcre_get_substrings(char *arg, pcre2_match_data *mdata, int captured_count,
-+ char *matchvar, char *substravar, int want_offset_pair,
-+ int matchedinarr, int want_begin_end)
- {
-- char **captures, *match_all, **matches;
-+ PCRE2_SIZE *ovec;
-+ char *match_all, **matches;
- char offset_all[50];
- int capture_start = 1;
-
- if (matchedinarr) {
-- /* bash-style captures[0] entire-matched string in the array */
-+ /* bash-style ovec[0] entire-matched string in the array */
- capture_start = 0;
- }
-
-- /* captures[0] will be entire matched string, [1] first substring */
-- if (!pcre_get_substring_list(arg, ovec, captured_count, (const char ***)&captures)) {
-- int nelem = arrlen(captures)-1;
-+ /* ovec[0] will be entire matched string, [1] first substring */
-+ ovec = pcre2_get_ovector_pointer(mdata);
-+ if (ovec) {
-+ int nelem = captured_count - 1;
- /* Set to the offsets of the complete match */
- if (want_offset_pair) {
-- sprintf(offset_all, "%d %d", ovec[0], ovec[1]);
-+ sprintf(offset_all, "%ld %ld", ovec[0], ovec[1]);
- setsparam("ZPCRE_OP", ztrdup(offset_all));
- }
- /*
-@@ -186,7 +158,7 @@ zpcre_get_substrings(char *arg, int *ovec, int captured_count, char *matchvar,
- * ovec is length 2*(1+capture_list_length)
- */
- if (matchvar) {
-- match_all = metafy(captures[0], ovec[1] - ovec[0], META_DUP);
-+ match_all = metafy(arg + ovec[0], ovec[1] - ovec[0], META_DUP);
- setsparam(matchvar, match_all);
- }
- /*
-@@ -201,16 +173,12 @@ zpcre_get_substrings(char *arg, int *ovec, int captured_count, char *matchvar,
- */
- if (substravar &&
- (!want_begin_end || nelem)) {
-- char **x, **y;
-+ char **x;
- int vec_off, i;
-- y = &captures[capture_start];
- matches = x = (char **) zalloc(sizeof(char *) * (captured_count+1-capture_start));
-- for (i = capture_start; i < captured_count; i++, y++) {
-+ for (i = capture_start; i < captured_count; i++) {
- vec_off = 2*i;
-- if (*y)
-- *x++ = metafy(*y, ovec[vec_off+1]-ovec[vec_off], META_DUP);
-- else
-- *x++ = NULL;
-+ *x++ = metafy(arg + ovec[vec_off], ovec[vec_off+1]-ovec[vec_off], META_DUP);
- }
- *x = NULL;
- setaparam(substravar, matches);
-@@ -247,7 +215,8 @@ zpcre_get_substrings(char *arg, int *ovec, int captured_count, char *matchvar,
- setiparam("MEND", offs + !isset(KSHARRAYS) - 1);
- if (nelem) {
- char **mbegin, **mend, **bptr, **eptr;
-- int i, *ipair;
-+ int i;
-+ size_t *ipair;
-
- bptr = mbegin = zalloc(sizeof(char*)*(nelem+1));
- eptr = mend = zalloc(sizeof(char*)*(nelem+1));
-@@ -287,8 +256,6 @@ zpcre_get_substrings(char *arg, int *ovec, int captured_count, char *matchvar,
- setaparam("mend", mend);
- }
- }
--
-- pcre_free_substring_list((const char **)captures);
- }
-
- return 0;
-@@ -314,7 +281,8 @@ getposint(char *instr, char *nam)
- static int
- bin_pcre_match(char *nam, char **args, Options ops, UNUSED(int func))
- {
-- int ret, capcount, *ovec, ovecsize, c;
-+ int ret, c;
-+ pcre2_match_data *pcre_mdata = NULL;
- char *matched_portion = NULL;
- char *plaintext = NULL;
- char *receptacle = NULL;
-@@ -344,36 +312,30 @@ bin_pcre_match(char *nam, char **args, Options ops, UNUSED(int func))
- /* For the entire match, 'Return' the offset byte positions instead of the matched string */
- if(OPT_ISSET(ops,'b')) want_offset_pair = 1;
-
-- if ((ret = pcre_fullinfo(pcre_pattern, pcre_hints, PCRE_INFO_CAPTURECOUNT, &capcount)))
-- {
-- zwarnnam(nam, "error %d in fullinfo", ret);
-- return 1;
-- }
--
-- ovecsize = (capcount+1)*3;
-- ovec = zalloc(ovecsize*sizeof(int));
--
- plaintext = ztrdup(*args);
- unmetafy(plaintext, &subject_len);
-
- if (offset_start > 0 && offset_start >= subject_len)
-- ret = PCRE_ERROR_NOMATCH;
-- else
-- ret = pcre_exec(pcre_pattern, pcre_hints, plaintext, subject_len, offset_start, 0, ovec, ovecsize);
-+ ret = PCRE2_ERROR_NOMATCH;
-+ else {
-+ pcre_mdata = pcre2_match_data_create_from_pattern(pcre_pattern, NULL);
-+ ret = pcre2_match(pcre_pattern, (PCRE2_SPTR) plaintext, subject_len,
-+ offset_start, 0, pcre_mdata, NULL);
-+ }
-
- if (ret==0) return_value = 0;
-- else if (ret==PCRE_ERROR_NOMATCH) /* no match */;
-+ else if (ret == PCRE2_ERROR_NOMATCH) /* no match */;
- else if (ret>0) {
-- zpcre_get_substrings(plaintext, ovec, ret, matched_portion, receptacle,
-+ zpcre_get_substrings(plaintext, pcre_mdata, ret, matched_portion, receptacle,
- want_offset_pair, 0, 0);
- return_value = 0;
- }
- else {
-- zwarnnam(nam, "error in pcre_exec [%d]", ret);
-+ zwarnnam(nam, "error in pcre2_match [%d]", ret);
- }
-
-- if (ovec)
-- zfree(ovec, ovecsize*sizeof(int));
-+ if (pcre_mdata)
-+ pcre2_match_data_free(pcre_mdata);
- zsfree(plaintext);
-
- return return_value;
-@@ -383,17 +345,19 @@ bin_pcre_match(char *nam, char **args, Options ops, UNUSED(int func))
- static int
- cond_pcre_match(char **a, int id)
- {
-- pcre *pcre_pat;
-- const char *pcre_err;
-+ pcre2_code *pcre_pat = NULL;
-+ int pcre_err;
-+ PCRE2_SIZE pcre_erroff;
- char *lhstr, *rhre, *lhstr_plain, *rhre_plain, *avar, *svar;
-- int r = 0, pcre_opts = 0, pcre_errptr, capcnt, *ov, ovsize;
-+ int r = 0, pcre_opts = 0;
-+ pcre2_match_data *pcre_mdata = NULL;
- int lhstr_plain_len, rhre_plain_len;
- int return_value = 0;
-
- if (zpcre_utf8_enabled())
-- pcre_opts |= PCRE_UTF8;
-+ pcre_opts |= PCRE2_UTF;
- if (isset(REMATCHPCRE) && !isset(CASEMATCH))
-- pcre_opts |= PCRE_CASELESS;
-+ pcre_opts |= PCRE2_CASELESS;
-
- lhstr = cond_str(a,0,0);
- rhre = cond_str(a,1,0);
-@@ -401,9 +365,6 @@ cond_pcre_match(char **a, int id)
- rhre_plain = ztrdup(rhre);
- unmetafy(lhstr_plain, &lhstr_plain_len);
- unmetafy(rhre_plain, &rhre_plain_len);
-- pcre_pat = NULL;
-- ov = NULL;
-- ovsize = 0;
-
- if (isset(BASHREMATCH)) {
- svar = NULL;
-@@ -415,27 +376,27 @@ cond_pcre_match(char **a, int id)
-
- switch(id) {
- case CPCRE_PLAIN:
-- if ((int)strlen(rhre_plain) != rhre_plain_len) {
-- zwarn("embedded NULs in PCRE pattern terminate pattern");
-- }
-- pcre_pat = pcre_compile(rhre_plain, pcre_opts, &pcre_err, &pcre_errptr, NULL);
-- if (pcre_pat == NULL) {
-- zwarn("failed to compile regexp /%s/: %s", rhre, pcre_err);
-+ if (!(pcre_pat = pcre2_compile((PCRE2_SPTR) rhre_plain,
-+ (PCRE2_SIZE) rhre_plain_len, pcre_opts,
-+ &pcre_err, &pcre_erroff, NULL)))
-+ {
-+ PCRE2_UCHAR buffer[256];
-+ pcre2_get_error_message(pcre_err, buffer, sizeof(buffer));
-+ zwarn("failed to compile regexp /%s/: %s", rhre, buffer);
- break;
- }
-- pcre_fullinfo(pcre_pat, NULL, PCRE_INFO_CAPTURECOUNT, &capcnt);
-- ovsize = (capcnt+1)*3;
-- ov = zalloc(ovsize*sizeof(int));
-- r = pcre_exec(pcre_pat, NULL, lhstr_plain, lhstr_plain_len, 0, 0, ov, ovsize);
-- /* r < 0 => error; r==0 match but not enough size in ov
-+ pcre_mdata = pcre2_match_data_create_from_pattern(pcre_pat, NULL);
-+ r = pcre2_match(pcre_pat, (PCRE2_SPTR8) lhstr_plain, lhstr_plain_len,
-+ 0, 0, pcre_mdata, NULL);
-+ /* r < 0 => error; r==0 match but not enough size in match data
- * r > 0 => (r-1) substrings found; r==1 => no substrings
- */
- if (r==0) {
-- zwarn("reportable zsh problem: pcre_exec() returned 0");
-+ zwarn("reportable zsh problem: pcre2_match() returned 0");
- return_value = 1;
- break;
- }
-- else if (r==PCRE_ERROR_NOMATCH) {
-+ else if (r == PCRE2_ERROR_NOMATCH) {
- return_value = 0; /* no match */
- break;
- }
-@@ -444,7 +405,7 @@ cond_pcre_match(char **a, int id)
- break;
- }
- else if (r>0) {
-- zpcre_get_substrings(lhstr_plain, ov, r, svar, avar, 0,
-+ zpcre_get_substrings(lhstr_plain, pcre_mdata, r, svar, avar, 0,
- isset(BASHREMATCH),
- !isset(BASHREMATCH));
- return_value = 1;
-@@ -457,10 +418,10 @@ cond_pcre_match(char **a, int id)
- free(lhstr_plain);
- if(rhre_plain)
- free(rhre_plain);
-+ if (pcre_mdata)
-+ pcre2_match_data_free(pcre_mdata);
- if (pcre_pat)
-- pcre_free(pcre_pat);
-- if (ov)
-- zfree(ov, ovsize*sizeof(int));
-+ pcre2_code_free(pcre_pat);
-
- return return_value;
- }
-@@ -489,11 +450,11 @@ static struct builtin bintab[] = {
-
- static struct features module_features = {
- bintab, sizeof(bintab)/sizeof(*bintab),
--#if defined(HAVE_PCRE_COMPILE) && defined(HAVE_PCRE_EXEC)
-+#if defined(HAVE_PCRE2_COMPILE_8) && defined(HAVE_PCRE2_H)
- cotab, sizeof(cotab)/sizeof(*cotab),
--#else /* !(HAVE_PCRE_COMPILE && HAVE_PCRE_EXEC) */
-+#else /* !(HAVE_PCRE2_COMPILE_8 && HAVE_PCRE2_H) */
- NULL, 0,
--#endif /* !(HAVE_PCRE_COMPILE && HAVE_PCRE_EXEC) */
-+#endif /* !(HAVE_PCRE2_COMPILE_8 && HAVE_PCRE2_H) */
- NULL, 0,
- NULL, 0,
- 0
-@@ -540,19 +501,9 @@ cleanup_(Module m)
- int
- finish_(UNUSED(Module m))
- {
--#if defined(HAVE_PCRE_COMPILE) && defined(HAVE_PCRE_EXEC)
--#ifdef HAVE_PCRE_STUDY
-- if (pcre_hints)
--#ifdef PCRE_CONFIG_JIT
-- pcre_free_study(pcre_hints);
--#else
-- pcre_free(pcre_hints);
--#endif
-- pcre_hints = NULL;
--#endif
--
-+#if defined(HAVE_PCRE2_COMPILE_8) && defined(HAVE_PCRE2_H)
- if (pcre_pattern)
-- pcre_free(pcre_pattern);
-+ pcre2_code_free(pcre_pattern);
- pcre_pattern = NULL;
- #endif
-
-diff --git a/Test/V07pcre.ztst b/Test/V07pcre.ztst
-index 22a0b64c7..6eb366964 100644
---- a/Test/V07pcre.ztst
-+++ b/Test/V07pcre.ztst
-@@ -117,12 +117,17 @@
- >78884; ZPCRE_OP: 25 30
- >90210; ZPCRE_OP: 31 36
-
--# Embedded NULs allowed in plaintext, but not in RE (although \0 as two-chars allowed)
-+# Embedded NULs allowed in plaintext, in RE, pcre supports \0 as two-chars
- [[ $'a\0bc\0d' =~ '^(a\0.)(.+)$' ]]
- print "${#MATCH}; ${#match[1]}; ${#match[2]}"
- 0:ensure ASCII NUL passes in and out of matched plaintext
- >6; 3; 3
-
-+# PCRE2 supports NULs also in the RE
-+ [[ $'a\0b\0c' =~ $'^(.\0)+' ]] && print "${#MATCH}; ${#match[1]}"
-+0:ensure ASCII NUL works also in the regex
-+>4; 2
-+
- # Ensure the long-form infix operator works
- [[ foo -pcre-match ^f..$ ]]
- print $?
-@@ -169,7 +174,11 @@
- [[ é =~ '^..\z' ]]; echo $?
- LANG=$LANG_SAVE
- [[ é =~ '^.\z' ]]; echo $?
--0:swich between C/UTF-8 locales
-+0:switch between C/UTF-8 locales
- >0
- >0
- >0
-+
-+ [[ abc =~ 'a(d*)bc' ]] && print "$#MATCH; $#match; ${#match[1]}"
-+0:empty capture
-+>3; 1; 0
-diff --git a/configure.ac b/configure.ac
-index d8a17791a..4710d1659 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -438,7 +438,7 @@ fi],
-
- dnl Do you want to look for pcre support?
- AC_ARG_ENABLE(pcre,
--AS_HELP_STRING([--enable-pcre],[enable the search for the pcre library (may create run-time library dependencies)]))
-+AS_HELP_STRING([--enable-pcre],[enable the search for the pcre2 library (may create run-time library dependencies)]))
-
- dnl Do you want to look for capability support?
- AC_ARG_ENABLE(cap,
-@@ -652,13 +652,12 @@ AC_HEADER_SYS_WAIT
-
- oldcflags="$CFLAGS"
- if test x$enable_pcre = xyes; then
--AC_CHECK_PROG([PCRECONF], pcre-config, pcre-config)
--dnl Typically (meaning on this single RedHat 9 box in front of me)
--dnl pcre-config --cflags produces a -I output which needs to go into
-+AC_CHECK_PROG([PCRECONF], pcre2-config, pcre2-config)
-+dnl pcre2-config --cflags may produce a -I output which needs to go into
- dnl CPPFLAGS else configure's preprocessor tests don't pick it up,
- dnl producing a warning.
--if test "x$ac_cv_prog_PCRECONF" = xpcre-config; then
-- CPPFLAGS="$CPPFLAGS `pcre-config --cflags`"
-+if test "x$ac_cv_prog_PCRECONF" = xpcre2-config; then
-+ CPPFLAGS="$CPPFLAGS `pcre2-config --cflags`"
- fi
- fi
-
-@@ -668,9 +667,10 @@ AC_CHECK_HEADERS(sys/time.h sys/times.h sys/select.h termcap.h termio.h \
- locale.h errno.h stdio.h stdarg.h varargs.h stdlib.h \
- unistd.h sys/capability.h \
- utmp.h utmpx.h sys/types.h pwd.h grp.h poll.h sys/mman.h \
-- netinet/in_systm.h pcre.h langinfo.h wchar.h stddef.h \
-+ netinet/in_systm.h langinfo.h wchar.h stddef.h \
- sys/stropts.h iconv.h ncurses.h ncursesw/ncurses.h \
- ncurses/ncurses.h)
-+AC_CHECK_HEADERS([pcre2.h],,,[#define PCRE2_CODE_UNIT_WIDTH 8])
- if test x$dynamic = xyes; then
- AC_CHECK_HEADERS(dlfcn.h)
- AC_CHECK_HEADERS(dl.h)
-@@ -948,9 +948,7 @@ if test "x$ac_found_iconv" = "xyes"; then
- fi
-
- if test x$enable_pcre = xyes; then
--dnl pcre-config should probably be employed here
--dnl AC_SEARCH_LIBS(pcre_compile, pcre)
-- LIBS="`$ac_cv_prog_PCRECONF --libs` $LIBS"
-+ LIBS="`$ac_cv_prog_PCRECONF --libs8` $LIBS"
- fi
-
- dnl ---------------------
-@@ -1313,7 +1311,7 @@ AC_CHECK_FUNCS(strftime strptime mktime timelocal \
- pathconf sysconf \
- tgetent tigetflag tigetnum tigetstr setupterm initscr resize_term \
- getcchar setcchar waddwstr wget_wch win_wch use_default_colors \
-- pcre_compile pcre_study pcre_exec \
-+ pcre2_compile_8 \
- nl_langinfo \
- erand48 open_memstream \
- posix_openpt \
---
-2.41.0
-
-From 10bdbd8b5b0b43445aff23dcd412f25cf6aa328a Mon Sep 17 00:00:00 2001
-From: Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
-Date: Tue, 20 Jun 2023 18:14:27 +0900
-Subject: [PATCH] 51877: do not build pcre module if pcre2-config is not found
-
- Cherry-picked-by: Lukáš Zaoral <lzaoral@redhat.com>
----
- Src/Modules/pcre.mdd | 2 +-
- configure.ac | 31 +++++++++++++++++++------------
- 2 files changed, 20 insertions(+), 13 deletions(-)
-
-diff --git a/Src/Modules/pcre.mdd b/Src/Modules/pcre.mdd
-index 6eb3c691b..3e1579117 100644
---- a/Src/Modules/pcre.mdd
-+++ b/Src/Modules/pcre.mdd
-@@ -1,5 +1,5 @@
- name=zsh/pcre
--link=`if test x$enable_pcre = xyes && (pcre-config --version >/dev/null 2>/dev/null); then echo dynamic; else echo no; fi`
-+link=`if test x$enable_pcre = xyes; then echo dynamic; else echo no; fi`
- load=no
-
- autofeatures="b:pcre_compile b:pcre_study b:pcre_match"
-diff --git a/configure.ac b/configure.ac
-index ba76f9a60..c5263035e 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -440,6 +440,17 @@ dnl Do you want to look for pcre support?
- AC_ARG_ENABLE(pcre,
- AS_HELP_STRING([--enable-pcre],[enable the search for the pcre2 library (may create run-time library dependencies)]))
-
-+AC_ARG_VAR(PCRE_CONFIG, [pathname of pcre2-config if it is not in PATH])
-+if test "x$enable_pcre" = xyes; then
-+ AC_CHECK_PROG([PCRE_CONFIG], pcre2-config, pcre2-config)
-+ if test "x$PCRE_CONFIG" = x; then
-+ enable_pcre=no
-+ AC_MSG_WARN([pcre2-config not found: pcre module is disabled.])
-+ AC_MSG_NOTICE(
-+ [Set PCRE_CONFIG to pathname of pcre2-config if it is not in PATH.])
-+ fi
-+fi
-+
- dnl Do you want to look for capability support?
- AC_ARG_ENABLE(cap,
- AS_HELP_STRING([--enable-cap],[enable the search for POSIX capabilities (may require additional headers to be added by hand)]))
-@@ -655,15 +666,12 @@ AC_HEADER_DIRENT
- AC_HEADER_STAT
- AC_HEADER_SYS_WAIT
-
--oldcflags="$CFLAGS"
--if test x$enable_pcre = xyes; then
--AC_CHECK_PROG([PCRECONF], pcre2-config, pcre2-config)
- dnl pcre2-config --cflags may produce a -I output which needs to go into
- dnl CPPFLAGS else configure's preprocessor tests don't pick it up,
- dnl producing a warning.
--if test "x$ac_cv_prog_PCRECONF" = xpcre2-config; then
-- CPPFLAGS="$CPPFLAGS `pcre2-config --cflags`"
--fi
-+if test "x$enable_pcre" = xyes; then
-+ CPPFLAGS="`$PCRE_CONFIG --cflags` $CPPFLAGS"
-+ AC_CHECK_HEADERS([pcre2.h],,,[#define PCRE2_CODE_UNIT_WIDTH 8])
- fi
-
- AC_CHECK_HEADERS(sys/time.h sys/times.h sys/select.h termcap.h termio.h \
-@@ -675,7 +683,6 @@ AC_CHECK_HEADERS(sys/time.h sys/times.h sys/select.h termcap.h termio.h \
- netinet/in_systm.h langinfo.h wchar.h stddef.h \
- sys/stropts.h iconv.h ncurses.h ncursesw/ncurses.h \
- ncurses/ncurses.h)
--AC_CHECK_HEADERS([pcre2.h],,,[#define PCRE2_CODE_UNIT_WIDTH 8])
- if test x$dynamic = xyes; then
- AC_CHECK_HEADERS(dlfcn.h)
- AC_CHECK_HEADERS(dl.h)
-@@ -952,10 +959,6 @@ if test "x$ac_found_iconv" = "xyes"; then
- [Define as const if the declaration of iconv() needs const.])
- fi
-
--if test x$enable_pcre = xyes; then
-- LIBS="`$ac_cv_prog_PCRECONF --libs8` $LIBS"
--fi
--
- dnl ---------------------
- dnl CHECK TERMCAP LIBRARY
- dnl ---------------------
-@@ -1316,7 +1319,6 @@ AC_CHECK_FUNCS(strftime strptime mktime timelocal \
- pathconf sysconf \
- tgetent tigetflag tigetnum tigetstr setupterm initscr resize_term \
- getcchar setcchar waddwstr wget_wch win_wch use_default_colors \
-- pcre2_compile_8 \
- nl_langinfo \
- erand48 open_memstream \
- posix_openpt \
-@@ -1371,6 +1373,11 @@ if test x$zsh_cv_func_realpath_accepts_null = xyes; then
- AC_DEFINE(REALPATH_ACCEPTS_NULL)
- fi
-
-+if test x$enable_pcre = xyes; then
-+ LIBS="`$PCRE_CONFIG --libs8` $LIBS"
-+ AC_CHECK_FUNCS(pcre2_compile_8)
-+fi
-+
- if test x$enable_cap = xyes; then
- AC_CHECK_FUNCS(cap_get_proc)
- fi
---
-2.42.0
-
diff --git a/0006-zsh-support-texinfo-7.0.patch b/0006-zsh-support-texinfo-7.0.patch
deleted file mode 100644
index c68bd26..0000000
--- a/0006-zsh-support-texinfo-7.0.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From ecd3f9c9506c7720dc6c0833dc5d5eb00e4459c4 Mon Sep 17 00:00:00 2001
-From: Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
-Date: Mon, 19 Jun 2023 11:19:25 +0900
-Subject: [PATCH] 51862: support texinfo-7.0
-
-Upstream-commit: ecd3f9c9506c7720dc6c0833dc5d5eb00e4459c4
-Cherry-picked-by: Lukáš Zaoral <lzaoral@redhat.com>
----
- Doc/Makefile.in | 3 ++-
- configure.ac | 5 +++++
- 2 files changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/Doc/Makefile.in b/Doc/Makefile.in
-index 136b080d6..dabe11fe3 100644
---- a/Doc/Makefile.in
-+++ b/Doc/Makefile.in
-@@ -43,6 +43,7 @@ TEXI2DVI = @TEXI2DVI@
- DVIPS = dvips
- TEXI2PDF = @TEXI2PDF@
- TEXI2HTML = @TEXI2HTML@
-+SET_TEXI2ANY_VAR = @SET_TEXI2ANY_VAR@
- PAPERSIZE = @PAPERSIZE@
-
- .SUFFIXES: .yo .1
-@@ -266,7 +267,7 @@ texi2html.conf: $(sdir_top)/Config/version.mk
- d=`echo $(VERSION_DATE)`; \
- v="<font size=\"-1\">Zsh version $(VERSION), released on $$d.</font>"; \
- case '$(TEXI2HTML)' in \
-- *texi2any*) echo "set_from_init_file('PRE_BODY_CLOSE','$$v');" ;; \
-+ *texi2any*) echo "$(SET_TEXI2ANY_VAR)('PRE_BODY_CLOSE','$$v');" ;; \
- *) echo "\$$PRE_BODY_CLOSE = '$$v';" ;; \
- esac > $@
-
-diff --git a/configure.ac b/configure.ac
-index 4710d1659..ba76f9a60 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -623,7 +623,12 @@ fi
-
- if test x"$TEXI2HTML" = xtexi2any; then
- TEXI2HTML='texi2any -c TEXI2HTML=1'
-+ case `texi2any --version 2>/dev/null | sed -e 's/^.*) *//' -e 1q` in
-+ [[1-6]].*) SET_TEXI2ANY_VAR=set_from_init_file ;;
-+ *) SET_TEXI2ANY_VAR=texinfo_set_from_init_file ;;
-+ esac
- fi
-+AC_SUBST(SET_TEXI2ANY_VAR)
-
- case "$LC_PAPER" in
- ??_US*) PAPERSIZE=us ;;
---
-2.42.0
-
diff --git a/0007-zsh-configure-c99.patch b/0007-zsh-configure-c99.patch
deleted file mode 100644
index c4b3623..0000000
--- a/0007-zsh-configure-c99.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-Avoid incompatible pointer types in terminfo global variable checks.
-Some compilers reject these incompatible pointer types, causing the
-checks to always fail, when these variables are in fact available.
-
-Submitted upstream: <https://www.zsh.org/mla/workers/2023/msg01112.html>
-
-diff --git a/configure.ac b/configure.ac
-index a58242f453b4a8f3..5534f42df14eb28c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1769,27 +1769,27 @@ if test x$zsh_cv_path_term_header != xnone; then
- fi
-
- AC_MSG_CHECKING(if boolcodes is available)
-- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = boolcodes; puts(*test);]])],[AC_DEFINE(HAVE_BOOLCODES) boolcodes=yes],[boolcodes=no])
-+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)boolcodes; puts(*test);]])],[AC_DEFINE(HAVE_BOOLCODES) boolcodes=yes],[boolcodes=no])
- AC_MSG_RESULT($boolcodes)
-
- AC_MSG_CHECKING(if numcodes is available)
-- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = numcodes; puts(*test);]])],[AC_DEFINE(HAVE_NUMCODES) numcodes=yes],[numcodes=no])
-+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)numcodes; puts(*test);]])],[AC_DEFINE(HAVE_NUMCODES) numcodes=yes],[numcodes=no])
- AC_MSG_RESULT($numcodes)
-
- AC_MSG_CHECKING(if strcodes is available)
-- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = strcodes; puts(*test);]])],[AC_DEFINE(HAVE_STRCODES) strcodes=yes],[strcodes=no])
-+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)strcodes; puts(*test);]])],[AC_DEFINE(HAVE_STRCODES) strcodes=yes],[strcodes=no])
- AC_MSG_RESULT($strcodes)
-
- AC_MSG_CHECKING(if boolnames is available)
-- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = boolnames; puts(*test);]])],[AC_DEFINE(HAVE_BOOLNAMES) boolnames=yes],[boolnames=no])
-+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)boolnames; puts(*test);]])],[AC_DEFINE(HAVE_BOOLNAMES) boolnames=yes],[boolnames=no])
- AC_MSG_RESULT($boolnames)
-
- AC_MSG_CHECKING(if numnames is available)
-- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = numnames; puts(*test);]])],[AC_DEFINE(HAVE_NUMNAMES) numnames=yes],[numnames=no])
-+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)numnames; puts(*test);]])],[AC_DEFINE(HAVE_NUMNAMES) numnames=yes],[numnames=no])
- AC_MSG_RESULT($numnames)
-
- AC_MSG_CHECKING(if strnames is available)
-- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = strnames; puts(*test);]])],[AC_DEFINE(HAVE_STRNAMES) strnames=yes],[strnames=no])
-+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)strnames; puts(*test);]])],[AC_DEFINE(HAVE_STRNAMES) strnames=yes],[strnames=no])
- AC_MSG_RESULT($strnames)
-
- dnl There are apparently defective terminal library headers on some
diff --git a/0008-zsh-deletefilelist-segfault.patch b/0008-zsh-deletefilelist-segfault.patch
deleted file mode 100644
index 8abaab1..0000000
--- a/0008-zsh-deletefilelist-segfault.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From d3edf318306e37d2d96c4e4ea442d10207722e94 Mon Sep 17 00:00:00 2001
-From: Bart Schaefer <schaefer@zsh.org>
-Date: Sun, 12 Feb 2023 09:52:39 -0800
-Subject: [PATCH] 51404: Nullify filelist after deleting (fix segfault)
-
-Cherry-picked-by: Lukáš Zaoral <lzaoral@redhat.com>
-Upstream-commit: d3edf318306e37d2d96c4e4ea442d10207722e94
----
- Src/jobs.c | 8 ++++++--
- 1 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/Src/jobs.c b/Src/jobs.c
-index 4863962b9..59ddd952e 100644
---- a/Src/jobs.c
-+++ b/Src/jobs.c
-@@ -1372,8 +1372,10 @@ cleanfilelists(void)
-
- DPUTS(shell_exiting >= 0, "BUG: cleanfilelists() before exit");
-
-- for (i = 1; i <= maxjob; i++)
-+ for (i = 1; i <= maxjob; i++) {
- deletefilelist(jobtab[i].filelist, 0);
-+ jobtab[i].filelist = 0;
-+ }
- }
-
- /**/
-@@ -1531,8 +1533,10 @@ havefiles(void)
- int i;
-
- for (i = 1; i <= maxjob; i++)
-- if (jobtab[i].stat && jobtab[i].filelist)
-+ if (jobtab[i].stat && jobtab[i].filelist &&
-+ peekfirst(jobtab[i].filelist)) {
- return 1;
-+ }
- return 0;
-
- }
---
-2.43.0
-
diff --git a/0009-zsh-support-dnf5.patch b/0009-zsh-support-dnf5.patch
deleted file mode 100644
index 8e55aa0..0000000
--- a/0009-zsh-support-dnf5.patch
+++ /dev/null
@@ -1,846 +0,0 @@
-commit b70b241cc5ca88cc129ff9ba14f8af2e889b90e6
-Author: Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
-Date: Thu Nov 21 12:26:51 2024 +0900
-
- 53238 (+53239 Mikael): support dnf5
-
- some options etc for dnf4 are also updated
-
-diff --git a/Completion/Redhat/Command/_dnf b/Completion/Redhat/Command/_dnf
-index a5edf8564..c41795adf 100644
---- a/Completion/Redhat/Command/_dnf
-+++ b/Completion/Redhat/Command/_dnf
-@@ -1,7 +1,11 @@
--#compdef dnf dnf-2 dnf-3
--#
--# based on dnf-4.2.18
--#
-+#compdef dnf dnf-2 dnf-3 dnf4
-+# based on dnf-4.21.1
-+
-+# avoid 'dnf --version' since it's rather slow for dnf4
-+if [[ $service = dnf && $commands[dnf]:P = */dnf5 ]]; then
-+ _dnf5 "$@" && return 0
-+ return 1
-+fi
-
- _dnf_helper() {
- # Get the pathname of the python executable from the 1st line of dnf-2/dnf-3.
-@@ -68,25 +72,23 @@ _dnf_packages_or_rpms() {
- fi
- }
-
--_dnf_groups_caching_policy() {
-- # TODO: Are there any reliable ways to validate the cache?
-- local -a newer=( "$1"(Nmw-1) ) # rebuild if more than a week old
-- return $#newer
--}
--
- _dnf_groups() {
-- local package_groups update_policy expl
-- zstyle -s ":completion:${curcontext}:" cache-policy update_policy
-- if [[ -z "$update_policy" ]]; then
-- zstyle ":completion:${curcontext}:" cache-policy _dnf_groups_caching_policy
-- fi
-- if _cache_invalid dnf-groups || ! _retrieve_cache dnf-groups; then
-- # this can be very slow
-- package_groups=( ${${${(M)${(f)"$(_call_program package-groups \
-- $service group list -v 2>/dev/null)"}:# *}#*\(}%\)*} )
-- _store_cache dnf-groups package_groups
-- fi
-- _wanted package-groups expl 'package group' compadd "$@" -a package_groups
-+ # optional option: -T (available|installed)
-+ local selected line groups section=none
-+ zparseopts -D -E - T:=selected
-+ selected=$selected[2]
-+ [[ -z $selected ]] && selected=all
-+ # XXX hidden groups are not included.
-+ # --installed and --available can't be specified with --hidden
-+ for line in ${(f)"$(_call_program package-groups
-+ $service group list --$selected -qCv 2>/dev/null)"}; do
-+ # a line for each group is of the following form:
-+ # ' description of the group (group-id)'
-+ if [[ $line = \ ##(#b)(*)\(([-_[:alnum:]]#)\) ]]; then
-+ groups+=( "${match[2]}:${match[1]}" )
-+ fi
-+ done
-+ _describe -t groups "$selected group" groups
- }
-
- _dnf_repoquery() {
-@@ -194,7 +196,7 @@ _dnf_repository_packages() {
- fi
- }
-
--_dnf() {
-+_dnf4() {
- local cache_file="/var/cache/dnf/packages.db"
- local -a opts=(
- '(-6)-4[resolve to IPv4 addresses only]'
-@@ -226,7 +228,7 @@ _dnf() {
- '*'{-x+,--exclude=}'[exclude specified packages]: : _sequence _dnf_packages -T all'
- '--forcearch=[force the use of the specified arch]:arch: '
- '(-)'{-h,--help}'[show the help message]'
-- '--installroot=[set install root]:directory:_files -/'
-+ '--installroot=[set install root]:directory:_files -/ -g "/*"'
- '--newpackage[include newpackage relevant packages]'
- '--noautoremove[disable removal of dependencies that are no longer used]'
- '--nobest[do not limit transactions to best candidates]'
-@@ -289,18 +291,21 @@ _dnf_command() {
- if (( CURRENT == 1 )); then
- _describe -t dnf-commands 'dnf command' dnf_cmds
- else
-- local curcontext=$curcontext cur=$words[CURRENT] cmd tmp expl ret=1
-+ local cur=$words[CURRENT] cmd=$words[1] tmp expl ret=1
- # Deal with aliases (not comprehensive)
-- case $words[1] in
-+ case $cmd in
- check-updgrade) cmd=check-update;;
- distrosync|dsync) cmd=distro-sync;;
- dg) cmd=downgrade;;
-+ dsync) cmd=distro-sync;;
- erase|rm) cmd=remove;;
- groups|grp) cmd=group;;
- hist) cmd=history;;
- in) cmd=install;;
-+ if) cmd=info;;
-+ ls) cmd=list;;
- mc) cmd=makecache;;
-- prov|whatprovides) cmd=provides;;
-+ prov|whatprovides|wp) cmd=provides;;
- rei) cmd=reinstall;;
- repoinfo) cmd=repolist;;
- rq) cmd=repoquery;;
-@@ -308,9 +313,9 @@ _dnf_command() {
- sh) cmd=shell;;
- update|up) cmd=upgrade;;
- update-minimal|up-min) cmd=upgrade-minimal;;
-- *) cmd="${${dnf_cmds[(r)$words[1]:*]%%:*}}";;
-+ upif) cmd=updateinfo;;
- esac
-- (( $#cmd )) && curcontext="${curcontext%:*:*}:dnf-${cmd}:"
-+ local curcontext="${curcontext%:*:*}:dnf-${cmd}:"
-
- case $cmd in
- alias)
-@@ -337,11 +342,9 @@ _dnf_command() {
- _describe -t options 'option' tmp && ret=0
- ;;
- check-update)
-- if [[ $cur = -* ]]; then
-- _wanted options expl 'option' compadd - --changelogs && ret=0
-- else
-- _dnf_packages -T installed && ret=0
-- fi
-+ _arguments : \
-+ '--changelogs[also print changelog delta of packages]' \
-+ '*: :_dnf_packages -T installed' && ret=0
- ;;
- clean)
- tmp=(
-@@ -368,23 +371,38 @@ _dnf_command() {
- "mark:mark a group for installation or removal"
- )
- _describe -t subcommands 'subcommand' tmp && ret=0
-- elif (( CURRENT == 3 )) && [[ $cur = -* ]]; then
-- if [[ $words[2] == install ]]; then
-- _wanted options expl 'option' compadd - --with-optional && ret=0
-- elif [[ $words[2] == list ]]; then
-- tmp=(
-- '--available:show only available groups'
-- '--installed:show only installed groups'
-- '--hidden:show also hidden groups'
-- '--ids:show also ID of groups'
-- )
-- _describe -t options 'option' tmp && ret=0
-- fi
-- elif (( CURRENT == 3 )) && [[ $words[2] == mark ]]; then
-- _wanted subcommands expl 'subcommand' \
-- compadd - install remove && ret=0
- else
-- _dnf_groups && ret=0
-+ case $words[2] in
-+ summary)
-+ _arguments : '--hidden' '2: :_dnf_groups' && ret=0
-+ ;;
-+ info)
-+ _dnf_groups && ret=0
-+ ;;
-+ install)
-+ _arguments : '--with-optional[also include optional packages]' \
-+ '*: :_dnf_groups -T available' && ret=0
-+ ;;
-+ list)
-+ _arguments : \
-+ '(--installed)--available[show only available groups]' \
-+ '(--available)--installed[show only installed groups]' \
-+ '--hidden[show also hidden groups]' \
-+ {--ids,-v}'[show also ID of groups]' \
-+ '*: :_dnf_groups' && ret=0
-+ ;;
-+ remove|upgrade)
-+ _dnf_groups -T installed && ret=0
-+ ;;
-+ mark)
-+ if (( CURRENT == 3 )); then
-+ _wanted subcommands expl 'subcommand' \
-+ compadd - install remove && ret=0
-+ else
-+ _dnf_groups && ret=0
-+ fi
-+ ;;
-+ esac
- fi
- ;;
- help)
-@@ -399,13 +417,32 @@ _dnf_command() {
- "list:list transactions"
- "info:describe the given transactions"
- "redo:repeat the specified transaction"
-+ "replay:replay transaction stored in the specified file"
- "rollback:undo all since the given transaction"
-+ "store:store the specified transaction in file"
- "undo:undo transactions"
- "userinstalled:list all packages installed by users"
- )
- _describe -t subcommands 'subcommand' tmp && ret=0
-- elif [[ $words[2] != userinstalled ]]; then
-- _message 'transaction' && ret=0
-+ else
-+ case $words[2] in
-+ list)
-+ _arguments : '--reverse[output history in reverse order]' \
-+ '*:transaction ID or ID..ID: ' && ret=0 ;;
-+ info)
-+ _message 'transaction ID or ID..ID' && ret=0 ;;
-+ redo|rollback|undo)
-+ _message 'transaction or package' && ret=0 ;;
-+ replay)
-+ _arguments : \
-+ "--ignore-installed[don't check for installed packages being in the same state as recorded in transaction]" \
-+ "--ignore-extras[don't check for extra packages pulled into the transaction on the target system]" \
-+ '--skip-unavailable[skip packages that are in transaction but not in target system]' \
-+ '2:transaction file:_files' && ret=0 ;;
-+ store)
-+ _arguments : {-o+,--output=}'[store in specified file]: :_files' \
-+ '2:transaction: ' && ret=0 ;;
-+ esac
- fi
- ;;
- info|list)
-@@ -413,7 +450,7 @@ _dnf_command() {
- if [[ $cur = -* ]]; then
- tmp=( --all --available --installed --extras
- --obsoletes --upgrades --autoremove --recent )
-- _wanted options expl 'option' compadd -a tmp
-+ _wanted options expl 'option' compadd -a tmp && ret=0
- else
- _dnf_packages -T all && ret=0
- fi
-@@ -449,6 +486,7 @@ _dnf_command() {
- tmp=(
- 'install:install a module profile including its packages'
- 'update:update packages associated with an active module stream'
-+ 'switch-to:switch to a module stream and change versions of installed packages'
- 'remove:remove installed module profiles and their packages'
- 'enable:enable a module stream'
- 'disable:disable a module with all its streams'
-@@ -502,7 +540,7 @@ _dnf_command() {
- _dnf_repoquery && ret=0
- ;;
- repository-packages)
-- _dnf_repository_packages
-+ _dnf_repository_packages && ret=0
- ;;
- search)
- if [[ $cur = -* ]]; then
-@@ -531,6 +569,7 @@ _dnf_command() {
- '--list[display list of advisories]'
- '--info[display detailed information of advisories]'
- + '(availability)'
-+ '-all[include advisories about any versions of installed packages]'
- '--available[limit to advisories about newer versions of installed packages]'
- '--installed[limit to advisories about equal or older versions of installed packages]'
- '--updates[limit to advisories about newer and available versions of installed packages]'
-@@ -548,4 +587,4 @@ _dnf_command() {
- fi
- }
-
--_dnf "$@"
-+_dnf4 "$@"
-diff --git a/Completion/Redhat/Command/_dnf5 b/Completion/Redhat/Command/_dnf5
-new file mode 100644
-index 000000000..e194dd5a7
---- /dev/null
-+++ b/Completion/Redhat/Command/_dnf5
-@@ -0,0 +1,570 @@
-+#compdef dnf5
-+# based on dnf-5.2.6.2
-+
-+# utility functions
-+
-+_dnf5_helper() {
-+ _call_program specs $service "${(q-)@}" "${(q-)PREFIX}\*" \
-+ -qC --assumeno --nogpgcheck 2>/dev/null </dev/null
-+}
-+
-+_dnf5_repositories() {
-+ # required option: -T (all|disabled|enabled)
-+ local selected expl
-+ zparseopts -D -E - T:=selected
-+ selected=$selected[2]
-+ _wanted $selected-repositories expl "$selected repository" \
-+ compadd "$@" - "${(@)${(f)$(_dnf5_helper repo list --$selected)}[2,-1]%% *}"
-+}
-+
-+_dnf5_packages() {
-+ # required option: -T (all|available|installed|upgradable)
-+ local selected opt expl
-+ zparseopts -D -E - T:=selected
-+ selected=$selected[2]
-+ case $selected in
-+ all) opt='' ;; # option --all does not exist
-+ upgradable) opt='--upgrades' ;;
-+ *) opt="--$selected" ;;
-+ esac
-+ _wanted $selected-packages expl "$selected package" \
-+ compadd "$@" - $(_dnf5_helper repoquery $opt --qf='%{name} ')
-+}
-+
-+_dnf5_rpm_files() {
-+ local expl
-+ _wanted rpm-files expl 'rpm file' _files -g '(#i)*.rpm(-.)'
-+}
-+
-+_dnf5_packages_or_rpms() {
-+ if [[ "$words[CURRENT]" = (*/*|\~*) ]]; then # if looks like a path name
-+ _dnf_rpm_files
-+ else
-+ _dnf5_packages "$@"
-+ fi
-+}
-+
-+_dnf5_groups() {
-+ # optional option: -T (available|installed)
-+ local update_policy selected line pat groups
-+ zparseopts -D -E - T:=selected
-+ selected=$selected[2]
-+ if [[ -z $selected ]]; then
-+ selected=all
-+ opt= # option --all does not exist
-+ else
-+ opt=--$selected
-+ fi
-+ # XXX hidden groups are not included
-+ for line in ${${(f)"$(_dnf5_helper group list $opt)"}[2,-1]}; do
-+ line=( ${(z)line} )
-+ groups+=( "$line[1]:$line[2,-2]" )
-+ done
-+ _describe -t $selected-groups "$selected group" groups
-+}
-+
-+_dnf5_environments() {
-+ local line envs
-+ for line in ${${(f)"$(_dnf5_helper environment list)"}[2,-1]}; do
-+ line=( ${(z)line} )
-+ envs+=( "$line[1]:$line[2,-2]" )
-+ done
-+ _describe -t environments 'environment' envs
-+}
-+
-+# completers for (several) dnf commands
-+
-+_dnf5-advisory () {
-+ _arguments : \
-+ $advisory_opts \
-+ '--contains-pkgs=[only show advisories containing specified packages]: : _sequence _dnf5_packages -T installed' \
-+ + '(with)' \
-+ '--with-cve[show only advisories referencing CVE ticket]' \
-+ '--with-bz[show only advisories referencing Bugzilla ticket]' \
-+ + '(type)' \
-+ '--all[show all advisories]' \
-+ '--available[show advisories containing newer versions of installed packages (default)]' \
-+ '--installed[show advisories containing equal and older version of installed packages]' \
-+ '--updates[show advisories containing upgradable packages]' \
-+ + args \
-+ ':subcommand:(list info summary)' '*:advisory spec:'
-+}
-+
-+_dnf5-group() {
-+ local -a tmp
-+ if (( CURRENT == 2 )); then
-+ tmp=(
-+ 'list:list all matching groups'
-+ 'info:print detailed information about groups'
-+ 'install:install packages from specified groups'
-+ 'remove:remove removable packages in specified groups'
-+ 'upgrade:upgrade specified groups and packages in them'
-+ )
-+ _describe -t subcommands 'subcommand' tmp
-+ else
-+ case $words[2] in
-+ list|info)
-+ tmp=(
-+ '(--installed)--available[show only available groups]'
-+ '(--available)--installed[show only installed groups]'
-+ '--hidden[show also hidden groups]'
-+ '--contains-pkgs=[show only groups containing specified packages]: : _sequence _dnf5_packages -T all'
-+ '*: : _dnf5_groups'
-+ )
-+ ;;
-+ install)
-+ tmp=( $common_opts
-+ '--with-optional[include optional packages from the groups]'
-+ '*: : _dnf5_groups -T available' )
-+ ;|
-+ upgrade)
-+ tmp=( ${common_opts:#--skip-broken*}
-+ '*: : _dnf5_groups -T installed' )
-+ ;|
-+ remove)
-+ tmp=( $offline_opts
-+ '*: : _dnf5_groups -T installed' )
-+ ;|
-+ install|remove)
-+ tmp+=( '--no-packages[operate on groups only, not manipulate any packages]' )
-+ ;|
-+ install|upgrade)
-+ tmp+=( $downgrade_opts )
-+ ;;
-+ esac
-+ _arguments : $tmp
-+ fi
-+}
-+
-+_dnf5-history() {
-+ local -a tmp
-+ if (( CURRENT == 2 )); then
-+ tmp=(
-+ 'list:list info about recorded transactions'
-+ 'info:print detailed about specific transactions'
-+ 'undo:revert all actions from the specified transaction'
-+ 'redo:repeat the specified transaction'
-+ 'rollback:undo all transactions performed after the specified transaction'
-+ 'store:store the transaction into a directory'
-+ )
-+ _describe -t subcommands 'subcommand' tmp
-+ else
-+ case $words[2] in
-+ list|info)
-+ tmp=( '--reverse[reverse the order of transactions in output]' )
-+ ;;
-+ undo|rollback|redo)
-+ tmp=( '--skip-unavailable[allow skipping impossible actions]' )
-+ ;|
-+ undo|rollback)
-+ tmp+=( $replay_opts )
-+ ;;
-+ store)
-+ tmp=( {-o,--output=}'[directory for storing the transaction (default ./transaction)]: : _directories')
-+ esac
-+ _arguments : $tmp '2:transaction:( )'
-+ fi
-+}
-+
-+_dnf5-mark() {
-+ local -a tmp
-+ if (( CURRENT == 2 )); then
-+ tmp=(
-+ 'user:mark the package as user-installed'
-+ 'dependency:mark the package as a dependency'
-+ 'weak:mark the package as a weak dependency'
-+ 'group:mark the package as installed by the specified group'
-+ )
-+ _describe -t subcommands 'subcommand' tmp
-+ else
-+ tmp=(
-+ '--skip-unavailable[skip packages not installed on the system]'
-+ '--store=[store the transaction in specified directory]: : _directories'
-+ )
-+ if [[ $words[2] = group ]]; then
-+ tmp+=( '2:group-id: _dnf5_groups -T installed' )
-+ fi
-+ _arguments : $tmp '*: : _dnf5_packages -T installed'
-+ fi
-+}
-+
-+_dnf5-module() {
-+ local -a tmp
-+ if (( CURRENT == 2 )); then
-+ tmp=(
-+ 'list:list module streams'
-+ 'info:print details about module streams'
-+ 'enable:enable module streams'
-+ 'disable:disable modules including all their streams'
-+ "reset:reset module state so it's no longer enabled or disabled"
-+ )
-+ _describe -t subcommands 'subcommand' tmp
-+ elif (( CURRENT == 3 )) && [[ $cur = -* ]]; then
-+ case $words[2] in
-+ list|info) tmp=( --enabled --disabled ) ;;
-+ enable) tmp=( --skip-broken --skip-unavailable ) ;;
-+ *) tmp=( --skip-unavailable ) ;;
-+ esac
-+ _wanted options expl 'option' compadd -a tmp
-+ else
-+ _message 'module spec'
-+ fi
-+}
-+
-+_dnf5-offline() { # also used by the 'system-upgrade' command
-+ local -a tmp
-+ if (( CURRENT == 2 )); then
-+ tmp=(
-+ 'clean:remove any stored offline transactions and cached packages'
-+ 'log:list boots during which offline transaction was attempted'
-+ 'reboot:prepare the system for offline transaction and reboot'
-+ )
-+ if [[ $cmd = offline ]]; then
-+ tmp+=( 'status:show status of the current offline transaction' )
-+ else
-+ tmp+=( 'download:download all packages needed for upgrade' )
-+ fi
-+ _describe -t subcommands 'subcommand' tmp && ret=0
-+ else
-+ case $words[2] in
-+ download)
-+ _arguments : \
-+ '--releasever=[the version to upgrade to]:version number:' \
-+ '--no-downgrade:do not install packages older than currently installed' '*: :' && ret=0
-+ ;;
-+ log)
-+ _arguments : \
-+ '--number=[show log of transaction specified by number]:transaction number:' '*: :' && ret=0
-+ ;;
-+ reboot)
-+ _wanted options expl 'option' compadd -- --poweroff && ret=0
-+ ;;
-+ esac
-+ fi
-+}
-+
-+_dnf5-repoquery() {
-+ local v
-+ local -a opts=(
-+ $advisory_opts
-+ '--arch=[limit results to specified architectures]:list of archs: '
-+ '--available[limit results to available packages]'
-+ '--disable-modular-filtering[include packages of inactive module streams]'
-+ '--duplicates[limit to installed duplicate packages]'
-+ '--exactdeps[limit to packages that require capability specified by ==what{requires,depends}]'
-+ '--extras[limit to installed packages that are not present in any available repository]'
-+ '--file=[limit results to packages which own specified file]:list of files: _sequence _files'
-+ '--installed[query installed packages]'
-+ '--installonly[limit to installed installonly packages]'
-+ '--latest-limit=[limit to latest packages of specified number]:number:'
-+ '--leaves[limit to groups of installed packages not required by other installed packages]'
-+ '--providers-of=[select packages that provide specified attribute]:attribute:(conflicts depends enhances obsoletes provides recommends requires requires_pre suggests supplement)'
-+ '--recent[limit to only recently changed packages]'
-+ '--recursive[make --whatrequires/--providers-of work recursively]'
-+ '--security[limit to packages in security advisories]'
-+ '--srpm[use the corresponding source RPM]'
-+ '--unneeded[limit to unneeded installed packages]'
-+ '--upgrades[limit to available packages that provide upgrade for installed packages]'
-+ '--userinstalled[limit to packages that are not installed as dependencies]'
-+ '--whatdepends=[limit to packages that require, enhance, recommend, suggest of supplement specified capability]:list of capability:'
-+ '--whatconflicts=[limit to packages that conflicts with specified capabilities]:list of capability: '
-+ )
-+ for v in enhance obsolete provide recommend require suggest supplement; do
-+ opts+=( "--what${v}s=[limit to packages that $v specified capabilities]:list of capability: ")
-+ done
-+ # mutually exclusive formating options
-+ opts+=(
-+ + '(format)'
-+ '--conflicts[display capabilities that the package conflicts with]'
-+ '--depends[display capabilities that the package depends on, enables, recommends, suggests or supplements]'
-+ '--files[show files in the package]'
-+ '--requires-pre[display capabilities required to run pre/post scripts of the package]'
-+ '--sourcerpm[display source RPM of the package]'
-+ '--location[display location of the package]'
-+ '--info[show detailed information about the package]'
-+ '--changelogs[print the package changelogs]'
-+ '(- *)--querytags[list tags recognized by --queryformat]'
-+ '--queryformat=[specify output format]:format:'
-+ )
-+ for v in enhance obsolete provide recommend require suggest supplement; do
-+ opts+=( "--${v}s[display capabilities ${v}ed by the package]" )
-+ done
-+
-+ _arguments : '*: : _dnf5_packages -T all' $opts
-+}
-+
-+# dnf commands
-+
-+_dnf5_commands() {
-+ local -a dnf_cmds=(
-+ 'advisory:manage advisories'
-+ 'autoremove:remove unneeded packages'
-+ 'check:check for problems in package database'
-+ 'check-upgrade:check for available package upgrades'
-+ 'clean:remove or invalidate cached data'
-+ 'distro-sync:up/downgrade installed packages to the latest available'
-+ 'downgrade:downgrade packages'
-+ 'download:download packages'
-+ 'environment:manage comps environments'
-+ 'group:manage comps groups'
-+ 'history:manage transaction history'
-+ 'info:provide detailed information about packages'
-+ 'install:install packages'
-+ 'leaves:list groups of leaf packages'
-+ 'list:list installed or available packages'
-+ 'makecache:generate the metadata cache'
-+ 'mark:change the reason of an installed package'
-+ 'module:manage modules'
-+ 'offline:manage offline transactions'
-+ 'provides:find what package provides the given value'
-+ 'reinstall:reinstall packages'
-+ 'remove:remove packages'
-+ 'replay:replay stored transactions'
-+ 'repo:manage repositories'
-+ 'repoquery:search for packages in repositories'
-+ 'search:search for packages using keywords'
-+ 'swap:remove software and install another in the single transaction'
-+ 'system-upgrade:upgrade the system to a new major release'
-+ 'upgrade:upgrade packages'
-+ 'versionlock:protect packages from updates to newer versions'
-+ )
-+ _describe -t dnf-commands 'dnf command' dnf_cmds
-+}
-+
-+# subcommands and options
-+
-+_dnf5_subcmds_opts() {
-+ local cur=$words[CURRENT] cmd=$words[1] expl ret=1
-+ local -a tmp
-+ # common options
-+ local -a offline_opts=(
-+ '(--store)--offline[store the transaction to be performed offline]'
-+ '(--offline)--store=[store the transaction in specified directory]: : _directories'
-+ )
-+ local -a common_opts=(
-+ $offline_opts
-+ '--allowerasing[allow erasing of installed packages]'
-+ '--skip-broken[resolve dependency problems by skipping problematic packages]'
-+ "--skip-unavailable[skip packages that can't be synchronized]"
-+ '--downloadonly[download packages without executing transaction]'
-+ )
-+ local -a advisory_opts=(
-+ '--advisories=[consider only specified advisories]:list of advisories:'
-+ '--advisory-severities=[limit to advisories with specified severity]:severity:_sequence compadd - critical important moderate low none'
-+ '--bzs=[limit to advisories that fix specified Bugzilla ID]:list of Bugzilla ID:'
-+ '--cves=[limit to advisories that fix specified CVE ID]:list of CVD ID]:'
-+ '--security[limit to security advisories]'
-+ '--bugfix[limit to bugfix advisories]'
-+ '--enhancement[limit to enhancement advisories]'
-+ '--newpackage[limit to newpackage advisories]'
-+ )
-+ local -a downgrade_opts=(
-+ '(--no-allow-downgrade)--allow-downgrade[enable downgrade of dependencies]'
-+ '(--allow-downgrade)--no-allow-downgrade[disable downgrade of dependencies]'
-+ )
-+ local -a replay_opts=(
-+ '--ignore-extras[not consider extra packages]'
-+ '--ignore-installed[mismatches between installed and stored transaction are not errors]'
-+ )
-+ # Deal with some aliases (not comprehensive)
-+ case $cmd in
-+ check-updgrade) cmd=check-update;;
-+ dg) cmd=downgrade;;
-+ dsync) cmd=distro-sync;;
-+ grp) cmd=group;;
-+ if) cmd=info;;
-+ in) cmd=install;;
-+ ls) cmd=list;;
-+ mc) cmd=makecache;;
-+ rei) cmd=reinstall;;
-+ rm) cmd=remove ;;
-+ rq) cmd=repoquery;;
-+ se) cmd=search;;
-+ update|up) cmd=upgrade;;
-+ esac
-+ local curcontext="${curcontext%:*:*}:dnf-${cmd}:"
-+
-+ case $cmd in
-+ advisory|group|history|mark|module|offline|repoquery)
-+ _dnf5-$cmd && ret=0
-+ ;;
-+ system-upgrade)
-+ _dnf5-offline && ret=0
-+ ;;
-+ autoremove)
-+ _arguments : $offline_opts && ret=0
-+ ;;
-+ check)
-+ _arguments : \
-+ '--dependencies[show missing dependencies and conflicts]' \
-+ '--duplicates[show duplicated packages]' \
-+ '--obsoleted[show obsoleted packages]' && ret=0
-+ ;;
-+ check-upgrade)
-+ _arguments : \
-+ $advisory_opts \
-+ '--changelogs[print package changelogs]' \
-+ '--minimal[reports the lowest versions of packages that fix advisories]' \
-+ '*: : _dnf5_packages -T installed' && ret=0
-+ ;;
-+ clean)
-+ tmp=(
-+ 'dbcache:remove cache files generated from the repository metadata'
-+ 'expire-cache:mark the repository metadata expired'
-+ 'metadata:remove the repository metadata'
-+ 'packages:remove any cached packages'
-+ 'all:clean all'
-+ )
-+ _describe -t cache-types 'cache type' tmp && ret=0
-+ ;;
-+ distro-sync)
-+ _arguments : $common_opts '*: : _dnf5_packages -T installed' && ret=0
-+ ;;
-+ downgrade)
-+ _arguments : \
-+ $common_opts $downgrade_opts \
-+ '*: : _dnf5_packages -T installed' && ret=0
-+ ;;
-+ download)
-+ _arguments : \
-+ '--arch=[limit to packages of specified architecture]:list of architectures:' \
-+ '--resolve[resolve and download needed dependencies]' \
-+ '--alldeps[with --resolve, also download already installed dependencies]' \
-+ '--destdir=[download to the specified directory]: : _directories' \
-+ '--srpm[download the source rpm]' \
-+ '--url[print the list of URLs where the rpms can be downloaded]' \
-+ '*--urlprotocol=[with --url, limit to specified protocols]:protocol:_sequence compadd - http https ftp file' \
-+ '*: : _dnf5_packages -T all' && ret=0
-+ ;;
-+ environment)
-+ _arguments : \
-+ '--available[show only available environments]' \
-+ '--installed[show only installed environments]' \
-+ ':subcommand:(list info)' \
-+ '*: : _dnf5_environments' && ret=0
-+ ;;
-+ info|list)
-+ _arguments : \
-+ '--showduplicates[show all versions of the packages]' \
-+ '*: : _dnf5_packages -T all' \
-+ + '(type)' \
-+ '--installed[list only installed packages]:*: : _dnf5_packages -T installed' \
-+ '--available[list only available packages]:*: : _dnf5_packages -T available' \
-+ '--extras[list only extras]' \
-+ '--obsoletes[list only installed but obsoleted packages]:*: : _dnf5_packages -T installed' \
-+ '--recent[list only recently added packages]' \
-+ '--upgrades[list only available upgrades of installed packages]:*: : _dnf5_packages -T upgradable' \
-+ '--autoremove[list only packages that will be autoremoved]:*: : _dnf5_packages -T installed' &&ret=0
-+ ;;
-+ install)
-+ _arguments : \
-+ $common_opts $downgrade_opts $advisory_opts \
-+ '*: : _dnf5_packages_or_rpms -T available' && ret=0
-+ ;;
-+ leaves|makecache)
-+ # nothing to complete
-+ ;;
-+ provides)
-+ _files && ret=0
-+ ;;
-+ reinstall)
-+ _arguments : \
-+ $common_opts $downgrade_opts \
-+ '*: : _dnf5_packages_or_rpms -T installed' && ret=0
-+ ;;
-+ remove)
-+ _arguments : \
-+ $offline_opts \
-+ '--no-autoremove[not remove dependencies that are no longer used]' \
-+ '*: : _dnf5_packages -T installed' && ret=0
-+ ;;
-+ replay)
-+ _arguments : \
-+ $replay_opts \
-+ ':transaction path:_directories' && ret=0
-+ ;;
-+ repo)
-+ _arguments : \
-+ '--all[show info about all repositories]' \
-+ '--enabled[show info only about enabled repositories]' \
-+ '--disabled[show info only about disabled repositories]' \
-+ ':subcommand:(list info)' && ret=0
-+ ;;
-+ search)
-+ _arguments : \
-+ '--all[search patterns also inside description and URL fields]' \
-+ '--showduplicates[show all versions of packages, not only the latest ones]' \
-+ '*:search pattern:' && ret=0
-+ ;;
-+ swap)
-+ _arguments : \
-+ $offline_opts \
-+ '--allowerasing[allow erasing of installed packages]' \
-+ ': : _dnf5_packages -T installed' \
-+ ': : _dnf5_packages -T available' && ret=0
-+ ;;
-+ upgrade)
-+ _arguments : \
-+ ${common_opts:#--skip-broken*} $downgrade_opts $advisory_opts \
-+ '--minimal[upgrade only to the lowest available versions that fix advisories]' \
-+ '--destdir=[specify directory into which downloading packages]: : _directories' \
-+ '*: : _dnf5_packages_or_rpms -T upgradable' && ret=0
-+ ;;
-+ versionlock)
-+ _arguments : \
-+ ':subcommand:(add exclude clear delete list)' \
-+ '*: : _dnf5_packages -T all' && ret=0
-+ ;;
-+ esac
-+ return ret
-+}
-+
-+# main completer
-+
-+_dnf5() {
-+ local curcontext="$curcontext" state state_descr line ret=1
-+ typeset -A opt_args
-+ local -a opts=(
-+ '(-y --assumeyes)--assumeno[answer no for all questions]'
-+ '--best[try the best available package version]'
-+ '(-C --cacheonly)'{-C,--cacheonly}"[run entirely from system cache, don't update cache]"
-+ '--comment=[add comment to transaction history]:comment:'
-+ '(-c --config)'{-c+,--config=}'[specify configuration file]:config file:_files'
-+ '--debugsolver[dump detailed solving results in file ./debugdata]'
-+ '*--disable-plugin=[disable specified plugins]:list of plugin names:'
-+ '(--repo)*--disable-repo=[disable specified repos]: : _sequence _dnf5_repositories -T enabled'
-+ '--dump-main-config[print main configuration values to stdout]'
-+ '*--dump-repo-config=[print repository configuration values to stdout]:repi id'
-+ '--dump-variables[print variable values to stdout]'
-+ '*--enable-plugin=[enable specified plugins]:list of plugin names:'
-+ '*--enable-repo=[enable additional repos]: : _sequence _dnf5_repositories -T disabled'
-+ '--forcearch=[force the use of the specified arch]:arch:'
-+ '(-)'{-h,--help}'[show the help message]'
-+ '--installroot=[set install root]: : _directories'
-+ '--no-best[do not limit transactions to best candidates]'
-+ '--no-docs[do not install documentation]'
-+ '--no-gpgcheck[skip checking GPG signatures on packages]'
-+ '--no-plugins[disable all plugins]'
-+ '(-q --quiet)'{-q,--quiet}'[show just the relevant content]'
-+ '--refresh[force refreshing metadata before running the command]'
-+ '--releasever=[override distribution release in config files]:release ver:'
-+ '(--disablerepo)*--repo=[enable just the specified repo]: : _sequence _dnf5_repositories -T all'
-+ '*--repofrompath=[specify additional repos]:repository_label,path_or_url: '
-+ '*--setopt=[override option in config file]:repoid.option=value:'
-+ '*--setvar=[override DNF5 variable value]'
-+ '--show-new-leaves[show newly installed leaf packages]'
-+ '--use-host-config[use config files and variables from host system]'
-+ '(- *)--version[show dnf version]'
-+ '(-y --assumeyes --assumeno)'{-y,--assumeyes}'[answer yes for all questions]'
-+ '*'{-x+,--exclude=}'[exclude specified packages from transaction]: : _sequence _dnf5_packages -T all'
-+ )
-+ _arguments -C -s : $opts ': :->command' '*:: :->cmd_args' && ret=0
-+
-+ case $state in
-+ command) _dnf5_commands && ret=0 ;;
-+ cmd_args) _dnf5_subcmds_opts && ret=0 ;;
-+ esac
-+ return ret
-+}
-+
-+_dnf5 "$@"
diff --git a/0010-zsh-fix-dnf5-completion-with-rpm-files.patch b/0010-zsh-fix-dnf5-completion-with-rpm-files.patch
deleted file mode 100644
index eacb810..0000000
--- a/0010-zsh-fix-dnf5-completion-with-rpm-files.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-commit 071e325c826a89b792056c3faf0c400b8c0c5738
-Author: Christoph Erhardt <christoph.erhardt@sicherha.de>
-Date: Tue Sep 30 08:47:15 2025 +0900
-
- 53981: _dnf5: fix completion of local rpm files
-
-diff --git a/Completion/Redhat/Command/_dnf5 b/Completion/Redhat/Command/_dnf5
-index e194dd5a7..9cbf451a8 100644
---- a/Completion/Redhat/Command/_dnf5
-+++ b/Completion/Redhat/Command/_dnf5
-@@ -38,7 +38,7 @@ _dnf5_rpm_files() {
-
- _dnf5_packages_or_rpms() {
- if [[ "$words[CURRENT]" = (*/*|\~*) ]]; then # if looks like a path name
-- _dnf_rpm_files
-+ _dnf5_rpm_files
- else
- _dnf5_packages "$@"
- fi
diff --git a/sources b/sources
index 747480c..bd494a5 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (zsh-5.9.tar.xz) = d9138b7f379ad942a5f46819d2dd52d31f3a1129f2a0d1b53d4c5cd43c318b60396da6d37c57c477b8e958fb750209aca0ae93f8c9dd42ac958de006a0ff067e
-SHA512 (zsh-5.9.tar.xz.asc) = b6a72f8dfd2ed9c25e4afa5b3d13b23c1bf0bceacfce3ad0fadf24a9df91382914f7322ef4ed8bfb4b68818fb18fe3973d22154a6cc638b46f02e30bafd93fcb
+SHA512 (zsh-5.9.1.tar.xz) = e16c13559262577e725b290c35ce6598d58c2acdd204eac619e8ed9b6a918bce39bfbf9d3ef4c5eb877af7d3279c8a4b15439eba6a38c4e4d47d5555d5f79872
+SHA512 (zsh-5.9.1.tar.xz.asc) = 8c9fb393de9b9ff84353ed35f812c8e05e6131c238fd233a2f6e3aa02b0644c7afd597a8b4e7a737152e4478d0d4dae7a5e42559047f100eb536049c4490ceeb
diff --git a/zsh-keyring.asc b/zsh-keyring.asc
new file mode 100644
index 0000000..da4b17f
--- /dev/null
+++ b/zsh-keyring.asc
@@ -0,0 +1,269 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBFwswugBCADdkzua9HwC8Ip5zh7Z0/nJGKbMyq+cobXArhHos40taeidn0+v
+HRES5y6PHR+h56c9TpmJEp/bLCHP5pLvcSz/ETz7+Kk82pld63pOHejSxAQCu7Wv
+1NwrTu6TyKlZsNG1oZBxx2LkEN6k8Wy+88DlQqZoXOXafmhF+Sms6gv9DXa029sv
+B07EehAx02T+b02QwVVG/Pq9austmsTd9EcNcVNRDneD2LcdxCllbS5IamjVa+NW
+oeKZVqbsO71uUolwBvshFSBLPsSY8EZdGApjazQcY0lgkaRA/QlMOisyq2mjV6FY
+JXHrlI3WWWK2vROjb35AHiHEE/EVgb5RVpxxABEBAAG0E2RhbmEgPGRhbmFAZGFu
+YS5pcz6JAU4EEwEIADgWIQR8p+yq8GIWuQ+JQUas+BRsroy7xAUCXCzC6AIbAwUL
+CQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCs+BRsroy7xA5XB/93EQqzs0as07U+
+gmPDpvE7JwIY4TrcvAS7RHgJ4sE+arR5uTziHixiHBQQMedbfV51Jxgws6WL0Ko8
+7K8h9sN2UGnXIc1lWuQ2FDshrcpSHZvLxL4Z7WC3Rj/Dq3/nuZZyljWQNHxg4BlO
+EJqe67F5kT2OI591oxB6L1E6F8sVsgxD7gBCPVl/8CsyZ7wkyW/gMRqrlYolJhpS
+B5C1zKJzvULQJKXDCh9DUyi7cKFtPyYfYtRWfWhKGz5Dhtt9qvBlxJzZufZ9QNQt
+oPhNGF34QaLWTCLRbtoVbNq2NlxalZ5Byhg/0pBcQc2w4C70jSxF3c+2oMEGQIbc
+5GJFgLpZuQENBFwswugBCAD5rIYdlLWHOMw+stWTRNquu3SZr+v7RRzreV9fOKN+
+lUiqwicU2uCX39s/q+2wtF536r+IS/53DrMAW8sxf8eroK+MBnJYtP3U8BnB3mag
+bTJXMjng2ZqZXvxzetXLyXR+38f+6WbJtV0ByDeFQQJYsFxOag3r6etxrzpwRFm0
+PL440fc0nxOxhxWWJcR0RKTMX87ymipi9mETYeZi7h9B3cDw8aIUz2O3s45TtNlA
+NI1MNMU4sAsc5i+w0zJON9gT+rWDYFj6BiEqnRoSK2XDm+WaJa3FwgW1WnHPTe+E
+RJFGT58DICU3ta6cCQPavZz/KALyj8GBJ+PydelIAv2rABEBAAGJATYEGAEIACAW
+IQR8p+yq8GIWuQ+JQUas+BRsroy7xAUCXCzC6AIbDAAKCRCs+BRsroy7xOgxB/40
+sp9xFq8L/59yRTeXSskOsGk3aUlSnACofcRCGgDSXV5GwWJ/G0O8krhHOISJKuxc
+vA0wLFq0WB/EafrKAPTSkrnxmq8noT3c8MpnFRSXHq3sOXkB4nqVEmUu/AAA0TbC
+HcwhFQExvK7O+funxIGU5vqHFeQGJ0VcgC/KZUEMNtVV8aZGvn7JzSxEIwHVXGLu
+5H7TnNWzLzkzIDVY9IJpTutsc6RMvv6BV8ooWBHSgzmh0MTqEjwNarHAMuffrAjE
+zIO3qi0YCaxSDVf2jrWyYpB2QntplmUoubB9s/ngCqVb4A3B7JxPmJuL/0XMUThn
+WZLWFpbLimyoUCfHoehZ
+=dR/Y
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+=KiyE
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQGNBGBzXzkBDACjRXUOZGdF/dFBPYxbdX17touhN3T1d00HH73LEpYNny5mY97h
+NTE5lQWFQ+eNn7Tx79PZMDepv26mRHMQR6ezI2ahd2TxDCngNGlPcuhsTKgcNRiu
+i0nbgB8ssqm/q8YoW+FWJLWfGwTfH38VMP3s3022wUXAMA/gz2FVx1uEFTavC92i
+Mhrlg/+4Y9uzq4w4OMIA8QJ5cWIqBH0SzaGEZtthnZRnLRoKh9oXpgMZ4Bv+ofxT
+a1qsZ6tNb4n8Wbscv/vYZqn1yOj5XI8ut27ocKuxnoATXOuK3ac54gZYSyI9YFyh
+mjLHIMs4qpeDyhMZZRWAp6gfQP4gSAvDGZ/77o7qwV+r3kUbZFlxwz0C96Ul4CGU
+SwRJT+PGFy44PAsvUudqLAhr6ndchMN4HM3vBAtngJIEz4YKngtq5OyAZEVEFMDr
+H1WJ3/9NEq7jcqmlhEKd5t13FPIE4hfYX2cwLV4BAgcqB4uOKCP/0Ihg14Kd1FoX
+I+jgqByM92IQeQ0AEQEAAbQYbGx1YSBsbHVhIDxsbHVhQGdteC5jb20+iQHUBBMB
+CAA+FiEEKQALqIepMZD3K20A+1LjaLcLJVkFAmBzXzkCGwMFCQPCZwAFCwkIBwIG
+FQoJCAsCBBYCAwECHgECF4AACgkQ+1LjaLcLJVkrZgv+OglxzCYf9dNu3gHlZ0AC
+VzwJIrCZoS3IG36iiLsx+d2jYgdTfR3y4jH294mCVsGfoAoava6lun27Q94sMCaH
+Ng0fcZfW5uwrn8jW+H+F7mCShpQNUDHDlZx/bkC4JX2jhEZCrqQRRZUYTlteVQpu
+44ToiFq78iLs9fz9HFczDzmMmTvKp4r84+6AiFwQy2OGAVbON4EnxIZjEJdVKMqR
+8XH3tWuGeqDnBBqXrrS6g7SAh9idlA8JfifkBNFSDM4SiNXJXk1/TumR3w008Dj3
+6gq3W1P0b91gY2VwYAUBeOciSJ02hcT0Sywa1NAkytQA0djECe+wl4Y8Z2nwO4u3
+ZCCNCKVWjtjoo1QUwCyUcQl2vEt7cJdEAfbzr0VH9oaL0trjXz7V7Y0oqkI/XOSI
+wa/aTTrvybSKTEIvMIfC9IVjTwn6KMh9x66eiN1CmF6abfnwr7cTn3mbrJ2z0nMV
+1OiuU6KahncXixo2XkrUOyZ6OxsVNVGmd/ttn1IVqpvMuQGNBGBzXzkBDAC7puuc
+xUyEuxWhwYGuYCQXNeh7mHnYRhd5nFuM8hosaZx+w65RSzJ5UWKIPr6vt1vC8JK3
+r7emy1rPIeuwWCVVpzIcW6kTS+Jd/ZDDYKUdko9rm/rbmHScJF1LsiS1yvVP3l9P
+0OE2db+IDqDItDvGcHSWgygR1G1hgPl5cKz14352R+cRYQDacCMlYhg8dFL08eoQ
+96ZlLpiRLox0X3HFWih8ZyhQF/uO5cKjzEaeRnrL9vVne3BNVTaNTsUoHPvVQUJf
+H/X8CR/L8B6E1sDa2KWcRhObhTaTeUUFsjqmWkiOIDRdd29JELDCD0O+tR28w+WK
+8XwV+/2bV/49g9DVCWCHD6KxscTzOgspUKaNM2y5I5FZQVT3UYpu6GCJL46QVsJZ
+j342tGuSzEKH8MHNikJC0vg2r7MnH8ogkcJ7MVEvF5aVy+WC4f0Ciz1Tjl+RShit
+e71PeswQ6r5lFtWvanDQgB/UBfvKTwwA3qHQXe6sr0nvJO28QdD2Bo5NaIkAEQEA
+AYkBvAQYAQgAJhYhBCkAC6iHqTGQ9yttAPtS42i3CyVZBQJgc185AhsMBQkDwmcA
+AAoJEPtS42i3CyVZ6qQL/AqvaxPKKPfUQynDlWt313rqzCAls3MD1L8B9Ya/L/4Q
+JgaEsJAwW9SkSkUneB4HT6H4zqZC7NF7iXGt3akm+tGMsgQ1t41X7Ac8p9nEtNfW
+SX2SvtGgyFhi3qCJI1v2eEEI06e4m0K/O1l+w6UCwDFgMkxUsP6yRYJ5o6N0MalA
+OElJQkND6rni4rBDUo4Q7RDfgNVRMAXEcKXV08I4veykfmk5sAD+Trb2bYSfp+uA
+Dve7V9AzwlV7cSfaA4otJKk3uIt/M8xTc3cgh48Jg3ppywntiBWmzIL2JPS/0kBZ
+id3Mu8a7Yz3cjv5sY7OksjsjuIxTCHycxFZbi0QxT/QtW6CItGDrKuCKr674Q9wO
+cwnwDI6nW1zHsTjDFzaBYcFu7PHIqXd2aZkNWnc9iOQOHxLatTYKyDvzRyXuOAQa
+APc+Fy/7VI7pJk64rkoRqzAhp0Bh/8DXmKXmA7CuWTY8wiFA0YlCLQnVebgZ/ALm
+0mWkrhYxYrQKM6kywpFS6JkBjQRn++XUAQwAvRy/Pg/FrWnzF2Ch024gwdP9bcdt
+FMc7KaTTgSHI+11axQ6IcgCaL7fNYQAk/f3zzhVcVWha72K+4/vDcl/jSDrBAiMD
+V0ylwvz6iwowpXX6A427SSSl1FpeR/sV0RxSTsxVwROh3oiYWbmW5J5P0rtBhuxd
+6oS6xP2OSYjOEbharxiSu9TyvhVuOadlF23VsaQyeZk4EB8+9Uf7uJsOuov5GUT3
+eDYnWgKoLofx/vzJupN7qhqoPVMDQO3n/L10SFuRiiXbvxRHvvD02hhnyjX+CUIN
+L/lr1lIvoP0aKE1mJNilcBmnSpMkUS58Ip6XGBuwBiTv+CQQFHYefrDaBRgKXPyS
+Zhi4RQAIUaGFFiGFdwtPgciPPt1fPHjERLhXwjwDa0fr5awtdlHm9k4wQOl/8uS1
+Lr07kns3NgHBfUGX8N5/D9PnKsgI1MuBl6ivLbOZOq3MvfdPkxBkWeYX4Rbp3bib
+Iy2jR3os8h+X2+xCIEPgrLm1hO3zd++5UlYHABEBAAG0J0VyaWMgQ29vayA8aWxs
+dWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PokB0QQTAQgAOxYhBAqpRa0v2M873QkW
+7iOJmTGQ3bLOBQJn++XUAhsDBQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJ
+ECOJmTGQ3bLOHY0L/02/2/N6+LAAAX2A2/JhFqMlPlempsZDhQg4sgaUpwZqlSnx
+ZFUkOpNFG7UiGKZ3Za2lj+WbwSaVWgQhsuuhURel4m2SWy14yi6GFEnW6z2vW82c
+lpEt2cDvG3q8wWFLJzZNIwoyuhhKNUx4HvEWZpzP02Nd0desv0/a+fjQk2Gq+kFn
+U3g/YR2jr3FvTtregGBvafqEnDkLA52o6P9i6d+jarSX6fWtAM4/32aMNqe4KIxU
+GYVlXdGe4C52SGwe7tvzBFjz+NX7FQnGbPsE/4IzX/wAK0JR2/OdlaK6YYdBT5VF
+c8BIDmADu08DUjE9EdzumNKYArlrhl/AoXPkuagYZm9dmx9nf/3PdDEq6Y+gC+F3
+831+9hrAmeuANHFUCmYV+flm9Pgob5Dd3kc50dOJgeuuu9ki/iEOu3kgvC53Ng9R
+aJQabsMAxG7FoKohQGFFcZn4UW/0iTq1ObG2KU6A4TJoirfyjRO+e9yRUIqvAH4j
+e4JrCMvYHwSyO4SBGbQYRXJpYyBDb29rIDxsbHVhQGdteC5jb20+iQHRBBMBCAA7
+FiEECqlFrS/YzzvdCRbuI4mZMZDdss4FAmgRg9ECGwMFCwkIBwICIgIGFQoJCAsC
+BBYCAwECHgcCF4AACgkQI4mZMZDdss6YXQv9H8cKyrdT+xuPwcTbosxElFkl7IP0
+fM5P7GwOBgm6EjoUDqIgAYPyHPhvpRX7m6+4chqqG/glJ03T4MhgyY47X8+gyW2C
+GmYKK0UGhxOGUuxphrw09KwdPpZ33sknkr55gfs0ZNhk38aVYhigtbTW7Y5b1U6k
+phNTAkAywbNLkSyainYKmFPncHWxd+FBvRzKjmtV90GlAFENVPyQm6AofBkPsxNI
+GlbESZZUe887J+GTWW+2go28bJwaWkDoUUMw8cNIuucztfa4Iyn5K0G0bzNEeaoF
+a6J+cwdHGQKiScyEzU+5wN+WFlclhg0FiKM0ca/r1KUJaGC5vuB5jH6pnVjF8TtN
+OWyV7UazPSOU87AMv7I/N9Z9dSOPSp30u7R/LyzcbGjFJv0BSJFx9veuh57Yof6c
+m7IM2AytEudhCwyuSIwM5DFKSFqxXwHA4c0PM735sGvFTzU6cRaq5/ghJFNb8q0O
+K6+XyVGlYnVaSKT45gjDEzIZufcRxi5j6gOUuQGNBGf75dQBDADxDCI9E8MqlyJr
+PSQenIjeI1hGnQHXxnKMbfX32QjTPu9+BkM0Szv9yZIQ5txTMTOwA62BQUiJWxn5
+4iYGDHOIuOy86kZ+frgFgrYi7ie6s+zv41I6yNTu/VmUVwOvVaCLPIQ7PA5UeXGE
+qbPtG2BegyJLN9wlI1/inZYee/D2Sv9AsnMO3+Xfag6U+LWd+WDt0itiZsIahHHX
+wyQBTPJKtDi+F0J+D07Yxv9bnI88h6FQlXTnS8N+vaJtcNUE91qWCoLzu4eC7QxO
+nf1BaUrpXiQXUGyQwGem7i7ESjFAEFXVKHDmLOk0LzTymT6zWW09ywjaoPbzfpgC
+XGHIT4wpb0+szSrZaoADB5hNMgtpZXi65a4C+N55qd/QgZdgTRVlfNot5y9+mKq7
+UreAgh/STkNzZMm4c6hE5SohYPAXvVe47Iu5vPoXYWjNWftxS3xYexiLwEWGsKDc
+gGzE1z0a3vP/75Jwei+1VPS+yYub6xb2fhcJ/OMIWgJKqsQ2e3MAEQEAAYkBtgQY
+AQgAIBYhBAqpRa0v2M873QkW7iOJmTGQ3bLOBQJn++XUAhsMAAoJECOJmTGQ3bLO
+aWQL/R4uQ2rXyQK2xHbgH8UfT5AaGXwnPkGzRRxNd6crNl3QpCyvk+rpNuszRHeI
+1D0HK4wtupROB0kYwjVbGZ0kaj7ZLCLwAdAI43eO/V6MEpo08TdPay/3S0yF4HsL
+YEnGEMjvxhLFi5PsBwejtv9hMaWj84oBHAW8w9a5jPPupQhlNjazLAooUP4+neBY
+/cuzNda+3ujOB4En6Md4FamDUDuYEbLxw1bJbvxCLErCMtYwktHZ/Fq7L/Ys02V1
+Jbhi0SAspNn6c09FVT2F1quItIuruoG6dNeFxuVV0p1/QBstU5EXS3paJm0rZnym
+a4xv79sJ7ZCxcJ0yfpT0EP6LKyJ9nL9koiWDMWYRjTlNzIaWgsXV6Ka86ZJm139i
+IB2RgqMrnQy45DIFgevvsXuFX5Ey8mCYu+YyqosZZGuPIU8hrcm0zoLjyuDsSOzu
+Ay+pen1zbjyXGQZVN9tvRxizAa/3qL7AdilnlZNJKOiCXTGEiSGaKGibfseTWoWs
+Qg719Q==
+=+Fbc
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBFZWC4cBCADgb7/oPoCs9SE+/jrzmDT7L+PbYLCygCExxp4mt3CsSzn5xefq
+NGU+aBJnvyongcsYrW173GumDjXCG3GBtnmqs3dFeoqnEsSZFMYiQ4ctmWh48P+W
+uQVQOWuh0CVS2OCFn37b5F9dy3oF6gJFdqbwOXJSgWMA/+StMGSkslTYFlG/JwZ1
+csk9jSwQw/yKDlTiFaqMwIwSXTK5fItSn3F0R+usgMhwRPu8gvK23tmEhnnwgmlR
+xfEwJCLqGnvlW74dRkCjY349GAG1IN2felFfHn0ok/Lbx7coKRoEvHaCVbmtPSmX
+Ps9axAV97wk37wS1dhEXcjxLb9GIZgptgo7DABEBAAG0LlBldGVyIFN0ZXBoZW5z
+b24gPHAudy5zdGVwaGVuc29uQG50bHdvcmxkLmNvbT6JATcEEwEIACEFAlZWC4cC
+GwMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQpx2anUvbJ7NtaQf/RQ/RLvOG
+iI4XJp/C9JIVHfHL7I801uT8V3y/d2+DehFasR9T+6B/Mf5y22NI31i5XBQuK0Wo
+Zsi7F3bhNHyeVgO/p5JLBmxohByjL9f7B+k9Tt/DyWh66AVaCoam4ACR8TBOlNkD
+p/8U0zzrxE9fQrjjK/PzhpVe97LKScEAu2Zc/qUFp4eTAnlqyosTqvU64+n1PrNC
+CtZVYPnL17GCC4+S7yrh34Kllx+fkoHimTL/cUG+6+7sbmpUImpP+pgNEnL1IzBB
+ajZRl1581McMGhIH1TBYrEVnIhononoOO7qr1eahUCEhVvanyVTnSeTTVR0VgK4s
+joYLwDLM4XidgrkBDQRWVguHAQgA7JTI0botnBMfTAGff4Duoor5m0PuExQFCHcJ
+/df5SyUUskycMlGR73+IbcT2D/zBIFDv5ZhCdOdmIW3CHICK+Ws7N5+KSzlzC+Vf
+2LMmXuyJLhXeTqXI1ta6bIGjXeh5VA9Jd7B8dRQhCn1OrGbFhwtJSGejTmcWiLJW
++2GV9s44e9MlscMHvAk9QAvqrSUJoAkN3OCdgjcpDNVT8ek3NnjCD4xrBTxCcI1n
+KsJeOgNHPkbou9+eHY80amkAkRn2ZSI9n25WjhKAp9QGDNL5wqHLjgHP6WiEwumN
+DWPnPd+5FQHQXy1GHgH2BozfT1KZJ012T0Keuk/hnZJ/TVe4gwARAQABiQEfBBgB
+CAAJBQJWVguHAhsMAAoJEKcdmp1L2yez1T0H/jitvgACci+5PQG1djYwioQIui4J
+1nSg4HxW+4SCpSwlmH2LkKaF3WbjpPTRhYeMZ5zdOvGnjPUZCjGtWkWx0p+Jrpe/
+QIC3CNXerX9fpkr0K7+knqkb1RsjHU/YSsYTDDVJpL3BQOZzVocOjPa1YPTfTBU5
+tsQdA4RORi15LyAWcEAmR+X3qH2JM5pGP23hhOKnrFSSnfBP6ef1/jjRbfK5yItZ
+5DOf6i3WS40zxB67dlBlHZwOQuYA3Sr01hEz4CeAkpV7lQ1gKelm1ZmcFQI6yqcR
+PmVjIuxE1A/gTFe6LaAfCGA6/H1H6LLwWQ/rnUi/seMJ6aRkz/05dg7j5+E=
+=wOVS
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/zsh.spec b/zsh.spec
index 82a14a3..a705f04 100644
--- a/zsh.spec
+++ b/zsh.spec
@@ -1,49 +1,36 @@
Summary: Powerful interactive shell
Name: zsh
-Version: 5.9
-Release: 20%{?dist}
+Version: 5.9.1
+Release: 1%{?dist}
License: MIT-Modern-Variant AND ISC AND GPL-2.0-only
URL: http://zsh.sourceforge.net/
+
Source0: https://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.xz
-Source1: zlogin.rhs
-Source2: zlogout.rhs
-Source3: zprofile.rhs
-Source4: zshrc.rhs
-Source5: zshenv.rhs
-Source6: dotzshrc
-Source7: dotzprofile
-
-# do not use egrep in tests to make them pass again
-Patch1: 0001-zsh-5.9-do-not-use-egrep-in-tests.patch
-# Upstream commit ab4d62eb975a4c4c51dd35822665050e2ddc6918
-Patch2: 0002-zsh-Use-int-main-in-test-c-codes.patch
+Source1: https://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.xz.asc
+Source2: zsh-keyring.asc
+
+Source3: zlogin.rhs
+Source4: zlogout.rhs
+Source5: zprofile.rhs
+Source6: zshrc.rhs
+Source7: zshenv.rhs
+Source8: dotzshrc
+Source9: dotzprofile
+
# upstream commit a84fdd7c8f77935ecce99ff2b0bdba738821ed79
-Patch3: 0003-zsh-fix-module-loading-problem-with-full-RELRO.patch
-# upstream commit 1b421e4978440234fb73117c8505dad1ccc68d46
-Patch4: 0004-zsh-enable-PCRE-locale-switching.patch
-# upstream commit b62e911341c8ec7446378b477c47da4256053dc0 and 10bdbd8b5b0b43445aff23dcd412f25cf6aa328a
-Patch5: 0005-zsh-port-to-pcre2.patch
-# upstream commit ecd3f9c9506c7720dc6c0833dc5d5eb00e4459c4
-Patch6: 0006-zsh-support-texinfo-7.0.patch
-# upstream commit 4c89849c98172c951a9def3690e8647dae76308f
-Patch7: 0007-zsh-configure-c99.patch
-# upstream commit d3edf318306e37d2d96c4e4ea442d10207722e94
-Patch8: 0008-zsh-deletefilelist-segfault.patch
-# upstream commit b70b241cc5ca88cc129ff9ba14f8af2e889b90e6
-Patch9: 0009-zsh-support-dnf5.patch
-# upstream commit 071e325c826a89b792056c3faf0c400b8c0c5738
-Patch10: 0010-zsh-fix-dnf5-completion-with-rpm-files.patch
+Patch1: 0003-zsh-fix-module-loading-problem-with-full-RELRO.patch
# downstream patch for rhbz#2449939
# already fixed upstream in a major refactor of term color attribute handling
Patch100: 0100-zsh-_IO_putc-SIGSEGV.patch
-BuildRequires: autoconf
BuildRequires: coreutils
BuildRequires: gawk
BuildRequires: gcc
-BuildRequires: gdbm-devel
BuildRequires: glibc-langpack-ja
+BuildRequires: gpgverify
+BuildRequires: groff
+BuildRequires: hostname
BuildRequires: libcap-devel
BuildRequires: make
BuildRequires: ncurses-devel
@@ -54,14 +41,6 @@ BuildRequires: texinfo
Requires(post): grep
Requires(postun): coreutils grep
-# the hostname package is not available on RHEL-6
-%if 12 < 0%{?fedora} || 6 < 0%{?rhel}
-BuildRequires: hostname
-%else
-# /bin and /usr/bin are separate directories on RHEL-6
-%define _bindir /bin
-%endif
-
Provides: /bin/zsh
%description
@@ -87,8 +66,8 @@ mechanism, and more.
This package contains the Zsh manual in html format.
%prep
+%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
%autosetup -p1
-autoreconf -fiv
# enable parallel build
sed -e 's|^\.NOTPARALLEL|#.NOTPARALLEL|' -i 'Config/defs.mk.in'
@@ -131,13 +110,13 @@ rm -f $RPM_BUILD_ROOT%{_bindir}/zsh-%{version}
rm -f $RPM_BUILD_ROOT%{_infodir}/dir
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}
-for i in %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5}; do
+for i in %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7}; do
install -m 644 $i $RPM_BUILD_ROOT%{_sysconfdir}/"$(basename $i .rhs)"
done
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/skel
-install -m 644 %{SOURCE6} $RPM_BUILD_ROOT%{_sysconfdir}/skel/.zshrc
-install -m 644 %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/skel/.zprofile
+install -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_sysconfdir}/skel/.zshrc
+install -m 644 %{SOURCE9} $RPM_BUILD_ROOT%{_sysconfdir}/skel/.zprofile
# This is just here to shut up rpmlint, and is very annoying.
# Note that we can't chmod everything as then rpmlint will complain about
@@ -182,6 +161,9 @@ fi
%doc Doc/*.html
%changelog
+* Thu Jun 04 2026 Lukáš Zaoral <lzaoral@redhat.com> - 5.9.1-1
+- rebase to the latest upstream release (rhbz#2483668)
+
* Tue Mar 24 2026 Lukáš Zaoral <lzaoral@redhat.com> - 5.9-20
- fix segfault in _IO_putc (rhbz#2449939)
reply other threads:[~2026-06-04 9:03 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178056383089.1.597879722836817490.rpms-zsh-95be2e37b5c0@fedoraproject.org \
--to=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox