diff --git a/manifest b/manifest index 53f7b5d18c..b3b44ccd92 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C bug\sfix\s(CVS\s130) -D 2000-08-09T17:17:25 +C allow\sreadonly\saccess\swhen\swrite\spermission\sdenied\s(CVS\s131) +D 2000-08-17T09:50:00 F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4 F Makefile.in 670aa9413cb2cdcded23b328a9e255c845c41a1e F README 51f6a4e7408b34afa5bc1c0485f61b6a4efb6958 @@ -7,19 +7,19 @@ F configure 51063d594190fa085f909cefc9427241088bec4f x F configure.in a04f02ba61ed09a00e862b4f78b91b06a559e0b5 F doc/lemon.html e233a3e97a779c7a87e1bc4528c664a58e49dd47 F src/build.c 4d90e9e94750ca80249fc7958c617021d8bb7a50 -F src/dbbe.c 5c69d68fe8d9461e56d066f9a7f693636c02d0c7 -F src/dbbe.h 8718b718b36d37584e9bbdfccec10588fa91271f +F src/dbbe.c 226daaf8c095ceb4aff48cad188dad90643f9867 +F src/dbbe.h 6337132f904e72ecb28b07390021c241397e4cbf F src/delete.c 4d491eaf61b515516749c7ed68fa3b2ee8a09065 F src/expr.c 2fa63f086707176d09092e71832f9bbdc6a8ac85 F src/insert.c f146f149ad2422a1dc3bfa7a1651a25940f98958 F src/main.c ba16b81890d962821bb90f0a4de9a29b0e495eb2 F src/parse.y 5d199034de5d29ebedb42c1c51f34db4df40cbe5 F src/select.c d382e96c2221d08367cc87976f2b574537c9de97 -F src/shell.c cd560887be6fb9cfa477fce7ba60716139189271 +F src/shell.c 0aabf9e5e89fc8ac7a56de7f05255ed6864170f2 F src/shell.tcl 27ecbd63dd88396ad16d81ab44f73e6c0ea9d20e F src/sqlite.h 82ae53028e27919250f886ff9d7c4927de81978a F src/sqliteInt.h f6d1e139b3bfa4ceff2136684e19d76b53178ec0 -F src/tclsqlite.c b1ae6abd50d8b0e2470cc49b5e1d03329a68dd75 +F src/tclsqlite.c 89dc4ba2b521f3e919d6d7aaa4cc1c2aba8e16f3 F src/tokenize.c 097bec5843d4a0fb4509e036fee93bac080c5e73 F src/update.c 51b9ef7434b15e31096155da920302e9db0d27fc F src/util.c b75b33e6bd5d47898bb7ed9fdd0dea4fe7c19b00 @@ -28,7 +28,7 @@ F src/vdbe.h 6c5653241633c583549c2d8097394ab52550eb63 F src/where.c 420f666a38b405cd58bd7af832ed99f1dbc7d336 F test/all.test 0950c135cab7e60c07bd745ccfad1476211e5bd7 F test/copy.test b77a1214bd7756f2849d5c4fa6e715c0ff0c34eb -F test/dbbe.test 0a8e4293cf816e590dcbb01be4cd4e8f7f95bdc8 +F test/dbbe.test c6079572516aeb2739a35fd272b105c45c30cc76 F test/delete.test 402ee3ccb6e544582d24c573ef70b34d09583ae7 F test/expr.test 09b55ccf81cb8cc2f9cd83d592a2ba187ee48ba8 F test/in.test 2c560c0f55fb777029fd9bb5378f2997582aa603 @@ -60,7 +60,7 @@ F www/arch.fig 4e26e9dca3c49724fc8f554c695ddea9f2413156 F www/arch.png c4d908b79065a72e7dcf19317f36d1324c550e87 F www/arch.tcl 4f6a9afecc099a27bba17b4f8cc9561abc15dc40 F www/c_interface.tcl 29593cf77025bab137b7ba64b9459eb5eb6b4873 -F www/changes.tcl 93793b1f28248282fcd3c953f46c78ee7c5819f0 +F www/changes.tcl ebea5c4eeeb210d118d002a2fbc84c8fba5af7e2 F www/crosscompile.tcl 19734ce7f18b16ff2ed8479412abf8aca56e1dcc F www/fileformat.tcl cfb7fba80b7275555281ba2f256c00734bcdd1c9 F www/index.tcl 421bcabc6839eb00698b75b169caa8a559454515 @@ -69,7 +69,7 @@ F www/mingw.tcl fc5f4ba9d336b6e8c97347cc6496d6162461ef60 F www/opcode.tcl cb3a1abf8b7b9be9f3a228d097d6bf8b742c2b6f F www/sqlite.tcl cb0d23d8f061a80543928755ec7775da6e4f362f F www/vdbe.tcl bcbfc33bcdd0ebad95eab31286adb9e1bc289520 -P 2b3511eca7e562ef2428cec2f7eeca1d26b6c1c8 -R feae1ba062714e41beac70a905f9d7a4 +P e8882dac2306afbc7bffdaa93c9a7fc45fdbd8e1 +R 84cf4ce23b5394480238cc25bd273361 U drh -Z 9ca7c4666791da386e3fb1b846e0d62e +Z 4e8cb91c77f87e4664b844fede982b96 diff --git a/manifest.uuid b/manifest.uuid index 1554b72d37..57adeab56f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e8882dac2306afbc7bffdaa93c9a7fc45fdbd8e1 \ No newline at end of file +897b4bc0e92a2c7534d4fa9453a7f8f863fce67a \ No newline at end of file diff --git a/src/dbbe.c b/src/dbbe.c index e34ffd91d6..b9271ad678 100644 --- a/src/dbbe.c +++ b/src/dbbe.c @@ -30,7 +30,7 @@ ** relatively simple to convert to a different database such ** as NDBM, SDBM, or BerkeleyDB. ** -** $Id: dbbe.c,v 1.18 2000/08/02 12:26:29 drh Exp $ +** $Id: dbbe.c,v 1.19 2000/08/17 09:50:00 drh Exp $ */ #include "sqliteInt.h" #include @@ -372,6 +372,8 @@ int sqliteDbbeOpenCursor( /* Trying to read a non-existant file. This is OK. All the ** reads will return empty, which is what we want. */ rc = SQLITE_OK; + }else if( pBe->write==0 ){ + rc = SQLITE_READONLY; }else if( access(zFile,W_OK|R_OK) ){ rc = SQLITE_PERM; }else{ @@ -413,11 +415,13 @@ void sqliteDbbeDropTable(Dbbe *pBe, const char *zTable){ /* ** Reorganize a table to reduce search times and disk usage. */ -void sqliteDbbeReorganizeTable(Dbbe *pBe, const char *zTable){ +int sqliteDbbeReorganizeTable(Dbbe *pBe, const char *zTable){ DbbeCursor *pCrsr; + int rc; - if( sqliteDbbeOpenCursor(pBe, zTable, 1, &pCrsr)!=SQLITE_OK ){ - return; + rc = sqliteDbbeOpenCursor(pBe, zTable, 1, &pCrsr); + if( rc!=SQLITE_OK ){ + return rc; } if( pCrsr && pCrsr->pFile && pCrsr->pFile->dbf ){ gdbm_reorganize(pCrsr->pFile->dbf); @@ -425,6 +429,7 @@ void sqliteDbbeReorganizeTable(Dbbe *pBe, const char *zTable){ if( pCrsr ){ sqliteDbbeCloseCursor(pCrsr); } + return SQLITE_OK; } /* diff --git a/src/dbbe.h b/src/dbbe.h index 8ccb53f18f..329cef3c5c 100644 --- a/src/dbbe.h +++ b/src/dbbe.h @@ -28,7 +28,7 @@ ** This library was originally designed to support the following ** backends: GDBM, NDBM, SDBM, Berkeley DB. ** -** $Id: dbbe.h,v 1.6 2000/06/21 13:59:11 drh Exp $ +** $Id: dbbe.h,v 1.7 2000/08/17 09:50:00 drh Exp $ */ #ifndef _SQLITE_DBBE_H_ #define _SQLITE_DBBE_H_ @@ -79,7 +79,7 @@ int sqliteDbbeOpenCursor(Dbbe*, const char *zName, int writeable, DbbeCursor**); void sqliteDbbeDropTable(Dbbe*, const char *zTableName); /* Reorganize a table to speed access or reduce its disk usage */ -void sqliteDbbeReorganizeTable(Dbbe*, const char *zTableName); +int sqliteDbbeReorganizeTable(Dbbe*, const char *zTableName); /* Close a cursor */ void sqliteDbbeCloseCursor(DbbeCursor*); diff --git a/src/shell.c b/src/shell.c index 629d100838..6dcdccce7b 100644 --- a/src/shell.c +++ b/src/shell.c @@ -24,7 +24,7 @@ ** This file contains code to implement the "sqlite" command line ** utility for accessing SQLite databases. ** -** $Id: shell.c,v 1.20 2000/08/08 20:19:09 drh Exp $ +** $Id: shell.c,v 1.21 2000/08/17 09:50:00 drh Exp $ */ #include #include @@ -659,12 +659,17 @@ int main(int argc, char **argv){ } data.db = db = sqlite_open(argv[1], 0666, &zErrMsg); if( db==0 ){ - if( zErrMsg ){ - fprintf(stderr,"Unable to open database \"%s\": %s\n", argv[1], zErrMsg); + data.db = db = sqlite_open(argv[1], 0444, &zErrMsg); + if( db==0 ){ + if( zErrMsg ){ + fprintf(stderr,"Unable to open database \"%s\": %s\n", argv[1],zErrMsg); + }else{ + fprintf(stderr,"Unable to open database %s\n", argv[1]); + } + exit(1); }else{ - fprintf(stderr,"Unable to open database %s\n", argv[1]); + printf("Database \"%s\" opened READ ONLY!\n", argv[1]); } - exit(1); } data.out = stdout; if( argc==3 ){ diff --git a/src/tclsqlite.c b/src/tclsqlite.c index dc9894c71e..11221a7693 100644 --- a/src/tclsqlite.c +++ b/src/tclsqlite.c @@ -23,7 +23,7 @@ ************************************************************************* ** A TCL Interface to SQLite ** -** $Id: tclsqlite.c,v 1.7 2000/08/04 14:56:25 drh Exp $ +** $Id: tclsqlite.c,v 1.8 2000/08/17 09:50:00 drh Exp $ */ #include "sqlite.h" #include @@ -329,6 +329,7 @@ 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_PkgProvide(interp, "sqlite", "1.0"); return TCL_OK; } int Sqlite_SafeInit(Tcl_Interp *interp){ diff --git a/test/dbbe.test b/test/dbbe.test index d7c2700e27..3c9104e63f 100644 --- a/test/dbbe.test +++ b/test/dbbe.test @@ -23,7 +23,7 @@ # This file implements regression tests for SQLite library. The # focus of this file is exercising the code in dbbe.c. # -# $Id: dbbe.test,v 1.2 2000/06/08 15:10:48 drh Exp $ +# $Id: dbbe.test,v 1.3 2000/08/17 09:50:00 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -130,7 +130,7 @@ do_test dbbe-3.1 { sqlite db testdb 0444 set v [catch {execsql {INSERT INTO t1 VALUES(1)}} msg] lappend v $msg -} {1 {write permission denied for table t1}} +} {1 {table t1 is readonly}} finish_test diff --git a/www/changes.tcl b/www/changes.tcl index 0ca4c7293b..f5ffc41b65 100644 --- a/www/changes.tcl +++ b/www/changes.tcl @@ -17,6 +17,12 @@ proc chng {date desc} { puts "

    $desc

" } +chng {2000 Aug 17} { +
  • Change the sqlite program so that it can read + databases for which it lacks write permission. (It used to + refuse all access if it could not write.)
  • +} + chng {2000 Aug 9} {
  • Treat carriage returns as white space.
  • }