Compare commits

..

15 Commits

Author SHA1 Message Date
fc1b93b15c Documented changes and release timestamp 2009-03-13 14:14:51 +00:00
b3e1136694 Updated cdrskin tarball generator 2009-03-13 11:28:43 +00:00
34bb592b60 Made libburn number transition to 0.6.4 2009-03-13 11:27:27 +00:00
34535a9cbf Branching for libburn release 0.6.4 2009-03-13 08:00:19 +00:00
635405da8f Reacted on compiler warnings of SchilliX-0.6.7 (based on Solaris 5.11) 2009-03-08 14:01:10 +00:00
aafa543391 Lifted the ban on operating systems other than Linux and FreeBSD 2009-03-05 14:53:00 +00:00
8594cd96bc Making optional use of statvfs() in sg-dummy 2009-03-03 09:20:53 +00:00
b07c83ed86 Added a dummy function with loud compiler warning to sg.c dummy case 2009-03-02 20:01:37 +00:00
d74b1a2008 Fixed a race condition on abort with stdio writing which could cause SIGSEGV 2009-03-02 19:33:47 +00:00
8c56ca131f New operating system adapter "dummy" for stdio on POSIX-like systems 2009-03-02 17:01:21 +00:00
53e4483460 New stream_recording mode with start number 2009-02-27 21:17:05 +00:00
591c385489 New API function burn_drive_set_stream_recording() 2009-02-27 14:30:57 +00:00
b0f1f67495 Forgotten version leap to 0.6.3 in libburn.h 2009-02-20 13:23:57 +00:00
6139fb32dd Updated cdrskin tarball generator 2009-02-20 12:52:15 +00:00
01ed4729bd Made number transition to 0.6.3 2009-02-20 12:50:12 +00:00
25 changed files with 795 additions and 103 deletions

View File

@ -103,9 +103,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 - A90220
## cdrskin construction site - ts A60816 - A90313
cdrskin_cdrskin_CPPFLAGS = -Ilibburn
cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_0_6_2
cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_0_6_4
# cdrskin_cdrskin_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
# ts A80123, change proposed by Simon Huggins to cause dynamic libburn linking

34
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.6.2.pl00.tar.gz
http://files.libburnia-project.org/releases/libburn-0.6.4.pl00.tar.gz
------------------------------------------------------------------------------
@ -19,10 +19,10 @@ Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
From tarball
Obtain libburn-0.6.2.pl00.tar.gz, take it to a directory of your choice and do:
Obtain libburn-0.6.4.pl00.tar.gz, take it to a directory of your choice and do:
tar xzf libburn-0.6.2.pl00.tar.gz
cd libburn-0.6.2
tar xzf libburn-0.6.4.pl00.tar.gz
cd libburn-0.6.4
./configure --prefix=/usr
make
@ -83,8 +83,10 @@ These are libraries, language bindings, and middleware binaries which emulate
classical (and valuable) Linux tools.
Currently it is supported on Linux with kernels >= 2.4 and on FreeBSD versions
with ATAPI/CAM support enabled in the kernel, see atapicam(4).
On other X/Open compliant systems there will only be pseudo drives, but no
direct MMC operation on real CD/DVD/BD drives.
For ports to other systems we would need : login on a development machine
For full ports to other systems we would need : login on a development machine
resp. a live OS on CD or DVD, advise from a system person about the equivalent
of Linux sg or FreeBSD CAM, volunteers for testing of realistic use cases.
@ -363,13 +365,29 @@ Project history as far as known to me:
- 2nd Jan 2009 libburn-0.6.0 allows to format BD-R and to write to either
formatted or unformatted BD-R.
- 6th Jan 2009 libisoburn-0.3.2 can produce and execute commands for mounting
older sessions from all kinds of media. Pseudo-drives outside the /dev/ tree
can be addressed without prefix "stdio:".
- 6th Jan 2009 libisoburn-0.3.2. xorriso can produce and execute commands for
mounting older sessions from all kinds of media. Pseudo-drives outside the
/dev/ tree can be addressed without prefix "stdio:".
- 20th Feb 2009 libburn-0.6.2 source release now compiles out of the box
on FreeBSD.
- 28 Feb 2009 libisofs-0.6.14 can record ACLs and Extended Attributes xattr
in its ISO images.
- 01 Mar 2009 libisoburn-0.3.4. xorriso makes use of the ACL and xattr
capabilities provided by libisofs for xorriso backup features.
- 11 Mar 2009 libisofs-0.6.16 of libisofs fixes two bugs which on Solaris
prevented to navigate the ISO images by ".." and to recognize the Rock Ridge
extensions of ISO images. The ban to build libisofs on operating systems
other than Linux and FreeBSD has been lifted.
- 13 Mar 2009 libburn-0.6.4 got a dummy adapter for SCSI/MMC command transport.
It will show no drives and thus libburn will only be able to perform
operations on "stdio:" pseudo drives. Nevertheless this allowed to lift the
ban to build libburn on operating systems other than Linux and FreeBSD.
------------------------------------------------------------------------------

View File

@ -14,7 +14,9 @@ AC_DEFUN([TARGET_SHIZZLE],
LIBBURN_ARCH_LIBS=-lcam
;;
*)
AC_ERROR([You are attempting to compile for an unsupported platform])
ARCH=
LIBBURN_ARCH_LIBS=
# AC_ERROR([You are attempting to compile for an unsupported platform])
;;
esac

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.6.2.pl00.tar.gz
http://scdbackup.sourceforge.net/cdrskin-0.6.4.pl00.tar.gz
Copyright (C) 2006-2009 Thomas Schmitt, provided under GPL version 2.
------------------------------------------------------------------------------
@ -14,6 +14,8 @@ most of the libburn features from the command line.
Currently it is supported on Linux with kernels >= 2.4 and on FreeBSD versions
with ATAPI/CAM support enabled in the kernel, see atapicam(4).
On other X/Open compliant systems there will only be pseudo drives, but no
direct MMC operation on real CD/DVD/BD drives.
By using this software you agree to the disclaimer at the end of this text
"This software is provided as is. There is no warranty implied and ..."
@ -21,10 +23,10 @@ By using this software you agree to the disclaimer at the end of this text
Compilation, First Glimpse, Installation
Obtain cdrskin-0.6.2.pl00.tar.gz, take it to a directory of your choice and do:
Obtain cdrskin-0.6.4.pl00.tar.gz, take it to a directory of your choice and do:
tar xzf cdrskin-0.6.2.pl00.tar.gz
cd cdrskin-0.6.2
tar xzf cdrskin-0.6.4.pl00.tar.gz
cd cdrskin-0.6.4
Within that directory execute:
@ -286,6 +288,9 @@ nominal speed by option "stream_recording=on".
In this case bad blocks are not detected during write and not even previously
known bad blocks are avoided. So you have to make your own readability tests
and go back to half speed as soon as the first read errors show up.
Instead of "on" one may also set a start address for stream recording.
Like "stream_recording=100m". This will write slowly to the first 100 MB of
the media and accelerate when writing to higher addresses.
Option --grow_overwriteable_iso allows -multi (although unneeded), enables
-msinfo and -toc, and makes blank=fast an invalidator for ISO filesystems

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.6.2"
skin_release="0.6.4"
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.6.3"
skin_release="0.6.5"
patch_level=""
skin_rev="$skin_release""$patch_level"

