From 85d308631c90e69e09936faaeb75288852669be2 Mon Sep 17 00:00:00 2001
From: Michael Stefaniuc <mstefani@redhat.de>
Date: Thu, 12 Apr 2001 21:07:25 +0000
Subject: [PATCH] - added stubs for three console functions - updated wincon.h

---
 debugger/editline.c       |  1 +
 dlls/kernel/kernel32.spec |  6 +--
 include/wincon.h          | 50 ++++++++++++++++++++++++
 win32/console.c           | 80 +++++++++++++++++++++++++++++++++++++++
 4 files changed, 134 insertions(+), 3 deletions(-)

diff --git a/debugger/editline.c b/debugger/editline.c
index 04573190465..a904619c70c 100644
--- a/debugger/editline.c
+++ b/debugger/editline.c
@@ -30,6 +30,7 @@
 #include <string.h>
 
 #include "windef.h"
+#include "winbase.h"
 #include "wincon.h"
 #include "debugger.h"
 
diff --git a/dlls/kernel/kernel32.spec b/dlls/kernel/kernel32.spec
index 75d09f00640..2b23718170b 100644
--- a/dlls/kernel/kernel32.spec
+++ b/dlls/kernel/kernel32.spec
@@ -776,9 +776,9 @@ debug_channels (comm debugstr dll int resource stress thunk toolhelp win32)
 @ stdcall WriteConsoleInputA(long ptr long ptr) WriteConsoleInputA
 @ stdcall WriteConsoleInputW(long ptr long ptr) WriteConsoleInputW
 @ stdcall WriteConsoleOutputA(long ptr long long ptr) WriteConsoleOutputA
-@ stub WriteConsoleOutputAttribute
-@ stub WriteConsoleOutputCharacterA
-@ stub WriteConsoleOutputCharacterW
+@ stdcall WriteConsoleOutputAttribute(long ptr long long ptr) WriteConsoleOutputAttribute
+@ stdcall WriteConsoleOutputCharacterA(long ptr long long ptr) WriteConsoleOutputCharacterA
+@ stdcall WriteConsoleOutputCharacterW(long ptr long long ptr) WriteConsoleOutputCharacterW
 @ stdcall WriteConsoleOutputW(long ptr long long ptr) WriteConsoleOutputW
 @ stdcall WriteConsoleW(long ptr long ptr ptr) WriteConsoleW
 @ stdcall WriteFile(long ptr long ptr ptr) WriteFile
