--HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401209
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			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
 |