Add initialization functions for internal usage in libsqlite3.so.

SQLite revision: 10e20c0b43500cfb9bbc0eaa061c57514f715d87238f4d835880cd846b9ebd1f

--- /ext/misc/nextchar.c
+++ /ext/misc/nextchar.c
@@ -286,17 +286,8 @@
   sqlite3_free(c.aResult);
 }
 
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
-int sqlite3_nextchar_init(
-  sqlite3 *db, 
-  char **pzErrMsg, 
-  const sqlite3_api_routines *pApi
-){
+int sqlite3NextcharInit(sqlite3 *db){
   int rc = SQLITE_OK;
-  SQLITE_EXTENSION_INIT2(pApi);
-  (void)pzErrMsg;  /* Unused parameter */
   rc = sqlite3_create_function(db, "next_char", 3,
                                SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
                                nextCharFunc, 0, 0);
@@ -312,3 +303,18 @@
   }
   return rc;
 }
+
+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+#ifdef _WIN32
+__declspec(dllexport)
+#endif
+int sqlite3_nextchar_init(
+  sqlite3 *db, 
+  char **pzErrMsg, 
+  const sqlite3_api_routines *pApi
+){
+  SQLITE_EXTENSION_INIT2(pApi);
+  (void)pzErrMsg;  /* Unused parameter */
+  return sqlite3NextcharInit(db);
+}
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
--- /ext/misc/percentile.c
+++ /ext/misc/percentile.c
@@ -202,6 +202,15 @@
 }
 
 
+int sqlite3PercentileInit(sqlite3 *db){
+  int rc = SQLITE_OK;
+  rc = sqlite3_create_function(db, "percentile", 2,
+                               SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+                               0, percentStep, percentFinal);
+  return rc;
+}
+
+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
 #ifdef _WIN32
 __declspec(dllexport)
 #endif
@@ -210,11 +219,8 @@
   char **pzErrMsg, 
   const sqlite3_api_routines *pApi
 ){
-  int rc = SQLITE_OK;
   SQLITE_EXTENSION_INIT2(pApi);
   (void)pzErrMsg;  /* Unused parameter */
-  rc = sqlite3_create_function(db, "percentile", 2, 
-                               SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
-                               0, percentStep, percentFinal);
-  return rc;
+  return sqlite3PercentileInit(db);
 }
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
--- /ext/misc/regexp.c
+++ /ext/misc/regexp.c
@@ -740,10 +740,18 @@
   }
 }
 
+int sqlite3RegexpInit(sqlite3 *db){
+  int rc = SQLITE_OK;
+  rc = sqlite3_create_function(db, "regexp", 2, SQLITE_UTF8|SQLITE_INNOCUOUS,
+                               0, re_sql_func, 0, 0);
+  return rc;
+}
+
 /*
 ** Invoke this routine to register the regexp() function with the
 ** SQLite database connection.
 */
+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
 #ifdef _WIN32
 __declspec(dllexport)
 #endif
@@ -752,9 +760,8 @@
   char **pzErrMsg, 
   const sqlite3_api_routines *pApi
 ){
-  int rc = SQLITE_OK;
   SQLITE_EXTENSION_INIT2(pApi);
-  rc = sqlite3_create_function(db, "regexp", 2, SQLITE_UTF8|SQLITE_INNOCUOUS,
-                               0, re_sql_func, 0, 0);
-  return rc;
+  (void)pzErrMsg;  /* Unused parameter */
+  return sqlite3RegexpInit(db);
 }
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
--- /ext/misc/series.c
+++ /ext/misc/series.c
@@ -413,6 +413,15 @@
 
 #endif /* SQLITE_OMIT_VIRTUALTABLE */
 
+int sqlite3SeriesInit(sqlite3 *db){
+  int rc = SQLITE_OK;
+#ifndef SQLITE_OMIT_VIRTUALTABLE
+  rc = sqlite3_create_module(db, "generate_series", &seriesModule, 0);
+#endif
+  return rc;
+}
+
+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
 #ifdef _WIN32
 __declspec(dllexport)
 #endif
