[packages/xemacs] Up to 21.5.36

arekm arekm at pld-linux.org
Sun Mar 15 22:04:57 CET 2026


commit 26a2089fd929ec2537428d31564d0db5600b3476
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Sun Mar 15 22:04:47 2026 +0100

    Up to 21.5.36

 disable-malloc-warnings.patch                      | 12 -------
 fix-conflict-with-glibc.patch                      | 29 +++++++--------
 xemacs-align.patch                                 | 42 ----------------------
 ...do-not-create-backups-in-temp-directories.patch |  3 ++
 xemacs-execve-alloca.patch                         | 41 +++++++++++++++++++++
 xemacs-fix_ldflafs.patch                           |  4 +++
 xemacs-info.patch                                  |  3 ++
 xemacs-level3.patch                                | 36 +++++++++----------
 xemacs-no-memory-warnings.patch                    | 20 -----------
 xemacs-ootags-bool.patch                           | 31 ++++++++++++++++
 xemacs-ptmx.patch                                  |  3 ++
 ...s-set-locale-to-c-when-not-supported-by-x.patch |  4 +++
 xemacs-sys_siglist.patch                           | 18 ++++++++++
 xemacs-texinfo-escape.patch                        | 40 +++++++++++++++++++++
 xemacs.spec                                        | 29 +++++++--------
 15 files changed, 193 insertions(+), 122 deletions(-)
---
diff --git a/xemacs.spec b/xemacs.spec
index d1b6cad..a791fbc 100644
--- a/xemacs.spec
+++ b/xemacs.spec
@@ -5,7 +5,7 @@
 %bcond_with	gtk		# GTK+ enabled version
 
 %define		ver		21.5
-%define		sver		34
+%define		sver		36
 %define		xver		%{ver}-b%{sver}
 %define		basepkgver	2.27
 Summary:	The XEmacs -- Emacs: The Next Generation
@@ -17,11 +17,11 @@ Summary(ru.UTF-8):	Версия GNU Emacs для X Window System
 Summary(uk.UTF-8):	Версія GNU Emacs для X Window System
 Name:		xemacs
 Version:	%{ver}.%{sver}
-Release:	6
+Release:	1
 License:	GPL
 Group:		Applications/Editors/Emacs
 Source0:	http://ftp.xemacs.org/xemacs/xemacs-%{ver}/%{name}-%{version}.tar.gz
-# Source0-md5:	e093150724b6e55b14bae21739cfe373
+# Source0-md5:	b35e684f884192b58f9257bfad187bd3
 Source2:	http://ftp.xemacs.org/xemacs/packages/%{name}-base-%{basepkgver}-pkg.tar.gz
 # Source2-md5:	2ec18d0faf31e2d343f558c730474a63
 Source3:	%{name}.desktop
@@ -32,13 +32,10 @@ Source7:	%{name}-ogony-nomule.el
 Source8:	%{name}.png
 Patch0:		%{name}-info.patch
 Patch1:		%{name}-fix_ldflafs.patch
-Patch2:		%{name}-align.patch
-Patch3:		%{name}-no-memory-warnings.patch
 Patch6:		%{name}-do-not-create-backups-in-temp-directories.patch
 Patch7:		%{name}-level3.patch
 Patch8:		%{name}-ptmx.patch
 Patch9:		%{name}-set-locale-to-c-when-not-supported-by-x.patch
-Patch10:	disable-malloc-warnings.patch
 Patch11:	fix-conflict-with-glibc.patch
 URL:		http://www.xemacs.org/
 # for X11/bitmaps/gray
@@ -174,16 +171,10 @@ w okienku xterma).
 %setup -q -a2
 %patch -P0 -p1
 %patch -P1 -p1
-%patch -P2 -p1
-%ifarch alpha ia64
-# disable memory_warnings() - it doesn't support memory model used on alpha
-%patch -P3 -p1
-%endif
 %patch -P6 -p1
 %patch -P7 -p1
 %patch -P8 -p1
 %patch -P9 -p1
-%patch -P10 -p1
 %patch -P11 -p1
 
 %if "%{_lib}" == "lib64"
@@ -249,14 +240,14 @@ export CFLAGS CPPFLAGS LDFLAGS
 	--with-system-malloc
 
 