diff --git a/include/wincon.h b/include/wincon.h
index 19fcfc52ff3..279cca77c39 100644
--- a/include/wincon.h
+++ b/include/wincon.h
@@ -191,4 +191,54 @@ BOOL WINAPI GetConsoleScreenBufferInfo(HANDLE hConsoleOutput,
 BOOL WINAPI SetConsoleScreenBufferSize(HANDLE hConsoleOutput,
 					   COORD dwSize);
 
+BOOL WINAPI AllocConsole(VOID);
+HANDLE WINAPI CreateConsoleScreenBuffer( DWORD dwDesiredAccess, DWORD dwShareMode,
+			    LPSECURITY_ATTRIBUTES sa, DWORD dwFlags, LPVOID lpScreenBufferData);
+BOOL WINAPI FillConsoleOutputAttribute( HANDLE hConsoleOutput, WORD wAttribute,
+			    DWORD nLength, COORD dwCoord, LPDWORD lpNumAttrsWritten);
+BOOL WINAPI FillConsoleOutputCharacterA( HANDLE hConsoleOutput, BYTE cCharacter,
+			    DWORD nLength, COORD dwCoord, LPDWORD lpNumCharsWritten);
+BOOL WINAPI FillConsoleOutputCharacterW( HANDLE hConsoleOutput, WCHAR cCharacter,
+			    DWORD nLength, COORD dwCoord, LPDWORD lpNumCharsWritten);
+#define FillConsoleOutputCharacter WINELIB_NAME_AW(FillConsoleOutputCharacter)
+BOOL WINAPI FlushConsoleInputBuffer( HANDLE handle);
+BOOL WINAPI FreeConsole(VOID);
+BOOL WINAPI GenerateConsoleCtrlEvent( DWORD dwCtrlEvent, DWORD dwProcessGroupID);
+UINT WINAPI GetConsoleCP(VOID);
+BOOL WINAPI GetConsoleCursorInfo( HANDLE hcon, LPCONSOLE_CURSOR_INFO cinfo);
+BOOL WINAPI GetConsoleMode( HANDLE hcon,LPDWORD mode);
+UINT WINAPI GetConsoleOutputCP(VOID);
+DWORD WINAPI GetConsoleTitleA(LPSTR title,DWORD size);
+DWORD WINAPI GetConsoleTitleW( LPWSTR title, DWORD size);
+#define GetConsoleTitle WINELIB_NAME_AW(GetConsoleTitle)
+BOOL WINAPI GetNumberOfConsoleInputEvents( HANDLE hcon,LPDWORD nrofevents);
+BOOL WINAPI GetNumberOfConsoleMouseButtons(LPDWORD nrofbuttons);
+BOOL WINAPI ReadConsoleOutputAttribute( HANDLE hConsoleOutput, LPWORD lpAttribute,
+			    DWORD nLength, COORD dwReadCoord, LPDWORD lpNumberOfAttrsRead);
+BOOL WINAPI ScrollConsoleScreenBufferA( HANDLE hConsoleOutput, LPSMALL_RECT lpScrollRect,
+			    LPSMALL_RECT lpClipRect, COORD dwDestOrigin, LPCHAR_INFO lpFill);
+BOOL WINAPI ScrollConsoleScreenBufferW( HANDLE hConsoleOutput, LPSMALL_RECT lpScrollRect,
+			    LPSMALL_RECT lpClipRect, COORD dwDestOrigin, LPCHAR_INFO lpFill);
+#define ScrollConsoleScreenBuffer WINELIB_NAME_AW(ScrollConsoleScreenBuffer)
+BOOL WINAPI SetConsoleActiveScreenBuffer( HANDLE hConsoleOutput);
+BOOL WINAPI SetConsoleCP(UINT cp);
+BOOL WINAPI SetConsoleCtrlHandler( HANDLER_ROUTINE *func, BOOL add);
+BOOL WINAPI SetConsoleCursorInfo( HANDLE hcon, LPCONSOLE_CURSOR_INFO cinfo);
+BOOL WINAPI SetConsoleMode( HANDLE hcon, DWORD mode);
+BOOL WINAPI SetConsoleOutputCP(UINT cp);
+BOOL WINAPI SetConsoleTextAttribute( HANDLE hConsoleOutput,WORD wAttr);
+BOOL WINAPI SetConsoleTitleA(LPCSTR title);
+BOOL WINAPI SetConsoleTitleW(LPCWSTR title);
+#define SetConsoleTitle WINELIB_NAME_AW(SetConsoleTitle)
+BOOL WINAPI SetConsoleWindowInfo( HANDLE hcon, BOOL bAbsolute, LPSMALL_RECT window);
+
+BOOL WINAPI WriteConsoleOutputAttribute( HANDLE hConsoleOutput, CONST WORD *lpAttribute,
+			    DWORD nLength, COORD dwCoord, LPDWORD lpNumAttrsWritten);
+
+BOOL WINAPI WriteConsoleOutputCharacterA( HANDLE hConsoleOutput, LPCSTR lpCharacter,
+			    DWORD nLength, COORD dwCoord, LPDWORD lpNumCharsWritten);
+BOOL WINAPI WriteConsoleOutputCharacterW( HANDLE hConsoleOutput, LPCWSTR lpCharacter,
+			    DWORD nLength, COORD dwCoord, LPDWORD lpNumCharsWritten);
+#define WriteConsoleOutputCharacter WINELIB_NAME_AW(WriteConsoleOutputCharacter)
+
 #endif  /* __WINE_WINCON_H */
diff --git a/win32/console.c b/win32/console.c
index 960df02772c..fcafa2af5e5 100644
--- a/win32/console.c
+++ b/win32/console.c
@@ -1701,3 +1701,83 @@ BOOL WINAPI SetConsoleInputExeNameA( LPCSTR name )
     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
     return TRUE;
 }
