diff --git a/configure.in b/configure.in index 34d7e76..7f2cc8d 100644 --- a/configure.in +++ b/configure.in @@ -103,6 +103,19 @@ if test x$have_llseek = xyes; then AC_DEFINE([PHYSFS_HAVE_LLSEEK], 1, [define if we have llseek]) fi +dnl BSD systems use sys/ucred.h for getting mounted volumes. +dnl Linux and others use mntent.h. +AC_CHECK_HEADER(sys/ucred.h, have_ucred_hdr=yes) +if test x$have_ucred_hdr = xyes; then + AC_DEFINE([PHYSFS_HAVE_SYS_UCRED_H], 1, [define if we have sys/ucred.h]) +fi + +AC_CHECK_HEADER(mntent.h, have_mntent_hdr=yes) +if test x$have_mntent_hdr = xyes; then + AC_DEFINE([PHYSFS_HAVE_MNTENT_H], 1, [define if we have mntent.h]) +fi + + require_zlib="no" dnl Check for zip archiver inclusion... diff --git a/platform/unix.c b/platform/unix.c index 7fe5660..77e0943 100644 --- a/platform/unix.c +++ b/platform/unix.c @@ -13,18 +13,6 @@ /* BeOS uses beos.cpp and posix.c ... Cygwin and such use win32.c ... */ #if ((!defined __BEOS__) && (!defined WIN32)) -#ifdef __FreeBSD__ -# if (!defined __BSD__) -# define __BSD__ -# endif -#endif - -#if ((defined __APPLE__) && (defined __MACH__)) -# if (!defined __BSD__) -# define __BSD__ -# endif -#endif - #include #include #include @@ -38,15 +26,18 @@ #include #include #include - -#if (defined __BSD__) -#include -#else -#include -#endif - #include +#ifdef PHYSFS_HAVE_SYS_UCRED_H +# ifdef PHYSFS_HAVE_MNTENT_H +# undef PHYSFS_HAVE_MNTENT_H /* don't do both... */ +# endif +# include +#endif + +#ifdef PHYSFS_HAVE_MNTENT_H +#include +#endif #define __PHYSICSFS_INTERNAL__ #include "physfs_internal.h" @@ -68,7 +59,7 @@ int __PHYSFS_platformDeinit(void) -#if (defined __BSD__) +#ifdef PHYSFS_HAVE_SYS_UCRED_H char **__PHYSFS_platformDetectAvailableCDs(void) { @@ -113,9 +104,10 @@ char **__PHYSFS_platformDetectAvailableCDs(void) return(retval); } /* __PHYSFS_platformDetectAvailableCDs */ +#endif -#else /* non-Darwin implementation... */ +#ifdef PHYSFS_HAVE_MNTENT_H char **__PHYSFS_platformDetectAvailableCDs(void) {