Made structs SpotlistiteM and SpotlisT ready for long block adresses

This commit is contained in:
2024-03-17 22:07:23 +01:00
parent 86261b7972
commit ba12014d46
6 changed files with 76 additions and 73 deletions

View File

@@ -2578,7 +2578,7 @@ int Xorriso__add_spot(struct xorriso_md5_state *state,
if(ret != 0)
return(0);
}
ret= Spotlist_add_item(state->spotlist, start_lba, blocks, quality, 0);
ret= Spotlist_add_item(state->spotlist, (off_t) start_lba, (off_t) blocks, quality, 0);
if(state->chunk != NULL) {
uret= pthread_mutex_unlock(&(state->spot_mutex));
if(uret != 0 && ret > 0)
@@ -3255,10 +3255,11 @@ ex:;
int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
struct CheckmediajoB *job, int flag)
{
int media_blocks= 0, read_chunk= 32, ret, mode, start_lba= 0;
int blocks, os_errno, i, j, last_track_end= -1, track_blocks, track_lba;
int media_blocks= 0, read_chunk= 32, ret, mode;
int num_sessions, num_tracks, declare_untested= 0, md5_start;
int read_capacity= -1, end_lba, hret, count, quality, profile_no;
int os_errno, j, track_blocks;
int read_capacity= -1, end_lba, hret, quality, profile_no;
off_t i, blocks, last_track_end= -1, count, track_lba, start_lba= 0;
int track_bad_claim= 0;
char *toc_info= NULL, profile_name[80], msg[160];
struct burn_drive *drive;
@@ -3313,7 +3314,7 @@ int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
mode= job->mode;
if(job->min_lba > 0) {
start_lba= job->min_lba;
ret= Spotlist_add_item(*spotlist, 0, job->min_lba,
ret= Spotlist_add_item(*spotlist, (off_t) 0, (off_t) job->min_lba,
Xorriso_read_quality_untesteD, 0);
if(ret <= 0)
goto ex;
@@ -3346,8 +3347,8 @@ no_readable_medium:;
if(job->max_lba >= 0) {
blocks= job->max_lba + 1 - start_lba;
xorriso->pacifier_total= blocks;
ret= Xorriso_check_interval(xorriso, *spotlist, job, start_lba, blocks,
read_chunk, start_lba, 0);
ret= Xorriso_check_interval(xorriso, *spotlist, job, (int) start_lba, (int) blocks,
read_chunk, (int) start_lba, 0);
if(ret <= 0)
goto ex;
@@ -3386,7 +3387,7 @@ no_tracks_found:;
track_bad_claim= track_lba + track_blocks;
if(track_lba >= read_capacity) {
sprintf(msg, "-check_media: Track %d of session %d begins after end of readable medium area.",
j + 1, i + 1);
j + 1, (int) (i + 1));
Xorriso_msgs_submit(xorriso, 0, msg, 0, "WARNING", 0);
continue;
} else {
@@ -3398,7 +3399,7 @@ no_tracks_found:;
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);
j + 1, (int) (i + 1));
Xorriso_msgs_submit(xorriso, 0, msg, 0, "WARNING", 0);
}
track_blocks= read_capacity - track_lba;
@@ -3434,12 +3435,12 @@ no_tracks_found:;
if(track_blocks <= 0)
continue;
if(declare_untested) {
ret= Spotlist_add_item(*spotlist, track_lba, track_blocks,
ret= Spotlist_add_item(*spotlist, track_lba, (off_t) track_blocks,
Xorriso_read_quality_untesteD, 0);
if(ret <= 0)
goto ex;
} else {
ret= Xorriso_check_interval(xorriso, *spotlist, job, track_lba,
ret= Xorriso_check_interval(xorriso, *spotlist, job, (int) track_lba,
track_blocks, read_chunk, md5_start,
(i > 0) | (4 * (xorriso->do_md5 & 1)));
if(ret <= 0)
@@ -3459,8 +3460,8 @@ no_tracks_found:;
quality= Xorriso_read_quality_tao_enD;
else
quality= Xorriso_read_quality_unreadablE;
ret= Spotlist_add_item(*spotlist, read_capacity,
track_bad_claim - read_capacity, quality, 0);
ret= Spotlist_add_item(*spotlist, (off_t) read_capacity,
(off_t) (track_bad_claim - read_capacity), quality, 0);
if(ret <= 0)
goto ex;
}
@@ -3479,7 +3480,7 @@ no_tracks_found:;
*/
track_lba= isoburn_get_attached_start_lba(drive);
if(track_lba >= 0) {
ret= isoburn_read_iso_head(drive, track_lba, &track_blocks, NULL, 0);
ret= isoburn_read_iso_head(drive, (int) track_lba, &track_blocks, NULL, 0);
if(ret > 0) {
blocks= media_blocks= track_lba + track_blocks;
}
@@ -3490,14 +3491,14 @@ no_tracks_found:;
if(media_blocks <= 0)
goto libburn_whole_disc;
xorriso->pacifier_total= blocks;
ret= Xorriso_check_interval(xorriso, *spotlist, job, start_lba, blocks,
read_chunk, start_lba, (4 * (xorriso->do_md5 & 1)));
ret= Xorriso_check_interval(xorriso, *spotlist, job, (int) start_lba, (int) blocks,
read_chunk, (int) start_lba, (4 * (xorriso->do_md5 & 1)));
if(ret <= 0)
goto ex;
} else if(mode == 2) {
libburn_whole_disc:;
/* single sweep over libburn medium capacity */
ret= burn_get_read_capacity(drive, &blocks, 0);
ret= burn_get_read_capacity_v2(drive, &blocks, 0);
if(ret <= 0) {
Xorriso_process_msg_queues(xorriso,0);
sprintf(xorriso->info_text, "No content detected on media");
@@ -3506,8 +3507,8 @@ libburn_whole_disc:;
}
blocks-= start_lba;
xorriso->pacifier_total= blocks;
ret= Xorriso_check_interval(xorriso, *spotlist, job, start_lba, blocks,
read_chunk, start_lba, (4 * (xorriso->do_md5 & 1)));
ret= Xorriso_check_interval(xorriso, *spotlist, job, (int) start_lba, (int) blocks,
read_chunk, (int) start_lba, (4 * (xorriso->do_md5 & 1)));
if(ret <= 0)
goto ex;
}
@@ -3531,7 +3532,7 @@ ex:;
end_lba= start_lba + blocks;
}
if(read_capacity > end_lba) {
hret= Spotlist_add_item(*spotlist, end_lba, read_capacity - end_lba,
hret= Spotlist_add_item(*spotlist, (off_t) end_lba, (off_t) (read_capacity - end_lba),
Xorriso_read_quality_untesteD, 0);
if(hret < ret)
ret= hret;
@@ -3539,10 +3540,11 @@ ex:;
}
if(ret > 0)
ret= Xorriso_update_in_sector_map(xorriso, *spotlist, read_chunk, job, 0);
ret= Xorriso_update_in_sector_map(xorriso, *spotlist, (off_t) read_chunk,
job, 0);
if(ret > 0) {
ret= Xorriso_spotlist_to_sectormap(xorriso, *spotlist, read_chunk,
ret= Xorriso_spotlist_to_sectormap(xorriso, *spotlist, (off_t) read_chunk,
&(job->sector_map), 2);
if(ret > 0 && job->sector_map_path[0]) {
ret= Sectorbitmap_to_file(job->sector_map, job->sector_map_path, toc_info,