View File

@ -1186,13 +1186,15 @@ Use and report literal Bus,Target,Lun addresses rather than real SCSI and
pseudo ATA addresses. This method is outdated and was never compatible with
original cdrecord.
.TP
.BI stream_recording="on"|"off"
.BI stream_recording="on"|"off"|number
By setting "on" request that compliance to the desired speed setting is
preferred over management of write errors. With DVD-RAM and BD this can
bring effective write speed near to the nominal write speed of the media.
But it will also disable the automatic use of replacement blocks
if write errors occur. It might as well be disliked or ignored by the drive.
.br
If a number is given, then error management stays enabled for all byte
addresses below that number. Any number below 16s is the same as "off".
.SH EXAMPLES
.SS
.B Get an overview of drives and their addresses:

View File

@ -88,7 +88,7 @@ or
/** The official program version */
#ifndef Cdrskin_prog_versioN
#define Cdrskin_prog_versioN "0.6.2"
#define Cdrskin_prog_versioN "0.6.4"
#endif
/** The official libburn interface revision to use.
@ -101,7 +101,7 @@ or
#define Cdrskin_libburn_minoR 6
#endif
#ifndef Cdrskin_libburn_micrO
#define Cdrskin_libburn_micrO 2
#define Cdrskin_libburn_micrO 4
#endif
@ -135,44 +135,44 @@ or
#endif /* Cdrskin_libburn_cvs_A60220_tS */
#ifdef Cdrskin_libburn_0_6_2
#define Cdrskin_libburn_versioN "0.6.2"
#ifdef Cdrskin_libburn_0_6_4
#define Cdrskin_libburn_versioN "0.6.4"
#define Cdrskin_libburn_from_pykix_svN 1
#endif /* Cdrskin_libburn_0_6_2 */
#endif /* Cdrskin_libburn_0_6_4 */
#ifdef Cdrskin_libburn_0_6_3
#define Cdrskin_libburn_versioN "0.6.3"
#ifdef Cdrskin_libburn_0_6_5
#define Cdrskin_libburn_versioN "0.6.5"
#define Cdrskin_libburn_from_pykix_svN 1
/* Place novelty switch macros here.
Move them down to Cdrskin_libburn_from_pykix_svN on version leap
*/
/* there are no libburn novelties in 0.6.3 yet */
/* there are no libburn novelties in 0.6.5 yet */
#endif /* Cdrskin_libburn_0_6_3 */
#endif /* Cdrskin_libburn_0_6_5 */
#ifndef Cdrskin_libburn_versioN
#define Cdrskin_libburn_0_6_2
#define Cdrskin_libburn_versioN "0.6.2"
#define Cdrskin_libburn_0_6_4
#define Cdrskin_libburn_versioN "0.6.4"
#define Cdrskin_libburn_from_pykix_svN 1
#endif
#ifdef Cdrskin_libburn_0_6_2
#ifdef Cdrskin_libburn_0_6_4
#undef Cdrskin_libburn_majoR
#undef Cdrskin_libburn_minoR
#undef Cdrskin_libburn_micrO
#define Cdrskin_libburn_majoR 0
#define Cdrskin_libburn_minoR 6
#define Cdrskin_libburn_micrO 2
#define Cdrskin_libburn_micrO 4
#endif
#ifdef Cdrskin_libburn_0_6_3
#ifdef Cdrskin_libburn_0_6_5
#undef Cdrskin_libburn_majoR
#undef Cdrskin_libburn_minoR
#undef Cdrskin_libburn_micrO
#define Cdrskin_libburn_majoR 0
#define Cdrskin_libburn_minoR 6
#define Cdrskin_libburn_micrO 3
#define Cdrskin_libburn_micrO 5
#endif
@ -254,6 +254,12 @@ or
/* 0.5.0 , 0.5.2 , 0.5.4 , 0.5.6 , 0.5.8 , 0.6.0 , 0.6.2 */
/* novel libburn features are transparent to cdrskin */
/* 0.6.4 */
/* Ended to mark novelties by macros.
libburnia libburn and cdrskin are fixely in sync now.
icculus libburn did not move for 30 months.
*/
#ifdef Cdrskin_new_api_tesT
@ -2692,10 +2698,13 @@ set_dev:;
" --single_track accept only last argument as source_address\n");
#ifdef Cdrskin_libburn_has_stream_recordinG
printf(" stream_recording=\"on\"|\"off\"|number\n");
printf(
" stream_recording=\"on\"|\"off\" \"on\" requests to prefer speed\n");
" \"on\" requests to prefer speed over write\n");
printf(
" over write error management.\n");
" error management. A number prevents this with\n");
printf(
" byte addresses below that number.\n");
#endif
#ifdef Cdrskin_allow_libburn_taO
@ -3120,7 +3129,7 @@ struct CdrskiN {
int gracetime;
int dummy_mode;
int force_is_set;
int stream_recording_is_set;
int stream_recording_is_set; /* see burn_write_opts_set_stream_recording() */
int single_track;
int prodvd_cli_compatible;
@ -6466,7 +6475,7 @@ burn_failed:;
burn_write_opts_set_force(o, !!skin->force_is_set);
#endif
#ifdef Cdrskin_libburn_has_stream_recordinG
burn_write_opts_set_stream_recording(o, !!skin->stream_recording_is_set);
burn_write_opts_set_stream_recording(o, skin->stream_recording_is_set);
#endif
if(skin->dummy_mode) {
@ -6988,7 +6997,7 @@ sorry_failed_to_eject:;
int Cdrskin_setup(struct CdrskiN *skin, int argc, char **argv, int flag)
{
int i,k,l,ret,source_has_size=0, idx= -1;
double value,grab_and_wait_value= -1.0;
double value,grab_and_wait_value= -1.0, num;
char *cpt,*value_pt,adr[Cdrskin_adrleN],*blank_mode= "";
struct stat stbuf;
@ -7725,9 +7734,15 @@ set_speed:;
set_stream_recording:;
if(strcmp(value_pt, "on")==0)
skin->stream_recording_is_set= 1;
else
else if(value_pt[0] >= '0' && value_pt[0] <= '9') {
num= Scanf_io_size(value_pt, 0);
num/= 2048.0;
if(num >= 16 && num <= 0x7FFFFFFF)
skin->stream_recording_is_set= num;
else
skin->stream_recording_is_set= 0;
} else
skin->stream_recording_is_set= 0;
} else if(strcmp(argv[i],"-swab")==0) {
skin->swap_audio_bytes= 0;

View File

@ -59,7 +59,7 @@ and to MMC-5 for DVD or BD).
GPL software included:<BR>
</H2>
<DL>
<DT>libburn-0.6.2</DT>
<DT>libburn-0.6.4</DT>
<DD>(founded by Derek Foreman and Ben Jansens,
developed and maintained since August 2006 by
Thomas Schmitt from team of libburnia-project.org)
@ -148,6 +148,9 @@ as listed by option --devices.</DT>
<DD><KBD>&nbsp;&nbsp;--tell_media_space 2>/dev/null)</KBD></DD>
<DD>$<KBD>&nbsp;echo "Available: $x blocks of 2048 data bytes"</KBD></DD>
<DT>Accelerate BD-RE writing to full nominal speed after the first 250 MB</DT>
<DD>$<KBD>&nbsp;cdrskin ... stream_recording=250m ...</KBD>
<DT>Write audio tracks to CD:</DT>
<DD>$<KBD>&nbsp;cdrskin -v dev=ATA:1,0,0 speed=48 -sao \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;track1.wav track2.au -audio -swab track3.raw</KBD></DD>
@ -191,7 +194,7 @@ or to do experiments on BD-R media.
<P>
<DL>
<DT>Download as source code (see README):</DT>
<DD><A HREF="cdrskin-0.6.2.pl00.tar.gz">cdrskin-0.6.2.pl00.tar.gz</A>
<DD><A HREF="cdrskin-0.6.4.pl00.tar.gz">cdrskin-0.6.4.pl00.tar.gz</A>
(750 KB).
</DD>
<DD>
@ -241,18 +244,20 @@ 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.6.0.pl00:
Enhancements towards previous stable version cdrskin-0.6.2.pl00:
<UL>
<LI>Improvements with build system for FreeBSD</LI>
<LI>New operating system adapter "dummy" for stdio on general X/Open systems
</LI>
<LI>New stream recording mode with start address</LI>
<LI></LI>
<!--
<LI>none</LI>
-->
</UL>
Bug fixes towards cdrskin-0.6.0.pl00:
Bug fixes towards cdrskin-0.6.2.pl00:
<UL>
<LI>BD-R media were not closed properly.
The last session staid open and unreadable.</LI>
<LI>none</LI>
<!--
<LI>none</LI>
-->
@ -262,8 +267,8 @@ Bug fixes towards cdrskin-0.6.0.pl00:
<P>
<DL>
<DT><H3>Development snapshot, version 0.6.3 :</H3></DT>
<DD>Enhancements towards current stable version 0.6.0.pl00:
<DT><H3>Development snapshot, version 0.6.5 :</H3></DT>
<DD>Enhancements towards current stable version 0.6.4.pl00:
<UL>
<LI>none yet</LI>
<!--
@ -272,10 +277,10 @@ Bug fixes towards cdrskin-0.6.0.pl00:
</UL>
</DD>
<DD>&nbsp;</DD>
<DD><A HREF="README_cdrskin_devel">README 0.6.3</A>
<DD><A HREF="cdrskin__help_devel">cdrskin_0.6.3 --help</A></DD>
<DD><A HREF="cdrskin_help_devel">cdrskin_0.6.3 -help</A></DD>
<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 0.6.3)</A></DD>
<DD><A HREF="README_cdrskin_devel">README 0.6.5</A>
<DD><A HREF="cdrskin__help_devel">cdrskin_0.6.5 --help</A></DD>
<DD><A HREF="cdrskin_help_devel">cdrskin_0.6.5 -help</A></DD>
<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 0.6.5)</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>
@ -295,7 +300,7 @@ admins with full system souvereignty.</DT>
<A HREF="README_cdrskin_devel">upcoming README</A> ):
</DD>
<DD>
<A HREF="cdrskin-0.6.3.tar.gz">cdrskin-0.6.3.tar.gz</A>
<A HREF="cdrskin-0.6.5.tar.gz">cdrskin-0.6.5.tar.gz</A>
(750 KB).
</DD>

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2009.02.20.090001"
#define Cdrskin_timestamP "2009.03.13.080001"

