]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Cause cfGets() (under SQLITE_USE_ONLY_WIN32) to better emulate fgets().
authorlarrybr <larrybr@noemail.net>
Tue, 3 Sep 2024 02:09:13 +0000 (02:09 +0000)
committerlarrybr <larrybr@noemail.net>
Tue, 3 Sep 2024 02:09:13 +0000 (02:09 +0000)
FossilOrigin-Name: 2d783524d1671d988ebb1b21c83de99c9f335963b6c20cf4df612f58c13da913

ext/consio/console_io.c
manifest
manifest.uuid

index 6b837cbafcc688f78b07b6ed3581456af7bab91d..75324a34fd557ced6a557d83f81bd4229ced427d 100755 (executable)
@@ -655,6 +655,10 @@ cfWrite(const void *buf, size_t osz, size_t ocnt, FILE *pf){
   return rv;
 }
 
+/* An fgets() equivalent, using Win32 file API for actual input.
+** Input ends when given buffer is filled or a newline is read.
+** If the FILE object is in text mode, swallows 0x0D. (ASCII CR)
+*/
 SQLITE_INTERNAL_LINKAGE char *
 cfGets(char *cBuf, int n, FILE *pf){
   int nci = 0;
@@ -665,7 +669,10 @@ cfGets(char *cBuf, int n, FILE *pf){
   while( nci < n-1 ){
     DWORD nr;
     if( !ReadFile(fai.fh, cBuf+nci, 1, &nr, 0) || nr==0 ) break;
-    if( nr>0 && (!eatCR || cBuf[nci]!='\r') ) nci += nr;
+    if( nr>0 && (!eatCR || cBuf[nci]!='\r') ){
+      nci += nr;
+      if( cBuf[nci-nr]=='\n' ) break;
+    }
   }
   if( nci < n ) cBuf[nci] = 0;
   return (nci>0)? cBuf : 0;
index ddb1f8bfb9a6321347b17d8a58be483a6468db71..55e9207dbb482bf7ebd6ccfa162b1e4d9ae832cd 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Only\savoid\sall\sC-runtime\sI/O\sif\sthe\sSQLITE_USE_ONLY_WIN32\sflag\sis\sdefined.
-D 2024-08-27T14:25:52.592
+C Cause\scfGets()\s(under\sSQLITE_USE_ONLY_WIN32)\sto\sbetter\semulate\sfgets().
+D 2024-09-03T02:09:13.849
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -53,7 +53,7 @@ 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 6e02dea912a49f55785b0027fe77960aafee6c236307c23f82ec86a69f1a2001 x
+F ext/consio/console_io.c d2b74afae8d301de2e8447b1045fcd33eb59df13bf581d906d99c74fe5d2b13f x
 F ext/consio/console_io.h b5ebe34aa15b357621ebbea3d3f2e2b24750d4280b5802516409e23947fd9ee5
 F ext/expert/README.md b321c2762bb93c18ea102d5a5f7753a4b8bac646cb392b3b437f633caf2020c3
 F ext/expert/expert.c d548d603a4cc9e61f446cc179c120c6713511c413f82a4a32b1e1e69d3f086a4
@@ -2210,8 +2210,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 2d52db98f47fbcda0622c034b21c2fb19bf4345b88c5c565ae9e6f7128642e43
-R fe2336ed930d3088aea807bfa7c9e690
-U drh
-Z dffceaa70fb90b81619d76d49bca0c7c
+P 164b1e1962aa1e16bdf52e9e86d4cf9c9e09220c0821932ac8e390e82074185f
+R 0ea7d1c943863a7b1da4b295016a8f50
+U larrybr
+Z 8cf571eafc534d90679b77113d98b6b5
 # Remove this line to create a well-formed Fossil manifest.
index 5430ab55f6ce158f3f168971c5e514b289b608db..47b76c643eba5867877d454cc06e882cf9f3c9e3 100644 (file)
@@ -1 +1 @@
-164b1e1962aa1e16bdf52e9e86d4cf9c9e09220c0821932ac8e390e82074185f
+2d783524d1671d988ebb1b21c83de99c9f335963b6c20cf4df612f58c13da913