]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Check for miscompiled Tcl (CVS 204)
authordrh <drh@noemail.net>
Fri, 6 Apr 2001 16:13:42 +0000 (16:13 +0000)
committerdrh <drh@noemail.net>
Fri, 6 Apr 2001 16:13:42 +0000 (16:13 +0000)
FossilOrigin-Name: 735d8b5c13b5e2602b37940377fced098be210c1

VERSION
manifest
manifest.uuid
src/main.c
src/sqlite.h.in
src/tclsqlite.c
test/expr.test
test/func.test
test/tester.tcl

diff --git a/VERSION b/VERSION
index 4c24bf133a558a2a3b6c262757fbc3c3addf4a58..475bda9cf571318a96821da7d5772d945b82c6b3 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.29
+1.0.30
index 4036aaa4d53e8b0e968e0aeb29764fcef0031ebf..e1c14b1dfada46c035dc1517d65156c9c777d2a4 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,9 +1,9 @@
-C Version\s1.0.29\s(CVS\s474)
-D 2001-04-05T16:50:00
+C Check\sfor\smiscompiled\sTcl\s(CVS\s204)
+D 2001-04-06T16:13:43
 F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4
 F Makefile.in 25791375ce9f4f5b57d4cab67f0d58d772c96451
 F README 51f6a4e7408b34afa5bc1c0485f61b6a4efb6958
-F VERSION fb0fbad3b7a52736cc18ea5fcf1bc6dba7b2c40c
+F VERSION 2670c932365e633f8552540db172fac18bd09b3a
 F configure 260d3be664b6d9b4d2d985e66b6dae1ef723c86e x
 F configure.in 6940e3f88bf3d28a10c73b06ab99fd3a7e039a61
 F doc/lemon.html e233a3e97a779c7a87e1bc4528c664a58e49dd47
@@ -25,7 +25,7 @@ F src/ex/pg.h 23a4ac807b0546ec2bb6239ec8bd3e06926572cd
 F src/ex/sizes.tcl f54bad4a2ac567624be59131a6ee42d71b41a3d7
 F src/expr.c 745383609b65d504a2cc04ac4d9389e9c8e2bc80
 F src/insert.c 4bc1cab84f7805d560a1417734a532843e30b762
-F src/main.c d52a1c2a7a964acca87880ac925019c383b8e606
+F src/main.c fe5c26620c46770539056525d8a79e3afb6e75e8
 F src/pager.h 889c5cf517ad30704e295540793c893ac843fd5f
 F src/parse.y 1ba81d3b75f37ca868aa0ab990bb977fd41519eb
 F src/printf.c af0dc65c293427272e1949c7807b1d88f10004fd
@@ -33,10 +33,10 @@ F src/random.c b36c3f57dc80c8f354e6bfbf39cf1e1de021d54a
 F src/select.c a6bfdaa92d4614e79bf18129283c5163faa291fc
 F src/shell.c c1785b4af18192056adbe894f8626a7e7bdf47aa
 F src/shell.tcl 27ecbd63dd88396ad16d81ab44f73e6c0ea9d20e
-F src/sqlite.h.in f13156b85c51a6d7d06678bbe69554c90cde1fe2
+F src/sqlite.h.in 182336b2763d15d31ffd9ac1112e6ddd190c02e4
 F src/sqliteInt.h 97e2dd488ab433e27eda6e26f4c84a9a2684785c
 F src/table.c 5be76051a8ed6f6bfa641f4adc52529efa34fbf9
-F src/tclsqlite.c 82eda60c7ae5cd7b71023a55c5710a74713c313b
+F src/tclsqlite.c 8b30b01d9fb814a5a358dafd697de16d968cb73e
 F src/tokenize.c 8fc3936eefad84f1fff19e0892ed0542eb9ac7b3
 F src/update.c 8365b3922ea098330d1e20862d6e64911e4e03d0
 F src/util.c aec315b834bad444c9e0e90efd9d2eaeeb37c90c
@@ -47,8 +47,8 @@ F test/all.test 15cac2f6b2d4c55bf896212aff3cc9d6597b0490
 F test/copy.test b77a1214bd7756f2849d5c4fa6e715c0ff0c34eb
 F test/dbbe.test a022fe2d983848f786e17ef1fc6809cfd37fb02c
 F test/delete.test 50b9b1f06c843d591741dba7869433a105360dbf
