From 969ee9d6f5702ab51a53bf66e2db201f6ea8630f Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Mon, 18 Mar 2024 09:44:24 +0100 Subject: [PATCH] Made struct CheckmediajoB ready for long block adresses --- xorriso/check_media.c | 13 +++++++------ xorriso/check_media.h | 6 +++--- xorriso/drive_mgt.c | 2 +- xorriso/opts_a_c.c | 2 +- xorriso/xorriso_timestamp.h | 2 +- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/xorriso/check_media.c b/xorriso/check_media.c index 94148297..c1d738e2 100644 --- a/xorriso/check_media.c +++ b/xorriso/check_media.c @@ -760,7 +760,7 @@ int Xorriso_check_media_setup_job(struct XorrisO *xorriso, strncmp(argv[i], "min_lba=", 8) == 0) { num= -1; sscanf(argv[i] + 8, "%lf", &num); - if(num > 0x7fffffff || num < 0) + if(num > 0x7fffffffffffffff || num < 0) num= -1; if(strncmp(argv[i], "max_lba=", 8) == 0) job->max_lba= num; @@ -777,7 +777,7 @@ int Xorriso_check_media_setup_job(struct XorrisO *xorriso, else if(argv[i][11] >= '1' && argv[i][11] <= '9') { num= -1; sscanf(argv[i] + 11, "%lf", &num); - if(num > 0x7fffffff || num < 0) + if(num > 0x7fffffffffffffff || num < 0) goto bad_value; job->patch_lba0_msc1= num; job->patch_lba0= (num >= 32) + (strstr(argv[i] + 11, ":force") != NULL); @@ -898,9 +898,9 @@ int Xorriso_check_media_list_job(struct XorrisO *xorriso, sprintf(report + strlen(report), " what=%s", job->mode == 1 ? "disc" : "tracks"); if(all || job->min_lba != dflt->min_lba) - sprintf(report + strlen(report), " min_lba=%d", job->min_lba); + sprintf(report + strlen(report), " min_lba=%.f", (double) job->min_lba); if(all || job->max_lba != dflt->max_lba) - sprintf(report + strlen(report), " max_lba=%d", job->max_lba); + sprintf(report + strlen(report), " max_lba=%.f", (double) job->max_lba); if(all || job->retry != dflt->retry) sprintf(report + strlen(report), " retry=%s", job->retry == 1 ? "on" : job->retry == -1 ? "off" : "default"); @@ -932,8 +932,9 @@ int Xorriso_check_media_list_job(struct XorrisO *xorriso, if(job->patch_lba0 == 0) sprintf(report + strlen(report), "off"); else if(job->patch_lba0_msc1 >= 0) - sprintf(report + strlen(report), "%d%s", - job->patch_lba0_msc1, job->patch_lba0 == 2 ? ":force" : ""); + sprintf(report + strlen(report), "%.f%s", + (double) job->patch_lba0_msc1, + job->patch_lba0 == 2 ? ":force" : ""); else sprintf(report + strlen(report), "%s", job->patch_lba0 == 2 ? "force" : "on"); diff --git a/xorriso/check_media.h b/xorriso/check_media.h index e251fbf9..7574d751 100644 --- a/xorriso/check_media.h +++ b/xorriso/check_media.h @@ -98,8 +98,8 @@ char *Spotlist__quality_name(int quality, char name[80], int bad_limit, struct CheckmediajoB { int use_dev; /* 0= use indev , 1= use outdev , 2= use sector map*/ - int min_lba; /* if >=0 : begin checking at this address */ - int max_lba; /* if >=0 : read up to this address, else use mode */ + off_t min_lba; /* if >=0 : begin checking at this address */ + off_t max_lba; /* if >=0 : read up to this address, else use mode */ int min_block_size; /* granularity desired by user */ @@ -123,7 +123,7 @@ struct CheckmediajoB { off_t data_to_limit; /* used with file copy */ int data_to_skip; /* number of bytes to skip on writing. < 2048 */ int patch_lba0; - int patch_lba0_msc1; + off_t patch_lba0_msc1; char sector_map_path[SfileadrL]; struct SectorbitmaP *sector_map; diff --git a/xorriso/drive_mgt.c b/xorriso/drive_mgt.c index 2894788e..0ab7bf5b 100644 --- a/xorriso/drive_mgt.c +++ b/xorriso/drive_mgt.c @@ -3314,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, (off_t) 0, (off_t) job->min_lba, + ret= Spotlist_add_item(*spotlist, (off_t) 0, job->min_lba, Xorriso_read_quality_untesteD, 0); if(ret <= 0) goto ex; diff --git a/xorriso/opts_a_c.c b/xorriso/opts_a_c.c index 5beb74f5..501390d4 100644 --- a/xorriso/opts_a_c.c +++ b/xorriso/opts_a_c.c @@ -1994,7 +1994,7 @@ int Xorriso_option_check_media(struct XorrisO *xorriso, if(ret <= 0) goto ex; if(ret == 1) { - ret= Xorriso_update_iso_lba0(xorriso, job->patch_lba0_msc1, 0, + ret= Xorriso_update_iso_lba0(xorriso, (int) job->patch_lba0_msc1, 0, head_buffer, job, (8 * (job->patch_lba0 == 1)) | 4 | (job->patch_lba0_msc1 < 0)); diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 7fb405cd..364ba389 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2024.03.17.205516" +#define Xorriso_timestamP "2024.03.18.084408"