📄 os.c
字号:
/*** 2005 November 29**** The author disclaims copyright to this source code. In place of** a legal notice, here is a blessing:**** May you do good and not evil.** May you find forgiveness for yourself and forgive others.** May you share freely, never taking more than you give.************************************************************************************ This file contains OS interface code that is common to all** architectures.*/#define _SQLITE_OS_C_ 1#include "sqliteInt.h"#include "os.h"#undef _SQLITE_OS_C_/*** The following routines are convenience wrappers around methods** of the OsFile object. This is mostly just syntactic sugar. All** of this would be completely automatic if SQLite were coded using** C++ instead of plain old C.*/int sqlite3OsClose(OsFile **pId){ OsFile *id; if( pId!=0 && (id = *pId)!=0 ){ return id->pMethod->xClose(pId); }else{ return SQLITE_OK; }}int sqlite3OsOpenDirectory(OsFile *id, const char *zName){ return id->pMethod->xOpenDirectory(id, zName);}int sqlite3OsRead(OsFile *id, void *pBuf, int amt){ return id->pMethod->xRead(id, pBuf, amt);}int sqlite3OsWrite(OsFile *id, const void *pBuf, int amt){ return id->pMethod->xWrite(id, pBuf, amt);}int sqlite3OsSeek(OsFile *id, i64 offset){ return id->pMethod->xSeek(id, offset);}int sqlite3OsTruncate(OsFile *id, i64 size){ return id->pMethod->xTruncate(id, size);}int sqlite3OsSync(OsFile *id, int fullsync){ return id->pMethod->xSync(id, fullsync);}void sqlite3OsSetFullSync(OsFile *id, int value){ id->pMethod->xSetFullSync(id, value);}int sqlite3OsFileSize(OsFile *id, i64 *pSize){ return id->pMethod->xFileSize(id, pSize);}int sqlite3OsLock(OsFile *id, int lockType){ return id->pMethod->xLock(id, lockType);}int sqlite3OsUnlock(OsFile *id, int lockType){ return id->pMethod->xUnlock(id, lockType);}int sqlite3OsCheckReservedLock(OsFile *id){ return id->pMethod->xCheckReservedLock(id);}int sqlite3OsSectorSize(OsFile *id){ int (*xSectorSize)(OsFile*) = id->pMethod->xSectorSize; return xSectorSize ? xSectorSize(id) : SQLITE_DEFAULT_SECTOR_SIZE;}#if defined(SQLITE_TEST) || defined(SQLITE_DEBUG) /* These methods are currently only used for testing and debugging. */ int sqlite3OsFileHandle(OsFile *id){ return id->pMethod->xFileHandle(id); } int sqlite3OsLockState(OsFile *id){ return id->pMethod->xLockState(id); }#endif#ifdef SQLITE_ENABLE_REDEF_IO/*** A function to return a pointer to the virtual function table.** This routine really does not accomplish very much since the** virtual function table is a global variable and anybody who** can call this function can just as easily access the variable** for themselves. Nevertheless, we include this routine for** backwards compatibility with an earlier redefinable I/O** interface design.*/struct sqlite3OsVtbl *sqlite3_os_switch(void){ return &sqlite3Os;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -