From f1e00c3e4c96bdbf69428566ef22de995f40b67f Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Fri, 22 Mar 2024 17:19:00 +0100 Subject: [PATCH] Made Xorriso_burn_track() ready for long block adresses --- xorriso/write_run.c | 24 +++++++++++++----------- xorriso/xorriso_timestamp.h | 2 +- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/xorriso/write_run.c b/xorriso/write_run.c index 71df27bf..f77c6ab8 100644 --- a/xorriso/write_run.c +++ b/xorriso/write_run.c @@ -2275,8 +2275,8 @@ int Xorriso_retry_burn_track(struct XorrisO *xorriso, int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address, char *track_source, off_t tsize, int flag) { - int ret, fd, profile_number, is_cd= 0, dummy, nwa= -1; - int isosize= -1, do_isosize, is_bd= 0, signal_mode; + int ret, fd, profile_number, is_cd= 0, do_isosize, is_bd= 0, signal_mode; + off_t dummy, nwa= -1, isosize= -1; struct burn_drive_info *dinfo; struct burn_drive *drive; struct burn_write_opts *burn_options= NULL; @@ -2413,7 +2413,7 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address, ret= 0; goto ex; } /* read isosize from head_buffer, not from medium */ - ret= isoburn_read_iso_head(drive, 0, &isosize, head_buffer, (1<<13)); + ret= isoburn_read_iso_head_v2(drive, 0, &isosize, head_buffer, (1 << 13)); if(ret<=0) { Xorriso_process_msg_queues(xorriso,0); sprintf(xorriso->info_text, @@ -2421,9 +2421,10 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address, Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); ret= 0; goto ex; } - sprintf(xorriso->info_text, "Size of ISO 9660 image: %ds", isosize); + sprintf(xorriso->info_text, "Size of ISO 9660 image: %.fs", + (double) isosize); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0); - fixed_size= ((off_t) (isosize)) * (off_t) 2048; + fixed_size= isosize * (off_t) 2048; burn_track_set_size(track, fixed_size); } @@ -2433,7 +2434,7 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address, if(isoburn_needs_emulation(drive)) { if(flag&1) { - ret= isoburn_disc_track_lba_nwa(drive, burn_options, 0, &dummy, &nwa); + ret= isoburn_disc_track_lba_nwa_v2(drive, burn_options, 0, &dummy, &nwa); Xorriso_process_msg_queues(xorriso,0); if(ret<=0) { sprintf(xorriso->info_text, @@ -2446,7 +2447,8 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address, } else { nwa= 0; if (disc_state == BURN_DISC_APPENDABLE) { - ret= isoburn_disc_track_lba_nwa(drive, burn_options, 0, &dummy, &nwa); + ret= isoburn_disc_track_lba_nwa_v2(drive, burn_options, 0, &dummy, + &nwa); Xorriso_process_msg_queues(xorriso,0); if(ret<=0) { sprintf(xorriso->info_text, @@ -2456,14 +2458,14 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address, } } } - burn_write_opts_set_start_byte(burn_options,((off_t) nwa) * (off_t) 2048); + burn_write_opts_set_start_byte(burn_options, nwa * (off_t) 2048); } if(write_start_address>=0) { nwa= write_start_address / (off_t) 2048; - if(((off_t) nwa) * (off_t) 2048 < write_start_address ) + if(nwa * (off_t) 2048 < write_start_address ) nwa++; - burn_write_opts_set_start_byte(burn_options, ((off_t) nwa) * (off_t) 2048); + burn_write_opts_set_start_byte(burn_options, nwa * (off_t) 2048); } if(xorriso->do_tao) { @@ -2540,7 +2542,7 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address, } if(flag & 1) { - ret= Xorriso_update_iso_lba0(xorriso, nwa, isosize, head_buffer, NULL, + ret= Xorriso_update_iso_lba0(xorriso, (int) nwa, (int) isosize, head_buffer, NULL, flag & 2); if(ret <= 0) goto ex; diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 2516eaa9..ccc11f1f 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2024.03.22.133412" +#define Xorriso_timestamP "2024.03.22.161812"