Generalized CD-ROM routine selection.
authorRyan C. Gordon <icculus@icculus.org>
Sat, 20 Jul 2002 00:19:53 +0000
changeset 351 bc4fa7896225
parent 350 ec1e75681b4b
child 352 46065653c088
Generalized CD-ROM routine selection.
configure.in
platform/unix.c
--- a/configure.in	Thu Jul 18 05:51:25 2002 +0000
+++ b/configure.in	Sat Jul 20 00:19:53 2002 +0000
@@ -103,6 +103,19 @@
   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...
--- a/platform/unix.c	Thu Jul 18 05:51:25 2002 +0000
+++ b/platform/unix.c	Sat Jul 20 00:19:53 2002 +0000
@@ -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 <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -38,16 +26,19 @@
 #include <dirent.h>
 #include <time.h>
 #include <errno.h>
+#include <sys/mount.h>
 
-#if (defined __BSD__)
-#include <sys/ucred.h>
-#else
+#ifdef PHYSFS_HAVE_SYS_UCRED_H
+#  ifdef PHYSFS_HAVE_MNTENT_H
+#    undef PHYSFS_HAVE_MNTENT_H /* don't do both... */
+#  endif
+#  include <sys/ucred.h>
+#endif
+
+#ifdef PHYSFS_HAVE_MNTENT_H
 #include <mntent.h>
 #endif
 
-#include <sys/mount.h>
-
-
 #define __PHYSICSFS_INTERNAL__
 #include "physfs_internal.h"
 
@@ -68,7 +59,7 @@
 
 
 
-#if (defined __BSD__)
+#ifdef PHYSFS_HAVE_SYS_UCRED_H
 
 char **__PHYSFS_platformDetectAvailableCDs(void)
 {
@@ -113,9 +104,10 @@
     return(retval);
 } /* __PHYSFS_platformDetectAvailableCDs */
 
+#endif
 
-#else  /* non-Darwin implementation... */
 
+#ifdef PHYSFS_HAVE_MNTENT_H
 
 char **__PHYSFS_platformDetectAvailableCDs(void)
 {