SQLite
Check-in [92e9b5bc05]
Not logged in
Overview
SHA1 Hash:92e9b5bc05887c47bc964828447a76ce29aa255c
Date: 2012-11-27 21:12:39
User: drh
Comment:Improved detection of file-does-not-exist in winDelete.
Tags And Properties
Changes
hide diffs unified diffs patch

Changes to src/os_win.c

3884 #if SQLITE_OS_WINRT 3884 #if SQLITE_OS_WINRT 3885 WIN32_FILE_ATTRIBUTE_DATA sAttrData; 3885 WIN32_FILE_ATTRIBUTE_DATA sAttrData; 3886 memset(&sAttrData, 0, sizeof(sAttrData)); 3886 memset(&sAttrData, 0, sizeof(sAttrData)); 3887 if ( osGetFileAttributesExW(zConverted, GetFileExInfoStandard, 3887 if ( osGetFileAttributesExW(zConverted, GetFileExInfoStandard, 3888 &sAttrData) ){ 3888 &sAttrData) ){ 3889 attr = sAttrData.dwFileAttributes; 3889 attr = sAttrData.dwFileAttributes; 3890 }else{ 3890 }else{ > 3891 lastErrno = osGetLastError(); > 3892 if( lastErrno==ERROR_FILE_NOT_FOUND || lastErrno==ERROR_PATH_NOT_FOUND ) 3891 rc = SQLITE_IOERR_DELETE_NOENT; /* Already gone? */ | 3893 rc = SQLITE_IOERR_DELETE_NOENT; /* Already gone? */ > 3894 }else{ > 3895 rc = SQLITE_ERROR; > 3896 } 3892 break; 3897 break; 3893 } 3898 } 3894 #else 3899 #else 3895 attr = osGetFileAttributesW(zConverted); 3900 attr = osGetFileAttributesW(zConverted); 3896 #endif 3901 #endif 3897 if ( attr==INVALID_FILE_ATTRIBUTES ){ 3902 if ( attr==INVALID_FILE_ATTRIBUTES ){ > 3903 lastErrno = osGetLastError(); > 3904 if( lastErrno==ERROR_FILE_NOT_FOUND || lastErrno==ERROR_PATH_NOT_FOUND ) 3898 rc = SQLITE_IOERR_DELETE_NOENT; /* Already gone? */ | 3905 rc = SQLITE_IOERR_DELETE_NOENT; /* Already gone? */ > 3906 }else{ > 3907 rc = SQLITE_ERROR; > 3908 } 3899 break; 3909 break; 3900 } 3910 } 3901 if ( attr&FILE_ATTRIBUTE_DIRECTORY ){ 3911 if ( attr&FILE_ATTRIBUTE_DIRECTORY ){ 3902 rc = SQLITE_ERROR; /* Files only. */ 3912 rc = SQLITE_ERROR; /* Files only. */ 3903 break; 3913 break; 3904 } 3914 } 3905 if ( osDeleteFileW(zConverted) ){ 3915 if ( osDeleteFileW(zConverted) ){ ................................................................................................................................................................................ 3913 } while(1); 3923 } while(1); 3914 } 3924 } 3915 #ifdef SQLITE_WIN32_HAS_ANSI 3925 #ifdef SQLITE_WIN32_HAS_ANSI 3916 else{ 3926 else{ 3917 do { 3927 do { 3918 attr = osGetFileAttributesA(zConverted); 3928 attr = osGetFileAttributesA(zConverted); 3919 if ( attr==INVALID_FILE_ATTRIBUTES ){ 3929 if ( attr==INVALID_FILE_ATTRIBUTES ){ > 3930 lastErrno = osGetLastError(); > 3931 if( lastErrno==ERROR_FILE_NOT_FOUND || lastErrno==ERROR_PATH_NOT_FOUND ) 3920 rc = SQLITE_OK; /* Already gone? */ | 3932 rc = SQLITE_IOERR_DELETE_NOENT; /* Already gone? */ > 3933 }else{ > 3934 rc = SQLITE_ERROR; > 3935 } 3921 break; 3936 break; 3922 } 3937 } 3923 if ( attr&FILE_ATTRIBUTE_DIRECTORY ){ 3938 if ( attr&FILE_ATTRIBUTE_DIRECTORY ){ 3924 rc = SQLITE_ERROR; /* Files only. */ 3939 rc = SQLITE_ERROR; /* Files only. */ 3925 break; 3940 break; 3926 } 3941 } 3927 if ( osDeleteFileA(zConverted) ){ 3942 if ( osDeleteFileA(zConverted) ){