@@ -421,7 +430,6 @@
   char **pzErrMsg, 
   const sqlite3_api_routines *pApi
 ){
-  int rc = SQLITE_OK;
   SQLITE_EXTENSION_INIT2(pApi);
 #ifndef SQLITE_OMIT_VIRTUALTABLE
   if( sqlite3_libversion_number()<3008012 ){
@@ -429,7 +437,7 @@
         "generate_series() requires SQLite 3.8.12 or later");
     return SQLITE_ERROR;
   }
-  rc = sqlite3_create_module(db, "generate_series", &seriesModule, 0);
 #endif
-  return rc;
+  return sqlite3SeriesInit(db);
 }
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
--- /ext/misc/sha1.c
+++ /ext/misc/sha1.c
@@ -175,7 +175,7 @@
 }
 
 /* Compute a string using sqlite3_vsnprintf() and hash it */
-static void hash_step_vformat(
+static void sha1_hash_step_vformat(
   SHA1Context *p,                 /* Add content to this context */
   const char *zFormat,
   ...
@@ -306,7 +306,7 @@
     nCol = sqlite3_column_count(pStmt);
     z = sqlite3_sql(pStmt);
     n = (int)strlen(z);
-    hash_step_vformat(&cx,"S%d:",n);
+    sha1_hash_step_vformat(&cx,"S%d:",n);
     hash_step(&cx,(unsigned char*)z,n);
 
     /* Compute a hash over the result of the query */
@@ -349,14 +349,14 @@
           case SQLITE_TEXT: {
             int n2 = sqlite3_column_bytes(pStmt, i);
             const unsigned char *z2 = sqlite3_column_text(pStmt, i);
-            hash_step_vformat(&cx,"T%d:",n2);
+            sha1_hash_step_vformat(&cx,"T%d:",n2);
             hash_step(&cx, z2, n2);
             break;
           }
           case SQLITE_BLOB: {
             int n2 = sqlite3_column_bytes(pStmt, i);
             const unsigned char *z2 = sqlite3_column_blob(pStmt, i);
-            hash_step_vformat(&cx,"B%d:",n2);
+            sha1_hash_step_vformat(&cx,"B%d:",n2);
             hash_step(&cx, z2, n2);
             break;
           }
@@ -370,6 +370,20 @@
 }
 
 
+int sqlite3ShaInit(sqlite3 *db){
+  int rc = SQLITE_OK;
+  rc = sqlite3_create_function(db, "sha1", 1,
+                       SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC,
+                               0, sha1Func, 0, 0);
+  if( rc==SQLITE_OK ){
+    rc = sqlite3_create_function(db, "sha1_query", 1,
+                                 SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
+                                 sha1QueryFunc, 0, 0);
+  }
+  return rc;
+}
+
+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
 #ifdef _WIN32
 __declspec(dllexport)
 #endif
@@ -378,16 +392,8 @@
   char **pzErrMsg,
   const sqlite3_api_routines *pApi
 ){
-  int rc = SQLITE_OK;
   SQLITE_EXTENSION_INIT2(pApi);
   (void)pzErrMsg;  /* Unused parameter */
-  rc = sqlite3_create_function(db, "sha1", 1, 
-                       SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC,
-                               0, sha1Func, 0, 0);
-  if( rc==SQLITE_OK ){
-    rc = sqlite3_create_function(db, "sha1_query", 1, 
-                                 SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
-                                 sha1QueryFunc, 0, 0);
-  }
-  return rc;
+  return sqlite3ShaInit(db);
 }
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
--- /ext/misc/shathree.c
+++ /ext/misc/shathree.c
@@ -527,7 +527,7 @@
 /* Compute a string using sqlite3_vsnprintf() with a maximum length
 ** of 50 bytes and add it to the hash.
 */
