mruby-io: Fixing compilation issue under the legacy MinGW environment
Adding MRB_MINGW32_LEGACY in common.h in order to identify the legacy MinGW environment (i.e. NOT to be confused with MinGW-w64).
For more info about MinGW defined macros, see:
MODIFY
include/mruby/common.h
include/mruby/common.h
@@ -82,6 +82,9 @@ MRB_BEGIN_DECL
# elif defined(__MINGW32_MAJOR_VERSION)
# define MRB_MINGW32_VERSION (__MINGW32_MAJOR_VERSION * 1000 + __MINGW32_MINOR_VERSION)
# endif
+# if defined(__MINGW32__) && !defined(__MINGW64__)
+# define MRB_MINGW32_LEGACY
+# endif
#endif
MRB_END_DECL

MODIFY
mrbgems/mruby-io/src/file.c
mrbgems/mruby-io/src/file.c
#define LOCK_UN 8
#endif
-#ifndef _WIN32
+#if !defined(_WIN32) || defined(MRB_MINGW32_LEGACY)
typedef struct stat mrb_stat;
# define mrb_stat(path, sb) stat(path, sb)
# define mrb_fstat(fd, sb) fstat(fd, sb)

MODIFY
mrbgems/mruby-io/src/io.c
mrbgems/mruby-io/src/io.c
typedef long fsuseconds_t;
typedef int fmode_t;
typedef int mrb_io_read_write_size;
+ #ifndef MRB_MINGW32_LEGACY
#if !defined(_SSIZE_T_) && !defined(_SSIZE_T_DEFINED) && \
!defined(__have_typedef_ssize_t)
typedef SSIZE_T ssize_t;
#endif
+ #endif
#ifndef O_TMPFILE
#define O_TMPFILE O_TEMPORARY

mruby-io: Fixing compilation issue under the legacy MinGW environment
Adding MRB_MINGW32_LEGACY in common.h in order to identify the legacy MinGW environment (i.e. NOT to be confused with MinGW-w64).
For more info about MinGW defined macros, see: https://sourceforge.net/p/predef/wiki/Compilers/