Compare commits

..

4 Commits

22 changed files with 90 additions and 782 deletions

View File

@ -101,9 +101,9 @@ test_structest_CPPFLAGS = -Ilibburn
test_structest_LDADD = $(libburn_libburn_la_OBJECTS) $(THREAD_LIBS) test_structest_LDADD = $(libburn_libburn_la_OBJECTS) $(THREAD_LIBS)
test_structest_SOURCES = test/structest.c test_structest_SOURCES = test/structest.c
## cdrskin construction site - ts A60816 - A80820 ## cdrskin construction site - ts A60816 - A80716
cdrskin_cdrskin_CPPFLAGS = -Ilibburn cdrskin_cdrskin_CPPFLAGS = -Ilibburn
cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_0_5_2 cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_0_5_0
# cdrskin_cdrskin_LDADD = $(libburn_libburn_la_OBJECTS) $(THREAD_LIBS) # cdrskin_cdrskin_LDADD = $(libburn_libburn_la_OBJECTS) $(THREAD_LIBS)
# ts A80123, change proposed by Simon Huggins to cause dynamic libburn linking # ts A80123, change proposed by Simon Huggins to cause dynamic libburn linking

9
README
View File

@ -173,7 +173,7 @@ Project history as far as known to me:
discontent. discontent.
The situation first caused me to publically regret it and then - after i The situation first caused me to publically regret it and then - after i
got the opportunity to move in with cdrskin - gave me true reason to got the opportunity to move in with cdrskin - gave me true reason to
personally apologize to Derek Foreman, Ben Jansens and the contributors at personally apologize to Derek Foreman, Ben Jansens and the contibutors at
icculus.org/burn. Posted to both projects: icculus.org/burn. Posted to both projects:
http://lists.freedesktop.org/archives/libburn/2006-August/000446.html http://lists.freedesktop.org/archives/libburn/2006-August/000446.html
http://mailman-mail1.webfaction.com/pipermail/libburn-hackers/2006-August/000024.html http://mailman-mail1.webfaction.com/pipermail/libburn-hackers/2006-August/000024.html
@ -300,13 +300,6 @@ Project history as far as known to me:
- 16th Jul 2008 libburn-0.5.0 handles systems with no /dev/sr* but only - 16th Jul 2008 libburn-0.5.0 handles systems with no /dev/sr* but only
/dev/scd*. /dev/scd*.
- 19th Jul 2008 libisoburn/xorriso-0.2.2 can do multi-session in mkisofs
and cdrecord style. xorriso now can serve underneath growisofs.
- 20th Aug 2008 libburn-0.5.2 revokes the necessity that a drive must be
enumerable in order to be adressable. Enumeration is enhanced by examining
/proc/sys/dev/cdrom/info.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------

View File

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

View File

@ -38,7 +38,7 @@ original="./libburn_svn_release.tgz"
# My changes are in $changes , mainly in $changes/cdrskin # My changes are in $changes , mainly in $changes/cdrskin
changes="./libburn-release" changes="./libburn-release"
skin_release="0.5.2" skin_release="0.5.0"
patch_level=".pl00" patch_level=".pl00"
skin_rev="$skin_release""$patch_level" 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 # My changes are in $changes , mainly in $changes/cdrskin
changes="./libburn-develop" changes="./libburn-develop"
skin_release="0.5.3" skin_release="0.5.1"
patch_level="" patch_level=""
skin_rev="$skin_release""$patch_level" skin_rev="$skin_release""$patch_level"

View File

@ -2,7 +2,7 @@
.\" First parameter, NAME, should be all caps .\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1) .\" other parameters are allowed: see man(7), man(1)
.TH CDRSKIN 1 "Aug 05, 2008" .TH CDRSKIN 1 "May 17, 2008"
.\" Please adjust this date whenever revising the manpage. .\" Please adjust this date whenever revising the manpage.
.\" .\"
.\" Some roff macros, for reference: .\" Some roff macros, for reference:
@ -1080,9 +1080,8 @@ Linux specific: Do not ask the operating system to prevent opening busy drives.
Wether this leads to senseful behavior depends on operating system and kernel. Wether this leads to senseful behavior depends on operating system and kernel.
.TP .TP
.BI drive_scsi_dev_family= sr | scd | sg .BI drive_scsi_dev_family= sr | scd | sg
Linux specific: Select a SCSI device file family to be scanned for by Linux specific: Select a SCSI device file family to be used for drive command
options --devices and -scanbus. transactions. Normally this is /dev/sgN on kernel versions < 2.6 and /dev/srN
Normally this is /dev/sgN on kernel versions < 2.6 and /dev/srN
on kernels >= 2.6 . This option allows to explicitely override that default on kernels >= 2.6 . This option allows to explicitely override that default
in order to meet other programs at a common device file for each drive. in order to meet other programs at a common device file for each drive.
On kernel 2.4 families sr and scd will find no drives. On kernel 2.4 families sr and scd will find no drives.

View File