-static void hash_step_vformat(
+static void sha3_hash_step_vformat(
   SHA3Context *p,                 /* Add content to this context */
   const char *zFormat,
   ...
@@ -623,7 +623,7 @@
     z = sqlite3_sql(pStmt);
     if( z ){
       n = (int)strlen(z);
-      hash_step_vformat(&cx,"S%d:",n);
+      sha3_hash_step_vformat(&cx,"S%d:",n);
       SHA3Update(&cx,(unsigned char*)z,n);
     }
 
@@ -667,14 +667,14 @@
           case SQLITE_TEXT: {
             int n2 = sqlite3_column_bytes(pStmt, i);
             const unsigned char *z2 = sqlite3_column_text(pStmt, i);
-            hash_step_vformat(&cx,"T%d:",n2);
+            sha3_hash_step_vformat(&cx,"T%d:",n2);
             SHA3Update(&cx, z2, n2);
             break;
           }
           case SQLITE_BLOB: {
             int n2 = sqlite3_column_bytes(pStmt, i);
             const unsigned char *z2 = sqlite3_column_blob(pStmt, i);
-            hash_step_vformat(&cx,"B%d:",n2);
+            sha3_hash_step_vformat(&cx,"B%d:",n2);
             SHA3Update(&cx, z2, n2);
             break;
           }
@@ -687,17 +687,8 @@
 }
 
 
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
-int sqlite3_shathree_init(
-  sqlite3 *db,
-  char **pzErrMsg,
-  const sqlite3_api_routines *pApi
-){
+int sqlite3ShathreeInit(sqlite3 *db){
   int rc = SQLITE_OK;
-  SQLITE_EXTENSION_INIT2(pApi);
-  (void)pzErrMsg;  /* Unused parameter */
   rc = sqlite3_create_function(db, "sha3", 1,
                       SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC,
                       0, sha3Func, 0, 0);
@@ -718,3 +709,18 @@
   }
   return rc;
 }
+
+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+#ifdef _WIN32
+__declspec(dllexport)
+#endif
+int sqlite3_shathree_init(
+  sqlite3 *db,
+  char **pzErrMsg,
+  const sqlite3_api_routines *pApi
+){
+  SQLITE_EXTENSION_INIT2(pApi);
+  (void)pzErrMsg;  /* Unused parameter */
+  return sqlite3ShathreeInit(db);
+}
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
--- /ext/misc/sqlar.c
+++ /ext/misc/sqlar.c
@@ -14,6 +14,8 @@
 ** for working with sqlar archives and used by the shell tool's built-in
 ** sqlar support.
 */
+#ifdef SQLITE_HAVE_ZLIB
+
 #include "sqlite3ext.h"
 SQLITE_EXTENSION_INIT1
 #include <zlib.h>
@@ -101,6 +103,20 @@
 }
 
 
+int sqlite3SqlarInit(sqlite3 *db){
+  int rc = SQLITE_OK;
+  rc = sqlite3_create_function(db, "sqlar_compress", 1,
+                               SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+                               sqlarCompressFunc, 0, 0);
+  if( rc==SQLITE_OK ){
+    rc = sqlite3_create_function(db, "sqlar_uncompress", 2,
+                                 SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+                                 sqlarUncompressFunc, 0, 0);
+  }
+  return rc;
+}
+
+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
 #ifdef _WIN32
 __declspec(dllexport)
 #endif
@@ -109,16 +125,10 @@
   char **pzErrMsg, 
   const sqlite3_api_routines *pApi
 ){
-  int rc = SQLITE_OK;
   SQLITE_EXTENSION_INIT2(pApi);
   (void)pzErrMsg;  /* Unused parameter */
-  rc = sqlite3_create_function(db, "sqlar_compress", 1, 
-                               SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
-                               sqlarCompressFunc, 0, 0);
-  if( rc==SQLITE_OK ){
-    rc = sqlite3_create_function(db, "sqlar_uncompress", 2,
-                                 SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
-                                 sqlarUncompressFunc, 0, 0);
-  }
-  return rc;
+  return sqlite3SqlarInit(db);
 }
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+
+#endif /* SQLITE_HAVE_ZLIB */
--- /ext/misc/totype.c
+++ /ext/misc/totype.c
@@ -491,17 +491,8 @@
 #pragma warning(default: 4748)
 #endif
 
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
-int sqlite3_totype_init(
-  sqlite3 *db,
-  char **pzErrMsg,
-  const sqlite3_api_routines *pApi
-){
+int sqlite3TotypeInit(sqlite3 *db){
   int rc = SQLITE_OK;
-  SQLITE_EXTENSION_INIT2(pApi);
-  (void)pzErrMsg;  /* Unused parameter */
   rc = sqlite3_create_function(db, "tointeger", 1,
         SQLITE_UTF8 | SQLITE_DETERMINISTIC | SQLITE_INNOCUOUS, 0,
         tointegerFunc, 0, 0);
@@ -512,3 +503,18 @@
   }
   return rc;
 }
