Home | History | Annotate | Download | only in dist
      1 diff -r -u -d orig/shell.c ./shell.c
      2 --- orig/shell.c	2014-08-20 16:26:07.117256041 -0700
      3 +++ ./shell.c	2014-08-20 16:45:00.468546769 -0700
      4 @@ -35,6 +35,11 @@
      5  #include "sqlite3.h"
      6  #include <ctype.h>
      7  #include <stdarg.h>
      8 +// Begin Android Add
      9 +#ifndef NO_ANDROID_FUNCS
     10 +#include <sqlite3_android.h>
     11 +#endif
     12 +// End Android Add
     13  
     14  #if !defined(_WIN32) && !defined(WIN32)
     15  # include <signal.h>
     16 @@ -1737,6 +1742,21 @@
     17                              readfileFunc, 0, 0);
     18      sqlite3_create_function(db, "writefile", 2, SQLITE_UTF8, 0,
     19                              writefileFunc, 0, 0);
     20 +
     21 +    // Begin Android Add
     22 +    #ifndef NO_ANDROID_FUNCS
     23 +        int err = register_localized_collators(db, "en_US", 0);
     24 +        if (err != SQLITE_OK) {
     25 +          fprintf(stderr, "register_localized_collators() failed\n");
     26 +          exit(1);
     27 +        }
     28 +        err = register_android_functions(db, 0);
     29 +        if (err != SQLITE_OK) {
     30 +          fprintf(stderr, "register_android_functions() failed\n");
     31 +          exit(1);
     32 +        }
     33 +    #endif
     34 +    // End Android Add
     35    }
     36  }
     37  
     38 diff -r -u -d orig/sqlite3.c ./sqlite3.c
     39 --- orig/sqlite3.c	2014-08-20 16:26:07.145255923 -0700
     40 +++ ./sqlite3.c	2014-08-20 16:26:36.205134826 -0700
     41 @@ -24109,6 +24109,13 @@
     42  */
     43  #if SQLITE_OS_UNIX              /* This file is used on unix only */
     44  
     45 +/* Use posix_fallocate() if it is available
     46 +*/
     47 +#if !defined(HAVE_POSIX_FALLOCATE) \
     48 +      && (_XOPEN_SOURCE >= 600 || _POSIX_C_SOURCE >= 200112L)
     49 +# define HAVE_POSIX_FALLOCATE 1
     50 +#endif
     51 +
     52  /*
     53  ** There are various methods for file locking used for concurrency
     54  ** control:
     55 @@ -24660,7 +24667,12 @@
     56  #else
     57    { "pread64",      (sqlite3_syscall_ptr)0,          0  },
     58  #endif
     59 +#ifdef ANDROID
     60 +// Bionic defines pread64 using off64_t rather than off_t.
     61 +#define osPread64   ((ssize_t(*)(int,void*,size_t,off64_t))aSyscall[10].pCurrent)
     62 +#else
     63  #define osPread64   ((ssize_t(*)(int,void*,size_t,off_t))aSyscall[10].pCurrent)
     64 +#endif
     65  
     66    { "write",        (sqlite3_syscall_ptr)write,      0  },
     67  #define osWrite     ((ssize_t(*)(int,const void*,size_t))aSyscall[11].pCurrent)
     68 @@ -24678,8 +24690,14 @@
     69  #else
     70    { "pwrite64",     (sqlite3_syscall_ptr)0,          0  },
     71  #endif
     72 +#ifdef ANDROID
     73 +// Bionic defines pwrite64 using off64_t rather than off_t.
     74 +#define osPwrite64  ((ssize_t(*)(int,const void*,size_t,off64_t))\
     75 +                    aSyscall[13].pCurrent)
     76 +#else
     77  #define osPwrite64  ((ssize_t(*)(int,const void*,size_t,off_t))\
     78                      aSyscall[13].pCurrent)
     79 +#endif
     80  
     81    { "fchmod",       (sqlite3_syscall_ptr)fchmod,     0  },
     82  #define osFchmod    ((int(*)(int,mode_t))aSyscall[14].pCurrent)
     83 @@ -27909,7 +27927,7 @@
     84    SimulateIOError( rc=1 );
     85    if( rc!=0 ){
     86      ((unixFile*)id)->lastErrno = errno;
     87 -    return SQLITE_IOERR_FSTAT;
     88 +    return unixLogError(SQLITE_IOERR_FSTAT, "fstat", ((unixFile*)id)->zPath);
     89    }
     90    *pSize = buf.st_size;
     91  
     92 @@ -27944,7 +27962,9 @@
     93      i64 nSize;                    /* Required file size */
     94      struct stat buf;              /* Used to hold return values of fstat() */
     95     
     96 -    if( osFstat(pFile->h, &buf) ) return SQLITE_IOERR_FSTAT;
     97 +    if( osFstat(pFile->h, &buf) ) {
     98 +      return unixLogError(SQLITE_IOERR_FSTAT, "fstat", pFile->zPath);
     99 +    }
    100  
    101      nSize = ((nByte+pFile->szChunk-1) / pFile->szChunk) * pFile->szChunk;
    102      if( nSize>(i64)buf.st_size ){
    103 @@ -28510,7 +28530,7 @@
    104      ** with the same permissions.
    105      */
    106      if( osFstat(pDbFd->h, &sStat) && pInode->bProcessLock==0 ){
    107 -      rc = SQLITE_IOERR_FSTAT;
    108 +      rc = unixLogError(SQLITE_IOERR_FSTAT, "fstat", pDbFd->zPath);
    109        goto shm_open_err;
    110      }
    111  
    112 @@ -29848,7 +29868,7 @@
    113        *pUid = sStat.st_uid;
    114        *pGid = sStat.st_gid;
    115      }else{
    116 -      rc = SQLITE_IOERR_FSTAT;
    117 +      rc = unixLogError(SQLITE_IOERR_FSTAT, "stat", zDb);
    118      }
    119    }else if( flags & SQLITE_OPEN_DELETEONCLOSE ){
    120      *pMode = 0600;
    121 @@ -100867,7 +100887,7 @@
    122    }
    123    if( pDb->pSchema->file_format>SQLITE_MAX_FILE_FORMAT ){
    124      sqlite3SetString(pzErrMsg, db, "unsupported file format");
    125 -    rc = SQLITE_ERROR;
    126 +    rc = SQLITE_CORRUPT_BKPT; // Android Change from "rc = SQLITE_ERROR;"
    127      goto initone_error_out;
    128    }
    129  
    130 @@ -124770,9 +124790,9 @@
    131  #endif
    132  
    133  #ifdef SQLITE_ENABLE_FTS3
    134 -  if( !db->mallocFailed && rc==SQLITE_OK ){
    135 -    rc = sqlite3Fts3Init(db);
    136 -  }
    137 +    if( !db->mallocFailed && rc==SQLITE_OK ){
    138 +      rc = sqlite3Fts3Init(db);
    139 +    }
    140  #endif
    141  
    142  #ifdef SQLITE_ENABLE_ICU
    143 @@ -130660,16 +130680,28 @@
    144    ** module with sqlite.
    145    */
    146    if( SQLITE_OK==rc 
    147 +#ifndef ANDROID    /* fts3_tokenizer disabled for security reasons */
    148     && SQLITE_OK==(rc = sqlite3Fts3InitHashTable(db, pHash, "fts3_tokenizer"))
    149 +#endif
    150     && SQLITE_OK==(rc = sqlite3_overload_function(db, "snippet", -1))
    151     && SQLITE_OK==(rc = sqlite3_overload_function(db, "offsets", 1))
    152     && SQLITE_OK==(rc = sqlite3_overload_function(db, "matchinfo", 1))
    153     && SQLITE_OK==(rc = sqlite3_overload_function(db, "matchinfo", 2))
    154     && SQLITE_OK==(rc = sqlite3_overload_function(db, "optimize", 1))
    155    ){
    156 +#ifdef SQLITE_ENABLE_FTS3_BACKWARDS
    157 +    rc = sqlite3_create_module_v2(
    158 +        db, "fts1", &fts3Module, (void *)pHash, 0
    159 +        );
    160 +    if(rc) return rc;
    161 +    rc = sqlite3_create_module_v2(
    162 +        db, "fts2", &fts3Module, (void *)pHash, 0
    163 +        );
    164 +    if(rc) return rc;
    165 +#endif
    166      rc = sqlite3_create_module_v2(
    167          db, "fts3", &fts3Module, (void *)pHash, hashDestroy
    168 -    );
    169 +        );
    170      if( rc==SQLITE_OK ){
    171        rc = sqlite3_create_module_v2(
    172            db, "fts4", &fts3Module, (void *)pHash, 0
    173