ReactOS 0.4.16-dev-2104-gb84fa49
console.c File Reference
#include "msvcrt.h"
#include "winnls.h"
#include "wincon.h"
#include "mtdll.h"
#include "wine/debug.h"
Include dependency graph for console.c:

Go to the source code of this file.

Macros

#define LOCK_CONSOLE   _lock(_CONIO_LOCK)
 
#define UNLOCK_CONSOLE   _unlock(_CONIO_LOCK)
 
#define NORMAL_CHAR   0
 
#define ALT_CHAR   1
 
#define CTRL_CHAR   2
 
#define SHIFT_CHAR   3
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (msvcrt)
 
static HANDLE msvcrt_input_console (void)
 
static HANDLE msvcrt_output_console (void)
 
void msvcrt_free_console (void)
 
int CDECL _cputs (const char *str)
 
int CDECL _cputws (const wchar_t *str)
 
static BOOL handle_enhanced_keys (INPUT_RECORD *ir, unsigned char *ch1, unsigned char *ch2)
 
int CDECL _getch_nolock (void)
 
int CDECL _getch (void)
 
wchar_t CDECL _getwch_nolock (void)
 
wchar_t CDECL _getwch (void)
 
int CDECL _putch_nolock (int c)
 
int CDECL _putch (int c)
 
wchar_t CDECL _putwch_nolock (wchar_t c)
 
wchar_t CDECL _putwch (wchar_t c)
 
int CDECL _getche_nolock (void)
 
int CDECL _getche (void)
 
wchar_t CDECL _getwche_nolock (void)
 
wchar_t CDECL _getwche (void)
 
char *CDECL _cgets (char *str)
 
int CDECL _ungetch_nolock (int c)
 
int CDECL _ungetch (int c)
 
wchar_t CDECL _ungetwch_nolock (wchar_t c)
 
wchar_t CDECL _ungetwch (wchar_t c)
 
int CDECL _kbhit (void)
 
static int puts_clbk_console_a (void *ctx, int len, const char *str)
 
static int puts_clbk_console_w (void *ctx, int len, const wchar_t *str)
 
int CDECL _vcprintf_l (const char *format, _locale_t locale, va_list valist)
 
int CDECL _vcprintf (const char *format, va_list valist)
 
int WINAPIV _cprintf_l (const char *format, _locale_t locale,...)
 
int WINAPIV _cprintf (const char *format,...)
 
int CDECL _vcwprintf_l (const wchar_t *format, _locale_t locale, va_list valist)
 
int CDECL _vcwprintf (const wchar_t *format, va_list valist)
 
int WINAPIV _cwprintf_l (const wchar_t *format, _locale_t locale,...)
 
int WINAPIV _cwprintf (const wchar_t *format,...)
 

Variables

static HANDLE MSVCRT_console_in
 
static HANDLE MSVCRT_console_out
 
static int __MSVCRT_console_buffer = EOF
 
static wchar_t __MSVCRT_console_buffer_w = WEOF
 
struct {
   unsigned short   vk
 
