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:
parent
cf5ad18340
commit
41b7b3efa4
|
@ -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> */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue