Compare commits

..

6 Commits

Author SHA1 Message Date
8c82e3c437 Tagged libburn point release 2006-11-24 01:23:21 +00:00
de02cc26f9 Version leap to 0.2.6 2006-11-23 10:26:18 +00:00
35a1a1f7d7 Removed obsolete test programs 2006-11-23 09:10:03 +00:00
54d3702513 Last cdrskin-0.2.5 cycle 2006-11-23 07:20:53 +00:00
c3f9764e0a Made doc system buildable 2006-11-22 22:40:32 +00:00
ab4096e720 Switched to 0.2.6 cycle before release 2006-11-22 22:28:14 +00:00
16 changed files with 115 additions and 389 deletions

View File

@ -103,7 +103,7 @@ test_structest_SOURCES = test/structest.c
## cdrskin construction site - ts A60816
cdrskin_cdrskin_CPPFLAGS = -Ilibburn
cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_0_2_3
cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_0_2_6
cdrskin_cdrskin_LDADD = $(libburn_libburn_la_OBJECTS) $(THREAD_LIBS)
cdrskin_cdrskin_SOURCES = cdrskin/cdrskin.c cdrskin/cdrfifo.c cdrskin/cdrfifo.h cdrskin/cdrskin_timestamp.h
##

View File

@ -26,12 +26,12 @@ following possible.
cdrskin. By Thomas Schmitt <scdbackup@gmx.net>
Integrated sub project of libburn.pykix.org but also published via:
http://scdbackup.sourceforge.net/cdrskin_eng.html
http://scdbackup.sourceforge.net/cdrskin-0.2.5.tar.gz
http://scdbackup.sourceforge.net/cdrskin-0.2.6.pl01.tar.gz
Copyright (C) 2006 Thomas Schmitt
------------------------------------------------------------------------------
On top of libburn there is implemented cdrskin 0.2.5, a limited cdrecord
On top of libburn there is implemented cdrskin 0.2.6, a limited cdrecord
compatibility wrapper which allows to use some libburn features from
the command line.
Interested users of cdrecord are invited to participate in the development
@ -59,16 +59,16 @@ systems, including 64 bit systems. (Further reports are welcome.)
Compilation, First Glimpse, Installation
Obtain cdrskin-0.2.5.tar.gz , take it to a directory of your choice and do:
Obtain cdrskin-0.2.6.pl01.tar.gz, take it to a directory of your choice and do:
tar xzf cdrskin-0.2.5.tar.gz
cd cdrskin-0.2.5
tar xzf cdrskin-0.2.6.pl01.tar.gz
cd cdrskin-0.2.6
Or obtain a libburn.pykix.org SVN snapshot,
go into the toplevel directory of the snapshot (e.g. cd libburn_pykix ),
and execute the autotools script ./bootstrap . Use autools version >= 1.7 .
Within that toplevel directory of either cdrskin-0.2.5 or libburn then execute:
Within that toplevel directory of either cdrskin-0.2.6 or libburn then execute:
./configure
make

View File

@ -36,10 +36,13 @@ intermediate="./libburn_pykix"
# My changes are in libburn-0.2.3.ts.develop , mainly in ./cdrskin
changes="./libburn-0.2.3.ts.develop"
skin_rev="0.2.4"
skin_release="0.2.6"
patch_level=".pl01"
skin_rev="$skin_release""$patch_level"
# The result directory and the name of the result tarballs
target="./cdrskin-${skin_rev}"
target="./cdrskin-${skin_release}"
cdrskin_tarball="./cdrskin-${skin_rev}.tar.gz"
cdrskin_tarball_svn="./cdrskin-${skin_rev}.svn.tar.gz"

View File

@ -36,7 +36,7 @@ intermediate="./libburn_pykix"
# My changes are in libburn-0.2.3.ts.develop , mainly in ./cdrskin
changes="./libburn-0.2.3.ts.develop"
skin_rev="0.2.5"
skin_rev="0.2.7"
# The result directory and the name of the result tarballs
target="./cdrskin-${skin_rev}"

View File

