- C Predicate\sWindows\sCLI\sUTF-8\sconsole\sI/O\son\sa\sruntime\scapability\scheck\srather\sthan\san\sOS\sversion\scheck.
- D 2023-10-30T13:56:50.918
-C Update\sthe\sautoconf/Makefile.msc\sso\sthat\sit\saligns\swith\sMakefile.msc.
-D 2023-10-30T20:35:33.577
++C Remedy\sCLI\snon-UTF8\shandling\sdetection\sflaw\s[forum:/forumpost/fa0e00d36db5fe0a|noted\sin\sa\sforum\spost].
++D 2023-10-30T23:04:27.173
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
F src/resolve.c 31229276a8eb5b5de1428cd2d80f6f1cf8ffc5248be25e47cf575df12f1b8f23
F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
- F src/select.c 64c9bc7494f3d220a27498137551762c25458282388ea9ac0a710dd6d5dc1510
- F src/shell.c.in 3826827be22545318865b0c387a8b9208b0a0f5d849d68440a63488ea9c275c8
+ F src/select.c a19daa26e95f7245106a31f288b2f50c72d1f2cc156703f04c8c91450e111515
-F src/shell.c.in fbb0ff59cd62e1103221f655a9b3357edec4f89bd6c6d3350f6bddc1ff855357
++F src/shell.c.in 3e9371ca6a93294931a8ed8b098bc3cb15d57567aa9a1f2ade72db7f5c572795
F src/sqlite.h.in ef0e41e83ad1ac0dcc9ec9939bf541a44b1c5de821bee2d6c61754c3252f3276
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
- F src/sqlite3ext.h 2f30b2671f4c03cd27a43f039e11251391066c97d11385f5f963bb40b03038ac
+ F src/sqlite3ext.h 3f046c04ea3595d6bfda99b781926b17e672fd6d27da2ba6d8d8fc39981dcb54
F src/sqliteInt.h 567e317f8631883897b7d3da43fce778b7c30dd0dd7f714558c9725fc1c1196c
F src/sqliteLimit.h 33b1c9baba578d34efe7dfdb43193b366111cdf41476b1e82699e14c11ee1fb6
F src/status.c 160c445d7d28c984a0eae38c144f6419311ed3eace59b44ac6dafc20db4af749
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
- P 046c84296627382ee416f64b02b77a937b368e30b32e6b800de5a854810766f6
- R 3cdce76f5cb17ac317716fdc83d39d50
-P 166c96d91dcc8c500a084d5703db103176ed5ec7d5f1334050cd66b3f1cd0e4f
-R a40397540ae65bc3266dad738379719e
-U drh
-Z fc1d61aea6975cccbcf8186ffc5ca0c5
++P f89d062f8890fffc957a354e966784031d561d0f8f5c174c1ccdcf77e66c32bd c4f724de279dae1afd10d435ad61ed07c1e4658288457c50e4f9b2f4521bbe12
++R de3e0925c6135d51477a234fbf85975c
+U larrybr
- Z 39db1e0ea2a35c1c7711150de7a00b37
++Z 945c939e9cd689d368ccc6bbe8e3ac11
# Remove this line to create a well-formed Fossil manifest.
*/
static short ConsoleDoesUTF8(void){
UINT ocp = GetConsoleOutputCP();
++ const char TrialUtf8[] = { '\xC8', '\xAB' }; /* "ȫ" or 2 MBCS characters */
++ WCHAR aReadBack[1] = { 0 }; /* Read back as 0x022B when decoded as UTF-8. */
CONSOLE_SCREEN_BUFFER_INFO csbInfo = {0};
/* Create an inactive screen buffer with which to do the experiment. */
HANDLE hCSB = CreateConsoleScreenBuffer(GENERIC_READ|GENERIC_WRITE, 0, 0,
CONSOLE_TEXTMODE_BUFFER, NULL);
if( hCSB!=INVALID_HANDLE_VALUE ){
-- const char TrialUtf8[] = { '\xC8', '\xAB' }; /* "ȫ" or 2 MBCS characters */
COORD cpos = {0,0};
++ DWORD rbc;
SetConsoleCursorPosition(hCSB, cpos);
SetConsoleOutputCP(CP_UTF8);
/* Write 2 chars which are a single character in UTF-8 but more in MBCS. */
WriteConsoleA(hCSB, TrialUtf8, sizeof(TrialUtf8), NULL, NULL);
++ ReadConsoleOutputCharacterW(hCSB, &aReadBack[0], 1, cpos, &rbc);
GetConsoleScreenBufferInfo(hCSB, &csbInfo);
SetConsoleOutputCP(ocp);
CloseHandle(hCSB);
}
/* Return 1 if cursor advanced by 1 position, else 0. */
-- return (short)(csbInfo.dwCursorPosition.X == 1);
++ return (short)(csbInfo.dwCursorPosition.X == 1 && aReadBack[0] == 0x022B);
}
static short in_console = 0;