]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Handle utf8 mode restore better for redirected input or output. Move utf8 mode setup...
authorlarrybr <larrybr@noemail.net>
Thu, 26 Oct 2023 18:24:41 +0000 (18:24 +0000)
committerlarrybr <larrybr@noemail.net>
Thu, 26 Oct 2023 18:24:41 +0000 (18:24 +0000)
FossilOrigin-Name: 59452e7c72de02c2b6d40974c91173d87fd5f6f2e28c0b1f6f53eb1a09693fb6

1  2  3 
manifest
manifest.uuid
src/shell.c.in

diff --cc manifest
index e083c76ea08df2a9b06d3a8e8ec3d99b17004c2f,009e49e106bf182d709c79d29b91d67779d2048c,b3d957fe166d0b27b1d0a54e9bbcfcef6bf3a97d..01cc9e8e62c44c0a40f77da5e110b74ce9727e77
+++ b/manifest
@@@@ -1,5 -1,5 -1,5 +1,5 @@@@
-  C Ready\sfor\smerge,\sbut\scould\suse\stesting\son\ssome\sdusty\sold\sWindows\smachines.
-  D 2023-10-26T15:12:41.667
 - C Deal\swith\sthe\scase\sof\sa\sreentrant\sINSERT\son\sa\svirtual\stable\swhere\sthe\nouter\sINSERT\shas\sa\sRETURNING\sclause\sbut\sthe\sinner\sdoes\snot.\ndbsqlfuzz\s3ac9a1e33f676254e02c0f297263b0a7aeb0c1a5.
 - D 2023-10-26T12:59:41.136
  -C Enhance\sthe\s"tool-zip"\smakefile\starget\son\sWindows\sso\sthat\sit\suses\smore\nuniversally\savailable\scommands\sto\sbuild\sthe\sZIP\sarchive.\s\sFix\sother\sminor\nissues\swith\sthat\smakefile\starget\sat\sthe\ssame\stime.
  -D 2023-10-26T17:30:54.554
+++C Handle\sutf8\smode\srestore\sbetter\sfor\sredirected\sinput\sor\soutput.\sMove\sutf8\smode\ssetup\sto\sbefore\sany\sinvocation\scommand\sprocessing.\sSync\sw/trunk.
+++D 2023-10-26T18:24:41.798
   F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
   F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
   F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@@@ -722,11 -722,11 -722,11 +722,11 @@@@ F src/random.c 606b00941a1d7dd09c381d32
   F src/resolve.c 31229276a8eb5b5de1428cd2d80f6f1cf8ffc5248be25e47cf575df12f1b8f23
   F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
   F src/select.c 64c9bc7494f3d220a27498137551762c25458282388ea9ac0a710dd6d5dc1510
-  F src/shell.c.in 14d70da4c678b2d9d8df105e113669ca956fad1d8538976e33fc8f878c17e84d
-  F src/sqlite.h.in 81c70644aeef9c974f72c9cadeb505ebb9441d2f6db594c018604ae935a12e6e
 --F src/shell.c.in acc452c414fddd10289d165be3c89a7a2c36c919def04c93fb7dd11ac022e6ed
+++F src/shell.c.in 93f5591ea14e087860801d98c0404ffb5948ccf4cd9b2e98938cfd836f48a932
+  F src/sqlite.h.in 428948ef39b3ef7b675ec12bd4853619bad77279b5fa38e3a51c5b9656ae16ff
   F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
   F src/sqlite3ext.h 2f30b2671f4c03cd27a43f039e11251391066c97d11385f5f963bb40b03038ac
-- F src/sqliteInt.h cf6646e8694a63749096e1f086767a2c1920dca9848ec2dbe9f7bfb961d322ef
++ F src/sqliteInt.h 567e317f8631883897b7d3da43fce778b7c30dd0dd7f714558c9725fc1c1196c
   F src/sqliteLimit.h 33b1c9baba578d34efe7dfdb43193b366111cdf41476b1e82699e14c11ee1fb6
   F src/status.c 160c445d7d28c984a0eae38c144f6419311ed3eace59b44ac6dafc20db4af749
   F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
@@@@ -785,7 -785,7 -785,7 +785,7 @@@@ F src/test_wsd.c 41cadfd9d97fe8e3e4e44f
   F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
   F src/tokenize.c 23d9f4539880b40226254ad9072f4ecf12eb1902e62aea47aac29928afafcfd5
   F src/treeview.c 62fafcd31eea60b718f8daf448116b7b19f90134ebc6c20777ddbb07f56a3d28
