Piotr Caban : msvcrt: Added _set_fmode and _get_fmode implementation.
Alexandre Julliard
julliard at winehq.org
Fri Dec 21 11:05:21 CST 2012
Module: wine
Branch: master
Commit: dfca87db71dcade741ef95dededce37c53479578
URL: http://source.winehq.org/git/wine.git/?a=commit;h=dfca87db71dcade741ef95dededce37c53479578
Author: Piotr Caban <piotr at codeweavers.com>
Date: Fri Dec 21 13:37:47 2012 +0100
msvcrt: Added _set_fmode and _get_fmode implementation.
---
dlls/msvcr100/msvcr100.spec | 4 ++--
dlls/msvcr80/msvcr80.spec | 4 ++--
dlls/msvcr90/msvcr90.spec | 4 ++--
dlls/msvcrt/data.c | 25 +++++++++++++++++++++++++
dlls/msvcrt/msvcrt.spec | 4 ++--
5 files changed, 33 insertions(+), 8 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index 8f0ecdb..38ae28a 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -868,7 +868,7 @@
@ cdecl _get_doserrno(ptr) msvcrt._get_doserrno
@ stub _get_dstbias
@ cdecl _get_errno(ptr) msvcrt._get_errno
-@ stub _get_fmode
+@ cdecl _get_fmode(ptr) msvcrt._get_fmode
@ cdecl _get_heap_handle() msvcrt._get_heap_handle
@ cdecl _get_invalid_parameter_handler() msvcrt._get_invalid_parameter_handler
@ cdecl _get_osfhandle(long) msvcrt._get_osfhandle
@@ -1266,7 +1266,7 @@
@ cdecl _set_doserrno(long) msvcrt._set_doserrno
@ cdecl _set_errno(long) msvcrt._set_errno
@ cdecl _set_error_mode(long) msvcrt._set_error_mode
-@ stub _set_fmode
+@ cdecl _set_fmode(long) msvcrt._set_fmode
@ cdecl _set_invalid_parameter_handler(ptr) msvcrt._set_invalid_parameter_handler
@ stub _set_malloc_crt_max_wait
@ stub _set_output_format
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index b4eaf7b..c9469e7 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -523,7 +523,7 @@
@ cdecl _get_doserrno(ptr) msvcrt._get_doserrno
@ stub _get_dstbias
@ cdecl _get_errno(ptr) msvcrt._get_errno
-@ stub _get_fmode
+@ cdecl _get_fmode(ptr) msvcrt._get_fmode
@ cdecl _get_heap_handle() msvcrt._get_heap_handle
@ cdecl _get_invalid_parameter_handler() msvcrt._get_invalid_parameter_handler
@ cdecl _get_osfhandle(long) msvcrt._get_osfhandle
@@ -928,7 +928,7 @@
@ cdecl _set_doserrno(long) msvcrt._set_doserrno
@ cdecl _set_errno(long) msvcrt._set_errno
@ cdecl _set_error_mode(long) msvcrt._set_error_mode
-@ stub _set_fmode
+@ cdecl _set_fmode(long) msvcrt._set_fmode
@ cdecl _set_invalid_parameter_handler(ptr) msvcrt._set_invalid_parameter_handler
@ stub _set_malloc_crt_max_wait
@ stub _set_output_format
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index 90b4b04..bf54f0a 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -518,7 +518,7 @@
@ cdecl _get_doserrno(ptr) msvcrt._get_doserrno
@ stub _get_dstbias
@ cdecl _get_errno(ptr) msvcrt._get_errno
-@ stub _get_fmode
+@ cdecl _get_fmode(ptr) msvcrt._get_fmode
@ cdecl _get_heap_handle() msvcrt._get_heap_handle
@ cdecl _get_invalid_parameter_handler() msvcrt._get_invalid_parameter_handler
@ cdecl _get_osfhandle(long) msvcrt._get_osfhandle
@@ -921,7 +921,7 @@
@ cdecl _set_doserrno(long) msvcrt._set_doserrno
@ cdecl _set_errno(long) msvcrt._set_errno
@ cdecl _set_error_mode(long) msvcrt._set_error_mode
-@ stub _set_fmode
+@ cdecl _set_fmode(long) msvcrt._set_fmode
@ cdecl _set_invalid_parameter_handler(ptr) msvcrt._set_invalid_parameter_handler
@ stub _set_malloc_crt_max_wait
@ stub _set_output_format
diff --git a/dlls/msvcrt/data.c b/dlls/msvcrt/data.c
index 94254ab..a9505ed 100644
--- a/dlls/msvcrt/data.c
+++ b/dlls/msvcrt/data.c
@@ -186,6 +186,31 @@ int CDECL _get_wpgmptr(WCHAR** p)
unsigned int* CDECL __p__fmode(void) { return &MSVCRT__fmode; }
/***********************************************************************
+ * _set_fmode (MSVCRT.@)
+ */
+int CDECL _set_fmode(int mode)
+{
+ /* TODO: support _O_WTEXT */
+ if(!MSVCRT_CHECK_PMT(mode==MSVCRT__O_TEXT || mode==MSVCRT__O_BINARY))
+ return MSVCRT_EINVAL;
+
+ MSVCRT__fmode = mode;
+ return 0;
+}
+
+/***********************************************************************
+ * _get_fmode (MSVCRT.@)
+ */
+int CDECL _get_fmode(int *mode)
+{
+ if(!MSVCRT_CHECK_PMT(mode))
+ return MSVCRT_EINVAL;
+
+ *mode = MSVCRT__fmode;
+ return 0;
+}
+
+/***********************************************************************
* __p__osver (MSVCRT.@)
*/
unsigned int* CDECL __p__osver(void) { return &MSVCRT__osver; }
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 79f6511..6802104 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -474,7 +474,7 @@
# stub _get_environ(ptr)
@ cdecl _get_errno(ptr)
# stub _get_fileinfo(ptr)
-# stub _get_fmode(ptr)
+@ cdecl _get_fmode(ptr)
@ cdecl _get_heap_handle()
@ cdecl _get_osfhandle(long) MSVCRT__get_osfhandle
@ cdecl _get_osplatform(ptr) MSVCRT__get_osplatform
@@ -867,7 +867,7 @@
@ cdecl _set_errno(long)
@ cdecl _set_error_mode(long)
# stub _set_fileinfo(long)
-# stub _set_fmode(long)
+@ cdecl _set_fmode(long)
# stub _set_output_format(long)
@ cdecl _set_sbh_threshold(long)
@ cdecl _seterrormode(long)
More information about the wine-cvs
mailing list