Skip to content

Commit

Permalink
Applied Android changes to v3.40.0
Browse files Browse the repository at this point in the history
  • Loading branch information
grendello committed Nov 17, 2022
1 parent fbb02a0 commit fdc1e34
Show file tree
Hide file tree
Showing 3 changed files with 225 additions and 19 deletions.
183 changes: 168 additions & 15 deletions dist/Android.patch
Original file line number Diff line number Diff line change
@@ -1,6 +1,157 @@
--- orig/shell.c 2022-09-01 12:39:01.340032408 +0100
+++ shell.c 2022-09-01 12:39:01.528030292 +0100
@@ -107,6 +107,11 @@
diff --git a/dist/Android.patch b/dist/Android.patch
index 3647d10..e69de29 100644
--- a/dist/Android.patch
+++ b/dist/Android.patch
@@ -1,144 +0,0 @@
---- orig/shell.c 2022-09-01 12:39:01.340032408 +0100
-+++ shell.c 2022-09-01 12:39:01.528030292 +0100
-@@ -107,6 +107,11 @@
- #endif
- #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)
- # include <signal.h>
-@@ -16177,6 +16182,22 @@
- sqlite3_create_function(p->db, "edit", 2, SQLITE_UTF8, 0,
- editFunc, 0, 0);
- #endif
-+
-+// Begin Android Add
-+#ifndef NO_ANDROID_FUNCS
-+ int err = register_localized_collators(p->db, "en_US", 0);
-+ if (err != SQLITE_OK) {
-+ fprintf(stderr, "register_localized_collators() failed\n");
-+ exit(1);
-+ }
-+ err = register_android_functions(p->db, 0);
-+ if (err != SQLITE_OK) {
-+ fprintf(stderr, "register_android_functions() failed\n");
-+ exit(1);
-+ }
-+#endif
-+// End Android Add
-+
- if( p->openMode==SHELL_OPEN_ZIPFILE ){
- char *zSql = sqlite3_mprintf(
- "CREATE VIRTUAL TABLE zip USING zipfile(%Q);", zDbFilename);
---- orig/sqlite3.c 2022-09-01 12:39:01.356032228 +0100
-+++ sqlite3.c 2022-09-01 12:39:15.955867966 +0100
-@@ -35608,6 +35608,10 @@
- # include <sys/mount.h>
- #endif
-
-+#if defined(__BIONIC__)
-+# include <android/fdsan.h>
-+#endif
-+
- #ifdef HAVE_UTIME
- # include <utime.h>
- #endif
-@@ -36170,6 +36174,12 @@
- #if defined(FD_CLOEXEC) && (!defined(O_CLOEXEC) || O_CLOEXEC==0)
- osFcntl(fd, F_SETFD, osFcntl(fd, F_GETFD, 0) | FD_CLOEXEC);
- #endif
-+
-+#if defined(__BIONIC__) && __ANDROID_API__ >= __ANDROID_API_Q__
-+ uint64_t tag = android_fdsan_create_owner_tag(
-+ ANDROID_FDSAN_OWNER_TYPE_SQLITE, fd);
-+ android_fdsan_exchange_owner_tag(fd, 0, tag);
-+#endif
- }
- return fd;
- }
-@@ -36750,7 +36760,13 @@
- ** and move on.
- */
- static void robust_close(unixFile *pFile, int h, int lineno){
-+#if defined(__BIONIC__) && __ANDROID_API__ >= __ANDROID_API_Q__
-+ uint64_t tag = android_fdsan_create_owner_tag(
-+ ANDROID_FDSAN_OWNER_TYPE_SQLITE, h);
-+ if( android_fdsan_close_with_tag(h, tag) ){
-+#else
- if( osClose(h) ){
-+#endif
- unixLogErrorAtLine(SQLITE_IOERR_CLOSE, "close",
- pFile ? pFile->zPath : 0, lineno);
- }
-@@ -39305,7 +39321,7 @@
- SimulateIOError( rc=1 );
- if( rc!=0 ){
- storeLastErrno((unixFile*)id, errno);
-- return SQLITE_IOERR_FSTAT;
-+ return unixLogError(SQLITE_IOERR_FSTAT, "fstat", ((unixFile*)id)->zPath);
- }
- *pSize = buf.st_size;
-
-@@ -39341,7 +39357,7 @@
- struct stat buf; /* Used to hold return values of fstat() */
-
- if( osFstat(pFile->h, &buf) ){
-- return SQLITE_IOERR_FSTAT;
-+ return unixLogError(SQLITE_IOERR_FSTAT, "fstat", pFile->zPath);
- }
-
- nSize = ((nByte+pFile->szChunk-1) / pFile->szChunk) * pFile->szChunk;
-@@ -40083,7 +40099,7 @@
- ** with the same permissions.
- */
- if( osFstat(pDbFd->h, &sStat) ){
-- rc = SQLITE_IOERR_FSTAT;
-+ rc = unixLogError(SQLITE_IOERR_FSTAT, "fstat", pDbFd->zPath);
- goto shm_open_err;
- }
-
-@@ -134802,7 +134818,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;
- }
-
-@@ -180855,7 +180871,9 @@
- ** module with sqlite.
- */
- if( SQLITE_OK==rc
-+#ifndef ANDROID /* fts3_tokenizer disabled for security reasons */
- && SQLITE_OK==(rc=sqlite3Fts3InitHashTable(db,&pHash->hash,"fts3_tokenizer"))
-+#endif
- && SQLITE_OK==(rc = sqlite3_overload_function(db, "snippet", -1))
- && SQLITE_OK==(rc = sqlite3_overload_function(db, "offsets", 1))
- && SQLITE_OK==(rc = sqlite3_overload_function(db, "matchinfo", 1))
-@@ -180866,6 +180884,20 @@
- rc = sqlite3_create_module_v2(
- db, "fts3", &fts3Module, (void *)pHash, hashDestroy
- );
-+#ifdef SQLITE_ENABLE_FTS3_BACKWARDS
-+ if( rc==SQLITE_OK ){
-+ pHash->nRef++;
-+ rc = sqlite3_create_module_v2(
-+ db, "fts1", &fts3Module, (void *)pHash, hashDestroy
-+ );
-+ }
-+ if( rc==SQLITE_OK ){
-+ pHash->nRef++;
-+ rc = sqlite3_create_module_v2(
-+ db, "fts2", &fts3Module, (void *)pHash, hashDestroy
-+ );
-+ }
-+#endif
- if( rc==SQLITE_OK ){
- pHash->nRef++;
- rc = sqlite3_create_module_v2(
diff --git a/dist/shell.c b/dist/shell.c
index 6280ebf..8bf6d38 100644
--- a/dist/shell.c
+++ b/dist/shell.c
@@ -126,6 +126,11 @@ typedef unsigned char u8;
#endif
#include <ctype.h>
#include <stdarg.h>
Expand All @@ -12,7 +163,7 @@

#if !defined(_WIN32) && !defined(WIN32)
# include <signal.h>
@@ -16177,6 +16182,22 @@
@@ -19557,6 +19562,22 @@ static void open_db(ShellState *p, int openFlags){
sqlite3_create_function(p->db, "edit", 2, SQLITE_UTF8, 0,
editFunc, 0, 0);
#endif
Expand All @@ -35,9 +186,11 @@
if( p->openMode==SHELL_OPEN_ZIPFILE ){
char *zSql = sqlite3_mprintf(
"CREATE VIRTUAL TABLE zip USING zipfile(%Q);", zDbFilename);
--- orig/sqlite3.c 2022-09-01 12:39:01.356032228 +0100
+++ sqlite3.c 2022-09-01 12:39:15.955867966 +0100
@@ -35608,6 +35608,10 @@
diff --git a/dist/sqlite3.c b/dist/sqlite3.c
index 2763b1b..4c366a0 100644
--- a/dist/sqlite3.c
+++ b/dist/sqlite3.c
@@ -36795,6 +36795,10 @@ SQLITE_PRIVATE int sqlite3KvvfsInit(void){
# include <sys/mount.h>
#endif

Expand All @@ -48,7 +201,7 @@
#ifdef HAVE_UTIME
# include <utime.h>
#endif
@@ -36170,6 +36174,12 @@
@@ -37357,6 +37361,12 @@ static int robust_open(const char *z, int f, mode_t m){
#if defined(FD_CLOEXEC) && (!defined(O_CLOEXEC) || O_CLOEXEC==0)
osFcntl(fd, F_SETFD, osFcntl(fd, F_GETFD, 0) | FD_CLOEXEC);
#endif
Expand All @@ -61,7 +214,7 @@
}
return fd;
}
@@ -36750,7 +36760,13 @@
@@ -37937,7 +37947,13 @@ static int unixLogErrorAtLine(
** and move on.
*/
static void robust_close(unixFile *pFile, int h, int lineno){
Expand All @@ -75,7 +228,7 @@
unixLogErrorAtLine(SQLITE_IOERR_CLOSE, "close",
pFile ? pFile->zPath : 0, lineno);
}
@@ -39305,7 +39321,7 @@
@@ -40492,7 +40508,7 @@ static int unixFileSize(sqlite3_file *id, i64 *pSize){
SimulateIOError( rc=1 );
if( rc!=0 ){
storeLastErrno((unixFile*)id, errno);
Expand All @@ -84,7 +237,7 @@
}
*pSize = buf.st_size;

@@ -39341,7 +39357,7 @@
@@ -40528,7 +40544,7 @@ static int fcntlSizeHint(unixFile *pFile, i64 nByte){
struct stat buf; /* Used to hold return values of fstat() */

if( osFstat(pFile->h, &buf) ){
Expand All @@ -93,7 +246,7 @@
}

nSize = ((nByte+pFile->szChunk-1) / pFile->szChunk) * pFile->szChunk;
@@ -40083,7 +40099,7 @@
@@ -41270,7 +41286,7 @@ static int unixOpenSharedMemory(unixFile *pDbFd){
** with the same permissions.
*/
if( osFstat(pDbFd->h, &sStat) ){
Expand All @@ -102,7 +255,7 @@
goto shm_open_err;
}

@@ -134802,7 +134818,7 @@
@@ -136541,7 +136557,7 @@ SQLITE_PRIVATE int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg, u32 mFl
}
if( pDb->pSchema->file_format>SQLITE_MAX_FILE_FORMAT ){
sqlite3SetString(pzErrMsg, db, "unsupported file format");
Expand All @@ -111,7 +264,7 @@
goto initone_error_out;
}

@@ -180855,7 +180871,9 @@
@@ -182688,7 +182704,9 @@ SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db){
** module with sqlite.
*/
if( SQLITE_OK==rc
Expand All @@ -121,7 +274,7 @@
&& SQLITE_OK==(rc = sqlite3_overload_function(db, "snippet", -1))
&& SQLITE_OK==(rc = sqlite3_overload_function(db, "offsets", 1))
&& SQLITE_OK==(rc = sqlite3_overload_function(db, "matchinfo", 1))
@@ -180866,6 +180884,20 @@
@@ -182699,6 +182717,20 @@ SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db){
rc = sqlite3_create_module_v2(
db, "fts3", &fts3Module, (void *)pHash, hashDestroy
);
Expand Down
21 changes: 21 additions & 0 deletions dist/shell.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,11 @@ typedef unsigned char u8;
#endif
#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)
# include <signal.h>
Expand Down Expand Up @@ -19557,6 +19562,22 @@ static void open_db(ShellState *p, int openFlags){
sqlite3_create_function(p->db, "edit", 2, SQLITE_UTF8, 0,
editFunc, 0, 0);
#endif

// Begin Android Add
#ifndef NO_ANDROID_FUNCS
int err = register_localized_collators(p->db, "en_US", 0);
if (err != SQLITE_OK) {
fprintf(stderr, "register_localized_collators() failed\n");
exit(1);
}
err = register_android_functions(p->db, 0);
if (err != SQLITE_OK) {
fprintf(stderr, "register_android_functions() failed\n");
exit(1);
}
#endif
// End Android Add

if( p->openMode==SHELL_OPEN_ZIPFILE ){
char *zSql = sqlite3_mprintf(
"CREATE VIRTUAL TABLE zip USING zipfile(%Q);", zDbFilename);
Expand Down
40 changes: 36 additions & 4 deletions dist/sqlite3.c
Original file line number Diff line number Diff line change
Expand Up @@ -36795,6 +36795,10 @@ SQLITE_PRIVATE int sqlite3KvvfsInit(void){
# include <sys/mount.h>
#endif

#if defined(__BIONIC__)
# include <android/fdsan.h>
#endif

#ifdef HAVE_UTIME
# include <utime.h>
#endif
Expand Down Expand Up @@ -37357,6 +37361,12 @@ static int robust_open(const char *z, int f, mode_t m){
#if defined(FD_CLOEXEC) && (!defined(O_CLOEXEC) || O_CLOEXEC==0)
osFcntl(fd, F_SETFD, osFcntl(fd, F_GETFD, 0) | FD_CLOEXEC);
#endif

#if defined(__BIONIC__) && __ANDROID_API__ >= __ANDROID_API_Q__
uint64_t tag = android_fdsan_create_owner_tag(
ANDROID_FDSAN_OWNER_TYPE_SQLITE, fd);
android_fdsan_exchange_owner_tag(fd, 0, tag);
#endif
}
return fd;
}
Expand Down Expand Up @@ -37937,7 +37947,13 @@ static int unixLogErrorAtLine(
** and move on.
*/
static void robust_close(unixFile *pFile, int h, int lineno){
#if defined(__BIONIC__) && __ANDROID_API__ >= __ANDROID_API_Q__
uint64_t tag = android_fdsan_create_owner_tag(
ANDROID_FDSAN_OWNER_TYPE_SQLITE, h);
if( android_fdsan_close_with_tag(h, tag) ){
#else
if( osClose(h) ){
#endif
unixLogErrorAtLine(SQLITE_IOERR_CLOSE, "close",
pFile ? pFile->zPath : 0, lineno);
}
Expand Down Expand Up @@ -40492,7 +40508,7 @@ static int unixFileSize(sqlite3_file *id, i64 *pSize){
SimulateIOError( rc=1 );
if( rc!=0 ){
storeLastErrno((unixFile*)id, errno);
return SQLITE_IOERR_FSTAT;
return unixLogError(SQLITE_IOERR_FSTAT, "fstat", ((unixFile*)id)->zPath);
}
*pSize = buf.st_size;

Expand Down Expand Up @@ -40528,7 +40544,7 @@ static int fcntlSizeHint(unixFile *pFile, i64 nByte){
struct stat buf; /* Used to hold return values of fstat() */

if( osFstat(pFile->h, &buf) ){
return SQLITE_IOERR_FSTAT;
return unixLogError(SQLITE_IOERR_FSTAT, "fstat", pFile->zPath);
}

nSize = ((nByte+pFile->szChunk-1) / pFile->szChunk) * pFile->szChunk;
Expand Down Expand Up @@ -41270,7 +41286,7 @@ static int unixOpenSharedMemory(unixFile *pDbFd){
** with the same permissions.
*/
if( osFstat(pDbFd->h, &sStat) ){
rc = SQLITE_IOERR_FSTAT;
rc = unixLogError(SQLITE_IOERR_FSTAT, "fstat", pDbFd->zPath);
goto shm_open_err;
}

Expand Down Expand Up @@ -136541,7 +136557,7 @@ SQLITE_PRIVATE int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg, u32 mFl
}
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;
}

Expand Down Expand Up @@ -182688,7 +182704,9 @@ SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db){
** module with sqlite.
*/
if( SQLITE_OK==rc
#ifndef ANDROID /* fts3_tokenizer disabled for security reasons */
&& SQLITE_OK==(rc=sqlite3Fts3InitHashTable(db,&pHash->hash,"fts3_tokenizer"))
#endif
&& SQLITE_OK==(rc = sqlite3_overload_function(db, "snippet", -1))
&& SQLITE_OK==(rc = sqlite3_overload_function(db, "offsets", 1))
&& SQLITE_OK==(rc = sqlite3_overload_function(db, "matchinfo", 1))
Expand All @@ -182699,6 +182717,20 @@ SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db){
rc = sqlite3_create_module_v2(
db, "fts3", &fts3Module, (void *)pHash, hashDestroy
);
#ifdef SQLITE_ENABLE_FTS3_BACKWARDS
if( rc==SQLITE_OK ){
pHash->nRef++;
rc = sqlite3_create_module_v2(
db, "fts1", &fts3Module, (void *)pHash, hashDestroy
);
}
if( rc==SQLITE_OK ){
pHash->nRef++;
rc = sqlite3_create_module_v2(
db, "fts2", &fts3Module, (void *)pHash, hashDestroy
);
}
#endif
if( rc==SQLITE_OK ){
pHash->nRef++;
rc = sqlite3_create_module_v2(
Expand Down

0 comments on commit fdc1e34

Please sign in to comment.