Hello community,

here is the log from the commit of package libburn for openSUSE:Factory checked 
in at 2018-11-06 14:11:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libburn (Old)
 and      /work/SRC/openSUSE:Factory/.libburn.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libburn"

Tue Nov  6 14:11:49 2018 rev:5 rq:644500 version:1.5.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/libburn/libburn.changes  2018-02-09 
15:42:09.423000934 +0100
+++ /work/SRC/openSUSE:Factory/.libburn.new/libburn.changes     2018-11-06 
14:11:54.374860120 +0100
@@ -1,0 +2,8 @@
+Wed Oct 24 15:58:10 UTC 2018 - [email protected]
+
+- Update to 1.5.0:
+  * User defined padding was moved after appended partitions
+  * xorriso and libisoburn make user of the new xattr capability of libisofs
+  * libburn got some rarely triggered bugs fixed
+
+-------------------------------------------------------------------

Old:
----
  libburn-1.4.8.tar.gz

New:
----
  libburn-1.5.0.tar.gz

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

Other differences:
------------------
++++++ libburn.spec ++++++
--- /var/tmp/diff_new_pack.JknMcs/_old  2018-11-06 14:11:57.430856078 +0100
+++ /var/tmp/diff_new_pack.JknMcs/_new  2018-11-06 14:11:57.434856073 +0100
@@ -12,16 +12,16 @@
 # 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/
 #
 
 
 %define so_ver 4
 Name:           libburn
-Version:        1.4.8
+Version:        1.5.0
 Release:        0
 Summary:        Library for Writing Preformatted Data onto Optical Media
-License:        GPL-2.0+
+License:        GPL-2.0-or-later
 Group:          Productivity/Multimedia/CD/Record
 Url:            http://libburnia-project.org/
 Source0:        
http://files.libburnia-project.org/releases/%{name}-%{version}.tar.gz

++++++ libburn-1.4.8.tar.gz -> libburn-1.5.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/ChangeLog new/libburn-1.5.0/ChangeLog
--- old/libburn-1.4.8/ChangeLog 2017-09-12 13:39:09.000000000 +0200
+++ new/libburn-1.5.0/ChangeLog 2018-09-15 11:58:54.000000000 +0200
@@ -1,3 +1,12 @@
+libburn-1.5.0.tar.gz Sat Sep 15 2018
+===============================================================================
+* Bug fix: cdrskin threw errno 22 on data file input if libburn is
+           configured with --enable-track-src-odirect
+* Bug fix: SIGSEGV could happen if a track ended by reaching its fixed size
+           while the track source still was willing to deliver bytes.
+           Thanks to user swordragon.
+* Bug fix: Device file comparison parameters were recorded wrong with Linux sg
+
 libburn-1.4.8.tar.gz Tue Sep 12 2017
 ===============================================================================
 * Bug fix: Option -dummy did not affect writing by direct_write_amount=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/Makefile.am 
new/libburn-1.5.0/Makefile.am
--- old/libburn-1.4.8/Makefile.am       2017-09-12 13:31:27.000000000 +0200
+++ new/libburn-1.5.0/Makefile.am       2018-09-15 11:43:56.000000000 +0200
@@ -114,9 +114,9 @@
 test_poll_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
 test_poll_SOURCES = test/poll.c
 
-##  cdrskin construction site - ts A60816 - B70912
+##  cdrskin construction site - ts A60816 - B80915
 cdrskin_cdrskin_CPPFLAGS = -Ilibburn
-cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_1_4_8
+cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_1_5_0
 
 # cdrskin_cdrskin_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
 # ts A80123, change proposed by Simon Huggins to cause dynamic libburn linking
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/Makefile.in 
new/libburn-1.5.0/Makefile.in
--- old/libburn-1.4.8/Makefile.in       2017-09-12 15:14:07.000000000 +0200
+++ new/libburn-1.5.0/Makefile.in       2018-09-15 13:55:33.000000000 +0200
@@ -518,7 +518,7 @@
 test_poll_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
 test_poll_SOURCES = test/poll.c
 cdrskin_cdrskin_CPPFLAGS = -Ilibburn
-cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_1_4_8
+cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_1_5_0
 
 # cdrskin_cdrskin_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
 # ts A80123, change proposed by Simon Huggins to cause dynamic libburn linking
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/README new/libburn-1.5.0/README
--- old/libburn-1.4.8/README    2017-09-12 13:32:58.000000000 +0200
+++ new/libburn-1.5.0/README    2018-09-15 11:46:10.000000000 +0200
@@ -6,12 +6,12 @@
 ------------------------------------------------------------------------------
 libburnia-project.org
 By Mario Danic <[email protected]> and Thomas Schmitt <[email protected]>
-Copyright (C) 2006-2017 Mario Danic, Thomas Schmitt
+Copyright (C) 2006-2018 Mario Danic, Thomas Schmitt
 Still containing parts of Libburn. By Derek Foreman <[email protected]>
 and Ben Jansens <[email protected]>
 Copyright (C) 2002-2006  Derek Foreman and Ben Jansens
 
-     http://files.libburnia-project.org/releases/libburn-1.4.8.tar.gz
+     http://files.libburnia-project.org/releases/libburn-1.5.0.tar.gz
 
 ------------------------------------------------------------------------------
 
@@ -19,10 +19,10 @@
 
                                 From tarball
 
-Obtain libburn-1.4.8.tar.gz, take it to a directory of your choice and do:
+Obtain libburn-1.5.0.tar.gz, take it to a directory of your choice and do:
 
-   tar xzf libburn-1.4.8.tar.gz
-   cd libburn-1.4.8
+   tar xzf libburn-1.5.0.tar.gz
+   cd libburn-1.5.0
    ./configure --prefix=/usr
    make
 
@@ -773,10 +773,16 @@
 - Tue Sep 12 2017 release 1.4.8:
   libburn now refuses to write to SRM+POW formatted BD-R, because it would
   spoil them. libisofs got several bugs fixed and offers new API calls to
-  supoort new xorriso features. libisoburn and xorriso offer more detail
+  support new xorriso features. libisoburn and xorriso offer more detail
   control with particular boot sector types. New bugs and a regression from
   version 1.4.4 were fixed.
 
+- Sat Sep 15 2018 release 1.5.0
+  libisofs now can record all xattr namespaces, user defined padding was moved
+  after appended partitions. libisoburn and xorriso make use of the new xattr
+  capability of libisofs.
+  All three libraries got some rarely triggered bugs fixed.
+
 
 ------------------------------------------------------------------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/cdrskin/README 
new/libburn-1.5.0/cdrskin/README
--- old/libburn-1.4.8/cdrskin/README    2017-09-12 13:34:20.000000000 +0200
+++ new/libburn-1.5.0/cdrskin/README    2018-09-15 11:49:12.000000000 +0200
@@ -4,9 +4,9 @@
 cdrskin. By Thomas Schmitt <[email protected]>
 Integrated sub project of libburnia-project.org but also published via:
 http://scdbackup.sourceforge.net/cdrskin_eng.html
