Hello community,

here is the log from the commit of package dvdisaster for openSUSE:Factory 
checked in at 2020-07-03 00:04:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dvdisaster (Old)
 and      /work/SRC/openSUSE:Factory/.dvdisaster.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "dvdisaster"

Fri Jul  3 00:04:34 2020 rev:3 rq:812049 version:0.79.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/dvdisaster/dvdisaster.changes    2018-01-13 
21:47:19.482977672 +0100
+++ /work/SRC/openSUSE:Factory/.dvdisaster.new.3060/dvdisaster.changes  
2020-07-03 00:07:20.887060486 +0200
@@ -1,0 +2,20 @@
+Fri Jun  5 13:08:38 UTC 2020 - Dave Plater <davejpla...@gmail.com>
+
+- Fix Factory build with gcc10 and add Debian patches:
+  29-fix-more-typos.patch, 23-add-bdrom-support.patch,
+  34-gcc8-format-security.patch, 02-encryption.patch,
+  17-fix-all-but-deprecated-api-warnings.patch,
+  10-use-non-size-specific-icon-and-add-keywords-to-desktop-file.patch
+  25-fix-man-pages.patch, 14-make-builds-reproducible.patch,
+  11-no-cruft.patch, 18-update-copyright-in-about-dialog.patch,
+  30-hurd-kfreebsd-ftbfs.patch, 22-fix-hurd-i386-ftbfs.patch,
+  03-dvdrom.patch, 37-suggest-dvdisaster-doc.patch,
+  13-fix-missing-language-field-in-po-files.patch,
+  32-display-compilation-commands.patch,
+  28-pdftex-reproducibility.patch, 05-help-dialog.patch,
+  27-allow-opening-in-browser-again.patch and
+  24-show-gpl3-license.patch
+- Created dvdisaster-no-tex.patch to pevent building of existing
+  pdf manual.
+
+-------------------------------------------------------------------

Old:
----
  dvdisaster-0.79.6.tar.bz2.gpg

New:
----
  02-encryption.patch
  03-dvdrom.patch
  05-help-dialog.patch
  10-use-non-size-specific-icon-and-add-keywords-to-desktop-file.patch
  11-no-cruft.patch
  13-fix-missing-language-field-in-po-files.patch
  14-make-builds-reproducible.patch
  17-fix-all-but-deprecated-api-warnings.patch
  18-update-copyright-in-about-dialog.patch
  22-fix-hurd-i386-ftbfs.patch
  23-add-bdrom-support.patch
  24-show-gpl3-license.patch
  25-fix-man-pages.patch
  27-allow-opening-in-browser-again.patch
  28-pdftex-reproducibility.patch
  29-fix-more-typos.patch
  30-hurd-kfreebsd-ftbfs.patch
  32-display-compilation-commands.patch
  34-gcc8-format-security.patch
  37-suggest-dvdisaster-doc.patch
  dvdisaster-0.79.6.tar.bz2.asc
  dvdisaster-no-tex.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ dvdisaster.spec ++++++
--- /var/tmp/diff_new_pack.vJHFQa/_old  2020-07-03 00:07:26.139077875 +0200
+++ /var/tmp/diff_new_pack.vJHFQa/_new  2020-07-03 00:07:26.143077889 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package dvdisaster
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
@@ -21,13 +21,39 @@
 Version:        0.79.6
 Release:        0
 Summary:        Additional error protection for CD/DVD media
-License:        GPL-3.0
+License:        GPL-3.0-or-later
 Group:          Productivity/Multimedia/Other
-Url:            http://dvdisaster.net/en/index.html
-Source0:        http://dvdisaster.net/downloads/%{name}-%{version}.tar.bz2
-Source1:        http://dvdisaster.net/downloads/%{name}-%{version}.tar.bz2.gpg
+
+# The official website no longer exists only this mirror
+URL:            
http://htmlpreview.github.io/?https://github.com/lrq3000/dvdisaster/blob/stable/dvdisaster/documentation/en/index.html
+
+Source0:        
http://deb.debian.org/debian/pool/main/d/dvdisaster/%{name}_%{version}.orig.tar.bz2#/%{name}-%{version}.tar.bz2
+Source1:        
http://deb.debian.org/debian/pool/main/d/%{name}/%{name}_%{version}.orig.tar.bz2.asc#/%{name}-%{version}.tar.bz2.asc
 # PATCH-FIX-UPSTREAM davejpla...@gmail.com Fix scripts/bash-based-configure to 
work in Tumbleweed.
 Patch0:         dvdisaster-findmake.patch
+# Patches from Debian
+Patch1:         29-fix-more-typos.patch
+Patch6:         23-add-bdrom-support.patch
+Patch7:         34-gcc8-format-security.patch
+Patch8:         02-encryption.patch
+Patch9:         17-fix-all-but-deprecated-api-warnings.patch
+Patch10:        
10-use-non-size-specific-icon-and-add-keywords-to-desktop-file.patch
+Patch12:        25-fix-man-pages.patch
+Patch17:        14-make-builds-reproducible.patch
+Patch18:        11-no-cruft.patch
+Patch19:        18-update-copyright-in-about-dialog.patch
+Patch20:        30-hurd-kfreebsd-ftbfs.patch
+Patch23:        22-fix-hurd-i386-ftbfs.patch
+Patch24:        03-dvdrom.patch
+Patch26:        37-suggest-dvdisaster-doc.patch
+Patch27:        13-fix-missing-language-field-in-po-files.patch
+Patch28:        32-display-compilation-commands.patch
+Patch29:        28-pdftex-reproducibility.patch
+Patch30:        05-help-dialog.patch
+Patch31:        27-allow-opening-in-browser-again.patch
+Patch32:        24-show-gpl3-license.patch
+#PATCH-FIX-OPENSUSE  davejpla...@gmail.com dvdisaster-no-tex.patch - tries to 
build pdfs that already exist
+Patch33:        dvdisaster-no-tex.patch
 BuildRequires:  desktop-file-utils
 BuildRequires:  gettext
 BuildRequires:  pkgconfig
@@ -62,8 +88,6 @@
 %package docs
 Summary:        PDF Documentation for dvdisaster
 Group:          Documentation/Other
-Summary:        Additional error protection for CD/DVD media
-Group:          Documentation/Other
 BuildArch:      noarch
 
 %description docs
@@ -71,16 +95,18 @@
 
 %prep
 %setup -q
-%patch0
+%autopatch -p1
 gmake -v | grep "GNU Make" && echo $# || echo $#
 
 %build
+#gcc10 is picky about global headers without extern, -fcommon fixes this for 
now.
+export CFLAGS="%{optflags} -fcommon"
 %configure --with-nls=yes \
            --docdir=%{_docdir} \
            --docsubdir=%{name} \
            --localedir=%{_datadir}/locale \
            --buildroot=%{buildroot}
-make V=1
+make --trace
 # Parallel make breaks translations sometimes.
 #%%{?_smp_mflags}
 %install
@@ -90,7 +116,8 @@
 
 %files -f dvdisaster.lang
 %{_bindir}/%{name}
-%doc README CHANGELOG COPYING CREDITS.de CREDITS.en README.MODIFYING TODO
+%doc README CHANGELOG CREDITS.de CREDITS.en README.MODIFYING TODO
+%license COPYING
 %{_mandir}/de/man1/%{name}.1%{ext_man}
 %{_mandir}/man1/%{name}.1%{ext_man}
 %exclude %{_docdir}/%{name}/manual.pdf

++++++ 02-encryption.patch ++++++
From: Optical Media Tools Team <pkg-opt-media-t...@lists.alioth.debian.org>
Date: Sun, 8 Apr 2012 21:51:29 +0900
Subject: Disables to skip on encrypted disks (e.g. DVD with CSS-Encryption).

Description: Disables to skip on encrypted disks (e.g. DVD with CSS-Encryption).
Author: n/a
Last-Update: 2012-04-08
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 scsi-layer.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/scsi-layer.c b/scsi-layer.c
index cad13d4..866b7ac 100644
--- a/scsi-layer.c
+++ b/scsi-layer.c
@@ -2695,12 +2695,13 @@ Image* OpenImageFromDevice(char *device)
                 return NULL;
       }
    }
-
+/*
    if(dh->mainType == DVD && query_copyright(dh))
    {  CloseImage(image);
       Stop(_("This software does not support encrypted media.\n"));
       return NULL;
    }
+*/
 
    /* Create the bitmap of simulated defects */
 
++++++ 03-dvdrom.patch ++++++
From: Corey Wright <undefi...@pobox.com>
Date: Tue, 6 Mar 2012 11:10:30 +0900
Subject: Adds support for DVD-ROM medium-type.

Description: Adds support for DVD-ROM medium-type.
Author: Corey Wright <undefi...@pobox.com>
Last-Update: 2012-03-06
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 scsi-layer.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/scsi-layer.c b/scsi-layer.c
index 866b7ac..b3a9d0e 100644
--- a/scsi-layer.c
+++ b/scsi-layer.c
@@ -908,6 +908,11 @@ static int query_dvd(DeviceHandle *dh, int probe_only)
            break;
         }
 
