Compare commits

..

17 Commits

Author SHA1 Message Date
43f9268440 Documented changes and release timestamp 2009-07-14 10:24:17 +00:00
dbc5517a62 Updated cdrskin tarball generator 2009-07-14 10:23:04 +00:00
e997e8ef67 Made number transition and activated development documentation 2009-07-14 10:21:03 +00:00
8657f0ceb8 Branching for libburn release 0.6.8 2009-07-14 07:52:49 +00:00
19a668a48e Timestamp for revision 2691 2009-07-07 19:17:40 +00:00
6ceabaff32 configure options --enable-libdir-pkgconfig and --enable-pkgconfig-path=DIR 2009-07-07 19:12:18 +00:00
b65b852c15 Retrying 3 times on EBUSY drives with generous usleep intervals 2009-06-14 09:49:47 +00:00
1ccedd5572 Bug fix: No usable media was detected with old MMC-1 drives 2009-06-03 18:53:57 +00:00
473e205c9e Bug fix: Old MMC-1 drives were rejected because of mode page 2Ah length 2009-06-03 08:58:18 +00:00
2522bebfbd Avoided to enumerate faulty drive objects 2009-06-02 17:21:43 +00:00
8276611468 Avoided SIGSEGV if no drives were found by scan 2009-06-02 16:30:06 +00:00
38994b62c0 Rectified use of burn_drive.mdata->valid 2009-06-02 16:28:33 +00:00
474c4cddd7 Made -scanbus work with SCSI bus numbers like 85 (USB, kernel 2.6.18.2) 2009-05-17 14:42:52 +00:00
b0b4bc57f8 Documented changes and release timestamp 2009-05-07 18:17:54 +00:00
b97fa7a451 Updated cdrskin tarball generator 2009-05-07 18:16:55 +00:00
8aca8e9921 Made number transition and activated development documentation 2009-05-07 18:15:47 +00:00
15b31b121a Mentioned BD were it was missing 2009-05-07 18:12:32 +00:00
22 changed files with 473 additions and 155 deletions

View File

@ -109,7 +109,7 @@ test_structest_SOURCES = test/structest.c
## cdrskin construction site - ts A60816 - A90507
cdrskin_cdrskin_CPPFLAGS = -Ilibburn
cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_0_6_6
cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_0_6_8
# cdrskin_cdrskin_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
# ts A80123, change proposed by Simon Huggins to cause dynamic libburn linking

20
README
View File

@ -11,7 +11,7 @@ Still containing parts of Libburn. By Derek Foreman <derek@signalmarketing.com>
and Ben Jansens <xor@orodu.net>
Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
http://files.libburnia-project.org/releases/libburn-0.6.6.pl00.tar.gz
http://files.libburnia-project.org/releases/libburn-0.6.8.pl00.tar.gz
------------------------------------------------------------------------------
@ -19,10 +19,10 @@ Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
From tarball
Obtain libburn-0.6.6.pl00.tar.gz, take it to a directory of your choice and do:
Obtain libburn-0.6.8.pl00.tar.gz, take it to a directory of your choice and do:
tar xzf libburn-0.6.6.pl00.tar.gz
cd libburn-0.6.6
tar xzf libburn-0.6.8.pl00.tar.gz
cd libburn-0.6.8
./configure --prefix=/usr
make
@ -401,6 +401,18 @@ Project history as far as known to me:
- 08 May 2009 libburn-0.6.6 fixes a bug with aborting on broken output pipe
and a bug with device scan on FreeBSD.
- 31 May 2009 libisofs-0.6.20 can record hard link relations in ISO images
and offers support with restoring them to disk. Current Linux kernels will
mount images with such hard links but will attribute a unique inode number
to each file.
- 28 Jun 2009 libisoburn-0.4.0: xorriso can record and restore hard link
relations of files. Performance of data reading has been improved. Option
-find now supports logical operators with its tests.
- 14 Jul 2009 libburn-0.6.8 fixes bugs and shortcommings with old MMC-1 drives
and with large SCSI bus numbers as handed out by Linux for USB drives.
------------------------------------------------------------------------------

View File

@ -25,3 +25,55 @@ AC_DEFUN([TARGET_SHIZZLE],
AC_MSG_RESULT([$ARCH])
])
dnl LIBBURNIA_SET_PKGCONFIG determines the install directory for the *.pc file.
dnl Important: Must be performed _after_ TARGET_SHIZZLE
dnl
AC_DEFUN([LIBBURNIA_SET_PKGCONFIG],
[
### for testing --enable-libdir-pkgconfig on Linux
### LIBBURNIA_PKGCONFDIR="$libdir"data/pkgconfig
if test "x$LIBBURNIA_PKGCONFDIR" = "x$libdir"/pkgconfig
then
dummy=dummy
else
AC_ARG_ENABLE(libdir-pkgconfig,
[ --enable-libdir-pkgconfig Install to $libdir/pkgconfig on any OS, default=no],
, enable_libdir_pkgconfig="no")
AC_MSG_CHECKING([for --enable-libdir-pkgconfig])
if test "x$enable_libdir_pkgconfig" = xyes
then
LIBBURNIA_PKGCONFDIR="$libdir"/pkgconfig
fi
AC_MSG_RESULT([$enable_libdir_pkgconfig])
fi
libburnia_pkgconfig_override="no"
AC_ARG_ENABLE(pkgconfig-path,
[ --enable-pkgconfig-path=DIR Absolute path of directory for libisofs-*.pc],
libburnia_pkgconfig_override="yes" , enable_pkgconfig_path="none")
AC_MSG_CHECKING([for overridden pkgconfig directory path])
if test "x$enable_pkgconfig_path" = xno
then
libburnia_pkgconfig_override="no"
fi
if test "x$enable_pkgconfig_path" = x -o "x$enable_pkgconfig_path" = xyes
then
libburnia_pkgconfig_override="invalid argument"
fi
if test "x$libburnia_pkgconfig_override" = xyes
then
LIBBURNIA_PKGCONFDIR="$enable_pkgconfig_path"
AC_MSG_RESULT([$LIBBURNIA_PKGCONFDIR])
else
AC_MSG_RESULT([$libburnia_pkgconfig_override])
fi
AC_SUBST(LIBBURNIA_PKGCONFDIR)
dnl For debugging only
### AC_MSG_RESULT([LIBBURNIA_PKGCONFDIR = $LIBBURNIA_PKGCONFDIR])
])