   unsigned char   ch [4][2]
 
enh_map []
 

Macro Definition Documentation

◆ ALT_CHAR

#define ALT_CHAR   1

Definition at line 114 of file console.c.

◆ CTRL_CHAR

#define CTRL_CHAR   2

Definition at line 115 of file console.c.

◆ LOCK_CONSOLE

#define LOCK_CONSOLE   _lock(_CONIO_LOCK)

Definition at line 33 of file console.c.

◆ NORMAL_CHAR

#define NORMAL_CHAR   0

Definition at line 113 of file console.c.

◆ SHIFT_CHAR

#define SHIFT_CHAR   3

Definition at line 116 of file console.c.

◆ UNLOCK_CONSOLE

#define UNLOCK_CONSOLE   _unlock(_CONIO_LOCK)

Definition at line 34 of file console.c.

Function Documentation

◆ _cgets()

char *CDECL _cgets ( char str)

Definition at line 392 of file console.c.

393{
394 char *buf = str + 2;
395 DWORD got;
396 DWORD conmode = 0;
397
398 TRACE("(%p)\n", str);
399 str[1] = 0; /* Length */
403
404 if(ReadConsoleA(msvcrt_input_console(), buf, str[0], &got, NULL)) {
405 if(buf[got-2] == '\r') {
406 buf[got-2] = 0;
407 str[1] = got-2;
408 }
409 else if(got == 1 && buf[got-1] == '\n') {
410 buf[0] = 0;
411 str[1] = 0;
412 }
413 else if(got == str[0] && buf[got-1] == '\r') {
414 buf[got-1] = 0;
415 str[1] = got-1;
416 }
417 else
418 str[1] = got;
419 }
420 else
421 buf = NULL;
424 return buf;
425}
#define NULL
Definition: types.h:112
BOOL WINAPI GetConsoleMode(HANDLE hConsoleHandle, LPDWORD lpMode)
Definition: console.c:1571
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleMode(HANDLE hConsoleHandle, DWORD dwMode)
Definition: console.c:1608
BOOL WINAPI DECLSPEC_HOTPATCH ReadConsoleA(IN HANDLE hConsoleInput, OUT LPVOID lpBuffer, IN DWORD nNumberOfCharsToRead, OUT LPDWORD lpNumberOfCharsRead, IN PCONSOLE_READCONSOLE_CONTROL pInputControl OPTIONAL)
Definition: readwrite.c:1195
static HANDLE msvcrt_input_console(void)
Definition: console.c:42
#define LOCK_CONSOLE
Definition: console.c:33
#define UNLOCK_CONSOLE
Definition: console.c:34
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
const WCHAR * str
#define TRACE(s)
Definition: solgame.cpp:4
#define ENABLE_ECHO_INPUT
Definition: wincon.h:109
#define ENABLE_LINE_INPUT
Definition: wincon.h:108
#define ENABLE_PROCESSED_INPUT
Definition: wincon.h:107

◆ _cprintf()

int WINAPIV _cprintf ( const char format,
  ... 
)

Definition at line 563 of file console.c.

564{
565 int retval;
567
570 va_end(valist);
571
572 return retval;
573}
int CDECL _vcprintf(const char *format, va_list valist)
Definition: console.c:538
#define va_end(v)
Definition: stdarg.h:28
#define va_start(v, l)
Definition: stdarg.h:26
char * va_list
Definition: vadefs.h:50
static va_list valist
Definition: printf.c:46
Definition: format.c:58
int retval
Definition: wcstombs.cpp:91

Referenced by _amsg_exit().

◆ _cprintf_l()

int WINAPIV _cprintf_l ( const char format,
_locale_t  locale,
  ... 
)

Definition at line 547 of file console.c.

548{
549 int retval;
551
554 va_end(valist);
555
556 return retval;
557}
Definition: _locale.h:75
int CDECL _vcprintf_l(const char *format, _locale_t locale, va_list valist)
Definition: console.c:529

◆ _cputs()

int CDECL _cputs ( const char str)

Definition at line 78 of file console.c.

79{
81 int len, retval = -1;
82
83 if (!MSVCRT_CHECK_PMT(str != NULL)) return -1;
84 len = strlen(str);
85
88 && count == len)
89 retval = 0;
91 return retval;
92}
BOOL WINAPI DECLSPEC_HOTPATCH WriteConsoleA(IN HANDLE hConsoleOutput, IN CONST VOID *lpBuffer, IN DWORD nNumberOfCharsToWrite, OUT LPDWORD lpNumberOfCharsWritten, LPVOID lpReserved)
Definition: readwrite.c:1468
static HANDLE msvcrt_output_console(void)
Definition: console.c:55
_ACRTIMP size_t __cdecl strlen(const char *)
Definition: string.c:1592
#define MSVCRT_CHECK_PMT(x)
Definition: msvcrt.h:378
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLenum GLsizei len
Definition: glext.h:6722

Referenced by _cgets(), abort(), and gl_getpass().

◆ _cputws()

int CDECL _cputws ( const wchar_t str)

Definition at line 97 of file console.c.

98{
100 int len, retval = -1;
101
102 if (!MSVCRT_CHECK_PMT(str != NULL)) return -1;
103 len = wcslen(str);
104
107 && count == len)
108 retval = 0;
110 return retval;
111}
BOOL WINAPI DECLSPEC_HOTPATCH WriteConsoleW(IN HANDLE hConsoleOutput, IN CONST VOID *lpBuffer, IN DWORD nNumberOfCharsToWrite, OUT LPDWORD lpNumberOfCharsWritten, LPVOID lpReserved)
Definition: readwrite.c:1447
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2983

◆ _cwprintf()

int WINAPIV _cwprintf ( const wchar_t format,
  ... 
)

Definition at line 610 of file console.c.

611{
612 int retval;
614
617 va_end(valist);
618
619 return retval;
620}
int CDECL _vcwprintf(const wchar_t *format, va_list valist)
Definition: console.c:587

