Index: src/sqlite3.c ================================================================== --- src/sqlite3.c +++ src/sqlite3.c @@ -31266,11 +31266,11 @@ { "GetTempPathA", (SYSCALL)0, 0 }, #endif #define osGetTempPathA ((DWORD(WINAPI*)(DWORD,LPSTR))aSyscall[31].pCurrent) -#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE) +#if !SQLITE_OS_WINRT && !defined(__CYGWIN__) && defined(SQLITE_WIN32_HAS_WIDE) { "GetTempPathW", (SYSCALL)GetTempPathW, 0 }, #else { "GetTempPathW", (SYSCALL)0, 0 }, #endif @@ -34564,10 +34564,12 @@ */ #ifndef SQLITE_WIN32_MAX_PATH # define SQLITE_WIN32_MAX_PATH (MAX_PATH*3) #endif +static int winIsDir(const void *zConverted); + /* ** Create a temporary file name in zBuf. zBuf must be big enough to ** hold at pVfs->mxPathname characters. */ static int getTempname(int nBuf, char *zBuf){ @@ -34587,11 +34589,52 @@ if( sqlite3_temp_directory ){ sqlite3_snprintf(SQLITE_WIN32_MAX_PATH-30, zTempPath, "%s", sqlite3_temp_directory); } -#if !SQLITE_OS_WINRT +#if defined(__CYGWIN__) + else{ + static const char *azDirs[] = { + 0, + 0, + 0, + 0, + "/var/tmp", + "/usr/tmp", + "/tmp", + "." + }; + const char *zDir; + WCHAR zWidePath[MAX_PATH]; + + if( !azDirs[0] ) azDirs[0] = getenv("TMPDIR"); + if( !azDirs[1] ) azDirs[1] = getenv("TMP"); + if( !azDirs[2] ) azDirs[2] = getenv("TEMP"); + if( !azDirs[3] ) azDirs[3] = getenv("USERPROFILE"); + for(i=0; i