View File

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

View File

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

View File

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

View File

@ -88,7 +88,7 @@ or
/** The official program version */
#ifndef Cdrskin_prog_versioN
#define Cdrskin_prog_versioN "0.6.6"
#define Cdrskin_prog_versioN "0.6.8"
#endif
/** The official libburn interface revision to use.
@ -101,7 +101,7 @@ or
#define Cdrskin_libburn_minoR 6
#endif
#ifndef Cdrskin_libburn_micrO
#define Cdrskin_libburn_micrO 6
#define Cdrskin_libburn_micrO 8
#endif
@ -135,44 +135,44 @@ or
#endif /* Cdrskin_libburn_cvs_A60220_tS */
#ifdef Cdrskin_libburn_0_6_6
#define Cdrskin_libburn_versioN "0.6.6"
#ifdef Cdrskin_libburn_0_6_8
#define Cdrskin_libburn_versioN "0.6.8"
#define Cdrskin_libburn_from_pykix_svN 1
#endif /* Cdrskin_libburn_0_6_6 */
#endif /* Cdrskin_libburn_0_6_8 */
#ifdef Cdrskin_libburn_0_6_7
#define Cdrskin_libburn_versioN "0.6.7"
#ifdef Cdrskin_libburn_0_6_9
#define Cdrskin_libburn_versioN "0.6.9"
#define Cdrskin_libburn_from_pykix_svN 1
/* Place novelty switch macros here.
Move them down to Cdrskin_libburn_from_pykix_svN on version leap
*/
/* there are no libburn novelties in 0.6.7 yet */
/* there are no libburn novelties yet */
#endif /* Cdrskin_libburn_0_6_7 */
#endif /* Cdrskin_libburn_0_6_9 */
#ifndef Cdrskin_libburn_versioN
#define Cdrskin_libburn_0_6_6
#define Cdrskin_libburn_versioN "0.6.6"
#define Cdrskin_libburn_0_6_8
#define Cdrskin_libburn_versioN "0.6.8"
#define Cdrskin_libburn_from_pykix_svN 1
#endif
#ifdef Cdrskin_libburn_0_6_6
#ifdef Cdrskin_libburn_0_6_8
#undef Cdrskin_libburn_majoR
#undef Cdrskin_libburn_minoR
#undef Cdrskin_libburn_micrO
#define Cdrskin_libburn_majoR 0
#define Cdrskin_libburn_minoR 6
#define Cdrskin_libburn_micrO 6
#define Cdrskin_libburn_micrO 8
#endif
#ifdef Cdrskin_libburn_0_6_7
#ifdef Cdrskin_libburn_0_6_9
#undef Cdrskin_libburn_majoR
#undef Cdrskin_libburn_minoR
#undef Cdrskin_libburn_micrO
#define Cdrskin_libburn_majoR 0
#define Cdrskin_libburn_minoR 6
#define Cdrskin_libburn_micrO 7
#define Cdrskin_libburn_micrO 9
#endif
@ -4408,13 +4408,15 @@ int Cdrskin_report_disc_status(struct CdrskiN *skin, enum burn_disc_status s,
int Cdrskin_scanbus(struct CdrskiN *skin, int flag)
{
int ret,i,busno,first_on_bus,pseudo_transport_group= 0,skipped_devices= 0;
int busmax= 16;
int busmax= 16, busidx;
char shellsafe[5*Cdrskin_strleN+2],perms[40],btldev[Cdrskin_adrleN];
char adr[Cdrskin_adrleN],*raw_dev,*drives_shown= NULL;
int *drives_busses= NULL;
struct stat stbuf;
drives_shown= malloc(skin->n_drives+1);
if(drives_shown==NULL)
drives_busses= malloc((skin->n_drives+1) * sizeof(int));
if(drives_shown == NULL || drives_busses == NULL)
{ret= -1; goto ex;}
for(i=0;i<skin->n_drives;i++)
drives_shown[i]= 0;
@ -4472,7 +4474,28 @@ int Cdrskin_scanbus(struct CdrskiN *skin, int flag)
if(skin->preskin->old_pseudo_scsi_adr)
printf("cdrskin: NOTE : The printed addresses are not cdrecord compatible !\n");
for(busno= 0;busno<=busmax;busno++) {
for(i=0;i<skin->n_drives;i++) {
drives_busses[i]= -1;
ret= Cdrskin_driveno_to_btldev(skin,i,btldev,1);
if(ret >= pseudo_transport_group &&
ret < pseudo_transport_group + 1000000) {
drives_busses[i]= ret - pseudo_transport_group;
if(ret > pseudo_transport_group + busmax)
busmax= 1 + ret - pseudo_transport_group;
}
}
for(busidx= 0; busidx < skin->n_drives + 1; busidx++) {
if(busidx < skin->n_drives)
busno= drives_busses[busidx];
else
busno= busmax;
if(busno < 0)
continue;
for(i= 0; i < busidx; i++)
if(drives_busses[i] == busno)
break;
if(i < busidx)
continue;
first_on_bus= 1;
for(i=0;i<skin->n_drives;i++) {
ret= Cdrskin_driveno_to_btldev(skin,i,btldev,1);
@ -4510,6 +4533,8 @@ int Cdrskin_scanbus(struct CdrskiN *skin, int flag)
ex:;
if(drives_shown!=NULL)
free((char *) drives_shown);
if(drives_busses!=NULL)
free((char *) drives_busses);
return(ret);
}

View File

@ -59,7 +59,7 @@ and to MMC-5 for DVD or BD).
GPL software included:<BR>
</H2>
<DL>
<DT>libburn-0.6.6</DT>
<DT>libburn-0.6.8</DT>
<DD>(founded by Derek Foreman and Ben Jansens,
developed and maintained since August 2006 by
Thomas Schmitt from team of libburnia-project.org)
@ -191,7 +191,7 @@ Standalone ISO 9660 multi-session CD/DVD/BD tool
<P>
<DL>
<DT>Download as source code (see README):</DT>
<DD><A HREF="cdrskin-0.6.6.pl00.tar.gz">cdrskin-0.6.6.pl00.tar.gz</A>
<DD><A HREF="cdrskin-0.6.8.pl00.tar.gz">cdrskin-0.6.8.pl00.tar.gz</A>
(750 KB).
</DD>
<DD>
@ -241,20 +241,17 @@ cdrskin_0.4.2.pl00-x86-suse9_0-static.tar.gz</A>, (310 KB), -static compiled,
<HR>
<P>
Enhancements towards previous stable version cdrskin-0.6.4.pl00:
Enhancements towards previous stable version cdrskin-0.6.6.pl00:
<UL>
<LI>none</LI>
<LI>Made -scanbus work with high SCSI bus numbers</LI>
<!--
<LI>none</LI>
-->
</UL>
Bug fixes towards cdrskin-0.6.4.pl00:
Bug fixes towards cdrskin-0.6.6.pl00:
<UL>
<LI>Improper abort handling with broken pipe during output to
a stdio: pseudo-drive
</LI>
<LI>Device scan stalled on FreeBSD with non-burner USB device</LI>
<LI>Old MMC-1 drives were rejected</LI>
<!--
<LI>none</LI>
-->
@ -264,8 +261,8 @@ a stdio: pseudo-drive
<P>
<DL>
<DT><H3>Development snapshot, version 0.6.7 :</H3></DT>
<DD>Enhancements towards current stable version 0.6.6.pl00:
<DT><H3>Development snapshot, version 0.6.9 :</H3></DT>
<DD>Enhancements towards current stable version 0.6.8.pl00:
<UL>
<LI>none yet</LI>
<!--
@ -274,7 +271,7 @@ a stdio: pseudo-drive
</UL>
</DD>
<DD>Bug fixes towards cdrskin-0.6.6.pl00:
<DD>Bug fixes towards cdrskin-0.6.8.pl00:
<UL>
<LI>none yet</LI>
<!--
@ -283,10 +280,10 @@ a stdio: pseudo-drive
</DD>
<DD>&nbsp;</DD>
<DD><A HREF="README_cdrskin_devel">README 0.6.7</A>
<DD><A HREF="cdrskin__help_devel">cdrskin_0.6.7 --help</A></DD>
<DD><A HREF="cdrskin_help_devel">cdrskin_0.6.7 -help</A></DD>
<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 0.6.7)</A></DD>
<DD><A HREF="README_cdrskin_devel">README 0.6.9</A>
<DD><A HREF="cdrskin__help_devel">cdrskin_0.6.9 --help</A></DD>
<DD><A HREF="cdrskin_help_devel">cdrskin_0.6.9 -help</A></DD>
<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 0.6.9)</A></DD>
<DD>&nbsp;</DD>
<DT>Maintainers of cdrskin unstable packages please use SVN of
<A HREF="http://libburnia-project.org"> libburnia-project.org</A></DT>
@ -306,7 +303,7 @@ admins with full system souvereignty.</DT>
<A HREF="README_cdrskin_devel">upcoming README</A> ):
</DD>
<DD>
<A HREF="cdrskin-0.6.7.tar.gz">cdrskin-0.6.7.tar.gz</A>
<A HREF="cdrskin-0.6.9.tar.gz">cdrskin-0.6.9.tar.gz</A>
(750 KB).
</DD>

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2009.05.07.100001"
#define Cdrskin_timestamP "2009.07.14.100001"

