]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Rework the la_ssize_t and la_int64_t definitions to avoid
authorTim Kientzle <kientzle@acm.org>
Sun, 6 Sep 2015 05:43:09 +0000 (22:43 -0700)
committerTim Kientzle <kientzle@acm.org>
Sun, 6 Sep 2015 05:43:09 +0000 (22:43 -0700)
redefining la_int64_t if both archive.h and archive_entry.h are
included.  (This avoids a warning from clang that redefining
a typedef is a C11 feature.)

libarchive/archive.h
libarchive/archive_entry.h

index 8b7c320322ee906bde0d61baef5113099eca7a38..d3ff9b0d0b8959af646a5d17221783062a8935b2 100644 (file)
 # 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
 
 /*
index 21a0f30fdb6bb3f4deab506204734a95452aae00..996d60f4b3aeb46c8f07142564bb3eb426f9d5ca 100644 (file)
 #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