diff --git a/.gitignore b/.gitignore index 0a5f83b..9ad9465 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,9 @@ +libdvdread-svn1188.tar.bz2 +/libdvdread-svn1226.tar.bz2 +/libdvdread-4.2.0.tar.bz2 +/libdvdread-4.2.1.tar.xz +/libdvdread-4.9.9.tar.xz +/libdvdread-5.0.0.tar.bz2 +/libdvdread-5.0.2.tar.bz2 /libdvdread-5.0.3.tar.bz2 +/A01-UDFReadBlocks-errors.patch diff --git a/A01-UDFReadBlocks-errors.patch b/A01-UDFReadBlocks-errors.patch deleted file mode 100644 index 98edbe3..0000000 --- a/A01-UDFReadBlocks-errors.patch +++ /dev/null @@ -1,162 +0,0 @@ -diff --git a/src/dvd_reader.c b/src/dvd_reader.c -index 4e112d3..e8d50f3 100644 ---- a/src/dvd_reader.c -+++ b/src/dvd_reader.c -@@ -1156,13 +1156,13 @@ int InternalUDFReadBlocksRaw( const dvd_reader_t *device, uint32_t lb_number, - - if( !device->dev ) { - fprintf( stderr, "libdvdread: Fatal error in block read.\n" ); -- return 0; -+ return -1; - } - - ret = dvdinput_seek( device->dev, (int) lb_number ); - if( ret != (int) lb_number ) { - fprintf( stderr, "libdvdread: Can't seek to block %u\n", lb_number ); -- return 0; -+ return ret; - } - - ret = dvdinput_read( device->dev, (char *) data, -diff --git a/src/dvd_udf.c b/src/dvd_udf.c -index 5eb3d2b..68c3a9a 100644 ---- a/src/dvd_udf.c -+++ b/src/dvd_udf.c -@@ -516,6 +516,7 @@ static int UDFMapICB( dvd_reader_t *device, struct AD ICB, uint8_t *FileType, - uint32_t lbnum; - uint16_t TagID; - struct icbmap tmpmap; -+ int ret; - - lbnum = partition->Start + ICB.Location; - tmpmap.lbn = lbnum; -@@ -526,10 +527,16 @@ static int UDFMapICB( dvd_reader_t *device, struct AD ICB, uint8_t *FileType, - } - - do { -- if( DVDReadLBUDF( device, lbnum++, 1, LogBlock, 0 ) <= 0 ) -+ ret = DVDReadLBUDF( device, lbnum++, 1, LogBlock, 0 ); -+ if( ret < 0 ) { -+ return ret; -+ } -+ else if( ret == 0 ) { - TagID = 0; -- else -+ } -+ else { - UDFDescriptor( LogBlock, &TagID ); -+ } - - if( TagID == FileEntry ) { - UDFFileEntry( LogBlock, FileType, partition, File ); -@@ -677,6 +688,7 @@ static int UDFGetAVDP( dvd_reader_t *device, - uint32_t lastsector; - int terminate; - struct avdp_t; -+ int ret; - - if(GetUDFCache(device, AVDPCache, 0, avdp)) - return 1; -@@ -687,11 +699,16 @@ static int UDFGetAVDP( dvd_reader_t *device, - terminate = 0; - - for(;;) { -- if( DVDReadLBUDF( device, lbnum, 1, Anchor, 0 ) > 0 ) { -- UDFDescriptor( Anchor, &TagID ); -- } else { -+ ret = DVDReadLBUDF( device, lbnum, 1, Anchor, 0 ); -+ if( ret < 0 ) { -+ return ret; -+ } -+ else if( ret == 0 ) { - TagID = 0; - } -+ else { -+ UDFDescriptor( Anchor, &TagID ); -+ } - if (TagID != AnchorVolumeDescriptorPointer) { - /* Not an anchor */ - if( terminate ) return 0; /* Final try failed */ -@@ -742,7 +759,7 @@ static int UDFFindPartition( dvd_reader_t *device, int partnum, - uint8_t *LogBlock = (uint8_t *)(((uintptr_t)LogBlock_base & ~((uintptr_t)2047)) + 2048); - uint32_t lbnum, MVDS_location, MVDS_length; - uint16_t TagID; -- int i, volvalid; -+ int i, volvalid, ret; - struct avdp_t avdp; - - if(!UDFGetAVDP(device, &avdp)) -@@ -761,10 +778,16 @@ static int UDFFindPartition( dvd_reader_t *device, int partnum, - lbnum = MVDS_location; - do { - -- if( DVDReadLBUDF( device, lbnum++, 1, LogBlock, 0 ) <= 0 ) -+ ret = DVDReadLBUDF( device, lbnum++, 1, LogBlock, 0 ); -+ if( ret < 0 ) { -+ return ret; -+ } -+ else if( ret == 0 ) { - TagID = 0; -- else -+ } -+ else { - UDFDescriptor( LogBlock, &TagID ); -+ } - - if( ( TagID == PartitionDescriptor ) && ( !part->valid ) ) { - /* Partition Descriptor */ -@@ -805,6 +828,7 @@ uint32_t UDFFindFile( dvd_reader_t *device, const char *filename, - struct AD RootICB, File, ICB; - char tokenline[ MAX_UDF_FILE_NAME_LEN ]; - uint8_t filetype; -+ int ret; - - *filesize = 0; - tokenline[0] = '\0'; -@@ -820,10 +844,16 @@ uint32_t UDFFindFile( dvd_reader_t *device, const char *filename, - /* Find root dir ICB */ - lbnum = partition.Start; - do { -- if( DVDReadLBUDF( device, lbnum++, 1, LogBlock, 0 ) <= 0 ) -+ ret = DVDReadLBUDF( device, lbnum++, 1, LogBlock, 0 ); -+ if( ret < 0 ) { -+ return ret; -+ } -+ else if( ret == 0 ) { - TagID = 0; -- else -+ } -+ else { - UDFDescriptor( LogBlock, &TagID ); -+ } - - /* File Set Descriptor */ - if( TagID == FileSetDescriptor ) /* File Set Descriptor */ -@@ -886,7 +916,7 @@ static int UDFGetDescriptor( dvd_reader_t *device, int id, - uint32_t lbnum, MVDS_location, MVDS_length; - struct avdp_t avdp; - uint16_t TagID; -- int i, desc_found = 0; -+ int i, desc_found = 0, ret; - /* Find Anchor */ - lbnum = 256; /* Try #1, prime anchor */ - if(bufsize < DVD_VIDEO_LB_LEN) -@@ -904,10 +934,16 @@ static int UDFGetDescriptor( dvd_reader_t *device, int id, - /* Find Descriptor */ - lbnum = MVDS_location; - do { -- if( DVDReadLBUDF( device, lbnum++, 1, descriptor, 0 ) <= 0 ) -+ ret = DVDReadLBUDF( device, lbnum++, 1, descriptor, 0 ); -+ if( ret < 0 ) { -+ return ret; -+ } -+ else if( ret == 0 ) { - TagID = 0; -- else -+ } -+ else { - UDFDescriptor( descriptor, &TagID ); -+ } - if( (TagID == id) && ( !desc_found ) ) - /* Descriptor */ - desc_found = 1; diff --git a/sources b/sources index 9ae198e..695046a 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ +SHA512 (A01-UDFReadBlocks-errors.patch) = 2a860ca08f4a8e01a7dd3cebb1b457aacd3bd00d878c68aab4aefaffdf23b513bd16fa10eeca05c701ecc1fb0a813df32e2f4338a0f094639ef8cb2b2be0d482 SHA512 (libdvdread-5.0.3.tar.bz2) = 1ca438f0b5c406549eec62e1abef1e8745b9f932bcd30a3194ee9e37995b269ec8f1652a24cc3d2cb11ddb964e4a47a06e5405f9402e616586ff6263a1af3fc2