@ -123,7 +123,7 @@ or
/** The official program version */
#ifndef Cdrskin_prog_versioN
#define Cdrskin_prog_versioN "0.2.5"
#define Cdrskin_prog_versioN "0.2.6"
#endif
/** The source code release timestamp */
@ -156,14 +156,25 @@ or
#endif /* Cdrskin_libburn_cvs_A60220_tS */
#ifdef Cdrskin_libburn_0_2_2
#define Cdrskin_libburn_versioN "0.2.2"
#ifdef Cdrskin_libburn_0_2_6
#define Cdrskin_libburn_versioN "0.2.6"
#define Cdrskin_libburn_from_pykix_svN 1
#endif /* Cdrskin_libburn_0_2_6 */
#ifndef Cdrskin_libburn_versioN
#define Cdrskin_libburn_versioN "0.2.6"
#define Cdrskin_libburn_from_pykix_svN 1
#endif
#ifdef Cdrskin_libburn_0_2_3
#define Cdrskin_libburn_versioN "0.2.3"
#define Cdrskin_libburn_from_pykix_svN 1
#ifdef Cdrskin_libburn_from_pykix_svN
#ifndef Cdrskin_oldfashioned_api_usE
#define Cdrskin_libburn_does_ejecT 1
#define Cdrskin_libburn_has_drive_get_adR 1
#define Cdrskin_progress_track_does_worK 1
#define Cdrskin_is_erasable_on_load_does_worK 1
#define Cdrskin_grab_abort_does_worK 1
#define Cdrskin_allow_libburn_taO 1
#define Cdrskin_libburn_has_is_enumerablE 1
#define Cdrskin_libburn_has_convert_fs_adR 1
#define Cdrskin_libburn_has_convert_scsi_adR 1
@ -178,21 +189,6 @@ or
#define Cdrskin_libburn_has_pretend_fulL 1
#define Cdrskin_libburn_has_multI 1
#define Cdrskin_libburn_has_buffer_min_filL 1
#endif
#ifndef Cdrskin_libburn_versioN
#define Cdrskin_libburn_versioN "0.2.2"
#define Cdrskin_libburn_from_pykix_svN 1
#endif
#ifdef Cdrskin_libburn_from_pykix_svN
#define Cdrskin_libburn_does_ejecT 1
#define Cdrskin_libburn_has_drive_get_adR 1
#define Cdrskin_progress_track_does_worK 1
#define Cdrskin_is_erasable_on_load_does_worK 1
#define Cdrskin_grab_abort_does_worK 1
#define Cdrskin_allow_libburn_taO 1
#ifdef Cdrskin_new_api_tesT
@ -204,14 +200,10 @@ or
#define Cdrskin_atip_speed_is_oK 1
#endif
#endif
#endif /* Cdrskin_new_api_tesT */
#ifdef Cdrskin_oldfashioned_api_usE
/* switch back to pre-0.2.2 libburn usage */;
#endif
#endif /* ! Cdrskin_oldfashioned_api_usE */
#endif /* Cdrskin_libburn_from_pykix_svN */

View File

