[40794] trunk/dports/devel/libdvdread

blb at macports.org blb at macports.org
Tue Oct 14 21:01:38 PDT 2008


Revision: 40794
          http://trac.macports.org/changeset/40794
Author:   blb at macports.org
Date:     2008-10-14 21:01:38 -0700 (Tue, 14 Oct 2008)
Log Message:
-----------
devel/libdvdread - better handle IFO file size mismatches; closes
ticket #15185

Modified Paths:
--------------
    trunk/dports/devel/libdvdread/Portfile

Added Paths:
-----------
    trunk/dports/devel/libdvdread/files/
    trunk/dports/devel/libdvdread/files/patch-dvdread_dvd_reader.c.diff
    trunk/dports/devel/libdvdread/files/patch-dvdread_dvd_reader.h.diff
    trunk/dports/devel/libdvdread/files/patch-dvdread_ifo_read.c.diff

Modified: trunk/dports/devel/libdvdread/Portfile
===================================================================
--- trunk/dports/devel/libdvdread/Portfile	2008-10-15 02:54:59 UTC (rev 40793)
+++ trunk/dports/devel/libdvdread/Portfile	2008-10-15 04:01:38 UTC (rev 40794)
@@ -4,6 +4,7 @@
 
 name            libdvdread
 version         0.9.7
+revision        1
 categories      devel multimedia
 platforms       darwin
 maintainers     nomaintainer
@@ -26,6 +27,9 @@
                 sha1 b2c2ede36cff9d56205747d3740c50fd32669e21 \
                 rmd160 7233064f35d86a27202ca1bef165f6972e20b3e8
 
+patchfiles      patch-dvdread_dvd_reader.c.diff patch-dvdread_ifo_read.c.diff \
+                patch-dvdread_dvd_reader.h.diff
+
 configure.cppflags-append   -no-cpp-precomp
 
 default_variants    +libdvdcss

Added: trunk/dports/devel/libdvdread/files/patch-dvdread_dvd_reader.c.diff
===================================================================
--- trunk/dports/devel/libdvdread/files/patch-dvdread_dvd_reader.c.diff	                        (rev 0)
+++ trunk/dports/devel/libdvdread/files/patch-dvdread_dvd_reader.c.diff	2008-10-15 04:01:38 UTC (rev 40794)
@@ -0,0 +1,40 @@
+--- dvdread/dvd_reader.c.orig	2006-10-06 01:58:03.000000000 -0600
++++ dvdread/dvd_reader.c	2008-05-28 02:21:03.000000000 -0600
+@@ -1393,6 +1393,28 @@
+   return offset;
+ }
+ 
++int DVDFileSeekForce( dvd_file_t *dvd_file, int offset, int force_size )
++{
++  /* Check arguments. */
++  if( dvd_file == NULL || offset < 0 )
++    return -1;
++
++  if( dvd_file->dvd->isImageFile ) {
++    if( force_size < 0 )
++      force_size = (offset - 1) / DVD_VIDEO_LB_LEN + 1;
++    if( dvd_file->filesize < force_size ) {
++      dvd_file->filesize = force_size;
++      fprintf(stderr, "libdvdread: Ignored UDF provided size of file.\n");
++    }
++  }
++
++  if( offset > dvd_file->filesize * DVD_VIDEO_LB_LEN ) {
++    return -1;
++  }
++  dvd_file->seek_pos = (uint32_t) offset;
++  return offset;
++}
++
+ #ifndef HAVE_UINTPTR_T
+ #warning "Assuming that (unsigned long) can hold (void *)"
+ typedef unsigned long uintptr_t;
+@@ -1444,7 +1466,7 @@
+   memcpy( data, &(secbuf[ seek_byte ]), byte_size );
+   free( secbuf_start );
+ 
+-  dvd_file->seek_pos += byte_size;
++  DVDFileSeekForce(dvd_file, dvd_file->seek_pos + byte_size, -1);
+   return byte_size;
+ }
+ 

Added: trunk/dports/devel/libdvdread/files/patch-dvdread_dvd_reader.h.diff
===================================================================
--- trunk/dports/devel/libdvdread/files/patch-dvdread_dvd_reader.h.diff	                        (rev 0)
+++ trunk/dports/devel/libdvdread/files/patch-dvdread_dvd_reader.h.diff	2008-10-15 04:01:38 UTC (rev 40794)
@@ -0,0 +1,11 @@
+--- dvdread/dvd_reader.h.orig	2006-10-06 02:12:31.000000000 -0600
++++ dvdread/dvd_reader.h	2008-05-28 02:21:03.000000000 -0600
+@@ -240,6 +240,8 @@
+  */
+ int DVDFileSeek( dvd_file_t *, int );
+ 
++int DVDFileSeekForce( dvd_file_t *, int, int );
++
+ /**
+  * Reads the given number of bytes from the file.  This call can only be used
+  * on the information files, and may not be used for reading from a VOB.  This

Added: trunk/dports/devel/libdvdread/files/patch-dvdread_ifo_read.c.diff
===================================================================
--- trunk/dports/devel/libdvdread/files/patch-dvdread_ifo_read.c.diff	                        (rev 0)
+++ trunk/dports/devel/libdvdread/files/patch-dvdread_ifo_read.c.diff	2008-10-15 04:01:38 UTC (rev 40794)
@@ -0,0 +1,22 @@
+--- dvdread/ifo_read.c.orig	2006-01-22 05:19:19.000000000 -0700
++++ dvdread/ifo_read.c	2008-05-28 02:21:03.000000000 -0600
+@@ -106,6 +106,10 @@
+   return (DVDFileSeek(dvd_file, (int)offset) == (int)offset);
+ }
+ 
++static inline int DVDFileSeekForce_( dvd_file_t *dvd_file, uint32_t offset, int force_size ) {
++  return (DVDFileSeekForce(dvd_file, (int)offset, force_size) == (int)offset);
++}
++
+ 
+ ifo_handle_t *ifoOpen(dvd_reader_t *dvd, int title) {
+   ifo_handle_t *ifofile;
+@@ -1659,7 +1663,7 @@
+   unsigned int i;
+   int info_length;
+ 
+-  if(!DVDFileSeek_(ifofile->file, sector * DVD_BLOCK_LEN))
++  if(!DVDFileSeekForce_(ifofile->file, sector * DVD_BLOCK_LEN, sector))
+     return 0;
+ 
+   if(!(DVDReadBytes(ifofile->file, vobu_admap, VOBU_ADMAP_SIZE)))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20081014/53f60159/attachment.html 


More information about the macports-changes mailing list