+        if(layer_type & 0x01)
+        {  dh->typeDescr = g_strdup("DVD-ROM");
+           break;
+        }
+
         if(layer_type & 0x06) /* strange thing: (re-)writeable but neither 
plus nor dash */ 
         {  dh->typeDescr = g_strdup("DVD-ROM (fake)");
            dh->subType = DVD;
++++++ 05-help-dialog.patch ++++++
From: Daniel Baumann <dan...@debian.org>
Date: Sun, 8 Apr 2012 21:53:29 +0900
Subject: Customizes the help-dialog according to README.MODIFYING.

Description: Customizes the help-dialog according to README.MODIFYING.
 .
 * 2016-12-19 - Fixed path:
   /usr/share/common/licenses/GPL-2 -> /usr/share/common-licenses/GPL-2
   and restored use of "GPL" label.
Author: Daniel Baumann <dan...@debian.org>
Last-Update: 2016-12-19
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 help-dialogs.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/help-dialogs.c b/help-dialogs.c
index c486613..758ac19 100644
--- a/help-dialogs.c
+++ b/help-dialogs.c
@@ -403,7 +403,7 @@ void ShowGPL()
   ShowTextfile(_("windowtitle|GNU General Public License"), 
               _("<big>GNU General Public License</big>\n"
                 "<i>The license terms of dvdisaster.</i>"),
-              "COPYING", NULL, NULL);
+              "/usr/share/common-licenses/GPL-2", NULL, NULL);
 }
 
 /*
@@ -567,7 +567,7 @@ static void show_modifying(void)
 {  ShowTextfile(_("windowtitle|Modifying dvdisaster"), 
               _("<big>Modifying dvdisaster</big>\n"
                 "<i>Your changes are not ours.</i>"),
-              "README.MODIFYING", NULL, NULL);
+              "/usr/share/doc/dvdisaster/README.MODIFYING", NULL, NULL);
 }
 
 static gint about_cb(GtkWidget *widget, GdkEvent *event, gpointer data)
@@ -746,11 +746,11 @@ void AboutDialog()
                        "GPL");
 
 #ifdef MODIFIED_SOURCE
-   AboutTextWithLink(vbox, _("\nThis program is <b>not the original</b>. It is 
based on the\n"
-                            "source code of dvdisaster, but contains 
third-party changes.\n\n"
+   AboutTextWithLink(vbox, _("\nThis version is <b>not the original</b>. It 
has been patched\n"
+                            "for Debian to support DVD-ROMs (with and without 
encryption).\n\n"
                             "Please do not bother the original authors of 
dvdisaster\n"
-                            "([www.dvdisaster.org]) about issues with this 
version.\n"),
-                            "http://www.dvdisaster.org";);
+                            "but submit bugreports against the [debian 
package] instead.\n"),
+                            "http://packages.qa.debian.org/dvdisaster";);
 
 #else
    lang = g_getenv("LANG");
++++++ 10-use-non-size-specific-icon-and-add-keywords-to-desktop-file.patch 
++++++
From: Carlos Maddela <e7ap...@gmail.com>
Date: Mon, 19 Dec 2016 03:40:41 +1100
Subject: Use non-size-specific icon and add keywords to desktop file.

Description: Use non-size-specific icon and add keywords to desktop file.
Author: Carlos Maddela <e7ap...@gmail.com>
Forwarded: no
Last-Update: 2016-12-19
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 contrib/dvdisaster.desktop | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/contrib/dvdisaster.desktop b/contrib/dvdisaster.desktop
index c7661ec..1f9926b 100644
--- a/contrib/dvdisaster.desktop
+++ b/contrib/dvdisaster.desktop
@@ -6,7 +6,8 @@ Comment=Additional error protection for CD/DVD media
 Comment[cs]=Přídavná ochrana pro média CD/DVD
 Comment[de]=Zusätzliche Fehlerkorrektur für CD/DVD
 Exec=dvdisaster
-Icon=dvdisaster48.png
+Icon=dvdisaster
 Terminal=false
 Type=Application
 Categories=Application;System;
+Keywords=CD;DVD;media;data loss;scratch;aging;error;protection;recovery;
++++++ 11-no-cruft.patch ++++++
From: Carlos Maddela <e7ap...@gmail.com>
Date: Mon, 19 Dec 2016 05:06:30 +1100
Subject: Do not install cruft.

Description: Do not install cruft.
Author: Carlos Maddela <e7ap...@gmail.com>
Forwarded: not-needed
Last-Update: 2017-12-21
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 GNUmakefile.template | 19 -------------------
 1 file changed, 19 deletions(-)

diff --git a/GNUmakefile.template b/GNUmakefile.template
index 77a57bf..6fda92b 100644
--- a/GNUmakefile.template
+++ b/GNUmakefile.template
@@ -228,12 +228,6 @@ install: dvdisaster manual
        install -d $(BUILDROOT)$(BINDIR)
        install dvdisaster $(BUILDROOT)$(BINDIR)
        install -d $(BUILDROOT)$(DOCSUBDIR)
-       install -m 644 CHANGELOG $(BUILDROOT)$(DOCSUBDIR)
-       install -m 644 COPYING $(BUILDROOT)$(DOCSUBDIR)
-       install -m 644 CREDITS* $(BUILDROOT)$(DOCSUBDIR)
-       install -m 644 README.MODIFYING $(BUILDROOT)$(DOCSUBDIR)
-       install -m 644 TODO $(BUILDROOT)$(DOCSUBDIR)
-       install -d $(BUILDROOT)$(DOCSUBDIR)
        (cd documentation/user-manual; install -m 644 manual.pdf 
$(BUILDROOT)$(DOCSUBDIR))
        install -d $(BUILDROOT)$(MANDIR)/man1
        install -d $(BUILDROOT)$(MANDIR)/de/man1
@@ -251,19 +245,6 @@ install: dvdisaster manual
            install -m 644 $$i/LC_MESSAGES/dvdisaster.mo 
$(BUILDROOT)$(LOCALEDIR)/$$i/LC_MESSAGES; \
          done \
        fi
-       @echo "# dvdisaster uninstaller script" > 
$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh
-       @echo "# Usage: sh dvdisaster-uninstall.sh" >> 
$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh
-       @echo >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh
-       @echo "rm -f $(BINDIR)/dvdisaster $(BINDIR)/dvdisaster-uninstall.sh" >> 
$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh
-       @echo "rm -rf $(DOCSUBDIR)" >> 
$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh
-       @for i in $(PO_LOCALES); do \
-         echo "rm $(LOCALEDIR)/$$i/LC_MESSAGES/dvdisaster.mo" >> 
$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh ; \
-       done
-       @echo "rm -f $(MANDIR)/man1/dvdisaster.1" >> 
$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh
-       @for i in $(MAN_LOCALES); do \
-         echo "rm $(MANDIR)/$$i/man1/dvdisaster.1" >> 
$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh ; \
-       done
-       @echo "echo \"dvdisaster has been uninstalled.\"" >> 
$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh
 
 uninstall:
        @echo "Uninstalling package..."
++++++ 13-fix-missing-language-field-in-po-files.patch ++++++
From: Carlos Maddela <e7ap...@gmail.com>
Date: Mon, 19 Dec 2016 07:04:02 +1100
Subject: Fix missing language fields in PO files.

Description: Fix missing language fields in PO files.
Author: Carlos Maddela <e7ap...@gmail.com>
Forwarded: no
Last-Update: 2017-01-05
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 locale/pt_BR.po | 2 +-
 locale/ru.po    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/locale/pt_BR.po b/locale/pt_BR.po
index 86eda03..f3437f3 100644
--- a/locale/pt_BR.po
+++ b/locale/pt_BR.po
@@ -11,7 +11,7 @@ msgstr ""
 "PO-Revision-Date: 2010-06-09 11:13+0200\n"
 "Last-Translator: cg <c...@dvdisaster.org>\n"
 "Language-Team: Portuguese\n"
-"Language: \n"
+"Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
diff --git a/locale/ru.po b/locale/ru.po
index 7984c59..1bc7324 100644
--- a/locale/ru.po
+++ b/locale/ru.po
@@ -13,7 +13,7 @@ msgstr ""
 "PO-Revision-Date: 2009-07-23 08:11+0300\n"
 "Last-Translator: Igor Gorbounov <igor.gorbou...@gmail.com>\n"
 "Language-Team: Russian\n"
-"Language: \n"
+"Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
++++++ 14-make-builds-reproducible.patch ++++++
From: Carlos Maddela <e7ap...@gmail.com>
Date: Mon, 19 Dec 2016 09:39:49 +1100
Subject: Make builds reproducible.

Description: Make builds reproducible.
 Use the Debian changelog details to derive a build number and date,
 so that we can make reproducible binaries.
Author: Carlos Maddela <e7ap...@gmail.com>
Forwarded: not-needed
Last-Update: 2017-08-14
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 build.c                   | 2 +-
 closure.c                 | 2 +-
 dvdisaster.h              | 2 +-
 locale/cs.po              | 4 ++--
 locale/pt_BR.po           | 4 ++--
 locale/ru.po              | 4 ++--
 scripts/time-stamper.bash | 8 ++++----
 7 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/build.c b/build.c
index 0e99b22..65b17cd 100644
--- a/build.c
+++ b/build.c
@@ -25,4 +25,4 @@
 /* build is incremented at each make;
    make recompile of dependent file as fast as possible */
 
-int  buildCount = BUILD;
+const char *const buildCount = BUILD;
diff --git a/closure.c b/closure.c
index 58ba86f..d633d53 100644
--- a/closure.c
+++ b/closure.c
@@ -442,7 +442,7 @@ void InitClosure()
   #define BITNESS_STRING ""
 #endif
 
