diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2021-02-23 13:30:45 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2021-02-23 13:30:45 (GMT) |
| commit | 7e63083ea10c94a9a905807f6f457820303f787f (patch) | |
| tree | 0db35f66b0aaef9cca59a04278f416a90673bebc | |
| parent | 92eff9a92206e2292cbd5dbc8e2320ce874ea7fb (diff) | |
| parent | 5c8ce61f7963bdd41e0d7c9d18a7b4e5f918eb35 (diff) | |
| download | tcl-7e63083ea10c94a9a905807f6f457820303f787f.zip tcl-7e63083ea10c94a9a905807f6f457820303f787f.tar.gz tcl-7e63083ea10c94a9a905807f6f457820303f787f.tar.bz2 | |
Merge 8.7
| -rw-r--r-- | generic/tclZipfs.c | 21 | ||||
| -rw-r--r-- | unix/Makefile.in | 1 | ||||
| -rw-r--r-- | unix/tclUnixFile.c | 4 | ||||
| -rw-r--r-- | unix/tclUnixPort.h | 2 | ||||
| -rw-r--r-- | win/tclWinFile.c | 2 | ||||
| -rw-r--r-- | win/tclWinInit.c | 8 |
6 files changed, 17 insertions, 21 deletions
diff --git a/generic/tclZipfs.c b/generic/tclZipfs.c index 4505827..9c94851 100644 --- a/generic/tclZipfs.c +++ b/generic/tclZipfs.c @@ -3090,16 +3090,13 @@ ZipFSListObjCmd( *------------------------------------------------------------------------- */ -#ifdef _WIN32 -#define LIBRARY_SIZE 64 -#endif /* _WIN32 */ - Tcl_Obj * TclZipfs_TclLibrary(void) { Tcl_Obj *vfsInitScript; int found; -#if defined(_WIN32) && !defined(STATIC_BUILD) +#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(STATIC_BUILD) +# define LIBRARY_SIZE 64 HMODULE hModule; WCHAR wName[MAX_PATH + LIBRARY_SIZE]; char dllName[(MAX_PATH + LIBRARY_SIZE) * 3]; @@ -3134,22 +3131,20 @@ TclZipfs_TclLibrary(void) */ #if !defined(STATIC_BUILD) -#if defined(_WIN32) +#if defined(_WIN32) || defined(__CYGWIN__) hModule = (HMODULE)TclWinGetTclInstance(); GetModuleFileNameW(hModule, wName, MAX_PATH); +#ifdef __CYGWIN__ + cygwin_conv_path(3, wName, dllName, sizeof(dllName)); +#else WideCharToMultiByte(CP_UTF8, 0, wName, -1, dllName, sizeof(dllName), NULL, NULL); +#endif if (ZipfsAppHookFindTclInit(dllName) == TCL_OK) { return Tcl_NewStringObj(zipfs_literal_tcl_library, -1); } #else - if (ZipfsAppHookFindTclInit( -#ifdef __CYGWIN__ - CFG_RUNTIME_BINDIR -#else - CFG_RUNTIME_LIBDIR -#endif - "/" CFG_RUNTIME_DLLFILE) == TCL_OK) { + if (ZipfsAppHookFindTclInit(CFG_RUNTIME_LIBDIR "/" CFG_RUNTIME_DLLFILE) == TCL_OK) { return Tcl_NewStringObj(zipfs_literal_tcl_library, -1); } #endif /* _WIN32 */ diff --git a/unix/Makefile.in b/unix/Makefile.in index c950719..54fcf64 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -1523,7 +1523,6 @@ tclZipfs.o: $(GENERIC_DIR)/tclZipfs.c $(CC) -c $(CC_SWITCHES) \ -DCFG_RUNTIME_DLLFILE="\"$(TCL_LIB_FILE)\"" \ -DCFG_RUNTIME_LIBDIR="\"$(libdir)\"" \ - -DCFG_RUNTIME_BINDIR="\"$(bindir)\"" \ -I$(ZLIB_DIR) -I$(ZLIB_DIR)/contrib/minizip \ $(GENERIC_DIR)/tclZipfs.c diff --git a/unix/tclUnixFile.c b/unix/tclUnixFile.c index 3c8a318..05876a8 100644 --- a/unix/tclUnixFile.c +++ b/unix/tclUnixFile.c @@ -44,8 +44,8 @@ TclpFindExecutable( wchar_t buf[PATH_MAX]; char name[PATH_MAX * 3 + 1]; - GetModuleFileNameW(NULL, buf, PATH_MAX); - cygwin_conv_path(3, buf, name, PATH_MAX); + GetModuleFileNameW(NULL, buf, sizeof(buf)/sizeof(wchar_t)); + cygwin_conv_path(3, buf, name, sizeof(name)); length = strlen(name); if ((length > 4) && !strcasecmp(name + length - 4, ".exe")) { /* Strip '.exe' part. */ diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index cefe603..4027f1f 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -92,6 +92,8 @@ extern "C" { /* Make some symbols available without including <windows.h> */ # define CP_UTF8 65001 # define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS 0x00000004 +# define HMODULE void * +# define MAX_PATH 260 # define SOCKET unsigned int # define WSAEWOULDBLOCK 10035 typedef unsigned short WCHAR; diff --git a/win/tclWinFile.c b/win/tclWinFile.c index f954516..676ae38 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -866,7 +866,7 @@ TclpFindExecutable( char name[MAX_PATH * 3]; (void)argv0; - GetModuleFileNameW(NULL, wName, MAX_PATH); + GetModuleFileNameW(NULL, wName, sizeof(wName)/sizeof(WCHAR)); WideCharToMultiByte(CP_UTF8, 0, wName, -1, name, sizeof(name), NULL, NULL); TclWinNoBackslash(name); TclSetObjNameOfExecutable(Tcl_NewStringObj(name, -1), NULL); diff --git a/win/tclWinInit.c b/win/tclWinInit.c index 7205498..5817377 100644 --- a/win/tclWinInit.c +++ b/win/tclWinInit.c @@ -334,8 +334,8 @@ InitializeDefaultLibraryDir( char name[(MAX_PATH + LIBRARY_SIZE) * 3]; char *end, *p; - GetModuleFileNameW(hModule, wName, MAX_PATH); - WideCharToMultiByte(CP_UTF8, 0, wName, -1, name, MAX_PATH * 3, NULL, NULL); + GetModuleFileNameW(hModule, wName, sizeof(wName)/sizeof(WCHAR)); + WideCharToMultiByte(CP_UTF8, 0, wName, -1, name, sizeof(name), NULL, NULL); end = strrchr(name, '\\'); *end = '\0'; @@ -382,8 +382,8 @@ InitializeSourceLibraryDir( char name[(MAX_PATH + LIBRARY_SIZE) * 3]; char *end, *p; - GetModuleFileNameW(hModule, wName, MAX_PATH); - WideCharToMultiByte(CP_UTF8, 0, wName, -1, name, MAX_PATH * 3, NULL, NULL); + GetModuleFileNameW(hModule, wName, sizeof(wName)/sizeof(WCHAR)); + WideCharToMultiByte(CP_UTF8, 0, wName, -1, name, sizeof(name), NULL, NULL); end = strrchr(name, '\\'); *end = '\0'; |