@ -51,7 +51,7 @@ A CD recorder suitable for
GPL software included:<BR>
</H2>
<DL>
<DT>libburn-0.2.3 stabilized SVN snapshot</DT>
<DT>libburn-0.2.6</DT>
<DD>(by Derek Foreman, Ben Jansens, and team of libburn.pykix.org)</DD>
<DD>transfers data to CD</DD>
</DL>
@ -99,9 +99,7 @@ wishes as well as on the development of libburn.</DT>
<DD>$ cdrskin -v dev=/dev/dvd blank=fast -eject</DD>
<DT>Write ISO-9660 filesystem image:</DT>
<DD>$ cdrskin -v dev=/dev/hdc speed=12 fs=8m driveropts=burnfree -sao -eject padsize=300k my_image.iso</DD>
<DT>Write compressed afio archive on-the-fly via cdrskin-0.2.4 :</DT>
<DD>$ find . | afio -oZ - | cdrskin -v dev=0,1,0 fs=32m speed=8 driveropts=burnfree padsize=300k -sao tsize=650m -</DD>
<DT>Write compressed afio archive on-the-fly via cdrskin-0.2.5 :</DT>
<DT>Write compressed afio archive on-the-fly :</DT>
<DD>$ find . | afio -oZ - | cdrskin -v dev=0,1,0 fs=32m speed=8 driveropts=burnfree padsize=300k -tao -</DD>
<DT>Write audio tracks:</DT>
<DD>$ cdrskin -v dev=ATA:1,0,0 speed=48 driveropts=burnfree -sao track1.wav track2.au -audio -swab track3.raw
@ -125,13 +123,7 @@ wishes as well as on the development of libburn.</DT>
<UL>
<DT></DT>
<LI>
Burns only a single closed session. No -multi option yet.
Note: Development version 0.2.5 offers multi-session now. See below.
</LI>
<LI>
No TAO mode in cdrskin-0.2.4 and therefore no writing on-the-fly without
a predefined source size.<BR>
Note: Development version 0.2.5 offers TAO now. See below.
Appending sessions to unclosed media is restricted to write mode TAO.
</LI>
<LI>
cdrskin -scanbus or --devices hangs for quite a while if there is
@ -153,7 +145,7 @@ rw-permissions and retry the bus scan as non-superuser.
<P>
<DL>
<DT>Download as source code (see README):</DT>
<DD><A HREF="cdrskin-0.2.4.pl01.tar.gz">cdrskin-0.2.4.pl01.tar.gz</A>
<DD><A HREF="cdrskin-0.2.6.pl01.tar.gz">cdrskin-0.2.6.pl01.tar.gz</A>
(510 KB).
</DD>
<DD>
@ -164,14 +156,14 @@ cdrskin is part of libburn - full libburn is provided with cdrskin releases.
</DD>
<DD>&nbsp;</DD>
<DT>Download as single x86 binaries (untar and move to /usr/bin/cdrskin):</DT>
<DD><A HREF="cdrskin_0.2.4.pl01-x86-suse9_0.tar.gz">
cdrskin_0.2.4.pl01-x86-suse9_0.tar.gz</A>, (60 KB),
<DD><A HREF="cdrskin_0.2.6.pl01-x86-suse9_0.tar.gz">
cdrskin_0.2.6.pl01-x86-suse9_0.tar.gz</A>, (60 KB),
<DL>
<DD>runs on SuSE 9.0 (2.4.21) , RIP-14.4 (2.6.14) ,
Gentoo (2.6.15 x86_64 Athlon).</DD>
</DL>
<DD><A HREF="cdrskin_0.2.4.pl01-x86-suse9_0-static.tar.gz">
cdrskin_0.2.4.pl01-x86-suse9_0-static.tar.gz</A>, (260 KB), -static compiled,
<DD><A HREF="cdrskin_0.2.6.pl01-x86-suse9_0-static.tar.gz">
cdrskin_0.2.6.pl01-x86-suse9_0-static.tar.gz</A>, (260 KB), -static compiled,
<DL>
<DD>runs on SuSE 7.2 (2.4.4), and on the systems above.</DD>
</DL>
@ -195,22 +187,23 @@ cdrskin_0.2.4.pl01-x86-suse9_0-static.tar.gz</A>, (260 KB), -static compiled,
<HR>
<P>
Enhancements towards previous stable version cdrskin-0.2.2:
Enhancements towards previous stable version cdrskin-0.2.4:
<UL>
<LI>cdrecord compatibility with drive addresses of form [ATA:]Bus,Target,Lun.
<BR>(use option --old_pseudo_scsi_adr to get back the incompatible
Bus,Traget,Lun addressing of version 0.2.2)
<LI>Option <KBD><B>-tao</B></KBD> is fully enabled.<BR>
SAO is still the preferred default but TAO is default if a track of
unpredicted size is present (stdin, named pipe, ...) or if a follow-up
session is written to an appendable CD.
(This is an intentional deviation from cdrecord defaults which themselves
have changed with the newest cdrecord versions.)
</LI>
<LI>Drives adressable via links and device siblings (/dev/cdrom , /dev/scd0).
</LI>
<LI>Automatic -audio extraction with .wav files and .au files.
</LI>
<LI>Bug fix about failure to eject.</LI>
<LI>Comments and empty lines allowed in startup files.</LI>
<LI>Options -scanbus and --devices print SORRY messages about busy drives.
</LI>
<LI>Drive buffer fill indicator reports realistic percentage numbers.</LI>
<LI>Option -toc is supported, drive firmware revision gets displayed.</LI>
<LI>Status report during blank, preparation and finalization improved.</LI>
<LI>Bug fixed: Trailing trash appended to .wav files caused error message
and, if exceeding fifo size, could even stall a burn.
(Workaround: disable fifo by <KBD><B>fs=0</B></KBD>)</LI>
<LI>Bug fixed: False speed with first pacifier cycle. Potential program
abort by floating point exception (NaN).</LI>
<LI>multi-session CDs: <KBD><B>-multi</B></KBD>, <KBD><B>-msinfo</B></KBD>,
writing to appendable CDs (for now restricted to write mode TAO).</LI>
</UL>
</P>
@ -218,30 +211,14 @@ Enhancements towards previous stable version cdrskin-0.2.2:
<P>
<DL>
<DT><H3>Development snapshot, version 0.2.5 :</H3></DT>
<DD>Enhancements towards stable version 0.2.4:
<UL>
<LI>Option <KBD><B>-tao</B></KBD> is fully enabled.<BR>
SAO is still the preferred default but TAO is default if a track of
unpredicted size is present (stdin, named pipe, ...) or if a follow-up
session is written to an appendable CD.
(This is an intentional deviation from cdrecord defaults which themselves
have changed with the newest cdrecord versions.)
</LI>
<LI>Status report during blank, preparation and finalization improved.</LI>
<LI>Bug fixed: Trailing trash appended to .wav files caused error message
and, if exceeding fifo size, could even stall a burn.
(Workaround: disable fifo by <KBD><B>fs=0</B></KBD>)</LI>
<LI>Bug fixed: False speed with first pacifier cycle. Potential program
abort by floating point exception (NaN).</LI>
<LI>multi-session CDs: <KBD><B>-multi</B></KBD>, <KBD><B>-msinfo</B></KBD>,
writing to appendable CDs (for now restricted to write mode TAO).</LI>
</UL>
<DT><H3>Development snapshot, version 0.2.7 :</H3></DT>
<DD>Enhancements towards stable version 0.2.6:
(none yet)
</DD>
<DD>&nbsp;</DD>
<DD><A HREF="README_cdrskin_devel">README 0.2.5</A>
<DD><A HREF="cdrskin__help_devel">cdrskin_0.2.5 --help</A></DD>
<DD><A HREF="cdrskin_help_devel">cdrskin_0.2.5 -help</A></DD>
<DD><A HREF="README_cdrskin_devel">README 0.2.7</A>
<DD><A HREF="cdrskin__help_devel">cdrskin_0.2.7 --help</A></DD>
<DD><A HREF="cdrskin_help_devel">cdrskin_0.2.7 -help</A></DD>
<DD>&nbsp;</DD>
<DT>Maintainers of cdrskin unstable packages please use SVN of
<A HREF="http://libburn.pykix.org"> libburn.pykix.org</A></DT>
@ -261,15 +238,15 @@ admins with full system souvereignty.</DT>
<A HREF="README_cdrskin_devel">upcoming README</A> ):
</DD>
<DD>
<A HREF="cdrskin-0.2.5.tar.gz">cdrskin-0.2.5.tar.gz</A>
<A HREF="cdrskin-0.2.7.tar.gz">cdrskin-0.2.7.tar.gz</A>
(500 KB).
</DD>
<DD>Binary (untar and move to /usr/bin/cdrskin):</DD>
<DD><A HREF="cdrskin_0.2.5-x86-suse9_0.tar.gz">
cdrskin_0.2.5-x86-suse9_0.tar.gz</A>, (60 KB).
<DD><A HREF="cdrskin_0.2.7-x86-suse9_0.tar.gz">
cdrskin_0.2.7-x86-suse9_0.tar.gz</A>, (60 KB).
</DD>
<DD><A HREF="cdrskin_0.2.5-x86-suse9_0-static.tar.gz">
cdrskin_0.2.5-x86-suse9_0-static.tar.gz</A>, (260 KB)
<DD><A HREF="cdrskin_0.2.7-x86-suse9_0-static.tar.gz">
cdrskin_0.2.7-x86-suse9_0-static.tar.gz</A>, (260 KB)
</DD>
</DL>
</P>
@ -322,14 +299,6 @@ is a GUI frontend which uses cdrecord for CD burning.)
<DT>Example for a test session with a cdrecord based scdbackup installation:</DT>
<DD>$ <KBD><B>cdrskin -scanbus</B></KBD></DD>
<DD><KBD>...</KBD></DD>
</DL>
If your system is stricken with some ill CD device then this can stall
and you will have to press <KBD>Ctrl+C</KBD> to abort.
In this case, you may execute
<KBD>export SCDBACKUP_NO_SCANBUS=1</KBD>
and try again.
<DL>
<DT></DT>
<DD><KBD>&nbsp;&nbsp;&nbsp; 2,0,0 &nbsp;&nbsp; 0)&nbsp; 'TEAC' 'CD-ROM CD-532S' '?' Removable CD-ROM</KBD></DD>
<DD>$ <KBD><B>cdrskin -scanbus dev=ATA</B></KBD></DD>
<DD><KBD>...</KBD></DD>
@ -344,8 +313,15 @@ and try again.
<DD>$ <KBD><B>export SCDBACKUP_USE_CDRSKIN=1</B></KBD></DD>
<DD>$ <KBD><B>./CONFIGURE_CD</B></KBD></DD>
<DD><KBD>...</KBD></DD>
<DD><KBD>cdrskin 0.2.4 : limited cdrecord compatibility wrapper for libburn</KBD></DD>
<DD><KBD>...</KBD></DD>
<DD><KBD>cdrskin 0.2.6 : limited cdrecord compatibility wrapper for libburn</KBD></DD>
</DL>
If your system is stricken with some ill CD device then this can stall
and you will have to press <KBD>Ctrl+C</KBD> to abort.
In this case, you may execute
<KBD>export SCDBACKUP_NO_SCANBUS=1</KBD>
and try again.
<DL>
<DT></DT>
<DD><KBD> ------------------- SCSI devices. To be used like &nbsp;&nbsp; 0,0,0</KBD></DD>
<DD><KBD>&nbsp;&nbsp;&nbsp; 2,0,0 &nbsp;&nbsp; 0)&nbsp; 'TEAC' 'CD-ROM CD-532S' '?' Removable CD-ROM</KBD></DD>
<DD><KBD> ------------------- end of SCSI device list</KBD></DD>

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2006.11.22.122228"
#define Cdrskin_timestamP "2006.11.23.102340"

