# include <inttypes.h>
#endif
-#if ARCHIVE_VERSION_NUMBER < 4000000
-// also defined in archive_entry.h, don't redefine
-#if !defined(__LA_INT64_T)
+/* Get appropriate definitions of 64-bit integer */
+#if !defined(__LA_INT64_T_DEFINED)
+/* Older code relied on the __LA_INT64_T macro; after 4.0 we'll switch to the typedef exclusively. */
+# if ARCHIVE_VERSION_NUMBER < 4000000
#define __LA_INT64_T la_int64_t
-#endif
-#define __LA_SSIZE_T la_ssize_t
-#endif
-
-/* Get appropriate definitions of standard POSIX-style types. */
-/* These should match the types used in 'struct stat' */
-#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__WATCOMC__)
+# endif
+#define __LA_INT64_T_DEFINED
+# if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__WATCOMC__)
typedef __int64 la_int64_t;
-# if defined(_SSIZE_T_DEFINED) || defined(_SSIZE_T_)
-typedef ssize_t la_ssize_t;
-# elif defined(_WIN64)
-typedef __int64 la_ssize_t;
# else
-typedef long la_ssize_t;
-# endif
-#else
# include <unistd.h> /* ssize_t */
-# if defined(_SCO_DS)
+# if defined(_SCO_DS)
typedef long long la_int64_t;
-# else
+# else
typedef int64_t la_int64_t;
+# endif
# endif
+#endif
+
+/* The la_ssize_t should match the type used in 'struct stat' */
+#if !defined(__LA_SSIZE_T_DEFINED)
+/* Older code relied on the __LA_SSIZE_T macro; after 4.0 we'll switch to the typedef exclusively. */
+# if ARCHIVE_VERSION_NUMBER < 4000000
+#define __LA_SSIZE_T la_ssize_t
+# endif
+#define __LA_SSIZE_T_DEFINED
+# if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__WATCOMC__)
+# if defined(_SSIZE_T_DEFINED) || defined(_SSIZE_T_)
typedef ssize_t la_ssize_t;
+# elif defined(_WIN64)
+typedef __int64 la_ssize_t;
+# else
+typedef long la_ssize_t;
+# endif
+# else
+# include <unistd.h> /* ssize_t */
+typedef ssize_t la_ssize_t;
+# endif
#endif
/*
#include <windows.h>
#endif
-#if ARCHIVE_VERSION_NUMBER < 4000000
-// also defined in archive.h, don't redefine
-#if !defined(__LA_INT64_T)
-#define __LA_INT64_T la_int64_t
-#endif
-#endif
-
/* Get a suitable 64-bit integer type. */
-#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__WATCOMC__)
+#if !defined(__LA_INT64_T_DEFINED)
+# if ARCHIVE_VERSION_NUMBER < 4000000
+#define __LA_INT64_T la_int64_t
+# endif
+#define __LA_INT64_T_DEFINED
+# if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__WATCOMC__)
typedef __int64 la_int64_t;
-#else
+# else
#include <unistd.h>
-# if defined(_SCO_DS)
+# if defined(_SCO_DS)
typedef long long la_int64_t;
-# else
+# else
typedef int64_t la_int64_t;
+# endif
# endif
#endif