-  F src/trigger.c 5286019b152f622a38900284109e4aae1e5f566deb7ad9ba7e931f0660771f32
 - F src/trigger.c e8c460233d28e1cb291b08ffe00749d313f3686be79ac50f1af15f3087053449
++ F src/trigger.c 0905b96b04bb6658509f711a8207287f1315cdbc3df1a1b13ba6483c8e341c81
   F src/update.c 6904814dd62a7a93bbb86d9f1419c7f134a9119582645854ab02b36b676d9f92
   F src/upsert.c fa125a8d3410ce9a97b02cb50f7ae68a2476c405c76aa692d3acf6b8586e9242
   F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
@@@@ -2138,8 -2138,8 -2139,9 +2139,8 @@@@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a9
   F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
   F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
   F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-  P 02234ef85ed9349ddf6225f67b7e941b0b68cbd2e58c9d7d84a8324393349853
-  R 89654e88f6715a69f16578b67cbc1c07
 - P cc8efe0494b8fe0df18aa67b1675779bf704d1ac53647fe1f7f55d8048041680
 - R 9ba44fb9dc03b38d8120c04401aaff8f
  -P d83405e870b071540b56e76291bdce1388db80b860afd68a34e4233f6ff2a3ab 166b775bb523362ffe17722ce175278726303c319fbe7e4a1e9291736db38a5d
  -R 5340f6bed15aada55435e2ba6769fc21
  -T +closed 166b775bb523362ffe17722ce175278726303c319fbe7e4a1e9291736db38a5d
 --U drh
 - Z ab6f9f2ea52a3134056d677d31c255aa
  -Z a7dce5b30e42f24e886fdee0aa33be40
+++P 20220615621e01ff83fd26133840e2553a6087bcb56bbb8e9bf1408dd881cd9b 8aba78e4dbf5c196aa50a28579f4bcd7c96103661c5968d62b2fded075bc73e4 d2f2f9126562c24966b0e9bc3629b85950c20199c41250478ba1da68eb7a0046
+++R 1716e4fec6d2ad5fb1fb5737fb80f58b
 ++U larrybr
-  Z 1dcda7e82518a66f972beec27c9600f6
+++Z ece20fd86ff14ebb3957d5a5776db27e
   # Remove this line to create a well-formed Fossil manifest.
diff --cc manifest.uuid
index 7e50ecd2893ee0b75dcfef860b3a4366398fe4ef,15e01cccdbd8e9ba1bf66928e1382d8a2cbc2f00,6dcbf1f67b3be0b27c988f72e594354d2b7030e7..af655e579545223951512b2fb3e733ec5cbdc9b9
@@@@ -1,1 -1,1 -1,1 +1,1 @@@@
-  20220615621e01ff83fd26133840e2553a6087bcb56bbb8e9bf1408dd881cd9b
 - 8aba78e4dbf5c196aa50a28579f4bcd7c96103661c5968d62b2fded075bc73e4
  -d2f2f9126562c24966b0e9bc3629b85950c20199c41250478ba1da68eb7a0046