View File

@ -1687,22 +1687,39 @@ Removed a redundant d->start_unit() of revision 419
* libisofs unbundled from libburn+cdrskin
* Hints for porting to other operating systems are now in sg-*.c
20 Nov 2006 [425]
cdrskin/changelog.txt
Next cdrskin-0.2.5 cycle
[]
2006.11.20.132717 [426]
cdrskin/cdrskin.c
cdrskin/cdrfifo.h
cdrskin/cdrfifo.c
cdrskin/wiki_plain.txt
Implemented new option fifo_start_at=
20 Nov 2006 [427]
cdrskin/wiki_plain.txt
Updated in respect to multi-session
[]
Coordinate scsi_notify_error() and scsi_error() about harmless conditions
2006.11.22.122228 [428]
libburn/spc.h
libburn/spc.c
Coordinated scsi_notify_error() and scsi_error()
------------------------------------ cycle - cdrskin-0.2.5 - 2006.11.22.142517
23 Nov 2006 []
cdrskin/changelog.txt
Last cdrskin-0.2.5 cycle
----------------------------------------- long term intentions:
[]
Truely recognize media type
[]
-reset: ioctl(fd,CDROMRESET) ioctl(fd,SG_SCSI_RESET,SG_SCSI_RESET_DEVICE)

