Skip to content

Commit 299fe42

Browse files
committed
report SQLCipher version alongside SQLite version in shell
1 parent 94e4c45 commit 299fe42

4 files changed

Lines changed: 43 additions & 10 deletions

File tree

src/crypto.c

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,7 @@ int sqlcipher_codec_pragma(sqlite3* db, int iDb, Parse *pParse, const char *zLef
155155
}
156156
} else
157157
if( sqlite3StrICmp(zLeft, "cipher_version")==0 && !zRight ){
158-
#ifdef CIPHER_VERSION_QUALIFIER
159-
char *version = sqlite3_mprintf("%s %s %s", CIPHER_XSTR(CIPHER_VERSION_NUMBER), CIPHER_XSTR(CIPHER_VERSION_QUALIFIER), CIPHER_XSTR(CIPHER_VERSION_BUILD));
160-
#else
161-
char *version = sqlite3_mprintf("%s %s", CIPHER_XSTR(CIPHER_VERSION_NUMBER), CIPHER_XSTR(CIPHER_VERSION_BUILD));
162-
#endif
163-
codec_vdbe_return_string(pParse, "cipher_version", version, P4_DYNAMIC);
158+
codec_vdbe_return_string(pParse, "cipher_version", sqlcipher_version(), P4_DYNAMIC);
164159
}else
165160
if( sqlite3StrICmp(zLeft, "cipher")==0 ){
166161
if(ctx) {

src/crypto_impl.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,15 @@ void* sqlcipher_malloc(int sz) {
365365
return ptr;
366366
}
367367

368+
char* sqlcipher_version() {
369+
#ifdef CIPHER_VERSION_QUALIFIER
370+
char *version = sqlite3_mprintf("%s %s %s", CIPHER_XSTR(CIPHER_VERSION_NUMBER), CIPHER_XSTR(CIPHER_VERSION_QUALIFIER), CIPHER_XSTR(CIPHER_VERSION_BUILD));
371+
#else
372+
char *version = sqlite3_mprintf("%s %s", CIPHER_XSTR(CIPHER_VERSION_NUMBER), CIPHER_XSTR(CIPHER_VERSION_BUILD));
373+
#endif
374+
return version;
375+
}
376+
368377
/**
369378
* Initialize new cipher_ctx struct. This function will allocate memory
370379
* for the cipher context and for the key

src/shell.c.in

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9523,6 +9523,16 @@ static int do_meta_command(char *zLine, ShellState *p){
95239523
if( c=='v' && strncmp(azArg[0], "version", n)==0 ){
95249524
utf8_printf(p->out, "SQLite %s %s\n" /*extra-version-info*/,
95259525
sqlite3_libversion(), sqlite3_sourceid());
9526+
/* BEGIN SQLCIPHER */
9527+
#ifdef SQLITE_HAS_CODEC
9528+
{
9529+
extern char* sqlcipher_version();
9530+
char *sqlcipher_ver = sqlcipher_version();
9531+
utf8_printf(p->out, "SQLCipher %s\n", sqlcipher_ver);
9532+
sqlite3_free(sqlcipher_ver);
9533+
}
9534+
#endif
9535+
/* END SQLCIPHER */
95269536
#if SQLITE_HAVE_ZLIB
95279537
utf8_printf(p->out, "zlib version %s\n", zlibVersion());
95289538
#endif
@@ -10416,7 +10426,17 @@ int SQLITE_CDECL wmain(int argc, wchar_t **wargv){
1041610426
}else if( strcmp(z,"-bail")==0 ){
1041710427
bail_on_error = 1;
1041810428
}else if( strcmp(z,"-version")==0 ){
10429+
/* BEGIN SQLCIPHER */
10430+
#ifdef SQLITE_HAS_CODEC
10431+
extern char* sqlcipher_version();
10432+
char *sqlcipher_ver = sqlcipher_version();
10433+
printf("%s %s", sqlite3_libversion(), sqlite3_sourceid());
10434+
printf(" (SQLCipher %s)\n", sqlcipher_ver);
10435+
sqlite3_free(sqlcipher_ver);
10436+
#else
1041910437
printf("%s %s\n", sqlite3_libversion(), sqlite3_sourceid());
10438+
#endif
10439+
/* BEGIN SQLCIPHER */
1042010440
return 0;
1042110441
}else if( strcmp(z,"-interactive")==0 ){
1042210442
stdin_is_interactive = 1;
@@ -10523,17 +10543,25 @@ int SQLITE_CDECL wmain(int argc, wchar_t **wargv){
1052310543
char *zHome;
1052410544
char *zHistory;
1052510545
int nHistory;
10526-
printf(
1052710546
/* BEGIN SQLCIPHER */
1052810547
#ifdef SQLITE_HAS_CODEC
10529-
"SQLCipher version %s %.19s\n" /*extra-version-info*/
10548+
extern char* sqlcipher_version();
10549+
char *sqlcipher_ver = sqlcipher_version();
10550+
printf(
10551+
"SQLite version %s %.19s" /*extra-version-info*/
10552+
" (SQLCipher %s)\n" /*sqlcipher version info*/
10553+
"Enter \".help\" for usage hints.\n",
10554+
sqlite3_libversion(), sqlite3_sourceid(), sqlcipher_ver
10555+
);
10556+
sqlite3_free(sqlcipher_ver);
1053010557
#else
10558+
printf(
1053110559
"SQLite version %s %.19s\n" /*extra-version-info*/
10532-
#endif
10533-
/* END SQLCIPHER */
1053410560
"Enter \".help\" for usage hints.\n",
1053510561
sqlite3_libversion(), sqlite3_sourceid()
1053610562
);
10563+
#endif
10564+
/* END SQLCIPHER */
1053710565
if( warnInmemoryDb ){
1053810566
printf("Connected to a ");
1053910567
printBold("transient in-memory database");

src/sqlcipher.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ void* sqlcipher_memset(void *, unsigned char, int);
8080
int sqlcipher_ismemset(const void *, unsigned char, int);
8181
int sqlcipher_memcmp(const void *, const void *, int);
8282
void sqlcipher_free(void *, int);
83+
char* sqlcipher_version();
8384

8485
/* provider interfaces */
8586
int sqlcipher_register_provider(sqlcipher_provider *);

0 commit comments

Comments
 (0)