Compare commits
36 Commits
1.2.6
...
1.3.0.pl01
Author | SHA1 | Date | |
---|---|---|---|
1612e037ca | |||
64baafc17e | |||
b4c2f450d1 | |||
ae0dd31ae6 | |||
311d5347e1 | |||
da046bc232 | |||
5c1ef0d55a | |||
5c2c4e3b40 | |||
ac2bfec065 | |||
c566ea03cf | |||
3632e1be4e | |||
f18b832a82 | |||
1f92419cb4 | |||
d6e15a0139 | |||
e0db790103 | |||
9bc362f59b | |||
44d5f3ce4e | |||
0f43a39a45 | |||
0a1a085471 | |||
a1fdfe1519 | |||
bbb6315af0 | |||
40d83b2314 | |||
c82ac0a825 | |||
46b598abd2 | |||
c7784b79b7 | |||
f1b3184531 | |||
a18c862e84 | |||
c2903ab717 | |||
04ccaebff7 | |||
2e83dc554b | |||
3a17a8a014 | |||
ffca3e89dd | |||
676231c362 | |||
d76c715df7 | |||
9aa47792e0 | |||
f4cfe9b267 |
32
ChangeLog
32
ChangeLog
@ -1,17 +1,41 @@
|
|||||||
|
libburn-1.3.0.pl01.tar.gz Fri May 31 2013
|
||||||
|
===============================================================================
|
||||||
|
* Bug fix: cdrskin -msinfo on DVD and BD reported
|
||||||
|
old session start = next writable address.
|
||||||
|
Regression introduced by version 1.2.8.
|
||||||
|
|
||||||
|
libburn-1.3.0.tar.gz Fri May 17 2013
|
||||||
|
===============================================================================
|
||||||
|
* Bug fix: Full formatting of BD-RE used certification regardless of drive
|
||||||
|
capabilities
|
||||||
|
* Bug fix: DVD+R with damaged TOC were reported by -minfo with wrong end
|
||||||
|
address
|
||||||
|
|
||||||
|
libburn-1.2.8.tar.gz Mon Mar 18 2013
|
||||||
|
===============================================================================
|
||||||
|
* Bug fix: All CD tracks were reported with the sizes of the tracks in the
|
||||||
|
first session. Regression introduced with version 1.2.0 (rev 4552).
|
||||||
|
* Bug fix: On some drives the request for minimum speed yielded maximum speed
|
||||||
|
* New cdrskin option --list_speeds
|
||||||
|
* -toc and -minfo now report about tracks in the incomplete session
|
||||||
|
* New API call burn_disc_get_incomplete_sessions()
|
||||||
|
* New burn_toc_entry component .track_status_bits
|
||||||
|
|
||||||
libburn-1.2.6.tar.gz Tue Jan 08 2013
|
libburn-1.2.6.tar.gz Tue Jan 08 2013
|
||||||
===============================================================================
|
===============================================================================
|
||||||
* New cdrskin option --no_load
|
|
||||||
* Bug fix: Speed setting had no effect on BD media
|
* Bug fix: Speed setting had no effect on BD media
|
||||||
|
* New cdrskin option --no_load
|
||||||
* New API call burn_read_audio()
|
* New API call burn_read_audio()
|
||||||
* New API call burn_list_sev_texts()
|
* New API call burn_list_sev_texts()
|
||||||
|
|
||||||
libburn-1.2.4.tar.gz Fri Jul 20 2012
|
libburn-1.2.4.tar.gz Fri Jul 20 2012
|
||||||
===============================================================================
|
===============================================================================
|
||||||
|
* Bug fix: CD SAO sessions with data tracks started by an audio pause
|
||||||
|
* Bug fix: CD tracks were perceived 2 sectors too short.
|
||||||
|
Nice with TAO, bad with SAO.
|
||||||
|
* Bug fix: cdrskin SIGSEGV if track source was added when no drive was available
|
||||||
* New API call burn_write_opts_set_obs_pad(), ./configure --enable-dvd-obs-pad
|
* New API call burn_write_opts_set_obs_pad(), ./configure --enable-dvd-obs-pad
|
||||||
* New cdrskin option --obs_pad
|
* New cdrskin option --obs_pad
|
||||||
* Bug fix: CD SAO sessions with data tracks started by an audio pause
|
|
||||||
* Bug fix: CD tracks were perceived 2 sectors too short. Nice with TAO, bad with SAO.
|
|
||||||
* Bug fix: cdrskin SIGSEGV if track source was added when no drive was available
|
|
||||||
|
|
||||||
libburn-1.2.2.tar.gz Mon Apr 02 2012
|
libburn-1.2.2.tar.gz Mon Apr 02 2012
|
||||||
===============================================================================
|
===============================================================================
|
||||||
|
@ -118,9 +118,9 @@ test_structest_CPPFLAGS = -Ilibburn
|
|||||||
test_structest_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
|
test_structest_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
|
||||||
test_structest_SOURCES = test/structest.c
|
test_structest_SOURCES = test/structest.c
|
||||||
|
|
||||||
## cdrskin construction site - ts A60816 - B20720
|
## cdrskin construction site - ts A60816 - B30517
|
||||||
cdrskin_cdrskin_CPPFLAGS = -Ilibburn
|
cdrskin_cdrskin_CPPFLAGS = -Ilibburn
|
||||||
cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_1_2_6
|
cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_1_3_0
|
||||||
|
|
||||||
# cdrskin_cdrskin_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
|
# cdrskin_cdrskin_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
|
||||||
# ts A80123, change proposed by Simon Huggins to cause dynamic libburn linking
|
# ts A80123, change proposed by Simon Huggins to cause dynamic libburn linking
|
||||||
|
23
README
23
README
@ -11,7 +11,7 @@ Still containing parts of Libburn. By Derek Foreman <derek@signalmarketing.com>
|
|||||||
and Ben Jansens <xor@orodu.net>
|
and Ben Jansens <xor@orodu.net>
|
||||||
Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
|
Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
|
||||||
|
|
||||||
http://files.libburnia-project.org/releases/libburn-1.2.6.tar.gz
|
http://files.libburnia-project.org/releases/libburn-1.3.0.pl01.tar.gz
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -19,10 +19,10 @@ Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
|
|||||||
|
|
||||||
From tarball
|
From tarball
|
||||||
|
|
||||||
Obtain libburn-1.2.6.tar.gz, take it to a directory of your choice and do:
|
Obtain libburn-1.3.0.pl01.tar.gz, take it to a directory of your choice and do:
|
||||||
|
|
||||||
tar xzf libburn-1.2.6.tar.gz
|
tar xzf libburn-1.3.0.pl01.tar.gz
|
||||||
cd libburn-1.2.6
|
cd libburn-1.3.0
|
||||||
./configure --prefix=/usr
|
./configure --prefix=/usr
|
||||||
make
|
make
|
||||||
|
|
||||||
@ -692,6 +692,21 @@ Project history as far as known to me:
|
|||||||
programs. A proof of concept for a GUI frontend has been implemented:
|
programs. A proof of concept for a GUI frontend has been implemented:
|
||||||
xorriso-tcltk
|
xorriso-tcltk
|
||||||
|
|
||||||
|
- Mon Mar 18 2013 release 1.2.8:
|
||||||
|
Some rarely occuring bugs were fixed in libisofs and libburn. libburn's
|
||||||
|
handling of incomplete sessions has been improved. xorriso's mkisofs
|
||||||
|
emulation learned to set El Torito section id strings.
|
||||||
|
|
||||||
|
- Fri May 17 2013 release 1.3.0:
|
||||||
|
Several bugs were fixed in the libraries and in xorriso. The recently
|
||||||
|
introduced new boot preparation capabilities have been tested. New
|
||||||
|
boot preparation options for GRUB2 were added.
|
||||||
|
|
||||||
|
- Fri May 31 2013 patch release libburn-1.3.0.pl01:
|
||||||
|
cdrskin -msinfo on DVD and BD reported as old session start the same
|
||||||
|
number as the next writable address.
|
||||||
|
Regression introduced by version 1.2.8.
|
||||||
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -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-1.2.6.tar.gz
|
http://scdbackup.sourceforge.net/cdrskin-1.3.0.pl01.tar.gz
|
||||||
|
|
||||||
Copyright (C) 2006-2013 Thomas Schmitt, provided under GPL version 2 or later.
|
Copyright (C) 2006-2013 Thomas Schmitt, provided under GPL version 2 or later.
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
@ -26,10 +26,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-1.2.6.tar.gz, take it to a directory of your choice and do:
|
Obtain cdrskin-1.3.0.pl01.tar.gz, take it to a directory of your choice and do:
|
||||||
|
|
||||||
tar xzf cdrskin-1.2.6.tar.gz
|
tar xzf cdrskin-1.3.0.pl01.tar.gz
|
||||||
cd cdrskin-1.2.6
|
cd cdrskin-1.3.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="1.2.6"
|
skin_release="1.3.0"
|
||||||
patch_level=""
|
patch_level=""
|
||||||
# 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="1.2.7"
|
skin_release="1.3.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 "Version 1.2.6, Jan 08, 2013"
|
.TH CDRSKIN 1 "Version 1.3.0, May 17, 2013"
|
||||||
.\" 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:
|
||||||
@ -1243,6 +1243,27 @@ List all ignored cdrecord options. The "-" options cannot be used as addresses
|
|||||||
of track sources. No track source address may begin with a text equal to an
|
of track sources. No track source address may begin with a text equal to an
|
||||||
option which ends by "=". The list is ended by an empty line.
|
option which ends by "=". The list is ended by an empty line.
|
||||||
.TP
|
.TP
|
||||||
|
.BI \--list_speeds
|
||||||
|
Put out a list of speed values as reported by the output drive with
|
||||||
|
the loaded medium. This does not necessarily mean that the medium is writable
|
||||||
|
or that these speeds are actually achievable. Especially the
|
||||||
|
lists reported with empty drive or with ROM media obviously advertise
|
||||||
|
speeds for other media.
|
||||||
|
.br
|
||||||
|
It is not mandatory to use speed values out of the listed range.
|
||||||
|
The drive is supposed to choose a safe speed that is as near to the desired
|
||||||
|
speed as possible.
|
||||||
|
.br
|
||||||
|
At the end of the list, "Write speed L" and "Write speed H"
|
||||||
|
are the best guesses for lower and upper speed limit.
|
||||||
|
"Write speed l" and "Write speed h" may appear only with CD
|
||||||
|
and eventually override the list of other speed offers.
|
||||||
|
.br
|
||||||
|
Only if the drive reports contradicting speed information there will appear
|
||||||
|
"Write speed 0" or "Write speed-1", which tell the outcome of speed selection
|
||||||
|
by options speed=0 resp. speed=-1, if it deviates from "Write speed L"
|
||||||
|
resp. "Write speed H".
|
||||||
|
.TP
|
||||||
.BI \--long_toc
|
.BI \--long_toc
|
||||||
Like option -toc but marking each session start by a line "first: X last: Y"
|
Like option -toc but marking each session start by a line "first: X last: Y"
|
||||||
and each session end by "track:lout ...".
|
and each session end by "track:lout ...".
|
||||||
|
@ -87,7 +87,7 @@ or
|
|||||||
|
|
||||||
/** The official program version */
|
/** The official program version */
|
||||||
#ifndef Cdrskin_prog_versioN
|
#ifndef Cdrskin_prog_versioN
|
||||||
#define Cdrskin_prog_versioN "1.2.6"
|
#define Cdrskin_prog_versioN "1.3.0"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** The official libburn interface revision to use.
|
/** The official libburn interface revision to use.
|
||||||
@ -97,10 +97,10 @@ or
|
|||||||
#define Cdrskin_libburn_majoR 1
|
#define Cdrskin_libburn_majoR 1
|
||||||
#endif
|
#endif
|
||||||
#ifndef Cdrskin_libburn_minoR
|
#ifndef Cdrskin_libburn_minoR
|
||||||
#define Cdrskin_libburn_minoR 2
|
#define Cdrskin_libburn_minoR 3
|
||||||
#endif
|
#endif
|
||||||
#ifndef Cdrskin_libburn_micrO
|
#ifndef Cdrskin_libburn_micrO
|
||||||
#define Cdrskin_libburn_micrO 6
|
#define Cdrskin_libburn_micrO 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@ -120,34 +120,34 @@ or
|
|||||||
#undef Cdrskin_libburn_versioN
|
#undef Cdrskin_libburn_versioN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef Cdrskin_libburn_1_2_6
|
#ifdef Cdrskin_libburn_1_3_0
|
||||||
#define Cdrskin_libburn_versioN "1.2.6"
|
#define Cdrskin_libburn_versioN "1.3.0"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef Cdrskin_libburn_1_2_7
|
#ifdef Cdrskin_libburn_1_3_1
|
||||||
#define Cdrskin_libburn_versioN "1.2.7"
|
#define Cdrskin_libburn_versioN "1.3.1"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef Cdrskin_libburn_versioN
|
#ifndef Cdrskin_libburn_versioN
|
||||||
#define Cdrskin_libburn_1_2_6
|
#define Cdrskin_libburn_1_3_0
|
||||||
#define Cdrskin_libburn_versioN "1.2.6"
|
#define Cdrskin_libburn_versioN "1.3.0"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef Cdrskin_libburn_1_2_6
|
#ifdef Cdrskin_libburn_1_3_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 1
|
#define Cdrskin_libburn_majoR 1
|
||||||
#define Cdrskin_libburn_minoR 2
|
#define Cdrskin_libburn_minoR 3
|
||||||
#define Cdrskin_libburn_micrO 6
|
#define Cdrskin_libburn_micrO 0
|
||||||
#endif
|
#endif
|
||||||
#ifdef Cdrskin_libburn_1_2_7
|
#ifdef Cdrskin_libburn_1_3_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 1
|
#define Cdrskin_libburn_majoR 1
|
||||||
#define Cdrskin_libburn_minoR 2
|
#define Cdrskin_libburn_minoR 3
|
||||||
#define Cdrskin_libburn_micrO 7
|
#define Cdrskin_libburn_micrO 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@ -2862,6 +2862,7 @@ set_dev:;
|
|||||||
printf(" input_sheet_v07t=<path> read a Sony CD-TEXT definition file\n");
|
printf(" input_sheet_v07t=<path> read a Sony CD-TEXT definition file\n");
|
||||||
printf(" --list_formats list format descriptors for loaded media.\n");
|
printf(" --list_formats list format descriptors for loaded media.\n");
|
||||||
printf(" --list_ignored_options list all ignored cdrecord options.\n");
|
printf(" --list_ignored_options list all ignored cdrecord options.\n");
|
||||||
|
printf(" --list_speeds list speed descriptors for loaded media.\n");
|
||||||
printf(" --long_toc print overview of media content\n");
|
printf(" --long_toc print overview of media content\n");
|
||||||
printf(" modesty_on_drive=<options> no writing into full drive buffer\n");
|
printf(" modesty_on_drive=<options> no writing into full drive buffer\n");
|
||||||
printf(" --no_abort_handler exit even if the drive is in busy state\n");
|
printf(" --no_abort_handler exit even if the drive is in busy state\n");
|
||||||
@ -3110,7 +3111,7 @@ set_severities:;
|
|||||||
int major, minor, micro;
|
int major, minor, micro;
|
||||||
|
|
||||||
printf(
|
printf(
|
||||||
"Cdrecord 2.01-Emulation Copyright (C) 2006-2012, see libburnia-project.org\n");
|
"Cdrecord 2.01-Emulation Copyright (C) 2006-2013, see libburnia-project.org\n");
|
||||||
if(o->fallback_program[0]) {
|
if(o->fallback_program[0]) {
|
||||||
char *hargv[2];
|
char *hargv[2];
|
||||||
|
|
||||||
@ -3343,6 +3344,7 @@ struct CdrskiN {
|
|||||||
char msifile[Cdrskin_strleN];
|
char msifile[Cdrskin_strleN];
|
||||||
|
|
||||||
int do_atip;
|
int do_atip;
|
||||||
|
int do_list_speeds;
|
||||||
int do_list_formats;
|
int do_list_formats;
|
||||||
|
|
||||||
#ifdef Libburn_develop_quality_scaN
|
#ifdef Libburn_develop_quality_scaN
|
||||||
@ -3593,6 +3595,7 @@ int Cdrskin_new(struct CdrskiN **skin, struct CdrpreskiN *preskin, int flag)
|
|||||||
o->do_msinfo= 0;
|
o->do_msinfo= 0;
|
||||||
o->msifile[0]= 0;
|
o->msifile[0]= 0;
|
||||||
o->do_atip= 0;
|
o->do_atip= 0;
|
||||||
|
o->do_list_speeds= 0;
|
||||||
o->do_list_formats= 0;
|
o->do_list_formats= 0;
|
||||||
|
|
||||||
#ifdef Libburn_develop_quality_scaN
|
#ifdef Libburn_develop_quality_scaN
|
||||||
@ -4915,7 +4918,7 @@ int Cdrskin_toc(struct CdrskiN *skin, int flag)
|
|||||||
{
|
{
|
||||||
int num_sessions= 0,num_tracks= 0,lba= 0,track_count= 0,total_tracks= 0;
|
int num_sessions= 0,num_tracks= 0,lba= 0,track_count= 0,total_tracks= 0;
|
||||||
int session_no, track_no, pmin, psec, pframe, ret, final_ret= 1;
|
int session_no, track_no, pmin, psec, pframe, ret, final_ret= 1;
|
||||||
int track_offset = 1;
|
int track_offset = 1, open_sessions= 0, have_real_open_session= 0;
|
||||||
struct burn_drive *drive;
|
struct burn_drive *drive;
|
||||||
struct burn_disc *disc= NULL;
|
struct burn_disc *disc= NULL;
|
||||||
struct burn_session **sessions;
|
struct burn_session **sessions;
|
||||||
@ -4951,21 +4954,32 @@ int Cdrskin_toc(struct CdrskiN *skin, int flag)
|
|||||||
goto cannot_read;
|
goto cannot_read;
|
||||||
}
|
}
|
||||||
sessions= burn_disc_get_sessions(disc,&num_sessions);
|
sessions= burn_disc_get_sessions(disc,&num_sessions);
|
||||||
|
open_sessions= burn_disc_get_incomplete_sessions(disc);
|
||||||
if(num_sessions > 0)
|
if(num_sessions > 0)
|
||||||
track_offset = burn_session_get_start_tno(sessions[0], 0);
|
track_offset = burn_session_get_start_tno(sessions[0], 0);
|
||||||
if(track_offset <= 0)
|
if(track_offset <= 0)
|
||||||
track_offset= 1;
|
track_offset= 1;
|
||||||
if(flag&1) {
|
if(flag&1) {
|
||||||
for(session_no= 0; session_no<num_sessions; session_no++) {
|
for(session_no= 0; session_no < num_sessions + open_sessions;
|
||||||
|
session_no++) {
|
||||||
tracks= burn_session_get_tracks(sessions[session_no],&num_tracks);
|
tracks= burn_session_get_tracks(sessions[session_no],&num_tracks);
|
||||||
total_tracks+= num_tracks;
|
total_tracks+= num_tracks;
|
||||||
|
if(session_no == num_sessions + open_sessions - 1 && open_sessions > 0) {
|
||||||
|
total_tracks--; /* Do not count invisible track */
|
||||||
|
if(num_tracks > 1)
|
||||||
|
have_real_open_session= 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
printf("first: %d last %d\n",
|
printf("first: %d last %d\n",
|
||||||
track_offset, total_tracks + track_offset - 1);
|
track_offset, total_tracks + track_offset - 1);
|
||||||
}
|
}
|
||||||
for(session_no= 0; session_no<num_sessions; session_no++) {
|
for(session_no= 0; session_no < num_sessions + open_sessions; session_no++) {
|
||||||
tracks= burn_session_get_tracks(sessions[session_no],&num_tracks);
|
tracks= burn_session_get_tracks(sessions[session_no],&num_tracks);
|
||||||
if(tracks==NULL)
|
if(tracks==NULL)
|
||||||
|
continue;
|
||||||
|
if(session_no == num_sessions + open_sessions - 1 && open_sessions > 0)
|
||||||
|
num_tracks--;
|
||||||
|
if(num_tracks <= 0)
|
||||||
continue;
|
continue;
|
||||||
if(!(flag&1))
|
if(!(flag&1))
|
||||||
printf("first: %d last: %d\n",
|
printf("first: %d last: %d\n",
|
||||||
@ -4998,9 +5012,15 @@ int Cdrskin_toc(struct CdrskiN *skin, int flag)
|
|||||||
printf(" mode: %d\n",((toc_entry.control&7)<4?0:1));
|
printf(" mode: %d\n",((toc_entry.control&7)<4?0:1));
|
||||||
|
|
||||||
}
|
}
|
||||||
if((flag&1) && session_no<num_sessions-1)
|
if((flag&1) &&
|
||||||
|
session_no < num_sessions + open_sessions - 1 + have_real_open_session - 1)
|
||||||
continue;
|
continue;
|
||||||
burn_session_get_leadout_entry(sessions[session_no],&toc_entry);
|
if(have_real_open_session) {
|
||||||
|
/* Use start of invisible track */
|
||||||
|
burn_track_get_entry(tracks[num_tracks], &toc_entry);
|
||||||
|
} else {
|
||||||
|
burn_session_get_leadout_entry(sessions[session_no],&toc_entry);
|
||||||
|
}
|
||||||
if(toc_entry.extensions_valid&1) { /* DVD extension valid */
|
if(toc_entry.extensions_valid&1) { /* DVD extension valid */
|
||||||
lba= toc_entry.start_lba;
|
lba= toc_entry.start_lba;
|
||||||
burn_lba_to_msf(lba, &pmin, &psec, &pframe);
|
burn_lba_to_msf(lba, &pmin, &psec, &pframe);
|
||||||
@ -5039,13 +5059,15 @@ summary:
|
|||||||
strcpy(profile_name, "media");
|
strcpy(profile_name, "media");
|
||||||
|
|
||||||
printf("Media summary: %d sessions, %d tracks, %s %s\n",
|
printf("Media summary: %d sessions, %d tracks, %s %s\n",
|
||||||
num_sessions, track_count,
|
num_sessions + open_sessions - 1 + have_real_open_session, track_count,
|
||||||
s==BURN_DISC_BLANK ? "blank" :
|
s==BURN_DISC_BLANK ? "blank" :
|
||||||
s==BURN_DISC_APPENDABLE ? "appendable" :
|
s==BURN_DISC_APPENDABLE ? "appendable" :
|
||||||
s==BURN_DISC_FULL ? "closed" :
|
s==BURN_DISC_FULL ? "closed" :
|
||||||
s==BURN_DISC_EMPTY ? "no " : "unknown ",
|
s==BURN_DISC_EMPTY ? "no " : "unknown ",
|
||||||
profile_name);
|
profile_name);
|
||||||
|
|
||||||
|
if(have_real_open_session)
|
||||||
|
printf("Warning : Incomplete session encountered !\n");
|
||||||
|
|
||||||
if(disc!=NULL)
|
if(disc!=NULL)
|
||||||
burn_disc_free(disc);
|
burn_disc_free(disc);
|
||||||
@ -5067,7 +5089,7 @@ int Cdrskin_minfo(struct CdrskiN *skin, int flag)
|
|||||||
{
|
{
|
||||||
int num_sessions= 0,num_tracks= 0,lba= 0,track_count= 0,total_tracks= 0;
|
int num_sessions= 0,num_tracks= 0,lba= 0,track_count= 0,total_tracks= 0;
|
||||||
int session_no, track_no, pmin, psec, pframe, ret, size= 0, nwa= 0;
|
int session_no, track_no, pmin, psec, pframe, ret, size= 0, nwa= 0;
|
||||||
int last_leadout= 0, ovwrt_full= 0, track_offset= 1;
|
int last_leadout= 0, ovwrt_full= 0, track_offset= 1, open_sessions= 0;
|
||||||
struct burn_drive *drive;
|
struct burn_drive *drive;
|
||||||
struct burn_disc *disc= NULL;
|
struct burn_disc *disc= NULL;
|
||||||
struct burn_session **sessions= NULL;
|
struct burn_session **sessions= NULL;
|
||||||
@ -5079,8 +5101,9 @@ int Cdrskin_minfo(struct CdrskiN *skin, int flag)
|
|||||||
char media_class[80];
|
char media_class[80];
|
||||||
int nominal_sessions= 1, ftils= 1, ltils= 1, first_track= 1, read_capacity= 0;
|
int nominal_sessions= 1, ftils= 1, ltils= 1, first_track= 1, read_capacity= 0;
|
||||||
int app_code, cd_info_valid, lra, alloc_blocks, free_blocks;
|
int app_code, cd_info_valid, lra, alloc_blocks, free_blocks;
|
||||||
|
int have_real_open_session= 0;
|
||||||
off_t avail, buf_count;
|
off_t avail, buf_count;
|
||||||
char disc_type[80], bar_code[9], buf[2 * 2048];
|
char disc_type[80], bar_code[9], buf[2 * 2048], *type_text;
|
||||||
unsigned int disc_id;
|
unsigned int disc_id;
|
||||||
|
|
||||||
drive= skin->drives[skin->driveno].drive;
|
drive= skin->drives[skin->driveno].drive;
|
||||||
@ -5138,15 +5161,17 @@ int Cdrskin_minfo(struct CdrskiN *skin, int flag)
|
|||||||
} else {
|
} else {
|
||||||
|
|
||||||
sessions= burn_disc_get_sessions(disc, &num_sessions);
|
sessions= burn_disc_get_sessions(disc, &num_sessions);
|
||||||
|
open_sessions= burn_disc_get_incomplete_sessions(disc);
|
||||||
if(num_sessions > 0)
|
if(num_sessions > 0)
|
||||||
track_offset= burn_session_get_start_tno(sessions[0], 0);
|
track_offset= burn_session_get_start_tno(sessions[0], 0);
|
||||||
if(track_offset <= 0)
|
if(track_offset <= 0)
|
||||||
track_offset= 1;
|
track_offset= 1;
|
||||||
first_track= track_offset;
|
first_track= track_offset;
|
||||||
nominal_sessions= num_sessions;
|
nominal_sessions= num_sessions + open_sessions;
|
||||||
if(s == BURN_DISC_APPENDABLE)
|
if(s == BURN_DISC_APPENDABLE && open_sessions == 0)
|
||||||
nominal_sessions++;
|
nominal_sessions++;
|
||||||
for(session_no= 0; session_no<num_sessions; session_no++) {
|
for(session_no= 0; session_no < num_sessions + open_sessions;
|
||||||
|
session_no++) {
|
||||||
ftils= total_tracks + 1;
|
ftils= total_tracks + 1;
|
||||||
tracks= burn_session_get_tracks(sessions[session_no],&num_tracks);
|
tracks= burn_session_get_tracks(sessions[session_no],&num_tracks);
|
||||||
if(tracks==NULL)
|
if(tracks==NULL)
|
||||||
@ -5157,7 +5182,7 @@ int Cdrskin_minfo(struct CdrskiN *skin, int flag)
|
|||||||
&& total_tracks >= 2)
|
&& total_tracks >= 2)
|
||||||
first_track= 2;
|
first_track= 2;
|
||||||
}
|
}
|
||||||
if(s == BURN_DISC_APPENDABLE)
|
if(s == BURN_DISC_APPENDABLE && open_sessions == 0)
|
||||||
ftils= ltils= total_tracks + 1;
|
ftils= ltils= total_tracks + 1;
|
||||||
}
|
}
|
||||||
printf("first track: %d\n", first_track);
|
printf("first track: %d\n", first_track);
|
||||||
@ -5187,7 +5212,7 @@ int Cdrskin_minfo(struct CdrskiN *skin, int flag)
|
|||||||
printf("\n");
|
printf("\n");
|
||||||
printf("Track Sess Type Start Addr End Addr Size\n");
|
printf("Track Sess Type Start Addr End Addr Size\n");
|
||||||
printf("==============================================\n");
|
printf("==============================================\n");
|
||||||
for(session_no= 0; session_no<num_sessions; session_no++) {
|
for(session_no= 0; session_no < num_sessions + open_sessions; session_no++) {
|
||||||
tracks= burn_session_get_tracks(sessions[session_no],&num_tracks);
|
tracks= burn_session_get_tracks(sessions[session_no],&num_tracks);
|
||||||
if(tracks==NULL)
|
if(tracks==NULL)
|
||||||
continue;
|
continue;
|
||||||
@ -5233,11 +5258,33 @@ int Cdrskin_minfo(struct CdrskiN *skin, int flag)
|
|||||||
|
|
||||||
#endif /* Cdrskin_with_last_recorded_addresS */
|
#endif /* Cdrskin_with_last_recorded_addresS */
|
||||||
|
|
||||||
|
if(session_no < num_sessions) {
|
||||||
|
type_text= ((toc_entry.control&7)<4) ? "Audio" : "Data";
|
||||||
|
} else {
|
||||||
|
if(track_no < num_tracks - 1) {
|
||||||
|
type_text= "Rsrvd";
|
||||||
|
have_real_open_session = 1;
|
||||||
|
} else {
|
||||||
|
type_text= "Blank";
|
||||||
|
}
|
||||||
|
if(toc_entry.extensions_valid & 4) {
|
||||||
|
if(toc_entry.track_status_bits & (1 << 14))
|
||||||
|
type_text= "Blank";
|
||||||
|
else if(toc_entry.track_status_bits & (1 << 16)) {
|
||||||
|
type_text= "Apdbl";
|
||||||
|
have_real_open_session = 1;
|
||||||
|
} else if(toc_entry.track_status_bits & (1 << 15)) {
|
||||||
|
type_text= "Rsrvd";
|
||||||
|
have_real_open_session = 1;
|
||||||
|
} else
|
||||||
|
type_text= "Invsb";
|
||||||
|
}
|
||||||
|
}
|
||||||
printf("%5d %5d %-6s %-10d %-10d %-10d\n",
|
printf("%5d %5d %-6s %-10d %-10d %-10d\n",
|
||||||
track_count + track_offset - 1, session_no + 1,
|
track_count + track_offset - 1, session_no + 1,
|
||||||
((toc_entry.control&7)<4) ? "Audio" : "Data", lba, lra, size);
|
type_text, lba, lra, size);
|
||||||
|
if(session_no < num_sessions)
|
||||||
last_leadout= lba + size;
|
last_leadout= lba + size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(last_leadout > 0)
|
if(last_leadout > 0)
|
||||||
@ -5250,10 +5297,12 @@ int Cdrskin_minfo(struct CdrskiN *skin, int flag)
|
|||||||
size= avail / 2048;
|
size= avail / 2048;
|
||||||
if(read_capacity == 0 && skin->media_is_overwriteable)
|
if(read_capacity == 0 && skin->media_is_overwriteable)
|
||||||
size= 0; /* unformatted overwriteable media */
|
size= 0; /* unformatted overwriteable media */
|
||||||
printf("%5d %5d %-6s %-10d %-10d %-10d\n",
|
if(nominal_sessions > num_sessions + open_sessions) {
|
||||||
track_count + track_offset, nominal_sessions,
|
printf("%5d %5d %-6s %-10d %-10d %-10d\n",
|
||||||
ovwrt_full ? "Data" : "Blank",
|
track_count + track_offset, nominal_sessions,
|
||||||
nwa, lba + size - 1, size);
|
ovwrt_full ? "Data" : "Blank",
|
||||||
|
nwa, nwa + size - 1, size);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
@ -5284,6 +5333,9 @@ int Cdrskin_minfo(struct CdrskiN *skin, int flag)
|
|||||||
printf("cdrskin: Above contrary statements follow cdrecord traditions.\n");
|
printf("cdrskin: Above contrary statements follow cdrecord traditions.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(have_real_open_session)
|
||||||
|
printf("\nWarning: Incomplete session encountered !\n");
|
||||||
|
|
||||||
if(disc!=NULL)
|
if(disc!=NULL)
|
||||||
burn_disc_free(disc);
|
burn_disc_free(disc);
|
||||||
if(s == BURN_DISC_EMPTY)
|
if(s == BURN_DISC_EMPTY)
|
||||||
@ -5563,6 +5615,117 @@ ex:;
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Perform --list_speeds
|
||||||
|
@param flag Bitfield for control purposes:
|
||||||
|
@return <=0 error, 1 success
|
||||||
|
*/
|
||||||
|
int Cdrskin_list_speeds(struct CdrskiN *skin, int flag)
|
||||||
|
{
|
||||||
|
struct burn_drive *drive;
|
||||||
|
int ret, i, profile_no, high= -1, low= 0x7fffffff, is_cd= 0;
|
||||||
|
char profile_name[90], *speed_unit= "D";
|
||||||
|
double speed_factor= 1385000.0, cd_factor= 75.0 * 2352;
|
||||||
|
struct burn_speed_descriptor *speed_list= NULL, *item, *other;
|
||||||
|
|
||||||
|
ret= Cdrskin_grab_drive(skin,0);
|
||||||
|
if(ret<=0)
|
||||||
|
return(ret);
|
||||||
|
drive= skin->drives[skin->driveno].drive;
|
||||||
|
ret= burn_drive_get_speedlist(drive, &speed_list);
|
||||||
|
if(ret <= 0) {
|
||||||
|
fprintf(stderr, "cdrskin: SORRY: Cannot obtain speed list info\n");
|
||||||
|
ret= 0; goto ex;
|
||||||
|
}
|
||||||
|
ret= burn_disc_get_profile(drive, &profile_no, profile_name);
|
||||||
|
printf("Media current: ");
|
||||||
|
if(profile_no > 0 && ret > 0) {
|
||||||
|
if(profile_name[0])
|
||||||
|
printf("%s\n", profile_name);
|
||||||
|
else
|
||||||
|
printf("%4.4Xh\n", profile_no);
|
||||||
|
} else
|
||||||
|
printf("is not recognizable\n");
|
||||||
|
if(profile_no >= 0x08 && profile_no <= 0x0a)
|
||||||
|
is_cd= profile_no;
|
||||||
|
speed_factor= Cdrskin_libburn_speed_factoR * 1000.0;
|
||||||
|
if(Cdrskin_libburn_speed_factoR == Cdrskin_libburn_cd_speed_factoR)
|
||||||
|
speed_unit= "C";
|
||||||
|
else if(Cdrskin_libburn_speed_factoR == Cdrskin_libburn_bd_speed_factoR)
|
||||||
|
speed_unit= "B";
|
||||||
|
|
||||||
|
for (item= speed_list; item != NULL; item= item->next) {
|
||||||
|
if(item->source == 1) {
|
||||||
|
/* CD mode page 2Ah : report only if not same speed by GET PERFORMANCE */
|
||||||
|
for(other= speed_list; other != NULL; other= other->next)
|
||||||
|
if(other->source == 2 && item->write_speed == other->write_speed)
|
||||||
|
break;
|
||||||
|
if(other != NULL)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
printf("Write speed : %5dk , %4.1fx%s\n",
|
||||||
|
item->write_speed,
|
||||||
|
((double) item->write_speed) * 1000.0 / speed_factor, speed_unit);
|
||||||
|
if(item->write_speed > high)
|
||||||
|
high= item->write_speed;
|
||||||
|
if(item->write_speed < low)
|
||||||
|
low= item->write_speed;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Maybe there is ATIP info */
|
||||||
|
if(is_cd) {
|
||||||
|
ret= burn_disc_read_atip(drive);
|
||||||
|
if(ret < 0)
|
||||||
|
goto ex;
|
||||||
|
if(ret > 0) {
|
||||||
|
for(i= 0; i < 2; i++) {
|
||||||
|
if(i == 0)
|
||||||
|
ret= burn_drive_get_min_write_speed(drive);
|
||||||
|
else
|
||||||
|
ret= burn_drive_get_write_speed(drive);
|
||||||
|
if(ret > 0) {
|
||||||
|
if(ret < low || (i == 0 && ret != low)) {
|
||||||
|
printf("Write speed l: %5dk , %4.1fx%s\n",
|
||||||
|
ret, ((double) ret) * 1000.0 / cd_factor, "C");
|
||||||
|
low= ret;
|
||||||
|
}
|
||||||
|
if(ret > high || (i == 1 && ret != high)) {
|
||||||
|
printf("Write speed h: %5dk , %4.1fx%s\n",
|
||||||
|
ret, ((double) ret) * 1000.0 / cd_factor, "C");
|
||||||
|
high= ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(high > -1) {
|
||||||
|
printf("Write speed L: %5dk , %4.1fx%s\n",
|
||||||
|
low, ((double) low) * 1000.0 / speed_factor, speed_unit);
|
||||||
|
printf("Write speed H: %5dk , %4.1fx%s\n",
|
||||||
|
high, ((double) high) * 1000.0 / speed_factor, speed_unit);
|
||||||
|
ret= burn_drive_get_best_speed(drive, -1, &item, 2);
|
||||||
|
if(ret > 0 && item != NULL)
|
||||||
|
if(item->write_speed != low)
|
||||||
|
printf("Write speed 0: %5dk , %4.1fx%s\n",
|
||||||
|
item->write_speed,
|
||||||
|
((double) item->write_speed) * 1000.0 / speed_factor, speed_unit);
|
||||||
|
ret= burn_drive_get_best_speed(drive, 0, &item, 2);
|
||||||
|
if(ret > 0 && item != NULL)
|
||||||
|
if(item->write_speed != high)
|
||||||
|
printf("Write speed-1: %5dk , %4.1fx%s\n",
|
||||||
|
item->write_speed,
|
||||||
|
((double) item->write_speed) * 1000.0 / speed_factor, speed_unit);
|
||||||
|
} else {
|
||||||
|
fprintf(stderr,
|
||||||
|
"cdrskin: SORRY : Could not get any write speed information from drive");
|
||||||
|
}
|
||||||
|
ret= 1;
|
||||||
|
ex:;
|
||||||
|
if(speed_list != NULL)
|
||||||
|
burn_drive_free_speedlist(&speed_list);
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int Cdrskin_read_textfile(struct CdrskiN *skin, char *path, int flag)
|
int Cdrskin_read_textfile(struct CdrskiN *skin, char *path, int flag)
|
||||||
{
|
{
|
||||||
int ret, num_packs = 0;
|
int ret, num_packs = 0;
|
||||||
@ -7388,7 +7551,7 @@ int Cdrskin_qcheck(struct CdrskiN *skin, int flag)
|
|||||||
*/
|
*/
|
||||||
int Cdrskin_msinfo(struct CdrskiN *skin, int flag)
|
int Cdrskin_msinfo(struct CdrskiN *skin, int flag)
|
||||||
{
|
{
|
||||||
int num_sessions, session_no, ret, num_tracks;
|
int num_sessions, session_no, ret, num_tracks, open_sessions= 0;
|
||||||
int nwa= -123456789, lba= -123456789, aux_lba;
|
int nwa= -123456789, lba= -123456789, aux_lba;
|
||||||
char msg[80];
|
char msg[80];
|
||||||
enum burn_disc_status s;
|
enum burn_disc_status s;
|
||||||
@ -7428,12 +7591,29 @@ int Cdrskin_msinfo(struct CdrskiN *skin, int flag)
|
|||||||
{ret= 0; goto ex;}
|
{ret= 0; goto ex;}
|
||||||
}
|
}
|
||||||
sessions= burn_disc_get_sessions(disc,&num_sessions);
|
sessions= burn_disc_get_sessions(disc,&num_sessions);
|
||||||
for(session_no= 0; session_no<num_sessions; session_no++) {
|
open_sessions= burn_disc_get_incomplete_sessions(disc);
|
||||||
|
for(session_no= 0; session_no < num_sessions + open_sessions; session_no++) {
|
||||||
tracks= burn_session_get_tracks(sessions[session_no],&num_tracks);
|
tracks= burn_session_get_tracks(sessions[session_no],&num_tracks);
|
||||||
if(tracks==NULL || num_tracks<=0)
|
if(tracks==NULL || num_tracks<=0)
|
||||||
continue;
|
continue;
|
||||||
burn_track_get_entry(tracks[0],&toc_entry);
|
burn_track_get_entry(tracks[0],&toc_entry);
|
||||||
if(toc_entry.extensions_valid&1) { /* DVD extension valid */
|
if(toc_entry.extensions_valid&1) { /* DVD extension valid */
|
||||||
|
if(session_no >= num_sessions) {
|
||||||
|
|
||||||
|
/* libburn-1.3.0.pl01 : 2013.05.31.080001
|
||||||
|
Bug fix: cdrskin -msinfo on DVD and BD reported
|
||||||
|
old session start = next writable address.
|
||||||
|
Regression introduced by version 1.2.8 (rev 4956).
|
||||||
|
*/
|
||||||
|
if(!(toc_entry.extensions_valid & 4))
|
||||||
|
continue; /* open session with no track status bits from libburn */
|
||||||
|
if((toc_entry.track_status_bits & (1 << 14)) ||
|
||||||
|
!((toc_entry.track_status_bits & (1 << 16)) ||
|
||||||
|
((toc_entry.track_status_bits & (1 << 17)) &&
|
||||||
|
toc_entry.last_recorded_address > toc_entry.start_lba)))
|
||||||
|
continue; /* Blank or not appendable and not recorded */
|
||||||
|
}
|
||||||
|
|
||||||
lba= toc_entry.start_lba;
|
lba= toc_entry.start_lba;
|
||||||
} else {
|
} else {
|
||||||
lba= burn_msf_to_lba(toc_entry.pmin,toc_entry.psec,toc_entry.pframe);
|
lba= burn_msf_to_lba(toc_entry.pmin,toc_entry.psec,toc_entry.pframe);
|
||||||
@ -8160,6 +8340,10 @@ set_isrc:;
|
|||||||
printf("%s\n",ignored_full_options[k]);
|
printf("%s\n",ignored_full_options[k]);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
|
} else if(strcmp(argv[i],"--list_speeds")==0) {
|
||||||
|
skin->do_list_speeds= 1;
|
||||||
|
skin->preskin->demands_cdrskin_caps= 1;
|
||||||
|
|
||||||
} else if(strncmp(argv[i],"fallback_program=",17)==0) {
|
} else if(strncmp(argv[i],"fallback_program=",17)==0) {
|
||||||
/* is handled in Cdrpreskin_setup() */;
|
/* is handled in Cdrpreskin_setup() */;
|
||||||
|
|
||||||
@ -8924,14 +9108,23 @@ int Cdrskin_run(struct CdrskiN *skin, int *exit_value, int flag)
|
|||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
{*exit_value= 7; goto ex;}
|
{*exit_value= 7; goto ex;}
|
||||||
}
|
}
|
||||||
|
if(skin->do_list_speeds) {
|
||||||
|
if(skin->n_drives<=0)
|
||||||
|
{*exit_value= 17; goto no_drive;}
|
||||||
|
if(Cdrskin__is_aborting(0))
|
||||||
|
goto ex;
|
||||||
|
ret= Cdrskin_list_speeds(skin, 0);
|
||||||
|
if(ret<=0)
|
||||||
|
{*exit_value= 17; goto ex;}
|
||||||
|
}
|
||||||
if(skin->do_list_formats) {
|
if(skin->do_list_formats) {
|
||||||
if(skin->n_drives<=0)
|
if(skin->n_drives<=0)
|
||||||
{*exit_value= 14; goto no_drive;}
|
{*exit_value= 16; goto no_drive;}
|
||||||
if(Cdrskin__is_aborting(0))
|
if(Cdrskin__is_aborting(0))
|
||||||
goto ex;
|
goto ex;
|
||||||
ret= Cdrskin_list_formats(skin, 0);
|
ret= Cdrskin_list_formats(skin, 0);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
{*exit_value= 14; goto ex;}
|
{*exit_value= 16; goto ex;}
|
||||||
}
|
}
|
||||||
if(skin->do_blank) {
|
if(skin->do_blank) {
|
||||||
if(skin->n_drives<=0)
|
if(skin->n_drives<=0)
|
||||||
|
@ -65,7 +65,7 @@ connected via SCSI, PATA (aka IDE, ATA), USB, or SATA.
|
|||||||
GPL software included:<BR>
|
GPL software included:<BR>
|
||||||
</H2>
|
</H2>
|
||||||
<DL>
|
<DL>
|
||||||
<DT>libburn-1.2.6</DT>
|
<DT>libburn-1.3.0.pl01</DT>
|
||||||
<DD>(founded by Derek Foreman and Ben Jansens,
|
<DD>(founded by Derek Foreman and Ben Jansens,
|
||||||
developed and maintained since August 2006 by
|
developed and maintained since August 2006 by
|
||||||
Thomas Schmitt from team of libburnia-project.org)
|
Thomas Schmitt from team of libburnia-project.org)
|
||||||
@ -200,13 +200,13 @@ Standalone ISO 9660 multi-session CD/DVD/BD tool
|
|||||||
<P>
|
<P>
|
||||||
<DL>
|
<DL>
|
||||||
<DT>Download as source code (see README):</DT>
|
<DT>Download as source code (see README):</DT>
|
||||||
<DD><A HREF="cdrskin-1.2.6.tar.gz">cdrskin-1.2.6.tar.gz</A>
|
<DD><A HREF="cdrskin-1.3.0.pl01.tar.gz">cdrskin-1.3.0.pl01.tar.gz</A>
|
||||||
(940 KB).
|
(950 KB).
|
||||||
</DD>
|
</DD>
|
||||||
<DD><A HREF="cdrskin-1.2.6.tar.gz.sig">cdrskin-1.2.6.tar.gz.sig</A></DD>
|
<DD><A HREF="cdrskin-1.3.0.pl01.tar.gz.sig">cdrskin-1.3.0.pl01.tar.gz.sig</A></DD>
|
||||||
<DD>
|
<DD>
|
||||||
(detached GPG signature for verification by
|
(detached GPG signature for verification by
|
||||||
<KBD>gpg --verify cdrskin-1.2.6.tar.gz.sig cdrskin-1.2.6.tar.gz</KBD>
|
<KBD>gpg --verify cdrskin-1.3.0.pl01.tar.gz.sig cdrskin-1.3.0.pl01.tar.gz</KBD>
|
||||||
<BR>
|
<BR>
|
||||||
after <KBD>gpg --keyserver keys.gnupg.net --recv-keys ABC0A854</KBD>).
|
after <KBD>gpg --keyserver keys.gnupg.net --recv-keys ABC0A854</KBD>).
|
||||||
</DD>
|
</DD>
|
||||||
@ -257,49 +257,74 @@ 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-1.2.4:
|
Enhancements towards previous stable version cdrskin-1.2.8:
|
||||||
<UL>
|
<UL>
|
||||||
<LI>New option --no_load</LI>
|
<LI>none</LI>
|
||||||
<!--
|
<!--
|
||||||
<LI>none</LI>
|
<LI>none</LI>
|
||||||
-->
|
-->
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
Bug fixes towards cdrskin-1.2.4:
|
Bug fixes towards cdrskin-1.2.8:
|
||||||
<UL>
|
<UL>
|
||||||
<LI>Speed setting had no effect on BD media</LI>
|
<LI>
|
||||||
|
Full formatting of BD-RE used certification regardless of drive capabilities
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
DVD+R with damaged TOC were reported by -minfo with wrong end address
|
||||||
|
</LI>
|
||||||
<!--
|
<!--
|
||||||
<LI>none</LI>
|
<LI>none</LI>
|
||||||
-->
|
-->
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
|
Bug fix towards cdrskin-1.3.0:
|
||||||
|
<UL>
|
||||||
|
<LI>
|
||||||
|
cdrskin -msinfo on DVD and BD reported
|
||||||
|
old session start = next writable address.
|
||||||
|
Regression introduced by version 1.2.8
|
||||||
|
</LI>
|
||||||
|
</UL>
|
||||||
|
|
||||||
<HR>
|
<HR>
|
||||||
|
|
||||||
<P>
|
<P>
|
||||||
<DL>
|
<DL>
|
||||||
<DT><H3>Development snapshot, version 1.2.7 :</H3></DT>
|
<DT><H3>Development snapshot, version 1.3.1 :</H3></DT>
|
||||||
<DD>Enhancements towards current stable version 1.2.6:
|
<DD>Enhancements towards current stable version 1.3.0.pl01:
|
||||||
<UL>
|
<UL>
|
||||||
<LI>none yet</LI>
|
<LI>
|
||||||
|
New option textfile_to_v07t=
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
New options cdtext_to_textfile= and cdtext_to_v07t=
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
New options extract_audio_to= , extract_tracks= , extract_basename= ,
|
||||||
|
--extract_dap
|
||||||
|
</LI>
|
||||||
<!--
|
<!--
|
||||||
|
<LI>none yet</LI>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
</UL>
|
</UL>
|
||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<DD>Bug fixes towards cdrskin-1.2.6:
|
<DD>Bug fixes towards cdrskin-1.3.0.pl01:
|
||||||
<UL>
|
<UL>
|
||||||
<LI>none yet</LI>
|
<LI>none yet</LI>
|
||||||
<!--
|
<!--
|
||||||
|
<LI>none yet</LI>
|
||||||
-->
|
-->
|
||||||
</UL>
|
</UL>
|
||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<DD> </DD>
|
<DD> </DD>
|
||||||
<DD><A HREF="README_cdrskin_devel">README 1.2.7</A>
|
<DD><A HREF="README_cdrskin_devel">README 1.3.1</A>
|
||||||
<DD><A HREF="cdrskin__help_devel">cdrskin-1.2.7 --help</A></DD>
|
<DD><A HREF="cdrskin__help_devel">cdrskin-1.3.1 --help</A></DD>
|
||||||
<DD><A HREF="cdrskin_help_devel">cdrskin-1.2.7 -help</A></DD>
|
<DD><A HREF="cdrskin_help_devel">cdrskin-1.3.1 -help</A></DD>
|
||||||
<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 1.2.7)</A></DD>
|
<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 1.3.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>
|
||||||
@ -319,8 +344,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-1.2.7.tar.gz">cdrskin-1.2.7.tar.gz</A>
|
<A HREF="cdrskin-1.3.1.tar.gz">cdrskin-1.3.1.tar.gz</A>
|
||||||
(940 KB).
|
(950 KB).
|
||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<!-- This is not offered any more since spring 2008
|
<!-- This is not offered any more since spring 2008
|
||||||
@ -516,11 +541,15 @@ and by <A HREF="http://sourceforge.net">sourceforge.net</A><BR>
|
|||||||
<A href="http://sourceforge.net">
|
<A href="http://sourceforge.net">
|
||||||
<IMG src="sflogo-88-1.png" BORDER="0" ALT="SourceForge Logo"></A>
|
<IMG src="sflogo-88-1.png" BORDER="0" ALT="SourceForge Logo"></A>
|
||||||
<!-- on sourceforge use : <IMG src="http://sourceforge.net/sflogo.php?group_id=16010" width="88" height="31" border="0" alt="SourceForge Logo"></A> -->
|
<!-- on sourceforge use : <IMG src="http://sourceforge.net/sflogo.php?group_id=16010" width="88" height="31" border="0" alt="SourceForge Logo"></A> -->
|
||||||
|
|
||||||
|
<!--
|
||||||
<P>
|
<P>
|
||||||
Enjoying a FreeBSD shell account with the opportunity to
|
Enjoying a FreeBSD shell account with the opportunity to
|
||||||
build and install cdrskin at<BR>
|
build and install cdrskin at<BR>
|
||||||
<A HREF="http://www.en.free-shells.com.ar">free-shells.com.ar</A>
|
<A HREF="http://www.en.free-shells.com.ar">free-shells.com.ar</A>
|
||||||
</P>
|
</P>
|
||||||
|
-->
|
||||||
|
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
<HR>
|
<HR>
|
||||||
<DL>
|
<DL>
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Cdrskin_timestamP "2013.01.08.090001"
|
#define Cdrskin_timestamP "2013.05.31.080001"
|
||||||
|
@ -11554,7 +11554,7 @@ Made number transition to 1.2.6
|
|||||||
+ cdrskin/add_ts_changes_to_libburn_1_2_7
|
+ cdrskin/add_ts_changes_to_libburn_1_2_7
|
||||||
Updated cdrskin tarball generator
|
Updated cdrskin tarball generator
|
||||||
|
|
||||||
08 Jan 2013 []
|
08 Jan 2013 [4938]
|
||||||
ChangeLog
|
ChangeLog
|
||||||
cdrskin/changelog.txt
|
cdrskin/changelog.txt
|
||||||
Updated change log
|
Updated change log
|
||||||
@ -11566,7 +11566,7 @@ Bug fix: Speed setting had no effect on BD media. Thanks to Dennis Vshivkov.
|
|||||||
* New cdrskin option --no_load
|
* New cdrskin option --no_load
|
||||||
|
|
||||||
|
|
||||||
[]
|
2013.01.08.144634 []
|
||||||
Makefile.am
|
Makefile.am
|
||||||
configure.ac
|
configure.ac
|
||||||
README
|
README
|
||||||
@ -11579,24 +11579,378 @@ cdrskin/cdrskin_timestamp.h
|
|||||||
cdrskin/cdrskin_eng.html
|
cdrskin/cdrskin_eng.html
|
||||||
Made number transition to 1.2.7
|
Made number transition to 1.2.7
|
||||||
|
|
||||||
[]
|
08 Jan 2013 [4947]
|
||||||
- cdrskin/add_ts_changes_to_libburn_1_2_4
|
- cdrskin/add_ts_changes_to_libburn_1_2_4
|
||||||
- cdrskin/add_ts_changes_to_libburn_1_2_5
|
- cdrskin/add_ts_changes_to_libburn_1_2_5
|
||||||
+ cdrskin/add_ts_changes_to_libburn_1_2_6
|
+ cdrskin/add_ts_changes_to_libburn_1_2_6
|
||||||
+ cdrskin/add_ts_changes_to_libburn_1_2_7
|
+ cdrskin/add_ts_changes_to_libburn_1_2_7
|
||||||
Updated cdrskin tarball generator
|
Updated cdrskin tarball generator
|
||||||
|
|
||||||
[]
|
08 Jan 2013 [4948]
|
||||||
ChangeLog
|
ChangeLog
|
||||||
cdrskin/changelog.txt
|
cdrskin/changelog.txt
|
||||||
Updated change log
|
Updated change log
|
||||||
|
|
||||||
[]
|
08 Jan 2013 [4949]
|
||||||
svn move -m libburn release 1.2.6 is ready
|
svn move -m libburn release 1.2.6 is ready
|
||||||
http://svn.libburnia-project.org/libburn/branches/1.2.6
|
http://svn.libburnia-project.org/libburn/branches/1.2.6
|
||||||
http://svn.libburnia-project.org/libburn/tags/1.2.6
|
http://svn.libburnia-project.org/libburn/tags/1.2.6
|
||||||
|
|
||||||
------------------------------------ cycle - cdrskin-1.2.7 -
|
------------------------------------ cycle - cdrskin-1.2.7 - 2013.01.08.150303
|
||||||
|
|
||||||
|
|
||||||
|
2013.01.12.195030 [4955]
|
||||||
|
libburn/libburn.h
|
||||||
|
libburn/transport.h
|
||||||
|
libburn/structure.h
|
||||||
|
libburn/structure.c
|
||||||
|
libburn/mmc.c
|
||||||
|
libburn/libburn.ver
|
||||||
|
New API call burn_disc_get_incomplete_sessions(), new burn_toc_entry.track_status_bits
|
||||||
|
|
||||||
|
2013.01.12.195311 [4956]
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
Made use of new API features to handle incomplete sessions
|
||||||
|
|
||||||
|
2013.01.15.104005 [4961]
|
||||||
|
libburn/structure.c
|
||||||
|
Bug fix: All CD tracks were reported with the sizes of the tracks in the first session. Regression introduced with version 1.2.0 (rev 4552).
|
||||||
|
|
||||||
|
16 Jan 2013 [4965]
|
||||||
|
ChangeLog
|
||||||
|
cdrskin/cdrskin_eng.html
|
||||||
|
cdrskin/changelog.txt
|
||||||
|
Updated change log
|
||||||
|
|
||||||
|
2013.01.16.181124 [4966]
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
Updated cdrskin copyright message
|
||||||
|
|
||||||
|
------------------------------------ cycle - cdrskin-1.2.7 - 2013.01.16.181124
|
||||||
|
* New API call burn_disc_get_incomplete_sessions()
|
||||||
|
* New burn_toc_entry component .track_status_bits
|
||||||
|
* -toc and -minfo now report about tracks in the incomplete session
|
||||||
|
* Bug fix: All CD tracks were reported with the sizes of the tracks in the
|
||||||
|
first session. Regression introduced with version 1.2.0 (rev 4552).
|
||||||
|
|
||||||
|
|
||||||
|
2013.02.26.080127 [4972]
|
||||||
|
libburn/drive.c
|
||||||
|
Corrected wrong use of sizeof
|
||||||
|
|
||||||
|
2013.03.04.211258 [4975]
|
||||||
|
libburn/mmc.c
|
||||||
|
Bug fix: On some drives the request for minimum speed yielded maximum speed
|
||||||
|
|
||||||
|
2013.03.04.232436 [4976]
|
||||||
|
libburn/mmc.c
|
||||||
|
Corrected previous bug fix which caused speed descriptors to appear twice
|
||||||
|
|
||||||
|
2013.03.05.124217 [4977]
|
||||||
|
libburn/mmc.c
|
||||||
|
Still correcting the bug fix of rev 4975
|
||||||
|
|
||||||
|
2013.03.05.124508 [4978]
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
New cdrskin option --list_speeds
|
||||||
|
|
||||||
|
05 Mar 2013 [4979]
|
||||||
|
cdrskin/cdrskin.1
|
||||||
|
Mentioned --list_speeds in manual page
|
||||||
|
|
||||||
|
05 Mar 2013 [4980]
|
||||||
|
ChangeLog
|
||||||
|
cdrskin/cdrskin_eng.html
|
||||||
|
cdrskin/changelog.txt
|
||||||
|
Updated change log
|
||||||
|
|
||||||
|
2013.03.05.185356 [4981]
|
||||||
|
libburn/mmc.c
|
||||||
|
Always considering mode page 2A when looking for min and max speed
|
||||||
|
|
||||||
|
2013.03.05.185440 [4982]
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
Always considering mode page 2A when looking for min and max speed
|
||||||
|
|
||||||
|
------------------------------------ cycle - cdrskin-1.2.7 - 2013.03.05.185655
|
||||||
|
* Bug fix: On some drives the request for minimum speed yielded maximum speed
|
||||||
|
* New cdrskin option --list_speeds
|
||||||
|
|
||||||
|
|
||||||
|
2013.03.12.114739 [4987]
|
||||||
|
libburn/write.c
|
||||||
|
Avoiding SYNCHRONIZE CACHE if DVD track preparation has failed
|
||||||
|
|
||||||
|
18 Mar 2013 [4994]
|
||||||
|
svn copy -m "Branching for libburn release 1.2.8"
|
||||||
|
http://svn.libburnia-project.org/libburn/trunk
|
||||||
|
http://svn.libburnia-project.org/libburn/branches/1.2.8
|
||||||
|
|
||||||
|
2013.03.18.080001 [4997]
|
||||||
|
Makefile.am
|
||||||
|
configure.ac
|
||||||
|
README
|
||||||
|
libburn/libburn.h
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
cdrskin/cdrskin.1
|
||||||
|
cdrskin/README
|
||||||
|
cdrskin/compile_cdrskin.sh
|
||||||
|
cdrskin/cdrskin_timestamp.h
|
||||||
|
cdrskin/cdrskin_eng.html
|
||||||
|
Made number transition to 1.2.8
|
||||||
|
|
||||||
|
18 Mar 2013 [4998]
|
||||||
|
- cdrskin/add_ts_changes_to_libburn_1_2_6
|
||||||
|
- cdrskin/add_ts_changes_to_libburn_1_2_7
|
||||||
|
+ cdrskin/add_ts_changes_to_libburn_1_2_8
|
||||||
|
+ cdrskin/add_ts_changes_to_libburn_1_2_9
|
||||||
|
Updated cdrskin tarball generator
|
||||||
|
|
||||||
|
18 Mar 2013 [4999]
|
||||||
|
ChangeLog
|
||||||
|
cdrskin/changelog.txt
|
||||||
|
Updated change log
|
||||||
|
|
||||||
|
----------------------------------- release - libburn-1.2.8 - 2013.03.18.080001
|
||||||
|
* -toc and -minfo now report about tracks in the incomplete session
|
||||||
|
* New API call burn_disc_get_incomplete_sessions()
|
||||||
|
* New burn_toc_entry component .track_status_bits
|
||||||
|
* Bug fix: All CD tracks were reported with the sizes of the tracks in the
|
||||||
|
first session. Regression introduced with version 1.2.0 (rev 4552).
|
||||||
|
* Bug fix: On some drives the request for minimum speed yielded maximum speed
|
||||||
|
* New cdrskin option --list_speeds
|
||||||
|
|
||||||
|
|
||||||
|
2013.03.18.210519 [5007]
|
||||||
|
Makefile.am
|
||||||
|
configure.ac
|
||||||
|
README
|
||||||
|
libburn/libburn.h
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
cdrskin/cdrskin.1
|
||||||
|
cdrskin/README
|
||||||
|
cdrskin/compile_cdrskin.sh
|
||||||
|
cdrskin/cdrskin_timestamp.h
|
||||||
|
cdrskin/cdrskin_eng.html
|
||||||
|
Made number transition to 1.2.9
|
||||||
|
|
||||||
|
18 Mar 2013 [4996]
|
||||||
|
- cdrskin/add_ts_changes_to_libburn_1_2_6
|
||||||
|
- cdrskin/add_ts_changes_to_libburn_1_2_7
|
||||||
|
+ cdrskin/add_ts_changes_to_libburn_1_2_8
|
||||||
|
+ cdrskin/add_ts_changes_to_libburn_1_2_9
|
||||||
|
Updated cdrskin tarball generator
|
||||||
|
|
||||||
|
18 Mar 2013 [5008]
|
||||||
|
ChangeLog
|
||||||
|
cdrskin/changelog.txt
|
||||||
|
Updated change log
|
||||||
|
|
||||||
|
18 Mar 2013 [5009]
|
||||||
|
svn move -m libburn release 1.2.8 is ready
|
||||||
|
http://svn.libburnia-project.org/libburn/branches/1.2.8
|
||||||
|
http://svn.libburnia-project.org/libburn/tags/1.2.8
|
||||||
|
|
||||||
|
------------------------------------ cycle - cdrskin-1.2.9 - 2013.03.18.211611
|
||||||
|
|
||||||
|
|
||||||
|
2013.04.01.121637 [5013]
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
Forgot to increment cdrskin version number
|
||||||
|
|
||||||
|
2013.04.01.121851 [5014]
|
||||||
|
libburn/mmc.c
|
||||||
|
libburn/libdax_msgs.h
|
||||||
|
Bug fix: Formatting of BD-RE used certification regardless of drive capabilities
|
||||||
|
|
||||||
|
01 Apr 2013 [5015]
|
||||||
|
ChangeLog
|
||||||
|
cdrskin/cdrskin_eng.html
|
||||||
|
cdrskin/changelog.txt
|
||||||
|
Updated change log
|
||||||
|
|
||||||
|
------------------------------------ cycle - cdrskin-1.2.9 - 2013.04.01.125750
|
||||||
|
Bug fix: Formatting of BD-RE used certification regardless of drive capabilities
|
||||||
|
|
||||||
|
|
||||||
|
2013.05.10.064018 [5034]
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
Bug fix: DVD+R with damaged TOC were reported by -minfo with wrong end address
|
||||||
|
|
||||||
|
2013.05.10.072542 [5035]
|
||||||
|
libburn/libdax_msgs.h
|
||||||
|
Added new item to list of error codes
|
||||||
|
|
||||||
|
10 May 2013 [5036]
|
||||||
|
ChangeLog
|
||||||
|
cdrskin/cdrskin_eng.html
|
||||||
|
cdrskin/changelog.txt
|
||||||
|
Updated change log
|
||||||
|
|
||||||
|
------------------------------------ cycle - cdrskin-1.2.9 - 2013.05.10.073212
|
||||||
|
Bug fix: DVD+R with damaged TOC were reported by -minfo with wrong end address
|
||||||
|
|
||||||
|
|
||||||
|
17 May 2013 [5044]
|
||||||
|
svn copy -m Branching for libburn release 1.3.0
|
||||||
|
|
||||||
|
2013.05.17.090001 [5045]
|
||||||
|
Makefile.am
|
||||||
|
configure.ac
|
||||||
|
README
|
||||||
|
libburn/libburn.h
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
cdrskin/cdrskin.1
|
||||||
|
cdrskin/README
|
||||||
|
cdrskin/compile_cdrskin.sh
|
||||||
|
cdrskin/cdrskin_timestamp.h
|
||||||
|
cdrskin/cdrskin_eng.html
|
||||||
|
Made number transition to 1.3.0
|
||||||
|
|
||||||
|
17 May 2013 [5046]
|
||||||
|
- cdrskin/add_ts_changes_to_libburn_1_2_8
|
||||||
|
- cdrskin/add_ts_changes_to_libburn_1_2_9
|
||||||
|
+ cdrskin/add_ts_changes_to_libburn_1_3_0
|
||||||
|
+ cdrskin/add_ts_changes_to_libburn_1_3_1
|
||||||
|
Updated cdrskin tarball generator
|
||||||
|
|
||||||
|
17 May 2013 [5047]
|
||||||
|
ChangeLog
|
||||||
|
cdrskin/cdrskin_eng.html
|
||||||
|
cdrskin/changelog.txt
|
||||||
|
Updated change log
|
||||||
|
|
||||||
|
----------------------------------- release - libburn-1.3.0 - 2013.05.17.090001
|
||||||
|
* Bug fix: Full formatting of BD-RE used certification regardless of drive
|
||||||
|
capabilities
|
||||||
|
* Bug fix: DVD+R with damaged TOC were reported by -minfo with wrong end
|
||||||
|
address
|
||||||
|
|
||||||
|
|
||||||
|
17 May 2013 [5051]
|
||||||
|
- cdrskin/add_ts_changes_to_libburn_1_2_8
|
||||||
|
- cdrskin/add_ts_changes_to_libburn_1_2_9
|
||||||
|
+ cdrskin/add_ts_changes_to_libburn_1_3_0
|
||||||
|
+ cdrskin/add_ts_changes_to_libburn_1_3_1
|
||||||
|
Updated cdrskin tarball generator
|
||||||
|
|
||||||
|
2013.05.17.180032 [5052]
|
||||||
|
Makefile.am
|
||||||
|
configure.ac
|
||||||
|
README
|
||||||
|
libburn/libburn.h
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
cdrskin/cdrskin.1
|
||||||
|
cdrskin/README
|
||||||
|
cdrskin/compile_cdrskin.sh
|
||||||
|
cdrskin/cdrskin_timestamp.h
|
||||||
|
cdrskin/cdrskin_eng.html
|
||||||
|
Made number transition to 1.3.1
|
||||||
|
|
||||||
|
17 May 2013 [5053]
|
||||||
|
ChangeLog
|
||||||
|
cdrskin/changelog.txt
|
||||||
|
Updated change log
|
||||||
|
|
||||||
|
17 May 2013 [5054]
|
||||||
|
svn move -m libburn release 1.3.0 is ready
|
||||||
|
|
||||||
|
------------------------------------ cycle - cdrskin-1.3.1 - 2013.05.17.181442
|
||||||
|
|
||||||
|
|
||||||
|
2013.05.19.114643 [5059]
|
||||||
|
libburn/libburn.h
|
||||||
|
libburn/cdtext.c
|
||||||
|
doc/cdtext.txt
|
||||||
|
libburn/libburn.ver
|
||||||
|
New API call burn_make_input_sheet_v07t()
|
||||||
|
|
||||||
|
2013.05.19.114854 [5060]
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
cdrskin/cdrskin.1
|
||||||
|
New option textfile_to_v07t=
|
||||||
|
|
||||||
|
2013.05.19.154838 [5061]
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
cdrskin/cdrskin.1
|
||||||
|
New options cdtext_to_textfile= and cdtext_to_v07t=
|
||||||
|
|
||||||
|
2013.05.20.104814 [5062]
|
||||||
|
libburn/libburn.h
|
||||||
|
libburn/cdtext.c
|
||||||
|
libburn/libdax_msgs.h
|
||||||
|
API call burn_session_input_sheet_v07t(): read multiple blocks from same file
|
||||||
|
|
||||||
|
2013.05.20.110128 [5063]
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
cdrskin/cdrskin.1
|
||||||
|
Allowed option input_sheet_v07t= to read multiple blocks from same file
|
||||||
|
|
||||||
|
2013.05.20.124448 [5064]
|
||||||
|
libburn/cdtext.c
|
||||||
|
Bug fixes with new API call burn_make_input_sheet_v07t()
|
||||||
|
|
||||||
|
2013.05.20.124520 [5065]
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
Closed memory leak introduced by rev 5063
|
||||||
|
|
||||||
|
20 May 2013 [5066]
|
||||||
|
ChangeLog
|
||||||
|
cdrskin/cdrskin_eng.html
|
||||||
|
cdrskin/changelog.txt
|
||||||
|
Updated change log
|
||||||
|
|
||||||
|
------------------------------------ cycle - cdrskin-1.3.1 - 2013.05.20.141737
|
||||||
|
* New API call burn_make_input_sheet_v07t()
|
||||||
|
* New option textfile_to_v07t=
|
||||||
|
* New options cdtext_to_textfile= and cdtext_to_v07t=
|
||||||
|
* API call burn_session_input_sheet_v07t(): read multiple blocks from same file
|
||||||
|
|
||||||
|
|
||||||
|
2013.05.21.081819 [5067]
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
Defaulting -sao -multi to -tao -multi if -sao -multi is not possible
|
||||||
|
|
||||||
|
2013.05.23.154249 [5068]
|
||||||
|
libburn/libburn.h
|
||||||
|
libburn/file.c
|
||||||
|
libburn/util.h
|
||||||
|
libburn/util.c
|
||||||
|
libburn/libdax_msgs.h
|
||||||
|
libburn/libdax_msgs.c
|
||||||
|
libburn/libburn.ver
|
||||||
|
New API calls burn_drive_extract_audio(), burn_drive_extract_audio_track()
|
||||||
|
|
||||||
|
2013.05.23.154249 [5069]
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
cdrskin/cdrskin.1
|
||||||
|
New cdrskin options extract_audio_to= , extract_tracks= , extract_basename= , --extract_dap
|
||||||
|
|
||||||
|
23 May 2013 [5070]
|
||||||
|
ChangeLog
|
||||||
|
cdrskin/cdrskin_eng.html
|
||||||
|
cdrskin/changelog.txt
|
||||||
|
Updated change log
|
||||||
|
|
||||||
|
------------------------------------ cycle - cdrskin-1.3.1 - 2013.05.23.155617
|
||||||
|
* New API calls burn_drive_extract_audio(), burn_drive_extract_audio_track()
|
||||||
|
* New cdrskin options extract_audio_to= , extract_tracks= , extract_basename= ,
|
||||||
|
--extract_dap
|
||||||
|
|
||||||
|
|
||||||
|
23 May 2013 [5071]
|
||||||
|
doc/cdtext.txt
|
||||||
|
Updated documentation about CD-TEXT
|
||||||
|
|
||||||
|
2013.05.26.185945 [5072]
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
Luring K3B into using -xa rather than -xa1
|
||||||
|
|
||||||
|
2013.05.30.133008 [5076]
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
Bug fix: cdrskin -msinfo on DVD and BD reported
|
||||||
|
old session start == next writable address.
|
||||||
|
Regression introduced by version 1.2.8 (rev 4956).
|
||||||
|
|
||||||
[]
|
[]
|
||||||
ChangeLog
|
ChangeLog
|
||||||
@ -11604,7 +11958,36 @@ cdrskin/cdrskin_eng.html
|
|||||||
cdrskin/changelog.txt
|
cdrskin/changelog.txt
|
||||||
Updated change log
|
Updated change log
|
||||||
|
|
||||||
------------------------------------ cycle - cdrskin-1.2.7 -
|
------------------------------------ cycle - cdrskin-1.3.1 - 2013.05.30.133756
|
||||||
|
* Bug fix: cdrskin -msinfo on DVD and BD reported
|
||||||
|
old session start == next writable address.
|
||||||
|
Regression introduced by version 1.2.8 (rev 4956).
|
||||||
|
|
||||||
|
|
||||||
|
31 May 2013 [5079]
|
||||||
|
svn copy -m Branching for libburn bugfix release 1.3.0.pl01
|
||||||
|
http://svn.libburnia-project.org/libburn/tags/1.3.0
|
||||||
|
http://svn.libburnia-project.org/libburn/branches/1.3.0.pl01
|
||||||
|
|
||||||
|
2013.05.31.080001 [5080]
|
||||||
|
cdrskin/cdrskin.c
|
||||||
|
Bug fix: cdrskin -msinfo on DVD and BD reported
|
||||||
|
old session start = next writable address.
|
||||||
|
Regression introduced by version 1.2.8 (rev 4956).
|
||||||
|
|
||||||
|
31 May 2013 []
|
||||||
|
README
|
||||||
|
cdrskin/README
|
||||||
|
ChangeLog
|
||||||
|
cdrskin/cdrskin_eng.html
|
||||||
|
cdrskin/changelog.txt
|
||||||
|
|
||||||
|
------------------------------ release - libburn-1.3.0.pl01 - 2013.05.31.080001
|
||||||
|
|
||||||
|
* Bug fix: cdrskin -msinfo on DVD and BD reported
|
||||||
|
old session start = next writable address.
|
||||||
|
Regression introduced by version 1.2.8 (rev 4956).
|
||||||
|
|
||||||
|
|
||||||
[]
|
[]
|
||||||
ChangeLog
|
ChangeLog
|
||||||
@ -11612,8 +11995,15 @@ cdrskin/cdrskin_eng.html
|
|||||||
cdrskin/changelog.txt
|
cdrskin/changelog.txt
|
||||||
Updated change log
|
Updated change log
|
||||||
|
|
||||||
------------------------------------ cycle - cdrskin-1.2.7 -
|
------------------------------------ cycle - cdrskin-1.3.1 -
|
||||||
|
|
||||||
|
[]
|
||||||
|
ChangeLog
|
||||||
|
cdrskin/cdrskin_eng.html
|
||||||
|
cdrskin/changelog.txt
|
||||||
|
Updated change log
|
||||||
|
|
||||||
|
------------------------------------ cycle - cdrskin-1.3.1 -
|
||||||
|
|
||||||
|
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
|
@ -8,7 +8,7 @@ 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"
|
||||||
fifo_opts=""
|
fifo_opts=""
|
||||||
libvers="-DCdrskin_libburn_1_2_6"
|
libvers="-DCdrskin_libburn_1_3_0"
|
||||||
|
|
||||||
# To be used if Makefile.am uses libburn_libburn_la_CFLAGS
|
# To be used if Makefile.am uses libburn_libburn_la_CFLAGS
|
||||||
# burn="libburn/libburn_libburn_la-"
|
# burn="libburn/libburn_libburn_la-"
|
||||||
@ -41,15 +41,15 @@ do
|
|||||||
elif test "$i" = "-compile_dewav"
|
elif test "$i" = "-compile_dewav"
|
||||||
then
|
then
|
||||||
compile_dewav=1
|
compile_dewav=1
|
||||||
elif test "$i" = "-libburn_1_2_6"
|
elif test "$i" = "-libburn_1_3_0"
|
||||||
then
|
then
|
||||||
libvers="-DCdrskin_libburn_1_2_6"
|
libvers="-DCdrskin_libburn_1_3_0"
|
||||||
libdax_audioxtr_o="$burn"libdax_audioxtr.o
|
libdax_audioxtr_o="$burn"libdax_audioxtr.o
|
||||||
libdax_msgs_o="$burn"libdax_msgs.o
|
libdax_msgs_o="$burn"libdax_msgs.o
|
||||||
cleanup_src_or_obj="$burn"cleanup.o
|
cleanup_src_or_obj="$burn"cleanup.o
|
||||||
elif test "$i" = "-libburn_svn"
|
elif test "$i" = "-libburn_svn"
|
||||||
then
|
then
|
||||||
libvers="-DCdrskin_libburn_1_2_7"
|
libvers="-DCdrskin_libburn_1_3_1"
|
||||||
libdax_audioxtr_o="$burn"libdax_audioxtr.o
|
libdax_audioxtr_o="$burn"libdax_audioxtr.o
|
||||||
libdax_msgs_o="$burn"libdax_msgs.o
|
libdax_msgs_o="$burn"libdax_msgs.o
|
||||||
cleanup_src_or_obj="$burn"cleanup.o
|
cleanup_src_or_obj="$burn"cleanup.o
|
||||||
@ -99,7 +99,7 @@ do
|
|||||||
echo "Options:"
|
echo "Options:"
|
||||||
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 " -libburn_1_2_6 set macro to match libburn-1.2.6"
|
echo " -libburn_1_3_0 set macro to match libburn-1.3.0"
|
||||||
echo " -libburn_svn set macro to match current libburn-SVN."
|
echo " -libburn_svn set macro to match current libburn-SVN."
|
||||||
echo " -dvd_obs_64k 64 KB default size for DVD/BD writing."
|
echo " -dvd_obs_64k 64 KB default size for DVD/BD writing."
|
||||||
echo " -use_libcdio link with -lcdio because libburn uses it."
|
echo " -use_libcdio link with -lcdio because libburn uses it."
|
||||||
|
16
configure.ac
16
configure.ac
@ -1,4 +1,4 @@
|
|||||||
AC_INIT([libburn], [1.2.6], [http://libburnia-project.org])
|
AC_INIT([libburn], [1.3.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])
|
||||||
|
|
||||||
@ -99,6 +99,8 @@ dnl 1.2.0 = libburn.so.4.73.0
|
|||||||
dnl 1.2.2 = libburn.so.4.75.0
|
dnl 1.2.2 = libburn.so.4.75.0
|
||||||
dnl 1.2.4 = libburn.so.4.77.0
|
dnl 1.2.4 = libburn.so.4.77.0
|
||||||
dnl 1.2.6 = libburn.so.4.79.0
|
dnl 1.2.6 = libburn.so.4.79.0
|
||||||
|
dnl 1.2.8 = libburn.so.4.81.0
|
||||||
|
dnl 1.3.0 = libburn.so.4.83.0
|
||||||
dnl
|
dnl
|
||||||
dnl So LT_CURRENT, LT_REVISION and LT_AGE get set directly here.
|
dnl So LT_CURRENT, LT_REVISION and LT_AGE get set directly here.
|
||||||
dnl SONAME of the emerging library is LT_CURRENT - LT_AGE.
|
dnl SONAME of the emerging library is LT_CURRENT - LT_AGE.
|
||||||
@ -123,8 +125,8 @@ dnl If BURN_*_VERSION changes, be sure to change AC_INIT above to match.
|
|||||||
dnl
|
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=1
|
BURN_MAJOR_VERSION=1
|
||||||
BURN_MINOR_VERSION=2
|
BURN_MINOR_VERSION=3
|
||||||
BURN_MICRO_VERSION=6
|
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)
|
||||||
@ -135,14 +137,14 @@ 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 This is the release version libburn-1.2.6
|
dnl This is the release version libburn-1.3.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 = 83 - 79 = 4 . Linux library name = libburn.so.4.79.0
|
dnl SONAME = 87 - 83 = 4 . Linux library name = libburn.so.4.83.0
|
||||||
LT_CURRENT=83
|
LT_CURRENT=87
|
||||||
LT_AGE=79
|
LT_AGE=83
|
||||||
LT_REVISION=0
|
LT_REVISION=0
|
||||||
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */
|
/* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */
|
||||||
|
|
||||||
/* Copyright (c) 2004 - 2006 Derek Foreman, Ben Jansens
|
/* Copyright (c) 2004 - 2006 Derek Foreman, Ben Jansens
|
||||||
Copyright (c) 2006 - 2012 Thomas Schmitt <scdbackup@gmx.net>
|
Copyright (c) 2006 - 2013 Thomas Schmitt <scdbackup@gmx.net>
|
||||||
Provided under GPL version 2 or later.
|
Provided under GPL version 2 or later.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -2123,7 +2123,7 @@ int burn_drive_convert_scsi_adr(int bus_no, int host_no, int channel_no,
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
ex:;
|
ex:;
|
||||||
if (first == 0)
|
if (first == 0)
|
||||||
sg_give_next_adr(&enm, fname, sizeof(fname), -1);
|
sg_give_next_adr(&enm, fname, fname_size, -1);
|
||||||
BURN_FREE_MEM(fname);
|
BURN_FREE_MEM(fname);
|
||||||
BURN_FREE_MEM(msg);
|
BURN_FREE_MEM(msg);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -343,7 +343,6 @@ enum burn_drive_status
|
|||||||
"session", "point", "pmin", ...
|
"session", "point", "pmin", ...
|
||||||
Do not rely on the current size of a burn_toc_entry.
|
Do not rely on the current size of a burn_toc_entry.
|
||||||
|
|
||||||
ts A70201 : DVD extension, see below
|
|
||||||
*/
|
*/
|
||||||
struct burn_toc_entry
|
struct burn_toc_entry
|
||||||
{
|
{
|
||||||
@ -372,6 +371,8 @@ struct burn_toc_entry
|
|||||||
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.3.2
|
||||||
@since 0.5.2 : DVD extensions are made valid for CD too
|
@since 0.5.2 : DVD extensions are made valid for CD too
|
||||||
|
bit1= LRA extension is valid @since 0.7.2
|
||||||
|
bit2= Track status bits extension is valid @since 1.2.8
|
||||||
*/
|
*/
|
||||||
unsigned char extensions_valid;
|
unsigned char extensions_valid;
|
||||||
|
|
||||||
@ -393,6 +394,24 @@ struct burn_toc_entry
|
|||||||
This would mean profiles: 0x11, 0x15, 0x13, 0x14, 0x51, 0x41, 0x42
|
This would mean profiles: 0x11, 0x15, 0x13, 0x14, 0x51, 0x41, 0x42
|
||||||
*/
|
*/
|
||||||
int last_recorded_address;
|
int last_recorded_address;
|
||||||
|
|
||||||
|
/* ts B30112 : Track status bits extension. extensions_valid:bit2 */
|
||||||
|
/* @since 1.2.8 */
|
||||||
|
/* Names as of READ TRACK INFORMATION, MMC-5 6.27.3 :
|
||||||
|
bit0 - bit3 = Track Mode
|
||||||
|
bit4 = Copy
|
||||||
|
bit5 = Damage
|
||||||
|
bit6 - bit7 = LJRS
|
||||||
|
bit8 - bit11 = Data Mode
|
||||||
|
bit12 = FP
|
||||||
|
bit13 = Packet/Inc
|
||||||
|
bit14 = Blank
|
||||||
|
bit15 = RT
|
||||||
|
bit16 = NWA_V
|
||||||
|
bit17 = LRA_V
|
||||||
|
*/
|
||||||
|
int track_status_bits;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -1955,7 +1974,7 @@ int burn_session_set_start_tno(struct burn_session *session, int tno,
|
|||||||
int flag);
|
int flag);
|
||||||
|
|
||||||
/* ts B20108 */
|
/* ts B20108 */
|
||||||
/** Inquire the CD track start number, as set by default ot by
|
/** Inquire the CD track start number, as set by default or by
|
||||||
burn_session_set_start_tno().
|
burn_session_set_start_tno().
|
||||||
@param session The session to be inquired
|
@param session The session to be inquired
|
||||||
@return > 0 is the currently set CD track start number
|
@return > 0 is the currently set CD track start number
|
||||||
@ -3387,8 +3406,12 @@ void burn_track_get_entry(struct burn_track *t, struct burn_toc_entry *entry);
|
|||||||
void burn_session_get_leadout_entry(struct burn_session *s,
|
void burn_session_get_leadout_entry(struct burn_session *s,
|
||||||
struct burn_toc_entry *entry);
|
struct burn_toc_entry *entry);
|
||||||
|
|
||||||
/** Gets an array of all the sessions for the disc
|
/** Gets an array of all complete sessions for the disc
|
||||||
THIS IS NO LONGER VALID AFTER YOU ADD OR REMOVE A SESSION
|
THIS IS NO LONGER VALID AFTER YOU ADD OR REMOVE A SESSION
|
||||||
|
The result array contains *num + burn_disc_get_incomplete_sessions()
|
||||||
|
elements. All above *num are incomplete sessions.
|
||||||
|
Typically there is at most one incomplete session with one empty track.
|
||||||
|
DVD+R and BD-R seem to allow more than one track with even readable data.
|
||||||
@param d Disc to get session array for
|
@param d Disc to get session array for
|
||||||
@param num Returns the number of sessions in the array
|
@param num Returns the number of sessions in the array
|
||||||
@return array of sessions
|
@return array of sessions
|
||||||
@ -3396,6 +3419,17 @@ void burn_session_get_leadout_entry(struct burn_session *s,
|
|||||||
struct burn_session **burn_disc_get_sessions(struct burn_disc *d,
|
struct burn_session **burn_disc_get_sessions(struct burn_disc *d,
|
||||||
int *num);
|
int *num);
|
||||||
|
|
||||||
|
/* ts B30112 */
|
||||||
|
/* @since 1.2.8 */
|
||||||
|
/** Obtains the number of incomplete sessions which are recorded in the
|
||||||
|
result array of burn_disc_get_sessions() after the complete sessions.
|
||||||
|
See above.
|
||||||
|
@param d Disc object to inquire
|
||||||
|
@return Number of incomplete sessions
|
||||||
|
*/
|
||||||
|
int burn_disc_get_incomplete_sessions(struct burn_disc *d);
|
||||||
|
|
||||||
|
|
||||||
int burn_disc_get_sectors(struct burn_disc *d);
|
int burn_disc_get_sectors(struct burn_disc *d);
|
||||||
|
|
||||||
/** Gets an array of all the tracks for a session
|
/** Gets an array of all the tracks for a session
|
||||||
@ -3450,8 +3484,8 @@ void burn_version(int *major, int *minor, int *micro);
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
#define burn_header_version_major 1
|
#define burn_header_version_major 1
|
||||||
#define burn_header_version_minor 2
|
#define burn_header_version_minor 3
|
||||||
#define burn_header_version_micro 6
|
#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.
|
||||||
@ -4048,6 +4082,12 @@ BURN_END_DECLS
|
|||||||
*/
|
*/
|
||||||
#define Libburn_dummy_probe_write_modeS 1
|
#define Libburn_dummy_probe_write_modeS 1
|
||||||
|
|
||||||
|
/* ts B30112 */
|
||||||
|
/* Handle DVD+R with reserved tracks in incomplete first session
|
||||||
|
by loading info about the incomplete session into struct burn_disc
|
||||||
|
*/
|
||||||
|
#define Libburn_disc_with_incomplete_sessioN 1
|
||||||
|
|
||||||
|
|
||||||
/* Early experimental:
|
/* Early experimental:
|
||||||
Do not define Libburn_develop_quality_scaN unless you want to work
|
Do not define Libburn_develop_quality_scaN unless you want to work
|
||||||
|
@ -19,6 +19,7 @@ burn_disc_get_bd_spare_info;
|
|||||||
burn_disc_get_cd_info;
|
burn_disc_get_cd_info;
|
||||||
burn_disc_get_format_descr;
|
burn_disc_get_format_descr;
|
||||||
burn_disc_get_formats;
|
burn_disc_get_formats;
|
||||||
|
burn_disc_get_incomplete_sessions;
|
||||||
burn_disc_get_leadin_text;
|
burn_disc_get_leadin_text;
|
||||||
burn_disc_get_media_id;
|
burn_disc_get_media_id;
|
||||||
burn_disc_get_msc1;
|
burn_disc_get_msc1;
|
||||||
|
@ -597,6 +597,8 @@ Range "scdbackup" : 0x00020000 to 0x0002ffff
|
|||||||
0x0002019b (SORRY,HIGH) = CD track number exceeds range of 1 to 99
|
0x0002019b (SORRY,HIGH) = CD track number exceeds range of 1 to 99
|
||||||
0x0002019c (SORRY,HIGH) = Session has no defined tracks
|
0x0002019c (SORRY,HIGH) = Session has no defined tracks
|
||||||
0x0002019d (SORRY,HIGH) = Audio read size not properly aligned
|
0x0002019d (SORRY,HIGH) = Audio read size not properly aligned
|
||||||
|
0x0002019e (NOTE,HIGH) = Drive does not support media certification
|
||||||
|
0x0002019f (FAILURE,HIGH) = CD-TEXT with unknown character code
|
||||||
|
|
||||||
|
|
||||||
libdax_audioxtr:
|
libdax_audioxtr:
|
||||||
|
135
libburn/mmc.c
135
libburn/mmc.c
@ -1126,6 +1126,12 @@ err_ex:;
|
|||||||
if (dlen + 2 > old_alloc_len)
|
if (dlen + 2 > old_alloc_len)
|
||||||
dlen = old_alloc_len - 2;
|
dlen = old_alloc_len - 2;
|
||||||
d->complete_sessions = 1 + c->page->data[3] - c->page->data[2];
|
d->complete_sessions = 1 + c->page->data[3] - c->page->data[2];
|
||||||
|
|
||||||
|
#ifdef Libburn_disc_with_incomplete_sessioN
|
||||||
|
/* ts B30112 : number of open sessions */
|
||||||
|
d->incomplete_sessions = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
d->last_track_no = d->complete_sessions;
|
d->last_track_no = d->complete_sessions;
|
||||||
if (dlen - 2 < (d->last_track_no + 1) * 8) {
|
if (dlen - 2 < (d->last_track_no + 1) * 8) {
|
||||||
libdax_msgs_submit(libdax_messenger, d->global_index,
|
libdax_msgs_submit(libdax_messenger, d->global_index,
|
||||||
@ -1253,9 +1259,22 @@ int mmc_fake_toc(struct burn_drive *d)
|
|||||||
{ret = -1; goto ex;}
|
{ret = -1; goto ex;}
|
||||||
BURN_ALLOC_MEM(buf, struct buffer, 1);
|
BURN_ALLOC_MEM(buf, struct buffer, 1);
|
||||||
|
|
||||||
|
#ifdef Libburn_disc_with_incomplete_sessioN
|
||||||
|
|
||||||
|
if (d->last_track_no <= 0 ||
|
||||||
|
d->complete_sessions + d->incomplete_sessions <= 0 ||
|
||||||
|
d->status == BURN_DISC_BLANK)
|
||||||
|
{ret = 2; goto ex;}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
if (d->last_track_no <= 0 || d->complete_sessions <= 0 ||
|
if (d->last_track_no <= 0 || d->complete_sessions <= 0 ||
|
||||||
d->status == BURN_DISC_BLANK)
|
d->status == BURN_DISC_BLANK)
|
||||||
{ret = 2; goto ex;}
|
{ret = 2; goto ex;}
|
||||||
|
|
||||||
|
#endif /* ! Libburn_disc_with_incomplete_sessioN */
|
||||||
|
|
||||||
|
|
||||||
if (d->last_track_no > BURN_MMC_FAKE_TOC_MAX_SIZE) {
|
if (d->last_track_no > BURN_MMC_FAKE_TOC_MAX_SIZE) {
|
||||||
msg = calloc(1, 160);
|
msg = calloc(1, 160);
|
||||||
if (msg != NULL) {
|
if (msg != NULL) {
|
||||||
@ -1279,18 +1298,34 @@ int mmc_fake_toc(struct burn_drive *d)
|
|||||||
d->disc = burn_disc_create();
|
d->disc = burn_disc_create();
|
||||||
if (d->disc == NULL)
|
if (d->disc == NULL)
|
||||||
{ret = -1; goto ex;}
|
{ret = -1; goto ex;}
|
||||||
d->toc_entries = d->last_track_no + d->complete_sessions;
|
d->toc_entries = d->last_track_no
|
||||||
|
+ d->complete_sessions + d->incomplete_sessions;
|
||||||
d->toc_entry = calloc(d->toc_entries, sizeof(struct burn_toc_entry));
|
d->toc_entry = calloc(d->toc_entries, sizeof(struct burn_toc_entry));
|
||||||
if (d->toc_entry == NULL)
|
if (d->toc_entry == NULL)
|
||||||
{ret = -1; goto ex;}
|
{ret = -1; goto ex;}
|
||||||
memset(d->toc_entry, 0,d->toc_entries * sizeof(struct burn_toc_entry));
|
memset(d->toc_entry, 0,d->toc_entries * sizeof(struct burn_toc_entry));
|
||||||
|
|
||||||
|
#ifdef Libburn_disc_with_incomplete_sessioN
|
||||||
|
|
||||||
|
for (i = 0; i < d->complete_sessions + d->incomplete_sessions; i++) {
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
for (i = 0; i < d->complete_sessions; i++) {
|
for (i = 0; i < d->complete_sessions; i++) {
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
session = burn_session_create();
|
session = burn_session_create();
|
||||||
if (session == NULL)
|
if (session == NULL)
|
||||||
{ret = -1; goto ex;}
|
{ret = -1; goto ex;}
|
||||||
burn_disc_add_session(d->disc, session, BURN_POS_END);
|
burn_disc_add_session(d->disc, session, BURN_POS_END);
|
||||||
burn_session_free(session);
|
burn_session_free(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef Libburn_disc_with_incomplete_sessioN
|
||||||
|
d->disc->incomplete_sessions = d->incomplete_sessions;
|
||||||
|
#endif
|
||||||
|
|
||||||
memset(size_data, 0, 4);
|
memset(size_data, 0, 4);
|
||||||
memset(start_data, 0, 4);
|
memset(start_data, 0, 4);
|
||||||
|
|
||||||
@ -1333,7 +1368,16 @@ int mmc_fake_toc(struct burn_drive *d)
|
|||||||
entry;
|
entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef Libburn_disc_with_incomplete_sessioN
|
||||||
|
|
||||||
|
if (session_number > d->complete_sessions) {
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
if (session_number > d->disc->sessions) {
|
if (session_number > d->disc->sessions) {
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
if (i == d->last_track_no - 1) {
|
if (i == d->last_track_no - 1) {
|
||||||
/* ts A70212 : Last track field Free Blocks */
|
/* ts A70212 : Last track field Free Blocks */
|
||||||
burn_drive_set_media_capacity_remaining(d,
|
burn_drive_set_media_capacity_remaining(d,
|
||||||
@ -1341,7 +1385,18 @@ int mmc_fake_toc(struct burn_drive *d)
|
|||||||
((off_t) 2048));
|
((off_t) 2048));
|
||||||
d->media_lba_limit = 0;
|
d->media_lba_limit = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef Libburn_disc_with_incomplete_sessioN
|
||||||
|
|
||||||
|
if (session_number > d->disc->sessions )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
continue;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
entry = &(d->toc_entry[i + session_number - 1]);
|
entry = &(d->toc_entry[i + session_number - 1]);
|
||||||
@ -1359,12 +1414,16 @@ int mmc_fake_toc(struct burn_drive *d)
|
|||||||
memcpy(end_data, tdata + 28, 4);
|
memcpy(end_data, tdata + 28, 4);
|
||||||
mmc_fake_toc_entry(entry, session_number, i + 1,
|
mmc_fake_toc_entry(entry, session_number, i + 1,
|
||||||
size_data, start_data, end_data);
|
size_data, start_data, end_data);
|
||||||
|
entry->track_status_bits = tdata[5] | (tdata[6] << 8) |
|
||||||
|
(tdata[7] << 16);
|
||||||
|
entry->extensions_valid |= 4;
|
||||||
|
|
||||||
if (prev_session != session_number)
|
if (prev_session != session_number)
|
||||||
d->disc->session[session_number - 1]->firsttrack = i+1;
|
d->disc->session[session_number - 1]->firsttrack = i+1;
|
||||||
d->disc->session[session_number - 1]->lasttrack = i+1;
|
d->disc->session[session_number - 1]->lasttrack = i+1;
|
||||||
prev_session = session_number;
|
prev_session = session_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prev_session > 0 && prev_session <= d->disc->sessions) {
|
if (prev_session > 0 && prev_session <= d->disc->sessions) {
|
||||||
/* leadout entry of last session of closed disc */
|
/* leadout entry of last session of closed disc */
|
||||||
entry = &(d->toc_entry[(d->last_track_no - 1) + prev_session]);
|
entry = &(d->toc_entry[(d->last_track_no - 1) + prev_session]);
|
||||||
@ -2029,16 +2088,28 @@ regard_as_blank:;
|
|||||||
d->current_profile == 0x12 || d->current_profile == 0x43)
|
d->current_profile == 0x12 || d->current_profile == 0x43)
|
||||||
d->status = BURN_DISC_BLANK;
|
d->status = BURN_DISC_BLANK;
|
||||||
|
|
||||||
|
#ifdef Libburn_disc_with_incomplete_sessioN
|
||||||
|
/* ts B30112 : number of open sessions */
|
||||||
|
d->incomplete_sessions = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (d->status == BURN_DISC_BLANK) {
|
if (d->status == BURN_DISC_BLANK) {
|
||||||
d->last_track_no = 1; /* The "incomplete track" */
|
d->last_track_no = 1; /* The "incomplete track" */
|
||||||
d->complete_sessions = 0;
|
d->complete_sessions = 0;
|
||||||
} else {
|
} else {
|
||||||
/* ts A70131 : number of non-empty sessions */
|
/* ts A70131 : number of closed sessions */
|
||||||
d->complete_sessions = number_of_sessions;
|
d->complete_sessions = number_of_sessions;
|
||||||
/* mmc5r03c.pdf 6.22.3.1.3 State of Last Session: 3=complete */
|
/* mmc5r03c.pdf 6.22.3.1.3 State of Last Session: 3=complete */
|
||||||
if (d->state_of_last_session != 3 && d->complete_sessions >= 1)
|
if (d->state_of_last_session != 3 &&
|
||||||
|
d->complete_sessions >= 1) {
|
||||||
d->complete_sessions--;
|
d->complete_sessions--;
|
||||||
|
|
||||||
|
#ifdef Libburn_disc_with_incomplete_sessioN
|
||||||
|
d->incomplete_sessions++;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/* ts A70129 : mmc5r03c.pdf 6.22.3.1.7
|
/* ts A70129 : mmc5r03c.pdf 6.22.3.1.7
|
||||||
This includes the "incomplete track" if the disk is
|
This includes the "incomplete track" if the disk is
|
||||||
appendable. I.e number of complete tracks + 1. */
|
appendable. I.e number of complete tracks + 1. */
|
||||||
@ -2713,9 +2784,9 @@ void mmc_set_speed(struct burn_drive *d, int r, int w)
|
|||||||
if (r <= 0 || w <= 0) {
|
if (r <= 0 || w <= 0) {
|
||||||
/* ts A70712 : now searching for best speed descriptor */
|
/* ts A70712 : now searching for best speed descriptor */
|
||||||
if (w > 0 && r <= 0)
|
if (w > 0 && r <= 0)
|
||||||
burn_drive_get_best_speed(d, r, &best_sd, 1);
|
burn_drive_get_best_speed(d, r, &best_sd, 1 | 2);
|
||||||
else
|
else
|
||||||
burn_drive_get_best_speed(d, w, &best_sd, 0);
|
burn_drive_get_best_speed(d, w, &best_sd, 2);
|
||||||
if (best_sd != NULL) {
|
if (best_sd != NULL) {
|
||||||
w = best_sd->write_speed;
|
w = best_sd->write_speed;
|
||||||
d->nominal_write_speed = w;
|
d->nominal_write_speed = w;
|
||||||
@ -3886,10 +3957,22 @@ no_suitable_formatting_type:;
|
|||||||
goto no_suitable_formatting_type;
|
goto no_suitable_formatting_type;
|
||||||
format_type = d->format_descriptors[index].type;
|
format_type = d->format_descriptors[index].type;
|
||||||
if (format_type == 0x30 || format_type == 0x31) {
|
if (format_type == 0x30 || format_type == 0x31) {
|
||||||
if (flag & 64)
|
if ((flag & 64) || !(d->current_feat23h_byte4 & 3)) {
|
||||||
format_sub_type = 3; /* Quick certification */
|
format_sub_type = 0;
|
||||||
else
|
if (!(flag & 64))
|
||||||
format_sub_type = 2; /* Full certification */
|
libdax_msgs_submit(libdax_messenger,
|
||||||
|
d->global_index, 0x0002019e,
|
||||||
|
LIBDAX_MSGS_SEV_NOTE,
|
||||||
|
LIBDAX_MSGS_PRIO_HIGH,
|
||||||
|
"Drive does not support media certification",
|
||||||
|
0, 0);
|
||||||
|
} else {
|
||||||
|
/* With Certification */
|
||||||
|
if (d->current_feat23h_byte4 & 1)
|
||||||
|
format_sub_type = 2; /* Full */
|
||||||
|
else
|
||||||
|
format_sub_type = 3; /* Quick */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef Libburn_bd_re_format_olD
|
#ifdef Libburn_bd_re_format_olD
|
||||||
@ -3986,6 +4069,11 @@ unsuitable_media:;
|
|||||||
}
|
}
|
||||||
#endif /* Libburn_do_not_format_dvd_ram_or_bd_rE */
|
#endif /* Libburn_do_not_format_dvd_ram_or_bd_rE */
|
||||||
|
|
||||||
|
/* <<<
|
||||||
|
fprintf(stderr, "\nlibburn_DEBUG: FORMAT UNIT temporarily disabled.\n");
|
||||||
|
ret = 1; goto ex;
|
||||||
|
*/
|
||||||
|
|
||||||
d->issue_command(d, c);
|
d->issue_command(d, c);
|
||||||
if (c->error && !tolerate_failure) {
|
if (c->error && !tolerate_failure) {
|
||||||
spc_decode_sense(c->sense, 0, &key, &asc, &ascq);
|
spc_decode_sense(c->sense, 0, &key, &asc, &ascq);
|
||||||
@ -4020,8 +4108,10 @@ ex:;
|
|||||||
|
|
||||||
|
|
||||||
/* ts A61225 */
|
/* ts A61225 */
|
||||||
|
/* @param flag bit0= register speed descriptors
|
||||||
|
*/
|
||||||
static int mmc_get_write_performance_al(struct burn_drive *d,
|
static int mmc_get_write_performance_al(struct burn_drive *d,
|
||||||
int *alloc_len, int *max_descr)
|
int *alloc_len, int *max_descr, int flag)
|
||||||
{
|
{
|
||||||
struct buffer *buf = NULL;
|
struct buffer *buf = NULL;
|
||||||
int len, i, b, num_descr, ret, old_alloc_len;
|
int len, i, b, num_descr, ret, old_alloc_len;
|
||||||
@ -4104,7 +4194,7 @@ static int mmc_get_write_performance_al(struct burn_drive *d,
|
|||||||
pd = c->page->data;
|
pd = c->page->data;
|
||||||
if (num_descr > *max_descr)
|
if (num_descr > *max_descr)
|
||||||
num_descr = *max_descr;
|
num_descr = *max_descr;
|
||||||
for (i = 0; i < num_descr; i++) {
|
for (i = 0; i < num_descr && (flag & 1); i++) {
|
||||||
exact_bit = !!(pd[8 + i*16] & 2);
|
exact_bit = !!(pd[8 + i*16] & 2);
|
||||||
end_lba = read_speed = write_speed = 0;
|
end_lba = read_speed = write_speed = 0;
|
||||||
for (b = 0; b < 4 ; b++) {
|
for (b = 0; b < 4 ; b++) {
|
||||||
@ -4179,15 +4269,25 @@ int mmc_get_write_performance(struct burn_drive *d)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* first command execution to learn number of descriptors and
|
/* first command execution to learn number of descriptors and
|
||||||
dxfer_len */
|
dxfer_len
|
||||||
ret = mmc_get_write_performance_al(d, &alloc_len, &max_descr);
|
*/
|
||||||
|
ret = mmc_get_write_performance_al(d, &alloc_len, &max_descr, 0);
|
||||||
|
if (max_descr > 0 && ret > 0) {
|
||||||
|
/* Some drives announce only 1 descriptor if asked for 0.
|
||||||
|
So ask twice for non-0 descriptors.
|
||||||
|
*/
|
||||||
|
ret = mmc_get_write_performance_al(d, &alloc_len, &max_descr,
|
||||||
|
0);
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
fprintf(stderr,"LIBBURN_DEBUG: ACh alloc_len = %d , ret = %d\n",
|
fprintf(stderr,"LIBBURN_DEBUG: ACh alloc_len = %d , ret = %d\n",
|
||||||
alloc_len, ret);
|
alloc_len, ret);
|
||||||
*/
|
*/
|
||||||
if (max_descr > 0 && ret > 0)
|
if (max_descr > 0 && ret > 0)
|
||||||
/* second execution with announced length */
|
/* final execution with announced length */
|
||||||
ret = mmc_get_write_performance_al(d, &alloc_len, &max_descr);
|
max_descr = (alloc_len - 8) / 16;
|
||||||
|
ret = mmc_get_write_performance_al(d, &alloc_len, &max_descr,
|
||||||
|
1);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5014,6 +5114,11 @@ int mmc_setup_drive(struct burn_drive *d)
|
|||||||
d->disc_info_valid = 0;
|
d->disc_info_valid = 0;
|
||||||
d->num_format_descr = 0;
|
d->num_format_descr = 0;
|
||||||
d->complete_sessions = 0;
|
d->complete_sessions = 0;
|
||||||
|
|
||||||
|
#ifdef Libburn_disc_with_incomplete_sessioN
|
||||||
|
d->incomplete_sessions = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
d->state_of_last_session = -1;
|
d->state_of_last_session = -1;
|
||||||
d->last_track_no = 1;
|
d->last_track_no = 1;
|
||||||
d->media_capacity_remaining = 0;
|
d->media_capacity_remaining = 0;
|
||||||
|
@ -65,6 +65,11 @@ struct burn_disc *burn_disc_create(void)
|
|||||||
d->refcnt = 1;
|
d->refcnt = 1;
|
||||||
d->sessions = 0;
|
d->sessions = 0;
|
||||||
d->session = NULL;
|
d->session = NULL;
|
||||||
|
|
||||||
|
#ifdef Libburn_disc_with_incomplete_sessioN
|
||||||
|
d->incomplete_sessions= 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -691,10 +696,37 @@ void burn_session_get_leadout_entry(struct burn_session *s,
|
|||||||
|
|
||||||
struct burn_session **burn_disc_get_sessions(struct burn_disc *d, int *num)
|
struct burn_session **burn_disc_get_sessions(struct burn_disc *d, int *num)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#ifdef Libburn_disc_with_incomplete_sessioN
|
||||||
|
|
||||||
|
*num = d->sessions - d->incomplete_sessions;
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
*num = d->sessions;
|
*num = d->sessions;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
return d->session;
|
return d->session;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ts B30112 : API */
|
||||||
|
int burn_disc_get_incomplete_sessions(struct burn_disc *d)
|
||||||
|
{
|
||||||
|
#ifdef Libburn_disc_with_incomplete_sessioN
|
||||||
|
|
||||||
|
return d->incomplete_sessions;
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
struct burn_track **burn_session_get_tracks(struct burn_session *s, int *num)
|
struct burn_track **burn_session_get_tracks(struct burn_session *s, int *num)
|
||||||
{
|
{
|
||||||
*num = s->tracks;
|
*num = s->tracks;
|
||||||
@ -737,11 +769,11 @@ int burn_disc_cd_toc_extensions(struct burn_drive *drive, int flag)
|
|||||||
ret = 1;
|
ret = 1;
|
||||||
goto ex;
|
goto ex;
|
||||||
}
|
}
|
||||||
track_offset = burn_session_get_start_tno(d->session[0], 0);
|
|
||||||
if (track_offset <= 0)
|
|
||||||
track_offset = 1;
|
|
||||||
|
|
||||||
for (sidx = 0; sidx < d->sessions; sidx++) {
|
for (sidx = 0; sidx < d->sessions; sidx++) {
|
||||||
|
track_offset = burn_session_get_start_tno(d->session[sidx], 0);
|
||||||
|
if (track_offset <= 0)
|
||||||
|
track_offset = 1;
|
||||||
if (d->session[sidx] == NULL) {
|
if (d->session[sidx] == NULL) {
|
||||||
sprintf(msg, "d->session[%d of %d] == NULL",
|
sprintf(msg, "d->session[%d of %d] == NULL",
|
||||||
sidx, d->sessions);
|
sidx, d->sessions);
|
||||||
|
@ -144,6 +144,11 @@ struct burn_disc
|
|||||||
{
|
{
|
||||||
int sessions;
|
int sessions;
|
||||||
struct burn_session **session;
|
struct burn_session **session;
|
||||||
|
|
||||||
|
#ifdef Libburn_disc_with_incomplete_sessioN
|
||||||
|
int incomplete_sessions;
|
||||||
|
#endif
|
||||||
|
|
||||||
int refcnt;
|
int refcnt;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -287,6 +287,12 @@ struct burn_drive
|
|||||||
/* ts A90107 */
|
/* ts A90107 */
|
||||||
int state_of_last_session;
|
int state_of_last_session;
|
||||||
|
|
||||||
|
#ifdef Libburn_disc_with_incomplete_sessioN
|
||||||
|
/* ts B30112 */
|
||||||
|
int incomplete_sessions;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* ts A70129 :
|
/* ts A70129 :
|
||||||
from 51h READ DISC INFORMATION Last Track Number in Last Session */
|
from 51h READ DISC INFORMATION Last Track Number in Last Session */
|
||||||
int last_track_no;
|
int last_track_no;
|
||||||
|
@ -1861,7 +1861,7 @@ int burn_dvd_write_track(struct burn_write_opts *o,
|
|||||||
struct burn_drive *d = o->drive;
|
struct burn_drive *d = o->drive;
|
||||||
struct buffer *out = d->buffer;
|
struct buffer *out = d->buffer;
|
||||||
int sectors;
|
int sectors;
|
||||||
int i, open_ended = 0, ret= 0, is_flushed = 0;
|
int i, open_ended = 0, ret= 0, is_flushed = 0, track_open = 0;
|
||||||
int first_buf_cap = 0, further_cap = 0, buf_cap_step = 1024;
|
int first_buf_cap = 0, further_cap = 0, buf_cap_step = 1024;
|
||||||
|
|
||||||
/* ts A70213 : eventually expand size of track to max */
|
/* ts A70213 : eventually expand size of track to max */
|
||||||
@ -1889,6 +1889,7 @@ int burn_dvd_write_track(struct burn_write_opts *o,
|
|||||||
if (ret <= 0)
|
if (ret <= 0)
|
||||||
goto ex;
|
goto ex;
|
||||||
}
|
}
|
||||||
|
track_open = 1;
|
||||||
|
|
||||||
sectors = burn_track_get_sectors_2(t, 1);
|
sectors = burn_track_get_sectors_2(t, 1);
|
||||||
open_ended = burn_track_is_open_ended(t);
|
open_ended = burn_track_is_open_ended(t);
|
||||||
@ -1971,7 +1972,7 @@ int burn_dvd_write_track(struct burn_write_opts *o,
|
|||||||
ex:;
|
ex:;
|
||||||
if (d->cancel)
|
if (d->cancel)
|
||||||
burn_source_cancel(t->source);
|
burn_source_cancel(t->source);
|
||||||
if (!is_flushed)
|
if (track_open && !is_flushed)
|
||||||
d->sync_cache(d); /* burn_write_flush() was not called */
|
d->sync_cache(d); /* burn_write_flush() was not called */
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user