[packages/tix] Rel 6

arekm arekm at pld-linux.org
Sat Apr 11 14:00:22 CEST 2026


commit e1faa21ed746d5cd489d701d95ba23897c518b58
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Sat Apr 11 13:59:52 2026 +0200

    Rel 6

 tix-c89.patch           | 230 ++++++++++++++++++++++++++++++++++++++++++++++++
 tix-covscan-fixes.patch |  52 +++++++++++
 tix-implicit-int.patch  |  56 ++++++++++++
 tix-tcl86.patch         |  27 ++++++
 tix.spec                |   3 +-
 5 files changed, 367 insertions(+), 1 deletion(-)
---
diff --git a/tix.spec b/tix.spec
index e728403..fcbca0b 100644
--- a/tix.spec
+++ b/tix.spec
@@ -6,7 +6,7 @@ Summary(pl.UTF-8):	Wiele widgetów (takich jak notepad) dla Tk
 Summary(tr.UTF-8):	Tk için ek arayüz elemanları (not defterleri v.b.)
 Name:		tix
 Version:	%{major}.3
-Release:	5
+Release:	6
 Epoch:		1
 License:	BSD
 Group:		Development/Languages/Tcl
@@ -117,6 +117,7 @@ install man/man.macros $RPM_BUILD_ROOT%{_datadir}/groff/%{groff_version}/tmac/ti
 cp -af demos $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
 
 rm -f $RPM_BUILD_ROOT%{_libdir}/Tix%{major}/bitmaps/mktransgif.tcl*
+rm -f $RPM_BUILD_ROOT%{_libdir}/Tix%{version}/{README.txt,license.terms}
 
 %clean
 rm -rf $RPM_BUILD_ROOT