-F test/expr.test 1e4822af0213734dd325521a6e25fe38f1fa7f9d
-F test/func.test 11c415efe9d435aa0136edd0b3cb11efe5c3ead7
+F test/expr.test e55eb507744f771b814fdbea14fddb69caa4538a
+F test/func.test ac3def2a673d1042750ae1a4ad1768bb7c7ae90b
 F test/in.test ea48016c4fcc479d315932ae2b8568146686ffaf
 F test/index.test b189ac11bf8d4fbcf87402f4028c25c8a6d91bb5
 F test/insert.test dbd3bd189edb61fddbe66c236694ef23352429f1
@@ -65,7 +65,7 @@ F test/sort.test 838cd862642ed9a2c47e1a17b5c33da452b4552e
 F test/subselect.test bf8b251a92fb091973c1c469ce499dc9648a41d5
 F test/table.test c1704fead1af27d67850a934d531848ce5bee4a7
 F test/tclsqlite.test d2aa55926874783b2401f0146e839f773c6796e1
-F test/tester.tcl c77fd7a4fb1f3812e469be6229ee330baaffc911
+F test/tester.tcl dba25c97cc89f109a9350f12792f17b24202d65f
 F test/trans.test 82556605d48f56ad4679e95478d70546a763f26a
 F test/update.test 72c0c93310483b86dc904a992220c5b84c7ce100
 F test/vacuum.test b95d8119a0a83dc6c4ac63888f8872f06199e065
@@ -94,7 +94,7 @@ F www/opcode.tcl cb3a1abf8b7b9be9f3a228d097d6bf8b742c2b6f
 F www/sqlite.tcl cb0d23d8f061a80543928755ec7775da6e4f362f
 F www/tclsqlite.tcl 06f81c401f79a04f2c5ebfb97e7c176225c0aef2
 F www/vdbe.tcl 0c8aaa529dd216ccbf7daaabd80985e413d5f9ad
-P b5f994feb44f76782279cdbb1654d340f63e8995
-R 49065187ae08404d71560bc6435e0230
+P 4b3ffa161a09653919a689336784a85b9548c249
+R 712a3306e2a2c79bccc911915e955880
 U drh
-Z 13983b7b909cd6705720cd336bde6816
+Z bfdec300c92af1e06bfec59389035a75
index 1d8a5070d299b0f0be41bf41277621d25aa98553..b63f040ddd3e69556c3332fd5d918a534e7627c2 100644 (file)
@@ -1 +1 @@
-4b3ffa161a09653919a689336784a85b9548c249
\ No newline at end of file
+735d8b5c13b5e2602b37940377fced098be210c1
\ No newline at end of file
index 6a024c620a164e6cf1a706257d1b03fe0ffbf84e..faab88ee67dcc365edca10aea85704fd1cfd37ad 100644 (file)
@@ -26,7 +26,7 @@
 ** other files are for internal use by SQLite and should not be
 ** accessed by users of the library.
 **
-** $Id: main.c,v 1.26 2001/04/05 15:57:13 drh Exp $
+** $Id: main.c,v 1.27 2001/04/06 16:13:43 drh Exp $
 */
 #include "sqliteInt.h"
 #include <unistd.h>
@@ -195,9 +195,9 @@ const char sqlite_version[] = SQLITE_VERSION;
 ** following global constant always lets us know.
 */
 #ifdef SQLITE_UTF8
-char sqlite_encoding[] = "UTF-8";
+const char sqlite_encoding[] = "UTF-8";
 #else
-char sqlite_encoding[] = "iso8859";
+const char sqlite_encoding[] = "iso8859";
 #endif
 
 /*
index acb67e9aaa2ad9c5f73ae317dd24aa41e287796d..425c293c83c75d8a85ffaf999ae0b1b97fa93a85 100644 (file)
@@ -24,7 +24,7 @@
 ** This header file defines the interface that the sqlite library
 ** presents to client programs.
 **
-** @(#) $Id: sqlite.h.in,v 1.11 2001/04/05 15:57:13 drh Exp $
+** @(#) $Id: sqlite.h.in,v 1.12 2001/04/06 16:13:43 drh Exp $
 */
 #ifndef _SQLITE_H_
 #define _SQLITE_H_
@@ -55,7 +55,7 @@ extern const char sqlite_version[];
 ** see.  The character encoding makes a difference for the LIKE and GLOB
 ** operators and for the LENGTH() and SUBSTR() functions.
 */
