Improved interaction of -as mkisofs command with other commands

This commit is contained in:
Thomas Schmitt 2013-03-10 19:34:09 +00:00
parent 9f10debf43
commit 3f447e940f
9 changed files with 116 additions and 83 deletions

View File

@ -134,6 +134,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
strcpy(m->list_delimiter, "--");
m->ino_behavior= 7;
m->iso_level= 3;
m->iso_level_is_default= 1;
m->do_joliet= 0;
m->do_hfsplus= 0;
m->do_fat= 0;
@ -148,6 +149,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->scdbackup_tag_written[0]= 0;
m->scdbackup_tag_listname[0]= 0;
m->relax_compliance= 0;
m->allow_dir_id_ext_dflt= 1;
m->rr_reloc_dir[0]= 0;
m->rr_reloc_flags= 1;
m->untranslated_name_len= 0;
@ -241,6 +243,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->boot_image_bin_path[0]= 0;
m->boot_image_bin_form[0]= 0;
m->boot_image_emul= 0;
m->boot_emul_default= 1;
m->boot_image_load_size= 4 * 512; /* hearsay out of libisofs/demo/iso.c */
memset(m->boot_id_string, 0, sizeof(m->boot_id_string));
memset(m->boot_selection_crit, 0, sizeof(m->boot_selection_crit));

View File

