From 27b7ff73e47fd50b9bf745f35d356770d51e7743 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Sun, 14 Jun 2015 14:31:32 +0200 Subject: [PATCH] msvcrt: Add _ungetwch implementation. --- dlls/msvcr100/msvcr100.spec | 4 ++-- dlls/msvcr110/msvcr110.spec | 4 ++-- dlls/msvcr120/msvcr120.spec | 4 ++-- dlls/msvcr70/msvcr70.spec | 2 +- dlls/msvcr71/msvcr71.spec | 2 +- dlls/msvcr80/msvcr80.spec | 4 ++-- dlls/msvcr90/msvcr90.spec | 4 ++-- dlls/msvcrt/console.c | 22 ++++++++++++++++++++++ dlls/msvcrt/msvcrt.spec | 2 +- 9 files changed, 35 insertions(+), 13 deletions(-) diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index ce36cdf86ac..b41037ae18f 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1412,8 +1412,8 @@ @ cdecl _ungetch(long) @ cdecl _ungetch_nolock(long) @ cdecl _ungetwc_nolock(long ptr) MSVCRT__ungetwc_nolock -@ stub _ungetwch -@ stub _ungetwch_nolock +@ cdecl _ungetwch(long) +@ cdecl _ungetwch_nolock(long) @ cdecl _unlink(str) MSVCRT__unlink @ cdecl _unloaddll(long) @ cdecl _unlock(long) diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 8cf12020b1f..eed8601e4f1 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1770,8 +1770,8 @@ @ cdecl _ungetch(long) @ cdecl _ungetch_nolock(long) @ cdecl _ungetwc_nolock(long ptr) MSVCRT__ungetwc_nolock -@ stub _ungetwch -@ stub _ungetwch_nolock +@ cdecl _ungetwch(long) +@ cdecl _ungetwch_nolock(long) @ cdecl _unlink(str) MSVCRT__unlink @ cdecl _unloaddll(long) @ cdecl _unlock(long) diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index bbf8f90fabc..2c2b866a13f 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1784,8 +1784,8 @@ @ cdecl _ungetch(long) @ cdecl _ungetch_nolock(long) @ cdecl _ungetwc_nolock(long ptr) MSVCRT__ungetwc_nolock -@ stub _ungetwch -@ stub _ungetwch_nolock +@ cdecl _ungetwch(long) +@ cdecl _ungetwch_nolock(long) @ cdecl _unlink(str) MSVCRT__unlink @ cdecl _unloaddll(long) @ cdecl _unlock(long) diff --git a/dlls/msvcr70/msvcr70.spec b/dlls/msvcr70/msvcr70.spec index 299a645e8c7..eb3464beb02 100644 --- a/dlls/msvcr70/msvcr70.spec +++ b/dlls/msvcr70/msvcr70.spec @@ -578,7 +578,7 @@ @ cdecl _ultow(long ptr long) ntdll._ultow @ cdecl _umask(long) MSVCRT__umask @ cdecl _ungetch(long) -@ stub _ungetwch +@ cdecl _ungetwch(long) @ cdecl _unlink(str) MSVCRT__unlink @ cdecl _unloaddll(long) @ cdecl _unlock(long) diff --git a/dlls/msvcr71/msvcr71.spec b/dlls/msvcr71/msvcr71.spec index 4741b859b3f..92c71c3bfdc 100644 --- a/dlls/msvcr71/msvcr71.spec +++ b/dlls/msvcr71/msvcr71.spec @@ -574,7 +574,7 @@ @ cdecl _ultow(long ptr long) ntdll._ultow @ cdecl _umask(long) MSVCRT__umask @ cdecl _ungetch(long) -@ stub _ungetwch +@ cdecl _ungetwch(long) @ cdecl _unlink(str) MSVCRT__unlink @ cdecl _unloaddll(long) @ cdecl _unlock(long) diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 8f1f6f988ca..23bded4ae57 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -1092,8 +1092,8 @@ @ cdecl _ungetch(long) @ cdecl _ungetch_nolock(long) @ cdecl _ungetwc_nolock(long ptr) MSVCRT__ungetwc_nolock -@ stub _ungetwch -@ stub _ungetwch_nolock +@ cdecl _ungetwch(long) +@ cdecl _ungetwch_nolock(long) @ cdecl _unlink(str) MSVCRT__unlink @ cdecl _unloaddll(long) @ cdecl _unlock(long) diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 109e2adc1c7..32d850a2a96 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -1067,8 +1067,8 @@ @ cdecl _ungetch(long) @ cdecl _ungetch_nolock(long) @ cdecl _ungetwc_nolock(long ptr) MSVCRT__ungetwc_nolock -@ stub _ungetwch -@ stub _ungetwch_nolock +@ cdecl _ungetwch(long) +@ cdecl _ungetwch_nolock(long) @ cdecl _unlink(str) MSVCRT__unlink @ cdecl _unloaddll(long) @ cdecl _unlock(long) diff --git a/dlls/msvcrt/console.c b/dlls/msvcrt/console.c index 59b1dbbbf8b..154e78c3ad0 100644 --- a/dlls/msvcrt/console.c +++ b/dlls/msvcrt/console.c @@ -439,6 +439,28 @@ int CDECL _ungetch(int c) } /********************************************************************* + * _ungetwch_nolock (MSVCR80.@) + */ +MSVCRT_wchar_t CDECL _ungetwch_nolock(MSVCRT_wchar_t c) +{ + MSVCRT_wchar_t retval = MSVCRT_WEOF; + if (c != MSVCRT_WEOF && __MSVCRT_console_buffer_w == MSVCRT_WEOF) + retval = __MSVCRT_console_buffer_w = c; + return retval; +} + +/********************************************************************* + * _ungetwch (MSVCRT.@) + */ +MSVCRT_wchar_t CDECL _ungetwch(MSVCRT_wchar_t c) +{ + LOCK_CONSOLE; + c = _ungetwch_nolock(c); + UNLOCK_CONSOLE; + return c; +} + +/********************************************************************* * _kbhit (MSVCRT.@) */ int CDECL _kbhit(void) diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index b81ebf916d0..d7a58781c17 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -1025,7 +1025,7 @@ @ cdecl _umask(long) MSVCRT__umask # stub _umask_s(long ptr) @ cdecl _ungetch(long) -# stub _ungetwch(long) +@ cdecl _ungetwch(long) @ cdecl _unlink(str) MSVCRT__unlink @ cdecl _unloaddll(long) @ cdecl _unlock(long) -- 2.11.4.GIT