-http://scdbackup.sourceforge.net/cdrskin-1.4.8.tar.gz
+http://scdbackup.sourceforge.net/cdrskin-1.5.0.tar.gz
 
-Copyright (C) 2006-2017 Thomas Schmitt, provided under GPL version 2 or later.
+Copyright (C) 2006-2018 Thomas Schmitt, provided under GPL version 2 or later.
 ------------------------------------------------------------------------------
 
 
@@ -15,7 +15,7 @@
 
 Currently it is fully supported on GNU/Linux with kernels >= 2.4, on FreeBSD,
 on OpenSolaris, and on NetBSD.
-IDE drives under Linux 2.4. need kernel module ide-scsi.
+IDE drives under Linux 2.4 need kernel module ide-scsi.
 ATA and SATA drives under FreeBSD need kernel module atapicam.
 On other X/Open compliant systems there will only be emulated drives, but no
 direct MMC operation on real CD/DVD/BD drives.
@@ -26,10 +26,10 @@
 
                    Compilation, First Glimpse, Installation
 
-Obtain cdrskin-1.4.8.tar.gz, take it to a directory of your choice and do:
+Obtain cdrskin-1.5.0.tar.gz, take it to a directory of your choice and do:
 
-    tar xzf cdrskin-1.4.8.tar.gz
-    cd cdrskin-1.4.8
+    tar xzf cdrskin-1.5.0.tar.gz
+    cd cdrskin-1.5.0
 
 Within that directory execute:
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/cdrskin/cdrfifo.c 
new/libburn-1.5.0/cdrskin/cdrfifo.c
--- old/libburn-1.4.8/cdrskin/cdrfifo.c 2016-11-13 09:29:44.000000000 +0100
+++ new/libburn-1.5.0/cdrskin/cdrfifo.c 2018-09-06 12:03:40.000000000 +0200
@@ -26,8 +26,9 @@
 #include <sys/select.h>
 
 #ifndef Cdrfifo_standalonE
-/* <<< until release of 0.7.4 : for Libburn_has_open_trac_srC */
+/* for burn_os_alloc_buffer() */
 #include "../libburn/libburn.h"
+#define Libburn_has_open_trac_srC 1
 #endif
 
 #include "cdrfifo.h"
@@ -107,6 +108,9 @@
  /* index of currently active (i.e. reading) follow-up */
  int follow_up_fd_idx;
 
+ /* short read encountered, take subsequent errno 22 with O_DIRECT as EOF */
+ int o_direct_was_short;
+
 
  /* (simultaneous) peer chaining */
  struct CdrfifO *next;
@@ -177,6 +181,7 @@
  }
  o->follow_up_fd_counter= 0;
  o->follow_up_fd_idx= -1;
+ o->o_direct_was_short= 0;
  o->next= o->prev= NULL;
  o->chain_idx= 0;
 
@@ -696,8 +701,17 @@
    else if(can_read < Cdrfifo_o_direct_chunK)
      can_read= -1;
    ret= 0;
