]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge Windows directory checking changes from trunk.
authormistachkin <mistachkin@noemail.net>
Mon, 7 May 2012 20:28:19 +0000 (20:28 +0000)
committermistachkin <mistachkin@noemail.net>
Mon, 7 May 2012 20:28:19 +0000 (20:28 +0000)
FossilOrigin-Name: 7a7466f400e94d8c9e745efb2973300474a74d2a

1  2 
manifest
manifest.uuid
src/os_win.c
src/sqlite.h.in

diff --cc manifest
index a2099b7f92e12a6b3f6fd4d38c5d8ee6c6b27495,6872f43e399f6b9c8b9e63f40ffe8f4d4e650f7b..09a5f3495a42da6bf327fe118d04317901f29b71
+++ b/manifest
@@@ -1,5 -1,5 +1,5 @@@
- C Sync\sthe\slatest\strunk\schanges\sinto\sthe\swinRT\sbranch.
- D 2012-05-04T23:11:21.989
 -C Merge\sWindows\sdirectory\schecking\schanges\sto\strunk.
 -D 2012-05-07T18:10:12.605
++C Merge\sWindows\sdirectory\schecking\schanges\sfrom\strunk.
++D 2012-05-07T20:28:19.785
  F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
  F Makefile.in 2f37e468503dbe79d35c9f6dffcf3fae1ae9ec20
  F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@@ -160,7 -160,7 +160,7 @@@ F src/os.h 38aabd5e3ecd4162332076f55bb0
  F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04
  F src/os_os2.c 4a75888ba3dfc820ad5e8177025972d74d7f2440
  F src/os_unix.c 424d46e0edab969293c2223f09923b2178171f47
- F src/os_win.c c3487c9c506c1253bb4c65abc3caf988b9addb6c
 -F src/os_win.c 412d6434133c7c81dc48b7702f3ea5e61c309e5c
++F src/os_win.c ce348d158b43883c5b1495f68be3f654b7d0c503
  F src/pager.c bb5635dde0b152797836d1c72275284724bb563c
  F src/pager.h ef1eaf8593e78f73885c1dfac27ad83bee23bdc5
  F src/parse.y eb054bb40a5bf90d3422a01ed0e5df229461727a
@@@ -175,7 -175,7 +175,7 @@@ F src/resolve.c 748e75299faff345f34f0e5
  F src/rowset.c f6a49f3e9579428024662f6e2931832511f831a1
  F src/select.c d7b9018b7dd2e821183d69477ab55c39b8272335
  F src/shell.c 04399b2f9942bd02ed5ffee3b84bcdb39c52a1e6
- F src/sqlite.h.in 21eb2ff783710a8cf2b435890dc1ffc750058169
 -F src/sqlite.h.in b8c6d77179cee6e4b8d6eb9f3c2917626d58acd3
++F src/sqlite.h.in 457e6fb1eef84fbd97864c086499b1de64a05aa5
  F src/sqlite3ext.h 6904f4aadf976f95241311fbffb00823075d9477
  F src/sqliteInt.h c5e917c4f1453f3972b1fd0c81105dfe4f09cc32
  F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d
@@@ -995,7 -995,7 +995,7 @@@ F tool/tostr.awk e75472c2f98dd76e06b8c9
  F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
  F tool/warnings-clang.sh a8a0a3babda96dfb1ff51adda3cbbf3dfb7266c2
  F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
- P 25478dcff59690a5f59c3b96600374184057eae9 bfa61e781cb442be641486e7e55a1518e888d830
- R ce5ef0f680ccee96865eacdf6d030fb3
- U drh
- Z e6cad85cf7d7f8dd84e66fcbcd8c3674
 -P bfa61e781cb442be641486e7e55a1518e888d830 b08530e1a02cba03afefd65dc101e074e8847c07
 -R fce36c453dc0cfdd0c18e985348b50c5
++P be4ab188cffbe97ae4f1f0520591bb7f0df185de a4555a53eab3f5d2f142c78a6b71189544e80ae6
++R d4541eb715733c4ea776ae24939baa95
+ U mistachkin
 -Z 6287c2c1d24bbcf6d142a68d76da7aa1
++Z 7ca602c491f736ecdcb3f782ba71db3e
diff --cc manifest.uuid
index f0736b428d0cefa9eac88fa9f43952b647e1f036,ded09514db78ee334f1fae8704103a67594ae7ac..d7340ec5241a58eeb391e0e18fb6ef59d0a46a19
@@@ -1,1 -1,1 +1,1 @@@
- be4ab188cffbe97ae4f1f0520591bb7f0df185de
 -a4555a53eab3f5d2f142c78a6b71189544e80ae6
