]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make sure the SQLITE_TCLAPI macro is always defined.
authormistachkin <mistachkin@noemail.net>
Thu, 28 Jul 2016 17:11:20 +0000 (17:11 +0000)
committermistachkin <mistachkin@noemail.net>
Thu, 28 Jul 2016 17:11:20 +0000 (17:11 +0000)
FossilOrigin-Name: f2f1323cc4d2ad2d6794dbfae8d50b747213e85d

38 files changed:
ext/fts3/fts3_test.c
manifest
manifest.uuid
src/sqliteInt.h
src/tclsqlite.c
src/test1.c
src/test2.c
src/test3.c
src/test4.c
src/test5.c
src/test6.c
src/test7.c
src/test8.c
src/test9.c
src/test_async.c
src/test_autoext.c
src/test_backup.c
src/test_bestindex.c
src/test_blob.c
src/test_btree.c
src/test_demovfs.c
src/test_fs.c
src/test_func.c
src/test_hexio.c
src/test_init.c
src/test_intarray.c
src/test_malloc.c
src/test_multiplex.c
src/test_mutex.c
src/test_osinst.c
src/test_quota.c
src/test_rtree.c
src/test_schema.c
src/test_superlock.c
src/test_syscall.c
src/test_tclvar.c
src/test_thread.c
src/test_vfs.c

index c3b71284ec4d12e952c21fefe87a4efb71f4664f..a48a556c98f08151698eb3e606726aee6d18e68c 100644 (file)
@@ -22,6 +22,9 @@
 #  include "sqlite_tcl.h"
 #else
 #  include "tcl.h"
+#  ifndef SQLITE_TCLAPI
+#    define SQLITE_TCLAPI
+#  endif
 #endif
 #include <string.h>
 #include <assert.h>
