1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
diff --git a/libmysqlclient/mysql/mysql/m_ctype.h b/libmysqlclient/mysql/mysql/m_ctype.h
index d59bb12..a0afe7a 100644
--- a/libmysqlclient/mysql/mysql/m_ctype.h
+++ b/libmysqlclient/mysql/mysql/m_ctype.h
@@ -235,7 +235,7 @@ typedef struct MY_COLLATION_HANDLER {
const char *wildstr, const char *wildend, int escape,
int w_one, int w_many);
- int (*strcasecmp)(const CHARSET_INFO *, const char *, const char *);
+ int (*strcasecmp_)(const CHARSET_INFO *, const char *, const char *);
uint (*strstr)(const CHARSET_INFO *, const char *b, size_t b_length,
const char *s, size_t s_length, my_match_t *match,
@@ -681,7 +681,7 @@ values < 0x7F. */
((s)->coll->like_range((s), (a), (b), (c), (d), (e), (f), (g), (h), (i), (j)))
#define my_wildcmp(cs, s, se, w, we, e, o, m) \
((cs)->coll->wildcmp((cs), (s), (se), (w), (we), (e), (o), (m)))
-#define my_strcasecmp(s, a, b) ((s)->coll->strcasecmp((s), (a), (b)))
+#define my_strcasecmp(s, a, b) ((s)->coll->strcasecmp_((s), (a), (b)))
#define my_charpos(cs, b, e, num) \
(cs)->cset->charpos((cs), (const char *)(b), (const char *)(e), (num))
diff --git a/libmysqlclient/mysql/mysql/my_dir.h b/libmysqlclient/mysql/mysql/my_dir.h
index c179ad8..c4656b7 100644
--- a/libmysqlclient/mysql/mysql/my_dir.h
+++ b/libmysqlclient/mysql/mysql/my_dir.h
@@ -36,9 +36,11 @@
/* Defines for my_dir and my_stat */
#ifdef _WIN32
+#ifndef __MINGW32__
#define S_IROTH _S_IREAD
#define S_IFIFO _S_IFIFO
#endif
+#endif
#define MY_S_IFMT S_IFMT /* type of file */
#define MY_S_IFDIR S_IFDIR /* directory */
diff --git a/libmysqlclient/mysql/mysql/mysql/components/services/my_io_bits.h b/libmysqlclient/mysql/mysql/mysql/components/services/my_io_bits.h
index f561189..270d859 100644
--- a/libmysqlclient/mysql/mysql/mysql/components/services/my_io_bits.h
+++ b/libmysqlclient/mysql/mysql/mysql/components/services/my_io_bits.h
@@ -49,8 +49,12 @@
typedef int File; /* File descriptor */
#ifdef _WIN32
+#ifdef __MINGW32__
+typedef mode_t MY_MODE;
+#else
typedef int MY_MODE;
typedef int mode_t;
+#endif
typedef int socket_len_t;
typedef SOCKET my_socket;
#else
diff --git a/libmysqlclient/mysql/mysys/my_thr_init.cc b/libmysqlclient/mysql/mysys/my_thr_init.cc
index b041de3..ba10464 100644
--- a/libmysqlclient/mysql/mysys/my_thr_init.cc
+++ b/libmysqlclient/mysql/mysys/my_thr_init.cc
@@ -373,7 +373,13 @@ static void my_sigabrt_handler(int sig) { __debugbreak(); }
static void install_sigabrt_handler() {
/*abort() should not override our exception filter*/
+
+ // Requires msvcrt90 or later but forcing this in a library is
+ // probably not a good idea.
+ //
+#ifndef __MINGW32__
_set_abort_behavior(0, _CALL_REPORTFAULT);
+#endif
signal(SIGABRT, my_sigabrt_handler);
}
#endif
diff --git a/libmysqlclient/mysql/mysys/stacktrace.cc b/libmysqlclient/mysql/mysys/stacktrace.cc
index c941bf7..9f7e443 100644
--- a/libmysqlclient/mysql/mysys/stacktrace.cc
+++ b/libmysqlclient/mysql/mysys/stacktrace.cc
@@ -536,12 +536,16 @@ void my_create_minidump(const char *name, HANDLE process, DWORD pid) {
}
void my_safe_puts_stderr(const char *val, size_t len) {
+#ifndef __MINGW32__
__try {
+#endif
my_write_stderr(val, len);
my_safe_printf_stderr("%s", "\n");
+#ifndef __MINGW32__
} __except (EXCEPTION_EXECUTE_HANDLER) {
my_safe_printf_stderr("%s", "is an invalid string pointer\n");
}
+#endif
}
#endif /* _WIN32 */
|