Module: wine Branch: master Commit: 30f1c1be740174052bb727b82ef226d112501c42 URL: https://gitlab.winehq.org/wine/wine/-/commit/30f1c1be740174052bb727b82ef226d...
Author: Hugh McMaster hugh.mcmaster@outlook.com Date: Wed Mar 29 21:49:14 2023 +1100
kernelbase: Implement GetConsoleOriginalTitleA().
---
dlls/kernel32/tests/console.c | 12 ++++++------ dlls/kernelbase/console.c | 14 +++++++++++--- 2 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c index fbf773ec7d9..9e42c5b6c3b 100644 --- a/dlls/kernel32/tests/console.c +++ b/dlls/kernel32/tests/console.c @@ -4238,17 +4238,17 @@ static void test_GetConsoleOriginalTitleA(void) ok(!ret, "Unexpected string length; error %lu\n", GetLastError());
ret = GetConsoleOriginalTitleA(buf, ARRAY_SIZE(buf)); - todo_wine ok(ret, "GetConsoleOriginalTitleA failed: %lu\n", GetLastError()); - todo_wine ok(!strcmp(buf, title), "got %s, expected %s\n", wine_dbgstr_a(buf), wine_dbgstr_a(title)); - todo_wine ok(ret == title_len, "got %lu, expected %lu\n", ret, title_len); + ok(ret, "GetConsoleOriginalTitleA failed: %lu\n", GetLastError()); + ok(!strcmp(buf, title), "got %s, expected %s\n", wine_dbgstr_a(buf), wine_dbgstr_a(title)); + ok(ret == title_len, "got %lu, expected %lu\n", ret, title_len);
ret = SetConsoleTitleA("test"); ok(ret, "SetConsoleTitleA failed: %lu\n", GetLastError());
ret = GetConsoleOriginalTitleA(buf, ARRAY_SIZE(buf)); - todo_wine ok(ret, "GetConsoleOriginalTitleA failed: %lu\n", GetLastError()); - todo_wine ok(!strcmp(buf, title), "got %s, expected %s\n", wine_dbgstr_a(buf), wine_dbgstr_a(title)); - todo_wine ok(ret == title_len, "got %lu, expected %lu\n", ret, title_len); + ok(ret, "GetConsoleOriginalTitleA failed: %lu\n", GetLastError()); + ok(!strcmp(buf, title), "got %s, expected %s\n", wine_dbgstr_a(buf), wine_dbgstr_a(title)); + ok(ret == title_len, "got %lu, expected %lu\n", ret, title_len); }
static void test_GetConsoleOriginalTitleW(void) diff --git a/dlls/kernelbase/console.c b/dlls/kernelbase/console.c index 0f72106e425..cd5fdb7d9f7 100644 --- a/dlls/kernelbase/console.c +++ b/dlls/kernelbase/console.c @@ -914,9 +914,17 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetConsoleMode( HANDLE handle, DWORD *mode ) */ DWORD WINAPI DECLSPEC_HOTPATCH GetConsoleOriginalTitleA( LPSTR title, DWORD size ) { - FIXME( ": (%p, %lu) stub!\n", title, size ); - SetLastError( ERROR_CALL_NOT_IMPLEMENTED ); - return 0; + WCHAR *ptr = HeapAlloc( GetProcessHeap(), 0, size * sizeof(WCHAR) ); + DWORD ret; + + if (!ptr) return 0; + + ret = GetConsoleOriginalTitleW( ptr, size ); + if (ret) + WideCharToMultiByte( GetConsoleOutputCP(), 0, ptr, -1, title, size, NULL, NULL); + + HeapFree( GetProcessHeap(), 0, ptr ); + return ret; }