Compare commits
4 Commits
ZeroFiveTw
...
ZeroFiveZe
Author | SHA1 | Date | |
---|---|---|---|
a6fc6b43f9 | |||
0c6fde1ee8 | |||
73503c9bb1 | |||
775b377b21 |
@ -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
9
README
@ -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.
|
|
||||||
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -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:
|
||||||
|
|
||||||
|
@ -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"
|
||||||
|
|
@ -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"
|
||||||
|
|
@ -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.
|
||||||
|
@ -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 */
|
||||||
|
|
||||||
|
|
||||||
|
@ -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> </DD>
|
<DD> </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> </DD>
|
<DD> </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
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Cdrskin_timestamP "2008.08.20.080001"
|
#define Cdrskin_timestamP "2008.07.16.070001"
|
||||||
|
@ -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
|
||||||
|
@ -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."
|
||||||
|
16
configure.ac
16
configure.ac
@ -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`
|
||||||
|
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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 */
|
||||||
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
@ -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:
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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 */
|
||||||
|
@ -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) {
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -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 */
|
||||||
|
Reference in New Issue
Block a user