On Thu, Jan 22, 2015 at 5:59 PM, Alexpux <alex...@gmail.com> wrote:
>
>> 22 янв. 2015 г., в 12:50, Jacek Caban <ja...@codeweavers.com> написал(а):
>>
>> On 01/22/15 06:05, Dongsheng Song wrote:
>>> Passed full gcc 4.9 32 bit and 64 bit building,  then pushed.
>>
>> Did anyone review the patch before you pushed? You shouldn't mark is as
>> DATA until it has emulation code.
>
> Agree with it.
>

Sorry push lib32/msvcrt.def.in changes by mistake.

The commit efc07ae1f91561e0be21ed108ac33a3511dfd548 just intend to fix
mkstemp.c on XP only.

The lib32/msvcrt.def.in changes is part of the next patch.

Please review.

Regards,
Dongsheng
New _sopen_s emulation.

 mingw-w64-crt/Makefile.am                   |  1 +
 mingw-w64-crt/lib32/msvcr100.def.in         |  2 +-
 mingw-w64-crt/lib32/msvcr110.def.in         |  2 +-
 mingw-w64-crt/lib32/msvcr90.def.in          |  2 +-
 mingw-w64-crt/lib32/msvcr90d.def.in         |  2 +-
 mingw-w64-crt/lib32/msvcrt.def.in           |  2 +-
 mingw-w64-crt/lib64/msvcr100.def.in         |  2 +-
 mingw-w64-crt/lib64/msvcr110.def.in         |  2 +-
 mingw-w64-crt/lib64/msvcr90.def.in          |  2 +-
 mingw-w64-crt/lib64/msvcr90d.def.in         |  2 +-
 mingw-w64-crt/lib64/msvcrt.def.in           |  2 +-
 mingw-w64-crt/libarm32/msvcr110.def         |  2 +-
 mingw-w64-crt/libarm32/msvcr120_clr0400.def |  2 +-
 mingw-w64-crt/libarm32/msvcrt.def           |  2 +-
 mingw-w64-crt/secapi/_sopen_s.c             | 43 +++++++++++++++++++++++++++++
 mingw-w64-headers/crt/io.h                  |  2 +-
 16 files changed, 58 insertions(+), 14 deletions(-)

diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index 3348ea2..4c5bf28 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -170,6 +170,7 @@ src_msvcrt=\
   secapi/_localtime32_s.c \
   secapi/_localtime64_s.c \
   secapi/_mktemp_s.c \
+  secapi/_sopen_s.c \
   secapi/_strdate_s.c \
   secapi/_strtime_s.c \
   secapi/_umask_s.c \
diff --git a/mingw-w64-crt/lib32/msvcr100.def.in 
b/mingw-w64-crt/lib32/msvcr100.def.in
index a1d7447..2472320 100644
--- a/mingw-w64-crt/lib32/msvcr100.def.in
+++ b/mingw-w64-crt/lib32/msvcr100.def.in
@@ -1344,7 +1344,7 @@ _snwscanf_l
 _snwscanf_s
 _snwscanf_s_l
 _sopen
-_sopen_s
+; _sopen_s replaced by emu
 _spawnl
 _spawnle
 _spawnlp
diff --git a/mingw-w64-crt/lib32/msvcr110.def.in 
b/mingw-w64-crt/lib32/msvcr110.def.in
index f9f0294..d9854dc 100644
--- a/mingw-w64-crt/lib32/msvcr110.def.in
+++ b/mingw-w64-crt/lib32/msvcr110.def.in
@@ -1477,7 +1477,7 @@ _snwscanf_l
 _snwscanf_s
 _snwscanf_s_l
 _sopen
-_sopen_s
+; _sopen_s replaced by emu
 _spawnl
 _spawnle
 _spawnlp
diff --git a/mingw-w64-crt/lib32/msvcr90.def.in 
b/mingw-w64-crt/lib32/msvcr90.def.in
index 394d7f5..7d8ef3c 100644
--- a/mingw-w64-crt/lib32/msvcr90.def.in
+++ b/mingw-w64-crt/lib32/msvcr90.def.in
@@ -978,7 +978,7 @@ _snwscanf_l
 _snwscanf_s
 _snwscanf_s_l
 _sopen
-_sopen_s
+; _sopen_s replaced by emu
 _spawnl
 _spawnle
 _spawnlp
