From: larrybr Date: Wed, 15 Nov 2023 16:54:49 +0000 (+0000) Subject: Get Fiddle build to succeed. (It runs, too, but not from changes here.) X-Git-Tag: version-3.44.1~8^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=22402d7d05bd30e45b8260df47fe8cc126beb6f6;p=thirdparty%2Fsqlite.git Get Fiddle build to succeed. (It runs, too, but not from changes here.) FossilOrigin-Name: 957ebaa2be3056371d679f7a00aeba242db34218fb839ffd1d1197cad0c4a510 --- diff --git a/Makefile.in b/Makefile.in index c521586a14..357c995145 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1137,6 +1137,8 @@ SHELL_SRC = \ $(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 \ diff --git a/Makefile.msc b/Makefile.msc index 4339be891f..46675f120e 100644 --- a/Makefile.msc +++ b/Makefile.msc @@ -2263,6 +2263,8 @@ SHELL_SRC = \ $(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 \ diff --git a/ext/consio/console_io.c b/ext/consio/console_io.c index cbba5205b7..55b3f50d34 100755 --- a/ext/consio/console_io.c +++ b/ext/consio/console_io.c @@ -284,6 +284,13 @@ SQLITE_INTERNAL_LINKAGE void setTextMode(FILE *pf, short bFlush){ } #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. */ @@ -508,7 +515,8 @@ SQLITE_INTERNAL_LINKAGE int oPutsUtf8(const char *z){ ** 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); @@ -537,21 +545,20 @@ static const char* zSkipValidUtf8(const char *z, int nAccept, long ccm){ } #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; diff --git a/ext/consio/console_io.h b/ext/consio/console_io.h index 75e8f14cf7..de72cd945c 100644 --- a/ext/consio/console_io.h +++ b/ext/consio/console_io.h @@ -264,3 +264,12 @@ shellGetLine(FILE *pfIn, char *zBufPrior, int nLen, ** 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<=0 => char count, nAccept<0 => character + */ +SQLITE_INTERNAL_LINKAGE const char* +zSkipValidUtf8(const char *z, int nAccept, long ccm); diff --git a/manifest b/manifest index 82da2d716c..62065e9a20 100644 --- a/manifest +++ b/manifest @@ -1,11 +1,11 @@ -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 @@ -50,8 +50,8 @@ F ext/README.md fd5f78013b0a2bc6f0067afb19e6ad040e89a10179b4f6f03eee58fac5f169bd 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 @@ -724,7 +724,7 @@ F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c 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 @@ -2141,8 +2141,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 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. diff --git a/manifest.uuid b/manifest.uuid index 82a37925b1..be8251415c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -45b8061e7568ccca164fe000f1f0a0d984b1c28fad530bc9fdea35793a0f40bc \ No newline at end of file +957ebaa2be3056371d679f7a00aeba242db34218fb839ffd1d1197cad0c4a510 \ No newline at end of file diff --git a/src/shell.c.in b/src/shell.c.in index 253a7ec3d0..d6c6733595 100644 --- a/src/shell.c.in +++ b/src/shell.c.in @@ -1728,8 +1728,10 @@ static const char *unused_string( 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 ){ @@ -1754,7 +1756,11 @@ static void output_quoted_string(const char *z){ } oputz("'"); } +#ifndef SQLITE_SHELL_FIDDLE setTextMode(pfO, 1); +#else + setTextMode(stdout, 1); +#endif } /* @@ -1769,8 +1775,10 @@ static void output_quoted_string(const char *z){ 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); @@ -1822,7 +1830,11 @@ static void output_quoted_escaped_string(const char *z){ oputf(",'%s',char(10))", zNL); } } +#ifndef SQLITE_SHELL_FIDDLE setTextMode(pfO, 1); +#else + setTextMode(stdout, 1); +#endif } /* @@ -1855,7 +1867,7 @@ static void output_c_string(const char *z){ 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; @@ -1901,7 +1913,7 @@ static void output_json_string(const char *z, i64 n){ 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); @@ -6098,6 +6110,7 @@ static void tryToClone(ShellState *p, const char *zNewDb){ close_db(newDb); } +#ifndef SQLITE_SHELL_FIDDLE /* ** Change the output stream (file or pipe or console) to something else. */ @@ -6153,6 +6166,10 @@ static void output_reset(ShellState *p){ 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.