Compare commits

...

16 Commits

Author SHA1 Message Date
8f6d805472 Documented changes and release timestamp 2010-04-09 10:11:47 +00:00
7dbc931f70 Updated cdrskin tarball generator 2010-04-09 10:10:04 +00:00
0d23b64ab2 Made number transition to 0.8.0 2010-04-09 10:08:47 +00:00
339cdba2fe Branching for libburn release 0.8.0 2010-04-09 09:12:01 +00:00
2069ffa863 Reporting eventual SCSI sense in sg-linux repeat loop 2010-04-09 09:07:59 +00:00
e787d328c7 Let libburner warn programmers if they forget to set 64 bit off_t 2010-04-04 18:13:45 +00:00
fafc190fd4 Adjusted libcdio system adapter to FreeBSD peculiarities 2010-03-29 10:33:05 +00:00
e6029ae238 Trying to detect FreeBSD ahci devices and to handle others the old way 2010-03-27 17:27:50 +00:00
6e17c59f6b Avoiding to inquire NWA of unwritable media or states 2010-03-27 15:58:05 +00:00
0e777ec688 Had to make ahci change conditional for now: -DLibburn_for_freebsd_ahcI 2010-03-26 08:33:22 +00:00
8dcdb5a87f Changed sg-freebsd.c to work with ahci, advise by Alexander Motin 2010-03-25 11:36:55 +00:00
4f372c00bc Corrected initialization of configure option --enable-dvd-obs-64k 2010-03-17 18:54:10 +00:00
9f6d80d87d Small bug fix about track size with cdrskin -minfo 2010-03-17 18:53:28 +00:00
b33df8fbd5 Documented changes and release timestamp 2010-03-10 13:58:50 +00:00
b4bb522053 Updated cdrskin tarball generator 2010-03-10 13:58:03 +00:00
3289ffd1e6 Made number transition to 0.7.9 2010-03-10 13:56:58 +00:00
19 changed files with 993 additions and 129 deletions

View File

@@ -110,9 +110,9 @@ test_structest_CPPFLAGS = -Ilibburn
test_structest_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
test_structest_SOURCES = test/structest.c
## cdrskin construction site - ts A60816 - B00122
## cdrskin construction site - ts A60816 - B00409
cdrskin_cdrskin_CPPFLAGS = -Ilibburn
cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_0_7_7
cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_0_8_0
# cdrskin_cdrskin_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
# ts A80123, change proposed by Simon Huggins to cause dynamic libburn linking

26
README
View File

@@ -11,7 +11,7 @@ Still containing parts of Libburn. By Derek Foreman <derek@signalmarketing.com>
and Ben Jansens <xor@orodu.net>
Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
http://files.libburnia-project.org/releases/libburn-0.7.6.pl00.tar.gz
http://files.libburnia-project.org/releases/libburn-0.8.0.pl00.tar.gz
------------------------------------------------------------------------------
@@ -19,10 +19,10 @@ Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
From tarball
Obtain libburn-0.7.6.pl00.tar.gz, take it to a directory of your choice and do:
Obtain libburn-0.8.0.pl00.tar.gz, take it to a directory of your choice and do:
tar xzf libburn-0.7.6.pl00.tar.gz
cd libburn-0.7.6
tar xzf libburn-0.8.0.pl00.tar.gz
cd libburn-0.8.0
./configure --prefix=/usr
make
@@ -496,6 +496,24 @@ Project history as far as known to me:
fixes bugs about the generic X/Open system adapter, and allows to use
libcdio >= 0.83 as SCSI transport facility.
- 10 Feb 2010 libisofs-0.6.28 fixes a regression about bootable images which
was introduced by version 0.6.22 in August 2009.
- 23 Feb 2010 libisoburn-0.5.0 marks the transition of the xorriso standalone
version to an official GNU project. The name changed to "GNU xorriso" and its
license is now GPLv3+.
The licenses of libburnia libraries and applications are not affected by
this change.
- 10 Mar 2010 libburn-0.7.8 fixes bugs and improves the built-in abort handler
on FreeBSD.
- 30 Mar 2010 Release 0.5.2 of libisoburn provides xorriso documentation in
GNU Texinfo format with embedded extra data to derive a full man page.
- 09 Apr 2010 libburn-0.8.0 now works with ahci driver on FreeBSD 8-STABLE.
------------------------------------------------------------------------------
This program is free software; you can redistribute it and/or modify

View File

@@ -4,7 +4,7 @@
cdrskin. By Thomas Schmitt <scdbackup@gmx.net>
Integrated sub project of libburnia-project.org but also published via:
http://scdbackup.sourceforge.net/cdrskin_eng.html
http://scdbackup.sourceforge.net/cdrskin-0.7.7.tar.gz
http://scdbackup.sourceforge.net/cdrskin-0.8.0.pl00.tar.gz
Copyright (C) 2006-2010 Thomas Schmitt, provided under GPL version 2 or later.
------------------------------------------------------------------------------
@@ -25,10 +25,10 @@ By using this software you agree to the disclaimer at the end of this text
Compilation, First Glimpse, Installation
Obtain cdrskin-0.7.7.tar.gz, take it to a directory of your choice and do:
Obtain cdrskin-0.8.0.pl00.tar.gz, take it to a directory of your choice and do:
tar xzf cdrskin-0.7.7.tar.gz
cd cdrskin-0.7.7
tar xzf cdrskin-0.8.0.pl00.tar.gz
cd cdrskin-0.8.0
Within that directory execute:

View File

@@ -38,7 +38,7 @@ original="./libburn_svn_release.tgz"
# My changes are in $changes , mainly in $changes/cdrskin
changes="./libburn-release"
skin_release="0.7.6"
skin_release="0.8.0"
patch_level=".pl00"
skin_rev="$skin_release""$patch_level"

View File

@@ -38,7 +38,7 @@ original="./libburn_svn.tgz"
# My changes are in $changes , mainly in $changes/cdrskin
changes="./libburn-develop"
skin_release="0.7.7"
skin_release="0.8.1"
patch_level=""
skin_rev="$skin_release""$patch_level"

View File

