Alexandre Julliard : msvcrt: Implement fopen/wfopen on top of fsopen/
wfsopen instead of the other way around.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Feb 7 15:59:59 CST 2007
Module: wine
Branch: master
Commit: 2851b31f4cbda7698eee796d1b2c3c47215858ea
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2851b31f4cbda7698eee796d1b2c3c47215858ea
Author: Alexandre Julliard <julliard at winehq.org>
Date: Wed Feb 7 13:25:29 2007 +0100
msvcrt: Implement fopen/wfopen on top of fsopen/wfsopen instead of the other way around.
---
dlls/msvcrt/file.c | 27 ++++++++++++---------------
1 files changed, 12 insertions(+), 15 deletions(-)
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index 0cd098b..952f64c 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -2356,9 +2356,9 @@ MSVCRT_wint_t CDECL _fputwchar(MSVCRT_wi
}
/*********************************************************************
- * fopen (MSVCRT.@)
+ * _fsopen (MSVCRT.@)
*/
-MSVCRT_FILE* CDECL MSVCRT_fopen(const char *path, const char *mode)
+MSVCRT_FILE * CDECL MSVCRT__fsopen(const char *path, const char *mode, int share)
{
MSVCRT_FILE* file;
int open_flags, stream_flags, fd;
@@ -2370,7 +2370,7 @@ MSVCRT_FILE* CDECL MSVCRT_fopen(const ch
return NULL;
LOCK_FILES();
- fd = _open(path, open_flags, MSVCRT__S_IREAD | MSVCRT__S_IWRITE);
+ fd = MSVCRT__sopen(path, open_flags, share, MSVCRT__S_IREAD | MSVCRT__S_IWRITE);
if (fd < 0)
file = NULL;
else if ((file = msvcrt_alloc_fp()) && msvcrt_init_fp(file, fd, stream_flags)
@@ -2390,9 +2390,9 @@ MSVCRT_FILE* CDECL MSVCRT_fopen(const ch
}
/*********************************************************************
- * _wfopen (MSVCRT.@)
+ * _wfsopen (MSVCRT.@)
*/
-MSVCRT_FILE * CDECL MSVCRT__wfopen(const MSVCRT_wchar_t *path, const MSVCRT_wchar_t *mode)
+MSVCRT_FILE * CDECL MSVCRT__wfsopen(const MSVCRT_wchar_t *path, const MSVCRT_wchar_t *mode, int share)
{
const unsigned int plen = strlenW(path), mlen = strlenW(mode);
char *patha = MSVCRT_calloc(plen + 1, 1);
@@ -2404,7 +2404,7 @@ MSVCRT_FILE * CDECL MSVCRT__wfopen(const
WideCharToMultiByte(CP_ACP,0,path,plen,patha,plen,NULL,NULL) &&
WideCharToMultiByte(CP_ACP,0,mode,mlen,modea,mlen,NULL,NULL))
{
- MSVCRT_FILE *retval = MSVCRT_fopen(patha,modea);
+ MSVCRT_FILE *retval = MSVCRT__fsopen(patha,modea,share);
MSVCRT_free(patha);
MSVCRT_free(modea);
return retval;
@@ -2415,22 +2415,19 @@ MSVCRT_FILE * CDECL MSVCRT__wfopen(const
}
/*********************************************************************
- * _fsopen (MSVCRT.@)
+ * fopen (MSVCRT.@)
*/
-MSVCRT_FILE* CDECL MSVCRT__fsopen(const char *path, const char *mode, int share)
+MSVCRT_FILE * CDECL MSVCRT_fopen(const char *path, const char *mode)
{
- FIXME(":(%s,%s,%d),ignoring share mode!\n",path,mode,share);
- return MSVCRT_fopen(path,mode);
+ return MSVCRT__fsopen( path, mode, MSVCRT__SH_DENYNO );
}
/*********************************************************************
- * _wfsopen (MSVCRT.@)
+ * _wfopen (MSVCRT.@)
*/
-MSVCRT_FILE* CDECL MSVCRT__wfsopen(const MSVCRT_wchar_t *path, const MSVCRT_wchar_t *mode, int share)
+MSVCRT_FILE * CDECL MSVCRT__wfopen(const MSVCRT_wchar_t *path, const MSVCRT_wchar_t *mode)
{
- FIXME(":(%s,%s,%d),ignoring share mode!\n",
- debugstr_w(path),debugstr_w(mode),share);
- return MSVCRT__wfopen(path,mode);
+ return MSVCRT__wfsopen( path, mode, MSVCRT__SH_DENYNO );
}
/* MSVCRT_fputc calls MSVCRT__flsbuf which calls MSVCRT_fputc */
More information about the wine-cvs
mailing list