New -boot_image bootspec cat_hidden=

This commit is contained in:
Thomas Schmitt 2010-06-19 15:21:36 +00:00
parent d1c2ec7a5b
commit cf8f6cb888
9 changed files with 88 additions and 44 deletions

View File

@ -181,6 +181,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->stdio_sync= 0; m->stdio_sync= 0;
m->keep_boot_image= 0; m->keep_boot_image= 0;
m->boot_image_cat_path[0]= 0; m->boot_image_cat_path[0]= 0;
m->boot_image_cat_hidden= 0;
m->boot_count= 0; m->boot_count= 0;
m->boot_platform_id= 0x00; /* El Torito Boot Catalog Platform ID: 0 = 80x86 */ m->boot_platform_id= 0x00; /* El Torito Boot Catalog Platform ID: 0 = 80x86 */
m->patch_isolinux_image= 0; m->patch_isolinux_image= 0;

View File

@ -458,7 +458,7 @@ int Xorriso_boot_image_status(struct XorrisO *xorriso, char *filter, FILE *fp,
{ {
int ret, i, num_boots, hflag; int ret, i, num_boots, hflag;
int bin_path_in_use= 0, is_default, no_defaults; int bin_path_in_use= 0, is_default, no_defaults;
char sfe[5*SfileadrL], path[SfileadrL], *form= "any", *line; char sfe[5*SfileadrL], path[SfileadrL], *form= "any", *line, *hpt;
struct burn_drive_info *dinfo; struct burn_drive_info *dinfo;
struct burn_drive *drive; struct burn_drive *drive;
IsoImage *image= NULL; IsoImage *image= NULL;
@ -506,6 +506,19 @@ int Xorriso_boot_image_status(struct XorrisO *xorriso, char *filter, FILE *fp,
if(!(is_default && no_defaults)) if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2); Xorriso_status_result(xorriso,filter,fp,flag&2);
} }
if(bin_path_in_use) {
is_default= !xorriso->boot_image_cat_hidden;
hpt= "on";
if(xorriso->boot_image_cat_hidden == 0)
hpt= "off";
else if(xorriso->boot_image_cat_hidden == 1)
hpt= "iso_rr";
else if(xorriso->boot_image_cat_hidden == 2)
hpt= "joliet";
sprintf(line, "-boot_image %s cat_hidden=%s\n", form, hpt);
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
}
if(xorriso->boot_count > 0) { if(xorriso->boot_count > 0) {

View File

@ -624,6 +624,18 @@ treatment_patch:;
if(ret <= 0) if(ret <= 0)
return(ret); return(ret);
} else if(strncmp(treatpt, "cat_hidden=", 11) == 0) {
if(strcmp(treatpt + 11, "on") == 0)
xorriso->boot_image_cat_hidden= 1 | 2;
else if(strcmp(treatpt + 11, "iso_rr") == 0)
xorriso->boot_image_cat_hidden= 1;
else if(strcmp(treatpt + 11, "joliet") == 0)
xorriso->boot_image_cat_hidden= 2;
else if(strcmp(treatpt + 11, "off") == 0)
xorriso->boot_image_cat_hidden= 0;
else
was_ok= 0;
} else if(strncmp(treatpt, "dir=", 4) == 0) { } else if(strncmp(treatpt, "dir=", 4) == 0) {
if(strcmp(formpt, "isolinux")==0) { if(strcmp(formpt, "isolinux")==0) {
/* ISOLINUX */ /* ISOLINUX */

View File

@ -331,7 +331,7 @@ int Xorriso_attach_boot_image(struct XorrisO *xorriso, int flag)
ElToritoBootImage *bootimg; ElToritoBootImage *bootimg;
enum eltorito_boot_media_type emul_type= ELTORITO_NO_EMUL; enum eltorito_boot_media_type emul_type= ELTORITO_NO_EMUL;
char *bin_path; char *bin_path;
int emul, platform_id; int emul, platform_id, hide_attr;
off_t load_size; off_t load_size;
struct stat stbuf; struct stat stbuf;
int hflag= 0; int hflag= 0;
@ -437,8 +437,17 @@ int Xorriso_attach_boot_image(struct XorrisO *xorriso, int flag)
iso_image_remove_boot_image(image); iso_image_remove_boot_image(image);
ret= iso_image_set_boot_image(image, bin_path, emul_type, ret= iso_image_set_boot_image(image, bin_path, emul_type,
xorriso->boot_image_cat_path, &bootimg); xorriso->boot_image_cat_path, &bootimg);
if(ret > 0) if(ret > 0) {
iso_image_set_boot_catalog_weight(image, 1000000000); iso_image_set_boot_catalog_weight(image, 1000000000);
if(xorriso->boot_image_cat_hidden) {
hide_attr= LIBISO_HIDE_BUT_WRITE;
if(xorriso->boot_image_cat_hidden & 1)
hide_attr|= LIBISO_HIDE_ON_RR;
if(xorriso->boot_image_cat_hidden & 2)
hide_attr|= LIBISO_HIDE_ON_JOLIET;
iso_image_set_boot_catalog_hidden(image, hide_attr);
}
}
} else { } else {
ret= iso_image_add_boot_image(image, bin_path, emul_type, 0, &bootimg); ret= iso_image_add_boot_image(image, bin_path, emul_type, 0, &bootimg);
} }
@ -487,7 +496,7 @@ ex:;
int Xorriso_write_session(struct XorrisO *xorriso, int flag) int Xorriso_write_session(struct XorrisO *xorriso, int flag)
{ {
int ret, relax= 0, i, pacifier_speed= 0, data_lba, ext, is_bootable= 0; int ret, relax= 0, i, pacifier_speed= 0, data_lba, ext, is_bootable= 0;
int major, minor, micro; int major, minor, micro, freshly_bootable= 0;
char xorriso_id[256], *img_id, sfe[5*SfileadrL], *out_cs; char xorriso_id[256], *img_id, sfe[5*SfileadrL], *out_cs;
struct isoburn_imgen_opts *sopts= NULL; struct isoburn_imgen_opts *sopts= NULL;
struct burn_drive_info *dinfo, *source_dinfo; struct burn_drive_info *dinfo, *source_dinfo;
@ -590,6 +599,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
ret= Xorriso_attach_boot_image(xorriso, xorriso->boot_count == 0); ret= Xorriso_attach_boot_image(xorriso, xorriso->boot_count == 0);
if(ret <= 0) if(ret <= 0)
goto ex; goto ex;
freshly_bootable= 1;
} }
if(xorriso->boot_count > 0) { if(xorriso->boot_count > 0) {
/* Eventually rename boot catalog node to changed boot_image_cat_path */ /* Eventually rename boot catalog node to changed boot_image_cat_path */
@ -629,7 +639,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
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;
} else { } else if(!freshly_bootable) {
sprintf(xorriso->info_text, sprintf(xorriso->info_text,
"Could not find any boot image for -boot_image patching"); "Could not find any boot image for -boot_image patching");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);

View File

@ -2246,7 +2246,9 @@ An El Torito boot catalog file gets inserted into the ISO image with address
It is subject to normal -overwrite and -reassure processing if there is already It is subject to normal -overwrite and -reassure processing if there is already
a file with the same name. a file with the same name.
The catalog lists the boot images and is read by the boot facility to choose The catalog lists the boot images and is read by the boot facility to choose
one of the boot images. one of the boot images. But it is not necessary that it appears in the
directory tree at all. One may hide it in all trees by \fBcat_hidden=on\fR.
Other possible values are "iso_rr", "joliet", and the default "off".
.br .br
\fBload_size=\fR is a value which depends on the boot image. \fBload_size=\fR is a value which depends on the boot image.
Default 2048 should be overridden only if a better value is known. Default 2048 should be overridden only if a better value is known.

View File

@ -2001,7 +2001,10 @@ of the existing sessions, unless one can assume overwriteable media.
with address *cat_path=* at -commit time. It is subject to normal with address *cat_path=* at -commit time. It is subject to normal
-overwrite and -reassure processing if there is already a file -overwrite and -reassure processing if there is already a file
with the same name. The catalog lists the boot images and is read with the same name. The catalog lists the boot images and is read
by the boot facility to choose one of the boot images. by the boot facility to choose one of the boot images. But it is
not necessary that it appears in the directory tree at all. One
may hide it in all trees by *cat_hidden=on*. Other possible
values are "iso_rr", "joliet", and the default "off".
*load_size=* is a value which depends on the boot image. Default *load_size=* is a value which depends on the boot image. Default
2048 should be overridden only if a better value is known. 2048 should be overridden only if a better value is known.
*boot_info_table=on* may be used to apply patching to a boot image *boot_info_table=on* may be used to apply patching to a boot image
@ -3930,7 +3933,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* iso_rr_path, _definition: Insert. (line 7) * iso_rr_path, _definition: Insert. (line 7)
* List delimiter, _definiton: Processing. (line 8) * List delimiter, _definiton: Processing. (line 8)
* MBR, _definiton: Extras. (line 26) * MBR, _definiton: Extras. (line 26)
* MBR, set, -boot_image system_area=: Bootable. (line 109) * MBR, set, -boot_image system_area=: Bootable. (line 112)
* MD5, control handling, -md5: Loading. (line 136) * MD5, control handling, -md5: Loading. (line 136)
* Media, erase, -blank: Writing. (line 45) * Media, erase, -blank: Writing. (line 45)
* Media, format, -format: Writing. (line 69) * Media, format, -format: Writing. (line 69)
@ -3960,7 +3963,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Ownership, global in ISO image, -uid: SetWrite. (line 128) * Ownership, global in ISO image, -uid: SetWrite. (line 128)
* Ownership, in ISO image, -chown: Manip. (line 42) * Ownership, in ISO image, -chown: Manip. (line 42)
* Ownership, in ISO image, -chown_r: Manip. (line 47) * Ownership, in ISO image, -chown_r: Manip. (line 47)
* Partition table, _definiton: Bootable. (line 116) * Partition table, _definiton: Bootable. (line 119)
* Pathspec, _definition: SetInsert. (line 120) * Pathspec, _definition: SetInsert. (line 120)
* Pattern expansion, _definition: Processing. (line 22) * Pattern expansion, _definition: Processing. (line 22)
* Pattern expansion, for disk paths, -disk_pattern: Insert. (line 31) * Pattern expansion, for disk paths, -disk_pattern: Insert. (line 31)
@ -4011,7 +4014,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Session, mount command line, -mount_cmd: Inquiry. (line 31) * Session, mount command line, -mount_cmd: Inquiry. (line 31)
* Session, mount parameters, -mount_opts: Inquiry. (line 47) * Session, mount parameters, -mount_opts: Inquiry. (line 47)
* Session, select as input, -load: Loading. (line 11) * Session, select as input, -load: Loading. (line 11)
* System area, _definiton: Bootable. (line 109) * System area, _definiton: Bootable. (line 112)
* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 184) * Table-of-content, search sessions, -rom_toc_scan: Loading. (line 184)
* Table-of-content, show, -toc: Inquiry. (line 18) * Table-of-content, show, -toc: Inquiry. (line 18)
* Timestamps, set in ISO image, -alter_date: Manip. (line 146) * Timestamps, set in ISO image, -alter_date: Manip. (line 146)
@ -4072,37 +4075,37 @@ Node: Filter73721
Node: Writing78070 Node: Writing78070
Node: SetWrite84359 Node: SetWrite84359
Node: Bootable94643 Node: Bootable94643
Node: Charset102391 Node: Charset102595
Node: Exception105145 Node: Exception105349
Node: DialogCtl109660 Node: DialogCtl109864
Node: Inquiry112005 Node: Inquiry112209
Node: Navigate116145 Node: Navigate116349
Node: Verify123499 Node: Verify123703
Node: Restore131919 Node: Restore132123
Node: Emulation138575 Node: Emulation138779
Node: Scripting145448 Node: Scripting145652
Node: Frontend151010 Node: Frontend151214
Node: Examples152211 Node: Examples152415
Node: ExDevices153380 Node: ExDevices153584
Node: ExCreate154014 Node: ExCreate154218
Node: ExDialog155288 Node: ExDialog155492
Node: ExGrowing156550 Node: ExGrowing156754
Node: ExModifying157352 Node: ExModifying157556
Node: ExBootable157853 Node: ExBootable158057
Node: ExCharset158400 Node: ExCharset158604
Node: ExPseudo159228 Node: ExPseudo159432
Node: ExCdrecord160122 Node: ExCdrecord160326
Node: ExMkisofs160437 Node: ExMkisofs160641
Node: ExGrowisofs161440 Node: ExGrowisofs161644
Node: ExException162564 Node: ExException162768
Node: ExTime163018 Node: ExTime163222
Node: ExIncBackup163477 Node: ExIncBackup163681
Node: ExRestore166949 Node: ExRestore167153
Node: ExRecovery167918 Node: ExRecovery168122
Node: Files168484 Node: Files168688
Node: Seealso169522 Node: Seealso169726
Node: Legal170046 Node: Legal170250
Node: CommandIdx170968 Node: CommandIdx171172
Node: ConceptIdx184269 Node: ConceptIdx184473
 
End Tag Table End Tag Table

View File

@ -2701,7 +2701,9 @@ An El Torito boot catalog file gets inserted into the ISO image with address
It is subject to normal -overwrite and -reassure processing if there is already It is subject to normal -overwrite and -reassure processing if there is already
a file with the same name. a file with the same name.
The catalog lists the boot images and is read by the boot facility to choose The catalog lists the boot images and is read by the boot facility to choose
one of the boot images. one of the boot images. But it is not necessary that it appears in the
directory tree at all. One may hide it in all trees by @strong{cat_hidden=on}.
Other possible values are "iso_rr", "joliet", and the default "off".
@* @*
@strong{load_size=} is a value which depends on the boot image. @strong{load_size=} is a value which depends on the boot image.
Default 2048 should be overridden only if a better value is known. Default 2048 should be overridden only if a better value is known.

View File

@ -262,6 +262,7 @@ struct XorrisO { /* the global context of xorriso */
int keep_boot_image; int keep_boot_image;
char boot_image_cat_path[SfileadrL]; char boot_image_cat_path[SfileadrL];
int boot_image_cat_hidden; /* bit0= hidden in ISO/RR , bit1= in Joliet */
int boot_count; /* number of already attached boot images */ int boot_count; /* number of already attached boot images */
char boot_image_bin_path[SfileadrL]; char boot_image_bin_path[SfileadrL];

View File

@ -1 +1 @@
#define Xorriso_timestamP "2010.06.18.113147" #define Xorriso_timestamP "2010.06.19.152046"