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>
This commit is contained in:
Brad King 2011-02-07 10:06:50 -05:00
parent cf5ad18340
commit 41b7b3efa4
3 changed files with 11 additions and 16 deletions

View File

@ -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> */

View File

@ -32,13 +32,6 @@ __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
#include <sys/mkdev.h>
#else
#ifdef MAJOR_IN_SYSMACROS
#include <sys/sysmacros.h>
#endif
#endif
#ifdef HAVE_LIMITS_H
#include <limits.h>
#endif

View File

@ -94,11 +94,6 @@
#endif
#endif
/* 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)))
/* Alias the Windows _function to the POSIX equivalent. */
#define access _access
#define chdir __la_chdir