Piotr Caban : msvcr: Add _ungetch_nolock implementation.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Jun 12 07:36:12 CDT 2015


Module: wine
Branch: master
Commit: 853d4343dba89b8df47d4f21f2170b52fcea1fa1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=853d4343dba89b8df47d4f21f2170b52fcea1fa1

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Thu Jun 11 17:54:44 2015 +0200

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       | 17 +++++++++++++----
 6 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index 002ed36..194554b 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 7b06c5f..9114632 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 64eb2f5..9537d79 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 0bef364..00f7ab2 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 fafed02..9384a3f 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 ed8b728..0acaa03 100644
--- a/dlls/msvcrt/console.c
+++ b/dlls/msvcrt/console.c
@@ -280,19 +280,28 @@ char* CDECL _cgets(char* str)
 }
 
 /*********************************************************************
- *		_ungetch (MSVCRT.@)
+ *		_ungetch_nolock (MSVCRT.@)
  */
-int CDECL _ungetch(int c)
+int CDECL _ungetch_nolock(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;
 }
 
 /*********************************************************************
+ *		_ungetch (MSVCRT.@)
+ */
+int CDECL _ungetch(int c)
+{
+    LOCK_CONSOLE;
+    c = _ungetch_nolock(c);
+    UNLOCK_CONSOLE;
+    return c;
+}
+
+/*********************************************************************
  *		_kbhit (MSVCRT.@)
  */
 int CDECL _kbhit(void)




More information about the wine-cvs mailing list