tix 8.4 to tcl 8.5 compatibility patch, spec fixes

This commit is contained in:
vcrhonek 2008-01-10 08:11:37 +00:00
parent ace4eeecc9
commit e36ad87514
2 changed files with 280 additions and 19 deletions

View File

@ -1,14 +1,272 @@
diff -up Tix8.4.2/generic/tixImgXpm.c_old Tix8.4.2/generic/tixImgXpm.c
--- Tix8.4.2/generic/tixImgXpm.c_old 2008-01-08 11:53:37.000000000 +0100
+++ Tix8.4.2/generic/tixImgXpm.c 2008-01-08 12:04:49.000000000 +0100
@@ -45,19 +45,19 @@ static int ImgXpmConfigureMaster _ANSI_
int flags));
static int ImgXpmGetData _ANSI_ARGS_((Tcl_Interp *interp,
PixmapMaster *masterPtr));
-static char ** ImgXpmGetDataFromFile _ANSI_ARGS_((Tcl_Interp * interp,
+static CONST84 char ** ImgXpmGetDataFromFile _ANSI_ARGS_((Tcl_Interp * interp,
char * string, int * numLines_return));
-static char ** ImgXpmGetDataFromId _ANSI_ARGS_((Tcl_Interp * interp,
+static CONST84 char ** ImgXpmGetDataFromId _ANSI_ARGS_((Tcl_Interp * interp,
CONST84 char * id));
-static char ** ImgXpmGetDataFromString _ANSI_ARGS_((Tcl_Interp*interp,
+static CONST84 char ** ImgXpmGetDataFromString _ANSI_ARGS_((Tcl_Interp*interp,
char * string, int * numLines_return));
static void ImgXpmGetPixmapFromData _ANSI_ARGS_((
Tcl_Interp * interp,
PixmapMaster *masterPtr,
PixmapInstance *instancePtr));
-static char * GetType _ANSI_ARGS_((char * colorDefn,
+static CONST84 char * GetType _ANSI_ARGS_((CONST84 char * colorDefn,
int * type_ret));
-static char * GetColor _ANSI_ARGS_((char * colorDefn,
+static CONST84 char * GetColor _ANSI_ARGS_((CONST84 char * colorDefn,
char * colorName, int * type_ret));
/*
@@ -286,7 +286,7 @@ ImgXpmGetData(interp, masterPtr)
Tcl_Interp *interp; /* For reporting errors. */
PixmapMaster *masterPtr;
{
- char ** data = NULL;
+ CONST84 char ** data = NULL;
int isAllocated = 0; /* do we need to free "data"? */
int listArgc;
CONST84 char ** listArgv = NULL;
@@ -363,7 +363,7 @@ ImgXpmGetData(interp, masterPtr)
return code;
}
-static char ** ImgXpmGetDataFromId(interp, id)
+static CONST84 char ** ImgXpmGetDataFromId(interp, id)
Tcl_Interp * interp;
CONST84 char * id;
{
@@ -378,13 +378,13 @@ static char ** ImgXpmGetDataFromId(inter
if (hashPtr == NULL) {
Tcl_AppendResult(interp, "unknown pixmap ID \"", id,
"\"", NULL);
- return (char**)NULL;
+ return NULL;
} else {
- return (char**)Tcl_GetHashValue(hashPtr);
+ return (CONST84 char**)Tcl_GetHashValue(hashPtr);
}
}
-static char ** ImgXpmGetDataFromString(interp, string, numLines_return)
+static CONST84 char ** ImgXpmGetDataFromString(interp, string, numLines_return)
Tcl_Interp * interp;
char * string;
int * numLines_return;
@@ -392,7 +392,7 @@ static char ** ImgXpmGetDataFromString(i
int quoted;
char * p, * list;
int numLines;
- char ** data;
+ CONST84 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(i
error:
Tcl_AppendResult(interp, "File format error", NULL);
- return (char**) NULL;
+ return NULL;
}
-static char ** ImgXpmGetDataFromFile(interp, fileName, numLines_return)
+static CONST84 char ** ImgXpmGetDataFromFile(interp, fileName, numLines_return)
Tcl_Interp * interp;
char * fileName;
int * numLines_return;
{
FILE * fd = NULL;
int size, n;
- char ** data;
+ CONST84 char ** data;
char *cmdBuffer = NULL;
Tcl_DString buffer; /* initialized by Tcl_TildeSubst */
@@ -588,16 +588,16 @@ static char ** ImgXpmGetDataFromFile(int
ckfree(cmdBuffer);
}
Tcl_DStringFree(&buffer);
- return (char**)NULL;
+ return NULL;
}
-static char *
+static CONST84 char *
GetType(colorDefn, type_ret)
- char * colorDefn;
+ CONST84 char * colorDefn;
int * type_ret;
{
- char * p = colorDefn;
+ CONST84 char * p = colorDefn;
/* skip white spaces */
while (*p && isspace(*p)) {
@@ -642,9 +642,9 @@ GetType(colorDefn, type_ret)
/*
* colorName is guaranteed to be big enough
*/
-static char *
+static CONST84 char *
GetColor(colorDefn, colorName, type_ret)
- char * colorDefn;
+ CONST84 char * colorDefn;
char * colorName; /* if found, name is copied to this array */
int * type_ret;
{
@@ -751,7 +751,7 @@ ImgXpmGetPixmapFromData(interp, masterPt
}
for (i=0; i<masterPtr->ncolors; i++) {
- char * colorDefn; /* the color definition line */
+ CONST84 char * colorDefn; /* the color definition line */
char * colorName; /* temp place to hold the color name
* defined for one type of visual */
char * useName; /* the color name used for this
@@ -842,7 +842,7 @@ ImgXpmGetPixmapFromData(interp, masterPt
* Parse the main body of the image
*/
for (i=0; i<masterPtr->size[1]; i++) {
- char * p = masterPtr->data[i+lOffset];
+ CONST84 char * p = masterPtr->data[i+lOffset];
for (j=0; j<masterPtr->size[0]; j++) {
if (masterPtr->cpp == 1) {
diff -up Tix8.4.2/generic/tixImgXpm.h_old Tix8.4.2/generic/tixImgXpm.h
--- Tix8.4.2/generic/tixImgXpm.h_old 2008-01-08 12:04:59.000000000 +0100
+++ Tix8.4.2/generic/tixImgXpm.h 2008-01-08 12:05:26.000000000 +0100
@@ -55,7 +55,7 @@ typedef struct PixmapMaster {
int size[2]; /* width and height */
int ncolors; /* number of colors */
int cpp; /* characters per pixel */
- char ** data; /* The data that defines this pixmap
+ CONST84 char ** data; /* The data that defines this pixmap
* image (array of strings). It is
* converted into an X Pixmap when this
* image is instanciated
diff -up Tix8.4.2/generic/tixInt.h_old Tix8.4.2/generic/tixInt.h
--- Tix8.4.2/generic/tixInt.h_old 2008-01-08 12:05:53.000000000 +0100
+++ Tix8.4.2/generic/tixInt.h 2008-01-08 12:09:35.000000000 +0100
@@ -23,6 +23,10 @@
#include <tixPort.h>
#endif
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
/*----------------------------------------------------------------------
*
* Tix Display Item Types
diff -up Tix8.4.2/generic/tixWidget.c_old Tix8.4.2/generic/tixWidget.c
--- Tix8.4.2/generic/tixWidget.c_old 2005-03-25 21:15:53.000000000 +0100
+++ Tix8.4.2/generic/tixWidget.c 2008-01-08 10:12:36.000000000 +0100
@@ -231,6 +231,10 @@ TIX_DEFINE_CMD(Tix_CreateWidgetCmd)
Tcl_SetVar2(interp, "errorCode", NULL, oldErrorCode,
TCL_GLOBAL_ONLY);
--- Tix8.4.2/generic/tixWidget.c_old 2008-01-08 11:46:43.000000000 +0100
+++ Tix8.4.2/generic/tixWidget.c 2008-01-08 11:53:17.000000000 +0100
@@ -162,24 +162,23 @@ TIX_DEFINE_CMD(Tix_CreateWidgetCmd)
done:
if (code != TCL_OK) {
- /* %% TCL CORE USED !! %% */
- Interp *iPtr = (Interp *) interp;
- CONST84 char * oldResult, * oldErrorInfo, * oldErrorCode;
+ Tcl_SavedResult oldResult;
+ Tcl_Obj * oldErrorInfo, * oldErrorCode;
Tk_Window topLevel, tkwin;
/* We need to save the old error message because
* interp->result may be changed by some of the following function
* calls.
*/
- if (interp->result) {
- oldResult = tixStrDup(interp->result);
- } else {
- oldResult = NULL;
+ oldErrorInfo = Tcl_GetVar2Ex(interp, "errorInfo", NULL, TCL_GLOBAL_ONLY);
+ oldErrorCode = Tcl_GetVar2Ex(interp, "errorCode", NULL, TCL_GLOBAL_ONLY);
+ if (oldErrorInfo) {
+ Tcl_IncrRefCount(oldErrorInfo);
}
+/* ERR_IN_PROGRESS isn't defined in tcl8.5 */
+#ifndef ERR_IN_PROGRESS
+#define ERR_IN_PROGRESS 0
+#endif
iPtr->flags |= ERR_IN_PROGRESS;
- oldErrorInfo = Tcl_GetVar2(interp, "errorInfo", NULL, TCL_GLOBAL_ONLY);
- oldErrorCode = Tcl_GetVar2(interp, "errorCode", NULL, TCL_GLOBAL_ONLY);
-
- Tcl_ResetResult(interp);
+ if (oldErrorCode) {
+ Tcl_IncrRefCount(oldErrorCode);
+ }
+ Tcl_SaveResult(interp, &oldResult);
/* (1) window */
topLevel = cPtr->mainWindow;
@@ -217,21 +216,17 @@ TIX_DEFINE_CMD(Tix_CreateWidgetCmd)
}
}
}
- if (oldResult) {
- Tcl_SetResult(interp, (char *) oldResult, TCL_DYNAMIC);
- }
- if (oldErrorInfo && *oldErrorInfo) {
- Tcl_SetVar2(interp, "errorInfo", NULL, oldErrorInfo,
- TCL_GLOBAL_ONLY);
- } else {
- Tcl_SetVar2(interp, "errorInfo", NULL, oldResult,
+ Tcl_RestoreResult(interp, &oldResult);
+ if (oldErrorInfo) {
+ Tcl_SetVar2Ex(interp, "errorInfo", NULL, oldErrorInfo,
TCL_GLOBAL_ONLY);
+ Tcl_DecrRefCount(oldErrorInfo);
}
if (oldErrorCode) {
- Tcl_SetVar2(interp, "errorCode", NULL, oldErrorCode,
+ Tcl_SetVar2Ex(interp, "errorCode", NULL, oldErrorCode,
TCL_GLOBAL_ONLY);
+ Tcl_DecrRefCount(oldErrorCode);
}
- iPtr->flags |= ERR_IN_PROGRESS;
}
if (widCmd) {
ckfree(widCmd);
diff -up Tix8.4.2/Makefile.in_old Tix8.4.2/Makefile.in
--- Tix8.4.2/Makefile.in_old 2008-01-08 11:43:41.000000000 +0100
+++ Tix8.4.2/Makefile.in 2008-01-08 11:46:22.000000000 +0100
@@ -128,6 +128,7 @@ SHLIB_LD = @SHLIB_LD@ $(CFLAGS) -Wl,-son
SHLIB_LD_FLAGS = @SHLIB_LD_FLAGS@
SHLIB_LD_LIBS = @SHLIB_LD_LIBS@
STLIB_LD = @STLIB_LD@
+TCL_VERSION = @TCL_VERSION@
TCL_DEFS = @TCL_DEFS@
TCL_SRC_DIR = @TCL_SRC_DIR@
TCL_BIN_DIR = @TCL_BIN_DIR@
@@ -294,7 +295,7 @@ VPATH = $(srcdir):$(srcdir)/generic:$(sr
pkgIndex.tcl:
(\
- echo 'if {[catch {package require Tcl 8.4}]} return';\
+ echo 'if {[catch {package require Tcl $(TCL_VERSION)}]} return';\
echo 'package ifneeded $(PACKAGE_NAME) $(PACKAGE_VERSION) \
[list load [file join $$dir $(PKG_LIB_FILE)] $(PACKAGE_NAME)]'\
) > pkgIndex.tcl
diff -up Tix8.4.2/unix/tixUnixXpm.c_old Tix8.4.2/unix/tixUnixXpm.c
--- Tix8.4.2/unix/tixUnixXpm.c_old 2008-01-08 12:10:18.000000000 +0100
+++ Tix8.4.2/unix/tixUnixXpm.c 2008-01-08 12:13:07.000000000 +0100
@@ -19,12 +19,6 @@
#include <tixImgXpm.h>
#include <X11/Xutil.h>
-#if !defined(WIN32) && !defined(MAC_OSX_TK)
-#define TkPutImage(colors, ncolors, display, pixels, gc, image, destx, desty, srcx, srcy, width, height) \
- XPutImage(display, pixels, gc, image, destx, desty, srcx, \
- srcy, width, height);
-#endif
-
typedef struct PixmapData {
Pixmap mask; /* Mask: only display pixmap pixels where
* there are 1's here. */

View File

@ -1,5 +1,6 @@
%{!?tcl_version: %define tcl_version %(echo 'puts $tcl_version' | tclsh)}
%{!?tcl_sitearch: %define tcl_sitearch %{_libdir}/tcl%{tcl_version}}
%{!?tcl_sitelib: %define tcl_sitelib %{_datadir}/tcl%{tcl_version}}
%define tixmajor 8.4
%define tcltkver 8.4.13
@ -59,7 +60,7 @@ This package contains the tix documentation
%patch1 -p1 -b .err
%build
%configure --libdir=%{tcl_sitearch}
%configure --with-tcl=%{_libdir} --with-tk=%{_libdir} --libdir=%{tcl_sitearch}
make all %{?_smp_mflags} PKG_LIB_FILE=libTix.so
%install
@ -77,8 +78,8 @@ ln -sf libTix.so $RPM_BUILD_ROOT%{_libdir}/libTix.so
ln -sf libTix.so $RPM_BUILD_ROOT%{_libdir}/libtix.so
# install demo scripts
mkdir -p $RPM_BUILD_ROOT%{_datadir}/Tix%{tixmajor}
cp -a demos $RPM_BUILD_ROOT%{_datadir}/Tix%{tixmajor}
mkdir -p $RPM_BUILD_ROOT%{tcl_sitelib}/Tix%{tixmajor}
cp -a demos $RPM_BUILD_ROOT%{tcl_sitelib}/Tix%{tixmajor}
# the header and man pages were in the previous package, keeping for now...
mkdir -p $RPM_BUILD_ROOT%{_includedir}
@ -105,7 +106,6 @@ rm -rf $RPM_BUILD_ROOT
%defattr(-,root,root,-)
%{tcl_sitearch}/libTix.so
%{tcl_sitearch}/Tix%{version}
%{_datadir}/Tix%{tixmajor}
%doc *.txt *.html license.terms
%files devel
@ -118,13 +118,16 @@ rm -rf $RPM_BUILD_ROOT
%files doc
%defattr(-,root,root,-)
%doc docs/*
%doc %{tcl_sitelib}/Tix%{tixmajor}
%changelog
* Mon Jan 7 2008 Marcela Maslanova <mmaslano@redhat.com> - 1:8.4.2-3
- fix for build with tcl8.5
- change the installing paths
- remove unusued variable
- fix BuildRoot
* Thu Jan 10 2008 Vitezslav Crhonek <vcrhonek@redhat.com> - 1:8.4.2-3
- Fix for build with tcl 8.5, change the installing paths,
remove unused variable (Marcela Maslanova <mmaslano@redhat.com>)
- Fix build issues and installation path problems for tcl 8.5,
move demo programs to -doc subpackage (Wart <wart@kobold.org>)
- Fix buildroot, tix 8.4 to tcl 8.5 compatibility patch based on
patch by Greg Couch
* Tue Aug 28 2007 Vitezslav Crhonek <vcrhonek@redhat.com> - 1:8.4.2-2
- Rebuild