Release 970824
[wine.git] / win32 / console.c
blob872ac73b10b21242b951fc80b126af593bc679d3
1 /*
2 * Win32 kernel functions
4 * Copyright 1995 Martin von Loewis and Cameron Heide
5 */
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include "windows.h"
10 #include "winerror.h"
11 #include "wincon.h"
12 #include "heap.h"
13 #include "xmalloc.h"
14 #include "stddebug.h"
15 #include "debug.h"
17 static CONSOLE_SCREEN_BUFFER_INFO dummyinfo =
19 {80, 24},
20 {0, 0},
22 {0, 0, 79, 23},
23 {80, 24}
26 /***********************************************************************
27 * SetConsoleCtrlHandler (KERNEL32.459)
29 BOOL32 WINAPI SetConsoleCtrlHandler(HANDLER_ROUTINE * func, BOOL32 a)
31 return 0;
34 /***********************************************************************
35 * GetConsoleScreenBufferInfo (KERNEL32.190)
37 BOOL32 WINAPI GetConsoleScreenBufferInfo( HANDLE32 hConsoleOutput,
38 LPCONSOLE_SCREEN_BUFFER_INFO csbi )
40 csbi->dwSize.x = 80;
41 csbi->dwSize.y = 24;
42 csbi->dwCursorPosition.x = 0;
43 csbi->dwCursorPosition.y = 0;
44 csbi->wAttributes = 0;
45 csbi->srWindow.Left = 0;
46 csbi->srWindow.Right = 79;
47 csbi->srWindow.Top = 0;
48 csbi->srWindow.Bottom = 23;
49 csbi->dwMaximumWindowSize.x = 80;
50 csbi->dwMaximumWindowSize.y = 24;
51 return TRUE;
54 /***********************************************************************
55 * GetLargestConsoleWindowSize (KERNEL32.226)
57 DWORD WINAPI GetLargestConsoleWindowSize( HANDLE32 hConsoleOutput )
59 return (DWORD)MAKELONG(dummyinfo.dwMaximumWindowSize.x,dummyinfo.dwMaximumWindowSize.y);
62 /***********************************************************************
63 * GetConsoleCP (KERNEL32.226)
65 UINT32 WINAPI GetConsoleCP(VOID)
67 return GetACP();
70 /***********************************************************************
71 * GetConsoleOutputCP (KERNEL32.189)
73 UINT32 WINAPI GetConsoleOutputCP(VOID)
75 return GetConsoleCP();
78 /***********************************************************************
79 * GetConsoleMode (KERNEL32.188)
81 BOOL32 WINAPI GetConsoleMode(HANDLE32 hcon,LPDWORD mode)
83 *mode = ENABLE_PROCESSED_INPUT |
84 ENABLE_LINE_INPUT |
85 ENABLE_ECHO_INPUT |
86 ENABLE_WINDOW_INPUT |
87 ENABLE_MOUSE_INPUT;
88 return TRUE;
91 /***********************************************************************
92 * SetConsoleMode (KERNEL32.188)
94 BOOL32 WINAPI SetConsoleMode(HANDLE32 hcon,DWORD mode)
96 fprintf(stdnimp,"SetConsoleMode(%08x,%08lx)\n",hcon,mode);
97 return TRUE;
100 /***********************************************************************
101 * GetConsoleTitleA (KERNEL32.191)
103 DWORD WINAPI GetConsoleTitle32A(LPSTR title,DWORD size)
105 lstrcpyn32A(title,"Console",size);
106 return strlen("Console");
109 /***********************************************************************
110 * GetConsoleTitleW (KERNEL32.192)
112 DWORD WINAPI GetConsoleTitle32W(LPWSTR title,DWORD size)
114 lstrcpynAtoW(title,"Console",size);
115 return strlen("Console");
118 /***********************************************************************
119 * WriteConsoleA (KERNEL32.567)
121 BOOL32 WINAPI WriteConsole32A( HANDLE32 hConsoleOutput,
122 LPVOID lpBuffer,
123 DWORD nNumberOfCharsToWrite,
124 LPDWORD lpNumberOfCharsWritten,
125 LPVOID lpReserved )
127 LPSTR buf = (LPSTR)xmalloc(nNumberOfCharsToWrite+1);
129 lstrcpyn32A(buf,lpBuffer,nNumberOfCharsToWrite);
130 buf[nNumberOfCharsToWrite]=0;
131 fprintf(stderr,"%s",buf);
132 free(buf);
133 *lpNumberOfCharsWritten=nNumberOfCharsToWrite;
134 return TRUE;
137 /***********************************************************************
138 * WriteConsoleW (KERNEL32.577)
140 BOOL32 WINAPI WriteConsole32W( HANDLE32 hConsoleOutput,
141 LPVOID lpBuffer,
142 DWORD nNumberOfCharsToWrite,
143 LPDWORD lpNumberOfCharsWritten,
144 LPVOID lpReserved )
146 LPSTR buf = (LPSTR)xmalloc(2*nNumberOfCharsToWrite+1);
148 lstrcpynWtoA(buf,lpBuffer,nNumberOfCharsToWrite);
149 buf[nNumberOfCharsToWrite]=0;
150 fprintf(stderr,"%s",buf);
151 free(buf);
152 *lpNumberOfCharsWritten=nNumberOfCharsToWrite;
153 return TRUE;
156 /***********************************************************************
157 * ReadConsoleA (KERNEL32.419)
159 BOOL32 WINAPI ReadConsole32A( HANDLE32 hConsoleInput,
160 LPVOID lpBuffer,
161 DWORD nNumberOfCharsToRead,
162 LPDWORD lpNumberOfCharsRead,
163 LPVOID lpReserved )
165 fgets(lpBuffer,nNumberOfCharsToRead,stdin);
166 *lpNumberOfCharsRead = strlen(lpBuffer);
167 return TRUE;
170 /***********************************************************************
171 * ReadConsoleW (KERNEL32.427)
173 BOOL32 WINAPI ReadConsole32W( HANDLE32 hConsoleInput,
174 LPVOID lpBuffer,
175 DWORD nNumberOfCharsToRead,
176 LPDWORD lpNumberOfCharsRead,
177 LPVOID lpReserved )
179 LPSTR buf = (LPSTR)xmalloc(nNumberOfCharsToRead);
181 fgets(buf,nNumberOfCharsToRead,stdin);
182 lstrcpynAtoW(lpBuffer,buf,nNumberOfCharsToRead);
183 *lpNumberOfCharsRead = strlen(buf);
184 return TRUE;
187 /***********************************************************************
188 * SetConsoleTitle32A (KERNEL32.476)
190 BOOL32 WINAPI SetConsoleTitle32A(LPCSTR title)
192 fprintf(stderr,"SetConsoleTitle(%s)\n",title);
193 return TRUE;
196 /***********************************************************************
197 * SetConsoleTitle32W (KERNEL32.477)
199 BOOL32 WINAPI SetConsoleTitle32W( LPCWSTR title )
201 LPSTR titleA = HEAP_strdupWtoA( GetProcessHeap(), 0, title );
202 fprintf(stderr,"SetConsoleTitle(%s)\n",titleA);
203 HeapFree( GetProcessHeap(), 0, titleA );
204 return TRUE;
207 /***********************************************************************
208 * FlushConsoleInputBuffer (KERNEL32.132)
210 BOOL32 WINAPI FlushConsoleInputBuffer(HANDLE32 hConsoleInput){
211 fprintf(stderr,"FlushConsoleInputBuffer(%d)\n",hConsoleInput);
212 return TRUE;
215 BOOL32 WINAPI SetConsoleCursorPosition(HANDLE32 hcons,COORD c)
217 /* x are columns, y rows */
218 if (!c.y) {
219 fprintf(stderr,"\r");
220 if (c.x)
221 fprintf(stderr,"\e[%dC",c.x);
222 return TRUE;
224 /* handle rest of the cases */
225 return FALSE;
228 /***********************************************************************
229 * GetNumberOfConsoleInputEvents (KERNEL32.246)
231 BOOL32 WINAPI GetNumberOfConsoleInputEvents(HANDLE32 hcon,LPDWORD nrofevents)
233 *nrofevents = 1;
234 return TRUE;