Add initialization functions for internal usage in libsqlite3.so. --- /ext/misc/carray.c +++ /ext/misc/carray.c @@ -383,16 +383,8 @@ #endif /* SQLITE_OMIT_VIRTUALTABLE */ -#ifdef _WIN32 -__declspec(dllexport) -#endif -int sqlite3_carray_init( - sqlite3 *db, - char **pzErrMsg, - const sqlite3_api_routines *pApi -){ +int sqlite3CarrayInit(sqlite3 *db){ int rc = SQLITE_OK; - SQLITE_EXTENSION_INIT2(pApi); #ifndef SQLITE_OMIT_VIRTUALTABLE rc = sqlite3_create_module(db, "carray", &carrayModule, 0); #ifdef SQLITE_TEST @@ -404,3 +396,18 @@ #endif /* SQLITE_OMIT_VIRTUALTABLE */ return rc; } + +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) +#ifdef _WIN32 +__declspec(dllexport) +#endif +int sqlite3_carray_init( + sqlite3 *db, + char **pzErrMsg, + const sqlite3_api_routines *pApi +){ + SQLITE_EXTENSION_INIT2(pApi); + (void)pzErrMsg; /* Unused parameter */ + return sqlite3CarrayInit(db); +} +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ --- /ext/misc/completion.c +++ /ext/misc/completion.c @@ -483,12 +483,13 @@ return rc; } +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) #ifdef _WIN32 __declspec(dllexport) #endif int sqlite3_completion_init( - sqlite3 *db, - char **pzErrMsg, + sqlite3 *db, + char **pzErrMsg, const sqlite3_api_routines *pApi ){ int rc = SQLITE_OK; @@ -499,3 +500,4 @@ #endif return rc; } +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ --- /ext/misc/csv.c +++ /ext/misc/csv.c @@ -928,6 +928,22 @@ #endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) */ +int sqlite3CsvInit(sqlite3 *db){ +#ifndef SQLITE_OMIT_VIRTUALTABLE + int rc; + rc = sqlite3_create_module(db, "csv", &CsvModule, 0); +#ifdef SQLITE_TEST + if( rc==SQLITE_OK ){ + rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0); + } +#endif + return rc; +#else + return SQLITE_OK; +#endif +} + +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) #ifdef _WIN32 __declspec(dllexport) #endif @@ -941,17 +957,8 @@ char **pzErrMsg, const sqlite3_api_routines *pApi ){ -#ifndef SQLITE_OMIT_VIRTUALTABLE - int rc; SQLITE_EXTENSION_INIT2(pApi); - rc = sqlite3_create_module(db, "csv", &CsvModule, 0); -#ifdef SQLITE_TEST - if( rc==SQLITE_OK ){ - rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0); - } -#endif - return rc; -#else - return SQLITE_OK; -#endif + (void)pzErrMsg; /* Unused parameter */ + return sqlite3CsvInit(db); } +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ --- /ext/misc/dbdata.c +++ /ext/misc/dbdata.c @@ -803,7 +803,7 @@ /* ** Invoke this routine to register the "sqlite_dbdata" virtual table module */ -static int sqlite3DbdataRegister(sqlite3 *db){ +int sqlite3DbdataRegister(sqlite3 *db){ static sqlite3_module dbdata_module = { 0, /* iVersion */ 0, /* xCreate */ @@ -838,6 +838,7 @@ return rc; } +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) #ifdef _WIN32 __declspec(dllexport) #endif @@ -849,3 +850,4 @@ SQLITE_EXTENSION_INIT2(pApi); return sqlite3DbdataRegister(db); } +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ --- /ext/misc/eval.c +++ /ext/misc/eval.c @@ -102,6 +102,20 @@ } +int sqlite3EvalInit(sqlite3 *db){ + int rc = SQLITE_OK; + rc = sqlite3_create_function(db, "eval", 1, + SQLITE_UTF8|SQLITE_DIRECTONLY, 0, + sqlEvalFunc, 0, 0); + if( rc==SQLITE_OK ){ + rc = sqlite3_create_function(db, "eval", 2, + SQLITE_UTF8|SQLITE_DIRECTONLY, 0, + sqlEvalFunc, 0, 0); + } + return rc; +} + +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) #ifdef _WIN32 __declspec(dllexport) #endif @@ -110,16 +124,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, "eval", 1, - SQLITE_UTF8|SQLITE_DIRECTONLY, 0, - sqlEvalFunc, 0, 0); - if( rc==SQLITE_OK ){ - rc = sqlite3_create_function(db, "eval", 2, - SQLITE_UTF8|SQLITE_DIRECTONLY, 0, - sqlEvalFunc, 0, 0); - } - return rc; + return sqlite3EvalInit(db); } +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ --- /ext/misc/fileio.c +++ /ext/misc/fileio.c @@ -340,7 +340,7 @@ ** This function does the work for the writefile() UDF. Refer to ** header comments at the top of this file for details. */ -static int writeFile( +static int writeFileContents( sqlite3_context *pCtx, /* Context to return bytes written in */ const char *zFile, /* File to write */ sqlite3_value *pData, /* Data to write */ @@ -480,10 +480,10 @@ mtime = sqlite3_value_int64(argv[3]); } - res = writeFile(context, zFile, argv[1], mode, mtime); + res = writeFileContents(context, zFile, argv[1], mode, mtime); if( res==1 && errno==ENOENT ){ if( makeDirectory(zFile)==SQLITE_OK ){ - res = writeFile(context, zFile, argv[1], mode, mtime); + res = writeFileContents(context, zFile, argv[1], mode, mtime); } } @@ -970,18 +970,9 @@ # define fsdirRegister(x) SQLITE_OK #endif -#ifdef _WIN32 -__declspec(dllexport) -#endif -int sqlite3_fileio_init( - sqlite3 *db, - char **pzErrMsg, - const sqlite3_api_routines *pApi -){ +int sqlite3FileioInit(sqlite3 *db){ int rc = SQLITE_OK; - SQLITE_EXTENSION_INIT2(pApi); - (void)pzErrMsg; /* Unused parameter */ - rc = sqlite3_create_function(db, "readfile", 1, + rc = sqlite3_create_function(db, "readfile", 1, SQLITE_UTF8|SQLITE_DIRECTONLY, 0, readfileFunc, 0, 0); if( rc==SQLITE_OK ){ @@ -998,3 +989,18 @@ } return rc; } + +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) +#ifdef _WIN32 +__declspec(dllexport) +#endif +int sqlite3_fileio_init( + sqlite3 *db, + char **pzErrMsg, + const sqlite3_api_routines *pApi +){ + SQLITE_EXTENSION_INIT2(pApi); + (void)pzErrMsg; /* Unused parameter */ + return sqlite3FileioInit(db); +} +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ --- /ext/misc/ieee754.c +++ /ext/misc/ieee754.c @@ -110,6 +110,20 @@ } +int sqlite3IeeeInit(sqlite3 *db){ + int rc = SQLITE_OK; + rc = sqlite3_create_function(db, "ieee754", 1, + SQLITE_UTF8|SQLITE_INNOCUOUS, 0, + ieee754func, 0, 0); + if( rc==SQLITE_OK ){ + rc = sqlite3_create_function(db, "ieee754", 2, + SQLITE_UTF8|SQLITE_INNOCUOUS, 0, + ieee754func, 0, 0); + } + return rc; +} + +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) #ifdef _WIN32 __declspec(dllexport) #endif @@ -118,16 +132,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, "ieee754", 1, - SQLITE_UTF8|SQLITE_INNOCUOUS, 0, - ieee754func, 0, 0); - if( rc==SQLITE_OK ){ - rc = sqlite3_create_function(db, "ieee754", 2, - SQLITE_UTF8|SQLITE_INNOCUOUS, 0, - ieee754func, 0, 0); - } - return rc; + return sqlite3IeeeInit(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/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, ... @@ -622,7 +622,7 @@ nCol = sqlite3_column_count(pStmt); z = sqlite3_sql(pStmt); 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); /* Compute a hash over the result of the query */ @@ -665,14 +665,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; } @@ -685,17 +685,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); @@ -716,3 +707,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 @@ -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 @@ -2137,7 +2139,7 @@ /* ** Register the "zipfile" virtual table. */ -static int zipfileRegister(sqlite3 *db){ +int sqlite3ZipfileInit(sqlite3 *db){ static sqlite3_module zipfileModule = { 1, /* iVersion */ zipfileConnect, /* xCreate */ @@ -2171,9 +2173,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 @@ -2184,5 +2187,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 */