+++59452e7c72de02c2b6d40974c91173d87fd5f6f2e28c0b1f6f53eb1a09693fb6
diff --cc src/shell.c.in
index 53d355127977b56585429a36133f3b5e0294c172,b78759c002389f14dce125cada065939f7a58986,b78759c002389f14dce125cada065939f7a58986..395cbd035df8272927943115b29fb7f4033a95db
@@@@ -654,20 -637,19 -637,19 +654,22 @@@@ static void console_prepare_utf8(void)
   }
   
   /*
 --** Undo the effects of console_prepare(), if any.
 ++** Undo the effects of console_prepare_utf8(), if any.
   */
   static void SQLITE_CDECL console_restore(void){
 --  if( console_utf8 && conState.inCodePage!=0
 --      && conState.hConsoleIn!=INVALID_HANDLE_VALUE ){
 --    _setmode(_fileno(stdin), conState.infsMode);
 --    SetConsoleCP(conState.inCodePage);
 --    SetConsoleOutputCP(conState.outCodePage);
 --    SetConsoleMode(conState.hConsoleIn, conState.consoleMode);
 ++  if( (console_utf8_in||console_utf8_out)
 ++      && conState.hConsole!=INVALID_HANDLE_VALUE ){
-      _setmode(_fileno(stdin), conState.infsMode);
-      SetConsoleCP(conState.inCodePage);
-      SetConsoleOutputCP(conState.outCodePage);
+++    if( console_utf8_in ){
+++      SetConsoleCP(conState.inCodePage);
+++      _setmode(_fileno(stdin), conState.infsMode);
+++    }
+++    if( console_utf8_out ) SetConsoleOutputCP(conState.outCodePage);
 ++    SetConsoleMode(conState.hConsole, conState.consoleMode);
       /* Avoid multiple calls. */
 --    conState.hConsoleIn = INVALID_HANDLE_VALUE;
 ++    conState.hConsole = INVALID_HANDLE_VALUE;
       conState.consoleMode = 0;
 --    console_utf8 = 0;
 ++    console_utf8_in = 0;
 ++    console_utf8_out = 0;
     }
   }
   
@@@@ -12245,12 -12227,12 -12227,12 +12247,25 @@@@ int SQLITE_CDECL wmain(int argc, wchar_
         (void)cmdline_option_value(argc, argv, ++i);
       }else if( cli_strcmp(z,"-init")==0 ){
         zInitFile = cmdline_option_value(argc, argv, ++i);
+++    }else if( cli_strcmp(z,"-interactive")==0 ){
+++      /* Need to check for interactive override here to so that it can
+++      ** affect console setup (for Windows only) and testing thereof.
+++      */
+++      stdin_is_interactive = 1;
       }else if( cli_strcmp(z,"-batch")==0 ){
         /* Need to check for batch mode here to so we can avoid printing
         ** informational messages (like from process_sqliterc) before
         ** we do the actual processing of arguments later in a second pass.
         */
         stdin_is_interactive = 0;
+++    }else if( cli_strcmp(z,"-utf8")==0 ){
+++#if SHELL_WIN_UTF8_OPT
+++      mbcs_opted = 0;
+++#endif /* SHELL_WIN_UTF8_OPT */
+++    }else if( cli_strcmp(z,"-no-utf8")==0 ){
+++#if SHELL_WIN_UTF8_OPT
+++      mbcs_opted = 1;
+++#endif /* SHELL_WIN_UTF8_OPT */
       }else if( cli_strcmp(z,"-heap")==0 ){
   #if defined(SQLITE_ENABLE_MEMSYS3) || defined(SQLITE_ENABLE_MEMSYS5)
         const char *zSize;
       }
     }
   
+++#if SHELL_WIN_UTF8_OPT
+++  /* Get indicated Windows console setup done before running invocation commands. */
+++  if( stdin_is_interactive || stdout_is_console ){
+++    console_prepare_utf8();
+++  }
+++  if( !stdin_is_interactive ){
+++    setBinaryMode(stdin, 0);
+++  }
+++#endif
+++
     if( data.pAuxDb->zDbFilename==0 ){
   #ifndef SQLITE_OMIT_MEMORYDB
       data.pAuxDb->zDbFilename = ":memory:";
                8*(int)sizeof(char*));
         return 0;
       }else if( cli_strcmp(z,"-interactive")==0 ){
---      stdin_is_interactive = 1;
+++      /* already handled */
       }else if( cli_strcmp(z,"-batch")==0 ){
---      stdin_is_interactive = 0;
+++      /* already handled */
       }else if( cli_strcmp(z,"-utf8")==0 ){
---#if SHELL_WIN_UTF8_OPT
-        mbcs_opted = 0;
 --      console_utf8 = 1;
---#endif /* SHELL_WIN_UTF8_OPT */
+++      /* already handled */
       }else if( cli_strcmp(z,"-no-utf8")==0 ){
---#if SHELL_WIN_UTF8_OPT
-        mbcs_opted = 1;
 --      console_utf8 = 0;
---#endif /* SHELL_WIN_UTF8_OPT */
+++      /* already handled */
       }else if( cli_strcmp(z,"-heap")==0 ){
         i++;
       }else if( cli_strcmp(z,"-pagecache")==0 ){
       }
       data.cMode = data.mode;
     }
---#if SHELL_WIN_UTF8_OPT
-    if( stdin_is_interactive ){
-      console_prepare_utf8();
 --  if( console_utf8 && stdin_is_interactive ){
 --    console_prepare();
---  }else{
---    setBinaryMode(stdin, 0);
 --    console_utf8 = 0;
---  }
---#endif
   
     if( !readStdin ){
       /* Run all arguments that do not begin with '-' as if they were separate