@ -88,7 +88,7 @@ or
/** The official program version */ /** The official program version */
#ifndef Cdrskin_prog_versioN #ifndef Cdrskin_prog_versioN
#define Cdrskin_prog_versioN "0.5.2" #define Cdrskin_prog_versioN "0.5.0"
#endif #endif
/** The official libburn interface revision to use. /** The official libburn interface revision to use.
@ -101,7 +101,7 @@ or
#define Cdrskin_libburn_minoR 5 #define Cdrskin_libburn_minoR 5
#endif #endif
#ifndef Cdrskin_libburn_micrO #ifndef Cdrskin_libburn_micrO
#define Cdrskin_libburn_micrO 2 #define Cdrskin_libburn_micrO 0
#endif #endif
@ -135,44 +135,44 @@ or
#endif /* Cdrskin_libburn_cvs_A60220_tS */ #endif /* Cdrskin_libburn_cvs_A60220_tS */
#ifdef Cdrskin_libburn_0_5_2 #ifdef Cdrskin_libburn_0_5_0
#define Cdrskin_libburn_versioN "0.5.2" #define Cdrskin_libburn_versioN "0.5.0"
#define Cdrskin_libburn_from_pykix_svN 1 #define Cdrskin_libburn_from_pykix_svN 1
#endif /* Cdrskin_libburn_0_5_2 */ #endif /* Cdrskin_libburn_0_5_0 */
#ifdef Cdrskin_libburn_0_5_3 #ifdef Cdrskin_libburn_0_5_1
#define Cdrskin_libburn_versioN "0.5.3" #define Cdrskin_libburn_versioN "0.5.1"
#define Cdrskin_libburn_from_pykix_svN 1 #define Cdrskin_libburn_from_pykix_svN 1
/* Place novelty switch macros here. /* Place novelty switch macros here.
Move them down to Cdrskin_libburn_from_pykix_svN on version leap Move them down to Cdrskin_libburn_from_pykix_svN on version leap
*/ */
/* there are no libburn novelties in 0.5.3 yet */ /* there are no libburn novelties in 0.5.1 yet */
#endif /* Cdrskin_libburn_0_5_3 */ #endif /* Cdrskin_libburn_0_5_1 */
#ifndef Cdrskin_libburn_versioN #ifndef Cdrskin_libburn_versioN
#define Cdrskin_libburn_0_5_2 #define Cdrskin_libburn_0_5_0
#define Cdrskin_libburn_versioN "0.5.2" #define Cdrskin_libburn_versioN "0.5.0"
#define Cdrskin_libburn_from_pykix_svN 1 #define Cdrskin_libburn_from_pykix_svN 1
#endif #endif
#ifdef Cdrskin_libburn_0_5_2 #ifdef Cdrskin_libburn_0_5_0
#undef Cdrskin_libburn_majoR #undef Cdrskin_libburn_majoR
#undef Cdrskin_libburn_minoR #undef Cdrskin_libburn_minoR
#undef Cdrskin_libburn_micrO #undef Cdrskin_libburn_micrO
#define Cdrskin_libburn_majoR 0 #define Cdrskin_libburn_majoR 0
#define Cdrskin_libburn_minoR 5 #define Cdrskin_libburn_minoR 5
#define Cdrskin_libburn_micrO 2 #define Cdrskin_libburn_micrO 0
#endif #endif
#ifdef Cdrskin_libburn_0_5_3 #ifdef Cdrskin_libburn_0_5_1
#undef Cdrskin_libburn_majoR #undef Cdrskin_libburn_majoR
#undef Cdrskin_libburn_minoR #undef Cdrskin_libburn_minoR
#undef Cdrskin_libburn_micrO #undef Cdrskin_libburn_micrO
#define Cdrskin_libburn_majoR 0 #define Cdrskin_libburn_majoR 0
#define Cdrskin_libburn_minoR 5 #define Cdrskin_libburn_minoR 5
#define Cdrskin_libburn_micrO 3 #define Cdrskin_libburn_micrO 1
#endif #endif
@ -251,7 +251,7 @@ or
/* 0.4.8 */ /* 0.4.8 */
/* Bug fix release for write_start_address=... on DVD-RAM and BD-RE */ /* Bug fix release for write_start_address=... on DVD-RAM and BD-RE */
/* 0.5.0 , 0.5.2 */ /* 0.5.0 */
/* novel libburn features are transparent to cdrskin */ /* novel libburn features are transparent to cdrskin */

View File

@ -57,7 +57,7 @@ and to MMC-5 for DVD or BD).
GPL software included:<BR> GPL software included:<BR>
</H2> </H2>
<DL> <DL>
<DT>libburn-0.5.2</DT> <DT>libburn-0.5.0</DT>
<DD>(founded by Derek Foreman and Ben Jansens, <DD>(founded by Derek Foreman and Ben Jansens,
furthered since August 2006 by Thomas Schmitt from team of libburnia-project.org)</DD> furthered since August 2006 by Thomas Schmitt from team of libburnia-project.org)</DD>
<DD>transfers data to CD, DVD, BD-RE</DD> <DD>transfers data to CD, DVD, BD-RE</DD>
@ -186,8 +186,8 @@ or to do experiments on BD-R media.
<P> <P>
<DL> <DL>
<DT>Download as source code (see README):</DT> <DT>Download as source code (see README):</DT>
<DD><A HREF="cdrskin-0.5.2.pl00.tar.gz">cdrskin-0.5.2.pl00.tar.gz</A> <DD><A HREF="cdrskin-0.5.0.pl00.tar.gz">cdrskin-0.5.0.pl00.tar.gz</A>
(735 KB). (730 KB).
</DD> </DD>
<DD> <DD>
The cdrskin tarballs are source code identical with libburn releases The cdrskin tarballs are source code identical with libburn releases
@ -236,19 +236,17 @@ cdrskin_0.4.2.pl00-x86-suse9_0-static.tar.gz</A>, (310 KB), -static compiled,
<HR> <HR>
<P> <P>
Enhancements towards previous stable version cdrskin-0.5.0.pl00: Enhancements towards previous stable version cdrskin-0.4.8.pl00:
<UL> <UL>
<LI>It is now possible to use drives which are not found by --devices</LI> <LI>Ability to use /dev/scdN as fallback if /dev/srN does not exist</LI>
<!-- <!--
<LI>none</LI> <LI>none</LI>
--> -->
</UL> </UL>
Bug fixes towards cdrskin-0.5.0.pl00: Bug fixes towards cdrskin-0.4.8.pl00:
<UL> <UL>
<LI>none</LI> <LI>Option drive_scsi_dev_family=scd lead to buffer overflow</LI>
<!--
-->
</UL> </UL>
</P> </P>
@ -257,8 +255,8 @@ Bug fixes towards cdrskin-0.5.0.pl00:
<P> <P>
<DL> <DL>
<DT><H3>Development snapshot, version 0.5.3 :</H3></DT> <DT><H3>Development snapshot, version 0.5.1 :</H3></DT>
<DD>Enhancements towards current stable version 0.5.2.pl00: <DD>Enhancements towards current stable version 0.5.0.pl00:
<UL> <UL>
<!-- <!--
--> -->
@ -267,10 +265,10 @@ Bug fixes towards cdrskin-0.5.0.pl00:
</UL> </UL>
</DD> </DD>
<DD>&nbsp;</DD> <DD>&nbsp;</DD>
<DD><A HREF="README_cdrskin_devel">README 0.5.3</A> <DD><A HREF="README_cdrskin_devel">README 0.5.1</A>
<DD><A HREF="cdrskin__help_devel">cdrskin_0.5.3 --help</A></DD> <DD><A HREF="cdrskin__help_devel">cdrskin_0.5.1 --help</A></DD>
<DD><A HREF="cdrskin_help_devel">cdrskin_0.5.3 -help</A></DD> <DD><A HREF="cdrskin_help_devel">cdrskin_0.5.1 -help</A></DD>
<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 0.5.3)</A></DD> <DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 0.5.1)</A></DD>
<DD>&nbsp;</DD> <DD>&nbsp;</DD>
<DT>Maintainers of cdrskin unstable packages please use SVN of <DT>Maintainers of cdrskin unstable packages please use SVN of
<A HREF="http://libburnia-project.org"> libburnia-project.org</A></DT> <A HREF="http://libburnia-project.org"> libburnia-project.org</A></DT>
@ -290,8 +288,8 @@ admins with full system souvereignty.</DT>
<A HREF="README_cdrskin_devel">upcoming README</A> ): <A HREF="README_cdrskin_devel">upcoming README</A> ):
</DD> </DD>
<DD> <DD>
<A HREF="cdrskin-0.5.3.tar.gz">cdrskin-0.5.3.tar.gz</A> <A HREF="cdrskin-0.5.1.tar.gz">cdrskin-0.5.1.tar.gz</A>
(735 KB). (730 KB).
</DD> </DD>
<!-- This is not offered any more since spring 2008 <!-- This is not offered any more since spring 2008

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2008.08.20.080001" #define Cdrskin_timestamP "2008.07.16.070001"