View File

@ -7,7 +7,7 @@
debug_opts=
def_opts=
largefile_opts="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1"
libvers="-DCdrskin_libburn_0_2_3"
libvers="-DCdrskin_libburn_0_2_6"
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_2_2"
elif test "$i" = "-libburn_0_2_6"
then
libvers="-DCdrskin_libburn_0_2_2"
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_2_3"
libvers="-DCdrskin_libburn_0_2_6"
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_2_3"
libvers="-DCdrskin_libburn_0_2_6"
libdax_audioxtr_o="libburn/libdax_audioxtr.o"
libdax_msgs_o="libburn/libdax_msgs.o"
cleanup_src_or_obj="libburn/cleanup.o"
@ -79,8 +79,8 @@ do
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_2_2 set macro to match libburn-0.2.2."
echo " -libburn_0_2_3 set macro to match current libburn-SVN."
echo " -libburn_0_2_6 set macro to match libburn-0.2.6."
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."

View File

@ -2,7 +2,7 @@
cdrskin Wiki - plain text copy
--------------------------------------------------------------------------
cdrskin-0.2.5 is the cdrecord compatibility middleware of libburn.
cdrskin is the cdrecord compatibility middleware of libburn.
Its paragon, cdrecord, is a powerful GPL'ed burn program included in Joerg
Schilling's cdrtools. cdrskin strives to be a second source for the services
@ -19,10 +19,9 @@ About libburn API for burning CD: http://libburn-api.pykix.org
--------------------------------------------------------------------------
Convenient TAO burn mode is provided in development version 0.2.5 but not in
current "stable" release 0.2.4. The same is true for multi-session, where
follow-up sessions must be done in TAO mode. (Users who have a burner which
succeeds with a follow-up session via cdrecord -sao : please contact us.)
Appending sessions to an unclosed CD is restricted to write mode TAO.
(Users who have a burner which succeeds with a follow-up session via
cdrecord -sao : please contact us.)
cdrskin does not provide DVD burning yet. See advise to use dvd+rw-tools
at the end of this text.
@ -135,8 +134,8 @@ tao_to_sao_tsize=<num> allows the - actually unsupported - cdrecord option
-tao and defines a default track size to be used if - as custom with -tao -
no option tsize=# is given.
Since -tao is supported in cdrskin-0.2.5 the TAO-to-SAO workaround on its way
to obsolescence. Nevertheless, tao_to_sao_tsize= allows to preset a default
Since -tao is supported in cdrskin-0.2.6 the TAO-to-SAO workaround has become
quite obsolete. Nevertheless, tao_to_sao_tsize= allows to preset a default
size for SAO mode which is in effect only if no track size is available.
As in general with cdrskin tsize=# the data source does not have to provide

