SQLite
Check-in [ec13544ce3]
Not logged in
Overview
SHA1 Hash:ec13544ce336e8a02b34d574ced5912b06c82c0e
Date: 2013-02-13 22:54:03
User: mistachkin
Comment:On WinCE, fill in the winFile structure after winceCreateLock has succeeded.
Tags And Properties
Changes
hide diffs unified diffs patch

Changes to src/os_win.c

2072 winFile *pFile = (winFile*)id; 2072 winFile *pFile = (winFile*)id; 2073 2073 2074 assert( id!=0 ); 2074 assert( id!=0 ); 2075 #ifndef SQLITE_OMIT_WAL 2075 #ifndef SQLITE_OMIT_WAL 2076 assert( pFile->pShm==0 ); 2076 assert( pFile->pShm==0 ); 2077 #endif 2077 #endif 2078 OSTRACE(("CLOSE %d\n", pFile->h)); 2078 OSTRACE(("CLOSE %d\n", pFile->h)); > 2079 assert( pFile->h!=NULL && pFile->h!=INVALID_HANDLE_VALUE ); 2079 do{ 2080 do{ 2080 rc = osCloseHandle(pFile->h); 2081 rc = osCloseHandle(pFile->h); 2081 /* SimulateIOError( rc=0; cnt=MX_CLOSE_ATTEMPT; ); */ 2082 /* SimulateIOError( rc=0; cnt=MX_CLOSE_ATTEMPT; ); */ 2082 }while( rc==0 && ++cnt < MX_CLOSE_ATTEMPT && (sqlite3_win32_sleep(100), 1) ); 2083 }while( rc==0 && ++cnt < MX_CLOSE_ATTEMPT && (sqlite3_win32_sleep(100), 1) ); 2083 #if SQLITE_OS_WINCE 2084 #if SQLITE_OS_WINCE 2084 #define WINCE_DELETION_ATTEMPTS 3 2085 #define WINCE_DELETION_ATTEMPTS 3 2085 winceDestroyLock(pFile); 2086 winceDestroyLock(pFile); ................................................................................................................................................................................ 3683 /* Assert that the upper layer has set one of the "file-type" flags. */ 3684 /* Assert that the upper layer has set one of the "file-type" flags. */ 3684 assert( eType==SQLITE_OPEN_MAIN_DB || eType==SQLITE_OPEN_TEMP_DB 3685 assert( eType==SQLITE_OPEN_MAIN_DB || eType==SQLITE_OPEN_TEMP_DB 3685 || eType==SQLITE_OPEN_MAIN_JOURNAL || eType==SQLITE_OPEN_TEMP_JOURNAL 3686 || eType==SQLITE_OPEN_MAIN_JOURNAL || eType==SQLITE_OPEN_TEMP_JOURNAL 3686 || eType==SQLITE_OPEN_SUBJOURNAL || eType==SQLITE_OPEN_MASTER_JOURNAL 3687 || eType==SQLITE_OPEN_SUBJOURNAL || eType==SQLITE_OPEN_MASTER_JOURNAL 3687 || eType==SQLITE_OPEN_TRANSIENT_DB || eType==SQLITE_OPEN_WAL 3688 || eType==SQLITE_OPEN_TRANSIENT_DB || eType==SQLITE_OPEN_WAL 3688 ); 3689 ); 3689 3690 3690 assert( id!=0 ); | 3691 assert( pFile!=0 ); 3691 UNUSED_PARAMETER(pVfs); | 3692 memset(pFile, 0, sizeof(winFile)); > 3693 pFile->h = INVALID_HANDLE_VALUE; 3692 3694 3693 #if SQLITE_OS_WINRT 3695 #if SQLITE_OS_WINRT 3694 if( !sqlite3_temp_directory ){ 3696 if( !sqlite3_temp_directory ){ 3695 sqlite3_log(SQLITE_ERROR, 3697 sqlite3_log(SQLITE_ERROR, 3696 "sqlite3_temp_directory variable should be set for WinRT"); 3698 "sqlite3_temp_directory variable should be set for WinRT"); 3697 } 3699 } 3698 #endif 3700 #endif 3699 3701 3700 pFile->h = INVALID_HANDLE_VALUE; < 3701 < 3702 /* If the second argument to this function is NULL, generate a 3702 /* If the second argument to this function is NULL, generate a 3703 ** temporary file name to use 3703 ** temporary file name to use 3704 */ 3704 */ 3705 if( !zUtf8Name ){ 3705 if( !zUtf8Name ){ 3706 assert(isDelete && !isOpenJournal); 3706 assert(isDelete && !isOpenJournal); 3707 memset(zTmpname, 0, MAX_PATH+2); 3707 memset(zTmpname, 0, MAX_PATH+2); 3708 rc = getTempname(MAX_PATH+2, zTmpname); 3708 rc = getTempname(MAX_PATH+2, zTmpname); ................................................................................................................................................................................ 3837 if( isReadWrite ){ 3837 if( isReadWrite ){ 3838 *pOutFlags = SQLITE_OPEN_READWRITE; 3838 *pOutFlags = SQLITE_OPEN_READWRITE; 3839 }else{ 3839 }else{ 3840 *pOutFlags = SQLITE_OPEN_READONLY; 3840 *pOutFlags = SQLITE_OPEN_READONLY; 3841 } 3841 } 3842 } 3842 } 3843 3843 3844 memset(pFile, 0, sizeof(*pFile)); < 3845 pFile->pMethod = &winIoMethod; < 3846 pFile->h = h; < 3847 pFile->lastErrno = NO_ERROR; < 3848 pFile->pVfs = pVfs; < 3849 #ifndef SQLITE_OMIT_WAL < 3850 pFile->pShm = 0; < 3851 #endif < 3852 pFile->zPath = zName; < 3853 if( sqlite3_uri_boolean(zName, "psow", SQLITE_POWERSAFE_OVERWRITE) ){ < 3854 pFile->ctrlFlags |= WINFILE_PSOW; < 3855 } < 3856 < 3857 #if SQLITE_OS_WINCE 3844 #if SQLITE_OS_WINCE 3858 if( isReadWrite && eType==SQLITE_OPEN_MAIN_DB 3845 if( isReadWrite && eType==SQLITE_OPEN_MAIN_DB 3859 && (rc = winceCreateLock(zName, pFile))!=SQLITE_OK 3846 && (rc = winceCreateLock(zName, pFile))!=SQLITE_OK 3860 ){ 3847 ){ 3861 osCloseHandle(h); 3848 osCloseHandle(h); 3862 sqlite3_free(zConverted); 3849 sqlite3_free(zConverted); 3863 return rc; 3850 return rc; ................................................................................................................................................................................ 3865 if( isTemp ){ 3852 if( isTemp ){ 3866 pFile->zDeleteOnClose = zConverted; 3853 pFile->zDeleteOnClose = zConverted; 3867 }else 3854 }else 3868 #endif 3855 #endif 3869 { 3856 { 3870 sqlite3_free(zConverted); 3857 sqlite3_free(zConverted); 3871 } 3858 } > 3859 > 3860 pFile->pMethod = &winIoMethod; > 3861 pFile->pVfs = pVfs; > 3862 pFile->h = h; > 3863 if( sqlite3_uri_boolean(zName, "psow", SQLITE_POWERSAFE_OVERWRITE) ){ > 3864 pFile->ctrlFlags |= WINFILE_PSOW; > 3865 } > 3866 pFile->lastErrno = NO_ERROR; > 3867 pFile->zPath = zName; 3872 3868 3873 OpenCounter(+1); 3869 OpenCounter(+1); 3874 return rc; 3870 return rc; 3875 } 3871 } 3876 3872 3877 /* 3873 /* 3878 ** Delete the named file. 3874 ** Delete the named file.