+
+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+#ifdef _WIN32
+__declspec(dllexport)
+#endif
+int sqlite3_totype_init(
+  sqlite3 *db,
+  char **pzErrMsg,
+  const sqlite3_api_routines *pApi
+){
+  SQLITE_EXTENSION_INIT2(pApi);
+  (void)pzErrMsg;  /* Unused parameter */
+  return sqlite3TotypeInit(db);
+}
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
--- /ext/misc/uint.c
+++ /ext/misc/uint.c
@@ -78,6 +78,11 @@
   return (nKey1 - i) - (nKey2 - j);
 }
 
+int sqlite3UintInit(sqlite3 *db){
+  return sqlite3_create_collation(db, "UINT", SQLITE_UTF8, 0, uintCollFunc);
+}
+
+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
 #ifdef _WIN32
 __declspec(dllexport)
 #endif
@@ -88,5 +93,6 @@
 ){
   SQLITE_EXTENSION_INIT2(pApi);
   (void)pzErrMsg;  /* Unused parameter */
-  return sqlite3_create_collation(db, "uint", SQLITE_UTF8, 0, uintCollFunc);
+  return sqlite3UintInit(db);
 }
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
--- /ext/misc/uuid.c
+++ /ext/misc/uuid.c
@@ -206,21 +206,12 @@
   sqlite3_result_blob(context, pBlob, 16, SQLITE_TRANSIENT);
 }
 
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
-int sqlite3_uuid_init(
-  sqlite3 *db,
-  char **pzErrMsg,
-  const sqlite3_api_routines *pApi
-){
+int sqlite3UuidInit(sqlite3 *db){
   int rc = SQLITE_OK;
-  SQLITE_EXTENSION_INIT2(pApi);
-  (void)pzErrMsg;  /* Unused parameter */
   rc = sqlite3_create_function(db, "uuid", 0, SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
                                sqlite3UuidFunc, 0, 0);
   if( rc==SQLITE_OK ){
-    rc = sqlite3_create_function(db, "uuid_str", 1, 
+    rc = sqlite3_create_function(db, "uuid_str", 1,
                        SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
                        0, sqlite3UuidStrFunc, 0, 0);
   }
@@ -231,3 +222,18 @@
   }
   return rc;
 }
+
+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+#ifdef _WIN32
+__declspec(dllexport)
+#endif
+int sqlite3_uuid_init(
+  sqlite3 *db,
+  char **pzErrMsg,
+  const sqlite3_api_routines *pApi
+){
+  SQLITE_EXTENSION_INIT2(pApi);
+  (void)pzErrMsg;  /* Unused parameter */
+  return sqlite3UuidInit(db);
+}
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
--- /ext/misc/zipfile.c
+++ /ext/misc/zipfile.c
@@ -24,6 +24,8 @@
 **    *  No support for zip64 extensions
 **    *  Only the "inflate/deflate" (zlib) compression method is supported
 */
+#ifdef SQLITE_HAVE_ZLIB
+
 #include "sqlite3ext.h"
 SQLITE_EXTENSION_INIT1
 #include <stdio.h>
@@ -2139,7 +2141,7 @@
 /*
 ** Register the "zipfile" virtual table.
 */
-static int zipfileRegister(sqlite3 *db){
+int sqlite3ZipfileInit(sqlite3 *db){
   static sqlite3_module zipfileModule = {
     1,                         /* iVersion */
     zipfileConnect,            /* xCreate */
@@ -2173,9 +2175,10 @@
   return rc;
 }
 #else         /* SQLITE_OMIT_VIRTUALTABLE */
-# define zipfileRegister(x) SQLITE_OK
+# define sqlite3ZipfileInit(x) SQLITE_OK
 #endif
 
+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
 #ifdef _WIN32
 __declspec(dllexport)
 #endif
@@ -2186,5 +2189,8 @@
 ){
   SQLITE_EXTENSION_INIT2(pApi);
   (void)pzErrMsg;  /* Unused parameter */
-  return zipfileRegister(db);
+  return sqlite3ZipfileInit(db);
 }
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+
+#endif /* SQLITE_HAVE_ZLIB */
