Update lsdvd to 0.17. Changes:

* Ignore 'phantom' audio, subtitle tracks
 * Check for garbage in the program chains, which indicate that a track is
   non-existant, to work around additional copy protection
 * Fix displaying content type for audio tracks, subtitles
 * Fix pallete display of first entry
 * Fix include orders
 * Ignore read errors in titles that would not be displayed anyway
 * Fix the chapter count
 * Make sure the array size and the array limit used when initialising
   the palette size is the same.
 * Fix array printing.
 * Correct subsecond calculations.
 * Add sector information to the output format.
 * Clean up code to be closer to ANSI C and compile without warnings
   with more GCC compiler warnings.
This commit is contained in:
snj 2014-10-13 18:29:54 +00:00
parent 7f428d8725
commit 121fe9c3ad
4 changed files with 8 additions and 129 deletions

View file

@ -1,7 +1,6 @@
# $NetBSD: Makefile,v 1.18 2014/10/09 14:06:43 wiz Exp $
# $NetBSD: Makefile,v 1.19 2014/10/13 18:29:54 snj Exp $
DISTNAME= lsdvd-0.16
PKGREVISION= 5
DISTNAME= lsdvd-0.17
CATEGORIES= multimedia
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=lsdvd/}
DIST_SUBDIR= ${PKGNAME_NOREV}
@ -9,14 +8,10 @@ DIST_SUBDIR= ${PKGNAME_NOREV}
MAINTAINER= snj@NetBSD.org
HOMEPAGE= http://sourceforge.net/projects/lsdvd/
COMMENT= Application displaying the contents of DVDs
LICENSE= gnu-gpl-v2
GNU_CONFIGURE= YES
USE_TOOLS+= autoconf
BUILDLINK_API_DEPENDS.libdvdread+= libdvdread>=0.9.5nb1
pre-configure:
cd ${WRKSRC}; autoconf
USE_TOOLS+= pkg-config
.include "../../multimedia/libdvdread/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"

View file

@ -1,7 +1,5 @@
$NetBSD: distinfo,v 1.10 2009/08/23 15:06:36 wiz Exp $
$NetBSD: distinfo,v 1.11 2014/10/13 18:29:54 snj Exp $
SHA1 (lsdvd-0.16/lsdvd-0.16.tar.gz) = d5c0d32bfb220807ebdc0bfbb17679e7294791f4
RMD160 (lsdvd-0.16/lsdvd-0.16.tar.gz) = fcd0993aea6ad2203c8be019ec31ba7c8660ca25
Size (lsdvd-0.16/lsdvd-0.16.tar.gz) = 100495 bytes
SHA1 (patch-aa) = 41ac6688a47ca1f7f20d17c4fd3d2934eecd369c
SHA1 (patch-ab) = 5e0ecd45852a51b6e6bffb52057167c7702634eb
SHA1 (lsdvd-0.17/lsdvd-0.17.tar.gz) = aa44b8c33c66df2a131e469988ced2b11ebf9aab
RMD160 (lsdvd-0.17/lsdvd-0.17.tar.gz) = d2895c2b7dc806b8d3ed10ae022976b09ef6e55a
Size (lsdvd-0.17/lsdvd-0.17.tar.gz) = 99250 bytes

View file