View File

@ -5642,115 +5642,19 @@ Made number transition to 0.5.0 and activated development documentation
+ cdrskin/add_ts_changes_to_libburn_0_5_1 + cdrskin/add_ts_changes_to_libburn_0_5_1
Updated cdrskin tarball generator Updated cdrskin tarball generator
16 Jul 2008 [1929] 16 Jul 2008 []
cdrskin/changelog.txt cdrskin/changelog.txt
Documented changes and release timestamp Documented changes and release timestamp
------------------------------ release - cdrskin-0.5.0.pl00 - 2008.07.16.070001 ------------------------------------ cycle - cdrskin-0.5.0 - 2008.07.16.070001
* Ability to use /dev/scd as fallback if /dev/sr does not exist * Ability to use /dev/scd as fallback if /dev/sr does not exist
* Bug fix: option drive_scsi_dev_family=scd lead to buffer overflow * Bug fix: option drive_scsi_dev_family=scd lead to buffer overflow
* New API call burn_fifo_peek_data() * New API call burn_fifo_peek_data()
2008.07.16.090816 [1930]
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.5.1 and activated development documentation
16 Jul 2008 [1931]
- cdrskin/add_ts_changes_to_libburn_0_4_8
- cdrskin/add_ts_changes_to_libburn_0_4_9
+ cdrskin/add_ts_changes_to_libburn_0_5_0
+ cdrskin/add_ts_changes_to_libburn_0_5_1
Updated cdrskin tarball generator
16 Jul 2008 [1932]
cdrskin/changelog.txt
Documented changes and release timestamp
------------------------------------ cycle - cdrskin-0.5.1 - 2008.07.14.164528
2008.08.01.101053 [1954]
libburn/drive.h
libburn/drive.c
libburn/sg-linux.c
Avoiding drive scan if single drive is given
2008.08.05.175930 [1963]
libburn/os-linux.h
libburn/drive.h
libburn/drive.c
libburn/sg-linux.c
libburn/libdax_msgs.h
cdrskin/cdrskin.1
Taking into respect drive list from /proc/sys/dev/cdrom/info
5 Aug 2008 [1964]
cdrskin/cdrskin_eng.html
Updated for next 0.5.1 cycle
------------------------------------ cycle - cdrskin-0.5.1 - ------------------------------------ cycle - cdrskin-0.5.1 -
* Larger set of possibly acceptable drive device file names ------------------------------------ cycle - cdrskin-0.5.1 -
2008.08.09.071742 [1975]
libburn/mmc.c
libburn/structure.h
libburn/structure.c
CD burn_toc_entries now bear extension_valid data
2008.08.09.071854 [1976]
libburn/libburn.h
libburn/read.c
New flag bit2 with burn_read_data()
2008.08.19.122535 [1991]
libburn/libburn.h
API clarification about CD burn_toc_entries
2008.08.19.123513 [1992]
libburn/structure.c
Reacted on harmless compiler warning
------------------------------------ cycle - cdrskin-0.5.1 - 2008.08.19.123513
2008.08.20.080001 [1994]
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.5.2 and activated development documentation
20 Aug 2008 [1995]
- cdrskin/add_ts_changes_to_libburn_0_5_0
- cdrskin/add_ts_changes_to_libburn_0_5_1
+ cdrskin/add_ts_changes_to_libburn_0_5_2
+ cdrskin/add_ts_changes_to_libburn_0_5_3
Updated cdrskin tarball generator
20 Aug 2008 []
cdrskin/changelog.txt
Documented changes and release timestamp
------------------------------ release - cdrskin-0.5.2.pl00 - 2008.08.20.080001
* Larger set of possibly acceptable drive device file names
------------------------------------ cycle - cdrskin-0.5.3 -
------------------------------------ cycle - cdrskin-0.5.3 -
=============================================================================== ===============================================================================
TODO TODO
@ -5772,6 +5676,8 @@ READ TRACK INFORMATION[#5]:
------------------------------ end of bugs --------------------------------- ------------------------------ end of bugs ---------------------------------
Overhaul libburn drive scan and single drive opening
Provide DVD+R DL layer break setter Provide DVD+R DL layer break setter
Check all SORRY and FATAL errors whether they should become FAILUREs Check all SORRY and FATAL errors whether they should become FAILUREs

View File

@ -7,7 +7,7 @@
debug_opts="-O2" debug_opts="-O2"
def_opts= def_opts=
largefile_opts="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1" largefile_opts="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1"
libvers="-DCdrskin_libburn_0_5_2" libvers="-DCdrskin_libburn_0_5_0"
cleanup_src_or_obj="libburn/cleanup.o" cleanup_src_or_obj="libburn/cleanup.o"
libdax_msgs_o="libburn/libdax_msgs.o" libdax_msgs_o="libburn/libdax_msgs.o"
libdax_audioxtr_o="libburn/libdax_audioxtr.o" libdax_audioxtr_o="libburn/libdax_audioxtr.o"
@ -33,15 +33,15 @@ do
libdax_audioxtr_o= libdax_audioxtr_o=
libdax_msgs_o="libburn/message.o" libdax_msgs_o="libburn/message.o"
cleanup_src_or_obj="-DCleanup_has_no_libburn_os_H cdrskin/cleanup.c" cleanup_src_or_obj="-DCleanup_has_no_libburn_os_H cdrskin/cleanup.c"
elif test "$i" = "-libburn_0_5_2" elif test "$i" = "-libburn_0_5_0"
then then
libvers="-DCdrskin_libburn_0_5_2" libvers="-DCdrskin_libburn_0_5_0"
libdax_audioxtr_o="libburn/libdax_audioxtr.o" libdax_audioxtr_o="libburn/libdax_audioxtr.o"
libdax_msgs_o="libburn/libdax_msgs.o" libdax_msgs_o="libburn/libdax_msgs.o"
cleanup_src_or_obj="libburn/cleanup.o" cleanup_src_or_obj="libburn/cleanup.o"
elif test "$i" = "-libburn_svn" elif test "$i" = "-libburn_svn"
then then
libvers="-DCdrskin_libburn_0_5_3" libvers="-DCdrskin_libburn_0_5_1"
libdax_audioxtr_o="libburn/libdax_audioxtr.o" libdax_audioxtr_o="libburn/libdax_audioxtr.o"
libdax_msgs_o="libburn/libdax_msgs.o" libdax_msgs_o="libburn/libdax_msgs.o"
cleanup_src_or_obj="libburn/cleanup.o" cleanup_src_or_obj="libburn/cleanup.o"
@ -76,7 +76,7 @@ do
echo " -compile_cdrfifo compile program cdrskin/cdrfifo." echo " -compile_cdrfifo compile program cdrskin/cdrfifo."
echo " -compile_dewav compile program test/dewav without libburn." echo " -compile_dewav compile program test/dewav without libburn."
echo " -cvs_A60220 set macro to match libburn-CVS of 20 Feb 2006." echo " -cvs_A60220 set macro to match libburn-CVS of 20 Feb 2006."
echo " -libburn_0_5_2 set macro to match libburn-0.5.2" echo " -libburn_0_5_0 set macro to match libburn-0.5.0"
echo " -libburn_svn set macro to match current libburn-SVN." echo " -libburn_svn set macro to match current libburn-SVN."
echo " -no_largefile do not use 64 bit off_t (must match libburn)." echo " -no_largefile do not use 64 bit off_t (must match libburn)."
echo " -do_not_compile_cdrskin omit compilation of cdrskin/cdrskin." echo " -do_not_compile_cdrskin omit compilation of cdrskin/cdrskin."

View File

@ -1,4 +1,4 @@
AC_INIT([libburn], [0.5.2], [http://libburnia-project.org]) AC_INIT([libburn], [0.5.0], [http://libburnia-project.org])
AC_PREREQ([2.50]) AC_PREREQ([2.50])
dnl AC_CONFIG_HEADER([config.h]) dnl AC_CONFIG_HEADER([config.h])
@ -88,7 +88,7 @@ dnl
dnl As said: Only copies. Original in libburn/libburn.h : burn_header_version_* dnl As said: Only copies. Original in libburn/libburn.h : burn_header_version_*
BURN_MAJOR_VERSION=0 BURN_MAJOR_VERSION=0
BURN_MINOR_VERSION=5 BURN_MINOR_VERSION=5
BURN_MICRO_VERSION=2 BURN_MICRO_VERSION=0
BURN_VERSION=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION BURN_VERSION=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
AC_SUBST(BURN_MAJOR_VERSION) AC_SUBST(BURN_MAJOR_VERSION)
@ -99,15 +99,15 @@ AC_SUBST(BURN_VERSION)
dnl Libtool versioning dnl Libtool versioning
LT_RELEASE=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION LT_RELEASE=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
dnl dnl
dnl ts A80820 dnl ts A80717
dnl This is the release version libburn-0.5.2 = libburn.so.4.17.0 dnl This is the release version libburn-0.5.0 = libburn.so.4.15.0
dnl ### This is the development version after above release version 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 not yet happened.
dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile. dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile.
dnl dnl
dnl SONAME = 21 - 17 = 4 . Library name = libburn.so.4.17.0 dnl SONAME = 19 - 15 = 4 . Library name = libburn.so.4.15.0
LT_CURRENT=21 LT_CURRENT=19
LT_AGE=17 LT_AGE=15
LT_REVISION=0 LT_REVISION=0
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE` LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`

View File

@ -196,31 +196,6 @@ unsigned int burn_drive_count(void)
} }
/* ts A80801 */
int burn_drive_is_listed(char *path, struct burn_drive **found, int flag)
{
int i, ret;
char drive_adr[BURN_DRIVE_ADR_LEN], off_adr[BURN_DRIVE_ADR_LEN];
ret = burn_drive_convert_fs_adr(path, off_adr);
if (ret <= 0)
strcpy(off_adr, path);
for (i = 0; i <= drivetop; i++) {
if (drive_array[i].global_index < 0)
continue;
ret = burn_drive_d_get_adr(&(drive_array[i]), drive_adr);
if (ret <= 0)
continue;
if(strcmp(off_adr, drive_adr) == 0) {
if (found != NULL)
*found= &(drive_array[i]);
return 1;
}
}
return 0;
}
/* ts A61125 : media status aspects of burn_drive_grab() */ /* ts A61125 : media status aspects of burn_drive_grab() */
int burn_drive_inquire_media(struct burn_drive *d) int burn_drive_inquire_media(struct burn_drive *d)
{ {
@ -1191,20 +1166,6 @@ int burn_drive_is_banned(char *device_address)
} }
/* ts A80731 */
int burn_drive_whitelist_count(void)
{
return enumeration_whitelist_top + 1;
}
char *burn_drive_whitelist_item(int idx, int flag)
{
if (idx < 0 || idx > enumeration_whitelist_top)
return NULL;
return enumeration_whitelist[idx];
}
/* ts A70924 */ /* ts A70924 */
int burn_drive__fd_from_special_adr(char *adr) int burn_drive__fd_from_special_adr(char *adr)
{ {

View File

@ -125,14 +125,4 @@ int burn_drive__fd_from_special_adr(char *adr);
int burn_drive_find_by_thread_pid(struct burn_drive **d, pid_t pid); int burn_drive_find_by_thread_pid(struct burn_drive **d, pid_t pid);
/* ts A51221 - A80731 : Whitelist inquiry functions */
int burn_drive_is_banned(char *device_address);
int burn_drive_whitelist_count(void);
char *burn_drive_whitelist_item(int idx, int flag);
/* ts A80801 */
int burn_drive_is_listed(char *path, struct burn_drive **found, int flag);
#endif /* __DRIVE */ #endif /* __DRIVE */

View File

@ -306,8 +306,7 @@ struct burn_toc_entry
/* Indicates whether extension data are valid and eventually override /* Indicates whether extension data are valid and eventually override
older elements in this structure: older elements in this structure:
bit0= DVD extension is valid @since 0.3.2 bit0= DVD extension is valid
@since 0.5.2 : DVD extensions are made valid for CD too
*/ */
unsigned char extensions_valid; unsigned char extensions_valid;
@ -2194,7 +2193,7 @@ void burn_version(int *major, int *minor, int *micro);
*/ */
#define burn_header_version_major 0 #define burn_header_version_major 0
#define burn_header_version_minor 5 #define burn_header_version_minor 5
#define burn_header_version_micro 2 #define burn_header_version_micro 0
/** Note: /** Note:
Above version numbers are also recorded in configure.ac because libtool Above version numbers are also recorded in configure.ac because libtool
wants them as parameters at build time. wants them as parameters at build time.
@ -2421,8 +2420,6 @@ int burn_random_access_write(struct burn_drive *d, off_t byte_address,
@param flag Bitfield for control purposes: @param flag Bitfield for control purposes:
bit0= - reserved - bit0= - reserved -
bit1= do not submit error message if read error bit1= do not submit error message if read error
bit2= on error do not try to read a second time
with single block steps. @since 0.5.2
@return 1=sucessful , <=0 an error occured @return 1=sucessful , <=0 an error occured
@since 0.4.0 @since 0.4.0
*/ */

View File

@ -432,8 +432,6 @@ Range "scdbackup" : 0x00020000 to 0x0002ffff
0x00020007 (NOTE,HIGH) = Closed O_EXCL scsi siblings 0x00020007 (NOTE,HIGH) = Closed O_EXCL scsi siblings
0x00020008 (SORRY,HIGH) = Device busy. Failed to fcntl-lock 0x00020008 (SORRY,HIGH) = Device busy. Failed to fcntl-lock
0x00020009 (SORRY,HIGH) = Neither stdio-path nor its directory exist 0x00020009 (SORRY,HIGH) = Neither stdio-path nor its directory exist
0x0002000a (FAILURE,HIGH) = Cannot accept '...' as SG_IO CDROM drive
0x0002000b (FAILURE,HIGH) = File object '...' not found
General library operations: General library operations:

View File

@ -62,7 +62,7 @@ extern struct libdax_msgs *libdax_messenger;
/* ts A80410 : <<< Dangerous experiment: Pretend that DVD-RAM is BD-RE /* ts A80410 : <<< Dangerous experiment: Pretend that DVD-RAM is BD-RE
# define Libburn_dvd_ram_as_bd_rE yes # define Libburn_dvd_ram_as_bd_rE yes
*/ */
/* ts A80509 : <<< Experiment: pretend that DVD-ROM and CD-ROM are other media /* ts A80509 : <<< Experiment: pretend that DVD-COM and CD-ROM are other media
like BD-ROM (0x40), BD-R seq (0x41), BD-R random (0x42) like BD-ROM (0x40), BD-R seq (0x41), BD-R random (0x42)
# define Libburn_rom_as_profilE 0x40 # define Libburn_rom_as_profilE 0x40
*/ */
@ -1293,10 +1293,6 @@ static int mmc_read_toc_al(struct burn_drive *d, int *alloc_len)
if (d->status == BURN_DISC_UNREADY) if (d->status == BURN_DISC_UNREADY)
d->status = BURN_DISC_FULL; d->status = BURN_DISC_FULL;
toc_find_modes(d); toc_find_modes(d);
/* A80808 */
burn_disc_cd_toc_extensions(d->disc, 0);
return 1; return 1;
} }

View File

@ -51,17 +51,11 @@ SIGKILL, SIGCHLD, SIGSTOP, SIGURG, SIGWINCH
#define BURN_OS_TRANSPORT_BUFFER_SIZE 65536 #define BURN_OS_TRANSPORT_BUFFER_SIZE 65536
/* To hold the position of the most recently delivered address from /* To hold the index number of the most recently delivered address from
device enumeration. device enumeration.
*/ */
struct burn_drive_enumerator_struct {
int pos;
int info_count;
char **info_list;
};
#define BURN_OS_DEFINE_DRIVE_ENUMERATOR_T \ #define BURN_OS_DEFINE_DRIVE_ENUMERATOR_T \
typedef struct burn_drive_enumerator_struct burn_drive_enumerator_t; typedef int burn_drive_enumerator_t;
/* Parameters for sibling list. See sibling_fds, sibling_fnames */ /* Parameters for sibling list. See sibling_fds, sibling_fnames */

View File

@ -443,8 +443,7 @@ int burn_read_data(struct burn_drive *d, off_t byte_address,
d->silent_on_scsi_error = sose_mem; d->silent_on_scsi_error = sose_mem;
if (err == BE_CANCELLED) { if (err == BE_CANCELLED) {
/* Try to read a smaller part of the chunk */ /* Try to read a smaller part of the chunk */
if(!(flag & 4)) for (i = 0; i < chunksize - 1; i++) {
for (i = 0; i < chunksize - 1; i++) {
if (flag & 2) if (flag & 2)
d->silent_on_scsi_error = 1; d->silent_on_scsi_error = 1;
if (d->drive_role == 1) { if (d->drive_role == 1) {

View File

@ -644,195 +644,12 @@ failed:;
} }
#define Libburn_drive_new_deaL 1
#ifdef Libburn_drive_new_deaL
/* ts A80731 */
static int is_ata_drive(char *fname)
{
int fd;
struct hd_driveid tm;
fd = sg_open_drive_fd(fname, 1);
if (fd == -1) {
if (linux_ata_enumerate_verbous)
fprintf(stderr,"open failed, errno=%d '%s'\n",
errno, strerror(errno));
return 0;
}
memset(&tm, 0, sizeof(tm));
ioctl(fd, HDIO_GET_IDENTITY, &tm);
/* not atapi */
if (!(tm.config & 0x8000) || (tm.config & 0x4000)) {
if (linux_ata_enumerate_verbous)
fprintf(stderr, "not marked as ATAPI\n");
sg_close_drive_fd(fname, -1, &fd, 0);
return 0;
}
/* if SG_IO fails on an atapi device, we should stop trying to
use hd* devices */
if (sgio_test(fd) == -1) {
if (linux_ata_enumerate_verbous)
fprintf(stderr,
"FATAL: sgio_test() failed: errno=%d '%s'\n",
errno, strerror(errno));
sg_close_drive_fd(fname, -1, &fd, 0);
return 0;
}
if (sg_close_drive_fd(fname, -1, &fd, 1) <= 0) {
if (linux_ata_enumerate_verbous)
fprintf(stderr,
"cannot close properly, errno=%d '%s'\n",
errno, strerror(errno));
return 0;
}
return 1;
}
static int is_scsi_drive(char *fname, int *bus_no, int *host_no,
int *channel_no, int *target_no, int *lun_no)
{
int fd, sid_ret = 0, ret;
struct sg_scsi_id sid;
int sibling_fds[BURN_OS_SG_MAX_SIBLINGS], sibling_count= 0;
char sibling_fnames[BURN_OS_SG_MAX_SIBLINGS][BURN_OS_SG_MAX_NAMELEN];
fd = sg_open_drive_fd(fname, 1);
if (fd == -1) {
if (linux_sg_enumerate_debug)
fprintf(stderr, "open failed, errno=%d '%s'\n",
errno, strerror(errno));
return 0;
}
sid_ret = ioctl(fd, SG_GET_SCSI_ID, &sid);
if (sid_ret == -1) {
sid.scsi_id = -1; /* mark SCSI address as invalid */
if(linux_sg_enumerate_debug)
fprintf(stderr,
"ioctl(SG_GET_SCSI_ID) failed, errno=%d '%s' , ",
errno, strerror(errno));
if (sgio_test(fd) == -1) {
if (linux_sg_enumerate_debug)
fprintf(stderr,
"FATAL: sgio_test() failed: errno=%d '%s'",
errno, strerror(errno));
sg_close_drive_fd(fname, -1, &fd, 0);
return 0;
}
#ifdef CDROM_DRIVE_STATUS
if (strcmp(linux_sg_device_family,"/dev/sg%d") != 0) {
/* http://developer.osdl.org/dev/robustmutexes/
src/fusyn.hg/Documentation/ioctl/cdrom.txt */
sid_ret = ioctl(fd, CDROM_DRIVE_STATUS, 0);
if(linux_sg_enumerate_debug)
fprintf(stderr,
"ioctl(CDROM_DRIVE_STATUS) = %d , ",
sid_ret);
if (sid_ret != -1 && sid_ret != CDS_NO_INFO)
sid.scsi_type = TYPE_ROM;
else
sid_ret = -1;
}
#endif /* CDROM_DRIVE_STATUS */
}
#ifdef SCSI_IOCTL_GET_BUS_NUMBER
/* Hearsay A61005 */
if (ioctl(fd, SCSI_IOCTL_GET_BUS_NUMBER, bus_no) == -1)
*bus_no = -1;
#endif
if (sg_close_drive_fd(fname, -1, &fd,
sid.scsi_type == TYPE_ROM ) <= 0) {
if (linux_sg_enumerate_debug)
fprintf(stderr,
"cannot close properly, errno=%d '%s'\n",
errno, strerror(errno));
return 0;
}
if ( (sid_ret == -1 || sid.scsi_type != TYPE_ROM)
&& !linux_sg_accept_any_type) {
if (linux_sg_enumerate_debug)
fprintf(stderr, "sid.scsi_type = %d (!= TYPE_ROM)\n",
sid.scsi_type);
return 0;
}
if (sid_ret == -1 || sid.scsi_id < 0) {
/* ts A61211 : employ a more general ioctl */
ret = sg_obtain_scsi_adr(fname, bus_no, host_no,
channel_no, target_no, lun_no);
if (ret>0) {
sid.host_no = *host_no;
sid.channel = *channel_no;
sid.scsi_id = *target_no;
sid.lun = *lun_no;
} else {
if (linux_sg_enumerate_debug)
fprintf(stderr,
"sg_obtain_scsi_adr() failed\n");
return 0;
}
}
/* ts A60927 : trying to do locking with growisofs */
if(burn_sg_open_o_excl>1) {
ret = sg_open_scsi_siblings(
fname, -1, sibling_fds, sibling_fnames,
&sibling_count,
sid.host_no, sid.channel,
sid.scsi_id, sid.lun);
if (ret<=0) {
if (linux_sg_enumerate_debug)
fprintf(stderr, "cannot lock siblings\n");
sg_handle_busy_device(fname, 0);
return 0;
}
/* the final occupation will be done in sg_grab() */
sg_release_siblings(sibling_fds, sibling_fnames,
&sibling_count);
}
#ifdef SCSI_IOCTL_GET_BUS_NUMBER
if(*bus_no == -1)
*bus_no = 1000 * (sid.host_no + 1) + sid.channel;
#else
*bus_no = sid.host_no;
#endif
*host_no= sid.host_no;
*channel_no= sid.channel;
*target_no= sid.scsi_id;
*lun_no= sid.lun;
return 1;
}
#endif /* Libburn_drive_new_deaL */
/** Speciality of Linux: detect non-SCSI ATAPI (EIDE) which will from /** Speciality of Linux: detect non-SCSI ATAPI (EIDE) which will from
then on used used via generic SCSI as is done with (emulated) SCSI drives */ then on used used via generic SCSI as is done with (emulated) SCSI drives */
static void ata_enumerate(void) static void ata_enumerate(void)
{ {
#ifdef Libburn_drive_new_deaL
int ret;
#else
struct hd_driveid tm; struct hd_driveid tm;
int fd; int i, fd;
#endif
int i;
char fname[10]; char fname[10];
if (linux_ata_enumerate_verbous) if (linux_ata_enumerate_verbous)
@ -853,17 +670,6 @@ static void ata_enumerate(void)
fprintf(stderr, "not in whitelist\n"); fprintf(stderr, "not in whitelist\n");
continue; continue;
} }
#ifdef Libburn_drive_new_deaL
ret = is_ata_drive(fname);
if (ret < 0)
break;
if (ret == 0)
continue;
#else /* Libburn_drive_new_deaL */
fd = sg_open_drive_fd(fname, 1); fd = sg_open_drive_fd(fname, 1);
if (fd == -1) { if (fd == -1) {
if (linux_ata_enumerate_verbous) if (linux_ata_enumerate_verbous)
@ -900,10 +706,6 @@ static void ata_enumerate(void)
errno, strerror(errno)); errno, strerror(errno));
continue; continue;
} }
#endif /* Libburn_drive_new_deaL */
if (linux_ata_enumerate_verbous) if (linux_ata_enumerate_verbous)
fprintf(stderr, "accepting as drive without SCSI address\n"); fprintf(stderr, "accepting as drive without SCSI address\n");
enumerate_common(fname, -1, -1, -1, -1, -1); enumerate_common(fname, -1, -1, -1, -1, -1);
@ -914,18 +716,12 @@ static void ata_enumerate(void)
/** Detects (probably emulated) SCSI drives */ /** Detects (probably emulated) SCSI drives */
static void sg_enumerate(void) static void sg_enumerate(void)
{ {
#ifdef Libburn_drive_new_deaL
#else
struct sg_scsi_id sid; struct sg_scsi_id sid;
int fd, sibling_fds[BURN_OS_SG_MAX_SIBLINGS], sibling_count= 0; int i, fd, sibling_fds[BURN_OS_SG_MAX_SIBLINGS], sibling_count= 0, ret;
char sibling_fnames[BURN_OS_SG_MAX_SIBLINGS][BURN_OS_SG_MAX_NAMELEN];
int sid_ret = 0; int sid_ret = 0;
#endif
int i, ret;
int bus_no= -1, host_no= -1, channel_no= -1, target_no= -1, lun_no= -1; int bus_no= -1, host_no= -1, channel_no= -1, target_no= -1, lun_no= -1;
char fname[17]; char fname[17];
char sibling_fnames[BURN_OS_SG_MAX_SIBLINGS][BURN_OS_SG_MAX_NAMELEN];
sg_select_device_family(); sg_select_device_family();
@ -952,23 +748,6 @@ static void sg_enumerate(void)
continue; continue;
} }
#ifdef Libburn_drive_new_deaL
ret = is_scsi_drive(fname, &bus_no, &host_no, &channel_no,
&target_no, &lun_no);
if (ret < 0)
break;
if (ret == 0)
continue;
if (linux_sg_enumerate_debug)
fprintf(stderr, "accepting as SCSI %d,%d,%d,%d bus=%d\n",
host_no, channel_no, target_no, lun_no, bus_no);
enumerate_common(fname, bus_no, host_no, channel_no,
target_no, lun_no);
#else /* Libburn_drive_new_deaL */
/* ts A60927 */ /* ts A60927 */
fd = sg_open_drive_fd(fname, 1); fd = sg_open_drive_fd(fname, 1);
if (fd == -1) { if (fd == -1) {
@ -1078,218 +857,16 @@ static void sg_enumerate(void)
#else #else
bus_no = sid.host_no; bus_no = sid.host_no;
#endif #endif
if (linux_sg_enumerate_debug) if (linux_sg_enumerate_debug)
fprintf(stderr, "accepting as SCSI %d,%d,%d,%d bus=%d\n", fprintf(stderr, "accepting as SCSI %d,%d,%d,%d bus=%d\n",
sid.host_no, sid.channel, sid.scsi_id, sid.lun, sid.host_no, sid.channel, sid.scsi_id, sid.lun,
bus_no); bus_no);
enumerate_common(fname, bus_no, sid.host_no, sid.channel, enumerate_common(fname, bus_no, sid.host_no, sid.channel,
sid.scsi_id, sid.lun); sid.scsi_id, sid.lun);
#endif /* Libburn_drive_new_deaL */
} }
} }
#ifdef Libburn_drive_new_deaL
/* ts A80805 : eventually produce the other official name of a device file */
static int fname_other_name(char *fname, char other_name[80], int flag)
{
if(strncmp(fname, "/dev/sr", 7) == 0 &&
(fname[7] >= '0' && fname[7] <= '9') &&
(fname[8] == 0 ||
(fname[8] >= '0' && fname[8] <= '9' && fname[9] == 0))) {
sprintf(other_name, "/dev/scd%s", fname + 7);
return 1;
}
if(strncmp(fname, "/dev/scd", 8) == 0 &&
(fname[8] >= '0' && fname[8] <= '9') &&
(fname[9] == 0 ||
(fname[9] >= '0' && fname[9] <= '9' && fname[10] == 0))) {
sprintf(other_name, "/dev/sr%s", fname + 8);
return 1;
}
return 0;
}
/* ts A80805 */
static int fname_drive_is_listed(char *fname, int flag)
{
char other_fname[80];
if (burn_drive_is_listed(fname, NULL, 0))
return 1;
if (fname_other_name(fname, other_fname, 0) > 0)
if (burn_drive_is_listed(other_fname, NULL, 0))
return 2;
return 0;
}
/* ts A80731 : Directly open the given address.
@param flag bit0= do not compain about missing file
*/
static int fname_enumerate(char *fname, int flag)
{
int is_ata= 0, is_scsi= 0;
int bus_no= -1, host_no= -1, channel_no= -1, target_no= -1, lun_no= -1;
char msg[BURN_DRIVE_ADR_LEN + 80];
struct stat stbuf;
if (fname_drive_is_listed(fname, 0))
return 2;
if (stat(fname, &stbuf) == -1) {
sprintf(msg, "File object '%s' not found", fname);
if (!(flag & 1))
libdax_msgs_submit(libdax_messenger, -1, 0x0002000b,
LIBDAX_MSGS_SEV_FAILURE, LIBDAX_MSGS_PRIO_HIGH,
msg, 0, 0);
return -1;
}
is_ata = is_ata_drive(fname);
if (is_ata < 0)
return -1;
if (!is_ata)
is_scsi = is_scsi_drive(fname, &bus_no, &host_no, &channel_no,
&target_no, &lun_no);
if (is_scsi < 0)
return -1;
if (is_ata == 0 && is_scsi == 0)
return 0;
if (linux_sg_enumerate_debug)
fprintf(stderr,
"(single) accepting as SCSI %d,%d,%d,%d bus=%d\n",
host_no, channel_no, target_no, lun_no, bus_no);
enumerate_common(fname, bus_no, host_no, channel_no,
target_no, lun_no);
return 1;
}
/* ts A80731 : Directly open the given address from a single-item whitlist */
static int single_enumerate(int flag)
{
int ret, wl_count;
char *fname, msg[BURN_DRIVE_ADR_LEN + 80];
wl_count= burn_drive_whitelist_count();
if (wl_count != 1)
return 0;
fname= burn_drive_whitelist_item(0, 0);
if (fname == NULL)
return 0;
ret = fname_enumerate(fname, 0);
if (ret <= 0) {
sprintf(msg, "Cannot access '%s' as SG_IO CDROM drive", fname);
libdax_msgs_submit(libdax_messenger, -1, 0x0002000a,
LIBDAX_MSGS_SEV_FAILURE, LIBDAX_MSGS_PRIO_HIGH,
msg, 0, 0);
ret = -1;
}
return ret;
}
/* ts A80801 : looking up drives listed in /proc/sys/dev/cdrom/info line like:
drive name: sr1 hdc hda sr0
@parm flag bit0= release list memory and exit
*/
static int proc_sys_dev_cdrom_info(char ***list, int *count, int flag)
{
FILE *fp;
char line[1024], fname[1024 + 5], *cpt, *retpt, *list_data;
int maxl= 0, pass, i;
if (*list != NULL) {
if ((*list)[0] != NULL)
free((*list)[0]);
free(*list);
*list = NULL;
*count = 0;
}
if (flag & 1)
return 1;
*count = 0;
fp = fopen("/proc/sys/dev/cdrom/info", "r");
if (fp == NULL)
return 0;
while (1) {
retpt = fgets(line, sizeof(line), fp);
if (retpt == NULL)
break;
if(strncmp(line, "drive name:", 11) == 0)
break;
}
fclose(fp);
if (retpt == NULL)
return 0;
strcpy(fname, "/dev/");
for(pass = 0; pass < 2; pass++) {
*count = 0;
cpt = line + 11;
while (*cpt != 0) {
for(; *cpt == ' ' || *cpt == '\t'; cpt++);
if (*cpt == 0 || *cpt == '\n')
break;
sscanf(cpt, "%s", fname + 5);
if (strlen(fname) > maxl)
maxl = strlen(fname);
if (pass == 1)
strcpy((*list)[*count], fname);
(*count)++;
for(cpt++; *cpt != ' ' && *cpt != '\t'
&& *cpt != 0 && *cpt != '\n'; cpt++);
}
if (pass == 0) {
list_data = calloc(*count + 1, maxl+1);
*list = calloc(*count + 1, sizeof(char *));
if(list_data == NULL || *list == NULL) {
libdax_msgs_submit(libdax_messenger, -1,
0x00000003,
LIBDAX_MSGS_SEV_FATAL, LIBDAX_MSGS_PRIO_HIGH,
"Out of virtual memory", 0, 0);
if (list_data != NULL)
free(list_data);
if (*list != NULL)
free((char *) *list);
return -1;
}
for (i = 0; i <= *count; i++)
(*list)[i] = list_data + i * (maxl + 1);
}
}
return 1;
}
static int add_proc_info_drives(int flag)
{
int ret, list_count, count = 0, i;
char **list= NULL;
ret = proc_sys_dev_cdrom_info(&list, &list_count, 0);
if (ret <= 0)
return ret;
for (i = 0; i < list_count; i++) {
if (burn_drive_is_banned(list[i]))
continue;
ret = fname_enumerate(list[i], 1);
if (ret == 1)
count++;
}
proc_sys_dev_cdrom_info(&list, &list_count, 1); /* free memory */
return 1 + count;
}
#endif /* Libburn_drive_new_deaL */
/* ts A61115 */ /* ts A61115 */
/* ----------------------------------------------------------------------- */ /* ----------------------------------------------------------------------- */
/* PORTING: Private functions which contain publicly needed functionality. */ /* PORTING: Private functions which contain publicly needed functionality. */
@ -1374,14 +951,10 @@ int sg_give_next_adr(burn_drive_enumerator_t *idx,
{ {
/* os-linux.h : typedef int burn_drive_enumerator_t; */ /* os-linux.h : typedef int burn_drive_enumerator_t; */
static int sg_limit = 32, ata_limit = 26; static int sg_limit = 32, ata_limit = 26;
int baseno = 0, i; int baseno = 0;
char other_name[80];
if (initialize == -1) { if (initialize == -1)
proc_sys_dev_cdrom_info(&(idx->info_list), &(idx->info_count),
1);
return 0; return 0;
}
sg_select_device_family(); sg_select_device_family();
if (linux_sg_device_family[0] == 0) if (linux_sg_device_family[0] == 0)
@ -1389,56 +962,30 @@ int sg_give_next_adr(burn_drive_enumerator_t *idx,
if (linux_ata_device_family[0] == 0) if (linux_ata_device_family[0] == 0)
ata_limit = 0; ata_limit = 0;
if (initialize == 1) { if (initialize == 1)
idx->pos = -1; *idx = -1;
idx->info_count= 0; (*idx)++;
idx->info_list= NULL; if (*idx >= sg_limit)
proc_sys_dev_cdrom_info(&(idx->info_list), &(idx->info_count),
0);
}
(idx->pos)++;
if (idx->pos >= sg_limit)
goto next_ata; goto next_ata;
if (adr_size < 11) if (adr_size < 10)
return -1; return -1;
sprintf(adr, linux_sg_device_family, idx->pos); sprintf(adr, linux_sg_device_family, *idx);
/* ts A80702 */
sg_exchange_scd_for_sr(adr, 0); sg_exchange_scd_for_sr(adr, 0);
goto return_1_pre_proc;
return 1;
next_ata:; next_ata:;
baseno += sg_limit; baseno += sg_limit;
if (idx->pos - baseno >= ata_limit) if (*idx - baseno >= ata_limit)
goto next_proc_info; goto next_nothing;
if (adr_size < 9) if (adr_size < 9)
return -1; return -1;
sprintf(adr, linux_ata_device_family, 'a' + (idx->pos - baseno)); sprintf(adr, linux_ata_device_family, 'a' + (*idx - baseno));
goto return_1_pre_proc;
next_proc_info:;
baseno += ata_limit;
for (i = 0; i < idx->info_count; i++) {
if ((idx->info_list)[i][0] == 0)
continue;
if (baseno == idx->pos) {
if (adr_size < strlen((idx->info_list)[i]) + 1)
return -1;
strcpy(adr, (idx->info_list)[i]);
return 1;
}
baseno++;
}
return 0;
return_1_pre_proc:;
for (i = 0; i < idx->info_count; i++) {
if (strcmp((idx->info_list)[i], adr) == 0)
(idx->info_list)[i][0] = 0;
if (fname_other_name(adr, other_name, 0) > 0)
if (strcmp((idx->info_list)[i], other_name) == 0)
(idx->info_list)[i][0] = 0;
}
return 1; return 1;
next_nothing:;
baseno += ata_limit;
return 0;
} }
@ -1460,27 +1007,8 @@ return_1_pre_proc:;
/* ts A61115: replacing call to sg-implementation internals from drive.c */ /* ts A61115: replacing call to sg-implementation internals from drive.c */
int scsi_enumerate_drives(void) int scsi_enumerate_drives(void)
{ {
#ifdef Libburn_drive_new_deaL
int ret;
#endif
#ifdef Libburn_drive_new_deaL
/* Direct examination of eventually single whitelisted name */
ret = single_enumerate(0);
if (ret < 0)
return -1;
if (ret > 0)
return 1;
#endif /* Libburn_drive_new_deaL */
sg_enumerate(); sg_enumerate();
ata_enumerate(); ata_enumerate();
#ifdef Libburn_drive_new_deaL
add_proc_info_drives(0);
#endif /* Libburn_drive_new_deaL */
return 1; return 1;
} }
@ -1932,8 +1460,7 @@ int sg_is_enumerable_adr(char *adr)
return 1; return 1;
} }
} }
if (first == 0) sg_give_next_adr(&idx, fname, sizeof(fname), -1);
sg_give_next_adr(&idx, fname, sizeof(fname), -1);
return(0); return(0);
} }

