Commit a9b14e64 authored by Daniel Baumann's avatar Daniel Baumann Committed by Reinhard Tartler

Imported Debian patch 0.9.7-6

parent ad997574
libdvdread (0.9.7-6) unstable; urgency=low
* Maintainer upload from the Zürich BSP
* Applied patch from Bastian Blank <waldi@debian.org> to adjusts the internal
knowledge of the filesize for IFO files in case their size doesn't match
with the entry in the UDF fs (Closes: #460400).
-- Daniel Baumann <daniel@debian.org> Sat, 12 Jan 2008 15:16:00 +0100
libdvdread (0.9.7-5) unstable; urgency=low
* Updated url to libdvdcss upstream in README.Debian (Closes: #458368).
......
01-css
02-kfreebsd
03-udf.dpatch
#!/bin/sh /usr/share/dpatch/dpatch-run
## 03-udf.dpatch by Bastian Blank <waldi@debian.org>
##
## DP: Adjusts the internal knowledge of the filesize for IFO files
## DP: in case their size doesn't match with the entry in the UDF fs.
## DP: (Closes: #460400)
@DPATCH@
diff -Naurp libdvdread-0.9.7.orig/dvdread/dvd_reader.c libdvdread-0.9.7/dvdread/dvd_reader.c
--- libdvdread-0.9.7.orig/dvdread/dvd_reader.c 2006-10-06 07:58:03.000000000 +0000
+++ libdvdread-0.9.7/dvdread/dvd_reader.c 2008-01-12 14:09:28.000000000 +0000
@@ -1393,6 +1393,24 @@ int DVDFileSeek( dvd_file_t *dvd_file, i
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->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;
diff -Naurp libdvdread-0.9.7.orig/dvdread/dvd_reader.h libdvdread-0.9.7/dvdread/dvd_reader.h
--- libdvdread-0.9.7.orig/dvdread/dvd_reader.h 2006-10-06 08:12:31.000000000 +0000
+++ libdvdread-0.9.7/dvdread/dvd_reader.h 2008-01-12 14:09:28.000000000 +0000
@@ -240,6 +240,8 @@ ssize_t DVDReadBlocks( dvd_file_t *, int
*/
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
diff -Naurp libdvdread-0.9.7.orig/dvdread/ifo_read.c libdvdread-0.9.7/dvdread/ifo_read.c
--- libdvdread-0.9.7.orig/dvdread/ifo_read.c 2006-01-22 12:19:19.000000000 +0000
+++ libdvdread-0.9.7/dvdread/ifo_read.c 2008-01-12 14:09:28.000000000 +0000
@@ -106,6 +106,10 @@ static inline int DVDFileSeek_( dvd_file
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 @@ static int ifoRead_VOBU_ADMAP_internal(i
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)))
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