View File

@ -6581,15 +6581,15 @@ svn copy -m "Branching for libburn release 0.6.6"
http://svn.libburnia-project.org/libburn/trunk
http://svn.libburnia-project.org/libburn/branches/ZeroSixSix
[]
7 May 2009 [2629]
cdrskin/cdrskin.1
Mentioned BD were it was missing
[]
2009.05.07.100001 [2630]
Makefile.am
configure.ac
README
libburn/libburn.h (burn_header_version_*)
libburn/libburn.h
cdrskin/cdrskin.c
cdrskin/README
cdrskin/compile_cdrskin.sh
@ -6597,29 +6597,141 @@ cdrskin/cdrskin_timestamp.h
cdrskin/cdrskin_eng.html
Made number transition and activated development documentation
[]
7 May 2009 [2631]
- cdrskin/add_ts_changes_to_libburn_0_6_4
- cdrskin/add_ts_changes_to_libburn_0_6_5
+ cdrskin/add_ts_changes_to_libburn_0_6_6
+ cdrskin/add_ts_changes_to_libburn_0_6_7
Updated cdrskin tarball generator
[]
7 May 2009 [2632]
cdrskin/changelog.txt
Documented changes and release timestamp
------------------------------ release - cdrskin-0.6.6.pl00 - 2009.05.07.100001
Bug fix: burn_abort() did not work with broken output pipe (since rev 2514)
Bug fix: Device scan stalled on FreeBSD. Ticket 148 jwehle
[]
7 May 2009 [2633]
cdrskin/cdrskin.1
Mentioned BD were it was missing
------------------------------------ cycle - cdrskin-0.6.7 -
------------------------------------ cycle - cdrskin-0.6.7 -
2009.05.07.181034 [2634]
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 and activated development documentation
7 May 2009 [2635]
- cdrskin/add_ts_changes_to_libburn_0_6_4
- cdrskin/add_ts_changes_to_libburn_0_6_5
+ cdrskin/add_ts_changes_to_libburn_0_6_6
+ cdrskin/add_ts_changes_to_libburn_0_6_7
Updated cdrskin tarball generator
7 May 2009 [2636]
cdrskin/changelog.txt
Documented changes and release timestamp
------------------------------------ cycle - cdrskin-0.6.7 - 2009.05.07.181034
8 May 2009 [2637]
svn move -m libburn release 0.6.6 is ready
http://svn.libburnia-project.org/libburn/branches/ZeroSixSix
http://svn.libburnia-project.org/libburn/tags/ZeroSixSix
2009.05.17.144304 [2645]
cdrskin/cdrskin.c
Made -scanbus work with SCSI bus numbers like 85 (USB, kernel 2.6.18.2)
2009.06.02.162841 [2655]
libburn/drive.c
libburn/async.c
libburn/options.c
libburn/spc.c
libburn/libdax_msgs.h
Rectified use of burn_drive.mdata->valid
2 Jun 2009 [2656]
test/libburner.c
Avoided SIGSEGV if no drives were found by scan
2009.06.02.172201 [2657]
libburn/drive.c
Avoided to enumerate faulty drive objects
2009.06.03.085637 [2658]
libburn/spc.c
Bug fix: Old MMC-1 drives were rejected because of mode page 2Ah length
2009.06.03.185118 [2659]
libburn/transport.h
libburn/drive.c
libburn/spc.c
libburn/mmc.c
Bug fix: No usable media was detected with old MMC-1 drives
2009.06.14.095004 [2669]
libburn/sg-linux.c
Retrying 3 times on EBUSY drives with generous usleep intervals
------------------------------------ cycle - cdrskin-0.6.7 - 2009.06.14.095833
Made -scanbus work with high SCSI bus numbers
Bug fix: Old MMC-1 drives were rejected because of mode page 2Ah length
Bug fix: No usable media was detected with old MMC-1 drives
7 Jul 2009 [2691]
acinclude.m4
configure.ac
configure options --enable-libdir-pkgconfig and --enable-pkgconfig-path=DIR
2009.07.07.191134 [2692]
Timestamp for revision 2691
14 Jul 2009 [2894]
svn copy -m "Branching for libburn release 0.6.8"
http://svn.libburnia-project.org/libburn/trunk
http://svn.libburnia-project.org/libburn/branches/ZeroSixEight
2009.07.14.100001 [2695]
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 and activated development documentation
14 Jul 2009 [2696]
- cdrskin/add_ts_changes_to_libburn_0_6_6
- cdrskin/add_ts_changes_to_libburn_0_6_7
+ cdrskin/add_ts_changes_to_libburn_0_6_8
+ cdrskin/add_ts_changes_to_libburn_0_6_9
Updated cdrskin tarball generator
14 Jul 2009 []
cdrskin/changelog.txt
Documented changes and release timestamp
------------------------------ release - cdrskin-0.6.8.pl00 - 2009.07.14.100001
Made -scanbus work with high SCSI bus numbers
Bug fix: Old MMC-1 drives were rejected because of mode page 2Ah length
Bug fix: No usable media was detected with old MMC-1 drives
------------------------------------ cycle - cdrskin-0.6.9 -
------------------------------------ cycle - cdrskin-0.6.9 -
===============================================================================
TODO

