Compare commits

...

No commits in common. "c10s" and "c8" have entirely different histories.
c10s ... c8

20 changed files with 2790 additions and 1 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
SOURCES/motif-2.3.4-src.tgz

View File

@ -0,0 +1,54 @@
From 591ae206f83a359a590090524c286cb03e5c2494 Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <ofourdan@redhat.com>
Date: Tue, 6 Sep 2022 17:39:19 +0200
Subject: [PATCH] EditresCom: Fix build with modern systems.
The code in _XtGetStringValues() depends on the LONG_BIT define.
However, modern system require -D_XOPEN_SOURCE to set LONG_BIT, so with
the current code as it is, LONG_BIT is not defined (from limits.h) and
the build wrongly assumes this is a 32bit build.
Unfortunately, defining _XOPEN_SOURCE to have LONG_BIT set would disable
the definition of caddr_t, a deprecated definition inherited from BSD,
so we also need to replace that with a simple cast to (long *).
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
---
lib/Xm/EditresCom.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/lib/Xm/EditresCom.c b/lib/Xm/EditresCom.c
index 4114ff8b..c93d6844 100644
--- a/lib/Xm/EditresCom.c
+++ b/lib/Xm/EditresCom.c
@@ -43,6 +43,9 @@ in this Software without prior written authorization from the X Consortium.
#include <config.h>
#endif
+#ifndef _XOPEN_SOURCE
+#define _XOPEN_SOURCE 700
+#endif
#include <X11/IntrinsicP.h> /* To get into the composite and core widget
structures. */
@@ -59,6 +62,7 @@ in this Software without prior written authorization from the X Consortium.
#include <X11/Xmd.h>
#include <stdio.h>
+#include <limits.h>
#define _XEditResPutBool _XEditResPut8
#define _XEditResPutResourceType _XEditResPut8
@@ -1608,7 +1612,7 @@ _XtGetStringValues(Widget w, Arg *warg, int numargs)
old_handler = XtAppSetWarningMsgHandler(XtWidgetToApplicationContext(w),
EditResCvtWarningHandler);
from.size = res->resource_size;
- from.addr = (caddr_t)&value;
+ from.addr = (void *)&value;
to.addr = NULL;
to.size = 0;
to_color.addr = NULL;
--
2.37.3

View File

@ -0,0 +1,32 @@
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

View File

@ -0,0 +1,36 @@
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

View File

@ -0,0 +1,815 @@
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

View File

@ -0,0 +1,36 @@
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"

View File

