public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/motif] rawhide: 2.5.2
@ 2026-09-10 13:12 Gwyn Ciesla
  0 siblings, 0 replies; only message in thread
From: Gwyn Ciesla @ 2026-09-10 13:12 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/motif
Branch : rawhide
Commit : 8e3a1497cda7f35a8b81a3e72b048f1b2af2ca75
Author : Gwyn Ciesla <gwync@protonmail.com>
Date   : 2026-09-10T08:12:05-05:00
Stats  : +23/-2518 in 26 file(s)
URL    : https://src.fedoraproject.org/rpms/motif/c/8e3a1497cda7f35a8b81a3e72b048f1b2af2ca75?branch=rawhide

Log:
2.5.2

---
diff --git a/.gitignore b/.gitignore
index d6d11eb..e75bf53 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
 /motif-2.3.4-src.tgz
 /motif-2.3.8.tar.gz
+/motif-2.5.2.tar.gz

diff --git a/0001-Fix-CVE-2023-43788-Out-of-bounds-read-in-XpmCreateXp.patch b/0001-Fix-CVE-2023-43788-Out-of-bounds-read-in-XpmCreateXp.patch
deleted file mode 100644
index 5ee660d..0000000
--- a/0001-Fix-CVE-2023-43788-Out-of-bounds-read-in-XpmCreateXp.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 2fa554b01ef6079a9b35df9332bdc4f139ed67e0 Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <alan.coopersmith@oracle.com>
-Date: Sat, 29 Apr 2023 17:50:39 -0700
-Subject: [PATCH] Fix CVE-2023-43788: Out of bounds read in
- XpmCreateXpmImageFromBuffer
-
-When the test case for CVE-2022-46285 was run with the Address Sanitizer
-enabled, it found an out-of-bounds read in ParseComment() when reading
-from a memory buffer instead of a file, as it continued to look for the
-closing comment marker past the end of the buffer.
-
-Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
----
- lib/Xm/Xpmdata.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/Xm/Xpmdata.c b/lib/Xm/Xpmdata.c
-index 7524e65..0b0f1f3 100644
---- a/lib/Xm/Xpmdata.c
-+++ b/lib/Xm/Xpmdata.c
-@@ -108,7 +108,7 @@ ParseComment(xpmData *data)
- 		n++;
- 		s2++;
- 	    } while (c == *s2 && *s2 != '\0' && c);
--	    if (*s2 == '\0') {
-+	    if (*s2 == '\0' || c == '\0') {
- 		/* this is the end of the comment */
- 		notend = 0;
- 		mdata->cptr--;
--- 
-2.41.0
-

diff --git a/0001-Fix-CVE-2023-43789-Out-of-bounds-read-on-XPM-with-co.patch b/0001-Fix-CVE-2023-43789-Out-of-bounds-read-on-XPM-with-co.patch
deleted file mode 100644
index 292988b..0000000
--- a/0001-Fix-CVE-2023-43789-Out-of-bounds-read-on-XPM-with-co.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 7e21cb63b9a1ca760a06cc4cd9b19bbc3fcd8f51 Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <alan.coopersmith@oracle.com>
-Date: Sat, 29 Apr 2023 18:30:34 -0700
-Subject: [PATCH] Fix CVE-2023-43789: Out of bounds read on XPM with corrupted
- colormap
-
-Found with clang's libfuzzer
-
-Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
----
- lib/Xm/Xpmdata.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/lib/Xm/Xpmdata.c b/lib/Xm/Xpmdata.c
-index 0b0f1f3..6e87455 100644
---- a/lib/Xm/Xpmdata.c
-+++ b/lib/Xm/Xpmdata.c
-@@ -259,13 +259,13 @@ xpmNextWord(
-     int c;
- 
-     if (!mdata->type || mdata->type == XPMBUFFER) {
--	while (isspace(c = *mdata->cptr) && c != mdata->Eos)
-+	while ((c = *mdata->cptr) && isspace(c) && (c != mdata->Eos))
- 	    mdata->cptr++;
- 	do {
- 	    c = *mdata->cptr++;
- 	    *buf++ = c;
- 	    n++;
--	} while (!isspace(c) && c != mdata->Eos && n < buflen);
-+	} while (c && !isspace(c) && (c != mdata->Eos) && (n < buflen));
- 	n--;
- 	mdata->cptr--;
-     } else {
--- 
-2.41.0
-

diff --git a/0001-Xm-Screen-Add-_NET_WORKAREA-support.patch b/0001-Xm-Screen-Add-_NET_WORKAREA-support.patch
deleted file mode 100644
index 6dc940c..0000000
--- a/0001-Xm-Screen-Add-_NET_WORKAREA-support.patch
+++ /dev/null
@@ -1,146 +0,0 @@
-From 78a0cd5bdbe447bab807a09fae18d8a961366abc Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Mon, 16 Jun 2025 14:29:22 +0200
-Subject: [PATCH 1/2] Xm/Screen: Add _NET_WORKAREA support
-
-Add support for the extended window manager hint _NET_WORKAREA to
-prevent Motif from placing its widgets outside of the geometry
-advertised by the window manager.
-
-Support for _NET_WORKAREA depends on the Xinerama patches as it shares
-the same logic.
-
-Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
----
- lib/Xm/Screen.c | 108 ++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 108 insertions(+)
-
-diff --git a/lib/Xm/Screen.c b/lib/Xm/Screen.c
-index 44abcfb3..6269ffb3 100644
---- a/lib/Xm/Screen.c
-+++ b/lib/Xm/Screen.c
-@@ -1517,6 +1517,113 @@ XmGetXmScreen(
- 	return widget;
- }
- 
-+static int
-+_XmScreenGetCurrentDesktop(Screen *screen)
-+{
-+    static Atom   XmA_NET_CURRENT_DESKTOP = None;
-+    Atom          type;
-+    Display       *dpy;
-+    Window        rootwindow;
-+    int           result = False;
-+    int           desktop = 0;
-+    int           format;
-+    unsigned long lengthRtn;
-+    unsigned long bytesAfter;
-+    unsigned char *data;
-+
-+    dpy = DisplayOfScreen(screen);
-+    rootwindow = RootWindowOfScreen(screen);
-+
-+    if (XmA_NET_CURRENT_DESKTOP == None)
-+      XmA_NET_CURRENT_DESKTOP = XInternAtom(dpy, "_NET_CURRENT_DESKTOP", False);
-+
-+    result =XGetWindowProperty(dpy, rootwindow,
-+                               XmA_NET_CURRENT_DESKTOP,
-+                               0L, 100000L, False, XA_CARDINAL,
-+                               &type, &format, &lengthRtn, &bytesAfter,
-+                               &data);
-+
-+    if (type == XA_CARDINAL) {
-+      desktop = *(int *)data;
-+      XFree(data);
-+    }
-+#ifdef DEBUG_XINERAMA
-+    printf("Current desktop is %i\n", desktop);
-+#endif /* DEBUG_XINERAMA */
-+
-+  return desktop;
-+}
-+
-+static void
-+_XmCheckNetWorkarea(
-+        Screen *screen,
-+	Position *ret_x,
-+	Position *ret_y,
-+	Position *ret_max_x,
-+	Position *ret_max_y )
-+{
-+    static Atom   XmA_NET_WORKAREA = None;
-+    Atom          type;
-+    Display       *dpy;
-+    Window        rootwindow;
-+    int           result = False;
-+    int           desktop = 0;
-+    int           format;
-+    unsigned long lengthRtn;
-+    unsigned long bytesAfter;
-+    unsigned char *data;
-+    long          *net_workarea;
-+
-+    dpy = DisplayOfScreen(screen);
-+    rootwindow = RootWindowOfScreen(screen);
-+    desktop = _XmScreenGetCurrentDesktop(screen);
-+
-+    if (XmA_NET_WORKAREA == None)
-+      XmA_NET_WORKAREA = XInternAtom(dpy, "_NET_WORKAREA", False);
-+
-+    result =XGetWindowProperty(dpy, rootwindow,
-+                               XmA_NET_WORKAREA,
-+                               0L, 100000L, False, XA_CARDINAL,
-+                               &type, &format, &lengthRtn, &bytesAfter,
-+                               &data);
-+
-+    if (result != Success || type != XA_CARDINAL || format != 32 ||
-+        bytesAfter != 0 || lengthRtn % 4 != 0 || desktop + 1 > lengthRtn / 4)
-+      goto done;
-+
-+    net_workarea = (long *) data;
-+
-+#define NET_WORKAREA_X (desktop * 4)
-+#define NET_WORKAREA_Y (desktop * 4 + 1)
-+#define NET_WORKAREA_WIDTH (desktop * 4 + 2)
-+#define NET_WORKAREA_HEIGHT (desktop * 4 + 3)
-+
-+    if (*ret_x < net_workarea[NET_WORKAREA_X])
-+      *ret_x = net_workarea[NET_WORKAREA_X];
-+
-+    if (*ret_y < net_workarea[NET_WORKAREA_Y])
-+      *ret_y = net_workarea[NET_WORKAREA_Y];
-+
-+    if (*ret_max_x > net_workarea[NET_WORKAREA_X] + net_workarea[NET_WORKAREA_WIDTH])
-+      *ret_max_x = net_workarea[NET_WORKAREA_X] + net_workarea[NET_WORKAREA_WIDTH];
-+
-+    if (*ret_max_y > net_workarea[NET_WORKAREA_Y] + net_workarea[NET_WORKAREA_HEIGHT])
-+      *ret_max_y = net_workarea[NET_WORKAREA_Y] + net_workarea[NET_WORKAREA_HEIGHT];
-+
-+#undef NET_WORKAREA_X
-+#undef NET_WORKAREA_Y
-+#undef NET_WORKAREA_WIDTH
-+#undef NET_WORKAREA_HEIGHT
-+
-+#ifdef DEBUG_XINERAMA
-+    printf("_NET_WORKAREA within (%i,%i) and (%i,%i)\n", *ret_x, *ret_y, *ret_max_x, *ret_max_y);
-+#endif /* DEBUG_XINERAMA */
-+
-+done:
-+    if (data)
-+      XFree(data);
-+}
-+
- void
- _XmScreenGetBoundariesAtpoint(
-         Screen *screen,
-@@ -1561,6 +1668,7 @@ _XmScreenGetBoundariesAtpoint(
-       }
-     }
- #endif /* HAVE_LIBXINERAMA */
-+    _XmCheckNetWorkarea(screen, &screen_x, &screen_y, &screen_max_x, &screen_max_y);
- out:
- #ifdef DEBUG_XINERAMA
-     printf("Point (%i,%i) constrained within (%i,%i) and (%i,%i)\n",
--- 
-2.50.0
-

diff --git a/0001-Xm-String-Fix-memory-leak.patch b/0001-Xm-String-Fix-memory-leak.patch
deleted file mode 100644
index 45a9143..0000000
--- a/0001-Xm-String-Fix-memory-leak.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 30ff6e00e9a5edc15ff438b6cfd8a5a4169630a1 Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Mon, 16 Jun 2025 14:49:55 +0200
-Subject: [PATCH] Xm/String: Fix memory leak
-
-ComputeMetrics() would leak the string created by _XmUtf8ToUcs2(), make
-sure to free the string once done with it.
-
-Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
----
- lib/Xm/XmString.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/lib/Xm/XmString.c b/lib/Xm/XmString.c
-index 2c54ef57..6ee1c40e 100644
---- a/lib/Xm/XmString.c
-+++ b/lib/Xm/XmString.c
-@@ -6272,6 +6272,7 @@ ComputeMetrics(XmRendition rend,
- 
- 		  XTextExtents16(font_struct, str, str_len,
- 			     &dir, &asc, &desc, &char_ret);
-+                  XFree(str);
- 		} else
- 	      XTextExtents16(font_struct, 
- 			     (XChar2b *)text, Half(byte_count),
--- 
-2.50.0
-

diff --git a/0001-build-Check-for-Xinerama-availability.patch b/0001-build-Check-for-Xinerama-availability.patch
deleted file mode 100644
index 724c6c3..0000000
--- a/0001-build-Check-for-Xinerama-availability.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 3a164564cf8241ee4544ff012659e8eb510b195b Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Tue, 19 Nov 2024 18:40:33 +0100
-Subject: [PATCH 1/7] build: Check for Xinerama availability
-
-Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
----
- configure.ac       | 22 ++++++++++++++++++++++
- lib/Xm/Makefile.am |  2 +-
- 2 files changed, 23 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index d57f71e6..f0b2617d 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -280,7 +280,29 @@ AC_SUBST(LIB_XP)
- AC_FIND_XFT
- AC_IMAGE_SUPPORT
- 
-+AC_ARG_ENABLE(xinerama,[  --enable-xinerama       Enable Xinerama (default=yes)])
-+if test "x$enable_xinerama" = "x"
-+then
-+    enable_xinerama="yes"
-+fi
-+
-+if test "x$enable_xinerama" = "xyes"
-+then
-+  AC_MSG_CHECKING([for libXinerama])
-+  AC_CHECK_HEADERS(X11/extensions/Xinerama.h,
-+    AC_CHECK_LIB(Xinerama, XineramaQueryExtension, ,enable_xinerama="no"),
-+  enable_xinerama="no")
-+fi
-+
-+if test "x$enable_xinerama" = "xyes"
-+then
-+  LIB_XINERAMA=-lXinerama
-+else
-+  LIB_XINERAMA=
-+fi
- 
-+AM_CONDITIONAL(XINERAMA, test "$enable_xinerama" = "yes")
-+AC_SUBST(LIB_XINERAMA)
- 
- # AM_CONDITIONAL(Motif22Compatibility, test x$enable_motif22_compatibility = xyes)
- 
-diff --git a/lib/Xm/Makefile.am b/lib/Xm/Makefile.am
-index a95fa2db..07b733f5 100644
---- a/lib/Xm/Makefile.am
-+++ b/lib/Xm/Makefile.am
-@@ -71,7 +71,7 @@ else
- PRINTS_SRC =
- endif
- 
--libXm_la_LIBADD = ${X_LIBS} ${X_XMU} -lXt -lXext ${LIB_XP} -lX11 ${X_EXTRA_LIBS}
-+libXm_la_LIBADD = ${X_LIBS} ${X_XMU} -lXt -lXext ${LIB_XP} ${LIB_XINERAMA} -lX11 ${X_EXTRA_LIBS}
- 
- noinst_HEADERS = BaseClassI.h \
- BitmapsI.h \
--- 
-2.49.0
-

diff --git a/0002-Xm-Display-Add-optional-Xinerama-support.patch b/0002-Xm-Display-Add-optional-Xinerama-support.patch
deleted file mode 100644
index 3bce3bf..0000000
--- a/0002-Xm-Display-Add-optional-Xinerama-support.patch
+++ /dev/null
@@ -1,419 +0,0 @@
-From f8aa9901f3cfa5fb49b809fdb223798623bede63 Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Wed, 20 Nov 2024 10:26:28 +0100
-Subject: [PATCH 2/7] Xm/Display: Add optional Xinerama support
-
-Xinerama support is disabled by default, unless the Xresource
-"enableXinerama" is set in the X resources database, e.g.:
-
-  *enableXinerama: True
-
-This also provides an additional private Screen API to get the monitor
-boundaries given a point on screen. This is meant to be used in the
-following commits to implement Xinerama awareness in the relevant
-widgets.
-
-Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
----
- doc/man/man3/XmDisplay.3 |   2 +
- lib/Xm/Display.c         |  95 +++++++++++++++++++++++++++++
- lib/Xm/DisplayP.h        |  18 ++++++
- lib/Xm/Screen.c          | 128 +++++++++++++++++++++++++++++++++++++++
- lib/Xm/ScreenP.h         |   8 +++
- lib/Xm/xmstring.list.in  |   2 +
- 6 files changed, 253 insertions(+)
-
-diff --git a/doc/man/man3/XmDisplay.3 b/doc/man/man3/XmDisplay.3
-index a57ea089..ec360c80 100644
---- a/doc/man/man3/XmDisplay.3
-+++ b/doc/man/man3/XmDisplay.3
-@@ -158,6 +158,8 @@ XmNnoRenditionCallback\aXmCCallback\aXtCallbackList\aNULL\aC
- _\a_\a_\a_\a_\a
- XmNuserData\aXmCUserData\aXtPointer\aNULL\aCSG
- _\a_\a_\a_\a_\a
-+XmNenableXinerama\aXmCEnableXinerama\aBoolean\aFalse\aC
-+_\a_\a_\a_\a_\a
- .TE
- .IP "\fBXmNdefaultButtonEmphasis\fP" 10
- Specifies whether to change the look of the PushButton widget and
-diff --git a/lib/Xm/Display.c b/lib/Xm/Display.c
-index 55fe4cd3..3ab047f2 100644
---- a/lib/Xm/Display.c
-+++ b/lib/Xm/Display.c
-@@ -35,6 +35,9 @@ static char rcsid[] = "$TOG: Display.c /main/23 1997/06/18 17:36:59 samborn $"
- 
- #include <X11/Intrinsic.h>
- #include <X11/extensions/shape.h>
-+#ifdef HAVE_LIBXINERAMA
-+#include <X11/extensions/Xinerama.h>
-+#endif
- 
- #include <X11/Xatom.h>
- #include <Xm/AtomMgr.h>
-@@ -273,6 +276,13 @@ static XtResource resources[] = {
- 	XtOffsetOf(WMShellRec, wm.wm_hints.icon_pixmap), 
- 	XmRImmediate, NULL
-     }, 
-+    /* Xinerama support */
-+    {
-+	XmNenableXinerama, XmCEnableXinerama,
-+	XmRBoolean, sizeof(Boolean),
-+	Offset(display.enable_xinerama),
-+	XmRImmediate, (XtPointer) False
-+    },
- };
- 
- #undef Offset
-@@ -388,6 +398,45 @@ DisplayClassInitialize( void )
- 		XmMakeCanonicalString("_MOTIF_DRAG_AND_DROP_MESSAGE");
- }    
- 
-+static void
-+DisplayInitializeXinerama( XmDisplay	xmDisplay )
-+{
-+#ifdef HAVE_LIBXINERAMA
-+    Display     *display = XtDisplay(xmDisplay);
-+    int		dummy1, dummy2;
-+    Status      have_xinerama;
-+
-+    xmDisplay->display.monitors = NULL;
-+    xmDisplay->display.n_monitors = 0;
-+
-+    /* Xinerama support is disabled by default, unless XmNenableXinerama is set */
-+    if (!xmDisplay->display.enable_xinerama) {
-+#ifdef DEBUG_XINERAMA
-+      printf("XINERAMA support not enabled\n");
-+#endif /* DEBUG_XINERAMA */
-+      return;
-+    }
-+
-+    if (!XineramaQueryExtension(display, &dummy1, &dummy2)) {
-+#ifdef DEBUG_XINERAMA
-+      printf("XINERAMA extension not available\n");
-+#endif /* DEBUG_XINERAMA */
-+      xmDisplay->display.enable_xinerama = False;
-+      return;
-+    }
-+
-+    if (!XineramaIsActive(display)) {
-+#ifdef DEBUG_XINERAMA
-+      printf("XINERAMA extension not activated\n");
-+#endif /* DEBUG_XINERAMA */
-+      xmDisplay->display.enable_xinerama = False;
-+      return;
-+    }
-+
-+    _XmDisplayUpdateXinerama(xmDisplay);
-+#endif /* HAVE_LIBXINERAMA */
-+}
-+
- /*ARGSUSED*/
- static void 
- SetDragReceiverInfo(
-@@ -553,6 +602,8 @@ DisplayInitialize(
- 	  XmDRAG_PREFER_PREREGISTER;
-     }
- 
-+    DisplayInitializeXinerama(xmDisplay);
-+
-     _XmVirtKeysInitialize (new_widget);
- 
-     _XmProcessLock();
-@@ -672,6 +723,9 @@ DisplayDestroy(
- 
-     _XmVirtKeysDestroy (w);
- 
-+#ifdef HAVE_LIBXINERAMA
-+    XFree(dd->display.monitors);
-+#endif /* HAVE_LIBXINERAMA */
-     XDeleteContext( XtDisplay( w), None, context) ;
- }
- 
-@@ -1225,3 +1279,44 @@ _XmSetThicknessDefault0(
- 	value->addr = (XPointer)&thickness;
- 
- }
-+
-+
-+Boolean
-+_XmDisplayUseXinerama(
-+	XmDisplay xmDisplay )
-+{
-+    return xmDisplay && xmDisplay->display.enable_xinerama;
-+}
-+
-+
-+void
-+_XmDisplayUpdateXinerama(
-+	XmDisplay xmDisplay )
-+{
-+#ifdef HAVE_LIBXINERAMA
-+#ifdef DEBUG_XINERAMA
-+    int i;
-+#endif /* DEBUG_XINERAMA */
-+
-+    if (!_XmDisplayUseXinerama(xmDisplay))
-+      return;
-+
-+#ifdef DEBUG_XINERAMA
-+    printf("Updating XINERAMA configuration\n");
-+#endif /* DEBUG_XINERAMA */
-+
-+    if (xmDisplay->display.monitors)
-+      XFree(xmDisplay->display.monitors);
-+
-+    xmDisplay->display.monitors =
-+      XineramaQueryScreens (XtDisplay(xmDisplay), &xmDisplay->display.n_monitors);
-+
-+#ifdef DEBUG_XINERAMA
-+    for (i = 0; i < xmDisplay->display.n_monitors; ++i) {
-+      printf("XINERAMA Monitor %i: (%i,%i) [%ix%i]\n", i,
-+              xmDisplay->display.monitors[i].x_org, xmDisplay->display.monitors[i].y_org,
-+              xmDisplay->display.monitors[i].width, xmDisplay->display.monitors[i].height);
-+    }
-+#endif /* DEBUG_XINERAMA */
-+#endif /* HAVE_LIBXINERAMA */
-+}
-diff --git a/lib/Xm/DisplayP.h b/lib/Xm/DisplayP.h
-index 655c29b6..a2420f96 100644
---- a/lib/Xm/DisplayP.h
-+++ b/lib/Xm/DisplayP.h
-@@ -23,6 +23,14 @@
- #ifndef _XmDisplayP_h
- #define _XmDisplayP_h
- 
-+#ifdef HAVE_CONFIG_H
-+#include <config.h>
-+#endif
-+
-+#ifdef HAVE_LIBXINERAMA
-+#include <X11/extensions/Xinerama.h>
-+#endif
-+
- #include <Xm/DesktopP.h>
- #include <Xm/VendorSEP.h>
- #include <Xm/DropSMgr.h>
-@@ -115,6 +123,11 @@ typedef struct {
-     Boolean			enable_unselectable_drag;
-     Boolean                     enable_thin_thickness;
-     Boolean			enable_multi_key_bindings;
-+    Boolean			enable_xinerama;
-+#ifdef HAVE_LIBXINERAMA
-+    XineramaScreenInfo          *monitors;
-+    int                         n_monitors;
-+#endif
- } XmDisplayPart, *XmDisplayPartPtr;
- 
- typedef struct _XmDisplayInfo {
-@@ -143,6 +156,11 @@ externalref XmDisplayClassRec 	xmDisplayClassRec;
- 
- externalref String _Xm_MOTIF_DRAG_AND_DROP_MESSAGE ;
- 
-+extern Boolean _XmDisplayUseXinerama(
-+	XmDisplay xmDisplay ) ;
-+
-+extern void _XmDisplayUpdateXinerama(
-+	XmDisplay xmDisplay ) ;
- 
- #ifdef __cplusplus
- }  /* Close scope of 'extern "C"' declaration which encloses file. */
-diff --git a/lib/Xm/Screen.c b/lib/Xm/Screen.c
-index 10ba8d2b..44abcfb3 100644
---- a/lib/Xm/Screen.c
-+++ b/lib/Xm/Screen.c
-@@ -396,7 +396,67 @@ GetUnitFromFont(
-     }
- 
- }
-+#ifdef HAVE_LIBXINERAMA
-+/* ARGSUSED */
-+static void
-+StructureNotifyHandler(
-+        Widget wid,
-+        XtPointer data,
-+        XEvent *event,
-+        Boolean *cont )
-+{
-+    Display           *display = XtDisplay(wid);
-+
-+#ifdef DEBUG_XINERAMA
-+    printf("Root event received\n");
-+#endif /* DEBUG_XINERAMA */
- 
-+    if (event->type == ConfigureNotify)
-+        _XmDisplayUpdateXinerama((XmDisplay) XmGetXmDisplay(display)) ;
-+}
-+
-+/* ARGSUSED */
-+static void
-+InstallStructureNotifyHandler(
-+        XmScreen     xmScreen)
-+{
-+    Display           *display = XtDisplay(xmScreen);
-+    Window            rootwindow;
-+    XWindowAttributes rootattributes;
-+
-+    if (!_XmDisplayUseXinerama((XmDisplay) XmGetXmDisplay(display)))
-+        return;
-+
-+    rootwindow = RootWindowOfScreen(XtScreen(xmScreen));
-+    XGetWindowAttributes(display, rootwindow, &rootattributes);
-+    XSelectInput(display,
-+		 rootwindow,
-+		 StructureNotifyMask | rootattributes.your_event_mask);
-+    XtRegisterDrawable(display, rootwindow, (Widget)xmScreen);
-+    XtAddEventHandler((Widget)xmScreen,
-+                         (EventMask) StructureNotifyMask, True,
-+			 StructureNotifyHandler, (XtPointer) NULL);
-+}
-+
-+/* ARGSUSED */
-+static void
-+UninstallStructureNotifyHandler(
-+        XmScreen     xmScreen)
-+{
-+    Display           *display = XtDisplay(xmScreen);
-+    Window            rootwindow;
-+    XWindowAttributes rootattributes;
-+
-+    if (!_XmDisplayUseXinerama((XmDisplay) XmGetXmDisplay(display)))
-+        return;
-+
-+    rootwindow = RootWindowOfScreen(XtScreen(xmScreen));
-+    XtUnregisterDrawable(display, rootwindow);
-+    XtRemoveEventHandler((Widget)xmScreen,
-+                         (EventMask) StructureNotifyMask, True,
-+			 StructureNotifyHandler, (XtPointer) NULL);
-+}
-+#endif /* HAVE_LIBXINERAMA */
- 
- /************************************************************************
-  *
-@@ -413,6 +473,8 @@ Initialize(
- {
-     XmScreen     xmScreen = (XmScreen)new_widget;
-     Display      *display = XtDisplay(new_widget);
-+    Window       rootwindow;
-+    XWindowAttributes rootattributes;
- 
-     xmScreen->screen.screenInfo = NULL;
- 
-@@ -474,6 +536,9 @@ Initialize(
-     }
- #endif
- 
-+#ifdef HAVE_LIBXINERAMA
-+    InstallStructureNotifyHandler(xmScreen);
-+#endif /* HAVE_LIBXINERAMA */
- }
- 
- /************************************************************************
-@@ -672,6 +737,10 @@ Destroy(
- 
-     /* need to remove pixmap and GC related to this screen */
-     _XmCleanPixmapCache (XtScreen(widget), NULL);
-+
-+#ifdef HAVE_LIBXINERAMA
-+    UninstallStructureNotifyHandler(xmScreen);
-+#endif /* HAVE_LIBXINERAMA */
- }
- 
- static void 
-@@ -1447,3 +1516,62 @@ XmGetXmScreen(
- 	_XmAppUnlock(app);
- 	return widget;
- }
-+
-+void
-+_XmScreenGetBoundariesAtpoint(
-+        Screen *screen,
-+	Position pt_x,
-+	Position pt_y,
-+	Position *ret_x,
-+	Position *ret_y,
-+	Position *ret_max_x,
-+	Position *ret_max_y )
-+{
-+    XmDisplay	xmDisplay;
-+    Position screen_x, screen_y;
-+    Position screen_max_x, screen_max_y;
-+#ifdef HAVE_LIBXINERAMA
-+    Position tmp_x, tmp_y;
-+    Position tmp_max_x, tmp_max_y;
-+    int i;
-+#endif /* HAVE_LIBXINERAMA */
-+
-+    xmDisplay = (XmDisplay) XmGetXmDisplay(DisplayOfScreen(screen));
-+    screen_x = 0;
-+    screen_y = 0;
-+    screen_max_x = WidthOfScreen(screen);
-+    screen_max_y = HeightOfScreen(screen);
-+
-+    if (!_XmDisplayUseXinerama(xmDisplay))
-+      goto out;
-+
-+#ifdef HAVE_LIBXINERAMA
-+    for (i = 0; i < xmDisplay->display.n_monitors; ++i) {
-+      tmp_x = xmDisplay->display.monitors[i].x_org;
-+      tmp_y = xmDisplay->display.monitors[i].y_org;
-+      tmp_max_x = tmp_x + xmDisplay->display.monitors[i].width;
-+      tmp_max_y = tmp_y + xmDisplay->display.monitors[i].height;
-+
-+      if (pt_x >= tmp_x && pt_x < tmp_max_x && pt_y >= tmp_y && pt_y < tmp_max_y) {
-+	screen_x = tmp_x;
-+	screen_y = tmp_y;
-+	screen_max_x = tmp_max_x;
-+	screen_max_y = tmp_max_y;
-+        break; /* We have a match */
-+      }
-+    }
-+#endif /* HAVE_LIBXINERAMA */
-+out:
-+#ifdef DEBUG_XINERAMA
-+    printf("Point (%i,%i) constrained within (%i,%i) and (%i,%i)\n",
-+           pt_x, pt_y, screen_x, screen_y, screen_max_x, screen_max_y);
-+#endif /* DEBUG_XINERAMA */
-+    if (ret_x)
-+      *ret_x = screen_x;
-+    if (ret_y)
-+      *ret_y = screen_y;
-+    if (ret_max_x)
-+      *ret_max_x = screen_max_x;
-+    if (ret_max_y)
-+      *ret_max_y = screen_max_y;
-+}
-diff --git a/lib/Xm/ScreenP.h b/lib/Xm/ScreenP.h
-index c870c19e..b4b95a6f 100644
---- a/lib/Xm/ScreenP.h
-+++ b/lib/Xm/ScreenP.h
-@@ -134,6 +134,14 @@ typedef struct _XmScreenRec {
-     XmScreenPart		screen;
- } XmScreenRec;
- 
-+extern void _XmScreenGetBoundariesAtpoint(
-+        Screen *screen,
-+	Position pt_x,
-+	Position pt_y,
-+	Position *ret_x,
-+	Position *ret_y,
-+	Position *ret_max_x,
-+	Position *ret_max_y ) ;
- 
- #ifdef __cplusplus
- }  /* Close scope of 'extern "C"' declaration which encloses file. */
-diff --git a/lib/Xm/xmstring.list.in b/lib/Xm/xmstring.list.in
-index 8c0c4f9a..5887e7ad 100644
---- a/lib/Xm/xmstring.list.in
-+++ b/lib/Xm/xmstring.list.in
-@@ -1692,6 +1692,8 @@ CFontEncoding
- NxftFont
- CXftFont
- SUTF8_STRING
-+NenableXinerama
-+CEnableXinerama
- 
- #file XmStrDefsI.h
- #table _XmStringsI
--- 
-2.49.0
-

