| OLD | NEW |
| 1 /* | 1 /* |
| 2 ** 2010 April 7 | 2 ** 2010 April 7 |
| 3 ** | 3 ** |
| 4 ** The author disclaims copyright to this source code. In place of | 4 ** The author disclaims copyright to this source code. In place of |
| 5 ** a legal notice, here is a blessing: | 5 ** a legal notice, here is a blessing: |
| 6 ** | 6 ** |
| 7 ** May you do good and not evil. | 7 ** May you do good and not evil. |
| 8 ** May you find forgiveness for yourself and forgive others. | 8 ** May you find forgiveness for yourself and forgive others. |
| 9 ** May you share freely, never taking more than you give. | 9 ** May you share freely, never taking more than you give. |
| 10 ** | 10 ** |
| 11 ************************************************************************* | 11 ************************************************************************* |
| 12 ** | 12 ** |
| 13 ** An example of a simple VFS implementation that omits complex features | 13 ** This file implements an example of a simple VFS implementation that |
| 14 ** often not required or not possible on embedded platforms. Also includes | 14 ** omits complex features often not required or not possible on embedded |
| 15 ** code to buffer writes to the journal file, which can be a significant | 15 ** platforms. Code is included to buffer writes to the journal file, |
| 16 ** performance improvement on some embedded platforms. | 16 ** which can be a significant performance improvement on some embedded |
| 17 ** platforms. |
| 17 ** | 18 ** |
| 18 */ | |
| 19 | |
| 20 /* | |
| 21 ** OVERVIEW | 19 ** OVERVIEW |
| 22 ** | 20 ** |
| 23 ** The code in this file implements a minimal SQLite VFS that can be | 21 ** The code in this file implements a minimal SQLite VFS that can be |
| 24 ** used on Linux and other posix-like operating systems. The following | 22 ** used on Linux and other posix-like operating systems. The following |
| 25 ** system calls are used: | 23 ** system calls are used: |
| 26 ** | 24 ** |
| 27 ** File-system: access(), unlink(), getcwd() | 25 ** File-system: access(), unlink(), getcwd() |
| 28 ** File IO: open(), read(), write(), fsync(), close(), fstat() | 26 ** File IO: open(), read(), write(), fsync(), close(), fstat() |
| 29 ** Other: sleep(), usleep(), time() | 27 ** Other: sleep(), usleep(), time() |
| 30 ** | 28 ** |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 | 119 |
| 122 #include <assert.h> | 120 #include <assert.h> |
| 123 #include <string.h> | 121 #include <string.h> |
| 124 #include <sys/types.h> | 122 #include <sys/types.h> |
| 125 #include <sys/stat.h> | 123 #include <sys/stat.h> |
| 126 #include <sys/file.h> | 124 #include <sys/file.h> |
| 127 #include <sys/param.h> | 125 #include <sys/param.h> |
| 128 #include <unistd.h> | 126 #include <unistd.h> |
| 129 #include <time.h> | 127 #include <time.h> |
| 130 #include <errno.h> | 128 #include <errno.h> |
| 129 #include <fcntl.h> |
| 131 | 130 |
| 132 /* | 131 /* |
| 133 ** Size of the write buffer used by journal files in bytes. | 132 ** Size of the write buffer used by journal files in bytes. |
| 134 */ | 133 */ |
| 135 #ifndef SQLITE_DEMOVFS_BUFFERSZ | 134 #ifndef SQLITE_DEMOVFS_BUFFERSZ |
| 136 # define SQLITE_DEMOVFS_BUFFERSZ 8192 | 135 # define SQLITE_DEMOVFS_BUFFERSZ 8192 |
| 137 #endif | 136 #endif |
| 138 | 137 |
| 139 /* | 138 /* |
| 140 ** The maximum pathname length supported by this VFS. | 139 ** The maximum pathname length supported by this VFS. |
| (...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 530 static int demoFullPathname( | 529 static int demoFullPathname( |
| 531 sqlite3_vfs *pVfs, /* VFS */ | 530 sqlite3_vfs *pVfs, /* VFS */ |
| 532 const char *zPath, /* Input path (possibly a relative path) */ | 531 const char *zPath, /* Input path (possibly a relative path) */ |
| 533 int nPathOut, /* Size of output buffer in bytes */ | 532 int nPathOut, /* Size of output buffer in bytes */ |
| 534 char *zPathOut /* Pointer to output buffer */ | 533 char *zPathOut /* Pointer to output buffer */ |
| 535 ){ | 534 ){ |
| 536 char zDir[MAXPATHNAME+1]; | 535 char zDir[MAXPATHNAME+1]; |
| 537 if( zPath[0]=='/' ){ | 536 if( zPath[0]=='/' ){ |
| 538 zDir[0] = '\0'; | 537 zDir[0] = '\0'; |
| 539 }else{ | 538 }else{ |
| 540 getcwd(zDir, sizeof(zDir)); | 539 if( getcwd(zDir, sizeof(zDir))==0 ) return SQLITE_IOERR; |
| 541 } | 540 } |
| 542 zDir[MAXPATHNAME] = '\0'; | 541 zDir[MAXPATHNAME] = '\0'; |
| 543 | 542 |
| 544 sqlite3_snprintf(nPathOut, zPathOut, "%s/%s", zDir, zPath); | 543 sqlite3_snprintf(nPathOut, zPathOut, "%s/%s", zDir, zPath); |
| 545 zPathOut[nPathOut-1] = '\0'; | 544 zPathOut[nPathOut-1] = '\0'; |
| 546 | 545 |
| 547 return SQLITE_OK; | 546 return SQLITE_OK; |
| 548 } | 547 } |
| 549 | 548 |
| 550 /* | 549 /* |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 671 Tcl_CreateObjCommand(interp, "register_demovfs", register_demovfs, 0, 0); | 670 Tcl_CreateObjCommand(interp, "register_demovfs", register_demovfs, 0, 0); |
| 672 Tcl_CreateObjCommand(interp, "unregister_demovfs", unregister_demovfs, 0, 0); | 671 Tcl_CreateObjCommand(interp, "unregister_demovfs", unregister_demovfs, 0, 0); |
| 673 return TCL_OK; | 672 return TCL_OK; |
| 674 } | 673 } |
| 675 | 674 |
| 676 #else | 675 #else |
| 677 int Sqlitetest_demovfs_Init(Tcl_Interp *interp){ return TCL_OK; } | 676 int Sqlitetest_demovfs_Init(Tcl_Interp *interp){ return TCL_OK; } |
| 678 #endif | 677 #endif |
| 679 | 678 |
| 680 #endif /* SQLITE_TEST */ | 679 #endif /* SQLITE_TEST */ |
| OLD | NEW |