37 wchar_t*
string = string_buffer;
41 size_t size_remaining = size_in_words - 1;
45 if (size_remaining == 0)
62 if (size_remaining == 0)
84 static_cast<DWORD>(size_remaining),
87 if (!read_console_result)
95 if (wchars_read >= 2 &&
string[wchars_read - 2] ==
L'\r')
97 *size_read += wchars_read - 2;
98 string[wchars_read - 2] =
L'\0';
100 else if (wchars_read == size_remaining &&
string[wchars_read - 1] ==
L'\r')
103 string[wchars_read - 1] =
L'\0';
104 *size_read += wchars_read - 1;
106 else if (wchars_read == 1 &&
string[0] ==
L'\n')
114 *size_read += wchars_read;
115 string[wchars_read] =
L'\0';
143 size_t const size_in_words =
static_cast<size_t>(
string[0]);
145 size_t size_read = 0;
148#pragma warning(suppress:__WARNING_POTENTIAL_BUFFER_OVERFLOW_NULLTERMINATED)
153#pragma warning(suppress:__WARNING_POTENTIAL_BUFFER_OVERFLOW_NULLTERMINATED)
154 string[1] =
static_cast<wchar_t>(size_read);
156 return result == 0 ?
string + 2 :
nullptr;
int __console_wchar_buffer_used
wchar_t __console_wchar_buffer
errno_t __cdecl _cgetws_s(wchar_t *const string_buffer, size_t const size_in_words, size_t *const size_read)
wchar_t *__cdecl _cgetws(_Inout_z_ wchar_t *const string)
void __cdecl __acrt_unlock(_In_ __acrt_lock_id lock)
void __cdecl __acrt_errno_map_os_error(unsigned long)
#define _RESET_STRING(_String, _Size)
__acrt_lock(__acrt_heap_lock)
BOOL __cdecl __dcrt_read_console(_Out_ LPVOID lpBuffer, _In_ DWORD nNumberOfCharsToRead, _Out_ LPDWORD lpNumberOfCharsRead)
BOOL __cdecl __dcrt_get_input_console_mode(_Out_ LPDWORD lpMode)
BOOL __cdecl __dcrt_lowio_ensure_console_input_initialized()
BOOL __cdecl __dcrt_set_input_console_mode(_In_ DWORD dwMode)
#define _VALIDATE_CLEAR_OSSERR_RETURN(expr, errorcode, retexpr)
#define _VALIDATE_CLEAR_OSSERR_RETURN_ERRCODE(expr, errorcode)
DWORD WINAPI GetLastError(void)
#define ENABLE_ECHO_INPUT
#define ENABLE_LINE_INPUT
#define ENABLE_PROCESSED_INPUT