diff --git a/blt.spec b/blt.spec index 4334165..53a8d40 100644 --- a/blt.spec +++ b/blt.spec @@ -5,7 +5,7 @@ Summary: BLT widget extension to Tcl/Tk scripting language development Name: blt Version: 2.4 -Release: 27%{?dist} +Release: 28.z%{?dist} License: MIT Group: Development/Libraries @@ -17,7 +17,8 @@ Patch2: blt2.4-tk8.5.patch Patch3: blt2.4z-destdir.patch Patch4: blt2.4z-norpath.patch Patch5: blt2.4z-noexactversion.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%__id_u -n) +BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) + Provides: tk-blt = %{version}-%{release} BuildRequires: tk-devel >= 8.4.7 @@ -114,6 +115,9 @@ rm -rf $RPM_BUILD_ROOT %{_includedir}/%{name} %changelog +* Thu May 29 2008 Sergio Pascual 2.4-28.z +- Patched to recover blt::graph (bz #446862) + * Thu Apr 3 2008 Wart 2.4-27 - Remove man pages due to conflict with iwidgets. This is a common problem among Tk widget extensions. (BZ #439769) diff --git a/blt2.4-tk8.5.patch b/blt2.4-tk8.5.patch index 8da70f3..dc144c9 100644 --- a/blt2.4-tk8.5.patch +++ b/blt2.4-tk8.5.patch @@ -1,32 +1,1410 @@ -diff -ur blt2.4z/src/bltNsUtil.h blt2.4z.new/src/bltNsUtil.h ---- blt2.4z/src/bltNsUtil.h 2002-07-18 08:35:32.000000000 +0200 -+++ blt2.4z.new/src/bltNsUtil.h 2008-01-04 14:59:22.000000000 +0100 -@@ -46,9 +46,8 @@ - #define TCL_NAMESPACE_ONLY TCL_GLOBAL_ONLY +diff -ur blt2.4z/library/Makefile.vc blt2.4z-8.5.2/library/Makefile.vc +--- blt2.4z/library/Makefile.vc 2002-08-21 08:20:51.000000000 +0200 ++++ blt2.4z-8.5.2/library/Makefile.vc 2008-04-15 17:31:26.000000000 +0200 +@@ -6,7 +6,6 @@ + include ../win/makedefs + + version = $(BLT_MAJOR_VERSION).$(BLT_MINOR_VERSION) +-pkgdir = $(libdir)/tcl$(v1)/blt$(version) + srcdir = . + + cursors = treeview.cur +@@ -30,8 +29,7 @@ + tclIndex + + instdirs = $(prefix) $(exec_prefix) $(libdir) \ +- $(scriptdir) $(scriptdir)/dd_protocols $(libdir)/tcl$(v1) \ +- $(pkgdir) ++ $(scriptdir) $(scriptdir)/dd_protocols $(libdir)/tcl$(v1) + + all: build-pkgindex + +@@ -62,7 +60,6 @@ + + install-pkgindex: pkgIndex.tcl + $(INSTALL_DATA) pkgIndex.tcl $(scriptdir) +- $(INSTALL_DATA) pkgIndex.tcl $(pkgdir) + + clean: + $(RM) pkgIndex.tcl +diff -ur blt2.4z/Makefile.in blt2.4z-8.5.2/Makefile.in +--- blt2.4z/Makefile.in 2002-02-19 01:11:43.000000000 +0100 ++++ blt2.4z-8.5.2/Makefile.in 2008-04-15 17:31:26.000000000 +0200 +@@ -72,4 +72,8 @@ + config.status config.cache config.log Makefile + + distclean: clean ++ (cd src; $(MAKE) distclean) ++ (cd library; $(MAKE) distclean) ++ (cd man; $(MAKE) distclean) ++ (cd demos; $(MAKE) distclean) + $(RM) $(GENERATED_FILES) +diff -ur blt2.4z/src/bltBgexec.c blt2.4z-8.5.2/src/bltBgexec.c +--- blt2.4z/src/bltBgexec.c 2002-09-19 00:30:50.000000000 +0200 ++++ blt2.4z-8.5.2/src/bltBgexec.c 2008-04-15 17:31:26.000000000 +0200 +@@ -58,7 +58,7 @@ + typedef int Process; #endif -- --EXTERN Tcl_Command Tcl_FindCommand _ANSI_ARGS_((Tcl_Interp *interp, +-#if (TCL_VERSION_NUMBER < _VERSION(8,1,0)) ++#if (TCL_VERSION_NUMBER < _VERSION(8,1,0)) + typedef void *Tcl_Encoding; /* Make up dummy type for encoding. */ + #endif + +@@ -276,7 +276,7 @@ + int objc; /* */ + #endif + +- int flags; ++ int flags; + + Tcl_File file; /* Used for backward compatability + * with Tcl 7.5 */ +@@ -370,35 +370,35 @@ + StringToSignal, (Blt_SwitchFreeProc *)NULL, (ClientData)0, + }; + +-static Blt_SwitchSpec switchSpecs[] = ++static Blt_SwitchSpec switchSpecs[] = + { +- {BLT_SWITCH_STRING, "-decodeoutput", ++ {BLT_SWITCH_STRING, "-decodeoutput", + Blt_Offset(BackgroundInfo, outputEncodingName), 0}, +- {BLT_SWITCH_STRING, "-decodeerror", ++ {BLT_SWITCH_STRING, "-decodeerror", + Blt_Offset(BackgroundInfo, errorEncodingName), 0}, +- {BLT_SWITCH_BOOLEAN, "-echo", ++ {BLT_SWITCH_BOOLEAN, "-echo", + Blt_Offset(BackgroundInfo, sink2.echo), 0}, +- {BLT_SWITCH_STRING, "-error", ++ {BLT_SWITCH_STRING, "-error", + Blt_Offset(BackgroundInfo, sink2.doneVar), 0}, +- {BLT_SWITCH_STRING, "-update", ++ {BLT_SWITCH_STRING, "-update", + Blt_Offset(BackgroundInfo, sink1.updateVar), 0}, +- {BLT_SWITCH_STRING, "-output", ++ {BLT_SWITCH_STRING, "-output", + Blt_Offset(BackgroundInfo, sink1.doneVar), 0}, +- {BLT_SWITCH_STRING, "-lasterror", ++ {BLT_SWITCH_STRING, "-lasterror", + Blt_Offset(BackgroundInfo, sink2.updateVar), 0}, +- {BLT_SWITCH_STRING, "-lastoutput", ++ {BLT_SWITCH_STRING, "-lastoutput", + Blt_Offset(BackgroundInfo, sink1.updateVar), 0}, +- {BLT_SWITCH_LIST, "-onerror", ++ {BLT_SWITCH_LIST, "-onerror", + Blt_Offset(BackgroundInfo, sink2.updateCmd), 0}, +- {BLT_SWITCH_LIST, "-onoutput", ++ {BLT_SWITCH_LIST, "-onoutput", + Blt_Offset(BackgroundInfo, sink1.updateCmd), 0}, +- {BLT_SWITCH_BOOLEAN, "-keepnewline", ++ {BLT_SWITCH_BOOLEAN, "-keepnewline", + Blt_Offset(BackgroundInfo, keepNewline), 0}, +- {BLT_SWITCH_BOOLEAN, "-check", ++ {BLT_SWITCH_INT, "-check", + Blt_Offset(BackgroundInfo, interval), 0}, +- {BLT_SWITCH_CUSTOM, "-killsignal", ++ {BLT_SWITCH_CUSTOM, "-killsignal", + Blt_Offset(BackgroundInfo, signalNum), 0, &killSignalSwitch}, +- {BLT_SWITCH_BOOLEAN, "-linebuffered", ++ {BLT_SWITCH_BOOLEAN, "-linebuffered", + Blt_Offset(BackgroundInfo, lineBuffered), 0}, + {BLT_SWITCH_END, NULL, 0, 0} + }; +@@ -517,7 +517,7 @@ + * Returns the next block of data since the last time this + * routine was called. + * +- *---------------------------------------------------------------------- ++ *---------------------------------------------------------------------- + */ + static unsigned char * + NextBlock(sinkPtr, lengthPtr) +@@ -531,7 +531,7 @@ + length = sinkPtr->mark - sinkPtr->lastMark; + sinkPtr->lastMark = sinkPtr->mark; + if (length > 0) { +- if ((!(sinkPtr->flags & SINK_KEEP_NL)) && ++ if ((!(sinkPtr->flags & SINK_KEEP_NL)) && + (string[length - 1] == '\n')) { + length--; + } +@@ -565,7 +565,7 @@ + for (i = 0; i < newBytes; i++) { + if (string[i] == '\n') { + int length; +- ++ + length = i + 1; + sinkPtr->lastMark += length; + if (!(sinkPtr->flags & SINK_KEEP_NL)) { +@@ -594,13 +594,13 @@ + * keeping all the data collected from the channel (no -output + * flag and the process is detached). + * +- *---------------------------------------------------------------------- ++ *---------------------------------------------------------------------- + */ + static void + ResetSink(sinkPtr) + Sink *sinkPtr; +-{ +- if ((sinkPtr->flags & SINK_BUFFERED) && ++{ ++ if ((sinkPtr->flags & SINK_BUFFERED) && + (sinkPtr->fill > sinkPtr->lastMark)) { + register size_t i, j; + +@@ -654,8 +654,8 @@ + } + if (bgPtr->lineBuffered) { + sinkPtr->flags |= SINK_BUFFERED; +- } +- if ((sinkPtr->updateCmd != NULL) || ++ } ++ if ((sinkPtr->updateCmd != NULL) || + (sinkPtr->updateVar != NULL) || + (sinkPtr->echo)) { + sinkPtr->flags |= SINK_NOTIFY; +@@ -843,7 +843,7 @@ + #define IsOpenSink(sinkPtr) ((sinkPtr)->fd != -1) + + static void +-CloseSink(interp, sinkPtr) ++CloseSink(interp, sinkPtr) + Tcl_Interp *interp; + Sink *sinkPtr; + { +@@ -864,19 +864,19 @@ + if (sinkPtr->doneVar != NULL) { + unsigned char *data; + size_t length; +- /* ++ /* + * If data is to be collected, set the "done" variable +- * with the contents of the buffer. ++ * with the contents of the buffer. + */ + GetSinkData(sinkPtr, &data, &length); +-#if (TCL_VERSION_NUMBER < _VERSION(8,1,0)) ++#if (TCL_VERSION_NUMBER < _VERSION(8,1,0)) + data[length] = '\0'; +- if (Tcl_SetVar(interp, sinkPtr->doneVar, data, ++ if (Tcl_SetVar(interp, sinkPtr->doneVar, data, + TCL_GLOBAL_ONLY) == NULL) { + Tcl_BackgroundError(interp); + } + #else +- if (Tcl_SetVar2Ex(interp, sinkPtr->doneVar, NULL, ++ if (Tcl_SetVar2Ex(interp, sinkPtr->doneVar, NULL, + Tcl_NewByteArrayObj(data, length), + (TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) == NULL) { + Tcl_BackgroundError(interp); +@@ -917,9 +917,9 @@ + #endif + if (sinkPtr->encoding == ENCODING_BINARY) { /* binary */ + /* No translation needed. */ +- sinkPtr->mark = sinkPtr->fill; ++ sinkPtr->mark = sinkPtr->fill; + } else if (sinkPtr->encoding == ENCODING_ASCII) { /* ascii */ +-#if (TCL_VERSION_NUMBER < _VERSION(8,1,0)) ++#if (TCL_VERSION_NUMBER < _VERSION(8,1,0)) + /* Convert NUL bytes to question marks. */ + srcPtr = sinkPtr->byteArr + sinkPtr->mark; + endPtr = sinkPtr->byteArr + sinkPtr->fill; +@@ -932,7 +932,7 @@ + #endif /* < 8.1.0 */ + /* One-to-one translation. mark == fill. */ + sinkPtr->mark = sinkPtr->fill; +-#if (TCL_VERSION_NUMBER >= _VERSION(8,1,0)) ++#if (TCL_VERSION_NUMBER >= _VERSION(8,1,0)) + } else { /* unicode. */ + int nSrcCooked, nCooked; + int result; +@@ -941,41 +941,41 @@ + unsigned char *destPtr; + unsigned char *raw, *cooked; + unsigned char leftover[100]; +- ++ + raw = sinkPtr->byteArr + sinkPtr->mark; + nRaw = sinkPtr->fill - sinkPtr->mark; + /* Ideally, the cooked buffer size should be smaller */ + cookedSize = nRaw * TCL_UTF_MAX + 1; + cooked = Blt_Malloc(cookedSize); +- result = Tcl_ExternalToUtf(interp, sinkPtr->encoding, +- (char *)raw, nRaw, 0, NULL, (char *)cooked, ++ result = Tcl_ExternalToUtf(interp, sinkPtr->encoding, ++ (char *)raw, nRaw, 0, NULL, (char *)cooked, + cookedSize, &nSrcCooked, &nCooked, NULL); + nLeftOver = 0; + if (result == TCL_CONVERT_MULTIBYTE) { +- /* ++ /* + * Last multibyte sequence wasn't completed. Save the +- * extra characters in a temporary buffer. ++ * extra characters in a temporary buffer. + */ + nLeftOver = (nRaw - nSrcCooked); +- srcPtr = sinkPtr->byteArr + (sinkPtr->mark + nSrcCooked); ++ srcPtr = sinkPtr->byteArr + (sinkPtr->mark + nSrcCooked); + endPtr = srcPtr + nLeftOver; + destPtr = leftover; + while (srcPtr < endPtr) { + *destPtr++ = *srcPtr++; + } +- } ++ } + /* +- * Create a bigger ++ * Create a bigger + */ +- ++ + needed = nLeftOver + nCooked; + spaceLeft = sinkPtr->size - sinkPtr->mark; + if (spaceLeft >= needed) { + spaceLeft = ExtendSinkBuffer(sinkPtr); + } + assert(spaceLeft > needed); +- /* +- * Replace the characters from the mark with the translated ++ /* ++ * Replace the characters from the mark with the translated + * characters. + */ + srcPtr = cooked; +@@ -986,7 +986,7 @@ + } + /* Add the number of newly translated characters to the mark */ + sinkPtr->mark += nCooked; +- ++ + srcPtr = leftover; + endPtr = leftover + nLeftOver; + while (srcPtr < endPtr) { +@@ -996,7 +996,7 @@ + #endif /* >= 8.1.0 */ + } + #ifdef WIN32 +- /* ++ /* + * Translate CRLF character sequences to LF characters. We have to + * do this after converting the string to UTF from UNICODE. + */ +@@ -1072,7 +1072,7 @@ + #endif + timeout = (flags & WNOHANG) ? 0 : INFINITE; + status = WaitForSingleObject(child.hProcess, timeout); +- ++ + #if WINDEBUG + PurifyPrintf("WAITPID: wait status is %d\n", status); + #endif +@@ -1147,9 +1147,9 @@ + + EnumWindows(EnumWindowsProc, (LPARAM)&proc); + +- /* ++ /* + * Wait on the handle. If it signals, great. If it times out, +- * then call TerminateProcess on it. ++ * then call TerminateProcess on it. + * + * On Windows 95/98 this also has the added benefit of stopping + * KERNEL32.dll from dumping. The 2 second number is arbitrary. +@@ -1171,7 +1171,7 @@ + + #endif /* WIN32 */ + +-#if (TCL_VERSION_NUMBER < _VERSION(8,1,0)) ++#if (TCL_VERSION_NUMBER < _VERSION(8,1,0)) + + static void + NotifyOnUpdate(interp, sinkPtr, data, nBytes) +@@ -1192,7 +1192,7 @@ + data[nBytes] = '\0'; + if (sinkPtr->echo) { + Tcl_Channel channel; +- ++ + channel = Tcl_GetStdChannel(TCL_STDERR); + if (channel == NULL) { + Tcl_AppendResult(interp, "can't get stderr channel", (char *)NULL); +@@ -1235,7 +1235,7 @@ + data[nBytes] = save; + } + +-#else ++#else + + static void + NotifyOnUpdate(interp, sinkPtr, data, nBytes) +@@ -1254,7 +1254,7 @@ + } + if (sinkPtr->echo) { + Tcl_Channel channel; +- ++ + channel = Tcl_GetStdChannel(TCL_STDERR); + if (channel == NULL) { + Tcl_AppendResult(interp, "can't get stderr channel", (char *)NULL); +@@ -1285,7 +1285,7 @@ + if (sinkPtr->updateVar != NULL) { + Tcl_Obj *result; + +- result = Tcl_SetVar2Ex(interp, sinkPtr->updateVar, NULL, objPtr, ++ result = Tcl_SetVar2Ex(interp, sinkPtr->updateVar, NULL, objPtr, + (TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)); + if (result == NULL) { + Tcl_BackgroundError(interp); +@@ -1306,7 +1306,7 @@ + } + ReadBytes(sinkPtr); + CookSink(bgPtr->interp, sinkPtr); +- if ((sinkPtr->mark > sinkPtr->lastMark) && ++ if ((sinkPtr->mark > sinkPtr->lastMark) && + (sinkPtr->flags & SINK_NOTIFY)) { + unsigned char *data; + int length; +@@ -1390,7 +1390,7 @@ + { + + if (bgPtr->traced) { +- Tcl_UntraceVar(bgPtr->interp, bgPtr->statVar, TRACE_FLAGS, ++ Tcl_UntraceVar(bgPtr->interp, bgPtr->statVar, TRACE_FLAGS, + VariableProc, bgPtr); + bgPtr->traced = FALSE; + } +@@ -1558,7 +1558,7 @@ + register int i; + unsigned int lastPid; + int pid; +- enum PROCESS_STATUS { ++ enum PROCESS_STATUS { + PROCESS_EXITED, PROCESS_STOPPED, PROCESS_KILLED, PROCESS_UNKNOWN + } pcode; + WAIT_STATUS_TYPE waitStatus, lastStatus; +@@ -1595,7 +1595,7 @@ + } + bgPtr->nProcs = nLeft; + +- if ((nLeft > 0) || (IsOpenSink(&bgPtr->sink1)) || ++ if ((nLeft > 0) || (IsOpenSink(&bgPtr->sink1)) || + (IsOpenSink(&bgPtr->sink2))) { + /* Keep polling for the status of the children that are left */ + bgPtr->timerToken = Tcl_CreateTimerHandler(bgPtr->interval, TimerProc, +@@ -1641,11 +1641,11 @@ + Tcl_DStringAppendElement(&dString, "child completed normally"); + break; + case PROCESS_KILLED: +- Tcl_DStringAppendElement(&dString, ++ Tcl_DStringAppendElement(&dString, + Tcl_SignalMsg((int)(WTERMSIG(lastStatus)))); + break; + case PROCESS_STOPPED: +- Tcl_DStringAppendElement(&dString, ++ Tcl_DStringAppendElement(&dString, + Tcl_SignalMsg((int)(WSTOPSIG(lastStatus)))); + break; + case PROCESS_UNKNOWN: +@@ -1658,8 +1658,8 @@ + *bgPtr->exitCodePtr = code; + } + DisableTriggers(bgPtr); +- result = Tcl_SetVar(bgPtr->interp, bgPtr->statVar, +- Tcl_DStringValue(&dString), TCL_GLOBAL_ONLY); ++ result = Tcl_SetVar(bgPtr->interp, bgPtr->statVar, ++ Tcl_DStringValue(&dString), TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG); + Tcl_DStringFree(&dString); + if (result == NULL) { + Tcl_BackgroundError(bgPtr->interp); +@@ -1712,7 +1712,7 @@ + * timer handler to periodically poll for the exit status of each + * process. Initially check at the next idle interval. + */ +- if (!IsOpenSink(&bgPtr->sink2)) { ++ if (!IsOpenSink(&bgPtr->sink2) && bgPtr->timerToken == 0) { + bgPtr->timerToken = Tcl_CreateTimerHandler(0, TimerProc, clientData); + } + } +@@ -1760,7 +1760,7 @@ + * timer handler to periodically poll for the exit status of each + * process. Initially check at the next idle interval. + */ +- if (!IsOpenSink(&bgPtr->sink1)) { ++ if (!IsOpenSink(&bgPtr->sink1) && bgPtr->timerToken == 0) { + bgPtr->timerToken = Tcl_CreateTimerHandler(0, TimerProc, clientData); + } + } +@@ -1827,7 +1827,7 @@ + /* Try to clean up any detached processes */ + Tcl_ReapDetachedProcs(); + +- i = Blt_ProcessSwitches(interp, switchSpecs, argc - 2, argv + 2, ++ i = Blt_ProcessSwitches(interp, switchSpecs, argc - 2, argv + 2, + (char *)bgPtr, BLT_SWITCH_ARGV_PARTIAL); + if (i < 0) { + FreeBackgroundInfo(bgPtr); +@@ -1853,7 +1853,7 @@ + if (strcmp(bgPtr->outputEncodingName, "binary") == 0) { + encoding = ENCODING_BINARY; + } else { +-#if (TCL_VERSION_NUMBER >= _VERSION(8,1,0)) ++#if (TCL_VERSION_NUMBER >= _VERSION(8,1,0)) + encoding = Tcl_GetEncoding(interp, bgPtr->outputEncodingName); + if (encoding == NULL) { + goto error; +@@ -1866,7 +1866,7 @@ + if (strcmp(bgPtr->errorEncodingName, "binary") == 0) { + encoding = ENCODING_BINARY; + } else { +-#if (TCL_VERSION_NUMBER >= _VERSION(8,1,0)) ++#if (TCL_VERSION_NUMBER >= _VERSION(8,1,0)) + encoding = Tcl_GetEncoding(interp, bgPtr->errorEncodingName); + if (encoding == NULL) { + goto error; +@@ -1878,18 +1878,18 @@ + + outFdPtr = errFdPtr = (int *)NULL; + #ifdef WIN32 +- if ((!bgPtr->detached) || +- (bgPtr->sink1.doneVar != NULL) || +- (bgPtr->sink1.updateVar != NULL) || ++ if ((!bgPtr->detached) || ++ (bgPtr->sink1.doneVar != NULL) || ++ (bgPtr->sink1.updateVar != NULL) || + (bgPtr->sink1.updateCmd != NULL)) { + outFdPtr = &bgPtr->sink1.fd; + } + #else + outFdPtr = &bgPtr->sink1.fd; + #endif +- if ((bgPtr->sink2.doneVar != NULL) || ++ if ((bgPtr->sink2.doneVar != NULL) || + (bgPtr->sink2.updateVar != NULL) || +- (bgPtr->sink2.updateCmd != NULL) || ++ (bgPtr->sink2.updateCmd != NULL) || + (bgPtr->sink2.echo)) { + errFdPtr = &bgPtr->sink2.fd; + } +@@ -1900,6 +1900,7 @@ + } + bgPtr->procArr = pidPtr; + bgPtr->nProcs = nProcs; ++ bgPtr->timerToken = 0; + + if (bgPtr->sink1.fd == -1) { + +@@ -1919,7 +1920,7 @@ + (CreateSinkHandler(bgPtr, &bgPtr->sink2, StderrProc) != TCL_OK)) { + goto error; + } +- if (bgPtr->detached) { ++ if (bgPtr->detached) { + char string[200]; + + /* If detached, return a list of the child process ids instead +@@ -1927,7 +1928,7 @@ + for (i = 0; i < nProcs; i++) { + #ifdef WIN32 + sprintf(string, "%u", (unsigned int)bgPtr->procArr[i].pid); +-#else ++#else + sprintf(string, "%d", bgPtr->procArr[i]); + #endif + Tcl_AppendElement(interp, string); +@@ -1950,7 +1951,7 @@ + + /* Return the output of the pipeline. */ + GetSinkData(&bgPtr->sink1, &data, &length); +-#if (TCL_VERSION_NUMBER < _VERSION(8,1,0)) ++#if (TCL_VERSION_NUMBER < _VERSION(8,1,0)) + data[length] = '\0'; + Tcl_SetResult(interp, data, TCL_VOLATILE); + #else +diff -ur blt2.4z/src/bltGrMarker.c blt2.4z-8.5.2/src/bltGrMarker.c +--- blt2.4z/src/bltGrMarker.c 2002-09-19 00:30:51.000000000 +0200 ++++ blt2.4z-8.5.2/src/bltGrMarker.c 2008-04-16 16:47:48.000000000 +0200 +@@ -1061,10 +1061,12 @@ + Graph *graphPtr; + Extents2D *extsPtr; + { ++/* + assert(extsPtr->right >= extsPtr->left); + assert(extsPtr->bottom >= extsPtr->top); + assert(graphPtr->right >= graphPtr->left); + assert(graphPtr->bottom >= graphPtr->top); ++*/ + + return (((double)graphPtr->right < extsPtr->left) || + ((double)graphPtr->bottom < extsPtr->top) || +diff -ur blt2.4z/src/bltInit.c blt2.4z-8.5.2/src/bltInit.c +--- blt2.4z/src/bltInit.c 2002-09-10 07:12:33.000000000 +0200 ++++ blt2.4z-8.5.2/src/bltInit.c 2008-04-15 17:31:25.000000000 +0200 +@@ -28,7 +28,7 @@ + + #include + +-#define EXACT 1 ++#define EXACT 0 + + #ifndef BLT_LIBRARY + #ifdef WIN32 +diff -ur blt2.4z/src/bltNsUtil.h blt2.4z-8.5.2/src/bltNsUtil.h +--- blt2.4z/src/bltNsUtil.h 2002-07-18 08:35:32.000000000 +0200 ++++ blt2.4z-8.5.2/src/bltNsUtil.h 2008-04-15 17:31:26.000000000 +0200 +@@ -48,7 +48,7 @@ + + + EXTERN Tcl_Command Tcl_FindCommand _ANSI_ARGS_((Tcl_Interp *interp, - char *name, Tcl_Namespace *nsPtr, int flags)); -+/*EXTERN Tcl_Command Tcl_FindCommand _ANSI_ARGS_((Tcl_Interp *interp, -+ char *name, Tcl_Namespace *nsPtr, int flags));*/ ++ CONST char *name, Tcl_Namespace *nsPtr, int flags)); #define NS_SEARCH_NONE (0) #define NS_SEARCH_CURRENT (1<<0) -@@ -64,7 +63,7 @@ - EXTERN Tcl_Namespace *Tcl_GetGlobalNamespace _ANSI_ARGS_((Tcl_Interp *interp)); +@@ -65,15 +65,15 @@ #if (TCL_MAJOR_VERSION >= 8) --EXTERN Tcl_Namespace *Tcl_CreateNamespace _ANSI_ARGS_((Tcl_Interp *interp, -+/*EXTERN Tcl_Namespace *Tcl_CreateNamespace _ANSI_ARGS_((Tcl_Interp *interp, - char *name, ClientData clientData, Tcl_NamespaceDeleteProc *nsDelProc)); + EXTERN Tcl_Namespace *Tcl_CreateNamespace _ANSI_ARGS_((Tcl_Interp *interp, +- char *name, ClientData clientData, Tcl_NamespaceDeleteProc *nsDelProc)); ++ CONST char *name, ClientData clientData, Tcl_NamespaceDeleteProc *nsDelProc)); EXTERN void Tcl_DeleteNamespace _ANSI_ARGS_((Tcl_Namespace *nsPtr)); -@@ -85,6 +84,7 @@ - extern Tcl_HashTable *Blt_GetArrayVariableTable _ANSI_ARGS_(( - Tcl_Interp *interp, CONST char *varName, int flags)); -+*/ + EXTERN Tcl_Namespace *Tcl_FindNamespace _ANSI_ARGS_((Tcl_Interp *interp, +- char *name, Tcl_Namespace *context, int flags)); ++ CONST char *name, Tcl_Namespace *context, int flags)); + + EXTERN int Tcl_Export _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Namespace *nsPtr, +- char *name, int resetFlag)); ++ CONST char *name, int resetFlag)); + + EXTERN Tcl_Var Tcl_FindNamespaceVar _ANSI_ARGS_((Tcl_Interp *interp, char *name, + Tcl_Namespace *contextNsPtr, int flags)); +diff -ur blt2.4z/src/bltText.c blt2.4z-8.5.2/src/bltText.c +--- blt2.4z/src/bltText.c 2002-08-13 21:45:20.000000000 +0200 ++++ blt2.4z-8.5.2/src/bltText.c 2008-04-16 16:37:41.000000000 +0200 +@@ -671,6 +671,9 @@ + Pixmap bitmap; + int active; + ++ if (!textPtr) ++ return; ++ + display = Tk_Display(tkwin); + theta = FMOD(tsPtr->theta, (double)360.0); + if (theta < 0.0) { +diff -ur blt2.4z/src/bltWindow.c blt2.4z-8.5.2/src/bltWindow.c +--- blt2.4z/src/bltWindow.c 2002-09-19 05:02:09.000000000 +0200 ++++ blt2.4z-8.5.2/src/bltWindow.c 2008-04-16 16:38:15.000000000 +0200 +@@ -89,9 +89,9 @@ + + typedef struct TkDisplayStruct { + Display *display; /* Xlib's info about display. */ +- struct TkDisplayStruct *nextPtr; /* Next in list of all displays. */ +- char *name; /* Name of display (with any screen +- * identifier removed). Malloc-ed. */ ++ struct TkDisplay *nextPtr; /* Next in list of all displays. */ ++ char *name; /* Name of display (with any screen identifier ++ * removed). Malloc-ed. */ + Time lastEventTime; /* Time of last event received for this + * display. */ + +@@ -107,8 +107,8 @@ + * Information used by tkAtom.c only: + */ + +- int atomInit; /* 0 means stuff below hasn't been +- * initialized yet. */ ++ int atomInit; /* 0 means stuff below hasn't been initialized ++ * yet. */ + Tcl_HashTable nameTable; /* Maps from names to Atom's. */ + Tcl_HashTable atomTable; /* Maps from Atom's back to names. */ + +@@ -116,27 +116,26 @@ + * Information used primarily by tkBind.c: + */ + +- int bindInfoStale; /* Non-zero means the variables in this +- * part of the structure are potentially +- * incorrect and should be recomputed. */ ++ int bindInfoStale; /* Non-zero means the variables in this part ++ * of the structure are potentially incorrect ++ * and should be recomputed. */ + unsigned int modeModMask; /* Has one bit set to indicate the modifier +- * corresponding to "mode shift". If no +- * such modifier, than this is zero. */ ++ * corresponding to "mode shift". If no such ++ * modifier, than this is zero. */ + unsigned int metaModMask; /* Has one bit set to indicate the modifier +- * corresponding to the "Meta" key. If no +- * such modifier, then this is zero. */ ++ * corresponding to the "Meta" key. If no such ++ * modifier, then this is zero. */ + unsigned int altModMask; /* Has one bit set to indicate the modifier +- * corresponding to the "Meta" key. If no +- * such modifier, then this is zero. */ +- enum { +- LU_IGNORE, LU_CAPS, LU_SHIFT +- } lockUsage; /* Indicates how to interpret lock modifier. */ ++ * corresponding to the "Meta" key. If no such ++ * modifier, then this is zero. */ ++ enum {LU_IGNORE, LU_CAPS, LU_SHIFT} lockUsage; ++ /* Indicates how to interpret lock ++ * modifier. */ + int numModKeyCodes; /* Number of entries in modKeyCodes array + * below. */ +- KeyCode *modKeyCodes; /* Pointer to an array giving keycodes for +- * all of the keys that have modifiers +- * associated with them. Malloc'ed, but +- * may be NULL. */ ++ KeyCode *modKeyCodes; /* Pointer to an array giving keycodes for all ++ * of the keys that have modifiers associated ++ * with them. Malloc'ed, but may be NULL. */ + + /* + * Information used by tkBitmap.c only: +@@ -150,10 +149,10 @@ + Tcl_HashTable bitmapIdTable;/* Maps from bitmap id to the TkBitmap + * structure for the bitmap. */ + Tcl_HashTable bitmapDataTable; +- /* Used by Tk_GetBitmapFromData to map from +- * a collection of in-core data about a +- * bitmap to a reference giving an auto- +- * matically-generated name for the bitmap. */ ++ /* Used by Tk_GetBitmapFromData to map from a ++ * collection of in-core data about a bitmap ++ * to a reference giving an automatically- ++ * generated name for the bitmap. */ + + /* + * Information used by tkCanvas.c only: +@@ -167,9 +166,9 @@ + */ + + int colorInit; /* 0 means color module needs initializing. */ +- TkStressedCmap *stressPtr; /* First in list of colormaps that have +- * filled up, so we have to pick an +- * approximate color. */ ++ TkStressedCmap *stressPtr; /* First in list of colormaps that have filled ++ * up, so we have to pick an approximate ++ * color. */ + Tcl_HashTable colorNameTable; + /* Maps from color name to TkColor structure + * for that color. */ +@@ -192,34 +191,33 @@ + /* Maps from a cursor id to the TkCursor + * structure for the cursor. */ + char cursorString[20]; /* Used to store a cursor id string. */ +- Font cursorFont; /* Font to use for standard cursors. +- * None means font not loaded yet. */ ++ Font cursorFont; /* Font to use for standard cursors. None ++ * means font not loaded yet. */ + + /* + * Information used by tkError.c only: + */ + + struct TkErrorHandler *errorPtr; +- /* First in list of error handlers +- * for this display. NULL means +- * no handlers exist at present. */ +- int deleteCount; /* Counts # of handlers deleted since +- * last time inactive handlers were +- * garbage-collected. When this number +- * gets big, handlers get cleaned up. */ ++ /* First in list of error handlers for this ++ * display. NULL means no handlers exist at ++ * present. */ ++ int deleteCount; /* Counts # of handlers deleted since last ++ * time inactive handlers were garbage- ++ * collected. When this number gets big, ++ * handlers get cleaned up. */ + + /* + * Used by tkEvent.c only: + */ + + struct TkWindowEvent *delayedMotionPtr; +- /* Points to a malloc-ed motion event +- * whose processing has been delayed in +- * the hopes that another motion event +- * will come along right away and we can +- * merge the two of them together. NULL +- * means that there is no delayed motion +- * event. */ ++ /* Points to a malloc-ed motion event whose ++ * processing has been delayed in the hopes ++ * that another motion event will come along ++ * right away and we can merge the two of them ++ * together. NULL means that there is no ++ * delayed motion event. */ + + /* + * Information used by tkFocus.c only: +@@ -229,26 +227,24 @@ + * statistics. */ + struct TkWindow *implicitWinPtr; + /* If the focus arrived at a toplevel window +- * implicitly via an Enter event (rather +- * than via a FocusIn event), this points +- * to the toplevel window. Otherwise it is +- * NULL. */ ++ * implicitly via an Enter event (rather than ++ * via a FocusIn event), this points to the ++ * toplevel window. Otherwise it is NULL. */ + struct TkWindow *focusPtr; /* Points to the window on this display that +- * should be receiving keyboard events. When ++ * should be receiving keyboard events. When + * multiple applications on the display have +- * the focus, this will refer to the +- * innermost window in the innermost +- * application. This information isn't used +- * under Unix or Windows, but it's needed on +- * the Macintosh. */ ++ * the focus, this will refer to the innermost ++ * window in the innermost application. This ++ * information isn't used under Unix or ++ * Windows, but it's needed on the Mac. */ + + /* + * Information used by tkGC.c only: + */ + +- Tcl_HashTable gcValueTable; /* Maps from a GC's values to a TkGC structure ++ Tcl_HashTable gcValueTable; /* Maps from a GC's values to a TkGC structure + * describing a GC with those values. */ +- Tcl_HashTable gcIdTable; /* Maps from a GC to a TkGC. */ ++ Tcl_HashTable gcIdTable; /* Maps from a GC to a TkGC. */ + int gcInit; /* 0 means the tables below need + * initializing. */ + +@@ -258,23 +254,22 @@ + + Tcl_HashTable maintainHashTable; + /* Hash table that maps from a master's +- * Tk_Window token to a list of slaves +- * managed by that master. */ ++ * Tk_Window token to a list of slaves managed ++ * by that master. */ + int geomInit; + + /* + * Information used by tkGet.c only: + */ + +- Tcl_HashTable uidTable; /* Stores all Tk_Uids used in a thread. */ ++ Tcl_HashTable uidTable; /* Stores all Tk_Uid used in a thread. */ + int uidInit; /* 0 means uidTable needs initializing. */ + + /* + * Information used by tkGrab.c only: + */ + +- struct TkWindow *grabWinPtr; +- /* Window in which the pointer is currently ++ struct TkWindow *grabWinPtr;/* Window in which the pointer is currently + * grabbed, or NULL if none. */ + struct TkWindow *eventualGrabWinPtr; + /* Value that grabWinPtr will have once the +@@ -286,22 +281,22 @@ + * if no such press in effect. */ + struct TkWindow *serverWinPtr; + /* If no application contains the pointer then +- * this is NULL. Otherwise it contains the +- * last window for which we've gotten an +- * Enter or Leave event from the server (i.e. +- * the last window known to have contained +- * the pointer). Doesn't reflect events +- * that were synthesized in tkGrab.c. */ ++ * this is NULL. Otherwise it contains the ++ * last window for which we've gotten an Enter ++ * or Leave event from the server (i.e. the ++ * last window known to have contained the ++ * pointer). Doesn't reflect events that were ++ * synthesized in tkGrab.c. */ + TkGrabEvent *firstGrabEventPtr; + /* First in list of enter/leave events +- * synthesized by grab code. These events +- * must be processed in order before any other +- * events are processed. NULL means no such ++ * synthesized by grab code. These events must ++ * be processed in order before any other ++ * events are processed. NULL means no such + * events. */ + TkGrabEvent *lastGrabEventPtr; + /* Last in list of synthesized events, or NULL + * if list is empty. */ +- int grabFlags; /* Miscellaneous flag values. See definitions ++ int grabFlags; /* Miscellaneous flag values. See definitions + * in tkGrab.c. */ + + /* +@@ -309,8 +304,8 @@ + */ + + int gridInit; /* 0 means table below needs initializing. */ +- Tcl_HashTable gridHashTable;/* Maps from Tk_Window tokens to +- * corresponding Grid structures. */ ++ Tcl_HashTable gridHashTable;/* Maps from Tk_Window tokens to corresponding ++ * Grid structures. */ + + /* + * Information used by tkImage.c only: +@@ -328,17 +323,14 @@ + * Information used by tkOption.c only. + */ + +- +- + /* + * Information used by tkPack.c only. + */ + + int packInit; /* 0 means table below needs initializing. */ + Tcl_HashTable packerHashTable; +- /* Maps from Tk_Window tokens to +- * corresponding Packer structures. */ +- ++ /* Maps from Tk_Window tokens to corresponding ++ * Packer structures. */ + + /* + * Information used by tkPlace.c only. +@@ -354,14 +346,13 @@ + * Information used by tkSelect.c and tkClipboard.c only: + */ + +- + struct TkSelectionInfo *selectionInfoPtr; +- /* First in list of selection information +- * records. Each entry contains information ++ /* First in list of selection information ++ * records. Each entry contains information + * about the current owner of a particular + * selection on this display. */ +- Atom multipleAtom; /* Atom for MULTIPLE. None means +- * selection stuff isn't initialized. */ ++ Atom multipleAtom; /* Atom for MULTIPLE. None means selection ++ * stuff isn't initialized. */ + Atom incrAtom; /* Atom for INCR. */ + Atom targetsAtom; /* Atom for TARGETS. */ + Atom timestampAtom; /* Atom for TIMESTAMP. */ +@@ -370,9 +361,8 @@ + Atom applicationAtom; /* Atom for TK_APPLICATION. */ + Atom windowAtom; /* Atom for TK_WINDOW. */ + Atom clipboardAtom; /* Atom for CLIPBOARD. */ +-#if (TK_VERSION_NUMBER >= _VERSION(8,4,0)) +- Atom utf8Atom; +-#endif ++ Atom utf8Atom; /* Atom for UTF8_STRING. */ ++ + Tk_Window clipWindow; /* Window used for clipboard ownership and to + * retrieve selections between processes. NULL + * means clipboard info hasn't been +@@ -383,7 +373,7 @@ + /* Last application that owned clipboard. */ + struct TkClipboardTarget *clipTargetPtr; + /* First in list of clipboard type information +- * records. Each entry contains information ++ * records. Each entry contains information + * about the buffers for a given selection + * target. */ + +@@ -391,13 +381,13 @@ + * Information used by tkSend.c only: + */ + +- Tk_Window commTkwin; /* Window used for communication +- * between interpreters during "send" +- * commands. NULL means send info hasn't +- * been initialized yet. */ ++ Tk_Window commTkwin; /* Window used for communication between ++ * interpreters during "send" commands. NULL ++ * means send info hasn't been initialized ++ * yet. */ + Atom commProperty; /* X's name for comm property. */ +- Atom registryProperty; /* X's name for property containing +- * registry of interpreter names. */ ++ Atom registryProperty; /* X's name for property containing registry ++ * of interpreter names. */ + Atom appNameProperty; /* X's name for property used to hold the + * application name on each comm window. */ + +@@ -409,34 +399,21 @@ + /* First in list of chunks of free resource + * identifiers, or NULL if there are no free + * resources. */ +- XID(*defaultAllocProc) _ANSI_ARGS_((Display *display)); ++ XID (*defaultAllocProc) (Display *display); + /* Default resource allocator for display. */ + struct TkIdStack *windowStackPtr; +- /* First in list of chunks of window +- * identifers that can't be reused right +- * now. */ +-#if (TK_VERSION_NUMBER < _VERSION(8,4,0)) +- int idCleanupScheduled; /* 1 means a call to WindowIdCleanup has +- * already been scheduled, 0 means it +- * hasn't. */ +-#else ++ /* First in list of chunks of window ids that ++ * can't be reused right now. */ + Tcl_TimerToken idCleanupScheduled; + /* If set, it means a call to WindowIdCleanup + * has already been scheduled, 0 means it + * hasn't. */ +-#endif ++ + /* + * Information used by tkUnixWm.c and tkWinWm.c only: + */ + +-#if (TK_VERSION_NUMBER < _VERSION(8,4,0)) +- int wmTracing; /* Used to enable or disable tracing in +- * this module. If tracing is enabled, +- * then information is printed on +- * standard output about interesting +- * interactions with the window manager. */ +-#endif +- struct TkWmInfo *firstWmPtr; /* Points to first top-level window. */ ++ struct TkWmInfo *firstWmPtr;/* Points to first top-level window. */ + struct TkWmInfo *foregroundWmPtr; + /* Points to the foreground window. */ + +@@ -444,9 +421,8 @@ + * Information maintained by tkWindow.c for use later on by tkXId.c: + */ + +- +- int destroyCount; /* Number of Tk_DestroyWindow operations +- * in progress. */ ++ int destroyCount; /* Number of Tk_DestroyWindow operations in ++ * progress. */ + unsigned long lastDestroyRequest; + /* Id of most recent XDestroyWindow request; + * can re-use ids in windowStackPtr when +@@ -465,42 +441,41 @@ + */ + + #ifdef TK_USE_INPUT_METHODS +- XIM inputMethod; /* Input method for this display */ +-#if (TK_VERSION_NUMBER >= _VERSION(8,4,0)) +-#if TK_XIM_SPOT ++ XIM inputMethod; /* Input method for this display. */ ++ XIMStyle inputStyle; /* Input style selected for this display. */ + XFontSet inputXfs; /* XFontSet cached for over-the-spot XIM. */ +-#endif /* TK_XIM_SPOT */ +-#endif /* TK_VERSION_NUMBER >= 8.4 */ + #endif /* TK_USE_INPUT_METHODS */ + Tcl_HashTable winTable; /* Maps from X window ids to TkWindow ptrs. */ ++ + int refCount; /* Reference count of how many Tk applications +- * are using this display. Used to clean up +- * the display when we no longer have any +- * Tk applications using it. +- */ ++ * are using this display. Used to clean up ++ * the display when we no longer have any Tk ++ * applications using it. */ ++ + /* + * The following field were all added for Tk8.3 + */ +- int mouseButtonState; /* current mouse button state for this +- * display */ +-#if (TK_VERSION_NUMBER < _VERSION(8,4,0)) +- int warpInProgress; +-#endif ++ ++ int mouseButtonState; /* Current mouse button state for this ++ * display. */ ++ Window mouseButtonWindow; /* Window the button state was set in, added ++ * in Tk 8.4. */ + Window warpWindow; + int warpX; + int warpY; +-#if (TK_VERSION_NUMBER < _VERSION(8,4,0)) +- int useInputMethods; /* Whether to use input methods */ +-#else ++ + /* + * The following field(s) were all added for Tk8.4 + */ +- long deletionEpoch; /* Incremented by window deletions */ +- unsigned int flags; /* Various flag values: these are all +- * defined in below. */ +- TkCaret caret; /* information about the caret for this +- * display. This is not a pointer. */ +-#endif ++ ++ unsigned int flags; /* Various flag values: these are all defined ++ * in below. */ ++ TkCaret caret; /* Information about the caret for this ++ * display. This is not a pointer. */ ++ ++ int iconDataSize; /* Size of default iconphoto image data. */ ++ unsigned char *iconDataPtr; /* Default iconphoto image data, if set. */ ++ + } TkDisplay; + + #else +diff -ur blt2.4z/src/Makefile.in blt2.4z-8.5.2/src/Makefile.in +--- blt2.4z/src/Makefile.in 2002-07-15 11:31:29.000000000 +0200 ++++ blt2.4z-8.5.2/src/Makefile.in 2008-04-15 17:31:26.000000000 +0200 +@@ -230,7 +230,8 @@ + + distclean: clean + $(RM) $(srcdir)/*.bak $(srcdir)/*\~ $(srcdir)/"#"* Makefile +- $(RM) bltConfig.h Makefile TAGS ++ $(RM) bltConfig.h bltHash.h Makefile TAGS ++ (cd shared; $(MAKE) distclean) + + .c.o: + $(CC) -c $(CC_SWITCHES) $< +diff -ur blt2.4z/src/Makefile.vc blt2.4z-8.5.2/src/Makefile.vc +--- blt2.4z/src/Makefile.vc 2002-09-07 22:12:10.000000000 +0200 ++++ blt2.4z-8.5.2/src/Makefile.vc 2008-04-15 17:31:25.000000000 +0200 +@@ -3,16 +3,15 @@ + # Makefile for BLT library using VC++. + # ------------------------------------------------------------------------ + +-include e:/src/blt/win/makedefs ++include ../win/makedefs + +-TOOLS32 = c:/Program\ Files/Microsoft\ Visual\ Studio/Vc98 + AR = lib.exe -link50compat + LD = link.exe + CC = cl.exe + rc32 = rc.exe + + ifeq ($(WITH_JPEG),0) +-EXTRA_DEFINES = ++EXTRA_DEFINES = + endif + ifeq ($(WITH_JPEG),1) + EXTRA_DEFINES = -DHAVE_JPEGLIB_H=1 +@@ -21,23 +20,23 @@ + JPEGINC = $(JPEGDIR) + endif + ifeq ($(WITH_JPEG),2) +-EXTRA_DEFINES = -DHAVE_IJL_H=1 ++EXTRA_DEFINES = -DHAVE_IJL_H=1 + JPEGDIR = c:/Program\ Files/Intel/IJL + JPEGLIB = $(JPEGDIR)/lib/ijl15l.lib + JPEGINC = $(JPEGDIR)/Include + endif + + # ------------------------------------------------------------------------ +-# C Compiler options ++# C Compiler options + # ------------------------------------------------------------------------ + + DEFINES = -D_X86_=1 -D__STDC__ -DWIN32 -DCONSOLE -D_MT \ +- $(DEBUG_DEFINES) $(SHLIB_DEFINES) $(EXTRA_DEFINES) ++ $(DEBUG_DEFINES) $(SHLIB_DEFINES) $(EXTRA_DEFINES) + + ifeq ($(SHARED),1) + SHLIB_DEFINES = -D_DLL + SHLIB_TARGET = build-dll +-LIBS = $(COMMON_LIBS) ++LIBS = $(COMMON_LIBS) + else + SHLIB_DEFINES = -D_CTYPE_DISABLE_MACROS + LIBS = $(COMMON_LIBS) $(EXTRA_LIBS) +@@ -45,23 +44,23 @@ + + ifeq ($(DEBUG),1) + CFLAGS = -Z7 -Od +-DEBUG_LDFLAGS = -debug:full -debugtype:cv ++DEBUG_LDFLAGS = -debug:full -debugtype:cv + DEBUG_DEFINES = -DUSE_TCLALLOC=0 +-TK_LIB = $(TKDIR)/win/Debug/tk$(v2)d.lib +-TCL_LIB = $(TCLDIR)/win/Debug/tcl$(v2)d.lib ++TK_LIB = $(TKDIR)/win/Debug/tk$(v2)d.lib ++TCL_LIB = $(TCLDIR)/win/Debug/tcl$(v2)d.lib + MSVCRT = msvcrtd.lib + else +-CFLAGS = -Ox -GB -GD +-DEBUG_LDFLAGS = -debug:full -debugtype:cv +-TK_LIB = $(TKDIR)/win/Release/tk$(v2).lib +-TCL_LIB = $(TCLDIR)/win/Release/tcl$(v2).lib ++CFLAGS = -Ox -GB ++DEBUG_LDFLAGS = -debug:full -debugtype:cv ++TK_LIB = $(TKDIR)/win/Release/tk$(v2).lib ++TCL_LIB = $(TCLDIR)/win/Release/tcl$(v2).lib + MSVCRT = msvcrt.lib + endif + +-EXTRA_CFLAGS = -nologo -W3 ++EXTRA_CFLAGS = -nologo -W3 + + # ------------------------------------------------------------------------ +-# Linker flags and options ++# Linker flags and options + # ------------------------------------------------------------------------ + + COMMON_LDFLAGS = -nodefaultlib -release -nologo -warn:3 \ +@@ -72,14 +71,14 @@ + SHLIB_LDFLAGS = $(COMMON_LDFLAGS) \ + -subsystem:console -entry:mainCRTStartup \ + -subsystem:windows -entry:WinMainCRTStartup \ +- -entry:_DllMainCRTStartup$(DLLENTRY) -dll ++ -entry:_DllMainCRTStartup$(DLLENTRY) -dll + + LDFLAGS = $(COMMON_LDFLAGS) \ +- -fixed:NO -stack:2300000 ++ -fixed:NO -stack:2300000 + + COMMON_LIBS = $(TK_LIB) $(TCL_LIB) \ + $(MSVCRT) \ +- kernel32.lib user32.lib ++ kernel32.lib user32.lib + + EXTRA_LIBS = $(OLELIB) \ + $(JPEGLIB) \ +@@ -89,11 +88,11 @@ + winspool.lib \ + comdlg32.lib + +-TCL_ONLY_LIBS = $(TCL_LIB) $(MSVCRT) kernel32.lib user32.lib advapi32.lib ++TCL_ONLY_LIBS = $(TCL_LIB) $(MSVCRT) kernel32.lib user32.lib advapi32.lib + + + # ------------------------------------------------------------------------ +-# Source and target installation directories ++# Source and target installation directories + # ------------------------------------------------------------------------ + + srcdir = . +@@ -108,7 +107,6 @@ + TCLDIR = $(srcdir)/../../tcl$(v3) + TKDIR = $(srcdir)/../../tk$(v3) + INCLUDES = -I. -I$(srcdir) \ +- -I$(TOOLS32)/include \ + -I$(JPEGINC) \ + -I$(TCLDIR)/win -I$(TCLDIR)/generic \ + -I$(TKDIR)/win -I$(TKDIR)/generic -I$(TKDIR)/xlib \ +@@ -122,9 +120,9 @@ + # ------------------------------------------------------------------------ + + N_OBJS = bltTed.o +-V3_OBJS = bltTri.o bltGrMt.o ++V3_OBJS = bltTri.o bltGrMt.o + +-TK_OBJS = tkButton.o tkFrame.o tkScrollbar.o ++TK_OBJS = tkButton.o tkFrame.o tkScrollbar.o + + GRAPH_OBJS = bltGrAxis.o \ + bltGrBar.o \ +@@ -137,7 +135,7 @@ + bltGrMisc.o \ + bltGrPen.o \ + bltGrPs.o \ +- bltGraph.o ++ bltGraph.o + + TCL_ONLY_OBJS = bltAlloc.o \ + bltArrayObj.o \ +@@ -161,8 +159,7 @@ + bltWatch.o \ + bltWinPipe.o \ + bltWinUtil.o \ +- bltWinDde.o \ +- pure_api.o ++ bltWinDde.o + + DEMO_OBJS = tkConsole.o bltWinMain.o + +@@ -196,14 +193,14 @@ + bltWindow.o \ + bltObjConfig.o \ + bltWinop.o \ +- $(TK_OBJS) $(N_OBJS) ++ $(TK_OBJS) $(N_OBJS) + + NOT_YET = bltContainer.o bltCutBuffer.o bltColor.o + + HEADERS = blt.h bltChain.h bltVector.h bltTree.h bltPool.h bltHash.h + + # GNU Make-specific macro +-SRCS = $(patsubst %.o,$(srcdir)/%.c,$(OBJS)) ++SRCS = $(patsubst %.o,$(srcdir)/%.c,$(OBJS)) + + shell_name = bltwish + version = $(BLT_MAJOR_VERSION)$(BLT_MINOR_VERSION) +@@ -214,9 +211,9 @@ + + lib_name = BLT$(version) + lib_a = BLT$(version).lib +-lib_so = BLT$(version).dll ++lib_so = BLT$(version).dll + tcl_only_lib_a = BLTlite$(version).lib +-tcl_only_lib_so = BLTlite$(version).dll ++tcl_only_lib_so = BLTlite$(version).dll + + CC_SWITCHES = $(CFLAGS) $(EXTRA_CFLAGS) $(DEFINES) $(INCLUDES) + VPATH = $(srcdir) +@@ -232,21 +229,19 @@ + build-dll: build-library $(lib_so) $(tcl_only_lib_so) + + $(bltwish): $(lib_a) tkConsole.o bltWinMain.c +- $(RM) $(bltwish) ++ $(RM) $(bltwish) + $(CC) -c $(CC_SWITCHES) -DTCLLIBPATH=\"$(TCLLIBPATH)\" \ + -FobltWinMain.o $(srcdir)/bltWinMain.c +- LIB=$(TOOLS32)/lib \ + $(LD) $(LDFLAGS) tkConsole.o bltWinMain.o -out:$(bltwish) \ +- $(lib_a) $(LIBS) ++ $(lib_a) $(LIBS) + + $(bltsh): $(tcl_only_lib_a) bltWinMain.c +- $(RM) $(bltsh) ++ $(RM) $(bltsh) + $(CC) -c $(CC_SWITCHES) -DTCL_ONLY \ + -DTCLLIBPATH=\"$(TCLLIBPATH)\" \ + -FobltWinMain.o $(srcdir)/bltWinMain.c +- LIB=$(TOOLS32)/lib \ + $(LD) $(LDFLAGS) bltWinMain.o -out:$(bltsh) \ +- $(tcl_only_lib_a) $(TCL_ONLY_LIBS) ++ $(tcl_only_lib_a) $(TCL_ONLY_LIBS) + + $(lib_a): bltHash.h $(OBJS) bltInit.c + $(RM) bltInit.o +@@ -260,7 +255,6 @@ + $(CC) -c $(CC_SWITCHES) -DBLT_LIBRARY=\"$(BLT_LIBRARY)\" \ + -FobltInit.o $(srcdir)/bltInit.c + $(RM) $@ +- LIB=$(TOOLS32)/lib \ + $(LD) $(SHLIB_LDFLAGS) -out:$@ bltInit.o $(OBJS) $(SHLIB_LD_LIBS) + + $(tcl_only_lib_a): bltHash.h $(TCL_ONLY_OBJS) bltInit.c +@@ -268,16 +262,15 @@ + $(CC) -c $(CC_SWITCHES) -DTCL_ONLY -DBLT_LIBRARY=\"$(BLT_LIBRARY)\" \ + -FobltInit.o $(srcdir)/bltInit.c + $(RM) $@ +- $(AR) -out:$@ bltInit.o $(TCL_ONLY_OBJS) ++ $(AR) -out:$@ bltInit.o $(TCL_ONLY_OBJS) + + $(tcl_only_lib_so): $(tcl_only_lib_a) $(TCL_ONLY_OBJS) bltInit.c + $(RM) bltInit.o + $(CC) -c $(CC_SWITCHES) -DTCL_ONLY -DBLT_LIBRARY=\"$(BLT_LIBRARY)\" \ + -FobltInit.o $(srcdir)/bltInit.c + $(RM) $@ +- LIB=$(TOOLS32)/lib \ + $(LD) $(SHLIB_LDFLAGS) -out:$@ bltInit.o $(TCL_ONLY_OBJS) \ +- $(TCL_ONLY_LIBS) ++ $(TCL_ONLY_LIBS) + + bltHash.h: bltHash.h.in + sed -e 's/@SIZEOF_VOID_P@/4/' \ +@@ -295,7 +288,7 @@ + fi ; \ + done + +-install-binaries: install-lib install-demos ++install-binaries: install-lib install-demos + + install-demos: build-demos + $(INSTALL) $(bltwish) $(bindir)/$(bltwish) +@@ -303,8 +296,8 @@ + $(INSTALL) $(bltsh) $(bindir)/$(bltsh) + $(INSTALL) $(bltsh) $(bindir)/$(bltsh2) + +-install-lib: $(lib_so) $(lib_a) +- $(INSTALL_DATA) $(lib_so) $(bindir) ++install-lib: $(lib_so) $(lib_a) ++ $(INSTALL_DATA) $(lib_so) $(libdir) + $(INSTALL_DATA) $(lib_a) $(libdir) + $(INSTALL_DATA) $(tcl_only_lib_so) $(bindir) + $(INSTALL_DATA) $(tcl_only_lib_a) $(libdir) +@@ -321,11 +314,11 @@ + $(RM) *.o *.pdb *.exp \ + $(lib_a) $(lib_so) $(tcl_only_lib_a) $(tcl_only_lib_so) \ + $(bltwish) $(bltsh) $(bltwish2) $(bltsh2) +- $(RM) $(srcdir)/*.bak $(srcdir)/*\~ $(srcdir)/"#"* ++ $(RM) $(srcdir)/*.bak $(srcdir)/*\~ $(srcdir)/"#"* ++ $(RM) bltHash.h + + distclean: clean + $(RM) Makefile + +-.c.o: ++%.o : %.c + $(CC) -c $(CC_SWITCHES) -Fo$*.o $< +- +Sólo en blt2.4z/src: pure_api.c +diff -ur blt2.4z/src/shared/Makefile.in blt2.4z-8.5.2/src/shared/Makefile.in +--- blt2.4z/src/shared/Makefile.in 2002-05-14 23:37:19.000000000 +0200 ++++ blt2.4z-8.5.2/src/shared/Makefile.in 2008-04-15 17:31:25.000000000 +0200 +@@ -175,10 +175,10 @@ + done + clean: + $(RM) $(OBJS) $(lib_so) $(tcl_only_lib_so) $(bltwish) $(bltsh) \ +- *pure* .pure* ++ *pure* .pure* bltInit.o + + distclean: clean +- $(RM) $(srcdir)/*.bak $(srcdir)/*\~ $(srcdir)/"#"* ++ $(RM) Makefile $(srcdir)/*.bak $(srcdir)/*\~ $(srcdir)/"#"* + + # ------------------------------------------------------------------------ + # in lieu of viewpath-ing... +Sólo en blt2.4z-8.5.2/src: t.t +diff -ur blt2.4z/win/makedefs blt2.4z-8.5.2/win/makedefs +--- blt2.4z/win/makedefs 2002-10-16 07:33:53.000000000 +0200 ++++ blt2.4z-8.5.2/win/makedefs 2008-04-15 17:31:26.000000000 +0200 +@@ -3,33 +3,13 @@ + + v1 = 8.4 + v2 = 84 +-v3 = 8.4.0 +- +-#v1 = 8.3 +-#v2 = 83 +-#v3 = 8.3.4 +- +-#v1 = 8.3 +-#v2 = 83 +-#v3 = 8.3.2 +- +-#v1 = 8.2 +-#v2 = 82 +-#v3 = 8.2.3 +- +-#v1 = 8.1 +-#v2 = 81 +-#v3 = 8.1.1 +- +-#v1 = 8.0 +-#v2 = 80 +-#v3 = 8.0.5 ++v3 = 8.4.12 + + #Use Independent JPEG Group (IJG) library or Intel JPEG Library (IJL) + # 0 = None. + # 1 = IJG + # 2 = IJL +-WITH_JPEG=2 ++WITH_JPEG=0 + + # ------------------------------------------------------------------------ + # You shouldn't need to edit anything beyond this point +@@ -39,7 +19,7 @@ + BLT_MINOR_VERSION = 4 + BLT_VERSION = 2.4 + +-prefix = C:/Program\ Files/Tcl ++prefix = x:/target/staff/koen/install/tcltk8.4.12/WIN + exec_prefix = $(prefix) + includedir = $(prefix)/include + bindir = $(prefix)/bin +@@ -48,7 +28,7 @@ + BLT_LIBRARY = $(libdir)/blt$(BLT_VERSION) + TCLLIBPATH = $(libdir)/tcl$(v1) - #endif /* TCL_MAJOR_VERSION >= 8 */ +-AUX_LIBS = ++AUX_LIBS = + SHLIB_SUFFIX = .dll + INSTALL = install -m 0755