Improved -toc summary of sessions with multiple tracks or non-data sessions
This commit is contained in:
parent
c0ad17b2d0
commit
3b0abc14c0
@ -979,7 +979,9 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
int num_sessions= 0, num_tracks= 0, lba= 0, nwa= -1, ret;
|
||||
int track_count= 0, session_no, track_no, profile_no= -1, track_size;
|
||||
int last_track_start= 0, last_track_size= -1, num_data= 0, is_data= 0;
|
||||
int session_size, first_track_start= 0;
|
||||
int num_session_data, num_session_other;
|
||||
int num_data= 0, other_data= 0, is_data= 0;
|
||||
int is_inout_drive= 0, drive_role, status, num_formats, emul_lba;
|
||||
int not_recognizable= 0, start_lba, end_lba;
|
||||
int sessions_seen, open_sessions= 0, have_real_open_session= 0;
|
||||
@ -1267,19 +1269,16 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
}
|
||||
if(!(flag&1))
|
||||
Xorriso_toc_line(xorriso, flag & 8);
|
||||
last_track_start= lba;
|
||||
/*
|
||||
num_payload= num_data= last_track_size= nwa;
|
||||
*/
|
||||
num_sessions= 1;
|
||||
} else {
|
||||
num_data= 0;
|
||||
num_data= other_data= 0;
|
||||
sessions= isoburn_toc_disc_get_sessions(disc, &num_sessions);
|
||||
open_sessions= isoburn_toc_disc_get_incmpl_sess(disc);
|
||||
for (session_no= 0;
|
||||
session_no < num_sessions + open_sessions &&
|
||||
!(xorriso->request_to_abort);
|
||||
session_no++) {
|
||||
num_session_data= num_session_other= 0;
|
||||
tracks= isoburn_toc_session_get_tracks(sessions[session_no], &num_tracks);
|
||||
if (tracks == NULL || num_tracks <= 0)
|
||||
continue;
|
||||
@ -1290,6 +1289,8 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
track_count++;
|
||||
is_data= 0;
|
||||
isoburn_toc_track_get_entry(tracks[track_no], &toc_entry);
|
||||
if((toc_entry.control & 7) >= 4) /* data track */
|
||||
is_data= 1;
|
||||
if (toc_entry.extensions_valid & 1) {
|
||||
/* DVD extension valid */
|
||||
lba= toc_entry.start_lba;
|
||||
@ -1306,9 +1307,9 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
track_size= burn_msf_to_lba(next_toc_entry.pmin, next_toc_entry.psec,
|
||||
next_toc_entry.pframe) - lba;
|
||||
}
|
||||
if(flag&(1|4))
|
||||
if((flag & (1 | 4)) || !is_data) {
|
||||
ret= 0;
|
||||
else {
|
||||
} else {
|
||||
ret= isoburn_toc_track_get_emul(tracks[track_no], &emul_lba,
|
||||
&image_blocks, volume_id, 0);
|
||||
if(ret <= 0)
|
||||
@ -1348,13 +1349,12 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
}
|
||||
if(!(flag&1))
|
||||
Xorriso_toc_line(xorriso, flag & 8);
|
||||
/*
|
||||
if(track_no>0)
|
||||
num_payload+= lba - last_track_start;
|
||||
*/
|
||||
last_track_start= lba;
|
||||
if((toc_entry.control&7)>=4) /* data track */
|
||||
is_data= 1;
|
||||
if(is_data)
|
||||
num_session_data+= track_size;
|
||||
else
|
||||
num_session_other+= track_size;
|
||||
if(track_no == 0)
|
||||
first_track_start= lba;
|
||||
}
|
||||
isoburn_toc_session_get_leadout_entry(sessions[session_no], &toc_entry);
|
||||
if (toc_entry.extensions_valid & 1) {
|
||||
@ -1362,20 +1362,19 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
} else {
|
||||
lba= burn_msf_to_lba(toc_entry.pmin, toc_entry.psec, toc_entry.pframe);
|
||||
}
|
||||
last_track_size= lba - last_track_start;
|
||||
/*
|
||||
num_payload+= last_track_size;
|
||||
*/
|
||||
if(is_data)
|
||||
num_data+= last_track_size;
|
||||
session_size= lba - first_track_start;
|
||||
if(num_session_data > 0 && num_session_other > 0) {
|
||||
num_data+= num_session_data;
|
||||
other_data+= num_session_other;
|
||||
} else if(is_data) {
|
||||
num_data+= session_size;
|
||||
} else {
|
||||
other_data+= session_size;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(xorriso->request_to_abort)
|
||||
{ret= 1; goto ex;}
|
||||
/*
|
||||
num_wasted= lba - num_payload;
|
||||
num_nondata= lba - num_data;
|
||||
*/
|
||||
|
||||
Sfile_scale(((double) num_data) * 2048.0, mem_text,5,1e4,1);
|
||||
sessions_seen= num_sessions + open_sessions;
|
||||
@ -1393,6 +1392,11 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
sprintf(respt+strlen(respt), "\n");
|
||||
Xorriso_toc_line(xorriso, flag & 8);
|
||||
|
||||
if(other_data > 0) {
|
||||
sprintf(respt, "Non-data blks: %d\n", other_data);
|
||||
Xorriso_toc_line(xorriso, flag & 8);
|
||||
}
|
||||
|
||||
if (s==BURN_DISC_APPENDABLE && nwa!=0) {
|
||||
ret= isoburn_disc_track_lba_nwa(drive, NULL, 0, &lba, &nwa);
|
||||
if(ret>0) {
|
||||
|
@ -1 +1 @@
|
||||
#define Xorriso_timestamP "2019.07.06.130540"
|
||||
#define Xorriso_timestamP "2019.07.13.153027"
|
||||
|
Loading…
Reference in New Issue
Block a user