Allowing 1 BIOS boot image and 1 EFI boot image: -boot_image grub efi_path=
This commit is contained in:
parent
8bf6e31379
commit
83e41ceabd
@ -4900,6 +4900,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
|||||||
m->boot_image_isohybrid= 0;
|
m->boot_image_isohybrid= 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
m->boot_image_efi_path[0]= 0;
|
||||||
m->system_area_disk_path[0]= 0;
|
m->system_area_disk_path[0]= 0;
|
||||||
m->system_area_options= 0;
|
m->system_area_options= 0;
|
||||||
m->patch_system_area= 0;
|
m->patch_system_area= 0;
|
||||||
@ -11248,7 +11249,7 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
|||||||
int *weight_list= NULL, weight_count= 0;
|
int *weight_list= NULL, weight_count= 0;
|
||||||
char sfe[5*SfileadrL], adr[SfileadrL+8], ra_text[80], pathspec[2*SfileadrL];
|
char sfe[5*SfileadrL], adr[SfileadrL+8], ra_text[80], pathspec[2*SfileadrL];
|
||||||
char *ept, *add_pt, eff_path[SfileadrL], indev[SfileadrL+8], msc[80], *cpt;
|
char *ept, *add_pt, eff_path[SfileadrL], indev[SfileadrL+8], msc[80], *cpt;
|
||||||
struct stat stbuf;
|
char *boot_path;
|
||||||
static char *lower_r_args[3]= {"/", "-exec", "mkisofs_r"};
|
static char *lower_r_args[3]= {"/", "-exec", "mkisofs_r"};
|
||||||
static char *sort_weight_args[4]= {"", "-exec", "sort_weight", ""};
|
static char *sort_weight_args[4]= {"", "-exec", "sort_weight", ""};
|
||||||
|
|
||||||
@ -11338,33 +11339,26 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
|||||||
if(i+1>=argc)
|
if(i+1>=argc)
|
||||||
goto not_enough_args;
|
goto not_enough_args;
|
||||||
i++;
|
i++;
|
||||||
xorriso->boot_image_bin_path[0]= 0;
|
/* >>> provisory: ts B00421
|
||||||
if(argv[i][0] != '/')
|
Only one BIOS boot image and one EFI boot image are possible.
|
||||||
strcat(xorriso->boot_image_bin_path, "/");
|
|
||||||
ret= Sfile_str(xorriso->boot_image_bin_path
|
|
||||||
+ strlen(xorriso->boot_image_bin_path), argv[i], 0);
|
|
||||||
if(ret <= 0)
|
|
||||||
goto ex;
|
|
||||||
option_b= 1;
|
|
||||||
xorriso->keep_boot_image= 0;
|
|
||||||
|
|
||||||
/* >>> provisory: ts B00419
|
|
||||||
Only one boot image with parameters determined now.
|
|
||||||
Later:
|
Later:
|
||||||
Several boot images shall be kept in a list. One is the Default.
|
Several boot images shall be kept in a list. One is the Default.
|
||||||
They can have type BIOS or EFI. If an EFI boot image is present,
|
They can have type BIOS or EFI.
|
||||||
then platform ID shall be 0xef.
|
|
||||||
The following parameters shall be set later according to the type
|
|
||||||
of the particular boot image list items.
|
|
||||||
*/
|
*/
|
||||||
if(strcmp(argv[i - 1], "--efi-boot") == 0) {
|
if(strcmp(argv[i - 1], "--efi-boot") == 0)
|
||||||
xorriso->boot_platform_id= 0xef;
|
boot_path= xorriso->boot_image_efi_path;
|
||||||
no_emul_boot= 1;
|
else {
|
||||||
xorriso->patch_isolinux_image= 0;
|
boot_path= xorriso->boot_image_bin_path;
|
||||||
/* -load-size is done in pass 2 */
|
|
||||||
was_other_option= 1;
|
|
||||||
} else
|
|
||||||
xorriso->boot_platform_id= 0x00;
|
xorriso->boot_platform_id= 0x00;
|
||||||
|
option_b= 1;
|
||||||
|
}
|
||||||
|
boot_path[0]= 0;
|
||||||
|
if(argv[i][0] != '/')
|
||||||
|
strcat(boot_path, "/");
|
||||||
|
ret= Sfile_str(boot_path + strlen(boot_path), argv[i], 0);
|
||||||
|
if(ret <= 0)
|
||||||
|
goto ex;
|
||||||
|
xorriso->keep_boot_image= 0;
|
||||||
|
|
||||||
} else if(strcmp(argv[i], "-c") == 0 ||
|
} else if(strcmp(argv[i], "-c") == 0 ||
|
||||||
strcmp(argv[i], "-eltorito-catalog") == 0) {
|
strcmp(argv[i], "-eltorito-catalog") == 0) {
|
||||||
@ -11750,21 +11744,6 @@ problem_handler_2:;
|
|||||||
continue;
|
continue;
|
||||||
goto ex;
|
goto ex;
|
||||||
}
|
}
|
||||||
if(xorriso->boot_image_bin_path[0] && xorriso->boot_platform_id == 0xef) {
|
|
||||||
/* >>> provisory: ts B00419
|
|
||||||
get size of xorriso->boot_image_bin_path, round up to 512
|
|
||||||
*/;
|
|
||||||
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi,
|
|
||||||
xorriso->boot_image_bin_path, sfe, 2 | 8);
|
|
||||||
if(ret<=0)
|
|
||||||
goto problem_handler_2;
|
|
||||||
ret= Xorriso_iso_lstat(xorriso, sfe, &stbuf, 2 | 4);
|
|
||||||
if(ret < 0)
|
|
||||||
goto problem_handler_2;
|
|
||||||
xorriso->boot_image_load_size= ((stbuf.st_size / (off_t) 512) +
|
|
||||||
!!(stbuf.st_size % (off_t) 512)) * 512;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(do_print_size) {
|
if(do_print_size) {
|
||||||
ret= Xorriso_option_print_size(xorriso, 1);
|
ret= Xorriso_option_print_size(xorriso, 1);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
@ -13920,6 +13899,8 @@ int Xorriso_option_boot_image(struct XorrisO *xorriso, char *form,
|
|||||||
} else
|
} else
|
||||||
was_ok= 0;
|
was_ok= 0;
|
||||||
|
|
||||||
|
} else if(strcmp(treatpt, "bin_path=") == 0) {
|
||||||
|
xorriso->boot_image_bin_path[0] = 0;
|
||||||
} else if(strncmp(treatpt, "bin_path=", 9) == 0) {
|
} else if(strncmp(treatpt, "bin_path=", 9) == 0) {
|
||||||
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, treatpt + 9,
|
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, treatpt + 9,
|
||||||
xorriso->boot_image_bin_path, 2);
|
xorriso->boot_image_bin_path, 2);
|
||||||
@ -13934,6 +13915,15 @@ int Xorriso_option_boot_image(struct XorrisO *xorriso, char *form,
|
|||||||
} else
|
} else
|
||||||
strcpy(xorriso->boot_image_bin_form, "any");
|
strcpy(xorriso->boot_image_bin_form, "any");
|
||||||
|
|
||||||
|
} else if(strcmp(treatpt, "efi_path=") == 0) {
|
||||||
|
xorriso->boot_image_efi_path[0] = 0;
|
||||||
|
} else if(strncmp(treatpt, "efi_path=", 9) == 0) {
|
||||||
|
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, treatpt + 9,
|
||||||
|
xorriso->boot_image_efi_path, 2);
|
||||||
|
if(ret <= 0)
|
||||||
|
return(ret);
|
||||||
|
xorriso->keep_boot_image= 0;
|
||||||
|
|
||||||
} else if(strncmp(treatpt, "boot_info_table=", 16)==0) {
|
} else if(strncmp(treatpt, "boot_info_table=", 16)==0) {
|
||||||
if(strcmp(treatpt + 16, "off") == 0)
|
if(strcmp(treatpt + 16, "off") == 0)
|
||||||
xorriso->patch_isolinux_image= 0;
|
xorriso->patch_isolinux_image= 0;
|
||||||
@ -13942,6 +13932,8 @@ int Xorriso_option_boot_image(struct XorrisO *xorriso, char *form,
|
|||||||
else
|
else
|
||||||
was_ok= 0;
|
was_ok= 0;
|
||||||
|
|
||||||
|
} else if(strcmp(treatpt, "cat_path=") == 0) {
|
||||||
|
xorriso->boot_image_cat_path[0] = 0;
|
||||||
} else if(strncmp(treatpt, "cat_path=", 9) == 0) {
|
} else if(strncmp(treatpt, "cat_path=", 9) == 0) {
|
||||||
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, treatpt + 9,
|
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, treatpt + 9,
|
||||||
xorriso->boot_image_cat_path, 2);
|
xorriso->boot_image_cat_path, 2);
|
||||||
|
@ -270,6 +270,7 @@ struct XorrisO { /* the global context of xorriso */
|
|||||||
char boot_image_cat_path[SfileadrL];
|
char boot_image_cat_path[SfileadrL];
|
||||||
off_t boot_image_load_size;
|
off_t boot_image_load_size;
|
||||||
int boot_image_isohybrid; /* 0=off , 1=auto , 2=on , 3=force */
|
int boot_image_isohybrid; /* 0=off , 1=auto , 2=on , 3=force */
|
||||||
|
char boot_image_efi_path[SfileadrL];
|
||||||
char system_area_disk_path[SfileadrL];
|
char system_area_disk_path[SfileadrL];
|
||||||
int system_area_options; /* bit0= "GRUB protective msdos label"
|
int system_area_options; /* bit0= "GRUB protective msdos label"
|
||||||
(a simple partition table)
|
(a simple partition table)
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2010.04.20.142540"
|
#define Xorriso_timestamP "2010.04.22.143944"
|
||||||
|
@ -1826,10 +1826,13 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|||||||
enum burn_disc_status s;
|
enum burn_disc_status s;
|
||||||
IsoImage *image= NULL;
|
IsoImage *image= NULL;
|
||||||
IsoNode *node, *root_node;
|
IsoNode *node, *root_node;
|
||||||
ElToritoBootImage *bootimg;
|
ElToritoBootImage *bootimg, *efi_bootimg;
|
||||||
enum eltorito_boot_media_type emul_type= ELTORITO_NO_EMUL;
|
enum eltorito_boot_media_type emul_type= ELTORITO_NO_EMUL;
|
||||||
int profile_number;
|
int profile_number;
|
||||||
char profile_name[80];
|
char profile_name[80], *boot_image_bin_path;
|
||||||
|
int boot_image_emul, boot_platform_id;
|
||||||
|
off_t boot_image_load_size;
|
||||||
|
struct stat stbuf;
|
||||||
|
|
||||||
ret= Xorriso_finish_hl_update(xorriso, 0);
|
ret= Xorriso_finish_hl_update(xorriso, 0);
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
@ -1910,21 +1913,41 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|||||||
goto ex;
|
goto ex;
|
||||||
|
|
||||||
/* Activate, adjust or discard boot image */
|
/* Activate, adjust or discard boot image */
|
||||||
|
boot_image_bin_path= xorriso->boot_image_bin_path;
|
||||||
|
boot_image_emul= xorriso->boot_image_emul;
|
||||||
|
boot_platform_id= xorriso->boot_platform_id;
|
||||||
|
boot_image_load_size= xorriso->boot_image_load_size;
|
||||||
|
|
||||||
|
/* >>> This is kindof a quick hack.
|
||||||
|
Needed would be a list of boot images with own parameters each.
|
||||||
|
*/
|
||||||
|
if(xorriso->boot_image_efi_path[0]) {
|
||||||
|
if(xorriso->boot_image_bin_path[0] == 0) {
|
||||||
|
/* Let EFI boot image be the default image */
|
||||||
|
boot_image_bin_path= xorriso->boot_image_efi_path;
|
||||||
|
boot_image_emul= ELTORITO_NO_EMUL;
|
||||||
|
boot_platform_id= 0xef;
|
||||||
|
ret= Xorriso_iso_lstat(xorriso, xorriso->boot_image_efi_path,
|
||||||
|
&stbuf, 2 | 4);
|
||||||
|
if(ret <= 0)
|
||||||
|
goto ex;
|
||||||
|
boot_image_load_size= ((stbuf.st_size / (off_t) 512) +
|
||||||
|
!!(stbuf.st_size % (off_t) 512)) * 512;
|
||||||
|
}
|
||||||
|
}
|
||||||
/* >>> ??? move down to libisoburn ? */
|
/* >>> ??? move down to libisoburn ? */
|
||||||
if(image!=NULL && !(flag&1)) {
|
if(image!=NULL && !(flag&1)) {
|
||||||
ret= iso_image_get_boot_image(image, &bootimg, NULL, NULL);
|
ret= iso_image_get_boot_image(image, &bootimg, NULL, NULL);
|
||||||
|
if(boot_image_bin_path[0]) {
|
||||||
/* >>> || xorriso->system_area_disk_path[0] */
|
|
||||||
if(xorriso->boot_image_bin_path[0]) {
|
|
||||||
/* discard old boot image, set new one */
|
/* discard old boot image, set new one */
|
||||||
if(ret == 1)
|
if(ret == 1)
|
||||||
iso_image_remove_boot_image(image);
|
iso_image_remove_boot_image(image);
|
||||||
if(xorriso->boot_image_emul == 1)
|
if(boot_image_emul == 1)
|
||||||
emul_type= ELTORITO_HARD_DISC_EMUL;
|
emul_type= ELTORITO_HARD_DISC_EMUL;
|
||||||
else if(xorriso->boot_image_emul == 2)
|
else if(boot_image_emul == 2)
|
||||||
emul_type= ELTORITO_FLOPPY_EMUL;
|
emul_type= ELTORITO_FLOPPY_EMUL;
|
||||||
if(xorriso->boot_image_cat_path[0] == 0) {
|
if(xorriso->boot_image_cat_path[0] == 0) {
|
||||||
strcpy(xorriso->boot_image_cat_path, xorriso->boot_image_bin_path);
|
strcpy(xorriso->boot_image_cat_path, boot_image_bin_path);
|
||||||
cpt= strrchr(xorriso->boot_image_cat_path, '/');
|
cpt= strrchr(xorriso->boot_image_cat_path, '/');
|
||||||
if(cpt == NULL)
|
if(cpt == NULL)
|
||||||
cpt= xorriso->boot_image_cat_path;
|
cpt= xorriso->boot_image_cat_path;
|
||||||
@ -1933,18 +1956,18 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|||||||
strcpy(cpt, "boot.cat");
|
strcpy(cpt, "boot.cat");
|
||||||
}
|
}
|
||||||
sprintf(xorriso->info_text, "Activating boot image %s",
|
sprintf(xorriso->info_text, "Activating boot image %s",
|
||||||
Text_shellsafe(xorriso->boot_image_bin_path, sfe, 0));
|
Text_shellsafe(boot_image_bin_path, sfe, 0));
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
sprintf(xorriso->info_text, "Creating El Torito boot catalog file %s",
|
sprintf(xorriso->info_text, "Creating El Torito boot catalog file %s",
|
||||||
Text_shellsafe(xorriso->boot_image_cat_path, sfe, 0));
|
Text_shellsafe(xorriso->boot_image_cat_path, sfe, 0));
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
|
|
||||||
ret= Xorriso_node_from_path(xorriso, image, xorriso->boot_image_bin_path,
|
ret= Xorriso_node_from_path(xorriso, image, boot_image_bin_path,
|
||||||
&node, 1);
|
&node, 1);
|
||||||
if(ret <= 0) {
|
if(ret <= 0) {
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"Cannot find in ISO image: -boot_image ... bin_path=%s",
|
"Cannot find in ISO image: -boot_image ... bin_path=%s",
|
||||||
Text_shellsafe(xorriso->boot_image_bin_path, sfe, 0));
|
Text_shellsafe(boot_image_bin_path, sfe, 0));
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||||
{ret= 0; goto ex;}
|
{ret= 0; goto ex;}
|
||||||
}
|
}
|
||||||
@ -1969,7 +1992,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ret= iso_image_set_boot_image(image, xorriso->boot_image_bin_path,
|
ret= iso_image_set_boot_image(image, boot_image_bin_path,
|
||||||
emul_type, xorriso->boot_image_cat_path,
|
emul_type, xorriso->boot_image_cat_path,
|
||||||
&bootimg);
|
&bootimg);
|
||||||
if(ret < 0) {
|
if(ret < 0) {
|
||||||
@ -1982,13 +2005,35 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||||
{ret= 0; goto ex;}
|
{ret= 0; goto ex;}
|
||||||
}
|
}
|
||||||
el_torito_set_boot_platform_id(bootimg,
|
el_torito_set_boot_platform_id(bootimg, (uint8_t) boot_platform_id);
|
||||||
(uint8_t) xorriso->boot_platform_id);
|
|
||||||
iso_image_set_boot_catalog_weight(image, 1000000000);
|
iso_image_set_boot_catalog_weight(image, 1000000000);
|
||||||
el_torito_set_load_size(bootimg, xorriso->boot_image_load_size / 512);
|
el_torito_set_load_size(bootimg, boot_image_load_size / 512);
|
||||||
ret= Xorriso_set_isolinux_options(xorriso, image, 0);
|
ret= Xorriso_set_isolinux_options(xorriso, image, 0);
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
goto ex;
|
goto ex;
|
||||||
|
if(boot_image_bin_path == xorriso->boot_image_bin_path &&
|
||||||
|
xorriso->boot_image_efi_path[0]) {
|
||||||
|
/* Add EFI image */
|
||||||
|
sprintf(xorriso->info_text, "Activating additional EFI boot image %s",
|
||||||
|
Text_shellsafe(xorriso->boot_image_efi_path, sfe, 0));
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
|
ret= iso_image_add_boot_image(image, xorriso->boot_image_efi_path,
|
||||||
|
ELTORITO_NO_EMUL, 0, &efi_bootimg);
|
||||||
|
if(ret < 0) {
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
|
Xorriso_report_iso_error(xorriso, "", ret,
|
||||||
|
"Error when adding EFI boot image", 0, "FAILURE", 1);
|
||||||
|
goto ex;
|
||||||
|
}
|
||||||
|
el_torito_set_boot_platform_id(efi_bootimg, (uint8_t) 0xef);
|
||||||
|
ret= Xorriso_iso_lstat(xorriso, xorriso->boot_image_efi_path,
|
||||||
|
&stbuf, 2 | 4);
|
||||||
|
if(ret != 0)
|
||||||
|
goto ex;
|
||||||
|
boot_image_load_size= ((stbuf.st_size / (off_t) 512) +
|
||||||
|
!!(stbuf.st_size % (off_t) 512));
|
||||||
|
el_torito_set_load_size(efi_bootimg, boot_image_load_size);
|
||||||
|
}
|
||||||
} else if(xorriso->patch_isolinux_image) {
|
} else if(xorriso->patch_isolinux_image) {
|
||||||
if(ret==1) {
|
if(ret==1) {
|
||||||
relax|= isoburn_igopt_allow_full_ascii;
|
relax|= isoburn_igopt_allow_full_ascii;
|
||||||
@ -5311,7 +5356,7 @@ int Xorriso_toc_line(struct XorrisO *xorriso, int flag)
|
|||||||
*/
|
*/
|
||||||
int Xorriso_show_boot_info(struct XorrisO *xorriso, int flag)
|
int Xorriso_show_boot_info(struct XorrisO *xorriso, int flag)
|
||||||
{
|
{
|
||||||
int ret, bin_path_valid= 0,has_isolinux_mbr= 0, i;
|
int ret, bin_path_valid= 0,has_isolinux_mbr= 0, i, num_boots;
|
||||||
unsigned int mbr_lba= 0;
|
unsigned int mbr_lba= 0;
|
||||||
off_t lb0_count;
|
off_t lb0_count;
|
||||||
char *respt, sfe[5*SfileadrL], path[SfileadrL];
|
char *respt, sfe[5*SfileadrL], path[SfileadrL];
|
||||||
@ -5319,8 +5364,8 @@ int Xorriso_show_boot_info(struct XorrisO *xorriso, int flag)
|
|||||||
struct burn_drive_info *dinfo;
|
struct burn_drive_info *dinfo;
|
||||||
struct burn_drive *drive;
|
struct burn_drive *drive;
|
||||||
IsoImage *image= NULL;
|
IsoImage *image= NULL;
|
||||||
ElToritoBootImage *bootimg;
|
ElToritoBootImage *bootimg, **boots = NULL;
|
||||||
IsoFile *bootimg_node;
|
IsoFile *bootimg_node, **bootnodes = NULL;
|
||||||
IsoBoot *bootcat_node;
|
IsoBoot *bootcat_node;
|
||||||
|
|
||||||
respt= xorriso->result_line;
|
respt= xorriso->result_line;
|
||||||
@ -5336,14 +5381,11 @@ no_boot:;
|
|||||||
sprintf(respt, "Boot record : none\n");
|
sprintf(respt, "Boot record : none\n");
|
||||||
Xorriso_toc_line(xorriso, flag & 8);
|
Xorriso_toc_line(xorriso, flag & 8);
|
||||||
}
|
}
|
||||||
return(ret);
|
goto ex;
|
||||||
}
|
}
|
||||||
/* Important: no return before iso_image_unref(image); */
|
|
||||||
|
|
||||||
/* Using the nodes with extreme care . They might be deleted meanwhile. */
|
/* Using the nodes with extreme care . They might be deleted meanwhile. */
|
||||||
ret= iso_image_get_boot_image(image, &bootimg, &bootimg_node, &bootcat_node);
|
ret= iso_image_get_boot_image(image, &bootimg, &bootimg_node, &bootcat_node);
|
||||||
iso_image_unref(image); /* release obtained reference */
|
|
||||||
image= NULL;
|
|
||||||
if(ret != 1)
|
if(ret != 1)
|
||||||
goto no_boot;
|
goto no_boot;
|
||||||
ret= Xorriso_path_from_lba(xorriso, NULL, xorriso->loaded_boot_bin_lba,
|
ret= Xorriso_path_from_lba(xorriso, NULL, xorriso->loaded_boot_bin_lba,
|
||||||
@ -5388,7 +5430,7 @@ no_boot:;
|
|||||||
strcat(respt, "\n");
|
strcat(respt, "\n");
|
||||||
Xorriso_toc_line(xorriso, flag & 8);
|
Xorriso_toc_line(xorriso, flag & 8);
|
||||||
if(flag & 2)
|
if(flag & 2)
|
||||||
return(1);
|
{ret= 1; goto ex;}
|
||||||
if(bin_path_valid)
|
if(bin_path_valid)
|
||||||
sprintf(respt, "Boot bin_path: %s\n", Text_shellsafe(path, sfe, 0));
|
sprintf(respt, "Boot bin_path: %s\n", Text_shellsafe(path, sfe, 0));
|
||||||
else if(xorriso->loaded_boot_bin_lba <= 0)
|
else if(xorriso->loaded_boot_bin_lba <= 0)
|
||||||
@ -5397,13 +5439,37 @@ no_boot:;
|
|||||||
sprintf(respt, "Boot bin_path: -not-found-any-more-by-lba=%d\n",
|
sprintf(respt, "Boot bin_path: -not-found-any-more-by-lba=%d\n",
|
||||||
xorriso->loaded_boot_bin_lba);
|
xorriso->loaded_boot_bin_lba);
|
||||||
Xorriso_toc_line(xorriso, flag & 8);
|
Xorriso_toc_line(xorriso, flag & 8);
|
||||||
|
|
||||||
|
ret= iso_image_get_all_boot_imgs(image, &num_boots, &boots, &bootnodes, 0);
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
|
if(ret == 1 && num_boots > 1) {
|
||||||
|
for(i= 1; i < num_boots; i++) {
|
||||||
|
ret= el_torito_get_boot_platform_id(boots[i]);
|
||||||
|
if(ret == 0xef) {
|
||||||
|
ret= Xorriso_path_from_node(xorriso, (IsoNode *) bootnodes[i], path, 0);
|
||||||
|
if(ret > 0) {
|
||||||
|
sprintf(respt, "Boot efi_path: %s\n", Text_shellsafe(path, sfe, 0));
|
||||||
|
Xorriso_toc_line(xorriso, flag & 8);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if(xorriso->loaded_boot_cat_path[0])
|
if(xorriso->loaded_boot_cat_path[0])
|
||||||
sprintf(respt, "Boot cat_path: %s\n",
|
sprintf(respt, "Boot cat_path: %s\n",
|
||||||
Text_shellsafe(xorriso->loaded_boot_cat_path, sfe, 0));
|
Text_shellsafe(xorriso->loaded_boot_cat_path, sfe, 0));
|
||||||
else
|
else
|
||||||
sprintf(respt, "Boot cat_path: -not-found-at-load-time-\n");
|
sprintf(respt, "Boot cat_path: -not-found-at-load-time-\n");
|
||||||
Xorriso_toc_line(xorriso, flag & 8);
|
Xorriso_toc_line(xorriso, flag & 8);
|
||||||
return(1);
|
ret= 1;
|
||||||
|
ex:;
|
||||||
|
if(boots != NULL)
|
||||||
|
free(boots);
|
||||||
|
if(bootnodes != NULL);
|
||||||
|
free(bootnodes);
|
||||||
|
if(image != NULL)
|
||||||
|
iso_image_unref(image); /* release obtained reference */
|
||||||
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user