@@ -88,7 +88,7 @@ or
/** The official program version */
#ifndef Cdrskin_prog_versioN
#define Cdrskin_prog_versioN "0.7.7"
#define Cdrskin_prog_versioN "0.8.0"
#endif
/** The official libburn interface revision to use.
@@ -98,10 +98,10 @@ or
#define Cdrskin_libburn_majoR 0
#endif
#ifndef Cdrskin_libburn_minoR
#define Cdrskin_libburn_minoR 7
#define Cdrskin_libburn_minoR 8
#endif
#ifndef Cdrskin_libburn_micrO
#define Cdrskin_libburn_micrO 7
#define Cdrskin_libburn_micrO 0
#endif
@@ -135,13 +135,13 @@ or
#endif /* Cdrskin_libburn_cvs_A60220_tS */
#ifdef Cdrskin_libburn_0_7_6
#define Cdrskin_libburn_versioN "0.7.6"
#ifdef Cdrskin_libburn_0_8_0
#define Cdrskin_libburn_versioN "0.8.0"
#define Cdrskin_libburn_from_pykix_svN 1
#endif /* Cdrskin_libburn_0_7_6 */
#endif /* Cdrskin_libburn_0_8_0 */
#ifdef Cdrskin_libburn_0_7_7
#define Cdrskin_libburn_versioN "0.7.7"
#ifdef Cdrskin_libburn_0_8_1
#define Cdrskin_libburn_versioN "0.8.1"
#define Cdrskin_libburn_from_pykix_svN 1
/* Place novelty switch macros here.
@@ -151,32 +151,31 @@ or
/* Do not stay in signal handler but only cancel and set Cdrskin_abort_leveL.
Make use of burn_is_aborting() to detect pending libburn aborts.
*/
#define Cdrskin_signal_handler_return_2 1
#endif /* Cdrskin_libburn_0_7_7 */
#endif /* Cdrskin_libburn_0_8_1 */
#ifndef Cdrskin_libburn_versioN
#define Cdrskin_libburn_0_7_6
#define Cdrskin_libburn_versioN "0.7.6"
#define Cdrskin_libburn_0_8_0
#define Cdrskin_libburn_versioN "0.8.0"
#define Cdrskin_libburn_from_pykix_svN 1
#endif
#ifdef Cdrskin_libburn_0_7_6
#ifdef Cdrskin_libburn_0_8_0
#undef Cdrskin_libburn_majoR
#undef Cdrskin_libburn_minoR
#undef Cdrskin_libburn_micrO
#define Cdrskin_libburn_majoR 0
#define Cdrskin_libburn_minoR 7
#define Cdrskin_libburn_micrO 6
#define Cdrskin_libburn_minoR 8
#define Cdrskin_libburn_micrO 0
#endif
#ifdef Cdrskin_libburn_0_7_7
#ifdef Cdrskin_libburn_0_8_1
#undef Cdrskin_libburn_majoR
#undef Cdrskin_libburn_minoR
#undef Cdrskin_libburn_micrO
#define Cdrskin_libburn_majoR 0
#define Cdrskin_libburn_minoR 7
#define Cdrskin_libburn_micrO 7
#define Cdrskin_libburn_minoR 8
#define Cdrskin_libburn_micrO 1
#endif
@@ -4157,11 +4156,7 @@ int Cdrskin__is_aborting(int flag)
{
if(Cdrskin_abort_leveL)
return(-1);
#ifdef Cdrskin_signal_handler_return_2
return(burn_is_aborting(0));
#else
return 0;
#endif
return(burn_is_aborting(0));
}
@@ -4192,11 +4187,7 @@ int Cdrskin_abort(struct CdrskiN *skin, int flag)
int Cdrskin_abort_handler(struct CdrskiN *skin, int signum, int flag)
{
#ifdef Cdrskin_libburn_has_burn_aborT
int ret;
#else
#ifndef Cdrskin_libburn_has_burn_aborT
int wait_grain= 100000,first_status= 1;
double start_time,last_time,current_time;
@@ -4251,8 +4242,6 @@ int Cdrskin_abort_handler(struct CdrskiN *skin, int signum, int flag)
if(skin->verbosity>=Cdrskin_verbose_debuG)
ClN(fprintf(stderr,"cdrskin_debug: ABORT : Calling burn_abort()\n"));
#ifdef Cdrskin_signal_handler_return_2
Cdrskin_abort_leveL= -1;
if (!(flag & 1))
burn_abort(-1, burn_abort_pacifier, "cdrskin: ");
@@ -4260,16 +4249,6 @@ int Cdrskin_abort_handler(struct CdrskiN *skin, int signum, int flag)
"cdrskin: ABORT : Urged drive worker threads to do emergency halt.\n");
return -2;
#endif /* Cdrskin_signal_handler_return_2 */
ret= burn_abort(skin->abort_max_wait, burn_abort_pacifier, "cdrskin: ");
if(ret<=0) {
fprintf(stderr,
"\ncdrskin: ABORT : Cannot cancel burn session and release drive.\n");
return(0);
}
fprintf(stderr,"\n");
#else /* Cdrskin_libburn_has_burn_aborT */
if(skin->grabbed_drive!=NULL) {
@@ -5297,8 +5276,8 @@ int Cdrskin_minfo(struct CdrskiN *skin, int flag)
/* If last two blocks not readable then assume TAO and subtract 2
from lra and size.
*/;
ret= burn_read_data(drive, (off_t) lra * (off_t) 2048, buf, 2 * 2048,
&buf_count, 2 | 4);
ret= burn_read_data(drive, (off_t) (lra - 1) * (off_t) 2048, buf,
2 * 2048, &buf_count, 2 | 4);
if(ret <= 0) {
lra-= 2;
size-= 2;

View File

@@ -62,7 +62,7 @@ via SCSI, PATA (aka IDE, ATA), USB, or SATA.
GPL software included:<BR>
</H2>
<DL>
<DT>libburn-0.7.6</DT>
<DT>libburn-0.8.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)
@@ -194,8 +194,8 @@ Standalone ISO 9660 multi-session CD/DVD/BD tool
<P>
<DL>
<DT>Download as source code (see README):</DT>
<DD><A HREF="cdrskin-0.7.6.pl00.tar.gz">cdrskin-0.7.6.pl00.tar.gz</A>
(820 KB).
<DD><A HREF="cdrskin-0.8.0.pl00.tar.gz">cdrskin-0.8.0.pl00.tar.gz</A>
(835 KB).
</DD>
<DD>
The cdrskin tarballs are source code identical with libburn releases
@@ -244,22 +244,21 @@ cdrskin_0.4.2.pl00-x86-suse9_0-static.tar.gz</A>, (310 KB), -static compiled,
<HR>
<P>
Enhancements towards previous stable version cdrskin-0.7.4.pl00:
Enhancements towards previous stable version cdrskin-0.7.8.pl00:
<UL>
<LI>
Made FreeBSD system adapter safe from mutal burn spoiling and drive deadlock
Now able to work with ahci driver of FreeBSD 8-STABLE
</LI>
<LI>Experimental system adapter via GNU libcdio on X/Open systems</LI>
<LI>Experimentally using FreeBSD system adapter for Debian kfreebsd</LI>
<!--
<LI>none</LI>
-->
</UL>
Bug fixes towards cdrskin-0.7.4.pl00:
Bug fixes towards cdrskin-0.7.8.pl00:
<UL>
<LI>none</LI>
<!--
<LI>none</LI>
-->
</UL>
@@ -267,8 +266,8 @@ Bug fixes towards cdrskin-0.7.4.pl00:
<P>
<DL>
<DT><H3>Development snapshot, version 0.7.7 :</H3></DT>
<DD>Enhancements towards current stable version 0.7.6.pl00:
<DT><H3>Development snapshot, version 0.8.1 :</H3></DT>
<DD>Enhancements towards current stable version 0.8.0.pl00:
<UL>
<LI>none yet</LI>
<!--
@@ -277,7 +276,7 @@ Bug fixes towards cdrskin-0.7.4.pl00:
</UL>
</DD>
<DD>Bug fixes towards cdrskin-0.7.6.pl00:
<DD>Bug fixes towards cdrskin-0.8.0.pl00:
<UL>
<LI>none yet</LI>
<!--
@@ -286,10 +285,10 @@ Bug fixes towards cdrskin-0.7.4.pl00:
</DD>
<DD>&nbsp;</DD>
<DD><A HREF="README_cdrskin_devel">README 0.7.7</A>
<DD><A HREF="cdrskin__help_devel">cdrskin_0.7.7 --help</A></DD>
<DD><A HREF="cdrskin_help_devel">cdrskin_0.7.7 -help</A></DD>
<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 0.7.7)</A></DD>
<DD><A HREF="README_cdrskin_devel">README 0.8.1</A>
<DD><A HREF="cdrskin__help_devel">cdrskin_0.8.1 --help</A></DD>
<DD><A HREF="cdrskin_help_devel">cdrskin_0.8.1 -help</A></DD>
<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 0.8.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>
@@ -309,8 +308,8 @@ admins with full system souvereignty.</DT>
<A HREF="README_cdrskin_devel">upcoming README</A> ):
</DD>
<DD>
<A HREF="cdrskin-0.7.7.tar.gz">cdrskin-0.7.7.tar.gz</A>
(820 KB).
<A HREF="cdrskin-0.8.1.tar.gz">cdrskin-0.8.1.tar.gz</A>
(840 KB).
</DD>
<!-- This is not offered any more since spring 2008

