Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add the sqlite3_libversion() API (ticket #834). Fix the build scripts to correctly build the shared libraries with version 8.4 of Tcl. (CVS 1908) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
6db26a19ea7ac77be41a7416dedaef1b |
User & Date: | drh 2004-08-28 16:19:01.000 |
Context
2004-08-28
| ||
18:17 | Memory handling fixes and optimizations in the VDBE. Ticket #862. (CVS 1909) (check-in: 5f8d246852 user: drh tags: trunk) | |
16:19 | Add the sqlite3_libversion() API (ticket #834). Fix the build scripts to correctly build the shared libraries with version 8.4 of Tcl. (CVS 1908) (check-in: 6db26a19ea user: drh tags: trunk) | |
14:49 | Add new defenses against misuse of the C API. Ticket #870. (CVS 1906) (check-in: 6ef1f662d7 user: drh tags: trunk) | |
Changes
Changes to Makefile.in.
︙ | ︙ | |||
208 209 210 211 212 213 214 215 216 217 218 219 220 221 | # target_source: $(SRC) $(VDBEHDR) rm -rf tsrc mkdir tsrc cp $(SRC) $(VDBEHDR) tsrc rm tsrc/sqlite.h.in tsrc/parse.y cp parse.c opcodes.c tsrc # Rules to build the LEMON compiler generator # lemon@BUILD_EXEEXT@: $(TOP)/tool/lemon.c $(TOP)/tool/lempar.c $(BCC) -o lemon $(TOP)/tool/lemon.c cp $(TOP)/tool/lempar.c . | > | 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 | # target_source: $(SRC) $(VDBEHDR) rm -rf tsrc mkdir tsrc cp $(SRC) $(VDBEHDR) tsrc rm tsrc/sqlite.h.in tsrc/parse.y cp parse.c opcodes.c tsrc cp $(TOP)/sqlite3.def tsrc # Rules to build the LEMON compiler generator # lemon@BUILD_EXEEXT@: $(TOP)/tool/lemon.c $(TOP)/tool/lempar.c $(BCC) -o lemon $(TOP)/tool/lemon.c cp $(TOP)/tool/lempar.c . |
︙ | ︙ |
Changes to main.mk.
︙ | ︙ | |||
183 184 185 186 187 188 189 190 191 192 193 194 195 196 | # target_source: $(SRC) $(VDBEHDR) opcodes.c rm -rf tsrc mkdir tsrc cp $(SRC) $(VDBEHDR) tsrc rm tsrc/sqlite.h.in tsrc/parse.y cp parse.c opcodes.c tsrc # Rules to build the LEMON compiler generator # lemon: $(TOP)/tool/lemon.c $(TOP)/tool/lempar.c $(BCC) -o lemon $(TOP)/tool/lemon.c cp $(TOP)/tool/lempar.c . | > | 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 | # target_source: $(SRC) $(VDBEHDR) opcodes.c rm -rf tsrc mkdir tsrc cp $(SRC) $(VDBEHDR) tsrc rm tsrc/sqlite.h.in tsrc/parse.y cp parse.c opcodes.c tsrc cp $(TOP)/sqlite3.def tsrc # Rules to build the LEMON compiler generator # lemon: $(TOP)/tool/lemon.c $(TOP)/tool/lempar.c $(BCC) -o lemon $(TOP)/tool/lemon.c cp $(TOP)/tool/lempar.c . |
︙ | ︙ |
Changes to mkdll.sh.
1 2 | #!/bin/sh # | | < < < | > | < > > | < < | < < < < | < | | < < < | < < < < < < < < < | | < < < < < < < < | < | | < < < | < < < | < < < < < < < < < < < < < < < < < < < < < < < < < < < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #!/bin/sh # # This script is used to compile SQLite into a DLL. # # Two separate DLLs are generated. "sqlite3.dll" is the core # library. "tclsqlite3.dll" contains the TCL bindings and is the # library that is loaded into TCL in order to run SQLite. # make target_source cd tsrc PATH=$PATH:/opt/mingw/bin TCLDIR=/home/drh/tcltk/846/win/846win TCLSTUBLIB=$TCLDIR/libtcl84stub.a OPTS='-DUSE_TCL_STUBS=1 -DNDEBUG=1 -DTHREADSAFE=1' CC="i386-mingw32msvc-gcc -O2 $OPTS -I. -I$TCLDIR" rm shell.c for i in *.c; do CMD="$CC -c $i" echo $CMD $CMD done echo 'EXPORTS' >tclsqlite3.def echo 'Tclsqlite3_Init' >>tclsqlite3.def echo 'Sqlite3_Init' >>tclsqlite3.def i386-mingw32msvc-dllwrap \ --def tclsqlite3.def -v --export-all \ --driver-name i386-mingw32msvc-gcc \ --dlltool-name i386-mingw32msvc-dlltool \ --as i386-mingw32msvc-as \ --target i386-mingw32 \ -dllname tclsqlite3.dll -lmsvcrt *.o $TCLSTUBLIB i386-mingw32msvc-strip tclsqlite3.dll rm tclsqlite.o i386-mingw32msvc-dllwrap \ --def sqlite3.def -v --export-all \ --driver-name i386-mingw32msvc-gcc \ --dlltool-name i386-mingw32msvc-dlltool \ --as i386-mingw32msvc-as \ --target i386-mingw32 \ -dllname sqlite3.dll -lmsvcrt *.o i386-mingw32msvc-strip sqlite3.dll cd .. |
Added mkso.sh.
> > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #!/bin/sh # # This script is used to compile SQLite into a shared library on Linux. # # Two separate shared libraries are generated. "sqlite3.so" is the core # library. "tclsqlite3.so" contains the TCL bindings and is the # library that is loaded into TCL in order to run SQLite. # make target_source cd tsrc rm shell.c TCLDIR=/home/drh/tcltk/846/linux/846linux TCLSTUBLIB=$TCLDIR/libtclstub8.4g.a OPTS='-DUSE_TCL_STUBS=1 -DNDEBUG=1' for i in *.c; do CMD="cc -fPIC $OPTS -O2 -I. -I$TCLDIR -c $i" echo $CMD $CMD done echo gcc -shared *.o $TCLSTUBLIB -o tclsqlite3.so gcc -shared *.o $TCLSTUBLIB -o tclsqlite3.so strip tclsqlite3.so rm tclsqlite.c tclsqlite.o echo gcc -shared *.o -o sqlite3.so gcc -shared *.o -o sqlite3.so strip sqlite3.so cd .. |
Changes to publish.sh.
︙ | ︙ | |||
10 11 12 13 14 15 16 | # script. # srcdir=`echo "$0" | sed 's%\(^.*\)/[^/][^/]*$%\1%'` # Get the makefile. # cp $srcdir/Makefile.linux-gcc ./Makefile | < | < | | < < | > > > | | < < < | | < | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | | | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | # script. # srcdir=`echo "$0" | sed 's%\(^.*\)/[^/][^/]*$%\1%'` # Get the makefile. # cp $srcdir/Makefile.linux-gcc ./Makefile chmod +x $srcdir/install-sh # Get the current version number - needed to help build filenames # VERS=`cat $srcdir/VERSION` VERSW=`sed 's/\./_/g' $srcdir/VERSION` # Start by building an sqlite shell for linux. # make clean make sqlite3 strip sqlite3 mv sqlite3 sqlite3-$VERS.bin gzip sqlite3-$VERS.bin mv sqlite3-$VERS.bin.gz doc # Build a source archive useful for windows. # make target_source cd tsrc zip ../doc/sqlite-source-$VERSW.zip * cd .. # Build the sqlite.so and tclsqlite.so shared libraries # under Linux # . $srcdir/mkso.sh cd tsrc mv tclsqlite3.so tclsqlite-$VERS.so gzip tclsqlite-$VERS.so mv tclsqlite-$VERS.so.gz ../doc mv sqlite3.so sqlite-$VERS.so gzip sqlite-$VERS.so mv sqlite-$VERS.so.gz ../doc cd .. # Build the tclsqlite3.dll and sqlite3.dll shared libraries. # . $srcdir/mkdll.sh cd tsrc echo zip ../doc/tclsqlite-$VERSW.zip tclsqlite3.dll zip ../doc/tclsqlite-$VERSW.zip tclsqlite3.dll echo zip ../doc/sqlitedll-$VERSW.zip sqlite3.dll sqlite3.def zip ../doc/sqlitedll-$VERSW.zip sqlite3.dll sqlite3.def cd .. # Build the sqlite.exe executable for windows. # make target_source cd tsrc rm tclsqlite.c |
︙ | ︙ |
Changes to sqlite3.def.
︙ | ︙ | |||
44 45 46 47 48 49 50 51 52 53 54 55 56 57 | sqlite3_finalize sqlite3_free sqlite3_free_table sqlite3_get_auxdata sqlite3_get_table sqlite3_interrupt sqlite3_last_insert_rowid sqlite3_mprintf sqlite3_open sqlite3_open16 sqlite3_prepare sqlite3_prepare16 sqlite3_progress_handler sqlite3_reset | > | 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | sqlite3_finalize sqlite3_free sqlite3_free_table sqlite3_get_auxdata sqlite3_get_table sqlite3_interrupt sqlite3_last_insert_rowid sqlite3_libversion sqlite3_mprintf sqlite3_open sqlite3_open16 sqlite3_prepare sqlite3_prepare16 sqlite3_progress_handler sqlite3_reset |
︙ | ︙ |
Changes to src/main.c.
︙ | ︙ | |||
10 11 12 13 14 15 16 | ** ************************************************************************* ** Main file for the SQLite library. The routines in this file ** implement the programmer interface to the library. Routines in ** other files are for internal use by SQLite and should not be ** accessed by users of the library. ** | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | ** ************************************************************************* ** Main file for the SQLite library. The routines in this file ** implement the programmer interface to the library. Routines in ** other files are for internal use by SQLite and should not be ** accessed by users of the library. ** ** $Id: main.c,v 1.255 2004/08/28 16:19:01 drh Exp $ */ #include "sqliteInt.h" #include "os.h" #include <ctype.h> /* ** The following constant value is used by the SQLITE_BIGENDIAN and |
︙ | ︙ | |||
368 369 370 371 372 373 374 375 376 377 378 379 380 381 | } /* ** The version of the library */ const char rcsid3[] = "@(#) \044Id: SQLite version " SQLITE_VERSION " $"; const char sqlite3_version[] = SQLITE_VERSION; /* ** This is the default collating function named "BINARY" which is always ** available. */ static int binaryCollatingFunc( void *NotUsed, | > | 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 | } /* ** The version of the library */ const char rcsid3[] = "@(#) \044Id: SQLite version " SQLITE_VERSION " $"; const char sqlite3_version[] = SQLITE_VERSION; const char *sqlite3_libversion(void){ return sqlite3_version; } /* ** This is the default collating function named "BINARY" which is always ** available. */ static int binaryCollatingFunc( void *NotUsed, |
︙ | ︙ |
Changes to www/capi3ref.tcl.
|
| | | 1 2 3 4 5 6 7 8 | set rcsid {$Id: capi3ref.tcl,v 1.10 2004/08/28 16:19:01 drh Exp $} source common.tcl header {C/C++ Interface For SQLite Version 3} puts { <h2>C/C++ Interface For SQLite Version 3</h2> } proc api {name prototype desc {notused x}} { |
︙ | ︙ | |||
42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #define SQLITE_AUTH 23 /* Authorization denied */ #define SQLITE_ROW 100 /* sqlite_step() has another row ready */ #define SQLITE_DONE 101 /* sqlite_step() has finished executing */ } { Many SQLite functions return an integer result code from the set shown above in order to indicates success or failure. } api {} { void *sqlite3_aggregate_context(sqlite3_context*, int nBytes); } { Aggregate functions use the following routine to allocate a structure for storing their state. The first time this routine is called for a particular aggregate, a new structure of size nBytes | > > > > > > > > > | 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #define SQLITE_AUTH 23 /* Authorization denied */ #define SQLITE_ROW 100 /* sqlite_step() has another row ready */ #define SQLITE_DONE 101 /* sqlite_step() has finished executing */ } { Many SQLite functions return an integer result code from the set shown above in order to indicates success or failure. } api {} { const char *sqlite3_libversion(void); } { Return a pointer to a string which contains the version number of the library. The same string is available in the global variable named "sqlite3_version". This interface is provided since windows is unable to access global variables in DLLs. } api {} { void *sqlite3_aggregate_context(sqlite3_context*, int nBytes); } { Aggregate functions use the following routine to allocate a structure for storing their state. The first time this routine is called for a particular aggregate, a new structure of size nBytes |
︙ | ︙ |