-%{__make} -j1 \
+%{__make} \
 	CC="%{__cc}"
 cp src/xemacs src/xemacs-nox
 %if %{with pdump}
 cp src/xemacs.dmp src/xemacs-nox.dmp
 %endif
 cp lib-src/gnuserv lib-src/gnuserv-nox
-%{__make} -j1 distclean
+%{__make} distclean
 
 # X
 ./configure %{_target_platform} \
@@ -319,7 +310,7 @@ cp lib-src/gnuserv lib-src/gnuserv-nox
 #	--cflags="$RPM_OPT_FLAGS" \
 #	--with-session=yes \
 
-%{__make} -j1 \
+%{__make} \
 	CC="%{__cc}"
 
 %install
@@ -408,6 +399,7 @@ rm -rf $RPM_BUILD_ROOT
 %attr(755,root,root) %{_bindir}/gnudoit
 %attr(755,root,root) %{_bindir}/gnuserv
 %attr(755,root,root) %{_bindir}/xemacs
+%{_bindir}/xemacs-script
 %if %{with pdump}
 %{_bindir}/xemacs.dmp
 %endif
@@ -431,20 +423,25 @@ rm -rf $RPM_BUILD_ROOT
 %files common
 %defattr(644,root,root,755)
 %doc README etc/NEWS
-%attr(755,root,root) %{_bindir}/b2m
 %dir %{_datadir}/%{name}-%{xver}
 %dir %{_datadir}/%{name}-%{xver}/etc
 %{_datadir}/%{name}-%{xver}/etc/package-index.LATEST.gpg
 %doc %{_datadir}/%{name}-%{xver}/etc/TUTORIAL
+%doc %lang(cs) %{_datadir}/%{name}-%{xver}/etc/TUTORIAL.cs
 %doc %lang(de) %{_datadir}/%{name}-%{xver}/etc/TUTORIAL.de
+%doc %lang(es) %{_datadir}/%{name}-%{xver}/etc/TUTORIAL.es
 %doc %lang(fr) %{_datadir}/%{name}-%{xver}/etc/TUTORIAL.fr
 %doc %lang(hr) %{_datadir}/%{name}-%{xver}/etc/TUTORIAL.hr
 %doc %lang(ja) %{_datadir}/%{name}-%{xver}/etc/TUTORIAL.ja
 %doc %lang(ko) %{_datadir}/%{name}-%{xver}/etc/TUTORIAL.ko
+%doc %lang(nl) %{_datadir}/%{name}-%{xver}/etc/TUTORIAL.nl
 %doc %lang(nb) %{_datadir}/%{name}-%{xver}/etc/TUTORIAL.no
 %doc %lang(pl) %{_datadir}/%{name}-%{xver}/etc/TUTORIAL.pl
 %doc %lang(ro) %{_datadir}/%{name}-%{xver}/etc/TUTORIAL.ro
 %doc %lang(ru) %{_datadir}/%{name}-%{xver}/etc/TUTORIAL.ru
+%doc %lang(sv) %{_datadir}/%{name}-%{xver}/etc/TUTORIAL.se
+%doc %lang(sk) %{_datadir}/%{name}-%{xver}/etc/TUTORIAL.sk
+%doc %lang(sl) %{_datadir}/%{name}-%{xver}/etc/TUTORIAL.sl
 %doc %lang(th) %{_datadir}/%{name}-%{xver}/etc/TUTORIAL.th
 %doc %{_datadir}/%{name}-%{xver}/etc/[A-SU-Z]*
 %doc %{_datadir}/%{name}-%{xver}/etc/refcard.ps.gz
