summaryrefslogtreecommitdiffstats
path: root/generic/tkWindow.c
diff options
context:
space:
mode:
authordgp@users.sourceforge.net <dgp>2007-09-17 14:58:03 (GMT)
committerdgp@users.sourceforge.net <dgp>2007-09-17 14:58:03 (GMT)
commitce289d82cc97ce83141dca5282abd9d3858223fb (patch)
tree92740e87730997e6b8a2ab7f1db5d6bb6b55a361 /generic/tkWindow.c
parent460e08b80950a25757772e3623e8c0f514a28475 (diff)
downloadtk-ce289d82cc97ce83141dca5282abd9d3858223fb.zip
tk-ce289d82cc97ce83141dca5282abd9d3858223fb.tar.gz
tk-ce289d82cc97ce83141dca5282abd9d3858223fb.tar.bz2
* generic/tkConsole.c: Revised callers of Tcl_InitStubs() to account
* generic/tkMain.c: for restored compatible support for the call * generic/tkWindow.c: Tcl_InitStubs(interp, TCL_VERSION, 1). Also revised Tcl_PkgRequire() call for Tcl so that, for example, a Tk library built against Tcl 8.5.1 headers will not refuse to [load] into a Tcl 8.5.0 interpreter. [Tcl Bug 1578344]. * generic/tk.h: Revised Tk_InitStubs() to restore Tk 8.4 * generic/tkStubLib.c: source compatibility with callers of * generic/tkWindow.c: Tk_InitStubs(interp, TK_VERSION, 1).
Diffstat (limited to 'generic/tkWindow.c')
-rw-r--r--generic/tkWindow.c50
1 files changed, 47 insertions, 3 deletions
diff --git a/generic/tkWindow.c b/generic/tkWindow.c
index fb68d21..d9da81a 100644
--- a/generic/tkWindow.c
+++ b/generic/tkWindow.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWindow.c,v 1.85 2007/09/11 18:24:41 dgp Exp $
+ * RCS: @(#) $Id: tkWindow.c,v 1.86 2007/09/17 14:58:05 dgp Exp $
*/
#include "tkInt.h"
@@ -2948,7 +2948,7 @@ Initialize(
* only an issue when Tk is loaded dynamically.
*/
- if (Tcl_InitStubs(interp, TCL_PATCH_LEVEL, 0) == NULL) {
+ if (Tcl_InitStubs(interp, TCL_VERSION, 1) == NULL) {
return TCL_ERROR;
}
@@ -3181,7 +3181,7 @@ Initialize(
geometry = NULL;
}
- if (Tcl_PkgRequire(interp, "Tcl", TCL_PATCH_LEVEL, 0) == NULL) {
+ if (Tcl_PkgRequire(interp, "Tcl", TCL_VERSION, 0) == NULL) {
code = TCL_ERROR;
goto done;
}
@@ -3273,6 +3273,50 @@ tkInit");
}
/*
+ *----------------------------------------------------------------------
+ *
+ * Tk_PkgInitStubsCheck --
+ *
+ * This is a replacement routine for Tk_InitStubs() that is called
+ * from code where -DUSE_TK_STUBS has not been enabled.
+ *
+ * Results:
+ * Returns the version of a conforming Tk stubs table, or NULL, if
+ * the table version doesn't satisfy the requested requirements,
+ * according to historical practice.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+CONST char *
+Tk_PkgInitStubsCheck(
+ Tcl_Interp *interp,
+ CONST char * version,
+ int exact)
+{
+ CONST char *actualVersion = Tcl_PkgRequire(interp, "Tk", version, 0);
+
+ if (exact && actualVersion) {
+ CONST char *p = version;
+ int count = 0;
+
+ while (*p) {
+ count += !isdigit(*p++);
+ }
+ if (count == 1) {
+ if (0 != strncmp(version, actualVersion, strlen(version))) {
+ return NULL;
+ }
+ } else {
+ return Tcl_PkgPresent(interp, "Tk", version, 1);
+ }
+ }
+ return actualVersion;
+}
+/*
* Local Variables:
* mode: c
* c-basic-offset: 4