-   Closure->versionString = g_strdup_printf("dvdisaster %s build %d, %s%s",
+   Closure->versionString = g_strdup_printf("dvdisaster %s build %s, %s%s",
                                            Closure->cookedVersion, buildCount, 
SYS_NAME, BITNESS_STRING);
 
    /* Replace the dot with a locale-resistant separator */
diff --git a/dvdisaster.h b/dvdisaster.h
index a466450..9acd094 100644
--- a/dvdisaster.h
+++ b/dvdisaster.h
@@ -463,7 +463,7 @@ void FreeBitmap(Bitmap*);
  *** build.h
  ***/
 
-int buildCount;
+extern const char *const buildCount;
 
 /***
  *** cacheprobe.h
diff --git a/locale/cs.po b/locale/cs.po
index 4f766a3..453ec07 100644
--- a/locale/cs.po
+++ b/locale/cs.po
@@ -6511,11 +6511,11 @@ msgstr "<i>Novinky v této verzi:</i>"
 
 #~ msgid ""
 #~ "\n"
-#~ "dvdisaster version %s build %d\n"
+#~ "dvdisaster version %s build %s\n"
 #~ "\n"
 #~ msgstr ""
 #~ "\n"
-#~ "dvdisaster verze %s sestavení %d\n"
+#~ "dvdisaster verze %s sestavení %s\n"
 #~ "\n"
 
 #~ msgid "--prefetch-sectors must be in range 32...8096"
diff --git a/locale/pt_BR.po b/locale/pt_BR.po
index f3437f3..f7f6af0 100644
--- a/locale/pt_BR.po
+++ b/locale/pt_BR.po
@@ -6232,11 +6232,11 @@ msgstr "<i>Novidades dessa versão:</i>"
 
 #~ msgid ""
 #~ "\n"
-#~ "dvdisaster version %s build %d\n"
+#~ "dvdisaster version %s build %s\n"
 #~ "\n"
 #~ msgstr ""
 #~ "\n"
-#~ "dvdisaster, versão %s build %d\n"
+#~ "dvdisaster, versão %s build %s\n"
 
 #~ msgid "--cache-size maximum is 8192MiB."
 #~ msgstr "--cache-size máximo é 8192MiB."
diff --git a/locale/ru.po b/locale/ru.po
index 1bc7324..9625a1f 100644
--- a/locale/ru.po
+++ b/locale/ru.po
@@ -6247,11 +6247,11 @@ msgstr "<i>Новое в этой версии:</i>"
 
 #~ msgid ""
 #~ "\n"
-#~ "dvdisaster version %s build %d\n"
+#~ "dvdisaster version %s build %s\n"
 #~ "\n"
 #~ msgstr ""
 #~ "\n"
-#~ "dvdisaster версия %s сборка %d\n"
+#~ "dvdisaster версия %s сборка %s\n"
 #~ "\n"
 
 #~ msgid "--cache-size maximum is 8192MiB."
diff --git a/scripts/time-stamper.bash b/scripts/time-stamper.bash
index fd28794..4ec3e60 100755
--- a/scripts/time-stamper.bash
+++ b/scripts/time-stamper.bash
@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
 
-build=$(grep BUILD $1  | cut -d\  -f3)
-build=$((build+1))
-echo "#define BUILD $build" >$1
-date=$(date +"%d.%m.%y (%A, %H:%M)")
+# Use Debian changelog details to derive build number and date.
+build=$(echo "${DEB_VERSION}" | cut -f2 -d-)
+echo "#define BUILD \"$build\"" >$1
+date=$(date --date="@${SOURCE_DATE_EPOCH}" --utc +"%d.%m.%y (%A, %H:%M)")
 echo "#define BDATE \"$date\"" >>$1
++++++ 17-fix-all-but-deprecated-api-warnings.patch ++++++
From: Carlos Maddela <e7ap...@gmail.com>
Date: Thu, 22 Dec 2016 11:19:20 +1100
Subject: Fix all warnings except for those related to deprecated API.

Description: Fix all warnings except for those related to deprecated API.
Author: Carlos Maddela <e7ap...@gmail.com>
Bug-Debian: https://bugs.debian.org/748416
Forwarded: no
Last-Update: 2017-12-21
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 closure.c     |  2 +-
 menubar.c     |  2 +-
 rs03-create.c | 24 ++++++++++++------------
 rs03-fix.c    |  8 ++++----
 scsi-layer.c  |  4 ++++
 smart-lec.c   | 10 +++++-----
 6 files changed, 27 insertions(+), 23 deletions(-)

diff --git a/closure.c b/closure.c
index d633d53..fa52f09 100644
--- a/closure.c
+++ b/closure.c
@@ -196,7 +196,7 @@ void ReadDotfile()
       /* Get first MAX_LINE_LEN bytes of line, discard the rest */
      
       line[MAX_LINE_LEN-1] = 1;
-      fgets(line, MAX_LINE_LEN, dotfile);
+      if(!fgets(line, MAX_LINE_LEN, dotfile)) break;
       if(!line[MAX_LINE_LEN-1])  /* line longer than buffer */
        while(!feof(dotfile) && fgetc(dotfile) != '\n')
          ;
diff --git a/menubar.c b/menubar.c
index 94d462b..ee24ebe 100644
--- a/menubar.c
+++ b/menubar.c
@@ -414,7 +414,7 @@ void set_path(GtkWidget *entry, char *path)
    else
    {  char buf[PATH_MAX + strlen(path) + 2];
 
-      getcwd(buf, PATH_MAX);
+      if(!getcwd(buf, PATH_MAX)) return;
       strcat(buf,"/");
 
       strcat(buf,path);
diff --git a/rs03-create.c b/rs03-create.c
index 71460ef..9c7265d 100644
--- a/rs03-create.c
+++ b/rs03-create.c
@@ -31,9 +31,9 @@
 
 //#define VERBOSE 1
 #ifdef VERBOSE
-  #define verbose(format,args...) printf(format, ## args)
+  #define verbose(format,...) printf(format, __VA_ARGS__)
 #else
-  #define verbose(format,args...)
+  #define verbose(format,...)
 #endif
 
 #ifdef HAVE_MMAP
@@ -714,7 +714,7 @@ static void flush_crc(ecc_closure *ec, LargeFile *file_out)
 
    /* Write out the CRC layer */
       
-   verbose("IO: writing CRC layer\n");
+   verbose("%s", "IO: writing CRC layer\n");
    crc_sect = 2048*(ec->encoderChunk+lay->firstCrcPos);
    if(!LargeSeek(file_out, crc_sect))
    {  ec->abortImmediately = TRUE;
@@ -735,7 +735,7 @@ static void flush_parity(ecc_closure *ec, LargeFile 
*file_out)
 
    /* Write out the created parity. */
 
-   verbose("IO: writing parity...\n");
+   verbose("%s", "IO: writing parity...\n");
    for(k=0; k<lay->nroots; k++)
    {  gint64 idx=0;
 
@@ -752,7 +752,7 @@ static void flush_parity(ecc_closure *ec, LargeFile 
*file_out)
         }
       }
    }
-   verbose("IO: parity written.\n");
+   verbose("%s", "IO: parity written.\n");
 }
 
 static gpointer io_thread(ecc_closure *ec)
@@ -767,7 +767,7 @@ static gpointer io_thread(ecc_closure *ec)
    int parity_available = 0;
    int i;
 
-   verbose("Reader thread initializing\n");
+   verbose("%s", "Reader thread initializing\n");
 
    /*** Allocate local parity buffer aligned at 128bit boundary */
 
@@ -835,7 +835,7 @@ static gpointer io_thread(ecc_closure *ec)
       {  read_next_chunk(ec, chunk);
         //      flush_crc(ec, file_out);  // FIXME
         needs_preload = 0;
-        verbose("IO: first chunk loaded\n");
+        verbose("%s", "IO: first chunk loaded\n");
         continue;
       }
 
@@ -882,7 +882,7 @@ static gpointer io_thread(ecc_closure *ec)
       g_mutex_lock(ec->lock);
       cpu_bound = ec->buffersToEncode;
       while(ec->buffersToEncode)
-      {  verbose("IO: Waiting for encoders to finish\n");
+      {  verbose("%s", "IO: Waiting for encoders to finish\n");
         g_cond_wait(ec->ioCond, ec->lock);
       }
       g_mutex_unlock(ec->lock);
@@ -924,7 +924,7 @@ static gpointer io_thread(ecc_closure *ec)
    ec->slicesFree = TRUE;  /* we have saved the slices; go ahead */
    g_cond_broadcast(ec->ioCond);
    while(ec->buffersToEncode)
-   {  verbose("IO: Waiting for encoders to finish last chunk\n");
+   {  verbose("%s", "IO: Waiting for encoders to finish last chunk\n");
       g_cond_wait(ec->ioCond, ec->lock);
    }
    g_mutex_unlock(ec->lock);
@@ -937,7 +937,7 @@ static gpointer io_thread(ecc_closure *ec)
    flush_crc(ec, file_out);
    flush_parity(ec, file_out);
 
-   verbose("IO: finished\n"); fflush(stdout);
+   verbose("%s", "IO: finished\n"); fflush(stdout);
    return NULL;
 }
 
@@ -1123,7 +1123,7 @@ static gpointer encoder_thread(ecc_closure *ec)
       ec->buffersToEncode-=enc_size;
       if(!ec->buffersToEncode)
       {  g_cond_broadcast(ec->ioCond);
-        verbose("ENC: processed last buffer; telling IO process.\n");
+        verbose("%s", "ENC: processed last buffer; telling IO process.\n");
         fflush(stdout);
       }
       g_mutex_unlock(ec->lock);
@@ -1223,7 +1223,7 @@ static void create_reed_solomon(ecc_closure *ec)
       verbose("SCHED: joined with worker %d\n", i);
       fflush(stdout);
    }
-   verbose("SCHED: scheduler finished.\n");
+   verbose("%s", "SCHED: scheduler finished.\n");
 }
 
 /***
diff --git a/rs03-fix.c b/rs03-fix.c
index 7afb6d6..19b9322 100644
--- a/rs03-fix.c
+++ b/rs03-fix.c
@@ -829,10 +829,10 @@ void RS03Fix(Image *image)
              if we were processing an augmented image. */
 
           if(lay->target == ECC_FILE && i >= ndata-1)