diff --git a/disable-malloc-warnings.patch b/disable-malloc-warnings.patch
deleted file mode 100644
index 97d7ac1..0000000
--- a/disable-malloc-warnings.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- xemacs-21.5.34/configure.ac~	2013-08-21 19:45:17.000000000 +0200
-+++ xemacs-21.5.34/configure.ac	2013-11-07 22:48:28.913971686 +0100
-@@ -2550,8 +2550,8 @@
-   if test "$after_morecore_hook_exists" = "no" ; then
-     GNU_MALLOC_reason="
-     - Using Doug Lea's new malloc from the Linux C Library."
--    AC_DEFINE(_NO_MALLOC_WARNING_)
-   fi
-+  AC_DEFINE(_NO_MALLOC_WARNING_)
- fi
- 
- dnl #### mcheck is broken in all versions of Linux libc and glibc.
diff --git a/fix-conflict-with-glibc.patch b/fix-conflict-with-glibc.patch
index 9d5683e..969f3d5 100644
--- a/fix-conflict-with-glibc.patch
+++ b/fix-conflict-with-glibc.patch
@@ -1,6 +1,9 @@
---- xemacs-21.5.34/src/regex.c~	2013-08-21 19:43:45.000000000 +0200
-+++ xemacs-21.5.34/src/regex.c	2015-03-26 21:13:43.395266312 +0100
-@@ -1357,9 +1357,9 @@
+Rename re_max_failures to xemacs_re_max_failures to avoid potential
+symbol conflict with glibc's regex implementation. PLD-specific.
+
+--- xemacs-21.5.36/src/regex.c.orig	2025-06-15 00:52:22.000000000 +0200
++++ xemacs-21.5.36/src/regex.c	2026-03-15 20:32:45.053320039 +0100
+@@ -1408,9 +1408,9 @@
  #if defined (MATCH_MAY_ALLOCATE)
  /* 4400 was enough to cause a crash on Alpha OSF/1,
     whose default stack limit is 2mb.  */
@@ -12,7 +15,7 @@
  #endif
  
  union fail_stack_elt
-@@ -1413,7 +1413,7 @@
+@@ -1466,13 +1466,13 @@
  #endif
  
  
@@ -20,29 +23,27 @@
 +/* Double the size of FAIL_STACK, up to approximately `xemacs_re_max_failures' items.
  
     Return 1 if succeeds, and 0 if either ran out of memory
-    allocating space for it or it was already too large.
-@@ -1421,7 +1421,7 @@
-    REGEX_REALLOCATE_STACK requires `destination' be declared.   */
+    allocating space for it or it was already too large. */
  
  #define DOUBLE_FAIL_STACK(fail_stack)					\
