diff options
author | danielk1977 <danielk1977@noemail.net> | 2005-12-15 10:11:30 +0000 |
---|---|---|
committer | danielk1977 <danielk1977@noemail.net> | 2005-12-15 10:11:30 +0000 |
commit | 13a68c3f61385c5e05e73d976127c1108fd624bb (patch) | |
tree | df063d568da0e892d332d7c02b3090616719c2e7 /src/os.c | |
parent | af9a7c22b5b25d557eab2f7e1a66a65fde78005d (diff) | |
download | sqlite-13a68c3f61385c5e05e73d976127c1108fd624bb.tar.gz sqlite-13a68c3f61385c5e05e73d976127c1108fd624bb.zip |
Add the sqlite3_os_routine_set()/get() functions. (CVS 2818)
FossilOrigin-Name: c1ed79f594fb85009c2e9e5e281cbe66a9d2fa17
Diffstat (limited to 'src/os.c')
-rw-r--r-- | src/os.c | 39 |
1 files changed, 39 insertions, 0 deletions
@@ -69,3 +69,42 @@ int sqlite3OsLockState(OsFile *id){ int sqlite3OsCheckReservedLock(OsFile *id){ return id->pMethod->xCheckReservedLock(id); } + +static void**getOsRoutinePtr(int eRoutine){ + switch( eRoutine ){ + case SQLITE_OS_ROUTINE_OPENREADWRITE: + return (void **)(&sqlite3Os.xOpenReadWrite); + case SQLITE_OS_ROUTINE_OPENREADONLY: + return (void **)(&sqlite3Os.xOpenReadOnly); + case SQLITE_OS_ROUTINE_OPENEXCLUSIVE: + return (void **)(&sqlite3Os.xOpenExclusive); + case SQLITE_OS_ROUTINE_DELETE: + return (void **)(&sqlite3Os.xDelete); + case SQLITE_OS_ROUTINE_FILEEXISTS: + return (void **)(&sqlite3Os.xFileExists); + case SQLITE_OS_ROUTINE_SYNCDIRECTORY: + return (void **)(&sqlite3Os.xSyncDirectory); + default: + assert(!"Illegal eRoutine value"); + } + return 0; +} + +void *sqlite3_os_routine_get(int eRoutine){ + return *getOsRoutinePtr(eRoutine); +} + +void *sqlite3_os_routine_set(int eRoutine, void *pRoutine){ + void **ppRet = getOsRoutinePtr(eRoutine); + void *pRet = *ppRet; + *ppRet = pRoutine; + return pRet; +} + +void sqlite3_os_enter_mutex(){ + sqlite3Os.xEnterMutex(); +} +void sqlite3_os_leave_mutex(){ + sqlite3Os.xLeaveMutex(); +} + |