[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