$(TOP)/src/shell.c.in \
$(TOP)/ext/misc/appendvfs.c \
$(TOP)/ext/misc/completion.c \
+ $(TOP)/ext/consio/console_io.c \
+ $(TOP)/ext/consio/console_io.h \
$(TOP)/ext/misc/decimal.c \
$(TOP)/ext/misc/basexx.c \
$(TOP)/ext/misc/base64.c \
$(TOP)\src\shell.c.in \
$(TOP)\ext\misc\appendvfs.c \
$(TOP)\ext\misc\completion.c \
+ $(TOP)\ext\consio\console_io.c \
+ $(TOP)\ext\consio\console_io.h \
$(TOP)\ext\misc\base64.c \
$(TOP)\ext\misc\base85.c \
$(TOP)\ext\misc\decimal.c \
}
#undef setModeFlushQ
+#else /* defined(SQLITE_SHELL_FIDDLE) */
+# define setBinaryMode(f, bFlush) do{ if((bFlush)) fflush(f); }while(0)
+# define setTextMode(f, bFlush) do{ if((bFlush)) fflush(f); }while(0)
+#endif /* defined(SQLITE_SHELL_FIDDLE) */
+
+#ifndef SQLITE_SHELL_FIDDLE
+
#if SHELL_CON_TRANSLATE
/* Write buffer cBuf as output to stream known to reach console,
** limited to ncTake char's. Return ncTake on success, else 0. */
** sequence z:return (inclusive:exclusive) is validated UTF-8.
** Limit: nAccept>=0 => char count, nAccept<0 => character
*/
-static const char* zSkipValidUtf8(const char *z, int nAccept, long ccm){
+SQLITE_INTERNAL_LINKAGE const char*
+zSkipValidUtf8(const char *z, int nAccept, long ccm){
int ng = (nAccept<0)? -nAccept : 0;
const char *pcLimit = (nAccept>=0)? z+nAccept : 0;
assert(z!=0);
}
#ifdef SQLITE_SHELL_FIDDLE
-# define fPutbUtf8(f, cB, nA, cM) \
- ((f)? fwrite(cB,1,nA,f) : zSkipValidUtf8(cB,nA,cM))
+# define oPutbUtf8(z,n,cM) fwrite(z,1,n,stdout)
-static int oprintf(const char zFmt, ...){
+static int oprintf(const char *zFmt, ...){
va_list ap;
int rv;
- va_start(ap, zFormat);
+ va_start(ap, zFmt);
rv = vfprintf(stdout, zFmt, ap);
va_end(ap);
return rv;
}
-static int eprintf(const char zFmt, ...){
+static int eprintf(const char *zFmt, ...){
va_list ap;
int rv;
- va_start(ap, zFormat);
+ va_start(ap, zFmt);
rv = vfprintf(stderr, zFmt, ap);
va_end(ap);
return rv;
** in a way that interferes with the above functionality.
*/
#endif /* !defined(SQLITE_SHELL_FIDDLE) */
+
+/* Skip over as much z[] input char sequence as is valid UTF-8,
+** limited per nAccept char's or whole characters and containing
+** no char cn such that ((1<<cn) & ccm)!=0. On return, the
+** sequence z:return (inclusive:exclusive) is validated UTF-8.
+** Limit: nAccept>=0 => char count, nAccept<0 => character
+ */
+SQLITE_INTERNAL_LINKAGE const char*
+zSkipValidUtf8(const char *z, int nAccept, long ccm);
-C Changes\sto\sconsole\sI/O\sfor\sFiddle\sbuild,\sto\salways\sdefer\sto\sC\slibrary\s(as\sbefore.)\sA\sWIP,\spending\stesting\swith\sFiddle\sbuild.
-D 2023-11-15T15:20:52.098
+C Get\sFiddle\sbuild\sto\ssucceed.\s(It\sruns,\stoo,\sbut\snot\sfrom\schanges\shere.)
+D 2023-11-15T16:54:49.894
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
-F Makefile.in 8b59912fc1538f96a08555605c5886cdcc733696ae7f22e374b2a4752196ca20
+F Makefile.in bddd493839ce057414b19cd405293363f7efb7a73a3d8f6d2ed1b59943ddfcb1
F Makefile.linux-gcc f3842a0b1efbfbb74ac0ef60e56b301836d05b4d867d014f714fa750048f1ab6
-F Makefile.msc f0cf219350d9af4fba411b4f6306dce2adc897484e8f446de1fb4f40de674d00
+F Makefile.msc a1166ca0ae148e9b5c4442d2f4b4f4354cdf1d053fc2cac97b3d5b1eae9e86e3
F README.md 963d30019abf0cc06b263cd2824bce022893f3f93a531758f6f04ff2194a16a8
F VERSION ac9b892c8f54be4e11be490d721ae6a22b0ba83f1a4b247cdda14d82b4d941cc
F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
F ext/async/README.txt e12275968f6fde133a80e04387d0e839b0c51f91
F ext/async/sqlite3async.c 6f247666b495c477628dd19364d279c78ea48cd90c72d9f9b98ad1aff3294f94
F ext/async/sqlite3async.h 46b47c79357b97ad85d20d2795942c0020dc20c532114a49808287f04aa5309a
-F ext/consio/console_io.c b28bc0bd7d35f39de99ca0a73f5b9b50217bcb157f4903051260d3b37ace6b8d x
-F ext/consio/console_io.h a1aabe4db7f345e71411f3a50b6c6c7acb40fc4aa68aed8c623d401c3804c772
+F ext/consio/console_io.c 9914d9e2aa276e6689bedc2bd4adcb53a0af1fb8b087763c6fc02f7eb8540887 x
+F ext/consio/console_io.h 1f8627a5acbd0ed222a7d4b86c80f57bf5cd6d8765e30c64587983eeb29b6cda
F ext/expert/README.md b321c2762bb93c18ea102d5a5f7753a4b8bac646cb392b3b437f633caf2020c3
F ext/expert/expert.c d548d603a4cc9e61f446cc179c120c6713511c413f82a4a32b1e1e69d3f086a4
F ext/expert/expert1.test 0dd5cb096d66bed593e33053a3b364f6ef52ed72064bf5cf298364636dbf3cd6
F src/resolve.c 31229276a8eb5b5de1428cd2d80f6f1cf8ffc5248be25e47cf575df12f1b8f23
F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
F src/select.c 503331aca8785254a7bf3d74ab338a99118fa297e1184a4dde33b3cdf7a9d341
-F src/shell.c.in eb9e9a66328340b832c269bd03b19fb24cac9e36fd0b76118fc95427c604fac1
+F src/shell.c.in a2e10d4630950dbdd08bbbfca0a67664839ebcd0beda65e951371fb924727ebf
F src/sqlite.h.in 4f841d3d117b830ee5ee45e8d89ceff1195f3ebb72d041ace8d116ba4c103b35
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
F src/sqlite3ext.h 3f046c04ea3595d6bfda99b781926b17e672fd6d27da2ba6d8d8fc39981dcb54
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P c1a53c28a4286c4c52fb78398d4dbf5c03de514a1fa9199bf0cfcd2cd3cc7cd9
-R 9f2a69ab179ad2f0c7192d052189e011
+P 45b8061e7568ccca164fe000f1f0a0d984b1c28fad530bc9fdea35793a0f40bc
+R b616b2eba20d3487712516151c2d314e
U larrybr
-Z 4b2770a837909b0492b3a22fea2548c0
+Z f0f302758427fe0a2047949df89021c2
# Remove this line to create a well-formed Fossil manifest.
-45b8061e7568ccca164fe000f1f0a0d984b1c28fad530bc9fdea35793a0f40bc
\ No newline at end of file
+957ebaa2be3056371d679f7a00aeba242db34218fb839ffd1d1197cad0c4a510
\ No newline at end of file
static void output_quoted_string(const char *z){
int i;
char c;
+#ifndef SQLITE_SHELL_FIDDLE
FILE *pfO = setOutputStream(invalidFileStream);
setBinaryMode(pfO, 1);
+#endif
if( z==0 ) return;
for(i=0; (c = z[i])!=0 && c!='\''; i++){}
if( c==0 ){
}
oputz("'");
}
+#ifndef SQLITE_SHELL_FIDDLE
setTextMode(pfO, 1);
+#else
+ setTextMode(stdout, 1);
+#endif
}
/*
static void output_quoted_escaped_string(const char *z){
int i;
char c;
+#ifndef SQLITE_SHELL_FIDDLE
FILE *pfO = setOutputStream(invalidFileStream);
setBinaryMode(pfO, 1);
+#endif
for(i=0; (c = z[i])!=0 && c!='\'' && c!='\n' && c!='\r'; i++){}
if( c==0 ){
oputf("'%s'",z);
oputf(",'%s',char(10))", zNL);
}
}
+#ifndef SQLITE_SHELL_FIDDLE
setTextMode(pfO, 1);
+#else
+ setTextMode(stdout, 1);
+#endif
}
/*
oputz(zq);
while( *z!=0 ){
const char *pcDQBSRO = anyOfInStr(z, zDQBSRO, ~(size_t)0);
- const char *pcPast = z + fPutbUtf8(0, z, INT_MAX, ctrlMask);
+ const char *pcPast = zSkipValidUtf8(z, INT_MAX, ctrlMask);
const char *pcEnd = (pcDQBSRO && pcDQBSRO < pcPast)? pcDQBSRO : pcPast;
if( pcEnd > z ) oPutbUtf8(z, (int)(pcEnd-z), 0);
if( (c = *pcEnd)==0 ) break;
oputz(zq);
while( z < pcLimit ){
const char *pcDQBS = anyOfInStr(z, zDQBS, pcLimit-z);
- const char *pcPast = z + fPutbUtf8(0, z, (int)(pcLimit-z), ctrlMask);
+ const char *pcPast = zSkipValidUtf8(z, (int)(pcLimit-z), ctrlMask);
const char *pcEnd = (pcDQBS && pcDQBS < pcPast)? pcDQBS : pcPast;
if( pcEnd > z ){
oPutbUtf8(z, (int)(pcEnd-z), 0);
close_db(newDb);
}
+#ifndef SQLITE_SHELL_FIDDLE
/*
** Change the output stream (file or pipe or console) to something else.
*/
p->out = stdout;
setOutputStream(stdout);
}
+#else
+# define output_redir(SS,pfO)
+# define output_reset(SS)
+#endif
/*
** Run an SQL command and return the single integer result.