@@ -147,7 +150,7 @@ static int nm_match_count(
 /*
 ** Tclcmd: fts3_near_match DOCUMENT EXPR ?OPTIONS?
 */
-static int fts3_near_match_cmd(
+static int SQLITE_TCLAPI fts3_near_match_cmd(
   ClientData clientData,
   Tcl_Interp *interp,
   int objc,
@@ -282,7 +285,7 @@ static int fts3_near_match_cmd(
 **    # Restore initial incr-load settings:
 **    eval fts3_configure_incr_load $cfg
 */
-static int fts3_configure_incr_load_cmd(
+static int SQLITE_TCLAPI fts3_configure_incr_load_cmd(
   ClientData clientData,
   Tcl_Interp *interp,
   int objc,
@@ -492,7 +495,7 @@ static int testTokenizerLanguage(
 }
 #endif
 
-static int fts3_test_tokenizer_cmd(
+static int SQLITE_TCLAPI fts3_test_tokenizer_cmd(
   ClientData clientData,
   Tcl_Interp *interp,
   int objc,
@@ -521,7 +524,7 @@ static int fts3_test_tokenizer_cmd(
   return TCL_OK;
 }
 
-static int fts3_test_varint_cmd(
+static int SQLITE_TCLAPI fts3_test_varint_cmd(
   ClientData clientData,
   Tcl_Interp *interp,
   int objc,
index cb678be722e39a8929c5cc5a15577b828db120cd..1be1262c7e59ecd8bfa68d7716b44dc3394bf57c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C More\swork\son\sgetting\sthe\s'testfixture.exe'\starget\sto\swork\scorrectly.
-D 2016-07-28T16:09:52.017
+C Make\ssure\sthe\sSQLITE_TCLAPI\smacro\sis\salways\sdefined.
+D 2016-07-28T17:11:20.162
 F Makefile.in 6c20d44f72d4564f11652b26291a214c8367e5db
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 1e5399407885d69150e2659f4710b5712a1e6cef
@@ -81,7 +81,7 @@ F ext/fts3/fts3_icu.c deb46f7020d87ea7a14a433fb7a7f4bef42a9652
 F ext/fts3/fts3_porter.c 3565faf04b626cddf85f03825e86056a4562c009
 F ext/fts3/fts3_snippet.c 68ae118b0f834ea53d2b89e4087fc0f0b8c4ee4e
 F ext/fts3/fts3_term.c 88c55a6fa1a51ab494e33dced0401a6c28791fd7
-F ext/fts3/fts3_test.c 7d8c9e17bc11cc245c91585ef5a47ee4a600f7b2
+F ext/fts3/fts3_test.c 79f2a7fbb3f672fa032e5a432ca274ea3ee93c34
 F ext/fts3/fts3_tokenize_vtab.c a27593ab19657166f6fa5ec073b678cc29a75860
 F ext/fts3/fts3_tokenizer.c a22bf311a71f3efa9d7012d8cc48fc9b0f3dace7
 F ext/fts3/fts3_tokenizer.h 64c6ef6c5272c51ebe60fc607a896e84288fcbc3
@@ -388,55 +388,55 @@ F src/shell.c 9351fc6de11e1d908648c0a92d85627138e3dee5
 F src/sqlite.h.in a03063e698a43cc5c996cd341f39439a6ce58304
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h 46f300b6e300e0fa916d7d58c44b53415b8471a9
-F src/sqliteInt.h d25c18c1272a7811e2569c39bfc2fca96156eead
+F src/sqliteInt.h 14516943867eb2c30ce0e3670299958f59ade052
 F src/sqliteLimit.h c0373387c287c8d0932510b5547ecde31b5da247
 F src/status.c 5b18f9526900f61189ab0b83f1ef41d9f871a2ab
 F src/table.c 5226df15ab9179b9ed558d89575ea0ce37b03fc9
-F src/tclsqlite.c e348648c28fcaa04ab8da98bf7e8a37b3629e634
-F src/test1.c a625e4d2857e0b08a9d66bdb737ce95b02326a9f
-F src/test2.c ce1e56fd0983866df1dbaf6c0558f3ad726ec222
-F src/test3.c 68b6b3b17df3028deda0a79607af70ff4ac5fc52
-F src/test4.c a305bb93783fa0db03b9e5e899ec5367cf139903
-F src/test5.c 3ca6874d52d658607d2f25bb6ed88fd03ad78a6c
-F src/test6.c 4fc2c870b4f41d46f11a24b5c7dcff89486442b8
-F src/test7.c 57b6dae963ff12cb6ef8389285427f07e8b042ff
-F src/test8.c 33cefbf2911e12c74c6adb798cc0c8ee3287a58d
-F src/test9.c 6b9792e8a692a67fcce77dfe4a2ca4744c4ece54
-F src/test_async.c 233536b7e364a4a95597d6aa6fdf07fa9351de67
-F src/test_autoext.c 2a2343174ff46477dd081b7582dc1e72c69330bc
-F src/test_backup.c 7fe86c0be6c1a05a254b845a6aa32294dbdab012
-F src/test_bestindex.c 832b9968bf15d60029c1700905d56cefeb0f5dd7
-F src/test_blob.c 6af2552a059f326a107214fb13917f31a1606caf
-F src/test_btree.c 3d2abd96336f1cbb760c7c5a758e74eaae98aed6
+F src/tclsqlite.c a9c6e33c44efa93d176ce5e0887d5d533c98b429
+F src/test1.c 906a04b649c7139e943193a3905d583e325c30c7
+F src/test2.c b7174313e993754303a8b33c43df7c44b46857ab
+F src/test3.c 1339a40be39650ae83894b6578f971dc7f96ea8a
+F src/test4.c 18ec393bb4d0ad1de729f0b94da7267270f3d8e6
+F src/test5.c 328aae2c010c57a9829d255dc099d6899311672d
+F src/test6.c 55aa2775c154415dcf4ed7cd1e19a193122b3a02
+F src/test7.c 5612e9aecf934d6df7bba6ce861fdf5ba5456010
+F src/test8.c 4f4904721167b32f7a4fa8c7b32a07a673d6cc86
+F src/test9.c 12e5ba554d2d1cbe0158f6ab3f7ffcd7a86ee4e5
+F src/test_async.c 195ab49da082053fdb0f949c114b806a49ca770a
+F src/test_autoext.c 6c8fe00caa3f38396f0990467179e9d1adb39ddd
+F src/test_backup.c bf5da90c9926df0a4b941f2d92825a01bbe090a0
+F src/test_bestindex.c d23f80d334c59662af69191854c76b8d3d0c8c96
+F src/test_blob.c a0f7ad49a0c9d4b72f693fe2a71c58d7e507174d
+F src/test_btree.c 8b2dc8b8848cf3a4db93f11578f075e82252a274
 F src/test_config.c 4d3d4a886416f369771d69a6dba926866deda788
-F src/test_demovfs.c ed337b14964a5f5ba08bf9472c94c64e88c547a7
+F src/test_demovfs.c a0c3bdd45ed044115c2c9f7779e56eafff18741e
 F src/test_devsym.c 4e58dec2602d8e139ca08659f62a62450587cb58
-F src/test_fs.c 39086f99413e73f60afe2280a0ff27dfab63ab47
-F src/test_func.c 4197173afb7d8453d3d0c7f7b109226dcef52997
-F src/test_hexio.c 2ab200d91f77085bd69c721dcb2b649f036d608b
-F src/test_init.c a55015461868ca979d819f8db72aa682ba068185
-F src/test_intarray.c 9fee7f930ff988dd0fc20315da4c762f77f01a78
+F src/test_fs.c ac62ce7d5c0c23aa6932891cad5746945564c91c
+F src/test_func.c 9cea6fee7ece5f46aa26e060b35e10dc6ba708cf
+F src/test_hexio.c 1d4469ca61ab202a1fcec6543f584d2407205e8d
+F src/test_init.c 4413c211a94b62157ca4c145b3f27c497f03c664
+F src/test_intarray.c 988fc61cb0ff539f4172c0d95f15287c92516f64
 F src/test_intarray.h f3b7672f5d1056eac563c0d6ea8480a660b1475c
 F src/test_journal.c d3b83f2bcb7792c709e57abddc456a2b1818643a
 F src/test_loadext.c 337056bae59f80b9eb00ba82088b39d0f4fe6dfd
-F src/test_malloc.c 90cbc63ebab11d16b440d394e77bc26629829f11
-F src/test_multiplex.c a0bcea72bc981f64c9c71edf22cc503cf83e0348
+F src/test_malloc.c c05f6c40bd6c8bfe5f1718212f81fd5687f91766
+F src/test_multiplex.c af2792ec4436d442d1bd00b8803470a25111bad3
 F src/test_multiplex.h 5436d03f2d0501d04f3ed50a75819e190495b635
-F src/test_mutex.c 85021f2ffe67cdb4dfa6089f3f55f5e01cd76aea
+F src/test_mutex.c 7f4337ba23ee6b1d2ec81c189653608cb069926a
 F src/test_onefile.c 416f87a28d6d673352d33fc4b1c7d39db878e50f
-F src/test_osinst.c 4e21c7b2709955f9907b80bfc874afb81ce1b4a7
+F src/test_osinst.c 98ef31ff03d55497829ca0f6c74a9f4e1aa48690
 F src/test_pcache.c a5cd24730cb43c5b18629043314548c9169abb00
-F src/test_quota.c 7c2bb6d302f9cab9d4782b1a37dd01f0c7bde071
+F src/test_quota.c 6cb9297115b551f433a9ad1741817a9831abed99
 F src/test_quota.h 2a8ad1952d1d2ca9af0ce0465e56e6c023b5e15d
-F src/test_rtree.c 0aad72f4854b01957b20c3c325eecd8512e9731d
-F src/test_schema.c ab94aeab8a94486de3d2ce06567b7ee35f3a59b8
+F src/test_rtree.c 671f3fae50ff116ef2e32a3bf1fe21b5615b4b7b
+F src/test_schema.c f575932cb6274d12147a77e13ea4b49d52408513
 F src/test_server.c a2615049954cbb9cfb4a62e18e2f0616e4dc38fe
 F src/test_sqllog.c 0d138a8180a312bf996b37fa66da5c5799d4d57b
-F src/test_superlock.c 9389ee2aa8f8fa7487ea2e3bf01c033c65eaf21a
-F src/test_syscall.c 8313aa5d43989913c2dfd42b987e6ed29d6b8770
-F src/test_tclvar.c 0239df9e83f9adc7b21ae01dce20229dd8592e71
-F src/test_thread.c 30ae6818d21a168ef8cbceb9456411751c714cd9
-F src/test_vfs.c 2edd39d413301baf15c1d7384f21c2e8b3fca2dd
+F src/test_superlock.c 4839644b9201da822f181c5bc406c0b2385f672e
+F src/test_syscall.c 1073306ba2e9bfc886771871a13d3de281ed3939
+F src/test_tclvar.c df9fe1213c2634687a9ca0b0bec0d2119d359ae3
+F src/test_thread.c c7c40494b7a0603ebb6eb97c904545c0dceca5ff
+F src/test_vfs.c f0186261a24de2671d080bcd8050732f0cb64f6e
 F src/test_vfstrace.c bab9594adc976cbe696ff3970728830b4c5ed698
 F src/test_windirent.c 8f5fada630348558d5745b334702f301da1ffc61
 F src/test_windirent.h b12055cab6227f7be10f5c19296f67c60cc5e2a5
@@ -1508,7 +1508,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 478a84efa6ea13629227ba8970c8ef8545d31074
-R 88324b2461565133820c548ccb01cb7e
+P 36b72fd609cf151f3db0e65b450d7cd515f2ac49
+R cb104ece8c53bb381905efecad762caf
 U mistachkin
-Z 92e347019c063e4a6ca0b5b196166511
+Z 5c80ddf3854cd75da2e73aafdf02283f
index 132e64c427ef0d1ab74a043fa266e34b90dafb4d..1a85a325af14f3d608260cfe62847c9d586aaab4 100644 (file)
@@ -1 +1 @@
-36b72fd609cf151f3db0e65b450d7cd515f2ac49
\ No newline at end of file
+f2f1323cc4d2ad2d6794dbfae8d50b747213e85d
\ No newline at end of file
index c5b1eccc039ddae00c1fb060f6cafbc436f912dd..35be76dfb0cadaa3ddedaed62aec65cae4cbdeb6 100644 (file)
 ** asterisks and the comment text.
 */
 
+/*
+** Make sure the Tcl calling convention macro is defined.  This macro is
+** only used by test code and Tcl integration code.
+*/
+#ifndef SQLITE_TCLAPI
+#  define SQLITE_TCLAPI
+#endif
+
 /*
 ** Make sure that rand_s() is available on Windows systems with MSVC 2005
 ** or higher.
index d26c62285913f7f8ea3787673013c7cdf7d9f4f9..527dc488ee689d9f7db8a81e5389fba35c81e4be 100644 (file)
@@ -37,6 +37,9 @@
 # include "sqlite_tcl.h"
 #else
 # include "tcl.h"
+# ifndef SQLITE_TCLAPI
+#  define SQLITE_TCLAPI
+# endif
 #endif
 #include <errno.h>
 
@@ -208,7 +211,10 @@ static void closeIncrblobChannels(SqliteDb *pDb){
 /*
 ** Close an incremental blob channel.
 */
-static int incrblobClose(ClientData instanceData, Tcl_Interp *interp){
+static int SQLITE_TCLAPI incrblobClose(
+  ClientData instanceData,
+  Tcl_Interp *interp
+){
   IncrblobChannel *p = (IncrblobChannel *)instanceData;
   int rc = sqlite3_blob_close(p->pBlob);
   sqlite3 *db = p->pDb->db;
@@ -237,7 +243,7 @@ static int incrblobClose(ClientData instanceData, Tcl_Interp *interp){
 /*
 ** Read data from an incremental blob channel.
 */
-static int incrblobInput(
+static int SQLITE_TCLAPI incrblobInput(
   ClientData instanceData,
   char *buf,
   int bufSize,
@@ -269,7 +275,7 @@ static int incrblobInput(
 /*
 ** Write data to an incremental blob channel.
 */
-static int incrblobOutput(
+static int SQLITE_TCLAPI incrblobOutput(
   ClientData instanceData,
   CONST char *buf,
   int toWrite,
@@ -302,7 +308,7 @@ static int incrblobOutput(
 /*
 ** Seek an incremental blob channel.
 */
-static int incrblobSeek(
+static int SQLITE_TCLAPI incrblobSeek(
   ClientData instanceData,
   long offset,
   int seekMode,
@@ -328,10 +334,17 @@ static int incrblobSeek(
 }
 
 
-static void incrblobWatch(ClientData instanceData, int mode){
+static void SQLITE_TCLAPI incrblobWatch(
+  ClientData instanceData,
+  int mode
+){
   /* NO-OP */
 }
-static int incrblobHandle(ClientData instanceData, int dir, ClientData *hPtr){
+static int SQLITE_TCLAPI incrblobHandle(
+  ClientData instanceData,
+  int dir,
+  ClientData *hPtr
+){
   return TCL_ERROR;
 }
 
@@ -490,7 +503,7 @@ static void flushStmtCache(SqliteDb *pDb){
 ** TCL calls this procedure when an sqlite3 database command is
 ** deleted.
 */
-static void DbDeleteCmd(void *db){
+static void SQLITE_TCLAPI DbDeleteCmd(void *db){
   SqliteDb *pDb = (SqliteDb*)db;
   flushStmtCache(pDb);
   closeIncrblobChannels(pDb);
@@ -1795,7 +1808,12 @@ static void DbHookCmd(
 ** and calls that connection "db1".  The second command causes this
 ** subroutine to be invoked.
 */
-static int DbObjCmd(void *cd, Tcl_Interp *interp, int objc,Tcl_Obj *const*objv){
+static int SQLITE_TCLAPI DbObjCmd(
+  void *cd,
+  Tcl_Interp *interp,
+  int objc,
+  Tcl_Obj *const*objv
+){
   SqliteDb *pDb = (SqliteDb*)cd;
   int choice;
   int rc = TCL_OK;
@@ -3263,7 +3281,12 @@ static int DbObjCmdAdaptor(
 ** The second argument is the name of the database file.
 **
 */
-static int DbMain(void *cd, Tcl_Interp *interp, int objc,Tcl_Obj *const*objv){
+static int SQLITE_TCLAPI DbMain(
+  void *cd,
+  Tcl_Interp *interp,
+  int objc,
+  Tcl_Obj *const*objv
+){
   SqliteDb *p;
   const char *zArg;
   char *zErrMsg;
@@ -3935,7 +3958,7 @@ static const char *tclsh_main_loop(void);
 
 #ifdef SQLITE_TEST
 static void init_all(Tcl_Interp *);
-static int init_all_cmd(
+static int SQLITE_TCLAPI init_all_cmd(
   ClientData cd,
   Tcl_Interp *interp,
   int objc,
@@ -3965,7 +3988,7 @@ static int init_all_cmd(
 **   to use the sqlite3_prepare_v2() function to prepare statements. If it
 **   is false, sqlite3_prepare().
 */
-static int db_use_legacy_prepare_cmd(
+static int SQLITE_TCLAPI db_use_legacy_prepare_cmd(
   ClientData cd,
   Tcl_Interp *interp,
   int objc,
@@ -4002,7 +4025,7 @@ static int db_use_legacy_prepare_cmd(
 **   return the text representation of the most recently used statement
 **   handle.
 */
-static int db_last_stmt_ptr(
+static int SQLITE_TCLAPI db_last_stmt_ptr(
   ClientData cd,
   Tcl_Interp *interp,
   int objc,
index e1b4fc0f31839a65c2abe21c2beb46e017b0f6ee..ec6d8ecff3bcc850bc08c511bc63ee767bc310b8 100644 (file)
@@ -79,7 +79,7 @@ void *sqlite3TestTextToPtr(const char *z){
 ** for an sqlite connection instance.  Bad things happen if the
 ** input is not an sqlite connection.
 */
-static int get_sqlite_pointer(
+static int SQLITE_TCLAPI get_sqlite_pointer(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -225,7 +225,7 @@ static void io_trace_callback(const char *zFormat, ...){
 ** I/O tracing begins going into FILENAME. If FILENAME is an empty
 ** string, I/O tracing is turned off.
 */
-static int test_io_trace(
+static int SQLITE_TCLAPI test_io_trace(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -266,7 +266,7 @@ static int test_io_trace(
 **
 ** Also return true if the OMIT_MISUSE environment variable exists.
 */
-static int clang_sanitize_address(
+static int SQLITE_TCLAPI clang_sanitize_address(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -293,7 +293,7 @@ static int clang_sanitize_address(
 ** DB.  The SQL is the string FORMAT.  The format string should contain
 ** one %s or %q.  STRING is the value inserted into %s or %q.
 */
-static int test_exec_printf(
+static int SQLITE_TCLAPI test_exec_printf(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -331,7 +331,7 @@ static int test_exec_printf(
 ** HEX into ASCII.  Most characters are translated as is.  %HH becomes
 ** a hex character.
 */
-static int test_exec_hex(
+static int SQLITE_TCLAPI test_exec_hex(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -377,7 +377,7 @@ static int test_exec_hex(
 **
 ** Enter or leave the mutex on a database connection.
 */
-static int db_enter(
+static int SQLITE_TCLAPI db_enter(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -393,7 +393,7 @@ static int db_enter(
   sqlite3_mutex_enter(db->mutex);
   return TCL_OK;
 }
-static int db_leave(
+static int SQLITE_TCLAPI db_leave(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -415,7 +415,7 @@ static int db_leave(
 **
 ** Invoke the sqlite3_exec interface using the open database DB
 */
-static int test_exec(
+static int SQLITE_TCLAPI test_exec(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -462,7 +462,7 @@ static int test_exec(
 ** Invoke the sqlite3_exec interface using the open database DB.  Discard
 ** all results
 */
-static int test_exec_nr(
+static int SQLITE_TCLAPI test_exec_nr(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -489,7 +489,7 @@ static int test_exec_nr(
 ** concatenate arg0 through argn using separator as the separator.
 ** Return the result.
 */
-static int test_mprintf_z(
+static int SQLITE_TCLAPI test_mprintf_z(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -512,7 +512,7 @@ static int test_mprintf_z(
 ** Test the %n format of sqlite_mprintf().  Return the length of the
 ** input string.
 */
-static int test_mprintf_n(
+static int SQLITE_TCLAPI test_mprintf_n(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -536,7 +536,7 @@ static int test_mprintf_n(
 ** You pass in a format string that requires more than one argument,
 ** bad things will happen.
 */
-static int test_snprintf_int(
+static int SQLITE_TCLAPI test_snprintf_int(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -562,7 +562,7 @@ static int test_snprintf_int(
 ** DB.  The SQL is the string FORMAT.  The format string should contain
 ** one %s or %q.  STRING is the value inserted into %s or %q.
 */
-static int test_get_table_printf(
+static int SQLITE_TCLAPI test_get_table_printf(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -625,7 +625,7 @@ static int test_get_table_printf(
 **
 ** Returns the integer ROWID of the most recent insert.
 */
-static int test_last_rowid(
+static int SQLITE_TCLAPI test_last_rowid(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -649,7 +649,7 @@ static int test_last_rowid(
 **
 ** Set the codec key.
 */
-static int test_key(
+static int SQLITE_TCLAPI test_key(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -677,7 +677,7 @@ static int test_key(
 **
 ** Change the codec key.
 */
-static int test_rekey(
+static int SQLITE_TCLAPI test_rekey(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -705,7 +705,7 @@ static int test_rekey(
 **
 ** Closes the database opened by sqlite3_open.
 */
-static int sqlite_test_close(
+static int SQLITE_TCLAPI sqlite_test_close(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -729,7 +729,7 @@ static int sqlite_test_close(
 **
 ** Closes the database opened by sqlite3_open.
 */
-static int sqlite_test_close_v2(
+static int SQLITE_TCLAPI sqlite_test_close_v2(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -1013,7 +1013,7 @@ static void nondeterministicFunction(
 ** sqlite3_create_function function while a query is in progress in order
 ** to test the SQLITE_MISUSE detection logic.
 */
-static int test_create_function(
+static int SQLITE_TCLAPI test_create_function(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -1170,7 +1170,7 @@ static void legacyCountFinalize(sqlite3_context *context){
 ** "legacy_count()" with the supplied database handle. This is used
 ** to test the deprecated sqlite3_aggregate_count() API.
 */
-static int test_create_aggregate(
+static int SQLITE_TCLAPI test_create_aggregate(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -1211,7 +1211,7 @@ static int test_create_aggregate(
 ** Puts uses a separate buffer and debugging statements will be out of
 ** sequence if it is used.
 */
-static int test_printf(
+static int SQLITE_TCLAPI test_printf(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -1233,7 +1233,7 @@ static int test_printf(
 **
 ** Call mprintf with three integer arguments
 */
-static int sqlite3_mprintf_int(
+static int SQLITE_TCLAPI sqlite3_mprintf_int(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -1260,7 +1260,7 @@ static int sqlite3_mprintf_int(
 **
 ** Call mprintf with three 64-bit integer arguments
 */
-static int sqlite3_mprintf_int64(
+static int SQLITE_TCLAPI sqlite3_mprintf_int64(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -1293,7 +1293,7 @@ static int sqlite3_mprintf_int64(
 ** same as sqlite3_mprintf_int or sqlite3_mprintf_int64, depending on
 ** platform.
 */
-static int sqlite3_mprintf_long(
+static int SQLITE_TCLAPI sqlite3_mprintf_long(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -1324,7 +1324,7 @@ static int sqlite3_mprintf_long(
 **
 ** Call mprintf with two integer arguments and one string argument
 */
-static int sqlite3_mprintf_str(
+static int SQLITE_TCLAPI sqlite3_mprintf_str(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -1351,7 +1351,7 @@ static int sqlite3_mprintf_str(
 **
 ** Call mprintf with two integer arguments and one string argument
 */
-static int sqlite3_snprintf_str(
+static int SQLITE_TCLAPI sqlite3_snprintf_str(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -1385,7 +1385,7 @@ static int sqlite3_snprintf_str(
 **
 ** Call mprintf with two integer arguments and one double argument
 */
-static int sqlite3_mprintf_double(
+static int SQLITE_TCLAPI sqlite3_mprintf_double(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -1416,7 +1416,7 @@ static int sqlite3_mprintf_double(
 ** two arguments given above.  This is used to generate overflow and underflow
 ** doubles to test that they are converted properly.
 */
-static int sqlite3_mprintf_scaled(
+static int SQLITE_TCLAPI sqlite3_mprintf_scaled(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -1446,7 +1446,7 @@ static int sqlite3_mprintf_scaled(
 ** two arguments given above.  This is used to generate overflow and underflow
 ** doubles to test that they are converted properly.
 */
-static int sqlite3_mprintf_stronly(
+static int SQLITE_TCLAPI sqlite3_mprintf_stronly(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -1470,7 +1470,7 @@ static int sqlite3_mprintf_stronly(
 ** Call mprintf with a single double argument which is derived from the
 ** hexadecimal encoding of an IEEE double.
 */
-static int sqlite3_mprintf_hexdouble(
+static int SQLITE_TCLAPI sqlite3_mprintf_hexdouble(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -1503,7 +1503,7 @@ static int sqlite3_mprintf_hexdouble(
 **
 */
 #if !defined(SQLITE_OMIT_SHARED_CACHE)
-static int test_enable_shared(
+static int SQLITE_TCLAPI test_enable_shared(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -1540,7 +1540,7 @@ static int test_enable_shared(
 ** Usage: sqlite3_extended_result_codes   DB    BOOLEAN
 **
 */
-static int test_extended_result_codes(
+static int SQLITE_TCLAPI test_extended_result_codes(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -1563,7 +1563,7 @@ static int test_extended_result_codes(
 ** Usage: sqlite3_libversion_number
 **
 */
-static int test_libversion_number(
+static int SQLITE_TCLAPI test_libversion_number(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -1577,7 +1577,7 @@ static int test_libversion_number(
 ** Usage: sqlite3_table_column_metadata DB dbname tblname colname
 **
 */
-static int test_table_column_metadata(
+static int SQLITE_TCLAPI test_table_column_metadata(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -1628,7 +1628,7 @@ static int test_table_column_metadata(
 
 #ifndef SQLITE_OMIT_INCRBLOB
 
-static int blobHandleFromObj(
+static int SQLITE_TCLAPI blobHandleFromObj(
   Tcl_Interp *interp, 
   Tcl_Obj *pObj,
   sqlite3_blob **ppBlob
@@ -1657,7 +1657,7 @@ static int blobHandleFromObj(
   return TCL_OK;
 }
 
-static int test_blob_reopen(
+static int SQLITE_TCLAPI test_blob_reopen(
   ClientData clientData, /* Not used */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -1733,7 +1733,7 @@ static int testCreateCollationCmp(
 
   return iRes;
 }
-static int test_create_collation_v2(
+static int SQLITE_TCLAPI test_create_collation_v2(
   ClientData clientData, /* Not used */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -1808,7 +1808,7 @@ static void cf2Destroy(void *pUser){
   if( p->pDestroy ) Tcl_DecrRefCount(p->pDestroy); 
   sqlite3_free(p);
 }
-static int test_create_function_v2(
+static int SQLITE_TCLAPI test_create_function_v2(
   ClientData clientData,          /* Not used */
   Tcl_Interp *interp,             /* The invoking TCL interpreter */
   int objc,                       /* Number of arguments */
@@ -1896,7 +1896,7 @@ static int test_create_function_v2(
 /*
 ** Usage: sqlite3_load_extension DB-HANDLE FILE ?PROC?
 */
-static int test_load_extension(
+static int SQLITE_TCLAPI test_load_extension(
   ClientData clientData, /* Not used */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -1954,7 +1954,7 @@ static int test_load_extension(
 /*
 ** Usage: sqlite3_enable_load_extension DB-HANDLE ONOFF
 */
-static int test_enable_load(
+static int SQLITE_TCLAPI test_enable_load(
   ClientData clientData, /* Not used */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -2000,7 +2000,7 @@ static int test_enable_load(
 ** This command is used to test the recoverability of a database in
 ** the event of a program crash.
 */
-static int sqlite_abort(
+static int SQLITE_TCLAPI sqlite_abort(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -2059,7 +2059,7 @@ error_out:
 **
 ** Register the test SQL function on the database DB under the name NAME.
 */
-static int test_register_func(
+static int SQLITE_TCLAPI test_register_func(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -2088,7 +2088,7 @@ static int test_register_func(
 **
 ** Finalize a statement handle.
 */
-static int test_finalize(
+static int SQLITE_TCLAPI test_finalize(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2120,7 +2120,7 @@ static int test_finalize(
 **
 ** Get the value of a status counter from a statement.
 */
-static int test_stmt_status(
+static int SQLITE_TCLAPI test_stmt_status(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2165,7 +2165,7 @@ static int test_stmt_status(
 /*
 ** Usage:  sqlite3_stmt_scanstatus STMT IDX
 */
-static int test_stmt_scanstatus(
+static int SQLITE_TCLAPI test_stmt_scanstatus(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2215,7 +2215,7 @@ static int test_stmt_scanstatus(
 /*
 ** Usage:  sqlite3_stmt_scanstatus_reset  STMT
 */
-static int test_stmt_scanstatus_reset(
+static int SQLITE_TCLAPI test_stmt_scanstatus_reset(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2238,7 +2238,7 @@ static int test_stmt_scanstatus_reset(
 **
 ** Zero the SQLITE_CONFIG_SQLLOG configuration
 */
-static int test_config_sqllog(
+static int SQLITE_TCLAPI test_config_sqllog(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2258,7 +2258,7 @@ static int test_config_sqllog(
 **
 ** Return the value returned by the default VFS's xCurrentTimeInt64 method.
 */
-static int vfsCurrentTimeInt64(
+static int SQLITE_TCLAPI vfsCurrentTimeInt64(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2279,7 +2279,7 @@ static int vfsCurrentTimeInt64(
 /*
 ** Usage: sqlite3_snapshot_get DB DBNAME
 */
-static int test_snapshot_get(
+static int SQLITE_TCLAPI test_snapshot_get(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2314,7 +2314,7 @@ static int test_snapshot_get(
 /*
 ** Usage: sqlite3_snapshot_open DB DBNAME SNAPSHOT
 */
-static int test_snapshot_open(
+static int SQLITE_TCLAPI test_snapshot_open(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2346,7 +2346,7 @@ static int test_snapshot_open(
 /*
 ** Usage: sqlite3_snapshot_free SNAPSHOT
 */
-static int test_snapshot_free(
+static int SQLITE_TCLAPI test_snapshot_free(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2367,7 +2367,7 @@ static int test_snapshot_free(
 /*
 ** Usage: sqlite3_snapshot_cmp SNAPSHOT1 SNAPSHOT2
 */
-static int test_snapshot_cmp(
+static int SQLITE_TCLAPI test_snapshot_cmp(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2393,7 +2393,7 @@ static int test_snapshot_cmp(
 **
 ** Return the next statment in sequence after STMT.
 */
-static int test_next_stmt(
+static int SQLITE_TCLAPI test_next_stmt(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2425,7 +2425,7 @@ static int test_next_stmt(
 ** Return true if STMT is a NULL pointer or a pointer to a statement
 ** that is guaranteed to leave the database unmodified.
 */
-static int test_stmt_readonly(
+static int SQLITE_TCLAPI test_stmt_readonly(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2452,7 +2452,7 @@ static int test_stmt_readonly(
 ** Return true if STMT is a non-NULL pointer to a statement
 ** that has been stepped but not to completion.
 */
-static int test_stmt_busy(
+static int SQLITE_TCLAPI test_stmt_busy(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2478,7 +2478,7 @@ static int test_stmt_busy(
 **
 ** Return true if STMT uses a statement journal.
 */
-static int uses_stmt_journal(
+static int SQLITE_TCLAPI uses_stmt_journal(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2504,7 +2504,7 @@ static int uses_stmt_journal(
 **
 ** Reset a statement handle.
 */
-static int test_reset(
+static int SQLITE_TCLAPI test_reset(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2539,7 +2539,7 @@ static int test_reset(
 **
 ** Return TRUE if a recompilation of the statement is recommended.
 */
-static int test_expired(
+static int SQLITE_TCLAPI test_expired(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2563,7 +2563,7 @@ static int test_expired(
 **
 ** Transfer all bindings from FROMSTMT over to TOSTMT
 */
-static int test_transfer_bind(
+static int SQLITE_TCLAPI test_transfer_bind(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2590,7 +2590,7 @@ static int test_transfer_bind(
 ** Return the number of changes made to the database by the last SQL
 ** execution.
 */
-static int test_changes(
+static int SQLITE_TCLAPI test_changes(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2625,7 +2625,7 @@ static int sqlite_static_bind_nbyte = 0;
 ** of the VALUE is made.  If FLAGS=="blob10" then a VALUE is ignored
 ** an a 10-byte blob "abc\000xyz\000pq" is inserted.
 */
-static int test_bind(
+static int SQLITE_TCLAPI test_bind(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -2747,7 +2747,7 @@ static int test_collate_func(
   Tcl_GetIntFromObj(i, Tcl_GetObjResult(i), &res);
   return res;
 }
-static int test_collate(
+static int SQLITE_TCLAPI test_collate(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2821,7 +2821,7 @@ static int test_utf16bin_collate_func(
   if( res==0 ) res = nA - nB;
   return res;
 }
-static int test_utf16bin_collate(
+static int SQLITE_TCLAPI test_utf16bin_collate(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2878,7 +2878,7 @@ static void test_collate_needed_cb(
 /*
 ** Usage: add_test_collate_needed DB
 */
-static int test_collate_needed(
+static int SQLITE_TCLAPI test_collate_needed(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -2929,7 +2929,7 @@ static int alignmentCollFunc(
   }
   return rc;
 }
-static int add_alignment_test_collations(
+static int SQLITE_TCLAPI add_alignment_test_collations(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3047,7 +3047,7 @@ static void test_function_utf16be(
   sqlite3ValueFree(pVal);
 }
 #endif /* SQLITE_OMIT_UTF16 */
-static int test_function(
+static int SQLITE_TCLAPI test_function(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3092,7 +3092,7 @@ bad_args:
 ** The result is a list of two elements, the string representation of the
 ** error code and the english language explanation.
 */
-static int test_errstr(
+static int SQLITE_TCLAPI test_errstr(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3125,7 +3125,7 @@ static int test_errstr(
 ** Then run testfixture in the debugger and wait for the breakpoint to
 ** fire.  Then additional breakpoints can be set to trace down the bug.
 */
-static int test_breakpoint(
+static int SQLITE_TCLAPI test_breakpoint(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -3141,7 +3141,7 @@ static int test_breakpoint(
 ** IDX is the index of a wildcard in the prepared statement.  This command
 ** binds a N-byte zero-filled BLOB to the wildcard.
 */
-static int test_bind_zeroblob(
+static int SQLITE_TCLAPI test_bind_zeroblob(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3177,7 +3177,7 @@ static int test_bind_zeroblob(
 ** IDX is the index of a wildcard in the prepared statement.  This command
 ** binds a N-byte zero-filled BLOB to the wildcard.
 */
-static int test_bind_zeroblob64(
+static int SQLITE_TCLAPI test_bind_zeroblob64(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3214,7 +3214,7 @@ static int test_bind_zeroblob64(
 ** N is the index of a wildcard in the prepared statement.  This command
 ** binds a 32-bit integer VALUE to that wildcard.
 */
-static int test_bind_int(
+static int SQLITE_TCLAPI test_bind_int(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3254,7 +3254,7 @@ static int test_bind_int(
 ** with no arguments in order to release memory.  Each call to this procedure
 ** overwrites the previous array.
 */
-static int test_intarray_addr(
+static int SQLITE_TCLAPI test_intarray_addr(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3288,7 +3288,7 @@ static int test_intarray_addr(
 ** with no arguments in order to release memory.  Each call to this procedure
 ** overwrites the previous array.
 */
-static int test_int64array_addr(
+static int SQLITE_TCLAPI test_int64array_addr(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3324,7 +3324,7 @@ static int test_int64array_addr(
 ** with no arguments in order to release memory.  Each call to this procedure
 ** overwrites the previous array.
 */
-static int test_doublearray_addr(
+static int SQLITE_TCLAPI test_doublearray_addr(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3358,7 +3358,7 @@ static int test_doublearray_addr(
 ** with no arguments in order to release memory.  Each call to this procedure
 ** overwrites the previous array.
 */
-static int test_textarray_addr(
+static int SQLITE_TCLAPI test_textarray_addr(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3391,7 +3391,7 @@ static int test_textarray_addr(
 ** N is the index of a wildcard in the prepared statement.  This command
 ** binds a 64-bit integer VALUE to that wildcard.
 */
-static int test_bind_int64(
+static int SQLITE_TCLAPI test_bind_int64(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3429,7 +3429,7 @@ static int test_bind_int64(
 ** N is the index of a wildcard in the prepared statement.  This command
 ** binds a 64-bit integer VALUE to that wildcard.
 */
-static int test_bind_double(
+static int SQLITE_TCLAPI test_bind_double(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3505,7 +3505,7 @@ static int test_bind_double(
 ** N is the index of a wildcard in the prepared statement.  This command
 ** binds a NULL to the wildcard.
 */
-static int test_bind_null(
+static int SQLITE_TCLAPI test_bind_null(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3541,7 +3541,7 @@ static int test_bind_null(
 ** binds a UTF-8 string STRING to the wildcard.  The string is BYTES bytes
 ** long.
 */
-static int test_bind_text(
+static int SQLITE_TCLAPI test_bind_text(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3582,7 +3582,7 @@ static int test_bind_text(
 ** binds a UTF-16 string STRING to the wildcard.  The string is BYTES bytes
 ** long.
 */
-static int test_bind_text16(
+static int SQLITE_TCLAPI test_bind_text16(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3630,7 +3630,7 @@ static int test_bind_text16(
 ** N is the index of a wildcard in the prepared statement.  This command
 ** binds a BLOB to the wildcard.  The BLOB is BYTES bytes in size.
 */
-static int test_bind_blob(
+static int SQLITE_TCLAPI test_bind_blob(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3682,7 +3682,7 @@ static int test_bind_blob(
 **
 ** Return the number of wildcards in the given statement.
 */
-static int test_bind_parameter_count(
+static int SQLITE_TCLAPI test_bind_parameter_count(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3706,7 +3706,7 @@ static int test_bind_parameter_count(
 ** An empty string is returned if N is out of range or if the wildcard
 ** is nameless.
 */
-static int test_bind_parameter_name(
+static int SQLITE_TCLAPI test_bind_parameter_name(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3733,7 +3733,7 @@ static int test_bind_parameter_name(
 ** Return the index of the wildcard called NAME.  Return 0 if there is
 ** no such wildcard.
 */
-static int test_bind_parameter_index(
+static int SQLITE_TCLAPI test_bind_parameter_index(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3758,7 +3758,7 @@ static int test_bind_parameter_index(
 ** Usage:   sqlite3_clear_bindings STMT
 **
 */
-static int test_clear_bindings(
+static int SQLITE_TCLAPI test_clear_bindings(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3778,7 +3778,7 @@ static int test_clear_bindings(
 /*
 ** Usage:   sqlite3_sleep MILLISECONDS
 */
-static int test_sleep(
+static int SQLITE_TCLAPI test_sleep(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3803,7 +3803,7 @@ static int test_sleep(
 ** Return the string representation of the most recent sqlite3_* API
 ** error code. e.g. "SQLITE_ERROR".
 */
-static int test_ex_errcode(
+static int SQLITE_TCLAPI test_ex_errcode(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3830,7 +3830,7 @@ static int test_ex_errcode(
 ** Return the string representation of the most recent sqlite3_* API
 ** error code. e.g. "SQLITE_ERROR".
 */
-static int test_errcode(
+static int SQLITE_TCLAPI test_errcode(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3856,7 +3856,7 @@ static int test_errcode(
 ** Returns the UTF-8 representation of the error message string for the
 ** most recent sqlite3_* API call.
 */
-static int test_errmsg(
+static int SQLITE_TCLAPI test_errmsg(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3885,7 +3885,7 @@ static int test_errmsg(
 ** level, and it includes the 0x00 0x00 terminator bytes at the end of the
 ** UTF-16 string.
 */
-static int test_errmsg16(
+static int SQLITE_TCLAPI test_errmsg16(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3922,7 +3922,7 @@ static int test_errmsg16(
 ** variable that is set to the unused portion of <sql> (if any). A
 ** STMT handle is returned.
 */
-static int test_prepare(
+static int SQLITE_TCLAPI test_prepare(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -3979,7 +3979,7 @@ static int test_prepare(
 ** variable that is set to the unused portion of <sql> (if any). A
 ** STMT handle is returned.
 */
-static int test_prepare_v2(
+static int SQLITE_TCLAPI test_prepare_v2(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4047,7 +4047,7 @@ static int test_prepare_v2(
 ** Generate a prepared statement for a zero-byte string as a test
 ** for ticket #3134.  The string should be preceded by a zero byte.
 */
-static int test_prepare_tkt3134(
+static int SQLITE_TCLAPI test_prepare_tkt3134(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4090,7 +4090,7 @@ static int test_prepare_tkt3134(
 ** variable that is set to the unused portion of <sql> (if any). A
 ** STMT handle is returned.
 */
-static int test_prepare16(
+static int SQLITE_TCLAPI test_prepare16(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4150,7 +4150,7 @@ static int test_prepare16(
 ** variable that is set to the unused portion of <sql> (if any). A
 ** STMT handle is returned.
 */
-static int test_prepare16_v2(
+static int SQLITE_TCLAPI test_prepare16_v2(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4205,7 +4205,7 @@ static int test_prepare16_v2(
 /*
 ** Usage: sqlite3_open filename ?options-list?
 */
-static int test_open(
+static int SQLITE_TCLAPI test_open(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4232,7 +4232,7 @@ static int test_open(
 /*
 ** Usage: sqlite3_open_v2 FILENAME FLAGS VFS
 */
-static int test_open_v2(
+static int SQLITE_TCLAPI test_open_v2(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4302,7 +4302,7 @@ static int test_open_v2(
 /*
 ** Usage: sqlite3_open16 filename options
 */
-static int test_open16(
+static int SQLITE_TCLAPI test_open16(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4334,7 +4334,7 @@ static int test_open16(
 ** Return 1 if the supplied argument is a complete SQL statement, or zero
 ** otherwise.
 */
-static int test_complete16(
+static int SQLITE_TCLAPI test_complete16(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4359,7 +4359,7 @@ static int test_complete16(
 **
 ** Advance the statement to the next row.
 */
-static int test_step(
+static int SQLITE_TCLAPI test_step(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4382,7 +4382,7 @@ static int test_step(
   return TCL_OK;
 }
 
-static int test_sql(
+static int SQLITE_TCLAPI test_sql(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4399,7 +4399,7 @@ static int test_sql(
   Tcl_SetResult(interp, (char *)sqlite3_sql(pStmt), TCL_VOLATILE);
   return TCL_OK;
 }
-static int test_ex_sql(
+static int SQLITE_TCLAPI test_ex_sql(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4425,7 +4425,7 @@ static int test_ex_sql(
 **
 ** Return the number of columns returned by the sql statement STMT.
 */
-static int test_column_count(
+static int SQLITE_TCLAPI test_column_count(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4450,7 +4450,7 @@ static int test_column_count(
 **
 ** Return the type of the data in column 'column' of the current row.
 */
-static int test_column_type(
+static int SQLITE_TCLAPI test_column_type(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4499,7 +4499,7 @@ static int test_column_type(
 ** Return the data in column 'column' of the current row cast as an
 ** wide (64-bit) integer.
 */
-static int test_column_int64(
+static int SQLITE_TCLAPI test_column_int64(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4526,7 +4526,7 @@ static int test_column_int64(
 /*
 ** Usage: sqlite3_column_blob STMT column
 */
-static int test_column_blob(
+static int SQLITE_TCLAPI test_column_blob(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4558,7 +4558,7 @@ static int test_column_blob(
 **
 ** Return the data in column 'column' of the current row cast as a double.
 */
-static int test_column_double(
+static int SQLITE_TCLAPI test_column_double(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4587,7 +4587,7 @@ static int test_column_double(
 **
 ** Return the number of columns returned by the sql statement STMT.
 */
-static int test_data_count(
+static int SQLITE_TCLAPI test_data_count(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4614,7 +4614,7 @@ static int test_data_count(
 **
 ** Usage: sqlite3_column_name STMT column
 */
-static int test_stmt_utf8(
+static int SQLITE_TCLAPI test_stmt_utf8(
   void * clientData,        /* Pointer to SQLite API function to be invoke */
   Tcl_Interp *interp,
   int objc,
@@ -4641,7 +4641,7 @@ static int test_stmt_utf8(
   return TCL_OK;
 }
 
-static int test_global_recover(
+static int SQLITE_TCLAPI test_global_recover(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4666,7 +4666,7 @@ static int test_global_recover(
 **
 ** Usage: sqlite3_column_name STMT column
 */
-static int test_stmt_utf16(
+static int SQLITE_TCLAPI test_stmt_utf16(
   void * clientData,     /* Pointer to SQLite API function to be invoked */
   Tcl_Interp *interp,
   int objc,
@@ -4710,7 +4710,7 @@ static int test_stmt_utf16(
 ** Usage: sqlite3_column_bytes16 STMT column
 **
 */
-static int test_stmt_int(
+static int SQLITE_TCLAPI test_stmt_int(
   void * clientData,    /* Pointer to SQLite API function to be invoked */
   Tcl_Interp *interp,
   int objc,
@@ -4739,7 +4739,7 @@ static int test_stmt_int(
 **
 ** Set the db->magic value.  This is used to test error recovery logic.
 */
-static int sqlite_set_magic(
+static int SQLITE_TCLAPI sqlite_set_magic(
   void * clientData,
   Tcl_Interp *interp,
   int argc,
@@ -4771,7 +4771,7 @@ static int sqlite_set_magic(
 **
 ** Trigger an interrupt on DB
 */
-static int test_interrupt(
+static int SQLITE_TCLAPI test_interrupt(
   void * clientData,
   Tcl_Interp *interp,
   int argc,
@@ -4812,7 +4812,7 @@ u64 sqlite3StackDepth(void){
 **
 ** Try to measure the amount of stack space used by a call to sqlite3_exec
 */
-static int test_stack_used(
+static int SQLITE_TCLAPI test_stack_used(
   void * clientData,
   Tcl_Interp *interp,
   int argc,
@@ -4840,7 +4840,7 @@ static int test_stack_used(
 ** is assumed that the user function was created as UTF8, any number of
 ** arguments (the way the TCL interface does it).
 */
-static int delete_function(
+static int SQLITE_TCLAPI delete_function(
   void * clientData,
   Tcl_Interp *interp,
   int argc,
@@ -4866,7 +4866,7 @@ static int delete_function(
 ** DB. It is assumed that the collation sequence was created as UTF8 (the 
 ** way the TCL interface does it).
 */
-static int delete_collation(
+static int SQLITE_TCLAPI delete_collation(
   void * clientData,
   Tcl_Interp *interp,
   int argc,
@@ -4891,7 +4891,7 @@ static int delete_collation(
 ** Return true if the database DB is currently in auto-commit mode.
 ** Return false if not.
 */
-static int get_autocommit(
+static int SQLITE_TCLAPI get_autocommit(
   void * clientData,
   Tcl_Interp *interp,
   int argc,
@@ -4917,7 +4917,7 @@ static int get_autocommit(
 ** method of the TCL interface.  But we need a way to test the case
 ** where it returns SQLITE_MISUSE.
 */
-static int test_busy_timeout(
+static int SQLITE_TCLAPI test_busy_timeout(
   void * clientData,
   Tcl_Interp *interp,
   int argc,
@@ -4943,7 +4943,7 @@ static int test_busy_timeout(
 ** Return the name of the internal representation for the
 ** value of the given variable.
 */
-static int tcl_variable_type(
+static int SQLITE_TCLAPI tcl_variable_type(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -4969,7 +4969,7 @@ static int tcl_variable_type(
 ** The integer N is the number of bytes we are trying to release.  The 
 ** return value is the amount of memory actually released.
 */
-static int test_release_memory(
+static int SQLITE_TCLAPI test_release_memory(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -5000,7 +5000,7 @@ static int test_release_memory(
 ** Attempt to release memory currently held by database DB.  Return the
 ** result code (which in the current implementation is always zero).
 */
-static int test_db_release_memory(
+static int SQLITE_TCLAPI test_db_release_memory(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -5023,7 +5023,7 @@ static int test_db_release_memory(
 **
 ** Attempt to flush any dirty pages to disk.
 */
-static int test_db_cacheflush(
+static int SQLITE_TCLAPI test_db_cacheflush(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -5051,7 +5051,7 @@ static int test_db_cacheflush(
 **
 ** Return the low-level system errno value.
 */
-static int test_system_errno(
+static int SQLITE_TCLAPI test_system_errno(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -5074,7 +5074,7 @@ static int test_system_errno(
 **
 ** Return the name of a file associated with a database.
 */
-static int test_db_filename(
+static int SQLITE_TCLAPI test_db_filename(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -5098,7 +5098,7 @@ static int test_db_filename(
 ** Return 1 or 0 if DBNAME is readonly or not.  Return -1 if DBNAME does
 ** not exist.
 */
-static int test_db_readonly(
+static int SQLITE_TCLAPI test_db_readonly(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -5123,7 +5123,7 @@ static int test_db_readonly(
 ** limit is only changed if the N is present.  The previous limit
 ** is returned.
 */
-static int test_soft_heap_limit(
+static int SQLITE_TCLAPI test_soft_heap_limit(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -5148,7 +5148,7 @@ static int test_soft_heap_limit(
 **
 ** Call the sqlite3_thread_cleanup API.
 */
-static int test_thread_cleanup(
+static int SQLITE_TCLAPI test_thread_cleanup(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -5166,7 +5166,7 @@ static int test_thread_cleanup(
 ** Return a list of numbers which are the PagerRefcount for all
 ** pagers on each database connection.
 */
-static int test_pager_refcounts(
+static int SQLITE_TCLAPI test_pager_refcounts(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -5212,7 +5212,7 @@ static int test_pager_refcounts(
 ** and that the errors they are seeing in the test scripts might be
 ** a result of their defective TCL rather than problems in SQLite.
 */
-static int working_64bit_int(
+static int SQLITE_TCLAPI working_64bit_int(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5237,7 +5237,7 @@ static int working_64bit_int(
 ** VFS when none are previously registered, and the ability to 
 ** unregister the only available VFS.  Ticket #2738
 */
-static int vfs_unlink_test(
+static int SQLITE_TCLAPI vfs_unlink_test(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5339,7 +5339,7 @@ static int vfs_unlink_test(
 ** This TCL command attempts to vfs_find and vfs_register when the
 ** sqlite3_initialize() interface is failing.  All calls should fail.
 */
-static int vfs_initfail_test(
+static int SQLITE_TCLAPI vfs_initfail_test(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5367,7 +5367,7 @@ static int nVfs = 0;
 **
 ** Unregister all VFSes.
 */
-static int vfs_unregister_all(
+static int SQLITE_TCLAPI vfs_unregister_all(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5389,7 +5389,7 @@ static int vfs_unregister_all(
 ** care to put the linked list back together in the same order as it was
 ** in before vfs_unregister_all was invoked.
 */
-static int vfs_reregister_all(
+static int SQLITE_TCLAPI vfs_reregister_all(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5409,7 +5409,7 @@ static int vfs_reregister_all(
 ** This TCL command runs the sqlite3_file_control interface and
 ** verifies correct operation of the same.
 */
-static int file_control_test(
+static int SQLITE_TCLAPI file_control_test(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5444,7 +5444,7 @@ static int file_control_test(
 ** This TCL command runs the sqlite3_file_control interface and
 ** verifies correct operation of the SQLITE_LAST_ERRNO verb.
 */
-static int file_control_lasterrno_test(
+static int SQLITE_TCLAPI file_control_lasterrno_test(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5482,7 +5482,7 @@ static int file_control_lasterrno_test(
 ** verifies correct operation of the SQLITE_GET_LOCKPROXYFILE and
 ** SQLITE_SET_LOCKPROXYFILE verbs.
 */
-static int file_control_chunksize_test(
+static int SQLITE_TCLAPI file_control_chunksize_test(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5519,7 +5519,7 @@ static int file_control_chunksize_test(
 ** This TCL command runs the sqlite3_file_control interface 
 ** with SQLITE_FCNTL_SIZE_HINT
 */
-static int file_control_sizehint_test(
+static int SQLITE_TCLAPI file_control_sizehint_test(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5557,7 +5557,7 @@ static int file_control_sizehint_test(
 ** verifies correct operation of the SQLITE_GET_LOCKPROXYFILE and
 ** SQLITE_SET_LOCKPROXYFILE verbs.
 */
-static int file_control_lockproxy_test(
+static int SQLITE_TCLAPI file_control_lockproxy_test(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5627,7 +5627,7 @@ static int file_control_lockproxy_test(
 ** This TCL command runs the sqlite3_file_control interface with
 ** the SQLITE_FCNTL_WIN32_AV_RETRY opcode.
 */
-static int file_control_win32_av_retry(
+static int SQLITE_TCLAPI file_control_win32_av_retry(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5660,7 +5660,7 @@ static int file_control_win32_av_retry(
 ** This TCL command runs the sqlite3_file_control interface with
 ** the SQLITE_FCNTL_WIN32_SET_HANDLE opcode.
 */
-static int file_control_win32_set_handle(
+static int SQLITE_TCLAPI file_control_win32_set_handle(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5696,7 +5696,7 @@ static int file_control_win32_set_handle(
 ** This TCL command runs the sqlite3_file_control interface with
 ** the SQLITE_FCNTL_PERSIST_WAL opcode.
 */
-static int file_control_persist_wal(
+static int SQLITE_TCLAPI file_control_persist_wal(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5728,7 +5728,7 @@ static int file_control_persist_wal(
 ** This TCL command runs the sqlite3_file_control interface with
 ** the SQLITE_FCNTL_POWERSAFE_OVERWRITE opcode.
 */
-static int file_control_powersafe_overwrite(
+static int SQLITE_TCLAPI file_control_powersafe_overwrite(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5760,7 +5760,7 @@ static int file_control_powersafe_overwrite(
 **
 ** Return a string that describes the stack of VFSes.
 */
-static int file_control_vfsname(
+static int SQLITE_TCLAPI file_control_vfsname(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5792,7 +5792,7 @@ static int file_control_vfsname(
 **
 ** Return a string that is a temporary filename
 */
-static int file_control_tempfilename(
+static int SQLITE_TCLAPI file_control_tempfilename(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5825,7 +5825,7 @@ static int file_control_tempfilename(
 **
 **   Return a tcl list containing the names of all registered vfs's.
 */
-static int vfs_list(
+static int SQLITE_TCLAPI vfs_list(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5850,7 +5850,7 @@ static int vfs_list(
 ** This TCL command runs the sqlite3_limit interface and
 ** verifies correct operation of the same.
 */
-static int test_limit(
+static int SQLITE_TCLAPI test_limit(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5913,7 +5913,7 @@ static int test_limit(
 ** At the same time, verify that sqlite3_test_control works even when
 ** called with an out-of-range opcode.
 */
-static int save_prng_state(
+static int SQLITE_TCLAPI save_prng_state(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5929,7 +5929,7 @@ static int save_prng_state(
 /*
 ** tclcmd:  restore_prng_state
 */
-static int restore_prng_state(
+static int SQLITE_TCLAPI restore_prng_state(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5941,7 +5941,7 @@ static int restore_prng_state(
 /*
 ** tclcmd:  reset_prng_state
 */
-static int reset_prng_state(
+static int SQLITE_TCLAPI reset_prng_state(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5957,7 +5957,7 @@ static int reset_prng_state(
 ** Indicate that database files might be corrupt.  In other words, set the normal
 ** state of operation.
 */
-static int database_may_be_corrupt(
+static int SQLITE_TCLAPI database_may_be_corrupt(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5972,7 +5972,7 @@ static int database_may_be_corrupt(
 ** Indicate that database files are always well-formed.  This enables extra assert()
 ** statements that test conditions that are always true for well-formed databases.
 */
-static int database_never_corrupt(
+static int SQLITE_TCLAPI database_never_corrupt(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -5985,7 +5985,7 @@ static int database_never_corrupt(
 /*
 ** tclcmd:  pcache_stats
 */
-static int test_pcache_stats(
+static int SQLITE_TCLAPI test_pcache_stats(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -6027,7 +6027,7 @@ static void test_unlock_notify_cb(void **aArg, int nArg){
 ** tclcmd:  sqlite3_unlock_notify db
 */
 #ifdef SQLITE_ENABLE_UNLOCK_NOTIFY
-static int test_unlock_notify(
+static int SQLITE_TCLAPI test_unlock_notify(
   ClientData clientData, /* Unused */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -6053,7 +6053,7 @@ static int test_unlock_notify(
 /*
 ** tclcmd:  sqlite3_wal_checkpoint db ?NAME?
 */
-static int test_wal_checkpoint(
+static int SQLITE_TCLAPI test_wal_checkpoint(
   ClientData clientData, /* Unused */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -6097,7 +6097,7 @@ static int test_wal_checkpoint(
 ** the number of frames in the log and the number of frames in the log
 ** that have been checkpointed.
 */
-static int test_wal_checkpoint_v2(
+static int SQLITE_TCLAPI test_wal_checkpoint_v2(
   ClientData clientData, /* Unused */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -6153,7 +6153,7 @@ static int test_wal_checkpoint_v2(
 /*
 ** tclcmd:  sqlite3_wal_autocheckpoint db VALUE
 */
-static int test_wal_autocheckpoint(
+static int SQLITE_TCLAPI test_wal_autocheckpoint(
   ClientData clientData, /* Unused */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -6204,7 +6204,7 @@ static void xLogcallback(void *unused, int err, char *zMsg){
   Tcl_EvalObjEx(logcallback.pInterp, pNew, TCL_EVAL_GLOBAL|TCL_EVAL_DIRECT);
   Tcl_DecrRefCount(pNew);
 }
-static int test_sqlite3_log(
+static int SQLITE_TCLAPI test_sqlite3_log(
   ClientData clientData,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -6235,7 +6235,7 @@ static int test_sqlite3_log(
 ** Run a TCL command using its objProc interface.  Throw an error if
 ** the command has no objProc interface.
 */
-static int runAsObjProc(
+static int SQLITE_TCLAPI runAsObjProc(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -6298,7 +6298,7 @@ int printExplainQueryPlan(sqlite3_stmt *pStmt){
   return sqlite3_finalize(pExplain);
 }
 
-static int test_print_eqp(
+static int SQLITE_TCLAPI test_print_eqp(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -6326,7 +6326,7 @@ static int test_print_eqp(
 /*
 ** sqlite3_test_control VERB ARGS...
 */
-static int test_test_control(
+static int SQLITE_TCLAPI test_test_control(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -6405,7 +6405,7 @@ static int test_test_control(
 #include <sys/time.h>
 #include <sys/resource.h>
 
-static int test_getrusage(
+static int SQLITE_TCLAPI test_getrusage(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -6479,7 +6479,7 @@ static void SQLITE_CDECL win32_file_locker(void *pAppData){
 ** Get an exclusive manditory lock on file for DELAY2 milliseconds.
 ** Wait DELAY1 milliseconds before acquiring the lock.
 */
-static int win32_file_lock(
+static int SQLITE_TCLAPI win32_file_lock(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -6543,7 +6543,7 @@ static int win32_file_lock(
 ** Returns non-zero if the specified path exists, whose fully qualified name
 ** may exceed 260 characters if it is prefixed with "\\?\".
 */
-static int win32_exists_path(
+static int SQLITE_TCLAPI win32_exists_path(
   void *clientData,
   Tcl_Interp *interp,
   int objc,
@@ -6565,7 +6565,7 @@ static int win32_exists_path(
 ** whose fully qualified name may exceed 248 characters if it is prefixed with
 ** "\\?\".
 */
-static int win32_find_file(
+static int SQLITE_TCLAPI win32_find_file(
   void *clientData,
   Tcl_Interp *interp,
   int objc,
@@ -6610,7 +6610,7 @@ static int win32_find_file(
 ** Deletes the specified file, whose fully qualified name may exceed 260
 ** characters if it is prefixed with "\\?\".
 */
-static int win32_delete_file(
+static int SQLITE_TCLAPI win32_delete_file(
   void *clientData,
   Tcl_Interp *interp,
   int objc,
@@ -6634,7 +6634,7 @@ static int win32_delete_file(
 ** Creates the specified directory, whose fully qualified name may exceed 248
 ** characters if it is prefixed with "\\?\".
 */
-static int win32_mkdir(
+static int SQLITE_TCLAPI win32_mkdir(
   void *clientData,
   Tcl_Interp *interp,
   int objc,
@@ -6658,7 +6658,7 @@ static int win32_mkdir(
 ** Removes the specified directory, whose fully qualified name may exceed 248
 ** characters if it is prefixed with "\\?\".
 */
-static int win32_rmdir(
+static int SQLITE_TCLAPI win32_rmdir(
   void *clientData,
   Tcl_Interp *interp,
   int objc,
@@ -6685,7 +6685,7 @@ static int win32_rmdir(
 ** interface.  Disable if BOOLEAN is false and enable if BOOLEAN is true.
 ** OPT is the name of the optimization to be disabled.
 */
-static int optimization_control(
+static int SQLITE_TCLAPI optimization_control(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -6748,7 +6748,7 @@ typedef struct sqlite3_api_routines sqlite3_api_routines;
 **
 ** Load one or more statically linked extensions.
 */
-static int tclLoadStaticExtensionCmd(
+static int SQLITE_TCLAPI tclLoadStaticExtensionCmd(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -6826,7 +6826,7 @@ static int tclLoadStaticExtensionCmd(
 **     sorter_test_fakeheap BOOL
 **
 */
-static int sorter_test_fakeheap(
+static int SQLITE_TCLAPI sorter_test_fakeheap(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -6866,7 +6866,7 @@ static int sorter_test_fakeheap(
 ** Then execute statement $SQL2. Check that the statement returns the same
 ** set of integers in the same order as in the previous step (using $SQL1).
 */
-static int sorter_test_sort4_helper(
+static int SQLITE_TCLAPI sorter_test_sort4_helper(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -6935,7 +6935,7 @@ static int sorter_test_sort4_helper(
 /*
 ** tclcmd:  sqlite3_user_authenticate DB USERNAME PASSWORD
 */
-static int test_user_authenticate(
+static int SQLITE_TCLAPI test_user_authenticate(
   ClientData clientData, /* Unused */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -6966,7 +6966,7 @@ static int test_user_authenticate(
 /*
 ** tclcmd:  sqlite3_user_add DB USERNAME PASSWORD ISADMIN
 */
-static int test_user_add(
+static int SQLITE_TCLAPI test_user_add(
   ClientData clientData, /* Unused */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -6999,7 +6999,7 @@ static int test_user_add(
 /*
 ** tclcmd:  sqlite3_user_change DB USERNAME PASSWORD ISADMIN
 */
-static int test_user_change(
+static int SQLITE_TCLAPI test_user_change(
   ClientData clientData, /* Unused */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -7032,7 +7032,7 @@ static int test_user_change(
 /*
 ** tclcmd:  sqlite3_user_delete DB USERNAME
 */
-static int test_user_delete(
+static int SQLITE_TCLAPI test_user_delete(
   ClientData clientData, /* Unused */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -7069,7 +7069,7 @@ static int test_user_delete(
 **       3          Read after free
 **       4          Panic
 */
-static int test_bad_behavior(
+static int SQLITE_TCLAPI test_bad_behavior(
   ClientData clientData, /* Pointer to an integer containing zero */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -7119,7 +7119,7 @@ static int test_bad_behavior(
 **
 ** Cause the dbstat virtual table to be available on the connection DB
 */
-static int test_register_dbstat_vtab(
+static int SQLITE_TCLAPI test_register_dbstat_vtab(
   void *clientData,
   Tcl_Interp *interp,
   int objc,
@@ -7153,7 +7153,7 @@ static int test_register_dbstat_vtab(
 **
 ** Invoke sqlite3_db_config() for one of the setting values.
 */
-static int test_sqlite3_db_config(
+static int SQLITE_TCLAPI test_sqlite3_db_config(
   void *clientData,
   Tcl_Interp *interp,
   int objc,
@@ -7210,7 +7210,7 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
   extern int sqlite3_hostid_num;
 #endif
   extern int sqlite3_max_blobsize;
-  extern int sqlite3BtreeSharedCacheReport(void*,
+  extern int SQLITE_TCLAPI sqlite3BtreeSharedCacheReport(void*,
                                           Tcl_Interp*,int,Tcl_Obj*CONST*);
   static int iZero = 0;
   static struct {
index 8946196ff30ad831c1fb9ef6c27f91b7a3414a1b..dfca1d2b31deaceaf5831a40ea491f1a528f38fa 100644 (file)
@@ -42,7 +42,7 @@ static void pager_test_reiniter(DbPage *pNotUsed){
 **
 ** Open a new pager
 */
-static int pager_open(
+static int SQLITE_TCLAPI pager_open(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -79,7 +79,7 @@ static int pager_open(
 **
 ** Close the given pager.
 */
-static int pager_close(
+static int SQLITE_TCLAPI pager_close(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -106,7 +106,7 @@ static int pager_close(
 **
 ** Rollback changes
 */
-static int pager_rollback(
+static int SQLITE_TCLAPI pager_rollback(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -133,7 +133,7 @@ static int pager_rollback(
 **
 ** Commit all changes
 */
-static int pager_commit(
+static int SQLITE_TCLAPI pager_commit(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -165,7 +165,7 @@ static int pager_commit(
 **
 ** Start a new checkpoint.
 */
-static int pager_stmt_begin(
+static int SQLITE_TCLAPI pager_stmt_begin(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -192,7 +192,7 @@ static int pager_stmt_begin(
 **
 ** Rollback changes to a checkpoint
 */
-static int pager_stmt_rollback(
+static int SQLITE_TCLAPI pager_stmt_rollback(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -220,7 +220,7 @@ static int pager_stmt_rollback(
 **
 ** Commit changes to a checkpoint
 */
-static int pager_stmt_commit(
+static int SQLITE_TCLAPI pager_stmt_commit(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -247,7 +247,7 @@ static int pager_stmt_commit(
 **
 ** Return pager statistics.
 */
-static int pager_stats(
+static int SQLITE_TCLAPI pager_stats(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -280,7 +280,7 @@ static int pager_stats(
 **
 ** Return the size of the database file.
 */
-static int pager_pagecount(
+static int SQLITE_TCLAPI pager_pagecount(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -306,7 +306,7 @@ static int pager_pagecount(
 **
 ** Return a pointer to a page from the database.
 */
-static int page_get(
+static int SQLITE_TCLAPI page_get(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -343,7 +343,7 @@ static int page_get(
 ** Return a pointer to a page if the page is already in cache.
 ** If not in cache, return an empty string.
 */
-static int page_lookup(
+static int SQLITE_TCLAPI page_lookup(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -371,7 +371,7 @@ static int page_lookup(
 /*
 ** Usage:   pager_truncate ID PGNO
 */
-static int pager_truncate(
+static int SQLITE_TCLAPI pager_truncate(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -396,7 +396,7 @@ static int pager_truncate(
 **
 ** Drop a pointer to a page.
 */
-static int page_unref(
+static int SQLITE_TCLAPI page_unref(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -418,7 +418,7 @@ static int page_unref(
 **
 ** Return the content of a page
 */
-static int page_read(
+static int SQLITE_TCLAPI page_read(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -442,7 +442,7 @@ static int page_read(
 **
 ** Return the page number for a page.
 */
-static int page_number(
+static int SQLITE_TCLAPI page_number(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -466,7 +466,7 @@ static int page_number(
 **
 ** Write something into a page.
 */
-static int page_write(
+static int SQLITE_TCLAPI page_write(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -502,7 +502,7 @@ static int page_write(
 ** new pages after N.  If N is 2096 or bigger, this will test the
 ** ability of SQLite to write to large files.
 */
-static int fake_big_file(
+static int SQLITE_TCLAPI fake_big_file(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -555,7 +555,7 @@ static int fake_big_file(
 **
 ** Set the PENDING_BYTE using the sqlite3_test_control() interface.
 */
-static int testPendingByte(
+static int SQLITE_TCLAPI testPendingByte(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -620,7 +620,7 @@ static int faultSimCallback(int x){
 ** appended, whenever sqlite3FaultSim() is called.  Or, if SCRIPT is the
 ** empty string, cancel the sqlite3FaultSim() callback.
 */
-static int faultInstallCmd(
+static int SQLITE_TCLAPI faultInstallCmd(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -663,7 +663,7 @@ static int faultInstallCmd(
 ** Invoke the SQLITE_TESTCTRL_BITVEC_TEST operator on test_control.
 ** See comments on sqlite3BitvecBuiltinTest() for additional information.
 */
-static int testBitvecBuiltinTest(
+static int SQLITE_TCLAPI testBitvecBuiltinTest(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
index f1b9f37924e199e86c187a7068f0d14e6c34c120..6995684c29f5650081f94f665403489ae9683c3e 100644 (file)
@@ -37,7 +37,7 @@ static int nRefSqlite3 = 0;
 **
 ** Open a new database
 */
-static int btree_open(
+static int SQLITE_TCLAPI btree_open(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -83,7 +83,7 @@ static int btree_open(
 **
 ** Close the given database.
 */
-static int btree_close(
+static int SQLITE_TCLAPI btree_close(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -118,7 +118,7 @@ static int btree_close(
 **
 ** Start a new transaction
 */
-static int btree_begin_transaction(
+static int SQLITE_TCLAPI btree_begin_transaction(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -147,7 +147,7 @@ static int btree_begin_transaction(
 **
 ** Returns pager statistics
 */
-static int btree_pager_stats(
+static int SQLITE_TCLAPI btree_pager_stats(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -197,7 +197,7 @@ static int btree_pager_stats(
 **
 ** Create a new cursor.  Return the ID for the cursor.
 */
-static int btree_cursor(
+static int SQLITE_TCLAPI btree_cursor(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -246,7 +246,7 @@ static int btree_cursor(
 **
 ** Close a cursor opened using btree_cursor.
 */
-static int btree_close_cursor(
+static int SQLITE_TCLAPI btree_close_cursor(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -283,7 +283,7 @@ static int btree_close_cursor(
 ** or 1 if the cursor was already on the last entry in the table or if
 ** the table is empty.
 */
-static int btree_next(
+static int SQLITE_TCLAPI btree_next(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -318,7 +318,7 @@ static int btree_next(
 ** Move the cursor to the first entry in the table.  Return 0 if the
 ** cursor was left point to something and 1 if the table is empty.
 */
-static int btree_first(
+static int SQLITE_TCLAPI btree_first(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -353,7 +353,7 @@ static int btree_first(
 ** Return TRUE if the given cursor is not pointing at a valid entry.
 ** Return FALSE if the cursor does point to a valid entry.
 */
-static int btree_eof(
+static int SQLITE_TCLAPI btree_eof(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -382,7 +382,7 @@ static int btree_eof(
 **
 ** Return the number of bytes of payload
 */
-static int btree_payload_size(
+static int SQLITE_TCLAPI btree_payload_size(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -420,7 +420,7 @@ static int btree_payload_size(
 ** This command returns nothing if it works.  It returns an error message
 ** if something goes wrong.
 */
-static int btree_varint_test(
+static int SQLITE_TCLAPI btree_varint_test(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -504,7 +504,7 @@ static int btree_varint_test(
 ** sqlite3 db test.db
 ** set bt [btree_from_db db]
 */
-static int btree_from_db(
+static int SQLITE_TCLAPI btree_from_db(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -544,7 +544,7 @@ static int btree_from_db(
 **
 ** Return true if the B-Tree is currently stored entirely in memory.
 */
-static int btree_ismemdb(
+static int SQLITE_TCLAPI btree_ismemdb(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -575,7 +575,7 @@ static int btree_ismemdb(
 **
 ** Set the size of the cache used by btree $ID.
 */
-static int btree_set_cache_size(
+static int SQLITE_TCLAPI btree_set_cache_size(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -605,7 +605,7 @@ static int btree_set_cache_size(
 **
 ** Set the size of the cache used by btree $ID.
 */
-static int btree_insert(
+static int SQLITE_TCLAPI btree_insert(
   ClientData clientData,
   Tcl_Interp *interp,
   int objc,
index 85b521b06091154590b40a3a133fc062aff62201..c5b5ec12cc43d8b43bcf1edd34ca7aa28d9c4db8 100644 (file)
@@ -125,7 +125,7 @@ static int parse_thread_id(Tcl_Interp *interp, const char *zArg){
 ** NAME should be an upper case letter.  Start the thread running with
 ** an open connection to the given database.
 */
-static int tcl_thread_create(
+static int SQLITE_TCLAPI tcl_thread_create(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -174,7 +174,7 @@ static void thread_wait(Thread *p){
 **
 ** Wait on thread ID to reach its idle state.
 */
-static int tcl_thread_wait(
+static int SQLITE_TCLAPI tcl_thread_wait(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -218,7 +218,7 @@ static void stop_thread(Thread *p){
 ** Cause a thread to shut itself down.  Wait for the shutdown to be
 ** completed.  If ID is "*" then stop all threads.
 */
-static int tcl_thread_halt(
+static int SQLITE_TCLAPI tcl_thread_halt(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -253,7 +253,7 @@ static int tcl_thread_halt(
 ** Wait on the most recent thread_step to complete, then return the
 ** number of columns in the result set.
 */
-static int tcl_thread_argc(
+static int SQLITE_TCLAPI tcl_thread_argc(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -285,7 +285,7 @@ static int tcl_thread_argc(
 ** Wait on the most recent thread_step to complete, then return the
 ** value of the N-th columns in the result set.
 */
-static int tcl_thread_argv(
+static int SQLITE_TCLAPI tcl_thread_argv(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -321,7 +321,7 @@ static int tcl_thread_argv(
 ** Wait on the most recent thread_step to complete, then return the
 ** name of the N-th columns in the result set.
 */
-static int tcl_thread_colname(
+static int SQLITE_TCLAPI tcl_thread_colname(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -357,7 +357,7 @@ static int tcl_thread_colname(
 ** Wait on the most recent operation to complete, then return the
 ** result code from that operation.
 */
-static int tcl_thread_result(
+static int SQLITE_TCLAPI tcl_thread_result(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -389,7 +389,7 @@ static int tcl_thread_result(
 ** Wait on the most recent operation to complete, then return the
 ** error string.
 */
-static int tcl_thread_error(
+static int SQLITE_TCLAPI tcl_thread_error(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -434,7 +434,7 @@ static void do_compile(Thread *p){
 **
 ** Compile a new virtual machine.
 */
-static int tcl_thread_compile(
+static int SQLITE_TCLAPI tcl_thread_compile(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -487,7 +487,7 @@ static void do_step(Thread *p){
 **
 ** Advance the virtual machine by one step
 */
-static int tcl_thread_step(
+static int SQLITE_TCLAPI tcl_thread_step(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -529,7 +529,7 @@ static void do_finalize(Thread *p){
 **
 ** Finalize the virtual machine.
 */
-static int tcl_thread_finalize(
+static int SQLITE_TCLAPI tcl_thread_finalize(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -560,7 +560,7 @@ static int tcl_thread_finalize(
 **
 ** Interchange the sqlite* pointer between two threads.
 */
-static int tcl_thread_swap(
+static int SQLITE_TCLAPI tcl_thread_swap(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -600,7 +600,7 @@ static int tcl_thread_swap(
 ** remove the pointer from the thread itself.  Afterwards, the thread
 ** can be stopped and the connection can be used by the main thread.
 */
-static int tcl_thread_db_get(
+static int SQLITE_TCLAPI tcl_thread_db_get(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -631,7 +631,7 @@ static int tcl_thread_db_get(
 ** Usage: thread_db_put ID DB
 **
 */
-static int tcl_thread_db_put(
+static int SQLITE_TCLAPI tcl_thread_db_put(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -663,7 +663,7 @@ static int tcl_thread_db_put(
 ** Return the database stmt pointer for the given thread.  Then
 ** remove the pointer from the thread itself. 
 */
-static int tcl_thread_stmt_get(
+static int SQLITE_TCLAPI tcl_thread_stmt_get(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
index 2b49e408b666c7eb0fbd097866cbc52384d12103..0d9242862bc697696b576ccde96811dba7bd8fd8 100644 (file)
@@ -30,7 +30,7 @@
 ** object with the encoded representation of the string, including
 ** the NULL terminator.
 */
-static int binarize(
+static int SQLITE_TCLAPI binarize(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -58,7 +58,7 @@ static int binarize(
 ** If <do-calls> is 0, then the calls to sqlite3_value_text() are not
 ** actually made.
 */
-static int test_value_overhead(
+static int SQLITE_TCLAPI test_value_overhead(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -122,7 +122,7 @@ static u8 name_to_enc(Tcl_Interp *interp, Tcl_Obj *pObj){
 ** Usage:   test_translate <string/blob> <from enc> <to enc> ?<transient>?
 **
 */
-static int test_translate(
+static int SQLITE_TCLAPI test_translate(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -186,7 +186,7 @@ static int test_translate(
 ** translation. If there is a problem an assert() will fail.
 **/
 void sqlite3UtfSelfTest(void);
-static int test_translate_selftest(
+static int SQLITE_TCLAPI test_translate_selftest(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
index e6eabf996a31e6d7b4de36779bca91a694b02bf5..5304bcc31f20b012501aa544ffe6a618a1c12671 100644 (file)
@@ -811,7 +811,7 @@ static int processDevSymArgs(
 ** Simulate a crash immediately. This function does not return 
 ** (writeListSync() calls exit(-1)).
 */
-static int crashNowCmd(
+static int SQLITE_TCLAPI crashNowCmd(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -832,7 +832,7 @@ static int crashNowCmd(
 ** Parameter ENABLE must be a boolean value. If true, then the "crash"
 ** vfs is added to the system. If false, it is removed.
 */
-static int crashEnableCmd(
+static int SQLITE_TCLAPI crashEnableCmd(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -907,7 +907,7 @@ static int crashEnableCmd(
 **   sqlite_crashparams -sect 1024 -char {atomic sequential} ./test.db 1
 **
 */
-static int crashParamsObjCmd(
+static int SQLITE_TCLAPI crashParamsObjCmd(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -954,7 +954,7 @@ error:
   return TCL_ERROR;
 }
 
-static int devSymObjCmd(
+static int SQLITE_TCLAPI devSymObjCmd(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -977,7 +977,7 @@ static int devSymObjCmd(
 /*
 ** tclcmd: unregister_devsim
 */
-static int dsUnregisterObjCmd(
+static int SQLITE_TCLAPI dsUnregisterObjCmd(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -997,7 +997,7 @@ static int dsUnregisterObjCmd(
 /*
 ** tclcmd: register_jt_vfs ?-default? PARENT-VFS
 */
-static int jtObjCmd(
+static int SQLITE_TCLAPI jtObjCmd(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1035,7 +1035,7 @@ static int jtObjCmd(
 /*
 ** tclcmd: unregister_jt_vfs
 */
-static int jtUnregisterObjCmd(
+static int SQLITE_TCLAPI jtUnregisterObjCmd(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
index d3b789e9675768ba233ae8b0f2f9229778d48ddc..d57e4b826b843b0a4ea8c5ab5442e8c031f6d7af 100644 (file)
@@ -153,7 +153,7 @@ static int parse_client_id(Tcl_Interp *interp, const char *zArg){
 ** NAME should be an upper case letter.  Start the thread running with
 ** an open connection to the given database.
 */
-static int tcl_client_create(
+static int SQLITE_TCLAPI tcl_client_create(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -206,7 +206,7 @@ static void client_wait(Thread *p){
 **
 ** Wait on thread ID to reach its idle state.
 */
-static int tcl_client_wait(
+static int SQLITE_TCLAPI tcl_client_wait(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -250,7 +250,7 @@ static void stop_thread(Thread *p){
 ** Cause a client thread to shut itself down.  Wait for the shutdown to be
 ** completed.  If ID is "*" then stop all client threads.
 */
-static int tcl_client_halt(
+static int SQLITE_TCLAPI tcl_client_halt(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -298,7 +298,7 @@ static int tcl_client_halt(
 ** Wait on the most recent client_step to complete, then return the
 ** number of columns in the result set.
 */
-static int tcl_client_argc(
+static int SQLITE_TCLAPI tcl_client_argc(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -330,7 +330,7 @@ static int tcl_client_argc(
 ** Wait on the most recent client_step to complete, then return the
 ** value of the N-th columns in the result set.
 */
-static int tcl_client_argv(
+static int SQLITE_TCLAPI tcl_client_argv(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -366,7 +366,7 @@ static int tcl_client_argv(
 ** Wait on the most recent client_step to complete, then return the
 ** name of the N-th columns in the result set.
 */
-static int tcl_client_colname(
+static int SQLITE_TCLAPI tcl_client_colname(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -404,7 +404,7 @@ extern const char *sqlite3ErrName(int);
 ** Wait on the most recent operation to complete, then return the
 ** result code from that operation.
 */
-static int tcl_client_result(
+static int SQLITE_TCLAPI tcl_client_result(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -436,7 +436,7 @@ static int tcl_client_result(
 ** Wait on the most recent operation to complete, then return the
 ** error string.
 */
-static int tcl_client_error(
+static int SQLITE_TCLAPI tcl_client_error(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -481,7 +481,7 @@ static void do_compile(Thread *p){
 **
 ** Compile a new virtual machine.
 */
-static int tcl_client_compile(
+static int SQLITE_TCLAPI tcl_client_compile(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -534,7 +534,7 @@ static void do_step(Thread *p){
 **
 ** Advance the virtual machine by one step
 */
-static int tcl_client_step(
+static int SQLITE_TCLAPI tcl_client_step(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -576,7 +576,7 @@ static void do_finalize(Thread *p){
 **
 ** Finalize the virtual machine.
 */
-static int tcl_client_finalize(
+static int SQLITE_TCLAPI tcl_client_finalize(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -620,7 +620,7 @@ static void do_reset(Thread *p){
 **
 ** Finalize the virtual machine.
 */
-static int tcl_client_reset(
+static int SQLITE_TCLAPI tcl_client_reset(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
@@ -651,7 +651,7 @@ static int tcl_client_reset(
 **
 ** Interchange the sqlite* pointer between two threads.
 */
-static int tcl_client_swap(
+static int SQLITE_TCLAPI tcl_client_swap(
   void *NotUsed,
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int argc,              /* Number of arguments */
index e635d5ed2c80d1b7987a916f6af8b91e79375bc6..daab504e4ea683a917f2abb6da262dea5237830f 100644 (file)
@@ -1357,7 +1357,7 @@ static void moduleDestroy(void *p){
 /*
 ** Register the echo virtual table module.
 */
-static int register_echo_module(
+static int SQLITE_TCLAPI register_echo_module(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -1397,7 +1397,7 @@ static int register_echo_module(
 **
 ** sqlite3_declare_vtab DB SQL
 */
-static int declare_vtab(
+static int SQLITE_TCLAPI declare_vtab(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
index 3c3629c0a75ea1f5b5043c0f9fc3097513a60277..5b139e8a56fc831773c1eee10b7b4433d092a22e 100644 (file)
@@ -26,7 +26,7 @@
 /*
 ** c_collation_test
 */
-static int c_collation_test(
+static int SQLITE_TCLAPI c_collation_test(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -67,7 +67,7 @@ error_out:
 /*
 ** c_realloc_test
 */
-static int c_realloc_test(
+static int SQLITE_TCLAPI c_realloc_test(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -108,7 +108,7 @@ error_out:
 /*
 ** c_misuse_test
 */
-static int c_misuse_test(
+static int SQLITE_TCLAPI c_misuse_test(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
index 8389e75dbded91bffe36ccb757a1bdc25fd3cdcd..c32c74c6608142d36e6a7d323b56877983eff301 100644 (file)
@@ -19,6 +19,9 @@
 #  include "sqlite_tcl.h"
 #else
 #  include "tcl.h"
+#  ifndef SQLITE_TCLAPI
+#    define SQLITE_TCLAPI
+#  endif
 #endif
 
 #ifdef SQLITE_ENABLE_ASYNCIO
@@ -40,7 +43,7 @@ TCL_DECLARE_MUTEX(testasync_g_writerMutex);
 /*
 ** sqlite3async_initialize PARENT-VFS ISDEFAULT
 */
-static int testAsyncInit(
+static int SQLITE_TCLAPI testAsyncInit(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -73,7 +76,7 @@ static int testAsyncInit(
 /*
 ** sqlite3async_shutdown
 */
-static int testAsyncShutdown(
+static int SQLITE_TCLAPI testAsyncShutdown(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -97,7 +100,7 @@ static Tcl_ThreadCreateType tclWriterThread(ClientData pIsStarted){
 **
 ** Start a new writer thread.
 */
-static int testAsyncStart(
+static int SQLITE_TCLAPI testAsyncStart(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -129,7 +132,7 @@ static int testAsyncStart(
 ** If the current writer thread is set to run forever then this
 ** command would block forever.  To prevent that, an error is returned. 
 */
-static int testAsyncWait(
+static int SQLITE_TCLAPI testAsyncWait(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -155,7 +158,7 @@ static int testAsyncWait(
 /*
 ** sqlite3async_control OPTION ?VALUE?
 */
-static int testAsyncControl(
+static int SQLITE_TCLAPI testAsyncControl(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
index b536cd732175e4effbe82606c94cf2849f4138a5..94a3223e659ac115d274efd2e4d4417178eecc57 100644 (file)
@@ -15,6 +15,9 @@
 #  include "sqlite_tcl.h"
 #else
 #  include "tcl.h"
+#  ifndef SQLITE_TCLAPI
+#    define SQLITE_TCLAPI
+#  endif
 #endif
 #include "sqlite3ext.h"
 
@@ -91,7 +94,7 @@ static int broken_init(
 **
 ** Register the "sqr" extension to be loaded automatically.
 */
-static int autoExtSqrObjCmd(
+static int SQLITE_TCLAPI autoExtSqrObjCmd(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -107,7 +110,7 @@ static int autoExtSqrObjCmd(
 **
 ** Unregister the "sqr" extension.
 */
-static int cancelAutoExtSqrObjCmd(
+static int SQLITE_TCLAPI cancelAutoExtSqrObjCmd(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -123,7 +126,7 @@ static int cancelAutoExtSqrObjCmd(
 **
 ** Register the "cube" extension to be loaded automatically.
 */
-static int autoExtCubeObjCmd(
+static int SQLITE_TCLAPI autoExtCubeObjCmd(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -139,7 +142,7 @@ static int autoExtCubeObjCmd(
 **
 ** Unregister the "cube" extension.
 */
-static int cancelAutoExtCubeObjCmd(
+static int SQLITE_TCLAPI cancelAutoExtCubeObjCmd(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -155,7 +158,7 @@ static int cancelAutoExtCubeObjCmd(
 **
 ** Register the broken extension to be loaded automatically.
 */
-static int autoExtBrokenObjCmd(
+static int SQLITE_TCLAPI autoExtBrokenObjCmd(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -171,7 +174,7 @@ static int autoExtBrokenObjCmd(
 **
 ** Unregister the broken extension.
 */
-static int cancelAutoExtBrokenObjCmd(
+static int SQLITE_TCLAPI cancelAutoExtBrokenObjCmd(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -190,7 +193,7 @@ static int cancelAutoExtBrokenObjCmd(
 **
 ** Reset all auto-extensions
 */
-static int resetAutoExtObjCmd(
+static int SQLITE_TCLAPI resetAutoExtObjCmd(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
index 3e91f1f219ca6e79badfb37bc59e23003d3977f8..9b684a28f6b3fe275b291116cc1c78918aff492e 100644 (file)
@@ -17,6 +17,9 @@
 #  include "sqlite_tcl.h"
 #else
 #  include "tcl.h"
+#  ifndef SQLITE_TCLAPI
+#    define SQLITE_TCLAPI
+#  endif
 #endif
 #include "sqlite3.h"
 #include <assert.h>
@@ -27,7 +30,7 @@ extern const char *sqlite3ErrName(int);
 /* These functions are implemented in test1.c. */
 extern int getDbPointer(Tcl_Interp *, const char *, sqlite3 **);
 
-static int backupTestCmd(
+static int SQLITE_TCLAPI backupTestCmd(
   ClientData clientData, 
   Tcl_Interp *interp, 
   int objc,
@@ -102,7 +105,7 @@ static int backupTestCmd(
   return TCL_OK;
 }
 
-static void backupTestFinish(ClientData clientData){
+static void SQLITE_TCLAPI backupTestFinish(ClientData clientData){
   sqlite3_backup *pBackup = (sqlite3_backup *)clientData;
   sqlite3_backup_finish(pBackup);
 }
@@ -111,7 +114,7 @@ static void backupTestFinish(ClientData clientData){
 **     sqlite3_backup CMDNAME DESTHANDLE DESTNAME SRCHANDLE SRCNAME
 **
 */
-static int backupTestInit(
+static int SQLITE_TCLAPI backupTestInit(
   ClientData clientData, 
   Tcl_Interp *interp, 
   int objc,
index 8e0ff00b52de28fa9cb7a616e004b337079c76a7..94017f0349fbb03fff781e42ceecc77c8159e769 100644 (file)
@@ -567,7 +567,7 @@ extern int getDbPointer(Tcl_Interp *interp, const char *zA, sqlite3 **ppDb);
 /*
 ** Register the echo virtual table module.
 */
-static int register_tcl_module(
+static int SQLITE_TCLAPI register_tcl_module(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
index 703664190b68259dabbfa4e089268d809940d04c..3ac6c11421bbc3537568483e9e46d45283aafd78 100644 (file)
@@ -99,7 +99,7 @@ static char *blobStringFromObj(Tcl_Obj *pObj){
 **
 ** Tcl test harness for the sqlite3_blob_open() function.
 */
-static int test_blob_open(
+static int SQLITE_TCLAPI test_blob_open(
   ClientData clientData,          /* Not used */
   Tcl_Interp *interp,             /* Calling TCL interpreter */
   int objc,                       /* Number of arguments */
@@ -150,7 +150,7 @@ static int test_blob_open(
 /*
 ** sqlite3_blob_close  HANDLE
 */
-static int test_blob_close(
+static int SQLITE_TCLAPI test_blob_close(
   ClientData clientData, /* Not used */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -178,7 +178,7 @@ static int test_blob_close(
 /*
 ** sqlite3_blob_bytes  HANDLE
 */
-static int test_blob_bytes(
+static int SQLITE_TCLAPI test_blob_bytes(
   ClientData clientData, /* Not used */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -214,7 +214,7 @@ static int test_blob_bytes(
 **   text representation of the returned error code (i.e. "SQLITE_NOMEM")
 **   and a Tcl exception is thrown.
 */
-static int test_blob_read(
+static int SQLITE_TCLAPI test_blob_read(
   ClientData clientData, /* Not used */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -266,7 +266,7 @@ static int test_blob_read(
 **   result is set to the text representation of the returned error code 
 **   (i.e. "SQLITE_NOMEM") and a Tcl exception is thrown.
 */
-static int test_blob_write(
+static int SQLITE_TCLAPI test_blob_write(
   ClientData clientData, /* Not used */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
index 46860afb30bd86efcb964adefc847cb8f309ea87..03b8b207c9834268bf685662f4857f3a04eb5960 100644 (file)
@@ -26,7 +26,7 @@
 ** Return a list of file that are shared and the number of
 ** references to each file.
 */
-int sqlite3BtreeSharedCacheReport(
+int SQLITE_TCLAPI sqlite3BtreeSharedCacheReport(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
index 9cc0eb030959d399297db9c3bf732ec102fa18f5..ba7af863cde9de3a47b0240833b836b2365b145a 100644 (file)
@@ -645,10 +645,13 @@ sqlite3_vfs *sqlite3_demovfs(void){
 #  include "sqlite_tcl.h"
 #else
 #  include "tcl.h"
+#  ifndef SQLITE_TCLAPI
+#    define SQLITE_TCLAPI
+#  endif
 #endif
 
 #if SQLITE_OS_UNIX
-static int register_demovfs(
+static int SQLITE_TCLAPI register_demovfs(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -657,7 +660,7 @@ static int register_demovfs(
   sqlite3_vfs_register(sqlite3_demovfs(), 1);
   return TCL_OK;
 }
-static int unregister_demovfs(
+static int SQLITE_TCLAPI unregister_demovfs(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
index 329594a5ab541161a7b3630a9f90f2c48dcf0e40..87088bdae738b827f153a9c4339c43e72296d754 100644 (file)
@@ -875,7 +875,7 @@ extern int getDbPointer(Tcl_Interp *interp, const char *zA, sqlite3 **ppDb);
 /*
 ** Register the echo virtual table module.
 */
-static int register_fs_module(
+static int SQLITE_TCLAPI register_fs_module(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
index 08ea98fb7accf8d8ccf061bc90b4dac6b79470bb..6a714ef3ebbbbf7c73b9935ee72e472417a21c9d 100644 (file)
@@ -693,7 +693,7 @@ static int registerTestFunctions(sqlite3 *db){
 ** the standard set of test functions to be loaded into each new
 ** database connection.
 */
-static int autoinstall_test_funcs(
+static int SQLITE_TCLAPI autoinstall_test_funcs(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -721,7 +721,7 @@ static void tFinal(sqlite3_context *a){}
 ** Make various calls to sqlite3_create_function that do not have valid
 ** parameters.  Verify that the error condition is detected and reported.
 */
-static int abuse_create_function(
+static int SQLITE_TCLAPI abuse_create_function(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
index 88f5ed7bfacdb1f51484b6ca4ff6e3efd0f34dab..7b62ea08bc870a38c02cc4b1b24511b380b81509 100644 (file)
@@ -98,7 +98,7 @@ int sqlite3TestHexToBin(const unsigned char *zIn, int N, unsigned char *aOut){
 ** beginning of the file.  Convert that information to hexadecimal
 ** and return the resulting HEX string.
 */
-static int hexio_read(
+static int SQLITE_TCLAPI hexio_read(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -148,7 +148,7 @@ static int hexio_read(
 ** Write DATA into file FILENAME beginning at OFFSET from the
 ** beginning of the file.  DATA is expressed in hexadecimal.
 */
-static int hexio_write(
+static int SQLITE_TCLAPI hexio_write(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -196,7 +196,7 @@ static int hexio_write(
 ** the value of that integer.  HEXDATA can contain between 2 and 8
 ** hexadecimal digits.
 */
-static int hexio_get_int(
+static int SQLITE_TCLAPI hexio_get_int(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -236,7 +236,7 @@ static int hexio_get_int(
 **
 ** Render INTEGER has a 16-bit big-endian integer in hexadecimal.
 */
-static int hexio_render_int16(
+static int SQLITE_TCLAPI hexio_render_int16(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -263,7 +263,7 @@ static int hexio_render_int16(
 **
 ** Render INTEGER has a 32-bit big-endian integer in hexadecimal.
 */
-static int hexio_render_int32(
+static int SQLITE_TCLAPI hexio_render_int32(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -293,7 +293,7 @@ static int hexio_render_int32(
 ** The UTF8 might not be well-formed.  Run this string through
 ** sqlite3Utf8to8() convert it back to hex and return the result.
 */
-static int utf8_to_utf8(
+static int SQLITE_TCLAPI utf8_to_utf8(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -344,7 +344,7 @@ static int getFts3Varint(const char *p, sqlite_int64 *v){
 ** Read a varint from the start of BLOB. Set variable VARNAME to contain
 ** the interpreted value. Return the number of bytes of BLOB consumed.
 */
-static int read_fts3varint(
+static int SQLITE_TCLAPI read_fts3varint(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
index c66b5785d0b05871c862160b9ca0caa336c1fe14..58465785d8233c89673774e513d00d6e13899c4e 100644 (file)
@@ -188,7 +188,7 @@ static void installInitWrappers(void){
   sqlite3_config(SQLITE_CONFIG_PCACHE2, &pcachemethods);
 }
 
-static int init_wrapper_install(
+static int SQLITE_TCLAPI init_wrapper_install(
   ClientData clientData, /* Unused */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -212,7 +212,7 @@ static int init_wrapper_install(
   return TCL_OK;
 }
 
-static int init_wrapper_uninstall(
+static int SQLITE_TCLAPI init_wrapper_uninstall(
   ClientData clientData, /* Unused */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -230,7 +230,7 @@ static int init_wrapper_uninstall(
   return TCL_OK;
 }
 
-static int init_wrapper_clear(
+static int SQLITE_TCLAPI init_wrapper_clear(
   ClientData clientData, /* Unused */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -247,7 +247,7 @@ static int init_wrapper_clear(
   return TCL_OK;
 }
 
-static int init_wrapper_query(
+static int SQLITE_TCLAPI init_wrapper_query(
   ClientData clientData, /* Unused */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
index c27b4597c07806028f3ed578784a77e7f23ede03..ddfb13fe20b025195438c7af2dd9d4103795ba7b 100644 (file)
@@ -274,6 +274,9 @@ SQLITE_API int sqlite3_intarray_bind(
 #  include "sqlite_tcl.h"
 #else
 #  include "tcl.h"
+#  ifndef SQLITE_TCLAPI
+#    define SQLITE_TCLAPI
+#  endif
 #endif
 
 /*
@@ -290,7 +293,7 @@ extern const char *sqlite3ErrName(int);
 ** Invoke the sqlite3_intarray_create interface.  A string that becomes
 ** the first parameter to sqlite3_intarray_bind.
 */
-static int test_intarray_create(
+static int SQLITE_TCLAPI test_intarray_create(
   ClientData clientData, /* Not used */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
@@ -326,7 +329,7 @@ static int test_intarray_create(
 **
 ** Invoke the sqlite3_intarray_bind interface on the given array of integers.
 */
-static int test_intarray_bind(
+static int SQLITE_TCLAPI test_intarray_bind(
   ClientData clientData, /* Not used */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
index 66d8a881ba68d3d8b84564fd0bdf74b39774cd05..e8c248f958ffbe5bfb1162e74276498bc0fe9815 100644 (file)
@@ -310,7 +310,7 @@ static int textToPointer(const char *z, void **pp){
 **
 ** Raw test interface for sqlite3_malloc().
 */
-static int test_malloc(
+static int SQLITE_TCLAPI test_malloc(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -335,7 +335,7 @@ static int test_malloc(
 **
 ** Raw test interface for sqlite3_realloc().
 */
-static int test_realloc(
+static int SQLITE_TCLAPI test_realloc(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -364,7 +364,7 @@ static int test_realloc(
 **
 ** Raw test interface for sqlite3_free().
 */
-static int test_free(
+static int SQLITE_TCLAPI test_free(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -395,7 +395,7 @@ int sqlite3TestBinToHex(char*,int);
 ** Set a chunk of memory (obtained from malloc, probably) to a
 ** specified hex pattern.
 */
-static int test_memset(
+static int SQLITE_TCLAPI test_memset(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -441,7 +441,7 @@ static int test_memset(
 **
 ** Return memory as hexadecimal text.
 */
-static int test_memget(
+static int SQLITE_TCLAPI test_memget(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -488,7 +488,7 @@ static int test_memget(
 **
 ** Raw test interface for sqlite3_memory_used().
 */
-static int test_memory_used(
+static int SQLITE_TCLAPI test_memory_used(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -503,7 +503,7 @@ static int test_memory_used(
 **
 ** Raw test interface for sqlite3_memory_highwater().
 */
-static int test_memory_highwater(
+static int SQLITE_TCLAPI test_memory_highwater(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -528,7 +528,7 @@ static int test_memory_highwater(
 ** Set the depth of backtracing.  If SQLITE_MEMDEBUG is not defined
 ** then this routine is a no-op.
 */
-static int test_memdebug_backtrace(
+static int SQLITE_TCLAPI test_memdebug_backtrace(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -554,7 +554,7 @@ static int test_memdebug_backtrace(
 **
 ** Write a summary of unfreed memory to FILENAME.
 */
-static int test_memdebug_dump(
+static int SQLITE_TCLAPI test_memdebug_dump(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -579,7 +579,7 @@ static int test_memdebug_dump(
 **
 ** Return the total number of times malloc() has been called.
 */
-static int test_memdebug_malloc_count(
+static int SQLITE_TCLAPI test_memdebug_malloc_count(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -619,7 +619,7 @@ static int test_memdebug_malloc_count(
 **
 ** To disable simulated failures, use a COUNTER of -1.
 */
-static int test_memdebug_fail(
+static int SQLITE_TCLAPI test_memdebug_fail(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -685,7 +685,7 @@ static int test_memdebug_fail(
 ** simulated failure occurs. A negative return value indicates that
 ** no malloc() failure is scheduled.
 */
-static int test_memdebug_pending(
+static int SQLITE_TCLAPI test_memdebug_pending(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -718,7 +718,7 @@ static int sqlite3_memdebug_title_count = 0;
 **
 ** Each title overwrite the previous.
 */
-static int test_memdebug_settitle(
+static int SQLITE_TCLAPI test_memdebug_settitle(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -799,7 +799,7 @@ static void test_memdebug_log_clear(void){
   Tcl_InitHashTable(&aMallocLog, MALLOC_LOG_KEYINTS);
 }
 
-static int test_memdebug_log(
+static int SQLITE_TCLAPI test_memdebug_log(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -897,7 +897,7 @@ static int test_memdebug_log(
 **
 ** A negative SIZE causes the buffer pointer to be NULL.
 */
-static int test_config_scratch(
+static int SQLITE_TCLAPI test_config_scratch(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -937,7 +937,7 @@ static int test_config_scratch(
 **
 ** A negative SIZE causes the buffer pointer to be NULL.
 */
-static int test_config_pagecache(
+static int SQLITE_TCLAPI test_config_pagecache(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -980,7 +980,7 @@ static int test_config_pagecache(
 ** is certainty.  0 is never.  PRNG_SEED is the pseudo-random number generator
 ** seed.
 */
-static int test_alt_pcache(
+static int SQLITE_TCLAPI test_alt_pcache(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1021,7 +1021,7 @@ static int test_alt_pcache(
 **
 ** Enable or disable memory status reporting using SQLITE_CONFIG_MEMSTATUS.
 */
-static int test_config_memstatus(
+static int SQLITE_TCLAPI test_config_memstatus(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1042,7 +1042,7 @@ static int test_config_memstatus(
 ** Usage:    sqlite3_config_lookaside  SIZE  COUNT
 **
 */
-static int test_config_lookaside(
+static int SQLITE_TCLAPI test_config_lookaside(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1076,7 +1076,7 @@ static int test_config_lookaside(
 ** is 10KB in size.  A BUFID of 0 indicates that the buffer should be NULL
 ** which will cause sqlite3_db_config() to allocate space on its own.
 */
-static int test_db_config_lookaside(
+static int SQLITE_TCLAPI test_db_config_lookaside(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1111,7 +1111,7 @@ static int test_db_config_lookaside(
 /*
 ** Usage:    sqlite3_config_heap NBYTE NMINALLOC
 */
-static int test_config_heap(
+static int SQLITE_TCLAPI test_config_heap(
   void * clientData, 
   Tcl_Interp *interp,
   int objc,
@@ -1148,7 +1148,7 @@ static int test_config_heap(
 /*
 ** Usage:    sqlite3_config_heap_size NBYTE
 */
-static int test_config_heap_size(
+static int SQLITE_TCLAPI test_config_heap_size(
   void * clientData, 
   Tcl_Interp *interp,
   int objc,
@@ -1178,7 +1178,7 @@ static int test_config_heap_size(
 ** Invoke sqlite3_config() or sqlite3_db_config() with invalid
 ** opcodes and verify that they return errors.
 */
-static int test_config_error(
+static int SQLITE_TCLAPI test_config_error(
   void * clientData, 
   Tcl_Interp *interp,
   int objc,
@@ -1216,7 +1216,7 @@ static int test_config_error(
 ** Enables or disables interpretation of URI parameters by default using
 ** SQLITE_CONFIG_URI.
 */
-static int test_config_uri(
+static int SQLITE_TCLAPI test_config_uri(
   void * clientData, 
   Tcl_Interp *interp,
   int objc,
@@ -1245,7 +1245,7 @@ static int test_config_uri(
 ** Enables or disables the use of the covering-index scan optimization.
 ** SQLITE_CONFIG_COVERING_INDEX_SCAN.
 */
-static int test_config_cis(
+static int SQLITE_TCLAPI test_config_cis(
   void * clientData, 
   Tcl_Interp *interp,
   int objc,
@@ -1273,7 +1273,7 @@ static int test_config_cis(
 **
 ** Set the minimum PMA size.
 */
-static int test_config_pmasz(
+static int SQLITE_TCLAPI test_config_pmasz(
   void * clientData, 
   Tcl_Interp *interp,
   int objc,
@@ -1303,7 +1303,7 @@ static int test_config_pmasz(
 **
 ** Write a summary of unfreed memsys3 allocations to FILENAME.
 */
-static int test_dump_memsys3(
+static int SQLITE_TCLAPI test_dump_memsys3(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1339,7 +1339,7 @@ static int test_dump_memsys3(
 ** Return a list of three elements which are the sqlite3_status() return
 ** code, the current value, and the high-water mark value.
 */
-static int test_status(
+static int SQLITE_TCLAPI test_status(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1396,7 +1396,7 @@ static int test_status(
 ** Return a list of three elements which are the sqlite3_db_status() return
 ** code, the current value, and the high-water mark value.
 */
-static int test_db_status(
+static int SQLITE_TCLAPI test_db_status(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1457,7 +1457,7 @@ static int test_db_status(
 /*
 ** install_malloc_faultsim BOOLEAN
 */
-static int test_install_malloc_faultsim(
+static int SQLITE_TCLAPI test_install_malloc_faultsim(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1481,7 +1481,7 @@ static int test_install_malloc_faultsim(
 /*
 ** sqlite3_install_memsys3
 */
-static int test_install_memsys3(
+static int SQLITE_TCLAPI test_install_memsys3(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1496,7 +1496,7 @@ static int test_install_memsys3(
   return TCL_OK;
 }
 
-static int test_vfs_oom_test(
+static int SQLITE_TCLAPI test_vfs_oom_test(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
index dffdb4494138d0a655b20e2e038182653845c7f3..e7ffa63a561743085240576b22833c9ecece6ca4 100644 (file)
@@ -1233,6 +1233,9 @@ int sqlite3_multiplex_shutdown(int eForce){
 #  include "sqlite_tcl.h"
 #else
 #  include "tcl.h"
+#  ifndef SQLITE_TCLAPI
+#    define SQLITE_TCLAPI
+#  endif
 #endif
 extern const char *sqlite3ErrName(int);
 
@@ -1240,7 +1243,7 @@ extern const char *sqlite3ErrName(int);
 /*
 ** tclcmd: sqlite3_multiplex_initialize NAME MAKEDEFAULT
 */
-static int test_multiplex_initialize(
+static int SQLITE_TCLAPI test_multiplex_initialize(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1271,7 +1274,7 @@ static int test_multiplex_initialize(
 /*
 ** tclcmd: sqlite3_multiplex_shutdown
 */
-static int test_multiplex_shutdown(
+static int SQLITE_TCLAPI test_multiplex_shutdown(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1299,7 +1302,7 @@ static int test_multiplex_shutdown(
 /*
 ** tclcmd:  sqlite3_multiplex_dump
 */
-static int test_multiplex_dump(
+static int SQLITE_TCLAPI test_multiplex_dump(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1354,7 +1357,7 @@ static int test_multiplex_dump(
 /*
 ** Tclcmd: test_multiplex_control HANDLE DBNAME SUB-COMMAND ?INT-VALUE?
 */
-static int test_multiplex_control(
+static int SQLITE_TCLAPI test_multiplex_control(
   ClientData cd,
   Tcl_Interp *interp,
   int objc,
index 22375197b77b9982df2fb1203b92a2650348e449..8f43e5ad30ef83998a589b6345fe53aac73a06d1 100644 (file)
@@ -156,7 +156,7 @@ static void counterMutexLeave(sqlite3_mutex *p){
 /*
 ** sqlite3_shutdown
 */
-static int test_shutdown(
+static int SQLITE_TCLAPI test_shutdown(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -177,7 +177,7 @@ static int test_shutdown(
 /*
 ** sqlite3_initialize
 */
-static int test_initialize(
+static int SQLITE_TCLAPI test_initialize(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -198,7 +198,7 @@ static int test_initialize(
 /*
 ** install_mutex_counters BOOLEAN
 */
-static int test_install_mutex_counters(
+static int SQLITE_TCLAPI test_install_mutex_counters(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -259,7 +259,7 @@ static int test_install_mutex_counters(
 /*
 ** read_mutex_counters
 */
-static int test_read_mutex_counters(
+static int SQLITE_TCLAPI test_read_mutex_counters(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -288,7 +288,7 @@ static int test_read_mutex_counters(
 /*
 ** clear_mutex_counters
 */
-static int test_clear_mutex_counters(
+static int SQLITE_TCLAPI test_clear_mutex_counters(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -312,7 +312,7 @@ static int test_clear_mutex_counters(
 ** will be invalid since the mutex has already been freed.  The
 ** return pointer just checks to see if the mutex really was allocated.
 */
-static int test_alloc_mutex(
+static int SQLITE_TCLAPI test_alloc_mutex(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -339,7 +339,7 @@ static int test_alloc_mutex(
 **
 ** Or OPTION can be an raw integer.
 */
-static int test_config(
+static int SQLITE_TCLAPI test_config(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -401,7 +401,7 @@ static sqlite3_mutex *getStaticMutexPointer(
   return counterMutexAlloc(iMutex);
 }
 
-static int test_enter_static_mutex(
+static int SQLITE_TCLAPI test_enter_static_mutex(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -420,7 +420,7 @@ static int test_enter_static_mutex(
   return TCL_OK;
 }
 
-static int test_leave_static_mutex(
+static int SQLITE_TCLAPI test_leave_static_mutex(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -439,7 +439,7 @@ static int test_leave_static_mutex(
   return TCL_OK;
 }
 
-static int test_enter_db_mutex(
+static int SQLITE_TCLAPI test_enter_db_mutex(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -458,7 +458,7 @@ static int test_enter_db_mutex(
   return TCL_OK;
 }
 
-static int test_leave_db_mutex(
+static int SQLITE_TCLAPI test_leave_db_mutex(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
index 5ab8ed5c938fef455bf8a6005f20cf02d334be62..a008baba45deb0287ed38ca33eedc02cdd784de6 100644 (file)
@@ -1108,9 +1108,12 @@ int sqlite3_vfslog_register(sqlite3 *db){
 #  include "sqlite_tcl.h"
 #else
 #  include "tcl.h"
+#  ifndef SQLITE_TCLAPI
+#    define SQLITE_TCLAPI
+#  endif
 #endif
 
-static int test_vfslog(
+static int SQLITE_TCLAPI test_vfslog(
   void *clientData,
   Tcl_Interp *interp,
   int objc,
index 8ea48e5b5375c840ec8fe0ba7eb64dd5cdd4ec8c..e87e9772f6cc2c4add6132658b7096874087c6d5 100644 (file)
@@ -111,7 +111,7 @@ struct quotaFile {
 
 /*
 ** An instance of the following object represents each open connection
-** to a file that participates in quota tracking.  This object is a 
+** to a file that participates in quota tracking.  This object is a
 ** subclass of sqlite3_file.  The sqlite3_file object for the underlying
 ** VFS is appended to this structure.
 */
@@ -154,11 +154,11 @@ static struct {
   */
   sqlite3_vfs sThisVfs;
 
-  /* The sIoMethods defines the methods used by sqlite3_file objects 
+  /* The sIoMethods defines the methods used by sqlite3_file objects
   ** associated with this shim.  It is initialized at start-time and does
   ** not require a mutex.
   **
-  ** When the underlying VFS is called to open a file, it might return 
+  ** When the underlying VFS is called to open a file, it might return
   ** either a version 1 or a version 2 sqlite3_file object.  This shim
   ** has to create a wrapper sqlite3_file of the same version.  Hence
   ** there are two I/O method structures, one for version 1 and the other
@@ -190,7 +190,7 @@ static struct {
 static void quotaEnter(void){ sqlite3_mutex_enter(gQuota.pMutex); }
 static void quotaLeave(void){ sqlite3_mutex_leave(gQuota.pMutex); }
 
-/* Count the number of open files in a quotaGroup 
+/* Count the number of open files in a quotaGroup
 */
 static int quotaGroupOpenFileCount(quotaGroup *pGroup){
   int N = 0;
@@ -399,7 +399,7 @@ static char *quota_utf8_to_mbcs(const char *zUtf8){
   return zMbcs;
 #else
   return (char*)zUtf8;  /* No-op on unix */
-#endif  
+#endif
 }
 
 /*
@@ -410,7 +410,7 @@ static void quota_mbcs_free(char *zOld){
   sqlite3_free(zOld);
 #else
   /* No-op on unix */
-#endif  
+#endif
 }
 
 /************************* VFS Method Wrappers *****************************/
@@ -428,7 +428,7 @@ static int quotaOpen(
   int flags,                  /* Flags to control the opening */
   int *pOutFlags              /* Flags showing results of opening */
 ){
-  int rc;                                    /* Result code */         
+  int rc;                                    /* Result code */
   quotaConn *pQuotaOpen;                     /* The new quota file descriptor */
   quotaFile *pFile;                          /* Corresponding quotaFile obj */
   quotaGroup *pGroup;                        /* The group file belongs to */
@@ -488,7 +488,7 @@ static int quotaDelete(
   const char *zName,          /* Name of file to be deleted */
   int syncDir                 /* Do a directory sync after deleting */
 ){
-  int rc;                                    /* Result code */         
+  int rc;                                    /* Result code */
   quotaFile *pFile;                          /* Files in the quota */
   quotaGroup *pGroup;                        /* The group file belongs to */
   sqlite3_vfs *pOrigVfs = gQuota.pOrigVfs;   /* Real VFS */
@@ -581,7 +581,7 @@ static int quotaWrite(
     szNew = pGroup->iSize - pFile->iSize + iEnd;
     if( szNew>pGroup->iLimit && pGroup->iLimit>0 ){
       if( pGroup->xCallback ){
-        pGroup->xCallback(pFile->zFilename, &pGroup->iLimit, szNew, 
+        pGroup->xCallback(pFile->zFilename, &pGroup->iLimit, szNew,
                           pGroup->pArg);
       }
       if( szNew>pGroup->iLimit && pGroup->iLimit>0 ){
@@ -738,7 +738,7 @@ static int quotaShmUnmap(sqlite3_file *pConn, int deleteFlag){
 /*
 ** Initialize the quota VFS shim.  Use the VFS named zOrigVfsName
 ** as the VFS that does the actual work.  Use the default if
-** zOrigVfsName==NULL.  
+** zOrigVfsName==NULL.
 **
 ** The quota VFS shim is named "quota".  It will become the default
 ** VFS if makeDefault is non-zero.
@@ -908,7 +908,7 @@ int sqlite3_quota_file(const char *zFilename){
 
   if( rc==SQLITE_OK ){
     zFull[strlen(zFull)+1] = '\0';
-    rc = quotaOpen(&gQuota.sThisVfs, zFull, fd, 
+    rc = quotaOpen(&gQuota.sThisVfs, zFull, fd,
                    SQLITE_OPEN_READONLY | SQLITE_OPEN_MAIN_DB, &outFlags);
     if( rc==SQLITE_OK ){
       fd->pMethods->xFileSize(fd, &iSize);
@@ -1016,7 +1016,7 @@ size_t sqlite3_quota_fwrite(
     szNew = pGroup->iSize - pFile->iSize + iEnd;
     if( szNew>pGroup->iLimit && pGroup->iLimit>0 ){
       if( pGroup->xCallback ){
-        pGroup->xCallback(pFile->zFilename, &pGroup->iLimit, szNew, 
+        pGroup->xCallback(pFile->zFilename, &pGroup->iLimit, szNew,
                           pGroup->pArg);
       }
       if( szNew>pGroup->iLimit && pGroup->iLimit>0 ){
@@ -1203,7 +1203,7 @@ sqlite3_int64 sqlite3_quota_file_truesize(quota_FILE *p){
 sqlite3_int64 sqlite3_quota_file_size(quota_FILE *p){
   return p->pFile ? p->pFile->iSize : -1;
 }
+
 /*
 ** Determine the amount of data in bytes available for reading
 ** in the given file.
@@ -1275,13 +1275,16 @@ int sqlite3_quota_remove(const char *zFilename){
   sqlite3_free(zFull);
   return rc;
 }
-  
+
 /***************************** Test Code ***********************************/
 #ifdef SQLITE_TEST
 #if defined(INCLUDE_SQLITE_TCL_H)
 #  include "sqlite_tcl.h"
 #else
 #  include "tcl.h"
+#  ifndef SQLITE_TCLAPI
+#    define SQLITE_TCLAPI
+#  endif
 #endif
 
 /*
@@ -1354,7 +1357,7 @@ static void tclCallbackDestructor(void *pObj){
 /*
 ** tclcmd: sqlite3_quota_initialize NAME MAKEDEFAULT
 */
-static int test_quota_initialize(
+static int SQLITE_TCLAPI test_quota_initialize(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1383,7 +1386,7 @@ static int test_quota_initialize(
 /*
 ** tclcmd: sqlite3_quota_shutdown
 */
-static int test_quota_shutdown(
+static int SQLITE_TCLAPI test_quota_shutdown(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1406,7 +1409,7 @@ static int test_quota_shutdown(
 /*
 ** tclcmd: sqlite3_quota_set PATTERN LIMIT SCRIPT
 */
-static int test_quota_set(
+static int SQLITE_TCLAPI test_quota_set(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1460,7 +1463,7 @@ static int test_quota_set(
 /*
 ** tclcmd: sqlite3_quota_file FILENAME
 */
-static int test_quota_file(
+static int SQLITE_TCLAPI test_quota_file(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1486,7 +1489,7 @@ static int test_quota_file(
 /*
 ** tclcmd:  sqlite3_quota_dump
 */
-static int test_quota_dump(
+static int SQLITE_TCLAPI test_quota_dump(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1534,7 +1537,7 @@ static int test_quota_dump(
 /*
 ** tclcmd: sqlite3_quota_fopen FILENAME MODE
 */
-static int test_quota_fopen(
+static int SQLITE_TCLAPI test_quota_fopen(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1564,7 +1567,7 @@ extern void *sqlite3TestTextToPtr(const char*);
 /*
 ** tclcmd: sqlite3_quota_fread HANDLE SIZE NELEM
 */
-static int test_quota_fread(
+static int SQLITE_TCLAPI test_quota_fread(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1598,7 +1601,7 @@ static int test_quota_fread(
 /*
 ** tclcmd: sqlite3_quota_fwrite HANDLE SIZE NELEM CONTENT
 */
-static int test_quota_fwrite(
+static int SQLITE_TCLAPI test_quota_fwrite(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1626,7 +1629,7 @@ static int test_quota_fwrite(
 /*
 ** tclcmd: sqlite3_quota_fclose HANDLE
 */
-static int test_quota_fclose(
+static int SQLITE_TCLAPI test_quota_fclose(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1648,7 +1651,7 @@ static int test_quota_fclose(
 /*
 ** tclcmd: sqlite3_quota_fflush HANDLE ?HARDSYNC?
 */
-static int test_quota_fflush(
+static int SQLITE_TCLAPI test_quota_fflush(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1674,7 +1677,7 @@ static int test_quota_fflush(
 /*
 ** tclcmd: sqlite3_quota_fseek HANDLE OFFSET WHENCE
 */
-static int test_quota_fseek(
+static int SQLITE_TCLAPI test_quota_fseek(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1712,7 +1715,7 @@ static int test_quota_fseek(
 /*
 ** tclcmd: sqlite3_quota_rewind HANDLE
 */
-static int test_quota_rewind(
+static int SQLITE_TCLAPI test_quota_rewind(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1731,7 +1734,7 @@ static int test_quota_rewind(
 /*
 ** tclcmd: sqlite3_quota_ftell HANDLE
 */
-static int test_quota_ftell(
+static int SQLITE_TCLAPI test_quota_ftell(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1752,7 +1755,7 @@ static int test_quota_ftell(
 /*
 ** tclcmd: sqlite3_quota_ftruncate HANDLE SIZE
 */
-static int test_quota_ftruncate(
+static int SQLITE_TCLAPI test_quota_ftruncate(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1777,7 +1780,7 @@ static int test_quota_ftruncate(
 /*
 ** tclcmd: sqlite3_quota_file_size HANDLE
 */
-static int test_quota_file_size(
+static int SQLITE_TCLAPI test_quota_file_size(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1798,7 +1801,7 @@ static int test_quota_file_size(
 /*
 ** tclcmd: sqlite3_quota_file_truesize HANDLE
 */
-static int test_quota_file_truesize(
+static int SQLITE_TCLAPI test_quota_file_truesize(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1819,7 +1822,7 @@ static int test_quota_file_truesize(
 /*
 ** tclcmd: sqlite3_quota_file_mtime HANDLE
 */
-static int test_quota_file_mtime(
+static int SQLITE_TCLAPI test_quota_file_mtime(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1842,7 +1845,7 @@ static int test_quota_file_mtime(
 /*
 ** tclcmd: sqlite3_quota_remove FILENAME
 */
-static int test_quota_remove(
+static int SQLITE_TCLAPI test_quota_remove(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1866,7 +1869,7 @@ static int test_quota_remove(
 ** Test the glob pattern matching.  Return 1 if TEXT matches PATTERN
 ** and return 0 if it does not.
 */
-static int test_quota_glob(
+static int SQLITE_TCLAPI test_quota_glob(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1892,7 +1895,7 @@ static int test_quota_glob(
 ** Return the number of bytes from the current file point to the end of
 ** the file.
 */
-static int test_quota_file_available(
+static int SQLITE_TCLAPI test_quota_file_available(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -1915,7 +1918,7 @@ static int test_quota_file_available(
 **
 ** Return true if the file handle is in the error state.
 */
-static int test_quota_ferror(
+static int SQLITE_TCLAPI test_quota_ferror(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
index 1f15566f97c34a812054b4592db6ebbd17154df2..0c6dbf3cd736e4f326fb972a5dcf317b72a7bda4 100644 (file)
@@ -440,7 +440,7 @@ static int cube_geom(
 }
 #endif /* SQLITE_ENABLE_RTREE */
 
-static int register_cube_geom(
+static int SQLITE_TCLAPI register_cube_geom(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -468,7 +468,7 @@ static int register_cube_geom(
   return TCL_OK;
 }
 
-static int register_circle_geom(
+static int SQLITE_TCLAPI register_circle_geom(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
index f2bd3b35202355900a1e7b437c4cf1fe469121e1..cdf085797f09e4f4d4a484f4492580d9c90dc3c3 100644 (file)
@@ -306,7 +306,7 @@ extern int getDbPointer(Tcl_Interp *interp, const char *zA, sqlite3 **ppDb);
 /*
 ** Register the schema virtual table module.
 */
-static int register_schema_module(
+static int SQLITE_TCLAPI register_schema_module(
   ClientData clientData, /* Not used */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
index cad5b51f0fc1b5a29c04186f175c38def5b1f709..45d0d623a03b4cbf19ada28e754267b0b483e810 100644 (file)
@@ -260,6 +260,9 @@ int sqlite3demo_superlock(
 #  include "sqlite_tcl.h"
 #else
 #  include "tcl.h"
+#  ifndef SQLITE_TCLAPI
+#    define SQLITE_TCLAPI
+#  endif
 #endif
 
 struct InterpAndScript {
@@ -268,11 +271,11 @@ struct InterpAndScript {
 };
 typedef struct InterpAndScript InterpAndScript;
 
-static void superunlock_del(ClientData cd){
+static void SQLITE_TCLAPI superunlock_del(ClientData cd){
   sqlite3demo_superunlock((void *)cd);
 }
 
-static int superunlock_cmd(
+static int SQLITE_TCLAPI superunlock_cmd(
   ClientData cd,
   Tcl_Interp *interp,
   int objc,
@@ -304,7 +307,7 @@ static int superlock_busy(void *pCtx, int nBusy){
 /*
 ** Tclcmd: sqlite3demo_superlock CMDNAME PATH VFS BUSY-HANDLER-SCRIPT
 */
-static int superlock_cmd(
+static int SQLITE_TCLAPI superlock_cmd(
   ClientData cd,
   Tcl_Interp *interp,
   int objc,
index eab989518685cb8e8702388eb2291bfacfa98232..947f9a9d9d09e6b41ffc0fa4232ae858306aeb81 100644 (file)
@@ -422,7 +422,7 @@ static void *ts_mremap(void *a, size_t b, size_t c, int d, ...){
   return orig_mremap(a, b, c, d, pArg);
 }
 
-static int test_syscall_install(
+static int SQLITE_TCLAPI test_syscall_install(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -458,7 +458,7 @@ static int test_syscall_install(
   return TCL_OK;
 }
 
-static int test_syscall_uninstall(
+static int SQLITE_TCLAPI test_syscall_uninstall(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -482,7 +482,7 @@ static int test_syscall_uninstall(
   return TCL_OK;
 }
 
-static int test_syscall_reset(
+static int SQLITE_TCLAPI test_syscall_reset(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -520,7 +520,7 @@ static int test_syscall_reset(
   return TCL_OK;
 }
 
-static int test_syscall_exists(
+static int SQLITE_TCLAPI test_syscall_exists(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -541,7 +541,7 @@ static int test_syscall_exists(
   return TCL_OK;
 }
 
-static int test_syscall_fault(
+static int SQLITE_TCLAPI test_syscall_fault(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -570,7 +570,7 @@ static int test_syscall_fault(
   return TCL_OK;
 }
 
-static int test_syscall_errno(
+static int SQLITE_TCLAPI test_syscall_errno(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -616,7 +616,7 @@ static int test_syscall_errno(
   return TCL_OK;
 }
 
-static int test_syscall_list(
+static int SQLITE_TCLAPI test_syscall_list(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -646,7 +646,7 @@ static int test_syscall_list(
   return TCL_OK;
 }
 
-static int test_syscall_defaultvfs(
+static int SQLITE_TCLAPI test_syscall_defaultvfs(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -668,7 +668,7 @@ static int ts_getpagesize(void){
   return gSyscall.pgsz;
 }
 
-static int test_syscall_pagesize(
+static int SQLITE_TCLAPI test_syscall_pagesize(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -703,7 +703,7 @@ static int test_syscall_pagesize(
   return TCL_OK;
 }
 
-static int test_syscall(
+static int SQLITE_TCLAPI test_syscall(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
index 95a065c853e0b779a58c6d0af0c3dfdbcf117024..8f7352112dd82caac71db832edac38cf03d6be9a 100644 (file)
@@ -411,7 +411,7 @@ extern int getDbPointer(Tcl_Interp *interp, const char *zA, sqlite3 **ppDb);
 /*
 ** Register the echo virtual table module.
 */
-static int register_tclvar_module(
+static int SQLITE_TCLAPI register_tclvar_module(
   ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
   Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
   int objc,              /* Number of arguments */
index 1fd646e7698b4b4f32d9144907b9e0f103ed2a2d..d67b4be10b2992e840523f856931b36a443e0413 100644 (file)
@@ -76,7 +76,7 @@ extern int sqlite3TestErrCode(Tcl_Interp *, sqlite3 *, int);
 /*
 ** Handler for events of type EvalEvent.
 */
-static int tclScriptEvent(Tcl_Event *evPtr, int flags){
+static int SQLITE_TCLAPI tclScriptEvent(Tcl_Event *evPtr, int flags){
   int rc;
   EvalEvent *p = (EvalEvent *)evPtr;
   rc = Tcl_Eval(p->interp, p->zScript);
@@ -171,7 +171,7 @@ static Tcl_ThreadCreateType tclScriptThread(ClientData pSqlThread){
 **
 **     The caller can wait for the script to terminate using [vwait VARNAME].
 */
-static int sqlthread_spawn(
+static int SQLITE_TCLAPI sqlthread_spawn(
   ClientData clientData,
   Tcl_Interp *interp,
   int objc,
@@ -224,7 +224,7 @@ static int sqlthread_spawn(
 **
 **     NOTE: At the moment, this doesn't work. FIXME.
 */
-static int sqlthread_parent(
+static int SQLITE_TCLAPI sqlthread_parent(
   ClientData clientData,
   Tcl_Interp *interp,
   int objc,
@@ -269,7 +269,7 @@ static int xBusy(void *pArg, int nBusy){
 **     Open a database handle and return the string representation of
 **     the pointer value.
 */
-static int sqlthread_open(
+static int SQLITE_TCLAPI sqlthread_open(
   ClientData clientData,
   Tcl_Interp *interp,
   int objc,
@@ -319,7 +319,7 @@ static int sqlthread_open(
 **     Return the current thread-id (Tcl_GetCurrentThread()) cast to
 **     an integer.
 */
-static int sqlthread_id(
+static int SQLITE_TCLAPI sqlthread_id(
   ClientData clientData,
   Tcl_Interp *interp,
   int objc,
@@ -337,7 +337,7 @@ static int sqlthread_id(
 /*
 ** Dispatch routine for the sub-commands of [sqlthread].
 */
-static int sqlthread_proc(
+static int SQLITE_TCLAPI sqlthread_proc(
   ClientData clientData,
   Tcl_Interp *interp,
   int objc,
@@ -385,7 +385,7 @@ static int sqlthread_proc(
 ** implemented as a script in Tcl 8.5, it is not usually available to
 ** testfixture.
 */ 
-static int clock_seconds_proc(
+static int SQLITE_TCLAPI clock_seconds_proc(
   ClientData clientData,
   Tcl_Interp *interp,
   int objc,
@@ -547,7 +547,7 @@ int sqlite3_blocking_prepare_v2(
 **
 ** Advance the statement to the next row.
 */
-static int blocking_step_proc(
+static int SQLITE_TCLAPI blocking_step_proc(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
@@ -573,7 +573,7 @@ static int blocking_step_proc(
 ** Usage: sqlite3_blocking_prepare_v2 DB sql bytes ?tailvar?
 ** Usage: sqlite3_nonblocking_prepare_v2 DB sql bytes ?tailvar?
 */
-static int blocking_prepare_v2_proc(
+static int SQLITE_TCLAPI blocking_prepare_v2_proc(
   void * clientData,
   Tcl_Interp *interp,
   int objc,
index acc1c6682eb0ffa330dcd6ef1c773fb047233af2..fb987a6163a655b07e602f0c64e352633cba9894 100644 (file)
@@ -1040,7 +1040,7 @@ static int tvfsUnfetch(sqlite3_file *pFile, sqlite3_int64 iOfst, void *p){
   return sqlite3OsUnfetch(pFd->pReal, iOfst, p);
 }
 
-static int testvfs_obj_cmd(
+static int SQLITE_TCLAPI testvfs_obj_cmd(
   ClientData cd,
   Tcl_Interp *interp,
   int objc,
@@ -1352,7 +1352,7 @@ static int testvfs_obj_cmd(
   return TCL_OK;
 }
 
-static void testvfs_obj_del(ClientData cd){
+static void SQLITE_TCLAPI testvfs_obj_del(ClientData cd){
   Testvfs *p = (Testvfs *)cd;
   if( p->pScript ) Tcl_DecrRefCount(p->pScript);
   sqlite3_vfs_unregister(p->pVfs);
@@ -1395,7 +1395,7 @@ static void testvfs_obj_del(ClientData cd){
 **
 ** where LOCK is of the form "OFFSET NBYTE lock/unlock shared/exclusive"
 */
-static int testvfs_cmd(
+static int SQLITE_TCLAPI testvfs_cmd(
   ClientData cd,
   Tcl_Interp *interp,
   int objc,