aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlarrybr <larrybr@noemail.net>2023-03-06 21:38:38 +0000
committerlarrybr <larrybr@noemail.net>2023-03-06 21:38:38 +0000
commit51a31a3b9cdb4cab6f9c57764f3f216f06f2911f (patch)
treedec7b836a6b026d42ebfc96508828fe52318134e /src
parentf30da226e3461eb11e67795ad7a28fa8f5a371a3 (diff)
downloadsqlite-51a31a3b9cdb4cab6f9c57764f3f216f06f2911f.tar.gz
sqlite-51a31a3b9cdb4cab6f9c57764f3f216f06f2911f.zip
Cause CLI to fail noisily when deserialize option used for non-seekable "file".
FossilOrigin-Name: 24bd7e82471925987d924188ce0f80ed4f282b10ea1022e42881a7f529814eb9
Diffstat (limited to 'src')
-rw-r--r--src/shell.c.in22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/shell.c.in b/src/shell.c.in
index b76e44f45..6b9e2b354 100644
--- a/src/shell.c.in
+++ b/src/shell.c.in
@@ -4894,16 +4894,27 @@ static char *readFile(const char *zName, int *pnByte){
long nIn;
size_t nRead;
char *pBuf;
+ int rc;
if( in==0 ) return 0;
- fseek(in, 0, SEEK_END);
+ rc = fseek(in, 0, SEEK_END);
+ if( rc!=0 ){
+ raw_printf(stderr, "Error: '%s' not seekable\n", zName);
+ fclose(in);
+ return 0;
+ }
nIn = ftell(in);
rewind(in);
pBuf = sqlite3_malloc64( nIn+1 );
- if( pBuf==0 ){ fclose(in); return 0; }
+ if( pBuf==0 ){
+ raw_printf(stderr, "Error: out of memory\n");
+ fclose(in);
+ return 0;
+ }
nRead = fread(pBuf, nIn, 1, in);
fclose(in);
if( nRead!=1 ){
sqlite3_free(pBuf);
+ raw_printf(stderr, "Error: cannot read '%s'\n", zName);
return 0;
}
pBuf[nIn] = 0;
@@ -5398,9 +5409,9 @@ static void open_db(ShellState *p, int openFlags){
aData = (unsigned char*)readFile(zDbFilename, &nData);
}else{
aData = readHexDb(p, &nData);
- if( aData==0 ){
- return;
- }
+ }
+ if( aData==0 ){
+ return;
}
rc = sqlite3_deserialize(p->db, "main", aData, nData, nData,
SQLITE_DESERIALIZE_RESIZEABLE |
@@ -8039,7 +8050,6 @@ static int do_meta_command(char *zLine, ShellState *p){
raw_printf(stderr, "Usage: .check GLOB-PATTERN\n");
rc = 2;
}else if( (zRes = readFile("testcase-out.txt", 0))==0 ){
- raw_printf(stderr, "Error: cannot read 'testcase-out.txt'\n");
rc = 2;
}else if( testcase_glob(azArg[1],zRes)==0 ){
utf8_printf(stderr,