@ -703,20 +703,13 @@ no_volunteer:;
}
int Xorriso_genisofs_add_boot(struct XorrisO *xorriso, char *whom,
int *option_b, int *emul_boot, int flag)
int Xorriso_genisofs_add_boot(struct XorrisO *xorriso, int flag)
{
int ret;
if(*option_b)
xorriso->boot_image_emul= *emul_boot;
else
xorriso->boot_image_emul= 0;
ret= Xorriso_attach_boot_image(xorriso, 0);
if(ret <= 0)
xorriso->boot_image_bin_path[0]= 0;
*option_b= 0;
*emul_boot= 2;
return(ret);
}
@ -1095,9 +1088,10 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
int argc, char **argv, int flag)
{
int ret, i, j, was_path= 0, was_other_option= 0, mem_graft_points, mem;
int do_print_size= 0, fd, idx, iso_level= 1, emul_boot= 2;
int option_b= 0, was_failure= 0, fret, lower_r= 0, zero= 0;
int dir_mode= -1, file_mode= -1, count, partition_number, allow_dir_id_ext= 1;
int do_print_size= 0, fd, idx, iso_level= -1;
int was_failure= 0, fret, lower_r= 0, zero= 0;
int dir_mode= -1, file_mode= -1, count, partition_number;
int allow_dir_id_ext= -1;
int root_seen= 0, do_md5_mem, option_d= 0, arg_count;
mode_t mode_and, mode_or;
int with_boot_image= 0, with_cat_path= 0, with_emul_toc= 0;
@ -2075,10 +2069,14 @@ rr_reloc_dir:;
/* Enforce odd mkisofs defaults on first pathspec */
xorriso->pacifier_style= 1;
if(xorriso->allow_dir_id_ext_dflt && allow_dir_id_ext < 0)
allow_dir_id_ext= 1;
if(allow_dir_id_ext == 1) {
Xorriso_relax_compliance(xorriso, "allow_dir_id_ext", 0);
allow_dir_id_ext= 2;
}
if(xorriso->iso_level_is_default && iso_level < 0)
iso_level= 1;
if(iso_level >= 1 && iso_level <= 3) {
sprintf(sfe, "iso_9660_level=%d", iso_level);
Xorriso_relax_compliance(xorriso, sfe, 0);
@ -2172,9 +2170,11 @@ problem_handler_2:;
else
argpt= argv[i];
if(strcmp(argpt, "-no-emul-boot")==0) {
emul_boot= xorriso->boot_image_emul= 0;
xorriso->boot_image_emul= 0;
xorriso->boot_emul_default= 0;
} else if(strcmp(argpt, "-hard-disk-boot")==0) {
emul_boot= xorriso->boot_image_emul= 1;
xorriso->boot_image_emul= 1;
xorriso->boot_emul_default= 0;
} else if(strcmp(argpt, "-boot-info-table")==0) {
xorriso->patch_isolinux_image= (xorriso->patch_isolinux_image & ~2) | 1;
} else if(strcmp(argpt, "-b") == 0 ||
@ -2184,14 +2184,14 @@ problem_handler_2:;
i++;
if(strcmp(argpt, "--efi-boot") == 0) {
if(xorriso->boot_image_bin_path[0]) {
ret= Xorriso_genisofs_add_boot(xorriso, whom,
&option_b, &emul_boot, 0);
ret= Xorriso_genisofs_add_boot(xorriso, 0);
if(ret <= 0)
goto problem_handler_boot;
}
boot_path= xorriso->boot_image_bin_path;
xorriso->boot_efi_default= 1;
emul_boot= xorriso->boot_image_emul= 0;
xorriso->boot_image_emul= 0;
xorriso->boot_emul_default= 0;
} else {
boot_path= xorriso->boot_image_bin_path;
@ -2200,8 +2200,8 @@ problem_handler_2:;
else
xorriso->boot_platform_id= 0x00;
xorriso->boot_efi_default= 0;
option_b= 1;
xorriso->boot_image_emul= emul_boot;
if(xorriso->boot_emul_default)
xorriso->boot_image_emul= 2;
}
boot_path[0]= 0;
if(argv[i][0] != '/')
@ -2210,10 +2210,7 @@ problem_handler_2:;
if(ret <= 0)
goto ex;
if(xorriso->boot_efi_default && xorriso->boot_image_bin_path[0]) {
option_b= 0;
emul_boot= 0;
ret= Xorriso_genisofs_add_boot(xorriso, whom,
&option_b, &emul_boot, 0);
ret= Xorriso_genisofs_add_boot(xorriso, 0);
if(ret <= 0)
goto problem_handler_boot;
}
@ -2265,8 +2262,7 @@ problem_handler_2:;
} else if(strcmp(argpt, "-isohybrid-apm-hfsplus") == 0) {
xorriso->patch_isolinux_image = xorriso->patch_isolinux_image | (1 << 8);
} else if(strcmp(argpt, "-eltorito-alt-boot")==0) {
ret= Xorriso_genisofs_add_boot(xorriso, whom,
&option_b, &emul_boot, 0);
ret= Xorriso_genisofs_add_boot(xorriso, 0);
if(ret <= 0)
goto problem_handler_boot;
} else if(strcmp(argpt, "--embedded-boot")==0 ||
@ -2358,11 +2354,6 @@ problem_handler_boot:;
}
if(with_boot_image && with_cat_path == 0)
strcpy(xorriso->boot_image_cat_path, "/boot.catalog");
if(xorriso->boot_image_bin_path[0]) {
ret= Xorriso_genisofs_add_boot(xorriso, whom, &option_b, &emul_boot, 0);
if(ret <= 0)
goto ex;
}
/* The boot catalog has to be hidden separately */
if(xorriso->boot_image_cat_path[0]) {
ret= Xorriso_path_is_hidden(xorriso, xorriso->boot_image_cat_path, 0);

View File

@ -998,11 +998,14 @@ treatment_patch:;
if(strcmp(treatpt + 10, "none") == 0 ||
strcmp(treatpt + 10, "no_emulation") == 0) {
xorriso->boot_image_emul= 0;
xorriso->boot_emul_default= 0;
} else if(strcmp(treatpt + 10, "hard_disk") == 0) {
xorriso->boot_image_emul= 1;
xorriso->boot_emul_default= 0;
} else if(strcmp(treatpt + 10, "floppy") == 0 ||
strcmp(treatpt + 10, "diskette") == 0) {
xorriso->boot_image_emul= 2;
xorriso->boot_emul_default= 0;
} else {
sprintf(xorriso->info_text,
"-boot_image %s : Unknown media_type : %s",

View File

@ -2,7 +2,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2012 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2013 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -588,6 +588,7 @@ int Xorriso_attach_boot_image(struct XorrisO *xorriso, int flag)
xorriso->boot_image_bin_path[0]= 0;
xorriso->boot_image_bin_form[0]= 0;
xorriso->boot_image_emul= 0;
xorriso->boot_emul_default= 1;
xorriso->boot_image_load_size= 4 * 512;
memset(xorriso->boot_id_string, 0, sizeof(xorriso->boot_id_string));
memset(xorriso->boot_selection_crit, 0,
@ -2077,8 +2078,10 @@ int Xorriso_relax_compliance(struct XorrisO *xorriso, char *mode,
} else if((l == 16 && strncmp(cpt, "allow_dir_id_ext", l) == 0) ||
(l == 19 && strncmp(cpt, "allow_dir_id_ext_on", l) == 0) ) {
xorriso->relax_compliance|= isoburn_igopt_allow_dir_id_ext;
xorriso->allow_dir_id_ext_dflt= 0;
} else if((l == 20 && strncmp(cpt, "allow_dir_id_ext_off", l) == 0)) {
xorriso->relax_compliance&= ~isoburn_igopt_allow_dir_id_ext;
xorriso->allow_dir_id_ext_dflt= 0;
} else if((l == 12 && strncmp(cpt, "omit_version", l) == 0) ||
(l == 15 && strncmp(cpt, "omit_version_on", l) == 0) ) {
@ -2207,10 +2210,12 @@ int Xorriso_relax_compliance(struct XorrisO *xorriso, char *mode,
if(value == 1 || value == 2) {
limit= ((off_t) 4) * ((off_t) 1024*1024*1024) - ((off_t) 1);
xorriso->iso_level= value;
xorriso->iso_level_is_default= 0;
if(xorriso->file_size_limit > limit)
xorriso->file_size_limit= limit;
} else if(value == 3) {
xorriso->iso_level= value;
xorriso->iso_level_is_default= 0;
if(xorriso->file_size_limit < Xorriso_default_file_size_limiT)
xorriso->file_size_limit= Xorriso_default_file_size_limiT;
} else {

View File

@ -9,7 +9,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH XORRISO 1 "Version 1.2.7, Jan 15, 2013"
.TH XORRISO 1 "Version 1.2.7, Mar 05, 2013"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@ -2269,6 +2269,10 @@ At the end of the list, "Write speed L" and "Write speed H"
are the best guesses for lower and upper speed limit.
"Write speed l" and "Write speed h" may appear only with CD
and eventually override the list of other speed offers.
.br
Only if the drive reports contradicting speed information there will appear
"Write speed 0", which tells the outcome of speed selection by command
\-speed 0, if it deviates from "Write speed H".
.TP
\fB\-close_damaged\fR "as_needed"|"force"
Try to close the upcomming track and session if the drive reported the medium
@ -4078,6 +4082,12 @@ the end of a "mkisofs" option list. Verbosity settings \-v (= "UPDATE") and
\-quiet (= "SORRY") persist. The output file
persists until things happen like \-commit, \-rollback, \-dev, or end of
\fBxorriso\fR.
.br
Options which affect all file objects in the ISO image, like \-r or \-dir\-mode,
will be applied only to files which are present in the ISO image when
the command \-as ends. If you use several \-as mkisofs commands in the same
run, then consider to put such options into the last \-as command.
.br
\-pacifier gets set to "mkisofs" if files are added to the image.
.br
\-graft\-points is equivalent to \-pathspecs on. Note that pathspecs without "="

View File

@ -2013,6 +2013,9 @@ File: xorriso.info, Node: Writing, Next: SetWrite, Prev: Filter, Up: Command
the best guesses for lower and upper speed limit. "Write speed l"
and "Write speed h" may appear only with CD and eventually
override the list of other speed offers.
Only if the drive reports contradicting speed information there
will appear "Write speed 0", which tells the outcome of speed
selection by command -speed 0, if it deviates from "Write speed H".
-close_damaged "as_needed"|"force"
Try to close the upcomming track and session if the drive reported
@ -3601,8 +3604,13 @@ said programs trigger comparable actions.
-commit at the end of a "mkisofs" option list. Verbosity settings
-v (= "UPDATE") and -quiet (= "SORRY") persist. The output file
persists until things happen like -commit, -rollback, -dev, or end
of `xorriso'. -pacifier gets set to "mkisofs" if files are added
to the image.
of `xorriso'.
Options which affect all file objects in the ISO image, like -r or
-dir-mode, will be applied only to files which are present in the
ISO image when the command -as ends. If you use several -as
mkisofs commands in the same run, then consider to put such
options into the last -as command.
-pacifier gets set to "mkisofs" if files are added to the image.
-graft-points is equivalent to -pathspecs on. Note that pathspecs
without "=" are interpreted differently than with `xorriso'
command -add. Directories get merged with the root directory of
@ -4707,7 +4715,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -chown_r sets ownership in ISO image: Manip. (line 47)
* -clone copies ISO directory tree: Insert. (line 179)
* -close controls media closing: SetWrite. (line 335)
* -close_damaged closes damaged track and session: Writing. (line 155)
* -close_damaged closes damaged track and session: Writing. (line 158)
* -close_filter_list bans filter registration: Filter. (line 52)
* -commit writes pending ISO image: Writing. (line 29)
* -commit_eject writes and ejects: Writing. (line 56)
@ -4779,7 +4787,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -list_extras lists compile time extra features: Scripting.
(line 26)
* -list_formats lists available formats: Writing. (line 129)
* -list_profiles lists supported media: Writing. (line 169)
* -list_profiles lists supported media: Writing. (line 172)
* -list_speeds lists available write speeds: Writing. (line 141)
* -lns creates ISO symbolic link: Insert. (line 174)
* -load addresses a particular session as input: Loading. (line 11)
@ -4814,7 +4822,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -out_charset sets output character set: SetWrite. (line 258)
* -outdev acquires a drive for output: AqDrive. (line 31)
* -overwrite enables overwriting in ISO: SetInsert. (line 127)
* -pacifier controls pacifier text form: Emulation. (line 158)
* -pacifier controls pacifier text form: Emulation. (line 163)
* -padding sets amount or mode of image padding: SetWrite. (line 349)
* -page set terminal geometry: DialogCtl. (line 19)
* -paste_in copies file into disk file: Restore. (line 124)
@ -4836,7 +4844,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -quoted_not_list sets exclusions: SetInsert. (line 72)
* -quoted_path_list inserts paths from disk file: Insert. (line 83)
* -read_mkisofsrc searches and reads .mkisofsrc file: Emulation.
(line 146)
(line 151)
* -reassure enables confirmation question: DialogCtl. (line 32)
* -report_about controls verbosity: Exception. (line 55)
* -return_with controls exit value: Exception. (line 39)
@ -4850,7 +4858,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -rom_toc_scan searches for sessions: Loading. (line 211)
* -rr_reloc_dir sets name of relocation directory: SetWrite.
(line 141)
* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 168)
* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 173)
* -scsi_log reports SCSI commands: Scripting. (line 147)
* -session_log logs written sessions: Scripting. (line 138)
* -session_string composes session info line: Inquiry. (line 78)
@ -4917,12 +4925,12 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Backslash Interpretation, _definition: Processing. (line 52)
* Backup, enable fast incremental, -disk_dev_ino: Loading. (line 190)
* Backup, enable features, -for_backup: Loading. (line 185)
* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 168)
* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 173)
* Blank media, _definition: Media. (line 29)
* Blind growing, _definition: Methods. (line 40)
* Bootability, control, -boot_image: Bootable. (line 26)
* Bugs, reporting: Bugreport. (line 6)
* cdrecord, Emulation: Emulation. (line 111)
* cdrecord, Emulation: Emulation. (line 116)
* Character Set, _definition: Charset. (line 6)
* Character Set, for input, -in_charset: Loading. (line 92)
* Character Set, for input/output, -charset: Charset. (line 43)
@ -4936,7 +4944,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Create, new ISO image, _definition: Methods. (line 6)
* Cylinder alignment, _definition: Bootable. (line 188)
* Cylinder size, _definition: Bootable. (line 177)
* Damaged track and session, close, -close_damaged: Writing. (line 155)
* Damaged track and session, close, -close_damaged: Writing. (line 158)
* Delete, from ISO image, -rm: Manip. (line 21)
* Delete, from ISO image, -rm_r: Manip. (line 28)
* Delete, ISO directory, -rmdir: Manip. (line 32)
@ -4960,7 +4968,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Drive, for output, -outdev: AqDrive. (line 31)
* Drive, get drive list, -device_links: Inquiry. (line 18)
* Drive, get drive list, -devices: Inquiry. (line 7)
* Drive, list supported media, -list_profiles: Writing. (line 169)
* Drive, list supported media, -list_profiles: Writing. (line 172)
* Drive, reduce activity, -calm_drive: Loading. (line 240)
* Drive, report SCSI commands, -scsi_log: Scripting. (line 147)
* Drive, write and eject, -commit_eject: Writing. (line 56)
@ -4969,10 +4977,10 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* EFI system partition, _definition: Bootable. (line 157)
* El Torito, _definition: Extras. (line 19)
* Emulation, -as: Emulation. (line 13)
* Emulation, .mkisofsrc, -read_mkisofsrc: Emulation. (line 146)
* Emulation, cdrecord, -as: Emulation. (line 111)
* Emulation, .mkisofsrc, -read_mkisofsrc: Emulation. (line 151)
* Emulation, cdrecord, -as: Emulation. (line 116)
* Emulation, mkisofs, -as: Emulation. (line 16)
* Emulation, pacifier form, -pacifier: Emulation. (line 158)
* Emulation, pacifier form, -pacifier: Emulation. (line 163)
* Examples: Examples. (line 6)
* extattr, _definition: Extras. (line 65)
* Filter, _definition: Filter. (line 6)
@ -5200,41 +5208,41 @@ Node: Manip64864
Node: CmdFind73688
Node: Filter88393
Node: Writing92949
Node: SetWrite102128
Node: Bootable120871
Node: Jigdo136265
Node: Charset140512
Node: Exception143274
Node: DialogCtl149394
Node: Inquiry151992
Node: Navigate157828
Node: Verify166126
Node: Restore175158
Node: Emulation182245
Node: Scripting192057
Node: Frontend199218
Node: Examples207293
Node: ExDevices208471
Node: ExCreate209130
Node: ExDialog210415
Node: ExGrowing211680
Node: ExModifying212485
Node: ExBootable212989
Node: ExCharset213541
Node: ExPseudo214362
Node: ExCdrecord215260
Node: ExMkisofs215577
Node: ExGrowisofs216917
Node: ExException218052
Node: ExTime218506
Node: ExIncBackup218965
Node: ExRestore222957
Node: ExRecovery223917
Node: Files224487
Node: Seealso225786
Node: Bugreport226509
Node: Legal227090
Node: CommandIdx228101
Node: ConceptIdx244330
Node: SetWrite102337
Node: Bootable121080
Node: Jigdo136474
Node: Charset140721
Node: Exception143483
Node: DialogCtl149603
Node: Inquiry152201
Node: Navigate158037
Node: Verify166335
Node: Restore175367
Node: Emulation182454
Node: Scripting192578
Node: Frontend199739
Node: Examples207814
Node: ExDevices208992
Node: ExCreate209651
Node: ExDialog210936
Node: ExGrowing212201
Node: ExModifying213006
Node: ExBootable213510
Node: ExCharset214062
Node: ExPseudo214883
Node: ExCdrecord215781
Node: ExMkisofs216098
Node: ExGrowisofs217438
Node: ExException218573
Node: ExTime219027
Node: ExIncBackup219486
Node: ExRestore223478
Node: ExRecovery224438
Node: Files225008
Node: Seealso226307
Node: Bugreport227030
Node: Legal227611
Node: CommandIdx228622
Node: ConceptIdx244851

End Tag Table

View File

@ -50,7 +50,7 @@
@c man .\" First parameter, NAME, should be all caps
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
@c man .\" other parameters are allowed: see man(7), man(1)
@c man .TH XORRISO 1 "Version 1.2.7, Jan 15, 2013"
@c man .TH XORRISO 1 "Version 1.2.7, Mar 05, 2013"
@c man .\" Please adjust this date whenever revising the manpage.
@c man .\"
@c man .\" Some roff macros, for reference:
@ -2703,6 +2703,10 @@ At the end of the list, "Write speed L" and "Write speed H"
are the best guesses for lower and upper speed limit.
"Write speed l" and "Write speed h" may appear only with CD
and eventually override the list of other speed offers.
@*
Only if the drive reports contradicting speed information there will appear
"Write speed 0", which tells the outcome of speed selection by command
-speed 0, if it deviates from "Write speed H".
@c man .TP
@item -close_damaged "as_needed"|"force"
@kindex -close_damaged closes damaged track and session
@ -4791,6 +4795,12 @@ the end of a "mkisofs" option list. Verbosity settings -v (= "UPDATE") and
-quiet (= "SORRY") persist. The output file
persists until things happen like -commit, -rollback, -dev, or end of
@command{xorriso}.
@*
Options which affect all file objects in the ISO image, like -r or -dir-mode,
will be applied only to files which are present in the ISO image when
the command -as ends. If you use several -as mkisofs commands in the same
run, then consider to put such options into the last -as command.
@*
-pacifier gets set to "mkisofs" if files are added to the image.
@*
-graft-points is equivalent to -pathspecs on. Note that pathspecs without "="

View File

@ -138,6 +138,7 @@ struct XorrisO { /* the global context of xorriso */
*/
int iso_level;
int iso_level_is_default;
int do_joliet;
int do_hfsplus;
int do_fat;
@ -179,6 +180,7 @@ struct XorrisO { /* the global context of xorriso */
char scdbackup_tag_listname[SfileadrL];
int relax_compliance; /* opaque bitfield to be set by xorrisoburn */
int allow_dir_id_ext_dflt; /* -compliance allow_dir_id_ext still on default */
char rr_reloc_dir[256];
int rr_reloc_flags;
int untranslated_name_len;
@ -367,6 +369,7 @@ struct XorrisO { /* the global context of xorriso */
1=emulation as hard disk
2=emulation as floppy
*/
int boot_emul_default; /* 1= boot_image_emul is still default */
off_t boot_image_load_size;
unsigned char boot_id_string[29];
unsigned char boot_selection_crit[21];

View File

@ -1 +1 @@
#define Xorriso_timestamP "2013.03.06.164906"
#define Xorriso_timestamP "2013.03.10.193344"