--- origsrc/tcl8.6.12/.github/workflows/msys2-build.yml 1970-01-01 01:00:00.000000000 +0100 +++ src/tcl8.6.12/.github/workflows/msys2-build.yml 2021-11-10 13:28:26.000000000 +0100 @@ -0,0 +1,33 @@ +name: msys2 + +on: + push: + +jobs: + msys2: + runs-on: windows-latest + + defaults: + run: + shell: msys2 {0} + working-directory: unix + + steps: + - name: Init MSYS + uses: msys2/setup-msys2@v2 + with: + msystem: MSYS + install: git base-devel msys2-devel zlib + update: true + - name: Checkout + uses: actions/checkout@v2 + - name: Build + run: | + autoreconf -vfi + ./configure -C --prefix=/usr --enable-64bit || { cat config.log; cat config.cache; exit 1; } + make + - name: Run Tests (ignoring test io-53.4.1 which hangs) + run: make test + env: + ERROR_ON_FAILURES: 1 + TESTFLAGS: -skip io-53.4.1 --- origsrc/tcl8.6.12/.github/workflows/win-build.yml 2021-10-29 19:08:07.000000000 +0200 +++ src/tcl8.6.12/.github/workflows/win-build.yml 2021-11-10 13:28:26.000000000 +0100 @@ -3,43 +3,6 @@ on: [push] env: ERROR_ON_FAILURES: 1 jobs: - msvc: - runs-on: windows-latest - defaults: - run: - shell: powershell - working-directory: win - strategy: - matrix: - cfgopt: - - "" - - "OPTS=static,msvcrt" - - "OPTS=symbols" - - "OPTS=memdbg" - # Using powershell means we need to explicitly stop on failure - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Init MSVC - uses: ilammy/msvc-dev-cmd@v1 - - name: Build ${{ matrix.cfgopt }} - run: | - &nmake -f makefile.vc ${{ matrix.cfgopt }} all - if ($lastexitcode -ne 0) { - throw "nmake exit code: $lastexitcode" - } - - name: Build Test Harness ${{ matrix.cfgopt }} - run: | - &nmake -f makefile.vc ${{ matrix.cfgopt }} tcltest - if ($lastexitcode -ne 0) { - throw "nmake exit code: $lastexitcode" - } - - name: Run Tests ${{ matrix.cfgopt }} - run: | - &nmake -f makefile.vc ${{ matrix.cfgopt }} test - if ($lastexitcode -ne 0) { - throw "nmake exit code: $lastexitcode" - } gcc: runs-on: windows-latest defaults: --- origsrc/tcl8.6.12/generic/tcl.h 2021-10-29 19:08:07.000000000 +0200 +++ src/tcl8.6.12/generic/tcl.h 2021-11-10 13:28:30.000000000 +0100 @@ -462,7 +462,7 @@ typedef unsigned TCL_WIDE_INT_TYPE Tcl_W # else typedef struct _stat32i64 Tcl_StatBuf; # endif /* _MSC_VER < 1400 */ -#elif defined(__CYGWIN__) +#elif 0 typedef struct { dev_t st_dev; unsigned short st_ino; --- origsrc/tcl8.6.12/generic/tclBasic.c 2021-10-29 19:08:07.000000000 +0200 +++ src/tcl8.6.12/generic/tclBasic.c 2021-11-10 13:28:30.000000000 +0100 @@ -434,6 +434,109 @@ TclFinalizeEvaluation(void) /* *---------------------------------------------------------------------- * + * buildInfoObjCmd -- + * + * Implements tcl::build-info command. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static int +buildInfoObjCmd( + void *clientData, + Tcl_Interp *interp, /* Current interpreter. */ + int objc, /* Number of arguments. */ + Tcl_Obj *const objv[]) /* Argument objects. */ +{ + if (objc > 2) { + Tcl_WrongNumArgs(interp, 1, objv, "?option?"); + return TCL_ERROR; + } + if (objc == 2) { + int len; + const char *arg = TclGetStringFromObj(objv[1], &len); + const char *p; + if (len == 7 && !strcmp(arg, "version")) { + char buf[80]; + p = strchr((char *)clientData, '.'); + if (p) { + const char *q = strchr(p+1, '.'); + const char *r = strchr(p+1, '+'); + p = (q < r) ? q : r; + } + if (p) { + memcpy(buf, (char *)clientData, p - (char *)clientData); + buf[p - (char *)clientData] = '\0'; + Tcl_AppendResult(interp, buf, NULL); + } + return TCL_OK; + } else if (len == 10 && !strcmp(arg, "patchlevel")) { + char buf[80]; + p = strchr((char *)clientData, '+'); + if (p) { + memcpy(buf, (char *)clientData, p - (char *)clientData); + buf[p - (char *)clientData] = '\0'; + Tcl_AppendResult(interp, buf, NULL); + } + return TCL_OK; + } else if (len == 6 && !strcmp(arg, "commit")) { + const char *q, *p = strchr((char *)clientData, '+'); + if (p) { + if ((q = strchr(p, '.'))) { + char buf[80]; + memcpy(buf, p+1, q - p - 1); + buf[q - p - 1] = '\0'; + Tcl_AppendResult(interp, buf, NULL); + } else { + Tcl_AppendResult(interp, p+1, NULL); + } + } + return TCL_OK; + } else if (len == 8 && !strcmp(arg, "compiler")) { + p = strchr((char *)clientData, '.'); + while (p) { + if (!strncmp(p+1, "clang-", 6) || !strncmp(p+1, "gcc-", 4) + || !strncmp(p+1, "icc-", 4) || !strncmp(p+1, "msvc-", 5)) { + const char *q = strchr(p+1, '.'); + if (q) { + char buf[16]; + memcpy(buf, p+1, q - p - 1); + buf[q - p - 1] = '\0'; + Tcl_AppendResult(interp, buf, NULL); + } else { + Tcl_AppendResult(interp, p+1, NULL); + } + return TCL_OK; + } + p = strchr(p+1, '.'); + } + Tcl_AppendResult(interp, "0", NULL); + return TCL_OK; + } + p = strchr((char *)clientData, '.'); + while (p) { + if (!strncmp(p+1, arg, len) && ((p[len+1] == '.') || (p[len+1] == '\0'))) { + Tcl_AppendResult(interp, "1", NULL); + return TCL_OK; + } + p = strchr(p+1, '.'); + } + Tcl_AppendResult(interp, "0", NULL); + return TCL_OK; + } + Tcl_AppendResult(interp, (char *)clientData, NULL); + return TCL_OK; +} + +/* + *---------------------------------------------------------------------- + * * Tcl_CreateInterp -- * * Create a new TCL command interpreter. @@ -471,8 +574,7 @@ Tcl_CreateInterp(void) #endif /* TCL_COMPILE_STATS */ char mathFuncName[32]; CallFrame *framePtr; - - TclInitSubsystems(); + const char *version = TclInitSubsystems(); /* * Panic if someone updated the CallFrame structure without also updating @@ -987,6 +1089,8 @@ Tcl_CreateInterp(void) */ Tcl_PkgProvideEx(interp, "Tcl", TCL_PATCH_LEVEL, &tclStubs); + Tcl_CreateObjCommand(interp, "::tcl::build-info", + buildInfoObjCmd, (void *)version, NULL); if (TclTommath_Init(interp) != TCL_OK) { Tcl_Panic("%s", Tcl_GetString(Tcl_GetObjResult(interp))); --- origsrc/tcl8.6.12/generic/tclCmdAH.c 2021-10-29 19:08:07.000000000 +0200 +++ src/tcl8.6.12/generic/tclCmdAH.c 2021-11-10 13:28:30.000000000 +0100 @@ -1810,7 +1810,7 @@ FileAttrIsOwnedCmd( int objc, Tcl_Obj *const objv[]) { -#ifdef __CYGWIN__ +#if 0 #define geteuid() (short)(geteuid)() #endif #if !defined(_WIN32) --- origsrc/tcl8.6.12/generic/tclEvent.c 2021-10-29 19:08:07.000000000 +0200 +++ src/tcl8.6.12/generic/tclEvent.c 2021-11-10 13:28:30.000000000 +0100 @@ -14,6 +14,9 @@ */ #include "tclInt.h" +#ifndef _WIN32 +#include "tclUuid.h" +#endif /* * The data structure below is used to report background errors. One such @@ -1021,7 +1024,92 @@ Tcl_Exit( *------------------------------------------------------------------------- */ -void +MODULE_SCOPE const TclStubs tclStubs; + +#ifndef STRINGIFY +# define STRINGIFY(x) STRINGIFY1(x) +# define STRINGIFY1(x) #x +#endif + +static const struct { + const TclStubs *stubs; + const char version[256]; +} stubInfo = { + &tclStubs, {TCL_PATCH_LEVEL "+" STRINGIFY(TCL_VERSION_UUID) +#if defined(__clang__) && defined(__clang_major__) + ".clang-" STRINGIFY(__clang_major__) +#if __clang_minor__ < 10 + "0" +#endif + STRINGIFY(__clang_minor__) +#endif +#ifdef TCL_COMPILE_DEBUG + ".compiledebug" +#endif +#ifdef TCL_COMPILE_STATS + ".compilestats" +#endif +#if defined(__cplusplus) && !defined(__OBJC__) + ".cplusplus" +#endif +#if defined(__CYGWIN__) + ".cygwin" +#endif +#ifndef NDEBUG + ".debug" +#endif +#if !defined(__clang__) && !defined(__INTEL_COMPILER) && defined(__GNUC__) + ".gcc-" STRINGIFY(__GNUC__) +#if __GNUC_MINOR__ < 10 + "0" +#endif + STRINGIFY(__GNUC_MINOR__) +#endif +#ifdef __INTEL_COMPILER + ".icc-" STRINGIFY(__INTEL_COMPILER) +#endif +#if (defined(_WIN32) && !defined(_WIN64)) || (ULONG_MAX == 0xffffffffUL) + ".ilp32" +#endif +#ifdef TCL_MEM_DEBUG + ".memdebug" +#endif +#if defined(_MSC_VER) + ".msvc-" STRINGIFY(_MSC_VER) +#endif +#ifdef USE_NMAKE + ".nmake" +#endif +#ifdef TCL_NO_DEPRECATED + ".no-deprecate" +#endif +#if !TCL_THREADS + ".no-thread" +#endif +#ifndef TCL_CFG_OPTIMIZED + ".no-optimize" +#endif +#ifdef __OBJC__ + ".objective-c" +#if defined(__cplusplus) + "plusplus" +#endif +#endif +#ifdef TCL_CFG_PROFILED + ".profile" +#endif +#ifdef PURIFY + ".purify" +#endif +#ifdef STATIC_BUILD + ".static" +#endif +#if TCL_UTF_MAX < 4 + ".utf-16" +#endif +}}; + +const char * TclInitSubsystems(void) { if (inExit != 0) { @@ -1065,6 +1153,7 @@ TclInitSubsystems(void) TclpInitUnlock(); } TclInitNotifier(); + return stubInfo.version; } /* --- origsrc/tcl8.6.12/generic/tclFCmd.c 2021-10-29 19:08:07.000000000 +0200 +++ src/tcl8.6.12/generic/tclFCmd.c 2021-11-10 13:28:30.000000000 +0100 @@ -523,7 +523,7 @@ CopyRenameOneFile( * 16 bits and we get collisions. See bug #2015723. */ -#if !defined(_WIN32) && !defined(__CYGWIN__) +#if !defined(_WIN32) if ((sourceStatBuf.st_ino != 0) && (targetStatBuf.st_ino != 0)) { if ((sourceStatBuf.st_ino == targetStatBuf.st_ino) && (sourceStatBuf.st_dev == targetStatBuf.st_dev)) { --- origsrc/tcl8.6.12/generic/tclFileName.c 2021-10-29 19:08:07.000000000 +0200 +++ src/tcl8.6.12/generic/tclFileName.c 2021-11-10 13:28:30.000000000 +0100 @@ -413,7 +413,6 @@ TclpGetNativePathType( if (path[0] == '/') { ++path; -#if defined(__CYGWIN__) || defined(__QNX__) /* * Check for "//" network path prefix */ @@ -422,7 +421,6 @@ TclpGetNativePathType( while (*path && *path != '/') { ++path; } -#if defined(__CYGWIN__) /* UNC paths need to be followed by a share name */ if (*path++ && (*path && *path != '/')) { ++path; @@ -431,10 +429,7 @@ TclpGetNativePathType( } } else { path = origPath + 1; - } -#endif - } -#endif + } } if (driveNameLengthPtr != NULL) { /* * We need this addition in case the QNX or Cygwin code was used. @@ -655,7 +650,6 @@ SplitUnixPath( if (*path == '/') { Tcl_Obj *rootElt; ++path; -#if defined(__CYGWIN__) || defined(__QNX__) /* * Check for "//" network path prefix */ @@ -664,7 +658,6 @@ SplitUnixPath( while (*path && *path != '/') { ++path; } -#if defined(__CYGWIN__) /* UNC paths need to be followed by a share name */ if (*path++ && (*path && *path != '/')) { ++path; @@ -674,9 +667,7 @@ SplitUnixPath( } else { path = origPath + 1; } -#endif } -#endif rootElt = Tcl_NewStringObj(origPath, path - origPath); Tcl_ListObjAppendElement(NULL, result, rootElt); while (*path == '/') { --- origsrc/tcl8.6.12/generic/tclInt.h 2021-10-29 19:08:07.000000000 +0200 +++ src/tcl8.6.12/generic/tclInt.h 2021-11-10 13:28:30.000000000 +0100 @@ -3031,7 +3031,7 @@ MODULE_SCOPE void TclInitLimitSupport(Tc MODULE_SCOPE void TclInitNamespaceSubsystem(void); MODULE_SCOPE void TclInitNotifier(void); MODULE_SCOPE void TclInitObjSubsystem(void); -MODULE_SCOPE void TclInitSubsystems(void); +MODULE_SCOPE const char *TclInitSubsystems(void); MODULE_SCOPE int TclInterpReady(Tcl_Interp *interp); MODULE_SCOPE int TclIsBareword(int byte); MODULE_SCOPE Tcl_Obj * TclJoinPath(int elements, Tcl_Obj * const objv[], --- origsrc/tcl8.6.12/generic/tclIntPlatDecls.h 2021-11-04 16:05:44.000000000 +0100 +++ src/tcl8.6.12/generic/tclIntPlatDecls.h 2021-11-10 14:25:26.000000000 +0100 @@ -40,7 +40,7 @@ extern "C" { * Exported function declarations: */ -#if !defined(_WIN32) && !defined(__CYGWIN__) && !defined(MAC_OSX_TCL) /* UNIX */ +#if !defined(_WIN32) && !defined(MAC_OSX_TCL) /* UNIX */ /* 0 */ EXTERN void TclGetAndDetachPids(Tcl_Interp *interp, Tcl_Channel chan); @@ -116,7 +116,7 @@ EXTERN int TclUnixOpenTemporaryFile(Tcl Tcl_Obj *basenameObj, Tcl_Obj *extensionObj, Tcl_Obj *resultingNameObj); #endif /* UNIX */ -#if defined(_WIN32) || defined(__CYGWIN__) /* WIN */ +#if defined(_WIN32) /* WIN */ /* 0 */ EXTERN void TclWinConvertError(DWORD errCode); /* 1 */ @@ -272,7 +272,7 @@ typedef struct TclIntPlatStubs { int magic; void *hooks; -#if !defined(_WIN32) && !defined(__CYGWIN__) && !defined(MAC_OSX_TCL) /* UNIX */ +#if !defined(_WIN32) && !defined(MAC_OSX_TCL) /* UNIX */ void (*tclGetAndDetachPids) (Tcl_Interp *interp, Tcl_Channel chan); /* 0 */ int (*tclpCloseFile) (TclFile file); /* 1 */ Tcl_Channel (*tclpCreateCommandChannel) (TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid *pidPtr); /* 2 */ @@ -305,7 +305,7 @@ typedef struct TclIntPlatStubs { int (*tclWinCPUID) (unsigned int index, unsigned int *regs); /* 29 */ int (*tclUnixOpenTemporaryFile) (Tcl_Obj *dirObj, Tcl_Obj *basenameObj, Tcl_Obj *extensionObj, Tcl_Obj *resultingNameObj); /* 30 */ #endif /* UNIX */ -#if defined(_WIN32) || defined(__CYGWIN__) /* WIN */ +#if defined(_WIN32) /* WIN */ void (*tclWinConvertError) (DWORD errCode); /* 0 */ void (*tclWinConvertWSAError) (DWORD errCode); /* 1 */ struct servent * (*tclWinGetServByName) (const char *nm, const char *proto); /* 2 */ @@ -385,7 +385,7 @@ extern const TclIntPlatStubs *tclIntPlat * Inline function declarations: */ -#if !defined(_WIN32) && !defined(__CYGWIN__) && !defined(MAC_OSX_TCL) /* UNIX */ +#if !defined(_WIN32) && !defined(MAC_OSX_TCL) /* UNIX */ #define TclGetAndDetachPids \ (tclIntPlatStubsPtr->tclGetAndDetachPids) /* 0 */ #define TclpCloseFile \ @@ -441,7 +441,7 @@ extern const TclIntPlatStubs *tclIntPlat #define TclUnixOpenTemporaryFile \ (tclIntPlatStubsPtr->tclUnixOpenTemporaryFile) /* 30 */ #endif /* UNIX */ -#if defined(_WIN32) || defined(__CYGWIN__) /* WIN */ +#if defined(_WIN32) /* WIN */ #define TclWinConvertError \ (tclIntPlatStubsPtr->tclWinConvertError) /* 0 */ #define TclWinConvertWSAError \ @@ -595,6 +595,9 @@ extern const TclIntPlatStubs *tclIntPlat #else # undef TclpGetPid # define TclpGetPid(pid) ((unsigned long) (pid)) +#ifdef __CYGWIN__ + MODULE_SCOPE void *TclWinGetTclInstance(void); +#endif #endif #endif /* _TCLINTPLATDECLS */ --- origsrc/tcl8.6.12/generic/tclPanic.c 2021-10-29 19:08:07.000000000 +0200 +++ src/tcl8.6.12/generic/tclPanic.c 2021-11-10 13:28:31.000000000 +0100 @@ -14,7 +14,7 @@ */ #include "tclInt.h" -#if defined(_WIN32) || defined(__CYGWIN__) +#if defined(_WIN32) MODULE_SCOPE TCL_NORETURN void tclWinDebugPanic(const char *format, ...); #endif @@ -23,7 +23,7 @@ * procedure. */ -#if defined(__CYGWIN__) +#if 0 static TCL_NORETURN Tcl_PanicProc *panicProc = tclWinDebugPanic; #else static TCL_NORETURN1 Tcl_PanicProc *panicProc = NULL; @@ -52,7 +52,7 @@ Tcl_SetPanicProc( #if defined(_WIN32) /* tclWinDebugPanic only installs if there is no panicProc yet. */ if ((proc != tclWinDebugPanic) || (panicProc == NULL)) -#elif defined(__CYGWIN__) +#elif 0 if (proc == NULL) panicProc = tclWinDebugPanic; else @@ -106,7 +106,7 @@ Tcl_PanicVA( arg8); fprintf(stderr, "\n"); fflush(stderr); -#if defined(_WIN32) || defined(__CYGWIN__) +#if defined(_WIN32) # if defined(__GNUC__) __builtin_trap(); # elif defined(_WIN64) --- origsrc/tcl8.6.12/generic/tclPlatDecls.h 2021-11-04 16:05:44.000000000 +0100 +++ src/tcl8.6.12/generic/tclPlatDecls.h 2021-11-10 14:25:27.000000000 +0100 @@ -31,7 +31,7 @@ * TCHAR is needed here for win32, so if it is not defined yet do it here. * This way, we don't need to include just for one define. */ -#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(_TCHAR_DEFINED) +#if defined(_WIN32) && !defined(_TCHAR_DEFINED) # if defined(_UNICODE) typedef wchar_t TCHAR; # else @@ -50,7 +50,7 @@ extern "C" { * Exported function declarations: */ -#if defined(_WIN32) || defined(__CYGWIN__) /* WIN */ +#if defined(_WIN32) /* WIN */ /* 0 */ EXTERN TCHAR * Tcl_WinUtfToTChar(const char *str, int len, Tcl_DString *dsPtr); @@ -77,7 +77,7 @@ typedef struct TclPlatStubs { int magic; void *hooks; -#if defined(_WIN32) || defined(__CYGWIN__) /* WIN */ +#if defined(_WIN32) /* WIN */ TCHAR * (*tcl_WinUtfToTChar) (const char *str, int len, Tcl_DString *dsPtr); /* 0 */ char * (*tcl_WinTCharToUtf) (const TCHAR *str, int len, Tcl_DString *dsPtr); /* 1 */ #endif /* WIN */ @@ -100,7 +100,7 @@ extern const TclPlatStubs *tclPlatStubsP * Inline function declarations: */ -#if defined(_WIN32) || defined(__CYGWIN__) /* WIN */ +#if defined(_WIN32) /* WIN */ #define Tcl_WinUtfToTChar \ (tclPlatStubsPtr->tcl_WinUtfToTChar) /* 0 */ #define Tcl_WinTCharToUtf \ --- origsrc/tcl8.6.12/generic/tclStubInit.c 2021-11-04 16:05:45.000000000 +0100 +++ src/tcl8.6.12/generic/tclStubInit.c 2021-11-10 14:25:27.000000000 +0100 @@ -137,7 +137,7 @@ static const char *TclGetStartupScriptFi return Tcl_GetString(path); } -#if defined(_WIN32) || defined(__CYGWIN__) +#if defined(_WIN32) #undef TclWinNToHS #define TclWinNToHS winNToHS static unsigned short TclWinNToHS(unsigned short ns) { @@ -161,7 +161,7 @@ static unsigned short TclWinNToHS(unsign # define TclUnixOpenTemporaryFile 0 # define TclpReaddir 0 # define TclpIsAtty 0 -#elif defined(__CYGWIN__) +#elif 0 # define TclpIsAtty isatty # define TclWinSetInterfaces (void (*) (int))(void *)doNothing # define TclWinAddProcess (void (*) (void *, unsigned int))(void *)doNothing @@ -214,13 +214,23 @@ TclWinNoBackslash(char *path) return path; } +#elif defined(__CYGWIN__) +static void +doNothing(void) +{ + /* dummy implementation, no need to do anything */ +} + void *TclWinGetTclInstance() { void *hInstance = NULL; GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, - (const char *)&TclWinNoBackslash, &hInstance); + (const char *)&doNothing, &hInstance); return hInstance; } +# define TclpLocaltime_unix TclpLocaltime +# define TclpGmtime_unix TclpGmtime +#elif 0 int TclpGetPid(Tcl_Pid pid) @@ -228,12 +238,6 @@ TclpGetPid(Tcl_Pid pid) return (int) (size_t) pid; } -static void -doNothing(void) -{ - /* dummy implementation, no need to do anything */ -} - char * Tcl_WinUtfToTChar( const char *string, @@ -755,7 +759,7 @@ static const TclIntStubs tclIntStubs = { static const TclIntPlatStubs tclIntPlatStubs = { TCL_STUB_MAGIC, 0, -#if !defined(_WIN32) && !defined(__CYGWIN__) && !defined(MAC_OSX_TCL) /* UNIX */ +#if !defined(_WIN32) && !defined(MAC_OSX_TCL) /* UNIX */ TclGetAndDetachPids, /* 0 */ TclpCloseFile, /* 1 */ TclpCreateCommandChannel, /* 2 */ @@ -788,7 +792,7 @@ static const TclIntPlatStubs tclIntPlatS TclWinCPUID, /* 29 */ TclUnixOpenTemporaryFile, /* 30 */ #endif /* UNIX */ -#if defined(_WIN32) || defined(__CYGWIN__) /* WIN */ +#if defined(_WIN32) /* WIN */ TclWinConvertError, /* 0 */ TclWinConvertWSAError, /* 1 */ TclWinGetServByName, /* 2 */ @@ -859,7 +863,7 @@ static const TclIntPlatStubs tclIntPlatS static const TclPlatStubs tclPlatStubs = { TCL_STUB_MAGIC, 0, -#if defined(_WIN32) || defined(__CYGWIN__) /* WIN */ +#if defined(_WIN32) /* WIN */ Tcl_WinUtfToTChar, /* 0 */ Tcl_WinTCharToUtf, /* 1 */ #endif /* WIN */ --- origsrc/tcl8.6.12/library/reg/pkgIndex.tcl 2021-10-29 19:08:07.000000000 +0200 +++ src/tcl8.6.12/library/reg/pkgIndex.tcl 2021-11-10 13:28:32.000000000 +0100 @@ -1,9 +1,18 @@ -if {![package vsatisfies [package provide Tcl] 8.5]} return +if {![package vsatisfies [package provide Tcl] 8.5-]} return if {[info sharedlibextension] != ".dll"} return -if {[::tcl::pkgconfig get debug]} { - package ifneeded registry 1.3.5 \ - [list load [file join $dir tclreg13g.dll] Registry] +if {[package vsatisfies [package provide Tcl] 9.0-]} { + package ifneeded registry 1.3.6 \ + [list load [file join $dir tcl9registry13.dll] Registry] } else { - package ifneeded registry 1.3.5 \ - [list load [file join $dir tclreg13.dll] Registry] + package ifneeded registry 1.3.6 \ + [list load [file join $dir tclregistry13.dll] Registry] +} +if {![package vsatisfies [package provide Tcl] 8.5-]} return +if {[info sharedlibextension] != ".dll"} return +if {[package vsatisfies [package provide Tcl] 9.0-]} { + package ifneeded registry 1.3.6 \ + [list load [file join $dir tcl9registry13.dll] Registry] +} else { + package ifneeded registry 1.3.6 \ + [list load [file join $dir tclregistry13.dll] Registry] } --- origsrc/tcl8.6.12/manifest.uuid 2021-11-04 15:29:53.000000000 +0100 +++ src/tcl8.6.12/manifest.uuid 2021-11-10 13:37:55.000000000 +0100 @@ -1 +1 @@ -553f5049a7a3982bbd5ec1f9349f8105c1126f8ea696ec332e16a3cbb3d01323 +2e219577fb3767015386d80e0b14853a8a20b5b5e4e6055eeb2f9d59d509a61a --- origsrc/tcl8.6.12/tests/chanio.test 2021-10-29 19:08:08.000000000 +0200 +++ src/tcl8.6.12/tests/chanio.test 2021-11-10 13:28:33.000000000 +0100 @@ -5334,7 +5334,7 @@ test chan-io-40.1 {POSIX open access mod test chan-io-40.2 {POSIX open access modes: CREAT} -setup { file delete $path(test3) } -constraints {unix} -body { - set f [open $path(test3) {WRONLY CREAT} 0o600] + set f [open $path(test3) {WRONLY CREAT} 0o644] file stat $path(test3) stats set x [format 0o%03o [expr {$stats(mode) & 0o777}]] chan puts $f "line 1" @@ -5343,7 +5343,7 @@ test chan-io-40.2 {POSIX open access mod lappend x [chan gets $f] } -cleanup { chan close $f -} -result {0o600 {line 1}} +} -result {0o644 {line 1}} test chan-io-40.3 {POSIX open access modes: CREAT} -setup { file delete $path(test3) } -constraints {unix umask} -body { --- origsrc/tcl8.6.12/tests/cmdAH.test 2021-10-29 19:08:08.000000000 +0200 +++ src/tcl8.6.12/tests/cmdAH.test 2021-11-10 13:28:33.000000000 +0100 @@ -327,15 +327,15 @@ test cmdAH-8.14 {Tcl_FileObjCmd: dirname test cmdAH-8.15 {Tcl_FileObjCmd: dirname} testsetplatform { testsetplatform unix file dirname //foo/bar -} /foo +} //foo/bar test cmdAH-8.16 {Tcl_FileObjCmd: dirname} testsetplatform { testsetplatform unix file dirname {//foo\/bar/baz} -} {/foo\/bar} +} {//foo\/bar} test cmdAH-8.17 {Tcl_FileObjCmd: dirname} testsetplatform { testsetplatform unix file dirname {//foo\/bar/baz/blat} -} {/foo\/bar/baz} +} {//foo\/bar/baz} test cmdAH-8.18 {Tcl_FileObjCmd: dirname} testsetplatform { testsetplatform unix file dirname /foo// @@ -471,7 +471,7 @@ test cmdAH-9.14 {Tcl_FileObjCmd: tail} t test cmdAH-9.15 {Tcl_FileObjCmd: tail} testsetplatform { testsetplatform unix file tail //foo/bar -} bar +} {} test cmdAH-9.16 {Tcl_FileObjCmd: tail} testsetplatform { testsetplatform unix file tail {//foo\/bar/baz} @@ -1407,7 +1407,7 @@ test cmdAH-27.4.1 { catch {testsetplatform $platform} removeFile $gorpfile set gorpfile [makeFile "Test string" gorp.file] -catch {file attributes $gorpfile -permissions 0o765} +catch {file attributes $gorpfile -permissions 0o644} # stat test cmdAH-28.1 {Tcl_FileObjCmd: stat} -returnCodes error -body { @@ -1435,7 +1435,7 @@ test cmdAH-28.5 {Tcl_FileObjCmd: stat} - } -body { file stat $gorpfile stat format 0o%03o [expr {$stat(mode) & 0o777}] -} -result 0o765 +} -result 0o644 test cmdAH-28.6 {Tcl_FileObjCmd: stat} { list [catch {file stat _bogus_ stat} msg] [string tolower $msg] $errorCode } {1 {could not read "_bogus_": no such file or directory} {POSIX ENOENT {no such file or directory}}} --- origsrc/tcl8.6.12/tests/fCmd.test 2021-10-29 19:08:08.000000000 +0200 +++ src/tcl8.6.12/tests/fCmd.test 2021-11-10 13:28:33.000000000 +0100 @@ -384,7 +384,7 @@ test fCmd-4.14 {TclFileMakeDirsCmd: Tclp file delete -force foo } -constraints {unix notRoot} -body { file mkdir foo - file attr foo -perm 040000 + file attr foo -perm 0o40000 file mkdir foo/tf1 } -returnCodes error -cleanup { file delete -force foo @@ -697,11 +697,11 @@ test fCmd-6.30 {CopyRenameOneFile: TclpR cleanup $tmpspace } -constraints {unix notRoot} -body { file mkdir foo/bar - file attr foo -perm 040555 + file attr foo -perm 0o40555 file rename foo/bar $tmpspace } -returnCodes error -cleanup { catch {file delete [file join $tmpspace bar]} - catch {file attr foo -perm 040777} + catch {file attr foo -perm 0o40777} catch {file delete -force foo} } -match glob -result {*: permission denied} test fCmd-6.31 {CopyRenameOneFile: TclpDeleteFile passed} -setup { @@ -754,7 +754,7 @@ test fCmd-8.1 {FileBasename: basename of -constraints {unix notRoot knownBug} -body { # Labelled knownBug because it is dangerous [Bug: 3881] file mkdir td1 - file attr td1 -perm 040000 + file attr td1 -perm 0o40000 file rename ~$user td1 } -returnCodes error -cleanup { file delete -force td1 @@ -773,7 +773,7 @@ test fCmd-9.1 {file rename: comprehensiv } -constraints {unix notRoot} -body { file mkdir td1 file mkdir td2 - file attr td2 -perm 040000 + file attr td2 -perm 0o40000 file rename td1 td2/ } -returnCodes error -cleanup { file delete -force td2 --- origsrc/tcl8.6.12/tests/registry.test 2021-10-29 19:08:08.000000000 +0200 +++ src/tcl8.6.12/tests/registry.test 2021-11-10 13:28:34.000000000 +0100 @@ -19,7 +19,7 @@ testConstraint reg 0 if {[testConstraint win]} { if {![catch { ::tcltest::loadTestedCommands - set ::regver [package require registry 1.3.5] + set ::regver [package require registry 1.3.6] }]} { testConstraint reg 1 } @@ -33,7 +33,7 @@ testConstraint english [expr { test registry-1.0 {check if we are testing the right dll} {win reg} { set ::regver -} {1.3.5} +} {1.3.6} test registry-1.1 {argument parsing for registry command} {win reg} { list [catch {registry} msg] $msg } {1 {wrong # args: should be "registry ?-32bit|-64bit? option ?arg ...?"}} --- origsrc/tcl8.6.12/tests/tcltest.test 2021-10-29 19:08:08.000000000 +0200 +++ src/tcl8.6.12/tests/tcltest.test 2021-11-10 13:28:35.000000000 +0100 @@ -716,8 +716,8 @@ test tcltest-8.60 {::workingDirectory} switch -- $::tcl_platform(platform) { unix { - file attributes $notReadableDir -permissions 777 - file attributes $notWriteableDir -permissions 777 + file attributes $notReadableDir -permissions 0o777 + file attributes $notWriteableDir -permissions 0o777 } default { catch {testchmod 0o777 $notWriteableDir} --- origsrc/tcl8.6.12/tools/genStubs.tcl 2021-10-29 19:08:08.000000000 +0200 +++ src/tcl8.6.12/tools/genStubs.tcl 2021-11-10 13:28:35.000000000 +0100 @@ -299,9 +299,6 @@ proc genStubs::addPlatformGuard {plat if switch $plat { win { append text "#if defined(_WIN32)" - if {$withCygwin} { - append text " || defined(__CYGWIN__)" - } append text " /* WIN */\n${iftxt}" if {$eltxt ne ""} { append text "#else /* WIN */\n${eltxt}" @@ -310,9 +307,6 @@ proc genStubs::addPlatformGuard {plat if } unix { append text "#if !defined(_WIN32)" - if {$withCygwin} { - append text " && !defined(__CYGWIN__)" - } append text " && !defined(MAC_OSX_TCL)\ /* UNIX */\n${iftxt}" if {$eltxt ne ""} { @@ -336,9 +330,6 @@ proc genStubs::addPlatformGuard {plat if } x11 { append text "#if !(defined(_WIN32)" - if {$withCygwin} { - append text " || defined(__CYGWIN__)" - } append text " || defined(MAC_OSX_TK))\ /* X11 */\n${iftxt}" if {$eltxt ne ""} { --- origsrc/tcl8.6.12/unix/Makefile.in 2021-10-29 19:08:08.000000000 +0200 +++ src/tcl8.6.12/unix/Makefile.in 2021-11-10 13:28:35.000000000 +0100 @@ -724,9 +724,6 @@ ${LIB_FILE}: ${STUB_LIB_FILE} ${OBJS} @MAKE_LIB@ ${STUB_LIB_FILE}: ${STUB_LIB_OBJS} - @if test "x${LIB_FILE}" = "xlibtcl${MAJOR_VERSION}.${MINOR_VERSION}.dll"; then \ - (cd ${TOP_DIR}/win; ${MAKE} winextensions); \ - fi rm -f $@ @MAKE_STUB_LIB@ @@ -1161,6 +1158,10 @@ tclAsync.o: $(GENERIC_DIR)/tclAsync.c tclBasic.o: $(GENERIC_DIR)/tclBasic.c $(COMPILEHDR) $(MATHHDRS) $(NREHDR) $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclBasic.c +tclUuid.h: $(TOP_DIR)/manifest.uuid + echo "#define TCL_VERSION_UUID \\" >$@ + cat $(TOP_DIR)/manifest.uuid >>$@ + tclBinary.o: $(GENERIC_DIR)/tclBinary.c $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclBinary.c @@ -1215,7 +1216,7 @@ tclEnsemble.o: $(GENERIC_DIR)/tclEnsembl tclEnv.o: $(GENERIC_DIR)/tclEnv.c $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclEnv.c -tclEvent.o: $(GENERIC_DIR)/tclEvent.c +tclEvent.o: $(GENERIC_DIR)/tclEvent.c tclUuid.h $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclEvent.c tclExecute.o: $(GENERIC_DIR)/tclExecute.c $(COMPILEHDR) $(MATHHDRS) $(NREHDR) @@ -2045,8 +2046,8 @@ $(UNIX_DIR)/tclConfig.h.in: $(MAC_OSX_DI cd $(MAC_OSX_DIR); autoheader; touch $@ $(TOP_DIR)/manifest.uuid: - printf "git." >$(TOP_DIR)/manifest.uuid - git rev-parse HEAD >>$(TOP_DIR)/manifest.uuid + printf "git-" >$(TOP_DIR)/manifest.uuid + (cd $(TOP_DIR); git rev-parse HEAD >>$(TOP_DIR)/manifest.uuid) dist: $(UNIX_DIR)/configure $(UNIX_DIR)/tclConfig.h.in $(UNIX_DIR)/tcl.pc.in $(MAC_OSX_DIR)/configure $(TOP_DIR)/manifest.uuid genstubs dist-packages ${NATIVE_TCLSH} rm -rf $(DISTDIR) --- origsrc/tcl8.6.12/unix/tcl.m4 2021-11-04 15:29:53.000000000 +0100 +++ src/tcl8.6.12/unix/tcl.m4 2021-11-10 13:28:36.000000000 +0100 @@ -1213,16 +1213,16 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ if test "x${TCL_THREADS}" = "x0"; then AC_MSG_ERROR([CYGWIN compile is only supported with --enable-threads]) fi - do64bit_ok=yes - if test "x${SHARED_BUILD}" = "x1"; then - echo "running cd ../win; ${CONFIG_SHELL-/bin/sh} ./configure $ac_configure_args" - # The eval makes quoting arguments work. - if cd ../win; eval ${CONFIG_SHELL-/bin/sh} ./configure $ac_configure_args; cd ../unix - then : - else - { echo "configure: error: configure failed for ../win" 1>&2; exit 1; } - fi - fi + AC_MSG_CHECKING([whether CYGWIN platform is 64-bit]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM( + [[#include + #if INTPTR_MAX == INT64_MAX + #error 64-bit platform + #endif + ]],[])], + [do64bit_ok=no], + [do64bit_ok=yes]) + AC_MSG_RESULT([$do64bit_ok]) ;; dgux*) SHLIB_CFLAGS="-K PIC" --- origsrc/tcl8.6.12/unix/tclUnixFCmd.c 2021-10-29 19:08:08.000000000 +0200 +++ src/tcl8.6.12/unix/tclUnixFCmd.c 2021-11-10 13:28:36.000000000 +0100 @@ -91,7 +91,7 @@ static int SetPermissionsAttribute(Tcl_ Tcl_Obj *attributePtr); static int GetModeFromPermString(Tcl_Interp *interp, const char *modeStringPtr, mode_t *modePtr); -#if defined(HAVE_CHFLAGS) && defined(UF_IMMUTABLE) || defined(__CYGWIN__) +#if defined(HAVE_CHFLAGS) && defined(UF_IMMUTABLE) static int GetUnixFileAttributes(Tcl_Interp *interp, int objIndex, Tcl_Obj *fileName, Tcl_Obj **attributePtrPtr); static int SetUnixFileAttributes(Tcl_Interp *interp, int objIndex, @@ -124,20 +124,11 @@ extern const char *const tclpFileAttrStr #else /* !DJGPP */ enum { -#if defined(__CYGWIN__) - UNIX_ARCHIVE_ATTRIBUTE, -#endif UNIX_GROUP_ATTRIBUTE, -#if defined(__CYGWIN__) - UNIX_HIDDEN_ATTRIBUTE, -#endif UNIX_OWNER_ATTRIBUTE, UNIX_PERMISSIONS_ATTRIBUTE, -#if defined(HAVE_CHFLAGS) && defined(UF_IMMUTABLE) || defined(__CYGWIN__) +#if defined(HAVE_CHFLAGS) && defined(UF_IMMUTABLE) UNIX_READONLY_ATTRIBUTE, #endif -#if defined(__CYGWIN__) - UNIX_SYSTEM_ATTRIBUTE, -#endif #ifdef MAC_OSX_TCL MACOSX_CREATOR_ATTRIBUTE, MACOSX_TYPE_ATTRIBUTE, MACOSX_HIDDEN_ATTRIBUTE, MACOSX_RSRCLENGTH_ATTRIBUTE, @@ -147,20 +138,11 @@ enum { MODULE_SCOPE const char *const tclpFileAttrStrings[]; const char *const tclpFileAttrStrings[] = { -#if defined(__CYGWIN__) - "-archive", -#endif "-group", -#if defined(__CYGWIN__) - "-hidden", -#endif "-owner", "-permissions", -#if defined(HAVE_CHFLAGS) && defined(UF_IMMUTABLE) || defined(__CYGWIN__) +#if defined(HAVE_CHFLAGS) && defined(UF_IMMUTABLE) "-readonly", #endif -#if defined(__CYGWIN__) - "-system", -#endif #ifdef MAC_OSX_TCL "-creator", "-type", "-hidden", "-rsrclength", #endif @@ -169,19 +151,10 @@ const char *const tclpFileAttrStrings[] MODULE_SCOPE const TclFileAttrProcs tclpFileAttrProcs[]; const TclFileAttrProcs tclpFileAttrProcs[] = { -#if defined(__CYGWIN__) - {GetUnixFileAttributes, SetUnixFileAttributes}, -#endif {GetGroupAttribute, SetGroupAttribute}, -#if defined(__CYGWIN__) - {GetUnixFileAttributes, SetUnixFileAttributes}, -#endif {GetOwnerAttribute, SetOwnerAttribute}, {GetPermissionsAttribute, SetPermissionsAttribute}, -#if defined(HAVE_CHFLAGS) && defined(UF_IMMUTABLE) || defined(__CYGWIN__) - {GetUnixFileAttributes, SetUnixFileAttributes}, -#endif -#if defined(__CYGWIN__) +#if defined(HAVE_CHFLAGS) && defined(UF_IMMUTABLE) {GetUnixFileAttributes, SetUnixFileAttributes}, #endif #ifdef MAC_OSX_TCL @@ -2275,7 +2248,7 @@ DefaultTempDir(void) return TCL_TEMPORARY_FILE_DIRECTORY; } -#if defined(__CYGWIN__) +#if 0 static void StatError( --- origsrc/tcl8.6.12/unix/tclUnixFile.c 2021-10-29 19:08:08.000000000 +0200 +++ src/tcl8.6.12/unix/tclUnixFile.c 2021-11-10 13:28:36.000000000 +0100 @@ -40,7 +40,7 @@ TclpFindExecutable( * (native). */ { Tcl_Encoding encoding; -#ifdef __CYGWIN__ +#if 0 int length; wchar_t buf[PATH_MAX] = L""; char name[PATH_MAX * 3 + 1]; @@ -1186,7 +1186,7 @@ TclpUtime( return utime((const char *)Tcl_FSGetNativePath(pathPtr), tval); } -#ifdef __CYGWIN__ +#if 0 int TclOSstat( --- origsrc/tcl8.6.12/unix/tclUnixInit.c 2021-10-29 19:08:08.000000000 +0200 +++ src/tcl8.6.12/unix/tclUnixInit.c 2021-11-10 13:28:36.000000000 +0100 @@ -32,7 +32,7 @@ # endif #endif -#ifdef __CYGWIN__ +#if 0 #ifdef __cplusplus extern "C" { #endif @@ -783,7 +783,7 @@ void TclpSetVariables( Tcl_Interp *interp) { -#ifdef __CYGWIN__ +#if 0 SYSTEM_INFO sysInfo; static OSVERSIONINFOW osInfo; static int osInfoInitialized = 0; @@ -880,7 +880,7 @@ TclpSetVariables( #endif unameOK = 0; -#ifdef __CYGWIN__ +#if 0 unameOK = 1; if (!osInfoInitialized) { void *handle = GetModuleHandleW(L"NTDLL"); --- origsrc/tcl8.6.12/unix/tclUnixPort.h 2021-10-29 19:08:08.000000000 +0200 +++ src/tcl8.6.12/unix/tclUnixPort.h 2021-11-10 13:28:36.000000000 +0100 @@ -118,8 +118,8 @@ extern "C" { #pragma clang diagnostic pop #endif # define timezone _timezone - extern int TclOSstat(const char *name, void *statBuf); - extern int TclOSlstat(const char *name, void *statBuf); +# define TclOSstat stat +# define TclOSlstat lstat #ifdef __cplusplus } #endif --- origsrc/tcl8.6.12/win/Makefile.in 2021-10-29 19:08:08.000000000 +0200 +++ src/tcl8.6.12/win/Makefile.in 2021-11-10 13:28:36.000000000 +0100 @@ -150,13 +150,13 @@ TCL_DLL_FILE = @TCL_DLL_FILE@ TCL_LIB_FILE = @TCL_LIB_FILE@ DDE_DLL_FILE = tcldde$(DDEVER)${DLLSUFFIX} DDE_LIB_FILE = @LIBPREFIX@tcldde$(DDEVER)${DLLSUFFIX}${LIBSUFFIX} -REG_DLL_FILE = tclreg$(REGVER)${DLLSUFFIX} -REG_LIB_FILE = @LIBPREFIX@tclreg$(REGVER)${DLLSUFFIX}${LIBSUFFIX} +REG_DLL_FILE = tclregistry$(REGVER)${DLLSUFFIX} +REG_LIB_FILE = @LIBPREFIX@tclregistry$(REGVER)${DLLSUFFIX}${LIBSUFFIX} TEST_DLL_FILE = tcltest$(VER)${DLLSUFFIX} TEST_EXE_FILE = tcltest${EXESUFFIX} TEST_LIB_FILE = @LIBPREFIX@tcltest$(VER)${DLLSUFFIX}${LIBSUFFIX} TEST_LOAD_PRMS = package ifneeded dde 1.4.4 [list load [file normalize ${DDE_DLL_FILE}] Dde];\ - package ifneeded registry 1.3.5 [list load [file normalize ${REG_DLL_FILE}] Registry] + package ifneeded registry 1.3.6 [list load [file normalize ${REG_DLL_FILE}] Registry] TEST_LOAD_FACILITIES = package ifneeded Tcltest ${VERSION}@TCL_PATCH_LEVEL@ [list load [file normalize ${TEST_DLL_FILE}]];\ $(TEST_LOAD_PRMS) ZLIB_DLL_FILE = zlib1.dll @@ -579,6 +579,16 @@ tclPkgConfig.${OBJEXT}: tclPkgConfig.c -DBUILD_tcl \ @DEPARG@ $(CC_OBJNAME) +tclEvent.${OBJEXT}: tclEvent.c tclUuid.h + +$(TOP_DIR)/manifest.uuid: + printf "git-" >$(TOP_DIR)/manifest.uuid + git rev-parse HEAD >>$(TOP_DIR)/manifest.uuid + +tclUuid.h: $(TOP_DIR)/manifest.uuid + echo "#define TCL_VERSION_UUID \\" >$@ + cat $(TOP_DIR)/manifest.uuid >>$@ + # The following objects are part of the stub library and should not be built # as DLL objects but none of the symbols should be exported @@ -631,7 +641,7 @@ install-binaries: binaries else true; \ fi; \ done; - @for i in dde${DDEDOTVER} reg${REGDOTVER}; \ + @for i in dde${DDEDOTVER} registry${REGDOTVER}; \ do \ if [ ! -d "$(LIB_INSTALL_DIR)/$$i" ] ; then \ echo "Making directory $(LIB_INSTALL_DIR)/$$i"; \ @@ -665,13 +675,13 @@ install-binaries: binaries fi @if [ -f $(REG_DLL_FILE) ]; then \ echo Installing $(REG_DLL_FILE); \ - $(COPY) $(REG_DLL_FILE) "$(LIB_INSTALL_DIR)/reg${REGDOTVER}"; \ + $(COPY) $(REG_DLL_FILE) "$(LIB_INSTALL_DIR)/registry${REGDOTVER}"; \ $(COPY) $(ROOT_DIR)/library/reg/pkgIndex.tcl \ - "$(LIB_INSTALL_DIR)/reg${REGDOTVER}"; \ + "$(LIB_INSTALL_DIR)/registry${REGDOTVER}"; \ fi @if [ -f $(REG_LIB_FILE) ]; then \ echo Installing $(REG_LIB_FILE); \ - $(COPY) $(REG_LIB_FILE) "$(LIB_INSTALL_DIR)/reg${REGDOTVER}"; \ + $(COPY) $(REG_LIB_FILE) "$(LIB_INSTALL_DIR)/registry${REGDOTVER}"; \ fi install-libraries: libraries install-tzdata install-msgs --- origsrc/tcl8.6.12/win/tclWinReg.c 2021-10-29 19:08:08.000000000 +0200 +++ src/tcl8.6.12/win/tclWinReg.c 2021-11-09 16:05:02.000000000 +0100 @@ -191,7 +191,7 @@ Registry_Init( cmd = Tcl_CreateObjCommand(interp, "registry", RegistryObjCmd, interp, DeleteCmd); Tcl_SetAssocData(interp, REGISTRY_ASSOC_KEY, NULL, cmd); - return Tcl_PkgProvideEx(interp, "registry", "1.3.5", NULL); + return Tcl_PkgProvideEx(interp, "registry", "1.3.6", NULL); } /*