From: jan.nijtmans Date: Mon, 31 Mar 2025 14:12:44 +0000 (+0000) Subject: Feature-complete. Not all test-cases pass. Merge trunk. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=af21b05dc8e073ddafa0c0721197adece8c73aea;p=thirdparty%2Fsqlite.git Feature-complete. Not all test-cases pass. Merge trunk. FossilOrigin-Name: 6552bfb70ae91ee28aadaa6ec22c8ecd272e2e68f175f0dc494b6ec2b96909bf --- af21b05dc8e073ddafa0c0721197adece8c73aea diff --cc manifest index bdc99e8680,2c21bcd589..caf7f3a55e --- a/manifest +++ b/manifest @@@ -1,5 -1,5 +1,5 @@@ - C Second\sround\sof\scygwin\sfixes:\sthis\smakes\sthe\sfull\s"unix"\svfs\susable\swith\sCygwin\sas\swell.\nNot\sall\stests\sare\sworking\syet.\sWIP! - D 2025-03-28T08:59:40.930 -C Ensure\sthat\sthe\scompilation\sof\sextensions\sget\sthe\ssame\sCFLAGS\sas\sthe\score\slib.\sMove\sthe\sfeature\sflags\senabled\sby\s--dev\sout\sof\sTARGET_DEBUG\sand\sinto\sOPT_FEATURE_FLAGS\s(for\sconsistency).\sRename\sthe\smake-internal\sgcov-related\sflags\sto\sbe\smore\sdescriptive.\sAt\sthe\send\sof\sthe\sconfigure\sscript,\sif\sSQLITE_DEBUG\sis\sactive\sthen\semit\sa\snote\sreminding\sthe\sbuilder\sthat\sperformance\swill\ssuffer. -D 2025-03-31T13:08:29.964 ++C Feature-complete.\sNot\sall\stest-cases\spass.\sMerge\strunk. ++D 2025-03-31T14:12:44.221 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@@ -52,7 -52,7 +52,7 @@@ F autosetup/find_tclconfig.tcl e64886ff F autosetup/jimsh0.c a57c16e65dcffc9c76e496757cb3f7fb47e01ecbd1631a0a5e01751fc856f049 F autosetup/pkg-config.tcl 4e635bf39022ff65e0d5434339dd41503ea48fc53822c9c5bde88b02d3d952ba F autosetup/proj.tcl cac07d75249fa127500b8e96080dc807e9ae97fe98d29e84a17bc28f4628e93f - F autosetup/sqlite-config.tcl 8d7460cfd618e71c82a1c28fafc04044efc55708478dd6f446987861a5618c2b -F autosetup/sqlite-config.tcl f4ee2028c603fdffb0dfec1a1ac16f5477c8047c728eac6357382f3767ec203b ++F autosetup/sqlite-config.tcl 6893300c8822815d0424f1ea9da82b93732e486bc8d7b2ae9f15050ac1170bf3 F autosetup/system.tcl 51d4be76cd9a9074704b584e5c9cbba616202c8468cf9ba8a4f8294a7ab1dba9 F configure 9a00b21dfd13757bbfb8d89b30660a89ec1f8f3a79402b8f9f9b6fc475c3303a x F contrib/sqlitecon.tcl eb4c6578e08dd353263958da0dc620f8400b869a50d06e271ab0be85a51a08d3 @@@ -760,18 -760,18 +760,18 @@@ F src/memdb.c a3feb427cdd4036ea2db0ba56 F src/memjournal.c c283c6c95d940eb9dc70f1863eef3ee40382dbd35e5a1108026e7817c206e8a0 F src/msvc.h 80b35f95d93bf996ccb3e498535255f2ef1118c78764719a7cd15ab4106ccac9 F src/mutex.c 06bcd9c3dbf2d9b21fcd182606c00fafb9bfe0287983c8e17acd13d2c81a2fa9 -F src/mutex.h a7b2293c48db5f27007c3bdb21d438873637d12658f5a0bf8ad025bb96803c4a +F src/mutex.h e2159f6ce3201c90d63045701f0eaa669e9154e8b79d000982d2fa1467432a94 F src/mutex_noop.c 9d4309c075ba9cc7249e19412d3d62f7f94839c4 F src/mutex_unix.c f7ee5a2061a4c11815a2bf4fc0e2bfa6fb8d9dc89390eb613ca0cec32fc9a3d1 - F src/mutex_w32.c 8a0b91b407adae0936725bf31927c9d0b170596fa0adb246e5f800e97efacb44 + F src/mutex_w32.c 28f8d480387db5b2ef5248705dd4e19db0cfc12c3ba426695a7d2c45c48e6885 F src/notify.c 57c2d1a2805d6dee32acd5d250d928ab94e02d76369ae057dee7d445fd64e878 F src/os.c 509452169d5ea739723e213b8e2481cf0e587f0e88579a912d200db5269f5f6d F src/os.h 1ff5ae51d339d0e30d8a9d814f4b8f8e448169304d83a7ed9db66a65732f3e63 F src/os_common.h 6c0eb8dd40ef3e12fe585a13e709710267a258e2c8dd1c40b1948a1d14582e06 F src/os_kv.c 4d39e1f1c180b11162c6dc4aa8ad34053873a639bac6baae23272fc03349986a - F src/os_setup.h 0a44e77a6bb4e8a93e27ade391e6796a3af34fc16c314619eca82dcfade7edb9 - F src/os_unix.c 2de3a1aa898624ee23da7d47d6df257836058677f727d41f81b56e1a17272ff8 - F src/os_win.c 0b2abb73fb231ed3422128928700da78b1c822d97cf9bf8447f4d4f05ae68563 -F src/os_setup.h 6011ad7af5db4e05155f385eb3a9b4470688de6f65d6166b8956e58a3d872107 -F src/os_unix.c 410185df4900817c218c0efdb8064b3481af88cb3f7cea7392f820b6eebc7889 -F src/os_win.c caab8bc13f1d64a2ba6b8af35d660ffe25083df3493d9082d7a461a5e9950a50 ++F src/os_setup.h f67d199e08b6f49b8eea53c9c06a427aafc5456743c852d1a3cd2caa5662eb1a ++F src/os_unix.c 29f56c7da6dea0e6c2416c2688e3918662d19430797d4c99943c2107b64d0c6a ++F src/os_win.c 5d056ee2fe1adfc1f757c25ec3bcfe759338f70e65ba5f3107ba0cfe4782fb0d F src/os_win.h 4c247cdb6d407c75186c94a1e84d5a22cbae4adcec93fcae8d2bc1f956fd1f19 F src/pager.c 9fbb541b46125dfa8914827575e6bb4d15048caa008073b1709112d495d7983b F src/pager.h 6137149346e6c8a3ddc1eeb40aee46381e9bc8b0fcc6dda8a1efde993c2275b8 @@@ -835,7 -835,7 +835,7 @@@ F src/test_rtree.c d844d746a3cc02724731 F src/test_schema.c b06d3ddc3edc173c143878f3edb869dd200d57d918ae2f38820534f9a5e3d7d9 F src/test_sqllog.c 5abf04865758c0a3915b4ec2b2ee5ab75f74c00e2f05bf503b9083e0ab6829d7 F src/test_superlock.c 3387fc794a68d8c6b6ed059aabacbfe870dc502c5cf65562f36aac78b4a4d629 --F src/test_syscall.c c5bf039261973135068aa68f4d185a6147333dcf266977989f8245b3a1968f1b ++F src/test_syscall.c 39117e85eef73ad74360a7f87b33febca4ffe59dbbd16a4763cdc6868a67fd4e F src/test_tclsh.c c01706ac60bd3176754d3ccd37da74c6ad97c2e14489f8ed71b497c1c0ac0dd4 F src/test_tclvar.c ae873248a0188459b1c16ca7cc431265dacce524399e8b46725c2b3b7e048424 F src/test_thread.c 3edb4a5b5aeb1a6e9a275dccc848ac95acab7f496b3e9230f6d2d04953a2b862 @@@ -1735,7 -1735,7 +1735,7 @@@ F test/temptable3.test d11a0974e52b347e F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc F test/tester.tcl 463ae33b8bf75ac77451df19bd65e7c415c2e9891227c7c9e657d0a2d8e1074a F test/testrunner.tcl 228732ca62ea60e97785e13528bd36627cf3c115d59364a5181ed7f85fd0031d x - F test/testrunner_data.tcl b49fb8949506a8d9a39fd00c36d87c940b077f6cc38b77947328313c2f75d639 -F test/testrunner_data.tcl 07f2d36a6321bfd196975aca237db6bba1991032809264a1abeb62e697196d20 ++F test/testrunner_data.tcl 8f3f62ff2a694d46e5673df6a757a427ce737a6705d67b30ec2d140715f9f122 F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502 F test/thread003.test ee4c9efc3b86a6a2767516a37bd64251272560a7 @@@ -2070,7 -2070,7 +2070,7 @@@ F test/wherelimit2.test b9e4bfe7b4d7c2f F test/wherelimit3.test 22d73e046870cf8bbe15573eda6b432b07ebe64a88711f9f849c6b3667c1fae6 F test/widetab1.test c296a98e123762de79917350e45fa33fdf88577a2571eb3a64c8bf7e44ef74d1 F test/win32heap.test 1ec2ce646aee491ec23bfcdfd005b33c79f13bf91467966f374a76ffe7c7e85f --F test/win32lock.test 4fc496691504d90621157aa43b1155a1461347261ad182c3e3d5923f4e0b879c ++F test/win32lock.test e56d7a9b6cf9d5f3867c2dd19ff36c5326881e4038c6867610ecb3a9868ea4eb F test/win32longpath.test df477a2891bd6a1a4e78e43290ea219a777da85eb2590092e36da65f2fb5f1cf F test/win32nolock.test 95854dc0206b8a95e4aee15a76acc082767b38f079b2e24676aed6cbb0f32798 F test/window1.test 79dc3b9a2226f622d7e104a1fc750d1c4c3c08d6147b59085bdbe05352947ffa @@@ -2216,8 -2216,8 +2216,8 @@@ F tool/version-info.c 3b36468a90faf1bbd F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f - P 6a449918c20e9ec001877de34a8f593a5039c0b0a04ee13adab76934a2afcc39 - R b23b5e6a9bdc8fefd483aa847126706f -P 3e96b772a46638bc25e036de053d620ded3350871ee10e06fd6fe51429934b0d -R 5a85f2774d52509b8f6ae6acd48a3210 -U stephan -Z 7e629c8c02794da90c85323f978e7eb9 ++P 648aca5b47a2a9d070791f6924baac36a3e45706539678b310d4c8ab37129a34 e64c6a3856b839e4e8c0a1cb1713b0d2f1d3cb9b915dd215b0d3cb229502d539 ++R 8f9a6f5ed3065a804e30e8de0eec7da2 +U jan.nijtmans - Z da12dca84a4fa4c6d7a98e30f40b8fd6 ++Z 0c3d4c0b618cf07d02c083ca6188b4de # Remove this line to create a well-formed Fossil manifest. diff --cc manifest.uuid index 9e17b79276,80bb6da65a..f4019543dd --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - 648aca5b47a2a9d070791f6924baac36a3e45706539678b310d4c8ab37129a34 -e64c6a3856b839e4e8c0a1cb1713b0d2f1d3cb9b915dd215b0d3cb229502d539 ++6552bfb70ae91ee28aadaa6ec22c8ecd272e2e68f175f0dc494b6ec2b96909bf diff --cc src/os_setup.h index 6b49f70302,a82f86fd9f..73af480212 --- a/src/os_setup.h +++ b/src/os_setup.h @@@ -30,6 -30,6 +30,7 @@@ ** will defined to either 1 or 0. One of them will be 1. The others will be 0. ** If none of the macros are initially defined, then select either ** SQLITE_OS_UNIX or SQLITE_OS_WIN depending on the target platform. ++** One exception: On Cygwin, both SQLITE_OS_UNIX and SQLITE_OS_WIN can be 1. ** ** If SQLITE_OS_OTHER=1 is specified at compile-time, then the application ** must provide its own VFS implementation together with sqlite3_os_init() @@@ -37,14 -37,10 +38,13 @@@ */ #if !defined(SQLITE_OS_KV) && !defined(SQLITE_OS_OTHER) && \ !defined(SQLITE_OS_UNIX) && !defined(SQLITE_OS_WIN) --# if defined(_WIN32) || defined(WIN32) || defined(__CYGWIN__) || \ ++# if defined(__CYGWIN__) ++# define SQLITE_OS_WIN 1 ++# define SQLITE_OS_UNIX 1 ++# elif defined(_WIN32) || defined(WIN32) || \ defined(__MINGW32__) || defined(__BORLANDC__) # define SQLITE_OS_WIN 1 - # if defined(__CYGWIN__) - # define SQLITE_OS_UNIX 1 - # else - # define SQLITE_OS_UNIX 0 - # endif + # define SQLITE_OS_UNIX 0 # else # define SQLITE_OS_WIN 0 # define SQLITE_OS_UNIX 1 @@@ -79,16 -75,16 +79,20 @@@ # define SQLITE_OS_KV 0 # undef SQLITE_OS_OTHER # define SQLITE_OS_OTHER 0 ++# if !defined(__CYGWIN__) # undef SQLITE_OS_WIN # define SQLITE_OS_WIN 0 ++# endif #endif #if SQLITE_OS_WIN+1>1 # undef SQLITE_OS_KV # define SQLITE_OS_KV 0 # undef SQLITE_OS_OTHER # define SQLITE_OS_OTHER 0 ++# if !defined(__CYGWIN__) # undef SQLITE_OS_UNIX # define SQLITE_OS_UNIX 0 ++# endif #endif diff --cc src/os_unix.c index e4e5ed82cd,1146545fea..ff956cf3ec --- a/src/os_unix.c +++ b/src/os_unix.c @@@ -8286,8 -8270,6 +8286,7 @@@ int sqlite3_os_init(void) return SQLITE_OK; } +#undef aSyscall - #if !SQLITE_OS_WIN /* ** Shutdown the operating system interface. ** @@@ -8295,7 -8277,7 +8294,14 @@@ ** to release dynamically allocated objects. But not on unix. ** This routine is a no-op for unix. */ ++#if SQLITE_OS_WIN ++#if defined(SQLITE_AMALGAMATION) ++static ++#endif ++int sqlite3_os_unix_end(void){ ++#else int sqlite3_os_end(void){ ++#endif unixBigLock = 0; return SQLITE_OK; } diff --cc src/os_win.c index cb57cacce9,0dd56af583..5d7a9183fa --- a/src/os_win.c +++ b/src/os_win.c @@@ -489,9 -489,9 +489,9 @@@ const sqlite3_mem_methods *sqlite3MemGe ** can manually set this value to 1 to emulate Win98 behavior. */ #ifdef SQLITE_TEST --LONG SQLITE_WIN32_VOLATILE sqlite3_os_type = 0; ++int SQLITE_WIN32_VOLATILE sqlite3_os_type = 0; #else --static LONG SQLITE_WIN32_VOLATILE sqlite3_os_type = 0; ++static int SQLITE_WIN32_VOLATILE sqlite3_os_type = 0; #endif #ifndef SYSCALL @@@ -1229,7 -1229,7 +1229,7 @@@ static struct win_syscall { "getcwd", (SYSCALL)0, 0 }, #endif --#define osGetcwd ((char*(*)(char*,size_t))aSyscall[84].pCurrent) ++#define cygGetcwd ((char*(*)(char*,size_t))aSyscall[84].pCurrent) #ifndef _WIN32 { "readlink", (SYSCALL)readlink, 0 }, @@@ -1237,7 -1237,7 +1237,7 @@@ { "readlink", (SYSCALL)0, 0 }, #endif --#define osReadlink ((ssize_t(*)(const char*,char*,size_t))aSyscall[85].pCurrent) ++#define cygReadlink ((ssize_t(*)(const char*,char*,size_t))aSyscall[85].pCurrent) #ifndef _WIN32 { "lstat", (SYSCALL)lstat, 0 }, @@@ -1245,7 -1245,7 +1245,7 @@@ { "lstat", (SYSCALL)0, 0 }, #endif --#define osLstat ((int(*)(const char*,struct stat*))aSyscall[86].pCurrent) ++#define cygLstat ((int(*)(const char*,struct stat*))aSyscall[86].pCurrent) #ifndef _WIN32 { "__errno", (SYSCALL)__errno, 0 }, @@@ -6078,7 -6075,7 +6078,7 @@@ static int mkFullPathname int nPath = sqlite3Strlen30(zPath); int iOff = 0; if( zPath[0]!='/' ){ -- if( osGetcwd(zOut, nOut-2)==0 ){ ++ if( cygGetcwd(zOut, nOut-2)==0 ){ return winLogError(SQLITE_CANTOPEN_BKPT, (DWORD)osErrno, "getcwd", zPath); } iOff = sqlite3Strlen30(zOut); @@@ -6123,7 -6120,7 +6123,7 @@@ static int winFullPathnameNoMutex SimulateIOError( return SQLITE_ERROR ); #ifdef __CYGWIN__ -- if( osGetcwd ){ ++ if( cygGetcwd ){ zFull[nFull-1] = '\0'; if( !winIsDriveLetterAndColon(zRelative) || !winIsDirSep(zRelative[2]) ){ int rc = SQLITE_OK; @@@ -6138,8 -6135,8 +6138,8 @@@ /* Call lstat() on path zIn. Set bLink to true if the path is a symbolic ** link, or false otherwise. */ int bLink = 0; -- if( osLstat && osReadlink ) { -- if( osLstat(zIn, &buf)!=0 ){ ++ if( cygLstat && cygReadlink ) { ++ if( cygLstat(zIn, &buf)!=0 ){ int myErrno = osErrno; if( myErrno!=ENOENT ){ rc = winLogError(SQLITE_CANTOPEN_BKPT, (DWORD)myErrno, "lstat", zIn); @@@ -6157,7 -6154,7 +6157,7 @@@ } if( rc==SQLITE_OK ){ -- nByte = osReadlink(zIn, zDel, nFull-1); ++ nByte = cygReadlink(zIn, zDel, nFull-1); if( nByte ==(DWORD)-1 ){ rc = winLogError(SQLITE_CANTOPEN_BKPT, (DWORD)osErrno, "readlink", zIn); }else{ @@@ -6326,7 -6323,7 +6326,7 @@@ }else{ char *p = zOut+6; *p = '\\'; -- if( osGetcwd ){ ++ if( cygGetcwd ){ /* On Cygwin, UNC paths use forward slashes */ while( *p ){ if( *p=='\\' ) *p = '/'; @@@ -6629,10 -6626,6 +6629,11 @@@ static int winGetLastError(sqlite3_vfs return e; } +#if SQLITE_OS_UNIX && !defined(SQLITE_AMALGAMATION) +int sqlite3_os_unix_init(void); ++int sqlite3_os_unix_end(void); +#endif + /* ** Initialize and deinitialize the operating system interface. */ @@@ -6752,6 -6745,6 +6753,10 @@@ int sqlite3_os_init(void) assert( winSysInfo.dwAllocationGranularity>0 ); assert( winSysInfo.dwPageSize>0 ); ++#if SQLITE_OS_UNIX ++ sqlite3_os_unix_init(); ++#endif ++ sqlite3_vfs_register(&winVfs, 1); #if defined(SQLITE_WIN32_HAS_WIDE) @@@ -6783,6 -6776,6 +6788,10 @@@ int sqlite3_os_end(void) winBigLock = 0; #endif ++#if SQLITE_OS_UNIX ++ sqlite3_os_unix_end(); ++#endif ++ return SQLITE_OK; } diff --cc src/test_syscall.c index 35c303f8ee,35c303f8ee..c0a7a88f8f --- a/src/test_syscall.c +++ b/src/test_syscall.c @@@ -81,7 -81,7 +81,7 @@@ #include #include --#if SQLITE_OS_UNIX ++#if SQLITE_OS_UNIX && !defined(__CYGWIN__) /* From main.c */ extern const char *sqlite3ErrName(int); @@@ -426,7 -426,7 +426,7 @@@ static int SQLITE_TCLAPI test_syscall_i ){ sqlite3_vfs *pVfs; Tcl_Size nElem; -- int i; ++ Tcl_Size i; Tcl_Obj **apElem; if( objc!=3 ){ @@@ -438,7 -438,7 +438,7 @@@ } pVfs = sqlite3_vfs_find(0); -- for(i=0; i<(int)nElem; i++){ ++ for(i=0; i