fix for mingw32 builds
[debian/gzip] / debian / patches / sys_stat.in.h.diff
diff --git a/debian/patches/sys_stat.in.h.diff b/debian/patches/sys_stat.in.h.diff
new file mode 100644 (file)
index 0000000..146566b
--- /dev/null
@@ -0,0 +1,42 @@
+diff --git a/lib/sys_stat.in.h b/lib/sys_stat.in.h
+index e83ab1a..c71d44e 100644
+--- a/lib/sys_stat.in.h
++++ b/lib/sys_stat.in.h
+@@ -500,14 +500,33 @@ extern int mknodat (int fd, char const *file, mode_t mode, dev_t dev)
+ /* We can't use the object-like #define stat rpl_stat, because of
+    struct stat.  This means that rpl_stat will not be used if the user
+    does (stat)(a,b).  Oh well.  */
+-#  undef stat
+-#  ifdef _LARGE_FILES
++#  if defined _AIX && defined stat && defined _LARGE_FILES
+     /* With _LARGE_FILES defined, AIX (only) defines stat to stat64,
+        so we have to replace stat64() instead of stat(). */
+-#   define stat stat64
+ #   undef stat64
+ #   define stat64(name, st) rpl_stat (name, st)
+-#  else /* !_LARGE_FILES */
++#  elif defined __MINGW32__ && defined stat
++#   ifdef _USE_32BIT_TIME_T
++     /* The system headers define stat to _stat32i64.  */
++#    undef _stat32i64
++#    define _stat32i64(name, st) rpl_stat (name, st)
++#   else
++     /* The system headers define stat to _stat64.  */
++#    undef _stat64
++#    define _stat64(name, st) rpl_stat (name, st)
++#   endif
++#  elif defined _MSC_VER && defined stat
++#   ifdef _USE_32BIT_TIME_T
++     /* The system headers define stat to _stat32.  */
++#    undef _stat32
++#    define _stat32(name, st) rpl_stat (name, st)
++#   else
++     /* The system headers define stat to _stat64i32.  */
++#    undef _stat64i32
++#    define _stat64i32(name, st) rpl_stat (name, st)
++#   endif
++#  else /* !(_AIX ||__MINGW32__ ||  _MSC_VER) */
++#   undef stat
+ #   define stat(name, st) rpl_stat (name, st)
+ #  endif /* !_LARGE_FILES */
+ extern int stat (const char *name, struct stat *buf) _GL_ARG_NONNULL ((1, 2));