From 853d4343dba89b8df47d4f21f2170b52fcea1fa1 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Thu, 11 Jun 2015 17:54:44 +0200 Subject: [PATCH] msvcr: Add _ungetch_nolock implementation. --- dlls/msvcr100/msvcr100.spec | 2 +- dlls/msvcr110/msvcr110.spec | 2 +- dlls/msvcr120/msvcr120.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcrt/console.c | 21 +++++++++++++++------ 6 files changed, 20 insertions(+), 11 deletions(-) diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 002ed362125..194554bc152 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1410,7 +1410,7 @@ @ stub _umask_s @ cdecl _ungetc_nolock(long ptr) MSVCRT__ungetc_nolock @ cdecl _ungetch(long) -@ stub _ungetch_nolock +@ cdecl _ungetch_nolock(long) @ cdecl _ungetwc_nolock(long ptr) MSVCRT__ungetwc_nolock @ stub _ungetwch @ stub _ungetwch_nolock diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 7b06c5ff74e..91146329ee6 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1768,7 +1768,7 @@ @ stub _umask_s @ cdecl _ungetc_nolock(long ptr) MSVCRT__ungetc_nolock @ cdecl _ungetch(long) -@ stub _ungetch_nolock +@ cdecl _ungetch_nolock(long) @ cdecl _ungetwc_nolock(long ptr) MSVCRT__ungetwc_nolock @ stub _ungetwch @ stub _ungetwch_nolock diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 64eb2f54f69..9537d79d1c9 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1782,7 +1782,7 @@ @ stub _umask_s @ cdecl _ungetc_nolock(long ptr) MSVCRT__ungetc_nolock @ cdecl _ungetch(long) -@ stub _ungetch_nolock +@ cdecl _ungetch_nolock(long) @ cdecl _ungetwc_nolock(long ptr) MSVCRT__ungetwc_nolock @ stub _ungetwch @ stub _ungetwch_nolock diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 0bef364f150..00f7ab2ade5 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -1090,7 +1090,7 @@ @ stub _umask_s @ cdecl _ungetc_nolock(long ptr) MSVCRT__ungetc_nolock @ cdecl _ungetch(long) -@ stub _ungetch_nolock +@ cdecl _ungetch_nolock(long) @ cdecl _ungetwc_nolock(long ptr) MSVCRT__ungetwc_nolock @ stub _ungetwch @ stub _ungetwch_nolock diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index fafed02dcd7..9384a3ff14b 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -1065,7 +1065,7 @@ @ stub _umask_s @ cdecl _ungetc_nolock(long ptr) MSVCRT__ungetc_nolock @ cdecl _ungetch(long) -@ stub _ungetch_nolock +@ cdecl _ungetch_nolock(long) @ cdecl _ungetwc_nolock(long ptr) MSVCRT__ungetwc_nolock @ stub _ungetwch @ stub _ungetwch_nolock diff --git a/dlls/msvcrt/console.c b/dlls/msvcrt/console.c index ed8b728c56a..0acaa036d61 100644 --- a/dlls/msvcrt/console.c +++ b/dlls/msvcrt/console.c @@ -279,17 +279,26 @@ char* CDECL _cgets(char* str) return buf; } +/********************************************************************* + * _ungetch_nolock (MSVCRT.@) + */ +int CDECL _ungetch_nolock(int c) +{ + int retval = MSVCRT_EOF; + if (c != MSVCRT_EOF && __MSVCRT_console_buffer == MSVCRT_EOF) + retval = __MSVCRT_console_buffer = c; + return retval; +} + /********************************************************************* * _ungetch (MSVCRT.@) */ int CDECL _ungetch(int c) { - int retval = MSVCRT_EOF; - LOCK_CONSOLE; - if (c != MSVCRT_EOF && __MSVCRT_console_buffer == MSVCRT_EOF) - retval = __MSVCRT_console_buffer = c; - UNLOCK_CONSOLE; - return retval; + LOCK_CONSOLE; + c = _ungetch_nolock(c); + UNLOCK_CONSOLE; + return c; } /*********************************************************************