-extern char sqlite_encoding[];
+extern const char sqlite_encoding[];
 
 /*
 ** Each open sqlite database is represented by an instance of the
index 6cbb827b51d7eb13dc11dcd0223147fc08442a6b..57df83b86d4698096eefa7d1c89e5149a0575f04 100644 (file)
@@ -23,7 +23,7 @@
 *************************************************************************
 ** A TCL Interface to SQLite
 **
-** $Id: tclsqlite.c,v 1.15 2001/04/05 15:57:13 drh Exp $
+** $Id: tclsqlite.c,v 1.16 2001/04/06 16:13:43 drh Exp $
 */
 #ifndef NO_TCL     /* Omit this whole file if TCL is unavailable */
 
@@ -385,11 +385,38 @@ static int DbObjCmd(void *cd, Tcl_Interp *interp, int objc,Tcl_Obj *const*objv){
 **
 ** The second argument is the name of the directory that contains
 ** the sqlite database that is to be accessed.
+**
+** For testing purposes, we also support the following:
+**
+**  sqlite -encoding
+**
+**       Return the encoding used by LIKE and GLOB operators.  Choices
+**       are UTF-8 and iso8859.
+**
+**  sqlite -tcl-uses-utf
+**
+**       Return "1" if compiled with a Tcl uses UTF-8.  Return "0" if
+**       not.  Used by tests to make sure the library was compiled 
+**       correctly.
 */
 static int DbMain(void *cd, Tcl_Interp *interp, int argc, char **argv){
   int mode;
   SqliteDb *p;
   char *zErrMsg;
+  if( argc==2 ){
+    if( strcmp(argv[1],"-encoding")==0 ){
+      Tcl_AppendResult(interp,sqlite_encoding,0);
+      return TCL_OK;
+    }
+    if( strcmp(argv[1],"-tcl-uses-utf")==0 ){
+#ifdef TCL_UTF_MAX
+      Tcl_AppendResult(interp,"1",0);
+#else
+      Tcl_AppendResult(interp,"0",0);
+#endif
+      return TCL_OK;
+    }
+  }
   if( argc!=3 && argc!=4 ){
     Tcl_AppendResult(interp,"wrong # args: should be \"", argv[0],
        " HANDLE FILENAME ?MODE?\"", 0);
@@ -429,7 +456,6 @@ static int DbMain(void *cd, Tcl_Interp *interp, int argc, char **argv){
 */
 int Sqlite_Init(Tcl_Interp *interp){
   Tcl_CreateCommand(interp, "sqlite", DbMain, 0, 0);
-  Tcl_SetVar(interp,"sqlite_encoding",sqlite_encoding,TCL_GLOBAL_ONLY);
   Tcl_PkgProvide(interp, "sqlite", "1.0");
   return TCL_OK;
 }
index 19bcf4e6200806e8dfd1588113f3ddf143f59690..c97c02d1e12c654be2e7cf78b999b242c07bff73 100644 (file)
@@ -23,7 +23,7 @@
 # This file implements regression tests for SQLite library.  The
 # focus of this file is testing expressions.
 #
-# $Id: expr.test,v 1.12 2001/04/05 15:57:14 drh Exp $
+# $Id: expr.test,v 1.13 2001/04/06 16:13:43 drh Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -162,7 +162,7 @@ test_expr expr-5.12 {t1='abc', t2='ABC'} {t1 NOT LIKE t2} 0
 # The following tests only work on versions of TCL that support
 # Unicode and SQLite configured for UTF-8 support.
 #
-if {"\u1234"!="u1234" && $::sqlite_encoding=="UTF-8"} {
+if {"\u1234"!="u1234" && [sqlite -encoding]=="UTF-8"} {
   test_expr expr-5.13 "t1='a\u0080c', t2='A_C'" {t1 LIKE t2} 1
   test_expr expr-5.14 "t1='a\u07FFc', t2='A_C'" {t1 LIKE t2} 1
   test_expr expr-5.15 "t1='a\u0800c', t2='A_C'" {t1 LIKE t2} 1
@@ -179,7 +179,7 @@ if {"\u1234"!="u1234" && $::sqlite_encoding=="UTF-8"} {
 
 # Theses tests are for when SQLite assumes iso8859 characters.
 #
-if {$::sqlite_encoding=="iso8859"} {
+if {[sqlite -encoding]=="iso8859"} {
   catch {encoding system iso8859-1}
   test_expr expr-5.50 "t1='a\266c', t2='A_C'"  {t1 LIKE t2} 1
   test_expr expr-5.51 "t1='a\347', t2='A_'"  {t1 LIKE t2} 1
@@ -215,7 +215,7 @@ test_expr expr-6.25 {t1='ac', t2='a*?c'} {t1 GLOB t2} 0
 
 # These tests only work on versions of TCL that support Unicode
 #
-if {"\u1234"!="u1234" && $::sqlite_encoding=="UTF-8"} {
+if {"\u1234"!="u1234" && [sqlite -encoding]=="UTF-8"} {
   test_expr expr-6.26 "t1='a\u0080c', t2='a?c'" {t1 GLOB t2} 1
   test_expr expr-6.27 "t1='a\u07ffc', t2='a?c'" {t1 GLOB t2} 1
   test_expr expr-6.28 "t1='a\u0800c', t2='a?c'" {t1 GLOB t2} 1
@@ -236,7 +236,7 @@ if {"\u1234"!="u1234" && $::sqlite_encoding=="UTF-8"} {
 
 # Theses tests are for when SQLite assumes iso8859 characters.
 #
-if {$::sqlite_encoding=="iso8859"} {
+if {[sqlite -encoding]=="iso8859"} {
   catch {encoding system iso8859-1}
   test_expr expr-6.50 "t1='a\266c', t2='a?c'" {t1 GLOB t2} 1
   test_expr expr-6.51 "t1='a\266', t2='a?'" {t1 GLOB t2} 1
index 26a69e667ebd729ee963ec1656438aca83f2ff0d..a6d8ed26cff3daab3d96cb6fc8dd278771624d9b 100644 (file)
@@ -23,7 +23,7 @@
 # This file implements regression tests for SQLite library.  The
 # focus of this file is testing built-in functions.
 #
-# $Id: func.test,v 1.2 2001/04/05 15:57:14 drh Exp $
+# $Id: func.test,v 1.3 2001/04/06 16:13:43 drh Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -89,7 +89,7 @@ do_test func-2.8 {
 # Only do the following tests if TCL has UTF-8 capabilities and
 # the UTF-8 encoding is turned on in the SQLite library.
 #
-if {$::sqlite_encoding=="UTF-8" && "\u1234"!="u1234"} {
+if {[sqlite -encoding]=="UTF-8" && "\u1234"!="u1234"} {
 
 # Put some UTF-8 characters in the database
 #
@@ -131,6 +131,6 @@ do_test func-3.10 {
   execsql {SELECT substr(t1,-4,3) FROM tbl1 ORDER BY t1}
 } "ter ain i\u1234h TF-"
 
-} ;# End sqlite_encoding==UTF-8 and \u1234!=u1234
+} ;# End [sqlite -encoding]==UTF-8 and \u1234!=u1234
 
 finish_test
index 9d83d56e556f83e9094e2f2d3ef268f09d39ce06..9c86030ea0ec029a6b7b8327c999133178a8d7fc 100644 (file)
 # This file implements some common TCL routines used for regression
 # testing the SQLite library
 #
-# $Id: tester.tcl,v 1.13 2001/04/04 11:48:58 drh Exp $
+# $Id: tester.tcl,v 1.14 2001/04/06 16:13:43 drh Exp $
+
+# Make sure tclsqlite was compiled correctly.  Abort now with an
+# error message if not.
+#
+if {[sqlite -tcl-uses-utf]} {
+  if {"\u1234"=="u1234"} {
+    puts stderr "***** BUILD PROBLEM *****"
+    puts stderr "$argv0 was linked against an older version"
+    puts stderr "of TCL that does not support Unicode, but uses a header"
+    puts stderr "file (\"tcl.h\") from a new TCL version that does support"
+    puts stderr "Unicode.  This combination causes internal errors."
+    puts stderr "Recompile using a TCL library and header file that match"
+    puts stderr "and try again.\n**************************"
+    exit 1
+  }
+} else {
+  if {"\u1234"!="u1234"} {
+    puts stderr "***** BUILD PROBLEM *****"
+    puts stderr "$argv0 was linked against an newer version"
+    puts stderr "of TCL that supports Unicode, but uses a header file"
+    puts stderr "(\"tcl.h\") from a old TCL version that does not support"
+    puts stderr "Unicode.  This combination causes internal errors."
+    puts stderr "Recompile using a TCL library and header file that match"
+    puts stderr "and try again.\n**************************"
+    exit 1
+  }
+}
 
 # Create a test database
 #