diff --git a/0002-Xm-Screen-Add-_GTK_WORKAREAS-support-for-multi-monit.patch b/0002-Xm-Screen-Add-_GTK_WORKAREAS-support-for-multi-monit.patch
deleted file mode 100644
index 7726681..0000000
--- a/0002-Xm-Screen-Add-_GTK_WORKAREAS-support-for-multi-monit.patch
+++ /dev/null
@@ -1,145 +0,0 @@
-From 2f18ccbffee237845c0b3c2d745d20ac66748f8a Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Fri, 27 Jun 2025 12:11:41 +0200
-Subject: [PATCH 2/2] Xm/Screen: Add _GTK_WORKAREAS support for multi-monitor
-
-Add support for the GTK property _GTK_WORKAREAS to prevent Motif from
-placing its widgets outside of the geometry advertised by the window
-manager on a multi-monitor setup.
-
-Unlike the extended window manager hint _NET_WORKAREA which defines a
-single rectangle for the whole screen spanning across all the monitors,
-_GTK_WORKAREAS provides an area per monitor, making that property more
-adequate on a multi-monitor setup.
-
-However, if _GTK_WORKAREAS is not supported, we fallback to the standard
-_NET_WORKAREA property.
-
-Support for _GTK_WORKAREAS depends on the Xinerama patches as it shares
-the same logic.
-
-Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
----
- lib/Xm/Screen.c | 92 ++++++++++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 91 insertions(+), 1 deletion(-)
-
-diff --git a/lib/Xm/Screen.c b/lib/Xm/Screen.c
-index 6269ffb3..d8d24e9a 100644
---- a/lib/Xm/Screen.c
-+++ b/lib/Xm/Screen.c
-@@ -1554,6 +1554,91 @@ _XmScreenGetCurrentDesktop(Screen *screen)
-   return desktop;
- }
- 
-+static Boolean
-+_XmCheckGtkWorkareas(
-+        Screen *screen,
-+	Position pt_x,
-+	Position pt_y,
-+	Position *ret_x,
-+	Position *ret_y,
-+	Position *ret_max_x,
-+	Position *ret_max_y )
-+{
-+    Atom          XmA_GTK_WORKAREAS;
-+    Atom          type;
-+    Display       *dpy;
-+    Window        rootwindow;
-+    int           result = False;
-+    int           desktop = 0;
-+    int           format;
-+    unsigned long lengthRtn;
-+    unsigned long bytesAfter;
-+    unsigned char *data;
-+    long          *gtk_workareas;
-+    char          atom_name[32];
-+    int           monitor, n_monitors;
-+    Position      tmp_x, tmp_y;
-+    Position      tmp_max_x, tmp_max_y;
-+    Boolean       ret = False;
-+
-+    dpy = DisplayOfScreen(screen);
-+    rootwindow = RootWindowOfScreen(screen);
-+    desktop = _XmScreenGetCurrentDesktop(screen);
-+
-+    snprintf(atom_name, sizeof(atom_name), "_GTK_WORKAREAS_D%d", desktop);
-+    XmA_GTK_WORKAREAS = XInternAtom(dpy, atom_name, False);
-+
-+    result = XGetWindowProperty(dpy, rootwindow,
-+                                XmA_GTK_WORKAREAS,
-+                                0L, 100000L, False, XA_CARDINAL,
-+                                &type, &format, &lengthRtn, &bytesAfter,
-+                                &data);
-+
-+    if (result != Success || type != XA_CARDINAL || format != 32 ||
-+      bytesAfter != 0 || lengthRtn % 4 != 0) {
-+      goto done;
-+    }
-+
-+    gtk_workareas = (long *) data;
-+    n_monitors = lengthRtn / 4;
-+
-+#define GTK_WORKAREA_X (monitor * 4)
-+#define GTK_WORKAREA_Y (monitor * 4 + 1)
-+#define GTK_WORKAREA_WIDTH (monitor * 4 + 2)
-+#define GTK_WORKAREA_HEIGHT (monitor * 4 + 3)
-+
-+    for (monitor = 0; monitor < n_monitors; ++monitor) {
-+      tmp_x = gtk_workareas[GTK_WORKAREA_X];
-+      tmp_y = gtk_workareas[GTK_WORKAREA_Y];
-+      tmp_max_x = tmp_x + gtk_workareas[GTK_WORKAREA_WIDTH];
-+      tmp_max_y = tmp_y + gtk_workareas[GTK_WORKAREA_HEIGHT];
-+
-+      if (pt_x >= tmp_x && pt_x < tmp_max_x && pt_y >= tmp_y && pt_y < tmp_max_y) {
-+        *ret_x = tmp_x;
-+        *ret_y = tmp_y;
-+        *ret_max_x = tmp_max_x;
-+        *ret_max_y = tmp_max_y;
-+        ret = True;
-+        break; /* We have a match */
-+      }
-+    }
-+
-+#undef GTK_WORKAREA_X
-+#undef GTK_WORKAREA_Y
-+#undef GTK_WORKAREA_WIDTH
-+#undef GTK_WORKAREA_HEIGHT
-+
-+#ifdef DEBUG_XINERAMA
-+    printf("Point (%i,%i) constrained by _GTK_WORKAREAS_D%d within (%i,%i) and (%i,%i)\n",
-+           pt_x, pt_y, desktop, *ret_x, *ret_y, *ret_max_x, *ret_max_y);
-+#endif /* DEBUG_XINERAMA */
-+
-+done:
-+    if (data)
-+        XFree(data);
-+    return ret;
-+}
-+
- static void
- _XmCheckNetWorkarea(
-         Screen *screen,
-@@ -1637,6 +1722,7 @@ _XmScreenGetBoundariesAtpoint(
-     XmDisplay	xmDisplay;
-     Position screen_x, screen_y;
-     Position screen_max_x, screen_max_y;
-+    Boolean check_gtk_workarea;
- #ifdef HAVE_LIBXINERAMA
-     Position tmp_x, tmp_y;
-     Position tmp_max_x, tmp_max_y;
-@@ -1668,7 +1754,11 @@ _XmScreenGetBoundariesAtpoint(
-       }
-     }
- #endif /* HAVE_LIBXINERAMA */
--    _XmCheckNetWorkarea(screen, &screen_x, &screen_y, &screen_max_x, &screen_max_y);
-+    check_gtk_workarea = _XmCheckGtkWorkareas(screen, pt_x, pt_y,
-+                                              &screen_x, &screen_y,
-+                                              &screen_max_x, &screen_max_y);
-+    if (!check_gtk_workarea)
-+      _XmCheckNetWorkarea(screen, &screen_x, &screen_y, &screen_max_x, &screen_max_y);
- out:
- #ifdef DEBUG_XINERAMA
-     printf("Point (%i,%i) constrained within (%i,%i) and (%i,%i)\n",
--- 
-2.50.0
-

diff --git a/0003-Xm-MenuShell-Use-Xinerama-to-place-menus.patch b/0003-Xm-MenuShell-Use-Xinerama-to-place-menus.patch
deleted file mode 100644
index 7f86717..0000000
--- a/0003-Xm-MenuShell-Use-Xinerama-to-place-menus.patch
+++ /dev/null
@@ -1,136 +0,0 @@
-From 5fbc1dff0e2e248d61e43c362606c3f5e5255f7d Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Thu, 21 Nov 2024 11:52:22 +0100
-Subject: [PATCH 3/7] Xm/MenuShell: Use Xinerama to place menus
-
-v2: If we have a pulldown button, use the location of that button to
-    keep the menu on the same monitor as that button so that the menu
-    doesn't eventually end up on another monitor entirely.
-
-Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
----
- lib/Xm/MenuShell.c | 47 +++++++++++++++++++++++++++++-----------------
- 1 file changed, 30 insertions(+), 17 deletions(-)
-
-diff --git a/lib/Xm/MenuShell.c b/lib/Xm/MenuShell.c
-index 483cc95a..c78bfb08 100644
---- a/lib/Xm/MenuShell.c
-+++ b/lib/Xm/MenuShell.c
-@@ -41,6 +41,7 @@ static char rcsid[] = "$TOG: MenuShell.c /main/24 1999/07/08 16:49:59 vipin $"
- #include <Xm/LabelP.h>
- #include <Xm/LayoutT.h>
- #include <Xm/MenuT.h>
-+#include <Xm/ScreenP.h>
- #include <Xm/SpecRenderT.h>
- #include <Xm/TraitP.h>
- #include <Xm/TransltnsP.h>
-@@ -913,7 +914,9 @@ ForceMenuPaneOnScreen(
-         register Position *y )
- {
-    Position rightEdgeOfMenu, bottomEdgeOfMenu;
--   Dimension dispWidth, dispHeight;
-+   Position dispX, dispY, dispMaxX, dispMaxY;
-+   Position x1 = *x;
-+   Position y1 = *y;
-    Widget pulldown_button = RC_CascadeBtn(rowcol);
-    Dimension RowColBorderWidth = rowcol->core.border_width << 1;
-    Dimension CascadeBorderWidth = 0;
-@@ -925,8 +928,18 @@ ForceMenuPaneOnScreen(
- 
-    rightEdgeOfMenu = *x + RowColBorderWidth + rowcol->core.width;
-    bottomEdgeOfMenu = *y + RowColBorderWidth + rowcol->core.height;
--   dispWidth = WidthOfScreen (XtScreen(rowcol));
--   dispHeight = HeightOfScreen (XtScreen(rowcol));
-+#ifdef HAVE_LIBXINERAMA
-+   if (pulldown_button)
-+   {
-+       /* If we have a pulldown button, use the location of that button to
-+        * keep the menu on the same monitor as that button so that the menu
-+        * doesn't eventually end up on another monitor entirely.
-+        */
-+       XtTranslateCoords((Widget) pulldown_button,
-+                          XtX(pulldown_button), XtY(pulldown_button), &x1, &y1);
-+   }
-+#endif
-+   _XmScreenGetBoundariesAtpoint(XtScreen(rowcol), x1, y1, &dispX, &dispY, &dispMaxX, &dispMaxY);
- 
-    /*
-     * For OPTION menus, if the submenu is [partially] offscreen, offset it
-@@ -937,9 +950,9 @@ ForceMenuPaneOnScreen(
-        (RC_Type(XtParent(pulldown_button)) == XmMENU_OPTION))
-    {
-       Position old_x = *x;
--      if (bottomEdgeOfMenu >= (Position)dispHeight)
-+      if (bottomEdgeOfMenu >= dispMaxY)
-       {
--          *y = dispHeight - rowcol->core.height - RowColBorderWidth - 1;
-+          *y = dispMaxY - rowcol->core.height - RowColBorderWidth - 1;
-           if (LayoutIsRtoLM(rowcol))
-              *x = old_x - rowcol->core.width - (rowcol->core.border_width <<1);
-           else
-@@ -948,9 +961,9 @@ ForceMenuPaneOnScreen(
-           bottomEdgeOfMenu = *y + RowColBorderWidth + rowcol->core.height;
-       }
- 
--      if (*y < 0)
-+      if (*y < dispY)
-       {
--          *y = 0;
-+          *y = dispY;
- 
- 	  /* Consider CascadeBtn as well as RowCol width to allow multi
- 	   * column RowColumn
-@@ -963,13 +976,13 @@ ForceMenuPaneOnScreen(
-           bottomEdgeOfMenu = *y + RowColBorderWidth + rowcol->core.height;
-       }
- 
--      if (rightEdgeOfMenu >= (Position)dispWidth)
-+      if (rightEdgeOfMenu >= dispMaxX)
-       {
- 	  *x = old_x - rowcol->core.width + RowColBorderWidth;
- 	  rightEdgeOfMenu = *x + RowColBorderWidth + rowcol->core.width;
-       }
- 
--      if (*x < 0)
-+      if (*x < dispX)
-       {
-           if (LayoutIsRtoLM(rowcol))
-              *x = old_x + pulldown_button->core.width + CascadeBorderWidth;
-@@ -982,10 +995,10 @@ ForceMenuPaneOnScreen(
-    /*
-     * If the submenu is offscreen force it completely on.
-     */
--   if (rightEdgeOfMenu >= (Position)dispWidth)
--       *x -= (rightEdgeOfMenu - dispWidth + 1);
-+   if (rightEdgeOfMenu >= dispMaxX)
-+       *x -= (rightEdgeOfMenu - dispMaxX + 1);
- 
--   if (bottomEdgeOfMenu >= (Position)dispHeight)
-+   if (bottomEdgeOfMenu >= dispMaxY)
-    {
-       if (pulldown_button && XtParent(pulldown_button) &&
- 	  (RC_Type(XtParent(pulldown_button)) == XmMENU_BAR))
-@@ -1005,15 +1018,15 @@ ForceMenuPaneOnScreen(
- 	     *y = y_temp;
-       }
-       else
--	  *y -= (bottomEdgeOfMenu - dispHeight + 1);
-+	  *y -= (bottomEdgeOfMenu - dispMaxY + 1);
-    }
- 
-    /* Make sure that the top left corner os on screen! */
--   if (*x < 0)
--       *x = 0;
-+   if (*x < dispX)
-+       *x = dispX;
- 
--   if (*y < 0)
--       *y = 0;
-+   if (*y < dispY)
-+       *y = dispY;
- }
- 
- /*
--- 
-2.49.0
-

diff --git a/0004-Xm-DropDown-Use-Xinerama-for-placement.patch b/0004-Xm-DropDown-Use-Xinerama-for-placement.patch
deleted file mode 100644
index b65e7fc..0000000
--- a/0004-Xm-DropDown-Use-Xinerama-for-placement.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 0e834a8d37dfabd8fa4463f83c132478e50f8337 Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Thu, 21 Nov 2024 14:11:11 +0100
-Subject: [PATCH 4/7] Xm/DropDown: Use Xinerama for placement
-
-Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
----
- lib/Xm/DropDown.c | 18 +++++++++---------
- 1 file changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/lib/Xm/DropDown.c b/lib/Xm/DropDown.c
-index a25d1092..665e0e26 100644
---- a/lib/Xm/DropDown.c
-+++ b/lib/Xm/DropDown.c
-@@ -13,7 +13,7 @@
- #include "XmI.h"
- #include <Xm/VaSimpleP.h>
- #include <Xm/DrawP.h>
--
-+#include <Xm/ScreenP.h>
- #include <Xm/DropDownP.h>
- 
- #include <X11/Shell.h>
-@@ -2169,8 +2169,9 @@ PopupList(Widget w)
-     XmDropDownWidget cbw = (XmDropDownWidget) w;
-     Widget shell = XmDropDown_popup_shell(cbw);
-     Position x, y, temp;
-+    Position dispX, dispY, dispMaxX, dispMaxY;
-     Dimension width;
--    int ret, scr_width, scr_height;
-+    int ret;
-     Arg args[10];
-     Cardinal num_args;
- 
-@@ -2209,21 +2210,20 @@ PopupList(Widget w)
-      *
-      * Lets start by getting the width and height of the screen.
-      */
--    scr_width = WidthOfScreen(XtScreen(shell));
--    scr_height = HeightOfScreen(XtScreen(shell));
-+    _XmScreenGetBoundariesAtpoint(XtScreen(shell), x, y, &dispX, &dispY, &dispMaxX, &dispMaxY);
- 
--    if( (int)(y + XtHeight(shell)) > scr_height )
-+    if( (int)(y + XtHeight(shell)) > dispMaxY )
-     {
- 	Position tmp;
- 	XtTranslateCoords(w, 0, 0, &tmp, &y);
- 	y -= ((int)XtHeight(shell));
-     }
--    if( y < 0 ) y = 0;
--    if( (int)(x + width) > scr_width )
-+    if( y < dispY ) y = dispY;
-+    if( (int)(x + width) > dispMaxX )
-     {
--	x = scr_width - ((int)width);
-+	x = dispMaxX - ((int)width);
-     }
--    if( x < 0 ) x = 0;
-+    if( x < dispX ) x = dispX;
- 
-     XtSetArg(args[num_args], XmNx, x); num_args++;
-     XtSetArg(args[num_args], XmNy, y); num_args++;
--- 
-2.49.0
-

diff --git a/0005-Xm-RCMenu-Use-Xinerama-for-placement.patch b/0005-Xm-RCMenu-Use-Xinerama-for-placement.patch
deleted file mode 100644
index a3f26fa..0000000
--- a/0005-Xm-RCMenu-Use-Xinerama-for-placement.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 3ef8c038b06f136a6abe7cfa23afec4d514af4f0 Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Thu, 21 Nov 2024 14:17:21 +0100
-Subject: [PATCH 5/7] Xm/RCMenu: Use Xinerama for placement
-
-Please note that when building with Xinerama enabled, the placement
-logic changes, as the original location of the CascadeButton is not
-taken into account when relocating the RCMenu widget.
-
-Reason for that is because I reckon the current code is not correct, as
-it moves the RCMenu way off the screen, yet it doesn't show without
-Xinerama because there is another check later to make sure the widget
-remains on the overall screen, hence hiding the problem.
-
-With Xinerama, that breaks in-between monitors and the RCMenu ends up
-completely misplaced, which is why I think the code was wrong, yet the
-logic is preserved when building without XINERAMA support to preserve
-the current behavior if needed.
-
-Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
----
- lib/Xm/RCMenu.c | 18 ++++++++++++++----
- 1 file changed, 14 insertions(+), 4 deletions(-)
-
-diff --git a/lib/Xm/RCMenu.c b/lib/Xm/RCMenu.c
-index 2c698d4f..abd7a70e 100644
---- a/lib/Xm/RCMenu.c
-+++ b/lib/Xm/RCMenu.c
-@@ -537,6 +537,7 @@ LocatePulldown(
-         XEvent *event )
- {   
-     Position x, y, x1, y1;
-+    Position dispX, dispMaxX;
- 
-     if (root == NULL) 
-       return;
-@@ -617,17 +618,26 @@ LocatePulldown(
-      * window co-ords.
-      */
-     XtTranslateCoords( (Widget) p, x, y, &x1, &y1);
-+    _XmScreenGetBoundariesAtpoint(XtScreen(m), x1, y1, &dispX, NULL, &dispMaxX, NULL);
- 
-     /* Oh no!  we're going off screen.  Let's try and do 
-        something reasonable.  We're only doing the cascade
-        off a menu case for now.  (CR 6421) */
--    if ((x1 + XtWidth(m)) > WidthOfScreen(XtScreen(m))) {
-+    if ((x1 + XtWidth(m)) > dispMaxX) {
-       if (!IsOption(root) && (XmIsCascadeButton(p) || XmIsCascadeButtonGadget(p))) {
--	x1 -= XtWidth(m) + x - XtX(p);
-+	x1 -= XtWidth(m) + x;
-+#ifndef HAVE_LIBXINERAMA
-+	/* XXX: I don't think it's correct, but that's what the original code was doing… */
-+	x1 -= XtX(p);
-+#endif /* not HAVE_LIBXINERAMA */
-       }
--    } else if (x1 < 0) { /* R to L case */
-+    } else if (x1 < dispX) { /* R to L case */
-       if (!IsOption(root) && (XmIsCascadeButton(p) || XmIsCascadeButtonGadget(p))) {
--	x1 += XtWidth(m) + x - XtX(p);
-+	x1 += XtWidth(m) + x;
-+#ifndef HAVE_LIBXINERAMA
-+	/* XXX: I don't think it's correct, but that's what the original code was doing… */
-+	x1 -= XtX(p);
-+#endif /* not HAVE_LIBXINERAMA */
-       }
-     }
- 
--- 
-2.49.0
-

diff --git a/0006-Xm-Tooltip-Use-Xinerama-for-placement.patch b/0006-Xm-Tooltip-Use-Xinerama-for-placement.patch
deleted file mode 100644
index 1387787..0000000
--- a/0006-Xm-Tooltip-Use-Xinerama-for-placement.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From f2bc91c789ed33fc1e0a31d167a6a7bc0383429e Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Thu, 21 Nov 2024 14:24:30 +0100
-Subject: [PATCH 6/7] Xm/Tooltip: Use Xinerama for placement
-
-Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
----
- lib/Xm/ToolTip.c | 13 +++++++++----
- 1 file changed, 9 insertions(+), 4 deletions(-)
-
-diff --git a/lib/Xm/ToolTip.c b/lib/Xm/ToolTip.c
-index dc65071d..fdd32221 100644
---- a/lib/Xm/ToolTip.c
-+++ b/lib/Xm/ToolTip.c
-@@ -29,6 +29,7 @@
- #include <Xm/VendorSEP.h>
- #include <Xm/GadgetP.h>
- #include <Xm/SlideC.h>
-+#include <Xm/ScreenP.h>
- #include <Xm/TraitP.h>
- #include <Xm/ToolTipCT.h>
- #include <Xm/ToolTipT.h>
-@@ -153,6 +154,8 @@ ToolTipPost (XtPointer client_data,
-    XtWidgetGeometry geo;
-    Position destX,
-      destY;
-+   Position dispMaxX,
-+     dispMaxY;
- 
-    XmToolTipConfigTrait ttp; /* ToolTip pointer */
- 
-@@ -197,12 +200,14 @@ ToolTipPost (XtPointer client_data,
-       Don't let the tip be off the right/bottom of the screen
-     */
-    destX = rx + (XmIsGadget (w) ? XtX (w) : 0) - x + XtWidth (w) / 2;
--   if (destX + geo.width > WidthOfScreen (XtScreen (w)))
-+   destY = ry + (XmIsGadget (w) ? XtY (w) : 0) - y + XtHeight (w);
-+   _XmScreenGetBoundariesAtpoint(XtScreen(w), destX, destY, NULL, NULL, &dispMaxX, &dispMaxY);
-+
-+   if (destX + geo.width > dispMaxX)
-    {
--      destX = WidthOfScreen (XtScreen (w)) - geo.width;
-+      destX = dispMaxX - geo.width;
-    }
--   destY = ry + (XmIsGadget (w) ? XtY (w) : 0) - y + XtHeight (w);
--   if (destY + geo.height > HeightOfScreen (XtScreen (w)))
-+   if (destY + geo.height > dispMaxY)
-    {
-       destY = ry + (XmIsGadget (w) ? XtY (w) : 0) - y - geo.height;
-    }
--- 
-2.49.0
-

diff --git a/0007-Xm-ComboBox-Use-Xinerama-for-placement.patch b/0007-Xm-ComboBox-Use-Xinerama-for-placement.patch
deleted file mode 100644
index 772f930..0000000
--- a/0007-Xm-ComboBox-Use-Xinerama-for-placement.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From eb193dce2b7f8ce80004d14ccf64c53552ae103c Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Thu, 21 Nov 2024 14:30:23 +0100
-Subject: [PATCH 7/7] Xm/ComboBox: Use Xinerama for placement
-
-Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
----
- lib/Xm/ComboBox.c | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/lib/Xm/ComboBox.c b/lib/Xm/ComboBox.c
-index 1472e458..0f49de50 100644
---- a/lib/Xm/ComboBox.c
-+++ b/lib/Xm/ComboBox.c
-@@ -43,6 +43,7 @@
- #include <Xm/DisplayP.h>
- #include <Xm/DrawP.h>
- #include <Xm/GrabShellP.h>
-+#include <Xm/ScreenP.h>
- #include <Xm/List.h>
- #include <Xm/TextF.h>
- #include <Xm/TraitP.h>
-@@ -1791,6 +1792,7 @@ CBDropDownList(Widget    widget,
- 	  Cardinal n;
- 	  int tmp;
- 	  Position root_x, root_y, shell_x, shell_y;
-+	  Position dispX, dispY, dispMaxX, dispMaxY;
- 	  Dimension shell_width;
- 
- 	  XtTranslateCoords((Widget)cb, XtX(cb), XtY(cb), &root_x, &root_y);
-@@ -1801,12 +1803,13 @@ CBDropDownList(Widget    widget,
- 	    XtY(cb); 
- 	
- 	  /* Try to position the shell on the screen. */
--	  tmp = WidthOfScreen(XtScreen(cb)) - XtWidth(CB_ListShell(cb));
-+	  _XmScreenGetBoundariesAtpoint(XtScreen(cb), shell_x, shell_y, &dispX, &dispY, &dispMaxX, &dispMaxY);
-+	  tmp = dispMaxX - XtWidth(CB_ListShell(cb));
- 	  tmp = MIN(tmp, shell_x);
--	  shell_x = MAX(0, tmp);
--	  tmp = HeightOfScreen(XtScreen(cb)) - XtHeight(CB_ListShell(cb));
-+	  shell_x = MAX(dispX, tmp);
-+	  tmp = dispMaxY - XtHeight(CB_ListShell(cb));
- 	  tmp = MIN(tmp, shell_y);
--	  shell_y = MAX(0, tmp);
-+	  shell_y = MAX(dispY, tmp);
- 
- 	  /* CR 8446: The shell width may have changed unexpectedly. */
- 	  shell_width = XtWidth(cb) - 2 * CB_HighlightThickness(cb);
--- 
-2.49.0
-

diff --git a/includes.patch b/includes.patch
deleted file mode 100644
index 0608941..0000000
--- a/includes.patch
+++ /dev/null
@@ -1,72 +0,0 @@
---- motif-2.3.8/lib/Xm/XpmCrBufFrI.c~	2016-03-15 21:10:08.000000000 -0500
-+++ motif-2.3.8/lib/Xm/XpmCrBufFrI.c	2025-08-14 14:07:13.543514735 -0500
-@@ -39,7 +39,7 @@
- #ifdef HAVE_CONFIG_H
- #include <config.h>
- #endif
--
-+#include <string.h>
- 
- /* October 2004, source code review by Thomas Biege <thomas@suse.de> */
- 
---- motif-2.3.8/lib/Xm/XpmWrFFrI.c~	2016-03-15 21:10:08.000000000 -0500
-+++ motif-2.3.8/lib/Xm/XpmWrFFrI.c	2025-08-14 14:10:27.307965260 -0500
-@@ -37,6 +37,7 @@
- #include <config.h>
- #endif
- 
-+#include <string.h>
- 
- /* October 2004, source code review by Thomas Biege <thomas@suse.de> */
- 
---- motif-2.3.8/lib/Xm/Xpmrgb.c~	2016-03-15 21:10:08.000000000 -0500
-+++ motif-2.3.8/lib/Xm/Xpmrgb.c	2025-08-14 14:13:47.593686683 -0500
-@@ -50,6 +50,7 @@
- 
- #include "XpmI.h"
- #include <ctype.h>
-+#include <string.h>
- 
- #ifndef FOR_MSW				/* normal part first, MSW part at
- 					 * the end, (huge ifdef!) */
---- motif-2.3.8/lib/Xm/XpmCrDatFrI.c~	2016-03-15 21:10:08.000000000 -0500
-+++ motif-2.3.8/lib/Xm/XpmCrDatFrI.c	2025-08-14 14:14:21.697225831 -0500
-@@ -37,6 +37,7 @@
- #include <config.h>
- #endif
- 
-+#include <string.h>
- 
- /* October 2004, source code review by Thomas Biege <thomas@suse.de> */
- 
---- motif-2.3.8/lib/Xm/XpmRdFToI.c~	2016-03-15 21:10:08.000000000 -0500
-+++ motif-2.3.8/lib/Xm/XpmRdFToI.c	2025-08-14 14:16:09.040737658 -0500
-@@ -37,6 +37,7 @@
- #include <config.h>
- #endif
- 
-+#include <string.h>
- 
- /* October 2004, source code review by Thomas Biege <thomas@suse.de> */
- 
---- motif-2.3.8/lib/Xm/Xpmcreate.c~	2016-03-15 21:10:08.000000000 -0500
-+++ motif-2.3.8/lib/Xm/Xpmcreate.c	2025-08-14 14:17:00.651339098 -0500
-@@ -43,6 +43,7 @@
- #include <config.h>
- #endif
- 
-+#include <string.h>
- 
- /* October 2004, source code review by Thomas Biege <thomas@suse.de> */
- 
---- motif-2.3.8/lib/Xm/XpmI.h~	2017-08-16 19:38:43.000000000 -0500
-+++ motif-2.3.8/lib/Xm/XpmI.h	2025-08-14 14:20:19.913720840 -0500
-@@ -28,6 +28,8 @@
- extern "C" {
- #endif
- 
-+#include <string.h>
-+
- /* Xpm internal symbols are prefixed with _Xm */
- 
- #define xpmParseData _XmxpmParseData

diff --git a/motif-2.3.4-Fix-issues-with-Werror-format-security.patch b/motif-2.3.4-Fix-issues-with-Werror-format-security.patch
deleted file mode 100644
index f0ff860..0000000
--- a/motif-2.3.4-Fix-issues-with-Werror-format-security.patch
+++ /dev/null
@@ -1,815 +0,0 @@
-From 4783fb4cec8624311bb87b2eb4a2ac94a5c7d849 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Petr=20=C5=A0abata?= <contyk@redhat.com>
-Date: Thu, 8 Jun 2017 12:12:04 +0200
-Subject: [PATCH] Fix issues with -Werror=format-security
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Petr Šabata <contyk@redhat.com>
----
- lib/Mrm/Mrmhier.c       |   4 +-
- lib/Mrm/Mrmicon.c       |   4 +-
- lib/Mrm/Mrmlread.c      |   2 +-
- lib/Mrm/Mrmwcrw.c       |   4 +-
- tools/wml/wmldbcreate.c |   2 +-
- tools/wml/wmlouth.c     | 128 ++++++++++++++++++++++++------------------------
- tools/wml/wmloutkey.c   |  10 ++--
- tools/wml/wmloutmm.c    |  16 +++---
- tools/wml/wmlresolve.c  |  26 +++++-----
- 9 files changed, 98 insertions(+), 98 deletions(-)
-
-diff --git a/lib/Mrm/Mrmhier.c b/lib/Mrm/Mrmhier.c
-index 2712742..2a8703c 100644
---- a/lib/Mrm/Mrmhier.c
-+++ b/lib/Mrm/Mrmhier.c
-@@ -264,10 +264,10 @@ Urm__OpenHierarchy (MrmCount			num_files,
- 	    case MrmSUCCESS:
- 	      break;
- 	    case MrmNOT_VALID:
--	      sprintf (err_stg, _MrmMMsg_0113);
-+	      sprintf (err_stg, "%s", _MrmMMsg_0113);
- 	      break;
- 	    default:
--	      sprintf (err_stg, _MrmMMsg_0114);
-+	      sprintf (err_stg, "%s", _MrmMMsg_0114);
- 	      break;
- 	    }
- 	}
-diff --git a/lib/Mrm/Mrmicon.c b/lib/Mrm/Mrmicon.c
-index 95d4086..191e2d2 100644
---- a/lib/Mrm/Mrmicon.c
-+++ b/lib/Mrm/Mrmicon.c
-@@ -1176,7 +1176,7 @@ Urm__RealizeColorTable (Screen			*screen,
- 		}
- 		break;
- 	      default:
--		sprintf(err_msg, _MrmMMsg_0040);
-+		sprintf(err_msg, "%s", _MrmMMsg_0040);
- 		return Urm__UT_Error ("Urm__RelizeColorTable",
- 				      err_msg, NULL, NULL, MrmFAILURE) ;
- 	      }
-@@ -1252,7 +1252,7 @@ Urm__RealizeColorTable (Screen			*screen,
- 	      break;
- 	    default:
- 	      result = MrmFAILURE;
--	      sprintf (err_msg, _MrmMMsg_0040);
-+	      sprintf (err_msg, "%s", _MrmMMsg_0040);
- 	      Urm__UT_Error ("Urm__RelizeColorTable",
- 			     err_msg, NULL, NULL, MrmFAILURE) ;
- 	    }
-diff --git a/lib/Mrm/Mrmlread.c b/lib/Mrm/Mrmlread.c
-index c2fd94c..be433a3 100644
---- a/lib/Mrm/Mrmlread.c
-+++ b/lib/Mrm/Mrmlread.c
-@@ -698,7 +698,7 @@ MrmFetchColorLiteral (MrmHierarchy                hierarchy_id,
- 	 XBlackPixelOfScreen(XDefaultScreenOfDisplay(display)));
-       break;
-     default:
--      sprintf(err_msg, _MrmMMsg_0040);
-+      sprintf(err_msg, "%s", _MrmMMsg_0040);
-       result = Urm__UT_Error ("MrmFetchColorLiteral",
- 			      err_msg, NULL, NULL, MrmFAILURE) ;
-       _MrmAppUnlock(app);
-diff --git a/lib/Mrm/Mrmwcrw.c b/lib/Mrm/Mrmwcrw.c
-index fe3db52..3c5857f 100644
---- a/lib/Mrm/Mrmwcrw.c
-+++ b/lib/Mrm/Mrmwcrw.c
-@@ -1390,7 +1390,7 @@ Urm__CW_CreateArglist (Widget			parent,
- 			}
- 		      break;
- 		    default:
--		      sprintf (err_msg, _MrmMMsg_0040);
-+		      sprintf (err_msg, "%s", _MrmMMsg_0040);
- 		      result = Urm__UT_Error ("Urm__CW_ConvertValue",
- 					      err_msg, NULL, NULL, MrmFAILURE) ;
- 		    };
-@@ -2426,7 +2426,7 @@ Urm__CW_ConvertValue (Widget			parent,
- 	    }
- 	  break;
- 	default:
--	  sprintf(err_msg, _MrmMMsg_0040);
-+	  sprintf(err_msg, "%s", _MrmMMsg_0040);
- 	  return Urm__UT_Error ("Urm__CW_ConvertValue",
- 				err_msg, NULL, NULL, MrmFAILURE) ;
- 	};
-diff --git a/tools/wml/wmldbcreate.c b/tools/wml/wmldbcreate.c
-index 07c0a3c..6de585a 100644
---- a/tools/wml/wmldbcreate.c
-+++ b/tools/wml/wmldbcreate.c
-@@ -425,7 +425,7 @@ int	table_id;
- 		{
- 		fprintf (afile, "%d, ", entry_vec[j]);
- 		}
--	    fprintf (afile, "\n");
-+	    fprintf (afile, "%s", "\n");
- 	    }
-         }
- }
-diff --git a/tools/wml/wmlouth.c b/tools/wml/wmlouth.c
-index d2330e3..a52843f 100644
---- a/tools/wml/wmlouth.c
-+++ b/tools/wml/wmlouth.c
-@@ -225,12 +225,12 @@ if ( outfil == (FILE *) NULL )
-     printf ("\nCouldn't open UilSymGen.h");
-     return;
-     }
--fprintf (outfil, canned_warn);
-+fprintf (outfil, "%s", canned_warn);
- 
- /*
-  * Write the sym_k..._object literals
-  */
--fprintf (outfil, canned1);
-+fprintf (outfil, "%s", canned1);
- for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
-     {
-     clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr;
-@@ -244,7 +244,7 @@ for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
- /*
-  * Define the sym_k_..._reason literals
-  */
--fprintf (outfil, canned3);
-+fprintf (outfil, "%s", canned3);
- for ( ndx=0 ; ndx<wml_obj_reason_ptr->cnt ; ndx++ )
-     {
-     resobj = (WmlResourceDefPtr) wml_obj_reason_ptr->hvec[ndx].objptr;
-@@ -258,7 +258,7 @@ for ( ndx=0 ; ndx<wml_obj_reason_ptr->cnt ; ndx++ )
- /*
-  * Define the sym_k_..._arg literals
-  */
--fprintf (outfil, canned4);
-+fprintf (outfil, "%s", canned4);
- for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
-     {
-     resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
-@@ -272,7 +272,7 @@ for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
- /*
-  * Define the sym_k_..._enumset structs and literals
-  */
--fprintf (outfil, canned5);
-+fprintf (outfil, "%s", canned5);
- for ( ndx=0 ; ndx<wml_obj_enumset_ptr->cnt ; ndx++ )
-     {
-     enumsetobj = (WmlEnumSetDefPtr) wml_obj_enumset_ptr->hvec[ndx].objptr;
-@@ -286,7 +286,7 @@ for ( ndx=0 ; ndx<wml_obj_enumset_ptr->cnt ; ndx++ )
- /*
-  * Define the sym_k_..._enumval literals
-  */
--fprintf (outfil, canned6);
-+fprintf (outfil, "%s", canned6);
- for ( ndx=0 ; ndx<wml_obj_enumval_ptr->cnt ; ndx++ )
-     {
-     enumvalobj = (WmlEnumValueDefPtr) wml_obj_enumval_ptr->hvec[ndx].objptr;
-@@ -301,7 +301,7 @@ for ( ndx=0 ; ndx<wml_obj_enumval_ptr->cnt ; ndx++ )
-  * Define the sym_k_..._charsize literals
-  * Define the sym_k_..._charset literals
-  */
--fprintf (outfil, canned7);
-+fprintf (outfil, "%s", canned7);
- for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
-     {
-     charsetobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr;
-@@ -315,7 +315,7 @@ for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
- /*
-  * Define the sym_k_..._child literals
-  */
--fprintf (outfil, canned8);
-+fprintf (outfil, "%s", canned8);
- for ( ndx=0 ; ndx<wml_obj_child_ptr->cnt ; ndx++ )
-     {
-     childobj = (WmlChildDefPtr) wml_obj_child_ptr->hvec[ndx].objptr;
-@@ -379,12 +379,12 @@ if ( outfil == (FILE *) NULL )
-     printf ("\nCouldn't open UilSymChCL.h");
-     return;
-     }
--fprintf (outfil, canned_warn);
-+fprintf (outfil, "%s", canned_warn);
- 
- /*
-  * Create table entries, similar to writing sym_k...
-  */
--fprintf (outfil, canned1);
-+fprintf (outfil, "%s", canned1);
- for ( ndx=0 ; ndx<wml_obj_child_ptr->cnt ; ndx++ )
-     {
-     childobj = (WmlChildDefPtr) wml_obj_child_ptr->hvec[ndx].objptr;
-@@ -392,7 +392,7 @@ for ( ndx=0 ; ndx<wml_obj_child_ptr->cnt ; ndx++ )
-     fprintf (outfil, "    sym_k_%s_object,\n",
- 	     classobj->tkname);
-     }
--fprintf (outfil, canned1a);
-+fprintf (outfil, "%s", canned1a);
- 
- /*
-  * close the output file
-@@ -446,12 +446,12 @@ if ( outfil == (FILE *) NULL )
-     printf ("\nCouldn't open UilSymArTy.h");
-     return;
-     }
--fprintf (outfil, canned_warn);
-+fprintf (outfil, "%s", canned_warn);
- 
- /*
-  * Create table entries, similar to writing sym_k...
-  */
--fprintf (outfil, canned1);
-+fprintf (outfil, "%s", canned1);
- for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
-     {
-     resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
-@@ -459,7 +459,7 @@ for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
-     fprintf (outfil, "    sym_k_%s_value,\n",
- 	     datobj->tkname);
-     }
--fprintf (outfil, canned1a);
-+fprintf (outfil, "%s", canned1a);
- 
- /*
-  * close the output file
-@@ -509,19 +509,19 @@ if ( outfil == (FILE *) NULL )
-     printf ("\nCouldn't open UilSymRArg.h");
-     return;
-     }
--fprintf (outfil, canned_warn);
-+fprintf (outfil, "%s", canned_warn);
- 
- /*
-  * Create table entries, similar to writing sym_k...
-  */
--fprintf (outfil, canned1);
-+fprintf (outfil, "%s", canned1);
- for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
-     {
-     resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
-     fprintf (outfil, "    %d,\n",
- 	     resobj->related_code);
-     }
--fprintf (outfil, canned1a);
-+fprintf (outfil, "%s", canned1a);
- 
- /*
-  * close the output file
-@@ -621,12 +621,12 @@ if ( outfil == (FILE *) NULL )
-     printf ("\nCouldn't open UilUrmClas.h");
-     return;
-     }
--fprintf (outfil, canned_warn);
-+fprintf (outfil, "%s", canned_warn);
- 
- /*
-  * Write entries for widgets
-  */
--fprintf (outfil, canned1);
-+fprintf (outfil, "%s", canned1);
- for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
-     {
-     clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr;
-@@ -637,7 +637,7 @@ for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
-     else 
- 	fprintf (outfil, "  \"%s\",\t\n", synobj->convfunc);
-     }
--fprintf (outfil, canned2);
-+fprintf (outfil, "%s", canned2);
- 
- /*
-  * Write entries for gadget variants of widget classes
-@@ -661,7 +661,7 @@ for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
- 		     synobj->name);
- 	}
-     }
--fprintf (outfil, canned3);
-+fprintf (outfil, "%s", canned3);
- 
- /*
-  * Write entries for non-dialog widgets
-@@ -685,7 +685,7 @@ for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
- 		     synobj->name);
- 	}
-     }
--fprintf (outfil, canned4);
-+fprintf (outfil, "%s", canned4);
- 
- /*
-  * Write entries for the resource a widget's controls map to
-@@ -701,7 +701,7 @@ for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
-     else
- 	fprintf (outfil, "  sym_k_%s_arg,\n", mapresobj->tkname);
-     }
--fprintf (outfil, canned5);
-+fprintf (outfil, "%s", canned5);
- 
- /*
-  * Write entries for arguments
-@@ -714,7 +714,7 @@ for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
-     fprintf (outfil, "  %s,\n",
- 	     synres->resliteral);
-     }
--fprintf (outfil, canned6);
-+fprintf (outfil, "%s", canned6);
- 
- /*
-  * Write entries for reasons
-@@ -727,7 +727,7 @@ for ( ndx=0 ; ndx<wml_obj_reason_ptr->cnt ; ndx++ )
-     fprintf (outfil, "  %s,\n",
- 	     synres->resliteral);
-     }
--fprintf (outfil, canned7);
-+fprintf (outfil, "%s", canned7);
- 
- /*
-  * close the output file
-@@ -781,13 +781,13 @@ if ( outfil == (FILE *) NULL )
-     printf ("\nCouldn't open UilConst.h");
-     return;
-     }
--fprintf (outfil, canned_warn);
-+fprintf (outfil, "%s", canned_warn);
- 
- /*
-  * Process the arguments in code order. We start with 1, and write out
-  * the mask after processing 8 codes.
-  */
--fprintf (outfil, canned1);
-+fprintf (outfil, "%s", canned1);
- strcpy (maskbuf, "0");
- for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
-     {
-@@ -805,7 +805,7 @@ for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
-     }
- if ( bitno != 8 )
-     fprintf (outfil, "%s", maskbuf);
--fprintf (outfil, canned1a);
-+fprintf (outfil, "%s", canned1a);
- 
- /*
-  * close the output file
-@@ -878,8 +878,8 @@ if ( outfil == (FILE *) NULL )
-     printf ("\nCouldn't open UilSymReas.h");
-     return;
-     }
--fprintf (outfil, canned_warn);
--fprintf (outfil, canned1);
-+fprintf (outfil, "%s", canned_warn);
-+fprintf (outfil, "%s", canned1);
- 
- /*
-  * Generate the bit vectors for each class. Outer loop on the reason code,
-@@ -919,19 +919,19 @@ for ( resndx=0 ; resndx<wml_obj_reason_ptr->cnt ; resndx++ )
-     if ( itemno != 0 )
- 	fprintf (outfil, "%s 0};\n", maskbuf);
-     else
--	fprintf (outfil, "};\n");
-+	fprintf (outfil, "%s", "};\n");
-     }
- 
- /*
-  * Write the vector of vectors.
-  */
--fprintf (outfil, canned2);
-+fprintf (outfil, "%s", canned2);
- for ( resndx=0 ; resndx<wml_obj_reason_ptr->cnt ; resndx++ )
-     {
-     resobj = (WmlResourceDefPtr) wml_obj_reason_ptr->hvec[resndx].objptr;
-     fprintf (outfil, "  reason_class_vec%d,\n", resobj->sym_code);
-     }
--fprintf (outfil, canned3);
-+fprintf (outfil, "%s", canned3);
- 
- /*
-  * close the output file
-@@ -1004,8 +1004,8 @@ if ( outfil == (FILE *) NULL )
-     printf ("\nCouldn't open UilSymArTa.h");
-     return;
-     }
--fprintf (outfil, canned_warn);
--fprintf (outfil, canned1);
-+fprintf (outfil, "%s", canned_warn);
-+fprintf (outfil, "%s", canned1);
- 
- /*
-  * Generate the bit vectors for each class. Outer loop on the argument code,
-@@ -1045,19 +1045,19 @@ for ( resndx=0 ; resndx<wml_obj_arg_ptr->cnt ; resndx++ )
-     if ( itemno != 0 )
- 	fprintf (outfil, "%s 0};\n", maskbuf);
-     else
--	fprintf (outfil, "};\n");
-+	fprintf (outfil, "%s", "};\n");
-     }
- 
- /*
-  * Write the vector of vectors.
-  */
--fprintf (outfil, canned2);
-+fprintf (outfil, "%s", canned2);
- for ( resndx=0 ; resndx<wml_obj_arg_ptr->cnt ; resndx++ )
-     {
-     resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[resndx].objptr;
-     fprintf (outfil, "  arg_class_vec%d,\n", resobj->sym_code);
-     }
--fprintf (outfil, canned3);
-+fprintf (outfil, "%s", canned3);
- 
- /*
-  * close the output file
-@@ -1129,8 +1129,8 @@ if ( outfil == (FILE *) NULL )
-     printf ("\nCouldn't open UilSymChTa.h");
-     return;
-     }
--fprintf (outfil, canned_warn);
--fprintf (outfil, canned1);
-+fprintf (outfil, "%s", canned_warn);
-+fprintf (outfil, "%s", canned1);
- 
- /*
-  * Generate the bit vectors for each class. Outer loop on the child code,
-@@ -1168,19 +1168,19 @@ for ( childndx=0 ; childndx<wml_obj_child_ptr->cnt ; childndx++ )
-     if ( itemno != 0 )
- 	fprintf (outfil, "%s 0};\n", maskbuf);
-     else
--	fprintf (outfil, "};\n");
-+	fprintf (outfil, "%s", "};\n");
-     }
- 
- /*
-  * Write the vector of vectors.
-  */
--fprintf (outfil, canned2);
-+fprintf (outfil, "%s", canned2);
- for ( childndx=0 ; childndx<wml_obj_child_ptr->cnt ; childndx++ )
-     {
-     childobj = (WmlChildDefPtr) wml_obj_child_ptr->hvec[childndx].objptr;
-     fprintf (outfil, "  child_class_vec%d,\n", childobj->sym_code);
-     }
--fprintf (outfil, canned3);
-+fprintf (outfil, "%s", canned3);
- 
- /*
-  * close the output file
-@@ -1251,8 +1251,8 @@ if ( outfil == (FILE *) NULL )
-     printf ("\nCouldn't open UilSymCtl.h");
-     return;
-     }
--fprintf (outfil, canned_warn);
--fprintf (outfil, canned1);
-+fprintf (outfil, "%s", canned_warn);
-+fprintf (outfil, "%s", canned1);
- 
- /*
-  * Generate the bit vectors for each class. Outer loop on the class code,
-@@ -1290,19 +1290,19 @@ for ( ctlndx=0 ; ctlndx<wml_obj_class_ptr->cnt ; ctlndx++ )
-     if ( itemno != 0 )
- 	fprintf (outfil, "%s 0};\n", maskbuf);
-     else
--	fprintf (outfil, "};\n");
-+	fprintf (outfil, "%s", "};\n");
-     }
- 
- /*
-  * Write the vector of vectors.
-  */
--fprintf (outfil, canned2);
-+fprintf (outfil, "%s", canned2);
- for ( ctlndx=0 ; ctlndx<wml_obj_class_ptr->cnt ; ctlndx++ )
-     {
-     clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ctlndx].objptr;
-     fprintf (outfil, "  object_class_vec%d,\n", clsobj->sym_code);
-     }
--fprintf (outfil, canned3);
-+fprintf (outfil, "%s", canned3);
- 
- /*
-  * close the output file
-@@ -1438,7 +1438,7 @@ if ( outfil == (FILE *) NULL )
-     printf ("\nCouldn't open UilSymNam.h");
-     return;
-     }
--fprintf (outfil, canned_warn);
-+fprintf (outfil, "%s", canned_warn);
- 
- /*
-  * Write entries for widgets
-@@ -1517,7 +1517,7 @@ for ( ndx=0 ; ndx<wml_obj_child_ptr->cnt ; ndx++ )
-     fprintf (outfil, "    \"%s\",\n",
- 	     synch->name);
-     }
--fprintf (outfil, canned7);
-+fprintf (outfil, "%s", canned7);
- 
- /*
-  * close the output file
-@@ -1621,12 +1621,12 @@ if ( outfil == (FILE *) NULL )
-     printf ("\nCouldn't open UilSymEnum.h");
-     return;
-     }
--fprintf (outfil, canned_warn);
-+fprintf (outfil, "%s", canned_warn);
- 
- /*
-  * Generate the enumeration value vectors for each enumeration set.
-  */
--fprintf (outfil, canned1);
-+fprintf (outfil, "%s", canned1);
- for ( ndx=0 ; ndx<wml_obj_enumset_ptr->cnt ; ndx++ )
-     {
-     enumsetobj = (WmlEnumSetDefPtr) wml_obj_enumset_ptr->hvec[ndx].objptr;
-@@ -1637,13 +1637,13 @@ for ( ndx=0 ; ndx<wml_obj_enumset_ptr->cnt ; ndx++ )
- 	fprintf (outfil, "    %d,\n",
- 		 evobj->sym_code);
- 	}
--    fprintf (outfil, "  };\n");
-+    fprintf (outfil, "%s", "  };\n");
-     }
- 
- /*
-  * Generate the enumeration set tables
-  */
--fprintf (outfil, canned3);
-+fprintf (outfil, "%s", canned3);
- for ( ndx=0 ; ndx<wml_obj_enumset_ptr->cnt ; ndx++ )
-     {
-     enumsetobj = (WmlEnumSetDefPtr) wml_obj_enumset_ptr->hvec[ndx].objptr;
-@@ -1655,7 +1655,7 @@ for ( ndx=0 ; ndx<wml_obj_enumset_ptr->cnt ; ndx++ )
- /*
-  * Create enumset table entries for arguments, similar to writing sym_k...
-  */
--fprintf (outfil, canned4);
-+fprintf (outfil, "%s", canned4);
- for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
-     {
-     resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
-@@ -1669,13 +1669,13 @@ for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
- /*
-  * Create the enumval values table.
-  */
--fprintf (outfil, canned5);
-+fprintf (outfil, "%s", canned5);
- for ( ndx=0 ; ndx<wml_obj_enumval_ptr->cnt ; ndx++ )
-     {
-     evobj = (WmlEnumValueDefPtr) wml_obj_enumval_ptr->hvec[ndx].objptr;
-     fprintf (outfil, "  %s,\n", evobj->syndef->enumlit);
-     }
--fprintf (outfil, canned5a);
-+fprintf (outfil, "%s", canned5a);
- 
- /*
-  * close the output file
-@@ -1813,12 +1813,12 @@ if ( outfil == (FILE *) NULL )
-     printf ("\nCouldn't open UilSymCSet.h");
-     return;
-     }
--fprintf (outfil, canned_warn);
-+fprintf (outfil, "%s", canned_warn);
- 
- /*
-  * Generate the standards name table
-  */
--fprintf (outfil, canned1);
-+fprintf (outfil, "%s", canned1);
- for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
-     {
-     csobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr;
-@@ -1836,7 +1836,7 @@ for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
- /*
-  * Generate the writing direction table
-  */
--fprintf (outfil, canned2);
-+fprintf (outfil, "%s", canned2);
- for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
-     {
-     csobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr;
-@@ -1858,7 +1858,7 @@ for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
- /*
-  * Generate the parsing direction table
-  */
--fprintf (outfil, canned3);
-+fprintf (outfil, "%s", canned3);
- for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
-     {
-     csobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr;
-@@ -1880,7 +1880,7 @@ for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
- /*
-  * Generate the character size table
-  */
--fprintf (outfil, canned4);
-+fprintf (outfil, "%s", canned4);
- for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
-     {
-     csobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr;
-@@ -1906,7 +1906,7 @@ for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
- /*
-  * Generate the $LANG name recognition table
-  */
--fprintf (outfil, canned5);
-+fprintf (outfil, "%s", canned5);
- lang_max = 0;
- for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
-     {
-@@ -1936,7 +1936,7 @@ for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
- /*
-  * Generate the $LANG code lookup table, in upper case
-  */
--fprintf (outfil, canned6);
-+fprintf (outfil, "%s", canned6);
- for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
-     {
-     csobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr;
-diff --git a/tools/wml/wmloutkey.c b/tools/wml/wmloutkey.c
-index af42f22..4c14728 100644
---- a/tools/wml/wmloutkey.c
-+++ b/tools/wml/wmloutkey.c
-@@ -574,16 +574,16 @@ if ( outfil == NULL )
-     printf ("\nCouldn't open UilKeyTab.h");
-     return;
-     }
--fprintf (outfil, canned_warn);
-+fprintf (outfil, "%s", canned_warn);
- 
- /*
-  * Print the case sensitive and insensitive tables
-  */
--fprintf (outfil, canned1);
-+fprintf (outfil, "%s", canned1);
- wmlOutputUilKeyTabBody (outfil, wml_tok_sens_ptr, &maxlen, &maxkey);
- fprintf (outfil, canned2, maxlen, maxkey);
- wmlOutputUilKeyTabBody (outfil, wml_tok_insens_ptr, &maxlen, &maxkey);
--fprintf (outfil, canned3);
-+fprintf (outfil, "%s", canned3);
- 
- /*
-  * close the output file
-@@ -812,8 +812,8 @@ if ( outfil == NULL )
-     printf ("\nCouldn't open UilTokName.h");
-     return;
-     }
--fprintf (outfil, canned_warn);
--fprintf (outfil, canned1);
-+fprintf (outfil, "%s", canned_warn);
-+fprintf (outfil, "%s", canned1);
- 
- /*
-  * Print the token name entries
-diff --git a/tools/wml/wmloutmm.c b/tools/wml/wmloutmm.c
-index 84a97bb..dc8ec09 100644
---- a/tools/wml/wmloutmm.c
-+++ b/tools/wml/wmloutmm.c
-@@ -209,9 +209,9 @@ int			ctlndx;		/* to access ordered vector */
- /*
-  * Write out header information
-  */
--fprintf (outfil, canned1);
-+fprintf (outfil, "%s", canned1);
- fprintf (outfil, "%s\n", name);
--fprintf (outfil, canned2);
-+fprintf (outfil, "%s", canned2);
- 
- /*
-  * Alphabetize the controls, reason, and argument lists
-@@ -264,7 +264,7 @@ while ( ctlref != NULL )
- rsnndx = 0;
- ctlndx = 0;
- if ( mm_ctl_ptr->cnt == 0 )
--    fprintf (outfil, "No children are supported");
-+    fprintf (outfil, "%s", "No children are supported");
- while ( rsnndx<mm_rsn_ptr->cnt || ctlndx<mm_ctl_ptr->cnt )
-     {
-     if ( ctlndx < mm_ctl_ptr->cnt )
-@@ -275,7 +275,7 @@ while ( rsnndx<mm_rsn_ptr->cnt || ctlndx<mm_ctl_ptr->cnt )
- 	ctlndx += 1;
- 	}
-     else
--	fprintf (outfil, "@");
-+	fprintf (outfil, "%s", "@");
-     
-     if ( rsnndx < mm_rsn_ptr->cnt )
- 	{
-@@ -285,9 +285,9 @@ while ( rsnndx<mm_rsn_ptr->cnt || ctlndx<mm_ctl_ptr->cnt )
- 	rsnndx += 1;
- 	}
-     else
--	fprintf (outfil, "\n");
-+	fprintf (outfil, "%s", "\n");
-     }
--fprintf (outfil, canned3);
-+fprintf (outfil, "%s", canned3);
- 
- /*
-  * Write out the argument table
-@@ -319,11 +319,11 @@ while ( argndx < mm_arg_ptr->cnt )
- 			 argref->act_resource->syndef->dflt);
- 	}
- 	else
--	    fprintf (outfil, "  \n");
-+	    fprintf (outfil, "%s", "  \n");
-     }    
-     argndx += 1;
-     }
--fprintf (outfil, canned4);
-+fprintf (outfil, "%s", canned4);
- 
- }
- 
-diff --git a/tools/wml/wmlresolve.c b/tools/wml/wmlresolve.c
-index 464ef29..3b8642c 100644
---- a/tools/wml/wmlresolve.c
-+++ b/tools/wml/wmlresolve.c
-@@ -1340,7 +1340,7 @@ for ( ndx=0 ; ndx<wml_obj_allclass_ptr->cnt ; ndx++ )
- /*
-  * close the output file
-  */
--fprintf (outfil, "\n\n");
-+fprintf (outfil, "%s", "\n\n");
- printf ("\nCreated report file wml.report");
- fclose (outfil);
- 
-@@ -1369,14 +1369,14 @@ fprintf (outfil, "\n\n\nClass %s:", synobj->name);
- switch ( synobj->type )
-     {
-     case WmlClassTypeMetaclass:
--        fprintf (outfil, "\n  Type: Metaclass\t");
-+        fprintf (outfil, "%s", "\n  Type: Metaclass\t");
- 	if ( synobj->superclass != NULL )
- 	    fprintf (outfil, "Superclass: %s\t", synobj->superclass);
- 	if ( synobj->parentclass != NULL )
- 	    fprintf (outfil, "Parentclass: %s\t", synobj->parentclass);
- 	break;
-     case WmlClassTypeWidget:
--	fprintf (outfil, "\n  Type: Widget\t");
-+	fprintf (outfil, "%s", "\n  Type: Widget\t");
- 	if ( synobj->superclass != NULL )
- 	    fprintf (outfil, "Superclass: %s\t", synobj->superclass);
- 	if ( synobj->parentclass != NULL )
-@@ -1388,7 +1388,7 @@ switch ( synobj->type )
- 	    fprintf (outfil, "Convenience function: %s", synobj->convfunc);
- 	break;
-     case WmlClassTypeGadget:
--	fprintf (outfil, "\n  Type: Gadget\t");
-+	fprintf (outfil, "%s", "\n  Type: Gadget\t");
- 	if ( synobj->superclass != NULL )
- 	    fprintf (outfil, "Superclass: %s\t", synobj->superclass);
- 	if ( synobj->parentclass != NULL )
-@@ -1414,19 +1414,19 @@ if ( clsobj->nondialog != NULL )
-  * is intended to match the way resources are printed in the toolkit manual,
-  * so that checking is as easy as possible.
-  */
--fprintf (outfil, "\n  Arguments:");
-+fprintf (outfil, "%s", "\n  Arguments:");
- wmlResolvePrintClassArgs (outfil, clsobj);
- 
- /*
-  * Print the reasons valid in the class
-  */
--fprintf (outfil, "\n  Reasons:");
-+fprintf (outfil, "%s", "\n  Reasons:");
- wmlResolvePrintClassReasons (outfil, clsobj);
- 
- /*
-  * Print the controls valid in the class
-  */
--fprintf (outfil, "\n  Controls:");
-+fprintf (outfil, "%s", "\n  Controls:");
- for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
-     {
-     ctrlobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr;
-@@ -1512,10 +1512,10 @@ for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
-     switch ( resref->exclude )
- 	{
- 	case WmlAttributeTrue:
--	    fprintf (outfil, "\n\tExclude = True;");
-+	    fprintf (outfil, "%s", "\n\tExclude = True;");
- 	    break;
- 	case WmlAttributeFalse:
--	    fprintf (outfil, "\n\tExclude = False;");
-+	    fprintf (outfil, "%s", "\n\tExclude = False;");
- 	    break;
- 	}
-     if ( resref->dflt != NULL )
-@@ -1558,10 +1558,10 @@ if ( constr )
- 	switch ( resref->exclude )
- 	    {
- 	    case WmlAttributeTrue:
--	        fprintf (outfil, "\n\tExclude = True;");
-+	        fprintf (outfil, "%s", "\n\tExclude = True;");
- 		break;
- 	    case WmlAttributeFalse:
--		fprintf (outfil, "\n\tExclude = False;");
-+		fprintf (outfil, "%s", "\n\tExclude = False;");
- 		break;
- 	    }
- 	if ( resref->dflt != NULL )
-@@ -1632,10 +1632,10 @@ for ( ndx=0 ; ndx<wml_obj_reason_ptr->cnt ; ndx++ )
-     switch ( resref->exclude )
- 	{
- 	case WmlAttributeTrue:
--	    fprintf (outfil, "\n\tExclude = True;");
-+	    fprintf (outfil, "%s", "\n\tExclude = True;");
- 	    break;
- 	case WmlAttributeFalse:
--	    fprintf (outfil, "\n\tExclude = False;");
-+	    fprintf (outfil, "%s", "\n\tExclude = False;");
- 	    break;
- 	}
-     resobj->ref_ptr = NULL;
--- 
-2.13.0
-

diff --git a/motif-2.3.4-bindings.patch b/motif-2.3.4-bindings.patch
deleted file mode 100644
index baaa573..0000000
--- a/motif-2.3.4-bindings.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-diff -up openmotif-2.3.3/configure.ac.bindings openmotif-2.3.3/configure.ac
---- openmotif-2.3.3/configure.ac.bindings	2009-10-27 17:10:23.000000000 +0100
-+++ openmotif-2.3.3/configure.ac	2010-03-19 11:12:39.000000000 +0100
-@@ -185,7 +185,7 @@ AC_SUBST(MWMRCDIR)
- INCDIR="${includedir}/X11"
- AC_SUBST(INCDIR)
- 
--XMBINDDIR_FALLBACK="${libdir}/X11/bindings"
-+XMBINDDIR_FALLBACK="${datadir}/X11/bindings"
- AC_SUBST(XMBINDDIR_FALLBACK)
- 
- RM="rm -f"
-diff -up openmotif-2.3.3/doc/man/man3/VirtualBindings.3.bindings openmotif-2.3.3/doc/man/man3/VirtualBindings.3
---- openmotif-2.3.3/doc/man/man3/VirtualBindings.3.bindings	2005-07-20 13:47:21.000000000 +0200
-+++ openmotif-2.3.3/doc/man/man3/VirtualBindings.3	2010-03-19 11:11:42.000000000 +0100
-@@ -90,7 +90,7 @@ bindings contained in that file\&.
- If it has found no bindings, Motif next looks for the file
- \fBxmbind\&.alias\fP in the directory specified by the environment
- variable \fBXMBINDDIR\fP, if \fBXMBINDDIR\fP is set, or in the directory
--\fB/usr/lib/Xm/bindings\fP if \fBXMBINDDIR\fP is not set\&.
-+\fB/usr/share/X11/bindings\fP if \fBXMBINDDIR\fP is not set\&.
- If this file exists Motif searches it for a pathname associated with the
- vendor string or with the vendor string and vendor release\&.
- If it finds such a pathname and if that file exists, Motif loads the
-diff -up openmotif-2.3.3/lib/Xm/XmosP.h.bindings openmotif-2.3.3/lib/Xm/XmosP.h
---- openmotif-2.3.3/lib/Xm/XmosP.h.bindings	2002-06-17 22:36:30.000000000 +0200
-+++ openmotif-2.3.3/lib/Xm/XmosP.h	2010-03-19 11:11:42.000000000 +0100
-@@ -188,7 +188,7 @@ extern "C" {
- 
- #define XMBINDDIR "XMBINDDIR"
- #ifndef XMBINDDIR_FALLBACK
--#define XMBINDDIR_FALLBACK "/usr/lib/Xm/bindings"
-+#define XMBINDDIR_FALLBACK "/usr/share/X11/bindings"
- #endif
- #define XMBINDFILE "xmbind.alias"
- #define MOTIFBIND ".motifbind"

diff --git a/motif-2.3.4-mwmrc_dir.patch b/motif-2.3.4-mwmrc_dir.patch
deleted file mode 100644
index e6a42dc..0000000
--- a/motif-2.3.4-mwmrc_dir.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-diff -up openmotif-2.3.3/clients/mwm/WmResParse.c.mwmrc_dir openmotif-2.3.3/clients/mwm/WmResParse.c
---- openmotif-2.3.3/clients/mwm/WmResParse.c.mwmrc_dir	2009-06-22 23:51:51.000000000 +0200
-+++ openmotif-2.3.3/clients/mwm/WmResParse.c	2010-03-23 13:37:03.000000000 +0100
-@@ -2403,7 +2403,7 @@ FILE *FopenConfigFile (void)
- #endif /* PANELIST */
- 
- #ifndef MWMRCDIR
--#define MWMRCDIR "/usr/lib/X11"
-+#define MWMRCDIR "/etc/X11/mwm"
- #endif
-     if (LANG != NULL)
-     {
-diff -up openmotif-2.3.3/configure.ac.mwmrc_dir openmotif-2.3.3/configure.ac
---- openmotif-2.3.3/configure.ac.mwmrc_dir	2009-10-27 17:10:23.000000000 +0100
-+++ openmotif-2.3.3/configure.ac	2010-03-23 13:38:33.000000000 +0100
-@@ -179,7 +179,7 @@ AC_SUBST(CDE_CONFIGURATION_TOP)
- LIBDIR="${libdir}/X11"
- AC_SUBST(LIBDIR)
- 
--MWMRCDIR="${libdir}/X11"
-+MWMRCDIR="/etc/X11/mwm"
- AC_SUBST(MWMRCDIR)
- 
- INCDIR="${includedir}/X11"
-diff -up openmotif-2.3.3/doc/man/man1/mwm.1.mwmrc_dir openmotif-2.3.3/doc/man/man1/mwm.1
---- openmotif-2.3.3/doc/man/man1/mwm.1.mwmrc_dir	2002-01-05 16:21:11.000000000 +0100
-+++ openmotif-2.3.3/doc/man/man1/mwm.1	2010-03-23 13:37:03.000000000 +0100
-@@ -678,8 +678,8 @@ is set, \fBmwm\fP looks for \fI$HOME/$LA
- \fB$HOME\fP/\fBconfigFile\fP\&. If the \fIconfigFile\fP pathname does not begin with "~/" or "/", \fBmwm\fP considers it to be relative to the current working directory\&. If
- the \fIconfigFile\fP resource is not specified
- or if that file does not exist, \fBmwm\fP uses several default
--paths to find a configuration file\&. The order of the search is shown below: \fB/usr/X11R6/lib/X11/$LANG/system\&.mwmrc\fP\(dg
--\fB/usr/X11R6/lib/X11/system\&.mwmrc\fP\(dg Paths marked with \&'\(dg\&' are
-+paths to find a configuration file\&. The order of the search is shown below: \fB/etc/X11/mwm/$LANG/system\&.mwmrc\fP\(dg
-+\fB/etc/X11/mwm/system\&.mwmrc\fP\(dg Paths marked with \&'\(dg\&' are
- implementation dependent\&.
- .IP "\fIdeiconifyKeyFocus\fP\ (class\  \fIDeiconifyKeyFocus\fP)" 10
- This resource applies only when the keyboard input focus policy is explicit\&.
-@@ -1344,9 +1344,9 @@ the shell to use when executing commands
- function\&.
- .SS "Files"
- .PP
--\fB/usr/X11R6/lib/X11/$LANG/system\&.mwmrc\fP
-+\fB/etc/X11/mwm/$LANG/system\&.mwmrc\fP
- .PP
--\fB/usr/X11R6/lib/X11/system\&.mwmrc\fP
-+\fB/etc/X11/mwm/system\&.mwmrc\fP
- .PP
- \fB/usr/X11R6/lib/X11/app-defaults/Mwm\fP
- .PP
-diff -up openmotif-2.3.3/doc/man/man4/mwmrc.4.mwmrc_dir openmotif-2.3.3/doc/man/man4/mwmrc.4
---- openmotif-2.3.3/doc/man/man4/mwmrc.4.mwmrc_dir	2002-01-05 16:21:12.000000000 +0100
-+++ openmotif-2.3.3/doc/man/man4/mwmrc.4	2010-03-23 13:37:03.000000000 +0100
-@@ -57,7 +57,7 @@ file that controls much of the behavior 
- It contains descriptions of resources that cannot easily be
- written using standard X Window System, Version 11 resource syntax\&. The resource
- description file contains entries that are referred to by X resources in
--defaults files (for example, \fB/usr/X11R6/lib/X11/app-defaults/Mwm\fP)
-+defaults files (for example, \fB/usr/share/X11/app-defaults/Mwm\fP)
- or in the \fBRESOURCE_MANAGER\fP property on the
- root window\&. For example, the resource description file enables you to specify
- different types of window menus; however, an X resource is used to specify
-@@ -72,8 +72,8 @@ on a per-user basis:
- .nf
- \f(CW$HOME/$LANG/\&.mwmrc
- $HOME/\&.mwmrc
--/usr/X11R6/lib/X11/$LANG/system\&.mwmrc
--/usr/X11R6/lib/X11/system\&.mwmrc\fR
-+/etc/X11/mwm/$LANG/system\&.mwmrc
-+/etc/X11/mwm/system\&.mwmrc\fR
- .fi
- .PP
- .PP
-@@ -84,7 +84,7 @@ resource\&. The following shows how a di
- be specified from the command line:
- .PP
- .nf
--\f(CW/usr/X11R6/bin/X11/mwm -xrm "mwm*configFile: mymwmrc"\fR
-+\f(CW/usr/bin/mwm -xrm "mwm*configFile: mymwmrc"\fR
- .fi
- .PP
- .SS "Resource Types"
-@@ -626,8 +626,8 @@ is not what you expect\&.
- .nf
- \fB$HOME/$LANG/\&.mwmrc
- $HOME/\&.mwmrc
--/usr/X11R6/lib/X11/$LANG/system\&.mwmrc
--/usr/X11R6/lib/X11/system\&.mwmrc\fP
-+/etc/X11/mwm/$LANG/system\&.mwmrc
-+/etc/X11/mwm/system\&.mwmrc\fP
- .fi
- .SH "RELATED INFORMATION"
- .PP

diff --git a/motif-2.3.4-no_demos.patch b/motif-2.3.4-no_demos.patch
deleted file mode 100644
index bf1b926..0000000
--- a/motif-2.3.4-no_demos.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up openmotif-2.3.3/Makefile.am.no_demos openmotif-2.3.3/Makefile.am
---- openmotif-2.3.3/Makefile.am.no_demos	2008-09-19 16:38:05.000000000 +0200
-+++ openmotif-2.3.3/Makefile.am	2010-03-23 13:53:13.000000000 +0100
-@@ -29,7 +29,7 @@ SUBDIRS	= bindings bitmaps \
-              include \
-              tools \
-              clients \
--             doc \
--             demos
-+             doc
-+
- AUTOMAKE_OPTIONS = 1.4
- ACLOCAL_AMFLAGS = -I .

diff --git a/motif-c99-string.patch b/motif-c99-string.patch
deleted file mode 100644
index ff07b71..0000000
--- a/motif-c99-string.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Unconditionally include <string.h>, to avoid implicit function
-declarations.  libXpm defines SYSV during the build, which is why they
-do not see t his isssue.
-
-diff --git a/lib/Xm/XpmI.h b/lib/Xm/XpmI.h
-index bbba02b0cac1f91e..3468f2d1edf84f7c 100644
---- a/lib/Xm/XpmI.h
-+++ b/lib/Xm/XpmI.h
-@@ -118,9 +118,9 @@ extern "C" {
- extern FILE *popen();
- #endif
- 
--#if defined(SYSV) || defined(SVR4) || defined(VMS) || defined(WIN32) || defined (_SVID_SOURCE)
- #include <string.h>
- 
-+#if defined(SYSV) || defined(SVR4) || defined(VMS) || defined(WIN32) || defined (_SVID_SOURCE)
- #ifndef index
- #define index strchr
- #endif

diff --git a/motif-c99-void-sprintf.patch b/motif-c99-void-sprintf.patch
deleted file mode 100644
index 381e1bb..0000000
--- a/motif-c99-void-sprintf.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-Stop defining VOID_SPRINTF, following what upstream libXpm does.  The
-check has an implicit declaration of exit and an implicit int, so it
-will fail to build with future compilers.
-
-diff --git a/configure.ac b/configure.ac
-index 3b412361e6f43da4..6cbeb2f5eea235eb 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -120,7 +120,6 @@ AC_FUNC_STRCOLL
- AC_FUNC_STRFTIME
- AC_FUNC_FORK([])
- AC_FUNC_VPRINTF
--AM_FUNC_VOID_SPRINTF
- AC_CHECK_FUNCS(wcslen wcscpy wcsncpy wcschr wcscat wcsncat getcwd gettimeofday mkdir re_comp regcmp select strcspn strerror strstr strtod strtol uname)
- AC_CHECK_FUNCS(strdup,,AC_DEFINE(NEED_STRDUP, 1, no strdup))
- AC_CHECK_FUNCS(strcasecmp,,AC_DEFINE(NEED_STRCASECMP, 1, no strcasecmp))
---- motif-2.3.8/acinclude.m4~	2025-08-14 13:27:19.058051442 -0500
-+++ motif-2.3.8/acinclude.m4	2025-08-14 13:29:04.868675609 -0500
-@@ -46,18 +46,6 @@
- fi
- ])
- 
--dnl This test is not very reliable probably ...
--AC_DEFUN([AM_FUNC_VOID_SPRINTF],
--[AC_CACHE_CHECK(whether sprintf returns void, ac_cv_func_void_sprintf,
--[AC_TRY_RUN([#include <stdio.h>
--int sprintf(); main() { exit(sprintf(".")); }],
--  ac_cv_func_void_sprintf=no, ac_cv_func_void_sprintf=yes, ac_cv_func_void_sprintf=yes)])
--if test $ac_cv_func_void_sprintf = no; then
--  AC_DEFINE(VOID_SPRINTF,1,
--  [Define if sprintf doesn't return the number of chars written])
--fi
--])
--
- dnl This tests whether weak aliases are supported.
- AC_DEFUN([WEAK_ALIAS_SUPPORT],
- [AC_CACHE_CHECK(whether weak aliases are supported, ac_cv_weak_alias_support,

diff --git a/motif-configure-c99.patch b/motif-configure-c99.patch
deleted file mode 100644
index 63a081a..0000000
--- a/motif-configure-c99.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Another implicit declaration of exit in the -DXTHREADS check, which
-will go wrong with future compilers that do not support implicit
-function declarations.
-
-diff --git a/acinclude.m4 b/acinclude.m4
-index 61706f3e63d94d8a..88edfce3d169a267 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -22,9 +22,9 @@ int main() {
- Boolean brc;
- brc=XtToolkitThreadInitialize();
- if (True==brc)
--  exit(0);
-+  return 0;
- else
--  exit(1);
-+  return 1;
- }
- ],
- lt_cv_xthreads=yes,

diff --git a/motif.spec b/motif.spec
index 8cdd323..08b8107 100644
--- a/motif.spec
+++ b/motif.spec
@@ -1,14 +1,11 @@
 Summary: Run-time libraries and programs
 Name: motif
-Version: 2.3.8
-Release: 4%{?dist}
-# Automatically converted from old format: LGPLv2+ - review is highly recommended.
+Version: 2.5.2
+Release: 1%{?dist}
 License: LicenseRef-Callaway-LGPLv2+
-Source: http://downloads.sf.net/motif/motif-%{version}.tar.gz
+URL: https://github.com/thentenaar/motif
+Source0: %{url}/archive/v%{version}/motif-%{version}.tar.gz
 Source1: xmbind
-URL: http://www.motifzone.net/
-Obsoletes: openmotif < 2.3.4
-Provides: openmotif = %{version}-%{release}
 Requires: xorg-x11-xbitmaps
 
 BuildRequires: make
@@ -19,39 +16,7 @@ BuildRequires: libjpeg-devel libpng-devel
 BuildRequires: libXft-devel libXmu-devel libXp-devel libXt-devel libXext-devel
 BuildRequires: xorg-x11-xbitmaps
 BuildRequires: perl-interpreter
-
-Patch22: motif-2.3.4-no_demos.patch
-Patch23: openMotif-2.2.3-uil_lib.patch
-Patch43: openMotif-2.3.0-rgbtxt.patch
-Patch45: motif-2.3.4-mwmrc_dir.patch
-Patch46: motif-2.3.4-bindings.patch
-Patch47: openMotif-2.3.0-no_X11R6.patch
-# FTBFS #1448819
-Patch48: motif-2.3.4-Fix-issues-with-Werror-format-security.patch
-Patch49: motif-configure-c99.patch
-Patch50: motif-c99-void-sprintf.patch
-Patch51: motif-c99-string.patch
-# CVE-2023-43788
-Patch55: 0001-Fix-CVE-2023-43788-Out-of-bounds-read-in-XpmCreateXp.patch
-# CVE-2023-43789
-Patch56: 0001-Fix-CVE-2023-43789-Out-of-bounds-read-on-XPM-with-co.patch
-# https://sourceforge.net/p/motif/code/merge-requests/9/
-Patch58: 0001-build-Check-for-Xinerama-availability.patch
-Patch59: 0002-Xm-Display-Add-optional-Xinerama-support.patch
-Patch60: 0003-Xm-MenuShell-Use-Xinerama-to-place-menus.patch
-Patch61: 0004-Xm-DropDown-Use-Xinerama-for-placement.patch
-Patch62: 0005-Xm-RCMenu-Use-Xinerama-for-placement.patch
-Patch63: 0006-Xm-Tooltip-Use-Xinerama-for-placement.patch
-Patch64: 0007-Xm-ComboBox-Use-Xinerama-for-placement.patch
-# https://sourceforge.net/p/motif/code/merge-requests/10/
-Patch65: 0001-Xm-String-Fix-memory-leak.patch
-# https://sourceforge.net/p/motif/code/merge-requests/11/
-Patch66:  0001-Xm-Screen-Add-_NET_WORKAREA-support.patch
-Patch67:  0002-Xm-Screen-Add-_GTK_WORKAREAS-support-for-multi-monit.patch
-
-Patch68: includes.patch
-
-Conflicts: lesstif <= 0.92.32-6
+BuildRequires: libXpm-devel
 
 %description
 This is the Motif %{version} run-time environment. It includes the
@@ -60,13 +25,10 @@ linked against Motif and the Motif Window Manager mwm.
 
 %package devel
 Summary: Development libraries and header files
-Conflicts: lesstif-devel <= 0.92.32-6
 Requires: %{name}%{?_isa} = %{version}-%{release}
 Requires: libjpeg-devel%{?_isa} libpng-devel%{?_isa}
 Requires: libXft-devel%{?_isa} libXmu-devel%{?_isa} libXp-devel%{?_isa}
 Requires: libXt-devel%{?_isa} libXext-devel%{?_isa}
-Obsoletes: openmotif-devel < 2.3.4
-Provides: openmotif-devel = %{version}-%{release}
 
 %description devel
 This is the Motif %{version} development environment. It includes the
@@ -74,7 +36,6 @@ header files and also static libraries necessary to build Motif applications.
 
 %package static
 Summary: Static libraries
-Conflicts: lesstif-devel <= 0.92.32-6
 Requires: %{name}-devel%{?_isa} = %{version}-%{release}
 
 %description static
@@ -82,43 +43,15 @@ This package contains the static Motif libraries.
 
 %prep
 %setup -q
-%patch -P 22 -p1 -b .no_demos
-%patch -P 23 -p1 -b .uil_lib
-%patch -P 43 -p1 -b .rgbtxt
-%patch -P 45 -p1 -b .mwmrc_dir
-%patch -P 46 -p1 -b .bindings
-%patch -P 47 -p1 -b .no_X11R6
-%patch -P 48 -p1 -b .format-security
-%patch -P 49 -p1
-%patch -P 50 -p1
-%patch -P 51 -p1
-%patch -P 55 -p1
-%patch -P 56 -p1
-%patch -P 58 -p1 -b .xinerama
-%patch -P 59 -p1 -b .xinerama
-%patch -P 60 -p1 -b .xinerama
-%patch -P 61 -p1 -b .xinerama
-%patch -P 62 -p1 -b .xinerama
-%patch -P 63 -p1 -b .xinerama
-%patch -P 64 -p1 -b .xinerama
-%patch -P 65 -p1 -b .utf8-memleak
-%patch -P 66 -p1 -b .net-workarea
-%patch -P 67 -p1 -b .gtk-workareas
-
-%patch -P 68 -p1 -b .includes
 
 %build
-export CFLAGS="$CFLAGS -std=gnu17"
-touch AUTHORS NEWS
-autoreconf -fi
+./autogen.sh
 %configure --enable-static --enable-xft --enable-jpeg --enable-png
 
-make clean %{?_smp_mflags}
-make -C include
-make %{?_smp_mflags}
+%make_build
 
 %install
-make DESTDIR=%{buildroot} install
+%make_install
 
 install -d %{buildroot}/etc/X11/xinit/xinitrc.d
 install -m 755 %{SOURCE1} %{buildroot}/etc/X11/xinit/xinitrc.d/xmbind.sh
@@ -128,17 +61,17 @@ rm -f %{buildroot}%{_libdir}/*.la
 %ldconfig_scriptlets
 
 %files
-%doc COPYING README RELEASE RELNOTES
+%doc LICENSE README.md
 /etc/X11/xinit/xinitrc.d/xmbind.sh
-%dir /etc/X11/mwm
-%config(noreplace) /etc/X11/mwm/system.mwmrc
+%config(noreplace) /etc/X11/system.mwmrc
 %{_bindir}/mwm
 %{_bindir}/xmbind
 %{_includedir}/X11/bitmaps/*
-%{_libdir}/libMrm.so.*
-%{_libdir}/libUil.so.*
-%{_libdir}/libXm.so.*
+%{_libdir}/libMrm.so.5*
+%{_libdir}/libUil.so.5*
+%{_libdir}/libXm.so.5*
 %{_datadir}/X11/bindings
+%{_datadir}/motif/icons
 %{_mandir}/man1/mwm*
 %{_mandir}/man1/xmbind*
 %{_mandir}/man4/mwmrc*
@@ -149,6 +82,10 @@ rm -f %{buildroot}%{_libdir}/*.la
 %{_includedir}/Xm
 %{_includedir}/uil
 %{_libdir}/lib*.so
+%{_libdir}/pkgconfig/Mrm.pc
+%{_libdir}/pkgconfig/Uil.pc
+%{_libdir}/pkgconfig/motif.pc
+
 %{_mandir}/man1/uil.1*
 %{_mandir}/man3/*
 %{_mandir}/man5/*
@@ -157,6 +94,9 @@ rm -f %{buildroot}%{_libdir}/*.la
 %{_libdir}/lib*.a
 
 %changelog
+* Thu Sep 03 2026 Gwyn Ciesla <gwync@protonmail.com> - 2.5.2-1
+- 2.5.2, new upstream.
+
 * Thu Jul 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.8-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
 

diff --git a/openMotif-2.2.3-uil_lib.patch b/openMotif-2.2.3-uil_lib.patch
deleted file mode 100644
index fc3a0ce..0000000
--- a/openMotif-2.2.3-uil_lib.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- openmotif/clients/uil/Makefile.am.uil_lib	2003-12-16 13:41:53.000000000 +0100
-+++ openmotif/clients/uil/Makefile.am	2003-12-16 13:41:55.000000000 +0100
-@@ -13,7 +13,7 @@
- 
- libUil_la_LIBADD = UilParser.lo ../../lib/Mrm/libMrm.la ../../lib/Xm/libXm.la 
- 
--uil_LDADD = ../../lib/Mrm/libMrm.la ../../lib/Xm/libXm.la 
-+uil_LDADD = libUil.la ../../lib/Mrm/libMrm.la ../../lib/Xm/libXm.la
- 
- INCLUDES = -DINCDIR=\"@INCDIR@\" \
-            -DLIBDIR=\"@LIBDIR@\" \
-@@ -42,7 +42,7 @@
- 		UilLstMac.c	UilSemVal.c	UilSemCSet.c	UilDB.c
- 
- SRCS =		$(COMMON_SRC)
--SRCS2 =		$(COMMON_SRC)	UilMain.c
-+SRCS2 =		UilMain.c
- 
- HEADERS_1 = 	Uil.h		UilSymGl.h	UilSymDef.h \
- 		UilDef.h	XmAppl.uil

diff --git a/openMotif-2.3.0-no_X11R6.patch b/openMotif-2.3.0-no_X11R6.patch
deleted file mode 100644
index 24d1c56..0000000
--- a/openMotif-2.3.0-no_X11R6.patch
+++ /dev/null
@@ -1,47 +0,0 @@
---- openmotif-2.3.0/doc/man/man1/mwm.1.no_X11R6	2005-12-09 15:08:21.000000000 +0100
-+++ openmotif-2.3.0/doc/man/man1/mwm.1	2005-12-09 15:09:06.000000000 +0100
-@@ -366,7 +366,7 @@
- database\&. This database is built from the following sources\&. They are listed
- in order of precedence, low to high:
- .PP
--\fB/usr/X11R6/lib/X11/app-defaults/Mwm\fP
-+\fB/usr/share/X11/app-defaults/Mwm\fP
- .PP
- \fB$HOME/Mwm\fP
- .PP
-@@ -376,7 +376,7 @@
- .PP
- \fBmwm\fP command line options
- .PP
--The file names \fB/usr/X11R6/lib/X11/app-defaults/Mwm\fP and \fB$HOME/Mwm\fP represent customary locations for these files\&. The actual
-+The file names \fB/usr/share/X11/app-defaults/Mwm\fP and \fB$HOME/Mwm\fP represent customary locations for these files\&. The actual
- location of the system-wide class resource file may depend on the \fBXFILESEARCHPATH\fP environment variable and the
- current language environment\&. The actual location of the user-specific class
- resource file may depend on the \fBXUSERFILESEARCHPATH\fP and \fBXAPPLRESDIR\fP
-@@ -595,7 +595,7 @@
- Name\aClass\aValue Type\aDefault
- autoKeyFocus\aAutoKeyFocus\aT/F\aT
- autoRaiseDelay\aAutoRaiseDelay\amillisec\a500
--bitmap-\aBitmap-\adirectory\a/usr/X11R6/include-
-+bitmap-\aBitmap-\adirectory\a/usr/include-
- Directory\aDirectory\a\a/X11/bitmaps
- clientAutoPlace\aClientAutoPlace\aT/F\aT
- colormapFocus-\aColormapFocus-\astring\akeyboard
-@@ -650,7 +650,7 @@
- This resource identifies a directory to be searched for bitmaps referenced
- by \fBmwm\fP resources\&. This directory is searched if a bitmap
- is specified without an absolute pathname\&. The default value for this resource
--is \fB/usr/X11R6/include/X11/bitmaps\fP\&. The directory \fB/usr/X11R6/include/X11/bitmaps\fP
-+is \fB/usr/include/X11/bitmaps\fP\&. The directory \fB/usr/include/X11/bitmaps\fP
- represents the customary locations for this directory\&. The actual
- location of this directory may vary on some systems\&. If the bitmap is not
- found in the specified directory, \fBXBMLANGPATH\fP is searched\&.
-@@ -1348,7 +1348,7 @@
- .PP
- \fB/etc/X11/mwm/system\&.mwmrc\fP
- .PP
--\fB/usr/X11R6/lib/X11/app-defaults/Mwm\fP
-+\fB/usr/share/X11/app-defaults/Mwm\fP
- .PP
- \fB$HOME/Mwm\fP
- .PP

diff --git a/openMotif-2.3.0-rgbtxt.patch b/openMotif-2.3.0-rgbtxt.patch
deleted file mode 100644
index 6c5ff15..0000000
--- a/openMotif-2.3.0-rgbtxt.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- openmotif-2.3.0/lib/Xm/ColorS.c.rgbtxt	2004-07-07 14:24:07.000000000 +0200
-+++ openmotif-2.3.0/lib/Xm/ColorS.c	2005-12-02 13:26:11.000000000 +0100
-@@ -131,7 +131,7 @@
-   {
-     XmNrgbFile, XmCString, XmRString,
-     sizeof(String), XtOffsetOf(XmColorSelectorRec, cs.rgb_file),
--    XmRString, (XtPointer) "/usr/lib/X11/rgb.txt"
-+    XmRString, (XtPointer) "/usr/share/X11/rgb.txt"
-   },
- #endif
-   {
---- openmotif-2.3.0/doc/man/man3/XmColorSelector.3.rgbtxt	2002-01-17 21:32:48.000000000 +0100
-+++ openmotif-2.3.0/doc/man/man3/XmColorSelector.3	2005-12-02 13:25:26.000000000 +0100
-@@ -34,7 +34,7 @@
- noCellError%NoCellError%XmString%"No Color Cell
- %%% Available"
- redSliderLabel%SliderLabel%XmString%"Red"
--rgbFile%String%String%/usr/lib/X11/rgb.txt
-+rgbFile%String%String%/usr/share/X11/rgb.txt
- sliderTogLabel%TogLabel%XmString%"Color Sliders"
- .TE
- .PP

diff --git a/sources b/sources
index 50b70d1..f7fe192 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (motif-2.3.8.tar.gz) = 1ab8e8eece25ef97e948592b5fa3e19d98e932695290a18b7a8e90f1aa2766bc4f082bdbc3999dff5660e684821178a149040f76bb477163e53ca06474d02b55
+SHA512 (motif-2.5.2.tar.gz) = 76b3c5182b15ae6a6eec3732d5c69ff3d4013a438b855d8214779c655e9db2514f13917eeee2ee7a9270dca006db55b3f5dd8688cc20a21e8bb9f3de98686732

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-09-10 13:12 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-10 13:12 [rpms/motif] rawhide: 2.5.2 Gwyn Ciesla

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox