]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Move tcl test code from sqlite3ota.c to new file ext/ota/test_ota.c.
authordan <dan@noemail.net>
Mon, 16 Feb 2015 06:27:37 +0000 (06:27 +0000)
committerdan <dan@noemail.net>
Mon, 16 Feb 2015 06:27:37 +0000 (06:27 +0000)
FossilOrigin-Name: f20779a6e890ba73bfaa904cefcf3a029b01fed4

ext/ota/sqlite3ota.c
ext/ota/test_ota.c [new file with mode: 0644]
main.mk
manifest
manifest.uuid

index 652c21a5f56bd59299117e04b77bf16815787814..01607f1f15a290558733fac04b47a54535fdc4bb 100644 (file)
@@ -516,13 +516,12 @@ static void otaAllocateIterArrays(sqlite3ota *p, OtaObjIter *pIter, int nCol){
   }
 }
 
-static char *otaStrndup(const char *zStr, int nStr, int *pRc){
+static char *otaStrndup(const char *zStr, int *pRc){
   char *zRet = 0;
-  assert( *pRc==SQLITE_OK );
 
+  assert( *pRc==SQLITE_OK );
   if( zStr ){
-    int nCopy = nStr;
-    if( nCopy<0 ) nCopy = strlen(zStr) + 1;
+    int nCopy = strlen(zStr) + 1;
     zRet = (char*)sqlite3_malloc(nCopy);
     if( zRet ){
       memcpy(zRet, zStr, nCopy);
@@ -697,7 +696,7 @@ static int otaObjIterCacheTableInfo(sqlite3ota *p, OtaObjIter *pIter){
     for(i=0; p->rc==SQLITE_OK && i<nCol; i++){
       const char *zName = (const char*)sqlite3_column_name(pStmt, i);
       if( sqlite3_strnicmp("ota_", zName, 4) ){
-        char *zCopy = otaStrndup(zName, -1, &p->rc);
+        char *zCopy = otaStrndup(zName, &p->rc);
         pIter->aiSrcOrder[pIter->nTblCol] = pIter->nTblCol;
         pIter->azTblCol[pIter->nTblCol++] = zCopy;
       }
@@ -746,7 +745,7 @@ static int otaObjIterCacheTableInfo(sqlite3ota *p, OtaObjIter *pIter){
           SWAP(char*, pIter->azTblCol[i], pIter->azTblCol[iOrder]);
         }
 
-        pIter->azTblType[iOrder] = otaStrndup(zType, -1, &p->rc);
+        pIter->azTblType[iOrder] = otaStrndup(zType, &p->rc);
         pIter->abTblPk[iOrder] = (iPk!=0);
         pIter->abNotNull[iOrder] = (u8)bNotNull || (iPk!=0);
         iOrder++;
@@ -1443,15 +1442,7 @@ static int otaObjIterPrepareAll(
       }
 
       /* Allocate space required for the zMask field. */
-      if( p->rc==SQLITE_OK ){
-        int nMask = pIter->nTblCol+1;
-        pIter->zMask = (char*)sqlite3_malloc(nMask);
-        if( pIter->zMask==0 ){
-          p->rc = SQLITE_NOMEM;
-        }else{
-          memset(pIter->zMask, 0, nMask);
-        }
-      }
+      pIter->zMask = (char*)otaMalloc(p, pIter->nTblCol+1);
 
       sqlite3_free(zWhere);
       sqlite3_free(zOldlist);
@@ -2042,15 +2033,10 @@ static OtaState *otaLoadState(sqlite3ota *p){
   int rc;
   int rc2;
 
-  assert( p->rc==SQLITE_OK );
-  pRet = (OtaState*)sqlite3_malloc(sizeof(OtaState));
-  if( pRet==0 ){
-    rc = SQLITE_NOMEM;
-  }else{
-    memset(pRet, 0, sizeof(OtaState));
-    rc = prepareAndCollectError(p->db, &pStmt, &p->zErrmsg, zSelect);
-  }
+  pRet = (OtaState*)otaMalloc(p, sizeof(OtaState));
+  if( pRet==0 ) return 0;
 
+  rc = prepareAndCollectError(p->db, &pStmt, &p->zErrmsg, zSelect);
   while( rc==SQLITE_OK && SQLITE_ROW==sqlite3_step(pStmt) ){
     switch( sqlite3_column_int(pStmt, 0) ){
       case OTA_STATE_STAGE:
@@ -2063,11 +2049,11 @@ static OtaState *otaLoadState(sqlite3ota *p){
         break;
 
       case OTA_STATE_TBL:
-        pRet->zTbl = otaStrndup((char*)sqlite3_column_text(pStmt, 1), -1, &rc);
+        pRet->zTbl = otaStrndup((char*)sqlite3_column_text(pStmt, 1), &rc);
         break;
 
       case OTA_STATE_IDX:
-        pRet->zIdx = otaStrndup((char*)sqlite3_column_text(pStmt, 1), -1, &rc);
+        pRet->zIdx = otaStrndup((char*)sqlite3_column_text(pStmt, 1), &rc);
         break;
 
       case OTA_STATE_ROW:
@@ -2754,7 +2740,7 @@ static int otaVfsOpen(
       ota_file *pDb = otaFindMaindb(pOtaVfs, zName);
       if( pDb ){
         if( pDb->pOta && pDb->pOta->eStage==OTA_STAGE_OAL ){
-          char *zCopy = otaStrndup(zName, -1, &rc);
+          char *zCopy = otaStrndup(zName, &rc);
           if( zCopy ){
             int nCopy = strlen(zCopy);
             zCopy[nCopy-3] = 'o';
@@ -3025,205 +3011,4 @@ static void otaDeleteVfs(sqlite3ota *p){
 
 /**************************************************************************/
 
-#ifdef SQLITE_TEST 
-
-#include <tcl.h>
-
-/* From main.c (apparently...) */
-extern const char *sqlite3ErrName(int);
-
-void test_ota_delta(sqlite3_context *pCtx, int nArg, sqlite3_value **apVal){
-  Tcl_Interp *interp = (Tcl_Interp*)sqlite3_user_data(pCtx);
-  Tcl_Obj *pScript;
-  int i;
-
-  pScript = Tcl_NewObj();
-  Tcl_IncrRefCount(pScript);
-  Tcl_ListObjAppendElement(0, pScript, Tcl_NewStringObj("ota_delta", -1));
-  for(i=0; i<nArg; i++){
-    sqlite3_value *pIn = apVal[i];
-    const char *z = (const char*)sqlite3_value_text(pIn);
-    Tcl_ListObjAppendElement(0, pScript, Tcl_NewStringObj(z, -1));
-  }
-
-  if( TCL_OK==Tcl_EvalObjEx(interp, pScript, TCL_GLOBAL_ONLY) ){
-    const char *z = Tcl_GetStringResult(interp);
-    sqlite3_result_text(pCtx, z, -1, SQLITE_TRANSIENT);
-  }else{
-    Tcl_BackgroundError(interp);
-  }
-
-  Tcl_DecrRefCount(pScript);
-}
-
-
-static int test_sqlite3ota_cmd(
-  ClientData clientData,
-  Tcl_Interp *interp,
-  int objc,
-  Tcl_Obj *CONST objv[]
-){
-  int ret = TCL_OK;
-  sqlite3ota *pOta = (sqlite3ota*)clientData;
-  const char *azMethod[] = { "step", "close", "create_ota_delta", 0 };
-  int iMethod;
-
-  if( objc!=2 ){
-    Tcl_WrongNumArgs(interp, 1, objv, "METHOD");
-    return TCL_ERROR;
-  }
-  if( Tcl_GetIndexFromObj(interp, objv[1], azMethod, "method", 0, &iMethod) ){
-    return TCL_ERROR;
-  }
-
-  switch( iMethod ){
-    case 0: /* step */ {
-      int rc = sqlite3ota_step(pOta);
-      Tcl_SetObjResult(interp, Tcl_NewStringObj(sqlite3ErrName(rc), -1));
-      break;
-    }
-
-    case 1: /* close */ {
-      char *zErrmsg = 0;
-      int rc;
-      Tcl_DeleteCommand(interp, Tcl_GetString(objv[0]));
-      rc = sqlite3ota_close(pOta, &zErrmsg);
-      if( rc==SQLITE_OK || rc==SQLITE_DONE ){
-        Tcl_SetObjResult(interp, Tcl_NewStringObj(sqlite3ErrName(rc), -1));
-        assert( zErrmsg==0 );
-      }else{
-        Tcl_SetObjResult(interp, Tcl_NewStringObj(sqlite3ErrName(rc), -1));
-        if( zErrmsg ){
-          Tcl_AppendResult(interp, " - ", zErrmsg, 0);
-          sqlite3_free(zErrmsg);
-        }
-        ret = TCL_ERROR;
-      }
-      break;
-    }
-
-    case 2: /* create_ota_delta */ {
-      sqlite3 *db = sqlite3ota_db(pOta);
-      int rc = sqlite3_create_function(
-          db, "ota_delta", -1, SQLITE_UTF8, (void*)interp, test_ota_delta, 0, 0
-      );
-      Tcl_SetObjResult(interp, Tcl_NewStringObj(sqlite3ErrName(rc), -1));
-      ret = (rc==SQLITE_OK ? TCL_OK : TCL_ERROR);
-      break;
-    }
-
-    default: /* seems unlikely */
-      assert( !"cannot happen" );
-      break;
-  }
-
-  return ret;
-}
-
-/*
-** Tclcmd: sqlite3ota CMD <target-db> <ota-db>
-*/
-static int test_sqlite3ota(
-  ClientData clientData,
-  Tcl_Interp *interp,
-  int objc,
-  Tcl_Obj *CONST objv[]
-){
-  sqlite3ota *pOta = 0;
-  const char *zCmd;
-  const char *zTarget;
-  const char *zOta;
-
-  if( objc!=4 ){
-    Tcl_WrongNumArgs(interp, 1, objv, "NAME TARGET-DB OTA-DB");
-    return TCL_ERROR;
-  }
-  zCmd = Tcl_GetString(objv[1]);
-  zTarget = Tcl_GetString(objv[2]);
-  zOta = Tcl_GetString(objv[3]);
-
-  pOta = sqlite3ota_open(zTarget, zOta);
-  Tcl_CreateObjCommand(interp, zCmd, test_sqlite3ota_cmd, (ClientData)pOta, 0);
-  Tcl_SetObjResult(interp, objv[1]);
-  return TCL_OK;
-}
-
-/*
-** Tclcmd: sqlite3ota_create_vfs ?-default? NAME PARENT
-*/
-static int test_sqlite3ota_create_vfs(
-  ClientData clientData,
-  Tcl_Interp *interp,
-  int objc,
-  Tcl_Obj *CONST objv[]
-){
-  const char *zName;
-  const char *zParent;
-  int rc;
-
-  if( objc!=3 && objc!=4 ){
-    Tcl_WrongNumArgs(interp, 1, objv, "?-default? NAME PARENT");
-    return TCL_ERROR;
-  }
-
-  zName = Tcl_GetString(objv[objc-2]);
-  zParent = Tcl_GetString(objv[objc-1]);
-  if( zParent[0]=='\0' ) zParent = 0;
-
-  rc = sqlite3ota_create_vfs(zName, zParent);
-  if( rc!=SQLITE_OK ){
-    Tcl_SetObjResult(interp, Tcl_NewStringObj(sqlite3ErrName(rc), -1));
-    return TCL_ERROR;
-  }else if( objc==4 ){
-    sqlite3_vfs *pVfs = sqlite3_vfs_find(zName);
-    sqlite3_vfs_register(pVfs, 1);
-  }
-
-  Tcl_ResetResult(interp);
-  return TCL_OK;
-}
-
-/*
-** Tclcmd: sqlite3ota_destroy_vfs NAME
-*/
-static int test_sqlite3ota_destroy_vfs(
-  ClientData clientData,
-  Tcl_Interp *interp,
-  int objc,
-  Tcl_Obj *CONST objv[]
-){
-  const char *zName;
-
-  if( objc!=2 ){
-    Tcl_WrongNumArgs(interp, 1, objv, "NAME");
-    return TCL_ERROR;
-  }
-
-  zName = Tcl_GetString(objv[1]);
-  sqlite3ota_destroy_vfs(zName);
-  return TCL_OK;
-}
-
-
-int SqliteOta_Init(Tcl_Interp *interp){ 
-  static struct {
-     char *zName;
-     Tcl_ObjCmdProc *xProc;
-  } aObjCmd[] = {
-    { "sqlite3ota", test_sqlite3ota },
-    { "sqlite3ota_create_vfs", test_sqlite3ota_create_vfs },
-    { "sqlite3ota_destroy_vfs", test_sqlite3ota_destroy_vfs },
-  };
-  int i;
-  for(i=0; i<sizeof(aObjCmd)/sizeof(aObjCmd[0]); i++){
-    Tcl_CreateObjCommand(interp, aObjCmd[i].zName, aObjCmd[i].xProc, 0, 0);
-  }
-  return TCL_OK;
-}
-#endif                  /* ifdef SQLITE_TEST */
-#else   /* !SQLITE_CORE || SQLITE_ENABLE_OTA */
-# ifdef SQLITE_TEST
-#include <tcl.h>
-int SqliteOta_Init(Tcl_Interp *interp){ return TCL_OK; }
-# endif
-#endif
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_OTA) */
diff --git a/ext/ota/test_ota.c b/ext/ota/test_ota.c
new file mode 100644 (file)
index 0000000..e9a649b
--- /dev/null
@@ -0,0 +1,220 @@
+/*
+** 2015 February 16
+**
+** 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.
+**
+*************************************************************************
+*/
+
+#include "sqlite3.h"
+
+#if defined(SQLITE_TEST)
+#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_OTA)
+
+#include "sqlite3ota.h"
+#include <tcl.h>
+#include <assert.h>
+
+/* From main.c (apparently...) */
+extern const char *sqlite3ErrName(int);
+
+void test_ota_delta(sqlite3_context *pCtx, int nArg, sqlite3_value **apVal){
+  Tcl_Interp *interp = (Tcl_Interp*)sqlite3_user_data(pCtx);
+  Tcl_Obj *pScript;
+  int i;
+
+  pScript = Tcl_NewObj();
+  Tcl_IncrRefCount(pScript);
+  Tcl_ListObjAppendElement(0, pScript, Tcl_NewStringObj("ota_delta", -1));
+  for(i=0; i<nArg; i++){
+    sqlite3_value *pIn = apVal[i];
+    const char *z = (const char*)sqlite3_value_text(pIn);
+    Tcl_ListObjAppendElement(0, pScript, Tcl_NewStringObj(z, -1));
+  }
+
+  if( TCL_OK==Tcl_EvalObjEx(interp, pScript, TCL_GLOBAL_ONLY) ){
+    const char *z = Tcl_GetStringResult(interp);
+    sqlite3_result_text(pCtx, z, -1, SQLITE_TRANSIENT);
+  }else{
+    Tcl_BackgroundError(interp);
+  }
+
+  Tcl_DecrRefCount(pScript);
+}
+
+
+static int test_sqlite3ota_cmd(
+  ClientData clientData,
+  Tcl_Interp *interp,
+  int objc,
+  Tcl_Obj *CONST objv[]
+){
+  int ret = TCL_OK;
+  sqlite3ota *pOta = (sqlite3ota*)clientData;
+  const char *azMethod[] = { "step", "close", "create_ota_delta", 0 };
+  int iMethod;
+
+  if( objc!=2 ){
+    Tcl_WrongNumArgs(interp, 1, objv, "METHOD");
+    return TCL_ERROR;
+  }
+  if( Tcl_GetIndexFromObj(interp, objv[1], azMethod, "method", 0, &iMethod) ){
+    return TCL_ERROR;
+  }
+
+  switch( iMethod ){
+    case 0: /* step */ {
+      int rc = sqlite3ota_step(pOta);
+      Tcl_SetObjResult(interp, Tcl_NewStringObj(sqlite3ErrName(rc), -1));
+      break;
+    }
+
+    case 1: /* close */ {
+      char *zErrmsg = 0;
+      int rc;
+      Tcl_DeleteCommand(interp, Tcl_GetString(objv[0]));
+      rc = sqlite3ota_close(pOta, &zErrmsg);
+      if( rc==SQLITE_OK || rc==SQLITE_DONE ){
+        Tcl_SetObjResult(interp, Tcl_NewStringObj(sqlite3ErrName(rc), -1));
+        assert( zErrmsg==0 );
+      }else{
+        Tcl_SetObjResult(interp, Tcl_NewStringObj(sqlite3ErrName(rc), -1));
+        if( zErrmsg ){
+          Tcl_AppendResult(interp, " - ", zErrmsg, 0);
+          sqlite3_free(zErrmsg);
+        }
+        ret = TCL_ERROR;
+      }
+      break;
+    }
+
+    case 2: /* create_ota_delta */ {
+      sqlite3 *db = sqlite3ota_db(pOta);
+      int rc = sqlite3_create_function(
+          db, "ota_delta", -1, SQLITE_UTF8, (void*)interp, test_ota_delta, 0, 0
+      );
+      Tcl_SetObjResult(interp, Tcl_NewStringObj(sqlite3ErrName(rc), -1));
+      ret = (rc==SQLITE_OK ? TCL_OK : TCL_ERROR);
+      break;
+    }
+
+    default: /* seems unlikely */
+      assert( !"cannot happen" );
+      break;
+  }
+
+  return ret;
+}
+
+/*
+** Tclcmd: sqlite3ota CMD <target-db> <ota-db>
+*/
+static int test_sqlite3ota(
+  ClientData clientData,
+  Tcl_Interp *interp,
+  int objc,
+  Tcl_Obj *CONST objv[]
+){
+  sqlite3ota *pOta = 0;
+  const char *zCmd;
+  const char *zTarget;
+  const char *zOta;
+
+  if( objc!=4 ){
+    Tcl_WrongNumArgs(interp, 1, objv, "NAME TARGET-DB OTA-DB");
+    return TCL_ERROR;
+  }
+  zCmd = Tcl_GetString(objv[1]);
+  zTarget = Tcl_GetString(objv[2]);
+  zOta = Tcl_GetString(objv[3]);
+
+  pOta = sqlite3ota_open(zTarget, zOta);
+  Tcl_CreateObjCommand(interp, zCmd, test_sqlite3ota_cmd, (ClientData)pOta, 0);
+  Tcl_SetObjResult(interp, objv[1]);
+  return TCL_OK;
+}
+
+/*
+** Tclcmd: sqlite3ota_create_vfs ?-default? NAME PARENT
+*/
+static int test_sqlite3ota_create_vfs(
+  ClientData clientData,
+  Tcl_Interp *interp,
+  int objc,
+  Tcl_Obj *CONST objv[]
+){
+  const char *zName;
+  const char *zParent;
+  int rc;
+
+  if( objc!=3 && objc!=4 ){
+    Tcl_WrongNumArgs(interp, 1, objv, "?-default? NAME PARENT");
+    return TCL_ERROR;
+  }
+
+  zName = Tcl_GetString(objv[objc-2]);
+  zParent = Tcl_GetString(objv[objc-1]);
+  if( zParent[0]=='\0' ) zParent = 0;
+
+  rc = sqlite3ota_create_vfs(zName, zParent);
+  if( rc!=SQLITE_OK ){
+    Tcl_SetObjResult(interp, Tcl_NewStringObj(sqlite3ErrName(rc), -1));
+    return TCL_ERROR;
+  }else if( objc==4 ){
+    sqlite3_vfs *pVfs = sqlite3_vfs_find(zName);
+    sqlite3_vfs_register(pVfs, 1);
+  }
+
+  Tcl_ResetResult(interp);
+  return TCL_OK;
+}
+
+/*
+** Tclcmd: sqlite3ota_destroy_vfs NAME
+*/
+static int test_sqlite3ota_destroy_vfs(
+  ClientData clientData,
+  Tcl_Interp *interp,
+  int objc,
+  Tcl_Obj *CONST objv[]
+){
+  const char *zName;
+
+  if( objc!=2 ){
+    Tcl_WrongNumArgs(interp, 1, objv, "NAME");
+    return TCL_ERROR;
+  }
+
+  zName = Tcl_GetString(objv[1]);
+  sqlite3ota_destroy_vfs(zName);
+  return TCL_OK;
+}
+
+
+int SqliteOta_Init(Tcl_Interp *interp){ 
+  static struct {
+     char *zName;
+     Tcl_ObjCmdProc *xProc;
+  } aObjCmd[] = {
+    { "sqlite3ota", test_sqlite3ota },
+    { "sqlite3ota_create_vfs", test_sqlite3ota_create_vfs },
+    { "sqlite3ota_destroy_vfs", test_sqlite3ota_destroy_vfs },
+  };
+  int i;
+  for(i=0; i<sizeof(aObjCmd)/sizeof(aObjCmd[0]); i++){
+    Tcl_CreateObjCommand(interp, aObjCmd[i].zName, aObjCmd[i].xProc, 0, 0);
+  }
+  return TCL_OK;
+}
+
+#else
+#include <tcl.h>
+int SqliteOta_Init(Tcl_Interp *interp){ return TCL_OK; }
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_OTA) */
+#endif /* defined(SQLITE_TEST) */
+
diff --git a/main.mk b/main.mk
index 47274307187518f0fe3f37c71103b754249ed476..510c890c3c5a3907197693d6f2e6e4a63f853d89 100644 (file)
--- a/main.mk
+++ b/main.mk
@@ -65,7 +65,7 @@ LIBOBJ+= vdbe.o parse.o \
          mutex.o mutex_noop.o mutex_unix.o mutex_w32.o \
          notify.o opcodes.o os.o os_unix.o os_win.o \
          pager.o pcache.o pcache1.o pragma.o prepare.o printf.o \
-         random.o resolve.o rowset.o rtree.o select.o status.o \
+         random.o resolve.o rowset.o rtree.o select.o sqlite3ota.o status.o \
          table.o threads.o tokenize.o trigger.o \
          update.o userauth.o util.o vacuum.o \
          vdbeapi.o vdbeaux.o vdbeblob.o vdbemem.o vdbesort.o \
@@ -341,7 +341,7 @@ TESTSRC2 = \
   $(TOP)/ext/fts3/fts3_tokenizer.c \
   $(TOP)/ext/fts3/fts3_write.c \
   $(TOP)/ext/async/sqlite3async.c \
-  $(TOP)/ext/ota/sqlite3ota.c
+  $(TOP)/ext/ota/test_ota.c
 
 # Header files used by all library source files.
 #
@@ -575,6 +575,9 @@ rtree.o:    $(TOP)/ext/rtree/rtree.c $(HDR) $(EXTHDR)
 userauth.o:    $(TOP)/ext/userauth/userauth.c $(HDR) $(EXTHDR)
        $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/userauth/userauth.c
 
+sqlite3ota.o:  $(TOP)/ext/ota/sqlite3ota.c $(HDR) $(EXTHDR)
+       $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/ota/sqlite3ota.c
+
 
 # Rules for building test programs and for running tests
 #
index 435ebc95adc10a43143d647cb733a4c2bd032476..e8f6d9d11e90c4bd227a3abda67d2c51d40c7d4a 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Change\sthe\sway\sthe\s"incremental\scheckpoint"\sfunction\sof\sOTA\sworks\sin\sorder\sto\sreduce\sthe\seffect\son\sthe\sSQLite\score\scode.
-D 2015-02-14T18:58:22.415
+C Move\stcl\stest\scode\sfrom\ssqlite3ota.c\sto\snew\sfile\sext/ota/test_ota.c.
+D 2015-02-16T06:27:37.241
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 6b9e7677829aa94b9f30949656e27312aefb9a46
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -135,8 +135,9 @@ F ext/ota/ota8.test cd70e63a0c29c45c0906692827deafa34638feda
 F ext/ota/ota9.test d3eee95dd836824d07a22e5efcdb7bf6e869358b
 F ext/ota/otaA.test 95566a8d193113867b960eadf85b310937f2fe03
 F ext/ota/otafault.test 508ba87c83d632670ac0f94371a465d4bb4d49dd
-F ext/ota/sqlite3ota.c 0cf2a1b5ac7009050159a39d938f1334ce7072b8
+F ext/ota/sqlite3ota.c 79874bc6f31a514aebd17ab24d31e7c567e6225e
 F ext/ota/sqlite3ota.h 1cc7201086fe65a36957740381485a24738c4077
+F ext/ota/test_ota.c 5dd58e4e6eb3ae7b471566616d44b701971bce88
 F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761
 F ext/rtree/rtree.c 14e6239434d4e3f65d3e90320713f26aa24e167f
 F ext/rtree/rtree.h 834dbcb82dc85b2481cde6a07cdadfddc99e9b9e
@@ -166,7 +167,7 @@ F ext/userauth/userauth.c 5fa3bdb492f481bbc1709fc83c91ebd13460c69e
 F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x
 F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8
 F magic.txt 8273bf49ba3b0c8559cb2774495390c31fd61c60
-F main.mk 57c115aba023c1988564edb80ac87c3e07472b05
+F main.mk 00070461df537e8e0ece33cf05caf3d536c28802
 F mkopcodec.awk c2ff431854d702cdd2d779c9c0d1f58fa16fa4ea
 F mkopcodeh.awk c6b3fa301db6ef7ac916b14c60868aeaec1337b5
 F mkso.sh fd21c06b063bb16a5d25deea1752c2da6ac3ed83
@@ -1254,7 +1255,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 71887cd9b38def398d48eaf0ec34eeac3c7c5177
-R 9f9fcb7ec94597bb519ead7cc6d77d1b
+P b64a11a754dc56f3406d3b703531ebe9e4af4908
+R 8813c4f37af98778b18f1d2e1e748912
 U dan
-Z b1cfeba62f30a42f6b3ffd27f7078fc0
+Z ac67e9a36714c8c694cc168f5b99c0ce
index 9b9576f034ca03c1a93009b4dea9fd5a2cb1bd21..1b07b3af8ef8a3ea37b13c68b03135746d479f2a 100644 (file)
@@ -1 +1 @@
-b64a11a754dc56f3406d3b703531ebe9e4af4908
\ No newline at end of file
+f20779a6e890ba73bfaa904cefcf3a029b01fed4
\ No newline at end of file