View File

@ -1,13 +1,13 @@
#!/bin/sh
# compile_cdrskin.sh
# Copyright 2005 - 2008 Thomas Schmitt, scdbackup@gmx.net, GPL version 2
# Copyright 2005 - 2009 Thomas Schmitt, scdbackup@gmx.net, GPL version 2
# to be executed within ./libburn-* resp ./cdrskin-*
debug_opts="-O2"
def_opts=
largefile_opts="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1"
libvers="-DCdrskin_libburn_0_6_6"
libvers="-DCdrskin_libburn_0_6_8"
cleanup_src_or_obj="libburn/cleanup.o"
libdax_msgs_o="libburn/libdax_msgs.o"
libdax_audioxtr_o="libburn/libdax_audioxtr.o"
@ -33,15 +33,15 @@ do
libdax_audioxtr_o=
libdax_msgs_o="libburn/message.o"
cleanup_src_or_obj="-DCleanup_has_no_libburn_os_H cdrskin/cleanup.c"
elif test "$i" = "-libburn_0_6_6"
elif test "$i" = "-libburn_0_6_8"
then
libvers="-DCdrskin_libburn_0_6_6"
libvers="-DCdrskin_libburn_0_6_8"
libdax_audioxtr_o="libburn/libdax_audioxtr.o"
libdax_msgs_o="libburn/libdax_msgs.o"
cleanup_src_or_obj="libburn/cleanup.o"
elif test "$i" = "-libburn_svn"
then
libvers="-DCdrskin_libburn_0_6_7"
libvers="-DCdrskin_libburn_0_6_9"
libdax_audioxtr_o="libburn/libdax_audioxtr.o"
libdax_msgs_o="libburn/libdax_msgs.o"
cleanup_src_or_obj="libburn/cleanup.o"
@ -75,7 +75,7 @@ do
echo "Options:"
echo " -compile_cdrfifo compile program cdrskin/cdrfifo."
echo " -compile_dewav compile program test/dewav without libburn."
echo " -libburn_0_6_6 set macro to match libburn-0.6.6"
echo " -libburn_0_6_8 set macro to match libburn-0.6.8"
echo " -libburn_svn set macro to match current libburn-SVN."
echo " -do_not_compile_cdrskin omit compilation of cdrskin/cdrskin."
echo " -experimental use newly introduced libburn features."

View File

