diff options
author | dgp@users.sourceforge.net <dgp> | 2007-09-17 14:58:03 (GMT) |
---|---|---|
committer | dgp@users.sourceforge.net <dgp> | 2007-09-17 14:58:03 (GMT) |
commit | ce289d82cc97ce83141dca5282abd9d3858223fb (patch) | |
tree | 92740e87730997e6b8a2ab7f1db5d6bb6b55a361 /generic/tkWindow.c | |
parent | 460e08b80950a25757772e3623e8c0f514a28475 (diff) | |
download | tk-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.c | 50 |
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 |