@ -0,0 +1,449 @@
commit 88bdce139baf89839b6e13d698576fc56211e845
Author: Oleksiy Chernyavskyy <ochern@ics.com>
Date: Wed Mar 16 00:46:49 2016 +0200
Reimplemented bugfix 1565
Signed-off-by: Oleksiy Chernyavskyy <ochern@ics.com>
diff --git a/lib/Xm/ComboBox.c b/lib/Xm/ComboBox.c
index 1472e45..cf507da 100644
--- a/lib/Xm/ComboBox.c
+++ b/lib/Xm/ComboBox.c
@@ -3164,6 +3164,9 @@ CreatePulldown(Widget parent,
Arg args[4];
ArgList merged_args;
Cardinal n;
+#ifdef FIX_1565
+ XmGrabShellWidget grabsh;
+#endif
n = 0;
XtSetArg(args[n], XmNlayoutDirection, LayoutM(parent)), n++;
@@ -3175,6 +3178,11 @@ CreatePulldown(Widget parent,
merged_args, n + *num_args);
XtFree((char*)merged_args);
+#ifdef FIX_1565
+ grabsh = (XmGrabShellWidget) shell;
+ grabsh->grab_shell.set_input_focus = False;
+#endif
+
return shell;
}
diff --git a/lib/Xm/DropDown.c b/lib/Xm/DropDown.c
index 37fec03..5cd15ca 100644
--- a/lib/Xm/DropDown.c
+++ b/lib/Xm/DropDown.c
@@ -2027,6 +2027,9 @@ CreatePopup(Widget w, ArgList args, Cardinal num_args)
Arg *new_list, largs[10];
Cardinal num_largs;
Widget sb;
+#ifdef FIX_1565
+ XmGrabShellWidget grabsh;
+#endif
num_largs = 0;
XtSetArg(largs[num_largs], XmNoverrideRedirect, True); num_largs++;
@@ -2040,6 +2043,10 @@ CreatePopup(Widget w, ArgList args, Cardinal num_args)
xmGrabShellWidgetClass, w,
new_list,
num_largs + num_args);
+#ifdef FIX_1565
+ grabsh = (XmGrabShellWidget) XmDropDown_popup_shell(cbw);
+ grabsh->grab_shell.set_input_focus = False;
+#endif
XtFree((char *) new_list);
#ifdef FIX_1446
diff --git a/lib/Xm/GrabShell.c b/lib/Xm/GrabShell.c
index 88f3154..af13e0b 100644
--- a/lib/Xm/GrabShell.c
+++ b/lib/Xm/GrabShell.c
@@ -283,6 +283,10 @@ Initialize(Widget req, /* unused */
/* CR 9920: Popdown may be requested before MapNotify. */
grabsh->grab_shell.mapped = False;
+
+#ifdef FIX_1565
+ grabsh->grab_shell.set_input_focus = True;
+#endif
}
/*
@@ -395,8 +399,16 @@ MapNotifyHandler(Widget shell, XtPointer client_data,
XGetInputFocus(XtDisplay(shell), &grabshell->grab_shell.old_focus,
&grabshell->grab_shell.old_revert_to);
old_handler = XSetErrorHandler(IgnoreXErrors);
- XSetInputFocus(XtDisplay(shell), XtWindow(shell), RevertToParent, time);
- XSync(XtDisplay(shell), False);
+#ifdef FIX_1565
+ if (! grabshell->grab_shell.set_input_focus) {
+ XmForceGrabKeyboard(shell, time);
+ } else {
+#endif
+ XSetInputFocus(XtDisplay(shell), XtWindow(shell), RevertToParent, time);
+ XSync(XtDisplay(shell), False);
+#ifdef FIX_1565
+ }
+#endif
XSetErrorHandler(old_handler);
}
diff --git a/lib/Xm/GrabShellP.h b/lib/Xm/GrabShellP.h
index 92fe508..025f001 100644
--- a/lib/Xm/GrabShellP.h
+++ b/lib/Xm/GrabShellP.h
@@ -30,6 +30,7 @@
#include <Xm/GrabShell.h>
#include <Xm/XmP.h>
#include <X11/ShellP.h>
+#include "XmI.h"
#ifdef __cplusplus
extern "C" {
@@ -55,6 +56,9 @@ typedef struct
Boolean mapped;
Window old_focus;
int old_revert_to;
+#ifdef FIX_1565
+ Boolean set_input_focus;
+#endif
} XmGrabShellPart;
diff --git a/lib/Xm/MenuShell.c b/lib/Xm/MenuShell.c
index 2ed3dd8..9887087 100644
--- a/lib/Xm/MenuShell.c
+++ b/lib/Xm/MenuShell.c
@@ -1514,9 +1514,7 @@ ChangeManaged(
/** the real grab ***/
_XmMenuGrabKeyboardAndPointer((Widget)rowcol, _time);
-#ifndef FIX_1565
_XmMenuFocus(XtParent(rowcol), XmMENU_BEGIN, _time);
-#endif
/* To support menu replay, keep the pointer in sync mode */
XAllowEvents(XtDisplay(rowcol), SyncPointer, CurrentTime);
diff --git a/lib/Xm/MenuUtil.c b/lib/Xm/MenuUtil.c
index 1d88390..2fb6a27 100644
--- a/lib/Xm/MenuUtil.c
+++ b/lib/Xm/MenuUtil.c
@@ -1053,11 +1053,7 @@ _XmMenuGrabKeyboardAndPointer(
register int status =
(_XmGrabKeyboard(widget,
-#ifdef FIX_1565
- False,
-#else
True,
-#endif
GrabModeSync,
GrabModeAsync,
time) != GrabSuccess);
diff --git a/lib/Xm/RCMenu.c b/lib/Xm/RCMenu.c
index 2c698d4..8b156da 100644
--- a/lib/Xm/RCMenu.c
+++ b/lib/Xm/RCMenu.c
@@ -85,6 +85,9 @@ static char *rcsid = "$TOG: RCMenu.c /main/25 1999/05/24 18:06:57 samborn $";
#include "TraversalI.h"
#include "UniqueEvnI.h"
#include "VendorSI.h"
+#ifdef FIX_1565
+#include <Xm/GrabShell.h>
+#endif
#define FIX_1535
@@ -943,6 +946,13 @@ _XmMenuFocus(
XmMenuState mst = _XmGetMenuState((Widget)w);
Window tmpWindow;
int tmpRevert;
+#ifdef FIX_1565
+ Widget shell;
+
+ shell = w;
+ while (! XtIsSubclass(shell, shellWidgetClass))
+ shell = XtParent(shell);
+#endif
if (_time == CurrentTime)
_time = XtLastTimestampProcessed(XtDisplay(w));
@@ -983,6 +993,11 @@ _XmMenuFocus(
shell.popped_up))
**/
{
+#ifdef FIX_1565
+ if (XtIsSubclass(shell, xmGrabShellWidgetClass) || XtIsSubclass(shell, xmMenuShellWidgetClass))
+ XmForceGrabKeyboard(w, _time);
+ else
+#endif
SetInputFocus(XtDisplay(w), mst->RC_menuFocus.oldFocus,
mst->RC_menuFocus.oldRevert,
mst->RC_menuFocus.oldTime);
@@ -996,6 +1011,11 @@ _XmMenuFocus(
*/
else
{
+#ifdef FIX_1565
+ if (XtIsSubclass(shell, xmGrabShellWidgetClass) || XtIsSubclass(shell, xmMenuShellWidgetClass))
+ XmForceGrabKeyboard(w, _time);
+ else
+#endif
SetInputFocus(XtDisplay(w), mst->RC_menuFocus.oldFocus,
mst->RC_menuFocus.oldRevert,
mst->RC_menuFocus.oldTime);
@@ -1014,6 +1034,11 @@ _XmMenuFocus(
RC_menuFocus.oldFocus);
mst->RC_menuFocus.oldTime = _time - 1;
+#ifdef FIX_1565
+ if (XtIsSubclass(shell, xmGrabShellWidgetClass) || XtIsSubclass(shell, xmMenuShellWidgetClass))
+ XmForceGrabKeyboard(w, _time);
+ else
+#endif
SetInputFocus(XtDisplay(w), XtWindow(w), mst->RC_menuFocus.oldRevert,
mst->RC_menuFocus.oldTime);
@@ -1027,6 +1052,11 @@ _XmMenuFocus(
XGetInputFocus(XtDisplay(w), &tmpWindow, &tmpRevert);
if (tmpWindow != XtWindow(w))
{
+#ifdef FIX_1565
+ if (XtIsSubclass(shell, xmGrabShellWidgetClass) || XtIsSubclass(shell, xmMenuShellWidgetClass))
+ XmForceGrabKeyboard(w, _time);
+ else
+#endif
SetInputFocus(XtDisplay(w), XtWindow(w), tmpRevert, _time);
mst->RC_menuFocus.oldRevert = tmpRevert;
@@ -1048,6 +1078,11 @@ _XmMenuFocus(
break;
case XmMENU_MIDDLE:
+#ifdef FIX_1565
+ if (XtIsSubclass(shell, xmGrabShellWidgetClass) || XtIsSubclass(shell, xmMenuShellWidgetClass))
+ XmForceGrabKeyboard(w, _time);
+ else
+#endif
SetInputFocus(XtDisplay(w), XtWindow(w),
mst->RC_menuFocus.oldRevert,
mst->RC_menuFocus.oldTime);
@@ -1062,6 +1097,11 @@ _XmMenuFocus(
if ((tmpWindow != XtWindow(w)) &&
(_time > mst->RC_menuFocus.oldTime))
{
+#ifdef FIX_1565
+ if (XtIsSubclass(shell, xmGrabShellWidgetClass) || XtIsSubclass(shell, xmMenuShellWidgetClass))
+ XmForceGrabKeyboard(w, _time);
+ else
+#endif
SetInputFocus(XtDisplay(w), XtWindow(w), tmpRevert, _time);
mst->RC_menuFocus.oldRevert = tmpRevert;
diff --git a/lib/Xm/Xm.c b/lib/Xm/Xm.c
index 3dfd794..45d48b6 100644
--- a/lib/Xm/Xm.c
+++ b/lib/Xm/Xm.c
@@ -40,6 +40,10 @@
#ifdef FIX_345
#include <X11/keysym.h>
#endif
+#ifdef FIX_1565
+#include <Xm/GrabShell.h>
+#include <Xm/MenuShell.h>
+#endif
/**************************************************************************
@@ -530,3 +534,173 @@ _XmAssignInsensitiveColor(Widget w)
return p;
}
#endif
+
+#ifdef FIX_1565
+
+typedef struct _GrabData GrabData;
+struct _GrabData {
+ Widget w;
+ GrabData *next;
+};
+
+static void _XmSendFocusEvent(Widget child, int type);
+static void _XmStartDispatcher(Display *display);
+static Boolean _XmEventDispatcher(XEvent *event);
+static void UnmapHandler(Widget w, XtPointer client_data, XEvent *event, Boolean *cont);
+static Boolean _UngrabKeyboard(Widget w);
+
+static GrabData *grabw_top = NULL;
+static int xm_dispatcher_on = 0;
+static XtEventDispatchProc saved_dispatcher_proc = NULL;
+static XtEventDispatchProc xt_dispatcher_proc = NULL;
+
+/*
+ XmForceGrabKeyboard function is defined to be a substitutor of XSetInputFocus calls
+ for popup and pulldown menus that should grab keyboard focus yet main window at the
+ same time should visually stay in focus for window manager. This resolves focus flip
+ issue when popup or pulldown menu is raised. ~ochern
+ */
+void XmForceGrabKeyboard(Widget w, Time time)
+{
+ GrabData *grabw;
+
+ if (!w)
+ return;
+
+ while (! XtIsSubclass(w, shellWidgetClass))
+ w = XtParent(w);
+
+ if (! (XtIsSubclass(w, xmGrabShellWidgetClass) || XtIsSubclass(w, xmMenuShellWidgetClass)))
+ return;
+
+ _XmStartDispatcher(XtDisplay(w));
+
+ _UngrabKeyboard(w);
+
+ grabw = (GrabData *) XtMalloc(sizeof(GrabData));
+ grabw->w = w;
+ _XmProcessLock();
+ grabw->next = grabw_top;
+ grabw_top = grabw;
+ _XmProcessUnlock();
+
+ XtInsertEventHandler(w, StructureNotifyMask, False, UnmapHandler, NULL, XtListHead);
+
+ _XmSendFocusEvent(w, FocusIn);
+
+ /* Following the XSetInputFocus behaviour we force sending FocusOut (see XGrabKeyboard(3))
+ event to a previous keyboard holder */
+ XtGrabKeyboard(w, True, GrabModeAsync, GrabModeAsync, time);
+}
+
+static void _XmStartDispatcher(Display *display)
+{
+ if (!display)
+ return;
+
+ _XmProcessLock();
+
+ if (xm_dispatcher_on) {
+ _XmProcessUnlock();
+ return;
+ }
+
+ saved_dispatcher_proc = XtSetEventDispatcher(display, KeyPress, _XmEventDispatcher);
+ if (! xt_dispatcher_proc)
+ xt_dispatcher_proc = saved_dispatcher_proc;
+ XtSetEventDispatcher(display, KeyRelease, _XmEventDispatcher);
+ xm_dispatcher_on = 1;
+
+ _XmProcessUnlock();
+}
+
+static Boolean _XmEventDispatcher(XEvent *event)
+{
+ _XmProcessLock();
+ if (grabw_top) {
+ if (event->type == KeyPress || event->type == KeyRelease)
+ event->xany.window = XtWindow(grabw_top->w);
+ }
+ _XmProcessUnlock();
+
+ if (saved_dispatcher_proc) {
+ return (*saved_dispatcher_proc)(event);
+ } else if (xt_dispatcher_proc) {
+ return (*xt_dispatcher_proc)(event);
+ } else {
+ if (grabw_top)
+ XtSetEventDispatcher(XtDisplay(grabw_top->w), event->type, NULL);
+ return XtDispatchEvent(event);
+ }
+}
+
+static void UnmapHandler(Widget w, XtPointer client_data, XEvent *event, Boolean *cont)
+{
+ if (event->type == UnmapNotify)
+ _UngrabKeyboard(w);
+ if (! grabw_top) {
+ XtSetEventDispatcher(XtDisplay(w), KeyPress, saved_dispatcher_proc);
+ XtSetEventDispatcher(XtDisplay(w), KeyRelease, saved_dispatcher_proc);
+ xm_dispatcher_on = 0;
+ }
+
+ /* we do not call XtUngrabKeyboard since X server automatically performs an
+ UngrabKeyboard request if the event window for an active keyboard grab becomes
+ not viewable. ~ochern */
+}
+
+static Boolean _UngrabKeyboard(Widget w)
+{
+ GrabData *grabw, *grabw_prev;
+
+ _XmProcessLock();
+ if (! grabw_top) {
+ _XmProcessUnlock();
+ return False;
+ }
+
+ grabw = grabw_top;
+ grabw_prev = NULL;
+ while(grabw && grabw->w != w) {
+ grabw_prev = grabw;
+ grabw = grabw->next;
+ }
+ if (grabw) {
+ if (grabw_prev)
+ grabw_prev->next = grabw->next;
+ else
+ grabw_top = grabw->next;
+ XtFree((char*) grabw);
+
+ _XmProcessUnlock();
+ return True;
+ }
+
+ _XmProcessUnlock();
+ return False;
+}
+
+static void _XmSendFocusEvent(Widget child, int type)
+{
+ child = XtIsWidget(child) ? child : _XtWindowedAncestor(child);
+ if (XtIsSensitive(child) && !child->core.being_destroyed
+ && XtIsRealized(child) && (XtBuildEventMask(child) & FocusChangeMask))
+ {
+ XFocusChangeEvent event;
+ Display* dpy = XtDisplay (child);
+
+ event.type = type;
+ event.serial = LastKnownRequestProcessed(dpy);
+ event.send_event = True;
+ event.display = dpy;
+ event.window = XtWindow(child);
+ event.mode = NotifyNormal;
+ event.detail = NotifyAncestor;
+ if (XFilterEvent((XEvent*)&event, XtWindow(child)))
+ return;
+ XtDispatchEventToWidget(child, (XEvent*)&event);
+ }
+}
+
+#endif
+
diff --git a/lib/Xm/XmI.h b/lib/Xm/XmI.h
index b4420d3..c2b819e 100644
--- a/lib/Xm/XmI.h
+++ b/lib/Xm/XmI.h
@@ -242,7 +242,9 @@ extern Boolean _XmIsISO10646(Display *dpy,
extern XChar2b* _XmUtf8ToUcs2(char *draw_text,
size_t seg_len,
size_t *ret_str_len);
-
+#ifdef FIX_1565
+extern void XmForceGrabKeyboard(Widget w, Time time);
+#endif
/******** End Private Function Declarations ********/

View File

@ -0,0 +1,93 @@
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

View File

@ -0,0 +1,13 @@
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 .

View File

@ -0,0 +1,39 @@
commit 33e0b7fd58ec8ce9fd23d3a66a91e9b4b7c2b928
Author: Oleksiy Chernyavskyy <ochern@ics.com>
Date: Fri Jun 10 23:15:00 2016 +0300
bug 1654 fix
diff --git a/lib/Xm/LabelG.c b/lib/Xm/LabelG.c
index b674041..726b095 100644
--- a/lib/Xm/LabelG.c
+++ b/lib/Xm/LabelG.c
@@ -35,6 +35,7 @@ static char rcsid[] = "$TOG: LabelG.c /main/24 1999/01/26 15:31:18 mgreess $"
#include <config.h>
#endif
#define FIX_1517
+#define FIX_1654
#include <string.h>
#include <stdio.h>
@@ -2352,12 +2353,20 @@ LRectangle *background_box)
if (LabG_StringRect(lw).width < availW - marginal_width)
width = LabG_StringRect(lw).width;
else
+#ifdef FIX_1654
+ width = availW - marginal_width;
+#else
width = availW - marginal_width - x;
+#endif
if (LabG_StringRect(lw).height < availH - marginal_height)
height = LabG_StringRect(lw).height;
else
+#ifdef FIX_1654
+ height = availH - marginal_height;
+#else
height = availH - marginal_height - y;
+#endif
XFillRectangle(XtDisplay(lw), XtWindow(lw), LabG_BackgroundGC(lw),
x, y, width, height);

View File

@ -0,0 +1,104 @@
From 6aff3a819cb69235594124d7b252d1ee8c04f2b0 Mon Sep 17 00:00:00 2001
From: Mykola Vshyvkov <mvshyvk@softserveinc.com>
Date: Wed, 21 Aug 2013 11:49:00 +0300
Subject: [PATCH] Fixed bug #1612 (Label size computed wrong within a Form).
---
lib/Xm/Form.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 56 insertions(+), 2 deletions(-)
diff --git a/lib/Xm/Form.c b/lib/Xm/Form.c
index 74140af8..b95a7b1a 100644
--- a/lib/Xm/Form.c
+++ b/lib/Xm/Form.c
@@ -50,6 +50,7 @@ static char rcsid[] = "$TOG: Form.c /main/19 1998/03/25 12:24:56 csn $"
#include "GMUtilsI.h"
#define FIX_1299
+#define FIX_1612
#define MESSAGE1 _XmMMsgForm_0000
#define MESSAGE5 _XmMMsgForm_0002
@@ -285,6 +286,12 @@ static int GetFormOffset(
XmFormWidget fw,
int which,
XmFormAttachment a) ;
+#ifdef FIX_1612
+static Boolean IsWidgetAttachedOneHorizontalSide(
+ Widget w);
+static Boolean IsWidgetAttachedOneVerticalSide(
+ Widget w);
+#endif
/******** End Static Function Declarations ********/
@@ -1083,13 +1090,21 @@ GeometryManager(
} else {
/* the size the Form wants for the kid request is bigger than
its current or proposed size, return No to the kid */
-
/* backup the original Form size first */
fw->core.width = orig_form_width ;
fw->core.height = orig_form_height;
-
/* we haden't changed anything else, just return No */
reply = XtGeometryNo;
+
+#ifdef FIX_1612
+ if (((IsWidgetAttachedOneHorizontalSide(w)) &&
+ (desired->request_mode & CWWidth)) ||
+ ((IsWidgetAttachedOneVerticalSide(w)) &&
+ (desired->request_mode & CWHeight)))
+ { PlaceChildren (fw, w, desired);
+ reply = XtGeometryYes;
+ }
+#endif
}
} else {
/* ok, we got a Yes form the Form's parent, let's relayout
@@ -3477,3 +3492,42 @@ XmCreateFormDialog(
return XmeCreateClassDialog (xmFormWidgetClass,
parent, name, arglist, argcount) ;
}
+
+
+
+#ifdef FIX_1612
+/************************************************************************
+ *
+ * IsWidgetAttachedOneHorizontalSide
+ * Checking the attachments of widget in horizontal direction.
+ * Returns True if only one (left or right) side of widget is attached
+ *
+ ************************************************************************/
+static Boolean IsWidgetAttachedOneHorizontalSide(Widget w)
+ { if (w != NULL)
+ { XmFormConstraint c = GetFormConstraint(w);
+ if (((c->att[LEFT].type == XmATTACH_NONE) &&
+ (c->att[RIGHT].type != XmATTACH_NONE)) ||
+ ((c->att[LEFT].type != XmATTACH_NONE) &&
+ (c->att[RIGHT].type == XmATTACH_NONE)))
+ return True;
+
+ }
+ return False;
+ }
+
+
+static Boolean IsWidgetAttachedOneVerticalSide(Widget w)
+ { if (w != NULL)
+ { XmFormConstraint c = GetFormConstraint(w);
+ if (((c->att[TOP].type == XmATTACH_NONE) &&
+ (c->att[BOTTOM].type != XmATTACH_NONE)) ||
+ ((c->att[TOP].type != XmATTACH_NONE) &&
+ (c->att[BOTTOM].type == XmATTACH_NONE)))
+ return True;
+
+ }
+ return False;
+ }
+
+#endif
--
2.14.3

View File

@ -0,0 +1,27 @@
From e5c51cda449ea3544fddcdb84c6809757477035b Mon Sep 17 00:00:00 2001
From: Oleksiy Chernyavskyy <ochern@ics.com>
Date: Tue, 22 Aug 2017 03:27:36 +0300
Subject: [PATCH] Fixed bug 1660
---
lib/Xm/TextF.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/Xm/TextF.c b/lib/Xm/TextF.c
index 3323d2bd..f66076da 100644
--- a/lib/Xm/TextF.c
+++ b/lib/Xm/TextF.c
@@ -1768,8 +1768,8 @@ PaintCursor(XmTextFieldWidget tf)
}
if (cursor_width > 0 && cursor_height > 0)
XCopyArea(XtDisplay(tf), tf->text.ibeam_off, XtWindow(tf),
- tf->text.save_gc, 0, 0, cursor_width,
- cursor_height, x, y);
+ tf->text.save_gc, src_x, 0, cursor_width,
+ cursor_height, x, y);
}
}
}
--
2.13.5

View File

@ -0,0 +1,20 @@
--- 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

View File

@ -0,0 +1,47 @@
--- 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 @@
NameClassValue TypeDefault
autoKeyFocusAutoKeyFocusT/FT
autoRaiseDelayAutoRaiseDelaymillisec500
-bitmap-Bitmap-directory/usr/X11R6/include-
+bitmap-Bitmap-directory/usr/include-
DirectoryDirectory/X11/bitmaps
clientAutoPlaceClientAutoPlaceT/FT
colormapFocus-ColormapFocus-stringkeyboard
@@ -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

View File

@ -0,0 +1,22 @@
--- 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

View File

@ -0,0 +1,11 @@
--- openmotif-2.3.1-old/clients/mwm/WmWinConf.c 2002-01-11 02:25:38.000000000 +0530
+++ openmotif-2.3.1-old/clients/mwm/WmWinConf.c 2013-08-23 12:47:45.000000000 +0530
@@ -1512,7 +1512,7 @@ DrawSegments (Display *dpy, Window win,
*************************************<->***********************************/
void MoveOutline (int x, int y, unsigned int width, unsigned int height)
{
- if (wmGD.freezeOnConfig)
+ if (wmGD.freezeOnConfig || !wmGD.pActiveSD->moveOpaque)
{
DrawOutline (x, y, width, height);
}

View File

@ -0,0 +1,427 @@
From 18de86345d5e455b815fe0395d2992b9a2f1195f Mon Sep 17 00:00:00 2001
From: Oleksiy Chernyavskyy <ochern@ics.com>
Date: Tue, 28 Mar 2017 01:11:59 +0300
Subject: [PATCH] removed bugfix 1565. See details on
http://bugs.motifzone.net/show_bug.cgi?id=1565
---
lib/Xm/ComboBox.c | 8 ---
lib/Xm/DropDown.c | 7 ---
lib/Xm/GrabShell.c | 15 +----
lib/Xm/GrabShellP.h | 3 -
lib/Xm/RCMenu.c | 40 ------------
lib/Xm/Xm.c | 173 ----------------------------------------------------
lib/Xm/XmI.h | 4 --
7 files changed, 2 insertions(+), 248 deletions(-)
diff --git a/lib/Xm/ComboBox.c b/lib/Xm/ComboBox.c
index cf507da4..1472e458 100644
--- a/lib/Xm/ComboBox.c
+++ b/lib/Xm/ComboBox.c
@@ -3164,9 +3164,6 @@ CreatePulldown(Widget parent,
Arg args[4];
ArgList merged_args;
Cardinal n;
-#ifdef FIX_1565
- XmGrabShellWidget grabsh;
-#endif
n = 0;
XtSetArg(args[n], XmNlayoutDirection, LayoutM(parent)), n++;
@@ -3178,11 +3175,6 @@ CreatePulldown(Widget parent,
merged_args, n + *num_args);
XtFree((char*)merged_args);
-#ifdef FIX_1565
- grabsh = (XmGrabShellWidget) shell;
- grabsh->grab_shell.set_input_focus = False;
-#endif
-
return shell;
}
diff --git a/lib/Xm/DropDown.c b/lib/Xm/DropDown.c
index 5cd15cae..37fec03f 100644
--- a/lib/Xm/DropDown.c
+++ b/lib/Xm/DropDown.c
@@ -2027,9 +2027,6 @@ CreatePopup(Widget w, ArgList args, Cardinal num_args)
Arg *new_list, largs[10];
Cardinal num_largs;
Widget sb;
-#ifdef FIX_1565
- XmGrabShellWidget grabsh;
-#endif
num_largs = 0;
XtSetArg(largs[num_largs], XmNoverrideRedirect, True); num_largs++;
@@ -2043,10 +2040,6 @@ CreatePopup(Widget w, ArgList args, Cardinal num_args)
xmGrabShellWidgetClass, w,
new_list,
num_largs + num_args);
-#ifdef FIX_1565
- grabsh = (XmGrabShellWidget) XmDropDown_popup_shell(cbw);
- grabsh->grab_shell.set_input_focus = False;
-#endif
XtFree((char *) new_list);
#ifdef FIX_1446
diff --git a/lib/Xm/GrabShell.c b/lib/Xm/GrabShell.c
index af13e0b7..a73f7cb9 100644
--- a/lib/Xm/GrabShell.c
+++ b/lib/Xm/GrabShell.c
@@ -284,9 +284,6 @@ Initialize(Widget req, /* unused */
/* CR 9920: Popdown may be requested before MapNotify. */
grabsh->grab_shell.mapped = False;
-#ifdef FIX_1565
- grabsh->grab_shell.set_input_focus = True;
-#endif
}
/*
@@ -399,16 +396,8 @@ MapNotifyHandler(Widget shell, XtPointer client_data,
XGetInputFocus(XtDisplay(shell), &grabshell->grab_shell.old_focus,
&grabshell->grab_shell.old_revert_to);
old_handler = XSetErrorHandler(IgnoreXErrors);
-#ifdef FIX_1565
- if (! grabshell->grab_shell.set_input_focus) {
- XmForceGrabKeyboard(shell, time);
- } else {
-#endif
- XSetInputFocus(XtDisplay(shell), XtWindow(shell), RevertToParent, time);
- XSync(XtDisplay(shell), False);
-#ifdef FIX_1565
- }
-#endif
+ XSetInputFocus(XtDisplay(shell), XtWindow(shell), RevertToParent, time);
+ XSync(XtDisplay(shell), False);
XSetErrorHandler(old_handler);
}
diff --git a/lib/Xm/GrabShellP.h b/lib/Xm/GrabShellP.h
index 025f0015..e2585540 100644
--- a/lib/Xm/GrabShellP.h
+++ b/lib/Xm/GrabShellP.h
@@ -56,9 +56,6 @@ typedef struct
Boolean mapped;
Window old_focus;
int old_revert_to;
-#ifdef FIX_1565
- Boolean set_input_focus;
-#endif
} XmGrabShellPart;
diff --git a/lib/Xm/RCMenu.c b/lib/Xm/RCMenu.c
index 8b156da5..2c698d4f 100644
--- a/lib/Xm/RCMenu.c
+++ b/lib/Xm/RCMenu.c
@@ -85,9 +85,6 @@ static char *rcsid = "$TOG: RCMenu.c /main/25 1999/05/24 18:06:57 samborn $";
#include "TraversalI.h"
#include "UniqueEvnI.h"
#include "VendorSI.h"
-#ifdef FIX_1565
-#include <Xm/GrabShell.h>
-#endif
#define FIX_1535
@@ -946,13 +943,6 @@ _XmMenuFocus(
XmMenuState mst = _XmGetMenuState((Widget)w);
Window tmpWindow;
int tmpRevert;
-#ifdef FIX_1565
- Widget shell;
-
- shell = w;
- while (! XtIsSubclass(shell, shellWidgetClass))
- shell = XtParent(shell);
-#endif
if (_time == CurrentTime)
_time = XtLastTimestampProcessed(XtDisplay(w));
@@ -993,11 +983,6 @@ _XmMenuFocus(
shell.popped_up))
**/
{
-#ifdef FIX_1565
- if (XtIsSubclass(shell, xmGrabShellWidgetClass) || XtIsSubclass(shell, xmMenuShellWidgetClass))
- XmForceGrabKeyboard(w, _time);
- else
-#endif
SetInputFocus(XtDisplay(w), mst->RC_menuFocus.oldFocus,
mst->RC_menuFocus.oldRevert,
mst->RC_menuFocus.oldTime);
@@ -1011,11 +996,6 @@ _XmMenuFocus(
*/
else
{
-#ifdef FIX_1565
- if (XtIsSubclass(shell, xmGrabShellWidgetClass) || XtIsSubclass(shell, xmMenuShellWidgetClass))
- XmForceGrabKeyboard(w, _time);
- else
-#endif
SetInputFocus(XtDisplay(w), mst->RC_menuFocus.oldFocus,
mst->RC_menuFocus.oldRevert,
mst->RC_menuFocus.oldTime);
@@ -1034,11 +1014,6 @@ _XmMenuFocus(
RC_menuFocus.oldFocus);
mst->RC_menuFocus.oldTime = _time - 1;
-#ifdef FIX_1565
- if (XtIsSubclass(shell, xmGrabShellWidgetClass) || XtIsSubclass(shell, xmMenuShellWidgetClass))
- XmForceGrabKeyboard(w, _time);
- else
-#endif
SetInputFocus(XtDisplay(w), XtWindow(w), mst->RC_menuFocus.oldRevert,
mst->RC_menuFocus.oldTime);
@@ -1052,11 +1027,6 @@ _XmMenuFocus(
XGetInputFocus(XtDisplay(w), &tmpWindow, &tmpRevert);
if (tmpWindow != XtWindow(w))
{
-#ifdef FIX_1565
- if (XtIsSubclass(shell, xmGrabShellWidgetClass) || XtIsSubclass(shell, xmMenuShellWidgetClass))
- XmForceGrabKeyboard(w, _time);
- else
-#endif
SetInputFocus(XtDisplay(w), XtWindow(w), tmpRevert, _time);
mst->RC_menuFocus.oldRevert = tmpRevert;
@@ -1078,11 +1048,6 @@ _XmMenuFocus(
break;
case XmMENU_MIDDLE:
-#ifdef FIX_1565
- if (XtIsSubclass(shell, xmGrabShellWidgetClass) || XtIsSubclass(shell, xmMenuShellWidgetClass))
- XmForceGrabKeyboard(w, _time);
- else
-#endif
SetInputFocus(XtDisplay(w), XtWindow(w),
mst->RC_menuFocus.oldRevert,
mst->RC_menuFocus.oldTime);
@@ -1097,11 +1062,6 @@ _XmMenuFocus(
if ((tmpWindow != XtWindow(w)) &&
(_time > mst->RC_menuFocus.oldTime))
{
-#ifdef FIX_1565
- if (XtIsSubclass(shell, xmGrabShellWidgetClass) || XtIsSubclass(shell, xmMenuShellWidgetClass))
- XmForceGrabKeyboard(w, _time);
- else
-#endif
SetInputFocus(XtDisplay(w), XtWindow(w), tmpRevert, _time);
mst->RC_menuFocus.oldRevert = tmpRevert;
diff --git a/lib/Xm/Xm.c b/lib/Xm/Xm.c
index 45d48b61..657f9041 100644
--- a/lib/Xm/Xm.c
+++ b/lib/Xm/Xm.c
@@ -40,10 +40,6 @@
#ifdef FIX_345
#include <X11/keysym.h>
#endif
-#ifdef FIX_1565
-#include <Xm/GrabShell.h>
-#include <Xm/MenuShell.h>
-#endif
/**************************************************************************
@@ -535,172 +531,3 @@ _XmAssignInsensitiveColor(Widget w)
}
#endif
-#ifdef FIX_1565
-
-typedef struct _GrabData GrabData;
-struct _GrabData {
- Widget w;
- GrabData *next;
-};
-
-static void _XmSendFocusEvent(Widget child, int type);
-static void _XmStartDispatcher(Display *display);
-static Boolean _XmEventDispatcher(XEvent *event);
-static void UnmapHandler(Widget w, XtPointer client_data, XEvent *event, Boolean *cont);
-static Boolean _UngrabKeyboard(Widget w);
-
-static GrabData *grabw_top = NULL;
-static int xm_dispatcher_on = 0;
-static XtEventDispatchProc saved_dispatcher_proc = NULL;
-static XtEventDispatchProc xt_dispatcher_proc = NULL;
-
-/*
- XmForceGrabKeyboard function is defined to be a substitutor of XSetInputFocus calls
- for popup and pulldown menus that should grab keyboard focus yet main window at the
- same time should visually stay in focus for window manager. This resolves focus flip
- issue when popup or pulldown menu is raised. ~ochern
- */
-void XmForceGrabKeyboard(Widget w, Time time)
-{
- GrabData *grabw;
-
- if (!w)
- return;
-
- while (! XtIsSubclass(w, shellWidgetClass))
- w = XtParent(w);
-
- if (! (XtIsSubclass(w, xmGrabShellWidgetClass) || XtIsSubclass(w, xmMenuShellWidgetClass)))
- return;
-
- _XmStartDispatcher(XtDisplay(w));
-
- _UngrabKeyboard(w);
-
- grabw = (GrabData *) XtMalloc(sizeof(GrabData));
- grabw->w = w;
- _XmProcessLock();
- grabw->next = grabw_top;
- grabw_top = grabw;
- _XmProcessUnlock();
-
- XtInsertEventHandler(w, StructureNotifyMask, False, UnmapHandler, NULL, XtListHead);
-
- _XmSendFocusEvent(w, FocusIn);
-
- /* Following the XSetInputFocus behaviour we force sending FocusOut (see XGrabKeyboard(3))
- event to a previous keyboard holder */
- XtGrabKeyboard(w, True, GrabModeAsync, GrabModeAsync, time);
-}
-
-static void _XmStartDispatcher(Display *display)
-{
- if (!display)
- return;
-
- _XmProcessLock();
-
- if (xm_dispatcher_on) {
- _XmProcessUnlock();
- return;
- }
-
- saved_dispatcher_proc = XtSetEventDispatcher(display, KeyPress, _XmEventDispatcher);
- if (! xt_dispatcher_proc)
- xt_dispatcher_proc = saved_dispatcher_proc;
- XtSetEventDispatcher(display, KeyRelease, _XmEventDispatcher);
- xm_dispatcher_on = 1;
-
- _XmProcessUnlock();
-}
-
-static Boolean _XmEventDispatcher(XEvent *event)
-{
- _XmProcessLock();
- if (grabw_top) {
- if (event->type == KeyPress || event->type == KeyRelease)
- event->xany.window = XtWindow(grabw_top->w);
- }
- _XmProcessUnlock();
-
- if (saved_dispatcher_proc) {
- return (*saved_dispatcher_proc)(event);
- } else if (xt_dispatcher_proc) {
- return (*xt_dispatcher_proc)(event);
- } else {
- if (grabw_top)
- XtSetEventDispatcher(XtDisplay(grabw_top->w), event->type, NULL);
- return XtDispatchEvent(event);
- }
-}
-
-static void UnmapHandler(Widget w, XtPointer client_data, XEvent *event, Boolean *cont)
-{
- if (event->type == UnmapNotify)
- _UngrabKeyboard(w);
- if (! grabw_top) {
- XtSetEventDispatcher(XtDisplay(w), KeyPress, saved_dispatcher_proc);
- XtSetEventDispatcher(XtDisplay(w), KeyRelease, saved_dispatcher_proc);
- xm_dispatcher_on = 0;
- }
-
- /* we do not call XtUngrabKeyboard since X server automatically performs an
- UngrabKeyboard request if the event window for an active keyboard grab becomes
- not viewable. ~ochern */
-}
-
-static Boolean _UngrabKeyboard(Widget w)
-{
- GrabData *grabw, *grabw_prev;
-
- _XmProcessLock();
- if (! grabw_top) {
- _XmProcessUnlock();
- return False;
- }
-
- grabw = grabw_top;
- grabw_prev = NULL;
- while(grabw && grabw->w != w) {
- grabw_prev = grabw;
- grabw = grabw->next;
- }
- if (grabw) {
- if (grabw_prev)
- grabw_prev->next = grabw->next;
- else
- grabw_top = grabw->next;
- XtFree((char*) grabw);
-
- _XmProcessUnlock();
- return True;
- }
-
- _XmProcessUnlock();
- return False;
-}
-
-static void _XmSendFocusEvent(Widget child, int type)
-{
- child = XtIsWidget(child) ? child : _XtWindowedAncestor(child);
- if (XtIsSensitive(child) && !child->core.being_destroyed
- && XtIsRealized(child) && (XtBuildEventMask(child) & FocusChangeMask))
- {
- XFocusChangeEvent event;
- Display* dpy = XtDisplay (child);
-
- event.type = type;
- event.serial = LastKnownRequestProcessed(dpy);
- event.send_event = True;
- event.display = dpy;
- event.window = XtWindow(child);
- event.mode = NotifyNormal;
- event.detail = NotifyAncestor;
- if (XFilterEvent((XEvent*)&event, XtWindow(child)))
- return;
- XtDispatchEventToWidget(child, (XEvent*)&event);
- }
-}
-
-#endif
-
diff --git a/lib/Xm/XmI.h b/lib/Xm/XmI.h
index ef6165c5..769e5f0a 100644
--- a/lib/Xm/XmI.h
+++ b/lib/Xm/XmI.h
@@ -237,9 +237,6 @@ extern Boolean _XmIsISO10646(Display *dpy,
extern XChar2b* _XmUtf8ToUcs2(char *draw_text,
size_t seg_len,
size_t *ret_str_len);
-#ifdef FIX_1565
-extern void XmForceGrabKeyboard(Widget w, Time time);
-#endif
/******** End Private Function Declarations ********/
@@ -294,7 +291,6 @@ extern Pixel _XmAssignInsensitiveColor(Widget w);
#define FIX_1501
#define FIX_1521
#define FIX_1505
-#define FIX_1565
#endif /* _XmI_h */
/* DON'T ADD ANYTHING AFTER THIS #endif */
--
2.13.5

6
SOURCES/xmbind Normal file
View File

@ -0,0 +1,6 @@
#! /bin/sh
if [ -x /usr/bin/xmbind ] ; then
/usr/bin/xmbind
fi

558
SPECS/motif.spec Normal file
View File

@ -0,0 +1,558 @@
Summary: Run-time libraries and programs
Name: motif
Version: 2.3.4
Release: 20%{?dist}
License: LGPLv2+
Group: System Environment/Libraries
Source: http://downloads.sf.net/motif/motif-%{version}-src.tgz
Source1: xmbind
URL: http://www.motifzone.net/
Obsoletes: openmotif < 2.3.4
Provides: openmotif = %{version}-%{release}
Requires: xorg-x11-xbitmaps
Requires: xorg-x11-xinit
BuildRequires: automake, libtool, autoconf, flex
# flex static libs have been part of flex for RHEL <= 6 and Fedora <= 12
%if 0%{?fedora} > 12 || 0%{?rhel} > 6
BuildRequires: flex-static
%endif
BuildRequires: byacc, pkgconfig
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: openmotif-2.3.1-rhbz_997241.patch
Patch50: motif-2.3.5-motifzone_1654.patch
Patch51: motif-2.3.4-motifzone_1564-88bdce1.patch
Patch52: revert-of-motifzone_1565.patch
Patch53: motifzone_1660.patch
Patch54: motifzone_1612.patch
Patch55: 0001-EditresCom-Fix-build-with-modern-systems.patch
# CVE-2023-43788
Patch56: 0001-Fix-CVE-2023-43788-Out-of-bounds-read-in-XpmCreateXp.patch
# CVE-2023-43789
Patch57: 0001-Fix-CVE-2023-43789-Out-of-bounds-read-on-XPM-with-co.patch
Conflicts: lesstif <= 0.92.32-6
%description
This is the Motif %{version} run-time environment. It includes the
Motif shared libraries, needed to run applications which are dynamically
linked against Motif and the Motif Window Manager mwm.
%package devel
Summary: Development libraries and header files
Group: Development/Libraries
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
header files and also static libraries necessary to build Motif applications.
%package static
Summary: Static libraries
Group: Development/Libraries
Conflicts: lesstif-devel <= 0.92.32-6
Requires: %{name}-devel%{?_isa} = %{version}-%{release}
%description static
This package contains the static Motif libraries.
%prep
%setup -q
%patch22 -p1 -b .no_demos
%patch23 -p1 -b .uil_lib
%patch43 -p1 -b .rgbtxt
%patch45 -p1 -b .mwmrc_dir
%patch46 -p1 -b .bindings
%patch47 -p1 -b .no_X11R6
%patch48 -p1 -b .format-security
%patch49 -p1 -b .rhbz_997241
%patch50 -p1 -b .motifzone_1654
%patch51 -p1 -b .motifzone_1564-88bdce1
%patch52 -p1 -b .revert-of-motifzone_1565
%patch53 -p1 -b .motifzone_1660
%patch54 -p1 -b .motifzone_1612
%patch55 -p1 -b .long_bit
%patch56 -p1 -b .cve-2023-43788
%patch57 -p1 -b .cve-2023-43789
%build
CFLAGS="$RPM_OPT_FLAGS -D_FILE_OFFSET_BITS=64" \
./autogen.sh --libdir=%{_libdir} --enable-static --enable-xft --enable-jpeg \
--enable-png
%configure --libdir=%{_libdir} --enable-static --enable-xft --enable-jpeg \
--enable-png
make clean %{?_smp_mflags}
make -C include
make %{?_smp_mflags}
%install
make DESTDIR=%{buildroot} install
install -d %{buildroot}/etc/X11/xinit/xinitrc.d
install -m 755 %{SOURCE1} %{buildroot}/etc/X11/xinit/xinitrc.d/xmbind.sh
rm -f %{buildroot}%{_libdir}/*.la
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%clean
rm -rf %{buildroot}
%files
%doc COPYING README RELEASE RELNOTES
/etc/X11/xinit/xinitrc.d/xmbind.sh
%dir /etc/X11/mwm
%config(noreplace) /etc/X11/mwm/system.mwmrc
%{_bindir}/mwm
%{_bindir}/xmbind
%{_includedir}/X11/bitmaps/*
%{_libdir}/libMrm.so.*
%{_libdir}/libUil.so.*
%{_libdir}/libXm.so.*
%{_datadir}/X11/bindings
%{_mandir}/man1/mwm*
%{_mandir}/man1/xmbind*
%{_mandir}/man4/mwmrc*
%files devel
%{_bindir}/uil
%{_includedir}/Mrm
%{_includedir}/Xm
%{_includedir}/uil
%{_libdir}/lib*.so
%{_mandir}/man1/uil.1*
%{_mandir}/man3/*
%{_mandir}/man5/*
%files static
%{_libdir}/lib*.a
%changelog
* Mon Nov 27 2023 José Expósito <jexposit@redhat.com> - 2.3.4-20
- Fix CVE-2023-43788: out of bounds read in XpmCreateXpmImageFromBuffer()
- Fix CVE-2023-43789: out of bounds read on XPM with corrupted colormap
* Mon Sep 26 2022 Olivier Fourdan <ofourdan@redhat.com> - 2.3.4-19
- Fix LONG_BIT definition missing (rhbz#2124810)
* Wed Sep 07 2022 Mika Penttila <mpenttil@redhat.com> - 2.3.4-18
- Version bump
* Fri Apr 08 2022 Mika Penttila <mpenttil@redhat.com> - 2.3.4-17
- Added forgotten patches and corrected release number
* Tue Sep 11 2018 Carlos Soriano <csoriano@redhat.com> - 2.3.4-16
- Fix hardened flags, make sure to always pass LDFLAGS on the spec
- Resolves: RHBZ#1624143
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.4-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.4-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Thu Jun 08 2017 Petr Šabata <contyk@redhat.com> - 2.3.4-13
- Fix issues with -Werror=format-security (#1448819)
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.4-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.4-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.3.4-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.3.4-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.3.4-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.3.4-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Tue May 28 2013 Michael Schwendt <mschwendt@fedoraproject.org> - 2.3.4-6
- fix missing BuildRequires flex-static (RHBZ#889175)
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.3.4-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Mon Jan 21 2013 Adam Tkac <atkac redhat com> - 2.3.4-4
- rebuild due to "jpeg8-ABI" feature drop
* Fri Oct 26 2012 Thomas Woerner <twoerner@redhat.com> 2.3.4-3
- do not use _isa for build requires
* Fri Oct 26 2012 Thomas Woerner <twoerner@redhat.com> 2.3.4-2
- fixed requirements according to review (RHBZ#870049)
- flex-static has been renamed to flex-devel with Fedora-18 and RHEL-7
* Thu Oct 25 2012 Thomas Woerner <twoerner@redhat.com> 2.3.4-1
- new version 2.3.4 with LGPL license
- fixed some rpmlint warnings
- new sub package for static libraries
- added /etc/X11/mwm directory
- removed defattrs
* Fri May 25 2012 Thomas Woerner <twoerner@redhat.com> 2.3.3-5
- dropped file requires for /usr/share/X11/XKeysymDB, not needed and not
available anymore
- added flex-static build requirement, because of flex package split
* Mon Aug 15 2011 Thomas Woerner <twoerner@redhat.com> 2.3.3-4
- fixed Label draws Xft text over border of its parent (rhbz#584300#c3)
(MotifZone bug #1521 refixed)
* Wed Aug 10 2011 Thomas Woerner <twoerner@redhat.com> 2.3.3-3
- fixed regression introduced with upstream FIX #1521 (rhbz#729346)
* Mon Aug 1 2011 Thomas Woerner <twoerner@redhat.com> 2.3.3-2
- fixed LabelGadget draws background over border of its parent (rhbz#584300)
(MotifZone bug #1517)
- fixed LabelGadget draws Xft text over border of its parent (rhbz#584300#c3)
(MotifZone bug #1521)
* Tue Mar 23 2010 Thomas Woerner <twoerner@redhat.com> 2.3.3-1
- new version 2.3.3 (bugfix release)
see RELNOTES file for the list of the bug fixes
* Fri Feb 26 2010 Thomas Woerner <twoerner@redhat.com> 2.3.2-1.1
- fixes according to review:
- fixed buildroot
- removed dot from summary
- removed dist tag from changelog
- added source download link
* Wed Jan 13 2010 Thomas Woerner <twoerner@redhat.com> 2.3.2-1
- new version 2.3.2 with upstream bug fixes: #1212, #1277, #1473, #1476
- spec file cleanup
- make build work with libtool
- all man pages are utf-8, no need to convert them anymore
- enabled EditRes support with upstream fix
- fixed parallel build
- fixed patches for fuzz 0
Related: rhbz#543948
* Tue Dec 08 2009 Dennis Gregorovic <dgregor@redhat.com> - 2.3.1-3.1
- Rebuilt for RHEL 6
* Wed Sep 23 2009 Dennis Gregorovic <dgregor@redhat.com> - 2.3.1-3
- update the bindings patch
* Wed Nov 12 2008 Thomas Woerner <twoerner@redhat.com> 2.3.1-2
- more fixes for unreliable pasting into XmTextField (MotifZone bug #1321)
Resolves: rhbz#405941
- the fix for MotifZone bug #1400 is not working for remote displays
* Thu Oct 2 2008 Thomas Woerner <twoerner@redhat.com> 2.3.1-1
- using final 2.3.1 dist archive
* Wed Sep 17 2008 Thomas Woerner <twoerner@redhat.com> 2.3.1-0
- rebase to 2.3.1 (CVS dist release)
Resolves: rhbz#455736
- fixes OpenMotif XmList problem
Resolves: rhbz#405801
- fixes List.c/ReplaceItem() segfaults when item selected
Resolves: rhbz#431460
- fixes [motifzone 1400 ] openmotif/ BadFont on multiple display application
Resolves: rhbz#438910
- fixes applications dump core in non-UTF8 environment
Resolves: rhbz#453722
- fixes lots of additional bugs: see release notes
* Tue Apr 1 2008 Thomas Woerner <twoerner@redhat.com> 2.3.0-0.5
- fixed SEGV error moving mouse over window related to XmToolTipGetLabel
(MotifZone bug fix #1388)
Resolves: rhbz#277381
* Thu Nov 8 2007 Thomas Woerner <twoerner@redhat.com> 2.3.0-0.4
- fixed title bar problem using XmNdialogTitle (MotifZone bug fix #1380)
Resolves: rhbz#353251
* Fri Dec 1 2006 Thomas Woerner <twoerner@redhat.com> 2.3.0-0.3
- fixed path to xmbind in /etc/X11/xinit/xinitrc.d/xmbind.sh
Resolves: rhbz#218032
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 2.3.0-0.2.1
- rebuild
* Tue Jun 6 2006 Thomas Woerner <twoerner@redhat.com> 2.3.0-0.2
- new CVS version 2006-06-06
- new buildprereq for pkgconfig
* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 2.3.0-0.1.9.2
- bump again for double-long bug on ppc(64)
* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 2.3.0-0.1.9.1
- rebuilt for new gcc4.1 snapshot and glibc changes
* Thu Feb 2 2006 Thomas Woerner <twoerner@redhat.com> 2.3.0-0.1.9
- new CVS version 2006-02-02
- fixed CVE-2005-3964: libUil buffer overflows (#174814)
- fixed XmList out of bound accesses (#167701)
- fixed pasting into TextField (#179549)
* Tue Jan 3 2006 Jesse Keating <jkeating@redhat.coM> 2.3.0-0.1.2
- Rebuilt on new gcc
* Fri Dec 9 2005 Thomas Woerner <twoerner@redhat.com> 2.3.0-0.1.1
- moved mwmrc to /etc/X11/mwm
- moved bindings to /usr/share/X11
- fixed paths in man pages containing /usr/X11R6
* Thu Dec 8 2005 Thomas Woerner <twoerner@redhat.com> 2.3.0-0.1.1
- enabled Xft, jpeg and png support
- patch for missing xft-config
- dropped duplicate include path in devel package
* Fri Dec 2 2005 Thomas Woerner <twoerner@redhat.com> 2.3.0-0.1
- new 2.3.0 (beta1)
- patch for new rgb.txt location (#174210)
Thanks to Ville Skyttä for the patch
* Fri Nov 18 2005 Thomas Woerner <twoerner@redhat.com> 2.2.3-15
- moved man pages to /usr/share/man (#173604)
* Wed Nov 16 2005 Jeremy Katz <katzj@redhat.com> - 2.2.3-14
- X11R6 stuff is gone
* Wed Nov 16 2005 Jeremy Katz <katzj@redhat.com> - 2.2.3-13
- also buildrequire xbitmaps
* Wed Nov 16 2005 Thomas Woerner <twoerner@redhat.com> 2.2.3-12
- rebuild for modular X
* Fri Sep 2 2005 Thomas Woerner <twoerner@redhat.com> 2.2.3-11
- fixed mrm initialization error in MrmOpenHierarchyPerDisplay (#167094)
Thanks to Arjan van de Ven for the patch.
* Mon Apr 4 2005 Thomas Woerner <twoerner@redhat.com> 2.2.3-10
- fixed possible libXpm overflows (#151642)
* Mon Feb 28 2005 Thomas Woerner <twoerner@redhat.com> 2.2.3-9
- Upstream Fix: Multiscreen mode
- Upstream Fix: Crash when restarting by a session manager (motifzone#1193)
- Upstream Fix: Crash when duplicating a window menu containing f.circle_up
(motifzone#1202)
- fixed divide by zero error in ComputeVizCount() (#144420)
- Xpmcreate: define LONG64 on 64 bit architectures (#143689)
* Mon Nov 29 2004 Thomas Woerner <twoerner@redhat.com> 2.2.3-8.1
- allow to write XPM files with absolute path names again (#140815)
* Wed Nov 24 2004 Miloslav Trmac <mitr@redhat.com> 2.2.3-8
- Convert man pages to UTF-8
* Mon Nov 22 2004 Thomas Woerner <twoerner@redhat.com> 2.2.3-7
- latest Xpm patches: CAN-2004-0914 (#134631)
- new patch for tmpnam in imake (only used for build)
* Thu Sep 30 2004 Thomas Woerner <twoerner@redhat.com> 2.2.3-6
- fixed CAN-2004-0687 (integer overflows) and CAN-2004-0688 (stack overflows)
in embedded Xpm library
* Wed Sep 29 2004 Thomas Woerner <twoerner@redhat.com> 2.2.3-5.2
- replaced libtoolize and autofoo* calls with a patch (autofoo)
* Wed Sep 29 2004 Thomas Woerner <twoerner@redhat.com> 2.2.3-5.1
- use new autofoo
* Wed Sep 1 2004 Thomas Woerner <twoerner@redhat.com> 2.2.3-5
- libXp now moved to xorg-x11-deprecated-libs, therefore no compatibility
with XFree86 packages anymore.
* Mon Aug 30 2004 Thomas Woerner <twoerner@redhat.com> 2.2.3-4.3
- devel package: added requires for XFree86-devel (#131202)
* Thu Jun 17 2004 Thomas Woerner <twoerner@redhat.com> 2.2.3-4.2
- rebuilt for fc3
* Wed Jun 16 2004 Thomas Woerner <twoerner@redhat.com> 2.2.3-4.1
- renamed xmbind script to xmbind.sh (#126116)
* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com>
- rebuilt
* Tue Jun 8 2004 Thomas Woerner <twoerner@redhat.com> 2.2.3-3
- fixed popup menus fail on Tarantella/VNC (#123027)
- fixed character not supported problem (#124960)
- fixed data out of bounds bug (#124961)
* Wed Apr 14 2004 Thomas Woerner <twoerner@redhat.com> 2.2.3-2
- 2.2.3 final version
* Tue Mar 23 2004 Thomas Woerner <twoerner@redhat.com> 2.2.3-1.9.2
- final CVS version
* Wed Mar 17 2004 Thomas Woerner <twoerner@redhat.com> 2.2.3-1.9.1
- new openmotif 2.2.3 beta version
* Mon Mar 8 2004 Thomas Woerner <twoerner@redhat.com> 2.2.2-17
- fixed popdown problem in ToolTip (#75730)
* Tue Mar 02 2004 Elliot Lee <sopwith@redhat.com>
- rebuilt
* Thu Feb 19 2004 Thomas Woerner <twoerner@redhat.com> 2.2.2-16.3
- rebuilt
* Thu Dec 18 2003 Thomas Woerner <twoerner@redhat.com>
- added missing BuildRequires for XFree86-devel
* Thu Nov 27 2003 Thomas Woerner <twoerner@redhat.com> 2.2.2-16.2
- removed rpath
* Mon Aug 27 2003 Thomas Woerner <twoerner@redhat.com> 2.2.2-16
- fixed ToggleBG (#101159)
* Thu Jul 31 2003 <timp@redhat.com> 2.2.2-15.2
- rebuild for RHEL
* Wed Jul 30 2003 Thomas Woerner <twoerner@redhat.com> 2.2.2-15
- fixed ToggleB (#101159)
* Wed Jan 22 2003 Tim Powers <timp@redhat.com>
- rebuilt
* Tue Jan 21 2003 Thomas Woerner <twoerner@redhat.com> 2.2.2-13
- fix for Xmu/EditRes conflict (bug #80777)
- fix for wml and utf-8 (bug #80271)
- fix for Ext18List (bug #74502)
* Thu Nov 14 2002 Than Ngo <than@redhat.com> 2.2.2-12.2
- add buildprereq byacc and flex (bug #77860)
* Fri Nov 8 2002 Than Ngo <than@redhat.com> 2.2.2-12.1
- fix some build problem
* Mon Aug 27 2002 Than Ngo <than@redhat.com> 2.2.2-12
- Fixed a segmentation fault in mkcatdefs (bug #71955)
* Wed Jul 24 2002 Than Ngo <than@redhat.com> 2.2.2-11
- Added missing symlinks (bug #69117)
* Tue Jul 23 2002 Tim Powers <timp@redhat.com> 2.2.2-10
- build using gcc-3.2-0.1
* Tue Jun 25 2002 Than Ngo <than@redhat.com> 2.2.2-9
- fix to build openmotif (bug #64176)
* Thu Jun 13 2002 Than Ngo <than@redhat.com> 2.2.2-8
- rebuild in new enviroment
* Sun May 26 2002 Tim Powers <timp@redhat.com>
- automated rebuild
* Thu May 23 2002 Harald Hoyer <harald@redhat.de> 2.2.2-6
- patched ltmain.sh to link properly
* Wed May 22 2002 Harald Hoyer <harald@redhat.de> 2.2.2-6
- specified libraries by full name in files section
(libMrm was missing on alpha)
* Tue Mar 26 2002 Than Ngo <than@redhat.com> 2.2.2-5
- update new 2.2.2 from ICS
* Sun Mar 24 2002 Than Ngo <than@redhat.com> 2.2.2-4
- add missing uil
* Fri Mar 22 2002 Tim Powers <timp@redhat.com>
- rebuilt to try and shake some broken deps in the devel package
* Thu Mar 21 2002 Than Ngo <than@redhat.com> 2.2.2-2
- rebuild
* Thu Mar 21 2002 Than Ngo <than@redhat.com> 2.2.2-1
- update to 2.2.2 release
* Mon Feb 22 2002 Than Ngo <than@redhat.com> 2.2.1-3
- conflict with older lesstif
* Mon Feb 22 2002 Than Ngo <than@redhat.com> 2.2.1-2
- fix bug #60816
* Fri Feb 22 2002 Than Ngo <than@redhat.com> 2.2.1-1
- update to 2.2.1 release
- remove somme patches, which are included in 2.2.1
* Fri Feb 22 2002 Tim Powers <timp@redhat.com>
- rebuilt in new environment
* Fri Jan 25 2002 Tim Powers <timp@redhat.com>
- don't obsolete lesstif anymore, play nicely together
- rebuild against new toolchain
* Wed Jan 21 2002 Than Ngo <than@redhat.com> 2.1.30-11
- add some patches from Darrell Commander (supporting largefile)
- fix to build on s390
* Thu Jan 17 2002 Than Ngo <than@redhat.com> 2.1.30-10
- rebuild in 8.0
* Wed Sep 6 2001 Than Ngo <than@redhat.com>
- rebuild for ExtraBinge 7.2
* Thu May 03 2001 Than Ngo <than@redhat.com>
- add 3 official motif patches
- add rm -rf $RPM_BUILD_ROOT in install section
- remove some old patches which are now in official patches
* Fri Dec 29 2000 Than Ngo <than@redhat.com>
- don't build static debug libraries
* Mon Dec 18 2000 Than Ngo <than@redhat.com>
- bzip2 source
* Mon Jul 24 2000 Than Ngo <than@redhat.de>
- rebuilt against gcc-2.96-44
* Wed Jul 12 2000 Than Ngo <than@redhat.de>
- rebuilt
* Sun Jun 11 2000 Than Ngo <than@redhat.de>
- fix imake to built with gcc-2.96 (thanks Jakup)
- put bitmaps in /usr/X11R6/include/X11/bitmaps
- put bindings in /usr/X11R6/lib/Xm/bindings
- add define -D_GNU_SOURCE to build Motif
- gzip man pages
- cleanup specfile
* Mon May 29 2000 Bernhard Rosenkraenzer <bero@redhat.com>
- Update to patchlevel 2
- remove bindings patch, it's included in pl2
* Tue May 16 2000 Matt Wilson <msw@redhat.com>
- use -fPIC on sparc
- fixed Ngo's "fixes"
* Mon May 15 2000 Ngo Than <than@redhat.de>
- added description.
- fixed spec, added uil stuff.
* Mon May 15 2000 Matt Wilson <msw@redhat.com>
- initialization of spec file.

View File

@ -1 +0,0 @@
motif package is retired on branch c10s for BAKERY-412