Module: wine Branch: master Commit: 878b4a92803eeac38b218e55dc9f41a6d503deec URL: http://source.winehq.org/git/wine.git/?a=commit;h=878b4a92803eeac38b218e55dc...
Author: Iván Matellanes matellanesivan@gmail.com Date: Tue Oct 28 14:43:43 2014 +0100
msvcrt: Added _fgetc_nolock implementation.
---
dlls/msvcr100/msvcr100.spec | 1 + dlls/msvcr110/msvcr110.spec | 1 + dlls/msvcr80/msvcr80.spec | 1 + dlls/msvcr90/msvcr90.spec | 1 + dlls/msvcrt/file.c | 16 ++++++++++++++-- dlls/msvcrt/msvcrt.h | 1 + include/msvcrt/stdio.h | 1 + 7 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 91805ee..e33f5fe 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -800,6 +800,7 @@ @ cdecl _fcvt_s(ptr long double long ptr ptr) MSVCRT__fcvt_s @ cdecl _fdopen(long str) MSVCRT__fdopen @ cdecl _fflush_nolock(ptr) MSVCRT__fflush_nolock +@ cdecl _fgetc_nolock(ptr) MSVCRT__fgetc_nolock @ cdecl _fgetchar() MSVCRT__fgetchar @ stub _fgetwc_nolock @ cdecl _fgetwchar() MSVCRT__fgetwchar diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 5de6965..88144a3 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1148,6 +1148,7 @@ @ cdecl _fcvt_s(ptr long double long ptr ptr) MSVCRT__fcvt_s @ cdecl _fdopen(long str) MSVCRT__fdopen @ cdecl _fflush_nolock(ptr) MSVCRT__fflush_nolock +@ cdecl _fgetc_nolock(ptr) MSVCRT__fgetc_nolock @ cdecl _fgetchar() MSVCRT__fgetchar @ stub _fgetwc_nolock @ cdecl _fgetwchar() MSVCRT__fgetwchar diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index b7f0a86..5c01600 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -467,6 +467,7 @@ @ cdecl _fcvt_s(ptr long double long ptr ptr) MSVCRT__fcvt_s @ cdecl _fdopen(long str) MSVCRT__fdopen @ cdecl _fflush_nolock(ptr) MSVCRT__fflush_nolock +@ cdecl _fgetc_nolock(ptr) MSVCRT__fgetc_nolock @ cdecl _fgetchar() MSVCRT__fgetchar @ stub _fgetwc_nolock @ cdecl _fgetwchar() MSVCRT__fgetwchar diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index a8ad25f..d9d99f4 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -449,6 +449,7 @@ @ cdecl _fcvt_s(ptr long double long ptr ptr) MSVCRT__fcvt_s @ cdecl _fdopen(long str) MSVCRT__fdopen @ cdecl _fflush_nolock(ptr) MSVCRT__fflush_nolock +@ cdecl _fgetc_nolock(ptr) MSVCRT__fgetc_nolock @ cdecl _fgetchar() MSVCRT__fgetchar @ stub _fgetwc_nolock @ cdecl _fgetwchar() MSVCRT__fgetwchar diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index d191953..dbbbe78 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -3503,10 +3503,23 @@ int CDECL MSVCRT__filbuf(MSVCRT_FILE* file) */ int CDECL MSVCRT_fgetc(MSVCRT_FILE* file) { + int ret; + + MSVCRT__lock_file(file); + ret = MSVCRT__fgetc_nolock(file); + MSVCRT__unlock_file(file); + + return ret; +} + +/********************************************************************* + * _fgetc_nolock (MSVCRT.@) + */ +int CDECL MSVCRT__fgetc_nolock(MSVCRT_FILE* file) +{ unsigned char *i; unsigned int j;
- MSVCRT__lock_file(file); if (file->_cnt>0) { file->_cnt--; i = (unsigned char *)file->_ptr++; @@ -3514,7 +3527,6 @@ int CDECL MSVCRT_fgetc(MSVCRT_FILE* file) } else j = MSVCRT__filbuf(file);
- MSVCRT__unlock_file(file); return j; }
diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h index 9f00923..137bec2 100644 --- a/dlls/msvcrt/msvcrt.h +++ b/dlls/msvcrt/msvcrt.h @@ -916,6 +916,7 @@ int __cdecl MSVCRT__isleadbyte_l(int, MSVCRT__locale_t); void __cdecl MSVCRT__lock_file(MSVCRT_FILE*); void __cdecl MSVCRT__unlock_file(MSVCRT_FILE*); int __cdecl MSVCRT_fgetc(MSVCRT_FILE*); +int __cdecl MSVCRT__fgetc_nolock(MSVCRT_FILE*); int __cdecl MSVCRT_ungetc(int,MSVCRT_FILE*); MSVCRT_wint_t __cdecl MSVCRT_fgetwc(MSVCRT_FILE*); MSVCRT_wint_t __cdecl MSVCRT_ungetwc(MSVCRT_wint_t,MSVCRT_FILE*); diff --git a/include/msvcrt/stdio.h b/include/msvcrt/stdio.h index 305d251..54c07fe 100644 --- a/include/msvcrt/stdio.h +++ b/include/msvcrt/stdio.h @@ -131,6 +131,7 @@ size_t __cdecl _fread_nolock(void*,size_t,size_t,FILE*); size_t __cdecl _fwrite_nolock(const void*,size_t,size_t,FILE*); int __cdecl _fclose_nolock(FILE*); int __cdecl _fflush_nolock(FILE*); +int __cdecl _fgetc_nolock(FILE*); int __cdecl _fseek_nolock(FILE*,__msvcrt_long,int); int __cdecl _fseeki64_nolock(FILE*,__int64,int); __msvcrt_long __cdecl _ftell_nolock(FILE*);