blob: 8c7aadbd911b4314716fa728330a82d76b5e6877 [file] [log] [blame]
drh054889e2005-11-30 03:20:31 +00001/*
2** 2005 November 29
3**
4** The author disclaims copyright to this source code. In place of
5** a legal notice, here is a blessing:
6**
7** May you do good and not evil.
8** May you find forgiveness for yourself and forgive others.
9** May you share freely, never taking more than you give.
10**
11******************************************************************************
12**
13** This file contains OS interface code that is common to all
14** architectures.
15*/
drh3f459022006-01-07 16:06:07 +000016#define _SQLITE_OS_C_ 1
drh054889e2005-11-30 03:20:31 +000017#include "sqliteInt.h"
18#include "os.h"
19
20/*
21** The following routines are convenience wrappers around methods
22** of the OsFile object. This is mostly just syntactic sugar. All
23** of this would be completely automatic if SQLite were coded using
24** C++ instead of plain old C.
25*/
26int sqlite3OsClose(OsFile **pId){
27 OsFile *id;
28 if( pId!=0 && (id = *pId)!=0 ){
29 return id->pMethod->xClose(pId);
30 }else{
31 return SQLITE_OK;
32 }
33}
34int sqlite3OsOpenDirectory(OsFile *id, const char *zName){
35 return id->pMethod->xOpenDirectory(id, zName);
36}
37int sqlite3OsRead(OsFile *id, void *pBuf, int amt){
38 return id->pMethod->xRead(id, pBuf, amt);
39}
40int sqlite3OsWrite(OsFile *id, const void *pBuf, int amt){
41 return id->pMethod->xWrite(id, pBuf, amt);
42}
43int sqlite3OsSeek(OsFile *id, i64 offset){
44 return id->pMethod->xSeek(id, offset);
45}
46int sqlite3OsTruncate(OsFile *id, i64 size){
47 return id->pMethod->xTruncate(id, size);
48}
49int sqlite3OsSync(OsFile *id, int fullsync){
50 return id->pMethod->xSync(id, fullsync);
51}
52void sqlite3OsSetFullSync(OsFile *id, int value){
53 id->pMethod->xSetFullSync(id, value);
54}
55int sqlite3OsFileHandle(OsFile *id){
56 return id->pMethod->xFileHandle(id);
57}
58int sqlite3OsFileSize(OsFile *id, i64 *pSize){
59 return id->pMethod->xFileSize(id, pSize);
60}
61int sqlite3OsLock(OsFile *id, int lockType){
62 return id->pMethod->xLock(id, lockType);
63}
64int sqlite3OsUnlock(OsFile *id, int lockType){
65 return id->pMethod->xUnlock(id, lockType);
66}
67int sqlite3OsLockState(OsFile *id){
68 return id->pMethod->xLockState(id);
69}
70int sqlite3OsCheckReservedLock(OsFile *id){
71 return id->pMethod->xCheckReservedLock(id);
72}
drh3f459022006-01-07 16:06:07 +000073
74#ifdef SQLITE_ENABLE_REDEF_IO
75/*
76** A function to return a pointer to the virtual function table.
77** This routine really does not accomplish very much since the
78** virtual function table is a global variable and anybody who
79** can call this function can just as easily access the variable
80** for themselves. Nevertheless, we include this routine for
81** backwards compatibility with an earlier redefinable I/O
82** interface design.
83*/
84struct sqlite3OsVtbl *sqlite3_os_switch(void){
85 return &sqlite3Os;
86}
87#endif