-          {  
-              if(!LargeSeek(image->eccFile, (gint64)(2048*sec)))
-                Stop(_("Failed seeking to sector %lld in ecc file [%s]: %s"),
-                     sec, "FW", strerror(errno));
+          {
+                if(!LargeSeek(image->eccFile, (gint64)(2048*sec)))
+                   Stop(_("Failed seeking to sector %lld in ecc file [%s]: 
%s"),
+                        sec, "FW", strerror(errno));
 
              n = LargeWrite(image->eccFile, cache_offset+fc->imgBlock[i], 
2048);
              if(n != 2048)
diff --git a/scsi-layer.c b/scsi-layer.c
index b3a9d0e..f8d2112 100644
--- a/scsi-layer.c
+++ b/scsi-layer.c
@@ -31,7 +31,9 @@
 
 static int query_type(DeviceHandle*, int);
 static gint64 query_size(Image*);
+#if 0
 static int query_copyright(DeviceHandle*);
+#endif
 
 static int read_dvd_sector(DeviceHandle*, unsigned char*, int, int);
 static int read_cd_sector(DeviceHandle*, unsigned char*, int, int);
@@ -1649,6 +1651,7 @@ reset_mode_page:
  * Find out whether we are allowed to create an image from the DVD.
  */
 
+#if 0
 static int query_copyright(DeviceHandle *dh)
 {  Sense sense;
    AlignedBuffer *ab = CreateAlignedBuffer(2048);
@@ -1709,6 +1712,7 @@ static int query_copyright(DeviceHandle *dh)
 
    return result;
 }
+#endif
 
 /*
  * See whether a sector lies within the user area.
diff --git a/smart-lec.c b/smart-lec.c
index 02b9c49..944b70d 100644
--- a/smart-lec.c
+++ b/smart-lec.c
@@ -27,9 +27,9 @@
 
 #define VERBOSE 1
 #ifdef VERBOSE
-  #define verbose(format,args...) printf(format, ## args)
+  #define verbose(format,...) printf(format, __VA_ARGS__)
 #else
-  #define verbose(format,args...)
+  #define verbose(format,...)
 #endif
 
 /***
@@ -432,7 +432,7 @@ static void update_pq_state(sh_context *shc)
 static void print_pq_state(sh_context *shc)
 {  int i;
 
-   verbose("PQ states: \n");
+   verbose("%s", "PQ states: \n");
 
    for(i=0; i<N_P_VECTORS; i++)
    {  if(shc->pState[i] == 1)
@@ -1354,7 +1354,7 @@ static void swap_p_for_new_improvement(sh_context *shc)
                  count++;
 
            if(count < 2)
-           {  verbose(" pruned");
+           {  verbose("%s", " pruned");
               goto decrement;
            }
 
@@ -1417,7 +1417,7 @@ decrement:
            if(index >= n_q) break;
            selection[index]=0;
 
-           verbose("\n");
+           verbose("%s", "\n");
         }
       }
    }
++++++ 18-update-copyright-in-about-dialog.patch ++++++
From: Carlos Maddela <e7ap...@gmail.com>
Date: Wed, 21 Dec 2016 07:25:17 +1100
Subject: Update copyright notice in about dialog.

Description: Update copyright notice in about dialog.
Author: Carlos Maddela <e7ap...@gmail.com>
Forwarded: not-needed
Last-Update: 2017-12-21
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 help-dialogs.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/help-dialogs.c b/help-dialogs.c
index 47551f7..3f94920 100644
--- a/help-dialogs.c
+++ b/help-dialogs.c
@@ -723,8 +723,9 @@ void AboutDialog()
    g_free(text);
 
 #ifdef MODIFIED_SOURCE
-   AboutTextWithLink(vbox, 
-                    _("Modified version Copyright 2017 (please fill in - 
[directions])\n"
+   AboutTextWithLink(vbox,
+                    _("[Modified version]\n"
+                      "Copyright 2005-2017 Debian Optical Media Tools Team\n"
                       "Copyright 2004-2017 Carsten Gnoerlich"),
                     "MODIFYING");
 #else
++++++ 22-fix-hurd-i386-ftbfs.patch ++++++
From: Carlos Maddela <e7ap...@gmail.com>
Date: Wed, 4 Jan 2017 03:55:58 +1100
Subject: Fix FTBFS for hurd-i386.

Description: Fix FTBFS for hurd-i386.
 Hurd does not have path length restrictions, so doesn't define
 PATH_MAX. Assuming a PATH_MAX of 4096 as a quick workaround.
Author: Carlos Maddela <e7ap...@gmail.com>
Forwarded: no
Last-Update: 2017-01-04
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 menubar.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/menubar.c b/menubar.c
index 4a9f470..8330edb 100644
--- a/menubar.c
+++ b/menubar.c
@@ -24,6 +24,10 @@
 
 #include <limits.h>
 
+#ifndef PATH_MAX
+  #define PATH_MAX 4096
+#endif
+
 /***
  *** Forward declarations
  ***/
++++++ 23-add-bdrom-support.patch ++++++
From: Corey Wright <undefi...@pobox.com>
Date: Sat, 24 Sep 2016 14:16:10 -0500
Subject: Add support for BD-ROM media-type.

Description: Add support for BD-ROM media-type.
 The attached patch adds support to dvdisaster for the BD-ROM
 media-type.  This allows dvdisaster to scan and read (ie create ISO
 images of) BD-ROM media.
Author: Corey Write <undefi...@pobox.com>
Origin: other, 
https://bugs.debian.org/cgi-bin/bugreport.cgi?att=1;bug=849518;filename=dvdisaster-add_bdrom_support.patch;msg=5
Bug-Debian: https://bugs.debian.org/849518
Forwarded: no
Last-Update: 2016-12-27
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 scsi-layer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scsi-layer.c b/scsi-layer.c
index f8d2112..50f6c4c 100644
--- a/scsi-layer.c
+++ b/scsi-layer.c
@@ -1029,7 +1029,7 @@ static int query_bd(DeviceHandle *dh, int probe_only)
 
    if(!strncmp((char*)&buf[4+8], "BDO", 3))
    {  dh->typeDescr = g_strdup("BD-ROM");
-      dh->subType = UNSUPPORTED;
+      dh->subType = BD;
    }
 
    if(!strncmp((char*)&buf[4+8], "BDW", 3))
++++++ 24-show-gpl3-license.patch ++++++
From: Carlos Maddela <e7ap...@gmail.com>
Date: Thu, 5 Jan 2017 14:36:27 +1100
Subject: Update help dialog to show GPL-3 license.

Description: Update help dialog to show GPL-3 license.
Author: Carlos Maddela <e7ap...@gmail.com>
Forwarded: not-needed
Last-Update: 2017-01-05
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 help-dialogs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/help-dialogs.c b/help-dialogs.c
index d893d33..75a615e 100644
--- a/help-dialogs.c
+++ b/help-dialogs.c
@@ -403,7 +403,7 @@ void ShowGPL()
   ShowTextfile(_("windowtitle|GNU General Public License"), 
               _("<big>GNU General Public License</big>\n"
                 "<i>The license terms of dvdisaster.</i>"),
-              "/usr/share/common-licenses/GPL-2", NULL, NULL);
+              "/usr/share/common-licenses/GPL-3", NULL, NULL);
 }
 
 /*
++++++ 25-fix-man-pages.patch ++++++
From: Carlos Maddela <e7ap...@gmail.com>
Date: Thu, 5 Jan 2017 18:51:49 +1100
Subject: Fix generated man pages.

Description: Fix generated man pages.
 The generated man pages incorrectly direct users to the directory of
 the old HTML documentation, which is no longer available.
Author: Carlos Maddela <e7ap...@gmail.com>
Forwarded: no
Last-Update: 2016-12-21
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 GNUmakefile.template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/GNUmakefile.template b/GNUmakefile.template
index d9bef11..d80932d 100644
--- a/GNUmakefile.template
+++ b/GNUmakefile.template
@@ -232,9 +232,9 @@ install: dvdisaster
        install -d $(BUILDROOT)$(MANDIR)/de/man1
        cd documentation; \
          ESCAPED_DOCSUBDIR=`echo $(DOCSUBDIR) | sed -e 's/\//\\\\\//g'`; \
-         sed "s/%docdir%/$$ESCAPED_DOCSUBDIR\/html/" <dvdisaster.en.1 
>dvdisaster.updated; \
+         sed "s/%docdir%/$$ESCAPED_DOCSUBDIR/" <dvdisaster.en.1 
>dvdisaster.updated; \
          install -m 644 dvdisaster.updated 
$(BUILDROOT)$(MANDIR)/man1/dvdisaster.1; \
-         sed "s/%docdir%/$$ESCAPED_DOCSUBDIR\/html/" <dvdisaster.de.1 
>dvdisaster.updated; \
+         sed "s/%docdir%/$$ESCAPED_DOCSUBDIR/" <dvdisaster.de.1 
>dvdisaster.updated; \
          install -m 644 dvdisaster.updated 
$(BUILDROOT)$(MANDIR)/de/man1/dvdisaster.1; \
          rm dvdisaster.updated
        if echo $(WITH_OPTIONS) | grep "NLS_YES" >/dev/null; then \
++++++ 27-allow-opening-in-browser-again.patch ++++++
From: Carlos Maddela <e7ap...@gmail.com>
Date: Thu, 5 Jan 2017 19:11:38 +1100
Subject: Resurrect old code to support opening URLs in a browser.

Description: Resurrect old code to support opening URLs in a browser.
Author: Carlos Maddela <e7ap...@gmail.com>
Forwarded: not-needed
Last-Update: 2016-12-21
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 closure.c      |   2 +
 dvdisaster.h   |   7 +
 help-dialogs.c |   3 +-
 show-html.c    | 402 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 413 insertions(+), 1 deletion(-)
 create mode 100644 show-html.c

diff --git a/closure.c b/closure.c
index fa52f09..24c1e8c 100644
--- a/closure.c
+++ b/closure.c
@@ -474,6 +474,7 @@ void InitClosure()
    Closure->deviceNames = g_ptr_array_new();
    Closure->deviceNodes = g_ptr_array_new();
    Closure->viewer      = g_strdup("xdg-open");
+   Closure->browser      = g_strdup("xdg-open");
    Closure->methodList  = g_ptr_array_new();
    Closure->methodName  = g_strdup("RS01");
    Closure->dDumpDir    = g_strdup(Closure->homeDir);
@@ -589,6 +590,7 @@ void FreeClosure()
    cond_free(Closure->binDir);
    cond_free(Closure->docDir);
    cond_free(Closure->viewer);
+   cond_free(Closure->browser);
    cond_free(Closure->errorTitle);
    cond_free(Closure->simulateCD);
    cond_free(Closure->dDumpDir);
diff --git a/dvdisaster.h b/dvdisaster.h
index 9acd094..f536040 100644
--- a/dvdisaster.h
+++ b/dvdisaster.h
@@ -229,6 +229,7 @@ typedef struct _GlobalClosure
    char *binDir;        /* place where the binary resides */
    char *docDir;        /* place where our documentation resides */
    char *viewer;        /* Name of preferred PDF viewer */
+   char *browser;       /* Name of preferred browser */
 
    GMutex progressLock; /* A mutex protected the stuff below */
    char bs[256];        /* A string of 255 backspace characters */
@@ -1348,6 +1349,12 @@ int ProbeAltiVec(void);
 
 void ShowPDF(char*);
 
+/***
+ *** show-html.c
+ ***/
+
+void ShowHTML(char*);
+
 /***
  *** smart-lec.c
  ***/
diff --git a/help-dialogs.c b/help-dialogs.c
index 75a615e..dc5b440 100644
--- a/help-dialogs.c
+++ b/help-dialogs.c
@@ -599,7 +599,8 @@ static gint about_cb(GtkWidget *widget, GdkEvent *event, 
gpointer data)
    {  case GDK_BUTTON_PRESS: 
         if(!inside) return FALSE; /* Defect in certain Gtk versions? */
         if(!strcmp(label,"GPL")) ShowGPL(); 
-        else if(!strcmp(label,"MODIFYING")) show_modifying(); 
+        else if(!strcmp(label,"MODIFYING")) show_modifying();
+        else if(strlen(label) > 4 && !strncmp(label, "http", 4)) 
ShowHTML(g_strdup(label));
         else ShowPDF(g_strdup(label));
        break; 
       case GDK_ENTER_NOTIFY: 
diff --git a/show-html.c b/show-html.c
new file mode 100644
index 0000000..608e8ec
--- /dev/null
+++ b/show-html.c
@@ -0,0 +1,402 @@
+/*  dvdisaster: Additional error correction for optical media.
+ *  Copyright (C) 2004-2012 Carsten Gnoerlich.
+ *  Project home page: http://www.dvdisaster.com
+ *  Email: cars...@dvdisaster.com  -or-  cgnoerl...@fsfe.org
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA,
+ *  or direct your browser at http://www.gnu.org.
+ */
+
+#include "dvdisaster.h"
+
+#if defined(SYS_LINUX) || defined(SYS_FREEBSD) || defined(SYS_NETBSD)
+#include <sys/wait.h>
+#endif
+
+#ifdef SYS_MINGW
+#include "windows.h"
+#include "shellapi.h"
+#endif
+
+/***
+ *** Ask user to specify his browser
+ ***/
+
+#if defined(SYS_LINUX) || defined(SYS_FREEBSD) || defined(SYS_NETBSD)
+
+#define SEARCH_BUTTON 1
+
+typedef struct
+{  GtkWidget *dialog;
+   GtkWidget *entry;
+   GtkWidget *search;
+   GtkWidget *filesel;
+   GtkWidget *fileok;
+   GtkWidget *filecancel;
+   char *url;
+} browser_dialog_info;
+
+static void response_cb(GtkWidget *widget, int response, gpointer data)
+{  browser_dialog_info *bdi = (browser_dialog_info*)data; 
+
+   switch(response)
+   {  case GTK_RESPONSE_ACCEPT:
+       if(Closure->browser) g_free(Closure->browser);
+       Closure->browser = g_strdup(gtk_entry_get_text(GTK_ENTRY(bdi->entry)));
+       ShowHTML(bdi->url);
+       break;
+
+      case GTK_RESPONSE_REJECT:
+       if(bdi->url) g_free(bdi->url);
+        break;
+   }
+   gtk_widget_destroy(widget);
+   if(bdi->filesel)
+     gtk_widget_destroy(bdi->filesel);
+   g_free(bdi);
+}
+
+static void search_cb(GtkWidget *widget, gpointer data)
+{  browser_dialog_info *bdi = (browser_dialog_info*)data; 
+
+   if(widget == bdi->search) 
+   {  bdi->filesel = gtk_file_selection_new(_utf("windowtitle|Choose a 
browser"));
+      bdi->fileok = GTK_FILE_SELECTION(bdi->filesel)->ok_button;
+      bdi->filecancel = GTK_FILE_SELECTION(bdi->filesel)->cancel_button;
+      ReverseCancelOK(GTK_DIALOG(bdi->filesel));
+      gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(bdi->filesel));
+      g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(bdi->filesel)->ok_button), 
"clicked", 
+                      G_CALLBACK(search_cb), bdi);
+    
+      
g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(bdi->filesel)->cancel_button), 
"clicked", 
+                      G_CALLBACK(search_cb), bdi);
+      
+      gtk_widget_show(bdi->filesel);
+   }
+
+   if(widget == bdi->fileok)
+   {
+      if(Closure->browser) g_free(Closure->browser);
+      Closure->browser = 
g_strdup(gtk_file_selection_get_filename(GTK_FILE_SELECTION(bdi->filesel)));
+      ShowHTML(bdi->url);
+      gtk_widget_destroy(bdi->filesel);
+      gtk_widget_destroy(bdi->dialog);
+      g_free(bdi);
+      return;
+   }
+
+   if(widget == bdi->filecancel)
+   {  gtk_widget_destroy(bdi->filesel);
+      bdi->filesel = NULL;
+   }
+}
+
+static void browser_dialog(char *url)
+{  GtkWidget *dialog, *vbox, *hbox, *label, *entry, *button;
+   browser_dialog_info *bdi = g_malloc0(sizeof(browser_dialog_info));
+
+   /* Create the dialog */
+
+   dialog = gtk_dialog_new_with_buttons(_utf("windowtitle|Browser required"), 
+                                      Closure->window, 
GTK_DIALOG_DESTROY_WITH_PARENT,
+                                      GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, 
+                                      GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, 
NULL);
+   bdi->dialog = dialog;
+   if(url)
+   {  bdi->url = g_strdup(url);
+   }
+
+   vbox = gtk_vbox_new(FALSE, 0);
+   gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), vbox, FALSE, FALSE, 
0);
+   gtk_container_set_border_width(GTK_CONTAINER(vbox), 10);
+
+   /* Insert the contents */
+
+   label = gtk_label_new(NULL);
+   gtk_label_set_markup(GTK_LABEL(label), _utf("<b>Could not find a suitable 
browser.</b>\n\n"
+                                               "Which browser would you like 
to use\n"
+                                               "for reading the online 
documentation?\n\n"
+                                              "Please enter its name (e.g. 
mozilla) or\n"
+                                              "use the \"Search\" button for a 
file dialog.\n")),
+                             gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, 
TRUE, 10);
+
+   hbox = gtk_hbox_new(FALSE, 0);
+   gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 10);
+
+   bdi->entry = entry = gtk_entry_new();
+   gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 10);
+
+   bdi->search = button = gtk_button_new_with_label(_utf("Search"));
+   g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(search_cb), bdi);
+   gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 10);
+
+   /* Show it */
+
+   g_signal_connect(dialog, "response", G_CALLBACK(response_cb), bdi);
+
+   gtk_widget_show_all(dialog);
+}
+#endif /* SYS_ unix-like */
+
+/***
+ *** Show the manual in an external browser
+ ***/
+
+/*
+ * Check the child processes exit status
+ * to find whether the browser could be invoked.
+ */
+
+typedef struct
+{  pid_t pid;
+   char *url;
+   GtkWidget *msg;
+   int seconds;
+} browser_info;
+
+
+static void msg_destroy_cb(GtkWidget *widget, gpointer data)
+{  browser_info *bi = (browser_info*)data;
+
+   bi->msg = NULL; 
+}
+
+#if defined(SYS_LINUX) || defined(SYS_FREEBSD) ||  defined(SYS_NETBSD)
+
+/* 
+ * The following list of browsers and html wrappers
+ * will be tried one at a time until one entry succeeds by:
+ * - returning zero
+ * - not returning within 60 seconds
+ */
+
+static int browser_index;
+static void try_browser(browser_info*);
+
+static char *browsers[] = 
+{  "user-selection",
+   "xdg-open",
+   "gnome-open",
+   "htmlview",
+   "firefox",
+   "mozilla",
+   "konqueror",
+   "epiphany",
+   "opera",
+   "/Applications/Safari.app/Contents/MacOS/Safari",  /* better way to do 
this? */
+   NULL
+};
+
+static gboolean browser_timeout_func(gpointer data)
+{  browser_info *bi = (browser_info*)data;
+   int status;
+
+   waitpid(bi->pid, &status, WNOHANG);
+
+   /* At least mozilla returns random values under FreeBSD on success,
+      so we can't rely on the return value exept our own 110 one. */
+
+   if(WIFEXITED(status))
+   {
+      switch(WEXITSTATUS(status))
+      {  case 110: /* browser did not execute */
+          browser_index++;
+          if(!browsers[browser_index]) /* all browsers from the list failed */
+          {  browser_dialog(bi->url);
+
+             if(bi->msg) 
+               gtk_widget_destroy(bi->msg);
+             if(bi->url) 
+               g_free(bi->url);
+             g_free(bi);
+          }
+          else                        /* try next browser from list */
+          {  bi->seconds = 0;  
+             try_browser(bi);
+          }
+          return FALSE;
+
+         case 0:  /* browser assumed to be successful */
+         default:
+          if(bi->msg) 
+            gtk_widget_destroy(bi->msg);
+          if(bi->url) 
+            g_free(bi->url);
+          g_free(bi);
+          return FALSE;
+      }
+   }
+
+   bi->seconds++;
+   if(bi->seconds == 10 && bi->msg)
+   {  gtk_widget_destroy(bi->msg);
+      bi->msg = NULL;
+   }
+
+   return bi->seconds > 60 ? FALSE : TRUE;
+}
+#endif /* SYS_ unix-like */
+
+#ifdef SYS_MINGW
+static gboolean browser_timeout_func(gpointer data)
+{  browser_info *bi = (browser_info*)data;
+   
+   bi->seconds++;
+
+   if(bi->seconds >= 10)
+   {  if(bi->msg)
+      {  gtk_widget_destroy(bi->msg);
+         bi->msg = NULL;
+      }
+      if(bi->url) g_free(bi->url);
+      g_free(bi);
+      return FALSE;
+   }
+
+   return TRUE;
+}
+#endif /* SYS_MINGW */
+
+/*
+ * Invoke the browser
+ */
+
+#if defined(SYS_LINUX) || defined(SYS_FREEBSD) || defined(SYS_NETBSD)
+static void try_browser(browser_info *bi)
+{  pid_t pid;
+
+   bi->pid = pid = fork();
+
+   if(pid == -1)
+   {  printf("fork failed\n");
+      return;
+   }
+
+   /* make the parent remember and wait() for the browser */
+
+   if(pid > 0)  
+   {  g_timeout_add(1000, browser_timeout_func, (gpointer)bi);
+
+      if(browser_index)
+      {  g_free(Closure->browser);
+        Closure->browser = g_strdup(browsers[browser_index]);
+      }
+   }
+
+   /* try calling the browser */
+
+   if(pid == 0)
+   {  char *argv[10];
+      int argc = 0;
+
+      argv[argc++] = browser_index ? browsers[browser_index] : 
Closure->browser;
+      argv[argc++] = bi->url;
+      argv[argc++] = NULL;
+      execvp(argv[0], argv);
+
+      _exit(110); /* couldn't execute */
+   }
+}
+#endif /* SYS_ unix-like */
+
+
+void ShowHTML(char *target)
+{  browser_info *bi = g_malloc0(sizeof(browser_info));
+   guint64 ignore;
+   const char *lang;
+   char *path = NULL;
+   int http_url;
+
+   /* If no target is given, select between translations of the manual. */
+
+   if(!target) target = g_strdup("index.html");
+
+   http_url = strlen(target) > 4 && !strncmp(target, "http", 4);
+
+   if(!http_url && !strchr(target, '/'))  /* create full path */
+   { 
+      if(!Closure->docDir)
+      {  
+        CreateMessage(_("Documentation not installed."), GTK_MESSAGE_ERROR);
+         g_free(bi);
+         return;
+      }
+
+      lang = g_getenv("LANG");
+
+      if(lang)
+      {  if(!strncmp(lang, "ru", 2)) 
+#ifdef SYS_MINGW
+            path = g_strdup_printf("%s\\ru\\%s",Closure->docDir,target); 
+#else
+            path = g_strdup_printf("%s/ru/%s",Closure->docDir,target); 
+#endif
+         else if(!strncmp(lang, "de", 2)) 
+#ifdef SYS_MINGW
+            path = g_strdup_printf("%s\\de\\%s",Closure->docDir,target); 
+#else
+            path = g_strdup_printf("%s/de/%s",Closure->docDir,target); 
+#endif
+      }
+
+      if(!path)
+      {
+#ifdef SYS_MINGW
+         path = g_strdup_printf("%s\\en\\%s",Closure->docDir,target); 
+#else
+         path = g_strdup_printf("%s/en/%s",Closure->docDir,target); 
+#endif
+      }
+
+#ifdef SYS_MINGW      
+      if(!LargeStat(path, &ignore))
+      {  
+        g_free(path);  /* the local dir is Windows specific */
+        path = g_strdup_printf("%s\\local\\%s",Closure->docDir,target);
+      }
+#endif
+      g_free(target);
+      bi->url = path;
+   }
+   else bi->url = target;
+
+   if(!http_url && !LargeStat(bi->url, &ignore))
+   {  
+      CreateMessage(_("Documentation file\n%s\nnot found.\n"), 
GTK_MESSAGE_ERROR, bi->url);
+      g_free(bi);
+      g_free(bi->url);
+      return;
+   }
+
+   /* Lock the help button and show a message for 10 seconds. */
+
+   TimedInsensitive(Closure->helpButton, 10000);
+   bi->msg = CreateMessage(_("Please hang on until the browser comes up!"), 
GTK_MESSAGE_INFO);
+   g_signal_connect(G_OBJECT(bi->msg), "destroy", G_CALLBACK(msg_destroy_cb), 
bi);
+
+#ifdef SYS_MINGW
+   /* Okay, Billy wins big time here ;-) */
+
+   ShellExecute(NULL, "open", bi->url, NULL, NULL, SW_SHOWNORMAL);
+   g_timeout_add(1000, browser_timeout_func, (gpointer)bi);
+#endif
+
+#if defined(SYS_LINUX) || defined(SYS_FREEBSD) || defined(SYS_NETBSD)
+   /* Try the first browser */
+
+   browser_index = 0;
+   try_browser(bi);
+#endif
+}
++++++ 28-pdftex-reproducibility.patch ++++++
From: Carlos Maddela <e7ap...@gmail.com>
Date: Thu, 5 Jan 2017 19:14:35 +1100
Subject: Apply pdftex workarounds for build reproducibility.