@ -1,23 +0,0 @@
$NetBSD: patch-aa,v 1.3 2006/08/24 09:58:15 xtraeme Exp $
--- configure.in.orig 2006-08-24 11:53:41.000000000 +0200
+++ configure.in 2006-08-24 11:55:34.000000000 +0200
@@ -3,6 +3,7 @@
AM_INIT_AUTOMAKE(lsdvd, 0.16)
CFLAGS="$CFLAGS -g -D_FILE_OFFSET_BITS=64"
AC_PROG_CC
+AC_CHECK_HEADERS([stdint.h inttypes.h])
if eval "test x$GCC = xyes"; then # Enable warnings when using GCC
CFLAGS="$CFLAGS -W -Wall"
@@ -10,8 +11,8 @@
AC_CHECK_LIB(dvdread, DVDOpen, , AC_MSG_ERROR([libdvdread not found!]))
AC_MSG_CHECKING([for dvdread/ifo_read.h])
-AC_TRY_COMPILE([#include <dvdread/ifo_read.h>
- #include <stdint.h>], ,
+AC_TRY_COMPILE([#include <stdint.h>
+ #include <dvdread/ifo_read.h>], ,
AC_MSG_RESULT([yes]),
AC_MSG_RESULT([no])
AC_MSG_ERROR([Header files for dvdread not found]))

View file

@ -1,91 +0,0 @@
$NetBSD: patch-ab,v 1.5 2009/08/23 15:06:37 wiz Exp $
--- lsdvd.c.orig 2006-03-02 13:48:11.000000000 +0000
+++ lsdvd.c
@@ -13,6 +13,7 @@
* 2003-04-19 Cleanups get_title_name, added dvdtime2msec, added helper macros,
* output info structures in form of a Perl module, by Henk Vergonet.
*/
+#include <stdint.h>
#include <dvdread/ifo_read.h>
#include <string.h>
#include <sys/stat.h>
@@ -131,19 +132,26 @@ int get_title_name(const char* dvd_devic
return -1;
}
- if ( fseek(filehandle, 32808, SEEK_SET )) {
+ if ( fseek(filehandle, 32768, SEEK_SET )) {
fclose(filehandle);
fprintf(stderr, "Couldn't seek in %s for title\n", dvd_device);
strcpy(title, "unknown");
return -1;
}
- if ( 32 != (i = fread(title, 1, 32, filehandle)) ) {
+ {
+ #define DVD_SEC_SIZ 2048
+ char tempBuf[ DVD_SEC_SIZ ];
+
+ if ( DVD_SEC_SIZ != fread(tempBuf, 1, DVD_SEC_SIZ, filehandle) ) {
fclose(filehandle);
fprintf(stderr, "Couldn't read enough bytes for title.\n");
strcpy(title, "unknown");
return -1;
}
+ snprintf( title, 32, "%s", tempBuf + 40 );
+ i=32;
+ }
fclose (filehandle);
@@ -239,6 +247,7 @@ int main(int argc, char *argv[])
int has_title = 0, ret = 0;
int max_length = 0, max_track = 0;
struct stat dvd_stat;
+ struct dvd_info dvd_info;
program_name = argv[0];
@@ -276,6 +285,9 @@ int main(int argc, char *argv[])
fprintf(stderr, "Can't find device %s\n", dvd_device);
return 1;
}
+
+ /* On at least NetBSD this fails if called after DVDOpen */
+ has_title = get_title_name(dvd_device, title);
dvd = DVDOpen(dvd_device);
if( !dvd ) {
@@ -305,12 +317,8 @@ int main(int argc, char *argv[])
return 5;
}
- has_title = get_title_name(dvd_device, title);
-
vmgi_mat = ifo_zero->vmgi_mat;
- struct dvd_info dvd_info;
-
dvd_info.discinfo.device = dvd_device;
dvd_info.discinfo.disc_title = has_title ? "unknown" : title;
dvd_info.discinfo.vmg_id = vmgi_mat->vmg_identifier;
@@ -409,14 +417,16 @@ int main(int argc, char *argv[])
cell = 0;
if (opt_c) {
+ int ms;
+
dvd_info.titles[j].chapter_count = pgc->nr_of_programs;
dvd_info.titles[j].chapters = calloc(dvd_info.titles[j].chapter_count, sizeof(*dvd_info.titles[j].chapters));
- int ms;
for (i=0; i<pgc->nr_of_programs; i++)
{
+ int next;
ms=0;
- int next = pgc->program_map[i+1];
+ next = pgc->program_map[i+1];
if (i == pgc->nr_of_programs - 1) next = pgc->nr_of_cells + 1;
while (cell < next - 1)