Made Xorriso_burn_track() ready for long block adresses
This commit is contained in:
parent
ce3f23b75d
commit
f1e00c3e4c
@ -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;
|
||||
|
@ -1 +1 @@
|
||||
#define Xorriso_timestamP "2024.03.22.133412"
|
||||
#define Xorriso_timestamP "2024.03.22.161812"
|
||||
|
Loading…
Reference in New Issue
Block a user