diff --git a/mingw-w64-crt/lib32/msvcr90d.def.in 
b/mingw-w64-crt/lib32/msvcr90d.def.in
index 8846e13..a3f587a 100644
--- a/mingw-w64-crt/lib32/msvcr90d.def.in
+++ b/mingw-w64-crt/lib32/msvcr90d.def.in
@@ -1042,7 +1042,7 @@ _snwscanf_l
 _snwscanf_s
 _snwscanf_s_l
 _sopen
-_sopen_s
+; _sopen_s replaced by emu
 _spawnl
 _spawnle
 _spawnlp
diff --git a/mingw-w64-crt/lib32/msvcrt.def.in 
b/mingw-w64-crt/lib32/msvcrt.def.in
index 496e8cf..71bdf56 100644
--- a/mingw-w64-crt/lib32/msvcrt.def.in
+++ b/mingw-w64-crt/lib32/msvcrt.def.in
@@ -1039,7 +1039,7 @@ _snwprintf_s_l
 _snwscanf_l
 _snwscanf_s
 _snwscanf_s_l
-_sopen_s DATA
+; _sopen_s replaced by emu
 _splitpath_s
 _sprintf_l
 _sprintf_p_l
diff --git a/mingw-w64-crt/lib64/msvcr100.def.in 
b/mingw-w64-crt/lib64/msvcr100.def.in
index a3ba8cd..384fc64 100644
--- a/mingw-w64-crt/lib64/msvcr100.def.in
+++ b/mingw-w64-crt/lib64/msvcr100.def.in
@@ -1292,7 +1292,7 @@ _snwscanf_l
 _snwscanf_s
 _snwscanf_s_l
 _sopen
-_sopen_s
+; _sopen_s replaced by emu
 _spawnl
 _spawnle
 _spawnlp
diff --git a/mingw-w64-crt/lib64/msvcr110.def.in 
b/mingw-w64-crt/lib64/msvcr110.def.in
index 6e8a487..65f3122 100644
--- a/mingw-w64-crt/lib64/msvcr110.def.in
+++ b/mingw-w64-crt/lib64/msvcr110.def.in
@@ -1416,7 +1416,7 @@ _snwscanf_l
 _snwscanf_s
 _snwscanf_s_l
 _sopen
-_sopen_s
+; _sopen_s replaced by emu
 _spawnl
 _spawnle
 _spawnlp
diff --git a/mingw-w64-crt/lib64/msvcr90.def.in 
b/mingw-w64-crt/lib64/msvcr90.def.in
index 7b74907..5fd5749 100644
--- a/mingw-w64-crt/lib64/msvcr90.def.in
+++ b/mingw-w64-crt/lib64/msvcr90.def.in
@@ -912,7 +912,7 @@ _snwscanf_l
 _snwscanf_s
 _snwscanf_s_l
 _sopen
-_sopen_s
+; _sopen_s replaced by emu
 _spawnl
 _spawnle
 _spawnlp
diff --git a/mingw-w64-crt/lib64/msvcr90d.def.in 
b/mingw-w64-crt/lib64/msvcr90d.def.in
index 4649135..1454d29 100644
--- a/mingw-w64-crt/lib64/msvcr90d.def.in
+++ b/mingw-w64-crt/lib64/msvcr90d.def.in
@@ -970,7 +970,7 @@ _snwscanf_l
 _snwscanf_s
 _snwscanf_s_l
 _sopen
-_sopen_s
+; _sopen_s replaced by emu
 _spawnl
 _spawnle
 _spawnlp
diff --git a/mingw-w64-crt/lib64/msvcrt.def.in 
b/mingw-w64-crt/lib64/msvcrt.def.in
index ab42da0..946c200 100644
--- a/mingw-w64-crt/lib64/msvcrt.def.in
+++ b/mingw-w64-crt/lib64/msvcrt.def.in
@@ -715,7 +715,7 @@ _snwscanf_l
 _snwscanf_s
 _snwscanf_s_l
 _sopen
-_sopen_s
+; _sopen_s replaced by emu
 _spawnl
 _spawnle
 _spawnlp
diff --git a/mingw-w64-crt/libarm32/msvcr110.def 
b/mingw-w64-crt/libarm32/msvcr110.def
index 40a4093..c22973f 100644
--- a/mingw-w64-crt/libarm32/msvcr110.def
+++ b/mingw-w64-crt/libarm32/msvcr110.def
@@ -1065,7 +1065,7 @@ _snwscanf_l
 _snwscanf_s
 _snwscanf_s_l
 _sopen
