Improved handling of TAO CD tracks by -check_media

master
Thomas Schmitt 7 years ago
parent 51f9961eba
commit b384e51f82
  1. 33
      xorriso/drive_mgt.c
  2. 2
      xorriso/xorriso_timestamp.h

@ -2840,15 +2840,11 @@ abort_check:;
/* Read last 2 blocks of CD track separately, because with TAO tracks
they are always unreadable but with SAO tracks they contain data.
*/
if(to_read > 2)
if(to_read > 2) {
to_read-= 2;
else {
if(flag & 1) {
quality= Xorriso_read_quality_tao_enD;
skip_reading= 1;
} else if(to_read > 1) {
} else {
if(to_read > 1)
to_read--;
}
suspect_tao_end= 1;
}
}
@ -3174,9 +3170,17 @@ int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
Xorriso_msgs_submit(xorriso, 0, msg, 0, "WARNING", 0);
continue;
} else {
sprintf(msg, "-check_media: Track %d of session %d extends over the end of readable medium area.",
if(profile_no >= 0x08 && profile_no <= 0x0a &&
track_lba + track_blocks == read_capacity + 2 &&
i == num_sessions - 1 && j == num_tracks - 1) {
sprintf(msg, "-check_media: Last CD track exceeds readable area by 2 blocks. Assuming TAO.");
Xorriso_msgs_submit(xorriso, 0, msg, 0, "DEBUG", 0);
} else {
sprintf(msg, "-check_media: Track %d of session %d extends over the end of readable medium area.",
j + 1, i + 1);
Xorriso_msgs_submit(xorriso, 0, msg, 0, "WARNING", 0);
Xorriso_msgs_submit(xorriso, 0, msg, 0, "WARNING", 0);
}
track_blocks= read_capacity - track_lba;
}
}
@ -3227,9 +3231,16 @@ int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
}
if(track_bad_claim > read_capacity) {
count= Spotlist_count(*spotlist, 0);
Spotlist_get_item(*spotlist, count - 1, &track_lba, &blocks, &quality, 0);
if(profile_no >= 0x08 && profile_no <= 0x0a &&
track_bad_claim - read_capacity == 2 &&
quality != Xorriso_read_quality_tao_enD)
quality= Xorriso_read_quality_tao_enD;
else
quality= Xorriso_read_quality_unreadablE;
ret= Spotlist_add_item(*spotlist, read_capacity,
track_bad_claim - read_capacity,
Xorriso_read_quality_unreadablE, 0);
track_bad_claim - read_capacity, quality, 0);
if(ret <= 0)
goto ex;
}

@ -1 +1 @@
#define Xorriso_timestamP "2016.03.01.141456"
#define Xorriso_timestamP "2016.03.08.075457"

Loading…
Cancel
Save