++7a7466f400e94d8c9e745efb2973300474a74d2a
diff --cc src/os_win.c
index dfa62a7f4cd0fc1cac3cdaed63e6f3e4f4919ff1,fcfe0118ed4e95424c4e8c19ecfb965390c08e4b..78dd4ab0ca2acd817737caee527e0e5d1674ff7e
@@@ -3553,42 -3214,29 +3587,48 @@@ static int winOpen
  #endif
  
    if( isNT() ){
-                               retryIoerr(&cnt, &lastErrno) ){}
 +#if SQLITE_OS_WINRT
 +    CREATEFILE2_EXTENDED_PARAMETERS extendedParameters;
 +    extendedParameters.dwSize = sizeof(CREATEFILE2_EXTENDED_PARAMETERS);
 +    extendedParameters.dwFileAttributes =
 +            dwFlagsAndAttributes & FILE_ATTRIBUTE_MASK;
 +    extendedParameters.dwFileFlags = dwFlagsAndAttributes & FILE_FLAG_MASK;
 +    extendedParameters.dwSecurityQosFlags = SECURITY_ANONYMOUS;
 +    extendedParameters.lpSecurityAttributes = NULL;
 +    extendedParameters.hTemplateFile = NULL;
 +    while( (h = osCreateFile2((LPCWSTR)zConverted,
 +                              dwDesiredAccess,
 +                              dwShareMode,
 +                              dwCreationDisposition,
 +                              &extendedParameters))==INVALID_HANDLE_VALUE &&
++                              retryIoerr(&cnt, &lastErrno) ){
++               /* Noop */
++    }
 +#else
      while( (h = osCreateFileW((LPCWSTR)zConverted,
                                dwDesiredAccess,
                                dwShareMode, NULL,
                                dwCreationDisposition,
                                dwFlagsAndAttributes,
                                NULL))==INVALID_HANDLE_VALUE &&
-                               retryIoerr(&cnt, &lastErrno) ){}
+                               retryIoerr(&cnt, &lastErrno) ){
+                /* Noop */
+     }
 -#if SQLITE_OS_WINCE==0
 -  }else{
 +#endif
 +  }
 +#ifdef SQLITE_WIN32_HAS_ANSI
 +  else{
      while( (h = osCreateFileA((LPCSTR)zConverted,
                                dwDesiredAccess,
                                dwShareMode, NULL,
                                dwCreationDisposition,
                                dwFlagsAndAttributes,
                                NULL))==INVALID_HANDLE_VALUE &&
-                               retryIoerr(&cnt, &lastErrno) ){}
+                               retryIoerr(&cnt, &lastErrno) ){
+                /* Noop */
+     }
 -#endif
    }
 -
 +#endif
    logIoerr(cnt);
  
    OSTRACE(("OPEN %d %s 0x%lx %s\n", 
@@@ -3675,26 -3324,53 +3716,62 @@@ static int winDelete
    if( zConverted==0 ){
      return SQLITE_IOERR_NOMEM;
    }
-   rc = 1;
    if( isNT() ){
-     WIN32_FILE_ATTRIBUTE_DATA sAttrData;
-     memset(&sAttrData, 0, sizeof(sAttrData));
-     while( osGetFileAttributesExW(zConverted, GetFileExInfoStandard,
-                                   &sAttrData) &&
+     do {
 +#if SQLITE_OS_WINRT
-     while( osGetFileAttributesW(zConverted)!=INVALID_FILE_ATTRIBUTES &&
++      WIN32_FILE_ATTRIBUTE_DATA sAttrData;
++      memset(&sAttrData, 0, sizeof(sAttrData));
++      if ( osGetFileAttributesExW(zConverted, GetFileExInfoStandard,
++                                  &sAttrData) ){
++        attr = sAttrData.dwFileAttributes;
++      }else{
++        rc = SQLITE_OK; /* Already gone? */
++        break;
++      }
 +#else
-          (rc = osDeleteFileW(zConverted))==0 && retryIoerr(&cnt, &lastErrno) ){}
-     rc = rc ? SQLITE_OK : SQLITE_ERROR;
+       attr = osGetFileAttributesW(zConverted);
 +#endif
 -/* isNT() is 1 if SQLITE_OS_WINCE==1, so this else is never executed. 
 -** Since the ANSI version of these Windows API do not exist for WINCE,
 -** it's important to not reference them for WINCE builds.
 -*/
 -#if SQLITE_OS_WINCE==0
 -  }else{
+       if ( attr==INVALID_FILE_ATTRIBUTES ){
+         rc = SQLITE_OK; /* Already gone? */
+         break;
+       }
+       if ( attr&FILE_ATTRIBUTE_DIRECTORY ){
+         rc = SQLITE_ERROR; /* Files only. */
+         break;
+       }
+       if ( osDeleteFileW(zConverted) ){
+         rc = SQLITE_OK; /* Deleted OK. */
+         break;
+       }
+       if ( !retryIoerr(&cnt, &lastErrno) ){
+         rc = SQLITE_ERROR; /* No more retries. */
+         break;
+       }
+     } while(1);
-     while( osGetFileAttributesA(zConverted)!=INVALID_FILE_ATTRIBUTES &&
-          (rc = osDeleteFileA(zConverted))==0 && retryIoerr(&cnt, &lastErrno) ){}
-     rc = rc ? SQLITE_OK : SQLITE_ERROR;
 +  }
 +#ifdef SQLITE_WIN32_HAS_ANSI
 +  else{
 -#endif
+     do {
+       attr = osGetFileAttributesA(zConverted);
+       if ( attr==INVALID_FILE_ATTRIBUTES ){
+         rc = SQLITE_OK; /* Already gone? */
+         break;
+       }
+       if ( attr&FILE_ATTRIBUTE_DIRECTORY ){
+         rc = SQLITE_ERROR; /* Files only. */
+         break;
+       }
+       if ( osDeleteFileA(zConverted) ){
+         rc = SQLITE_OK; /* Deleted OK. */
+         break;
+       }
+       if ( !retryIoerr(&cnt, &lastErrno) ){
+         rc = SQLITE_ERROR; /* No more retries. */
+         break;
+       }
+     } while(1);
    }
 +#endif
    if( rc ){
      rc = winLogError(SQLITE_IOERR_DELETE, lastErrno,
               "winDelete", zFilename);
diff --cc src/sqlite.h.in
Simple merge