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 @@ -438,6 +438,28 @@ int CDECL _ungetch(int c) return 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.@) */ 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)