View File

@ -56,8 +56,8 @@ WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = libburn libisofs doc test
FILE_PATTERNS = libburn.h libisofs.h comments libburner.c
INPUT = libburn doc test
FILE_PATTERNS = libburn.h comments libburner.c
RECURSIVE = NO
EXCLUDE =
EXCLUDE_SYMLINKS = NO

View File

@ -1,4 +0,0 @@
int main()
{
return 0;
}

View File

@ -1,126 +0,0 @@
/* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */
#include <libburn/libburn.h>
#include <stdio.h>
#include <assert.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
static struct burn_drive_info *drives;
static unsigned int n_drives;
void burn_files(struct burn_drive *drive, struct burn_disc *disc)
{
struct burn_write_opts *o;
enum burn_disc_status s;
if (!burn_drive_grab(drive, 1)) {
printf("Unable to open the drive!\n");
return;
}
while (burn_drive_get_status(drive, NULL))
usleep(1000);
while ((s = burn_disc_get_status(drive)) == BURN_DISC_UNREADY)
usleep(1000);
if (s != BURN_DISC_BLANK) {
burn_drive_release(drive, 0);
printf("Please insert blank media in the drive\n");
return;
}
o = burn_write_opts_new(drive);
burn_drive_set_speed(drive, 0, 2816);
burn_write_opts_set_perform_opc(o, 0);
burn_write_opts_set_write_type(o, BURN_WRITE_TAO, BURN_BLOCK_MODE1);
burn_write_opts_set_simulate(o, 1);
/* want failure on seggy while debugging :) */
burn_write_opts_set_underrun_proof(o, 0);
burn_structure_print_disc(disc);
burn_disc_write(o, disc);
burn_write_opts_free(o);
while (burn_drive_get_status(drive, NULL)) {
sleep(1);
}
printf("\n");
burn_drive_release(drive, 0);
burn_disc_free(disc);
}
void parse_args(int argc, char **argv, int *drive, struct burn_disc **disc)
{
int i, tmode = BURN_AUDIO;
int help = 1;
struct burn_session *session;
struct burn_track *tr;
struct burn_source *src;
*disc = burn_disc_create();
session = burn_session_create();
burn_disc_add_session(*disc, session, BURN_POS_END);
for (i = 1; i < argc; ++i) {
if (!strcmp(argv[i], "--drive")) {
++i;
if (i >= argc)
printf("--drive requires an argument\n");
else
*drive = atoi(argv[i]);
} else if (!strcmp(argv[i], "--audio")) {
tmode = BURN_AUDIO;
} else if (!strcmp(argv[i], "--data")) {
tmode = BURN_MODE1;
} else if (!strcmp(argv[i], "--verbose")) {
++i;
if (i >= argc)
printf("--verbose requires an argument\n");
else
burn_set_verbosity(atoi(argv[i]));
} else if (!strcmp(argv[i], "--help")) {
help = 1; /* who cares */
} else {
help = 0;
printf("%s is a track\n", argv[i]);
tr = burn_track_create();
src = burn_file_source_new(argv[i], NULL);
burn_track_set_source(tr, src);
burn_source_free(src);
burn_track_define_data(tr, 0, 0, 1, tmode);
burn_session_add_track(session, tr, BURN_POS_END);
}
}
if (help) {
printf("Usage: %s [--drive <num>] [--verbose <level>] files\n",
argv[0]);
exit(EXIT_FAILURE);
}
}
int main(int argc, char **argv)
{
int drive = 0;
struct burn_disc *disc;
parse_args(argc, argv, &drive, &disc);
printf("Initializing library...");
if (burn_initialize())
printf("Success\n");
else {
printf("Failed\n");
return 1;
}
printf("Scanning for devices...");
while (!burn_drive_scan(&drives, &n_drives)) ;
printf("Done\n");
burn_files(drives[drive].drive, disc);
burn_drive_info_free(drives);
burn_finish();
return 0;
}

