| diff -r -u -d orig/shell.c ./shell.c |
| --- orig/shell.c 2012-04-19 19:18:38.000000000 -0700 |
| +++ ./shell.c 2012-04-19 19:26:02.000000000 -0700 |
| @@ -35,6 +35,11 @@ |
| #include "sqlite3.h" |
| #include <ctype.h> |
| #include <stdarg.h> |
| +// Begin Android Add |
| +#ifndef NO_ANDROID_FUNCS |
| +#include <sqlite3_android.h> |
| +#endif |
| +// End Android Add |
| |
| #if !defined(_WIN32) && !defined(WIN32) && !defined(__OS2__) |
| # include <signal.h> |
| @@ -1463,6 +1468,20 @@ |
| #ifndef SQLITE_OMIT_LOAD_EXTENSION |
| sqlite3_enable_load_extension(p->db, 1); |
| #endif |
| + // Begin Android Add |
| + #ifndef NO_ANDROID_FUNCS |
| + int err = register_localized_collators(db, "en_US", 0); |
| + if (err != SQLITE_OK) { |
| + fprintf(stderr, "register_localized_collators() failed\n"); |
| + exit(1); |
| + } |
| + err = register_android_functions(db, 0); |
| + if (err != SQLITE_OK) { |
| + fprintf(stderr, "register_android_functions() failed\n"); |
| + exit(1); |
| + } |
| + #endif |
| + // End Android Add |
| } |
| } |
| |
| diff -r -u -d orig/sqlite3.c ./sqlite3.c |
| --- orig/sqlite3.c 2012-04-19 19:18:38.000000000 -0700 |
| +++ ./sqlite3.c 2012-04-19 19:26:02.000000000 -0700 |
| @@ -25387,7 +25387,12 @@ |
| #else |
| { "pread64", (sqlite3_syscall_ptr)0, 0 }, |
| #endif |
| +#ifdef ANDROID |
| +// Bionic defines pread64 using off64_t rather than off_t. |
| +#define osPread64 ((ssize_t(*)(int,void*,size_t,off64_t))aSyscall[10].pCurrent) |
| +#else |
| #define osPread64 ((ssize_t(*)(int,void*,size_t,off_t))aSyscall[10].pCurrent) |
| +#endif |
| |
| { "write", (sqlite3_syscall_ptr)write, 0 }, |
| #define osWrite ((ssize_t(*)(int,const void*,size_t))aSyscall[11].pCurrent) |
| @@ -25405,8 +25410,14 @@ |
| #else |
| { "pwrite64", (sqlite3_syscall_ptr)0, 0 }, |
| #endif |
| +#ifdef ANDROID |
| +// Bionic defines pwrite64 using off64_t rather than off_t. |
| +#define osPwrite64 ((ssize_t(*)(int,const void*,size_t,off64_t))\ |
| + aSyscall[13].pCurrent) |
| +#else |
| #define osPwrite64 ((ssize_t(*)(int,const void*,size_t,off_t))\ |
| aSyscall[13].pCurrent) |
| +#endif |
| |
| #if SQLITE_ENABLE_LOCKING_STYLE |
| { "fchmod", (sqlite3_syscall_ptr)fchmod, 0 }, |
| @@ -93937,7 +93948,7 @@ |
| } |
| if( pDb->pSchema->file_format>SQLITE_MAX_FILE_FORMAT ){ |
| sqlite3SetString(pzErrMsg, db, "unsupported file format"); |
| - rc = SQLITE_ERROR; |
| + rc = SQLITE_CORRUPT_BKPT; // Android Change from "rc = SQLITE_ERROR;" |
| goto initone_error_out; |
| } |
| |
| @@ -112387,7 +112398,7 @@ |
| extern "C" { |
| #endif /* __cplusplus */ |
| |
| -SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db); |
| +SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db, const char* registerAs); // Android Change |
| |
| #if 0 |
| } /* extern "C" */ |
| @@ -114717,9 +114728,24 @@ |
| #endif |
| |
| #ifdef SQLITE_ENABLE_FTS3 |
| - if( !db->mallocFailed && rc==SQLITE_OK ){ |
| - rc = sqlite3Fts3Init(db); |
| - } |
| + // Begin Android change |
| + #ifdef SQLITE_ENABLE_FTS3_BACKWARDS |
| + /* Also register as fts1 and fts2, for backwards compatability on |
| + ** systems known to have never seen a pre-fts3 database. |
| + */ |
| + if( !db->mallocFailed && rc==SQLITE_OK ){ |
| + rc = sqlite3Fts3Init(db, "fts1"); |
| + } |
| + |
| + if( !db->mallocFailed && rc==SQLITE_OK ){ |
| + rc = sqlite3Fts3Init(db, "fts2"); |
| + } |
| + #endif |
| + |
| + if( !db->mallocFailed && rc==SQLITE_OK ){ |
| + rc = sqlite3Fts3Init(db, "fts3"); |
| + } |
| + // End Android change |
| #endif |
| |
| #ifdef SQLITE_ENABLE_ICU |
| @@ -120143,7 +120169,7 @@ |
| ** SQLite. If fts3 is built as a dynamically loadable extension, this |
| ** function is called by the sqlite3_extension_init() entry point. |
| */ |
| -SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db){ |
| +SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db, const char* registerAs){ // Android Change |
| int rc = SQLITE_OK; |
| Fts3Hash *pHash = 0; |
| const sqlite3_tokenizer_module *pSimple = 0; |
| @@ -120204,7 +120230,10 @@ |
| && SQLITE_OK==(rc = sqlite3_overload_function(db, "optimize", 1)) |
| ){ |
| rc = sqlite3_create_module_v2( |
| - db, "fts3", &fts3Module, (void *)pHash, hashDestroy |
| + // Begin Android change |
| + // Also register as fts1 and fts2 |
| + db, registerAs, &fts3Module, (void *)pHash, hashDestroy |
| + // End Android change |
| ); |
| if( rc==SQLITE_OK ){ |
| rc = sqlite3_create_module_v2( |