authorgravatar for hi@viri.moeviri <hi@viri.moe> 2021-06-06 20:23:07-06:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-06-10 10:19:37-07:00
log4a3ac16711b41d90e0666f478e3085f764c83208
tree69ea4b17c1fbb8a140d89d06be59509829940166
parent51076f4e1d7c2569cbfbb612eeb636be22e03664

std.Progress: use `*W` functions on windows

Closes #534. See: https://source.winehq.org/git/wine.git/blob/refs/heads/stable:/dlls/kernelbase/console.c#l520

3 files changed, 9 insertions(+), 8 deletions(-)

lib/std/Progress.zig+1-1
...@@ -234,7 +234,7 @@ fn refreshWithHeldLock(self: *Progress) void {...@@ -234,7 +234,7 @@ fn refreshWithHeldLock(self: *Progress) void {
234 self.terminal = null;234 self.terminal = null;
235 break :winapi;235 break :winapi;
236 }236 }
237 if (windows.kernel32.FillConsoleOutputCharacterA(237 if (windows.kernel32.FillConsoleOutputCharacterW(
238 file.handle,238 file.handle,
239 ' ',239 ' ',
240 fill_chars,240 fill_chars,
lib/std/os/windows.zig+6-6
...@@ -1922,19 +1922,19 @@ pub fn loadWinsockExtensionFunction(comptime T: type, sock: ws2_32.SOCKET, guid:...@@ -1922,19 +1922,19 @@ pub fn loadWinsockExtensionFunction(comptime T: type, sock: ws2_32.SOCKET, guid:
1922pub fn unexpectedError(err: Win32Error) std.os.UnexpectedError {1922pub fn unexpectedError(err: Win32Error) std.os.UnexpectedError {
1923 if (std.os.unexpected_error_tracing) {1923 if (std.os.unexpected_error_tracing) {
1924 // 614 is the length of the longest windows error desciption1924 // 614 is the length of the longest windows error desciption
1925 var buf_u16: [614]u16 = undefined;1925 var buf_wstr: [614]WCHAR = undefined;
1926 var buf_u8: [614]u8 = undefined;1926 var buf_utf8: [614]u8 = undefined;
1927 const len = kernel32.FormatMessageW(1927 const len = kernel32.FormatMessageW(
1928 FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,1928 FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
1929 null,1929 null,
1930 err,1930 err,
1931 MAKELANGID(LANG.NEUTRAL, SUBLANG.DEFAULT),1931 MAKELANGID(LANG.NEUTRAL, SUBLANG.DEFAULT),
1932 &buf_u16,1932 &buf_wstr,
1933 buf_u16.len / @sizeOf(TCHAR),1933 buf_wstr.len,
1934 null,1934 null,
1935 );1935 );
1936 _ = std.unicode.utf16leToUtf8(&buf_u8, buf_u16[0..len]) catch unreachable;1936 _ = std.unicode.utf16leToUtf8(&buf_utf8, buf_wstr[0..len]) catch unreachable;
1937 std.debug.warn("error.Unexpected: GetLastError({}): {s}\n", .{ @enumToInt(err), buf_u8[0..len] });1937 std.debug.warn("error.Unexpected: GetLastError({}): {s}\n", .{ @enumToInt(err), buf_utf8[0..len] });
1938 std.debug.dumpCurrentStackTrace(null);1938 std.debug.dumpCurrentStackTrace(null);
1939 }1939 }
1940 return error.Unexpected;1940 return error.Unexpected;
lib/std/os/windows/kernel32.zig+2-1
...@@ -89,7 +89,8 @@ pub extern "kernel32" fn GetCommandLineW() callconv(WINAPI) LPWSTR;...@@ -89,7 +89,8 @@ pub extern "kernel32" fn GetCommandLineW() callconv(WINAPI) LPWSTR;
89pub extern "kernel32" fn GetConsoleMode(in_hConsoleHandle: HANDLE, out_lpMode: *DWORD) callconv(WINAPI) BOOL;89pub extern "kernel32" fn GetConsoleMode(in_hConsoleHandle: HANDLE, out_lpMode: *DWORD) callconv(WINAPI) BOOL;
9090
91pub extern "kernel32" fn GetConsoleScreenBufferInfo(hConsoleOutput: HANDLE, lpConsoleScreenBufferInfo: *CONSOLE_SCREEN_BUFFER_INFO) callconv(WINAPI) BOOL;91pub extern "kernel32" fn GetConsoleScreenBufferInfo(hConsoleOutput: HANDLE, lpConsoleScreenBufferInfo: *CONSOLE_SCREEN_BUFFER_INFO) callconv(WINAPI) BOOL;
92pub extern "kernel32" fn FillConsoleOutputCharacterA(hConsoleOutput: HANDLE, cCharacter: TCHAR, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfCharsWritten: LPDWORD) callconv(WINAPI) BOOL;92pub extern "kernel32" fn FillConsoleOutputCharacterA(hConsoleOutput: HANDLE, cCharacter: CHAR, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfCharsWritten: LPDWORD) callconv(WINAPI) BOOL;
93pub extern "kernel32" fn FillConsoleOutputCharacterW(hConsoleOutput: HANDLE, cCharacter: WCHAR, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfCharsWritten: LPDWORD) callconv(WINAPI) BOOL;
93pub extern "kernel32" fn FillConsoleOutputAttribute(hConsoleOutput: HANDLE, wAttribute: WORD, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfAttrsWritten: LPDWORD) callconv(WINAPI) BOOL;94pub extern "kernel32" fn FillConsoleOutputAttribute(hConsoleOutput: HANDLE, wAttribute: WORD, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfAttrsWritten: LPDWORD) callconv(WINAPI) BOOL;
94pub extern "kernel32" fn SetConsoleCursorPosition(hConsoleOutput: HANDLE, dwCursorPosition: COORD) callconv(WINAPI) BOOL;95pub extern "kernel32" fn SetConsoleCursorPosition(hConsoleOutput: HANDLE, dwCursorPosition: COORD) callconv(WINAPI) BOOL;
9596