--  ((fail_stack).size > re_max_failures * MAX_FAILURE_ITEMS		\
-+  ((fail_stack).size > xemacs_re_max_failures * MAX_FAILURE_ITEMS		\
+-  ((fail_stack).size > re_max_failures * TYPICAL_FAILURE_SIZE		\
++  ((fail_stack).size > xemacs_re_max_failures * TYPICAL_FAILURE_SIZE		\
     ? 0									\
     : ((fail_stack).stack = (fail_stack_elt_t *)				\
          REGEX_REALLOCATE_STACK ((fail_stack).stack, 			\
-@@ -3636,11 +3636,11 @@
+@@ -3933,11 +3933,11 @@
      int num_regs = bufp->re_ngroups + 1;
  
      /* Since DOUBLE_FAIL_STACK refuses to double only if the current size
 -       is strictly greater than re_max_failures, the largest possible stack
 -       is 2 * re_max_failures failure points.  */
--    if (fail_stack.size < (2 * re_max_failures * MAX_FAILURE_ITEMS))
+-    if (fail_stack.size < (2 * re_max_failures * TYPICAL_FAILURE_SIZE))
 +       is strictly greater than xemacs_re_max_failures, the largest possible stack
 +       is 2 * xemacs_re_max_failures failure points.  */
-+    if (fail_stack.size < (2 * xemacs_re_max_failures * MAX_FAILURE_ITEMS))
++    if (fail_stack.size < (2 * xemacs_re_max_failures * TYPICAL_FAILURE_SIZE))
        {
--	fail_stack.size = (2 * re_max_failures * MAX_FAILURE_ITEMS);
-+	fail_stack.size = (2 * xemacs_re_max_failures * MAX_FAILURE_ITEMS);
+-	fail_stack.size = (2 * re_max_failures * TYPICAL_FAILURE_SIZE);
++	fail_stack.size = (2 * xemacs_re_max_failures * TYPICAL_FAILURE_SIZE);
  
  	if (! fail_stack.stack)
  	  fail_stack.stack
diff --git a/xemacs-align.patch b/xemacs-align.patch
deleted file mode 100644
index 9c03d19..0000000
--- a/xemacs-align.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-# HG changeset patch
-# User Jerry James <james at xemacs.org>
-# Date 1429564151 21600
-# Node ID 23178aa71f8b985a32f9b80e5c6da660700a0315
-# Parent  d3d073aceaea16ee1625363380337b3dad916861
-Define ALIGNOF using C11 and C++11 operators.
-See <CAHCOHQmG51R61KwGUNY7T5t9tXxzbyg=aGijUKYstbE+wL2-6Q at mail.gmail.com> in
-xemacs-patches for more information.
-
-diff --git a/src/lisp.h b/src/lisp.h
---- a/src/lisp.h
-+++ b/src/lisp.h
-@@ -1154,6 +1154,8 @@
- 
- /* ------------------------ alignment definitions ------------------- */
- 
-+#if (!defined (__STDC_VERSION__) || __STDC_VERSION__ < 201112L) && \
-+    (!defined (__cplusplus) || __cplusplus < 201103L)
- /* No type has a greater alignment requirement than max_align_t.
-    (except perhaps for types we don't use, like long double) */
- typedef union
-@@ -1163,6 +1165,7 @@
-   struct { void (*f)(void); } f;
-   struct { double d; } d;
- } max_align_t;
-+#endif
- 
- /* ALIGNOF returns the required alignment of a type -- i.e. a value such
-    that data of this type must begin at a memory address which is a
-@@ -1170,7 +1173,11 @@
-    as the type itself. */
- 
- #ifndef ALIGNOF
--# if defined (__GNUC__) && (__GNUC__ >= 2)
-+# if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
-+#  define ALIGNOF(type) _Alignof(type)
-+# elif defined (__cplusplus) && __cplusplus >= 201103L
-+#  define ALIGNOF(type) alignof(type)
-+# elif defined (__GNUC__) && (__GNUC__ >= 2)
- /* gcc has an extension that gives us exactly what we want. */
- #  define ALIGNOF(type) __alignof__ (type)
- # elif ! defined (__cplusplus)
diff --git a/xemacs-do-not-create-backups-in-temp-directories.patch b/xemacs-do-not-create-backups-in-temp-directories.patch
index cdb35d9..e082e7a 100644
--- a/xemacs-do-not-create-backups-in-temp-directories.patch
+++ b/xemacs-do-not-create-backups-in-temp-directories.patch
@@ -1,3 +1,6 @@
+Add null-name guard and /tmp/ check to normal-backup-enable-predicate
+to avoid creating backup files in temp directories. PLD-specific.
+
 diff -ru xemacs-21.5.21.orig/lisp/files.el xemacs-21.5.21/lisp/files.el
 --- xemacs-21.5.21.orig/lisp/files.el	2005-04-08 16:07:00.000000000 +0200
 +++ xemacs-21.5.21/lisp/files.el	2005-06-07 21:25:23.000000000 +0200
diff --git a/xemacs-execve-alloca.patch b/xemacs-execve-alloca.patch
new file mode 100644
index 0000000..4294416
--- /dev/null
+++ b/xemacs-execve-alloca.patch
@@ -0,0 +1,41 @@
+Fix critical alloca bug in qxe_execve() causing corrupted arguments.
+ITEXT_TO_EXTERNAL uses xemacs_c_alloca internally which tracks allocations
+by stack depth and frees "deeper" allocations when called from a shallower
+level. This caused converted argv strings to be freed during the envp
+conversion loop. Fix uses malloc-based ITEXT_TO_EXTERNAL_MALLOC instead,
+which is safe since this code runs between fork() and exec().
+Bug is still present in upstream 21.5.36 (ITEXT_TO_EXTERNAL still uses
+NEW_DFC_CONVERT_1_ALLOCA). PLD-specific fix.
+
+--- xemacs-21.5.34/src/sysdep.c.orig	2013-08-21 19:43:45.000000000 +0200
++++ xemacs-21.5.34/src/sysdep.c	2026-03-15 12:00:00.000000000 +0100
+@@ -3031,16 +3031,23 @@
+ 
+   for (argc = 0; argv[argc]; argc++)
+     ;
+-  new_argv = alloca_array (Extbyte *, argc + 1);
++  for (envc = 0; envp[envc]; envc++)
++    ;
++
++  /* Use malloc for pointer arrays and string conversions because
++     ITEXT_TO_EXTERNAL uses xemacs_c_alloca internally, which frees
++     earlier allocations when called from a shallower stack depth.
++     This caused converted argv strings to be freed during the envp
++     conversion loop.  malloc is safe here since this runs between
++     fork and exec. */
++  new_argv = xnew_array (Extbyte *, argc + 1);
+   for (i = 0; i < argc; i++)
+-    new_argv[i] = ITEXT_TO_EXTERNAL (argv[i], Qcommand_argument_encoding);
++    new_argv[i] = ITEXT_TO_EXTERNAL_MALLOC (argv[i], Qcommand_argument_encoding);
+   new_argv[argc] = NULL;
+ 
+-  for (envc = 0; envp[envc]; envc++)
+-    ;
+-  new_envp = alloca_array (Extbyte *, envc + 1);
++  new_envp = xnew_array (Extbyte *, envc + 1);
+   for (i = 0; i < envc; i++)
+-    new_envp[i] = ITEXT_TO_EXTERNAL (envp[i], Qenvironment_variable_encoding);
++    new_envp[i] = ITEXT_TO_EXTERNAL_MALLOC (envp[i], Qenvironment_variable_encoding);
+   new_envp[envc] = NULL;
+ 
+ #if defined (WIN32_NATIVE)
diff --git a/xemacs-fix_ldflafs.patch b/xemacs-fix_ldflafs.patch
index 1364f3a..5afd267 100644
--- a/xemacs-fix_ldflafs.patch
+++ b/xemacs-fix_ldflafs.patch
@@ -1,3 +1,7 @@
+Remove ld_libs_general from ldflags to fix link order with --as-needed.
+Libraries must come after object files on the linker command line.
+PLD-specific.
+
 diff -Nru xemacs-21.1.8/lib-src/Makefile.in.in xemacs-21.1.8.new/lib-src/Makefile.in.in
 --- xemacs-21.1.8/lib-src/Makefile.in.in	Mon Jun 14 08:32:00 1999
 +++ xemacs-21.1.8.new/lib-src/Makefile.in.in	Thu Dec  9 05:20:16 1999
diff --git a/xemacs-info.patch b/xemacs-info.patch
index 3740e5e..2a6603f 100644
--- a/xemacs-info.patch
+++ b/xemacs-info.patch
@@ -1,3 +1,6 @@
+Add trailing colon to @dircategory in texi files for proper info
+directory grouping. PLD-specific.
+
 diff -urbB xemacs-21.5.22.org/man/cl.texi xemacs-21.5.22/man/cl.texi
 --- xemacs-21.5.22.org/man/cl.texi	2003-03-12 18:35:06.000000000 +0100
 +++ xemacs-21.5.22/man/cl.texi	2005-10-02 23:48:48.041449750 +0200
diff --git a/xemacs-level3.patch b/xemacs-level3.patch
index b1c9855..1750964 100644
--- a/xemacs-level3.patch
+++ b/xemacs-level3.patch
@@ -1,7 +1,7 @@
-diff -ru xemacs-21.5.20.orig/src/event-Xt.c xemacs-21.5.20/src/event-Xt.c
---- xemacs-21.5.20.orig/src/event-Xt.c	2005-01-25 00:33:52.000000000 +0100
-+++ xemacs-21.5.20/src/event-Xt.c	2005-05-12 12:37:18.000000000 +0200
-@@ -646,8 +646,17 @@
+diff -ru xemacs-21.5.36.orig/src/event-Xt.c xemacs-21.5.36/src/event-Xt.c
+--- xemacs-21.5.36.orig/src/event-Xt.c	2025-06-14 00:00:00.000000000 +0200
++++ xemacs-21.5.36/src/event-Xt.c	2026-03-15 12:00:00.000000000 +0100
+@@ -1614,8 +1614,17 @@
    syms = &xd->x_keysym_map [(keycode - xd->x_keysym_map_min_code) *
  			   xd->x_keysym_map_keysyms_per_code];
    for (i = 0; i < xd->x_keysym_map_keysyms_per_code; i++)
@@ -21,12 +21,12 @@ diff -ru xemacs-21.5.20.orig/src/event-Xt.c xemacs-21.5.20/src/event-Xt.c
        return 1;
    return 0;
  }
-@@ -997,8 +1006,17 @@
+@@ -1976,8 +1985,17 @@
        char dummy[256];
        XLookupString (event, dummy, 200, &keysym, 0);
        *x_keysym_out = keysym;
 -      return (IsModifierKey (keysym) || keysym == XK_Mode_switch )
--	? Qnil : x_keysym_to_emacs_keysym (keysym, simple_p);
+-	? Qnil : x_keysym_to_emacs_keysym (keysym);
 +      return (IsModifierKey (keysym)
 +#ifdef XK_Mode_switch
 +	|| keysym == XK_Mode_switch
@@ -37,16 +37,16 @@ diff -ru xemacs-21.5.20.orig/src/event-Xt.c xemacs-21.5.20/src/event-Xt.c
 +#if defined XK_ISO_Lock && defined XK_ISO_Last_Group_Lock
 +	|| (keysym >= XK_ISO_Lock && keysym <= XK_ISO_Last_Group_Lock)
 +#endif
-+	) ? Qnil : x_keysym_to_emacs_keysym (keysym, simple_p);
++	) ? Qnil : x_keysym_to_emacs_keysym (keysym);
      }
  #endif /* ! XIM_MOTIF */
- 
-@@ -1048,8 +1066,17 @@
+
+@@ -2037,8 +2055,17 @@
      case XLookupKeySym:
      case XLookupBoth:
        *x_keysym_out = keysym;
 -      return (IsModifierKey (keysym) || keysym == XK_Mode_switch )
--	? Qnil : x_keysym_to_emacs_keysym (keysym, simple_p);
+-	? Qnil : x_keysym_to_emacs_keysym (keysym);
 +      return (IsModifierKey (keysym)
 +#ifdef XK_Mode_switch
 +	|| keysym == XK_Mode_switch
@@ -57,18 +57,18 @@ diff -ru xemacs-21.5.20.orig/src/event-Xt.c xemacs-21.5.20/src/event-Xt.c
 +#if defined XK_ISO_Lock && defined XK_ISO_Last_Group_Lock
 +	|| (keysym >= XK_ISO_Lock && keysym <= XK_ISO_Last_Group_Lock)
 +#endif
-+	) ? Qnil : x_keysym_to_emacs_keysym (keysym, simple_p);
- 
++	) ? Qnil : x_keysym_to_emacs_keysym (keysym);
+
      case XLookupChars:
        {
-diff -ru xemacs-21.5.20.orig/src/xintrinsic.h xemacs-21.5.20/src/xintrinsic.h
---- xemacs-21.5.20.orig/src/xintrinsic.h	2001-04-12 20:24:30.000000000 +0200
-+++ xemacs-21.5.20/src/xintrinsic.h	2005-05-12 12:37:18.000000000 +0200
-@@ -22,6 +22,7 @@
+diff -ru xemacs-21.5.36.orig/src/xintrinsic.h xemacs-21.5.36/src/xintrinsic.h
+--- xemacs-21.5.36.orig/src/xintrinsic.h	2025-06-14 00:00:00.000000000 +0200
++++ xemacs-21.5.36/src/xintrinsic.h	2026-03-15 12:00:00.000000000 +0100
+@@ -20,6 +20,7 @@
  #ifndef INCLUDED_xintrinsic_h_
  #define INCLUDED_xintrinsic_h_
- 
+
 +#include <X11/keysym.h>
  #include <X11/Intrinsic.h>
- 
+
  #endif /* INCLUDED_xintrinsic_h_ */
diff --git a/xemacs-no-memory-warnings.patch b/xemacs-no-memory-warnings.patch
deleted file mode 100644
index b78298d..0000000
--- a/xemacs-no-memory-warnings.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- xemacs-21.4.14/src/emacs.c.orig	Wed Jan 15 13:18:00 2003
-+++ xemacs-21.4.14/src/emacs.c	Mon Oct 27 21:45:41 2003
-@@ -1033,7 +1033,7 @@
- #ifndef SYSTEM_MALLOC
-   if (!initialized)
-     /* Arrange to get warning messages as memory fills up.  */
--    memory_warnings (0, malloc_warning);
-+    ; /*memory_warnings (0, malloc_warning);  -- doesn't support memory model on alpha */
- #endif	/* not SYSTEM_MALLOC */
- 
- #ifdef SET_EMACS_PRIORITY
-@@ -3195,7 +3195,7 @@
-   /* Tell malloc where start of impure now is */
-   /* Also arrange for warnings when nearly out of space.  */
- #ifndef SYSTEM_MALLOC
--  memory_warnings (my_edata, malloc_warning);
-+  /* memory_warnings (my_edata, malloc_warning);  -- doesn't support memory model on alpha */
- #endif
- 
-   UNGCPRO;
diff --git a/xemacs-ootags-bool.patch b/xemacs-ootags-bool.patch
new file mode 100644
index 0000000..3a4c362
--- /dev/null
+++ b/xemacs-ootags-bool.patch
@@ -0,0 +1,31 @@
+Fix C23 bool conflict in ootags.c.
+C23 makes bool a built-in keyword, conflicting with the typedef in ootags.
+Use stdbool.h when available. Also change globals/members from bool to int
+since they are used as struct option flag fields expecting int*.
+PLD-specific fix for modern GCC (15+).
+
+--- xemacs-21.5.34/lib-src/ootags.c.orig	2013-08-21 19:43:45.000000000 +0200
++++ xemacs-21.5.34/lib-src/ootags.c	2026-03-15 12:00:00.000000000 +0100
+@@ -181,7 +181,11 @@
+ # define xrnew(op,n,Type) ((Type *) xrealloc ((op), (n) * sizeof (Type)))
+ #endif
+
++#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
++#include <stdbool.h>
++#else
+ typedef int bool;
++#endif
+
+ typedef void Lang_function (FILE *);
+
+@@ -367,8 +371,8 @@
+ bool constantypedefs;		/* -d: create tags for C #define, enum */
+ 				/* constants and variables. */
+ 				/* -D: opposite of -d.  Default under ctags. */
+-bool globals;			/* create tags for global variables */
+-bool members;			/* create tags for C member variables */
++int globals;			/* create tags for global variables */
++int members;			/* create tags for C member variables */
+ bool update;			/* -u: update tags */
+ bool vgrind_style;		/* -v: create vgrind style index output */
+ bool no_warnings;		/* -w: suppress warnings */
diff --git a/xemacs-ptmx.patch b/xemacs-ptmx.patch
index 5497d62..08b42af 100644
--- a/xemacs-ptmx.patch
+++ b/xemacs-ptmx.patch
@@ -1,3 +1,6 @@
+Reorder pty allocation to prefer openpty() over getpt() for better
+/dev/ptmx handling on modern Linux. PLD-specific.
+
 diff -ru xemacs-21.5.20.orig/src/process-unix.c xemacs-21.5.20/src/process-unix.c
 --- xemacs-21.5.20.orig/src/process-unix.c	2005-02-04 05:06:34.000000000 +0100
 +++ xemacs-21.5.20/src/process-unix.c	2005-05-11 17:41:30.000000000 +0200
diff --git a/xemacs-set-locale-to-c-when-not-supported-by-x.patch b/xemacs-set-locale-to-c-when-not-supported-by-x.patch
index 6fc8ca7..bf588ff 100644
--- a/xemacs-set-locale-to-c-when-not-supported-by-x.patch
+++ b/xemacs-set-locale-to-c-when-not-supported-by-x.patch
@@ -1,3 +1,7 @@
+Set locale to C with warning when X does not support the requested
+locale, instead of silently restoring previous locale. Prevents
+crashes or misbehavior with incompatible locales. PLD-specific.
+
 diff -ru xemacs-21.5.21.orig/src/intl.c xemacs-21.5.21/src/intl.c
 --- xemacs-21.5.21.orig/src/intl.c	2002-05-28 10:44:55.000000000 +0200
 +++ xemacs-21.5.21/src/intl.c	2005-06-13 16:23:51.000000000 +0200
diff --git a/xemacs-sys_siglist.patch b/xemacs-sys_siglist.patch
new file mode 100644
index 0000000..db0fc13
--- /dev/null
+++ b/xemacs-sys_siglist.patch
@@ -0,0 +1,18 @@
+Replace removed sys_siglist[] with strsignal() in process.c.
+The sys_siglist symbol was removed from glibc headers. strsignal() is
+the POSIX replacement. Similar fix applied by Fedora and Debian.
+
+--- xemacs-21.5.34/src/process.c.orig	2013-08-21 19:43:45.000000000 +0200
++++ xemacs-21.5.34/src/process.c	2026-03-15 12:00:00.000000000 +0100
+@@ -1569,7 +1569,10 @@
+ signal_name (int signum)
+ {
+   if (signum >= 0 && signum < NSIG)
+-    return (const char *) sys_siglist[signum];
++    {
++      const char *name = strsignal(signum);
++      return name ? name : (const char *) GETTEXT ("unknown signal");
++    }
+
+   return (const char *) GETTEXT ("unknown signal");
+ }
diff --git a/xemacs-texinfo-escape.patch b/xemacs-texinfo-escape.patch
new file mode 100644
index 0000000..9b94b69
--- /dev/null
+++ b/xemacs-texinfo-escape.patch
@@ -0,0 +1,40 @@
+Escape @ characters in ASCII art diagrams in internals.texi.
+Modern texinfo treats @| as a command even inside @example blocks.
+PLD-specific fix for texinfo 7.x compatibility.
+
+--- xemacs-21.5.34/man/internals/internals.texi.orig	2013-08-21 19:43:45.000000000 +0200
++++ xemacs-21.5.34/man/internals/internals.texi	2026-03-15 12:00:00.000000000 +0100
+@@ -18749,7 +18749,7 @@
+ | #  | +----------------------------------------------------------+ |  # |
+ | #  | |                          gutter                          | |  # |
+ | #  | |-********************************************************-| |  # |
+-|w#  | | *@|        scrollbar        |v*                      |s* | |  #w|
++|w#  | | *@@|        scrollbar        |v*                      |s* | |  #w|
+ |i#  | | *-+-------------------------|e*                      |c* | |  #i|
+ |n#  | | *s|                         |r*                      |r* | |  #n|
+ |d#  | | *c|                         |t*                      |o* | |  #d|
+@@ -18759,7 +18759,7 @@
+ |m#  |t| *l|                         |i*                      |a* |t|  #m|
+ |a#  |e| *b|                         |v*                      |r* |e|  #a|
+ |n# t|r| *a|                         |i*----------------------+-* |r|t #n|
+-|a# o|n|g*r|                         |d*      scrollbar       |@*g|n|o #a|
++|a# o|n|g*r|                         |d*      scrollbar       |@@*g|n|o #a|
+ |g# o|a|u*-+-------------------------|e*----------------------+-*u|a|o #g|
+ |e# l|l|t*        modeline           |r*      modeline          *t|l|l #e|
+ |r# b| |t********************************************************t| |b #r|
+@@ -18773,13 +18773,13 @@
+ |t#  | | *e  = inner text area =e  |a|i*                      |a* | |  #t|
+ |i#  | | *   =                 =   |r|v*                      |r* | |  #i|
+ |o#  | | *---===================---+-|i*----------------------+-* | |  #o|
+-|n#  | | *        scrollbar        |@|d*      scrollbar       |@* | |  #n|
++|n#  | | *        scrollbar        |@@|d*      scrollbar       |@@* | |  #n|
+ | #  | | *-------------------------+-|e*----------------------+-* | |  # |
+ | #  | | *        modeline           |r*      modeline          * | |  # |
+ | #  | |-********************************************************-| |  # |
+ | #  | |                           gutter                         | |  # |
+ | #  | |-********************************************************-| |  # |
+-| #  | |@*                       minibuffer                     *@| |  # |
++| #  | |@@*                       minibuffer                     *@@| |  # |
+ | #  | +-********************************************************-+ |  # |
+ | #  |                         internal border                      |  # |
+ | #--------------------------------------------------------------------# |
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/xemacs.git/commitdiff/26a2089fd929ec2537428d31564d0db5600b3476



More information about the pld-cvs-commit mailing list