Made Xorriso_obtain_indev_readsize() ready for long block adresses
This commit is contained in:
parent
5e03c659e3
commit
458b0cb3de
@ -3687,10 +3687,11 @@ int Xorriso_use_immed_bit(struct XorrisO *xorriso, int flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int Xorriso_obtain_indev_readsize(struct XorrisO *xorriso, uint32_t *blocks,
|
int Xorriso_obtain_indev_readsize(struct XorrisO *xorriso, off_t *blocks,
|
||||||
int flag)
|
int flag)
|
||||||
{
|
{
|
||||||
int ret, num_data;
|
int ret;
|
||||||
|
off_t num_data;
|
||||||
struct burn_drive_info *dinfo;
|
struct burn_drive_info *dinfo;
|
||||||
struct burn_drive *drive;
|
struct burn_drive *drive;
|
||||||
enum burn_disc_status s;
|
enum burn_disc_status s;
|
||||||
@ -3703,7 +3704,7 @@ int Xorriso_obtain_indev_readsize(struct XorrisO *xorriso, uint32_t *blocks,
|
|||||||
s= isoburn_disc_get_status(drive);
|
s= isoburn_disc_get_status(drive);
|
||||||
if(s == BURN_DISC_BLANK)
|
if(s == BURN_DISC_BLANK)
|
||||||
return(1);
|
return(1);
|
||||||
ret= burn_get_read_capacity(drive, &num_data, 0);
|
ret= burn_get_read_capacity_v2(drive, &num_data, 0);
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
return(0);
|
return(0);
|
||||||
*blocks= num_data;
|
*blocks= num_data;
|
||||||
|
@ -1801,7 +1801,8 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso,
|
|||||||
unsigned long int sa_options= 0, partno, id_tag, perms, start_cyl;
|
unsigned long int sa_options= 0, partno, id_tag, perms, start_cyl;
|
||||||
unsigned long int part_status, part_type, mbr_start_block, mbr_num_blocks;
|
unsigned long int part_status, part_type, mbr_start_block, mbr_num_blocks;
|
||||||
unsigned long int partition_offset= 0;
|
unsigned long int partition_offset= 0;
|
||||||
uint32_t high_block= 0, indev_blocks;
|
uint32_t high_block= 0;
|
||||||
|
off_t indev_blocks;
|
||||||
char name[24], *textpt, *contentpt, *buf= NULL, part_type_text[37];
|
char name[24], *textpt, *contentpt, *buf= NULL, part_type_text[37];
|
||||||
char **lines= NULL;
|
char **lines= NULL;
|
||||||
double num[8];
|
double num[8];
|
||||||
@ -2849,7 +2850,7 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso,
|
|||||||
et_imgs[idx].extract_size <= 0) {
|
et_imgs[idx].extract_size <= 0) {
|
||||||
ret= Xorriso_obtain_indev_readsize(xorriso, &indev_blocks, 0);
|
ret= Xorriso_obtain_indev_readsize(xorriso, &indev_blocks, 0);
|
||||||
if(ret > 0) {
|
if(ret > 0) {
|
||||||
if(indev_blocks > et_imgs[idx].lba &&
|
if(indev_blocks > (off_t) et_imgs[idx].lba &&
|
||||||
indev_blocks - et_imgs[idx].lba <= Xorriso_max_endless_uefi_sizE)
|
indev_blocks - et_imgs[idx].lba <= Xorriso_max_endless_uefi_sizE)
|
||||||
et_imgs[idx].extract_size= indev_blocks - et_imgs[idx].lba;
|
et_imgs[idx].extract_size= indev_blocks - et_imgs[idx].lba;
|
||||||
}
|
}
|
||||||
|
@ -2421,7 +2421,7 @@ int Xorriso_read_file_data(struct XorrisO *xorriso, IsoNode *node,
|
|||||||
int quality, bad_extract= 0;
|
int quality, bad_extract= 0;
|
||||||
off_t lba, count, blocks, spot;
|
off_t lba, count, blocks, spot;
|
||||||
int data_to_skip= 0;
|
int data_to_skip= 0;
|
||||||
uint32_t indev_blocks;
|
off_t indev_blocks;
|
||||||
off_t size= 0, file_base_bytes= 0, file_processed_bytes= 0, img_adr;
|
off_t size= 0, file_base_bytes= 0, file_processed_bytes= 0, img_adr;
|
||||||
off_t new_file_base_bytes, upto_file_bytes, start_byte= 0;
|
off_t new_file_base_bytes, upto_file_bytes, start_byte= 0;
|
||||||
off_t *section_sizes = NULL;
|
off_t *section_sizes = NULL;
|
||||||
@ -2438,7 +2438,7 @@ int Xorriso_read_file_data(struct XorrisO *xorriso, IsoNode *node,
|
|||||||
Xorriso_alloc_meM(section_sizes, off_t, 1);
|
Xorriso_alloc_meM(section_sizes, off_t, 1);
|
||||||
start_lbas[0]= 0;
|
start_lbas[0]= 0;
|
||||||
ret= Xorriso_obtain_indev_readsize(xorriso, &indev_blocks, 0);
|
ret= Xorriso_obtain_indev_readsize(xorriso, &indev_blocks, 0);
|
||||||
if(ret > 0)
|
if(ret > 0 && indev_blocks <= 0x7ffffffe)
|
||||||
end_lbas[0]= indev_blocks - 1;
|
end_lbas[0]= indev_blocks - 1;
|
||||||
else
|
else
|
||||||
end_lbas[0]= 0x7ffffffe;
|
end_lbas[0]= 0x7ffffffe;
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2024.03.20.215145"
|
#define Xorriso_timestamP "2024.03.21.084436"
|
||||||
|
@ -674,7 +674,7 @@ int Xorriso_make_guid(struct XorrisO *xorriso, char *line, int flag);
|
|||||||
|
|
||||||
int Xorriso_set_libisofs_now(struct XorrisO *xorriso, int flag);
|
int Xorriso_set_libisofs_now(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
int Xorriso_obtain_indev_readsize(struct XorrisO *xorriso, uint32_t *blocks,
|
int Xorriso_obtain_indev_readsize(struct XorrisO *xorriso, off_t *blocks,
|
||||||
int flag);
|
int flag);
|
||||||
|
|
||||||
int Xorriso_assess_written_features(struct XorrisO *xorriso, char *mode,
|
int Xorriso_assess_written_features(struct XorrisO *xorriso, char *mode,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user