◆ _cwprintf_l()

int WINAPIV _cwprintf_l ( const wchar_t format,
_locale_t  locale,
  ... 
)

Definition at line 595 of file console.c.

596{
597 int retval;
599
602 va_end(valist);
603
604 return retval;
605}
int CDECL _vcwprintf_l(const wchar_t *format, _locale_t locale, va_list valist)
Definition: console.c:579

◆ _getch()

int CDECL _getch ( void  )

Definition at line 218 of file console.c.

219{
220 int ret;
221
223 ret = _getch_nolock();
225 return ret;
226}
int CDECL _getch_nolock(void)
Definition: console.c:164
return ret
Definition: mutex.c:146

Referenced by _cgets(), _getche(), _tmain(), abort(), DumpFont(), GetPass(), gl_getc(), gl_getcx(), gl_getpass(), main(), MainUsage(), PrintHelp(), ShowAppList(), TestEventsGeneration(), Wait(), and wmain().

◆ _getch_nolock()

int CDECL _getch_nolock ( void  )

Definition at line 164 of file console.c.

165{
166 int retval = EOF;
167
169 {
172 }
173 else
174 {
175 INPUT_RECORD ir;
176 DWORD count;
177 DWORD mode = 0;
178
180 if(mode)
182
183 do {
185 {
186 /* Only interested in ASCII chars */
187 if (ir.EventType == KEY_EVENT &&
189 {
190 unsigned char ch1, ch2;
191
193 {
195 break;
196 }
197
198 if (handle_enhanced_keys(&ir, &ch1, &ch2))
199 {
200 retval = ch1;
202 break;
203 }
204 }
205 }
206 else
207 break;
208 } while(1);
209 if (mode)
211 }
212 return retval;
213}
BOOL WINAPI DECLSPEC_HOTPATCH ReadConsoleInputA(IN HANDLE hConsoleInput, OUT PINPUT_RECORD lpBuffer, IN DWORD nLength, OUT LPDWORD lpNumberOfEventsRead)
Definition: readwrite.c:1276
static BOOL handle_enhanced_keys(INPUT_RECORD *ir, unsigned char *ch1, unsigned char *ch2)
Definition: console.c:131
static int __MSVCRT_console_buffer
Definition: console.c:38
#define EOF
Definition: stdio.h:33
GLenum mode
Definition: glext.h:6217
union _INPUT_RECORD::@3503 Event
WORD EventType
Definition: wincon.h:294
KEY_EVENT_RECORD KeyEvent
Definition: wincon.h:296
union _KEY_EVENT_RECORD::@3502 uChar
#define KEY_EVENT
Definition: wincon.h:156

Referenced by _getch(), _getche_nolock(), and _getwche_nolock().

◆ _getche()

int CDECL _getche ( void  )

Definition at line 354 of file console.c.

355{
356 int ret;
357
361 return ret;
362}
int CDECL _getche_nolock(void)
Definition: console.c:342

◆ _getche_nolock()

int CDECL _getche_nolock ( void  )

Definition at line 342 of file console.c.

343{
344 int retval;
346 if (retval != EOF)
348 return retval;
349}
int CDECL _putch_nolock(int c)
Definition: console.c:298

Referenced by _getche().

◆ _getwch()

wchar_t CDECL _getwch ( void  )

Definition at line 285 of file console.c.

286{
287 wchar_t ret;
288
292 return ret;
293}
wchar_t CDECL _getwch_nolock(void)
Definition: console.c:231

◆ _getwch_nolock()

wchar_t CDECL _getwch_nolock ( void  )

Definition at line 231 of file console.c.

232{
233 wchar_t retval = WEOF;
234
236 {
239 }
240 else
241 {
242 INPUT_RECORD ir;
243 DWORD count;
244 DWORD mode = 0;
245
247 if(mode)
249
250 do {
252 {
253 /* Only interested in ASCII chars */
254 if (ir.EventType == KEY_EVENT &&
256 {
257 unsigned char ch1, ch2;
258
260 {
262 break;
263 }
264
265 if (handle_enhanced_keys(&ir, &ch1, &ch2))
266 {
267 retval = ch1;
269 break;
270 }
271 }
272 }
273 else
274 break;
275 } while(1);
276 if (mode)
278 }
279 return retval;
280}
BOOL WINAPI ReadConsoleInputW(HANDLE handle, INPUT_RECORD *buffer, DWORD length, DWORD *count)
Definition: console.c:1815
static wchar_t __MSVCRT_console_buffer_w
Definition: console.c:39
#define WEOF
WCHAR UnicodeChar
Definition: wincon.h:266

Referenced by _getwch().

◆ _getwche()

wchar_t CDECL _getwche ( void  )

Definition at line 379 of file console.c.

380{
381 wchar_t ret;
382
386 return ret;
387}
wchar_t CDECL _getwche_nolock(void)
Definition: console.c:367

◆ _getwche_nolock()

wchar_t CDECL _getwche_nolock ( void  )

Definition at line 367 of file console.c.

368{
369 wchar_t wch;
370 wch = _getch_nolock();
371 if (wch == WEOF)
372 return wch;
373 return _putwch_nolock(wch);
374}
wchar_t CDECL _putwch_nolock(wchar_t c)
Definition: console.c:320

Referenced by _getwche().

◆ _kbhit()

int CDECL _kbhit ( void  )

Definition at line 474 of file console.c.

475{
476 int retval = 0;
477
480 retval = 1;
481 else
482 {
483 /* FIXME: There has to be a faster way than this in Win32.. */
484 INPUT_RECORD *ir = NULL;
485 DWORD count = 0, i;
486
488
489 if (count && (ir = malloc(count * sizeof(INPUT_RECORD))) &&
491 for(i = 0; i < count; i++)
492 {
493 if (ir[i].EventType == KEY_EVENT &&
494 ir[i].Event.KeyEvent.bKeyDown &&
495 ir[i].Event.KeyEvent.uChar.AsciiChar)
496 {
497 retval = 1;
498 break;
499 }
500 }
501 free(ir);
502 }
504 return retval;
505}
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
BOOL WINAPI GetNumberOfConsoleInputEvents(HANDLE hConsoleInput, LPDWORD lpNumberOfEvents)
Definition: console.c:1637
BOOL WINAPI DECLSPEC_HOTPATCH PeekConsoleInputA(IN HANDLE hConsoleInput, OUT PINPUT_RECORD lpBuffer, IN DWORD nLength, OUT LPDWORD lpNumberOfEventsRead)
Definition: readwrite.c:1236
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ EVENT_TYPE EventType
Definition: exfuncs.h:167

Referenced by gl_getcx(), and main().

◆ _putch()

int CDECL _putch ( int  c)

Definition at line 309 of file console.c.

310{
312 c = _putch_nolock(c);
314 return c;
315}
const GLubyte * c
Definition: glext.h:8905
#define c
Definition: ke_i.h:80

Referenced by _cgets(), _getche(), gl_getpass(), and test_console_putch().

◆ _putch_nolock()

int CDECL _putch_nolock ( int  c)

Definition at line 298 of file console.c.

299{
300 DWORD count;
301 if (WriteConsoleA(msvcrt_output_console(), &c, 1, &count, NULL) && count == 1)
302 return c;
303 return EOF;
304}

Referenced by _cputs(), _getche_nolock(), and _putch().

◆ _putwch()

wchar_t CDECL _putwch ( wchar_t  c)

Definition at line 331 of file console.c.

332{
334 c = _putwch_nolock(c);
336 return c;
337}

◆ _putwch_nolock()

wchar_t CDECL _putwch_nolock ( wchar_t  c)

Definition at line 320 of file console.c.

321{
322 DWORD count;
324 return c;
325 return WEOF;
326}

Referenced by _getwche_nolock(), _putch_nolock_internal(), _putwch(), and write_double_translated_unicode_nolock().

◆ _ungetch()

int CDECL _ungetch ( int  c)

Definition at line 441 of file console.c.

442{
446 return c;
447}
int CDECL _ungetch_nolock(int c)
Definition: console.c:430

Referenced by _cgets().

◆ _ungetch_nolock()

int CDECL _ungetch_nolock ( int  c)

Definition at line 430 of file console.c.

431{
432 int retval = EOF;
433 if (c != EOF && __MSVCRT_console_buffer == EOF)
435 return retval;
436}

Referenced by _ungetch().

◆ _ungetwch()

wchar_t CDECL _ungetwch ( wchar_t  c)

Definition at line 463 of file console.c.

464{
468 return c;
469}
wchar_t CDECL _ungetwch_nolock(wchar_t c)
Definition: console.c:452

◆ _ungetwch_nolock()

wchar_t CDECL _ungetwch_nolock ( wchar_t  c)

Definition at line 452 of file console.c.

453{
454 wchar_t retval = WEOF;
457 return retval;
458}

Referenced by _ungetwch().

◆ _vcprintf()

int CDECL _vcprintf ( const char format,
va_list  valist 
)

Definition at line 538 of file console.c.

539{
541}
static int puts_clbk_console_a(void *ctx, int len, const char *str)
Definition: console.c:507
int pf_printf_a(puts_clbk_a, void *, const char *, _locale_t, DWORD, args_clbk, void *, va_list *)
printf_arg arg_clbk_valist(void *, int, int, va_list *)
Definition: wcs.c:847

Referenced by _cprintf().

◆ _vcprintf_l()

int CDECL _vcprintf_l ( const char format,
_locale_t  locale,
va_list  valist 
)

Definition at line 529 of file console.c.

Referenced by _cprintf_l().

◆ _vcwprintf()

int CDECL _vcwprintf ( const wchar_t format,
va_list  valist 
)

Definition at line 587 of file console.c.

588{
590}
static int puts_clbk_console_w(void *ctx, int len, const wchar_t *str)
Definition: console.c:516
int pf_printf_w(puts_clbk_w, void *, const wchar_t *, _locale_t, DWORD, args_clbk, void *, va_list *)

Referenced by _cwprintf().

◆ _vcwprintf_l()

int CDECL _vcwprintf_l ( const wchar_t format,
_locale_t  locale,
va_list  valist 
)

Definition at line 579 of file console.c.

Referenced by _cwprintf_l().

◆ handle_enhanced_keys()

static BOOL handle_enhanced_keys ( INPUT_RECORD ir,
unsigned char ch1,
unsigned char ch2 
)
static

Definition at line 131 of file console.c.

132{
133 int i;
134
135 for (i = 0; i < ARRAY_SIZE(enh_map); i++)
136 {
137 if (ir->Event.KeyEvent.wVirtualScanCode == enh_map[i].vk)
138 {
139 unsigned idx;
140
142 idx = ALT_CHAR;
144 idx = CTRL_CHAR;
146 idx = SHIFT_CHAR;
147 else
149
150 *ch1 = enh_map[i].ch[idx][0];
151 *ch2 = enh_map[i].ch[idx][1];
152 return TRUE;
153 }
154 }
155
156 WARN("Unmapped char keyState=%lx vk=%x\n",
158 return FALSE;
159}
#define ARRAY_SIZE(A)
Definition: main.h:20
#define WARN(fmt,...)
Definition: precomp.h:61
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
unsigned int idx
Definition: utils.c:41
static const struct @574 enh_map[]
#define NORMAL_CHAR
Definition: console.c:113
#define ALT_CHAR
Definition: console.c:114
#define CTRL_CHAR
Definition: console.c:115
#define SHIFT_CHAR
Definition: console.c:116
WORD wVirtualScanCode
Definition: wincon.h:264
DWORD dwControlKeyState
Definition: wincon.h:269
#define LEFT_CTRL_PRESSED
Definition: wincon.h:168
#define SHIFT_PRESSED
Definition: wincon.h:169
#define RIGHT_CTRL_PRESSED
Definition: wincon.h:167
#define RIGHT_ALT_PRESSED
Definition: wincon.h:165
#define LEFT_ALT_PRESSED
Definition: wincon.h:166

Referenced by _getch_nolock(), and _getwch_nolock().

◆ msvcrt_free_console()

void msvcrt_free_console ( void  )

Definition at line 68 of file console.c.

69{
70 TRACE(":Closing console handles\n");
73}
#define CloseHandle
Definition: compat.h:739
static HANDLE MSVCRT_console_out
Definition: console.c:37
static HANDLE MSVCRT_console_in
Definition: console.c:36

Referenced by DllMain().

◆ msvcrt_input_console()

static HANDLE msvcrt_input_console ( void  )
static

Definition at line 42 of file console.c.

43{
45 {
50 WARN("Input console handle initialization failed!\n");
51 }
52 return MSVCRT_console_in;
53}
#define OPEN_EXISTING
Definition: compat.h:775
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define CreateFileA(a, b, c, d, e, f, g)
Definition: compat.h:740
#define GENERIC_READ
Definition: compat.h:135
#define FILE_SHARE_READ
Definition: compat.h:136
#define FILE_SHARE_WRITE
Definition: nt_native.h:681
#define GENERIC_WRITE
Definition: nt_native.h:90

Referenced by _cgets(), _getch_nolock(), _getwch_nolock(), and _kbhit().

◆ msvcrt_output_console()

static HANDLE msvcrt_output_console ( void  )
static

Definition at line 55 of file console.c.

56{
58 {
62 WARN("Output console handle initialization failed!\n");
63 }
64 return MSVCRT_console_out;
65}

Referenced by _cputs(), _cputws(), _putch_nolock(), _putwch_nolock(), puts_clbk_console_a(), and puts_clbk_console_w().

◆ puts_clbk_console_a()

static int puts_clbk_console_a ( void ctx,
int  len,
const char str 
)
static

Definition at line 507 of file console.c.

508{
511 len = -1;
513 return len;
514}

Referenced by _vcprintf(), and _vcprintf_l().

◆ puts_clbk_console_w()

static int puts_clbk_console_w ( void ctx,
int  len,
const wchar_t str 
)
static

Definition at line 516 of file console.c.

517{
520 len = -1;
522 return len;
523}

Referenced by _vcwprintf(), and _vcwprintf_l().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( msvcrt  )

Variable Documentation

◆ __MSVCRT_console_buffer

int __MSVCRT_console_buffer = EOF
static

Definition at line 38 of file console.c.

Referenced by _getch_nolock(), _kbhit(), and _ungetch_nolock().

◆ __MSVCRT_console_buffer_w

wchar_t __MSVCRT_console_buffer_w = WEOF
static

Definition at line 39 of file console.c.

Referenced by _getwch_nolock(), and _ungetwch_nolock().

◆ ch

unsigned char ch[4][2]

Definition at line 118 of file console.c.

Referenced by _fgets(), _fgetwc_nolock(), _flsbuf(), _getw(), _ismbcalnum(), _ismbcalnum_l(), _ismbcalpha(), _ismbcalpha_l(), _ismbcdigit(), _ismbcdigit_l(), _ismbcgraph(), _ismbcgraph_l(), _ismbclower(), _ismbclower_l(), _ismbcprint(), _ismbcprint_l(), _ismbcpunct(), _ismbcpunct_l(), _ismbcspace(), _ismbcspace_l(), _ismbcsymbol(), _ismbcsymbol_l(), _ismbcupper(), _ismbcupper_l(), _RTFGetChar(), _strlwr(), _strrev(), _strupr(), _wcslwr(), _wcsupr(), _wctomb_l(), AddCharToSelection(), AddItem(), adns__findrr_anychk(), adns__parse_domain_more(), af_latin_metrics_init_blues(), af_latin_metrics_init_widths(), af_shaper_get_cluster(), afm_stream_read_one(), afm_stream_read_string(), afm_stream_skip_spaces(), binary_search(), BmfdQueryFontTree(), Buslogic_InitBT958(), calc_output_multi(), calc_sha256(), casemap(), casemap_string(), char2uni(), char_info_AtoW(), char_info_WtoA(), charactersDebug(), CharLowerA(), CharLowerW(), CharPrevA(), CharPrevExA(), CharUpperA(), CharUpperW(), check_convertible(), check_file_size(), check_for_additional_prototype_types(), CHString::CHString(), chunked_read(), cmd_rmdir(), CommandDelete(), comp_value(), compose_chars(), ConClearScreen(), context_handle_registered(), Control_DoLaunch(), create_sic(), CryptEnumProviderTypesW(), csp_qstring(), decode_streamname(), decode_surrogate_pair(), decode_utf8_char(), deformat_literal(), determine_pointer_marshalling_style(), do_layer3(), DoPrintBody(), DoWordBreakProc(), CGridView::DrawGrid(), dumpHex(), dumpStr(), encode_createhow4(), encode_streamname(), error_invalid_switch(), error_parameter_format(), CShellCommandValue::Execute(), fgetwc(), filesys_GetAbsolutePathName(), fill_pinfo_side(), FillConsoleOutputCharacterA(), FillConsoleOutputCharacterW(), ATL::CStringT< BaseType, StringTraits >::Find(), CHString::Find(), ATL::ChTraitsCRT< char >::FindChar(), ATL::ChTraitsCRT< _CharType >::FindChar(), ATL::ChTraitsCRT< char >::FindCharReverse(), ATL::ChTraitsCRT< _CharType >::FindCharReverse(), FindProvTypesRegVals(), FixAmpersands(), folder_split_path(), format_insert(), format_lex(), format_message(), format_number(), FromBase64(), get_calling_convention(), get_char_props(), get_char_script(), get_char_type(), get_char_typeW(), get_context_handle_offset(), get_decomposition(), get_digit_zero_char(), get_key(), get_length_mbs_utf8(), get_length_mbs_utf8_compose(), get_length_sbcs(), get_qualifier(), get_str_hash(), get_table_entry(), get_utf8_char_len(), get_weight(), getbyte(), GetCharacterTimeout(), getline_no_comments(), getpacket(), GetPossibleCharacters(), GetPrimaryLen(), GetWidthOfCharCJK(), gl_getc(), gl_local_filename_completion_proc(), gl_putc(), Global_Chr(), Global_StrReverse(), handle_sequence_input(), hex(), hex2mem(), hex_clr(), hex_value(), hexchar_to_byte(), HEXEDIT_WM_CHAR(), HLPFILE_UncompressRLE(), HTTP_ProcessHeader(), i386_stack_walk(), icy2utf8(), IdnToNameprepUnicode(), IdnToUnicode(), ignorableWhitespaceDebug(), III_get_side_info(), III_hybrid(), CodecvtTest::imbue_while_reading(), inet_pton(), InetPtonW(), input_records_AtoW(), input_records_WtoA(), IntConvertMsgToAnsi(), IntIsValidDBCSMapping(), IntIsValidSBCSMapping(), is_char(), is_end_of_name(), is_end_of_tag(), is_eol_char(), is_namechar(), is_namestartchar(), is_ncnamechar(), is_pubchar(), is_sep(), is_sepA(), is_utf8(), is_valid_dbcs_mapping(), is_valid_sbcs_mapping(), is_wchar_encname(), is_wchar_space(), is_whitespace(), tinyxml2::XMLUtil::IsNameChar(), tinyxml2::XMLUtil::IsNameStartChar(), IsWordBreak(), isxmlspace(), ITextRange_fnSetChar(), ITextSelection_fnSetChar(), jinit_memory_mgr(), LcidFromHexString(), linear_vari_process(), lz_analyze_block(), lzx_output_literal(), main(), makestringfile(), map_to_halfwidth(), map_wparam_AtoW(), map_wparam_char_WtoA(), MapVirtualKeyExA(), CCabinet::MatchFileNamePattern(), mbstowcs_dbcs_decompose(), mbstowcs_decompose(), MD_Edit_OnSetPasswordChar(), MD_OnChar(), MD_OnCharToItem(), MD_OnDeadChar(), MD_OnMenuChar(), MD_OnSysChar(), MD_OnSysDeadChar(), ME_IsWSpace(), mem2hex(), memchrW(), memrchrW(), mirror_char(), mmioAscend(), MMSYSTEM_MidiStream_MessageHandler(), mpg123_fmt2(), mpg123_fmt_all(), mpg123_fmt_support(), MsgiUnicodeToAnsiMessage(), msvcrt_mbc_to_wc_l(), mystrchr(), mystrrchr(), need_escape(), CDFParser::NextToken(), nonspace_ignored(), NotifyParentOfSelection(), Number_toString(), CDFParser::OnCabinetName(), CDFParser::OnDiskLabel(), OpenType_CMAP_GetGlyphIndex(), ATL::CStringT< BaseType, StringTraits >::operator+=(), CHString::operator+=(), ATL::CSimpleStringT< BaseType, t_bMFCDLL >::operator+=(), CHString::operator=(), PagePrompt(), Parallel_putchar(), parse_switches(), ParseCommandLine(), PathGetCharTypeA(), PathGetCharTypeW(), CDFParser::PerformFileCopy(), pf_fill(), pf_printf(), print_text_marker(), process_COM(), process_vk_key(), ProcessCmdLine(), ProcessNewLinesAndNulls(), put_resource_id(), put_utf16(), putpacket(), re_match_multi(), read_text_integer(), read_until(), ReadCommand(), reader_parse_reference(), reader_update_position(), CConsole::ReadLine(), CDFParser::ReadLine(), ReplaceNewLines(), res_hnok(), resetContent(), ATL::CStringT< BaseType, StringTraits >::ReverseFind(), CHString::ReverseFind(), RtlGUIDFromString(), RtlUnicodeToUTF8N(), RtlUTF8ToUnicodeN(), Scramble(), ScrIoControl(), TScroller::ScrollBack(), set_quality_ratings(), set_quant_slots(), CHString::SetAt(), CCell::SetChar(), CGridView::SetFont(), SetFont(), SHLWAPI_StrRChrHelperA(), ShowPartitionSizeInputBox(), SHStripMneumonicA(), SHStripMneumonicW(), SimpleMatch(), stabs_pts_read_id(), start_next_chunk(), START_TEST(), strchr(), StrChrA(), StrChrIA(), StrChrIW(), StrChrNW(), strchrW(), StrChrW(), StringGetsExWorkerA(), StringGetsExWorkerW(), StringToGuid(), StrRChrA(), StrRChrIA(), StrRChrIW(), strrchrW(), StrRChrW(), test_basetypes(), test_console_getchar(), test_console_io(), test_fgetwc_locale(), test_fgetwc_unicode(), test_file_truncate(), test_FillConsoleOutputCharacterA(), test_FillConsoleOutputCharacterW(), test_FoldStringW(), test_freopen(), test_GetStringTypeW(), test_MapFont(), test_nontrivial_pointer_types(), test_RtlDowncaseUnicodeString(), test_RtlUpcaseUnicodeChar(), test_RtlUpcaseUnicodeString(), test_RtlUpperChar(), test_RtlUpperString(), test_simple_types(), test_SpecialCasing(), test_status_control(), test_std_stream_buffering(), test_tolower(), text_getc(), to_unicode_digit(), to_unicode_native(), ToBase64(), tolowerW(), toupperW(), translate_files(), translate_line(), TranslateAcceleratorA(), TransmitCommChar(), TRIO_ARGS2(), UDFUnicodeInString(), uni2char(), UpdateCells(), URL_NeedEscapeW(), url_needs_escape(), usp10_compare_script_range(), utf8_mbstowcs_compose(), valid_offset(), validate_operation(), vbuf__append_quoted1035(), VkKeyScanA(), VkKeyScanExA(), VkKeyScanExW(), VkKeyScanW(), wcrtomb(), wcschr(), wcsrchr(), wctomb(), wine_fold_string(), wine_is_dbcs_leadbyte(), wine_utf8_mbstowcs(), wine_utf8_wcstombs(), CConsole::Write(), write_context_handle_rundowns(), write_output_buffer_char(), write_rundown_routines(), CConsole::WriteChar(), xmlHashComputeKey(), xmlHashComputeQKey(), xmlIsBaseChar(), xmlIsBlank(), xmlIsChar(), xmlIsCombining(), xmlIsDigit(), xmlIsExtender(), xmlIsIdeographic(), xmlIsPubidChar(), xmlSAX2Characters(), xmlSAX2IgnorableWhitespace(), xmlSAX2Text(), xmlURIEscapeStr(), xmlUTF8Strloc(), xmlUTF8Strpos(), xmlUTF8Strsize(), xmlUTF8Strsub(), xmlwriter_WriteCharEntity(), xsltIsDigitZero(), and zoh_vari_process().

◆ 

const struct { ... } enh_map[]
Initial value:
= {
{0x47, {{0xE0, 0x47}, {0x00, 0x97}, {0xE0, 0x77}, {0xE0, 0x47}}},
{0x48, {{0xE0, 0x48}, {0x00, 0x98}, {0xE0, 0x8D}, {0xE0, 0x48}}},
{0x49, {{0xE0, 0x49}, {0x00, 0x99}, {0xE0, 0x86}, {0xE0, 0x49}}},
{0x4B, {{0xE0, 0x4B}, {0x00, 0x9B}, {0xE0, 0x73}, {0xE0, 0x4B}}},
{0x4D, {{0xE0, 0x4D}, {0x00, 0x9D}, {0xE0, 0x74}, {0xE0, 0x4D}}},
{0x4F, {{0xE0, 0x4F}, {0x00, 0x9F}, {0xE0, 0x75}, {0xE0, 0x4F}}},
{0x50, {{0xE0, 0x50}, {0x00, 0xA0}, {0xE0, 0x91}, {0xE0, 0x50}}},
{0x51, {{0xE0, 0x51}, {0x00, 0xA1}, {0xE0, 0x76}, {0xE0, 0x51}}},
{0x52, {{0xE0, 0x52}, {0x00, 0xA2}, {0xE0, 0x92}, {0xE0, 0x52}}},
{0x53, {{0xE0, 0x53}, {0x00, 0xA3}, {0xE0, 0x93}, {0xE0, 0x53}}},
}

Referenced by handle_enhanced_keys().

◆ MSVCRT_console_in

HANDLE MSVCRT_console_in
static

Definition at line 36 of file console.c.

Referenced by msvcrt_free_console(), and msvcrt_input_console().

◆ MSVCRT_console_out

HANDLE MSVCRT_console_out
static

Definition at line 37 of file console.c.

Referenced by _cputs(), msvcrt_free_console(), and msvcrt_output_console().

◆ vk