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

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. /* 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. Provided under GPL version 2 or later.
@ -2666,9 +2666,9 @@ int Xorriso_write_session_log(struct XorrisO *xorriso, int flag)
*(wpt++)= *rpt; *(wpt++)= *rpt;
} }
*wpt= 0; *wpt= 0;
fprintf(fp, "%s %d %d %s\n", fprintf(fp, "%s %.f %.f %s\n",
Ftimetxt(time(0), timetext, 2), xorriso->session_lba, Ftimetxt(time(0), timetext, 2), (double) xorriso->session_lba,
xorriso->session_blocks, sfe); (double) xorriso->session_blocks, sfe);
fclose(fp); fclose(fp);
ret= 1; ret= 1;
ex:; 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); Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->grow_blindly_msc2<0); 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", sprintf(line,"-grow_blindly %s\n",
xorriso->grow_blindly_msc2 < 0 ? "off" : sfe); xorriso->grow_blindly_msc2 < 0 ? "off" : sfe);
if(!(is_default && no_defaults)) 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); Xorriso_set_abort_severity(xorriso, 1);
if (xorriso->grow_blindly_msc2 >= 0 && if (xorriso->grow_blindly_msc2 >= 0 &&
xorriso->out_drive_handle != xorriso->in_drive_handle) { 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); xorriso->grow_blindly_msc2);
if(ret>0) { if(ret>0) {
/* Allow the consumer of output to access the input drive */ /* 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); ret= Xorriso_make_write_options(xorriso, drive, &burn_options, 0);
if(ret<=0) if(ret<=0)
goto cancel_iso; 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) { if(xorriso->do_stream_recording == 2) {
ret= isoburn_igopt_get_data_start_v2(sopts, &data_lba); ret= isoburn_igopt_get_data_start_v2(sopts, &data_lba);
if(ret > 0 && data_lba >= 16 && data_lba < (int) 0x7fffffff) 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); tracks= burn_session_get_tracks(sessions[0], &num_tracks);
if(tracks!=NULL && num_tracks>0) { if(tracks!=NULL && num_tracks>0) {
burn_track_get_counters(tracks[0],&readcounter,&writecounter); 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, sprintf(xorriso->info_text,
"ISO image produced: %d sectors\nWritten to medium : %d sectors at LBA %d\n", "ISO image produced: %.f sectors\nWritten to medium : %.f sectors at LBA %.f\n",
(int) (readcounter/ (off_t) 2048), ((double) readcounter) / 2048.0,
xorriso->session_blocks, xorriso->session_lba); (double) xorriso->session_blocks, (double) xorriso->session_lba);
Xorriso_info(xorriso, 0); Xorriso_info(xorriso, 0);
} }
} }

View File

@ -2,7 +2,7 @@
/* Command line oriented batch and dialog tool which creates, loads, /* Command line oriented batch and dialog tool which creates, loads,
manipulates and burns ISO 9660 filesystem images. 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. Provided under GPL version 2 or later.
@ -270,8 +270,8 @@ struct XorrisO { /* the global context of xorriso */
char application_use[SfileadrL]; char application_use[SfileadrL];
char session_logfile[SfileadrL]; char session_logfile[SfileadrL];
int session_lba; off_t session_lba;
int session_blocks; off_t session_blocks;
/* >>> put libburn/isoburn aspects here */ /* >>> 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) char outdev_off_adr[SfileadrL]; /* Result of burn_drive_convert_fs_adr(outdev)
when outdev gets acquired. */ 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 The value is used as block address offset for
image generation. Like in: mkisofs -C msc1,msc2 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 */ /* 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 */ /* Path of the catalog node after image loading */
char loaded_boot_cat_path[SfileadrL]; char loaded_boot_cat_path[SfileadrL];

View File

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