-   if(can_read>0)
+   if(can_read>0) {
      ret= read(o->source_fd,o->buffer+o->write_idx,can_read);
+     if(ret > 0) {
+       if(ret < can_read) {
+         /* Probably EOF. Prepare for errno = 22 in the next read. */
+         o->o_direct_was_short= 1;
+       } else {
+         o->o_direct_was_short= 0;
+       }
+     }
+   }
    if(can_read < 0) {
      /* waiting for a full Cdrfifo_o_direct_chunK to fit */
      if(can_write <= 0 && o->dest_fd >= 0) {
@@ -731,6 +745,8 @@
 #endif /* ! Libburn_has_open_trac_srC */
 
    if(ret==-1) {
+     if(o->o_direct_was_short && errno == 22)
+       goto have_eof;
 
      /* >>> handle input error */;
      fprintf(stderr,"\ncdrfifo %d: on read: errno=%d , \"%s\"\n",
@@ -739,6 +755,7 @@
 
      o->source_fd= -1;
    } else if(ret==0) { /* eof */
+have_eof:;
      /* activate eventual follow-up source fd */
      if(Cdrfifo_debuG || (flag&1))
        fprintf(stderr,"\ncdrfifo %d: on read(%d,buffer,%d): eof\n",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/cdrskin/cdrskin.1 
new/libburn-1.5.0/cdrskin/cdrskin.1
--- old/libburn-1.4.8/cdrskin/cdrskin.1 2017-09-12 13:33:53.000000000 +0200
+++ new/libburn-1.5.0/cdrskin/cdrskin.1 2018-09-15 11:48:42.000000000 +0200
@@ -2,7 +2,7 @@
 .\" First parameter, NAME, should be all caps
 .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
 .\" other parameters are allowed: see man(7), man(1)
-.TH CDRSKIN 1 "Version 1.4.7, Sep 12, 2017"
+.TH CDRSKIN 1 "Version 1.5.0, Sep 15, 2018"
 .\" Please adjust this date whenever revising the manpage.
 .\"
 .\" Some roff macros, for reference:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/cdrskin/cdrskin.c 
new/libburn-1.5.0/cdrskin/cdrskin.c
--- old/libburn-1.4.8/cdrskin/cdrskin.c 2017-09-12 13:33:45.000000000 +0200
+++ new/libburn-1.5.0/cdrskin/cdrskin.c 2018-09-15 13:29:04.000000000 +0200
@@ -1,6 +1,6 @@
 
 /*
- cdrskin.c , Copyright 2006-2017 Thomas Schmitt <[email protected]>
+ cdrskin.c , Copyright 2006-2018 Thomas Schmitt <[email protected]>
 Provided under GPL version 2 or later.
 
 A cdrecord compatible command line interface for libburn.
@@ -87,7 +87,7 @@
 
 /** The official program version */
 #ifndef Cdrskin_prog_versioN
-#define Cdrskin_prog_versioN "1.4.8"
+#define Cdrskin_prog_versioN "1.5.0"
 #endif
 
 /** The official libburn interface revision to use.
@@ -97,10 +97,10 @@
 #define Cdrskin_libburn_majoR 1
 #endif
 #ifndef Cdrskin_libburn_minoR
-#define Cdrskin_libburn_minoR 4
+#define Cdrskin_libburn_minoR 5
 #endif
 #ifndef Cdrskin_libburn_micrO
-#define Cdrskin_libburn_micrO 8
+#define Cdrskin_libburn_micrO 0
 #endif
 
 
@@ -120,34 +120,34 @@
 #undef Cdrskin_libburn_versioN 
 #endif
 
-#ifdef Cdrskin_libburn_1_4_8
-#define Cdrskin_libburn_versioN "1.4.8"
+#ifdef Cdrskin_libburn_1_5_0
+#define Cdrskin_libburn_versioN "1.5.0"
 #endif
 
-#ifdef Cdrskin_libburn_1_4_9
-#define Cdrskin_libburn_versioN "1.4.9"
+#ifdef Cdrskin_libburn_1_5_1
+#define Cdrskin_libburn_versioN "1.5.1"
 #endif
 
 #ifndef Cdrskin_libburn_versioN
-#define Cdrskin_libburn_1_4_8
-#define Cdrskin_libburn_versioN "1.4.8"
+#define Cdrskin_libburn_1_5_0
+#define Cdrskin_libburn_versioN "1.5.0"
 #endif
 
-#ifdef Cdrskin_libburn_1_4_8
+#ifdef Cdrskin_libburn_1_5_0
 #undef Cdrskin_libburn_majoR
 #undef Cdrskin_libburn_minoR
 #undef Cdrskin_libburn_micrO
 #define Cdrskin_libburn_majoR 1
-#define Cdrskin_libburn_minoR 4
-#define Cdrskin_libburn_micrO 8
+#define Cdrskin_libburn_minoR 5
+#define Cdrskin_libburn_micrO 0
 #endif
-#ifdef Cdrskin_libburn_1_4_9
+#ifdef Cdrskin_libburn_1_5_1
 #undef Cdrskin_libburn_majoR
 #undef Cdrskin_libburn_minoR
 #undef Cdrskin_libburn_micrO
 #define Cdrskin_libburn_majoR 1
-#define Cdrskin_libburn_minoR 4
-#define Cdrskin_libburn_micrO 9
+#define Cdrskin_libburn_minoR 5
+#define Cdrskin_libburn_micrO 1
 #endif
 
 
@@ -1318,6 +1318,7 @@
                 bit1=open as source for direct write: 
                      no audio extract, no minimum track size
                 bit2=permission to use burn_os_open_track_src() (evtl O_DIRECT)
+                bit3=This is a CD. Enforce minimum track size if not bit1.
     @return <=0 error, 1 success
 */
 int Cdrtrack_open_source_path(struct CdrtracK *track, int *fd, int flag)
@@ -1430,7 +1431,7 @@
 
  track->source_fd= *fd;
  if(track->fixed_size < Cdrtrack_minimum_sizE * track->sector_size
-    && (track->fixed_size>0 || size_from_file) && !(flag&2)) {
+    && (track->fixed_size>0 || size_from_file) && (flag & 8) && !(flag&2)) {
    if(track->track_type == BURN_AUDIO) {
      /* >>> cdrecord: We differ in automatic padding with audio:
        Audio tracks must be at least 705600 bytes and a multiple of 2352.
@@ -1461,6 +1462,8 @@
                 bit1= Do not create and attach a new fifo 
                       but attach new follow-up fd pair to previous_fifo
                 bit2= Do not enforce fixed_size if not container extraction
+                bit3= This is a CD. Enforce minimum track size.
+                      (Forward to Cdrtrack_open_source_path)
     @return <=0 error, 1 success
 */
 int Cdrtrack_attach_fifo(struct CdrtracK *track, int *outlet_fd, 
@@ -1473,7 +1476,7 @@
  if(track->fifo_size<=0)
    return(2);
  ret= Cdrtrack_open_source_path(track,&source_fd,
-                            (flag&1) | (4 * (track->fifo_size >= 256 * 1024)));
+                    (flag & (1 | 8)) | (4 * (track->fifo_size >= 256 * 1024)));
  if(ret<=0)
    return(ret);
  if(pipe(pipe_fds)==-1)
@@ -1701,6 +1704,7 @@
  bit0= debugging verbosity
  bit1= apply padding hack (<<< should be unused for now)
  bit2= permission to use O_DIRECT (if enabled at compile time)
+ bit3= This is a CD. (Forward to Cdrtrack_open_source_path)
 */
 {
  struct burn_track *tr;
@@ -1723,7 +1727,7 @@
 
  /* Note: track->track_type may get set in here */
  if(track->source_fd==-1) {
-   ret= Cdrtrack_open_source_path(track, &source_fd, flag & (4 | 1));
+   ret= Cdrtrack_open_source_path(track, &source_fd, flag & (8 | 4 | 1));
    if(ret<=0)
      goto ex;
  }
@@ -3906,9 +3910,6 @@
 {
  struct CdrfifO *ff= NULL;
  int ret,i,hflag;
-
-#ifdef Cdrskin_use_libburn_fifO
-
  int profile_number;
  char profile_name[80];
 
@@ -3916,9 +3917,12 @@
  if(ret <= 0)
    return(ret);
 
- /* Refuse here and thus use libburn fifo only with single track, non-CD */
  ret= burn_disc_get_profile(skin->drives[skin->driveno].drive,
                             &profile_number, profile_name);
+
+#ifdef Cdrskin_use_libburn_fifO
+
+ /* Refuse here and thus use libburn fifo only with single track, non-CD */
  if(profile_number != 0x09 && profile_number != 0x0a &&
     skin->track_counter == 1)
    return(1);
@@ -3927,7 +3931,8 @@
 
  skin->fifo= NULL;
  for(i=0;i<skin->track_counter;i++) {
-   hflag= (skin->verbosity>=Cdrskin_verbose_debuG);
+   hflag= (skin->verbosity>=Cdrskin_verbose_debuG) |
+          ((profile_number == 0x09 || profile_number == 0x0a) << 3);
    if(i==skin->track_counter-1)
      hflag|= 4;
    if(skin->verbosity>=Cdrskin_verbose_cmD) {
@@ -7324,14 +7329,14 @@
  int source_fd, is_from_stdin;
  int text_flag= 4; /* Check CRCs and silently repair CRCs if all are 0 */
  unsigned char *text_packs= NULL;
- int num_packs= 0, start_block, block_no;
+ int num_packs= 0, start_block, block_no, profile_number;
 
 #ifndef Cdrskin_no_cdrfifO
  double put_counter, get_counter, empty_counter, full_counter;
  int total_min_fill, fifo_percent;
 #endif
  off_t free_space;
- char msg[80];
+ char msg[80], profile_name[80];
 
  if(skin->tell_media_space)
    doing= "estimating";
@@ -7351,6 +7356,7 @@
  s= burn_disc_get_status(drive);
  if(skin->verbosity>=Cdrskin_verbose_progresS)
    Cdrskin_report_disc_status(skin,s,1);
+ burn_disc_get_profile(drive, &profile_number, profile_name);
 
  disc= burn_disc_create();
  session= burn_session_create();
@@ -7406,7 +7412,9 @@
 
 /* if(skin->fifo_size >= 256 * 1024) */
 
-       hflag|= 4;
+     hflag|= 4;
+     if(profile_number == 0x09 || profile_number == 0x0a)
+       hflag|= 8;
 
      ret= Cdrtrack_add_to_session(skin->tracklist[i],i,session,hflag);
      if(ret<=0) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/cdrskin/cdrskin_eng.html 
new/libburn-1.5.0/cdrskin/cdrskin_eng.html
--- old/libburn-1.4.8/cdrskin/cdrskin_eng.html  2017-09-12 13:35:25.000000000 
+0200
+++ new/libburn-1.5.0/cdrskin/cdrskin_eng.html  2018-09-15 11:51:26.000000000 
+0200
@@ -67,7 +67,7 @@
 GPL software included:<BR>
 </H2>
 <DL>
-<DT>libburn-1.4.8</DT>
+<DT>libburn-1.5.0</DT>
 <DD>(founded by Derek Foreman and Ben Jansens,
 developed and maintained since August 2006 by
 Thomas Schmitt from team of libburnia-project.org)
@@ -202,13 +202,13 @@
 <P>
 <DL>
 <DT>Download as source code (see README):</DT>
-<DD><A HREF="cdrskin-1.4.8.tar.gz">cdrskin-1.4.8.tar.gz</A>
+<DD><A HREF="cdrskin-1.5.0.tar.gz">cdrskin-1.5.0.tar.gz</A>
 (1060 KB).
 </DD>
-<DD><A HREF="cdrskin-1.4.8.tar.gz.sig">cdrskin-1.4.8.tar.gz.sig</A></DD>
+<DD><A HREF="cdrskin-1.5.0.tar.gz.sig">cdrskin-1.5.0.tar.gz.sig</A></DD>
 <DD>
 (detached GPG signature for verification by
-<KBD>gpg --verify cdrskin-1.4.8.tar.gz.sig cdrskin-1.4.8.tar.gz</KBD>
+<KBD>gpg --verify cdrskin-1.5.0.tar.gz.sig cdrskin-1.5.0.tar.gz</KBD>
 <BR>
 after <KBD>gpg --keyserver keys.gnupg.net --recv-keys ABC0A854</KBD>).
 </DD>
@@ -259,40 +259,49 @@
 <HR>
 
 <P>
-Enhancements towards previous stable version cdrskin-1.4.6:
+Enhancements towards previous stable version cdrskin-1.4.8:
 <UL>
-<LI>Refusing to write to BD-R if formatted to Pseudo Overwrite</LI>
+<LI>none</LI>
 <!--
 <LI>none</LI>
 -->
 </UL>
 
-Bug fixes towards cdrskin-1.4.6:
+Bug fixes towards cdrskin-1.4.8:
 <UL>
-<LI>Option -dummy did not affect writing by direct_write_amount=</LI>
+<LI>
+Device file comparison parameters were recorded wrong with Linux sg
+</LI>
+<LI>
+SIGSEGV could happen if a track ended by reaching its fixed size
+while the track source still was willing to deliver bytes
+</LI>
+<LI>
+cdrskin threw errno 22 on data file input if libburn is
+configured with --enable-track-src-odirect
+</LI>
+</UL>
 <!--
 <LI>none</LI>
 Bug fixes towards cdrskin-1.4.2 (without .pl01):
 <UL>
 </UL>
 -->
-</UL>
 
 <HR>
 
 <P>
 <DL>
-<DT><H3>Development snapshot, version 1.4.9 :</H3></DT>
-<DD>Enhancements towards current stable version 1.4.8:
+<DT><H3>Development snapshot, version 1.5.1 :</H3></DT>
+<DD>Enhancements towards current stable version 1.5.0:
 <UL>
 <LI>none yet</LI>
 <!--
-<LI>none yet</LI>
 -->
 </UL>
 </DD>
 
-<DD>Bug fixes towards cdrskin-1.4.8:
+<DD>Bug fixes towards cdrskin-1.5.0:
 <UL>
 <LI>none yet</LI>
 <!--
@@ -302,10 +311,10 @@
 </DD>
 
 <DD>&nbsp;</DD>
-<DD><A HREF="README_cdrskin_devel">README 1.4.9</A>
-<DD><A HREF="cdrskin__help_devel">cdrskin-1.4.9 --help</A></DD>
-<DD><A HREF="cdrskin_help_devel">cdrskin-1.4.9 -help</A></DD>
-<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 1.4.9)</A></DD>
+<DD><A HREF="README_cdrskin_devel">README 1.5.1</A>
+<DD><A HREF="cdrskin__help_devel">cdrskin-1.5.1 --help</A></DD>
+<DD><A HREF="cdrskin_help_devel">cdrskin-1.5.1 -help</A></DD>
+<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 1.5.1)</A></DD>
 <DD>&nbsp;</DD>
 <DT>Maintainers of cdrskin unstable packages please use SVN of
 <A HREF="http://libburnia-project.org";> libburnia-project.org</A></DT>
@@ -325,7 +334,7 @@
 <A HREF="README_cdrskin_devel">upcoming README</A> ):
 </DD>
 <DD>
-<A HREF="cdrskin-1.4.9.tar.gz">cdrskin-1.4.9.tar.gz</A>
+<A HREF="cdrskin-1.5.1.tar.gz">cdrskin-1.5.1.tar.gz</A>
 (1060 KB).
 </DD>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/cdrskin/cdrskin_timestamp.h 
new/libburn-1.5.0/cdrskin/cdrskin_timestamp.h
--- old/libburn-1.4.8/cdrskin/cdrskin_timestamp.h       2017-09-12 
13:34:49.000000000 +0200
+++ new/libburn-1.5.0/cdrskin/cdrskin_timestamp.h       2018-09-15 
11:50:12.000000000 +0200
@@ -1 +1 @@
-#define Cdrskin_timestamP "2017.09.12.110001"
+#define Cdrskin_timestamP "2018.09.15.083001"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/cdrskin/changelog.txt 
new/libburn-1.5.0/cdrskin/changelog.txt
--- old/libburn-1.4.8/cdrskin/changelog.txt     2017-09-12 13:39:38.000000000 
+0200
+++ new/libburn-1.5.0/cdrskin/changelog.txt     2018-09-15 13:48:19.000000000 
+0200
@@ -13683,7 +13683,7 @@
 + cdrskin/add_ts_changes_to_libburn_1_4_9
 Updated cdrskin tarball generator
 
-12 Sep 2017  []
+12 Sep 2017  [260fc29]
 ChangeLog
 cdrskin/changelog.txt
 Updated change log
@@ -13693,6 +13693,129 @@
 * New API call burn_drive_get_bd_r_pow()
 * Refusing to write to BD-R if formatted to Pseudo Overwrite
 
+13 Sep 2017
+git tag "release-1.4.8"
+
+2017.09.13.075728  [f1fc16b]
+Makefile.am
+configure.ac
+libburn/libburn.h
+cdrskin/cdrskin.c
+cdrskin/cdrskin.1
+cdrskin/README
+cdrskin/cdrskin_timestamp.h
+Made number transition to 1.4.9
+
+13 Sep 2017  [ef0d713]
+ChangeLog
+cdrskin/changelog.txt
+Updated change log
+
+------------------------------------ cycle  - cdrskin-1.4.9 - 2017.09.13.075728
+
+2017.09.16.095011  [2886b82]
+libburn/mmc.c
+Reacted on compiler warning about theoretical overflow of an sprintf
+
+2017.09.16.105142  [99e828c]
+libburn/write.c
+Reacted on compiler warning about theoretical overflow of an sprintf
+
+2017.09.16.105713  [b5b5cc1]
+libburn/write.c
+Reacted on compiler warning about theoretical overflow of an sprintf
+
+2017.12.31.111507  [ef2fa1d]
+libburn/libdax_audioxtr.c
++ doc/waveformat.txt
+Adapting to surplus chunks and subchunks in .wav files
+
+2017.12.31.114757  [95f5b1c]
+libburn/libdax_audioxtr.h
+Added missing header file for previous commit
+
+2018.02.05.103304  [84fad99]
+cdrskin/cdrfifo.c
+Bug fix: cdrskin threw errno 22 on data file input if libburn is configured 
--enable-track-src-odirect
+
+2018.02.05.103650  [c84889b]
+libburn/sg-linux.c
+Reporting in SCSI log when commands get repeated
+
+05 Feb 2018  [e35995b]
+ChangeLog
+cdrskin/cdrskin_eng.html
+cdrskin/changelog.txt
+Updated change log
+
+------------------------------------ cycle  - cdrskin-1.4.9 - 2018.02.05.124100
+* Bug fix: cdrskin threw errno 22 on data file input if libburn is
+           configured with --enable-track-src-odirect
+
+
+2018.08.08.152622  [ff039e8]
+libburn/libdax_msgs.h
+libburn/file.c
+Bug fix: SIGSEGV could happen if a track ended by reaching its fixed size
+         while the track source still was willing to deliver bytes
+
+2018.08.26.141619  [2fe4b3c]
+cdrskin/cdrskin.c
+Restricted enforcement of minimum track size to CD media profiles
+
+2018.09.02.200129  [3fdf118]
+libburn/sg-linux.c
+Bug fix: Device file comparison parameters were recorded wrong with Linux sg
+
+2018.09.06.100353  [d32bb30]
+cdrskin/cdrfifo.c
+With --enable-track-src-odirect, do not report error 22 due to unaligned EOF 
+
+2018.09.15.083001  [c75ad31]
+Makefile.am
+configure.ac
+README
+libburn/libburn.h
+cdrskin/cdrskin.c
+cdrskin/cdrskin.1
+cdrskin/README
+cdrskin/compile_cdrskin.sh
+cdrskin/cdrskin_timestamp.h
+cdrskin/cdrskin_eng.html
+Made number transition to 1.5.0
+
+15 Sep 2018  [255afdd]
+- cdrskin/add_ts_changes_to_libburn_1_4_8
+- cdrskin/add_ts_changes_to_libburn_1_4_9
++ cdrskin/add_ts_changes_to_libburn_1_5_0
++ cdrskin/add_ts_changes_to_libburn_1_5_1
+Updated cdrskin tarball generator
+
+15 Sep 2018  [9ee80ee]
+ChangeLog
+cdrskin/changelog.txt
+Updated change log
+
+15 Sep 2018  [ef3609e]
+cdrskin/cdrskin.c
+cdrskin/changelog.txt
+Fixed a typo that was made during version leap
+
+15 Sep 2018  []
+cdrskin/add_ts_changes_to_libburn_1_5_0
+cdrskin/add_ts_changes_to_libburn_1_5_1
+cdrskin/changelog.txt
+Added to cdrskin standalone scripts a compile run for unite_html_b_line.c
+
+----------------------------------- release - cdrskin-1.5.0 - 2018.09.15.083001
+* Bug fix: cdrskin threw errno 22 on data file input if libburn is
+           configured with --enable-track-src-odirect
+* Bug fix: SIGSEGV could happen if a track ended by reaching its fixed size
+           while the track source still was willing to deliver bytes.
+           Thanks to user swordragon.
+* Bug fix: Device file comparison parameters were recorded wrong with Linux sg
+
+
 
   []
 ChangeLog
@@ -13700,23 +13823,22 @@
 cdrskin/changelog.txt
 Updated change log
 
------------------------------------- cycle  - cdrskin-1.5.0 - 
+------------------------------------ cycle  - cdrskin-1.5.1 - 
 
-  [] []
+  []
 libburn/spc.h
 libburn/spc.c
 libburn/sg-linux.c
 Making commands retryable after particular Linux kernel transport errors
 (currently as libburn/*.[ch].after_1_4_8)
 
-
   []
 ChangeLog
 cdrskin/cdrskin_eng.html
 cdrskin/changelog.txt
 Updated change log
 
------------------------------------- cycle  - cdrskin-1.5.0 - 
+------------------------------------ cycle  - cdrskin-1.5.1 - 
 
 
 **********************************************************************
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/cdrskin/compile_cdrskin.sh 
new/libburn-1.5.0/cdrskin/compile_cdrskin.sh
--- old/libburn-1.4.8/cdrskin/compile_cdrskin.sh        2017-09-12 
13:34:39.000000000 +0200
+++ new/libburn-1.5.0/cdrskin/compile_cdrskin.sh        2018-09-15 
11:50:02.000000000 +0200
@@ -1,14 +1,14 @@
 #!/bin/sh
 
 # compile_cdrskin.sh  
-# Copyright 2005 - 2017 Thomas Schmitt, [email protected], GPL v2 or later
+# Copyright 2005 - 2018 Thomas Schmitt, [email protected], GPL v2 or later
 # to be executed within  ./libburn-*  or./cdrskin-*
 
 debug_opts="-O2"
 def_opts=
 largefile_opts="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1"
 fifo_opts=""
-libvers="-DCdrskin_libburn_1_4_8"
+libvers="-DCdrskin_libburn_1_5_0"
 
 # To be used if Makefile.am uses libburn_libburn_la_CFLAGS
 # burn="libburn/libburn_libburn_la-"
@@ -41,15 +41,15 @@
   elif test "$i" = "-compile_dewav"
   then
     compile_dewav=1
-  elif test "$i" = "-libburn_1_4_8"
+  elif test "$i" = "-libburn_1_5_0"
   then
-    libvers="-DCdrskin_libburn_1_4_8"
+    libvers="-DCdrskin_libburn_1_5_0"
     libdax_audioxtr_o="$burn"libdax_audioxtr.o
     libdax_msgs_o="$burn"libdax_msgs.o
     cleanup_src_or_obj="$burn"cleanup.o
   elif test "$i" = "-libburn_svn"
   then
-    libvers="-DCdrskin_libburn_1_4_9"
+    libvers="-DCdrskin_libburn_1_5_1"
     libdax_audioxtr_o="$burn"libdax_audioxtr.o
     libdax_msgs_o="$burn"libdax_msgs.o
     cleanup_src_or_obj="$burn"cleanup.o
@@ -99,7 +99,7 @@
     echo "Options:"
     echo "  -compile_cdrfifo  compile program cdrskin/cdrfifo."
     echo "  -compile_dewav    compile program test/dewav without libburn."
-    echo "  -libburn_1_4_8    set macro to match libburn-1.4.8"
+    echo "  -libburn_1_5_0    set macro to match libburn-1.5.0"
     echo "  -libburn_svn      set macro to match current libburn-SVN."
     echo "  -dvd_obs_64k      64 KB default size for DVD/BD writing."
     echo "  -use_libcdio      link with -lcdio because libburn uses it."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/configure new/libburn-1.5.0/configure
--- old/libburn-1.4.8/configure 2017-09-12 15:14:07.000000000 +0200
+++ new/libburn-1.5.0/configure 2018-09-15 13:55:33.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libburn 1.4.8.
+# Generated by GNU Autoconf 2.69 for libburn 1.5.0.
 #
 # Report bugs to <http://libburnia-project.org>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='libburn'
 PACKAGE_TARNAME='libburn'
-PACKAGE_VERSION='1.4.8'
-PACKAGE_STRING='libburn 1.4.8'
+PACKAGE_VERSION='1.5.0'
+PACKAGE_STRING='libburn 1.5.0'
 PACKAGE_BUGREPORT='http://libburnia-project.org'
 PACKAGE_URL=''
 
@@ -1357,7 +1357,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libburn 1.4.8 to adapt to many kinds of systems.
+\`configure' configures libburn 1.5.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1428,7 +1428,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libburn 1.4.8:";;
+     short | recursive ) echo "Configuration of libburn 1.5.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1556,7 +1556,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libburn configure 1.4.8
+libburn configure 1.5.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1925,7 +1925,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libburn $as_me 1.4.8, which was
+It was created by libburn $as_me 1.5.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2910,7 +2910,7 @@
 
 # Define the identity of the package.
  PACKAGE='libburn'
- VERSION='1.4.8'
+ VERSION='1.5.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3006,8 +3006,8 @@
 
 
 BURN_MAJOR_VERSION=1
-BURN_MINOR_VERSION=4
-BURN_MICRO_VERSION=8
+BURN_MINOR_VERSION=5
+BURN_MICRO_VERSION=0
 BURN_VERSION=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
 
 
@@ -3016,8 +3016,8 @@
 
 
 LT_RELEASE=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
-LT_CURRENT=105
-LT_AGE=101
+LT_CURRENT=107
+LT_AGE=103
 LT_REVISION=0
 LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
 
@@ -13489,7 +13489,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libburn $as_me 1.4.8, which was
+This file was extended by libburn $as_me 1.5.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -13546,7 +13546,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libburn config.status 1.4.8
+libburn config.status 1.5.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/configure.ac 
new/libburn-1.5.0/configure.ac
--- old/libburn-1.4.8/configure.ac      2017-09-12 13:32:02.000000000 +0200
+++ new/libburn-1.5.0/configure.ac      2018-09-15 11:44:10.000000000 +0200
@@ -1,4 +1,4 @@
-AC_INIT([libburn], [1.4.8], [http://libburnia-project.org])
+AC_INIT([libburn], [1.5.0], [http://libburnia-project.org])
 AC_PREREQ([2.50])
 dnl AC_CONFIG_HEADER([config.h])       
 
@@ -110,6 +110,7 @@
 dnl    1.4.4 = libburn.so.4.97.0
 dnl    1.4.6 = libburn.so.4.99.0
 dnl    1.4.8 = libburn.so.4.101.0
+dnl    1.5.0 = libburn.so.4.103.0
 dnl
 dnl So LT_CURRENT, LT_REVISION and LT_AGE get set directly here.
 dnl SONAME of the emerging library is  LT_CURRENT - LT_AGE.
@@ -134,8 +135,8 @@
 dnl
 dnl As said: Only copies. Original in libburn/libburn.h : burn_header_version_*
 BURN_MAJOR_VERSION=1
-BURN_MINOR_VERSION=4
-BURN_MICRO_VERSION=8
+BURN_MINOR_VERSION=5
+BURN_MICRO_VERSION=0
 BURN_VERSION=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
 
 AC_SUBST(BURN_MAJOR_VERSION)
@@ -146,14 +147,14 @@
 dnl Libtool versioning
 LT_RELEASE=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
 dnl
-dnl This is the release version libburn-1.4.8
+dnl This is the release version libburn-1.5.0
 dnl ### This is the development version after above release version
 dnl LT_CURRENT++, LT_AGE++ has not yet happened.
 dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile.
 dnl
-dnl SONAME = 105 - 101 = 4 . Linux library name = libburn.so.4.101.0
-LT_CURRENT=105
-LT_AGE=101
+dnl SONAME = 107 - 103 = 4 . Linux library name = libburn.so.4.103.0
+LT_CURRENT=107
+LT_AGE=103
 LT_REVISION=0
 LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/libburn/file.c 
new/libburn-1.5.0/libburn/file.c
--- old/libburn-1.4.8/libburn/file.c    2017-01-28 20:46:11.000000000 +0100
+++ new/libburn-1.5.0/libburn/file.c    2018-08-08 17:25:38.000000000 +0200
@@ -331,8 +331,31 @@
 static void fifo_free(struct burn_source *source)
 {
        struct burn_source_fifo *fs = source->data;
+       int wait_count;
+       static int wait_max = 30, wait_usleep = 100000;
 
        burn_fifo_abort(fs, 0);
+       for (wait_count = 0; wait_count <= wait_max; wait_count++) {
+               if (fs->thread_is_valid <= 0)
+       break;
+               if (wait_count < wait_max)
+                       usleep(wait_usleep);
+       }
+       if (wait_count > wait_max) {
+               /* The shoveler thread might still be active. If so, it would
+                  use invalid or inappropriate memory if the fifo would be
+                  disposed now. A memory and resource leak is the better
+                  option here.
+               */
+               libdax_msgs_submit(libdax_messenger, -1,
+                                  0x000201ab,
+                                  LIBDAX_MSGS_SEV_WARNING,
+                                  LIBDAX_MSGS_PRIO_HIGH,
+                                  "Leaving burn_source_fifo object undisposed 
because it is possibly stuck but alive",
+                                  0, 0);
+               return;
+       }
+
        if (fs->inp != NULL)
                burn_source_free(fs->inp);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/libburn/libburn.h 
new/libburn-1.5.0/libburn/libburn.h
--- old/libburn-1.4.8/libburn/libburn.h 2017-09-12 13:33:12.000000000 +0200
+++ new/libburn-1.5.0/libburn/libburn.h 2018-09-15 11:47:36.000000000 +0200
@@ -1,7 +1,7 @@
 /* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */
 
 /* Copyright (c) 2004 - 2006 Derek Foreman, Ben Jansens
-   Copyright (c) 2006 - 2017 Thomas Schmitt <[email protected]>
+   Copyright (c) 2006 - 2018 Thomas Schmitt <[email protected]>
    Provided under GPL version 2 or later.
 
    This is the official API definition of libburn.
@@ -3705,8 +3705,8 @@
 
 */
 #define burn_header_version_major  1
-#define burn_header_version_minor  4
-#define burn_header_version_micro  8
+#define burn_header_version_minor  5
+#define burn_header_version_micro  0
 /** Note:
     Above version numbers are also recorded in configure.ac because libtool
     wants them as parameters at build time.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/libburn/libdax_audioxtr.c 
new/libburn-1.5.0/libburn/libdax_audioxtr.c
--- old/libburn-1.4.8/libburn/libdax_audioxtr.c 2016-11-13 09:29:44.000000000 
+0100
+++ new/libburn-1.5.0/libburn/libdax_audioxtr.c 2017-12-31 11:12:53.000000000 
+0100
@@ -55,6 +55,7 @@
  o->bits_per_sample= 0;
  o->msb_first= 0;
 
+ o->wav_data_location= 44;
  o->wav_subchunk2_size= 0;
 
  o->au_data_location= 0;
@@ -121,47 +122,123 @@
  return(1);
 }
 
+/* @param flag: bit0= sequential file, skip by reading data
+*/
+static int libdax_audioxtr_skip(struct libdax_audioxtr *o,
+                                off_t *old_pos,
+                                off_t pos, int flag)
+{
+ int ret;
+ size_t to_read;
+ static char buf[256]; /* Thread safe because the content does not matter */
+
+ if((flag & 1) || o->fd == 0) { /* stdin */
+   while(pos - *old_pos > 0) {
+     to_read= pos - *old_pos;
+     if(to_read > sizeof(buf))
+       to_read= sizeof(buf);
+     ret= read(o->fd, buf, to_read);
+     if(ret < (int) to_read)
+       return(0);
+     *old_pos+= to_read;
+   }
+ } else {
+   ret= lseek(o->fd, pos, SEEK_SET);
+   if(ret == -1)
+     return(0);
+   *old_pos= pos;
+ }
+ return(1);
+}
 
 static int libdax_audioxtr_identify_wav(struct libdax_audioxtr *o, int flag)
 {
- int ret;
- char buf[45];
+ int ret, fmt_seen= 0, data_seen= 0;
+ off_t pos= 0, old_pos= 0, riff_end= 0;
+ char buf[16];
+ unsigned char *ubuf;
 
  /* check wether this is a MS WAVE file .wav */
- /* info used: http://ccrma.stanford.edu/courses/422/projects/WaveFormat/ */
-
- if(o->fd!=0) {
-   ret= lseek(o->fd,0,SEEK_SET);
-   if(ret==-1)
+ /* info used: http://ccrma.stanford.edu/courses/422/projects/WaveFormat/
+               https://en.wikipedia.org/wiki/WAV
+    see summary in: doc/waveformat.txt
+ */
+ ubuf= (unsigned char *) buf;
+
+ /* Look for ChunkID "RIFF" , tolerate other known chunks */
+ while(1) {
+   ret= libdax_audioxtr_skip(o, &old_pos, pos, 0);
+   if(ret <= 0)
      return(0);
- }
- ret= read(o->fd, buf, 44);
- if(ret<44)
+   ret= read(o->fd, buf, 8);
+   if(ret < 8)
+     return(0);
+   old_pos+= 8;
+   pos= old_pos + libdax_audioxtr_to_int(o, ubuf + 4, 4, 0);
+   if(pos > 0xffffffff || pos - old_pos < 4) /* Too large or no Format word */
+     return(0);
+   if(strncmp(buf, "RIFF", 4) == 0)
+ break;
+   /* Wikipedia mentions these known ChunkId values */
+   if(strncmp(buf, "INFO", 4) == 0 ||
+      strncmp(buf, "CSET", 4) == 0 ||
+      strncmp(buf, "JUNK", 4) == 0 ||
+      strncmp(buf, "PAD ", 4) == 0)
+ continue;
    return(0);
- buf[44]= 0; /* as stopper for any string operations */
+ }
 
- if(strncmp(buf,"RIFF",4)!=0)                                     /* ChunkID */
-   return(0);
- if(strncmp(buf+8,"WAVE",4)!=0)                                    /* Format 
*/ 
-   return(0);
- if(strncmp(buf+12,"fmt ",4)!=0)                              /* Subchunk1ID */
-   return(0);
- if(buf[16]!=16 || buf[17]!=0 || buf[18]!=0 || buf[19]!=0)  /* Subchunk1Size */
-   return(0);
- if(buf[20]!=1 || buf[21]!=0)  /* AudioFormat must be 1 (Linear quantization) 
*/
-   return(0);
+ /* Read RIFF Format header */
+ ret= read(o->fd, buf, 4);
+ if(ret < 4)
+   return(0);
+ old_pos+= 4;
+ if(strncmp(buf, "WAVE", 4) != 0) /* Format */
+   return(0);
+ riff_end= pos;
+
+ /* Look for SubchunkID "fmt " and "data" */
+ pos= old_pos;
+ while(old_pos < riff_end) {
+   ret= libdax_audioxtr_skip(o, &old_pos, pos, 0);
+   if(ret <= 0)
+     return(0);
+   ret= read(o->fd, buf, 8);
+   if(ret < 8)
+     return(0);
+   old_pos= pos + 8;
+   pos= old_pos + libdax_audioxtr_to_int(o, ubuf + 4, 4, 0); /* SubchunkSize */
 
- strcpy(o->fmt,".wav");
- o->msb_first= 0;
- o->num_channels=  libdax_audioxtr_to_int(o,(unsigned char *) buf+22,2,0);
- o->sample_rate= libdax_audioxtr_to_int(o,(unsigned char *) buf+24,4,0);
- o->bits_per_sample= libdax_audioxtr_to_int(o,(unsigned char *)buf+34,2,0);
- sprintf(o->fmt_info,
-         ".wav , num_channels=%d , sample_rate=%d , bits_per_sample=%d",
-         o->num_channels,o->sample_rate,o->bits_per_sample);
- o->wav_subchunk2_size= libdax_audioxtr_to_int(o,(unsigned char *)buf+40,4,0);
- o->data_size= o->wav_subchunk2_size;
- return(1);
+   if(strncmp(buf,"fmt ", 4) == 0) {
+     if(pos - old_pos < 16)
+       return(0);
+     ret= read(o->fd, buf, 16);
+     if(ret < 16)
+       return(0);
+     old_pos+= 16;
+     if(buf[0]!=1 || buf[1]!=0) /* AudioFormat (1 = Linear quantization) */
+       return(0);
+     o->msb_first= 0;
+     o->num_channels= libdax_audioxtr_to_int(o, ubuf + 2 , 2, 0);
+     o->sample_rate= libdax_audioxtr_to_int(o, ubuf + 4, 4, 0);
+     o->bits_per_sample= libdax_audioxtr_to_int(o, ubuf + 14, 2, 0);
+     sprintf(o->fmt_info,
+             ".wav , num_channels=%d , sample_rate=%d , bits_per_sample=%d",
+             o->num_channels, o->sample_rate, o->bits_per_sample);
+     fmt_seen= 1;
+
+   } else if(strncmp(buf,"data", 4) == 0) {
+     o->wav_data_location= old_pos;
+     o->wav_subchunk2_size= pos - old_pos;
+     o->data_size= o->wav_subchunk2_size;
+     data_seen= 1;
+   }
+   if(fmt_seen && data_seen) {
+     strcpy(o->fmt,".wav");
+     return(1);
+   }
+ }
+ return(0);
 }
 
 
@@ -256,7 +333,7 @@
 
  o->extract_count= 0;
  if(strcmp(o->fmt,".wav")==0)
-   ret= lseek(o->fd,44,SEEK_SET);
+   ret= lseek(o->fd, o->wav_data_location, SEEK_SET);
  else if(strcmp(o->fmt,".au")==0)
    ret= lseek(o->fd,o->au_data_location,SEEK_SET);
  else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/libburn/libdax_audioxtr.h 
new/libburn-1.5.0/libburn/libdax_audioxtr.h
--- old/libburn-1.4.8/libburn/libdax_audioxtr.h 2016-11-13 09:29:44.000000000 
+0100
+++ new/libburn-1.5.0/libburn/libdax_audioxtr.h 2017-12-31 12:47:51.000000000 
+0100
@@ -176,7 +176,10 @@
  /* Format dependent parameters */
 
  /* MS WAVE Format */
- /* info used: http://ccrma.stanford.edu/courses/422/projects/WaveFormat/ */
+ /* see description in: doc/waveformat.txt */
+
+ /* Offset to "data" subchunk */
+ unsigned int wav_data_location;
 
  /* == NumSamples * NumChannels * BitsPerSample/8
     This is the number of bytes in the data. */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/libburn/libdax_msgs.h 
new/libburn-1.5.0/libburn/libdax_msgs.h
--- old/libburn-1.4.8/libburn/libdax_msgs.h     2016-11-13 09:29:44.000000000 
+0100
+++ new/libburn-1.5.0/libburn/libdax_msgs.h     2018-08-08 17:18:51.000000000 
+0200
@@ -613,6 +613,7 @@
  0x000201a8 (FAILURE,HIGH) = SCSI command yielded driver problem
  0x000201a9 (FAILURE,HIGH) = Implausible length from GET CONFIGURATION
  0x000201aa (FAILURE,HIGH) = No CD-TEXT packs in file
+ 0x000201ab (WARN,HIGH)    = Leaving burn_source_fifo object undisposed
 
 
  libdax_audioxtr:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/libburn/mmc.c 
new/libburn-1.5.0/libburn/mmc.c
--- old/libburn-1.4.8/libburn/mmc.c     2016-11-18 14:16:58.000000000 +0100
+++ new/libburn-1.5.0/libburn/mmc.c     2017-09-16 11:49:57.000000000 +0200
@@ -3668,7 +3668,7 @@
        int accept_count = 0;
        off_t num_of_blocks = 0, diff, format_size, i_size, format_00_max_size;
        off_t min_size = -1, max_size = -1;
-       char *msg = NULL, descr[80];
+       char *msg = NULL, descr[80 + 10 + 22]; /* profile+filltext+index */
        int key, asc, ascq;
        int full_format_type = 0x00; /* Full Format (or 0x10 for DVD-RW ?) */
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/libburn/sg-linux.c 
new/libburn-1.5.0/libburn/sg-linux.c
--- old/libburn-1.4.8/libburn/sg-linux.c        2016-11-13 09:29:44.000000000 
+0100
+++ new/libburn-1.5.0/libburn/sg-linux.c        2018-09-02 22:01:10.000000000 
+0200
@@ -1041,22 +1041,18 @@
                {ret = 0; goto ex;}
        }
 
-       if (sid_ret == -1 || sid.scsi_id < 0) {
-               /* ts A61211 : employ a more general ioctl */
-               /* ts B11001 : re-use fd */
-               ret = sg_obtain_scsi_adr_fd(fname, fd, bus_no, host_no,
-                                          channel_no, target_no, lun_no);
-               if (ret>0) {
-                       sid.host_no = *host_no;
-                       sid.channel = *channel_no;
-                       sid.scsi_id = *target_no;
-                       sid.lun = *lun_no;
-               } else {
-                       if (linux_sg_enumerate_debug)
-                               fprintf(stderr,
-                                       "sg_obtain_scsi_adr_fd() failed\n");
-                       {ret = 0; goto ex;}
-               }
+       /* ts A61211 : employ a more general ioctl */
+       /* ts B11001 : re-use fd */
+       /* ts B80902 : call unconditionally because host_no differs
+                      between SG_GET_SCSI_ID and SCSI_IOCTL_GET_IDLUN
+       */
+       ret = sg_obtain_scsi_adr_fd(fname, fd, bus_no, host_no,
+                                   channel_no, target_no, lun_no);
+       if (ret <= 0) {
+               if (linux_sg_enumerate_debug)
+                       fprintf(stderr,
+                               "sg_obtain_scsi_adr_fd() failed\n");
+               {ret = 0; goto ex;}
        }
 
        /* ts A60927 : trying to do locking with growisofs */
@@ -1076,16 +1072,6 @@
                sg_release_siblings(sibling_fds, sibling_fnames,
                                                        &sibling_count);
        }
-#ifdef SCSI_IOCTL_GET_BUS_NUMBER
-       if(*bus_no == -1)
-               *bus_no = 1000 * (sid.host_no + 1) + sid.channel;
-#else
-       *bus_no = sid.host_no;
-#endif
-       *host_no= sid.host_no;
-       *channel_no= sid.channel;
-       *target_no= sid.scsi_id;
-       *lun_no= sid.lun;
        ret = 1;
 ex:;
        if (fd_in < 0 && fd >= 0) {
@@ -2231,6 +2217,10 @@
                if (d->cancel)
        break;
                /* if ! done : loop for retry */;
+               if (!done && (burn_sg_log_scsi & 3)) {
+                       scsi_log_text("+++ Repeating command", fp, 0);
+                       scsi_log_cmd(c, fp, 0);
+               }
        }
 
        ret = 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libburn-1.4.8/libburn/write.c 
new/libburn-1.5.0/libburn/write.c
--- old/libburn-1.4.8/libburn/write.c   2017-02-06 15:12:07.000000000 +0100
+++ new/libburn-1.5.0/libburn/write.c   2017-09-16 12:57:08.000000000 +0200
@@ -1702,7 +1702,7 @@
 int burn_disc_finalize_dvd_plus_r(struct burn_write_opts *o)
 {
        struct burn_drive *d = o->drive;
-       char msg[80];
+       char msg[40 + 80]; /* filltext + profile */
 
        sprintf(msg, "Finalizing %s ...",
                d->current_profile_text);


Reply via email to