Description: Apply pdftex workarounds for build reproducibility.
 * Generate the same PDF IDs.
 * Suppress additional metadata for included images.
Author: Carlos Maddela <e7ap...@gmail.com>
Forwarded: not-needed
Last-Update: 2017-08-15
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 documentation/user-manual/manual.tex | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/documentation/user-manual/manual.tex 
b/documentation/user-manual/manual.tex
index 3024f3a..d943232 100644
--- a/documentation/user-manual/manual.tex
+++ b/documentation/user-manual/manual.tex
@@ -65,6 +65,8 @@
 \fancyfoot{}
 \fancyfoot[LE,RO]{page \thepage\ of \pageref{LastPage}}
 
+\pdftrailerid{dvdisaster}
+\pdfsuppressptexinfo=-1
 \begin{document}
 
 \definecolor{lightorange}{RGB}{255,224,150}
++++++ 29-fix-more-typos.patch ++++++
From: Carlos Maddela <e7ap...@gmail.com>
Date: Sun, 6 Aug 2017 02:16:17 +1000
Subject: Fix more typos in error messages and docs.
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit

Description: Fix more typos in error messages and docs.
 'sucessful' → 'successful'
 'improvment' → 'improvement'
Author: Carlos Maddela <e7ap...@gmail.com>
Last-Update: 2017-12-21
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 documentation/user-manual/howtos.tex | 2 +-
 locale/cs.po                         | 2 +-
 locale/de.po                         | 2 +-
 locale/it.po                         | 2 +-
 locale/pt_BR.po                      | 2 +-
 locale/ru.po                         | 2 +-
 locale/sv.po                         | 2 +-
 preferences.c                        | 4 ++--
 regtest/rs01.bash                    | 2 +-
 scsi-layer.c                         | 2 +-
 smart-lec.c                          | 2 +-
 11 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/documentation/user-manual/howtos.tex 