View File

@ -330,19 +330,11 @@ void burn_track_clear_isrc(struct burn_track *t)
int burn_track_get_sectors(struct burn_track *t) int burn_track_get_sectors(struct burn_track *t)
{ {
/* ts A70125 : was int */ /* ts A70125 : was int */
off_t size = 0; off_t size;
int sectors, seclen; int sectors, seclen;
seclen = burn_sector_length(t->mode); seclen = burn_sector_length(t->mode);
if (t->source != NULL) /* ts A80808 : mending sigsegv */ size = t->offset + t->source->get_size(t->source) + t->tail;
size = t->offset + t->source->get_size(t->source) + t->tail;
else if(t->entry != NULL) {
/* ts A80808 : all burn_toc_entry of track starts should now
have (extensions_valid & 1), even those from CD.
*/
if (t->entry->extensions_valid & 1)
size = ((off_t) t->entry->track_blocks) * (off_t) 2048;
}
sectors = size / seclen; sectors = size / seclen;
if (size % seclen) if (size % seclen)
sectors++; sectors++;
@ -476,7 +468,6 @@ int burn_session_get_sectors(struct burn_session *s)
return sectors; return sectors;
} }
int burn_disc_get_sectors(struct burn_disc *d) int burn_disc_get_sectors(struct burn_disc *d)
{ {
int sectors = 0, i; int sectors = 0, i;
@ -524,40 +515,3 @@ int burn_session_get_hidefirst(struct burn_session *session)
{ {
return session->hidefirst; return session->hidefirst;
} }
/* ts A80808 : Enhance CD toc to DVD toc */
int burn_disc_cd_toc_extensions(struct burn_disc *d, int flag)
{
int sidx, tidx;
struct burn_toc_entry *entry, *prev_entry= NULL;
for (sidx = 0; sidx < d->sessions; sidx++) {
for (tidx = 0; tidx < d->session[sidx]->tracks + 1; tidx++) {
if (tidx < d->session[sidx]->tracks)
entry = d->session[sidx]->track[tidx]->entry;
else
entry = d->session[sidx]->leadout_entry;
entry->session_msb = 0;
entry->point_msb = 0;
entry->start_lba = burn_msf_to_lba(entry->pmin,
entry->psec, entry->pframe);
if (tidx > 0) {
prev_entry->track_blocks =
entry->start_lba
- prev_entry->start_lba;
prev_entry->extensions_valid |= 1;
}
if (tidx == d->session[sidx]->tracks) {
entry->session_msb = 0;
entry->point_msb = 0;
entry->track_blocks = 0;
entry->extensions_valid |= 1;
}
prev_entry = entry;
}
}
return 1;
}

View File

@ -109,8 +109,4 @@ int burn_track_apply_fillup(struct burn_track *t, off_t max_size, int flag);
off_t burn_track_get_default_size(struct burn_track *t); off_t burn_track_get_default_size(struct burn_track *t);
/* ts A80808 : Enhance CD toc to DVD toc */
int burn_disc_cd_toc_extensions(struct burn_disc *d, int flag);
#endif /* BURN__STRUCTURE_H */ #endif /* BURN__STRUCTURE_H */