[vlc-devel] [PATCH] contrib: dvdread: resolve OSX mount points properly

Rafaël Carré funman at videolan.org
Thu Mar 15 14:39:38 CET 2012


getstatfs seems to work better than getfsent
---
 contrib/src/dvdread/osx.patch |   43 +++++++++++++++++++++++++++++++++++++++++
 contrib/src/dvdread/rules.mak |    1 +
 2 files changed, 44 insertions(+), 0 deletions(-)
 create mode 100644 contrib/src/dvdread/osx.patch

diff --git a/contrib/src/dvdread/osx.patch b/contrib/src/dvdread/osx.patch
new file mode 100644
index 0000000..e80412e
--- /dev/null
+++ b/contrib/src/dvdread/osx.patch
@@ -0,0 +1,43 @@
+--- 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,
diff --git a/contrib/src/dvdread/rules.mak b/contrib/src/dvdread/rules.mak
index 1c077fe..9c6d57d 100644
--- a/contrib/src/dvdread/rules.mak
+++ b/contrib/src/dvdread/rules.mak
@@ -18,6 +18,7 @@ $(TARBALLS)/libdvdread-$(LIBDVDREAD_VERSION).tar.bz2:
 dvdread: libdvdread-$(LIBDVDREAD_VERSION).tar.bz2 .sum-dvdread
 	$(UNPACK)
 	$(APPLY) $(SRC)/dvdread/dvdread-css-static.patch
+	$(APPLY) $(SRC)/dvdread/osx.patch
 ifdef HAVE_WIN32
 	$(APPLY) $(SRC)/dvdread/dvdread-win32.patch
 endif
-- 
1.7.7.5 (Apple Git-28)



More information about the vlc-devel mailing list