Commit 701763cd authored by Rafaël Carré's avatar Rafaël Carré

contrib: dvdread: resolve OSX mount points properly

getstatfs seems to work better than getfsent
parent 19bd7f7b
--- dvdread.orig/src/dvd_reader.c 2012-03-15 09:29:40.000000000 -0400
+++ dvdread/src/dvd_reader.c 2012-03-15 09:32:29.000000000 -0400
@@ -58,6 +58,10 @@
#if defined(__sun)
#include <sys/mnttab.h>
+#elif defined(__APPLE__)
+#include <sys/param.h>
+#include <sys/ucred.h>
+#include <sys/mount.h>
#elif defined(SYS_BSD)
#include <fstab.h>
#elif defined(__linux__)
@@ -474,7 +478,28 @@
path_copy[1] = '\0';
}
-#if defined(SYS_BSD)
+#if defined(__APPLE__)
+ struct statfs s[128];
+ int r = getfsstat(NULL, 0, MNT_NOWAIT);
+ if (r > 0) {
+ if (r > 128)
+ r = 128;
+ r = getfsstat(s, r * sizeof(s[0]), MNT_NOWAIT);
+ int i;
+ for (i=0; i<r; i++) {
+ if (!strcmp(path_copy, s[i].f_mntonname)) {
+ dev_name = bsd_block2char(s[i].f_mntfromname);
+ fprintf( stderr,
+ "libdvdread: Attempting to use device %s"
+ " mounted on %s for CSS authentication\n",
+ dev_name,
+ s[i].f_mntonname);
+ auth_drive = DVDOpenImageFile( dev_name, have_css );
+ break;
+ }
+ }
+ }
+#elif defined(SYS_BSD)
if( ( fe = getfsfile( path_copy ) ) ) {
dev_name = bsd_block2char( fe->fs_spec );
fprintf( stderr,
...@@ -18,6 +18,7 @@ $(TARBALLS)/libdvdread-$(LIBDVDREAD_VERSION).tar.bz2: ...@@ -18,6 +18,7 @@ $(TARBALLS)/libdvdread-$(LIBDVDREAD_VERSION).tar.bz2:
dvdread: libdvdread-$(LIBDVDREAD_VERSION).tar.bz2 .sum-dvdread dvdread: libdvdread-$(LIBDVDREAD_VERSION).tar.bz2 .sum-dvdread
$(UNPACK) $(UNPACK)
$(APPLY) $(SRC)/dvdread/dvdread-css-static.patch $(APPLY) $(SRC)/dvdread/dvdread-css-static.patch
$(APPLY) $(SRC)/dvdread/osx.patch
ifdef HAVE_WIN32 ifdef HAVE_WIN32
$(APPLY) $(SRC)/dvdread/dvdread-win32.patch $(APPLY) $(SRC)/dvdread/dvdread-win32.patch
endif endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment