mirror of
https://github.com/sqlite/sqlite.git
synced 2025-12-21 13:38:01 +03:00
Add the --once option to the .mode command. Improvements to help text.
FossilOrigin-Name: 253980122a35f787423aaeedbec12ec94b31768f245fe1c1fcc7e08911855c60
This commit is contained in:
12
manifest
12
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Fix\sharmless\scompiler\swarnings.\s\sIncorporate\s"USAGE:"\scomments\son\sdot-command\nimplementations\sinto\sthe\sCLI\s".help"\scommand\soutput.
|
C Add\sthe\s--once\soption\sto\sthe\s.mode\scommand.\s\sImprovements\sto\shelp\stext.
|
||||||
D 2025-11-14T14:59:43.895
|
D 2025-11-14T17:11:06.215
|
||||||
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
|
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
@@ -735,7 +735,7 @@ F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
|
|||||||
F src/resolve.c 5616fbcf3b833c7c705b24371828215ad0925d0c0073216c4f153348d5753f0a
|
F src/resolve.c 5616fbcf3b833c7c705b24371828215ad0925d0c0073216c4f153348d5753f0a
|
||||||
F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
|
F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
|
||||||
F src/select.c ba9cd07ffa3277883c1986085f6ddc4320f4d35d5f212ab58df79a7ecc1a576a
|
F src/select.c ba9cd07ffa3277883c1986085f6ddc4320f4d35d5f212ab58df79a7ecc1a576a
|
||||||
F src/shell.c.in a1c46ccb2e2eb8ffe489ee8fed03d42f386c9bd5ffa74b9fbf0fcc330c5cf18f
|
F src/shell.c.in 80cddc5b2c3b9a2317ba673566b3a4091948ee640cf9e80daa432556418e61aa
|
||||||
F src/sqlite.h.in 684c19c3b093cca7a38e3f6405d067777464285f17a58a78f7f89d6763e011e7
|
F src/sqlite.h.in 684c19c3b093cca7a38e3f6405d067777464285f17a58a78f7f89d6763e011e7
|
||||||
F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
|
F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
|
||||||
F src/sqlite3ext.h 7f236ca1b175ffe03316d974ef57df79b3938466c28d2f95caef5e08c57f3a52
|
F src/sqlite3ext.h 7f236ca1b175ffe03316d974ef57df79b3938466c28d2f95caef5e08c57f3a52
|
||||||
@@ -2175,8 +2175,8 @@ F tool/version-info.c 33d0390ef484b3b1cb685d59362be891ea162123cea181cb8e6d2cf6dd
|
|||||||
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
|
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
|
||||||
F tool/warnings.sh d924598cf2f55a4ecbc2aeb055c10bd5f48114793e7ba25f9585435da29e7e98
|
F tool/warnings.sh d924598cf2f55a4ecbc2aeb055c10bd5f48114793e7ba25f9585435da29e7e98
|
||||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||||
P 2220cb70c2f1ee30dcdf917a20feacdfcb3789433d0645fea626fd4c5cf0d099
|
P 046bfab4a01e8a7cc58d1bdf0756c90ba354562d79e5453c08202daf648e76a6
|
||||||
R 502efdf1aafac3b4fa047f717c227b57
|
R 617f8c7d32295d372a6a7a285c1648b3
|
||||||
U drh
|
U drh
|
||||||
Z 84e7db1443d1d78445106107a04c9aa2
|
Z 8d9d41d539e868e42ddb8706f8074151
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
046bfab4a01e8a7cc58d1bdf0756c90ba354562d79e5453c08202daf648e76a6
|
253980122a35f787423aaeedbec12ec94b31768f245fe1c1fcc7e08911855c60
|
||||||
|
|||||||
108
src/shell.c.in
108
src/shell.c.in
@@ -1273,9 +1273,9 @@ struct ShellState {
|
|||||||
u8 eRestoreState; /* See comments above doAutoDetectRestore() */
|
u8 eRestoreState; /* See comments above doAutoDetectRestore() */
|
||||||
unsigned statsOn; /* True to display memory stats before each finalize */
|
unsigned statsOn; /* True to display memory stats before each finalize */
|
||||||
unsigned mEqpLines; /* Mask of vertical lines in the EQP output graph */
|
unsigned mEqpLines; /* Mask of vertical lines in the EQP output graph */
|
||||||
|
u8 nPopOutput; /* Revert .output settings when reaching zero */
|
||||||
|
u8 nPopMode; /* Revert .mode settings when reaching zero */
|
||||||
int inputNesting; /* Track nesting level of .read and other redirects */
|
int inputNesting; /* Track nesting level of .read and other redirects */
|
||||||
int outCount; /* Revert to stdout when reaching zero */
|
|
||||||
int cnt; /* Number of records displayed so far */
|
|
||||||
i64 lineno; /* Line number of last line read from in */
|
i64 lineno; /* Line number of last line read from in */
|
||||||
const char *zInFile; /* Name of the input file */
|
const char *zInFile; /* Name of the input file */
|
||||||
int openFlags; /* Additional flags to open. (SQLITE_OPEN_NOFOLLOW) */
|
int openFlags; /* Additional flags to open. (SQLITE_OPEN_NOFOLLOW) */
|
||||||
@@ -1617,6 +1617,23 @@ static int modeFind(const char *zName){
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Save or restore the current output mode
|
||||||
|
*/
|
||||||
|
static void modePush(ShellState *p){
|
||||||
|
if( p->nPopMode==0 ){
|
||||||
|
modeFree(&p->modePrior);
|
||||||
|
modeDup(&p->modePrior,&p->mode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
static void modePop(ShellState *p){
|
||||||
|
if( p->modePrior.spec.iVersion>0 ){
|
||||||
|
modeFree(&p->mode);
|
||||||
|
p->mode = p->modePrior;
|
||||||
|
memset(&p->modePrior, 0, sizeof(p->modePrior));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** A callback for the sqlite3_log() interface.
|
** A callback for the sqlite3_log() interface.
|
||||||
@@ -1861,21 +1878,6 @@ edit_func_end:
|
|||||||
}
|
}
|
||||||
#endif /* SQLITE_NOHAVE_SYSTEM */
|
#endif /* SQLITE_NOHAVE_SYSTEM */
|
||||||
|
|
||||||
/*
|
|
||||||
** Save or restore the current output mode
|
|
||||||
*/
|
|
||||||
static void outputModePush(ShellState *p){
|
|
||||||
modeFree(&p->modePrior);
|
|
||||||
modeDup(&p->modePrior,&p->mode);
|
|
||||||
p->priorShFlgs = p->shellFlgs;
|
|
||||||
}
|
|
||||||
static void outputModePop(ShellState *p){
|
|
||||||
modeFree(&p->mode);
|
|
||||||
p->mode = p->modePrior;
|
|
||||||
modeInit(&p->modePrior);
|
|
||||||
p->shellFlgs = p->priorShFlgs;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Set output mode to text or binary for Windows.
|
** Set output mode to text or binary for Windows.
|
||||||
*/
|
*/
|
||||||
@@ -3150,10 +3152,9 @@ static int shell_exec(
|
|||||||
if( zStmtSql==0 ) zStmtSql = "";
|
if( zStmtSql==0 ) zStmtSql = "";
|
||||||
while( IsSpace(zStmtSql[0]) ) zStmtSql++;
|
while( IsSpace(zStmtSql[0]) ) zStmtSql++;
|
||||||
|
|
||||||
/* save off the prepared statement handle and reset row count */
|
/* save off the prepared statement handle */
|
||||||
if( pArg ){
|
if( pArg ){
|
||||||
pArg->pStmt = pStmt;
|
pArg->pStmt = pStmt;
|
||||||
pArg->cnt = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Show the EXPLAIN QUERY PLAN if .eqp is on */
|
/* Show the EXPLAIN QUERY PLAN if .eqp is on */
|
||||||
@@ -3908,6 +3909,7 @@ static int showHelp(FILE *out, const char *zPattern){
|
|||||||
int j = 0;
|
int j = 0;
|
||||||
int n = 0;
|
int n = 0;
|
||||||
char *zPat;
|
char *zPat;
|
||||||
|
const char *zHit = 0;
|
||||||
if( zPattern==0 ){
|
if( zPattern==0 ){
|
||||||
/* Show just the first line for all help topics */
|
/* Show just the first line for all help topics */
|
||||||
zPattern = "[a-z]";
|
zPattern = "[a-z]";
|
||||||
@@ -3939,7 +3941,8 @@ static int showHelp(FILE *out, const char *zPattern){
|
|||||||
shell_check_oom(zPat);
|
shell_check_oom(zPat);
|
||||||
for(i=0; i<ArraySize(azHelp); i++){
|
for(i=0; i<ArraySize(azHelp); i++){
|
||||||
if( sqlite3_strglob(zPat, azHelp[i])==0 ){
|
if( sqlite3_strglob(zPat, azHelp[i])==0 ){
|
||||||
cli_printf(out, "%s\n", azHelp[i]);
|
if( zHit ) cli_printf(out, "%s\n", zHit);
|
||||||
|
zHit = azHelp[i];
|
||||||
j = i+1;
|
j = i+1;
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
@@ -3952,11 +3955,14 @@ static int showHelp(FILE *out, const char *zPattern){
|
|||||||
}else{
|
}else{
|
||||||
/* when zPattern is a prefix of exactly one command, then include
|
/* when zPattern is a prefix of exactly one command, then include
|
||||||
** the details of that command, which should begin at offset j */
|
** the details of that command, which should begin at offset j */
|
||||||
|
cli_printf(out, "%s\n", zHit);
|
||||||
while( j<ArraySize(azHelp)-1 && azHelp[j][0]==' ' ){
|
while( j<ArraySize(azHelp)-1 && azHelp[j][0]==' ' ){
|
||||||
cli_printf(out, "%s\n", azHelp[j]);
|
cli_printf(out, "%s\n", azHelp[j]);
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
cli_printf(out, "%s\n", zHit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sqlite3_free(zPat);
|
sqlite3_free(zPat);
|
||||||
@@ -5223,7 +5229,7 @@ static void output_reset(ShellState *p){
|
|||||||
sqlite3_sleep(2000);
|
sqlite3_sleep(2000);
|
||||||
}
|
}
|
||||||
sqlite3_free(zCmd);
|
sqlite3_free(zCmd);
|
||||||
outputModePop(p);
|
modePop(p);
|
||||||
p->doXdgOpen = 0;
|
p->doXdgOpen = 0;
|
||||||
}
|
}
|
||||||
#endif /* !defined(SQLITE_NOHAVE_SYSTEM) */
|
#endif /* !defined(SQLITE_NOHAVE_SYSTEM) */
|
||||||
@@ -7290,66 +7296,50 @@ static int modeTitleDsply(ShellState *p, int bAll){
|
|||||||
** and relevant options.
|
** and relevant options.
|
||||||
**
|
**
|
||||||
** Options:
|
** Options:
|
||||||
**
|
|
||||||
** --align STRING Set the alignment of text in columnar modes
|
** --align STRING Set the alignment of text in columnar modes
|
||||||
** String consists of characters 'L', 'C', 'R'
|
** String consists of characters 'L', 'C', 'R'
|
||||||
** meaning "left", "centered", and "right", with
|
** meaning "left", "centered", and "right", with
|
||||||
** one letter per column starting from the left.
|
** one letter per column starting from the left.
|
||||||
** Unspecified alignment defaults to 'L'.
|
** Unspecified alignment defaults to 'L'.
|
||||||
**
|
|
||||||
** --charlimit N Set the maximum number of output characters to
|
** --charlimit N Set the maximum number of output characters to
|
||||||
** show for any single SQL value to N. Longer values
|
** show for any single SQL value to N. Longer values
|
||||||
** truncated. Zero means "no limit".
|
** truncated. Zero means "no limit".
|
||||||
**
|
|
||||||
** --colsep STRING Use STRING as the column separator
|
** --colsep STRING Use STRING as the column separator
|
||||||
**
|
|
||||||
** --escape ESC Enable/disable escaping of control characters
|
** --escape ESC Enable/disable escaping of control characters
|
||||||
** in output. ESC can be "off", "ascii", or
|
** in output. ESC can be "off", "ascii", or
|
||||||
** "symbol".
|
** "symbol".
|
||||||
**
|
|
||||||
** --linelimit N Set the maximum number of output lines to show for
|
** --linelimit N Set the maximum number of output lines to show for
|
||||||
** any single SQL value to N. Longer values are
|
** any single SQL value to N. Longer values are
|
||||||
** truncated. Zero means "no limit". Only works
|
** truncated. Zero means "no limit". Only works
|
||||||
** in "line" mode and in columnar modes.
|
** in "line" mode and in columnar modes.
|
||||||
**
|
|
||||||
** --null STRING Render SQL NULL values as the given string
|
** --null STRING Render SQL NULL values as the given string
|
||||||
**
|
** --once Setting changes to the left are reverted after
|
||||||
|
** the next SQL command.
|
||||||
** --quote ARG Enable/disable quoting of text. ARG can be
|
** --quote ARG Enable/disable quoting of text. ARG can be
|
||||||
** "off", "on", "sql", "csv", "html", "tcl",
|
** "off", "on", "sql", "csv", "html", "tcl",
|
||||||
** or "json". "off" means show the text as-is.
|
** or "json". "off" means show the text as-is.
|
||||||
** "on and "sql" are synonyms.
|
** "on and "sql" are synonyms.
|
||||||
**
|
|
||||||
** --reset Changes all mode settings back to their default.
|
** --reset Changes all mode settings back to their default.
|
||||||
**
|
|
||||||
** --rowsep STRING Use STRING as the row separator
|
** --rowsep STRING Use STRING as the row separator
|
||||||
**
|
|
||||||
** --screenwidth N Declare the screen width of the output device
|
** --screenwidth N Declare the screen width of the output device
|
||||||
** to be N characters. An attempt may be made to
|
** to be N characters. An attempt may be made to
|
||||||
** wrap output text to fit within this limit. Zero
|
** wrap output text to fit within this limit. Zero
|
||||||
** means "no limit". Or N can be "auto" to set the
|
** means "no limit". Or N can be "auto" to set the
|
||||||
** width automatically.
|
** width automatically.
|
||||||
**
|
|
||||||
** --tablename NAME Set the name of the table for "insert" mode.
|
** --tablename NAME Set the name of the table for "insert" mode.
|
||||||
**
|
|
||||||
** --textjsonb BOOLEAN If enabled, JSONB text is displayed as text JSON.
|
** --textjsonb BOOLEAN If enabled, JSONB text is displayed as text JSON.
|
||||||
**
|
|
||||||
** --title ARG Whether or not to show column headers, and if so
|
** --title ARG Whether or not to show column headers, and if so
|
||||||
** how to encode them. ARG can be "off", "on",
|
** how to encode them. ARG can be "off", "on",
|
||||||
** "sql", "csv", "html", "tcl", or "json".
|
** "sql", "csv", "html", "tcl", or "json".
|
||||||
**
|
|
||||||
** -v|--verbose Verbose output
|
** -v|--verbose Verbose output
|
||||||
**
|
|
||||||
** --widths LIST Set the columns widths for columnar modes. The
|
** --widths LIST Set the columns widths for columnar modes. The
|
||||||
** argument is a list of integers, one for each
|
** argument is a list of integers, one for each
|
||||||
** column. A "0" width means use a dynamic width
|
** column. A "0" width means use a dynamic width
|
||||||
** based on the actual width of data. If there are
|
** based on the actual width of data. If there are
|
||||||
** fewer entries in LIST than columns, "0" is used
|
** fewer entries in LIST than columns, "0" is used
|
||||||
** for the unspecified widths.
|
** for the unspecified widths.
|
||||||
**
|
|
||||||
** --wordwrap BOOLEAN Enable/disable word wrapping
|
** --wordwrap BOOLEAN Enable/disable word wrapping
|
||||||
**
|
|
||||||
** --wrap N Wrap columns wider than N characters
|
** --wrap N Wrap columns wider than N characters
|
||||||
**
|
|
||||||
** --ww Shorthand for "--wordwrap on"
|
** --ww Shorthand for "--wordwrap on"
|
||||||
*/
|
*/
|
||||||
static int dotCmdMode(ShellState *p){
|
static int dotCmdMode(ShellState *p){
|
||||||
@@ -7512,6 +7502,10 @@ static int dotCmdMode(ShellState *p){
|
|||||||
p->mode.spec.eText = QRF_TEXT_Plain;
|
p->mode.spec.eText = QRF_TEXT_Plain;
|
||||||
p->mode.spec.eBlob = QRF_BLOB_Text;
|
p->mode.spec.eBlob = QRF_BLOB_Text;
|
||||||
chng = 1;
|
chng = 1;
|
||||||
|
}else if( optionMatch(z,"once") ){
|
||||||
|
p->nPopMode = 0;
|
||||||
|
modePush(p);
|
||||||
|
p->nPopMode = 1;
|
||||||
}else if( optionMatch(z,"reset") ){
|
}else if( optionMatch(z,"reset") ){
|
||||||
int saved_eMode = p->mode.eMode;
|
int saved_eMode = p->mode.eMode;
|
||||||
modeFree(&p->mode);
|
modeFree(&p->mode);
|
||||||
@@ -7634,6 +7628,7 @@ static int dotCmdMode(ShellState *p){
|
|||||||
char *zDesc;
|
char *zDesc;
|
||||||
const char *zSetting;
|
const char *zSetting;
|
||||||
|
|
||||||
|
if( p->nPopMode ) sqlite3_str_appendall(pDesc, "--once ");
|
||||||
sqlite3_str_appendall(pDesc,pI->zName);
|
sqlite3_str_appendall(pDesc,pI->zName);
|
||||||
if( bAll || (p->mode.spec.nAlign && pI->eCx==2) ){
|
if( bAll || (p->mode.spec.nAlign && pI->eCx==2) ){
|
||||||
int ii;
|
int ii;
|
||||||
@@ -7741,40 +7736,29 @@ static int dotCmdMode(ShellState *p){
|
|||||||
** into /dev/null or the equivalent.
|
** into /dev/null or the equivalent.
|
||||||
**
|
**
|
||||||
** Options:
|
** Options:
|
||||||
**
|
|
||||||
** --bom Prepend a byte-order mark to the output
|
** --bom Prepend a byte-order mark to the output
|
||||||
**
|
|
||||||
** -e Accumulate output in a temporary text file then
|
** -e Accumulate output in a temporary text file then
|
||||||
** launch a text editor when the redirection ends.
|
** launch a text editor when the redirection ends.
|
||||||
**
|
|
||||||
** --error-prefix X Use X as the left-margin prefix for error messages.
|
** --error-prefix X Use X as the left-margin prefix for error messages.
|
||||||
** Set to an empty string to restore the default.
|
** Set to an empty string to restore the default.
|
||||||
**
|
|
||||||
** --glob GLOB Raise an error if the memory buffer does not match
|
** --glob GLOB Raise an error if the memory buffer does not match
|
||||||
** the GLOB pattern.
|
** the GLOB pattern.
|
||||||
**
|
|
||||||
** --keep Continue using the same "memory" buffer. Do not
|
** --keep Continue using the same "memory" buffer. Do not
|
||||||
** reset it or delete it. Useful in combination with
|
** reset it or delete it. Useful in combination with
|
||||||
** --glob, --not-glob, and/or --verify.
|
** --glob, --not-glob, and/or --verify.
|
||||||
**
|
|
||||||
** ---notglob GLOB Raise an error if the memory buffer does not match
|
** ---notglob GLOB Raise an error if the memory buffer does not match
|
||||||
** the GLOB pattern.
|
** the GLOB pattern.
|
||||||
**
|
|
||||||
** --plain Use plain text rather than HTML tables with -w
|
** --plain Use plain text rather than HTML tables with -w
|
||||||
**
|
|
||||||
** --show Write the memory buffer to the screen, for debugging.
|
** --show Write the memory buffer to the screen, for debugging.
|
||||||
**
|
|
||||||
** --verify ENDMARK Read subsequent lines of text until the first line
|
** --verify ENDMARK Read subsequent lines of text until the first line
|
||||||
** that matches ENDMARK. Discard the ENDMARK. Compare
|
** that matches ENDMARK. Discard the ENDMARK. Compare
|
||||||
** the text against the accumulated output in memory and
|
** the text against the accumulated output in memory and
|
||||||
** raise an error if there are any differences.
|
** raise an error if there are any differences.
|
||||||
**
|
|
||||||
** -w Show the output in a web browser. Output is
|
** -w Show the output in a web browser. Output is
|
||||||
** written into a temporary HTML file until the
|
** written into a temporary HTML file until the
|
||||||
** redirect ends, then the web browser is launched.
|
** redirect ends, then the web browser is launched.
|
||||||
** Query results are shown as HTML tables, unless
|
** Query results are shown as HTML tables, unless
|
||||||
** the --plain is used too.
|
** the --plain is used too.
|
||||||
**
|
|
||||||
** -x Show the output in a spreadsheet. Output is
|
** -x Show the output in a spreadsheet. Output is
|
||||||
** written to a temp file as CSV then the spreadsheet
|
** written to a temp file as CSV then the spreadsheet
|
||||||
** is launched when
|
** is launched when
|
||||||
@@ -7788,15 +7772,11 @@ static int dotCmdMode(ShellState *p){
|
|||||||
** or -x options is used.
|
** or -x options is used.
|
||||||
**
|
**
|
||||||
** Options:
|
** Options:
|
||||||
**
|
|
||||||
** -e Capture output into a temporary file then bring up
|
** -e Capture output into a temporary file then bring up
|
||||||
** a text editor on that temporary file.
|
** a text editor on that temporary file.
|
||||||
**
|
|
||||||
** --plain Use plain text rather than HTML tables with -w
|
** --plain Use plain text rather than HTML tables with -w
|
||||||
**
|
|
||||||
** -w Capture output into an HTML file then bring up that
|
** -w Capture output into an HTML file then bring up that
|
||||||
** file in a web browser
|
** file in a web browser
|
||||||
**
|
|
||||||
** -x Show the output in a spreadsheet. Output is
|
** -x Show the output in a spreadsheet. Output is
|
||||||
** written to a temp file as CSV then the spreadsheet
|
** written to a temp file as CSV then the spreadsheet
|
||||||
** is launched when
|
** is launched when
|
||||||
@@ -7915,9 +7895,9 @@ static int dotCmdOutput(ShellState *p){
|
|||||||
shell_check_oom(zFile);
|
shell_check_oom(zFile);
|
||||||
}
|
}
|
||||||
if( bOnce ){
|
if( bOnce ){
|
||||||
p->outCount = 2;
|
p->nPopOutput = 2;
|
||||||
}else{
|
}else{
|
||||||
p->outCount = 0;
|
p->nPopOutput = 0;
|
||||||
}
|
}
|
||||||
if( eCheck ){
|
if( eCheck ){
|
||||||
char *zTest;
|
char *zTest;
|
||||||
@@ -7966,7 +7946,7 @@ static int dotCmdOutput(ShellState *p){
|
|||||||
#ifndef SQLITE_NOHAVE_SYSTEM
|
#ifndef SQLITE_NOHAVE_SYSTEM
|
||||||
if( eMode=='e' || eMode=='x' || eMode=='w' ){
|
if( eMode=='e' || eMode=='x' || eMode=='w' ){
|
||||||
p->doXdgOpen = 1;
|
p->doXdgOpen = 1;
|
||||||
outputModePush(p);
|
modePush(p);
|
||||||
if( eMode=='x' ){
|
if( eMode=='x' ){
|
||||||
/* spreadsheet mode. Output as CSV. */
|
/* spreadsheet mode. Output as CSV. */
|
||||||
newTempFile(p, "csv");
|
newTempFile(p, "csv");
|
||||||
@@ -11467,9 +11447,9 @@ static int do_meta_command(const char *zLine, ShellState *p){
|
|||||||
}
|
}
|
||||||
|
|
||||||
meta_command_exit:
|
meta_command_exit:
|
||||||
if( p->outCount ){
|
if( p->nPopOutput ){
|
||||||
p->outCount--;
|
p->nPopOutput--;
|
||||||
if( p->outCount==0 ) output_reset(p);
|
if( p->nPopOutput==0 ) output_reset(p);
|
||||||
}
|
}
|
||||||
p->bSafeMode = p->bSafeModePersist;
|
p->bSafeMode = p->bSafeModePersist;
|
||||||
return rc;
|
return rc;
|
||||||
@@ -11896,12 +11876,16 @@ static int process_input(ShellState *p, const char *zSrc){
|
|||||||
errCnt += runOneSqlLine(p, zSql, p->in, startline);
|
errCnt += runOneSqlLine(p, zSql, p->in, startline);
|
||||||
CONTINUE_PROMPT_RESET;
|
CONTINUE_PROMPT_RESET;
|
||||||
nSql = 0;
|
nSql = 0;
|
||||||
if( p->outCount ){
|
if( p->nPopOutput ){
|
||||||
output_reset(p);
|
output_reset(p);
|
||||||
p->outCount = 0;
|
p->nPopOutput = 0;
|
||||||
}else{
|
}else{
|
||||||
clearTempFile(p);
|
clearTempFile(p);
|
||||||
}
|
}
|
||||||
|
if( p->nPopMode ){
|
||||||
|
modePop(p);
|
||||||
|
p->nPopMode = 0;
|
||||||
|
}
|
||||||
p->bSafeMode = p->bSafeModePersist;
|
p->bSafeMode = p->bSafeModePersist;
|
||||||
qss = QSS_Start;
|
qss = QSS_Start;
|
||||||
}else if( nSql && QSS_PLAINWHITE(qss) ){
|
}else if( nSql && QSS_PLAINWHITE(qss) ){
|
||||||
|
|||||||
Reference in New Issue
Block a user