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