Made struct XorrisO ready for long block adresses

This commit is contained in:
Thomas Schmitt 2024-03-24 09:32:01 +01:00
parent 5de4a8dd45
commit c74f175972
5 changed files with 27 additions and 31 deletions

View File

@ -125,7 +125,6 @@ int Xorriso_create_empty_iso(struct XorrisO *xorriso, int flag)
int Xorriso_record_boot_info(struct XorrisO *xorriso, int flag)
{
int ret;
off_t start_lba;
struct burn_drive_info *dinfo;
struct burn_drive *drive;
IsoImage *image;
@ -147,13 +146,10 @@ int Xorriso_record_boot_info(struct XorrisO *xorriso, int flag)
iso_image_unref(image); /* release obtained reference */
if(ret != 1)
return(0);
if(bootimg_node != NULL) {
Xorriso__file_start_lba((IsoNode *) bootimg_node, &start_lba, 0);
if(start_lba <= (off_t) 0x7fffffff)
xorriso->loaded_boot_bin_lba= start_lba;
else
xorriso->loaded_boot_bin_lba= 0;
}
if(bootimg_node != NULL)
Xorriso__file_start_lba((IsoNode *) bootimg_node,
&(xorriso->loaded_boot_bin_lba), 0);
if(bootcat_node != NULL)
Xorriso_path_from_lba(xorriso, (IsoNode *) bootcat_node, (off_t) 0,
xorriso->loaded_boot_cat_path, 0);
@ -938,8 +934,8 @@ no_boot:;
} else if(xorriso->loaded_boot_bin_lba <= 0) {
sprintf(respt, "Boot image : -not-found-at-load-time-");
} else {
sprintf(respt, "Boot image : -not-found-any-more-by-lba=%d",
xorriso->loaded_boot_bin_lba);
sprintf(respt, "Boot image : -not-found-any-more-by-lba=%.f",
(double) xorriso->loaded_boot_bin_lba);
}
Xorriso__append_boot_params(respt, bootimg, 0);
strcat(respt, "\n");

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2021 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2024 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -2666,9 +2666,9 @@ int Xorriso_write_session_log(struct XorrisO *xorriso, int flag)
*(wpt++)= *rpt;
}
*wpt= 0;
fprintf(fp, "%s %d %d %s\n",
Ftimetxt(time(0), timetext, 2), xorriso->session_lba,
xorriso->session_blocks, sfe);
fprintf(fp, "%s %.f %.f %s\n",
Ftimetxt(time(0), timetext, 2), (double) xorriso->session_lba,
(double) xorriso->session_blocks, sfe);
fclose(fp);
ret= 1;
ex:;
@ -3706,7 +3706,7 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->grow_blindly_msc2<0);
sprintf(sfe, "%d", xorriso->grow_blindly_msc2);
sprintf(sfe, "%.f", (double) xorriso->grow_blindly_msc2);
sprintf(line,"-grow_blindly %s\n",
xorriso->grow_blindly_msc2 < 0 ? "off" : sfe);
if(!(is_default && no_defaults))

View File

@ -1450,7 +1450,7 @@ off_t Xorriso_write_session(struct XorrisO *xorriso, int flag)
Xorriso_set_abort_severity(xorriso, 1);
if (xorriso->grow_blindly_msc2 >= 0 &&
xorriso->out_drive_handle != xorriso->in_drive_handle) {
ret= isoburn_prepare_blind_grow(source_drive, &disc, sopts, drive,
ret= isoburn_prepare_blind_grow_v2(source_drive, &disc, sopts, drive,
xorriso->grow_blindly_msc2);
if(ret>0) {
/* Allow the consumer of output to access the input drive */
@ -1475,7 +1475,7 @@ off_t Xorriso_write_session(struct XorrisO *xorriso, int flag)
ret= Xorriso_make_write_options(xorriso, drive, &burn_options, 0);
if(ret<=0)
goto cancel_iso;
isoburn_igopt_get_effective_lba(sopts, &(xorriso->session_lba));
isoburn_igopt_get_effective_lba_v2(sopts, &(xorriso->session_lba));
if(xorriso->do_stream_recording == 2) {
ret= isoburn_igopt_get_data_start_v2(sopts, &data_lba);
if(ret > 0 && data_lba >= 16 && data_lba < (int) 0x7fffffff)
@ -1547,11 +1547,11 @@ off_t Xorriso_write_session(struct XorrisO *xorriso, int flag)
tracks= burn_session_get_tracks(sessions[0], &num_tracks);
if(tracks!=NULL && num_tracks>0) {
burn_track_get_counters(tracks[0],&readcounter,&writecounter);
xorriso->session_blocks= (int) (writecounter/ (off_t) 2048);
xorriso->session_blocks= writecounter / 2048.0;
sprintf(xorriso->info_text,
"ISO image produced: %d sectors\nWritten to medium : %d sectors at LBA %d\n",
(int) (readcounter/ (off_t) 2048),
xorriso->session_blocks, xorriso->session_lba);
"ISO image produced: %.f sectors\nWritten to medium : %.f sectors at LBA %.f\n",
((double) readcounter) / 2048.0,
(double) xorriso->session_blocks, (double) xorriso->session_lba);
Xorriso_info(xorriso, 0);
}
}

View File

@ -2,7 +2,7 @@
/* Command line oriented batch and dialog tool which creates, loads,
manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2023 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2024 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -270,8 +270,8 @@ struct XorrisO { /* the global context of xorriso */
char application_use[SfileadrL];
char session_logfile[SfileadrL];
int session_lba;
int session_blocks;
off_t session_lba;
off_t session_blocks;
/* >>> put libburn/isoburn aspects here */
@ -380,7 +380,7 @@ struct XorrisO { /* the global context of xorriso */
char outdev_off_adr[SfileadrL]; /* Result of burn_drive_convert_fs_adr(outdev)
when outdev gets acquired. */
int grow_blindly_msc2; /* if >= 0 this causes growing from drive to drive.
off_t grow_blindly_msc2; /* if >= 0 this causes growing from drive to drive.
The value is used as block address offset for
image generation. Like in: mkisofs -C msc1,msc2
*/
@ -622,7 +622,7 @@ struct XorrisO { /* the global context of xorriso */
*/
/* LBA of boot image after image loading */
int loaded_boot_bin_lba;
off_t loaded_boot_bin_lba;
/* Path of the catalog node after image loading */
char loaded_boot_cat_path[SfileadrL];

View File

@ -1 +1 @@
#define Xorriso_timestamP "2024.03.23.212004"
#define Xorriso_timestamP "2024.03.24.081207"