From: "Iván Matellanes" Subject: [2/4] msvcrt: Added _fgetc_nolock implementation Message-Id: <544A4346.10505@gmail.com> Date: Fri, 24 Oct 2014 14:17:10 +0200 --- 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 6a36661..0f4e275 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 @ stub _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 d6b1a18..60f84a7 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 @ stub _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 237539b..61324d6 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 @ stub _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 b810c5f..d7dceaf 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 @ stub _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 df55e07..03871e1 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -3489,10 +3489,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++; @@ -3500,7 +3513,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 85484bc..ac26d46 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 1c154fc..af56f20 100644 --- a/include/msvcrt/stdio.h +++ b/include/msvcrt/stdio.h @@ -130,6 +130,7 @@ int __cdecl _vsprintf_p_l(char*,size_t,const char*,_locale_t,__ms_va_list); 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 _fgetc_nolock(FILE*); int __cdecl _fseek_nolock(FILE*,__msvcrt_long,int); int __cdecl _fseeki64_nolock(FILE*,__int64,int); __msvcrt_long __cdecl _ftell_nolock(FILE*); -- 1.9.1