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