@@ -37,11 +37,11 @@
37 37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef unsigned int u32;
38 38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef unsigned short int u16;
39 39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
40 40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
41 41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Optionally #include a user-defined header, whereby compilation options
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** may be set prior to where they take effect, but after platform setup.
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** may be set prior to where they take effect, but after platform setup.
43 43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If SQLITE_CUSTOM_INCLUDE=? is defined, its value names the #include
44 44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** file. Note that this macro has a like effect on sqlite3.c compilation.
45 45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
46 46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define SHELL_STRINGIFY_(f) #f
47 47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define SHELL_STRINGIFY(f) SHELL_STRINGIFY_(f)
@@ -551,24 +551,25 @@
551 551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( continuePrompt[0]==0
552 552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (dynPrompt.zScannerAwaits==0 && dynPrompt.inParenLevel == 0) ){
553 553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return continuePrompt;
554 554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
555 555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( dynPrompt.zScannerAwaits ){
556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- size_t ncp = strlen(continuePrompt), ndp = strlen(dynPrompt.zScannerAwaits);
556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ size_t ncp = strlen(continuePrompt);
557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ size_t ndp = strlen(dynPrompt.zScannerAwaits);
557 558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ndp > ncp-3 ) return continuePrompt;
558 559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
strcpy(dynPrompt.dynamicPrompt, dynPrompt.zScannerAwaits);
559 560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( ndp<3 ) dynPrompt.dynamicPrompt[ndp++] = ' ';
560 561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
strncpy(dynPrompt.dynamicPrompt+3, continuePrompt+3,
561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- PROMPT_LEN_MAX-4);
562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ PROMPT_LEN_MAX-4);
562 563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
563 564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( dynPrompt.inParenLevel>9 ){
564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- strncpy(dynPrompt.dynamicPrompt, "(..", 4);
565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ strncpy(dynPrompt.dynamicPrompt, "(..", 4);
565 566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( dynPrompt.inParenLevel<0 ){
566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- strncpy(dynPrompt.dynamicPrompt, ")x!", 4);
567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ strncpy(dynPrompt.dynamicPrompt, ")x!", 4);
567 568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- strncpy(dynPrompt.dynamicPrompt, "(x.", 4);
569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- dynPrompt.dynamicPrompt[2] = (char)('0'+dynPrompt.inParenLevel);
569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ strncpy(dynPrompt.dynamicPrompt, "(x.", 4);
570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dynPrompt.dynamicPrompt[2] = (char)('0'+dynPrompt.inParenLevel);
570 571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
571 572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
strncpy(dynPrompt.dynamicPrompt+3, continuePrompt+3, PROMPT_LEN_MAX-4);
572 573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
573 574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
574 575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return dynPrompt.dynamicPrompt;
@@ -1049,11 +1050,11 @@
1049 1050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
1050 1051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zName;
1051 1052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zFake;
1052 1053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(nVal);
1053 1054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zName = (const char*)sqlite3_value_text(apVal[0]);
1054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zFake = zName ? shellFakeSchema(sqlite3_context_db_handle(pCtx), 0, zName) : 0;
1055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFake = zName? shellFakeSchema(sqlite3_context_db_handle(pCtx), 0, zName) : 0;
1055 1056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zFake ){
1056 1057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_text(pCtx, sqlite3_mprintf("/* %s */", zFake),
1057 1058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-1, sqlite3_free);
1058 1059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
free(zFake);
1059 1060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -3050,11 +3051,11 @@
3050 3051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned int i;
3051 3052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(void)pzErrMsg; /* Unused parameter */
3052 3053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3053 3054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_EXTENSION_INIT2(pApi);
3054 3055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<sizeof(aFunc)/sizeof(aFunc[0]) && rc==SQLITE_OK; i++){
3056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<(int)(sizeof(aFunc)/sizeof(aFunc[0])) && rc==SQLITE_OK; i++){
3056 3057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3_create_function(db, aFunc[i].zFuncName, aFunc[i].nArg,
3057 3058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
3058 3059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, aFunc[i].xFunc, 0, 0);
3059 3060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3060 3061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
@@ -3069,10 +3070,724 @@
3069 3070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3070 3071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
3071 3072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3072 3073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3073 3074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************************* End ../ext/misc/decimal.c ********************/
3075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #undef sqlite3_base_init
3076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define sqlite3_base_init sqlite3_base64_init
3077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /************************* Begin ../ext/misc/base64.c ******************/
3078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
3079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2022-11-18
3080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The author disclaims copyright to this source code. In place of
3082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a legal notice, here is a blessing:
3083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you do good and not evil.
3085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you find forgiveness for yourself and forgive others.
3086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you share freely, never taking more than you give.
3087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *************************************************************************
3089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This is a SQLite extension for converting in either direction
3091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** between a (binary) blob and base64 text. Base64 can transit a
3092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sane USASCII channel unmolested. It also plays nicely in CSV or
3093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** written as TCL brace-enclosed literals or SQL string literals,
3094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and can be used unmodified in XML-like documents.
3095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This is an independent implementation of conversions specified in
3097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** RFC 4648, done on the above date by the author (Larry Brasfield)
3098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** who thereby has the right to put this into the public domain.
3099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The conversions meet RFC 4648 requirements, provided that this
3101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** C source specifies that line-feeds are included in the encoded
3102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** data to limit visible line lengths to 72 characters and to
3103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** terminate any encoded blob having non-zero length.
3104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Length limitations are not imposed except that the runtime
3106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SQLite string or blob length limits are respected. Otherwise,
3107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** any length binary sequence can be represented and recovered.
3108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Generated base64 sequences, with their line-feeds included,
3109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** can be concatenated; the result converted back to binary will
3110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** be the concatenation of the represented binary sequences.
3111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This SQLite3 extension creates a function, base64(x), which
3113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** either: converts text x containing base64 to a returned blob;
3114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or converts a blob x to returned text containing base64. An
3115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** error will be thrown for other input argument types.
3116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This code relies on UTF-8 encoding only with respect to the
3118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** meaning of the first 128 (7-bit) codes matching that of USASCII.
3119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** It will fail miserably if somehow made to try to convert EBCDIC.
3120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Because it is table-driven, it could be enhanced to handle that,
3121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** but the world and SQLite have moved on from that anachronism.
3122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** To build the extension:
3124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Set shell variable SQDIR=<your favorite SQLite checkout directory>
3125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** *Nix: gcc -O2 -shared -I$SQDIR -fPIC -o base64.so base64.c
3126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** OSX: gcc -O2 -dynamiclib -fPIC -I$SQDIR -o base64.dylib base64.c
3127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Win32: gcc -O2 -shared -I%SQDIR% -o base64.dll base64.c
3128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Win32: cl /Os -I%SQDIR% base64.c -link -dll -out:base64.dll
3129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
3130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #include <assert.h>
3132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* #include "sqlite3ext.h" */
3134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_EXTENSION_INIT1;
3136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define PC 0x80 /* pad character */
3138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define WS 0x81 /* whitespace */
3139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ND 0x82 /* Not above or digit-value */
3140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define PAD_CHAR '='
3141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef U8_TYPEDEF
3143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* typedef unsigned char u8; */
3144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define U8_TYPEDEF
3145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
3146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const u8 b64DigitValues[128] = {
3148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* HT LF VT FF CR */
3149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ND,ND,ND,ND, ND,ND,ND,ND, ND,WS,WS,WS, WS,WS,ND,ND,
3150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* US */
3151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ND,ND,ND,ND, ND,ND,ND,ND, ND,ND,ND,ND, ND,ND,ND,ND,
3152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*sp + / */
3153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WS,ND,ND,ND, ND,ND,ND,ND, ND,ND,ND,62, ND,ND,ND,63,
3154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 0 1 5 9 = */
3155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 52,53,54,55, 56,57,58,59, 60,61,ND,ND, ND,PC,ND,ND,
3156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* A O */
3157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ND, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14,
3158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* P Z */
3159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 15,16,17,18, 19,20,21,22, 23,24,25,ND, ND,ND,ND,ND,
3160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* a o */
3161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ND,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
3162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* p z */
3163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 41,42,43,44, 45,46,47,48, 49,50,51,ND, ND,ND,ND,ND
3164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
3165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const char b64Numerals[64+1]
3167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
3168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define BX_DV_PROTO(c) \
3170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ((((u8)(c))<0x80)? (u8)(b64DigitValues[(u8)(c)]) : 0x80)
3171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define IS_BX_DIGIT(bdp) (((u8)(bdp))<0x80)
3172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define IS_BX_WS(bdp) ((bdp)==WS)
3173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define IS_BX_PAD(bdp) ((bdp)==PC)
3174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define BX_NUMERAL(dv) (b64Numerals[(u8)(dv)])
3175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Width of base64 lines. Should be an integer multiple of 4. */
3176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define B64_DARK_MAX 72
3177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Encode a byte buffer into base64 text with linefeeds appended to limit
3179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** encoded group lengths to B64_DARK_MAX or to terminate the last group.
3180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
3181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static char* toBase64( u8 *pIn, int nbIn, char *pOut ){
3182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nCol = 0;
3183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( nbIn >= 3 ){
3184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Do the bit-shuffle, exploiting unsigned input to avoid masking. */
3185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut[0] = BX_NUMERAL(pIn[0]>>2);
3186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut[1] = BX_NUMERAL(((pIn[0]<<4)|(pIn[1]>>4))&0x3f);
3187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut[2] = BX_NUMERAL(((pIn[1]&0xf)<<2)|(pIn[2]>>6));
3188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut[3] = BX_NUMERAL(pIn[2]&0x3f);
3189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut += 4;
3190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nbIn -= 3;
3191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIn += 3;
3192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (nCol += 4)>=B64_DARK_MAX || nbIn<=0 ){
3193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pOut++ = '\n';
3194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nCol = 0;
3195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nbIn > 0 ){
3198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ signed char nco = nbIn+1;
3199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nbe;
3200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned long qv = *pIn++;
3201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for( nbe=1; nbe<3; ++nbe ){
3202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ qv <<= 8;
3203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nbe<nbIn ) qv |= *pIn++;
3204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for( nbe=3; nbe>=0; --nbe ){
3206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char ce = (nbe<nco)? BX_NUMERAL((u8)(qv & 0x3f)) : PAD_CHAR;
3207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ qv >>= 6;
3208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut[nbe] = ce;
3209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut += 4;
3211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pOut++ = '\n';
3212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pOut = 0;
3214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return pOut;
3215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Skip over text which is not base64 numeral(s). */
3218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static char * skipNonB64( char *s ){
3219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char c;
3220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( (c = *s) && !IS_BX_DIGIT(BX_DV_PROTO(c)) ) ++s;
3221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return s;
3222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Decode base64 text into a byte buffer. */
3225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static u8* fromBase64( char *pIn, int ncIn, u8 *pOut ){
3226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ncIn>0 && pIn[ncIn-1]=='\n' ) --ncIn;
3227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( ncIn>0 && *pIn!=PAD_CHAR ){
3228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static signed char nboi[] = { 0, 0, 1, 2, 3 };
3229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *pUse = skipNonB64(pIn);
3230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned long qv = 0L;
3231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nti, nbo, nac;
3232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ncIn -= (pUse - pIn);
3233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIn = pUse;
3234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nti = (ncIn>4)? 4 : ncIn;
3235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ncIn -= nti;
3236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nbo = nboi[nti];
3237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nbo==0 ) break;
3238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for( nac=0; nac<4; ++nac ){
3239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char c = (nac<nti)? *pIn++ : b64Numerals[0];
3240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 bdp = BX_DV_PROTO(c);
3241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ switch( bdp ){
3242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case ND:
3243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Treat dark non-digits as pad, but they terminate decode too. */
3244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ncIn = 0;
3245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* fall thru */
3246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case WS:
3247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Treat whitespace as pad and terminate this group.*/
3248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nti = nac;
3249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* fall thru */
3250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case PC:
3251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bdp = 0;
3252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ --nbo;
3253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* fall thru */
3254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ default: /* bdp is the digit value. */
3255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ qv = qv<<6 | bdp;
3256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
3257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ switch( nbo ){
3260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 3:
3261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut[2] = (qv) & 0xff;
3262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 2:
3263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut[1] = (qv>>8) & 0xff;
3264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 1:
3265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut[0] = (qv>>16) & 0xff;
3266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut += nbo;
3268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return pOut;
3270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* This function does the work for the SQLite base64(x) UDF. */
3273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void base64(sqlite3_context *context, int na, sqlite3_value *av[]){
3274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nb, nc, nv = sqlite3_value_bytes(av[0]);
3275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nvMax = sqlite3_limit(sqlite3_context_db_handle(context),
3276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_LIMIT_LENGTH, -1);
3277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *cBuf;
3278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 *bBuf;
3279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(na==1);
3280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ switch( sqlite3_value_type(av[0]) ){
3281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case SQLITE_BLOB:
3282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nb = nv;
3283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nc = 4*(nv+2/3); /* quads needed */
3284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nc += (nc+(B64_DARK_MAX-1))/B64_DARK_MAX + 1; /* LFs and a 0-terminator */
3285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nvMax < nc ){
3286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_error(context, "blob expanded to base64 too big", -1);
3287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
3288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cBuf = sqlite3_malloc(nc);
3290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !cBuf ) goto memFail;
3291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bBuf = (u8*)sqlite3_value_blob(av[0]);
3292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nc = (int)(toBase64(bBuf, nb, cBuf) - cBuf);
3293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_text(context, cBuf, nc, sqlite3_free);
3294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
3295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case SQLITE_TEXT:
3296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nc = nv;
3297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nb = 3*((nv+3)/4); /* may overestimate due to LF and padding */
3298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nvMax < nb ){
3299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_error(context, "blob from base64 may be too big", -1);
3300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
3301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( nb<1 ){
3302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nb = 1;
3303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bBuf = sqlite3_malloc(nb);
3305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !bBuf ) goto memFail;
3306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cBuf = (char *)sqlite3_value_text(av[0]);
3307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nb = (int)(fromBase64(cBuf, nc, bBuf) - bBuf);
3308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_blob(context, bBuf, nb, sqlite3_free);
3309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
3310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ default:
3311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_error(context, "base64 accepts only blob or text", -1);
3312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
3313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
3315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memFail:
3316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_error(context, "base64 OOM", -1);
3317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
3320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Establish linkage to running SQLite library.
3321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
3322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_SHELL_EXTFUNCS
3323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef _WIN32
3324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
3326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int sqlite3_base_init
3327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
3328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int sqlite3_base64_init
3329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
3330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (sqlite3 *db, char **pzErr, const sqlite3_api_routines *pApi){
3331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_EXTENSION_INIT2(pApi);
3332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)pzErr;
3333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return sqlite3_create_function
3334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (db, "base64", 1,
3335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS|SQLITE_DIRECTONLY|SQLITE_UTF8,
3336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, base64, 0, 0);
3337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
3340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Define some macros to allow this extension to be built into the shell
3341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** conveniently, in conjunction with use of SQLITE_SHELL_EXTFUNCS. This
3342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** allows shell.c, as distributed, to have this extension built in.
3343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
3344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define BASE64_INIT(db) sqlite3_base64_init(db, 0, 0)
3345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define BASE64_EXPOSE(db, pzErr) /* Not needed, ..._init() does this. */
3346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /************************* End ../ext/misc/base64.c ********************/
3348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #undef sqlite3_base_init
3349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define sqlite3_base_init sqlite3_base85_init
3350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OMIT_BASE85_CHECKER
3351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /************************* Begin ../ext/misc/base85.c ******************/
3352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
3353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2022-11-16
3354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The author disclaims copyright to this source code. In place of
3356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a legal notice, here is a blessing:
3357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you do good and not evil.
3359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you find forgiveness for yourself and forgive others.
3360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** May you share freely, never taking more than you give.
3361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *************************************************************************
3363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This is a utility for converting binary to base85 or vice-versa.
3365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** It can be built as a standalone program or an SQLite3 extension.
3366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Much like base64 representations, base85 can be sent through a
3368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sane USASCII channel unmolested. It also plays nicely in CSV or
3369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** written as TCL brace-enclosed literals or SQL string literals.
3370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** It is not suited for unmodified use in XML-like documents.
3371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The encoding used resembles Ascii85, but was devised by the author
3373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (Larry Brasfield) before Mozilla, Adobe, ZMODEM or other Ascii85
3374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** variant sources existed, in the 1984 timeframe on a VAX mainframe.
3375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Further, this is an independent implementation of a base85 system.
3376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Hence, the author has rightfully put this into the public domain.
3377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Base85 numerals are taken from the set of 7-bit USASCII codes,
3379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** excluding control characters and Space ! " ' ( ) { | } ~ Del
3380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in code order representing digit values 0 to 84 (base 10.)
3381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Groups of 4 bytes, interpreted as big-endian 32-bit values,
3383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** are represented as 5-digit base85 numbers with MS to LS digit
3384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** order. Groups of 1-3 bytes are represented with 2-4 digits,
3385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** still big-endian but 8-24 bit values. (Using big-endian yields
3386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the simplest transition to byte groups smaller than 4 bytes.
3387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** These byte groups can also be considered base-256 numbers.)
3388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Groups of 0 bytes are represented with 0 digits and vice-versa.
3389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** No pad characters are used; Encoded base85 numeral sequence
3390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (aka "group") length maps 1-to-1 to the decoded binary length.
3391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Any character not in the base85 numeral set delimits groups.
3393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** When base85 is streamed or stored in containers of indefinite
3394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** size, newline is used to separate it into sub-sequences of no
3395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** more than 80 digits so that fgets() can be used to read it.
3396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Length limitations are not imposed except that the runtime
3398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SQLite string or blob length limits are respected. Otherwise,
3399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** any length binary sequence can be represented and recovered.
3400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Base85 sequences can be concatenated by separating them with
3401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a non-base85 character; the conversion to binary will then
3402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** be the concatenation of the represented binary sequences.
3403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The standalone program either converts base85 on stdin to create
3405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a binary file or converts a binary file to base85 on stdout.
3406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Read or make it blurt its help for invocation details.
3407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The SQLite3 extension creates a function, base85(x), which will
3409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** either convert text base85 to a blob or a blob to text base85
3410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and return the result (or throw an error for other types.)
3411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Unless built with OMIT_BASE85_CHECKER defined, it also creates a
3412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** function, is_base85(t), which returns 1 iff the text t contains
3413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** nothing other than base85 numerals and whitespace, or 0 otherwise.
3414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** To build the extension:
3416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Set shell variable SQDIR=<your favorite SQLite checkout directory>
3417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and variable OPTS to -DOMIT_BASE85_CHECKER if is_base85() unwanted.
3418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** *Nix: gcc -O2 -shared -I$SQDIR $OPTS -fPIC -o base85.so base85.c
3419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** OSX: gcc -O2 -dynamiclib -fPIC -I$SQDIR $OPTS -o base85.dylib base85.c
3420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Win32: gcc -O2 -shared -I%SQDIR% %OPTS% -o base85.dll base85.c
3421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Win32: cl /Os -I%SQDIR% %OPTS% base85.c -link -dll -out:base85.dll
3422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** To build the standalone program, define PP symbol BASE85_STANDALONE. Eg.
3424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** *Nix or OSX: gcc -O2 -DBASE85_STANDALONE base85.c -o base85
3425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Win32: gcc -O2 -DBASE85_STANDALONE -o base85.exe base85.c
3426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Win32: cl /Os /MD -DBASE85_STANDALONE base85.c
3427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
3428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #include <stdio.h>
3430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #include <memory.h>
3431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #include <string.h>
3432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #include <assert.h>
3433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef OMIT_BASE85_CHECKER
3434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # include <ctype.h>
3435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
3436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef BASE85_STANDALONE
3438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* # include "sqlite3ext.h" */
3440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_EXTENSION_INIT1;
3442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
3444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ifdef _WIN32
3446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # include <io.h>
3447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # include <fcntl.h>
3448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # else
3449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define setmode(fd,m)
3450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # endif
3451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static char *zHelp =
3453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Usage: base85 <dirFlag> <binFile>\n"
3454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " <dirFlag> is either -r to read or -w to write <binFile>,\n"
3455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " content to be converted to/from base85 on stdout/stdin.\n"
3456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " <binFile> names a binary file to be rendered or created.\n"
3457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " Or, the name '-' refers to the stdin or stdout stream.\n"
3458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ;
3459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void sayHelp(){
3461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("%s", zHelp);
3462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
3464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef U8_TYPEDEF
3466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* typedef unsigned char u8; */
3467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define U8_TYPEDEF
3468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
3469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Classify c according to interval within USASCII set w.r.t. base85
3471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ * Values of 1 and 3 are base85 numerals. Values of 0, 2, or 4 are not.
3472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
3473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define B85_CLASS( c ) (((c)>='#')+((c)>'&')+((c)>='*')+((c)>'z'))
3474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Provide digitValue to b85Numeral offset as a function of above class. */
3476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static u8 b85_cOffset[] = { 0, '#', 0, '*'-4, 0 };
3477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define B85_DNOS( c ) b85_cOffset[B85_CLASS(c)]
3478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Say whether c is a base85 numeral. */
3480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define IS_B85( c ) (B85_CLASS(c) & 1)
3481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if 0 /* Not used, */
3483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static u8 base85DigitValue( char c ){
3484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 dv = (u8)(c - '#');
3485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( dv>87 ) return 0xff;
3486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return (dv > 3)? dv-3 : dv;
3487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
3489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Width of base64 lines. Should be an integer multiple of 5. */
3491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define B85_DARK_MAX 80
3492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static char * skipNonB85( char *s ){
3495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char c;
3496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( (c = *s) && !IS_B85(c) ) ++s;
3497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return s;
3498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Convert small integer, known to be in 0..84 inclusive, to base85 numeral.
3501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ * Do not use the macro form with argument expression having a side-effect.*/
3502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if 0
3503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static char base85Numeral( u8 b ){
3504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return (b < 4)? (char)(b + '#') : (char)(b - 4 + '*');
3505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
3507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define base85Numeral( dn )\
3508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ((char)(((dn) < 4)? (char)((dn) + '#') : (char)((dn) - 4 + '*')))
3509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
3510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static char *putcs(char *pc, char *s){
3512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char c;
3513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( (c = *s++)!=0 ) *pc++ = c;
3514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return pc;
3515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Encode a byte buffer into base85 text. If pSep!=0, it's a C string
3518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to be appended to encoded groups to limit their length to B85_DARK_MAX
3519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or to terminate the last group (to aid concatenation.)
3520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
3521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static char* toBase85( u8 *pIn, int nbIn, char *pOut, char *pSep ){
3522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nCol = 0;
3523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( nbIn >= 4 ){
3524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nco = 5;
3525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned long qbv = (pIn[0]<<24)|(pIn[1]<<16)|(pIn[2]<<8)|pIn[3];
3526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( nco > 0 ){
3527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned nqv = (unsigned)(qbv/85UL);
3528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned char dv = qbv - 85UL*nqv;
3529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ qbv = nqv;
3530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut[--nco] = base85Numeral(dv);
3531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nbIn -= 4;
3533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIn += 4;
3534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut += 5;
3535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pSep && (nCol += 5)>=B85_DARK_MAX ){
3536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut = putcs(pOut, pSep);
3537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nCol = 0;
3538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nbIn > 0 ){
3541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nco = nbIn + 1;
3542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned long qv = *pIn++;
3543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nbe = 1;
3544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( nbe++ < nbIn ){
3545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ qv = (qv<<8) | *pIn++;
3546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nCol += nco;
3548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( nco > 0 ){
3549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 dv = (u8)(qv % 85);
3550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ qv /= 85;
3551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut[--nco] = base85Numeral(dv);
3552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOut += (nbIn+1);
3554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pSep && nCol>0 ) pOut = putcs(pOut, pSep);
3556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pOut = 0;
3557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return pOut;
3558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Decode base85 text into a byte buffer. */
3561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static u8* fromBase85( char *pIn, int ncIn, u8 *pOut ){
3562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ncIn>0 && pIn[ncIn-1]=='\n' ) --ncIn;
3563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( ncIn>0 ){
3564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static signed char nboi[] = { 0, 0, 1, 2, 3, 4 };
3565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *pUse = skipNonB85(pIn);
3566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned long qv = 0L;
3567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nti, nbo;
3568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ncIn -= (pUse - pIn);
3569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIn = pUse;
3570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nti = (ncIn>5)? 5 : ncIn;
3571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nbo = nboi[nti];
3572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nbo==0 ) break;
3573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( nti>0 ){
3574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char c = *pIn++;
3575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 cdo = B85_DNOS(c);
3576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ --ncIn;
3577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cdo==0 ) break;
3578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ qv = 85 * qv + (c - cdo);
3579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ --nti;
3580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nbo -= nti; /* Adjust for early (non-digit) end of group. */
3582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ switch( nbo ){
3583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 4:
3584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pOut++ = (qv >> 24)&0xff;
3585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 3:
3586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pOut++ = (qv >> 16)&0xff;
3587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 2:
3588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pOut++ = (qv >> 8)&0xff;
3589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 1:
3590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pOut++ = qv&0xff;
3591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 0:
3592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
3593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return pOut;
3596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef OMIT_BASE85_CHECKER
3599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Say whether input char sequence is all (base85 and/or whitespace).*/
3600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int allBase85( char *p, int len ){
3601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char c;
3602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( len-- > 0 && (c = *p++) != 0 ){
3603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !IS_B85(c) && !isspace(c) ) return 0;
3604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
3606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
3608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef BASE85_STANDALONE
3610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ifndef OMIT_BASE85_CHECKER
3612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* This function does the work for the SQLite is_base85(t) UDF. */
3613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void is_base85(sqlite3_context *context, int na, sqlite3_value *av[]){
3614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(na==1);
3615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ switch( sqlite3_value_type(av[0]) ){
3616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case SQLITE_TEXT:
3617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {
3618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rv = allBase85( (char *)sqlite3_value_text(av[0]),
3619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_value_bytes(av[0]) );
3620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_int(context, rv);
3621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
3623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case SQLITE_NULL:
3624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_null(context);
3625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
3626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ default:
3627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_error(context, "is_base85 accepts only text or NULL", -1);
3628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
3629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # endif
3632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* This function does the work for the SQLite base85(x) UDF. */
3634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void base85(sqlite3_context *context, int na, sqlite3_value *av[]){
3635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nb, nc, nv = sqlite3_value_bytes(av[0]);
3636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nvMax = sqlite3_limit(sqlite3_context_db_handle(context),
3637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_LIMIT_LENGTH, -1);
3638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *cBuf;
3639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 *bBuf;
3640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(na==1);
3641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ switch( sqlite3_value_type(av[0]) ){
3642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case SQLITE_BLOB:
3643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nb = nv;
3644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* ulongs tail newlines tailenc+nul*/
3645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nc = 5*(nv/4) + nv%4 + nv/64+1 + 2;
3646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nvMax < nc ){
3647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_error(context, "blob expanded to base85 too big", -1);
3648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
3649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cBuf = sqlite3_malloc(nc);
3651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !cBuf ) goto memFail;
3652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bBuf = (u8*)sqlite3_value_blob(av[0]);
3653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nc = (int)(toBase85(bBuf, nb, cBuf, "\n") - cBuf);
3654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_text(context, cBuf, nc, sqlite3_free);
3655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
3656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case SQLITE_TEXT:
3657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nc = nv;
3658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nb = 4*(nv/5) + nv%5; /* may overestimate */
3659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nvMax < nb ){
3660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_error(context, "blob from base85 may be too big", -1);
3661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
3662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( nb<1 ){
3663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nb = 1;
3664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bBuf = sqlite3_malloc(nb);
3666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !bBuf ) goto memFail;
3667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cBuf = (char *)sqlite3_value_text(av[0]);
3668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nb = (int)(fromBase85(cBuf, nc, bBuf) - bBuf);
3669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_blob(context, bBuf, nb, sqlite3_free);
3670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
3671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ default:
3672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_error(context, "base85 accepts only blob or text.", -1);
3673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
3674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
3676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memFail:
3677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_error(context, "base85 OOM", -1);
3678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
3681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Establish linkage to running SQLite library.
3682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
3683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_SHELL_EXTFUNCS
3684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef _WIN32
3685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
3687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int sqlite3_base_init
3688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
3689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int sqlite3_base85_init
3690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
3691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (sqlite3 *db, char **pzErr, const sqlite3_api_routines *pApi){
3692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_EXTENSION_INIT2(pApi);
3693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)pzErr;
3694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ifndef OMIT_BASE85_CHECKER
3695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {
3696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc = sqlite3_create_function
3697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (db, "is_base85", 1,
3698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS|SQLITE_UTF8,
3699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, is_base85, 0, 0);
3700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc!=SQLITE_OK ) return rc;
3701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # endif
3703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return sqlite3_create_function
3704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (db, "base85", 1,
3705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS|SQLITE_DIRECTONLY|SQLITE_UTF8,
3706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, base85, 0, 0);
3707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
3710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Define some macros to allow this extension to be built into the shell
3711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** conveniently, in conjunction with use of SQLITE_SHELL_EXTFUNCS. This
3712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** allows shell.c, as distributed, to have this extension built in.
3713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
3714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define BASE85_INIT(db) sqlite3_base85_init(db, 0, 0)
3715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define BASE85_EXPOSE(db, pzErr) /* Not needed, ..._init() does this. */
3716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else /* standalone program */
3718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int main(int na, char *av[]){
3720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int cin;
3721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc = 0;
3722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 bBuf[4*(B85_DARK_MAX/5)];
3723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char cBuf[5*(sizeof(bBuf)/4)+2];
3724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ size_t nio;
3725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ifndef OMIT_BASE85_CHECKER
3726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int b85Clean = 1;
3727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # endif
3728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char rw;
3729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FILE *fb = 0, *foc = 0;
3730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char fmode[3] = "xb";
3731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( na < 3 || av[1][0]!='-' || (rw = av[1][1])==0 || (rw!='r' && rw!='w') ){
3732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sayHelp();
3733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
3734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fmode[0] = rw;
3736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( av[2][0]=='-' && av[2][1]==0 ){
3737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ switch( rw ){
3738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 'r':
3739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fb = stdin;
3740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ setmode(fileno(stdin), O_BINARY);
3741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
3742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 'w':
3743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fb = stdout;
3744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ setmode(fileno(stdout), O_BINARY);
3745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
3746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
3748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fb = fopen(av[2], fmode);
3749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foc = fb;
3750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !fb ){
3752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Cannot open %s for %c\n", av[2], rw);
3753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
3754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
3755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ switch( rw ){
3756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 'r':
3757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( (nio = fread( bBuf, 1, sizeof(bBuf), fb))>0 ){
3758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ toBase85( bBuf, (int)nio, cBuf, 0 );
3759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stdout, "%s\n", cBuf);
3760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
3762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 'w':
3763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( 0 != fgets(cBuf, sizeof(cBuf), stdin) ){
3764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nc = strlen(cBuf);
3765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ size_t nbo = fromBase85( cBuf, nc, bBuf ) - bBuf;
3766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( 1 != fwrite(bBuf, nbo, 1, fb) ) rc = 1;
3767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ifndef OMIT_BASE85_CHECKER
3768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ b85Clean &= allBase85( cBuf, nc );
3769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # endif
3770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
3772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ default:
3773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sayHelp();
3774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
3775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( foc ) fclose(foc);
3777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ifndef OMIT_BASE85_CHECKER
3779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !b85Clean ){
3780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Base85 input had non-base85 dark or control content.\n");
3781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # endif
3783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
3784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
3787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /************************* End ../ext/misc/base85.c ********************/
3074 3789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************************* Begin ../ext/misc/ieee754.c ******************/
3075 3790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
3076 3791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 2013-04-17
3077 3792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3078 3793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The author disclaims copyright to this source code. In place of
@@ -4633,10 +5348,11 @@
4633 5348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ReCompiled *pRe;
4634 5349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str *pStr;
4635 5350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
4636 5351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n;
4637 5352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *z;
5353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)argc;
4638 5354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
4639 5355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPattern = (const char*)sqlite3_value_text(argv[0]);
4640 5356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zPattern==0 ) return;
4641 5357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zErr = re_compile(&pRe, zPattern, sqlite3_user_data(context)!=0);
4642 5358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zErr ){
@@ -7280,10 +7996,11 @@
7280 7996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nByte = sizeof(ZipfileTab) + ZIPFILE_BUFFER_SIZE;
7281 7997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nFile = 0;
7282 7998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFile = 0;
7283 7999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ZipfileTab *pNew = 0;
7284 8000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
8001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)pAux;
7285 8002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
7286 8003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the table name is not "zipfile", require that the argument be
7287 8004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** specified. This stops zipfile tables from being created as:
7288 8005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
7289 8006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CREATE VIRTUAL TABLE zzz USING zipfile();
@@ -7736,10 +8453,11 @@
7736 8453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ZipfileEntry **ppEntry /* OUT: Pointer to new object */
7737 8454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
7738 8455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 *aRead;
7739 8456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char **pzErr = &pTab->base.zErrMsg;
7740 8457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = SQLITE_OK;
8458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)nBlob;
7741 8459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
7742 8460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aBlob==0 ){
7743 8461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aRead = pTab->aBuffer;
7744 8462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = zipfileReadData(pFile, aRead, ZIPFILE_CDS_FIXED_SZ, iOff, pzErr);
7745 8463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -8181,10 +8899,13 @@
8181 8899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ZipfileTab *pTab = (ZipfileTab*)cur->pVtab;
8182 8900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ZipfileCsr *pCsr = (ZipfileCsr*)cur;
8183 8901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFile = 0; /* Zip file to scan */
8184 8902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = SQLITE_OK; /* Return Code */
8185 8903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bInMemory = 0; /* True for an in-memory zipfile */
8904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
8905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)idxStr;
8906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)argc;
8186 8907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
8187 8908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zipfileResetCursor(pCsr);
8188 8909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
8189 8910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab->zFile ){
8190 8911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zFile = pTab->zFile;
@@ -8242,10 +8963,11 @@
8242 8963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_index_info *pIdxInfo
8243 8964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
8244 8965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
8245 8966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int idx = -1;
8246 8967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int unusable = 0;
8968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)tab;
8247 8969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
8248 8970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pIdxInfo->nConstraint; i++){
8249 8971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const struct sqlite3_index_constraint *pCons = &pIdxInfo->aConstraint[i];
8250 8972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCons->iColumn!=ZIPFILE_F_COLUMN_IDX ) continue;
8251 8973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCons->usable==0 ){
@@ -8491,10 +9213,12 @@
8491 9213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ZipfileEntry *pOld = 0;
8492 9214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ZipfileEntry *pOld2 = 0;
8493 9215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bUpdate = 0; /* True for an update that modifies "name" */
8494 9216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bIsDir = 0;
8495 9217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 iCrc32 = 0;
9218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
9219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)pRowid;
8496 9220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
8497 9221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab->pWriteFd==0 ){
8498 9222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = zipfileBegin(pVtab);
8499 9223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ) return rc;
8500 9224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -8826,10 +9550,11 @@
8826 9550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nArg, /* Number of SQL function arguments */
8827 9551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zName, /* Name of SQL function */
8828 9552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void (**pxFunc)(sqlite3_context*,int,sqlite3_value**), /* OUT: Result */
8829 9553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void **ppArg /* OUT: User data for *pxFunc */
8830 9554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
9555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)nArg;
8831 9556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3_stricmp("zipfile_cds", zName)==0 ){
8832 9557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pxFunc = zipfileFunctionCds;
8833 9558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppArg = (void*)pVtab;
8834 9559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
8835 9560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -11917,10 +12642,13 @@
11917 12642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char **pzErr
11918 12643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
11919 12644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DbdataTable *pTab = 0;
11920 12645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = sqlite3_declare_vtab(db, pAux ? DBPTR_SCHEMA : DBDATA_SCHEMA);
11921 12646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
12647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)argc;
12648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)argv;
12649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)pzErr;
11922 12650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
11923 12651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = (DbdataTable*)sqlite3_malloc64(sizeof(DbdataTable));
11924 12652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab==0 ){
11925 12653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_NOMEM;
11926 12654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -12521,10 +13249,12 @@
12521 13249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
12522 13250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DbdataCursor *pCsr = (DbdataCursor*)pCursor;
12523 13251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DbdataTable *pTab = (DbdataTable*)pCursor->pVtab;
12524 13252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = SQLITE_OK;
12525 13253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zSchema = "main";
13254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)idxStr;
13255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)argc;
12526 13256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
12527 13257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dbdataResetCursor(pCsr);
12528 13258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCsr->iPgno==1 );
12529 13259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( idxNum & 0x01 ){
12530 13260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSchema = (const char*)sqlite3_value_text(argv[0]);
@@ -12689,10 +13419,11 @@
12689 13419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db,
12690 13420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char **pzErrMsg,
12691 13421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const sqlite3_api_routines *pApi
12692 13422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
12693 13423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_EXTENSION_INIT2(pApi);
13424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)pzErrMsg;
12694 13425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3DbdataRegister(db);
12695 13426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
12696 13427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
12697 13428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* ifndef SQLITE_OMIT_VIRTUALTABLE */
12698 13429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -13459,10 +14190,11 @@
13459 14190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_context *context,
13460 14191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int argc,
13461 14192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **argv
13462 14193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
13463 14194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zText = (const char*)sqlite3_value_text(argv[0]);
14195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)argc;
13464 14196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zText && zText[0]=='\'' ){
13465 14197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nText = sqlite3_value_bytes(argv[0]);
13466 14198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
13467 14199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char zBuf1[20];
13468 14200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char zBuf2[20];
@@ -13611,11 +14343,11 @@
13611 14343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
13612 14344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
recoverDbError(p, db2);
13613 14345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
13614 14346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
13615 14347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(ii=0; ii<sizeof(aPragma)/sizeof(aPragma[0]); ii++){
14348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(ii=0; ii<(int)(sizeof(aPragma)/sizeof(aPragma[0])); ii++){
13617 14349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zPrag = aPragma[ii];
13618 14350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_stmt *p1 = 0;
13619 14351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p1 = recoverPreparePrintf(p, p->dbIn, "PRAGMA %Q.%s", p->zDb, zPrag);
13620 14352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->errCode==SQLITE_OK && sqlite3_step(p1)==SQLITE_ROW ){
13621 14353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zArg = (const char*)sqlite3_column_text(p1, 0);
@@ -13689,11 +14421,13 @@
13689 14421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->errCode==SQLITE_OK ){
13690 14422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->errCode = sqlite3_dbdata_init(db, 0, 0);
13691 14423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
13692 14424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13693 14425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Register the custom user-functions with the output handle. */
13694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(ii=0; p->errCode==SQLITE_OK && ii<sizeof(aFunc)/sizeof(aFunc[0]); ii++){
14426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(ii=0;
14427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->errCode==SQLITE_OK && ii<(int)(sizeof(aFunc)/sizeof(aFunc[0]));
14428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ii++){
13695 14429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->errCode = sqlite3_create_function(db, aFunc[ii].zName,
13696 14430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aFunc[ii].nArg, SQLITE_UTF8, (void*)p, aFunc[ii].xFunc, 0, 0
13697 14431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
13698 14432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
13699 14433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -15086,11 +15820,11 @@
15086 15820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
recoverPutU32(&aHdr[56], enc);
15087 15821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
recoverPutU16(&aHdr[105], pgsz-nReserve);
15088 15822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pgsz==65536 ) pgsz = 1;
15089 15823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
recoverPutU16(&aHdr[16], pgsz);
15090 15824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aHdr[20] = nReserve;
15091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(ii=0; ii<sizeof(aPreserve)/sizeof(aPreserve[0]); ii++){
15825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(ii=0; ii<(int)(sizeof(aPreserve)/sizeof(aPreserve[0])); ii++){
15092 15826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(&aHdr[aPreserve[ii]], &a[aPreserve[ii]], 4);
15093 15827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
15094 15828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(aBuf, aHdr, sizeof(aHdr));
15095 15829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&((u8*)aBuf)[sizeof(aHdr)], 0, nByte-sizeof(aHdr));
15096 15830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -15210,14 +15944,20 @@
15210 15944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_file *pFd,
15211 15945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_int64 iOff,
15212 15946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iAmt,
15213 15947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void **pp
15214 15948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
15949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)pFd;
15950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)iOff;
15951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)iAmt;
15215 15952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pp = 0;
15216 15953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
15217 15954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
15218 15955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int recoverVfsUnfetch(sqlite3_file *pFd, sqlite3_int64 iOff, void *p){
15956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)pFd;
15957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)iOff;
15958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)p;
15219 15959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
15220 15960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
15221 15961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
15222 15962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
15223 15963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Install the VFS wrapper around the file-descriptor open on the input
@@ -15990,11 +16730,11 @@
15990 16730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p[i]=='\r' && p[i+1]=='\n' ) i++;
15991 16731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p[j++] = p[i];
15992 16732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
15993 16733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sz = j;
15994 16734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p[sz] = 0;
15995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
16735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
15996 16736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_text64(context, (const char*)p, sz,
15997 16737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free, SQLITE_UTF8);
15998 16738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
15999 16739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = 0;
16000 16740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -17165,13 +17905,13 @@
17165 17905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17166 17906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zCode = sqlite3_mprintf("%.*s", len, zSql);
17167 17907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
shell_check_oom(zCode);
17168 17908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; zCode[i]; i++){ if( IsSpace(zSql[i]) ) zCode[i] = ' '; }
17169 17909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOffset<25 ){
17170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zMsg = sqlite3_mprintf("\n %z\n %*s^--- error here", zCode, iOffset, "");
17910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zMsg = sqlite3_mprintf("\n %z\n %*s^--- error here", zCode,iOffset,"");
17171 17911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
17172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zMsg = sqlite3_mprintf("\n %z\n %*serror here ---^", zCode, iOffset-14, "");
17912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zMsg = sqlite3_mprintf("\n %z\n %*serror here ---^", zCode,iOffset-14,"");
17173 17913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17174 17914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return zMsg;
17175 17915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17176 17916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17177 17917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -17355,11 +18095,11 @@
17355 18095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17356 18096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17357 18097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17358 18098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pArg->statsOn==3 ){
17359 18099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pArg->pStmt ){
17360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iCur = sqlite3_stmt_status(pArg->pStmt, SQLITE_STMTSTATUS_VM_STEP, bReset);
18100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iCur = sqlite3_stmt_status(pArg->pStmt, SQLITE_STMTSTATUS_VM_STEP,bReset);
17361 18101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
raw_printf(pArg->out, "VM-steps: %d\n", iCur);
17362 18102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17363 18103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
17364 18104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17365 18105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -17436,12 +18176,14 @@
17436 18176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
raw_printf(pArg->out, "Fullscan Steps: %d\n", iCur);
17437 18177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCur = sqlite3_stmt_status(pArg->pStmt, SQLITE_STMTSTATUS_SORT, bReset);
17438 18178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
raw_printf(pArg->out, "Sort Operations: %d\n", iCur);
17439 18179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCur = sqlite3_stmt_status(pArg->pStmt, SQLITE_STMTSTATUS_AUTOINDEX,bReset);
17440 18180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
raw_printf(pArg->out, "Autoindex Inserts: %d\n", iCur);
17441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iHit = sqlite3_stmt_status(pArg->pStmt, SQLITE_STMTSTATUS_FILTER_HIT, bReset);
17442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iMiss = sqlite3_stmt_status(pArg->pStmt, SQLITE_STMTSTATUS_FILTER_MISS, bReset);
18181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iHit = sqlite3_stmt_status(pArg->pStmt, SQLITE_STMTSTATUS_FILTER_HIT,
18182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bReset);
18183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iMiss = sqlite3_stmt_status(pArg->pStmt, SQLITE_STMTSTATUS_FILTER_MISS,
18184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bReset);
17443 18185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iHit || iMiss ){
17444 18186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
raw_printf(pArg->out, "Bloom filter bypass taken: %d/%d\n",
17445 18187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iHit, iHit+iMiss);
17446 18188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17447 18189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCur = sqlite3_stmt_status(pArg->pStmt, SQLITE_STMTSTATUS_VM_STEP, bReset);
@@ -17466,24 +18208,24 @@
17466 18208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17467 18209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
17468 18210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int scanStatsHeight(sqlite3_stmt *p, int iEntry){
17469 18211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iPid = 0;
17470 18212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ret = 1;
17471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_stmt_scanstatus_v2(p, iEntry,
18213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_stmt_scanstatus_v2(p, iEntry,
17472 18214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_SCANSTAT_SELECTID, SQLITE_SCANSTAT_COMPLEX, (void*)&iPid
17473 18215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
17474 18216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( iPid!=0 ){
17475 18217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ii;
17476 18218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0; 1; ii++){
17477 18219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iId;
17478 18220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int res;
17479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- res = sqlite3_stmt_scanstatus_v2(p, ii,
18221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = sqlite3_stmt_scanstatus_v2(p, ii,
17480 18222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_SCANSTAT_SELECTID, SQLITE_SCANSTAT_COMPLEX, (void*)&iId
17481 18223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
17482 18224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res ) break;
17483 18225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iId==iPid ){
17484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_stmt_scanstatus_v2(p, ii,
18226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_stmt_scanstatus_v2(p, ii,
17485 18227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_SCANSTAT_PARENTID, SQLITE_SCANSTAT_COMPLEX, (void*)&iPid
17486 18228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
17487 18229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17488 18230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17489 18231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ret++;
@@ -17811,11 +18553,11 @@
17811 18553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17812 18554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Draw horizontal line N characters long using unicode box
17813 18555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** characters
17814 18556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
17815 18557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void print_box_line(FILE *out, int N){
17816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char zDash[] =
18558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char zDash[] =
17817 18559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24
17818 18560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24;
17819 18561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const int nDash = sizeof(zDash) - 1;
17820 18562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
N *= 3;
17821 18563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( N>nDash ){
@@ -17940,11 +18682,11 @@
17940 18682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
17941 18683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17942 18684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
17943 18685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17944 18686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zOut[j] = 0;
17945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return (char*)zOut;
18687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return (char*)zOut;
17946 18688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
17947 18689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17948 18690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Extract the value of the i-th current column for pStmt as an SQL literal
17949 18691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** value. Memory is obtained from sqlite3_malloc64() and must be freed by
17950 18692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the caller.
@@ -18301,22 +19043,22 @@
18301 19043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** code. In this case, (*pzErr) may be set to point to a buffer containing
18302 19044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** an English language error message. It is the responsibility of the
18303 19045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** caller to eventually free this buffer using sqlite3_free().
18304 19046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
18305 19047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int expertHandleSQL(
18306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ShellState *pState,
18307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zSql,
19048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ShellState *pState,
19049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zSql,
18308 19050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char **pzErr
18309 19051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
18310 19052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pState->expert.pExpert );
18311 19053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pzErr==0 || *pzErr==0 );
18312 19054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3_expert_sql(pState->expert.pExpert, zSql, pzErr);
18313 19055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
18314 19056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
18315 19057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
18316 19058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This function is called either to silently clean up the object
18317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** created by the ".expert" command (if bCancel==1), or to generate a
19059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** created by the ".expert" command (if bCancel==1), or to generate a
18318 19060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** report from it and then clean it up (if bCancel==0).
18319 19061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
18320 19062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If successful, SQLITE_OK is returned. Otherwise, an SQLite error
18321 19063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** code. In this case, (*pzErr) may be set to point to a buffer containing
18322 19064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** an English language error message. It is the responsibility of the
@@ -18407,11 +19149,12 @@
18407 19149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
18408 19150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
18409 19151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
18410 19152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pState->expert.pExpert = sqlite3_expert_new(pState->db, &zErr);
18411 19153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pState->expert.pExpert==0 ){
18412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- raw_printf(stderr, "sqlite3_expert_new: %s\n", zErr ? zErr : "out of memory");
19154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ raw_printf(stderr, "sqlite3_expert_new: %s\n",
19155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zErr ? zErr : "out of memory");
18413 19156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_ERROR;
18414 19157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
18415 19158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_expert_config(
18416 19159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pState->expert.pExpert, EXPERT_CONFIG_SAMPLE, iSample
18417 19160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
@@ -19368,11 +20111,11 @@
19368 20111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( n==0 && dfltZip && sqlite3_strlike("%.zip",zName,0)==0 ){
19369 20112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SHELL_OPEN_ZIPFILE;
19370 20113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19371 20114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19372 20115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fclose(f);
19373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return rc;
20116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
19374 20117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19375 20118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19376 20119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_DESERIALIZE
19377 20120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
19378 20121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Reconstruct an in-memory database using the output from the "dbtotxt"
@@ -19467,12 +20210,12 @@
19467 20210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** must be a blob. The second a non-negative integer. This function
19468 20211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** reads and returns a 32-bit big-endian integer from byte
19469 20212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** offset (4*<arg2>) of the blob.
19470 20213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
19471 20214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void shellInt32(
19472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_context *context,
19473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int argc,
20215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_context *context,
20216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int argc,
19474 20217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **argv
19475 20218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
19476 20219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const unsigned char *pBlob;
19477 20220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nBlob;
19478 20221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iInt;
@@ -19495,12 +20238,12 @@
19495 20238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
19496 20239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Scalar function "shell_idquote(X)" returns string X quoted as an identifier,
19497 20240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** using "..." with internal double-quote characters doubled.
19498 20241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
19499 20242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void shellIdQuote(
19500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_context *context,
19501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int argc,
20243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_context *context,
20244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int argc,
19502 20245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **argv
19503 20246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
19504 20247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zName = (const char*)sqlite3_value_text(argv[0]);
19505 20248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(argc);
19506 20249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zName ){
@@ -19511,12 +20254,12 @@
19511 20254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19512 20255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
19513 20256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Scalar function "usleep(X)" invokes sqlite3_sleep(X) and returns X.
19514 20257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
19515 20258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void shellUSleepFunc(
19516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_context *context,
19517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int argcUnused,
20259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_context *context,
20260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int argcUnused,
19518 20261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **argv
19519 20262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
19520 20263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int sleep = sqlite3_value_int(argv[0]);
19521 20264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(void)argcUnused;
19522 20265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_sleep(sleep/1000);
@@ -19524,11 +20267,11 @@
19524 20267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19525 20268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19526 20269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
19527 20270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Scalar function "shell_escape_crnl" used by the .recover command.
19528 20271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The argument passed to this function is the output of built-in
19529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** function quote(). If the first character of the input is "'",
20272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** function quote(). If the first character of the input is "'",
19530 20273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** indicating that the value passed to quote() was a text value,
19531 20274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then this function searches the input for "\n" and "\r" characters
19532 20275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and adds a wrapper similar to the following:
19533 20276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
19534 20277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** replace(replace(<input>, '\n', char(10), '\r', char(13));
@@ -19535,12 +20278,12 @@
19535 20278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
19536 20279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Or, if the first character of the input is not "'", then a copy
19537 20280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the input is returned.
19538 20281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
19539 20282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void shellEscapeCrnl(
19540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_context *context,
19541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int argc,
20283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_context *context,
20284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int argc,
19542 20285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **argv
19543 20286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
19544 20287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zText = (const char*)sqlite3_value_text(argv[0]);
19545 20288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(argc);
19546 20289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zText && zText[0]=='\'' ){
@@ -19636,17 +20379,17 @@
19636 20379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zDbFilename = p->pAuxDb->zDbFilename;
19637 20380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->openMode==SHELL_OPEN_UNSPEC ){
19638 20381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDbFilename==0 || zDbFilename[0]==0 ){
19639 20382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->openMode = SHELL_OPEN_NORMAL;
19640 20383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
19641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->openMode = (u8)deduceDatabaseType(zDbFilename,
20384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->openMode = (u8)deduceDatabaseType(zDbFilename,
19642 20385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(openFlags & OPEN_DB_ZIPFILE)!=0);
19643 20386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19644 20387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19645 20388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( p->openMode ){
19646 20389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SHELL_OPEN_APPENDVFS: {
19647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_open_v2(zDbFilename, &p->db,
20390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_open_v2(zDbFilename, &p->db,
19648 20391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|p->openFlags, "apndvfs");
19649 20392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
19650 20393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19651 20394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SHELL_OPEN_HEXDB:
19652 20395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SHELL_OPEN_DESERIALIZE: {
@@ -19684,10 +20427,12 @@
19684 20427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_enable_load_extension(p->db, 1);
19685 20428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
19686 20429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_shathree_init(p->db, 0, 0);
19687 20430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_uint_init(p->db, 0, 0);
19688 20431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_decimal_init(p->db, 0, 0);
20432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_base64_init(p->db, 0, 0);
20433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_base85_init(p->db, 0, 0);
19689 20434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_regexp_init(p->db, 0, 0);
19690 20435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_ieee_init(p->db, 0, 0);
19691 20436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_series_init(p->db, 0, 0);
19692 20437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_SHELL_FIDDLE
19693 20438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_fileio_init(p->db, 0, 0);
@@ -19795,11 +20540,11 @@
19795 20540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void close_db(sqlite3 *db){
19796 20541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = sqlite3_close(db);
19797 20542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ){
19798 20543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
utf8_printf(stderr, "Error: sqlite3_close() returns %d: %s\n",
19799 20544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc, sqlite3_errmsg(db));
19800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
20545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
19801 20546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19802 20547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19803 20548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if HAVE_READLINE || HAVE_EDITLINE
19804 20549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
19805 20550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Readline completion callbacks
@@ -19825,10 +20570,12 @@
19825 20570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zRet = 0;
19826 20571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19827 20572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return zRet;
19828 20573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19829 20574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static char **readline_completion(const char *zText, int iStart, int iEnd){
20575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)iStart;
20576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)iEnd;
19830 20577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rl_attempted_completion_over = 1;
19831 20578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rl_completion_matches(zText, readline_completion_generator);
19832 20579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
19833 20580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19834 20581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#elif HAVE_LINENOISE
@@ -21036,20 +21783,20 @@
21036 21783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_ERROR;
21037 21784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21038 21785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21039 21786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined SQLITE_OMIT_VIRTUALTABLE
21040 21787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void shellPrepare(
21041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3 *db,
21042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int *pRc,
21043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zSql,
21788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 *db,
21789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int *pRc,
21790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zSql,
21044 21791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_stmt **ppStmt
21045 21792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
21046 21793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppStmt = 0;
21047 21794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( *pRc==SQLITE_OK ){
21048 21795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = sqlite3_prepare_v2(db, zSql, -1, ppStmt, 0);
21049 21796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
21050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- raw_printf(stderr, "sql error: %s (%d)\n",
21797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ raw_printf(stderr, "sql error: %s (%d)\n",
21051 21798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_errmsg(db), sqlite3_errcode(db)
21052 21799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
21053 21800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pRc = rc;
21054 21801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21055 21802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -21061,14 +21808,14 @@
21061 21808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine is could be marked "static". But it is not always used,
21062 21809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** depending on compile-time options. By omitting the "static", we avoid
21063 21810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** nuisance compiler warnings about "defined but not used".
21064 21811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
21065 21812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void shellPreparePrintf(
21066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3 *db,
21067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int *pRc,
21813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 *db,
21814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int *pRc,
21068 21815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_stmt **ppStmt,
21069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zFmt,
21816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zFmt,
21070 21817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
...
21071 21818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
21072 21819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppStmt = 0;
21073 21820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( *pRc==SQLITE_OK ){
21074 21821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_list ap;
@@ -21090,11 +21837,11 @@
21090 21837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine is could be marked "static". But it is not always used,
21091 21838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** depending on compile-time options. By omitting the "static", we avoid
21092 21839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** nuisance compiler warnings about "defined but not used".
21093 21840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
21094 21841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void shellFinalize(
21095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int *pRc,
21842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int *pRc,
21096 21843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_stmt *pStmt
21097 21844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
21098 21845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pStmt ){
21099 21846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = sqlite3_db_handle(pStmt);
21100 21847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = sqlite3_finalize(pStmt);
@@ -21112,11 +21859,11 @@
21112 21859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine is could be marked "static". But it is not always used,
21113 21860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** depending on compile-time options. By omitting the "static", we avoid
21114 21861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** nuisance compiler warnings about "defined but not used".
21115 21862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
21116 21863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void shellReset(
21117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int *pRc,
21864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int *pRc,
21118 21865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_stmt *pStmt
21119 21866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
21120 21867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = sqlite3_reset(pStmt);
21121 21868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( *pRc==SQLITE_OK ){
21122 21869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
@@ -21160,11 +21907,11 @@
21160 21907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
showHelp(f,"archive");
21161 21908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_ERROR;
21162 21909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21163 21910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21164 21911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
21165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Print an error message for the .ar command to stderr and return
21912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Print an error message for the .ar command to stderr and return
21166 21913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLITE_ERROR.
21167 21914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
21168 21915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int arErrorMsg(ArCommand *pAr, const char *zFmt, ...){
21169 21916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_list ap;
21170 21917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *z;
@@ -21241,11 +21988,11 @@
21241 21988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21242 21989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21243 21990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
21244 21991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Parse the command line for an ".ar" command. The results are written into
21245 21992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** structure (*pAr). SQLITE_OK is returned if the command line is parsed
21246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** successfully, otherwise an error message is written to stderr and
21993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** successfully, otherwise an error message is written to stderr and
21247 21994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLITE_ERROR returned.
21248 21995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
21249 21996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int arParseCommand(
21250 21997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char **azArg, /* Array of arguments passed to dot command */
21251 21998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nArg, /* Number of entries in azArg[] */
@@ -21437,11 +22184,11 @@
21437 22184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The caller is responsible for eventually calling sqlite3_free() on
21438 22185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** any non-NULL (*pzWhere) value. Here, "match" means strict equality
21439 22186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** when pAr->bGlob is false and GLOB match when pAr->bGlob is true.
21440 22187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
21441 22188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void arWhereClause(
21442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int *pRc,
22189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int *pRc,
21443 22190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ArCommand *pAr,
21444 22191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char **pzWhere /* OUT: New WHERE clause */
21445 22192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
21446 22193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zWhere = 0;
21447 22194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zSameOp = (pAr->bGlob)? "GLOB" : "=";
@@ -21452,11 +22199,11 @@
21452 22199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
21453 22200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zSep = "";
21454 22201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pAr->nArg; i++){
21455 22202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *z = pAr->azArg[i];
21456 22203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zWhere = sqlite3_mprintf(
21457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "%z%s name %s '%q' OR substr(name,1,%d) %s '%q/'",
22204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "%z%s name %s '%q' OR substr(name,1,%d) %s '%q/'",
21458 22205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zWhere, zSep, zSameOp, z, strlen30(z)+1, zSameOp, z
21459 22206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
21460 22207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zWhere==0 ){
21461 22208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pRc = SQLITE_NOMEM;
21462 22209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -21467,14 +22214,14 @@
21467 22214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21468 22215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pzWhere = zWhere;
21469 22216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21470 22217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21471 22218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
21472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Implementation of .ar "lisT" command.
22219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Implementation of .ar "lisT" command.
21473 22220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
21474 22221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int arListCommand(ArCommand *pAr){
21475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zSql = "SELECT %s FROM %s WHERE %s";
22222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zSql = "SELECT %s FROM %s WHERE %s";
21476 22223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *azCols[] = {
21477 22224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"name",
21478 22225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"lsmode(mode), sz, datetime(mtime, 'unixepoch'), name"
21479 22226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
21480 22227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -21492,11 +22239,11 @@
21492 22239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
21493 22240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( rc==SQLITE_OK && SQLITE_ROW==sqlite3_step(pSql) ){
21494 22241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAr->bVerbose ){
21495 22242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
utf8_printf(pAr->p->out, "%s % 10d %s %s\n",
21496 22243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_column_text(pSql, 0),
21497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_column_int(pSql, 1),
22244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_column_int(pSql, 1),
21498 22245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_column_text(pSql, 2),
21499 22246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_column_text(pSql, 3)
21500 22247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
21501 22248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
21502 22249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
utf8_printf(pAr->p->out, "%s\n", sqlite3_column_text(pSql, 0));
@@ -21549,21 +22296,21 @@
21549 22296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zSql);
21550 22297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
21551 22298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21552 22299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21553 22300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
21554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Implementation of .ar "eXtract" command.
22301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Implementation of .ar "eXtract" command.
21555 22302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
21556 22303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int arExtractCommand(ArCommand *pAr){
21557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zSql1 =
22304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zSql1 =
21558 22305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"SELECT "
21559 22306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" ($dir || name),"
21560 22307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" writefile(($dir || name), %s, mode, mtime) "
21561 22308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"FROM %s WHERE (%s) AND (data IS NULL OR $dirOnly = 0)"
21562 22309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND name NOT GLOB '*..[/\\]*'";
21563 22310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *azExtraArg[] = {
22311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *azExtraArg[] = {
21565 22312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"sqlar_uncompress(data, sz)",
21566 22313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"data"
21567 22314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
21568 22315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21569 22316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_stmt *pSql = 0;
@@ -21585,11 +22332,11 @@
21585 22332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDir = sqlite3_mprintf("");
21586 22333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21587 22334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDir==0 ) rc = SQLITE_NOMEM;
21588 22335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21589 22336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- shellPreparePrintf(pAr->db, &rc, &pSql, zSql1,
22337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ shellPreparePrintf(pAr->db, &rc, &pSql, zSql1,
21591 22338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
azExtraArg[pAr->bZip], pAr->zSrcTable, zWhere
21592 22339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
21593 22340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21594 22341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
21595 22342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j = sqlite3_bind_parameter_index(pSql, "$dir");
@@ -21663,11 +22410,11 @@
21663 22410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int arCreateOrUpdateCommand(
21664 22411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ArCommand *pAr, /* Command arguments and options */
21665 22412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bUpdate, /* true for a --create. */
21666 22413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bOnlyIfChanged /* Only update if file has changed */
21667 22414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
21668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zCreate =
22415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zCreate =
21669 22416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"CREATE TABLE IF NOT EXISTS sqlar(\n"
21670 22417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" name TEXT PRIMARY KEY, -- name of the file\n"
21671 22418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" mode INT, -- access permissions\n"
21672 22419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" mtime INT, -- last modification time\n"
21673 22420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" sz INT, -- original file size\n"
@@ -21705,11 +22452,11 @@
21705 22452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zExists = 0;
21706 22453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21707 22454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
arExecSql(pAr, "PRAGMA page_size=512");
21708 22455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = arExecSql(pAr, "SAVEPOINT ar;");
21709 22456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ) return rc;
21710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zTemp[0] = 0;
22457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTemp[0] = 0;
21711 22458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAr->bZip ){
21712 22459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Initialize the zipfile virtual table, if necessary */
21713 22460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAr->zFile ){
21714 22461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_uint64 r;
21715 22462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_randomness(sizeof(r),&r);
@@ -21799,11 +22546,11 @@
21799 22546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21800 22547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cmd.bZip = 1;
21801 22548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( cmd.zFile ){
21802 22549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int flags;
21803 22550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( cmd.bAppend ) eDbType = SHELL_OPEN_APPENDVFS;
21804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( cmd.eCmd==AR_CMD_CREATE || cmd.eCmd==AR_CMD_INSERT
22551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cmd.eCmd==AR_CMD_CREATE || cmd.eCmd==AR_CMD_INSERT
21805 22552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| cmd.eCmd==AR_CMD_REMOVE || cmd.eCmd==AR_CMD_UPDATE ){
21806 22553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
flags = SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE;
21807 22554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
21808 22555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
flags = SQLITE_OPEN_READONLY;
21809 22556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -21810,14 +22557,14 @@
21810 22557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cmd.db = 0;
21811 22558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( cmd.bDryRun ){
21812 22559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
utf8_printf(pState->out, "-- open database '%s'%s\n", cmd.zFile,
21813 22560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eDbType==SHELL_OPEN_APPENDVFS ? " using 'apndvfs'" : "");
21814 22561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = sqlite3_open_v2(cmd.zFile, &cmd.db, flags,
22562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = sqlite3_open_v2(cmd.zFile, &cmd.db, flags,
21816 22563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eDbType==SHELL_OPEN_APPENDVFS ? "apndvfs" : 0);
21817 22564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
21818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- utf8_printf(stderr, "cannot open file: %s (%s)\n",
22565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ utf8_printf(stderr, "cannot open file: %s (%s)\n",
21819 22566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cmd.zFile, sqlite3_errmsg(cmd.db)
21820 22567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
21821 22568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto end_ar_command;
21822 22569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21823 22570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_fileio_init(cmd.db, 0, 0);
@@ -21929,11 +22676,11 @@
21929 22676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
21930 22677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( n<=10 && memcmp("-no-rowids", z, n)==0 ){
21931 22678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bRowids = 0;
21932 22679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21933 22680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
else{
21934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- utf8_printf(stderr, "unexpected option: %s\n", azArg[i]);
22681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ utf8_printf(stderr, "unexpected option: %s\n", azArg[i]);
21935 22682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
showHelp(pState->out, azArg[0]);
21936 22683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
21937 22684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21938 22685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
21939 22686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -22292,11 +23039,11 @@
22292 23039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDestFile==0 ){
22293 23040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
raw_printf(stderr, "missing FILENAME argument on .backup\n");
22294 23041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
22295 23042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
22296 23043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDb==0 ) zDb = "main";
22297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = sqlite3_open_v2(zDestFile, &pDest,
23044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = sqlite3_open_v2(zDestFile, &pDest,
22298 23045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, zVfs);
22299 23046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
22300 23047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
utf8_printf(stderr, "Error: cannot open \"%s\"\n", zDestFile);
22301 23048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
close_db(pDest);
22302 23049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
@@ -22542,11 +23289,11 @@
22542 23289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nArg>1 ) break;
22543 23290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
22544 23291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nArg>1 && ii==ArraySize(aDbConfig) ){
22545 23292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
utf8_printf(stderr, "Error: unknown dbconfig \"%s\"\n", azArg[1]);
22546 23293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
utf8_printf(stderr, "Enter \".dbconfig\" with no arguments for a list\n");
22547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
23294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
22548 23295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
22549 23296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
22550 23297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_SHELL_HAVE_RECOVER
22551 23298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='d' && n>=3 && cli_strncmp(azArg[0], "dbinfo", n)==0 ){
22552 23299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = shell_dbinfo_command(p, nArg, azArg);
@@ -22609,11 +23356,11 @@
22609 23356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" name LIKE %Q ESCAPE '\\' AND"
22610 23357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" sql LIKE 'CREATE VIRTUAL TABLE%%' AND"
22611 23358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" substr(o.name, 1, length(name)+1) == (name||'_')"
22612 23359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
")", azArg[i], azArg[i]
22613 23360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
22614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
23361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
22615 23362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zLike ){
22616 23363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zLike = sqlite3_mprintf("%z OR %z", zLike, zExpr);
22617 23364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
22618 23365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zLike = zExpr;
22619 23366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -22742,11 +23489,11 @@
22742 23489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
22743 23490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
22744 23491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_VIRTUALTABLE
22745 23492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='e' && cli_strncmp(azArg[0], "expert", n)==0 ){
22746 23493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->bSafeMode ){
22747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- raw_printf(stderr,
23494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ raw_printf(stderr,
22748 23495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"Cannot run experimental commands such as \"%s\" in safe mode\n",
22749 23496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
azArg[0]);
22750 23497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
22751 23498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
22752 23499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
open_db(p, 0);
@@ -22761,11 +23508,11 @@
22761 23508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ctrlCode; /* Integer code for that option */
22762 23509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zUsage; /* Usage notes */
22763 23510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} aCtrl[] = {
22764 23511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ "chunk_size", SQLITE_FCNTL_CHUNK_SIZE, "SIZE" },
22765 23512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ "data_version", SQLITE_FCNTL_DATA_VERSION, "" },
22766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "has_moved", SQLITE_FCNTL_HAS_MOVED, "" },
23513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "has_moved", SQLITE_FCNTL_HAS_MOVED, "" },
22767 23514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ "lock_timeout", SQLITE_FCNTL_LOCK_TIMEOUT, "MILLISEC" },
22768 23515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ "persist_wal", SQLITE_FCNTL_PERSIST_WAL, "[BOOLEAN]" },
22769 23516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* { "pragma", SQLITE_FCNTL_PRAGMA, "NAME ARG" },*/
22770 23517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ "psow", SQLITE_FCNTL_POWERSAFE_OVERWRITE, "[BOOLEAN]" },
22771 23518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ "reserve_bytes", SQLITE_FCNTL_RESERVE_BYTES, "[N]" },
@@ -22782,11 +23529,11 @@
22782 23529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zSchema = 0;
22783 23530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
22784 23531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
open_db(p, 0);
22785 23532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zCmd = nArg>=2 ? azArg[1] : "help";
22786 23533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
22787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zCmd[0]=='-'
23534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zCmd[0]=='-'
22788 23535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (cli_strcmp(zCmd,"--schema")==0 || cli_strcmp(zCmd,"-schema")==0)
22789 23536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& nArg>=4
22790 23537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
22791 23538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSchema = azArg[2];
22792 23539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=3; i<nArg; i++) azArg[i-2] = azArg[i];
@@ -24160,11 +24907,12 @@
24160 24907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
24161 24908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto meta_command_exit;
24162 24909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( zName==0 ){
24163 24910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zName = azArg[ii];
24164 24911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
24165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- raw_printf(stderr, "Usage: .schema ?--indent? ?--nosys? ?LIKE-PATTERN?\n");
24912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ raw_printf(stderr,
24913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Usage: .schema ?--indent? ?--nosys? ?LIKE-PATTERN?\n");
24166 24914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
24167 24915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto meta_command_exit;
24168 24916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24169 24917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24170 24918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zName!=0 ){
@@ -24276,11 +25024,11 @@
24276 25024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
24277 25025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
24278 25026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (c=='s' && n==11 && cli_strncmp(azArg[0], "selecttrace", n)==0)
24279 25027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (c=='t' && n==9 && cli_strncmp(azArg[0], "treetrace", n)==0)
24280 25028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
24281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unsigned int x = nArg>=2 ? (unsigned int)integerValue(azArg[1]) : 0xffffffff;
25029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned int x = nArg>=2? (unsigned int)integerValue(azArg[1]) : 0xffffffff;
24282 25030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_test_control(SQLITE_TESTCTRL_TRACEFLAGS, 1, &x);
24283 25031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
24284 25032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
24285 25033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(SQLITE_ENABLE_SESSION)
24286 25034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='s' && cli_strncmp(azArg[0],"session",n)==0 && n>=3 ){
@@ -24461,11 +25209,12 @@
24461 25209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
utf8_printf(stderr, "Session \"%s\" already exists\n", zName);
24462 25210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto meta_command_exit;
24463 25211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24464 25212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24465 25213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAuxDb->nSession>=ArraySize(pAuxDb->aSession) ){
24466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- raw_printf(stderr, "Maximum of %d sessions\n", ArraySize(pAuxDb->aSession));
25214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ raw_printf(stderr,
25215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Maximum of %d sessions\n", ArraySize(pAuxDb->aSession));
24467 25216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto meta_command_exit;
24468 25217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24469 25218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSession = &pAuxDb->aSession[pAuxDb->nSession];
24470 25219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3session_create(p->db, azCmd[1], &pSession->p);
24471 25220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ){
@@ -24745,30 +25494,30 @@
24745 25494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24746 25495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_OMIT_SCHEMA_PRAGMAS) && !defined(SQLITE_OMIT_VIRTUALTABLE)
24747 25496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
24748 25497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int lrc;
24749 25498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zRevText = /* Query for reversible to-blob-to-text check */
24750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "SELECT lower(name) as tname FROM sqlite_schema\n"
24751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "WHERE type='table' AND coalesce(rootpage,0)>1\n"
24752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "AND name NOT LIKE 'sqlite_%%'%s\n"
24753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "ORDER BY 1 collate nocase";
25499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT lower(name) as tname FROM sqlite_schema\n"
25500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "WHERE type='table' AND coalesce(rootpage,0)>1\n"
25501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "AND name NOT LIKE 'sqlite_%%'%s\n"
25502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "ORDER BY 1 collate nocase";
24754 25503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zRevText = sqlite3_mprintf(zRevText, zLike? " AND name LIKE $tspec" : "");
24755 25504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zRevText = sqlite3_mprintf(
24756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* lower-case query is first run, producing upper-case query. */
24757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "with tabcols as materialized(\n"
24758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "select tname, cname\n"
24759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "from ("
24760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " select ss.tname as tname, ti.name as cname\n"
24761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " from (%z) ss\n inner join pragma_table_info(tname) ti))\n"
24762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "select 'SELECT total(bad_text_count) AS bad_text_count\n"
24763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "FROM ('||group_concat(query, ' UNION ALL ')||')' as btc_query\n"
24764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " from (select 'SELECT COUNT(*) AS bad_text_count\n"
24765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "FROM '||tname||' WHERE '\n"
24766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "||group_concat('CAST(CAST('||cname||' AS BLOB) AS TEXT)<>'||cname\n"
24767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "|| ' AND typeof('||cname||')=''text'' ',\n"
24768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "' OR ') as query, tname from tabcols group by tname)"
24769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- , zRevText);
25505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* lower-case query is first run, producing upper-case query. */
25506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "with tabcols as materialized(\n"
25507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "select tname, cname\n"
25508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "from ("
25509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " select ss.tname as tname, ti.name as cname\n"
25510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " from (%z) ss\n inner join pragma_table_info(tname) ti))\n"
25511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "select 'SELECT total(bad_text_count) AS bad_text_count\n"
25512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "FROM ('||group_concat(query, ' UNION ALL ')||')' as btc_query\n"
25513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " from (select 'SELECT COUNT(*) AS bad_text_count\n"
25514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "FROM '||tname||' WHERE '\n"
25515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "||group_concat('CAST(CAST('||cname||' AS BLOB) AS TEXT)<>'||cname\n"
25516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "|| ' AND typeof('||cname||')=''text'' ',\n"
25517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "' OR ') as query, tname from tabcols group by tname)"
25518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ , zRevText);
24770 25519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
shell_check_oom(zRevText);
24771 25520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( bDebug ) utf8_printf(p->out, "%s\n", zRevText);
24772 25521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lrc = sqlite3_prepare_v2(p->db, zRevText, -1, &pStmt, 0);
24773 25522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(lrc==SQLITE_OK);
24774 25523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zLike ) sqlite3_bind_text(pStmt,1,zLike,-1,SQLITE_STATIC);
@@ -24777,20 +25526,20 @@
24777 25526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zGenQuery = (char*)sqlite3_column_text(pStmt,0);
24778 25527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_stmt *pCheckStmt;
24779 25528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lrc = sqlite3_prepare_v2(p->db, zGenQuery, -1, &pCheckStmt, 0);
24780 25529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( bDebug ) utf8_printf(p->out, "%s\n", zGenQuery);
24781 25530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( SQLITE_OK==lrc ){
24782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( SQLITE_ROW==sqlite3_step(pCheckStmt) ){
24783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- double countIrreversible = sqlite3_column_double(pCheckStmt, 0);
24784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( countIrreversible>0 ){
24785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int sz = (int)(countIrreversible + 0.5);
24786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- utf8_printf(stderr,
24787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "Digest includes %d invalidly encoded text field%s.\n",
24788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sz, (sz>1)? "s": "");
24789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
24790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
24791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_finalize(pCheckStmt);
25531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( SQLITE_ROW==sqlite3_step(pCheckStmt) ){
25532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ double countIrreversible = sqlite3_column_double(pCheckStmt, 0);
25533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( countIrreversible>0 ){
25534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int sz = (int)(countIrreversible + 0.5);
25535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ utf8_printf(stderr,
25536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Digest includes %d invalidly encoded text field%s.\n",
25537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sz, (sz>1)? "s": "");
25538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
25539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
25540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_finalize(pCheckStmt);
24792 25541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24793 25542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_finalize(pStmt);
24794 25543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
24795 25544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zRevText);
24796 25545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -25022,32 +25771,32 @@
25022 25771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zCtrlName; /* Name of a test-control option */
25023 25772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ctrlCode; /* Integer code for that option */
25024 25773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int unSafe; /* Not valid for --safe mode */
25025 25774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zUsage; /* Usage notes */
25026 25775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} aCtrl[] = {
25027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "always", SQLITE_TESTCTRL_ALWAYS, 1, "BOOLEAN" },
25028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "assert", SQLITE_TESTCTRL_ASSERT, 1, "BOOLEAN" },
25029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*{ "benign_malloc_hooks",SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS,1, "" },*/
25030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*{ "bitvec_test", SQLITE_TESTCTRL_BITVEC_TEST, 1, "" },*/
25031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "byteorder", SQLITE_TESTCTRL_BYTEORDER, 0, "" },
25032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "extra_schema_checks",SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS,0,"BOOLEAN" },
25033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*{ "fault_install", SQLITE_TESTCTRL_FAULT_INSTALL, 1,"" },*/
25034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "imposter", SQLITE_TESTCTRL_IMPOSTER,1,"SCHEMA ON/OFF ROOTPAGE"},
25035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "internal_functions", SQLITE_TESTCTRL_INTERNAL_FUNCTIONS,0,"" },
25036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "localtime_fault", SQLITE_TESTCTRL_LOCALTIME_FAULT,0,"BOOLEAN" },
25037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "never_corrupt", SQLITE_TESTCTRL_NEVER_CORRUPT,1, "BOOLEAN" },
25038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "optimizations", SQLITE_TESTCTRL_OPTIMIZATIONS,0,"DISABLE-MASK" },
25776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"always", SQLITE_TESTCTRL_ALWAYS, 1, "BOOLEAN" },
25777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"assert", SQLITE_TESTCTRL_ASSERT, 1, "BOOLEAN" },
25778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*{"benign_malloc_hooks",SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS,1, "" },*/
25779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*{"bitvec_test", SQLITE_TESTCTRL_BITVEC_TEST, 1, "" },*/
25780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"byteorder", SQLITE_TESTCTRL_BYTEORDER, 0, "" },
25781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"extra_schema_checks",SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS,0,"BOOLEAN" },
25782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*{"fault_install", SQLITE_TESTCTRL_FAULT_INSTALL, 1,"" },*/
25783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"imposter", SQLITE_TESTCTRL_IMPOSTER,1,"SCHEMA ON/OFF ROOTPAGE"},
25784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"internal_functions", SQLITE_TESTCTRL_INTERNAL_FUNCTIONS,0,"" },
25785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"localtime_fault", SQLITE_TESTCTRL_LOCALTIME_FAULT,0,"BOOLEAN" },
25786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"never_corrupt", SQLITE_TESTCTRL_NEVER_CORRUPT,1, "BOOLEAN" },
25787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"optimizations", SQLITE_TESTCTRL_OPTIMIZATIONS,0,"DISABLE-MASK" },
25039 25788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef YYCOVERAGE
25040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "parser_coverage", SQLITE_TESTCTRL_PARSER_COVERAGE,0,"" },
25789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"parser_coverage", SQLITE_TESTCTRL_PARSER_COVERAGE,0,"" },
25041 25790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
25042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "pending_byte", SQLITE_TESTCTRL_PENDING_BYTE,0, "OFFSET " },
25043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "prng_restore", SQLITE_TESTCTRL_PRNG_RESTORE,0, "" },
25044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "prng_save", SQLITE_TESTCTRL_PRNG_SAVE, 0, "" },
25045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "prng_seed", SQLITE_TESTCTRL_PRNG_SEED, 0, "SEED ?db?" },
25046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "seek_count", SQLITE_TESTCTRL_SEEK_COUNT, 0, "" },
25047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "sorter_mmap", SQLITE_TESTCTRL_SORTER_MMAP, 0, "NMAX" },
25048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "tune", SQLITE_TESTCTRL_TUNE, 1, "ID VALUE" },
25791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"pending_byte", SQLITE_TESTCTRL_PENDING_BYTE,0, "OFFSET " },
25792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"prng_restore", SQLITE_TESTCTRL_PRNG_RESTORE,0, "" },
25793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"prng_save", SQLITE_TESTCTRL_PRNG_SAVE, 0, "" },
25794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"prng_seed", SQLITE_TESTCTRL_PRNG_SEED, 0, "SEED ?db?" },
25795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"seek_count", SQLITE_TESTCTRL_SEEK_COUNT, 0, "" },
25796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"sorter_mmap", SQLITE_TESTCTRL_SORTER_MMAP, 0, "NMAX" },
25797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"tune", SQLITE_TESTCTRL_TUNE, 1, "ID VALUE" },
25049 25798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
25050 25799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int testctrl = -1;
25051 25800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCtrl = -1;
25052 25801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc2 = 0; /* 0: usage. 1: %d 2: %x 3: no-output */
25053 25802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isOk = 0;
@@ -25468,11 +26217,11 @@
25468 26217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25469 26218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25470 26219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
25471 26220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
25472 26221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='w' && cli_strncmp(azArg[0], "wheretrace", n)==0 ){
25473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unsigned int x = nArg>=2 ? (unsigned int)integerValue(azArg[1]) : 0xffffffff;
26222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned int x = nArg>=2? (unsigned int)integerValue(azArg[1]) : 0xffffffff;
25474 26223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_test_control(SQLITE_TESTCTRL_TRACEFLAGS, 3, &x);
25475 26224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
25476 26225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
25477 26226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='w' && cli_strncmp(azArg[0], "width", n)==0 ){
25478 26227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int j;
@@ -25521,11 +26270,11 @@
25521 26270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Scan line for classification to guide shell's handling.
25522 26271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The scan is resumable for subsequent lines when prior
25523 26272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** return values are passed as the 2nd argument.
25524 26273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
25525 26274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static QuickScanState quickscan(char *zLine, QuickScanState qss,
25526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SCAN_TRACKER_REFTYPE pst){
26275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SCAN_TRACKER_REFTYPE pst){
25527 26276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char cin;
25528 26277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char cWait = (char)qss; /* intentional narrowing loss */
25529 26278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( cWait==0 ){
25530 26279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PlainScan:
25531 26280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( cWait==0 );
@@ -25545,11 +26294,11 @@
25545 26294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
25546 26295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case '/':
25547 26296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( *zLine=='*' ){
25548 26297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
++zLine;
25549 26298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cWait = '*';
25550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CONTINUE_PROMPT_AWAITS(pst, "/*");
26299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CONTINUE_PROMPT_AWAITS(pst, "/*");
25551 26300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
qss = QSS_SETV(qss, cWait);
25552 26301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto TermScan;
25553 26302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25554 26303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
25555 26304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case '[':
@@ -25556,18 +26305,18 @@
25556 26305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cin = ']';
25557 26306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* fall thru */
25558 26307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case '`': case '\'': case '"':
25559 26308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cWait = cin;
25560 26309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
qss = QSS_HasDark | cWait;
25561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CONTINUE_PROMPT_AWAITC(pst, cin);
26310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CONTINUE_PROMPT_AWAITC(pst, cin);
25562 26311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto TermScan;
25563 26312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case '(':
25564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CONTINUE_PAREN_INCR(pst, 1);
25565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
26313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CONTINUE_PAREN_INCR(pst, 1);
26314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
25566 26315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case ')':
25567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CONTINUE_PAREN_INCR(pst, -1);
25568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
26316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CONTINUE_PAREN_INCR(pst, -1);
26317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
25569 26318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default:
25570 26319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
25571 26320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25572 26321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
qss = (qss & ~QSS_EndingSemi) | QSS_HasDark;
25573 26322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -25579,23 +26328,23 @@
25579 26328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case '*':
25580 26329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( *zLine != '/' )
25581 26330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
25582 26331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
++zLine;
25583 26332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cWait = 0;
25584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CONTINUE_PROMPT_AWAITC(pst, 0);
26333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CONTINUE_PROMPT_AWAITC(pst, 0);
25585 26334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
qss = QSS_SETV(qss, 0);
25586 26335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto PlainScan;
25587 26336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case '`': case '\'': case '"':
25588 26337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(*zLine==cWait){
25589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Swallow doubled end-delimiter.*/
26338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Swallow doubled end-delimiter.*/
25590 26339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
++zLine;
25591 26340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
25592 26341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25593 26342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* fall thru */
25594 26343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case ']':
25595 26344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cWait = 0;
25596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CONTINUE_PROMPT_AWAITC(pst, 0);
26345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CONTINUE_PROMPT_AWAITC(pst, 0);
25597 26346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
qss = QSS_SETV(qss, 0);
25598 26347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto PlainScan;
25599 26348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default: assert(0);
25600 26349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25601 26350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -25696,13 +26445,13 @@
25696 26445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ShellHasFlag(p, SHFLG_Echo) ) utf8_printf(p->out, "%s\n", zDo);
25697 26446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25698 26447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
25699 26448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_SHELL_FIDDLE
25700 26449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
25701 { 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 impl
25702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** because we need the global shellState and cannot access it from that function
25703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** without moving lots of code around (creating a larger/messier diff).
26450 { 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
26451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** impl because we need the global shellState and cannot access it from that
26452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** function without moving lots of code around (creating a larger/messier diff).
25704 26453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
25705 26454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static char *one_input_line(FILE *in, char *zPrior, int isContinuation){
25706 26455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Parse the next line from shellState.wasm.zInput. */
25707 26456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zBegin = shellState.wasm.zPos;
25708 26457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *z = zBegin;
@@ -26517,16 +27266,16 @@
26517 27266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
data.openMode = SHELL_OPEN_READONLY;
26518 27267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( cli_strcmp(z,"-nofollow")==0 ){
26519 27268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
data.openFlags |= SQLITE_OPEN_NOFOLLOW;
26520 27269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( cli_strcmp(z,"-ascii")==0 ){
26521 27270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
data.mode = MODE_Ascii;
26522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(sizeof(data.colSeparator), data.colSeparator, SEP_Unit);
26523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(sizeof(data.rowSeparator), data.rowSeparator, SEP_Record);
27271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(sizeof(data.colSeparator), data.colSeparator,SEP_Unit);
27272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(sizeof(data.rowSeparator), data.rowSeparator,SEP_Record);
26524 27273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( cli_strcmp(z,"-tabs")==0 ){
26525 27274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
data.mode = MODE_List;
26526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(sizeof(data.colSeparator), data.colSeparator, SEP_Tab);
26527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(sizeof(data.rowSeparator), data.rowSeparator, SEP_Row);
27275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(sizeof(data.colSeparator), data.colSeparator,SEP_Tab);
27276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(sizeof(data.rowSeparator), data.rowSeparator,SEP_Row);
26528 27277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( cli_strcmp(z,"-separator")==0 ){
26529 27278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(sizeof(data.colSeparator), data.colSeparator,
26530 27279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"%s",cmdline_option_value(argc,argv,++i));
26531 27280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( cli_strcmp(z,"-newline")==0 ){
26532 27281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(sizeof(data.rowSeparator), data.rowSeparator,
26533 27282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!