allow readonly access when write permission denied (CVS 131)
FossilOrigin-Name: 897b4bc0e92a2c7534d4fa9453a7f8f863fce67a
This commit is contained in:
parent
30cab80923
commit
167a4b1c90
22
manifest
22
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
|
||||
|
@ -1 +1 @@
|
||||
e8882dac2306afbc7bffdaa93c9a7fc45fdbd8e1
|
||||
897b4bc0e92a2c7534d4fa9453a7f8f863fce67a
|
13
src/dbbe.c
13
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 <gdbm.h>
|
||||
@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -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*);
|
||||
|
15
src/shell.c
15
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 <stdlib.h>
|
||||
#include <string.h>
|
||||
@ -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 ){
|
||||
|
@ -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 <tcl.h>
|
||||
@ -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){
|
||||
|
@ -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
|
||||
|
@ -17,6 +17,12 @@ proc chng {date desc} {
|
||||
puts "<DD><P><UL>$desc</UL></P></DD>"
|
||||
}
|
||||
|
||||
chng {2000 Aug 17} {
|
||||
<li>Change the <b>sqlite</b> program so that it can read
|
||||
databases for which it lacks write permission. (It used to
|
||||
refuse all access if it could not write.)</li>
|
||||
}
|
||||
|
||||
chng {2000 Aug 9} {
|
||||
<li>Treat carriage returns as white space.</li>
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user