diff --git a/manifest b/manifest index fc78ad919e..72514dd434 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fixes\sto\sthe\s"editline"\ssupport\sin\sthe\scommand-line\sshell. -D 2014-02-11T14:37:51.706 +C Updates\sto\sthe\scommand-line\sshell.\s\sSimplify\sthe\sbanner\smessage.\s\sAdd\sthe\n".save"\scommand\sas\san\salias\sfor\s".backup".\s\sWhen\sstarting\swith\sno\sarguments,\ninclude\sa\sbanner\smessage\swarning\sthat\sthe\sdatabase\sis\stransient\sand\sin-memory\nand\smention\sthe\s".open"\scommand. +D 2014-02-11T16:22:18.453 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -220,7 +220,7 @@ F src/random.c d10c1f85b6709ca97278428fd5db5bbb9c74eece F src/resolve.c 7eda9097b29fcf3d2b42fdc17d1de672134e09b6 F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0 F src/select.c 50961f0d0ab8f2d45ff29ec5f91d8db221330ca7 -F src/shell.c b1f75cfcd05b7921d74361f1cb9c01b9ca0b13df +F src/shell.c 3dd86bf73ccd079f0e32ef5069600586085e8239 F src/sqlite.h.in eed7f7d66a60daaa7b4a597dcd9bad87aad9611b F src/sqlite3.rc 11094cc6a157a028b301a9f06b3d03089ea37c3e F src/sqlite3ext.h 886f5a34de171002ad46fae8c36a7d8051c190fc @@ -803,7 +803,7 @@ F test/shared9.test 5f2a8f79b4d6c7d107a01ffa1ed05ae7e6333e21 F test/sharedA.test 0cdf1a76dfa00e6beee66af5b534b1e8df2720f5 F test/shared_err.test 0079c05c97d88cfa03989b7c20a8b266983087aa F test/sharedlock.test 5ede3c37439067c43b0198f580fd374ebf15d304 -F test/shell1.test e7c0b9ebda25d5e78f0a3ea0dc4e31bb6d8098c0 +F test/shell1.test f2a1d471e5cd2b42f7a65b166dc1ace2b8d11583 F test/shell2.test c57da3a381c099b02c813ba156298d5c2f5c93a3 F test/shell3.test 5e8545ec72c4413a0e8d4c6be56496e3c257ca29 F test/shell4.test aa4eef8118b412d1a01477a53426ece169ea86a9 @@ -1153,7 +1153,7 @@ F tool/vdbe-compress.tcl 0cf56e9263a152b84da86e75a5c0cdcdb7a47891 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff -P c950d6c4117d076f871518e738cdf9e8c46a19fc -R c9ba63de227fe5f3c297f7ef3cdd12e1 +P 7989ce5f105657060a39be295255da8eff9ed56e fe284afe739c497e153ac2bc0275f7c9e862c824 +R 6488d4d20aaa0785dbe5d9952b0b36b8 U drh -Z ef37a62508215b02b96d545bd9d80c32 +Z d484b7c22506286af852445c160c123b diff --git a/manifest.uuid b/manifest.uuid index 364e642e70..eacd85a75d 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -7989ce5f105657060a39be295255da8eff9ed56e \ No newline at end of file +f5ad1e1bf2828c5da70c1ff944d8212036142e6f \ No newline at end of file diff --git a/src/shell.c b/src/shell.c index b6733b7ce7..266bb8f90f 100644 --- a/src/shell.c +++ b/src/shell.c @@ -1586,6 +1586,7 @@ static char zHelp[] = ".quit Exit this program\n" ".read FILENAME Execute SQL in FILENAME\n" ".restore ?DB? FILE Restore content of DB (default \"main\") from FILE\n" + ".save FILE Write in-memory database into FILE\n" ".schema ?TABLE? Show the CREATE statements\n" " If TABLE specified, only show tables matching\n" " LIKE pattern TABLE.\n" @@ -2155,7 +2156,9 @@ static int do_meta_command(char *zLine, struct callback_data *p){ if( nArg==0 ) return 0; /* no tokens, no error */ n = strlen30(azArg[0]); c = azArg[0][0]; - if( c=='b' && n>=3 && strncmp(azArg[0], "backup", n)==0 ){ + if( (c=='b' && n>=3 && strncmp(azArg[0], "backup", n)==0) + || (c=='s' && n>=3 && strncmp(azArg[0], "save", n)==0) + ){ const char *zDestFile = 0; const char *zDb = 0; sqlite3 *pDest; @@ -3503,6 +3506,26 @@ static void main_init(struct callback_data *data) { sqlite3_config(SQLITE_CONFIG_SINGLETHREAD); } +/* +** Output text to the console in a font that attracts extra attention. +*/ +#ifdef _WIN32 +static void printBold(const char *zText){ + HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE); + CONSOLE_SCREEN_BUFFER_INFO defaultScreenInfo; + GetConsoleScreenBufferInfo(out, &defaultScreenInfo); + SetConsoleTextAttribute(out, + FOREGROUND_RED|FOREGROUND_INTENSITY + ); + printf("%s", zText); + SetConsoleTextAttribute(out, defaultScreenInfo.wAttributes); +} +#else +static void printBold(const char *zText){ + printf("\033[1m%s\033[0m", zText); +} +#endif + /* ** Get the argument to an --option. Throw an error and die if no argument ** is available. @@ -3523,6 +3546,7 @@ int main(int argc, char **argv){ char *zFirstCmd = 0; int i; int rc = 0; + int warnInmemoryDb = 0; if( strcmp(sqlite3_sourceid(),SQLITE_SOURCE_ID)!=0 ){ fprintf(stderr, "SQLite header and source version mismatch\n%s\n%s\n", @@ -3617,6 +3641,7 @@ int main(int argc, char **argv){ if( data.zDbFilename==0 ){ #ifndef SQLITE_OMIT_MEMORYDB data.zDbFilename = ":memory:"; + warnInmemoryDb = argc==1; #else fprintf(stderr,"%s: Error: no database filename specified\n", Argv0); return 1; @@ -3753,10 +3778,15 @@ int main(int argc, char **argv){ int nHistory; printf( "SQLite version %s %.19s\n" /*extra-version-info*/ - "Enter \".help\" for instructions\n" - "Enter SQL statements terminated with a \";\"\n", + "Enter \".help\" for usage hints.\n", sqlite3_libversion(), sqlite3_sourceid() ); + if( warnInmemoryDb ){ + printf("Connected to a "); + printBold("transient in-memory database."); + printf("\nUse \".open FILENAME\" to reopen on a " + "persistent database.\n"); + } zHome = find_home_dir(); if( zHome ){ nHistory = strlen30(zHome) + 20; diff --git a/test/shell1.test b/test/shell1.test index 2e936a0b53..6ea4f4a82c 100644 --- a/test/shell1.test +++ b/test/shell1.test @@ -105,7 +105,7 @@ do_test shell1-1.7.1 { set rc [lindex $res 0] list $rc \ [regexp {SQLite version} $res] \ - [regexp {Enter SQL statements} $res] + [regexp {Enter ".help" for usage hints} $res] } {0 1 1} # -batch force batch I/O