summaryrefslogtreecommitdiffstats
path: root/Utilities/cmlibarchive/libarchive/archive_entry.c
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2011-02-07 15:06:50 (GMT)
committerBrad King <brad.king@kitware.com>2011-02-07 15:06:50 (GMT)
commit41b7b3efa4e2684085be7c7dd76baea17f269988 (patch)
tree61fad6e68bf7c9bdf21557f86d53323074dac0ae /Utilities/cmlibarchive/libarchive/archive_entry.c
parentcf5ad18340f1d775e47c7aa9afde7deb0482027e (diff)
downloadCMake-41b7b3efa4e2684085be7c7dd76baea17f269988.zip
CMake-41b7b3efa4e2684085be7c7dd76baea17f269988.tar.gz
CMake-41b7b3efa4e2684085be7c7dd76baea17f269988.tar.bz2
libarchive: Define major/minor/makedev only where needed (#11648)
If neither MAJOR_IN_MKDEV or MAJOR_IN_SYSMACROS is defined then provide our own implementation of these macros locally. This complements the change in commit cf5ad183 (Fix major() check for LSB 4.0, 2011-01-12). This patch is based on upstream libarchive SVN commit 1553 (Shuffle the major/minor/makedev support a bit; this should work on both Windows and Haiku, 2009-10-31). Inspired-by: Tim Kientzle <kientzle@freebsd.org>
Diffstat (limited to 'Utilities/cmlibarchive/libarchive/archive_entry.c')
-rw-r--r--Utilities/cmlibarchive/libarchive/archive_entry.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/Utilities/cmlibarchive/libarchive/archive_entry.c b/Utilities/cmlibarchive/libarchive/archive_entry.c
index d75dde5..c304231 100644
--- a/Utilities/cmlibarchive/libarchive/archive_entry.c
+++ b/Utilities/cmlibarchive/libarchive/archive_entry.c
@@ -32,12 +32,12 @@ __FBSDID("$FreeBSD: src/lib/libarchive/archive_entry.c,v 1.55 2008/12/23 05:01:4
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
-#ifdef MAJOR_IN_MKDEV
+#if MAJOR_IN_MKDEV
#include <sys/mkdev.h>
-#else
-#ifdef MAJOR_IN_SYSMACROS
+#define HAVE_MAJOR
+#elif MAJOR_IN_SYSMACROS
#include <sys/sysmacros.h>
-#endif
+#define HAVE_MAJOR
#endif
#ifdef HAVE_LIMITS_H
#include <limits.h>
@@ -75,6 +75,13 @@ __FBSDID("$FreeBSD: src/lib/libarchive/archive_entry.c,v 1.55 2008/12/23 05:01:4
#undef max
#define max(a, b) ((a)>(b)?(a):(b))
+#if !defined(HAVE_MAJOR) && !defined(major)
+/* Replacement for major/minor/makedev. */
+#define major(x) ((int)(0x00ff & ((x) >> 8)))
+#define minor(x) ((int)(0xffff00ff & (x)))
+#define makedev(maj,min) ((0xff00 & ((maj)<<8)) | (0xffff00ff & (min)))
+#endif
+
/* Play games to come up with a suitable makedev() definition. */
#ifdef __QNXNTO__
/* QNX. <sigh> */