+
+/******************************************************************************
+ * WriteConsoleOutputAttribute [KERNEL32.@]  Sets attributes for some cells in
+ * 					     the console screen buffer
+ *
+ * PARAMS
+ *    hConsoleOutput    [I] Handle to screen buffer
+ *    lpAttribute       [I] Pointer to buffer with write attributes
+ *    nLength           [I] Number of cells to write to
+ *    dwCoord           [I] Coords of first cell
+ *    lpNumAttrsWritten [O] Pointer to number of cells written
+ *
+ * RETURNS
+ *    Success: TRUE
+ *    Failure: FALSE
+ * 
+ * BUGS
+ *   Unimplemented
+ */
+BOOL WINAPI WriteConsoleOutputAttribute( HANDLE hConsoleOutput, 
+              CONST WORD *lpAttribute, DWORD nLength, COORD dwCoord, 
+              LPDWORD lpNumAttrsWritten)
+{
+    FIXME("(%d,%p,%ld,%dx%d,%p): stub\n", hConsoleOutput,
+          lpAttribute,nLength,dwCoord.X,dwCoord.Y,lpNumAttrsWritten);
+    *lpNumAttrsWritten = nLength;
+    return TRUE;
+}
+
+/******************************************************************************
+ * WriteConsoleOutputCharacterA [KERNEL32.@]  Copies character to consecutive
+ * 					      cells in the console screen buffer
+ *
+ * PARAMS
+ *    hConsoleOutput    [I] Handle to screen buffer
+ *    lpCharacter       [I] Pointer to buffer with chars to write
+ *    nLength           [I] Number of cells to write to
+ *    dwCoord           [I] Coords of first cell
+ *    lpNumCharsWritten [O] Pointer to number of cells written
+ * 
+ * BUGS
+ *   Unimplemented
+ */
+BOOL WINAPI WriteConsoleOutputCharacterA( HANDLE hConsoleOutput, 
+              LPCSTR lpCharacter, DWORD nLength, COORD dwCoord, 
+              LPDWORD lpNumCharsWritten)
+{
+    FIXME("(%d,%p,%ld,%dx%d,%p): stub\n", hConsoleOutput,
+          lpCharacter,nLength,dwCoord.X,dwCoord.Y,lpNumCharsWritten);
+    *lpNumCharsWritten = nLength;
+    return TRUE;
+}
+
+/******************************************************************************
+ * WriteConsoleOutputCharacterW [KERNEL32.@]  Copies character to consecutive
+ * 					      cells in the console screen buffer
+ *
+ * PARAMS
+ *    hConsoleOutput    [I] Handle to screen buffer
+ *    lpCharacter       [I] Pointer to buffer with chars to write
+ *    nLength           [I] Number of cells to write to
+ *    dwCoord           [I] Coords of first cell
+ *    lpNumCharsWritten [O] Pointer to number of cells written
+ *
+ * RETURNS
+ *    Success: TRUE
+ *    Failure: FALSE
+ * 
+ * BUGS
+ *   Unimplemented
+ */
+BOOL WINAPI WriteConsoleOutputCharacterW( HANDLE hConsoleOutput, 
+              LPCWSTR lpCharacter, DWORD nLength, COORD dwCoord, 
+              LPDWORD lpNumCharsWritten)
+{
+    FIXME("(%d,%p,%ld,%dx%d,%p): stub\n", hConsoleOutput,
+          lpCharacter,nLength,dwCoord.X,dwCoord.Y,lpNumCharsWritten);
+    *lpNumCharsWritten = nLength;
+    return TRUE;
+}
-- 
GitLab