b/documentation/user-manual/howtos.tex
index 51ff827..80fe9d3 100644
--- a/documentation/user-manual/howtos.tex
+++ b/documentation/user-manual/howtos.tex
@@ -1822,7 +1822,7 @@ process of creating error correction files using these 
options. The
 first option marked green lets dvdisaster create the error correction
 file immediately after the medium has been (completely) read.
 The second option marked green deletes the image when the error correction
-file has been sucessfully created.
+file has been successfully created.
 
 \bigskip
 
diff --git a/locale/cs.po b/locale/cs.po
index 453ec07..d89ff4a 100644
--- a/locale/cs.po
+++ b/locale/cs.po
@@ -1917,7 +1917,7 @@ msgid "Media ejection"
 msgstr "Vysunutí disku"
 
 #: preferences.c:2064 preferences.c:2065
-msgid "Eject medium after sucessful read"
+msgid "Eject medium after successful read"
 msgstr "Po úspěšném načtení vysunout disk"
 
 #: preferences.c:2091
diff --git a/locale/de.po b/locale/de.po
index 5b47778..8112b13 100644
--- a/locale/de.po
+++ b/locale/de.po
@@ -1975,7 +1975,7 @@ msgid "Media ejection"
 msgstr "Datenträger auswerfen"
 
 #: preferences.c:2064 preferences.c:2065
-msgid "Eject medium after sucessful read"
+msgid "Eject medium after successful read"
 msgstr "Datenträger nach erfolgreichem Lesen auswerfen"
 
 #: preferences.c:2091
diff --git a/locale/it.po b/locale/it.po
index f6e9dfd..b98f8d3 100644
--- a/locale/it.po
+++ b/locale/it.po
@@ -1763,7 +1763,7 @@ msgid "Media ejection"
 msgstr ""
 
 #: preferences.c:2064 preferences.c:2065
-msgid "Eject medium after sucessful read"
+msgid "Eject medium after successful read"
 msgstr ""
 
 #: preferences.c:2091
diff --git a/locale/pt_BR.po b/locale/pt_BR.po
index f7f6af0..81ee14d 100644
--- a/locale/pt_BR.po
+++ b/locale/pt_BR.po
@@ -1853,7 +1853,7 @@ msgid "Media ejection"
 msgstr "Ejeção da mídia"
 
 #: preferences.c:2064 preferences.c:2065
-msgid "Eject medium after sucessful read"
+msgid "Eject medium after successful read"
 msgstr "Ejetar mídia após uma leitura completa"
 
 #: preferences.c:2091
diff --git a/locale/ru.po b/locale/ru.po
index 9625a1f..6e980b9 100644
--- a/locale/ru.po
+++ b/locale/ru.po
@@ -1855,7 +1855,7 @@ msgid "Media ejection"
 msgstr "Извлечь носитель"
 
 #: preferences.c:2064 preferences.c:2065
-msgid "Eject medium after sucessful read"
+msgid "Eject medium after successful read"
 msgstr "Извлечь носитель после успешного чтения"
 
 #: preferences.c:2091
diff --git a/locale/sv.po b/locale/sv.po
index c74a942..3011969 100644
--- a/locale/sv.po
+++ b/locale/sv.po
@@ -1769,7 +1769,7 @@ msgid "Media ejection"
 msgstr ""
 
 #: preferences.c:2064 preferences.c:2065
-msgid "Eject medium after sucessful read"
+msgid "Eject medium after successful read"
 msgstr ""
 
 #: preferences.c:2091
diff --git a/preferences.c b/preferences.c
index 4899317..4309809 100644
--- a/preferences.c
+++ b/preferences.c
@@ -2061,8 +2061,8 @@ void CreatePreferencesWindow(void)
       frame = gtk_frame_new(_utf("Media ejection"));
       gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
 
-      lwoh = CreateLabelWithOnlineHelp(_("Eject medium after sucessful read"), 
-                                      _("Eject medium after sucessful read"));
+      lwoh = CreateLabelWithOnlineHelp(_("Eject medium after successful read"),
+                                      _("Eject medium after successful read"));
       RegisterPreferencesHelpWindow(lwoh);
 
       for(i=0; i<2; i++)
diff --git a/regtest/rs01.bash b/regtest/rs01.bash
index 3c03f61..cc11f6e 100755
--- a/regtest/rs01.bash
+++ b/regtest/rs01.bash
@@ -1323,7 +1323,7 @@ if try "reading medium w/ ecc in 3 passes; 3rd pass 
recovers some" read_multipas
   run_regtest read_multipass_ecc_partial_success "--read-medium=3 
--spinup-delay=0 -r" $TMPISO  $TMPECC
 fi
 
-# Do a second sucessful read attempt at an incomplete image;
+# Do a second successful read attempt at an incomplete image;
 # see whether correct results are reported when ecc data is present
 # since CRC caching is a bit complicated in this case.
 
diff --git a/scsi-layer.c b/scsi-layer.c
index 50f6c4c..22e825d 100644
--- a/scsi-layer.c
+++ b/scsi-layer.c
@@ -2458,7 +2458,7 @@ int ReadSectors(DeviceHandle *dh, unsigned char *buf, 
gint64 s, int nsectors)
       if(Closure->readRaw && dh->rawBuffer)
        recommended_attempts = dh->rawBuffer->recommendedAttempts;
 
