@@ -682,12 +682,12 @@
682 682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** May you do good and not evil.
683 683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** May you find forgiveness for yourself and forgive others.
684 684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** May you share freely, never taking more than you give.
685 685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
686 686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*************************************************************************
687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Header file for the Result-Format or "resfmt" utility library for SQLite.
688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** See the README.md documentation for additional information.
687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Header file for the Query Result-Format or "qrf" utility library for
688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SQLite. See the README.md documentation for additional information.
689 689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
690 690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_QRF_H
691 691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_QRF_H
692 692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef __cplusplus
693 693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
extern "C" {
@@ -886,21 +886,23 @@
886 886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** May you do good and not evil.
887 887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** May you find forgiveness for yourself and forgive others.
888 888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** May you share freely, never taking more than you give.
889 889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
890 890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*************************************************************************
891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Implementation of the Result-Format or "qrf" utility library for SQLite.
892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** See the qrf.md documentation for additional information.
891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Implementation of the Query Result-Format or "qrf" utility library for
892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SQLite. See the README.md documentation for additional information.
893 893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
894 894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_QRF_H
895 895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include "qrf.h"
896 896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
897 897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include <string.h>
898 898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include <assert.h>
899 899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include <stdint.h>
900 900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_AMALGAMATION
901 902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* typedef sqlite3_int64 i64; */
903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
902 904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
903 905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A single line in the EQP output */
904 906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct qrfEQPGraphRow qrfEQPGraphRow;
905 907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct qrfEQPGraphRow {
906 908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iEqpId; /* ID for this row */
@@ -3676,19 +3678,21 @@
3676 3678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
3677 3679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3678 3680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case QRF_STYLE_Eqp: {
3679 3681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int expMode = sqlite3_stmt_isexplain(p->pStmt);
3680 3682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( expMode!=2 ){
3681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_stmt_explain(p->pStmt, 2);
3683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc = sqlite3_stmt_explain(p->pStmt, 2);
3684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc ){ qrfError(p, SQLITE_ERROR, sqlite3_errstr(rc)); }
3682 3685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->expMode = expMode+1;
3683 3686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3684 3687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
3685 3688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3686 3689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case QRF_STYLE_Explain: {
3687 3690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int expMode = sqlite3_stmt_isexplain(p->pStmt);
3688 3691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( expMode!=1 ){
3689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_stmt_explain(p->pStmt, 1);
3692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc = sqlite3_stmt_explain(p->pStmt, 1);
3693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc ){ qrfError(p, SQLITE_ERROR, sqlite3_errstr(rc)); }
3690 3694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->expMode = expMode+1;
3691 3695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3692 3696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
3693 3697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3694 3698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -3843,10 +3847,11 @@
3843 3847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
3844 3848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Qrf qrf; /* The new Qrf being created */
3845 3849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3846 3850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pStmt==0 ) return SQLITE_OK; /* No-op */
3847 3851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSpec==0 ) return SQLITE_MISUSE;
3852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3_stmt_busy(pStmt) ) return SQLITE_BUSY;
3848 3853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
qrfInitialize(&qrf, pStmt, pSpec, pzErr);
3849 3854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( qrf.spec.eStyle ){
3850 3855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case QRF_STYLE_Box:
3851 3856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case QRF_STYLE_Column:
3852 3857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case QRF_STYLE_Markdown:
@@ -23628,11 +23633,10 @@
23628 23633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Flags for Mode.mFlags */
23629 23634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define MFLG_ECHO 0x01 /* Echo inputs to output */
23630 23635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define MFLG_CRLF 0x02 /* Use CR/LF output line endings */
23631 23636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define MFLG_HDR 0x04 /* .header used to change headers on/off */
23632 23637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
23633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
23634 23638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
23635 23639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** State information about the database connection is contained in an
23636 23640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** instance of the following structure.
23637 23641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
23638 23642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct ShellState ShellState;
@@ -23670,14 +23674,13 @@
23670 23674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned nTestErr; /* Number of test cases that failed */
23671 23675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_int64 szMax; /* --maxsize argument to .open */
23672 23676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zDestTable; /* Name of destination table when MODE_Insert */
23673 23677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zTempFile; /* Temporary file that might need deleting */
23674 23678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zErrPrefix; /* Alternative error message prefix */
23675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char zTestcase[30]; /* Name of current test case */
23676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char outfile[FILENAME_MAX]; /* Filename for *out */
23677 23679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_stmt *pStmt; /* Current statement if any. */
23678 23680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FILE *pLog; /* Write log output here */
23681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *azPrompt[2]; /* Main and continuation prompt strings */
23679 23682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mode mode; /* Current display mode */
23680 23683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mode modePrior; /* Backup */
23681 23684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct SavedMode { /* Ability to define custom mode configurations */
23682 23685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zTag; /* Name of this saved mode */
23683 23686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mode mode; /* The saved mode */
@@ -23685,10 +23688,11 @@
23685 23688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nSavedModes; /* Number of saved .mode settings */
23686 23689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct AuxDb { /* Storage space for auxiliary database connections */
23687 23690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db; /* Connection pointer */
23688 23691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zDbFilename; /* Filename used to open the connection */
23689 23692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zFreeOnClose; /* Free this memory allocation on close */
23693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int mFlgs; /* 0x001: Use zDbFilenaem for prompt */
23690 23694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(SQLITE_ENABLE_SESSION)
23691 23695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nSession; /* Number of active sessions */
23692 23696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
OpenSession aSession[4]; /* Array of sessions. [0] is in focus. */
23693 23697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
23694 23698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} aAuxDb[5], /* Array of all database connections */
@@ -23711,10 +23715,12 @@
23711 23715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char * zInput; /* Input string from wasm/JS proxy */
23712 23716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char * zPos; /* Cursor pos into zInput */
23713 23717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char * zDefaultDbName; /* Default name for db file */
23714 23718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} wasm;
23715 23719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
23720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char zTestcase[30]; /* Name of current test case */
23721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char outfile[FILENAME_MAX]; /* Filename for *out */
23716 23722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
23717 23723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
23718 23724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_SHELL_FIDDLE
23719 23725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static ShellState shellState;
23720 23726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -23947,20 +23953,10 @@
23947 23953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is the name of our program. It is set in main(), used
23948 23954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in a number of other places, mostly for error messages.
23949 23955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
23950 23956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static char *Argv0;
23951 23957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
23952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
23953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Prompt strings. Initialized in main. Settable with
23954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** .prompt main continue
23955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
23956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define PROMPT_LEN_MAX 128
23957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* First line prompt. default: "sqlite> " */
23958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static char mainPrompt[PROMPT_LEN_MAX];
23959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Continuation prompt. default: " ...> " */
23960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static char continuePrompt[PROMPT_LEN_MAX];
23961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
23962 23958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
23963 23959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Write I/O traces to the following stream.
23964 23960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
23965 23961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_IOTRACE
23966 23962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static FILE *iotrace = 0;
@@ -24070,118 +24066,10 @@
24070 24066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(void)gettimeofday(&sNow,0);
24071 24067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return ((i64)sNow.tv_sec)*1000000 + sNow.tv_usec;
24072 24068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
24073 24069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24074 24070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
24075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
24076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
24077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* This is variant of the standard-library strncpy() routine with the
24078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** one change that the destination string is always zero-terminated, even
24079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if there is no zero-terminator in the first n-1 characters of the source
24080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** string.
24081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
24082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static char *shell_strncpy(char *dest, const char *src, size_t n){
24083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- size_t i;
24084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<n-1 && src[i]!=0; i++) dest[i] = src[i];
24085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- dest[i] = 0;
24086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return dest;
24087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
24088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
24089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
24090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** strcpy() workalike to squelch an unwarranted link-time warning
24091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** from OpenBSD.
24092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
24093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void shell_strcpy(char *dest, const char *src){
24094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( (*(dest++) = *(src++))!=0 ){}
24095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
24096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
24097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
24098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Optionally disable dynamic continuation prompt.
24099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Unless disabled, the continuation prompt shows open SQL lexemes if any,
24100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** or open parentheses level if non-zero, or continuation prompt as set.
24101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This facility interacts with the scanner and process_input() where the
24102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** below 5 macros are used.
24103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
24104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_OMIT_DYNAPROMPT
24105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define CONTINUATION_PROMPT continuePrompt
24106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define CONTINUE_PROMPT_RESET
24107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define CONTINUE_PROMPT_AWAITS(p,s)
24108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define CONTINUE_PROMPT_AWAITC(p,c)
24109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define CONTINUE_PAREN_INCR(p,n)
24110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define CONTINUE_PROMPT_PSTATE 0
24111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- typedef void *t_NoDynaPrompt;
24112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define SCAN_TRACKER_REFTYPE t_NoDynaPrompt
24113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #else
24114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define CONTINUATION_PROMPT dynamicContinuePrompt()
24115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define CONTINUE_PROMPT_RESET \
24116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- do {setLexemeOpen(&dynPrompt,0,0); trackParenLevel(&dynPrompt,0);} while(0)
24117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define CONTINUE_PROMPT_AWAITS(p,s) \
24118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(p && stdin_is_interactive) setLexemeOpen(p, s, 0)
24119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define CONTINUE_PROMPT_AWAITC(p,c) \
24120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(p && stdin_is_interactive) setLexemeOpen(p, 0, c)
24121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define CONTINUE_PAREN_INCR(p,n) \
24122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(p && stdin_is_interactive) (trackParenLevel(p,n))
24123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define CONTINUE_PROMPT_PSTATE (&dynPrompt)
24124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- typedef struct DynaPrompt *t_DynaPromptRef;
24125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define SCAN_TRACKER_REFTYPE t_DynaPromptRef
24126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
24127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static struct DynaPrompt {
24128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char dynamicPrompt[PROMPT_LEN_MAX];
24129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char acAwait[2];
24130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int inParenLevel;
24131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zScannerAwaits;
24132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- } dynPrompt = { {0}, {0}, 0, 0 };
24133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
24134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Record parenthesis nesting level change, or force level to 0. */
24135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void trackParenLevel(struct DynaPrompt *p, int ni){
24136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->inParenLevel += ni;
24137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ni==0 ) p->inParenLevel = 0;
24138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->zScannerAwaits = 0;
24139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
24140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
24141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Record that a lexeme is opened, or closed with args==0. */
24142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void setLexemeOpen(struct DynaPrompt *p, char *s, char c){
24143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( s!=0 || c==0 ){
24144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->zScannerAwaits = s;
24145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->acAwait[0] = 0;
24146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
24147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->acAwait[0] = c;
24148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->zScannerAwaits = p->acAwait;
24149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
24150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
24151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
24152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Upon demand, derive the continuation prompt to display. */
24153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static char *dynamicContinuePrompt(void){
24154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( continuePrompt[0]==0
24155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || (dynPrompt.zScannerAwaits==0 && dynPrompt.inParenLevel == 0) ){
24156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return continuePrompt;
24157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
24158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( dynPrompt.zScannerAwaits ){
24159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- size_t ncp = strlen(continuePrompt);
24160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- size_t ndp = strlen(dynPrompt.zScannerAwaits);
24161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ndp > ncp-3 ) return continuePrompt;
24162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- shell_strcpy(dynPrompt.dynamicPrompt, dynPrompt.zScannerAwaits);
24163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( ndp<3 ) dynPrompt.dynamicPrompt[ndp++] = ' ';
24164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- shell_strncpy(dynPrompt.dynamicPrompt+3, continuePrompt+3,
24165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- PROMPT_LEN_MAX-4);
24166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
24167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( dynPrompt.inParenLevel>9 ){
24168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- shell_strncpy(dynPrompt.dynamicPrompt, "(..", 4);
24169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( dynPrompt.inParenLevel<0 ){
24170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- shell_strncpy(dynPrompt.dynamicPrompt, ")x!", 4);
24171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
24172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- shell_strncpy(dynPrompt.dynamicPrompt, "(x.", 4);
24173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- dynPrompt.dynamicPrompt[2] = (char)('0'+dynPrompt.inParenLevel);
24174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
24175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- shell_strncpy(dynPrompt.dynamicPrompt+3, continuePrompt+3,
24176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- PROMPT_LEN_MAX-4);
24177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
24178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
24179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return dynPrompt.dynamicPrompt;
24180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
24181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif /* !defined(SQLITE_OMIT_DYNAPROMPT) */
24182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
24183 24071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Indicate out-of-memory and exit. */
24184 24072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void shell_out_of_memory(void){
24185 24073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eputz("Error: out of memory\n");
24186 24074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cli_exit(1);
24187 24075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -24296,34 +24184,299 @@
24296 24184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
24297 24185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24298 24186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24299 24187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return zLine;
24300 24188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
24190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
24191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The default prompts.
24192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
24193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_PS1
24194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define SQLITE_PS1 "SQLite /f> "
24195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
24196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_PS2
24197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define SQLITE_PS2 "/B.../H> "
24198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
24199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
24200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
24201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return the raw (unexpanded) prompt string. This will be the
24202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** first of the following that exist:
24203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
24204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** * The prompt string specified by the ".prompt" command.
24205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** * The value of the SQLITE_PS1 (or SQLITE_PS2) environment variable.
24206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** * The default prompt string.
24207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
24208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The main prompt is returned if the argument is zero and the
24209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** continuation prompt is returned if the argument is 1.
24210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
24211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const char *prompt_string(ShellState *p, int bContinue){
24212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zPS;
24213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( bContinue==0 || bContinue==1 );
24214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->azPrompt[bContinue] ){
24215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return p->azPrompt[bContinue];
24216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_SHELL_FIDDLE
24218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPS = getenv(bContinue ? "SQLITE_PS2" : "SQLITE_PS1");
24219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zPS ) return zPS;
24220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
24221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bContinue ){
24222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_PS2;
24223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
24224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_PS1;
24225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
24228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
24229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return the name of the open database file, to be used for prompt
24230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** expansion purposes.
24231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
24232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const char *prompt_filename(ShellState *p){
24233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_filename pFN;
24234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zFN = 0;
24235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->pAuxDb->mFlgs & 0x01 ){
24236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFN = p->pAuxDb->zDbFilename;
24237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( p->db && (pFN = sqlite3_db_filename(p->db,0))!=0 ){
24238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFN = sqlite3_filename_database(pFN);
24239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zFN==0 || zFN[0]==0 ){
24241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFN = "in-memory";
24242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return zFN;
24244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
24246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
24247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Expand escapes in the given input prompt string. Return the
24248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** expanded prompt in memory obtained from sqlite3_malloc(). The
24249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** caller is responsible for freeing the memory.
24250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
24251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Early prototypes use U+005c '\\' as the escape character. But
24252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that is an escape character for shells and C and many other languages,
24253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** which can lead to nested quoting problems and confusion. The
24254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** U+0025 '%' character was also tried, and that works pretty well on
24255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** unix, but % is special to many formats on Windows. So now we
24256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** use a forward-slash, U+002f '/', which seems to pass through
24257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** every shell and "make" without issue.
24258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
24259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static char *expand_prompt(
24260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ShellState *p, /* The current shell state */
24261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zPrior, /* Prior input lines not yet processed */
24262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zPrompt /* Prompt string to be expanded */
24263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
24264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str *pOut = sqlite3_str_new(0);
24265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
24266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char c;
24267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int onoff = 1;
24268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int idxSpace = -1;
24269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; zPrompt[i]; i++){
24270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zPrompt[i]!='/' ) continue;
24271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( i>0 ){
24272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( onoff ) sqlite3_str_append(pOut, zPrompt, i);
24273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrompt += i;
24274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = 0;
24275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* At this point zPrompt[0] is a / character and all prior
24277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** characters have already been loaded into pOut. Process the
24278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** escape sequence that zPrompt points to. */
24279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ c = zPrompt[1];
24280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c==0 ){
24281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* / at the end of a line is silently ignored */
24282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
24283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='/' ){
24285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* // maps into a single / */
24286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrompt++;
24287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
24288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c>='0' && c<='7' ){
24290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* /nnn becomes a single byte given by octal nnn */
24291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int v = c - '0';
24292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( i<=2 && zPrompt[i+1]>='0' && zPrompt[i+1]<='7' ){
24293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ v = v*8 + zPrompt[++i] - '0';
24294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( onoff ) sqlite3_str_appendchar(pOut, 1, v);
24296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrompt += i+1;
24297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = -1;
24298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
24299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='e' ){
24301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* /e is shorthand for /033 which is U+001B "Escape" */
24302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( onoff ) sqlite3_str_append(pOut, "\033", 1);
24303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrompt += 2;
24304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = -1;
24305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
24306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
24308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The intent of the following codes it to provide alternative
24309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** text displays depending on whether or not the connection is
24310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** currently in a transaction. Example 1: Show a "*" before the ">"
24311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** like psql: (Note: We encode the "*" as /052 to avoid closing
24312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** out this comment.)
24313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
24314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** .prompt 'sqlite/x/052/;> '
24315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
24316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Example 2: Show database filename is blue if not in a transaction,
24317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or red if within a transaction:
24318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
24319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** .prompt '/e[1;/x31/:34/;m~f>/e[0m '
24320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
24321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c==':' ){
24322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* toggle display on/off */
24323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ onoff = !onoff;
24324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrompt += 2;
24325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = -1;
24326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
24327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c==';' ){
24329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Turn display on */
24330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ onoff = 1;
24331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrompt += 2;
24332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = -1;
24333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
24334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='x' ){
24336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* /x turns display off not in a transaction, on if in txn */
24337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ onoff = p->db && !sqlite3_get_autocommit(p->db);
24338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrompt += 2;
24339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = -1;
24340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
24341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
24343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='f' || c=='F' || c=='~' ){
24344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* /f becomes the tail of the database filename */
24345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* /F becomes the full pathname */
24346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* /~ becomes the full pathname relative to $HOME */
24347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( onoff ){
24348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zFN = prompt_filename(p);
24349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='f' ){
24350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef _WIN32
24351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zTail = strrchr(zFN,'\\');
24352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
24353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zTail = strrchr(zFN,'/');
24354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
24355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zTail && zTail[1] ) zFN = &zTail[1];
24356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( c=='~' ){
24357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zHOME = getenv("HOME");
24358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ size_t nHOME = zHOME ? strlen(zHOME) : 0;
24359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nHOME<strlen(zFN)
24360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && zHOME!=0 && zFN!=0 /* <--- these silence compiler warnings */
24361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && memcmp(zHOME,zFN,nHOME)==0
24362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
24363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_append(pOut,"~",1);
24364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFN += nHOME;
24365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_appendall(pOut, zFN);
24368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrompt += 2;
24370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = -1;
24371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
24372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
24374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='H' ){
24375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* /H becomes text needed to terminate current input */
24376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( onoff ){
24377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_int64 R = zPrior ? sqlite3_incomplete(zPrior) : 0;
24378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int cc = (R>>16)&0xff;
24379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nParen = R>>32;
24380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int eSemi = (R>>8)&0xff;
24381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cc==0 ){
24382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* no-op */
24383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( cc=='-' ){
24384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_append(pOut,"\\n",3);
24385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( cc=='/' ){
24386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_append(pOut,"*/",2);
24387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
24388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_appendchar(pOut, 1, cc);
24389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nParen>0 ){
24391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_appendf(pOut, "%.*c",nParen,')');
24392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( eSemi==1 ){
24394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_append(pOut, ";", 1);
24395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( eSemi==2 ){
24396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_append(pOut, "END;", 4);
24397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( eSemi==3 ){
24398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_append(pOut, ";END;", 5);
24399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrompt += 2;
24402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = -1;
24403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
24404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
24406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='B' ){
24407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* /B is a no-op for the main prompt. For the continuation prompt,
24408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** /B expands to zero or more spaces to make the continuation prompt
24409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** at least as wide as the main prompt. */
24410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( onoff ) idxSpace = sqlite3_str_length(pOut);
24411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrompt += 2;
24412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = -1;
24413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
24414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
24416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* No match to a known escape. Generate an error. */
24417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( onoff ) sqlite3_str_appendf(pOut,"UNKNOWN(\"/%c\")",c);
24418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrompt += 2;
24419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = -1;
24420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( i>0 && onoff ){
24422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_append(pOut, zPrompt, i);
24423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
24425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Expand the /B, if there is one and if this is a continuation prompt */
24426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( idxSpace>=0 && zPrior!=0 && zPrior[0]!=0 ){
24427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zOther = expand_prompt(p, 0, prompt_string(p,0));
24428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ size_t wOther = sqlite3_qrf_wcswidth(zOther);
24429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ size_t wThis = sqlite3_qrf_wcswidth(sqlite3_str_value(pOut));
24430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_free(zOther);
24431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( wOther>wThis ){
24432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *z;
24433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int len;
24434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ size_t nNew = wOther - wThis;
24435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( nNew>0 && nNew<0x7fffffff );
24436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_appendchar(pOut, (int)nNew, ' ');
24437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ len = sqlite3_str_length(pOut);
24438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( len>idxSpace ){
24439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z = sqlite3_str_value(pOut);
24440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memmove(z+idxSpace+nNew, z+idxSpace, len-nNew-idxSpace);
24441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(z+idxSpace, ' ', nNew);
24442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
24446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return sqlite3_str_finish(pOut);
24447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24301 24448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
24302 24449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
24303 24450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Retrieve a single line of input text.
24304 24451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
24305 24452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If in==0 then read from standard input and prompt before each line.
24306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If isContinuation is true, then a continuation prompt is appropriate.
24307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If isContinuation is zero, then the main prompt should be used.
24453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If bContinue is true, then a continuation prompt is appropriate.
24454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If bContinue is zero, then the main prompt should be used.
24308 24455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
24309 24456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If zPrior is not NULL then it is a buffer from a prior call to this
24310 24457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** routine that can be reused.
24311 24458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
24312 24459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The result is stored in space obtained from malloc() and must either
24313 24460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** be freed by the caller or else passed back into this routine via the
24314 24461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** zPrior argument for reuse.
24315 24462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
24316 24463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_SHELL_FIDDLE
24317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static char *one_input_line(ShellState *p, char *zPrior, int isContinuation){
24318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zPrompt;
24464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static char *one_input_line(
24465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ShellState *p, /* Shell state */
24466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zPrior, /* Just the previous line */
24467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zAll, /* All statement text accumulated so far */
24468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int bContinue /* True for a continuation prompt */
24469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
24319 24470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zResult;
24320 24471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FILE *in = p->in;
24321 24472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( in!=0 ){
24322 24473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zResult = local_getline(zPrior, in);
24323 24474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
24324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zPrompt = isContinuation ? CONTINUATION_PROMPT : mainPrompt;
24475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zBase = prompt_string(p, bContinue!=0);
24476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zPrompt = expand_prompt(p, zAll, zBase);
24477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ shell_check_oom(zPrompt);
24325 24478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SHELL_USE_LOCAL_GETLINE
24326 24479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sputz(stdout, zPrompt);
24327 24480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fflush(stdout);
24328 24481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do{
24329 24482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zResult = local_getline(zPrior, stdin);
@@ -24340,10 +24493,11 @@
24340 24493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( seenInterrupt==0 ) break;
24341 24494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zResult = shell_readline("");
24342 24495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24343 24496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zResult && *zResult ) shell_add_history(zResult);
24344 24497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
24498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_free(zPrompt);
24345 24499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24346 24500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return zResult;
24347 24501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24348 24502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !SQLITE_SHELL_FIDDLE */
24349 24503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -24660,10 +24814,58 @@
24660 24814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24661 24815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24662 24816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_value(pCtx, apVal[0]);
24663 24817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24664 24818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
24819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
24820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SQL function: shell_prompt_test(PROMPT)
24821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** shell_prompt_test(PROMPT,PRIOR)
24822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** shell_prompt_test(PROMPT,PRIOR,FILENAME)
24823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
24824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return the shell prompt, with escapes expanded, for testing purposes.
24825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The first argument is the raw (unexpanded) prompt string. Or if the
24826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** first argument is NULL, then use whatever prompt string is currently
24827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** configured. If the second argument exists and is not NULL, then the
24828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** second argument is understood to be prior incomplete text and a
24829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** continuation prompt is generated. If a third argument is provided,
24830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** it is assumed to be the full pathname of the database file.
24831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
24832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void shellExpandPrompt(
24833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_context *pCtx,
24834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nVal,
24835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_value **apVal
24836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
24837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ShellState *p = (ShellState*)sqlite3_user_data(pCtx);
24838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zPrompt;
24839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zPrior;
24840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zSavedDbFile;
24841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int mSavedFlgs;
24842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zFName;
24843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zRes;
24844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
24845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nVal<2
24846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (zPrior = (const char*)sqlite3_value_text(apVal[1]))==0
24847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || zPrior[0]==0
24848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
24849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrior = 0;
24850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrompt = (const char*)sqlite3_value_text(apVal[0]);
24852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zPrompt==0 ){
24853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPrompt = prompt_string(p, zPrior!=0);
24854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zSavedDbFile = p->pAuxDb->zDbFilename;
24856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mSavedFlgs = p->pAuxDb->mFlgs;
24857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nVal>=3 && (zFName = (const char*)sqlite3_value_text(apVal[2]))!=0 ){
24858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pAuxDb->zDbFilename = zFName;
24859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pAuxDb->mFlgs |= 0x001;
24860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zRes = expand_prompt(p, zPrior, zPrompt);
24862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pAuxDb->zDbFilename = zSavedDbFile;
24863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pAuxDb->mFlgs = mSavedFlgs;
24864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_text(pCtx, zRes, -1, SQLITE_TRANSIENT);
24865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_free(zRes);
24866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24665 24867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
24666 24868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************************* BEGIN PERFORMANCE TIMER *****************************/
24667 24869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(_WIN32) && !defined(WIN32) && !defined(__minux)
24668 24870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include <sys/time.h>
24669 24871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include <sys/resource.h>
@@ -27137,11 +27339,14 @@
27137 27339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" --once Do no more than one progress interrupt",
27138 27340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" --quiet|-q No output except at interrupts",
27139 27341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" --reset Reset the count for each input and interrupt",
27140 27342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" --timeout S Halt after running for S seconds",
27141 27343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
27142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ".prompt MAIN CONTINUE Replace the standard prompts",
27344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ".prompt MAIN CONTINUE Replace the standard prompts",
27345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " --reset Revert to default prompts",
27346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " --show Show the current prompt strings",
27347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " -- No more options. Subsequent args are prompts",
27143 27348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_SHELL_FIDDLE
27144 27349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".quit Stop interpreting input stream, exit if primary.",
27145 27350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".read FILE Read input from FILE or command output",
27146 27351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" If FILE begins with \"|\", it is a command that generates the input.",
27147 27352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -27934,10 +28139,35 @@
27934 28139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the database fails to open, print an error message and exit.
27935 28140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
27936 28141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void open_db(ShellState *p, int openFlags){
27937 28142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->db==0 ){
27938 28143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zDbFilename = p->pAuxDb->zDbFilename;
28144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zHOME; /* Value of HOME environment variable */
28145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zToFree = 0; /* Filename with ~/ prefix expansion */
28146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
28147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If the zDbFilename does not exist and begins with ~/ then replace
28148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the ~ with the home directory.
28149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
28150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zDbFilename && zDbFilename[0]=='~'
28151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef _WIN32
28152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (zDbFilename[1]=='/' || zDbFilename[1]=='\\')
28153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
28154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && zDbFilename[1]=='/'
28155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
28156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && access(zDbFilename,0)!=0
28157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (zHOME = getenv("HOME"))!=0 && zHOME[0]!=0
28158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
28159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ size_t nHOME = strlen(zHOME);
28160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ size_t nFN = strlen(zDbFilename);
28161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zToFree = malloc(nHOME+nFN+1);
28162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zToFree ){
28163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(zToFree, zHOME, nHOME);
28164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(zToFree+nHOME, zDbFilename+1, nFN);
28165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDbFilename = zToFree;
28166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
28167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
28168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
27939 28169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->openMode==SHELL_OPEN_UNSPEC ){
27940 28170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDbFilename==0 || zDbFilename[0]==0 ){
27941 28171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->openMode = SHELL_OPEN_NORMAL;
27942 28172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
27943 28173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->openMode = (u8)deduceDatabaseType(zDbFilename,
@@ -28067,10 +28297,17 @@
28067 28297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_create_function(p->db, "edit", 1, SQLITE_UTF8, 0,
28068 28298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
editFunc, 0, 0);
28069 28299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_create_function(p->db, "edit", 2, SQLITE_UTF8, 0,
28070 28300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
editFunc, 0, 0);
28071 28301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
28302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_create_function(p->db, "shell_prompt_test", 1, SQLITE_UTF8,
28303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p, shellExpandPrompt, 0, 0);
28304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_create_function(p->db, "shell_prompt_test", 2, SQLITE_UTF8,
28305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p, shellExpandPrompt, 0, 0);
28306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_create_function(p->db, "shell_prompt_test", 3, SQLITE_UTF8,
28307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p, shellExpandPrompt, 0, 0);
28308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
28072 28309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
28073 28310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->openMode==SHELL_OPEN_ZIPFILE ){
28074 28311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zSql = sqlite3_mprintf(
28075 28312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"CREATE VIRTUAL TABLE zip USING zipfile(%Q);", zDbFilename);
28076 28313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
shell_check_oom(zSql);
@@ -28100,10 +28337,11 @@
28100 28337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->szMax>0 ){
28101 28338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_file_control(p->db, "main", SQLITE_FCNTL_SIZE_LIMIT, &p->szMax);
28102 28339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
28103 28340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
28104 28341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
28342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ free(zToFree);
28105 28343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
28106 28344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->db!=0 ){
28107 28345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_AUTHORIZATION
28108 28346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->bSafeModePersist ){
28109 28347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_set_authorizer(p->db, safeModeAuth, p);
@@ -33894,16 +34132,43 @@
33894 34132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_progress_handler(p->db, nn, progress_handler, p);
33895 34133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
33896 34134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_PROGRESS_CALLBACK */
33897 34135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
33898 34136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='p' && cli_strncmp(azArg[0], "prompt", n)==0 ){
33899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( nArg >= 2) {
33900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- shell_strncpy(mainPrompt,azArg[1],(int)ArraySize(mainPrompt)-1);
33901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
33902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( nArg >= 3) {
33903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- shell_strncpy(continuePrompt,azArg[2],(int)ArraySize(continuePrompt)-1);
33904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
34137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
34138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int cnt = 0;
34139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int noOpt = 0;
34140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=1; i<nArg; i++){
34141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *z = azArg[i];
34142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( z[0]=='-' && !noOpt ){
34143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( z[1]=='-' ) z++;
34144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( strcmp(z,"-reset")==0 ){
34145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ free(p->azPrompt[0]);
34146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ free(p->azPrompt[1]);
34147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(p->azPrompt, 0, sizeof(p->azPrompt));
34148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else
34149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( strcmp(z,"-show")==0 ){
34150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cli_printf(stdout,"Main prompt: '%s'\n", prompt_string(p, 0));
34151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cli_printf(stdout,"Continuation: '%s'\n", prompt_string(p, 1));
34152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else
34153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( strcmp(z,"-")==0 ){
34154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ noOpt = 1;
34155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else
34156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {
34157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dotCmdError(p, i, "unknown option", 0);
34158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
34159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto meta_command_exit;
34160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
34161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( cnt>1 ){
34162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dotCmdError(p, i, "extra argument", 0);
34163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
34164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto meta_command_exit;
34165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
34166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ free(p->azPrompt[cnt]);
34167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->azPrompt[cnt] = strdup(z);
34168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
34169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
33905 34170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
33906 34171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
33907 34172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_SHELL_FIDDLE
33908 34173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='q' && cli_strncmp(azArg[0], "quit", n)==0 ){
33909 34174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 2;
@@ -35532,124 +35797,49 @@
35532 35797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->bSafeMode = p->bSafeModePersist;
35533 35798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->dot.nArg = 0;
35534 35799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
35535 35800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
35536 35801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
35537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Line scan result and intermediate states (supporting scan resumption)
35538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
35539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifndef CHAR_BIT
35540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define CHAR_BIT 8
35541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
35542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- typedef enum {
35543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- QSS_HasDark = 1<<CHAR_BIT, QSS_EndingSemi = 2<<CHAR_BIT,
35544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- QSS_CharMask = (1<<CHAR_BIT)-1, QSS_ScanMask = 3<<CHAR_BIT,
35545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- QSS_Start = 0
35546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- } QuickScanState;
35547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define QSS_SETV(qss, newst) ((newst) | ((qss) & QSS_ScanMask))
35548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define QSS_INPLAIN(qss) (((qss)&QSS_CharMask)==QSS_Start)
35549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define QSS_PLAINWHITE(qss) (((qss)&~QSS_EndingSemi)==QSS_Start)
35550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define QSS_PLAINDARK(qss) (((qss)&~QSS_EndingSemi)==QSS_HasDark)
35551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define QSS_SEMITERM(qss) (((qss)&~QSS_HasDark)==QSS_EndingSemi)
35552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
35553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
35554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Scan line for classification to guide shell's handling.
35555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The scan is resumable for subsequent lines when prior
35556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** return values are passed as the 2nd argument.
35557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
35558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static QuickScanState quickscan(char *zLine, QuickScanState qss,
35559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SCAN_TRACKER_REFTYPE pst){
35560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char cin;
35561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char cWait = (char)qss; /* intentional narrowing loss */
35562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( cWait==0 ){
35563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- PlainScan:
35564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( (cin = *zLine++)!=0 ){
35565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( IsSpace(cin) )
35566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- continue;
35567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- switch (cin){
35568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case '-':
35569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( *zLine!='-' )
35570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
35571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while((cin = *++zLine)!=0 )
35572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( cin=='\n')
35573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- goto PlainScan;
35574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return qss;
35575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case ';':
35576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- qss |= QSS_EndingSemi;
35577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- continue;
35578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case '/':
35579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( *zLine=='*' ){
35580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ++zLine;
35581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cWait = '*';
35582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CONTINUE_PROMPT_AWAITS(pst, "/*");
35583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- qss = QSS_SETV(qss, cWait);
35584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- goto TermScan;
35585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
35586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
35587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case '[':
35588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cin = ']';
35589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- deliberate_fall_through; /* FALLTHRU */
35590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case '`': case '\'': case '"':
35591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cWait = cin;
35592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- qss = QSS_HasDark | cWait;
35593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CONTINUE_PROMPT_AWAITC(pst, cin);
35594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- goto TermScan;
35595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case '(':
35596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CONTINUE_PAREN_INCR(pst, 1);
35597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
35598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case ')':
35599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CONTINUE_PAREN_INCR(pst, -1);
35600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
35601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- default:
35602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
35603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
35604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- qss = (qss & ~QSS_EndingSemi) | QSS_HasDark;
35605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
35606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
35607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- TermScan:
35608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( (cin = *zLine++)!=0 ){
35609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( cin==cWait ){
35610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- switch( cWait ){
35611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case '*':
35612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( *zLine != '/' )
35613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- continue;
35614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ++zLine;
35615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CONTINUE_PROMPT_AWAITC(pst, 0);
35616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- qss = QSS_SETV(qss, 0);
35617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- goto PlainScan;
35618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case '`': case '\'': case '"':
35619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(*zLine==cWait){
35620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Swallow doubled end-delimiter.*/
35621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ++zLine;
35622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- continue;
35623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
35624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- deliberate_fall_through; /* FALLTHRU */
35625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case ']':
35626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CONTINUE_PROMPT_AWAITC(pst, 0);
35627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- qss = QSS_SETV(qss, 0);
35628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- goto PlainScan;
35629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- default: assert(0);
35630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
35631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
35632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
35633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
35634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return qss;
35802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
35803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Test to see if a line consists entirely of whitespace.
35804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
35805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int line_is_all_whitespace(const char *z){
35806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(; *z; z++){
35807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( IsSpace(z[0]) ) continue;
35808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( *z=='/' && z[1]=='*' ){
35809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z += 2;
35810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( *z && (*z!='*' || z[1]!='/') ){ z++; }
35811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( *z==0 ) return 0;
35812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z++;
35813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
35814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
35815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( *z=='-' && z[1]=='-' ){
35816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z += 2;
35817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( *z && *z!='\n' ){ z++; }
35818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( *z==0 ) return 1;
35819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
35820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
35821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
35822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
35823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
35635 35824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
35636 35825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
35637 35826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
35638 35827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return TRUE if the line typed in is an SQL command terminator other
35639 35828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** than a semi-colon. The SQL Server style "go" command is understood
35640 35829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** as is the Oracle "/".
35641 35830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
35642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static int line_is_command_terminator(char *zLine){
35831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int line_is_command_terminator(const char *zLine){
35643 35832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( IsSpace(zLine[0]) ){ zLine++; };
35644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zLine[0]=='/' )
35645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zLine += 1; /* Oracle */
35646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- else if ( ToLower(zLine[0])=='g' && ToLower(zLine[1])=='o' )
35647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zLine += 2; /* SQL Server */
35648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- else
35649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
35650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return quickscan(zLine, QSS_Start, 0)==QSS_Start;
35833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zLine[0]=='/' && line_is_all_whitespace(&zLine[1]) ){
35834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1; /* Oracle */
35835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
35836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ToLower(zLine[0])=='g' && ToLower(zLine[1])=='o'
35837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && line_is_all_whitespace(&zLine[2]) ){
35838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1; /* SQL Server */
35839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
35840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
35651 35841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
35652 35842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
35653 35843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
35654 35844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The CLI needs a working sqlite3_complete() to work properly. So error
35655 35845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** out of the build if compiling with SQLITE_OMIT_COMPLETE.
@@ -35833,20 +36023,25 @@
35833 36023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
35834 36024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Alternate one_input_line() impl for wasm mode. This is not in the primary
35835 36025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** impl because we need the global shellState and cannot access it from that
35836 36026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** function without moving lots of code around (creating a larger/messier diff).
35837 36027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
35838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static char *one_input_line(ShellState *p, char *zPrior, int isContinuation){
36028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static char *one_input_line(
36029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ShellState *p, /* Shell state */
36030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zPrior, /* Just the prior line of text */
36031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zAll, /* All accumulated statement text */
36032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int bContinue /* True if this is an accumulation */
36033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
35839 36034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Parse the next line from shellState.wasm.zInput. */
35840 36035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zBegin = shellState.wasm.zPos;
35841 36036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *z = zBegin;
35842 36037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zLine = 0;
35843 36038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 nZ = 0;
35844 36039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FILE *in = p->in;
35845 36040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
35846 36041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(in);
35847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- UNUSED_PARAMETER(isContinuation);
36042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ UNUSED_PARAMETER(bContinue);
35848 36043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(!z || !*z){
35849 36044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
35850 36045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
35851 36046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while(*z && IsSpace(*z)) ++z;
35852 36047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zBegin = z;
@@ -35878,12 +36073,12 @@
35878 36073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 nLine; /* Length of current line */
35879 36074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 nSql = 0; /* Bytes of zSql[] used */
35880 36075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 nAlloc = 0; /* Allocated zSql[] space */
35881 36076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc; /* Error code */
35882 36077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int errCnt = 0; /* Number of errors seen */
36078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int hasSemi = 0; /* Input line contains a semicolon */
35883 36079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 startline = 0; /* Line number for start of current input */
35884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- QuickScanState qss = QSS_Start; /* Accumulated line status (so far) */
35885 36080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *saved_zInFile; /* Prior value of p->zInFile */
35886 36081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 saved_lineno; /* Prior value of p->lineno */
35887 36082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
35888 36083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->inputNesting==MAX_INPUT_NESTING ){
35889 36084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This will be more informative in a later version. */
@@ -35894,14 +36089,13 @@
35894 36089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
++p->inputNesting;
35895 36090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
saved_zInFile = p->zInFile;
35896 36091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zInFile = zSrc;
35897 36092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
saved_lineno = p->lineno;
35898 36093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->lineno = 0;
35899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CONTINUE_PROMPT_RESET;
35900 36094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( errCnt==0 || !bail_on_error || (p->in==0 && stdin_is_interactive) ){
35901 36095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fflush(p->out);
35902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zLine = one_input_line(p, zLine, nSql>0);
36096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zLine = one_input_line(p, zLine, zSql, nSql>0);
35903 36097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zLine==0 ){
35904 36098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* End of input */
35905 36099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->in==0 && stdin_is_interactive ) cli_puts("\n", p->out);
35906 36100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
35907 36101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -35908,37 +36102,31 @@
35908 36102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( seenInterrupt ){
35909 36103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->in!=0 ) break;
35910 36104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
seenInterrupt = 0;
35911 36105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
35912 36106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->lineno++;
35913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( QSS_INPLAIN(qss)
35914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && line_is_command_terminator(zLine)
35915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && line_is_complete(zSql, nSql) ){
35916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memcpy(zLine,";",2);
35917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
35918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- qss = quickscan(zLine, qss, CONTINUE_PROMPT_PSTATE);
35919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( QSS_PLAINWHITE(qss) && nSql==0 ){
36107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nSql==0 && line_is_all_whitespace(zLine) ){
35920 36108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Just swallow single-line whitespace */
35921 36109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
echo_group_input(p, zLine);
35922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- qss = QSS_Start;
35923 36110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
35924 36111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
35925 36112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zLine && (zLine[0]=='.' || zLine[0]=='#') && nSql==0 ){
35926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CONTINUE_PROMPT_RESET;
35927 36113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
echo_group_input(p, zLine);
35928 36114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zLine[0]=='.' ){
35929 36115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = do_meta_command(zLine, p);
35930 36116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==2 ){ /* exit requested */
35931 36117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
35932 36118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( rc ){
35933 36119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
errCnt++;
35934 36120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
35935 36121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
35936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- qss = QSS_Start;
35937 36122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
35938 36123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
35939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* No single-line dispositions remain; accumulate line(s). */
36124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( line_is_command_terminator(zLine) && line_is_complete(zSql, nSql) ){
36125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(zLine,";",2);
36126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
36127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ hasSemi = strchr(zLine,';')!=0;
35940 36128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nLine = strlen(zLine);
35941 36129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nSql+nLine+2>=nAlloc ){
35942 36130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Grow buffer by half-again increments when big. */
35943 36131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nAlloc = nSql+(nSql>>1)+nLine+100;
35944 36132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSql = realloc(zSql, nAlloc);
@@ -35962,14 +36150,14 @@
35962 36150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cli_printf(stderr, "%s:%lld: Input SQL is too big: %s bytes\n",
35963 36151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSrc, startline, zSize);
35964 36152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nSql = 0;
35965 36153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
errCnt++;
35966 36154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
35967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( nSql && QSS_SEMITERM(qss) && sqlite3_complete(zSql) ){
36155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
36156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nSql && hasSemi && sqlite3_complete(zSql) ){
35968 36157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
echo_group_input(p, zSql);
35969 36158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
errCnt += runOneSqlLine(p, zSql, p->zInFile, startline);
35970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CONTINUE_PROMPT_RESET;
35971 36159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nSql = 0;
35972 36160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->nPopOutput ){
35973 36161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
output_reset(p);
35974 36162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nPopOutput = 0;
35975 36163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -35978,22 +36166,19 @@
35978 36166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->nPopMode ){
35979 36167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
modePop(p);
35980 36168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nPopMode = 0;
35981 36169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
35982 36170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->bSafeMode = p->bSafeModePersist;
35983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- qss = QSS_Start;
35984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( nSql && QSS_PLAINWHITE(qss) ){
36171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( nSql && line_is_all_whitespace(zSql) ){
35985 36172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
echo_group_input(p, zSql);
35986 36173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nSql = 0;
35987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- qss = QSS_Start;
35988 36174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
35989 36175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
35990 36176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nSql ){
35991 36177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This may be incomplete. Let the SQL parser deal with that. */
35992 36178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
echo_group_input(p, zSql);
35993 36179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
errCnt += runOneSqlLine(p, zSql, p->zInFile, startline);
35994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CONTINUE_PROMPT_RESET;
35995 36180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
35996 36181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
free(zSql);
35997 36182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
free(zLine);
35998 36183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
--p->inputNesting;
35999 36184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zInFile = saved_zInFile;
@@ -36277,12 +36462,10 @@
36277 36462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_SHELL_FIDDLE)
36278 36463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
verify_uninitialized();
36279 36464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
36280 36465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_config(SQLITE_CONFIG_URI, 1);
36281 36466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_config(SQLITE_CONFIG_MULTITHREAD);
36282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(sizeof(mainPrompt), mainPrompt,"sqlite> ");
36283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(sizeof(continuePrompt), continuePrompt," ...> ");
36284 36467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
36285 36468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
36286 36469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
36287 36470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Output text to the console in a font that attracts extra attention.
36288 36471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -36334,11 +36517,12 @@
36334 36517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** memory. https://sqlite.org/forum/forumpost/310cb231b07c80d1.
36335 36518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Testing this: if we (inadvertently) remove the
36336 36519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3_reset_auto_extension() call from main(), most shell tests
36337 36520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** will fail because of a leak message in their output. */
36338 36521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int auto_ext_leak_tester(
36339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3 *db, const char **pzErrMsg,
36522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 *db,
36523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char **pzErrMsg,
36340 36524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const struct sqlite3_api_routines *pThunk
36341 36525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
36342 36526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(void)db; (void)pzErrMsg; (void)pThunk;
36343 36527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
36344 36528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -37012,10 +37196,13 @@
37012 37196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = runOneSqlLine(&data, azCmd[i], "cmdline", aiCmd[i]);
37013 37197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( data.nPopMode ){
37014 37198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
modePop(&data);
37015 37199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
data.nPopMode = 0;
37016 37200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
37201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc ){
37202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto shell_main_exit;
37203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
37017 37204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
37018 37205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( data.nPopOutput && azCmd[i][0]!='.' ){
37019 37206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
output_reset(&data);
37020 37207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
data.nPopOutput = 0;
37021 37208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -37111,10 +37298,12 @@
37111 37298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
free(data.zNonce);
37112 37299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
free(data.dot.zCopy);
37113 37300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
free(data.dot.azArg);
37114 37301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
free(data.dot.aiOfst);
37115 37302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
free(data.dot.abQuot);
37303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ free(data.azPrompt[0]);
37304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ free(data.azPrompt[1]);
37116 37305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( data.nTestRun ){
37117 37306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_fprintf(stdout, "%d test%s run with %d error%s\n",
37118 37307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
data.nTestRun, data.nTestRun==1 ? "" : "s",
37119 37308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
data.nTestErr, data.nTestErr==1 ? "" : "s");
37120 37309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fflush(stdout);
@@ -37270,7 +37459,11 @@
37270 37459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
shellState.wasm.zPos = zSql;
37271 37460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
process_input(&shellState, "<stdin>");
37272 37461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
shellState.wasm.zInput = shellState.wasm.zPos = 0;
37273 37462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
37274 37463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
37464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
37465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *fiddle_get_prompt(void){
37466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return expand_prompt(&shellState, 0, prompt_string(&shellState,0));
37467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
37275 37468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_SHELL_FIDDLE */
37276 37469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************************* End src/shell.c.in ******************/
37277 37470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!