--- ./libarchive/archive.h~0	2017-02-25 20:18:27.000000000 +0200
+++ ./libarchive/archive.h	2017-04-10 13:43:40.911875000 +0300
@@ -83,7 +83,8 @@ typedef int64_t la_int64_t;
 # endif
 #define __LA_SSIZE_T_DEFINED
 # if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__WATCOMC__)
-#  if defined(_SSIZE_T_DEFINED) || defined(_SSIZE_T_)
+#  if defined(_SSIZE_T_DEFINED) || defined(_SSIZE_T_)	\
+  || (defined(__MINGW32__) && defined(_SYS_TYPES_H))
 typedef ssize_t la_ssize_t;
 #  elif defined(_WIN64)
 typedef __int64 la_ssize_t;
--- ./libarchive/archive_entry.h~0	2017-02-25 20:18:27.000000000 +0200
+++ ./libarchive/archive_entry.h	2017-04-10 13:43:01.615000000 +0300
@@ -74,7 +74,8 @@ typedef int64_t la_int64_t;
 # endif
 #define __LA_SSIZE_T_DEFINED
 # if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__WATCOMC__)
-#  if defined(_SSIZE_T_DEFINED) || defined(_SSIZE_T_)
+#  if defined(_SSIZE_T_DEFINED) || defined(_SSIZE_T_)	\
+  || (defined(__MINGW32__) && defined(_SYS_TYPES_H))
 typedef ssize_t la_ssize_t;
 #  elif defined(_WIN64)
 typedef __int64 la_ssize_t;
--- ./libarchive/archive_windows.h~0	2017-01-29 07:06:27.000000000 +0200
+++ ./libarchive/archive_windows.h	2017-04-10 14:14:44.865000000 +0300
@@ -315,4 +315,14 @@ typedef struct _FILE_ALLOCATED_RANGE_BUF
 # endif
 #endif
 
+/* The configure-time probing for the following functions is
+   unreliable, because these functions are only available since Vista,
+   and so the produced binaries will not run on older systems.  */
+#if defined(__MINGW32__) && !defined(_WIN64)
+# undef HAVE__FSEEKI64
+# undef HAVE__MKGMTIME64
+# undef HAVE__CTIME64_S
+# undef HAVE__LOCALTIME64_S
+#endif
+
 #endif /* LIBARCHIVE_ARCHIVE_WINDOWS_H_INCLUDED */