-      if(status)  /* current try was unsucessful */
+      if(status)  /* current try was unsuccessful */
       {  int last_key, last_asc, last_ascq;
 
         if(Closure->stopActions)  /* user break */
diff --git a/smart-lec.c b/smart-lec.c
index 944b70d..534dd65 100644
--- a/smart-lec.c
+++ b/smart-lec.c
@@ -1609,7 +1609,7 @@ static int smart_lec_iteration(sh_context *shc, char 
*message)
    shc->bestBonus = 0;
    shc->bestMalus = 100000;
    memcpy(shc->bestFrame, rb->recovered, rb->sampleSize);
-   sprintf(shc->msg, "smart_lec: no further improvment");
+   sprintf(shc->msg, "smart_lec: no further improvement");
 
    update_pq_state(shc);
    print_pq_state(shc);
++++++ 30-hurd-kfreebsd-ftbfs.patch ++++++
From: Carlos Maddela <e7ap...@gmail.com>
Date: Sun, 6 Aug 2017 02:40:33 +1000
Subject: Fix FTBFS on Hurd and kFreeBSD.

Description: Fix FTBFS on Hurd and kFreeBSD.
 Make sure MMAP_FLAGS gets defined.
Author: Carlos Maddela <e7ap...@gmail.com>
Last-Update: 2017-08-06
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 rs03-create.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/rs03-create.c b/rs03-create.c
index 9c7265d..678644c 100644
--- a/rs03-create.c
+++ b/rs03-create.c
@@ -39,16 +39,19 @@
 #ifdef HAVE_MMAP
   #include <sys/mman.h>
 
-#ifdef SYS_LINUX
-  #define MMAP_FLAGS (MAP_SHARED | MAP_POPULATE | MAP_NORESERVE) 
-#endif
+#if defined(SYS_LINUX)
 
-#ifdef SYS_FREEBSD
-  #define MMAP_FLAGS (MAP_SHARED | MAP_PREFAULT_READ) 
-#endif
+  #define MMAP_FLAGS (MAP_SHARED | MAP_POPULATE | MAP_NORESERVE)
+
+#elif defined(SYS_FREEBSD)
+
+  #define MMAP_FLAGS (MAP_SHARED | MAP_PREFAULT_READ)
+
+#else
+
+  /* SYS_NETBSD and others. */
+  #define MMAP_FLAGS (MAP_SHARED)
 
-#ifdef SYS_NETBSD
-  #define MMAP_FLAGS (MAP_SHARED) 
 #endif
 
 #endif
++++++ 32-display-compilation-commands.patch ++++++
From: Carlos Maddela <e7ap...@gmail.com>
Date: Wed, 9 Aug 2017 20:49:31 +1000
Subject: Do not suppress the display of compilation commands

Description: Do not suppress the display of compilation commands,
 so that build logs may be analysed by blhc.
Author: Carlos Maddela <e7ap...@gmail.com>
Forwarded: not-needed
Last-Update: 2017-08-9
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 GNUmakefile.template | 93 +++++++++++++++++++++++++---------------------------
 1 file changed, 45 insertions(+), 48 deletions(-)

diff --git a/GNUmakefile.template b/GNUmakefile.template
index d80932d..ac1f597 100644
--- a/GNUmakefile.template
+++ b/GNUmakefile.template
@@ -71,41 +71,41 @@ OFILES = $(CFG_OFILES)
 
 ${BUILDTMP}/%.o : %.c
        @echo "Compiling:" $?
-       @$(CC) $(COPTS) -c $? -o $@
+       $(CC) $(COPTS) -c $? -o $@
 
 all: time-stamp dvdisaster
 
 # Building the dvdisaster binary
 
 time-stamp:
-       @$(SRCDIR)/scripts/time-stamper.bash $(SRCDIR)/build.h
+       $(SRCDIR)/scripts/time-stamper.bash $(SRCDIR)/build.h
 
 dvdisaster: inlined-icons.h $(OFILES) 
        @echo "Linking  : dvdisaster"
-       @$(CC) $(LOPTS) $(OFILES) $(LIBS) -o dvdisaster
-       @if test -e locale/de/LC_MESSAGES/dvdisaster.mo \
+       $(CC) $(LOPTS) $(OFILES) $(LIBS) -o dvdisaster
+       if test -e locale/de/LC_MESSAGES/dvdisaster.mo \
         || echo $(WITH_OPTIONS) | grep "NLS_NO" >/dev/null; \
        then echo "not touching locale"; \
        else $(MAKE) --no-print-directory -C locale; \
        fi
 
 inlined-icons.h: icons/read.png icons/create.png icons/scan.png icons/fix.png 
icons/verify.png
-       @gdk-pixbuf-csource --raw --name=dvdisaster_read     icons/read.png     
 >inlined-icons.h
-       @gdk-pixbuf-csource --raw --name=dvdisaster_create   icons/create.png   
>>inlined-icons.h
-       @gdk-pixbuf-csource --raw --name=dvdisaster_scan     icons/scan.png     
>>inlined-icons.h
-       @gdk-pixbuf-csource --raw --name=dvdisaster_fix      icons/fix.png      
>>inlined-icons.h
-       @gdk-pixbuf-csource --raw --name=dvdisaster_verify   icons/verify.png   
>>inlined-icons.h
-       @gdk-pixbuf-csource --raw --name=dvdisaster_open_ecc icons/open-ecc.png 
>>inlined-icons.h
-       @gdk-pixbuf-csource --raw --name=dvdisaster_open_img icons/open-img.png 
>>inlined-icons.h
-       @gdk-pixbuf-csource --raw --name=dvdisaster_cd icons/cd.png 
>>inlined-icons.h
-       @gdk-pixbuf-csource --raw --name=dvdisaster_gtk_help icons/gtk-help.png 
>>inlined-icons.h
-       @gdk-pixbuf-csource --raw --name=dvdisaster_gtk_index 
icons/gtk-index.png >>inlined-icons.h
-       @gdk-pixbuf-csource --raw --name=dvdisaster_gtk_preferences 
icons/gtk-preferences.png >>inlined-icons.h
-       @gdk-pixbuf-csource --raw --name=dvdisaster_gtk_quit icons/gtk-quit.png 
>>inlined-icons.h
-       @gdk-pixbuf-csource --raw --name=dvdisaster_gtk_stop icons/gtk-stop.png 
>>inlined-icons.h
+       gdk-pixbuf-csource --raw --name=dvdisaster_read     icons/read.png      
>inlined-icons.h
+       gdk-pixbuf-csource --raw --name=dvdisaster_create   icons/create.png   
>>inlined-icons.h
+       gdk-pixbuf-csource --raw --name=dvdisaster_scan     icons/scan.png     
>>inlined-icons.h
+       gdk-pixbuf-csource --raw --name=dvdisaster_fix      icons/fix.png      
>>inlined-icons.h
+       gdk-pixbuf-csource --raw --name=dvdisaster_verify   icons/verify.png   
>>inlined-icons.h
+       gdk-pixbuf-csource --raw --name=dvdisaster_open_ecc icons/open-ecc.png 
>>inlined-icons.h
+       gdk-pixbuf-csource --raw --name=dvdisaster_open_img icons/open-img.png 
>>inlined-icons.h
+       gdk-pixbuf-csource --raw --name=dvdisaster_cd icons/cd.png 
>>inlined-icons.h
+       gdk-pixbuf-csource --raw --name=dvdisaster_gtk_help icons/gtk-help.png 
>>inlined-icons.h
+       gdk-pixbuf-csource --raw --name=dvdisaster_gtk_index 
icons/gtk-index.png >>inlined-icons.h
+       gdk-pixbuf-csource --raw --name=dvdisaster_gtk_preferences 
icons/gtk-preferences.png >>inlined-icons.h
+       gdk-pixbuf-csource --raw --name=dvdisaster_gtk_quit icons/gtk-quit.png 
>>inlined-icons.h
+       gdk-pixbuf-csource --raw --name=dvdisaster_gtk_stop icons/gtk-stop.png 
>>inlined-icons.h
 
 $(BUILDTMP)/help-dialogs.o: help-dialogs.c simple-md5sum
-       @if test -e fingerprints.md5; \
+       if test -e fingerprints.md5; \
        then if test -e help-dialogs.h; then rm help-dialogs.h; fi; \
             mv inlined-icons.h inlined-icons.saved; \
             mv build.h build.saved; \
@@ -121,35 +121,35 @@ $(BUILDTMP)/help-dialogs.o: help-dialogs.c simple-md5sum
        else echo "#define MODIFIED_SOURCE 1" >> help-dialogs.h; \
        fi
        @echo "Compiling:" help-dialogs.c
-       @$(CC) $(COPTS) -c help-dialogs.c -o $(BUILDTMP)/help-dialogs.o
+       $(CC) $(COPTS) -c help-dialogs.c -o $(BUILDTMP)/help-dialogs.o
 
 $(BUILDTMP)/rs-encoder-sse2.o: rs-encoder-sse2.c
        @echo "Compiling:" rs-encoder-sse2.c
-       @$(CC) $(SSE2_OPTIONS) $(COPTS) -c rs-encoder-sse2.c -o 
$(BUILDTMP)/rs-encoder-sse2.o
+       $(CC) $(SSE2_OPTIONS) $(COPTS) -c rs-encoder-sse2.c -o 
$(BUILDTMP)/rs-encoder-sse2.o
 
 $(BUILDTMP)/rs-encoder-altivec.o: rs-encoder-altivec.c
        @echo "Compiling:" rs-encoder-altivec.c
-       @$(CC) $(ALTIVEC_OPTIONS) $(COPTS) -c rs-encoder-altivec.c -o 
$(BUILDTMP)/rs-encoder-altivec.o
+       $(CC) $(ALTIVEC_OPTIONS) $(COPTS) -c rs-encoder-altivec.c -o 
$(BUILDTMP)/rs-encoder-altivec.o
 
 locale:
-       @$(MAKE) --no-print-directory -C locale
+       $(MAKE) --no-print-directory -C locale
 
 untranslated:
-       @$(MAKE) --no-print-directory -C locale check-untranslated
+       $(MAKE) --no-print-directory -C locale check-untranslated
 
 simple-md5sum: md5.c
-       @$(CC) $(COPTS) $(MUDFLAP_CFLAGS) -DSIMPLE_MD5SUM md5.c 
$(MUDFLAP_LFLAGS) $(MUDFLAP_LIBS) -o simple-md5sum
+       $(CC) $(COPTS) $(MUDFLAP_CFLAGS) -DSIMPLE_MD5SUM md5.c 
$(MUDFLAP_LFLAGS) $(MUDFLAP_LIBS) -o simple-md5sum
 
 version.tex:
        @echo "\\newcommand{\\projectversion}{$(VERSION)}" 
>$(SRCDIR)/documentation/config/version.tex
 
 manual: version.tex
        @echo "Producing user manual... "
-       @$(MAKE) --no-print-directory -C documentation/user-manual manual.pdf
+       $(MAKE) --no-print-directory -C documentation/user-manual manual.pdf
 
 manualclean:
        @echo "Removing temporary user manual files... "
-       @$(MAKE) --no-print-directory -C documentation/user-manual clean
+       $(MAKE) --no-print-directory -C documentation/user-manual clean
 
 
 # Some usage info
@@ -259,13 +259,13 @@ uninstall:
 
 archclean: distclean
        @echo "Removing rebuildable documentation parts"
-       @$(MAKE) --no-print-directory -C $(SRCDIR)/documentation/codec-specs 
archclean
-       @$(MAKE) --no-print-directory -C $(SRCDIR)/documentation/user-manual 
archclean
+       $(MAKE) --no-print-directory -C $(SRCDIR)/documentation/codec-specs 
archclean
+       $(MAKE) --no-print-directory -C $(SRCDIR)/documentation/user-manual 
archclean
 
 distclean: clean
        @echo "Removing configuration files"
-       @rm -f configure.log Makefile.config GNUmakefile locale/Makefile
-       @for i in locale/?? locale/??_??; do rm -rf $$i; done
+       rm -f configure.log Makefile.config GNUmakefile locale/Makefile
+       for i in locale/?? locale/??_??; do rm -rf $$i; done
        @echo "all:" >>GNUmakefile
        @echo -e "\t@echo" >>GNUmakefile
        @echo -e "\t@echo \"Please create a Makefile by entering \\\"bash 
configure\\\" first\"" >>GNUmakefile
@@ -277,14 +277,14 @@ distclean: clean
 
 clean:
        @echo "Removing rebuildable files"
-       @rm -rf *.o $(BUILDTMP)/*.o medium.* abbild.* dvdisaster .dvdisaster 
core core.* *.core
-       @rm -f inlined-icons.h help-dialogs.h
-       @find . -name \*\~ -print | xargs rm -f;
-       @find . -name \*.mo -print | xargs rm -f;
-       @find . -name \#\*\# -print | xargs rm -f;
-       @rm -f documentation/config/version.tex
-       @if test -e $(PKGNAME); then rm -rf $(PKGNAME); fi
-       @if test -e ~/.dvdisaster-original-author; then \
+       rm -rf *.o $(BUILDTMP)/*.o medium.* abbild.* dvdisaster .dvdisaster 
core core.* *.core
+       rm -f inlined-icons.h help-dialogs.h
+       find . -name \*\~ -print | xargs rm -f;
+       find . -name \*.mo -print | xargs rm -f;
+       find . -name \#\*\# -print | xargs rm -f;
+       rm -f documentation/config/version.tex
+       if test -e $(PKGNAME); then rm -rf $(PKGNAME); fi
+       if test -e ~/.dvdisaster-original-author; then \
          mv build.h build.saved ;\
          if ! test -x simple-md5sum || ! ./simple-md5sum >/dev/null 2>&1; then 
\
            rm -f simple-md5sum; \
@@ -294,20 +294,17 @@ clean:
          ./simple-md5sum -b *.h *.c >fingerprints.md5 ;\
          mv build.saved build.h; \
        fi
-       @rm -f simple-md5sum
-       @$(MAKE) --no-print-directory -C $(SRCDIR)/documentation/codec-specs 
clean;
-       @$(MAKE) --no-print-directory -C $(SRCDIR)/documentation/user-manual 
clean;
+       rm -f simple-md5sum
+       $(MAKE) --no-print-directory -C $(SRCDIR)/documentation/codec-specs 
clean;
+       $(MAKE) --no-print-directory -C $(SRCDIR)/documentation/user-manual 
clean;
 
 BUILD=`grep BUILD $(SRCDIR)/build.h | cut -d ' ' -f 3`
 arch:  archclean time-stamp
-       @cd .. ; tar -c -z -f $(TAR_PREFIX)/$(PKGNAME)-$(BUILD).tgz $(PKGNAME)
+       cd .. ; tar -c -z -f $(TAR_PREFIX)/$(PKGNAME)-$(BUILD).tgz $(PKGNAME)
 
 INSTALL: documentation/install.template
-       @sed "s/@@PKGNAME/$(PKGNAME)/" <documentation/install.template >INSTALL
+       sed "s/@@PKGNAME/$(PKGNAME)/" <documentation/install.template >INSTALL
 
 srcdist: INSTALL distclean manual manualclean
-       @cd .. ; tar -c -j -X $(PKGNAME)/NODIST -f 
$(TAR_PREFIX)/$(PKGNAME).tar.bz2 $(PKGNAME)
-       @cd .. ; gpg --homedir .gnupg --default-key 758BCC23 --detach-sign 
--output $(TAR_PREFIX)/$(PKGNAME).tar.bz2.gpg --armor 
$(TAR_PREFIX)/$(PKGNAME).tar.bz2 
-
-
-
+       cd .. ; tar -c -j -X $(PKGNAME)/NODIST -f 
$(TAR_PREFIX)/$(PKGNAME).tar.bz2 $(PKGNAME)
+       cd .. ; gpg --homedir .gnupg --default-key 758BCC23 --detach-sign 
--output $(TAR_PREFIX)/$(PKGNAME).tar.bz2.gpg --armor 
$(TAR_PREFIX)/$(PKGNAME).tar.bz2
++++++ 34-gcc8-format-security.patch ++++++
From: Carlos Maddela <e7ap...@gmail.com>
Date: Thu, 31 Jan 2019 05:10:21 +1100
Subject: Fix format security warning in GCC-8.

Description: Fix format security warning in GCC-8.
Author: Carlos Maddela <e7ap...@gmail.com>
Forwarded: no
Last-Update: 2019-01-31
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 udf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/udf.c b/udf.c
index 174fa36..9e345c2 100644
--- a/udf.c
+++ b/udf.c
@@ -794,7 +794,7 @@ void FreeIsoHeader(IsoHeader *ih)
 
 void AddFile(IsoHeader *ih, char *name, guint64 size)
 {  static int n;
-   char iso[20], joliet[strlen(name)+3];
+   char iso[22], joliet[strlen(name)+3];
 
    n++;
    sprintf(iso,"RAN_%04d.DAT;1", n);
++++++ 37-suggest-dvdisaster-doc.patch ++++++
From: Carlos Maddela <e7ap...@gmail.com>
Date: Sat, 2 Feb 2019 13:56:04 +1100
Subject: Suggest to install dvdisaster-doc in error message

Description: Suggest to install dvdisaster-doc in error message
 if the PDF manual cannot be found.
Author: Carlos Maddela <e7ap...@gmail.com>
Forwarded: not-needed
Last-Update: 2019-02-02
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---
 locale/cs.po    | 2 ++
 locale/de.po    | 2 ++
 locale/it.po    | 2 ++
 locale/pt_BR.po | 2 ++
 locale/ru.po    | 2 ++
 locale/sv.po    | 2 ++
 show-manual.c   | 3 ++-
 7 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/locale/cs.po b/locale/cs.po
index d89ff4a..b55c45a 100644
--- a/locale/cs.po
+++ b/locale/cs.po
@@ -6077,10 +6077,12 @@ msgid ""
 "Documentation file\n"
 "%s\n"
 "not found.\n"
+"Please install the dvdisaster-doc package.\n"
 msgstr ""
 "Soubor dokumentace\n"
 "%s\n"
 "nebyl nalezen.\n"
+"Nainstalujte prosím balíček dvdisaster-doc.\n"
 
 #: show-manual.c:308
 msgid "Please hang on until the viewer comes up!"
diff --git a/locale/de.po b/locale/de.po
index 8112b13..f54b083 100644
--- a/locale/de.po
+++ b/locale/de.po
@@ -6226,10 +6226,12 @@ msgid ""
 "Documentation file\n"
 "%s\n"
 "not found.\n"
+"Please install the dvdisaster-doc package.\n"
 msgstr ""
 "Dokument-Datei\n"
 "%s\n"
 "nicht gefunden.\n"
+"Bitte installieren Sie das dvdisaster-doc-Paket.\n"
 
 #: show-manual.c:308
 msgid "Please hang on until the viewer comes up!"
diff --git a/locale/it.po b/locale/it.po
index b98f8d3..de60016 100644
--- a/locale/it.po
+++ b/locale/it.po
@@ -5629,10 +5629,12 @@ msgid ""
 "Documentation file\n"
 "%s\n"
 "not found.\n"
+"Please install the dvdisaster-doc package.\n"
 msgstr ""
 "File di documentazione\n"
 "%s\n"
 "non trovati.\n"
+"Si prega di installare il pacchetto dvdisaster-doc.\n"
 
 #: show-manual.c:308
 msgid "Please hang on until the viewer comes up!"
diff --git a/locale/pt_BR.po b/locale/pt_BR.po
index 81ee14d..3659f11 100644
--- a/locale/pt_BR.po
+++ b/locale/pt_BR.po
@@ -5950,10 +5950,12 @@ msgid ""
 "Documentation file\n"
 "%s\n"
 "not found.\n"
+"Please install the dvdisaster-doc package.\n"
 msgstr ""
 "Arquivo de documentação\n"
 "%s\n"
 "não encontrado.\n"
+"Por favor, instale o pacote dvdisaster-doc.\n"
 
 #: show-manual.c:308
 msgid "Please hang on until the viewer comes up!"
diff --git a/locale/ru.po b/locale/ru.po
index 6e980b9..9c45692 100644
--- a/locale/ru.po
+++ b/locale/ru.po
@@ -5958,10 +5958,12 @@ msgid ""
 "Documentation file\n"
 "%s\n"
 "not found.\n"
+"Please install the dvdisaster-doc package.\n"
 msgstr ""
 "Файл документации\n"
 "%s\n"
 "не найден.\n"
+"Пожалуйста, установите пакет dvdisaster-doc.\n"
 
 #: show-manual.c:308
 msgid "Please hang on until the viewer comes up!"
diff --git a/locale/sv.po b/locale/sv.po
index 3011969..9cee323 100644
--- a/locale/sv.po
+++ b/locale/sv.po
@@ -5648,10 +5648,12 @@ msgid ""
 "Documentation file\n"
 "%s\n"
 "not found.\n"
+"Please install the dvdisaster-doc package.\n"
 msgstr ""
 "Dokumentationsfilen\n"
 "%s\n"
 "hittades inte.\n"
+"Installera dvdisaster-doc-paketet.\n"
 
 #: show-manual.c:308
 msgid "Please hang on until the viewer comes up!"
diff --git a/show-manual.c b/show-manual.c
index 4abbe97..5ac8e97 100644
--- a/show-manual.c
+++ b/show-manual.c
@@ -296,7 +296,8 @@ void ShowPDF(char *target)
 
    if(!LargeStat(bi->path, &ignore))
    {  
-      CreateMessage(_("Documentation file\n%s\nnot found.\n"), 
GTK_MESSAGE_ERROR, bi->path);
+      CreateMessage(_("Documentation file\n%s\nnot found.\n"
+              "Please install the dvdisaster-doc package.\n"), 
GTK_MESSAGE_ERROR, bi->path);
       g_free(bi->path);
       g_free(bi);
       return;
++++++ dvdisaster-findmake.patch ++++++
--- /var/tmp/diff_new_pack.vJHFQa/_old  2020-07-03 00:07:26.283078352 +0200
+++ /var/tmp/diff_new_pack.vJHFQa/_new  2020-07-03 00:07:26.283078352 +0200
@@ -1,7 +1,7 @@
 Index: scripts/bash-based-configure
 ===================================================================
---- scripts/bash-based-configure.orig  2015-12-07 22:06:50.000000000 +0200
-+++ scripts/bash-based-configure       2017-01-06 08:33:06.361854198 +0200
+--- a/scripts/bash-based-configure.orig        2015-12-07 22:06:50.000000000 
+0200
++++ b/scripts/bash-based-configure     2017-01-06 08:33:06.361854198 +0200
 @@ -1,3 +1,4 @@
 +#!/bin/bash
  #  Bash based configure - library of test functions

++++++ dvdisaster-no-tex.patch ++++++
Index: dvdisaster-0.79.6/GNUmakefile.template
===================================================================
--- dvdisaster-0.79.6.orig/GNUmakefile.template 2020-06-05 14:14:02.994769910 
+0200
+++ dvdisaster-0.79.6/GNUmakefile.template      2020-06-05 14:45:33.864641460 
+0200
@@ -67,19 +67,16 @@ OFILES = $(CFG_OFILES)
 # Compilation related
 ######################################################################
 
-.PHONY : all help show locale time-stamp
+.PHONY : all help show locale
 
 ${BUILDTMP}/%.o : %.c
        @echo "Compiling:" $?
        $(CC) $(COPTS) -c $? -o $@
 
-all: time-stamp dvdisaster
+all: dvdisaster
 
 # Building the dvdisaster binary
 
-time-stamp:
-       $(SRCDIR)/scripts/time-stamper.bash $(SRCDIR)/build.h
-
 dvdisaster: inlined-icons.h $(OFILES) 
        @echo "Linking  : dvdisaster"
        $(CC) $(LOPTS) $(OFILES) $(LIBS) -o dvdisaster
@@ -140,13 +137,6 @@ untranslated:
 simple-md5sum: md5.c
        $(CC) $(COPTS) $(MUDFLAP_CFLAGS) -DSIMPLE_MD5SUM md5.c 
$(MUDFLAP_LFLAGS) $(MUDFLAP_LIBS) -o simple-md5sum
 
-version.tex:
-       @echo "\\newcommand{\\projectversion}{$(VERSION)}" 
>$(SRCDIR)/documentation/config/version.tex
-
-manual: version.tex
-       @echo "Producing user manual... "
-       $(MAKE) --no-print-directory -C documentation/user-manual manual.pdf
-
 manualclean:
        @echo "Removing temporary user manual files... "
        $(MAKE) --no-print-directory -C documentation/user-manual clean
@@ -223,7 +213,7 @@ show:
 .PHONY : install uninstall clean distclean arch
 .PHONY : srcdist
 
-install: dvdisaster manual
+install: dvdisaster
        @echo "Installing package..."
        install -d $(BUILDROOT)$(BINDIR)
        install dvdisaster $(BUILDROOT)$(BINDIR)
@@ -300,7 +290,7 @@ clean:
        $(MAKE) --no-print-directory -C $(SRCDIR)/documentation/user-manual 
clean;
 
 BUILD=`grep BUILD $(SRCDIR)/build.h | cut -d ' ' -f 3`
-arch:  archclean time-stamp
+arch:  archclean
        cd .. ; tar -c -z -f $(TAR_PREFIX)/$(PKGNAME)-$(BUILD).tgz $(PKGNAME)
 
 INSTALL: documentation/install.template

Reply via email to