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> </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> </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);