View File

@ -6244,14 +6244,14 @@ Documented changes and release timestamp
* Formatting and writing of BD-R media
* New API function burn_get_read_capacity()
03 Jan 2009 []
2009.01.04.112716 [2351]
COPYRIGHT
libburn/libdax_msgs.c
libburn/libdax_msgs.h
test/libburner.c
Updated copyright claims to year 2009
[]
2009.01.04.113401 [2352]
Makefile.am
configure.ac
README
@ -6261,28 +6261,282 @@ cdrskin/README
cdrskin/compile_cdrskin.sh
cdrskin/cdrskin_timestamp.h
cdrskin/cdrskin_eng.html
Made number transition to 0.6.0
Made number transition to 0.6.1
03 Jan 2009 []
04 Jan 2009 [2353]
- cdrskin/add_ts_changes_to_libburn_0_5_8
- cdrskin/add_ts_changes_to_libburn_0_5_9
+ cdrskin/add_ts_changes_to_libburn_0_6_0
+ cdrskin/add_ts_changes_to_libburn_0_6_1
Updated cdrskin tarball generator
03 Jan 2009 []
03 Jan 2009 [2354]
cdrskin/changelog.txt
Documented changes and release timestamp
------------------------------------ cycle - cdrskin-0.6.1 - 2009.01.04.113401
------------------------------------ cycle - cdrskin-0.6.1 -
------------------------------------ cycle - cdrskin-0.6.1 -
04 Jan 2009 [2356]
svn move
http://svn.libburnia-project.org/libburn/branches/ZeroSixZero
http://svn.libburnia-project.org/libburn/tags/ZeroSixZero
libburn release 0.6.0 is ready
[]
2009.01.06.122534 [2366]
libburn/spc.c
Error texts for ASC 73 : power calibration and program memory
2009.01.06.122808 [2367] [2369]
libburn/async.c
libburn/libdax_msgs.h
Complaining and refusing more early with unformatted BD-RE
7 Jan 2009 [2370]
cdrskin/cdrskin.1
Clarification about one-time DVD and BD media
2009.01.07.154414 [2371]
libburn/write.c
Bug fix: BD-R were not correctly finalized
7 Jan 2009 [2372]
cdrskin/cdrskin_eng.html
Mentioned bug fix and pl01
------------------------------------ cycle - cdrskin-0.6.1 - 2009.01.07.154414
7 Jan 2009 [2373]
svn copy -m "Branching for libburn bugfix release 0.6.0.pl01" \
http://svn.libburnia-project.org/libburn/ \
http://svn.libburnia-project.org/libburn/
7 Jan 2009 [2374]
svn rm -m 'Removing falsly copied tag' \
http://svn.libburnia-project.org/libburn/libburn
7 Jan 2009 [2375]
svn copy -m "Branching for libburn bugfix release 0.6.0.pl01" \
http://svn.libburnia-project.org/libburn/tags/ZeroSixZero \
http://svn.libburnia-project.org/libburn/branches/ZeroSixZeroPl01
2009.01.07.140001 [branch 2376]
README
cdrskin/README
cdrskin/cdrskin_eng.html
cdrskin/cdrskin_timestamp.h
Mentioned bug fix and pl01
2009.01.07.140001 [branch 2377]
libburn/write.c
Bug fix: BD-R were not correctly finalized
7 Jan 2009 [2378]
svn move -m 'libburn bugfix release 0.6.0.pl01 is ready' \
http://svn.libburnia-project.org/libburn/branches/ZeroSixZeroPl01 \
http://svn.libburnia-project.org/libburn/tags/ZeroSixZeroPl01
------------------------------------ cycle - cdrskin-0.6.1 - 2009.01.07.154414
2009.01.09.095943 [2381]
libburn/transport.h
libburn/write.c
libburn/mmc.c
libburn/libdax_msgs.h
Recognizing BD-R media spoiled by the close bug and handling them as appendable
------------------------------------ cycle - cdrskin-0.6.1 - 2009.01.09.100210
2009.01.09.161704 [2383]
libburn/write.c
Preventing a possible bug with a burn run of more than one session at once
2009.01.11.102711 [2390]
libburn/write.c
libburn/libdax_msgs.h
Prepared eventual closing of spoiled BD-R media by a pseudo write run
11 Jan 2009 [2391]
doc/cookbook.txt
Updated cookbook about BD-R media
27 Jan 2009 [2431]
README
libburn/libburn.h
Mentioned the need for 64 bit file i/o
2009.02.04.102822 [2447]
Makefile.am
Linking with $LIBBURN_ARCH_LIBS to get -lcam on FreeBSD
4 Feb 2009 [2448]
README
cdrskin/README
Mentioned hald as possibly conflicting service
2009.02.19.192801 [2479]
libburn/spc.c
Human readable error messages with asynchronous SCSI errors
20 Feb 2009 [2482]
svn copy http://svn.libburnia-project.org/libburn/trunk
http://svn.libburnia-project.org/libburn/branches/ZeroSixZero
Preparing for libburn-0.6.0
2009.02.20.090001 [2483]
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.6.2
20 Feb 2009 [2484]
- cdrskin/add_ts_changes_to_libburn_0_6_0
- cdrskin/add_ts_changes_to_libburn_0_6_1
+ cdrskin/add_ts_changes_to_libburn_0_6_2
+ cdrskin/add_ts_changes_to_libburn_0_6_3
Updated cdrskin tarball generator
------------------------------ release - cdrskin-0.6.2.pl00 - 2009.02.20.090001
* Improvements with build system for FreeBSD
2009.02.20.124909 [2485]
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.6.3
20 Feb 2009 [2486]
- cdrskin/add_ts_changes_to_libburn_0_6_0
- cdrskin/add_ts_changes_to_libburn_0_6_1
+ cdrskin/add_ts_changes_to_libburn_0_6_2
+ cdrskin/add_ts_changes_to_libburn_0_6_3
Updated cdrskin tarball generator
------------------------------------ cycle - cdrskin-0.6.3 - 2009.02.20.132535
20 Feb 2009 [2489]
svn move -m libburn release 0.6.2 is ready
http://svn.libburnia-project.org/libburn/branches/ZeroSixTwo
http://svn.libburnia-project.org/libburn/tags/ZeroSixTwo
2009.02.27.143100 [2500]
libburn/libburn.h
libburn/transport.h
libburn/drive.c
libburn/options.c
libburn/write.c
libburn/mmc.c
New API function burn_drive_set_stream_recording()
2009.02.27.211707 [2501]
cdrskin/cdrskin.c
cdrskin/cdrskin.1
New stream_recording mode with start number
2009.03.02.170126 [2513]
libburn/os.h
libburn/libdax_msgs.h
libburn/sg.c
+ libburn/os-dummy.h
+ libburn/sg-dummy.c
New operating system adapter "dummy" for stdio on POSIX-like systems
2009.03.02.193353 [2514]
libburn/drive.c
Fixed a race condition on abort with stdio writing which could cause SIGSEGV
2009.03.02.200132 [2515]
libburn/sg.c
Added a dummy function with loud compiler warning to sg.c dummy case
2009.03.03.092057 [2516]
configure.ac
libburn/sg-dummy.c
Making optional use of statvfs() in sg-dummy
------------------------------------ cycle - cdrskin-0.6.3 - 2009.03.03.092057
* New API function burn_drive_set_stream_recording()
* New stream recording mode with start number
2009.03.05.145309 [2520]
acinclude.m4
Lifted the ban on operating systems other than Linux and FreeBSD
------------------------------------ cycle - cdrskin-0.6.3 - 2009.03.05.145309
* New operating system adapter "dummy" for stdio on POSIX-like systems
2009.03.08.140120 [2522]
libburn/cleanup.c
Reacted on compiler warnings of SchilliX-0.6.7 (based on Solaris 5.11)
13 Mar 2009 [2529]
svn copy -m "Branching for libburn release 0.6.4" \
http://svn.libburnia-project.org/libburn/trunk \
http://svn.libburnia-project.org/libburn/branches/ZeroSixFour
2009.03.13.080001 [2530]
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 libburn number transition to 0.6.4
13 Mar 2009 [2531]
- cdrskin/add_ts_changes_to_libburn_0_6_2
- cdrskin/add_ts_changes_to_libburn_0_6_3
+ cdrskin/add_ts_changes_to_libburn_0_6_4
+ cdrskin/add_ts_changes_to_libburn_0_6_5
Updated cdrskin tarball generator
13 Mar 2009 []
cdrskin/changelog.txt
Documented changes and release timestamp
------------------------------ release - cdrskin-0.6.4.pl00 - 2009.03.13.080001
* New operating system adapter "dummy" for stdio on general X/Open systems
* New API function burn_drive_set_stream_recording()
* New stream recording mode with start address
2009.03.13.135818 [2532]
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 libburn number transition to 0.6.5
13 Mar 2009 [2533]
- cdrskin/add_ts_changes_to_libburn_0_6_2
- cdrskin/add_ts_changes_to_libburn_0_6_3
+ cdrskin/add_ts_changes_to_libburn_0_6_4
+ cdrskin/add_ts_changes_to_libburn_0_6_5
Updated cdrskin tarball generator
------------------------------------ cycle - cdrskin-0.6.5 -
------------------------------------ cycle - cdrskin-0.6.5 -
===============================================================================
TODO
@ -6291,8 +6545,6 @@ Error texts for ASC 73 : power calibration and program memory
--------------------------------- bugs -------------------------------------
- Needed is a system dependend facility: dev_t <-> major, minor
- Do something about drive->buffer asynchronous race conditions
and dangerous use of local heap memory.
(The various asynchronous operations use the same buffer
@ -6329,9 +6581,6 @@ problem with telltoc: double descriptor list from before load and after load
What about cdrskin rc files ? Forward with fallback runs ?
cdrskin/README
Thin out
[]
Emulate -dummy on overwriteables ?

View File

@ -7,7 +7,7 @@
debug_opts="-O2"
def_opts=
largefile_opts="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1"
libvers="-DCdrskin_libburn_0_6_2"
libvers="-DCdrskin_libburn_0_6_4"
cleanup_src_or_obj="libburn/cleanup.o"
libdax_msgs_o="libburn/libdax_msgs.o"
libdax_audioxtr_o="libburn/libdax_audioxtr.o"
@ -33,15 +33,15 @@ do
libdax_audioxtr_o=
libdax_msgs_o="libburn/message.o"
cleanup_src_or_obj="-DCleanup_has_no_libburn_os_H cdrskin/cleanup.c"
elif test "$i" = "-libburn_0_6_2"
elif test "$i" = "-libburn_0_6_4"
then
libvers="-DCdrskin_libburn_0_6_2"
libvers="-DCdrskin_libburn_0_6_4"
libdax_audioxtr_o="libburn/libdax_audioxtr.o"
libdax_msgs_o="libburn/libdax_msgs.o"
cleanup_src_or_obj="libburn/cleanup.o"
elif test "$i" = "-libburn_svn"
then
libvers="-DCdrskin_libburn_0_6_3"
libvers="-DCdrskin_libburn_0_6_5"
libdax_audioxtr_o="libburn/libdax_audioxtr.o"
libdax_msgs_o="libburn/libdax_msgs.o"
cleanup_src_or_obj="libburn/cleanup.o"
@ -75,10 +75,8 @@ do
echo "Options:"
echo " -compile_cdrfifo compile program cdrskin/cdrfifo."
echo " -compile_dewav compile program test/dewav without libburn."
echo " -cvs_A60220 set macro to match libburn-CVS of 20 Feb 2006."
echo " -libburn_0_6_2 set macro to match libburn-0.6.2"
echo " -libburn_0_6_4 set macro to match libburn-0.6.4"
echo " -libburn_svn set macro to match current libburn-SVN."
echo " -no_largefile do not use 64 bit off_t (must match libburn)."
echo " -do_not_compile_cdrskin omit compilation of cdrskin/cdrskin."
echo " -experimental use newly introduced libburn features."
echo " -oldfashioned use pre-0.2.2 libburn features only."

View File

@ -1,4 +1,4 @@
AC_INIT([libburn], [0.6.2], [http://libburnia-project.org])
AC_INIT([libburn], [0.6.4], [http://libburnia-project.org])
AC_PREREQ([2.50])
dnl AC_CONFIG_HEADER([config.h])
@ -42,7 +42,8 @@ dnl So this is a superspace of the SONAME version space. To avoid
dnl ill SONAME, the value of CURRENT must be larger than AGE.
dnl See also http://www.gnu.org/software/libtool/manual.html#Interfaces
dnl
dnl The name of the dynamic library will be libburn.so.$SONAME.$AGE.$REV .
dnl On Linux the name of the dynamic library will be
dnl libburn.so.$SONAME.$AGE.$REV
dnl In the terminology of this file:
dnl CURRENT = LT_CURRENT
dnl AGE = LT_AGE
@ -69,6 +70,7 @@ dnl 0.5.6 = libburn.so.4.21.0
dnl 0.5.8 = libburn.so.4.23.0
dnl 0.6.0 = libburn.so.4.25.0
dnl 0.6.2 = libburn.so.4.27.0
dnl 0.6.4 = libburn.so.4.29.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.
@ -94,7 +96,7 @@ dnl
dnl As said: Only copies. Original in libburn/libburn.h : burn_header_version_*
BURN_MAJOR_VERSION=0
BURN_MINOR_VERSION=6
BURN_MICRO_VERSION=2
BURN_MICRO_VERSION=4
BURN_VERSION=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
AC_SUBST(BURN_MAJOR_VERSION)
@ -105,15 +107,15 @@ AC_SUBST(BURN_VERSION)
dnl Libtool versioning
LT_RELEASE=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
dnl
dnl ts A90220
dnl This is the release version libburn-0.6.2 = libburn.so.4.27.0
dnl ts A90313
dnl This is the release version libburn-0.6.4 = libburn.so.4.29.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 = 31 - 27 = 4 . Library name = libburn.so.4.27.0
LT_CURRENT=31
LT_AGE=27
dnl SONAME = 33 - 29 = 4 . Linux library name = libburn.so.4.29.0
LT_CURRENT=33
LT_AGE=29
LT_REVISION=0
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
@ -162,6 +164,16 @@ TARGET_SHIZZLE
AC_SUBST(ARCH)
AC_SUBST(LIBBURN_ARCH_LIBS)
dnl ts A90303
dnl Check the preconditions for using statvfs() in sg-dummy
dnl (sg-linux and sg-freebsd use statvfs() unconditionally)
STATVFS_DEF=-DLibburn_os_has_statvfS
AC_CHECK_HEADER(sys/statvfs.h, X=, STATVFS_DEF=)
AC_CHECK_FUNC([statvfs], X=, STATVFS_DEF=)
dnl If this would be done more specifically in Makefile.am
dnl via libburn_libburn_la_CFLAGS then undesired .o file names would emerge
CFLAGS="$CFLAGS $STATVFS_DEF"
dnl Add compiler-specific flags
dnl See if the user wants aggressive optimizations of the code

View File

@ -97,8 +97,8 @@ static int Cleanup_handler_exit(int exit_value, int signum, int flag)
return(2);
}
if(cleanup_exiting) {
fprintf(stderr,"cleanup: ABORT : repeat by pid=%d, signum=%d\n",
getpid(),signum);
fprintf(stderr,"cleanup: ABORT : repeat by pid=%.f, signum=%d\n",
(double) getpid(), signum);
return(0);
}
cleanup_exiting= 1;

View File

@ -62,6 +62,7 @@ int burn_setup_drive(struct burn_drive *d, char *fname)
d->stdio_fd = -1;
d->status = BURN_DISC_UNREADY;
d->do_stream_recording = 0;
d->stream_recording_start= 0;
return 1;
}
@ -792,6 +793,18 @@ enum burn_drive_status burn_drive_get_status(struct burn_drive *d,
return d->busy;
}
int burn_drive_set_stream_recording(struct burn_drive *d, int recmode,
int start, int flag)
{
if (recmode == 1)
d->do_stream_recording = 1;
else if (recmode == -1)
d->do_stream_recording = 0;
d->stream_recording_start = start;
return(1);
}
void burn_drive_cancel(struct burn_drive *d)
{
pthread_mutex_lock(&d->access_lock);
@ -1744,10 +1757,18 @@ int burn_abort(int patience,
occup = burn_drive_is_occupied(&(drive_array[i]));
if(occup == -2)
continue;
#ifdef NIX
/* <<< this causes a race condition with drive usage
and drive disposal
*/
if(drive_array[i].drive_role != 1) {
drive_array[i].busy = BURN_DRIVE_IDLE;
burn_drive_forget(&(drive_array[i]), 1);
} else if(occup <= 10) {
} else
#endif /* NIX */
if(occup <= 10) {
burn_drive_forget(&(drive_array[i]), 1);
} else if(occup <= 100) {
if(first_round)

View File

@ -1388,6 +1388,28 @@ int burn_precheck_write(struct burn_write_opts *o, struct burn_disc *disc,
*/
void burn_disc_write(struct burn_write_opts *o, struct burn_disc *disc);
/* ts A90227 */
/** Control stream recording during the write run and eventually set the start
LBA for stream recording.
Stream recording is set from struct burn_write_opts when the write run
gets started. See burn_write_opts_set_stream_recording().
The call described here can be used later to override this setting and
to program automatic switching at a given LBA. It also affects subsequent
calls to burn_random_access_write().
@param drive The drive which performs the write operation.
@param recmode -1= disable stream recording
0= leave setting as is
1= enable stream recording
@param start The LBA where actual stream recording shall start.
(0 means unconditional stream recording)
@param flag Bitfield for control purposes (unused yet, submit 0).
@return 1=success , <=0 failure
@since 0.6.4
*/
int burn_drive_set_stream_recording(struct burn_drive *drive, int recmode,
int start, int flag);
/** Cancel an operation on a drive.
This will only work when the drive's busy state is BURN_DRIVE_READING or
BURN_DRIVE_WRITING.
@ -1906,12 +1928,15 @@ void burn_write_opts_set_force(struct burn_write_opts *opts, int use_force);
/* ts A80412 */
/** Eventually makes use of the more modern write command AAh WRITE12 and
sets the Streaming bit. With DVD-RAM this can override the traditional
slowdown to half nominal speed. But if it speeds up writing then it also
disables error management and correction. Weigh your priorities.
This only affects the write operations of burn_disc_write().
sets the Streaming bit. With DVD-RAM and BD this can override the
traditional slowdown to half nominal speed. But if it speeds up writing
then it also disables error management and correction. Weigh your
priorities. This affects the write operations of burn_disc_write()
and subsequent calls of burn_random_access_write().
@param opts The write opts to change
@param value 0=use 2Ah WRITE10, 1=use AAh WRITE12 with Streaming bit
@since 0.6.4:
>=16 use WRITE12 but not before the LBA given by value
@since 0.4.6
*/
void burn_write_opts_set_stream_recording(struct burn_write_opts *opts,
@ -2235,7 +2260,7 @@ void burn_version(int *major, int *minor, int *micro);
*/
#define burn_header_version_major 0
#define burn_header_version_minor 6
#define burn_header_version_micro 2
#define burn_header_version_micro 4
/** Note:
Above version numbers are also recorded in configure.ac because libtool
wants them as parameters at build time.

View File

@ -542,8 +542,13 @@ Range "scdbackup" : 0x00020000 to 0x0002ffff
0x00020167 (SORRY,HIGH) = Drive does not support non-default formatting
0x00020168 (FAILURE,HIGH) = Media not properly formatted. Cannot write.
0x00020169 (WARNING,HIGH) = Last session on media is still open
0x0002016a (FAILURE,HIGH) = No MMC transport adapter is present
0x0002016b (WARNING,HIGH) = No MMC transport adapter is present
0x0002016c (DEBUG,HIGH) = No MMC transport adapter is present
0x00020170 (NOTE,HIGH) = Closing open session before writing new one
0x00020171 (NOTE,HIGH) = Closing BD-R with accidently open session
libdax_audioxtr:
0x00020200 (SORRY,HIGH) = Cannot open audio source file

View File

@ -55,10 +55,10 @@ extern struct libdax_msgs *libdax_messenger;
/* ts A70306 */
#define Libburn_support_dvd_plus_R 1
/* ts A70509 : handling 0x41 and 0x42 as read-only types */
/* ts A70509 : handling 0x41 as read-only type */
#define Libburn_support_bd_r_readonlY 1
/* >>> ts A81208 */
/* ts A81208 */
#define Libburn_support_bd_plus_r_srM 1
@ -124,6 +124,7 @@ extern struct libdax_msgs *libdax_messenger;
BD-RE is now an officially supported profile.
ts A81209 : The first two sessions have been written to BD-R SRM
(auto formatted without Defect Management).
ts A90107 : BD-R is now supported media type
*/
/* ts A70519 : With MMC commands of data direction FROM_DRIVE:
@ -744,7 +745,7 @@ int mmc_write(struct burn_drive *d, int start, struct buffer *buf)
mmc_wait_for_buffer_free(d, buf);
/* ts A80412 */
if(d->do_stream_recording > 0) {
if(d->do_stream_recording > 0 && start >= d->stream_recording_start) {
/* >>> ??? is WRITE12 available ? */
/* >>> ??? inquire feature 107h Stream Writing bit ? */

View File

@ -385,7 +385,7 @@ void burn_write_opts_set_force(struct burn_write_opts *opts, int use_force)
void burn_write_opts_set_stream_recording(struct burn_write_opts *opts,
int value)
{
opts->do_stream_recording = !!value;
opts->do_stream_recording = value;
}

63
libburn/os-dummy.h Normal file
View File

@ -0,0 +1,63 @@
/* os-dummy.h
Operating system specific libburn definitions and declarations. Included
by os.h in case of compilation for
Unknown POSIX like systems
with the dummy MMC transport adapter sg-dummy.c
Copyright (C) 2009 Thomas Schmitt <scdbackup@gmx.net>, provided under GPL
*/
/** List of all signals which shall be caught by signal handlers and trigger
a graceful abort of libburn. (See man 7 signal.)
*/
/* Once as system defined macros */
#define BURN_OS_SIGNAL_MACRO_LIST \
SIGHUP, SIGINT, SIGQUIT, SIGILL, SIGABRT, \
SIGFPE, SIGSEGV, SIGPIPE, SIGALRM, SIGTERM, \
SIGUSR1, SIGUSR2, SIGXCPU, SIGTSTP, SIGTTIN, \
SIGTTOU
/* Once as text 1:1 list of strings for messages and interpreters */
#define BURN_OS_SIGNAL_NAME_LIST \
"SIGHUP", "SIGINT", "SIGQUIT", "SIGILL", "SIGABRT", \
"SIGFPE", "SIGSEGV", "SIGPIPE", "SIGALRM", "SIGTERM", \
"SIGUSR1", "SIGUSR2", "SIGXCPU", "SIGTSTP", "SIGTTIN", \
"SIGTTOU"
/* The number of above list items */
#define BURN_OS_SIGNAL_COUNT 16
/** To list all signals which shall surely not be caught */
#define BURN_OS_NON_SIGNAL_MACRO_LIST \
SIGKILL, SIGCHLD, SIGSTOP
/* The number of above list items */
#define BURN_OS_NON_SIGNAL_COUNT 3
/* The maximum size for a (SCSI) i/o transaction */
/* Important : MUST be at least 32768 ! */
#define BURN_OS_TRANSPORT_BUFFER_SIZE 65536
/* To hold the position of the most recently delivered address from
device enumeration.
*/
struct burn_drive_enumerator_struct {
int pos;
int info_count;
char **info_list;
};
#define BURN_OS_DEFINE_DRIVE_ENUMERATOR_T \
typedef struct burn_drive_enumerator_struct burn_drive_enumerator_t;
/* The list of operating system dependent elements in struct burn_drive.
Usually they are initialized in sg-*.c:enumerate_common().
*/
#define BURN_OS_TRANSPORT_DRIVE_ELEMENTS \
int just_a_dummy;

View File

@ -3,7 +3,7 @@
Operating system specific libburn definitions and declarations.
The macros defined here are used by libburn modules in order to
avoid own system dependent case distinctions.
Copyright (C) 2006 Thomas Schmitt <scdbackup@gmx.net>, provided under GPL
Copyright (C) 2009 Thomas Schmitt <scdbackup@gmx.net>, provided under GPL
*/
#ifndef BURN_OS_H_INCLUDED
@ -20,14 +20,23 @@
#include "os-freebsd.h"
#else /* operating system case distinction */
#else
#ifdef __linux
/* --------- Linux kernels 2.4 and 2.6 with Linux SCSI Generic (sg) -------- */
#include "os-linux.h"
#endif /* End of operating system case distinction */
#else
/* --------- Any other system. With dummy MMC transport sg-dummy.c --------- */
#include "os-dummy.h"
#endif /* ! __linux */
#endif /* ! __FreeBSD__ */
#endif /* ! BURN_OS_H_INCLUDED */

229
libburn/sg-dummy.c Normal file
View File

@ -0,0 +1,229 @@
/* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */
/*
This is the main operating system dependent SCSI part of libburn. It implements
the transport level aspects of SCSI control and command i/o.
Present implementation: default dummy which enables libburn only to work
with stdio: pseudo drive addresses.
For real implementations see sg-linux.c or sg-freebsd.c
*/
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <string.h>
#ifdef Libburn_os_has_statvfS
#include <sys/statvfs.h>
#endif /* Libburn_os_has_stavtfS */
#include "transport.h"
#include "drive.h"
#include "sg.h"
#include "spc.h"
#include "mmc.h"
#include "sbc.h"
#include "debug.h"
#include "toc.h"
#include "util.h"
#include "libdax_msgs.h"
extern struct libdax_msgs *libdax_messenger;
/** Returns the next index number and the next enumerated drive address.
The enumeration has to cover all available and accessible drives. It is
allowed to return addresses of drives which are not available but under
some (even exotic) circumstances could be available. It is on the other
hand allowed, only to hand out addresses which can really be used right
in the moment of this call. (This implementation chooses the former.)
@param idx An opaque handle. Make no own theories about it.
@param adr Takes the reply
@param adr_size Gives maximum size of reply including final 0
@param initialize 1 = start new,
0 = continue, use no other values for now
-1 = finish
@return 1 = reply is a valid address , 0 = no further address available
-1 = severe error (e.g. adr_size too small)
*/
int sg_give_next_adr(burn_drive_enumerator_t *idx,
char adr[], int adr_size, int initialize)
{
return 0;
}
/** Brings all available, not-whitelist-banned, and accessible drives into
libburn's list of drives.
*/
/* ts A61115: replacing call to sg-implementation internals from drive.c */
int scsi_enumerate_drives(void)
{
libdax_msgs_submit(libdax_messenger, -1, 0x0002016b,
LIBDAX_MSGS_SEV_WARNING, LIBDAX_MSGS_PRIO_HIGH,
"No MMC transport adapter is present. Running on sg-dummy.c.",
0, 0);
return 1;
}
/** Tells wether libburn has the given drive in use or exclusively reserved.
If it is "open" then libburn will eventually call sg_release() on it when
it is time to give up usage resp. reservation.
*/
/** Published as burn_drive.drive_is_open() */
int sg_drive_is_open(struct burn_drive * d)
{
return 0;
}
/** Opens the drive for SCSI commands and - if burn activities are prone
to external interference on your system - obtains an exclusive access lock
on the drive. (Note: this is not physical tray locking.)
A drive that has been opened with sg_grab() will eventually be handed
over to sg_release() for closing and unreserving.
*/
int sg_grab(struct burn_drive *d)
{
libdax_msgs_submit(libdax_messenger, d->global_index, 0x0002016a,
LIBDAX_MSGS_SEV_FAILURE, LIBDAX_MSGS_PRIO_HIGH,
"No MMC transport adapter is present. Running on sg-dummy.c.",
0, 0);
return 0;
}
/** Gives up the drive for SCSI commands and releases eventual access locks.
(Note: this is not physical tray locking.)
*/
int sg_release(struct burn_drive *d)
{
return 0;
}
/** Sends a SCSI command to the drive, receives reply and evaluates wether
the command succeeded or shall be retried or finally failed.
Returned SCSI errors shall not lead to a return value indicating failure.
The callers get notified by c->error. An SCSI failure which leads not to
a retry shall be notified via scsi_notify_error().
The Libburn_log_sg_commandS facility might be of help when problems with
a drive have to be examined. It shall stay disabled for normal use.
@return: 1 success , <=0 failure
*/
int sg_issue_command(struct burn_drive *d, struct command *c)
{
libdax_msgs_submit(libdax_messenger, d->global_index, 0x0002016a,
LIBDAX_MSGS_SEV_FAILURE, LIBDAX_MSGS_PRIO_HIGH,
"No MMC transport adapter is present. Running on sg-dummy.c.",
0, 0);
return -1;
}
/** Tries to obtain SCSI address parameters.
@return 1 is success , 0 is failure
*/
int sg_obtain_scsi_adr(char *path, int *bus_no, int *host_no, int *channel_no,
int *target_no, int *lun_no)
{
libdax_msgs_submit(libdax_messenger, -1, 0x0002016c,
LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_HIGH,
"No MMC transport adapter is present. Running on sg-dummy.c.",
0, 0);
return 0;
}
/** Tells wether a text is a persistent address as listed by the enumeration
functions.
*/
int sg_is_enumerable_adr(char *adr)
{
return(0);
}
/** Estimate the potential payload capacity of a file address.
@param path The address of the file to be examined. If it does not
exist yet, then the directory will be inquired.
@param bytes The pointed value gets modified, but only if an estimation is
possible.
@return -2 = cannot perform necessary operations on file object
-1 = neither path nor dirname of path exist
0 = could not estimate size capacity of file object
1 = estimation has been made, bytes was set
*/
int burn_os_stdio_capacity(char *path, off_t *bytes)
{
struct stat stbuf;
#ifdef Libburn_os_has_statvfS
struct statvfs vfsbuf;
#endif
char testpath[4096], *cpt;
long blocks;
off_t add_size = 0;
testpath[0] = 0;
blocks = *bytes / 512;
if (stat(path, &stbuf) == -1) {
strcpy(testpath, path);
cpt = strrchr(testpath, '/');
if(cpt == NULL)
strcpy(testpath, ".");
else if(cpt == testpath)
testpath[1] = 0;
else
*cpt = 0;
if (stat(testpath, &stbuf) == -1)
return -1;
#ifdef Libburn_if_this_was_linuX
} else if(S_ISBLK(stbuf.st_mode)) {
fd = open(path, open_mode);
if (fd == -1)
return -2;
ret = ioctl(fd, BLKGETSIZE, &blocks);
close(fd);
if (ret == -1)
return -2;
*bytes = ((off_t) blocks) * (off_t) 512;
#endif /* Libburn_if_this_was_linuX */
} else if(S_ISREG(stbuf.st_mode)) {
add_size = stbuf.st_blocks * (off_t) 512;
strcpy(testpath, path);
} else
return 0;
if (testpath[0]) {
#ifdef Libburn_os_has_statvfS
if (statvfs(testpath, &vfsbuf) == -1)
return -2;
*bytes = add_size + ((off_t) vfsbuf.f_bsize) *
(off_t) vfsbuf.f_bavail;
#else /* Libburn_os_has_statvfS */
return 0;
#endif /* ! Libburn_os_has_stavtfS */
}
return 1;
}

View File

@ -1,7 +1,7 @@
/* sg.c
Switcher for operating system dependent transport level modules of libburn.
Copyright (C) 2006 Thomas Schmitt <scdbackup@gmx.net>, provided under GPL
Copyright (C) 2009 Thomas Schmitt <scdbackup@gmx.net>, provided under GPL
*/
@ -10,8 +10,32 @@
#include "sg-freebsd.c"
#else
#ifdef __linux
#include "sg-linux.c"
#endif
#else
/* The dummy adapter formally fulfills the expectations of libburn towards
its SCSI command transport. It will show no drives and perform no SCSI
commands.
libburn will then be restricted to using its stdio pseudo drives.
*/
static int intentional_compiler_warning(void)
{
int INTENTIONAL_COMPILER_WARNING_;
int Cannot_recognize_Linux_nor_FreeBSD_;
int Have_to_use_dummy_MMC_transport_adapter_;
int This_libburn_will_not_be_able_to_operate_on_real_CD_drives;
int Have_to_use_dummy_MMC_transport_adapter;
int Cannot_recognize_Linux_nor_FreeBSD;
int INTENTIONAL_COMPILER_WARNING;
return(0);
}
#include "sg-dummy.c"
#endif /* ! __linux */
#endif /* ! __FreeBSD__ */

View File

@ -205,6 +205,11 @@ struct burn_drive
with BD-RE */
int do_stream_recording;
/* ts A90227 : the LBA where stream recording shall start.
Writing to lower LBA will be done without streaming.
*/
int stream_recording_start;
/* ts A61218 from 51h READ DISC INFORMATION */
int bg_format_status; /* 0=needs format start, 1=needs format restart*/

View File

@ -2106,8 +2106,12 @@ void burn_disc_write_sync(struct burn_write_opts *o, struct burn_disc *disc)
/* ts A61224 */
burn_disc_init_write_status(o, disc); /* must be done very early */
/* ts A80412 */
d->do_stream_recording = o->do_stream_recording;
/* ts A80412 , A90227 */
d->do_stream_recording = !!o->do_stream_recording;
if (o->do_stream_recording >= 16)
d->stream_recording_start = o->do_stream_recording;
else
d->stream_recording_start = 0;
d->buffer = &buf;
memset(d->buffer, 0, sizeof(struct buffer));