aboutsummaryrefslogtreecommitdiff
path: root/src/os.c
diff options
context:
space:
mode:
authordanielk1977 <danielk1977@noemail.net>2005-12-15 10:11:30 +0000
committerdanielk1977 <danielk1977@noemail.net>2005-12-15 10:11:30 +0000
commit13a68c3f61385c5e05e73d976127c1108fd624bb (patch)
treedf063d568da0e892d332d7c02b3090616719c2e7 /src/os.c
parentaf9a7c22b5b25d557eab2f7e1a66a65fde78005d (diff)
downloadsqlite-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.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/os.c b/src/os.c
index 97036746a..a1acd7671 100644
--- a/src/os.c
+++ b/src/os.c
@@ -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();
+}
+