Improved handling of TAO CD tracks by -check_media

This commit is contained in:
Thomas Schmitt 2016-03-08 07:54:53 +00:00
parent 51f9961eba
commit b384e51f82
2 changed files with 23 additions and 12 deletions

View File

@ -2840,15 +2840,11 @@ abort_check:;
/* Read last 2 blocks of CD track separately, because with TAO tracks /* Read last 2 blocks of CD track separately, because with TAO tracks
they are always unreadable but with SAO tracks they contain data. they are always unreadable but with SAO tracks they contain data.
*/ */
if(to_read > 2) if(to_read > 2) {
to_read-= 2; to_read-= 2;
else { } else {
if(flag & 1) { if(to_read > 1)
quality= Xorriso_read_quality_tao_enD;
skip_reading= 1;
} else if(to_read > 1) {
to_read--; to_read--;
}
suspect_tao_end= 1; suspect_tao_end= 1;
} }
} }
@ -3173,10 +3169,18 @@ int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
j + 1, i + 1); j + 1, i + 1);
Xorriso_msgs_submit(xorriso, 0, msg, 0, "WARNING", 0); Xorriso_msgs_submit(xorriso, 0, msg, 0, "WARNING", 0);
continue; continue;
} else {
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 { } else {
sprintf(msg, "-check_media: Track %d of session %d extends over the end of readable medium area.", sprintf(msg, "-check_media: Track %d of session %d extends over the end of readable medium area.",
j + 1, i + 1); 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; 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) { 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, ret= Spotlist_add_item(*spotlist, read_capacity,
track_bad_claim - read_capacity, track_bad_claim - read_capacity, quality, 0);
Xorriso_read_quality_unreadablE, 0);
if(ret <= 0) if(ret <= 0)
goto ex; goto ex;
} }

View File

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