aboutsummaryrefslogtreecommitdiff
path: root/multimedia/libdvdread
diff options
context:
space:
mode:
authorGanael LAPLANCHE <martymac@FreeBSD.org>2019-01-08 21:50:21 +0000
committerGanael LAPLANCHE <martymac@FreeBSD.org>2019-01-08 21:50:21 +0000
commit7ba9c16bb91d675f496a5ffbea2d934112ff6a67 (patch)
tree932883d50a02d697895f5b3173065b6640bf2ec5 /multimedia/libdvdread
parent2ff69c6c6f382a9a837ccc27499707429536acea (diff)
downloadports-7ba9c16bb91d675f496a5ffbea2d934112ff6a67.tar.gz
ports-7ba9c16bb91d675f496a5ffbea2d934112ff6a67.zip
Use statfs(2) instead of getfsfile(3) to get device name from a mount point.
PR: 234694 Submitted by: tijl
Notes
Notes: svn path=/head/; revision=489743
Diffstat (limited to 'multimedia/libdvdread')
-rw-r--r--multimedia/libdvdread/Makefile1
-rw-r--r--multimedia/libdvdread/distinfo2
-rw-r--r--multimedia/libdvdread/files/patch-src-dvd_reader.c50
3 files changed, 52 insertions, 1 deletions
diff --git a/multimedia/libdvdread/Makefile b/multimedia/libdvdread/Makefile
index 0fc9b3bada54..30907ed9247b 100644
--- a/multimedia/libdvdread/Makefile
+++ b/multimedia/libdvdread/Makefile
@@ -3,6 +3,7 @@
PORTNAME= libdvdread
PORTVERSION= 6.0.0
+PORTREVISION= 1
CATEGORIES= multimedia
MASTER_SITES= http://download.videolan.org/pub/videolan/libdvdread/${PORTVERSION}/ \
http://dvdnav.mplayerhq.hu/releases/ \
diff --git a/multimedia/libdvdread/distinfo b/multimedia/libdvdread/distinfo
index 333111a08ab4..c3baeee95459 100644
--- a/multimedia/libdvdread/distinfo
+++ b/multimedia/libdvdread/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1516309125
+TIMESTAMP = 1546990033
SHA256 (libdvdread-6.0.0.tar.bz2) = b33b1953b4860545b75f6efc06e01d9849e2ea4f797652263b0b4af6dd10f935
SIZE (libdvdread-6.0.0.tar.bz2) = 394627
diff --git a/multimedia/libdvdread/files/patch-src-dvd_reader.c b/multimedia/libdvdread/files/patch-src-dvd_reader.c
new file mode 100644
index 000000000000..603782febd8d
--- /dev/null
+++ b/multimedia/libdvdread/files/patch-src-dvd_reader.c
@@ -0,0 +1,50 @@
+Use statfs() instead of getfsfile() to get device name from a mount point.
+
+(getfsfile() requires an entry in the fstab file which is often not the case
+for removable media)
+
+--- src/dvd_reader.c.orig 2018-01-17 21:35:39 UTC
++++ src/dvd_reader.c
+@@ -64,7 +64,7 @@ static inline int _private_gettimeofday( struct timeva
+ # include <sys/ucred.h>
+ # include <sys/mount.h>
+ #elif defined(SYS_BSD)
+-# include <fstab.h>
++# include <sys/mount.h>
+ #elif defined(__linux__)
+ # include <mntent.h>
+ # include <paths.h>
+@@ -420,7 +420,7 @@ static dvd_reader_t *DVDOpenCommon( const char *ppath,
+ } else if( S_ISDIR( fileinfo.st_mode ) ) {
+ dvd_reader_t *auth_drive = 0;
+ #if defined(SYS_BSD)
+- struct fstab* fe;
++ struct statfs fs;
+ #elif defined(__sun) || defined(__linux__)
+ FILE *mntfile;
+ #endif
+@@ -511,14 +511,16 @@ static dvd_reader_t *DVDOpenCommon( const char *ppath,
+ }
+ }
+ #elif defined(SYS_BSD)
+- if( ( fe = getfsfile( path_copy ) ) ) {
+- dev_name = bsd_block2char( fe->fs_spec );
+- fprintf( stderr,
+- "libdvdread: Attempting to use device %s"
+- " mounted on %s for CSS authentication\n",
+- dev_name,
+- fe->fs_file );
+- auth_drive = DVDOpenImageFile( dev_name, NULL, NULL, have_css );
++ if( statfs( path_copy, &fs ) == 0 ) {
++ if( !strcmp( path_copy, fs.f_mntonname ) ) {
++ dev_name = bsd_block2char( fs.f_mntfromname );
++ fprintf( stderr,
++ "libdvdread: Attempting to use device %s"
++ " mounted on %s for CSS authentication\n",
++ dev_name,
++ fs.f_mntonname );
++ auth_drive = DVDOpenImageFile( dev_name, NULL, NULL, have_css );
++ }
+ }
+ #elif defined(__sun)
+ mntfile = fopen( MNTTAB, "r" );