]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Feature-complete. Not all test-cases pass. Merge trunk.
authorjan.nijtmans <jan.nijtmans@noemail.net>
Mon, 31 Mar 2025 14:12:44 +0000 (14:12 +0000)
committerjan.nijtmans <jan.nijtmans@noemail.net>
Mon, 31 Mar 2025 14:12:44 +0000 (14:12 +0000)
FossilOrigin-Name: 6552bfb70ae91ee28aadaa6ec22c8ecd272e2e68f175f0dc494b6ec2b96909bf

1  2 
autosetup/sqlite-config.tcl
manifest
manifest.uuid
src/os_setup.h
src/os_unix.c
src/os_win.c
src/test_syscall.c
test/testrunner_data.tcl
test/win32lock.test

Simple merge
diff --cc manifest
index bdc99e8680e3ccf3a147c91cb7f55ef1124f835c,2c21bcd5898c206ab7a52dab5ac3ac4b60794e3d..caf7f3a55e152f4b18ab150cfc0e1cd3983c5fe3
+++ 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 9e17b79276e2c5b7192c36ba5b9379be68ee552a,80bb6da65aae933163a56cd7efc268476e75e5d6..f4019543dd947ea8bfda1a139cf0e65ae8f27366
@@@ -1,1 -1,1 +1,1 @@@
- 648aca5b47a2a9d070791f6924baac36a3e45706539678b310d4c8ab37129a34
 -e64c6a3856b839e4e8c0a1cb1713b0d2f1d3cb9b915dd215b0d3cb229502d539
++6552bfb70ae91ee28aadaa6ec22c8ecd272e2e68f175f0dc494b6ec2b96909bf
diff --cc src/os_setup.h
index 6b49f70302a8cd2b80687db331ce2917c6ab63f0,a82f86fd9f87176572a9e6723dcc3ec08bfb310e..73af4802120eb5f236088803c657d16b75c07a29
@@@ -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()
  */
  #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
  #  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 e4e5ed82cd77b672a2ae3c8888b976dcd99883d6,1146545feace013cc3c8ee4a2cbdc562e9d80986..ff956cf3ecafe15e19859fbe2023b45d0f577fa1
@@@ -8286,8 -8270,6 +8286,7 @@@ int sqlite3_os_init(void)
    return SQLITE_OK;
  }
  
- #if !SQLITE_OS_WIN
 +#undef aSyscall
  /*
  ** Shutdown the operating system interface.
  **
  ** 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 cb57cacce94bee1e16fbbaa37443e98d2d1e1b37,0dd56af58364d3d7756d36d02a8c2317d5fe10ee..5d7a9183fa3ba2297d293f7c30b11199f7548ef4
@@@ -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 },
    { "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 },
    { "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;
          /* 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);
              }
  
              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{
      }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;
  }
  
index 35c303f8ee5bb60bc9c9cf164bf2628ac8595036,35c303f8ee5bb60bc9c9cf164bf2628ac8595036..c0a7a88f8fdaa77a3e1e377a7f00983c78222c04
@@@ -81,7 -81,7 +81,7 @@@
  #include <string.h>
  #include <assert.h>
  
--#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 ){
    }
    pVfs = sqlite3_vfs_find(0);
  
--  for(i=0; i<(int)nElem; i++){
++  for(i=0; i<nElem; i++){
      int iCall;
      int rc = Tcl_GetIndexFromObjStruct(interp, 
          apElem[i], aSyscall, sizeof(aSyscall[0]), "system-call", 0, &iCall
index 74985534dfad48226ec229fe0c5735f34ac3333a,ade126a64d3f2c785ddff9980a1be6effd9b6213..2e27d8a1c90e283887cee1ec5ce9b4ae045cc711
@@@ -526,11 -526,10 +526,11 @@@ proc make_script {cfg srcdir bMsvc} 
    set makeOpts   [list]                         ;# Extra args for [make]
    set configOpts [list]                         ;# Extra args for [configure]
  
--  # Define either SQLITE_OS_WIN or SQLITE_OS_UNIX, as appropriate.
++  # Define either SQLITE_OS_WIN or SQLITE_OS_UNIX or both, as appropriate.
    if {$::tcl_platform(os) eq "Windows NT"} {
      lappend opts -DSQLITE_OS_WIN=1
 -  } else {
 +  }
 +  if {$::tcl_platform(platform) eq "unix"} {
      lappend opts -DSQLITE_OS_UNIX=1
    }
  
index 96cdfa7fd84fa1b80009e4ed05fd43ae523e1dff,96cdfa7fd84fa1b80009e4ed05fd43ae523e1dff..40ff5d51276e3677056983a61b7a44bd8d230c97
@@@ -15,7 -15,7 +15,7 @@@
  # TESTRUNNER: slow
  #
  
--if {$tcl_platform(os) ne "Windows NT"} return
++if {$tcl_platform(platform) ne "windows"} return
  
  set testdir [file dirname $argv0]
  source $testdir/tester.tcl