diff --git a/tix-c89.patch b/tix-c89.patch
new file mode 100644
index 0000000..4a1ac9a
--- /dev/null
+++ b/tix-c89.patch
@@ -0,0 +1,230 @@
+Fix various incompatible pointers by switching to correct
+const-qualified types.
+
+Several problematic casts can be removed, except for the one in the
+masterPtr->data in ImgXpmGetData.
+
+Submitted upstream: <https://sourceforge.net/p/tix/bugs/113/>
+
+diff --git a/generic/tixDItem.c b/generic/tixDItem.c
+index 602c506d158d8a98..d23a4eb036aa8997 100644
+--- a/generic/tixDItem.c
++++ b/generic/tixDItem.c
+@@ -30,7 +30,7 @@ static int   DItemParseProc _ANSI_ARGS_((ClientData clientData,
+ 		Tcl_Interp *interp, Tk_Window tkwin, CONST84 char *value,
+ 		char *widRec, int offset));
+ 
+-static char *DItemPrintProc _ANSI_ARGS_((
++static const char *DItemPrintProc _ANSI_ARGS_((
+ 		ClientData clientData, Tk_Window tkwin, char *widRec,
+ 		int offset, Tcl_FreeProc **freeProcPtr));
+ 
+@@ -548,7 +548,7 @@ static int DItemParseProc(clientData, interp, tkwin, value, widRec,offset)
+     return TCL_OK;
+ }
+ 
+-static char *DItemPrintProc(clientData, tkwin, widRec,offset, freeProcPtr)
++static const char *DItemPrintProc(clientData, tkwin, widRec,offset, freeProcPtr)
+     ClientData clientData;
+     Tk_Window tkwin;
+     char *widRec;
+diff --git a/generic/tixDiStyle.c b/generic/tixDiStyle.c
+index 3c450cf001d075ba..fba76706afcd16f0 100644
+--- a/generic/tixDiStyle.c
++++ b/generic/tixDiStyle.c
+@@ -31,7 +31,7 @@ typedef struct StyleInfo {
+ static int   		DItemStyleParseProc _ANSI_ARGS_((ClientData clientData,
+ 			    Tcl_Interp *interp, Tk_Window tkwin,
+ 			    CONST84 char *value,char *widRec, int offset));
+-static char *		DItemStylePrintProc _ANSI_ARGS_((
++static const char *	DItemStylePrintProc _ANSI_ARGS_((
+ 			    ClientData clientData, Tk_Window tkwin, 
+ 			    char *widRec, int offset,
+ 			    Tcl_FreeProc **freeProcPtr));
+@@ -998,7 +998,7 @@ not_found:
+     return TCL_ERROR;
+ }
+ 
+-static char *DItemStylePrintProc(clientData, tkwin, widRec,offset, freeProcPtr)
++static const char *DItemStylePrintProc(clientData, tkwin, widRec,offset, freeProcPtr)
+     ClientData clientData;
+     Tk_Window tkwin;
+     char *widRec;
+diff --git a/generic/tixImgCmp.c b/generic/tixImgCmp.c
+index 4ba60ca06541156e..5df05c4eb32a4611 100644
+--- a/generic/tixImgCmp.c
++++ b/generic/tixImgCmp.c
+@@ -142,8 +142,8 @@ typedef union CmpItemPtr {
+  * The type record for bitmap images:
+  */
+ static int		ImgCmpCreate _ANSI_ARGS_((Tcl_Interp *interp,
+-			    char *name, int argc, Tcl_Obj *CONST objv[],
+-			    Tk_ImageType *typePtr, Tk_ImageMaster master,
++			    const char *name, int argc, Tcl_Obj *CONST objv[],
++			    const Tk_ImageType *typePtr, Tk_ImageMaster master,
+ 			    ClientData *clientDataPtr));
+ static ClientData	ImgCmpGet _ANSI_ARGS_((Tk_Window tkwin,
+ 			    ClientData clientData));
+@@ -378,11 +378,11 @@ static int
+ ImgCmpCreate(interp, name, argc, objv, typePtr, master, clientDataPtr)
+     Tcl_Interp *interp;		/* Interpreter for application containing
+ 				 * image. */
+-    char *name;			/* Name to use for image. */
++    const char *name;		/* Name to use for image. */
+     int argc;			/* Number of arguments. */
+     Tcl_Obj *CONST objv[];	/* Argument strings for options (doesn't
+ 				 * include image name or type). */
+-    Tk_ImageType *typePtr;	/* Pointer to our type record (not used). */
++    const Tk_ImageType *typePtr;/* Pointer to our type record (not used). */
+     Tk_ImageMaster master;	/* Token for image, to be used by us in
+ 				 * later callbacks. */
+     ClientData *clientDataPtr;	/* Store manager's token for image here;
+diff --git a/generic/tixImgXpm.c b/generic/tixImgXpm.c
+index 23c3981c6ea29fe8..16afe3b2318cf6e2 100644
+--- a/generic/tixImgXpm.c
++++ b/generic/tixImgXpm.c
+@@ -22,8 +22,8 @@
+  */
+ 
+ static int		ImgXpmCreate _ANSI_ARGS_((Tcl_Interp *interp,
+-			    char *name, int argc, Tcl_Obj *CONST objv[],
+-			    Tk_ImageType *typePtr, Tk_ImageMaster master,
++			    const char *name, int argc, Tcl_Obj *CONST objv[],
++			    const Tk_ImageType *typePtr, Tk_ImageMaster master,
+ 			    ClientData *clientDataPtr));
+ static ClientData	ImgXpmGet _ANSI_ARGS_((Tk_Window tkwin,
+ 			    ClientData clientData));
+@@ -45,11 +45,11 @@ static int		ImgXpmConfigureMaster _ANSI_ARGS_((
+ 			    int flags));
+ static int		ImgXpmGetData _ANSI_ARGS_((Tcl_Interp *interp,
+ 			    PixmapMaster *masterPtr));
+-static char ** 		ImgXpmGetDataFromFile _ANSI_ARGS_((Tcl_Interp * interp,
++static const char **	ImgXpmGetDataFromFile _ANSI_ARGS_((Tcl_Interp * interp,
+ 			    char * string, int * numLines_return));
+-static char ** 		ImgXpmGetDataFromId _ANSI_ARGS_((Tcl_Interp * interp,
++static const char **	ImgXpmGetDataFromId _ANSI_ARGS_((Tcl_Interp * interp,
+ 			    CONST84 char * id));
+-static char ** 		ImgXpmGetDataFromString _ANSI_ARGS_((Tcl_Interp*interp,
++static const char **	ImgXpmGetDataFromString _ANSI_ARGS_((Tcl_Interp*interp,
+ 			    char * string, int * numLines_return));
+ static void 		ImgXpmGetPixmapFromData _ANSI_ARGS_((
+ 			    Tcl_Interp * interp,
+@@ -115,11 +115,11 @@ static int
+ ImgXpmCreate(interp, name, argc, objv, typePtr, master, clientDataPtr)
+     Tcl_Interp *interp;		/* Interpreter for application containing
+ 				 * image. */
+-    char *name;			/* Name to use for image. */
++    const char *name;		/* Name to use for image. */
+     int argc;			/* Number of arguments. */
+     Tcl_Obj *CONST objv[];	/* Argument strings for options (doesn't
+ 				 * include image name or type). */
+-    Tk_ImageType *typePtr;	/* Pointer to our type record (not used). */
++    const Tk_ImageType *typePtr;/* Pointer to our type record (not used). */
+     Tk_ImageMaster master;	/* Token for image, to be used by us in
+ 				 * later callbacks. */
+     ClientData *clientDataPtr;	/* Store manager's token for image here;
+@@ -286,7 +286,7 @@ ImgXpmGetData(interp, masterPtr)
+     Tcl_Interp *interp;			/* For reporting errors. */
+     PixmapMaster *masterPtr;
+ {
+-    char ** data = NULL;
++    const char ** data = NULL;
+     int  isAllocated = 0;	/* do we need to free "data"? */
+     int listArgc;
+     CONST84 char ** listArgv = NULL;
+@@ -342,7 +342,7 @@ ImgXpmGetData(interp, masterPtr)
+ 	    ckfree((char*)masterPtr->data);
+ 	}
+ 	masterPtr->isDataAlloced = isAllocated;
+-	masterPtr->data = data;
++	masterPtr->data = (char **)data;
+ 	masterPtr->size[0] = size[0];
+ 	masterPtr->size[1] = size[1];
+ 	masterPtr->cpp = cpp;
+@@ -363,7 +363,7 @@ ImgXpmGetData(interp, masterPtr)
+     return code;
+ }
+ 

+-static char ** ImgXpmGetDataFromId(interp, id)
++static const char ** ImgXpmGetDataFromId(interp, id)
+     Tcl_Interp * interp;
+     CONST84 char * id;
+ {
+@@ -378,13 +378,13 @@ static char ** ImgXpmGetDataFromId(interp, id)
+     if (hashPtr == NULL) {
+ 	Tcl_AppendResult(interp, "unknown pixmap ID \"", id,
+ 	    "\"", NULL);
+-	return (char**)NULL;
++	return NULL;
+     } else {
+-	return (char**)Tcl_GetHashValue(hashPtr);
++	return Tcl_GetHashValue(hashPtr);
+     }
+ }
+ 

+-static char ** ImgXpmGetDataFromString(interp, string, numLines_return)
++static const char ** ImgXpmGetDataFromString(interp, string, numLines_return)
+     Tcl_Interp * interp;
+     char * string;
+     int * numLines_return;
+@@ -392,7 +392,7 @@ static char ** ImgXpmGetDataFromString(interp, string, numLines_return)
+     int quoted;
+     char * p, * list;
+     int numLines;
+-    char ** data;
++    const char ** data;
+ 
+     /* skip the leading blanks (leading blanks are not defined in the
+      * the XPM definition, but skipping them shouldn't hurt. Also, the ability
+@@ -510,17 +510,17 @@ static char ** ImgXpmGetDataFromString(interp, string, numLines_return)
+ 
+   error:
+     Tcl_AppendResult(interp, "File format error", NULL);
+-    return (char**) NULL;
++    return NULL;
+ }
+ 

+-static char ** ImgXpmGetDataFromFile(interp, fileName, numLines_return)
++static const char ** ImgXpmGetDataFromFile(interp, fileName, numLines_return)
+     Tcl_Interp * interp;
+     char * fileName;
+     int * numLines_return;
+ {
+     FILE * fd = NULL;
+     int size, n;
+-    char ** data;
++    const char ** data;
+     char *cmdBuffer = NULL;
+     Tcl_DString buffer;			/* initialized by Tcl_TildeSubst */
+ 
+@@ -588,7 +588,7 @@ static char ** ImgXpmGetDataFromFile(interp, fileName, numLines_return)
+ 	ckfree(cmdBuffer);
+     }
+     Tcl_DStringFree(&buffer);
+-    return (char**)NULL;
++    return NULL;
+ }
+ 
+ 
+diff --git a/generic/tixUtils.c b/generic/tixUtils.c
+index 998acb84e3f8c79c..e7967b51ecd3a1e4 100644
+--- a/generic/tixUtils.c
++++ b/generic/tixUtils.c
+@@ -24,7 +24,7 @@
+ static int	ReliefParseProc(ClientData clientData,
+ 	Tcl_Interp *interp, Tk_Window tkwin, CONST84 char *value,
+ 	char *widRec, int offset);
+-static char *	ReliefPrintProc(ClientData clientData,
++static const char *	ReliefPrintProc(ClientData clientData,
+ 	Tk_Window tkwin, char *widRec, int offset,
+ 	Tix_FreeProc **freeProcPtr);
+ 
+@@ -637,7 +637,7 @@ ReliefParseProc(clientData, interp, tkwin, value, widRec,offset)
+     return TCL_ERROR;
+ }
+ 
+-static char *
++static const char *
+ ReliefPrintProc(clientData, tkwin, widRec,offset, freeProcPtr)
+     ClientData clientData;
+     Tk_Window tkwin;
diff --git a/tix-covscan-fixes.patch b/tix-covscan-fixes.patch
new file mode 100644
index 0000000..9afa215
--- /dev/null
+++ b/tix-covscan-fixes.patch
@@ -0,0 +1,52 @@
+Fix issues found by Coverity scan (from Fedora):
+- add missing #include <ctype.h>
+- fix comparison bug in tixGrUtl.c
+- fix logic errors in Python demo files
+
+diff -up Tix8.4.3/generic/tixGrUtl.c.orig Tix8.4.3/generic/tixGrUtl.c
+--- Tix8.4.3/generic/tixGrUtl.c.orig	2004-03-28 04:44:56.000000000 +0200
++++ Tix8.4.3/generic/tixGrUtl.c	2018-08-01 14:49:18.839262337 +0200
+@@ -191,7 +191,7 @@ int Tix_GrConfigSize(interp, wPtr, argc,
+ 	if (sizePtr->charValue != newSize.charValue) {
+ 	    changed = 1;
+ 	}
+-	if (sizePtr->pad1      != newSize.pad0) {
++	if (sizePtr->pad0      != newSize.pad0) {
+ 	    changed = 1;
+ 	}
+ 	if (sizePtr->pad1      != newSize.pad1) {
+diff -up Tix8.4.3/generic/tix.h.orig Tix8.4.3/generic/tix.h
+--- Tix8.4.3/generic/tix.h.orig	2008-02-28 05:35:16.000000000 +0100
++++ Tix8.4.3/generic/tix.h	2018-08-01 14:45:03.306004016 +0200
+@@ -39,6 +39,7 @@ extern "C" {
+ #endif
+ #ifdef HAVE_STDLIB_H
+ #include <stdlib.h>
++#include <ctype.h>
+ #endif
+ 
+ #ifndef CONST84
+diff -up Tix8.4.3/Python/Demo/tix/samples/CmpImg.py.orig Tix8.4.3/Python/Demo/tix/samples/CmpImg.py
+--- Tix8.4.3/Python/Demo/tix/samples/CmpImg.py.orig	2001-12-10 00:29:43.000000000 +0100
++++ Tix8.4.3/Python/Demo/tix/samples/CmpImg.py	2018-08-01 14:49:57.959301881 +0200
+@@ -148,7 +148,7 @@ def RunSample(w):
+     if not w.img0:
+ 	w.img0 = Tix.Image('bitmap', data=network_bitmap)
+     w.img1 = Tix.Image('pixmap', data=hard_disk_pixmap)
+-    if not w.img0:
++    if not w.img1:
+ 	w.img1 = Tix.Image('bitmap', data=hard_disk_bitmap)
+ 
+     hdd = Tix.Button(w, padx=4, pady=1, width=120)
+diff -up Tix8.4.3/PyTix-2.0/demos/samples/CmpImg.py.orig Tix8.4.3/PyTix-2.0/demos/samples/CmpImg.py
+--- Tix8.4.3/PyTix-2.0/demos/samples/CmpImg.py.orig	2000-11-05 20:57:44.000000000 +0100
++++ Tix8.4.3/PyTix-2.0/demos/samples/CmpImg.py	2018-08-01 14:50:14.934319043 +0200
+@@ -148,7 +148,7 @@ def RunSample(w):
+     if not w.img0:
+ 	w.img0 = Tix.Image('bitmap', data=network_bitmap)
+     w.img1 = Tix.Image('pixmap', data=hard_disk_pixmap)
+-    if not w.img0:
++    if not w.img1:
+ 	w.img1 = Tix.Image('bitmap', data=hard_disk_bitmap)
+ 
+     hdd = Tix.Button(w, padx=4, pady=1, width=120)
diff --git a/tix-implicit-int.patch b/tix-implicit-int.patch
new file mode 100644
index 0000000..0725a61
--- /dev/null
+++ b/tix-implicit-int.patch
@@ -0,0 +1,56 @@
+Avoid implicit int declarations, a feature removed from C language with C99.
+
+Submitted upstream: <https://sourceforge.net/p/tix/bugs/112/>
+
+diff --git a/generic/tixDiImg.c b/generic/tixDiImg.c
+index da20d53c16cca3c7..3fb9f800fcd9e52a 100644
+--- a/generic/tixDiImg.c
++++ b/generic/tixDiImg.c
+@@ -352,6 +352,8 @@ Tix_ImageItemDisplay(drawable, iPtr, x, y, width, height, xOffset, yOffset,
+     int y;
+     int width;
+     int height;
++    int xOffset;
++    int yOffset;
+     int flags;
+ {
+     TixImageItem *itPtr = (TixImageItem *)iPtr;
+diff --git a/generic/tixDiWin.c b/generic/tixDiWin.c
+index e62529ecd19a9790..a96cd287e11c34e3 100644
+--- a/generic/tixDiWin.c
++++ b/generic/tixDiWin.c
+@@ -458,6 +458,8 @@ Tix_WindowItemDisplay(drawable, iPtr, x, y, width, height, xOffset, yOffset,
+     int y;
+     int width;
+     int height;
++    int xOffset;
++    int yOffset;
+     int flags;
+ {
+     TixWindowItem *itPtr = (TixWindowItem *)iPtr;
+diff --git a/generic/tixForm.c b/generic/tixForm.c
+index 5ab21f15a99bfde9..ba56617e436f748b 100644
+--- a/generic/tixForm.c
++++ b/generic/tixForm.c
+@@ -150,7 +150,7 @@ static Tcl_HashTable masterInfoHashTable;
+ /*
+  * Have static variables in this module been initialized?
+  */
+-static initialized = 0;
++static int initialized = 0;
+ 
+ static int ReqSize(tkwin, axis)
+     Tk_Window tkwin;
+diff --git a/unix/tixUnixMwm.c b/unix/tixUnixMwm.c
+index 3c4ac4d83bc51c80..02b58c16311b2c54 100644
+--- a/unix/tixUnixMwm.c
++++ b/unix/tixUnixMwm.c
+@@ -768,7 +768,7 @@ GetMwmInfo(interp, tkwin)
+     Tcl_Interp * interp;
+     Tk_Window tkwin;
+ {
+-    static inited = 0;
++    static int inited = 0;
+     Tcl_HashEntry *hashPtr;
+     int isNew;
+ 
diff --git a/tix-tcl86.patch b/tix-tcl86.patch
new file mode 100644
index 0000000..61ad391
--- /dev/null
+++ b/tix-tcl86.patch
@@ -0,0 +1,27 @@
+Use Tcl_GetStringResult() instead of directly accessing interp->result
+for Tcl 8.6 compatibility (from Fedora).
+
+diff --git a/generic/tixGrSort.c b/generic/tixGrSort.c
+index 7dee30f..d45f51d 100644
+--- a/generic/tixGrSort.c
++++ b/generic/tixGrSort.c
+@@ -425,7 +425,7 @@ SortCompareProc(first, second)
+ 	}
+     } else {
+ 	int oldLength;
+-	char *end;
++	char *end, *result;
+ 
+ 	/*
+ 	 * Generate and evaluate a command to determine which string comes
+@@ -447,8 +447,8 @@ SortCompareProc(first, second)
+ 	 * Parse the result of the command.
+ 	 */
+ 
+-	order = strtol(sortInterp->result, &end, 0);
+-	if ((end == sortInterp->result) || (*end != 0)) {
++	order = strtol(result = Tcl_GetStringResult(sortInterp), &end, 0);
++	if ((end == result) || (*end != 0)) {
+ 	    Tcl_ResetResult(sortInterp);
+ 	    Tcl_AppendResult(sortInterp,
+ 		    "comparison command returned non-numeric result",
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/tix.git/commitdiff/e1faa21ed746d5cd489d701d95ba23897c518b58



More information about the pld-cvs-commit mailing list