View File

@ -1,54 +0,0 @@
/* THIS IS NOT A PROPER EXAMPLE */
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <libburn/libburn.h>
static struct burn_drive_info *drives;
static unsigned int n_drives;
#warning this example is totally fried
int main()
{
#if 0
struct burn_drive *drive;
struct burn_read_opts o;
burn_initialize();
o.datafd =
open("/xp/burn/blah.data", O_CREAT | O_WRONLY,
S_IRUSR | S_IWUSR);
o.subfd =
open("/xp/burn/blah.sub", O_CREAT | O_WRONLY,
S_IRUSR | S_IWUSR);
o.raw = 1;
o.c2errors = 0;
o.subcodes_audio = 1;
o.subcodes_data = 1;
o.hardware_error_recovery = 1;
o.report_recovered_errors = 0;
o.transfer_damaged_blocks = 1;
o.hardware_error_retries = 1;
printf("Scanning for devices...");
while (!burn_drive_scan(&drives, &n_drives)) ;
printf("Done\n");
drive = drives[0].drive;
burn_drive_set_speed(drive, 0, 0);
if (!burn_drive_grab(drive, 1)) {
printf("Unable to open the drive!\n");
return EXIT_FAILURE;
}
while (burn_drive_get_status(drive, NULL))
usleep(1000);
burn_disc_read(drive, &o);
#endif
return EXIT_SUCCESS;
}

View File

@ -1,77 +0,0 @@
# a module to help with handling of filenames, directory trees, etc.
import os
import os.path
import stat
def pathsubtract(a, b):
index = a.find(b)
if index == -1:
return None
res = a[ (index + len(b)): ]
if res.find("/") == 0:
res = res[1:]
return res
# same as C strcmp()
def strcmp(a, b):
if a < b:
return -1
if a > b:
return 1
return 0
class TreeNode:
# path is the location of the file/directory. It is either a full path or
# a path relative to $PWD
def __init__(self, parent, path=".", root=".", isofile=None):
if isofile:
self.root = os.path.abspath(isofile)
self.path = ""
else:
fullpath = os.path.abspath( path )
fullroot = os.path.abspath( root )
self.root = fullroot
self.path = pathsubtract( fullpath, fullroot )
self.parent = parent
self.children = []
if self.path == None:
raise NameError, "Invalid paths %s and %s" % (fullpath, fullroot)
# if this is a directory, add its children recursively
def addchildren(self):
if not stat.S_ISDIR( os.lstat(self.root + "/" + self.path).st_mode ):
return
children = os.listdir( self.root + "/" + self.path )
for child in children:
if self.path:
child = self.path + "/" + child
self.children.append( TreeNode(self, child, self.root) )
for child in self.children:
child.addchildren()
def printAll(self, spaces=0):
print " "*spaces + self.root + "/" + self.path
for child in self.children:
child.printAll(spaces + 2)
def isValidISO1(self):
pass
class Tree:
def __init__(self, root=None, isofile=None):
if isofile:
self.root = TreeNode(parent=None, isofile=isofile)
else:
self.root = TreeNode(parent=None, path=root, root=root)
self.root.addchildren()
def isValidISO1(self):
return root.isValidISO1();
#t = Tree(root=".")
#t.root.printAll()

Binary file not shown.