]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Slight cleanup of length-limited strpbrk() replacement, and eliminate strpbrk() call.
authorlarrybr <larrybr@noemail.net>
Mon, 13 Nov 2023 12:53:47 +0000 (12:53 +0000)
committerlarrybr <larrybr@noemail.net>
Mon, 13 Nov 2023 12:53:47 +0000 (12:53 +0000)
FossilOrigin-Name: 97e2c9621e3e01048e33da63ca4146ededa33cf6adefa996fa49b8c6a8d555b5

manifest
manifest.uuid
src/shell.c.in

index 1769d0a02b3700dbad692db5880591934012f67e..e985a98d08c2c65ddb053de86c5f641512f86226 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Enhance\sconsole_io\sto\spermit\semits\slimited\sin\svarious\sways,\ssuch\sas\svalid\sUTF-8,\supto\scontrol\schars,\sor\swith\scounted\slimits,\sall\sgetting\saway\sfrom\s0-termination\sas\sthe\ssole\slimit.\sIn\sCLI,\suse\sthis\scapability\sto\savoid\scertain\semit-chars-singly\sprocedures\sthat\swere\sbreaking\sup\sUTF-8\scharacters.\sThis\sfixes\sbroken\sjson\smode\soutput\s(on\sWindows)\sand\s(maybe)\sC-literal-like\semits.
-D 2023-11-13T05:24:00.316
+C Slight\scleanup\sof\slength-limited\sstrpbrk()\sreplacement,\sand\seliminate\sstrpbrk()\scall.
+D 2023-11-13T12:53:47.904
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -728,7 +728,7 @@ F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
 F src/resolve.c d017bad7ba8e778617701a0e986fdeb393d67d6afa84fb28ef4e8b8ad2acf916
 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
 F src/select.c 503331aca8785254a7bf3d74ab338a99118fa297e1184a4dde33b3cdf7a9d341
-F src/shell.c.in adb9a11d6c7c0d2260ad381468d22f4d0d68240a061e5553fce73e7e1ad40410
+F src/shell.c.in 0bc051f506f812be03351673aa206cc87cfac47ccc04e60191c984bb79e38265
 F src/sqlite.h.in 4f841d3d117b830ee5ee45e8d89ceff1195f3ebb72d041ace8d116ba4c103b35
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h 3f046c04ea3595d6bfda99b781926b17e672fd6d27da2ba6d8d8fc39981dcb54
@@ -2142,8 +2142,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 a731cdddbb99dbd3f9d1875cad5094239b78969c84fe4c56ecd63e33a5874e3f
-R 1643036426e25a342daef2af41a2624b
+P 906c5c4082e30b7a0d07df89a42566461e2113507c5a0b339827ca0822b8fe84
+R ea455f9417313759f4a37b1578d0b70c
 U larrybr
-Z 98b08e37ed82f681bcbba6df6ae3a4d3
+Z 3d1eb938bb91a620d97eb2c42b47a7fe
 # Remove this line to create a well-formed Fossil manifest.
index ba0909751a788326edd6f5f62c5a440a1e71de56..9359c7a103a827c40a0c649f625f1686363c42b4 100644 (file)
@@ -1 +1 @@
-906c5c4082e30b7a0d07df89a42566461e2113507c5a0b339827ca0822b8fe84
\ No newline at end of file
+97e2c9621e3e01048e33da63ca4146ededa33cf6adefa996fa49b8c6a8d555b5
\ No newline at end of file
index 63ab46ad5af0c851beb3e4f327c0759a47d9f64f..bb542fd1c42664da5cfc9f9a671c9aefe3d1f6b8 100644 (file)
@@ -1819,18 +1819,22 @@ static void output_quoted_escaped_string(const char *z){
   setTextMode(pfO, 1);
 }
 
-/* Like strpbrk, but with an optional limit on search length. */
-static const char *anyOfInStr(const char *s, const char *zAny, i64 n){
-  if( n<0 ) return strpbrk(s, zAny);
-  else{
-    void *pcFirst = (void*)(s+(size_t)n);
-    while(*zAny){
-      void *pc = memchr(s, *zAny&0xff, n);
-      if( pc && pc < pcFirst ) pcFirst = pc;
-      ++zAny;
+/*
+** Find earliest of chars within s specified in zAny.
+** With ns == ~0, is like strpbrk(s,zAny) and s must be 0-terminated.
+*/
+static const char *anyOfInStr(const char *s, const char *zAny, size_t ns){
+  if( ns == ~0 ) ns = strlen(s);
+  const char *pcFirst = 0;
+  while(*zAny){
+    const char *pc = (const char*)memchr(s, *zAny&0xff, ns);
+    if( pc ){
+      pcFirst = pc;
+      ns = pcFirst - s;
     }
-    return (const char*)(((const char*)pcFirst < s+(size_t)n)? pcFirst : 0);
+    ++zAny;
   }
+  return pcFirst;
 }
 /*
 ** Output the given string as a quoted according to C or TCL quoting rules.
@@ -1844,7 +1848,7 @@ static void output_c_string(const char *z){
   char cbsSay;
   oputz(zq);
   while( *z!=0 ){
-    char *pcDQBSRO = strpbrk(z, zDQBSRO);
+    const char *pcDQBSRO = anyOfInStr(z, zDQBSRO, ~0);
     const char *pcPast = z + fPutbUtf8(0, z, INT_MAX, ctrlMask);
     const char *pcEnd = (pcDQBSRO && pcDQBSRO < pcPast)? pcDQBSRO : pcPast;
     if( pcEnd > z ) oPutbUtf8(z, (int)(pcEnd-z), 0);