commit:     e92c80f3bf681e9a92b15faf3ff194848d01b05c
Author:     Alexis Ballier <aballier <AT> gentoo <DOT> org>
AuthorDate: Mon May 18 16:34:26 2020 +0000
Commit:     Alexis Ballier <aballier <AT> gentoo <DOT> org>
CommitDate: Mon May 18 16:35:04 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e92c80f3

media-video/dvdbackup: fix build with latest libdvdread

Patch from freebsd/ubuntu provided to us by  Christohper Harrington

Closes: https://bugs.gentoo.org/721732
Package-Manager: Portage-2.3.99, Repoman-2.3.22
Signed-off-by: Alexis Ballier <aballier <AT> gentoo.org>

 media-video/dvdbackup/dvdbackup-0.4.2.ebuild      |  1 +
 media-video/dvdbackup/files/libdvdread-6.1.0.diff | 92 +++++++++++++++++++++++
 2 files changed, 93 insertions(+)

diff --git a/media-video/dvdbackup/dvdbackup-0.4.2.ebuild 
b/media-video/dvdbackup/dvdbackup-0.4.2.ebuild
index f4dfc5d11ca..de49049c825 100644
--- a/media-video/dvdbackup/dvdbackup-0.4.2.ebuild
+++ b/media-video/dvdbackup/dvdbackup-0.4.2.ebuild
@@ -16,6 +16,7 @@ RDEPEND=">=media-libs/libdvdread-4.2.0_pre
        nls? ( virtual/libintl )"
 DEPEND="${RDEPEND}
        nls? ( sys-devel/gettext )"
+PATCHES=( "${FILESDIR}/libdvdread-6.1.0.diff" )
 
 src_configure() {
        econf \

diff --git a/media-video/dvdbackup/files/libdvdread-6.1.0.diff 
b/media-video/dvdbackup/files/libdvdread-6.1.0.diff
new file mode 100644
index 00000000000..06986c36c76
--- /dev/null
+++ b/media-video/dvdbackup/files/libdvdread-6.1.0.diff
@@ -0,0 +1,92 @@
+https://bugs.gentoo.org/721732
+
+https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=245228
+https://bugs.launchpad.net/dvdbackup/+bug/1869226
+
+--- a/src/dvdbackup.c
++++ b/src/dvdbackup.c
+@@ -1132,7 +1132,7 @@ static int DVDCopyIfoBup(dvd_reader_t* dvd, title_set_
+       int size;
+
+       /* DVD handler */
+-      ifo_handle_t* ifo_file = NULL;
++      dvd_file_t* ifo_file = NULL;
+
+
+       if (title_set_info->number_of_title_sets + 1 < title_set) {
+@@ -1181,7 +1181,7 @@ static int DVDCopyIfoBup(dvd_reader_t* dvd, title_set_
+       if ((streamout_ifo = open(targetname_ifo, O_WRONLY | O_CREAT | O_TRUNC, 
0666)) == -1) {
+               fprintf(stderr, _("Error creating %s\n"), targetname_ifo);
+               perror(PACKAGE);
+-              ifoClose(ifo_file);
++              DVDCloseFile(ifo_file);
+               free(buffer);
+               close(streamout_ifo);
+               close(streamout_bup);
+@@ -1191,7 +1191,7 @@ static int DVDCopyIfoBup(dvd_reader_t* dvd, title_set_
+       if ((streamout_bup = open(targetname_bup, O_WRONLY | O_CREAT | O_TRUNC, 
0666)) == -1) {
+               fprintf(stderr, _("Error creating %s\n"), targetname_bup);
+               perror(PACKAGE);
+-              ifoClose(ifo_file);
++              DVDCloseFile(ifo_file);
+               free(buffer);
+               close(streamout_ifo);
+               close(streamout_bup);
+@@ -1200,31 +1200,31 @@ static int DVDCopyIfoBup(dvd_reader_t* dvd, title_set_
+
+       /* Copy VIDEO_TS.IFO, since it's a small file try to copy it in one 
shot */
+
+-      if ((ifo_file = ifoOpen(dvd, title_set))== 0) {
++      if ((ifo_file = DVDOpenFile(dvd, title_set, DVD_READ_INFO_FILE))== 0) {
+               fprintf(stderr, _("Failed opening IFO for title set %d\n"), 
title_set);
+-              ifoClose(ifo_file);
++              DVDCloseFile(ifo_file);
+               free(buffer);
+               close(streamout_ifo);
+               close(streamout_bup);
+               return 1;
+       }
+ 
+-      size = DVDFileSize(ifo_file->file) * DVD_VIDEO_LB_LEN;
++      size = DVDFileSize(ifo_file) * DVD_VIDEO_LB_LEN;
+ 
+       if ((buffer = (unsigned char *)malloc(size * sizeof(unsigned char))) == 
NULL) {
+               perror(PACKAGE);
+-              ifoClose(ifo_file);
++              DVDCloseFile(ifo_file);
+               free(buffer);
+               close(streamout_ifo);
+               close(streamout_bup);
+               return 1;
+       }
+ 
+-      DVDFileSeek(ifo_file->file, 0);
++      DVDFileSeek(ifo_file, 0);
+ 
+-      if (DVDReadBytes(ifo_file->file,buffer,size) != size) {
++      if (DVDReadBytes(ifo_file,buffer,size) != size) {
+               fprintf(stderr, _("Error reading IFO for title set %d\n"), 
title_set);
+-              ifoClose(ifo_file);
++              DVDCloseFile(ifo_file);
+               free(buffer);
+               close(streamout_ifo);
+               close(streamout_bup);
+@@ -1234,7 +1234,7 @@ static int DVDCopyIfoBup(dvd_reader_t* dvd, title_set_
+ 
+       if (write(streamout_ifo,buffer,size) != size) {
+               fprintf(stderr, _("Error writing %s\n"),targetname_ifo);
+-              ifoClose(ifo_file);
++              DVDCloseFile(ifo_file);
+               free(buffer);
+               close(streamout_ifo);
+               close(streamout_bup);
+@@ -1243,7 +1243,7 @@ static int DVDCopyIfoBup(dvd_reader_t* dvd, title_set_
+ 
+       if (write(streamout_bup,buffer,size) != size) {
+               fprintf(stderr, _("Error writing %s\n"),targetname_bup);
+-              ifoClose(ifo_file);
++              DVDCloseFile(ifo_file);
+               free(buffer);
+               close(streamout_ifo);
+               close(streamout_bup);
+

Reply via email to