@ -1,4 +1,4 @@
AC_INIT([libburn], [0.6.6], [http://libburnia-project.org])
AC_INIT([libburn], [0.6.8], [http://libburnia-project.org])
AC_PREREQ([2.50])
dnl AC_CONFIG_HEADER([config.h])
@ -7,7 +7,7 @@ AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE([subdir-objects])
dnl Notes by ts A71207 - A90507 :
dnl Notes by ts A71207 - A90714 :
dnl
dnl Regrettably the meaning of the various version types was misunderstood
dnl before version 0.4.1.
@ -72,6 +72,7 @@ dnl 0.6.0 = libburn.so.4.25.0
dnl 0.6.2 = libburn.so.4.27.0
dnl 0.6.4 = libburn.so.4.29.0
dnl 0.6.6 = libburn.so.4.31.0
dnl 0.6.8 = libburn.so.4.33.0
dnl
dnl So LT_CURRENT, LT_REVISION and LT_AGE get set directly here.
dnl SONAME of the emerging library is LT_CURRENT - LT_AGE.
@ -97,7 +98,7 @@ dnl
dnl As said: Only copies. Original in libburn/libburn.h : burn_header_version_*
BURN_MAJOR_VERSION=0
BURN_MINOR_VERSION=6
BURN_MICRO_VERSION=6
BURN_MICRO_VERSION=8
BURN_VERSION=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
AC_SUBST(BURN_MAJOR_VERSION)
@ -108,15 +109,15 @@ AC_SUBST(BURN_VERSION)
dnl Libtool versioning
LT_RELEASE=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
dnl
dnl ts A90507
dnl This is the release version libburn-0.6.6 = libburn.so.4.31.0
dnl This is the development version after above release version
dnl ts A90714
dnl This is the release version libburn-0.6.8 = libburn.so.4.33.0
dnl ### This is the development version after above release version
dnl LT_CURRENT++, LT_AGE++ has not yet happened.
dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile.
dnl
dnl SONAME = 35 - 31 = 4 . Linux library name = libburn.so.4.31.0
LT_CURRENT=35
LT_AGE=31
dnl SONAME = 37 - 33 = 4 . Linux library name = libburn.so.4.33.0
LT_CURRENT=37
LT_AGE=33
LT_REVISION=0
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
@ -195,6 +196,13 @@ else
CFLAGS="$CFLAGS -DDEBUG"
fi
dnl Determine target directory for libburn-*.pc
dnl Important: Must be performed _after_ TARGET_SHIZZLE
dnl
LIBBURNIA_SET_PKGCONFIG
AC_CONFIG_FILES([
Makefile
doc/doxygen.conf

View File

@ -559,7 +559,7 @@ void burn_disc_write(struct burn_write_opts *opts, struct burn_disc *disc)
}
/* ts A61007 : obsolete Assert in spc_select_write_params() */
if (d->drive_role == 1 && !d->mdata->valid) {
if (d->drive_role == 1 && d->mdata->valid <= 0) {
libdax_msgs_submit(libdax_messenger,
d->global_index, 0x00020113,
LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH,

View File

@ -232,7 +232,7 @@ int burn_drive_inquire_media(struct burn_drive *d)
/* ts A61020 : d->status was set to BURN_DISC_BLANK as pure guess */
/* ts A71128 : run read_disc_info() for any recognizeable profile */
if (d->current_profile > 0 ||
if (d->current_profile > 0 || d->current_is_guessed_profile ||
d->mdata->cdr_write || d->mdata->cdrw_write ||
d->mdata->dvdr_write || d->mdata->dvdram_write) {
@ -418,6 +418,9 @@ int burn_drive_unregister(struct burn_drive *d)
struct burn_drive *burn_drive_finish_enum(struct burn_drive *d)
{
struct burn_drive *t;
char msg[BURN_DRIVE_ADR_LEN + 160];
int ret;
/* ts A60821
<<< debug: for tracing calls which might use open drive fds */
int mmc_function_spy(struct burn_drive *d, char * text);
@ -430,13 +433,19 @@ struct burn_drive *burn_drive_finish_enum(struct burn_drive *d)
mmc_function_spy(NULL, "enumerate_common : -------- doing grab");
/* try to get the drive info */
if (t->grab(t)) {
ret = t->grab(t);
if (ret) {
burn_print(2, "getting drive info\n");
t->getcaps(t);
t->unlock(t);
t->released = 1;
} else {
burn_print(2, "unable to grab new located drive\n");
/* ts A90602 */
d->mdata->valid = -1;
sprintf(msg, "Unable to grab scanned drive %s", d->devname);
libdax_msgs_submit(libdax_messenger, d->global_index,
0x0002016f, LIBDAX_MSGS_SEV_DEBUG,
LIBDAX_MSGS_PRIO_LOW, msg, 0, 0);
burn_drive_unregister(t);
t = NULL;
}
@ -855,7 +864,7 @@ static int drive_getcaps(struct burn_drive *d, struct burn_drive_info *out)
a ssert(d->mdata);
#endif
if (!d->idata->valid || !d->mdata->valid)
if(d->idata->valid <= 0 || d->mdata->valid <= 0)
return 0;
id = (struct burn_scsi_inquiry_data *)d->idata;
@ -921,7 +930,7 @@ int burn_drive_scan_sync(struct burn_drive_info *drives[],
*/
unsigned char scanned[32];
unsigned count = 0;
int i;
int i, ret;
/* ts A61007 : moved up to burn_drive_scan() */
/* a ssert(burn_running); */
@ -978,13 +987,22 @@ int burn_drive_scan_sync(struct burn_drive_info *drives[],
if (drive_array[i].global_index < 0)
continue; /* invalid device */
while (!drive_getcaps(&drive_array[i],
&(*drives)[*n_drives])) {
/* ts A90602 : This old loop is not plausible. See A70907.
while (!drive_getcaps(&drive_array[i],
&(*drives)[*n_drives])) {
sleep(1);
}
(*n_drives)++;
}
*/
/* ts A90602 : A single call shall do (rather than a loop) */
ret = drive_getcaps(&drive_array[i], &(*drives)[*n_drives]);
if (ret > 0)
(*n_drives)++;
scanned[i / 8] |= 1 << (i % 8);
}
if (*drives != NULL && *n_drives == 0) {
free ((char *) *drives);
*drives = NULL;
}
return(1);
}
@ -1140,14 +1158,14 @@ void burn_sectors_to_msf(int sectors, int *m, int *s, int *f)
int burn_drive_get_read_speed(struct burn_drive *d)
{
if(!d->mdata->valid)
if(d->mdata->valid <= 0)
return 0;
return d->mdata->max_read_speed;
}
int burn_drive_get_write_speed(struct burn_drive *d)
{
if(!d->mdata->valid)
if(d->mdata->valid <= 0)
return 0;
return d->mdata->max_write_speed;
}
@ -1155,7 +1173,7 @@ int burn_drive_get_write_speed(struct burn_drive *d)
/* ts A61021 : New API function */
int burn_drive_get_min_write_speed(struct burn_drive *d)
{
if(!d->mdata->valid)
if(d->mdata->valid <= 0)
return 0;
return d->mdata->min_write_speed;
}
@ -2082,7 +2100,7 @@ int burn_drive_get_speedlist(struct burn_drive *d,
struct burn_speed_descriptor *sd, *csd = NULL;
(*speed_list) = NULL;
if(!d->mdata->valid)
if(d->mdata->valid <= 0)
return 0;
for (sd = d->mdata->speed_descriptors; sd != NULL; sd = sd->next) {
ret = burn_speed_descriptor_new(&csd, NULL, csd, 0);
@ -2107,7 +2125,7 @@ int burn_drive_get_best_speed(struct burn_drive *d, int speed_goal,
if (speed_goal < 0)
best_speed = 2000000000;
*best_descr = NULL;
if(!d->mdata->valid)
if(d->mdata->valid <= 0)
return 0;
for (sd = d->mdata->speed_descriptors; sd != NULL; sd = sd->next) {
if (flag & 1)

View File

@ -2260,7 +2260,7 @@ void burn_version(int *major, int *minor, int *micro);
*/
#define burn_header_version_major 0
#define burn_header_version_minor 6
#define burn_header_version_micro 6
#define burn_header_version_micro 8
/** Note:
Above version numbers are also recorded in configure.ac because libtool
wants them as parameters at build time.

View File

@ -545,7 +545,8 @@ Range "scdbackup" : 0x00020000 to 0x0002ffff
0x0002016a (FAILURE,HIGH) = No MMC transport adapter is present
0x0002016b (WARNING,HIGH) = No MMC transport adapter is present
0x0002016c (DEBUG,HIGH) = No MMC transport adapter is present
0x0002016e (DEBUG,HIGH) = MODE SENSE page 2A too short
0x0002016f (DEBUG,HIGH) = Unable to grab scanned drive
0x00020170 (NOTE,HIGH) = Closing open session before writing new one
0x00020171 (NOTE,HIGH) = Closing BD-R with accidently open session

View File

@ -77,6 +77,12 @@ extern struct libdax_msgs *libdax_messenger;
# define Libburn_do_not_format_dvd_ram_or_bd_rE 1
*/
/* ts A90603 : Simulate the command restrictions of an old MMC-1 drive
# define Libisofs_simulate_old_mmc1_drivE 1
*/
/* DVD/BD progress report:
ts A61219 : It seems to work with a used (i.e. thoroughly formatted) DVD+RW.
Error messages of class DEBUG appear because of inability to
@ -1460,6 +1466,75 @@ inquire_drive:;
}
/* ts A61201 */
static char *mmc_obtain_profile_name(int profile_number)
{
static char *texts[0x53] = {NULL};
int i, max_pno = 0x53;
if (texts[0] == NULL) {
for (i = 0; i<max_pno; i++)
texts[i] = "";
/* mmc5r03c.pdf , Table 89, Spelling: guessed cdrecord style */
texts[0x01] = "Non-removable disk";
texts[0x02] = "Removable disk";
texts[0x03] = "MO erasable";
texts[0x04] = "Optical write once";
texts[0x05] = "AS-MO";
texts[0x08] = "CD-ROM";
texts[0x09] = "CD-R";
texts[0x0a] = "CD-RW";
texts[0x10] = "DVD-ROM";
texts[0x11] = "DVD-R sequential recording";
texts[0x12] = "DVD-RAM";
texts[0x13] = "DVD-RW restricted overwrite";
texts[0x14] = "DVD-RW sequential recording";
texts[0x15] = "DVD-R/DL sequential recording";
texts[0x16] = "DVD-R/DL layer jump recording";
texts[0x1a] = "DVD+RW";
texts[0x1b] = "DVD+R";
texts[0x2a] = "DVD+RW/DL";
texts[0x2b] = "DVD+R/DL";
texts[0x40] = "BD-ROM";
texts[0x41] = "BD-R sequential recording";
texts[0x42] = "BD-R random recording";
texts[0x43] = "BD-RE";
texts[0x50] = "HD-DVD-ROM";
texts[0x51] = "HD-DVD-R";
texts[0x52] = "HD-DVD-RAM";
}
if (profile_number<0 || profile_number>=max_pno)
return "";
return texts[profile_number];
}
/* ts A90603 : to be used if the drive knows no GET CONFIGURATION
*/
static int mmc_guess_profile(struct burn_drive *d, int flag)
{
int cp;
cp = 0;
if (d->status == BURN_DISC_BLANK ||
d->status == BURN_DISC_APPENDABLE) {
cp = 0x09;
} else if (d->status == BURN_DISC_FULL) {
cp = 0x08;
}
if (cp)
if (d->erasable)
cp = 0x0a;
d->current_profile = cp;
if (cp == 0)
return 0;
d->current_is_cd_profile = 1;
d->current_is_supported_profile = 1;
strcpy(d->current_profile_text, mmc_obtain_profile_name(cp));
return 1;
}
static int mmc_read_disc_info_al(struct burn_drive *d, int *alloc_len)
{
struct buffer buf;
@ -1610,6 +1685,10 @@ regard_as_blank:;
break;
}
/* ts A90603 : An MMC-1 drive might not know the media type yet */
if (d->current_is_guessed_profile && d->current_profile == 0)
mmc_guess_profile(d, 0);
if ((d->current_profile != 0 || d->status != BURN_DISC_UNREADY)
&& ! d->current_is_supported_profile) {
if (!d->silent_on_scsi_error) {
@ -1625,7 +1704,7 @@ regard_as_blank:;
return 0;
}
/* >>> ts A61217 : Note for future
/* ts A61217 : Note for future
growisofs performs OPC if (data[0]<<8)|data[1]<=32
which indicates no OPC entries are attached to the
reply from the drive.
@ -2165,49 +2244,6 @@ void mmc_set_speed(struct burn_drive *d, int r, int w)
}
/* ts A61201 */
static char *mmc_obtain_profile_name(int profile_number)
{
static char *texts[0x53] = {NULL};
int i, max_pno = 0x53;
if (texts[0] == NULL) {
for (i = 0; i<max_pno; i++)
texts[i] = "";
/* mmc5r03c.pdf , Table 89, Spelling: guessed cdrecord style */
texts[0x01] = "Non-removable disk";
texts[0x02] = "Removable disk";
texts[0x03] = "MO erasable";
texts[0x04] = "Optical write once";
texts[0x05] = "AS-MO";
texts[0x08] = "CD-ROM";
texts[0x09] = "CD-R";
texts[0x0a] = "CD-RW";
texts[0x10] = "DVD-ROM";
texts[0x11] = "DVD-R sequential recording";
texts[0x12] = "DVD-RAM";
texts[0x13] = "DVD-RW restricted overwrite";
texts[0x14] = "DVD-RW sequential recording";
texts[0x15] = "DVD-R/DL sequential recording";
texts[0x16] = "DVD-R/DL layer jump recording";
texts[0x1a] = "DVD+RW";
texts[0x1b] = "DVD+R";
texts[0x2a] = "DVD+RW/DL";
texts[0x2b] = "DVD+R/DL";
texts[0x40] = "BD-ROM";
texts[0x41] = "BD-R sequential recording";
texts[0x42] = "BD-R random recording";
texts[0x43] = "BD-RE";
texts[0x50] = "HD-DVD-ROM";
texts[0x51] = "HD-DVD-R";
texts[0x52] = "HD-DVD-RAM";
}
if (profile_number<0 || profile_number>=max_pno)
return "";
return texts[profile_number];
}
/* ts A61201 : found in unfunctional state
*/
static int mmc_get_configuration_al(struct burn_drive *d, int *alloc_len)
@ -2227,6 +2263,7 @@ static int mmc_get_configuration_al(struct burn_drive *d, int *alloc_len)
d->current_profile_text[0] = 0;
d->current_is_cd_profile = 0;
d->current_is_supported_profile = 0;
d->current_is_guessed_profile = 0;
d->current_has_feat21h = 0;
d->current_feat21h_link_size = -1;
d->current_feat23h_byte4 = 0;
@ -2249,8 +2286,24 @@ static int mmc_get_configuration_al(struct burn_drive *d, int *alloc_len)
c.dir = FROM_DRIVE;
d->issue_command(d, &c);
if (c.error)
#ifdef Libisofs_simulate_old_mmc1_drivE
c.error = 1;
c.sense[2] = 0x5;
c.sense[12] = 0x20;
c.sense[13] = 0x0;
#endif /* Libisofs_simulate_old_mmc1_drivE */
if (c.error) {
/* ts A90603 : MMC-1 drive do not know 46h GET CONFIGURATION */
if (c.sense[2] == 0x5 && c.sense[12] == 0x20 &&
c.sense[13] == 0x0) {
d->current_is_guessed_profile = 1;
/* Will yield a non-zero profile only after
mmc_read_disc_info_al() was called */
mmc_guess_profile(d, 0);
}
return 0;
}
old_alloc_len = *alloc_len;
*alloc_len = len = mmc_four_char_to_int(c.page->data);
if (len > old_alloc_len)
@ -3475,6 +3528,14 @@ static int mmc_get_write_performance_al(struct burn_drive *d,
c.page->bytes = 0;
c.dir = FROM_DRIVE;
d->issue_command(d, &c);
#ifdef Libisofs_simulate_old_mmc1_drivE
c.error = 1;
c.sense[2] = 0x5;
c.sense[12] = 0x20;
c.sense[13] = 0x0;
#endif /* Libisofs_simulate_old_mmc1_drivE */
if (c.error)
return 0;
len = mmc_four_char_to_int(c.page->data);
@ -3810,6 +3871,7 @@ int mmc_setup_drive(struct burn_drive *d)
d->current_profile_text[0] = 0;
d->current_is_cd_profile = 0;
d->current_is_supported_profile = 0;
d->current_is_guessed_profile = 0;
d->current_has_feat21h = 0;
d->current_feat21h_link_size = -1;
d->current_feat23h_byte4 = 0;

View File

@ -143,7 +143,7 @@ int burn_write_opts_set_simulate(struct burn_write_opts *opts, int sim)
int burn_write_opts_set_underrun_proof(struct burn_write_opts *opts,
int underrun_proof)
{
if (!opts->drive->mdata->valid)
if (opts->drive->mdata->valid <= 0)
return 0;
if (opts->drive->mdata->underrun_proof) {
opts->underrun_proof = underrun_proof;

View File

@ -470,7 +470,7 @@ static int sg_fcntl_lock(int *fd, char *fd_name, int l_type, int verbous)
/* ts A60926 */
static int sg_open_drive_fd(char *fname, int scan_mode)
{
int open_mode = O_RDWR, fd;
int open_mode = O_RDWR, fd, tries= 0;
char msg[81];
/* ts A70409 : DDLP-B */
@ -502,7 +502,8 @@ static int sg_open_drive_fd(char *fname, int scan_mode)
"libburn: experimental: O_EXCL= %d , O_NDELAY= %d\n",
!!(open_mode&O_EXCL),!!(open_mode&O_NDELAY));
*/
try_open:;
fd = open(fname, open_mode);
if (fd == -1) {
/* <<< debugging
@ -511,6 +512,17 @@ static int sg_open_drive_fd(char *fname, int scan_mode)
fname,errno);
*/
if (errno == EBUSY) {
tries++;
/* <<< debugging
fprintf(stderr,
"\nlibburn_DEBUG: EBUSY , tries= %d\n", tries);
*/
if (tries < 4) {
usleep(2000000);
goto try_open;
}
sg_handle_busy_device(fname, errno);
return -1;
@ -793,7 +805,7 @@ static int is_scsi_drive(char *fname, int *bus_no, int *host_no,
if (ret<=0) {
if (linux_sg_enumerate_debug)
fprintf(stderr, "cannot lock siblings\n");
sg_handle_busy_device(fname, 0);
sg_handle_busy_device(fname, 0);
return 0;
}
/* the final occupation will be done in sg_grab() */

View File

@ -291,7 +291,7 @@ void spc_allow(struct burn_drive *d)
}
/*
ts A70518 : Do not call with *alloc_len < 8
ts A70518 - A90603 : Do not call with *alloc_len < 10
*/
/** flag&1= do only inquire alloc_len */
static int spc_sense_caps_al(struct burn_drive *d, int *alloc_len, int flag)
@ -303,13 +303,19 @@ static int spc_sense_caps_al(struct burn_drive *d, int *alloc_len, int flag)
unsigned char *page;
struct command c;
struct burn_speed_descriptor *sd;
char msg[BURN_DRIVE_ADR_LEN + 160];
/* ts A61225 : 1 = report about post-MMC-1 speed descriptors */
static int speed_debug = 0;
if (*alloc_len < 8)
if (*alloc_len < 10)
return 0;
/* ts A90602 : Clearing mdata before command execution */
m = d->mdata;
m->valid = 0;
burn_mdata_free_subs(m);
memset(&buf, 0, sizeof(buf));
scsi_init_command(&c, SPC_MODE_SENSE, sizeof(SPC_MODE_SENSE));
/*
@ -328,12 +334,11 @@ static int spc_sense_caps_al(struct burn_drive *d, int *alloc_len, int flag)
d->issue_command(d, &c);
if (c.error) {
memset(&buf, 0, sizeof(buf));
d->mdata->valid = -1;
m->valid = -1;
was_error = 1;
}
size = c.page->data[0] * 256 + c.page->data[1];
m = d->mdata;
page = c.page->data + 8;
/* ts A61225 :
@ -342,18 +347,28 @@ static int spc_sense_caps_al(struct burn_drive *d, int *alloc_len, int flag)
in MMC-3 6.3.11 there are at least 28 bytes plus a variable length
set of speed descriptors. In MMC-5 E.11 it is declared "legacy".
*/
/* ts A90603 :
SPC-1 8.3.3 enumerates mode page format bytes from 0 to n and
defines Page Length as (n-1).
*/
page_length = page[1];
old_alloc_len = *alloc_len;
*alloc_len = page_length + 8;
*alloc_len = page_length + 10;
if (flag & 1)
return !was_error;
if (page_length + 8 > old_alloc_len)
page_length = old_alloc_len - 8;
if (page_length < 22)
return 0;
if (page_length + 10 > old_alloc_len)
page_length = old_alloc_len - 10;
m->valid = 0;
burn_mdata_free_subs(m);
/* ts A90602 : 20 asserts page[21]. (see SPC-1 8.3.3) */
if (page_length < 20) {
m->valid = -1;
sprintf(msg, "MODE SENSE page 2A too short: %s : %d",
d->devname, page_length);
libdax_msgs_submit(libdax_messenger, d->global_index,
0x0002016e, LIBDAX_MSGS_SEV_DEBUG,
LIBDAX_MSGS_PRIO_LOW, msg, 0, 0);
return 0;
}
m->buffer_size = page[12] * 256 + page[13];
m->dvdram_read = page[2] & 32;
@ -384,12 +399,13 @@ static int spc_sense_caps_al(struct burn_drive *d, int *alloc_len, int flag)
m->min_end_lba = 0x7fffffff;
m->max_end_lba = 0;
m->valid = 1;
if (!was_error)
m->valid = 1;
mmc_get_configuration(d);
/* ts A61225 : end of MMC-1 , begin of MMC-3 */
if (page_length < 32) /* no write speed descriptors ? */
if (page_length < 30) /* no write speed descriptors ? */
goto try_mmc_get_performance;
m->cur_write_speed = page[28] * 256 + page[29];
@ -413,12 +429,12 @@ static int spc_sense_caps_al(struct burn_drive *d, int *alloc_len, int flag)
}
for (i = 0; i < num_write_speeds; i++) {
speed = page[32 + 4*i + 2] * 256 + page[32 + 4*i + 3];
speed = page[32 + 4 * i + 2] * 256 + page[32 + 4 * i + 3];
if (speed_debug)
fprintf(stderr,
"LIBBURN_DEBUG: write speed #%d = %d kB/s (rc %d)\n",
i, speed, page[32 + 4*i +1] & 7);
i, speed, page[32 + 4 * i + 1] & 7);
/* ts A61226 */
ret = burn_speed_descriptor_new(&(d->mdata->speed_descriptors),
@ -431,7 +447,7 @@ static int spc_sense_caps_al(struct burn_drive *d, int *alloc_len, int flag)
strcpy(sd->profile_name,
d->current_profile_text);
}
sd->wrc = (( page[32 + 4*i +1] & 7 ) == 1 );
sd->wrc = (( page[32 + 4 * i + 1] & 7 ) == 1 );
sd->write_speed = speed;
}
@ -459,7 +475,7 @@ try_mmc_get_performance:;
void spc_sense_caps(struct burn_drive *d)
{
int alloc_len, start_len = 22, ret;
int alloc_len, start_len = 30, ret;
if (mmc_function_spy(d, "sense_caps") <= 0)
return;

View File

@ -161,6 +161,8 @@ struct burn_drive
char current_profile_text[80];
int current_is_cd_profile;
int current_is_supported_profile;
/* ts A90603 */
int current_is_guessed_profile;
/* ts A70128 : MMC-to-MMC feature info from 46h for DVD-RW.
Quite internal. Regard as opaque :)

View File

@ -106,7 +106,7 @@ int libburner_aquire_drive(char *drive_adr, int *driveno)
ret = libburner_aquire_by_adr(drive_adr);
else
ret = libburner_aquire_by_driveno(driveno);
if (ret <= 0)
if (ret <= 0 || *driveno <= 0)
return ret;
burn_disc_get_profile(drive_list[0].drive, &current_profile,
current_profile_name);