-_sopen_s
+; _sopen_s replaced by emu
 _spawnl
 _spawnle
 _spawnlp
diff --git a/mingw-w64-crt/libarm32/msvcr120_clr0400.def 
b/mingw-w64-crt/libarm32/msvcr120_clr0400.def
index 32d7965..c3232e9 100644
--- a/mingw-w64-crt/libarm32/msvcr120_clr0400.def
+++ b/mingw-w64-crt/libarm32/msvcr120_clr0400.def
@@ -1064,7 +1064,7 @@ _snwscanf_l
 _snwscanf_s
 _snwscanf_s_l
 _sopen
-_sopen_s
+; _sopen_s replaced by emu
 _spawnl
 _spawnle
 _spawnlp
diff --git a/mingw-w64-crt/libarm32/msvcrt.def 
b/mingw-w64-crt/libarm32/msvcrt.def
index d43b417..2533d5a 100644
--- a/mingw-w64-crt/libarm32/msvcrt.def
+++ b/mingw-w64-crt/libarm32/msvcrt.def
@@ -699,7 +699,7 @@ _snwscanf_l
 _snwscanf_s
 _snwscanf_s_l
 _sopen
-_sopen_s
+; _sopen_s replaced by emu
 _spawnl
 _spawnle
 _spawnlp
diff --git a/mingw-w64-crt/secapi/_sopen_s.c b/mingw-w64-crt/secapi/_sopen_s.c
new file mode 100644
index 0000000..7d9645e
--- /dev/null
+++ b/mingw-w64-crt/secapi/_sopen_s.c
@@ -0,0 +1,43 @@
+#include <windows.h>
+#include <io.h>
+#include <errno.h>
+#include <msvcrt.h>
+
+errno_t __cdecl _sopen_s(int *, const char *, int, int, int);
+static errno_t __cdecl _int_sopen_s(int *, const char *, int, int, int);
+static errno_t __cdecl _stub(int *, const char *, int, int, int);
+
+errno_t __cdecl (*__MINGW_IMP_SYMBOL(_sopen_s))(int *, const char *, int, int, 
int) = _stub;
+
+static errno_t __cdecl
+_stub (int* pfh, const char *filename, int oflag, int shflag, int pmode)
+{
+    errno_t __cdecl (*f)(int *, const char *, int, int, int) = 
__MINGW_IMP_SYMBOL(_sopen_s);
+
+    if (f == _stub) {
+        f = (errno_t __cdecl (*)(int *, const char *, int, int, int))
+            GetProcAddress (__mingw_get_msvcrt_handle (), "_sopen_s");
+        if (f == NULL)
+            f = _int_sopen_s;
+        __MINGW_IMP_SYMBOL(_sopen_s) = f;
+    }
+
+    return (*f)(pfh, filename, oflag, shflag, pmode);
+}
+
+static errno_t __cdecl _int_sopen_s(int* pfh, const char *filename, int oflag, 
int shflag, int pmode)
+{
+    if (pfh == NULL || filename == NULL) {
+        if (pfh != NULL) *pfh = -1;
+        errno = EINVAL;
+        return EINVAL;
+    }
+
+    *pfh = _sopen(filename, oflag, shflag, pmode);
+    return errno;
+}
+
+errno_t __cdecl _sopen_s(int* pfh, const char *filename, int oflag, int 
shflag, int pmode)
+{
+    return _stub (pfh, filename, oflag, shflag, pmode);
+}
diff --git a/mingw-w64-headers/crt/io.h b/mingw-w64-headers/crt/io.h
index 0adaa82..91ad46e 100644
--- a/mingw-w64-headers/crt/io.h
+++ b/mingw-w64-headers/crt/io.h
@@ -271,7 +271,7 @@ _CRTIMP char* __cdecl _getcwd (char*, int);
 #endif /* _UWIN */
 #endif /* Not NO_OLDNAMES */
 
-  _CRTIMP errno_t __cdecl _sopen_s(int *_FileHandle,const char *_Filename,int 
_OpenFlag,int _ShareFlag,int _PermissionMode);
+  errno_t __cdecl _sopen_s(int *_FileHandle,const char *_Filename,int 
_OpenFlag,int _ShareFlag,int _PermissionMode);
 
   _CRTIMP int __cdecl _open(const char *_Filename,int _OpenFlag,...) 
__MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   _CRTIMP int __cdecl _sopen(const char *_Filename,int _OpenFlag,int 
_ShareFlag,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to