View File

@@ -1 +1 @@
#define Cdrskin_timestamP "2010.03.09.140341"
#define Cdrskin_timestamP "2010.04.09.100001"

View File

@@ -7552,7 +7552,6 @@ svn copy -m Branching for libburn release 0.7.4
http://svn.libburnia-project.org/libburn/trunk
http://svn.libburnia-project.org/libburn/branches/ZeroSevenFour
2009.12.06.160001 [2938]
Makefile.am
configure.ac
@@ -7610,18 +7609,719 @@ Made number transition to 0.7.5
+ cdrskin/add_ts_changes_to_libburn_0_7_5
Updated cdrskin tarball generator
[]
07 Dec 2009 [2943]
cdrskin/changelog.txt
Documented changes and release timestamp
------------------------------------ cycle - cdrskin-0.7.5 -
------------------------------------ cycle - cdrskin-0.7.5 -
07 Dec 2009 [2946]
svn move -m libburn release 0.7.4 is ready
http://svn.libburnia-project.org/libburn/branches/ZeroSevenFour
http://svn.libburnia-project.org/libburn/tags/ZeroSevenFour
------------------------------------ cycle - cdrskin-0.7.5 - 2009.12.07.083850
16 Dec 2009 [2955]
doc/cookbook.txt
Mentioned in cookbook the change about TAO close track
2009.12.19.140015 [2957]
libburn/spc.c
Corrected CDB length of command 55h MODE SELECT from 12 to 10
2009.12.19.142456 [2958]
libburn/spc.h
libburn/sg-linux.c
Moved sg_log_cmd() to spc.c scsi_log_cmd()
2009.12.19.142456 [2959]
configure.ac
Makefile.am
libburn/os.h
libburn/sg.c
libburn/sg-freebsd-port.c
+ libburn/os-libcdio.h
+ libburn/sg-libcdio.c
Experimental SCSI transport adapter via GNU libcdio
2009.12.24.170601 [2960]
configure.ac
libburn/spc.h
libburn/spc.c
libburn/sg-linux.c
libburn/sg-libcdio.c
Making use of libcdio function mmc_get_cmd_scsi_sense()
25 Dec 2009 [2961]
cdrskin/compile_cdrskin.sh
Option -use_libcdio for cdrskin development compile script
2009.12.25.101433 [2962]
libburn/libdax_msgs.h
Commited file forgotten with rev 2960
2009.12.25.143326 [2963]
libburn/sg-libcdio.c
Resolving symbolic links in libcdio drive list
2009.12.25.144122 [2964]
configure.ac
Added PKG_CHECK_MODULES for libcdio-0.82 (must become 0.83 when released)
2009.12.25.205704 [2965]
configure.ac
libburn/sg-libcdio.c
Adapted to libcdio-0.83 and its runtime version telling
2009.12.25.223915 [2966]
libburn/init.c
libburn/sg.h
libburn/sg-freebsd.c
libburn/sg-freebsd-port.c
libburn/sg-libcdio.c
libburn/sg-linux.c
New internal sg-API function sg_initialize()
2009.12.26.080301 [2967]
libburn/init.c
libburn/sg-dummy.c
libburn/sg-freebsd.c
libburn/sg-freebsd-port.c
libburn/sg-libcdio.c
libburn/sg-linux.c
New API function burn_scsi_transport_id()
26 Dec 2009 [2968]
Makefile.am
Added os-dummy.h and sg-dummy.h to libburn tarball
26 Dec 2009 [2969]
svn copy -m Branching for libburn bugfix release 0.7.4.pl01
http://svn.libburnia-project.org/libburn/tags/ZeroSevenTwo
http://svn.libburnia-project.org/libburn/branches/ZeroSevenTwoPl01
26 Dec 2009 [2970]
svn mv -m Branching for libburn bugfix release 0.7.4.pl01
http://svn.libburnia-project.org/libburn/branches/ZeroSevenTwoPl01
http://svn.libburnia-project.org/libburn/branches/ZeroSevenFourPl01
26 Dec 2009 [2971]
svn rm -m Branching for libburn bugfix release 0.7.4.pl01
http://svn.libburnia-project.org/libburn/branches/ZeroSevenFourPl01
26 Dec 2009 [2972]
svn copy -m Branching for libburn bugfix release 0.7.4.pl01
http://svn.libburnia-project.org/libburn/tags/ZeroSevenFour
http://svn.libburnia-project.org/libburn/branches/ZeroSevenFourPl01
2009.12.26.110001 [2973]
README
Makefile.am
cdrskin/cdrskin_timestamp.h
Bug fix: Added missing system adapter for generic X/Open to libburn release tarball
26 Dec 2009 [2974]
svn move -m libburn bugfix release 0.7.4.pl01 is ready
http://svn.libburnia-project.org/libburn/branches/ZeroSevenFourPl01
http://svn.libburnia-project.org/libburn/tags/ZeroSevenFourPl01
2009.12.26.193707 [2975]
cdrskin/cdrskin.c
Reporting burn_scsi_transport_id() in cdrskin as debug message
2009.12.26.222656 [2976]
libburn/libburn.h
doc/comments
Reacted on some doxygen warnings of Debian hurd build
2009.12.27.092057 [2979]
libburn/os-libcdio.h
libburn/sg-libcdio.c
Showing libburn users drive name link targets, using in libcdio its own names
2009.12.27.102342 [2981]
libburn/sg-libcdio.c
Shorter sg_initialize message with sg-libcdio
2009.12.27.144620 [2982]
libburn/init.c
libburn/drive.c
libburn/sg.h
libburn/os-libcdio.h
libburn/sg-dummy.c
libburn/sg-freebsd.c
libburn/sg-freebsd-port.c
libburn/sg-libcdio.c
libburn/sg-linux.c
Extended sg-API by sg_shutdown(), sg_dispose_drive(), sg_id_string()
2009.12.27.144733 [2983]
cdrskin/cdrskin.c
Reporting system adapter id with cdrskin -version
2009.12.29.115717 [2984]
configure.ac
Incremented middle .so number
2009.12.29.115854 [2985]
libburn/spc.c
Corrected a mode page size computation error which for now had no bad effect
2009.12.29.132537 [2986]
acinclude.m4
libburn/os.h
libburn/sg.c
Experimentally enabled FreeBSD system adapter for Debian kfreebsd
------------------------------------ cycle - cdrskin-0.7.5 - 2009.12.29.134637
* Experimental SCSI transport adapter via GNU libcdio
* Experimentally using FreeBSD system adapter for Debian kfreebsd
* Bug fix: System adapter for generic X/Open was missing in libburn release tarball
2009.12.29.224506 [2987]
acinclude.m4
Adaptions for Debian kfreebsd requested by Petr Salinger
2009.12.30.154140 [2988]
libburn/drive.c
libburn/sg-libcdio.c
Making use of new libcdio capability to obtain SCSI address tuple on Linux
2009.12.30.201025 [2990]
libburn/sg-libcdio.c
Silenced libcdio warnings
2010.01.01.124042 [2994]
libburn/drive.c
Bug fix: with non-Linux adapters there were 0 readable bytes on block devices
2010.01.01.124415 [2995]
libburn/sg-libcdio.c
Enabled block device size recognition with sg-libcdio on Linux
------------------------------------ cycle - cdrskin-0.7.5 - 2010.01.01.143104
* Bug fix: with non-Linux adapters there were 0 readable bytes on block devices
2010.01.04.134949 [3001]
libburn/write.c
libburn/libdax_msgs.h
Avoiding stream recording on BD if not 64 kB buffer
2010.01.04.135427 [3002]
libburn/os-libcdio.h
Enlarged buffer size of libcdio adapter on Linux to 64k
2010.01.09.142027 [3004]
libburn/sg-libcdio.c
Forgot to forward sense reply to higher levels
2010.01.09.142642 [3005]
libburn/spc.c
Better error message with unknown SCSI error codes
2010.01.09.143428 [3006]
libburn/spc.c
libburn/sbc.c
Revoked asynchronous eject, as we cannot distinguish out from unready
2010.01.12.165214 [3009]
libburn/sg-dummy.c
libburn/sg-freebsd-port.c
libburn/sg-libcdio.c
libburn/sg-linux.c
Corrected free capacity measurement of stdio: drives in regular files
12 Jan 2010 [3010]
doc/cookbook.txt
Fixed typos in MMC cookbook
2010.01.13.074028 [3011]
libburn/drive.c
Experimentally regard FreeBSD /dev/da[0-9] and /dev/cd[0-9] as block device
2010.01.13.074640 [3012]
libburn/sg-freebsd.c
Adaptions after encounter with FreeBSD 8.0
2010.01.13.171546 [3013]
libburn/libburn.h
Carified that apps must use 64 bit off_t or the lib must be tweaked.
14 Jan 2010 [3014]
14 Jan 2010 [3015]
test/libburner.c
Carified in libburner.c that apps must use 64 bit off_t.
2010.01.14.160633 [3016]
libburn/libburn.h
libburn/drive.c
Giving up drive probing by mode page sending
2010.01.14.160748 [3017]
libburn/sg-libcdio.c
Provisory rejection of FreeBSD ATAPI drives in sg-libcdio
2010.01.15.182615 [3018]
libburn/os-freebsd.h
libburn/sg-freebsd.c
Implemented adivisory FreeBSD drive locking via flock(2)
2010.01.16.125258 [3019]
libburn/drive.c
libburn/sg.h
libburn/sg-dummy.c
libburn/sg-freebsd.c
libburn/sg-freebsd-port.c
libburn/sg-libcdio.c
libburn/sg-linux.c
New OS adapter burn_os_is_2k_seekrw() replaces S_ISBLK() with pseudo-drives
2010.01.18.103410 [3023]
libburn/sg-linux.c
Changed a comment in sg-linux.c
------------------------------------ cycle - cdrskin-0.7.5 - 2010.01.18.104011
* Made FreeBSD system adapter safe from mutal burn spoiling and drive deadlock
21 Jan 2010 [3028]
cdrskin/cdrskin.1
Changed man page example from -toc to -minfo
2010.01.21.104741 [3029]
libburn/sg-freebsd.c
libburn/sg-libcdio.c
Learned how to inquire size of disk-like FreeBSD devices
22 Jan 2010 [3030]
svn copy -m "Branching for libburn release 0.7.6" \
http://svn.libburnia-project.org/libburn/trunk \
http://svn.libburnia-project.org/libburn/branches/ZeroSevenSix
2010.01.22.130001 []
Makefile.am
configure.ac
README
libburn/libburn.h
cdrskin/cdrskin.c
cdrskin/README
cdrskin/compile_cdrskin.sh
cdrskin/cdrskin_timestamp.h
cdrskin/cdrskin_eng.html
Made number transition to 0.7.6
22 Jan 2010 [3032]
COPYRIGHT
cdrskin/cdrskin.c
doc/cookbook.txt
libburn/libdax_msgs.h
libburn/libdax_msgs.c
test/libburner.c
test/telltoc.c
Lifted ban to derive GPLv3, extended copyright range to 2010
22 Jan 2009 [3033]
- cdrskin/add_ts_changes_to_libburn_0_7_4
- cdrskin/add_ts_changes_to_libburn_0_7_5
+ cdrskin/add_ts_changes_to_libburn_0_7_6
+ cdrskin/add_ts_changes_to_libburn_0_7_7
Updated cdrskin tarball generator
22 Jan 2009 [3034]
cdrskin/changelog.txt
Documented changes and release timestamp
------------------------------ release - cdrskin-0.7.6.pl00 - 2010.01.22.130001
* Bug fix: System adapter for generic X/Open was missing in libburn release tarball
* Bug fix: with non-Linux adapters there were 0 readable bytes on block devices
* Made FreeBSD system adapter safe from mutal burn spoiling and drive deadlock
* Enabled FreeBSD system adapter for Debian kfreebsd
* Experimental SCSI transport adapter via GNU libcdio 0.83git
2010.01.23.103338 [3035]
Makefile.am
configure.ac
README
libburn/libburn.h
cdrskin/cdrskin.c
cdrskin/README
cdrskin/compile_cdrskin.sh
cdrskin/cdrskin_timestamp.h
cdrskin/cdrskin_eng.html
Made number transition to 0.7.7
2010.01.23.104423 [3036]
COPYRIGHT
doc/cookbook.txt
libburn/libdax_msgs.h
libburn/libdax_msgs.c
test/libburner.c
test/telltoc.c
Lifted ban to derive GPLv3, extended copyright range to 2010
23 Jan 2010 [3037]
- cdrskin/add_ts_changes_to_libburn_0_7_4
- cdrskin/add_ts_changes_to_libburn_0_7_5
+ cdrskin/add_ts_changes_to_libburn_0_7_6
+ cdrskin/add_ts_changes_to_libburn_0_7_7
Updated cdrskin tarball generator
------------------------------------ cycle - cdrskin-0.7.7 - 2010.01.23.104423
23 Jan 2010 [3038]
svn move -m 'libburn release 0.7.6 is ready'
http://svn.libburnia-project.org/libburn/branches/ZeroSevenSix
http://svn.libburnia-project.org/libburn/tags/ZeroSevenSix
2010.02.04.083315 [3054]
acinclude.m4
configure.ac
Forcing use of /usr/local on FreeBSD by LDFLAGS and CPPFLAGS
2010.02.12.173236 [3063]
libburn/os-linux.h
libburn/sg-linux.c
Changed system adapter id and some remarks from "Linux" to "GNU/Linux"
2010.02.12.212818 [3064]
libburn/libburn.h
libburn/sg.c
libburn/mmc.c
libburn/drive.c
libburn/init.c
libburn/cleanup.c
libburn/os-linux.h
libburn/sg-linux.c
libburn/write.c
libburn/read.c
libburn/sg-libcdio.c
libburn/os-libcdio.h
libburn/os.h
libburn/toc.c
Changed docs and comments to "GNU/Linux" where appropriate
2010.02.14.084452 [3066]
libburn/sbc.c
libburn/file.h
libburn/os-libcdio.h
libburn/os-dummy.h
libburn/cleanup.h
libburn/sector.h
libburn/libiso_msgs.c
libburn/async.c
libburn/libdax_audioxtr.h
libburn/ecma130ab.c
libburn/back_hacks.h
libburn/libdax_msgs.h
libburn/drive.h
libburn/read.c
libburn/source.c
libburn/util.h
libburn/cleanup.c
libburn/sg.c
libburn/init.c
libburn/write.c
libburn/transport.h
libburn/write.h
libburn/libburn.h
libburn/options.c
libburn/mmc.h
libburn/sg.h
libburn/sbc.h
libburn/sg-dummy.c
libburn/ecma130ab.h
libburn/null.c
libburn/structure.c
libburn/mmc.c
libburn/spc.h
libburn/drive.c
libburn/sg-linux.c
libburn/options.h
libburn/os-linux.h
libburn/sg-libcdio.c
libburn/os-freebsd.h
libburn/sg-freebsd-port.c
libburn/sector.c
libburn/debug.c
libburn/util.c
libburn/toc.h
libburn/file.c
libburn/libdax_audioxtr.c
libburn/libdax_msgs.c
libburn/toc.c
libburn/sg-freebsd.c
libburn/spc.c
libburn/structure.h
Added or adjusted copyright and license statements in single files
2010.02.14.171833 [3069]
libburn/write.c
libburn/read.c
libburn/sector.c
libburn/crc.h
Created opportunity to omit source module libburn/crc.c
2010.02.15.125922 [3071]
libburn/crc.h
Changed a comment in libburn/crc.h
2010.02.16.194147 [3073]
libburn/file.c
Bug fix on FreeBSD: Piped input was falsely attributed a small fixed size
2010.02.17.141409 [3075]
libburn/async.c
libburn/drive.c
libburn/write.c
Avoided random percentage display at start of blanking
2010.02.22.134904 [3080]
libburn/init.c
Made burn_set_signal_handling() more suitable for cdrskin
2010.02.25.070635 [3090]
libburn/write.c
Corrected optional speed curb for stdio: drives. Was damaged by revision 2903.
2010.02.28.104003 [3091]
cdrskin/cdrskin.c
Added forgotten initialization of a variable
2010.02.28.110749 [3092]
cdrskin/cdrskin.c
Bug fix: cdrskin fs=0 lead to SIGSEGV. Regression introduced by revision 2936.
28 Feb 2010 [3093]
cdrskin/cdrskin.1
Corrected spelling errors in cdrskin man page
2010.03.03.140639 [3096]
libburn/drive.c
Enabled patience 0 within burn_abort()
2010.03.03.141407 [3097]
cdrskin/cdrskin.c
cdrskin/cdrfifo.c
Adapted cdrskin abort handler to FreeBSD peculiarities
3 Mar 2010 [3098] [3099]
cdrskin/compile_cdrskin.sh
Enabled static compile script compile_cdrskin.sh for FreeBSD
2010.03.04.121441 [3100]
libburn/sg-linux.c
Showing more patience with temporarily busy drives on Linux
2010.03.04.180102 [3101]
cdrskin/cdrskin.c
Changed burn_abort(0) to burn_abort(-1)
2010.03.05.090948 [3102]
libburn/libburn.h
libburn/transport.h
libburn/drive.h
libburn/drive.c
libburn/init.h
libburn/init.c
libburn/async.c
libburn/write.c
libburn/sector.c
libburn/libdax_msgs.h
libburn/libdax_msgs.c
Introduced alternative signal handling actions
2010.03.05.091432 [3103]
cdrskin/cdrskin.c
Enabled optional use of new signal action 2 with libburn built-in handler
2010.03.05.111712 [3104]
libburn/init.c
libburn/drive.h
libburn/drive.c
Removed some debugging printing
------------------------------------ cycle - cdrskin-0.7.7 - 2010.03.05.111954
Bug fix on FreeBSD: Piped input was falsely attributed a small fixed size
Bug fix: cdrskin fs=0 led to SIGSEGV. Regression introduced by revision 2936.
2010.03.05.190110 [3105]
libburn/async.c
Protected blanker and formatter thread from signals
06 Mar 2010 [3106]
test/libburner.c
Adapted libburner to new advise about signal handling
07 Mar 2010 [3107]
libburn/libburn.h
test/libburner.c
Changed examples burn_set_signal_handling(...,48) to (...,0x30)
2010.03.08.092608 [3108]
libburn/libburn.h
libburn/init.c
Prevented potential memory fault with burn_set_signal_handling()
2010.03.09.140341 [3111]
libburn/libburn.h
Clarifications in API description of burn_set_signal_handling()
10 Mar 2010 [3112]
svn copy -m "Branching for libburn release 0.7.8" \
http://svn.libburnia-project.org/libburn/trunk \
http://svn.libburnia-project.org/libburn/branches/ZeroSevenEight
2010.03.10.120001 [3113]
Makefile.am
configure.ac
README
libburn/libburn.h
cdrskin/cdrskin.c
cdrskin/README
cdrskin/compile_cdrskin.sh
cdrskin/cdrskin_timestamp.h
cdrskin/cdrskin_eng.html
Made number transition to 0.7.8
10 Mar 2010 [3114]
- cdrskin/add_ts_changes_to_libburn_0_7_6
- cdrskin/add_ts_changes_to_libburn_0_7_7
+ cdrskin/add_ts_changes_to_libburn_0_7_8
+ cdrskin/add_ts_changes_to_libburn_0_7_9
Updated cdrskin tarball generator
10 Mar 2010 [3115]
cdrskin/cdrskin.c
Removed unused variable
10 Mar 2010 [3116]
cdrskin/changelog.txt
Documented changes and release timestamp
------------------------------ release - cdrskin-0.7.8.pl00 - 2010.03.10.120001
Bug fix on FreeBSD: Piped input was falsely attributed a small fixed size
Bug fix: cdrskin fs=0 led to SIGSEGV. Regression introduced by version 0.7.4.
2010.03.10.134802 [3117]
Makefile.am
configure.ac
README
libburn/libburn.h
cdrskin/cdrskin.c
cdrskin/README
cdrskin/compile_cdrskin.sh
cdrskin/cdrskin_timestamp.h
cdrskin/cdrskin_eng.html
Made number transition to 0.7.9
10 Mar 2010 [3118]
- cdrskin/add_ts_changes_to_libburn_0_7_6
- cdrskin/add_ts_changes_to_libburn_0_7_7
+ cdrskin/add_ts_changes_to_libburn_0_7_8
+ cdrskin/add_ts_changes_to_libburn_0_7_9
Updated cdrskin tarball generator
10 Mar 2010 [3119]
cdrskin/changelog.txt
Documented changes and release timestamp
10 Mar 2010 [3120]
svn move -m 'libburn release 0.7.8 is ready'
http://svn.libburnia-project.org/libburn/branches/ZeroSevenEight
http://svn.libburnia-project.org/libburn/tags/ZeroSevenEight
------------------------------------ cycle - cdrskin-0.7.9 - 2010.03.10.143607
2010.03.17.185222 [3123]
cdrskin/cdrskin.c
Small bug fix about track size with cdrskin -minfo
17 Mar 2010 [3124]
configure.ac
Corrected initialization of configure option --enable-dvd-obs-64k
2010.03.25.113536 [3131]
libburn/spc.c
libburn/sg-freebsd.c
Changed sg-freebsd.c to work with ahci, advise by Alexander Motin
2010.03.26.083158 [3132]
libburn/sg-freebsd.c
Had to make ahci change conditional for now: -DLibburn_for_freebsd_ahcI
2010.03.27.155659 [3133]
libburn/mmc.c
Avoiding to inquire NWA of unwritable media or states
2010.03.27.172644 [3134]
libburn/os-freebsd.h
libburn/sg-freebsd.c
Trying to detect FreeBSD ahci devices and to handle others the old way
------------------------------------ cycle - cdrskin-0.7.9 - 2010.03.27.184614
* Now able to work with ahci driver of FreeBSD 8-STABLE
2010.03.29.103141 [3135]
libburn/spc.c
libburn/sg-linux.c
libburn/sg-freebsd.c
libburn/sg-libcdio.c
Adjusted libcdio system adapter to FreeBSD peculiarities
2010.04.04.181237 [3146]
test/libburner.c
Let libburner warn programmers if they forget to set 64 bit off_t
2010.04.09.090645 [3155]
libburn/sg-linux.c
Reporting eventual SCSI sense in sg-linux repeat loop
9 Apr 2010 [3156]
svn copy -m "Branching for libburn release 0.8.0" \
http://svn.libburnia-project.org/libburn/trunk \
http://svn.libburnia-project.org/libburn/branches/ZeroEightZero
2010.04.09.100001 [3157]
Makefile.am
configure.ac
README
libburn/libburn.h
cdrskin/cdrskin.c
cdrskin/README
cdrskin/compile_cdrskin.sh
cdrskin/cdrskin_timestamp.h
cdrskin/cdrskin_eng.html
Made number transition to 0.8.0
09 Apr 2010 [3158]
- cdrskin/add_ts_changes_to_libburn_0_7_8
- cdrskin/add_ts_changes_to_libburn_0_7_9
+ cdrskin/add_ts_changes_to_libburn_0_8_0
+ cdrskin/add_ts_changes_to_libburn_0_8_1
Updated cdrskin tarball generator
------------------------------ release - cdrskin-0.8.0.pl00 - 2010.04.09.100001
* Now able to work with ahci driver of FreeBSD 8-STABLE
------------------------------------ cycle - cdrskin-0.8.1 -
------------------------------------ cycle - cdrskin-0.8.1 -
===============================================================================
TODO
===============================================================================
- change all malloc() to calloc()
- find out from where libburn/crc.c stems. What algorithm is crc_32() ?
--------------------------------- bugs -------------------------------------
@@ -7648,14 +8348,8 @@ READ TRACK INFORMATION[#5]:
------------------------------ end of bugs ---------------------------------
- Make Libburn_stdio_flush_limiT adjustable
Support for BD-R SRM+POW
? Provide an option to open track source file O_DIRECT ?
(needs read chunks much larger than 2 kB)
? Enable profile 0x42 BD-R random recording
Provide DVD+R DL layer break setter

View File

@@ -8,7 +8,7 @@ debug_opts="-O2"
def_opts=
largefile_opts="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1"
fifo_opts=""
libvers="-DCdrskin_libburn_0_7_7"
libvers="-DCdrskin_libburn_0_8_0"
# To be used if Makefile.am uses libburn_libburn_la_CFLAGS
# burn="libburn/libburn_libburn_la-"
@@ -47,15 +47,15 @@ do
libdax_audioxtr_o=
libdax_msgs_o="$burn"message.o
cleanup_src_or_obj="-DCleanup_has_no_libburn_os_H cdrskin/cleanup.c"
elif test "$i" = "-libburn_0_7_6"
elif test "$i" = "-libburn_0_8_0"
then
libvers="-DCdrskin_libburn_0_7_6"
libvers="-DCdrskin_libburn_0_8_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_0_7_7"
libvers="-DCdrskin_libburn_0_8_1"
libdax_audioxtr_o="$burn"libdax_audioxtr.o
libdax_msgs_o="$burn"libdax_msgs.o
cleanup_src_or_obj="$burn"cleanup.o
@@ -109,7 +109,7 @@ do
echo "Options:"
echo " -compile_cdrfifo compile program cdrskin/cdrfifo."
echo " -compile_dewav compile program test/dewav without libburn."
echo " -libburn_0_7_6 set macro to match libburn-0.7.6"
echo " -libburn_0_8_0 set macro to match libburn-0.8.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."

View File

@@ -1,4 +1,4 @@
AC_INIT([libburn], [0.7.7], [http://libburnia-project.org])
AC_INIT([libburn], [0.8.0], [http://libburnia-project.org])
AC_PREREQ([2.50])
dnl AC_CONFIG_HEADER([config.h])
@@ -9,7 +9,7 @@ LIBBURNIA_SET_FLAGS
AM_INIT_AUTOMAKE([subdir-objects])
dnl Notes by ts A71207 - B00122 :
dnl Notes by ts A71207 - B00310 :
dnl
dnl Regrettably the meaning of the various version types was misunderstood
dnl before version 0.4.1.
@@ -79,6 +79,8 @@ dnl 0.7.0 = libburn.so.4.35.0
dnl 0.7.2 = libburn.so.4.37.0
dnl 0.7.4 = libburn.so.4.39.0
dnl 0.7.6 = libburn.so.4.41.0
dnl 0.7.8 = libburn.so.4.43.0
dnl 0.8.0 = libburn.so.4.45.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.
@@ -103,8 +105,8 @@ dnl If BURN_*_VERSION changes, be sure to change AC_INIT above to match.
dnl
dnl As said: Only copies. Original in libburn/libburn.h : burn_header_version_*
BURN_MAJOR_VERSION=0
BURN_MINOR_VERSION=7
BURN_MICRO_VERSION=7
BURN_MINOR_VERSION=8
BURN_MICRO_VERSION=0
BURN_VERSION=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
AC_SUBST(BURN_MAJOR_VERSION)
@@ -115,15 +117,15 @@ AC_SUBST(BURN_VERSION)
dnl Libtool versioning
LT_RELEASE=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
dnl
dnl ts B00122
dnl ### This is the release version libburn-0.7.6 = libburn.so.4.41.0
dnl This is the development version after above release version
dnl ts B00409
dnl This is the release version libburn-0.8.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 = 45 - 41 = 4 . Linux library name = libburn.so.4.41.0
LT_CURRENT=45
LT_AGE=41
dnl SONAME = 49 - 45 = 4 . Linux library name = libburn.so.4.45.0
LT_CURRENT=49
LT_AGE=45
LT_REVISION=0
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
@@ -201,7 +203,7 @@ CFLAGS="$CFLAGS $LIBBURN_O_DIRECT_DEF"
dnl ts A91116
AC_ARG_ENABLE(dvd-obs-64k,
[ --enable-dvd-obs-64k 64 KB default size for DVD/BD writing, default=no],
, enable_fifo_odirect=no)
, enable_dvd_obs_64k=no)
if test x$enable_dvd_obs_64k = xyes; then
LIBBURN_DVD_OBS_64K="-DLibburn_dvd_obs_default_64K"
echo "enabled write size default 64 KB on DVD and BD"

View File

@@ -2627,8 +2627,8 @@ void burn_version(int *major, int *minor, int *micro);
*/
#define burn_header_version_major 0
#define burn_header_version_minor 7
#define burn_header_version_micro 7
#define burn_header_version_minor 8
#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.

View File

@@ -425,6 +425,10 @@ int mmc_get_nwa(struct burn_drive *d, int trackno, int *lba, int *nwa)
if (mmc_function_spy(d, "mmc_get_nwa") <= 0)
return -1;
/* ts B00327 : Avoid to inquire unsuitable media states */
if (d->status != BURN_DISC_BLANK && d->status != BURN_DISC_APPENDABLE)
return 0;
ret = mmc_read_track_info(d, trackno, &buf, alloc_len);
if (ret <= 0)
return ret;

View File

@@ -59,5 +59,6 @@ typedef struct burn_drive_enumeration_state *burn_drive_enumerator_t;
#define BURN_OS_TRANSPORT_DRIVE_ELEMENTS \
struct cam_device* cam; \
int lock_fd; \
int is_ahci; \

View File

@@ -5,7 +5,6 @@
Provided under GPL version 2 or later.
*/
#include <errno.h>
#include <unistd.h>
#include <stdio.h>
@@ -30,6 +29,18 @@
#include <sys/disk.h> /* DIOCGMEDIASIZE */
/* ts B00326 : For use of CAM_PASS_ERR_RECOVER with ahci */
#define Libburn_for_freebsd_ahcI yes
/* ts B00327 : for debugging of cam_send_cdb() failures
# define Libburn_ahci_verbouS yes
*/
/* ts B00327 : Apply CAM_PASS_ERR_RECOVER to drives even if not ahci
# define libburn_ahci_style_for_alL yes
*/
#include "transport.h"
#include "drive.h"
#include "sg.h"
@@ -435,6 +446,7 @@ static void enumerate_common(char *fname, int bus_no, int host_no,
out.cam = NULL;
out.lock_fd = -1;
out.is_ahci = 0;
out.start_lba= -2000000000;
out.end_lba= -2000000000;
@@ -527,6 +539,7 @@ static void enumerate_common(char *fname, int bus_no, int host_no,
/* Adapter specific handles and data */
out.cam = NULL;
out.lock_fd = -1;
out.is_ahci = 0;
/* Adapter specific functions */
out.grab = sg_grab;
@@ -678,6 +691,7 @@ static int sg_lock(struct burn_drive *d, int flag)
int sg_grab(struct burn_drive *d)
{
struct cam_device *cam;
char path_string[80];
if (mmc_function_spy(d, "sg_grab") <= 0)
return 0;
@@ -700,6 +714,18 @@ int sg_grab(struct burn_drive *d)
if (sg_lock(d, 0) <= 0)
return 0;
fcntl(cam->fd, F_SETOWN, getpid());
cam_path_string(d->cam, path_string, sizeof(path_string));
#ifdef Libburn_ahci_verbouS
fprintf(stderr, "libburn_EXPERIMENTAL: CAM path = %s\n", path_string);
#endif
if (strstr(path_string, ":ahcich") != NULL)
d->is_ahci = 1;
else
d->is_ahci = -1;
d->released = 0;
return 1;
}
@@ -729,7 +755,8 @@ int sg_release(struct burn_drive *d)
int sg_issue_command(struct burn_drive *d, struct command *c)
{
int done = 0, err, sense_len, ret;
int done = 0, err, sense_len = 0, ret, ignore_error, no_retry = 0;
int cam_pass_err_recover = 0;
union ccb *ccb;
char buf[161];
static FILE *fp = NULL;
@@ -777,6 +804,23 @@ int sg_issue_command(struct burn_drive *d, struct command *c)
break;
}
#ifdef Libburn_for_freebsd_ahcI
/* ts B00325 : Advise by Alexander Motin */
/* Runs well on 8-STABLE (23 Mar 2003)
But on 8-RELEASE cam_send_ccb() returns non-zero with errno 6
on eject. Long lasting TEST UNIT READY cycles break with
errno 16.
*/
#ifdef Libburn_ahci_style_for_alL
{
#else
if (d->is_ahci > 0) {
#endif
ccb->ccb_h.flags |= CAM_PASS_ERR_RECOVER;
cam_pass_err_recover = 1;
}
#endif /* Libburn_for_freebsd_ahcI */
ccb->csio.cdb_len = c->oplen;
memcpy(&ccb->csio.cdb_io.cdb_bytes, &c->opcode, c->oplen);
@@ -807,8 +851,74 @@ int sg_issue_command(struct burn_drive *d, struct command *c)
}
do {
memset(c->sense, 0, sizeof(c->sense));
err = cam_send_ccb(d->cam, ccb);
if (err == -1) {
ignore_error = sense_len = 0;
/* ts B00325 : CAM_AUTOSNS_VALID advised by Alexander Motin */
if (ccb->ccb_h.status & CAM_AUTOSNS_VALID) {
/* ts B00110 */
/* Better curb sense_len */
sense_len = ccb->csio.sense_len;
if (sense_len > sizeof(c->sense))
sense_len = sizeof(c->sense);
memcpy(c->sense, &ccb->csio.sense_data, sense_len);
if (sense_len >= 14 && cam_pass_err_recover &&
(c->sense[2] & 0x0f))
ignore_error = 1;
}
if (err == -1 && cam_pass_err_recover && ! ignore_error) {
#ifdef Libburn_ahci_verbouS
fprintf(stderr, "libburn_EXPERIMENTAL: errno = %d . cam_errbuf = '%s'\n", errno, cam_errbuf);
#endif
if (errno == ENXIO && c->opcode[0] != 0) {
/* Operations on empty or ejected tray */
/* MEDIUM NOT PRESENT */
#ifdef Libburn_ahci_verbouS
fprintf(stderr, "libburn_EXPERIMENTAL: Emulating [2,3A,00] MEDIUM NOT PRESENT\n");
#endif
c->sense[2] = 0x02;
c->sense[12] = 0x3A;
c->sense[13] = 0x00;
sense_len = 14;
ignore_error = 1;
} else if (c->opcode[0] == 0 &&
(errno == EBUSY || errno == ENXIO)) {
/* Timeout of TEST UNIT READY loop */
/* Inquiries while tray is being loaded */
/*LOGICAL UNIT NOT READY,CAUSE NOT REPORTABLE*/
#ifdef Libburn_ahci_verbouS
fprintf(stderr, "libburn_EXPERIMENTAL: Emulating [2,04,00] LOGICAL UNIT NOT READY,CAUSE NOT REPORTABLE\n");
#endif
c->sense[2] = 0x02;
c->sense[12] = 0x04;
c->sense[13] = 0x00;
sense_len = 14;
ignore_error = 1;
} else if (errno == EINVAL) {
/* Inappropriate MODE SENSE */
/* INVALID FIELD IN CDB */
#ifdef Libburn_ahci_verbouS
fprintf(stderr, "libburn_EXPERIMENTAL: Emulating [5,24,00] INVALID FIELD IN CDB\n");
#endif
c->sense[2] = 0x05;
c->sense[12] = 0x24;
c->sense[13] = 0x00;
sense_len = 14;
ignore_error = 1;
}
}
if (err == -1 && !ignore_error) {
libdax_msgs_submit(libdax_messenger,
d->global_index, 0x0002010c,
LIBDAX_MSGS_SEV_FATAL, LIBDAX_MSGS_PRIO_HIGH,
@@ -822,20 +932,33 @@ int sg_issue_command(struct burn_drive *d, struct command *c)
}
/* XXX */
/* ts B00110 */
/* Better curb sense_len */
sense_len = ccb->csio.sense_len;
if (sense_len > sizeof(c->sense))
sense_len = sizeof(c->sense);
memcpy(c->sense, &ccb->csio.sense_data, ccb->csio.sense_len);
if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) {
if (!c->retry) {
if (sense_len < 14) {
/*LOGICAL UNIT NOT READY,CAUSE NOT REPORTABLE*/
#ifdef Libburn_ahci_verbouS
fprintf(stderr, "libburn_EXPERIMENTAL: CAM_STATUS= %d .Emulating [2,04,00] LOGICAL UNIT NOT READY,CAUSE NOT REPORTABLE\n", (ccb->ccb_h.status & CAM_STATUS_MASK));
#endif
c->sense[2] = 0x02;
c->sense[12] = 0x04;
c->sense[13] = 0x00;
no_retry = 1;
}
if (no_retry || ignore_error || !c->retry) {
c->error = 1;
{ret = 1; goto ex;}
}
switch (scsi_error(d, c->sense, 0)) {
case RETRY:
done = 0;
if (burn_sg_log_scsi & 3) {
/* >>> Need own duration time
measurement. Then remove bit1 */
scsi_log_err(c, fp, c->sense, 0,
(c->error != 0) | 2);
scsi_log_cmd(c,fp,0);
}
break;
case FAIL:
done = 1;

View File

@@ -553,7 +553,7 @@ int sg_release(struct burn_drive *d)
*/
int sg_issue_command(struct burn_drive *d, struct command *c)
{
int sense_valid = 0, i, usleep_time, timeout_ms;
int sense_valid = 0, i, usleep_time, timeout_ms, no_retry = 0;
time_t start_time;
driver_return_code_t i_status;
unsigned int dxfer_len;
@@ -568,15 +568,15 @@ int sg_issue_command(struct burn_drive *d, struct command *c)
return 0;
}
p_cdio = (CdIo_t *) d->p_cdio;
if (burn_sg_log_scsi & 1) {
if (fp == NULL) {
fp= fopen("/tmp/libburn_sg_command_log", "a");
fprintf(fp,
"\n-----------------------------------------\n");
}
}
if (burn_sg_log_scsi & 3)
scsi_log_cmd(c,fp,0);
if (burn_sg_log_scsi & 1) {
if (fp == NULL) {
fp= fopen("/tmp/libburn_sg_command_log", "a");
fprintf(fp,
"\n-----------------------------------------\n");
}
}
if (burn_sg_log_scsi & 3)
scsi_log_cmd(c,fp,0);
memcpy(cdb.field, c->opcode, c->oplen);
if (c->dir == TO_DRIVE) {
@@ -628,24 +628,35 @@ int sg_issue_command(struct burn_drive *d, struct command *c)
}
*/
if (!sense_valid) {
if ((!sense_valid) ||
((c->sense[2] & 0x0f) == 0 && c->sense[12] == 0 &&
c->sense[13] == 0)) {
memset(c->sense, 0, sizeof(c->sense));
if (i_status != 0) { /* set dummy sense */
/*LOGICAL UNIT NOT READY,CAUSE NOT REPORTABLE*/
/*LOGICAL UNIT NOT READY,
CAUSE NOT REPORTABLE*/
c->sense[2] = 0x02;
c->sense[12] = 0x04;
no_retry = 1;
}
} else
c->sense[2] &= 15;
if (i_status != 0 ||
(c->sense[2] || c->sense[12] || c->sense[13])) {
if (!c->retry) {
if (no_retry || !c->retry) {
c->error = 1;
goto ex;
}
switch (scsi_error(d, c->sense, 18)) {
case RETRY:
if (burn_sg_log_scsi & 3) {
/* >>> Need own duration time
measurement. Then remove bit1 */
scsi_log_err(c, fp, c->sense, 0,
(c->error != 0) | 2);
scsi_log_cmd(c,fp,0);
}
break;
case FAIL:
c->error = 1;

View File

@@ -1928,6 +1928,11 @@ int sg_issue_command(struct burn_drive *d, struct command *c)
switch (scsi_error(d, s.sbp, s.sb_len_wr)) {
case RETRY:
done = 0;
if (burn_sg_log_scsi & 3) {
scsi_log_err(c, fp, s.sbp, s.duration,
c->error != 0);
scsi_log_cmd(c,fp,0);
}
break;
case FAIL:
done = 1;

View File

@@ -113,7 +113,8 @@ int spc_test_unit_ready(struct burn_drive *d)
int spc_wait_unit_attention(struct burn_drive *d, int max_sec, char *cmd_text,
int flag)
{
int i, ret = 1, key = 0, asc = 0, ascq = 0;
int i, ret = 1, key = 0, asc = 0, ascq = 0, clueless_start = 0;
static int clueless_timeout = 5 * 10;
char msg[320];
unsigned char sense[14];
enum response resp;
@@ -143,6 +144,7 @@ int spc_wait_unit_attention(struct burn_drive *d, int max_sec, char *cmd_text,
/* media change notice = try again */
goto slumber;
handle_error:;
/* ts A90213 */
sprintf(msg,
"Asynchronous SCSI error on %s: ", cmd_text);
@@ -157,7 +159,23 @@ int spc_wait_unit_attention(struct burn_drive *d, int max_sec, char *cmd_text,
msg, 0, 0);
d->cancel = 1;
break;
}
} else if (ascq == 0x00) { /* CAUSE NOT REPORTABLE */
/* Might be a clueless system adapter */
if (clueless_start == 0)
clueless_start = i;
if (i - clueless_start > clueless_timeout) {
libdax_msgs_submit(libdax_messenger,
d->global_index,
0x00000002,
LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_HIGH,
"Ended clueless NOT READY cycle",
0, 0);
ret = 1; /* medium not present = ok */
break;
}
} else if (ascq == 0x02 || ascq == 0x03)
goto handle_error;
slumber:;
usleep(100000);
}
@@ -961,13 +979,13 @@ enum response scsi_error_msg(struct burn_drive *d, unsigned char *sense,
*key= *asc= *ascq= -1;
if (senselen<=0 || senselen>2)
*key = sense[2];
*key = sense[2] & 0x0f;
if (senselen<=0 || senselen>12)
*asc = sense[12];
if (senselen<=0 || senselen>13)
*ascq = sense[13];
sprintf(msg, "[%X %2.2X %2.2X] ", (*key) & 0xf, *asc, *ascq);
sprintf(msg, "[%X %2.2X %2.2X] ", *key, *asc, *ascq);
msg= msg + strlen(msg);
burn_print(12, "CONDITION: 0x%x 0x%x 0x%x on %s %s\n",
@@ -982,8 +1000,11 @@ enum response scsi_error_msg(struct burn_drive *d, unsigned char *sense,
sprintf(msg, "Not ready");
return RETRY;
case 0x04:
sprintf(msg,
if (*ascq == 1)
sprintf(msg,
"Logical unit is in the process of becoming ready");
else
sprintf(msg, "Logical unit is not ready");
return RETRY;
case 0x08:
if (*key != 4)

View File

@@ -732,6 +732,13 @@ int main(int argc, char **argv)
{
int ret;
/* A warning to programmers who start their own projekt from here. */
if (sizeof(off_t) != 8) {
fprintf(stderr,
"\nFATAL: Compile time misconfiguration. off_t is not 64 bit.\n\n");
exit(39);
}
ret = libburner_setup(argc, argv);
if (ret)
exit(ret);