Module: wine Branch: master Commit: 27b7ff73e47fd50b9bf745f35d356770d51e7743 URL: http://source.winehq.org/git/wine.git/?a=commit;h=27b7ff73e47fd50b9bf745f35d...
Author: Piotr Caban piotr@codeweavers.com Date: Sun Jun 14 14:31:32 2015 +0200
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 ce36cdf..b41037a 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 8cf1202..eed8601 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 bbf8f90..2c2b866 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 299a645..eb3464b 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 4741b85..92c71c3 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 8f1f6f9..23bded4a 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 109e2ad..32d850a 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 59b1dbb..154e78c 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 b81ebf9..d7a5878 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)