Can now disable CD-ROM code on Unix systems at build time if need be. The

configure option is not exposed, but the configure script can check this
 on a system by system basis.
This commit is contained in:
Ryan C. Gordon 2002-07-25 05:21:00 +00:00
parent 056046f7e3
commit 1ce70462bd
2 changed files with 52 additions and 10 deletions

View File

@ -207,6 +207,13 @@ if test x$enable_readline = xyes; then
fi
fi
dnl determine if we should use the stubbed CD-ROM detection code.
dnl AC_ARG_ENABLE(cdrom,
dnl [ --enable-cdrom try standard CD-ROM support [default=yes]],
dnl , enable_cdrom=yes)
enable_cdrom=yes
dnl AC_CHECK_HEADER(be/kernel/OS.h, this_is_beos=yes)
AC_MSG_CHECKING([if this is BeOS])
if test x$build_os = xbeos; then
@ -263,6 +270,25 @@ if test x$we_have_sed = xyes; then
AC_MSG_RESULT([$this_is_openbsd])
fi
this_is_atheos=no
if test x$we_have_sed = xyes; then
AC_MSG_CHECKING([if this is AtheOS])
x=`echo $build_os |tr A-Z a-z |sed "s/.*atheos.*/atheos/"`
if test x$x = xatheos; then
this_is_atheos=yes
enable_cdrom=no
LDFLAGS="$LDFLAGS -lpthread"
fi
AC_MSG_RESULT([$this_is_atheos])
fi
dnl Some platform might disable this, so check this down here...
if test x$enable_cdrom != xyes; then
AC_DEFINE([PHYSFS_NO_CDROM_SUPPORT], 1, [define if we have no CD support])
fi
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([stdlib.h string.h])

View File

@ -58,6 +58,19 @@ int __PHYSFS_platformDeinit(void)
} /* __PHYSFS_platformDeinit */
#ifdef PHYSFS_NO_CDROM_SUPPORT
/* Stub version for platforms without CD-ROM support. */
char **__PHYSFS_platformDetectAvailableCDs(void)
{
char **retval = (char **) malloc(sizeof (char *));
BAIL_IF_MACRO(retval == NULL, ERR_OUT_OF_MEMORY, NULL);
*retval = NULL;
return(retval);
} /* __PHYSFS_platformDetectAvailableCDs */
#else
#ifdef PHYSFS_HAVE_SYS_UCRED_H
@ -65,20 +78,21 @@ char **__PHYSFS_platformDetectAvailableCDs(void)
{
char **retval = (char **) malloc(sizeof (char *));
int cd_count = 1; /* We count the NULL entry. */
struct statfs* mntbufp = NULL;
struct statfs *mntbufp = NULL;
int mounts;
int ii;
int i;
BAIL_IF_MACRO(retval == NULL, ERR_OUT_OF_MEMORY, NULL);
mounts = getmntinfo( &mntbufp, MNT_WAIT );
mounts = getmntinfo(&mntbufp, MNT_WAIT);
for ( ii=0; ii < mounts; ++ii ) {
for (i = 0; i < mounts; i++)
{
int add_it = 0;
if ( strcmp( mntbufp[ii].f_fstypename, "iso9660") == 0 )
if (strcmp(mntbufp[i].f_fstypename, "iso9660") == 0)
add_it = 1;
else if ( strcmp( mntbufp[ii].f_fstypename, "cd9660") == 0 )
else if (strcmp( mntbufp[i].f_fstypename, "cd9660") == 0)
add_it = 1;
/* add other mount types here */
@ -90,15 +104,15 @@ char **__PHYSFS_platformDetectAvailableCDs(void)
{
retval = tmp;
retval[cd_count - 1] = (char *)
malloc(strlen(mntbufp[ii].f_mntonname) + 1);
malloc(strlen(mntbufp[i].f_mntonname) + 1);
if (retval[cd_count - 1])
{
strcpy(retval[cd_count - 1], mntbufp[ii].f_mntonname);
strcpy(retval[cd_count - 1], mntbufp[i].f_mntonname);
cd_count++;
} /* if */
} /* if */
} /* if */
}
} /* for */
retval[cd_count - 1] = NULL;
return(retval);
@ -154,6 +168,8 @@ char **__PHYSFS_platformDetectAvailableCDs(void)
#endif
#endif /* !PHYSFS_NO_CDROM_SUPPORT */
/* this is in posix.c ... */
extern char *__PHYSFS_platformCopyEnvironmentVariable(const char *varname);
@ -242,7 +258,7 @@ char *__PHYSFS_platformCalcBaseDir(const char *argv0)
PHYSFS_uint64 __PHYSFS_platformGetThreadID(void)
{
return((PHYSFS_uint64) ((PHYSFS_uint32) pthread_self()));
return((PHYSFS_uint64) pthread_self());
} /* __PHYSFS_platformGetThreadID */